";
function show_delivery_form($msg_client='') {
global $dbh, $msg, $charset;
global $no, $id_lig, $id_prod, $typ_lig;
global $recept_deliv_form, $recept_deliv_form_suite;
global $recept_form_qte_liv, $recept_bt_update, $recept_bt_undo, $previous, $recept_bt_next;
global $applicants_tpl;
$form = $recept_deliv_form;
$lg = new lignes_actes($id_lig);
$act = new actes($lg->num_acte);
$fou = new entites($act->num_fournisseur);
$nb_rec = $lg->getNbDelivered($id_lig);
$nb_sol = $lg->nb-$nb_rec;
if($nb_sol > 0) {
$form = str_replace('', $recept_bt_update, $form);
$form = str_replace('', $recept_form_qte_liv, $form);
} else {
$form = str_replace('', '', $form);
}
if ($previous) {
$tp = unserialize(rawurldecode(stripslashes($previous)));
if (is_array($tp) && count($tp)) {
$form = str_replace('', $recept_bt_undo, $form);
$form = str_replace('!!previous!!', stripslashes($previous), $form);
} else {
$previous=0;
}
}
if (!$previous) {
$form = str_replace('', '', $form);
$form = str_replace('!!previous!!', 0, $form);
}
$form = str_replace('', $recept_bt_next, $form);
$lgstat_form=lgstat::getHtmlSelect(array(0=>0), FALSE, array('id'=>'sel_lgstat_!!id_lig!!','onchange'=>'recept_upd_lgstat(this.getAttribute("id"));' ));
$form=str_replace('!!lib_acte!!',
htmlentities($msg['acquisition_recept_fou'], ENT_QUOTES, $charset)." ".htmlentities($fou->raison_sociale,ENT_QUOTES,$charset).' '
.htmlentities((($act->type_acte)?($msg['acquisition_act_num_dev']):($msg['acquisition_act_num_cde'])),ENT_QUOTES,$charset).htmlentities($act->numero,ENT_QUOTES,$charset),
$form);
if($act->type_acte == 0 && ($typ_lig == 1 ||$typ_lig == 2) && count($lg->getApplicants())){ //Actes étant des commandes, on prend en compte les demandeurs
$applicants = $lg->getApplicants(); //On a les demandeurs de la commande; on les affiche pour que l'utilisateur sache qui bénéfieciera d'une réservation sur cet ouvrage
$applicants_label = emprunteur::getName($applicants);
$applicants_labels = '';
foreach($applicants as $applicant){
$applicants_labels.= '
';
}
$applicants_tpl = str_replace('!!std_applicants!!', $applicants_labels, $applicants_tpl);
$form = str_replace('!!applicants_tr!!',$applicants_tpl,$form);
}else{
$form = str_replace('!!applicants_tr!!','',$form);
}
$form = str_replace('!!code!!',htmlentities($lg->code,ENT_QUOTES,$charset),$form);
$form = str_replace('!!lib!!',nl2br(htmlentities($lg->libelle,ENT_QUOTES,$charset)),$form);
$form = str_replace('!!qte_cde!!',$lg->nb,$form);
$form = str_replace('!!qte_rec!!',$nb_rec,$form);
$form = str_replace('!!qte_sol!!',$nb_sol,$form);
$lgstat_form=str_replace("value='".$lg->statut."'","value='".$lg->statut."' selected='selected' ",$lgstat_form);
$form = str_replace('!!lgstat!!',$lgstat_form,$form);
$form = str_replace('!!comment_lg!!',nl2br(htmlentities($lg->commentaires_gestion,ENT_QUOTES,$charset)),$form);
$form = str_replace('!!comment_lo!!',nl2br(htmlentities($lg->commentaires_opac,ENT_QUOTES,$charset)),$form);
$form = str_replace('!!id_lig!!',$id_lig,$form);
$form = str_replace('!!id_prod!!',$id_prod,$form);
$form = str_replace('!!typ_lig!!',$typ_lig,$form);
$form = str_replace('!!no!!',$no,$form);
switch($typ_lig) {
case '1': //notice
$form.=do_notice_form($id_prod);
$form.=do_explnum_form();
$form.=do_expl_form();
if ($lg->num_acquisition) $form.=do_sugg_form($lg->num_acquisition);
break;
case '2': //bulletin
$form.=do_bull_form($id_prod);
$form.=do_explnum_form();
$form.=do_expl_form();
//if ($lg->num_acquisition) $form.=do_sugg_form($lg->num_acquisition);
break;
case '3': //frais
break;
case '4': //abt
break;
case '5' : //article
$form.=do_art_form($id_prod);
$form.=do_explnum_form();
if ($lg->num_acquisition) $form.=do_sugg_form($lg->num_acquisition);
break;
default : //non catalogué
if ($lg->num_acquisition) $form.=do_sugg_form($lg->num_acquisition);
break;
}
$form = str_replace('!!msg_client!!', $msg_client,$form);
print $form.$recept_deliv_form_suite;
}
function do_notice_form($notice_id=0) {
global $recept_deliv_form_notice;
global $prefix_url_image;
$prefix_url_image='./../../../';
$form = $recept_deliv_form_notice;
$md = new mono_display( $notice_id, // $id = id de la notice à afficher
6, // $level :
// 0 : juste le header (titre / auteur principal avec le lien si applicable)
// 1 : ISBD seul, pas de note, bouton modif, expl, explnum et résas
// 6 : cas général détaillé avec notes, categ, langues, indexation... + boutons
'', // $action = URL associée au header
1, // $expl -> affiche ou non les exemplaires associés
'', // $expl_link
'', // $lien_suppr_cart
'', // $explnum_link
0, // $show_resa
2, // $print
1, // $show_explnum
1, // $show_statut
'', // $anti_loop
0, // $draggable
0, // $no_link
1, // $show_opac_hidden_fields
0 // $ajax_mode
);
$form = str_replace('!!notice!!',$md->result,$form);
return $form;
}
function do_art_form($art_id) {
global $recept_deliv_form_notice;
global $prefix_url_image;
$prefix_url_image='./../../../';
$form = $recept_deliv_form_notice;
$md = new serial_display ( $art_id, // $id = id de la notice à afficher
6, // $level :
// 0 : juste le header (titre / auteur principal avec le lien si applicable)
// 6 : cas général détaillé avec notes, categ, langues, indexation... + boutons
'', // $action_serial = URL à atteindre si la notice est une notice chapeau
'', // $action_analysis = URL à atteindre si la notice est un dépouillement
// note dans ces deux variables, '!!id!!' sera remplacé par l'id de cette notice
// les deux liens s'excluent mutuellement, bien sur.
'', // $action_bulletin
'', // $lien_suppr_cart = lien de suppression de la notice d'un caddie
'', // $lien_explnum
0, // $bouton_explnum
2, // $print
1, // $show_explnum
0, // $show_statut=
1, // $show_opac_hidden_fields=
0, // $draggable
0, // $ajax_mode
'', // $anti_loop
0 // $no_link
);
$form = str_replace('!!notice!!',$md->result,$form);
return $form;
}
function do_bull_form($bull_id) {
global $recept_deliv_form_bull;
global $prefix_url_image;
$prefix_url_image='./../../../';
$form = $recept_deliv_form_bull;
$md = show_bulletinage_info_catalogage($bull_id, true);
$form = str_replace('!!bulletin!!',$md,$form);
return $form;
}
function do_expl_form() {
global $recept_deliv_form_expl, $expl_form;
global $typ_lig, $id_prod;
global $option_num_auto, $pmb_numero_exemplaire_auto, $pmb_numero_exemplaire_auto_script, $recept_deliv_form_expl_auto;
global $pmb_droits_explr_localises, $explr_visible_mod;
$form = '';
$num_auto = 0;
if (!isset($first)) $first=1;
// visibilité des exemplaires
// On ne vérifie que si l'utilisateur peut créer sur au moins une localisation.
if (!$pmb_droits_explr_localises || $explr_visible_mod) {
$id_notice = 0;
$id_bulletin = 0;
switch($typ_lig) {
case '1': //notice
$id_notice = $id_prod;
break;
case '2': //bulletin
$id_bulletin = $id_prod;
break;
default : //non catalogué
break;
}
if ($id_notice) {
$expl_form = $recept_deliv_form_expl;
if ( ($pmb_numero_exemplaire_auto=='1' || $pmb_numero_exemplaire_auto=='2') && $pmb_numero_exemplaire_auto_script ) {
$num_auto = 1;
}
if ($num_auto==1 && (isset($option_num_auto)) ) {
$recept_deliv_form_expl_auto = str_replace('!!checked!!', "checked='checked'",$recept_deliv_form_expl_auto);
$expl_form = str_replace('', $recept_deliv_form_expl_auto, $expl_form);
} elseif ($num_auto==1 && !isset($option_num_auto)) {
$recept_deliv_form_expl_auto = str_replace('!!checked!!', '',$recept_deliv_form_expl_auto);
$expl_form = str_replace('', $recept_deliv_form_expl_auto, $expl_form);
}
$nex = new exemplaire('', 0, $id_notice);
$expl_form = $nex->expl_form('','');
$form = $expl_form;
} elseif ($id_bulletin) {
$expl_form = $recept_deliv_form_expl;
if ( ($pmb_numero_exemplaire_auto=='1' || $pmb_numero_exemplaire_auto=='3') && $pmb_numero_exemplaire_auto_script ) {
$num_auto = 1 ;
}
if ($num_auto==1 && (isset($option_num_auto)) ) {
$recept_deliv_form_expl_auto = str_replace('!!checked!!', "checked='checked'",$recept_deliv_form_expl_auto);
$expl_form = str_replace('', $recept_deliv_form_expl_auto, $expl_form);
} elseif ($num_auto==1 && !isset($option_num_auto)) {
$recept_deliv_form_expl_auto = str_replace('!!checked!!', '',$recept_deliv_form_expl_auto);
$expl_form = str_replace('', $recept_deliv_form_expl_auto, $expl_form);
}
$nex = new exemplaire('', 0, 0, $id_bulletin);
$expl_form = $nex->expl_form('','');
$form = $expl_form;
}
}
return $form;
}
function add_expl() {
global $typ_lig, $id_prod;
global $pmb_droits_explr_localises, $explr_visible_mod;
global $f_ex_cb, $f_ex_nbparts;
$error = false;
// visibilité des exemplaires
// On ne vérifie que si l'utilisateur peut créer sur au moins une localisation.
if ($pmb_droits_explr_localises && !$explr_visible_mod) return $error;
$id_notice = 0;
$id_bulletin = 0;
switch($typ_lig) {
case '1': //notice
$id_notice = $id_prod;
break;
case '2': //bulletin
$id_bulletin = $id_prod;
break;
default : //non catalogué
break;
}
if (!$id_bulletin && !$id_notice) return $error;
//Vérification des champs personalisés
$p_perso=new parametres_perso("expl");
$nberrors=$p_perso->check_submited_fields();
if ($nberrors) return $error;
if ($id_notice) {
$nex = new exemplaire($f_ex_cb, 0, $id_notice, 0);
} else {
$nex = new exemplaire($f_ex_cb, 0, 0, $id_bulletin);
}
if ($nex->expl_id) {
return $error;
} else {
//On passe le nombre de pièces à 1 si la valeur n'est pas transmise
if(!is_numeric($f_ex_nbparts) || !$f_ex_nbparts) $f_ex_nbparts=1;
$nex->set_properties_from_form();
if (!$nex->save()) {
return $error;
}
}
return !$error;
}
function do_explnum_form() {
global $recept_deliv_form_explnum;
global $deflt_explnum_statut;
$recept_deliv_form_explnum = str_replace('!!statut_list!!', gen_liste_multiple ("select id_explnum_statut, gestion_libelle from explnum_statut order by 2", "id_explnum_statut", "gestion_libelle", "id_explnum_statut", "f_explnum_statut", "", $deflt_explnum_statut, "", "","","",0), $recept_deliv_form_explnum);
return $recept_deliv_form_explnum;
}
function do_sugg_form($id_suggestion) {
global $dbh, $charset;
global $recept_deliv_form_sugg, $deflt3receptsugstat;
$sug = new suggestions($id_suggestion);
$tab_orig = $sug->getOrigines();
$form = '';
//Récupération des noms des créateurs des suggestions
$list_orig='';
if (count($tab_orig)) {
$form = $recept_deliv_form_sugg;
foreach($tab_orig as $orig) {
switch($orig['type_origine']){
default:
case '0' :
$q_user = "SELECT userid, nom, prenom FROM users where userid = '".$orig['origine']."'";
$r_user = pmb_mysql_query($q_user, $dbh);
$row_user=pmb_mysql_fetch_row($r_user);
$list_orig = htmlentities($row_user[1], ENT_QUOTES, $charset);
if ($row_user[2]) $list_orig.= ", ".htmlentities($row_user[2], ENT_QUOTES, $charset);
$list_orig .= "
";
break;
case '1' :
$q_empr = "SELECT id_empr, empr_nom, empr_prenom FROM empr where id_empr = '".$orig['origine']."'";
$r_empr = pmb_mysql_query($q_empr, $dbh);
$row_empr=pmb_mysql_fetch_row($r_empr);
$list_orig.= htmlentities($row_empr[1], ENT_QUOTES, $charset);
if ($row_empr[2]) $list_orig.= ", ".htmlentities($row_empr[2], ENT_QUOTES, $charset);
$list_orig .= "
";
break;
case '2' :
break;
}
}
$form = str_replace('', $list_orig, $form);
$form = str_replace('!!id_sug!!',$id_suggestion,$form);
$sug_map= new suggestions_map();
if($sug->statut==$sug_map->getState_ID('ORDERED')) {
$sel_sugstat = $sug_map->getHtmlStateSelect('ORDERED', array(0=>$sug_map->getStateNameFromId($deflt3receptsugstat)), TRUE, array('name'=>'sel_sugstat'));
} else {
$sel_sugstat = $sug_map->getHtmlStateSelect('ORDERED', array(0=>$sug_map->getStateNameFromId($sug->statut)), TRUE, array('name'=>'sel_sugstat'));
}
$form = str_replace('', $sel_sugstat, $form);
}
return $form;
}
function upload_file() {
global $f_fichier, $id_lig, $typ_lig, $id_prod, $no, $base_path;
global $id_rep, $path, $up_place, $f_fichier, $f_url, $f_explnum_statut, $deflt_upload_repertoire, $pmb_indexation_docnum, $pmb_indexation_docnum_default,$ck_index ;
switch($typ_lig) {
case '1': //notice
case '5' : //article
$f_notice = $id_prod;
$f_bulletin = 0;
break;
case '2': //bulletin
$f_notice = 0;
$f_bulletin = $id_prod;
break;
default : //non catalogué
break;
}
if (($f_notice || $f_bulletin) && $f_fichier) {
$up_place=0;
$id_rep=0;
$path = '';
$ck_index=0;
if ($deflt_upload_repertoire) {
$id_rep = $deflt_upload_repertoire;
if($id_rep) {
$r = new upload_folder($id_rep);
$path = $r->repertoire_nom;
$up_place = 1;
}
}
if ($pmb_indexation_docnum && $pmb_indexation_docnum_default) $ck_index=1;
$explnum = new explnum();
$retour = $base_path.'/acquisition/achats/receptions/receptions_frame.php?action=delivery&no='.$no.'&id_lig='.$id_lig.'&typ_lig='.$typ_lig.'&id_prod='.$id_prod;
$explnum->mise_a_jour($f_notice, $f_bulletin, '', $f_url, $retour,0,0, $f_explnum_statut);
}
return;
}
function update() {
global $id_lig, $qte_liv, $previous;
global $pmb_resa_records_no_expl, $acquisition_sugg_to_cde_resa_auto;
$error = false;
if (!$id_lig || $qte_liv<=0) return $error;
$lig_cde = new lignes_actes($id_lig);
$id_cde = $lig_cde->num_acte;
$cde = new actes($id_cde);
$id_liv=0;
$t_liv = liens_actes::getDeliveries($cde->id_acte, today());
if (count($t_liv) && $t_liv[0]) {
$id_liv = $t_liv[0];
$liv = new actes($id_liv);
} else {
$liv = new actes();
$liv->date_acte = today();
$liv->type_acte = TYP_ACT_LIV;
$liv->statut = STA_ACT_REC;
$liv->num_entite = $cde->num_entite;
$liv->num_fournisseur = $cde->num_fournisseur;
$liv->num_contact_livr = $cde->num_contact_livr;
$liv->num_contact_fact = $cde->num_contact_fact;
$liv->num_exercice = $cde->num_exercice;
$liv->commentaires = '';
$liv->reference = '';
$liv->calc(); //numero
$liv->save();
$id_liv = $liv->id_acte;
//création des liens entre actes
$la = new liens_actes($id_cde, $id_liv);
}
//Création de la ligne de livraison
$lig_liv = new lignes_actes();
$lig_liv->type_ligne = $lig_cde->type_ligne;
$lig_liv->num_acte = $id_liv;
$lig_liv->lig_ref = $lig_cde->id_ligne;
$lig_liv->num_acquisition = $lig_cde->num_acquisition;
$lig_liv->num_rubrique = $lig_cde->num_rubrique;
$lig_liv->num_produit = $lig_cde->num_produit;
$lig_liv->num_type = $lig_cde->num_type;
$lig_liv->libelle = addslashes($lig_cde->libelle);
$lig_liv->code = addslashes($lig_cde->code);
$lig_liv->prix = $lig_cde->prix;
$lig_liv->tva = $lig_cde->tva;
$lig_liv->nb = $qte_liv;
$lig_liv->date_cre = today();
$lig_liv->statut = $sel_lgstat;
$lig_liv->remise = $lig_cde->remise;
$lig_liv->debit_tva = $lig_cde->debit_tva;
$lig_liv->save();
if(count($lig_cde->getApplicants()) && ($lig_cde->type_ligne == 1 || $lig_cde->type_ligne == 2)){
/**
* Traitement des demandeurs et de leurs résas
*/
if($pmb_resa_records_no_expl && $acquisition_sugg_to_cde_resa_auto) {
$applicants = $lig_cde->getApplicants();
foreach($applicants as $applicant){
if($lig_cde->type_ligne == 1){ //Notice
$resa = new reservation($applicant, $lig_cde->num_produit, 0);
}else if($lig_cde->type_ligne == 2){ //bulletin
$resa = new reservation($applicant, 0, $lig_cde->num_produit);
}
if(!$resa->resa_exists()){
$resa->add(0,1);
}
//TODO: check réservation existante.
}
}
}
/*
//Mise à jour de la suggestion
$sug_map = new suggestions_map();
if ( $lig_cde->num_acquisition != 0 ) {
$sug = array();
$sug[] = $lig_cde->num_acquisition;
$sug_map->doTransition('RECEIVED', $sug);
}
*/
//La commande est-elle soldée
$tab_cde = actes::getLignes($id_cde);
$solde = true;
while (($row_cde = pmb_mysql_fetch_object($tab_cde))) {
if ($row_cde->type_ligne != 3) { // Frais, non livrables
$tab_liv = lignes_actes::getLivraisons($row_cde->id_ligne);
$nb_rec = 0;
while (($row_liv = pmb_mysql_fetch_object($tab_liv))) {
$nb_rec = $nb_rec + $row_liv->nb;
}
if ($row_cde->nb > $nb_rec) {
$solde = false;
break;
}
}
}
if ($solde) {
$cde->statut = ($cde->statut & (~STA_ACT_ENC) | STA_ACT_REC); // Cde soldée >> Statut commande = en cours->soldé
}
$cde->update_statut();
if ($previous) {
$tp = unserialize(rawurldecode(stripslashes($previous)));
}
if(!is_array($tp)) $tp = array();
$tp[] = $lig_liv->id_ligne;
$previous = addslashes(rawurlencode(serialize($tp)));
return !$error;
}
function update_sug() {
global $id_sug, $sel_sugstat;
//Mise à jour de la suggestion
$sug = array();
$sug[0] = $id_sug;
$sug_map = new suggestions_map();
$sug_map->doTransition($sug_map->getStateNameFromId($sel_sugstat), $sug, TRUE);
return true;
}
function undo() {
global $id_lig, $previous;
$error=false;
if(!$id_lig) return $error;
if(!$previous) return $error;
$tp = unserialize(rawurldecode(stripslashes($previous))) ;
if (!is_array($tp) || !count($tp)) {
$previous = 0;
return $error;
}
$id_liv = array_pop($tp);
if (count($tp)) {
$previous = addslashes(rawurlencode(serialize($tp)));
} else {
$previous=0;
}
$lg_liv = new lignes_actes($id_liv);
if (!$lg_liv->id_ligne) return $error;
$liv = new actes($lg_liv->num_acte);
if (!$liv->id_acte) return $error;
$id_cde = liens_actes::getOrder($id_liv);
$lg_liv->delete();
$r = actes::getLignes($lg_liv->num_acte);
if (pmb_mysql_num_rows($r)==0) {
$liv->delete();
}
$cde = new actes($id_cde);
$cde->statut = ($cde->statut & !STA_ACT_AVA & !STA_ACT_REC & !STA_ACT_ARC | STA_ACT_ENC) ;
$cde->update_statut();
return !$error;
}
//Traitement des actions
$error_msg = '';
switch($action) {
case 'upload_file' :
upload_file();
break;
case 'add_expl' :
if (!add_expl()) {
$msg_client = htmlentities($msg['acquisition_recept_add_expl_err'], ENT_QUOTES, $charset);
} else {
$msg_client = htmlentities($msg['acquisition_recept_add_expl_ok'], ENT_QUOTES, $charset);
}
show_delivery_form($msg_client);
break;
case 'update' :
if (!update()) {
$msg_client = htmlentities($msg['acquisition_recept_deliv_err'], ENT_QUOTES, $charset);
} else {
$msg_client = htmlentities($msg['acquisition_recept_deliv_ok'], ENT_QUOTES, $charset);
}
show_delivery_form($msg_client);
break;
case 'update_sug' :
if (!update_sug()) {
$msg_client = htmlentities($msg['acquisition_recept_update_sug_err'], ENT_QUOTES, $charset);
} else {
$msg_client = htmlentities($msg['acquisition_recept_update_sug_ok'], ENT_QUOTES, $charset);
}
show_delivery_form($msg_client);
break;
case 'undo' :
if (!undo()) {
$msg_client = htmlentities($msg['acquisition_recept_undo_err'], ENT_QUOTES, $charset);
} else {
$msg_client = htmlentities($msg['acquisition_recept_undo_ok'], ENT_QUOTES, $charset);
}
show_delivery_form($msg_client);
break;
case 'show' :
default:
show_delivery_form();
break;
}
?>