* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id$ * $Source$ * */ /*! \file htdocs/expedition/commande.php \ingroup expedition \version $Revision$ */ require("./pre.inc.php"); $user->getrights('commande'); $user->getrights('expedition'); if (!$user->rights->commande->lire) accessforbidden(); require("../project.class.php"); require("../propal.class.php"); require("../product/stock/entrepot.class.php"); /* * Sécurité accés client */ if ($user->societe_id > 0) { $action = ''; $socidp = $user->societe_id; } /* * */ if ($_POST["action"] == 'confirm_cloture' && $_POST["confirm"] == yes) { $commande = new Commande($db); $commande->fetch($_GET["id"]); $result = $commande->cloture($user); } llxHeader('','Fiche commande',''); $html = new Form($db); /* *************************************************************************** */ /* */ /* Mode vue et edition */ /* */ /* *************************************************************************** */ if ($_GET["id"] > 0) { $commande = New Commande($db); if ( $commande->fetch($_GET["id"]) > 0) { $commande->livraison_array(); $soc = new Societe($db); $soc->fetch($commande->soc_id); $author = new User($db); $author->id = $commande->user_author_id; $author->fetch(); print_titre("Commande : ".$commande->ref); /* * Confirmation de la validation * */ if ($_GET["action"] == 'cloture') { $html->form_confirm("commande.php?id=$id","Cloturer la commande","Etes-vous sûr de cloturer cette commande ?","confirm_cloture"); } /* * */ print '
'; print ''; print ''; print ''; print ''; print "'; print '"; print ""; print "\n"; print '"; if ($commande->note) { print ''; print '"; } print ''; print ''; /* print ''; print ''; */ print ''; } print "
Client"; print ''.$soc->nom.''; print $commande->statuts[$commande->statut]; print "
Date".strftime("%A %d %B %Y",$commande->date)."Source : ' . $commande->sources[$commande->source] ; if ($commande->source == 0) { /* Propale */ $propal = new Propal($db); $propal->fetch($commande->propale_id); print ' -> '.$propal->ref.''; } print "
Note
Note : '.nl2br($commande->note)."
'; /* * Lignes de commandes * */ echo ''; $sql = "SELECT l.fk_product, l.description, l.price, l.qty, l.rowid, l.tva_tx, l.remise_percent, l.subprice"; $sql .= " FROM ".MAIN_DB_PREFIX."commandedet as l LEFT JOIN ".MAIN_DB_PREFIX."product as p ON (p.rowid = l.fk_product) WHERE l.fk_commande = ".$commande->id." AND p.fk_product_type <> 1 ORDER BY l.rowid"; $result = $db->query($sql); if ($result) { $num = $db->num_rows(); $i = 0; $total = 0; if ($num) { print ''; print ''; print ''; print ''; print ''; if (defined("MAIN_MODULE_STOCK")) { print ''; } print "\n"; } $var=True; $reste_a_livrer = array(); while ($i < $num) { $objp = $db->fetch_object(); print ""; if ($objp->fk_product > 0) { $product = new Product($db); $product->fetch($objp->fk_product); print ''; } else { print "\n"; } print ''; print ''; $reste_a_livrer[$objp->fk_product] = $objp->qty - $quantite_livree; $reste_a_livrer_x = $objp->qty - $quantite_livree; $reste_a_livrer_total = $reste_a_livrer_total + $reste_a_livrer_x; print ''; if (defined("MAIN_MODULE_STOCK")) { if ($product->stock_reel < $reste_a_livrer_x) { print ''; } else { print ''; } } print ""; $i++; $var=!$var; } $db->free(); print "
'.$langs->trans("Description").'Quan. CommandéeQuan. livréeReste à livrerStock
'; print ''.stripslashes(nl2br($objp->description)).'".stripslashes(nl2br($objp->description))."'.$objp->qty.''; $quantite_livree = $commande->livraisons[$objp->fk_product]; print $quantite_livree; print ''; print $reste_a_livrer[$objp->fk_product]; print ''.$product->stock_reel.''.$product->stock_reel.'
"; } else { print $db->error(); } /* * * */ if ($reste_a_livrer_total > 0) { $entrepot = new Entrepot($db); print '
Entrepôt'; $html->select_array("entrepot_id",$entrepot->list_array()); print '
Mode d\'expédition'; $html->select_array("entrepot_id",$entrepot->list_array()); print '
"; print "
\n"; /* * Alerte de seuil * */ if ($reste_a_livrer_total > 0 && defined("MAIN_MODULE_STOCK")) { print '
'; foreach ($reste_a_livrer as $key => $value) { if ($value > 0) { $sql = "SELECT e.label as entrepot, ps.reel, p.label "; $sql .= " FROM ".MAIN_DB_PREFIX."entrepot as e, ".MAIN_DB_PREFIX."product_stock as ps, ".MAIN_DB_PREFIX."product as p"; $sql .= " WHERE e.rowid = ps.fk_entrepot AND ps.fk_product = p.rowid AND ps.fk_product = $key"; $sql .= " AND e.statut = 1 AND reel < $value"; $result = $db->query($sql); if ($result) { $num = $db->num_rows(); $i = 0; $var=True; while ($i < $num) { $obja = $db->fetch_object($result); print ""; print ''; print "\n"; $i++; } $db->free(); } } } print "
'.$obja->label.''.$obja->entrepot.'Stock : '.$obja->reel.'
"; } /* * * */ if ($user->societe_id == 0) { print '

'; if ($user->rights->expedition->valider && $reste_a_livrer_total == 0 && $commande->statut < 3) { print 'Clôturer'; } print "
"; } /* * Déjà livré * * */ $sql = "SELECT cd.fk_product, cd.description, cd.rowid, cd.qty as qty_commande, ed.qty as qty_livre, e.ref, e.rowid as expedition_id"; $sql .= " FROM ".MAIN_DB_PREFIX."commandedet as cd , ".MAIN_DB_PREFIX."expeditiondet as ed, ".MAIN_DB_PREFIX."expedition as e"; $sql .= " WHERE cd.fk_commande = ".$commande->id." AND cd.rowid = ed.fk_commande_ligne AND ed.fk_expedition = e.rowid"; $sql .= " ORDER BY cd.fk_product"; $result = $db->query($sql); if ($result) { $num = $db->num_rows(); $i = 0; $total = 0; if ($num) { print '
'; print ''; print ''; print ''; print ''; print "\n"; $var=True; while ($i < $num) { $objp = $db->fetch_object(); print ""; if ($objp->fk_product > 0) { print ''; } else { print "\n"; } print ''; print ''; $i++; } print '
'.$langs->trans("Description").'Quan. livréeExpédition
'; print ''.stripslashes(nl2br($objp->description)).'".stripslashes(nl2br($objp->description))."'.$objp->qty_livre.''.$objp->ref.'
'; } } } else { /* Commande non trouvée */ print "Commande inexistante ou accés refusé"; } } $db->close(); llxFooter("Dernière modification $Date$ révision $Revision$"); ?>