function sup_liv($id_liv, $id_cde) { $cde = new actes($id_cde); $cde->statut = $cde->statut & ~STA_ACT_REC | STA_ACT_ENC; //Statut commande = soldé->en cours $cde->update_statut(); actes::delete($id_liv); liens_actes::delete($id_liv); }
function pay_fac_list() { global $chk; if (is_array($chk)) { foreach ($chk as $id_fac) { $fac = new actes($id_fac); if ($fac->type_acte == TYP_ACT_FAC && ($fac->statut = STA_ACT_REC)) { $fac->statut = STA_ACT_PAY; $fac->update_statut(); //La commande correspondante est-elle entierement payee $id_cde = liens_actes::getParent($id_fac); $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 = new actes($id_cde); $cde->statut = $cde->statut | STA_ACT_PAY; $cde->update_statut(); } } } } }
function arc_dev_list() { global $chk; if (is_array($chk)) { foreach ($chk as $id_dev) { $dev = new actes($id_dev); if ($dev->type_acte == TYP_ACT_DEV) { $dev->statut = $dev->statut | STA_ACT_ARC; $dev->update_statut(); } } } }
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($tab_fac[$key]['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 = $tab_fac[$key]['prix']; $lig_fac->tva = $tab_fac[$key]['tva']; $lig_fac->remise = $tab_fac[$key]['rem']; $lig_fac->num_rubrique = $tab_fac[$key]['rub']; $lig_fac->nb = $tab_fac[$key]['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 = mysql_fetch_object($tab_cde)) { $tab_fac = lignes_actes::getFactures($row_cde->id_ligne); $nb_fac = 0; while ($row_fac = 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 = 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 { //Sinon, la commande repasse en statut en cours $cde->statut = $cde->statut & ~(STA_ACT_FAC | STA_ACT_PAY); } $cde->update_statut(); }
function arc_cde() { global $id_cde; if (!$id_cde) { return; } $cde = new actes($id_cde); //Commande archivée $cde->statut = $cde->statut | STA_ACT_ARC; $cde->update_statut(); //Archivage des factures et bl correspondants $list_childs = liens_actes::getChilds($id_cde); while ($row = pmb_mysql_fetch_object($list_childs)) { $act = new actes($row->num_acte_lie); $act->statut = $act->statut | STA_ACT_ARC; $act->update_statut(); } }
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 (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; }
function valid_cde_list() { global $chk; if (is_array($chk)) { foreach ($chk as $id_cde) { $cde = new actes($id_cde); if ($cde->type_acte == TYP_ACT_CDE && $cde->statut == STA_ACT_AVA) { $cde->statut = STA_ACT_ENC; $cde->update_statut(); } } } }
function update_liv() { global $id_bibli, $id_cde, $id_liv, $comment, $ref; global $max_lig, $max_lig_liv, $id_lig, $id_prod, $code, $rec; global $acquisition_email_sugg; $tab_liv = array(); //Tableau des lignes livrées //Les lignes restant à livrer sont reprises dans la tableau si la qté reçue est >0 for ($i = 1; $i <= $max_lig; $i++) { if ($rec[$i]) { $tab_liv[$i]['id_lig'] = $id_lig[$i]; $tab_liv[$i]['rec'] = $rec[$i]; } } //Les quantités recues des lignes déjà livrées sont reportées dans le tableau si l'identifiant de ligne existe //Sinon une nouvelle ligne est créée for ($i; $i <= $max_lig + $max_lig_liv; $i++) { $deja = false; for ($j = 1; $j <= $max_lig; $j++) { //Y a-t'il une ligne deja créée if ($tab_liv[$j]['id_lig'] == $id_lig[$i]) { //Si oui, on rajoute la quantité reçue dans le tableau $tab_liv[$j]['rec'] = $tab_liv[$j]['rec'] + $rec[$i]; $deja = true; break; } } if (!$deja) { //Sinon, on crée la ligne dans le tableau $tab_liv[$i]['id_lig'] = $id_lig[$i]; $tab_liv[$i]['rec'] = $rec[$i]; } } //Récupération de la commande $cde = new actes($id_cde); if (!$id_liv) { //Création du bon de livraison $liv = new actes(); $liv->date_acte = today(); $liv->type_acte = '2'; $liv->statut = '4'; //Statut BL = recu $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 = $comment; $liv->reference = $ref; $liv->calc(); $liv->save(); $id_liv = $liv->id_acte; //création des liens entre actes $la = new liens_actes($id_cde, $id_liv); } else { //Modification du bon de livraison $liv = new actes($id_liv); $liv->numero = addslashes($liv->numero); $liv->commentaires = trim($comment); $liv->reference = trim($ref); $liv->save(); } //Suppression des lignes de livraisons précédemment enregistrées actes::deleteLignes($id_liv); $sug_map = new suggestions_map(); //Création des lignes de livraison foreach ($tab_liv as $key => $value) { $lig_cde = new lignes_actes($tab_liv[$key]['id_lig']); $lig_liv = new lignes_actes(); $lig_liv->num_acte = $liv->id_acte; $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->remise = $lig_cde->remise; $lig_liv->nb = $tab_liv[$key]['rec']; $lig_liv->date_cre = today(); $lig_liv->save(); 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 = mysql_fetch_object($tab_cde)) { if ($row_cde->type_ligne == 3) { // Frais, non livrables } else { $tab_liv = lignes_actes::getLivraisons($row_cde->id_ligne); $nb_liv = 0; while ($row_liv = mysql_fetch_object($tab_liv)) { $nb_liv = $nb_liv + $row_liv->nb; } if ($row_cde->nb > $nb_liv) { $solde = false; break; } } } if ($solde) { $cde->statut = $cde->statut & ~2 | 4; // Cde soldée >> Statut commande = en cours->soldé } $cde->update_statut(); }