> Avertissement utilisateur et retour $qte_fac = 0; for($i='1'; $i<=$max_lig; $i++) { $qte_fac = $qte_fac + $fac[$i]; } if ( ($action == 'update') && ($max_lig_fac == 0) && ($qte_fac == 0)) { $error = true; $error_msg = $msg['acquisition_fac_vid']; return; } for($i='1'; $i<=$max_lig; $i++) { //Vérification prix $prix[$i] = str_replace(',','.',$prix[$i]); if (!is_numeric($prix[$i]) || $prix[$i] > '9999999999.99' ) { $error = true; $error_msg = $msg['acquisition_lig'].' '.$i.': '.$msg['acquisition_prix_fac_inv']; break; } //Vérification tva if ($acquisition_gestion_tva) { //Vérification tva $tva[$i] = str_replace(',','.',$tva[$i]); if (!is_numeric($tva[$i]) || $tva[$i] > '99.99' ) { $error = true; $error_msg = $msg['acquisition_lig'].' '.$i.': '.$msg['acquisition_tva_fac_inv']; break; } } //Vérification remise $rem[$i] = str_replace(',','.',$rem[$i]); if (!is_numeric($rem[$i]) || $rem[$i] < '0' || $rem[$i] > '99.99' ) { $error = true; $error_msg = $msg['acquisition_lig'].' '.$i.': '.$msg['acquisition_rem_fac_inv']; break; } //Vérification quantité facturée if (!is_numeric($fac[$i]) || $fac[$i] < '0' || $fac[$i] > '99999' ) { $error = true; $error_msg = $msg['acquisition_lig'].' '.$i.': '.$msg['acquisition_qte_fac_inv']; break; } if ($fac[$i] > $sol[$i]) { $error = true; $error_msg = $msg['acquisition_lig'].' '.$i.': '.$msg['acquisition_qte_fac_sup']; break; } //Vérification saisie Budget if ($acquisition_budget && !$rub[$i]) { $error = true; $error_msg = $msg['acquisition_lig'].' '.$i.': '.$msg['acquisition_act_bud_err']; break; } } } //Vérification dépassement de budget function verif_bud() { global $msg, $charset; global $max_lig; global $prix, $rem, $rub, $fac; global $error, $error_msg; global $acquisition_budget; global $id_lig; if ($acquisition_budget) { $tot_rub = array(); $tot_bud = array(); //récupère le total facturé par rubrique for ($i=1;$i<=$max_lig;$i++) { $ligne_commande = new lignes_actes($id_lig[$i]); if (!array_key_exists($rub[$i], $tot_rub)) $tot_rub[$rub[$i]] = 0; if ($fac[$i]) $tot_rub[$rub[$i]] += ( $fac[$i]*$prix[$i]*(1 - ($rem[$i]/100) ) ) - ( $fac[$i]*($ligne_commande->prix)*(1 - (($ligne_commande->remise)/100) ) ); } //récupère le total facturé par budget foreach ($tot_rub as $key=>$value) { $r = new rubriques($key); if (!array_key_exists($r->num_budget, $tot_bud)) $tot_bud[$r->num_budget] = 0; $tot_bud[$r->num_budget] += $value; } //Vérifie que les budgets affectés par rubrique ne sont pas dépassés foreach ($tot_rub as $key=>$value) { $r = new rubriques($key); $b = new budgets($r->num_budget); if ( $b->type_budget == TYP_BUD_RUB ) { //Budget affecté par rubrique $mnt_rub = $r->montant; $eng_rub = rubriques::calcEngagement($key) + $value; //Budget rubrique dépassé ? if ($eng_rub > $mnt_rub) { $error = true; $tab_rub = rubriques::listAncetres($key, true); $lib_rub = $b->libelle.":"; foreach ($tab_rub as $value) { $lib_rub.= $value[1]; if($value[0] != $key) $lib_rub.= ":"; } $error_msg = $msg['acquisition_rub']." :\\n\\n".$lib_rub."\\n\\n".$msg['acquisition_act_bud_dep']; break; } } } //Vérifie que les budgets affectés globalement ne sont pas dépassés foreach ($tot_bud as $key=>$value) { $b = new budgets($key); if ( $b->type_budget == TYP_BUD_GLO ) { $mnt_bud = $b->montant_global; $eng_bud = budgets::calcEngagement($b->id_budget) + $value; //Budget dépassé ? if ($eng_bud > $mnt_bud) { $error = true; $error_msg = $msg['acquisition_act_tab_bud']." : ".$b->libelle."\\n\\n".$msg['acquisition_act_bud_dep']; break; } } } } } //Affichage création facture depuis commande function show_lig_from_cde() { global $msg, $charset; global $frame_modif, $frame_row, $frame_row_bl_header, $frame_row_bl, $bt_sup_lig; global $select_typ; global $id_bibli, $id_cde, $id_fac; global $focus; global $error, $error_msg; global $acquisition_gestion_tva; $frame = $frame_modif; //Recherche du solde à livrer sur la commande $cde = new actes($id_cde); $lignes_cde = actes::getLignes($id_cde); $nb_lig = 0; while (($row_cde = pmb_mysql_fetch_object($lignes_cde))) { //recherche des lignes de facture $lignes_fac = lignes_actes::getFactures($row_cde->id_ligne); $nb_fac = 0; while (($row_fac = pmb_mysql_fetch_object($lignes_fac))) { $nb_fac = $nb_fac + $row_fac->nb; } $sol = $row_cde->nb - $nb_fac; //affichage ligne si solde à facturer >0 if ($sol) { $nb_lig++; $frame = str_replace('', $frame_row.'', $frame); $frame = str_replace('', $select_typ[0], $frame); $frame = str_replace('', select_rub($id_cde, $row_cde->num_rubrique), $frame); $frame = str_replace('', lgstat::getLabelFromId($row_cde->statut), $frame); $frame = str_replace('!!id_lgstat!!', $row_cde->statut, $frame); $frame = str_replace('!!no!!', $nb_lig, $frame); $frame = str_replace('!!id_lig!!', $row_cde->id_ligne, $frame); $frame = str_replace('!!id_prod!!', $row_cde->num_produit, $frame); $frame = str_replace('!!code!!', htmlentities($row_cde->code, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!lib!!', htmlentities($row_cde->libelle, ENT_QUOTES, $charset), $frame); //il faut calculer le prix HT if ($acquisition_gestion_tva == 2) { $frame = str_replace('!!prix!!', number_format(($row_cde->prix/(1+($row_cde->tva/100))),2,'.',''), $frame); } else { $frame = str_replace('!!prix!!', number_format($row_cde->prix,2,'.',''), $frame); } $frame = str_replace('!!sol!!', $sol, $frame); $frame = str_replace('!!fac!!', '0', $frame); $tp = new types_produits($row_cde->num_type); $frame = str_replace('!!typ!!', $tp->id_produit, $frame); $frame = str_replace('!!lib_typ!!', $tp->libelle, $frame); $frame = str_replace('!!rem!!', number_format($row_cde->remise,2,'.','') , $frame); //affichage des taux de tva if ($acquisition_gestion_tva) { $frame = str_replace('!!tva!!', number_format($row_cde->tva,2,'.',''), $frame); } else { $frame = str_replace('!!tva!!', '', $frame); } } } $frame = str_replace('!!tot_ht!!', '0.00', $frame); $frame = str_replace('!!tot_tva!!', '0.00', $frame); $frame = str_replace('!!tot_ttc!!', '0.00', $frame); $frame = str_replace('!!max_lig!!', $nb_lig, $frame); $frame = str_replace('!!max_lig_fac!!', '0', $frame); $frame = str_replace('!!id_fac!!', '0', $frame); $frame = str_replace('!!id_fou!!', $cde->num_fournisseur, $frame); print $frame; } //Affichage des lignes de facture function show_lig_fac() { global $msg, $charset; global $frame_modif, $frame_row, $frame_row_fa_header, $frame_row_fa, $frame_row_fa_arc, $bt_sup_lig, $no_bt_sup_lig; global $select_typ, $select_rub; global $id_bibli, $id_cde, $id_fac; global $focus; global $error, $error_msg; global $acquisition_gestion_tva; $tot_ht = 0; $tot_tva = 0; $tot_ttc = 0; $frame = $frame_modif; //Lecture des éléments de la commande $cde = new actes($id_cde); $lignes_cde = actes::getLignes($id_cde); //Lecture de la facture $factu = new actes($id_fac); if( (($factu->statut & STA_ACT_PAY) == STA_ACT_PAY) || (($factu->statut & STA_ACT_ARC) == STA_ACT_ARC) ) { //La facture est payée ou archivée, donc non modifiable $nb_lig = 0; //affichage du déjà facturé sur la facture courante $lignes_fac = actes::getLignes($id_fac); $max_lig_fac = pmb_mysql_num_rows($lignes_fac); $frame = str_replace('!!max_lig_fac!!', $max_lig_fac, $frame); $frame = str_replace('!!max_lig!!', '0', $frame); while (($row_fac = pmb_mysql_fetch_object($lignes_fac))) { $nb_lig++; $frame = str_replace('', $frame_row_fa_arc.'', $frame); $frame = str_replace('', $select_typ[1], $frame); $frame = str_replace('', $select_rub[1], $frame); $frame = str_replace('', lgstat::getLabelFromId($row_fac->statut), $frame); $frame = str_replace('!!id_lgstat!!', $row_fac->statut, $frame); $frame = str_replace('!!no!!', $nb_lig, $frame); $frame = str_replace('!!code!!', htmlentities($row_fac->code, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!lib!!', htmlentities($row_fac->libelle, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!prix!!', number_format($row_fac->prix,2,'.',''), $frame); $tp = new types_produits($row_fac->num_type); $frame = str_replace('!!typ!!', $tp->id_produit, $frame); $frame = str_replace('!!lib_typ!!', htmlentities($tp->libelle, ENT_QUOTES, $charset), $frame); $id_rub = $row_fac->num_rubrique; if (!$id_rub) { $id_rub = 0; $lib_rub = ''; } else { $rub = new rubriques($id_rub); $bud = new budgets($rub->num_budget); $lib_bud = $bud->libelle; $tab_rub = rubriques::listAncetres($id_rub, true); $lib_rub = $lib_bud.':'; foreach ($tab_rub as $value) { $lib_rub.= htmlentities($value[1], ENT_QUOTES, $charset); if($value[0] != $id_rub) $lib_rub.= ":"; } } $frame = str_replace('!!id_rub!!',$id_rub , $frame); $frame = str_replace('!!lib_rub!!', $lib_rub, $frame); $frame = str_replace('!!fac!!', $row_fac->nb, $frame); $frame = str_replace('!!rem!!', number_format($row_fac->remise,2,'.','') , $frame); //calcul des montants ht, ttc, tva if ($acquisition_gestion_tva) { $lig_ht = $row_fac->nb * $row_fac->prix * (1-($row_fac->remise/100)) ; $tot_ht = $tot_ht + $lig_ht; $tot_tva = $tot_tva + ($lig_ht*($row_fac->tva/100) ); $tot_ttc = $tot_ht + $tot_tva; $frame = str_replace('!!tva!!', number_format($row_fac->tva,2,',',''), $frame); } else { $lig_ttc = $row_fac->nb * $row_fac->prix * (1-($row_fac->remise/100)) ; $tot_ttc = $tot_ttc + $lig_ttc; $frame = str_replace('!!tva!!', '', $frame); } } $frame = str_replace('!!tot_ht!!', number_format(round($tot_ht,2),2,'.',''), $frame); $frame = str_replace('!!tot_tva!!', number_format(round($tot_tva,2),2,'.',''), $frame); $frame = str_replace('!!tot_ttc!!', number_format(round($tot_ttc,2),2,'.',''), $frame); $frame = str_replace('!!id_fac!!', $id_fac, $frame); $frame = str_replace('!!id_fou!!', $cde->num_fournisseur, $frame); //Affichage du bouton de suppression de lignes $frame = str_replace('', $no_bt_sup_lig, $frame); print $frame; } else { //la facture est modifiable if( ($factu->statut & STA_ACT_PAY) != STA_ACT_PAY ) { //La facture n'est pas payée, on affiche les lignes restant à facturer $nb_lig = 0; while (($row_cde = pmb_mysql_fetch_object($lignes_cde))) { //recherche des lignes de Facture $lignes_fac = lignes_actes::getFactures($row_cde->id_ligne); $sol = $row_cde->nb; while (($row_fac = pmb_mysql_fetch_object($lignes_fac))) { $sol = $sol - $row_fac->nb; } $fac = 0; //affichage ligne si solde à facturer >0 if ($sol) { $nb_lig++; $frame = str_replace('', $frame_row.'', $frame); $frame = str_replace('', $select_typ[0], $frame); $frame = str_replace('', select_rub($id_cde, $row_cde->num_rubrique), $frame); $frame = str_replace('', lgstat::getLabelFromId($row_cde->statut), $frame); $frame = str_replace('!!id_lgstat!!', $row_cde->statut, $frame); $frame = str_replace('!!no!!', $nb_lig, $frame); $frame = str_replace('!!id_lig!!', $row_cde->id_ligne, $frame); $frame = str_replace('!!id_prod!!', $row_cde->num_produit, $frame); $frame = str_replace('!!code!!', htmlentities($row_cde->code, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!lib!!', htmlentities($row_cde->libelle, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!prix!!', number_format($row_cde->prix,2,'.',''), $frame); $tp = new types_produits($row_cde->num_type); $frame = str_replace('!!typ!!', $tp->id_produit, $frame); $frame = str_replace('!!lib_typ!!', htmlentities($tp->libelle, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!tva!!', number_format($row_cde->tva,2,'.',''), $frame); $frame = str_replace('!!rem!!', number_format($row_cde->remise,2,'.',''), $frame); $frame = str_replace('!!sol!!', $sol, $frame); $frame = str_replace('!!fac!!', $fac, $frame); } } $frame = str_replace('!!max_lig!!', $nb_lig, $frame); } else { $frame = str_replace('!!max_lig!!', 0, $frame); } //affichage du déjà facturé sur la facture courante $frame = str_replace('', $frame_row_fa_header.'', $frame); $lignes_fac = actes::getLignes($id_fac); $max_lig_fac = pmb_mysql_num_rows($lignes_fac); $frame = str_replace('!!max_lig_fac!!', $max_lig_fac, $frame); while (($row_fac = pmb_mysql_fetch_object($lignes_fac))) { $nb_lig++; $frame = str_replace('', $frame_row_fa.'', $frame); $frame = str_replace('', $select_typ[1], $frame); $frame = str_replace('', $select_rub[1], $frame); $frame = str_replace('', lgstat::getLabelFromId($row_fac->statut), $frame); $frame = str_replace('!!id_lgstat!!', $row_fac->statut, $frame); $frame = str_replace('!!no!!', $nb_lig, $frame); $frame = str_replace('!!id_lig!!', $row_fac->lig_ref, $frame); $frame = str_replace('!!id_prod!!', $row_fac->num_produit, $frame); $frame = str_replace('!!code!!', htmlentities($row_fac->code, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!lib!!', htmlentities($row_fac->libelle, ENT_QUOTES, $charset), $frame); $frame = str_replace('!!prix!!', number_format($row_fac->prix,2,'.',''), $frame); $tp = new types_produits($row_fac->num_type); $frame = str_replace('!!typ!!', $tp->id_produit, $frame); $frame = str_replace('!!lib_typ!!', htmlentities($tp->libelle, ENT_QUOTES, $charset), $frame); $id_rub = $row_fac->num_rubrique; if (!$id_rub) { $id_rub = 0; $lib_rub = ''; } else { $rub = new rubriques($id_rub); $bud = new budgets($rub->num_budget); $lib_bud = $bud->libelle; $tab_rub = rubriques::listAncetres($id_rub, true); $lib_rub = $lib_bud.':'; foreach ($tab_rub as $value) { $lib_rub.= htmlentities($value[1], ENT_QUOTES, $charset); if($value[0] != $id_rub) $lib_rub.= ":"; } } $frame = str_replace('!!id_rub!!',$id_rub , $frame); $frame = str_replace('!!lib_rub!!', $lib_rub, $frame); $frame = str_replace('!!fac!!', $row_fac->nb, $frame); $frame = str_replace('!!rem!!', number_format($row_fac->remise,2,'.',''), $frame); //calcul des montants ht, ttc, tva if ($acquisition_gestion_tva) { $lig_ht = $row_fac->nb * $row_fac->prix * (1-($row_fac->remise/100)) ; $tot_ht = $tot_ht + $lig_ht; $tot_tva = $tot_tva + ($lig_ht*($row_fac->tva/100) ); $tot_ttc = $tot_ht + $tot_tva; $frame = str_replace('!!tva!!', number_format($row_fac->tva,2,'.',''), $frame); } else { $lig_ttc = $row_fac->nb * $row_fac->prix * (1-($row_fac->remise/100)) ; $tot_ttc = $tot_ttc + $lig_ttc; $frame = str_replace('!!tva!!', '', $frame); } } $frame = str_replace('!!tot_ht!!', number_format(round($tot_ht,2),2,'.',''), $frame); $frame = str_replace('!!tot_tva!!', number_format(round($tot_tva,2),2,'.',''), $frame); $frame = str_replace('!!tot_ttc!!', number_format(round($tot_ttc,2),2,'.',''), $frame); $frame = str_replace('!!id_fac!!', $id_fac, $frame); $frame = str_replace('!!id_fou!!', $cde->num_fournisseur, $frame); //Affichage du bouton de suppression de lignes if (!$max_lig_fac) { $frame = str_replace('', $no_bt_sup_lig, $frame); } else { $frame = str_replace('', $bt_sup_lig, $frame); } print $frame; } } //Affichage des lignes si erreur function show_lig_bak() { global $msg; global $frame_modif, $frame_row, $frame_row_fa_header, $frame_row_fa, $select_typ, $select_rub, $bt_sup_lig, $no_bt_sup_lig; global $id_bibli, $id_fou, $id_cde, $id_fac; global $max_lig, $max_lig_fac; global $id_lig, $id_prod, $code, $lib, $prix, $typ, $tva, $rem , $lib_typ, $rub, $lib_rub, $id_lgstat, $sol, $fac; global $error, $error_msg; global $acquisition_gestion_tva; $frame = $frame_modif; $cde = new actes($id_cde); $lig_afac = array(); //Tableau des lignes à facturer $lig_dfac = array(); //Tableau des lignes déjà facturées $focus = 0; //Les lignes restant à facturer sont reprises telles quelles for($i=1;$i<=$max_lig;$i++) { $lig_afac[$i]['id_lig'] = $id_lig[$i]; $lig_afac[$i]['id_prod']=$id_prod[$i]; $lig_afac[$i]['code']=stripslashes($code[$i]); $lig_afac[$i]['lib']= stripslashes($lib[$i]); $lig_afac[$i]['prix']= number_format(round($prix[$i],2),2,'.',''); $lig_afac[$i]['typ']= $typ[$i]; $lig_afac[$i]['tva']= number_format($tva[$i],2,'.',''); $lig_afac[$i]['rem']= number_format(round($rem[$i],2),2,'.',''); $lig_afac[$i]['lib_typ']= stripslashes($lib_typ[$i]); $lig_afac[$i]['rub']= $rub[$i]; $lig_afac[$i]['lib_rub']= stripslashes($lib_rub[$i]); $lig_afac[$i]['id_lgstat']= $id_lgstat[$i]; $lig_afac[$i]['sol']= $sol[$i]; $lig_afac[$i]['fac']= $fac[$i]; } //Les lignes déjà facturées sont reprises telles quelles for($i;$i<=$max_lig+$max_lig_fac;$i++) { $lig_dfac[$i]['id_lig'] = $id_lig[$i]; $lig_dfac[$i]['id_prod']=$id_prod[$i]; $lig_dfac[$i]['code']=stripslashes($code[$i]); $lig_dfac[$i]['lib']= stripslashes($lib[$i]); $lig_dfac[$i]['prix']= number_format(round($prix[$i],2),2,'.',''); $lig_dfac[$i]['typ']= $typ[$i]; $lig_dfac[$i]['tva']= number_format($tva[$i],2,'.',''); $lig_dfac[$i]['rem']= number_format(round($rem[$i],2),2,'.',''); $lig_dfac[$i]['lib_typ']= stripslashes($lib_typ[$i]); $lig_dfac[$i]['rub']= $rub[$i]; $lig_dfac[$i]['lib_rub']= stripslashes($lib_rub[$i]); $lig_dfac[$i]['id_lgstat']= $id_lgstat[$i]; $lig_dfac[$i]['fac']= $fac[$i]; } $index = 1; $max_lig = count($lig_afac); //Affichage des lignes restant à facturer foreach($lig_afac as $key=>$value) { $frame = str_replace('', $frame_row.'', $frame); $frame = str_replace('', $select_typ[0], $frame); $frame = str_replace('', $select_rub[0], $frame); $frame = str_replace('', lgstat::getLabelFromId($value['id_lgstat']), $frame); $frame = str_replace('!!id_lgstat!!', $value['id_lgstat'], $frame); $frame = str_replace('!!no!!', $index, $frame); $frame = str_replace('!!id_lig!!', $value['id_lig'], $frame); $frame = str_replace('!!id_prod!!', $value['id_prod'], $frame); $frame = str_replace('!!code!!', $value['code'], $frame); $frame = str_replace('!!lib!!', $value['lib'], $frame); $frame = str_replace('!!prix!!', $value['prix'], $frame); $frame = str_replace('!!typ!!', $value['typ'], $frame); $frame = str_replace('!!tva!!', $value['tva'], $frame); $frame = str_replace('!!rem!!', $value['rem'], $frame); $frame = str_replace('!!lib_typ!!', $value['lib_typ'], $frame); $frame = str_replace('!!id_rub!!', $value['rub'], $frame); $frame = str_replace('!!lib_rub!!', $value['lib_rub'], $frame); $frame = str_replace('!!sol!!', $value['sol'], $frame); $frame = str_replace('!!fac!!', $value['fac'], $frame); $index++; } $frame = str_replace('!!max_lig!!', $max_lig, $frame); $max_lig_fac = count($lig_dfac); if ($max_lig_fac) { $frame = str_replace('', $frame_row_fa_header.'', $frame); //Affichage des lignes déjà facturées foreach($lig_dfac as $key=>$value) { $frame = str_replace('', $frame_row_fa.'', $frame); $frame = str_replace('', $select_typ[1], $frame); $frame = str_replace('', $select_rub[1], $frame); $frame = str_replace('', lgstat::getLabelFromId($value['id_lgstat']), $frame); $frame = str_replace('!!id_lgstat!!', $value['id_lgstat'], $frame); $frame = str_replace('!!no!!', $index, $frame); $frame = str_replace('!!id_lig!!', $value['id_lig'], $frame); $frame = str_replace('!!id_prod!!', $value['id_prod'], $frame); $frame = str_replace('!!code!!', $value['code'], $frame); $frame = str_replace('!!lib!!', $value['lib'], $frame); $frame = str_replace('!!prix!!', $value['prix'], $frame); $frame = str_replace('!!typ!!', $value['typ'], $frame); $frame = str_replace('!!rem!!', $value['rem'], $frame); $frame = str_replace('!!lib_typ!!', $value['lib_typ'], $frame); $frame = str_replace('!!id_rub!!', $value['rub'], $frame); $frame = str_replace('!!lib_rub!!', $value['lib_rub'], $frame); $frame = str_replace('!!sol!!', '', $frame); $frame = str_replace('!!fac!!', $value['fac'], $frame); $index++; //calcul des montants ht, ttc, tva if ($acquisition_gestion_tva) { $lig_ht = $value['fac'] * $value['prix'] * (1-($value['rem']/100)) ; $tot_ht = $tot_ht + $lig_ht; $tot_tva = $tot_tva + ($lig_ht*($value['tva']/100) ); $tot_ttc = $tot_ht + $tot_tva; $frame = str_replace('!!tva!!', $value['tva'], $frame); } else { $lig_ttc = $value['fac'] * $value['prix'] * (1-($value['rem']/100)) ; $tot_ttc = $tot_ttc + $lig_ttc; $frame = str_replace('!!tva!!', '', $frame); } } } $frame = str_replace('!!max_lig_fac!!', $max_lig_fac, $frame); $frame = str_replace('!!tot_ht!!', number_format(round($tot_ht,2),2,'.',''), $frame); $frame = str_replace('!!tot_tva!!', number_format(round($tot_tva,2),2,'.',''), $frame); $frame = str_replace('!!tot_ttc!!', number_format(round($tot_ttc,2),2,'.',''), $frame); if ($error) { $frame = str_replace('', "", $frame); } $frame = str_replace('!!id_fac!!', $id_fac, $frame); $frame = str_replace('!!id_fou!!', $cde->num_fournisseur, $frame); print $frame; } //test et formatage du code saisi function test_cb() { global $cb; global $barcode; $isbn = ''; $barcode = ''; // on commence par voir ce que la saisie utilisateur est ($cb) $cb = clean_string($cb); if(isEAN($cb)) { // la saisie est un EAN -> on tente de le formater en ISBN $isbn = EANtoISBN($cb); // si échec, on prend l'EAN comme il vient if(!$isbn) { $barcode = $cb; } else { $barcode=$isbn; } } else { if(isISBN($cb)) { // si la saisie est un ISBN $isbn = formatISBN($cb); // si échec, ISBN erroné on le prend sous cette forme if(!$isbn) $barcode = $cb; else $barcode=$isbn ; } else { // ce n'est rien de tout ça, on prend la saisie telle quelle $barcode = $cb; } } } //Recherche dans les lignes de commandes après saisie code barre function search_lig_fac() { global $msg; global $frame_modif, $frame_row, $frame_row_fa_header, $frame_row_fa, $select_typ, $select_rub, $bt_sup_lig, $no_bt_sup_lig; global $id_bibli, $id_cde, $id_fac; global $max_lig, $max_lig_fac; global $id_lig, $id_prod, $code, $lib, $prix, $typ, $tva, $rem, $lib_typ, $rub, $lib_rub, $id_lgstat, $sol, $fac; global $focus, $barcode; global $error, $error_msg; global $warning, $warning_msg; global $acquisition_gestion_tva; $frame = $frame_modif; $cde = new actes($id_cde); $lig_afac = array(); //Tableau des lignes à facturer $lig_dfac = array(); //Tableau des lignes déjà facturées $focus = 0; //Les lignes restant à facturer sont reprises telles quelles for($i=1;$i<=$max_lig;$i++) { $lig_afac[$i]['id_lig'] = $id_lig[$i]; $lig_afac[$i]['id_prod']=$id_prod[$i]; $lig_afac[$i]['code']=stripslashes($code[$i]); $lig_afac[$i]['lib']= stripslashes($lib[$i]); $lig_afac[$i]['prix']= number_format(round($prix[$i],2),2,'.',''); $lig_afac[$i]['typ']= $typ[$i]; $lig_afac[$i]['tva']= number_format($tva[$i],2,'.',''); $lig_afac[$i]['rem']= number_format(round($rem[$i],2),2,'.',''); $lig_afac[$i]['lib_typ']= stripslashes($lib_typ[$i]); $lig_afac[$i]['rub']= $rub[$i]; $lig_afac[$i]['lib_rub']= stripslashes($lib_rub[$i]); $lig_afac[$i]['id_lgstat']= $id_lgstat[$i]; $lig_afac[$i]['sol']= $sol[$i]; $lig_afac[$i]['fac']= $fac[$i]; } //Les lignes déjà facturées sont reprises telles quelles for($i;$i<=$max_lig+$max_lig_fac;$i++) { $lig_dfac[$i]['id_lig'] = $id_lig[$i]; $lig_dfac[$i]['id_prod']=$id_prod[$i]; $lig_dfac[$i]['code']=stripslashes($code[$i]); $lig_dfac[$i]['lib']= stripslashes($lib[$i]); $lig_dfac[$i]['prix']= number_format(round($prix[$i],2),2,'.',''); $lig_dfac[$i]['typ']= $typ[$i]; $lig_dfac[$i]['tva']= number_format($tva[$i],2,'.',''); $lig_dfac[$i]['rem']= number_format(round($rem[$i],2),2,'.',''); $lig_dfac[$i]['lib_typ']= stripslashes($lib_typ[$i]); $lig_dfac[$i]['rub']= $rub[$i]; $lig_dfac[$i]['lib_rub']= stripslashes($lib_rub[$i]); $lig_dfac[$i]['id_lgstat']= $id_lgstat[$i]; $lig_dfac[$i]['fac']= $fac[$i]; } //recherche du code saisi $trouve = 0; foreach($lig_afac as $key=>$value) { if($value['code'] == $barcode) { //Code trouvé $trouve = $key; if( ($value['fac'] < $value['sol']) ) { //La qté saisie est inférieure à la qté restant à recevoir >> Sortie break; //Sinon, si la quantité saisie est égale à la quantité restant à recevoir >> On recherche plus avant } } } $index = 1; $max_lig = count($lig_afac); //Affichage des lignes restant à facturer foreach($lig_afac as $key=>$value) { if ($trouve == $key) { $focus = $index; } $frame = str_replace('', $frame_row.'', $frame); $frame = str_replace('', $select_typ[0], $frame); $frame = str_replace('', $select_rub[0], $frame); $frame = str_replace('', lgstat::getLabelFromId($value['id_lgstat']), $frame); $frame = str_replace('!!id_lgstat!!', $value['id_lgstat'], $frame); $frame = str_replace('!!no!!', $index, $frame); $frame = str_replace('!!id_lig!!', $value['id_lig'], $frame); $frame = str_replace('!!id_prod!!', $value['id_prod'], $frame); $frame = str_replace('!!code!!', $value['code'], $frame); $frame = str_replace('!!lib!!', $value['lib'], $frame); $frame = str_replace('!!prix!!', $value['prix'], $frame); $frame = str_replace('!!typ!!', $value['typ'], $frame); $frame = str_replace('!!tva!!', $value['tva'], $frame); $frame = str_replace('!!rem!!', $value['rem'], $frame); $frame = str_replace('!!lib_typ!!', $value['lib_typ'], $frame); $frame = str_replace('!!id_rub!!', $value['rub'], $frame); $frame = str_replace('!!lib_rub!!', $value['lib_rub'], $frame); $frame = str_replace('!!sol!!', $value['sol'], $frame); $frame = str_replace('!!fac!!', $value['fac'], $frame); $index++; } $frame = str_replace('!!max_lig!!', $max_lig, $frame); $max_lig_fac = count($lig_dfac); if ($max_lig_fac) { $frame = str_replace('', $frame_row_fa_header.'', $frame); //Affichage des lignes déjà facturées foreach($lig_dfac as $key=>$value) { $frame = str_replace('', $frame_row_fa.'', $frame); $frame = str_replace('', $select_typ[1], $frame); $frame = str_replace('', $select_rub[1], $frame); $frame = str_replace('', lgstat::getLabelFromId($value['id_lgstat']), $frame); $frame = str_replace('!!id_lgstat!!', $value['id_lgstat'], $frame); $frame = str_replace('!!no!!', $index, $frame); $frame = str_replace('!!id_lig!!', $value['id_lig'], $frame); $frame = str_replace('!!id_prod!!', $value['id_prod'], $frame); $frame = str_replace('!!code!!', $value['code'], $frame); $frame = str_replace('!!lib!!', $value['lib'], $frame); $frame = str_replace('!!prix!!', $value['prix'], $frame); $frame = str_replace('!!typ!!', $value['typ'], $frame); $frame = str_replace('!!rem!!', $value['rem'], $frame); $frame = str_replace('!!lib_typ!!', $value['lib_typ'], $frame); $frame = str_replace('!!id_rub!!', $value['rub'], $frame); $frame = str_replace('!!lib_rub!!', $value['lib_rub'], $frame); $frame = str_replace('!!sol!!', '', $frame); $frame = str_replace('!!fac!!', $value['fac'], $frame); $index++; //calcul des montants ht, ttc, tva if ($acquisition_gestion_tva) { $lig_ht = $value['fac'] * $value['prix'] * (1-($value['rem']/100)) ; $tot_ht = $tot_ht + $lig_ht; $tot_tva = $tot_tva + ($lig_ht*($value['tva']/100) ); $tot_ttc = $tot_ht + $tot_tva; $frame = str_replace('!!tva!!', $value['tva'], $frame); } else { $lig_ttc = $value['fac'] * $value['prix'] * (1-($value['rem']/100)) ; $tot_ttc = $tot_ttc + $lig_ttc; $frame = str_replace('!!tva!!', '', $frame); } } } $frame = str_replace('!!max_lig_fac!!', $max_lig_fac, $frame); $frame = str_replace('!!tot_ht!!', number_format(round($tot_ht,2),2,'.',''), $frame); $frame = str_replace('!!tot_tva!!', number_format(round($tot_tva,2),2,'.',''), $frame); $frame = str_replace('!!tot_ttc!!', number_format(round($tot_ttc,2),2,'.',''), $frame); //Mise en place focus si code saisi trouvé if ($focus) { $focus = ""; } else { $focus = ""; } $frame = str_replace('', $focus, $frame); if ($error) { $frame = str_replace('', "", $frame); } $frame = str_replace('!!id_fac!!', $id_fac, $frame); $frame = str_replace('!!id_fou!!', $cde->num_fournisseur, $frame); print $frame; } function sup_lig_fac() { global $msg; global $frame_modif, $frame_row, $frame_row_fa_header, $frame_row_fa, $select_typ, $select_rub, $bt_sup_lig, $no_bt_sup_lig; global $id_bibli, $id_cde, $id_fac; global $max_lig, $max_lig_fac; global $chk, $id_lig, $id_prod, $code, $lib, $prix, $typ, $tva, $rem, $lib_typ, $rub, $lib_rub, $id_lgstat, $sol, $fac; global $acquisition_gestion_tva; $tot_ht = 0; $tot_tva = 0; $tot_ttc = 0; $frame = $frame_modif; $cde = new actes($id_cde); $lig_afac = array(); //Tableau des lignes à facturer $lig_dfac = array(); //Tableau des lignes déjà facturées //Les lignes restant à facturer sont reprises telles quelles for($i=1;$i<=$max_lig;$i++) { $lig_afac[$i]['id_lig'] = $id_lig[$i]; $lig_afac[$i]['id_prod']=$id_prod[$i]; $lig_afac[$i]['code']=stripslashes($code[$i]); $lig_afac[$i]['lib']= stripslashes($lib[$i]); $lig_afac[$i]['prix']= number_format(round($prix[$i],2),2,'.',''); $lig_afac[$i]['typ']= $typ[$i]; $lig_afac[$i]['tva']= number_format($tva[$i],2,'.',''); $lig_afac[$i]['rem']= number_format(round($rem[$i],2),2,'.',''); $lig_afac[$i]['lib_typ']= stripslashes($lib_typ[$i]); $lig_afac[$i]['rub']= $rub[$i]; $lig_afac[$i]['lib_rub']= stripslashes($lib_rub[$i]); $lig_afac[$i]['id_lgstat']= $id_lgstat[$i]; $lig_afac[$i]['sol']= $sol[$i]; $lig_afac[$i]['fac']= $fac[$i]; } //La quantite facturée des lignes supprimées est reportée dans le solde des lignes restant à facturer si l'identifiant de ligne existe //Sinon, une nouvelle ligne restant à facturer est créée for($i;$i<=$max_lig+$max_lig_fac;$i++) { if ($chk[$i]) { //La ligne est cochée pour suppression $raf = false; for($j=1;$j<=$max_lig; $j++) { //Y avait-il un solde à facturer if($lig_afac[$j]['id_lig'] == $id_lig[$i]) { //Si oui, on rajoute le facturé de la ligne supprimée au solde à facturer $lig_afac[$j]['sol'] = $lig_afac[$j]['sol']+$fac[$i]; $raf = true; break; } } if (!$raf) { //Il n'y avait pas de reste à facturer, on recrée la ligne dans le tableau des restant à facturer $lig_afac[$i]['id_lig'] = $id_lig[$i]; $lig_afac[$i]['id_prod']=$id_prod[$i]; $lig_afac[$i]['code']=stripslashes($code[$i]); $lig_afac[$i]['lib']= stripslashes($lib[$i]); $lig_afac[$i]['prix']= number_format(round($prix[$i],2),2,'.',''); $lig_afac[$i]['typ']= $typ[$i]; $lig_afac[$i]['tva']= number_format($tva[$i],2,'.',''); $lig_afac[$i]['rem']= number_format(round($rem[$i],2),2,'.',''); $lig_afac[$i]['lib_typ']= stripslashes($lib_typ[$i]); $lig_afac[$i]['rub']= $rub[$i]; $lig_afac[$i]['lib_rub']= stripslashes($lib_rub[$i]); $lig_afac[$i]['id_lgstat']= $id_lgstat[$i]; $lig_afac[$i]['sol']= $fac[$i]; $lig_afac[$i]['fac']= '0'; } } else { //La ligne n'est pas cochée pour suppression, on la conserve dans les déjà facturées $lig_dfac[$i]['id_lig'] = $id_lig[$i]; $lig_dfac[$i]['id_prod']=$id_prod[$i]; $lig_dfac[$i]['code']=stripslashes($code[$i]); $lig_dfac[$i]['lib']= stripslashes($lib[$i]); $lig_dfac[$i]['prix']= number_format(round($prix[$i],2),2,'.',''); $lig_dfac[$i]['typ']= $typ[$i]; $lig_dfac[$i]['tva']= number_format($tva[$i],2,'.',''); $lig_dfac[$i]['rem']= number_format(round($rem[$i],2),2,'.',''); $lig_dfac[$i]['lib_typ']= stripslashes($lib_typ[$i]); $lig_dfac[$i]['rub']= $rub[$i]; $lig_dfac[$i]['lib_rub']= stripslashes($lib_rub[$i]); $lig_dfac[$i]['id_lgstat']= $id_lgstat[$i]; $lig_dfac[$i]['sol']= $sol[$i]; $lig_dfac[$i]['fac']= $fac[$i]; } } $index = 1; $max_lig = count($lig_afac); //Affichage des lignes restant à facturer foreach($lig_afac as $key=>$value) { $frame = str_replace('', $frame_row.'', $frame); $frame = str_replace('', $select_typ[0], $frame); $frame = str_replace('', $select_rub[0], $frame); $frame = str_replace('', lgstat::getLabelFromId($value['id_lgstat']), $frame); $frame = str_replace('!!id_lgstat!!', $value['id_lgstat'], $frame); $frame = str_replace('!!no!!', $index, $frame); $frame = str_replace('!!id_lig!!', $value['id_lig'], $frame); $frame = str_replace('!!id_prod!!', $value['id_prod'], $frame); $frame = str_replace('!!code!!', $value['code'], $frame); $frame = str_replace('!!lib!!', $value['lib'], $frame); $frame = str_replace('!!prix!!', $value['prix'], $frame); $frame = str_replace('!!typ!!', $value['typ'], $frame); $frame = str_replace('!!tva!!', $value['tva'], $frame); $frame = str_replace('!!rem!!', $value['rem'], $frame); $frame = str_replace('!!lib_typ!!', $value['lib_typ'], $frame); $frame = str_replace('!!id_rub!!', $value['rub'], $frame); $frame = str_replace('!!lib_rub!!', $value['lib_rub'], $frame); $frame = str_replace('!!sol!!', $value['sol'], $frame); $frame = str_replace('!!fac!!', $value['fac'], $frame); $index++; } $frame = str_replace('!!max_lig!!', $max_lig, $frame); $max_lig_fac = count($lig_dfac); if ($max_lig_fac) { $frame = str_replace('', $frame_row_fa_header.'', $frame); //Affichage des lignes déjà facturées foreach($lig_dfac as $key=>$value) { $frame = str_replace('', $frame_row_fa.'', $frame); $frame = str_replace('', $select_typ[1], $frame); $frame = str_replace('', $select_rub[1], $frame); $frame = str_replace('', lgstat::getLabelFromId($value['id_lgstat']), $frame); $frame = str_replace('!!id_lgstat!!', $value['id_lgstat'], $frame); $frame = str_replace('!!no!!', $index, $frame); $frame = str_replace('!!id_lig!!', $value['id_lig'], $frame); $frame = str_replace('!!id_prod!!', $value['id_prod'], $frame); $frame = str_replace('!!code!!', $value['code'], $frame); $frame = str_replace('!!lib!!', $value['lib'], $frame); $frame = str_replace('!!prix!!', $value['prix'], $frame); $frame = str_replace('!!typ!!', $value['typ'], $frame); $frame = str_replace('!!rem!!', $value['rem'], $frame); $frame = str_replace('!!lib_typ!!', $value['lib_typ'], $frame); $frame = str_replace('!!id_rub!!', $value['rub'], $frame); $frame = str_replace('!!lib_rub!!', $value['lib_rub'], $frame); $frame = str_replace('!!sol!!', '', $frame); $frame = str_replace('!!fac!!', $value['fac'], $frame); $index++; //calcul des montants ht, ttc, tva if ($acquisition_gestion_tva) { $lig_ht = $value['fac'] * $value['prix'] * (1-($value['rem']/100)) ; $tot_ht = $tot_ht + $lig_ht; $tot_tva = $tot_tva + ($lig_ht*($value['tva']/100) ); $tot_ttc = $tot_ht + $tot_tva; $frame = str_replace('!!tva!!', $value['tva'], $frame); } else { $lig_ttc = $value['fac'] * $value['prix'] * (1-($value['rem']/100)) ; $tot_ttc = $tot_ttc + $lig_ttc; $frame = str_replace('!!tva!!', '', $frame); } } } $frame = str_replace('!!tot_ht!!', number_format(round($tot_ht,2),2,'.',''), $frame); $frame = str_replace('!!tot_tva!!', number_format(round($tot_tva,2),2,'.',''), $frame); $frame = str_replace('!!tot_ttc!!', number_format(round($tot_ttc,2),2,'.',''), $frame); $frame = str_replace('!!max_lig_fac!!', $max_lig_fac, $frame); $frame = str_replace('!!id_fac!!', $id_fac, $frame); $frame = str_replace('!!id_fou!!', $cde->num_fournisseur, $frame); //Affichage du bouton de suppression de lignes if (!$max_lig_fac) { $frame = str_replace('', $no_bt_sup_lig, $frame); } else { $frame = str_replace('', $bt_sup_lig, $frame); } print $frame; } //Enregistre la facture function update_fac($statut=0) { global $id_bibli, $id_cde, $id_fac, $comment, $ref; global $max_lig, $max_lig_fac, $id_lig, $id_prod, $code, $lib, $prix, $typ, $tva, $rem, $rub, $fac; global $date_pay, $num_pay, $devise; $tab_fac = array(); //Tableau des lignes facturées //Les lignes restant à facturer sont reprises dans le tableau si la qté facturée est >0 for($i=1;$i<=$max_lig;$i++) { if ($fac[$i]) { $tab_fac[$i]['id_lig'] = $id_lig[$i]; $tab_fac[$i]['id_prod'] = $id_prod[$i]; $tab_fac[$i]['code'] = $code[$i]; $tab_fac[$i]['lib'] = $lib[$i]; $tab_fac[$i]['prix'] = round($prix[$i],2); $tab_fac[$i]['typ'] = $typ[$i]; $tab_fac[$i]['tva'] = $tva[$i]; $tab_fac[$i]['rem'] = round($rem[$i],2); $tab_fac[$i]['rub'] = $rub[$i]; $tab_fac[$i]['fac'] = $fac[$i]; } } //Les quantités facturées des lignes déjà facturées sont reportées dans le tableau si l'identifiant de ligne existe //et que les prix, types de produits, remises et budgets sont égaux //Sinon une nouvelle ligne est créée for($i;$i<=$max_lig+$max_lig_fac;$i++) { $deja = false; for($j=1;$j<=$max_lig; $j++) { //Y a-t'il une ligne deja créée if( ($tab_fac[$j]['id_lig'] == $id_lig[$i]) && ($tab_fac[$j]['prix'] == $prix[$i]) && ($tab_fac[$j]['typ'] == $typ[$i]) && ($tab_fac[$j]['rem'] == $rem[$i]) && ($tab_fac[$j]['rub'] == $rub[$i]) ) { //Si oui, on rajoute la quantité reçue dans le tableau $tab_fac[$j]['fac'] = $tab_fac[$j]['fac']+$fac[$i]; $deja = true; break; } } if (!$deja) { //Sinon, on crée la ligne dans le tableau $tab_fac[$i]['id_lig'] = $id_lig[$i]; $tab_fac[$i]['id_prod'] = $id_prod[$i]; $tab_fac[$i]['code'] = $code[$i]; $tab_fac[$i]['lib'] = $lib[$i]; $tab_fac[$i]['prix'] = round($prix[$i],2); $tab_fac[$i]['typ'] = $typ[$i]; $tab_fac[$i]['tva'] = $tva[$i]; $tab_fac[$i]['rem'] = round($rem[$i],2); $tab_fac[$i]['rub'] = $rub[$i]; $tab_fac[$i]['fac'] = $fac[$i]; } } //Récupération de la commande $cde = new actes($id_cde); if (!$id_fac) { //Création de la facture $factu = new actes(); $factu->date_acte = today(); $factu->type_acte = TYP_ACT_FAC; if($statut) $factu->statut = $statut; else $factu->statut = STA_ACT_REC; $factu->num_entite = $cde->num_entite; $factu->num_fournisseur = $cde->num_fournisseur; $factu->num_contact_livr = $cde->num_contact_livr; $factu->num_contact_fact = $cde->num_contact_fact; $factu->num_exercice = $cde->num_exercice; $factu->commentaires = $comment; $factu->reference = $ref; $factu->devise = $devise; if ($date_pay != '') $factu->date_paiement = extraitdate($date_pay); $factu->num_paiement = $num_pay; $factu->calc(); $factu->save(); $id_fac = $factu->id_acte; //création des liens entre actes $la = new liens_actes($id_cde, $id_fac); } else { //Modification de la facture $factu = new actes($id_fac); $factu->numero=addslashes($factu->numero); $factu->commentaires = trim($comment); $factu->reference = trim($ref); if ($date_pay != '') $factu->date_paiement = extraitdate($date_pay); $factu->num_paiement = trim($num_pay); if($statut) $factu->statut = $statut; $factu->devise = trim($devise); $factu->save(); } //Suppression des lignes de facture précédemment enregistrées actes::deleteLignes($id_fac); //Création des lignes de facture foreach ($tab_fac as $key=>$value) { $lig_cde = new lignes_actes($value['id_lig']); $lig_fac = new lignes_actes(); $lig_fac->num_acte = $factu->id_acte; $lig_fac->lig_ref = $lig_cde->id_ligne; $lig_fac->num_produit = $lig_cde->num_produit; $lig_fac->code = addslashes($lig_cde->code); $lig_fac->libelle = addslashes($lig_cde->libelle); $lig_fac->num_acquisition = $lig_cde->num_acquisition; $lig_fac->num_type = $lig_cde->num_type; $lig_fac->prix = $value['prix']; $lig_fac->tva = $value['tva']; $lig_fac->remise = $value['rem']; $lig_fac->num_rubrique = $value['rub']; $lig_fac->nb = $value['fac']; $lig_fac->date_cre = today(); $lig_fac->save(); } //La commande est-elle entièrement facturée $tab_cde = actes::getLignes($id_cde); $facture = true; while (($row_cde = pmb_mysql_fetch_object($tab_cde))) { $tab_fac = lignes_actes::getFactures($row_cde->id_ligne); $nb_fac = 0; while (($row_fac = pmb_mysql_fetch_object($tab_fac))) { $nb_fac = $nb_fac + $row_fac->nb; } if ($row_cde->nb > $nb_fac) { $facture = false; break; } } if ($facture) { //Pas de reste à facturer >>Statut commande=facturée $cde->statut = ($cde->statut | STA_ACT_FAC); //Si de plus toutes les factures sont payées, Statut commande=payé $tab_pay = liens_actes::getChilds($id_cde, TYP_ACT_FAC); $paye= true; while (($row_pay = pmb_mysql_fetch_object($tab_pay))) { if(($row_pay->statut & STA_ACT_PAY) != STA_ACT_PAY){ $paye = false; break; } } if ($paye) $cde->statut = ($cde->statut | STA_ACT_PAY); } else { //Commande soldé / facturé ? if($cde->statut == (STA_ACT_REC | STA_ACT_FAC)) { //On la passe en soldé / payé $cde->statut = ($cde->statut | STA_ACT_PAY); } else { //Sinon, la commande repasse en statut en cours $cde->statut = ($cde->statut & ~(STA_ACT_FAC | STA_ACT_PAY)); } } $cde->update_statut(); } function select_rub($id_cde, $id_rubrique=0) { global $msg, $charset; global $select_rub ; $cde = new actes($id_cde); if ($cde->statut >= STA_ACT_ARC) { //Commande archivée, facture non modifiable $lig_rub = $select_rub[1]; if (!$id_rubrique) { $id_rubrique = 0; $lib_rub = ''; } else { $rub = new rubriques($id_rubrique); $bud = new budgets($rub->num_budget); $lib_bud = $bud->libelle; $tab_rub = rubriques::listAncetres($id_rubrique, true); $lib_rub = $lib_bud.':'; foreach ($tab_rub as $value) { $lib_rub.= htmlentities($value[1], ENT_QUOTES, $charset); if($value[0] != $id_rubrique) $lib_rub.= ":"; } } $lig_rub = str_replace('!!id_rub!!',$id_rubrique , $lig_rub); $lig_rub = str_replace('!!lib_rub!!', $lib_rub, $lig_rub); } else { //Commande non archivée, modification des rubriques possible if (!$id_rubrique) { //Pas de rubrique sélectionnée $lig_rub = $select_rub[0]; $lig_rub = str_replace('!!id_rub!!', 0, $lig_rub); $lig_rub = str_replace('!!lib_rub!!', '', $lig_rub); } else { //Rubrique selectionnée $user_userid = getCurrentUserId(); $rub = new rubriques($id_rubrique); $bud = new budgets($rub->num_budget); if (!rubriques::getAutorisations($id_rubrique, $user_userid)) { //L'utilisateur n'a pas de droits sur la rubrique $lig_rub = $select_rub[1]; } else { //L'utilisateur à des droits sur la rubrique $lig_rub = $select_rub[0]; } $lig_rub = str_replace('!!id_rub!!', $rub->id_rubrique, $lig_rub); $lib_bud = htmlentities($bud->libelle, ENT_QUOTES, $charset); $tab_rub = rubriques::listAncetres($id_rubrique, true); $lib_rub = $lib_bud.':'; foreach ($tab_rub as $value) { $lib_rub.= htmlentities($value[1], ENT_QUOTES, $charset); if($value[0] != $id_rubrique) $lib_rub.= ":"; } $lig_rub = str_replace('!!lib_rub!!', $lib_rub, $lig_rub); } } return $lig_rub; } //Récupération de l'utilisateur courant function getCurrentUserId() { global $dbh; $requete_user = "SELECT userid FROM users where username='".SESSlogin."' limit 1 "; $res_user = pmb_mysql_query($requete_user, $dbh); $row_user=pmb_mysql_fetch_row($res_user); $user_userid=$row_user[0]; return $user_userid; } // gestion des achats : factures switch($action) { case 'from_cde' : show_lig_from_cde(); break; case 'show_lig' : show_lig_fac(); break; case 'search' : test_cb(); search_lig_fac(); break; case 'sup_lig' : sup_lig_fac(); break; case 'update' : verif_fac(); if ($error) { show_lig_bak(); break; } verif_bud(); if ($error) { show_lig_bak(); break; } update_fac(); print $retour_liste; break; case 'pay' : verif_fac(); if ($error) { show_lig_bak(); break; } verif_bud(); if ($error) { show_lig_bak(); break; } update_fac(STA_ACT_PAY); print $retour_liste; break; default: break; } ?>