740 lines
30 KiB
PHP
740 lines
30 KiB
PHP
<?php
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// LIVRAISONS //////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// LIST
|
|
|
|
$allowLivraisonsListOrder = array(
|
|
'ref' => "réf.",
|
|
'paniers_groupe' => "groupe de paniers",
|
|
'date' => "date",
|
|
'quinz_groupe' => "groupe quinzaine",
|
|
'nb_paniers' => "nb. de paniers"
|
|
);
|
|
|
|
function getNbLivraisonsInList($groupe=0, $archive=0) {
|
|
$sql = getCountLivraisonsListSelectBaseSQL()." 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);
|
|
$r = $GLOBALS['db_admin']['man']->select($sql, 1);
|
|
if(!$r['erreur']) return intval($r['datas']['nb']);
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
|
|
return "Une erreur est survenue durant du nombre d'item dans la liste !".$er;
|
|
}
|
|
}
|
|
|
|
function getLivraisonsList($order='id',$sens='ASC', $groupe=0, $archive=0, $limits=false) {
|
|
// 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';
|
|
|
|
// LIMITS
|
|
if(is_array($limits)) $sql .= " LIMIT ".$limits['start'].", ".$limits['nbItemsByPage'];
|
|
|
|
$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 = "</br>sql: ".$sql."</br>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, $ignore=0) {
|
|
$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."'";
|
|
if((int)$ignore>0) $sql .= " AND ".LIVRAISONS_TABLE.".ref!=".intval($ignore);
|
|
$sql .= " 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 = "</br>sql: ".$sql."</br>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_types"] = getLivraisonPaniers($id, 0, true);
|
|
$i["paniers_contrats"] = getLivraisonPaniersContratsList($id);
|
|
$i["contrats_list"] = getLivraisonPaniersContratsList($id, $i["paniers_contrats"]);
|
|
$i["nb_paniers"] = getLivraisonNbPaniers($id);
|
|
$i["legumes"] = getLivraisonLegumes($id, "type", $i["nb_paniers"]);
|
|
$i["total_legumes"] = calcLivraisonTotalLegumes($i["legumes"]);
|
|
$i["legumes_distrib"] = getLivraisonLegumes($id, "legume", $i["nb_paniers"]);
|
|
|
|
$i["paniers_eligibles"] = getLivraisonPaniersEligibles($i["paniers_groupe_ref"], $i["date"], $i["quinz_groupe"], $i['paniers']);
|
|
$i["emargement_list"] = getLivraisonEmargementList($i["paniers_eligibles"], $i["date"]);
|
|
}
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>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;
|
|
}
|
|
|
|
function getLivraisonEmargementList($paniers_eligibles, $date, $lieu=0) {
|
|
$list = array();
|
|
|
|
foreach($paniers_eligibles as $l) {
|
|
if($l["ref"] == $lieu || !$lieu>0) {
|
|
foreach($l["paniers"] as $pType) {
|
|
foreach($pType["paniers"] as $p) {
|
|
if(array_key_exists($p["client_ref"], $list)) {
|
|
if($p["present"]) {
|
|
$o = $list[$p["client_ref"]];
|
|
|
|
// COMPLEMENT
|
|
if((float)$p["complement"]>0) $o["complement_print"] = number_format(($o["complement"] + $p["complement"]), 2, '.', ' ')." €";
|
|
// COMPLEMENT REGLE
|
|
if((float)$p["complement_regle"]>0) $o["complement_regle_print"] = number_format(($o["complement_regle"] + $p["complement_regle"]), 2, '.', ' ')." €";
|
|
// PANIERS
|
|
$o["paniers"][] = $p;
|
|
|
|
$list[$p["client_ref"]] = $o;
|
|
}
|
|
}
|
|
else {
|
|
$p["complement_du_print"] = "/";
|
|
$p["complement_print"] = "";
|
|
$p["complement_regle_print"] = "";
|
|
|
|
if($p["present"]) {
|
|
$p["nb_paniers_livres"] += 1;
|
|
|
|
// COMPLEMENT DU
|
|
$p["complement_du"] = getClientComplementDuAtDate($p["client_ref"], $date);
|
|
if($p["complement_du"] > 0) $p["complement_du_print"] = number_format($p["complement_du"], 2, '.', ' ')." €";
|
|
else if($p["complement_du"] < 0) $p["complement_du_print"] = number_format(abs($p["complement_du"]), 2, '.', ' ')." € d'avoir";
|
|
|
|
// COMPLEMENT
|
|
if((float)$p["complement"]>0) $p["complement_print"] = number_format($p["complement"], 2, '.', ' ')." €";
|
|
// COMPLEMENT REGLE
|
|
if((float)$p["complement_regle"]>0) $p["complement_regle_print"] = number_format($p["complement_regle"], 2, '.', ' ')." €";
|
|
// PANIERS
|
|
$p["paniers"] = array();
|
|
$p["paniers"][] = $p;
|
|
}
|
|
|
|
$list[$p["client_ref"]] = $p;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// ORDER
|
|
$list = orderListByKey($list, "client_prenom", "ASC");
|
|
|
|
return $list;
|
|
}
|
|
|
|
// 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...<br/>($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 = "</br>sql: ".$sql."</br>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, $paniers = array()) {
|
|
$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',"
|
|
.CLIENTS_TABLE.".`tel` as 'client_tel',"
|
|
.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['contrat_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"] .= " <small>(groupe ".$i["quinz_groupe"].")</small>";
|
|
$i["absence"] = getClientAbsenceAtDate($i["client_ref"], $date);
|
|
|
|
if($i["nb_paniers_restants"]>0 || (int)$i['force_eligible']>0) {
|
|
// PRESENT
|
|
$i["present"] = array_key_exists(intval($i["contrat_ref"]), $paniers);
|
|
|
|
// COMPLEMENT
|
|
$i["complement"] = 0;
|
|
$i["complement_regle"] = 0;
|
|
if($i["present"]) {
|
|
$i["complement"] = $paniers[$i["contrat_ref"]]["complement"];
|
|
$i["complement_regle"] = $paniers[$i["contrat_ref"]]["complement_regle"];
|
|
}
|
|
|
|
// 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'],
|
|
"type_valeur" => $i['panier_type_valeur'],
|
|
"nb_paniers" => 0,
|
|
"paniers" => array()
|
|
);
|
|
}
|
|
|
|
// AJOUT
|
|
$list[$lieu]["paniers"][$pType]["paniers"][] = $i;
|
|
if($i["present"]) {
|
|
$list[$lieu]["nb_paniers"]++;
|
|
$list[$lieu]["paniers"][$pType]["nb_paniers"]++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>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; $i<count($list); $i++) { $list[$i]["paniers"] = orderListByKey($list[$i]["paniers"], "type_valeur", "ASC"); }
|
|
|
|
return $list;
|
|
}
|
|
|
|
function getNbLivraisonForContratAtDate($contrat, $date) {
|
|
$nb = 0;
|
|
|
|
$sql = "SELECT count(*) as nb FROM ".LIVRAISONS_PANIERS_TABLE
|
|
." LEFT JOIN ".LIVRAISONS_TABLE." ON ".LIVRAISONS_PANIERS_TABLE.".`livraison`=".LIVRAISONS_TABLE.".`ref`"
|
|
." WHERE ".LIVRAISONS_PANIERS_TABLE.".contrat=".intval($contrat)
|
|
." AND ".LIVRAISONS_TABLE.".date<'".$date."'";
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql,1);
|
|
|
|
if(!$r['erreur']) $nb = intval($r['datas']['nb']);
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>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 $nb;
|
|
|
|
}
|
|
|
|
function getLivraisonPaniers($livraison, $lieu=0, $group_by_type=false) {
|
|
$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"] .= " <small>(groupe ".$i["quinz_groupe"].')</small>';
|
|
|
|
// GROUPE PAR TYPE DE PANIER
|
|
if($group_by_type) {
|
|
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"],
|
|
"type_valeur" => $i["panier_type_valeur"],
|
|
"paniers" => array()
|
|
);
|
|
}
|
|
$list[$i["panier_type_ref"]]["paniers"][] = $i;
|
|
}
|
|
else $list[$i["contrat_ref"]] = $i;
|
|
}
|
|
}
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>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;
|
|
}
|
|
|
|
if($group_by_type) $list = orderListByKey($list, "type_valeur", "ASC");
|
|
|
|
return $list;
|
|
}
|
|
|
|
function getLivraisonPaniersContratsList($livraison, $ref_list = false) {
|
|
$list = array();
|
|
|
|
if(!is_array($ref_list)) $sql = "SELECT `contrat` FROM ".LIVRAISONS_PANIERS_TABLE." WHERE `livraison`=".intval($livraison);
|
|
else {
|
|
$inList = "";
|
|
foreach($ref_list as $key => $ref) $inList .= $ref.(($key!==array_key_last($ref_list)) ? "," : "");
|
|
$sql = getContratsTableSelectBaseSQL()
|
|
." WHERE ".CONTRATS_TABLE.".`ref` IN ($inList)"
|
|
." ORDER BY ".CLIENTS_TABLE.".`prenom`, ".CLIENTS_TABLE.".`nom` ASC";
|
|
}
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql);
|
|
|
|
if(!$r['erreur']) {
|
|
foreach($r['datas'] as $i) {
|
|
if(!is_array($ref_list)) $list[] = intval($i['contrat']);
|
|
else {
|
|
$i["paniers_livres"] = getContratPaniersLivres($i['ref']);
|
|
$list[] = $i;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>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 = "</br>sql: ".$sql."</br>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 - COMPLEMENT /////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
function getLivraisonComplementFromRequest() {
|
|
$datas = array();
|
|
|
|
if(!isset($_REQUEST["complement"]) && !isset($_REQUEST["complement_regle"])) return "ERREUR : aucune modification de complement tranmis !";
|
|
if(isset($_REQUEST["complement"])) $datas["complement"] = floatval($_REQUEST["complement"]);
|
|
if(isset($_REQUEST["complement_regle"])) $datas["complement_regle"] = floatval($_REQUEST["complement_regle"]);
|
|
|
|
return $datas;
|
|
}
|
|
|
|
function updateLivraisonComplement($livraison, $contrat, $datas) {
|
|
$condition = " WHERE livraison=$livraison AND contrat=$contrat";
|
|
return updateDatasInTableByCondition(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LIVRAISONS_PANIERS_TABLE, // TABLE NAME
|
|
LIVRAISONS_PANIERS_TABLE_STRUCT,// TABLE STRUCTURE
|
|
$condition, // CONDITION
|
|
$datas, // DATAS
|
|
"au complement", // NULL STRING
|
|
"du complement" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// LIVRAISONS - LEGUMES ////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
function getLivraisonLegumes($livraison, $groupBy=false, $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']];
|
|
$i['quantite_print'] = floatval($i['quantite'])." ".$i['tarif_unite_acro'];
|
|
if($i["tarif_unite"]=="kg" && floatval($i["quantite"])*1000<1000) $i['quantite_print'] = (floatval($i["quantite"])*1000)." g";
|
|
|
|
// GROUPE PAR TYPE DE PANIER
|
|
if($groupBy == "type") {
|
|
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"]);
|
|
}
|
|
// GROUPE PAR LEGUME
|
|
else if($groupBy == "legume") {
|
|
if(!array_key_exists($i["ref"], $list)) {
|
|
$list[$i["ref"]] = array(
|
|
"ref" => $i["ref"],
|
|
"nom" => $i["nom"],
|
|
"paniers" => array()
|
|
);
|
|
}
|
|
$list[$i["ref"]]["paniers"][$i["panier_type_ref"]] = $i;
|
|
}
|
|
else $list[] = $i;
|
|
}
|
|
|
|
if($groupBy == "type") $list = orderListByKey($list, "nom", "ASC");
|
|
}
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>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;
|
|
}
|
|
|
|
// QUANTITE
|
|
$tot["legumes"][$l['ref']]["quantite"] += floatval($l["quantite"]) * floatval($p['nb']);
|
|
$tot["legumes"][$l['ref']]['quantite_print'] = floatval($tot["legumes"][$l['ref']]['quantite'])." ".$tot["legumes"][$l['ref']]['tarif_unite_acro'];
|
|
if($tot["legumes"][$l['ref']]["tarif_unite"]=="kg" && floatval($tot["legumes"][$l['ref']]["quantite"])*1000<1000) $tot["legumes"][$l['ref']]['quantite_print'] = (floatval($tot["legumes"][$l['ref']]["quantite"])*1000)." g";
|
|
|
|
// MONTANT
|
|
$tot["legumes"][$l['ref']]["montant"] += floatval($l["tarif_prix"]) * floatval($l["quantite"]) * floatval($p['nb']);
|
|
|
|
// TOTAL
|
|
$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, $orientation='portrait') {
|
|
$GLOBALS['smarty'] -> assign('logo', "file://".PUBLIC_HTML_ADMIN_PATH."/img/logo.png");
|
|
$GLOBALS['smarty'] -> assign('cssFiles',array(
|
|
"file://".PUBLIC_HTML_ADMIN_PATH."css/bootstrap_print_light.css",
|
|
"file://".PUBLIC_HTML_ADMIN_PATH."css/print.css",
|
|
"file://".PUBLIC_HTML_ADMIN_PATH."css/livraisons.css"
|
|
));
|
|
$GLOBALS['smarty'] -> assign('orientation',$orientation);
|
|
|
|
$html = $GLOBALS['smarty']->fetch($templateFile);
|
|
|
|
$dompdf = new Dompdf\Dompdf(["chroot" => ROOT_DIR_PATH]);
|
|
$dompdf->loadHtml($html);
|
|
$dompdf->setPaper('A4', $orientation);
|
|
$options = $dompdf->getOptions();
|
|
$options->setIsRemoteEnabled(true);
|
|
$dompdf->setOptions($options);
|
|
|
|
$dompdf->render();
|
|
$dompdf->stream($outputFileName);
|
|
|
|
die();
|
|
} |