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();
                }
            }
        }
    }
}
Exemple #3
0
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();
            }
        }
    }
}
Exemple #4
0
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();
    }
}
Exemple #6
0
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;
}
Exemple #7
0
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();
            }
        }
    }
}
Exemple #8
0
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();
}