"réf.", 'paniers_groupe' => "groupe de paniers", 'date' => "date", 'quinz_groupe' => "groupe quinzaine", 'nb_paniers' => "nb. de paniers" ); function getLivraisonsList($order='id',$sens='ASC', $groupe=0, $archive=0) { // ARCHIVES OLD LIVRAISONS archiveOldLivraison(); // LIST $list = array(); $sql = getLivraisonsTableSelectBaseSQL()." WHERE ".LIVRAISONS_TABLE.".`del`=0"; if((int)$groupe>0) $sql.=" AND ".LIVRAISONS_TABLE.".`paniers_groupe`=".intval($groupe); if((int)$archive>=0) $sql.=" AND ".LIVRAISONS_TABLE.".`archive`=".intval($archive); // ORDRE $sql.=" ORDER BY "; if($order=='ref') $sql .= LIVRAISONS_TABLE.".`ref`"; else if($order=='paniers_groupe') $sql .= LIVRAISONS_TABLE.".`paniers_groupe`"; else if($order=='date') $sql .= LIVRAISONS_TABLE.".`date`"; else if($order=='quinz_groupe') $sql .= LIVRAISONS_TABLE.".`quinz_groupe`"; else if($order=='nb_paniers') $sql .= LIVRAISONS_NB_PANIERS_VIEW.".`nb_paniers`"; else $sql .= LIVRAISONS_TABLE.".`date`"; // SENS if($sens=='DESC') $sql .= ' DESC'; else $sql .= ' ASC'; $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { foreach($r['datas'] as $i) { $i["date_print"] = formatDate($i["date"], "mysql_date", "date"); $i["nb_paniers"] = intval($i["nb_paniers"]); $list[$i['ref']] = $i; } } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de la liste des livraisons dans le base de données !".$er; } return $list; } function getLivraisonLastQuinzGroupeAtDate($groupe, $date) { $grp = NULL; $sql = "SELECT ".LIVRAISONS_TABLE.".`quinz_groupe` FROM ".LIVRAISONS_TABLE ." WHERE ".LIVRAISONS_TABLE.".del=0" ." AND ".LIVRAISONS_TABLE.".paniers_groupe=".intval($groupe) ." AND ".LIVRAISONS_TABLE.".date<='".$date."'" ." ORDER BY ".LIVRAISONS_TABLE.".date DESC LIMIT 0,1"; $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { if(count($r['datas'])>0) $grp = $r['datas'][0]["quinz_groupe"]; } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération du groupe de la dernière livraison dans le base de données !".$er; } return $grp; } // GET DATAS function getLivraisonDatas($id) { $i = array(); $sql = getLivraisonsTableSelectBaseSQL()." WHERE ".LIVRAISONS_TABLE.".`ref`=".intval($id); $r = $GLOBALS['db_admin']['man']->select($sql,1); if(!$r['erreur']) { $i = $r['datas']; $i["date_print"] = formatDate($i["date"], "mysql_date", "date"); $i["date_long_print"] = formatDate($i["date"], "mysql_date", "print_date_with_day"); $i["nb_paniers"] = intval($i["nb_paniers"]); $i["lieux"] = getLivraisonLieux($id); $i["paniers"] = getLivraisonPaniers($id); $i["paniers_contrats"] = getLivraisonPaniersContratsList($id); $i["nb_paniers"] = getLivraisonNbPaniers($id); $i["legumes"] = getLivraisonLegumes($id, $i["nb_paniers"]); $i["total_legumes"] = calcLivraisonTotalLegumes($i["legumes"]); } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération des informations de la livraison dans le base de données !".$er; } return $i; } // ADD / UPDATE DATAS function getLivraisonDatasFromRequest() { $datas = getRequestTableDatas(LIVRAISONS_TABLE_STRUCT); // PANIERS $datas['paniers'] = array(); if(isset($_REQUEST['paniers'])) $datas['paniers'] = json_decode($_REQUEST['paniers'], true); // PANIERS COMPO $datas['paniers_compo'] = array(); if(isset($_REQUEST['paniersCompo'])) $datas['paniers_compo'] = json_decode($_REQUEST['paniersCompo'], true); return $datas; } function addLivraison($datas) { return addDatasInTable( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_TABLE, // TABLE NAME LIVRAISONS_TABLE_STRUCT, // TABLE STRUCTURE $datas, // DATAS "de la livraison" // ERROR STRING ); } function updateLivraison($id, $datas) { return updateDatasInTable( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_TABLE, // TABLE NAME LIVRAISONS_TABLE_STRUCT, // TABLE STRUCTURE $id, // ID $datas, // DATAS "à la livraison", // NULL STRING "de la livraison" // ERROR STRING ); } function archiveLivraison($id, $state) { $datas = array( "archive" => ($state == true) ? 1 : 0, "force_not_archive" => ($state == true) ? 0 : 1, ); $r = updateLivraison($id, $datas); if(!(int)$r>0) { $er = "ERREUR : une erreur est survenue "; $er.= ($state == true) ? "à l'archivage" : "au désarchivage"; $er = " de la livraison ! ($r)"; return $er; } return 1; } function archiveOldLivraison() { $date = new DateTime(DATE_TIME_ZONE); $dateInt = new DateInterval( "P".AUTO_ARCHIVE_OLD_LIVRAISONS_DELAY."D" ); $date->sub( $dateInt ); $condition = "WHERE date < '".$date->format("Y-m-d")."' AND force_not_archive=0"; $r = updateDatasInTableByCondition( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_TABLE, // TABLE NAME LIVRAISONS_TABLE_STRUCT, // TABLE STRUCTURE $condition, // CONDITION array("archive" => 1), // DATAS "aux livraisons", // NULL STRING "des livraisons" // ERROR STRING ); if(!$r>0) $GLOBALS['errors'][] = "ERREUR : une erreur est survenue durant l'archivage automatique des anciennes livraisons...
($r)"; // else addDebug("ARCHIVE OLD LIVRAISONS DONE !"); } function deleteLivraison($id) { return deleteItemInTable( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_TABLE, // TABLE NAME $id, // ID "de la livraison" // ERROR STRING ); } function eraseLivraison($id) { return eraseItemInTable( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_TABLE, // TABLE NAME $id, // ID "de la livraison" // ERROR STRING ); } //////////////////////////////////////////////////////////////////////// // LIVRAISONS - LIEUX ////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// function getLivraisonLieux($livraison) { $list = array(); $sql = "SELECT " .CONTRATS_TABLE.".`lieu_depot` as 'ref'," .LIEUX_TABLE.".`nom` as 'nom'," ."count(*) as 'nb_paniers'" ." FROM ".LIVRAISONS_PANIERS_TABLE ." LEFT JOIN ".CONTRATS_TABLE." ON ".LIVRAISONS_PANIERS_TABLE.".`contrat`=".CONTRATS_TABLE.".`ref`" ." LEFT JOIN ".LIEUX_TABLE." ON ".CONTRATS_TABLE.".`lieu_depot`=".LIEUX_TABLE.".`ref`" ." WHERE ".LIVRAISONS_PANIERS_TABLE.".`livraison`=".intval($livraison) ." GROUP BY ".CONTRATS_TABLE.".`lieu_depot`"; $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { foreach($r['datas'] as $i) { $i['ref'] = intval($i['ref']); $i['nb_paniers'] = intval($i['nb_paniers']); $i['paniers'] = getLivraisonPaniers($livraison, $i['ref']); $list[$i['ref']] = $i; } } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de la liste des lieux de livraison dans le base de données !".$er; } return $list; } //////////////////////////////////////////////////////////////////////// // LIVRAISONS - PANIERS //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// function getLivraisonPaniersEligibles($paniers_groupe, $date, $quinz_groupe) { $list = array(); $sql = "SELECT " .CONTRATS_TABLE.".`ref` as 'contrat_ref'," .CONTRATS_TABLE.".`client` as 'client_ref'," .CLIENTS_TABLE.".`nom` as 'client_nom'," .CLIENTS_TABLE.".`prenom` as 'client_prenom'," .CONTRATS_TABLE.".`panier_type` as 'panier_type_ref'," .PANIERS_TYPES_TABLE.".`nom` as 'panier_type_nom'," .CONTRATS_TABLE.".`frequence`," .CONTRATS_TABLE.".`quinz_groupe`," .CONTRATS_TABLE.".`nb_paniers`," .CONTRATS_TABLE.".`lieu_depot` as 'lieu_depot_ref'," .LIEUX_TABLE.".`nom` as 'lieu_depot_nom'," .CONTRATS_TABLE.".`np_paniers_distrib_avt_saisie`," .CONTRATS_TABLE.".`force_eligible`" ." FROM ".CONTRATS_TABLE ." LEFT JOIN ".CLIENTS_TABLE." ON ".CONTRATS_TABLE.".`client`=".CLIENTS_TABLE.".`ref`" ." LEFT JOIN ".PANIERS_TYPES_TABLE." ON ".CONTRATS_TABLE.".`panier_type`=".PANIERS_TYPES_TABLE.".`ref`" ." LEFT JOIN ".LIEUX_TABLE." ON ".CONTRATS_TABLE.".`lieu_depot`=".LIEUX_TABLE.".`ref`" ." WHERE ".CONTRATS_TABLE.".`del`=0" ." AND ".CONTRATS_TABLE.".`groupe`=".intval($paniers_groupe) ." AND ".CONTRATS_TABLE.".`date`<='".$date."'" ." AND (".CONTRATS_TABLE.".`frequence`='hebdo' OR (".CONTRATS_TABLE.".`frequence`='quinz' AND ".CONTRATS_TABLE.".`quinz_groupe`='".$quinz_groupe."'))" ." ORDER BY ".CLIENTS_TABLE.".`nom` ASC"; $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { foreach($r['datas'] as $i) { $i["nb_paniers_livres"] = getNbLivraisonForContratAtDate($i['ref'], $date) + intval($i["np_paniers_distrib_avt_saisie"]); $i["nb_paniers_restants"] = intval($i["nb_paniers"])-$i["nb_paniers_livres"]; $i["frequence_print"] = CONTRATS_FREQUENCES[$i["frequence"]]; if($i["frequence"] == "quinz") $i["frequence_print"] .= " (groupe ".$i["quinz_groupe"].")"; $i["absence"] = getClientAbsenceAtDate($i["client_ref"], $date); if($i["nb_paniers_restants"]>0 || (int)$i['force_eligible']>0) { // GROUP BY - LIEU & TYPE DE PANNIER $lieu = intval($i['lieu_depot_ref']); $pType = intval($i['panier_type_ref']); // CREATION DU LIEU if(!array_key_exists($lieu, $list)) { $list[$lieu] = array( "ref" => $lieu, "nom" => $i['lieu_depot_nom'], "nb_paniers" => 0, "paniers" => array() ); } // CREATION DU TYPE DE PANIER if(!array_key_exists($pType, $list[$lieu]["paniers"])) { $list[$lieu]["paniers"][$pType] = array( "type_ref" => $pType, "type_nom" => $i['panier_type_nom'], "paniers" => array() ); } // AJOUT $list[$lieu]["paniers"][$pType]["paniers"][] = $i; } } } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de la liste des paniers de la livraison dans le base de données !".$er; } // ORDER $list = orderListByKey($list, "nom", "ASC"); for($i =0; $iselect($sql,1); if(!$r['erreur']) $nb = intval($r['datas']['nb']); else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération du nombre de livraison du contrat dans le base de données !".$er; } return $i; } function getLivraisonPaniers($livraison, $lieu=0) { $list = array(); $sql = getLivraisonsPaniersSelectBaseSQL(); $sql.=" WHERE ".LIVRAISONS_PANIERS_TABLE.".`livraison`=".intval($livraison); if($lieu>0) $sql.=" AND ".CONTRATS_TABLE.".`lieu_depot`=".intval($lieu); $sql.=" ORDER BY ".CLIENTS_TABLE.".`nom` ASC"; $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { foreach($r['datas'] as $i) { $i["frequence_print"] = CONTRATS_FREQUENCES[$i["frequence"]]; if($i["frequence"] == "quinz") $i["frequence_print"] .= " (groupe ".$i["quinz_groupe"].')'; // GROUPE PAR TYPE DE PANIER if(!array_key_exists($i["panier_type_ref"], $list)) { $list[$i["panier_type_ref"]] = array( "type_ref" => $i["panier_type_ref"], "type_nom" => $i["panier_type_nom"], "paniers" => array() ); } $list[$i["panier_type_ref"]]["paniers"][] = $i; } } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de la liste des paniers de la livraison dans le base de données !".$er; } $list = orderListByKey($list, "type_nom", "ASC"); return $list; } function getLivraisonPaniersContratsList($livraison) { $list = array(); $sql = "SELECT `contrat` FROM ".LIVRAISONS_PANIERS_TABLE." WHERE `livraison`=".intval($livraison); $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { foreach($r['datas'] as $i) $list[] = intval($i['contrat']); } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de la liste des contrats de paniers de la livraison dans le base de données !".$er; } return $list; } function getLivraisonNbPaniers($livraison) { $list = array(); $sql = "SELECT " .CONTRATS_TABLE.".`panier_type` as 'ref', " .PANIERS_TYPES_TABLE.".`nom` as 'nom', " ."count(*) as 'nb'" ." FROM ".LIVRAISONS_PANIERS_TABLE ." LEFT JOIN ".CONTRATS_TABLE." ON ".LIVRAISONS_PANIERS_TABLE.".`contrat`=".CONTRATS_TABLE.".`ref`" ." LEFT JOIN ".PANIERS_TYPES_TABLE." ON ".CONTRATS_TABLE.".`panier_type`=".PANIERS_TYPES_TABLE.".`ref`" ." WHERE ".LIVRAISONS_PANIERS_TABLE.".`livraison`=".intval($livraison) ." GROUP BY ".CONTRATS_TABLE.".`panier_type`"; $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { foreach($r['datas'] as $i) { $i['ref'] = intval($i['ref']); $i['nb'] = intval($i['nb']); $list[$i['ref']] = $i; } } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération du nombre de paniers de la livraison dans le base de données !".$er; } return $list; } function addLivraisonPanier($datas) { return addDatasInTable( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_PANIERS_TABLE, // TABLE NAME LIVRAISONS_PANIERS_TABLE_STRUCT,// TABLE STRUCTURE $datas, // DATAS "du panier de la livraison" // ERROR STRING ); } function deleteLivraisonPaniers($livraison) { return deleteItemInTableByCondition( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_PANIERS_TABLE, // TABLE NAME "WHERE livraison=".intval($livraison), // CONDITION "des paniers de la livraison" // ERROR STRING ); } function clearLivraisonPaniers($livraison) { return eraseItemInTableByCondition( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_PANIERS_TABLE, // TABLE NAME "WHERE livraison=".intval($livraison), // CONDITION "des paniers de la livraison" // ERROR STRING ); } //////////////////////////////////////////////////////////////////////// // LIVRAISONS - LEGUMES //////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// function getLivraisonLegumes($livraison, $nbPaniers=[]) { $list = array(); $sql = getLivraisonsLegumesTableSelectBaseSQL(); $sql.=" WHERE ".LIVRAISONS_LEGUMES_TABLE.".`livraison`=".intval($livraison); $sql.=" ORDER BY ".LEGUMES_TABLE.".`nom` ASC"; $r = $GLOBALS['db_admin']['man']->select($sql); if(!$r['erreur']) { foreach($r['datas'] as $i) { $i['tarif_unite_acro'] = LEGUMES_TARIFS_UNITES_ACRONYMES[$i['tarif_unite']]; // GROUPE PAR TYPE DE PANIER if(!array_key_exists($i["panier_type_ref"], $list)) { $list[$i["panier_type_ref"]] = array( "ref" => $i["panier_type_ref"], "nom" => $i["panier_type_nom"], "nb" => 0, "montant" => 0.0, "legumes" => array() ); if(array_key_exists($i["panier_type_ref"], $nbPaniers)) $list[$i["panier_type_ref"]]['nb'] = $nbPaniers[$i["panier_type_ref"]]['nb']; } $list[$i["panier_type_ref"]]["legumes"][] = $i; $list[$i["panier_type_ref"]]["montant"] += floatval($i["quantite"]) * floatval($i["tarif_prix"]); } $list = orderListByKey($list, "nom", "ASC"); } else { $er = "
sql: ".$sql."
error: ".getReadableVar($r['erreur']); $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération de la liste des légumes de la livraison dans le base de données !".$er; } return $list; } function calcLivraisonTotalLegumes($legumes) { $tot = array( "montant" => 0.0, "legumes" => array() ); foreach($legumes as $p) { foreach($p["legumes"] as $l) { if(!array_key_exists($l['ref'], $tot["legumes"])) { $tot["legumes"][$l['ref']] = $l; $tot["legumes"][$l['ref']]["quantite"] = 0.0; $tot["legumes"][$l['ref']]["montant"] = 0.0; } $tot["legumes"][$l['ref']]["quantite"] += floatval($l["quantite"]) * floatval($p['nb']); $tot["legumes"][$l['ref']]["montant"] += floatval($l["tarif_prix"]) * floatval($l["quantite"]) * floatval($p['nb']); $tot["montant"] += floatval($l["tarif_prix"]) * floatval($l["quantite"]) * floatval($p['nb']); } } return $tot; } function addLivraisonLegume($datas) { return addDatasInTable( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_LEGUMES_TABLE, // TABLE NAME LIVRAISONS_LEGUMES_TABLE_STRUCT,// TABLE STRUCTURE $datas, // DATAS "du légume" // ERROR STRING ); } function deleteLivraisonLegumes($livraison) { return deleteItemInTableByCondition( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_LEGUMES_TABLE, // TABLE NAME "WHERE livraison=".intval($livraison), // CONDITION "des légumes de la livraison" // ERROR STRING ); } function clearLivraisonLegumes($livraison) { return eraseItemInTableByCondition( $GLOBALS['db_admin']['man'], // DB MANAGER LIVRAISONS_LEGUMES_TABLE, // TABLE NAME "WHERE livraison=".intval($livraison), // CONDITION "des légumes de la livraison" // ERROR STRING ); } //////////////////////////////////////////////////////////////////////// // PRINTS ////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// function exportLivraisonTemplateToPDF($templateFile, $outputFileName) { $GLOBALS['smarty'] -> assign('logo', PUBLIC_HTML_ADMIN.'img/logo.png'); $cssFiles = array( PUBLIC_HTML_ADMIN.'css/bootstrap_print_light.css', PUBLIC_HTML_ADMIN.'css/livraisons.css' ); $GLOBALS['smarty'] -> assign('cssFiles',$cssFiles); $html = $GLOBALS['smarty']->fetch($templateFile); // die($html); $dompdf = new Dompdf\Dompdf(); $dompdf->loadHtml($html); $dompdf->setPaper('A4', 'portrait'); $options = $dompdf->getOptions(); $options->setIsRemoteEnabled(true); $dompdf->setOptions($options); $dompdf->render(); $dompdf->stream($outputFileName); die(); }