394 lines
14 KiB
PHP
394 lines
14 KiB
PHP
<?php
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// LEGUMES /////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// LIST
|
|
|
|
$allowLegumesListOrder = array(
|
|
'ref' => "réf.",
|
|
'nom' => "nom"
|
|
);
|
|
|
|
function getNbLegumesInList($search=false) {
|
|
$sql = getCountLegumesListSelectBaseSQL()." WHERE ".LEGUMES_TABLE.".`del`=0";
|
|
$sql = buildSqlSearch($sql, $search, "buildLegumesListSearchSQL");
|
|
$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 getLegumesList($order='nom',$sens='ASC', $search=false, $limits=false) {
|
|
// TARIF & DATE ORDRE
|
|
$grps = getPaniersGroupesList();
|
|
$tarif_date_orders = array();
|
|
foreach($grps as $g) { $tarif_date_orders[] = "tarif_".$g["ref"]; $orders[] = "date_".$g["ref"]; }
|
|
|
|
$list = array();
|
|
|
|
$sql = getLegumesTableSelectBaseSQL()." WHERE ".LEGUMES_TABLE.".`del`=0";
|
|
|
|
// SEARCH
|
|
$sql = buildSqlSearch($sql, $search, "buildLegumesListSearchSQL");
|
|
|
|
// ORDRE
|
|
$sql.=" ORDER BY ";
|
|
|
|
if($order=='ref') $sql .= LEGUMES_TABLE.".`ref`";
|
|
else if($order=='nom') $sql .= LEGUMES_TABLE.".`nom`";
|
|
else $sql .= LEGUMES_TABLE.".`nom`";
|
|
|
|
// SENS
|
|
if($sens=='DESC') $sql .= ' DESC';
|
|
else $sql .= ' ASC';
|
|
|
|
// LIMITS
|
|
if(is_array($limits) && !in_array($order, $tarif_date_orders)) $sql .= " LIMIT ".$limits['start'].", ".$limits['nbItemsByPage'];
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql);
|
|
|
|
if(!$r['erreur']) {
|
|
foreach($r['datas'] as $i) {
|
|
$i["tarifs"] = getLegumeTarifs($i['ref']);
|
|
foreach($i["tarifs"] as $g => $t) {
|
|
if($t["ref"] >0) {
|
|
$i["tarif_".$g] = $t["prix"];
|
|
$i["date_".$g] = $t["dateObj"];
|
|
}
|
|
else {
|
|
$i["tarif_".$g] = false;
|
|
$i["date_".$g] = false;
|
|
}
|
|
}
|
|
$i["next_tarifs"] = getLegumeTarifs($i['ref'], 'next');
|
|
$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 légumes dans le base de données !".$er;
|
|
}
|
|
|
|
if(in_array($order, $tarif_date_orders)) {
|
|
$list = orderListByKey($list, $order, $sens);
|
|
if(is_array($limits)) $list = array_slice($list, $limits['start'], $limits['nbItemsByPage']);
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
function getLegumesAutocompleteList() {
|
|
$list = array();
|
|
|
|
$term = trim($_REQUEST['search']); // get user autocomplete input
|
|
$term = preg_replace('/\s+/', ' ', $term); // replace multiple spaces by one
|
|
$parts = explode(' ', $term);
|
|
|
|
$sql = getLegumesTableSelectBaseSQL()." WHERE ".LEGUMES_TABLE.".`del`=0";
|
|
foreach($parts as $p) $sql .= " AND (".buildLegumesListSearchSQL($p).")";
|
|
|
|
$groupe = false;
|
|
if(isset($_REQUEST['groupe']) && (int)$_REQUEST['groupe']>0) $groupe = intval($_REQUEST['groupe']);
|
|
$date = false;
|
|
if(isset($_REQUEST['date']) && isValidDate($_REQUEST['date'], "mysql_date")) $date = $_REQUEST['date'];
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql);
|
|
|
|
if(!$r['erreur']) {
|
|
foreach($r['datas'] as $l) {
|
|
// TARIF
|
|
$t = getLegumeTarif($l['ref'], $groupe, $date, false);
|
|
if($t) {
|
|
$row = array(
|
|
"id" => $l['ref'],
|
|
"value" => $l['nom'],
|
|
"label" => $l['nom'],
|
|
|
|
"ref" => $l['ref'],
|
|
"tarif_ref" => $t['ref'],
|
|
"tarif_prix" => $t['prix'],
|
|
"tarif_unite" => $t['unite']
|
|
);
|
|
array_push($list, $row);
|
|
}
|
|
}
|
|
|
|
$a_json = apply_highlight($list, $parts); // highlight search parts
|
|
}
|
|
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 !".$er;
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
// GET DATAS
|
|
|
|
function getLegumeDatas($id) {
|
|
$i = array();
|
|
|
|
$sql = getLegumesTableSelectBaseSQL()." WHERE ".LEGUMES_TABLE.".`ref`=".intval($id);
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql,1);
|
|
|
|
if(!$r['erreur']) {
|
|
$i = $r['datas'];
|
|
|
|
$i["tarifs_list"] = getLegumeTarifsList($i['ref']);
|
|
$i["tarifs"] = getLegumeTarifs($i['ref']);
|
|
$i["next_tarifs"] = getLegumeTarifs($i['ref'], 'next');
|
|
}
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
|
|
$GLOBALS['errors'][] = "Une erreur est survenue durant la récupération des informations du légume dans le base de données !".$er;
|
|
}
|
|
|
|
return $i;
|
|
}
|
|
|
|
// ADD / UPDATE DATAS
|
|
|
|
function getLegumeDatasFromRequest() {
|
|
$datas = getRequestTableDatas(LEGUMES_TABLE_STRUCT);
|
|
|
|
// TARIFS
|
|
$datas["tarifs"] = array();
|
|
if(isset($_REQUEST["tarifs"])) $datas["tarifs"] = json_decode($_REQUEST["tarifs"], true);
|
|
|
|
return $datas;
|
|
}
|
|
|
|
function addLegume($datas) {
|
|
return addDatasInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TABLE, // TABLE NAME
|
|
LEGUMES_TABLE_STRUCT, // TABLE STRUCTURE
|
|
$datas, // DATAS
|
|
"du légume" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
function updateLegume($id, $datas) {
|
|
return updateDatasInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TABLE, // TABLE NAME
|
|
LEGUMES_TABLE_STRUCT, // TABLE STRUCTURE
|
|
$id, // ID
|
|
$datas, // DATAS
|
|
"au légume", // NULL STRING
|
|
"du légume" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
function deleteLegume($id) {
|
|
return deleteItemInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TABLE, // TABLE NAME
|
|
$id, // ID
|
|
"du légume" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
function eraseLegume($id) {
|
|
return eraseItemInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TABLE, // TABLE NAME
|
|
$id, // ID
|
|
"du légume" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// LEGUMES - TARIFS ////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
function getLegumeTarifsList($legume) {
|
|
$list = array();
|
|
|
|
$sql = getLegumesTarifsTableSelectBaseSQL()
|
|
." WHERE ".LEGUMES_TARIFS_TABLE.".`legume`=".intval($legume)
|
|
." AND ".LEGUMES_TARIFS_TABLE.".`del`=0"
|
|
." ORDER BY ".LEGUMES_TARIFS_TABLE.".`date` DESC, ".LEGUMES_TARIFS_TABLE.".`ref` DESC";
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql);
|
|
|
|
if(!$r['erreur']) {
|
|
foreach($r['datas'] as $i) {
|
|
$i["print"] = $i["prix"]." €/".$i["unite"];
|
|
$i["date_print"] = formatDate($i["date"], "mysql_date", "print_date");
|
|
$i["use"] = getLegumeTarifUtilise($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 tarifs du légume dans le base de données !".$er;
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
function getLegumeTarifs($legume, $date=false) {
|
|
$groupes = getPaniersGroupesList();
|
|
$list = [];
|
|
|
|
$tarifToutGrp = getLegumeTarif($legume, 0, $date);
|
|
|
|
foreach($groupes as $g) {
|
|
$tarif = array(
|
|
"groupe_ref" => $g['ref'],
|
|
"groupe_nom" => $g['nom'],
|
|
"ref" => 0
|
|
);
|
|
|
|
$tarifGrp = getLegumeTarif($legume, $g['ref'], $date, false);
|
|
if(is_array($tarifGrp)) {
|
|
$tarif["ref"] = intval($tarifGrp["ref"]);
|
|
$tarif["prix"] = $tarifGrp["prix"];
|
|
$tarif["unite"] = $tarifGrp["unite"];
|
|
$tarif["print"] = $tarifGrp["print"];
|
|
$tarif["date"] = $tarifGrp["date"];
|
|
$tarif["date_print"] = $tarifGrp["date_print"];
|
|
$tarif["tarif_groupe"] = $g['ref'];
|
|
}
|
|
|
|
$list[$g['ref']] = $tarif;
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
function getLegumeTarif($legume, $groupe, $date=false, $groupe_exclusif=true) {
|
|
$i = false;
|
|
|
|
$sql = getLegumesTarifsTableSelectBaseSQL()
|
|
." WHERE ".LEGUMES_TARIFS_TABLE.".`legume`=".intval($legume)
|
|
." AND ".LEGUMES_TARIFS_TABLE.".`del`=0";
|
|
|
|
// GROUPE
|
|
if($groupe>0) {
|
|
if($groupe_exclusif) $sql .= " AND ".LEGUMES_TARIFS_TABLE.".`groupe`=".intval($groupe);
|
|
else $sql .= " AND (".LEGUMES_TARIFS_TABLE.".`groupe`=".intval($groupe)
|
|
." OR ".LEGUMES_TARIFS_TABLE.".`groupe`=0"
|
|
." OR ".LEGUMES_TARIFS_TABLE.".`groupe` IS NULL)";
|
|
}
|
|
else $sql .= " AND (".LEGUMES_TARIFS_TABLE.".`groupe` IS NULL OR ".LEGUMES_TARIFS_TABLE.".`groupe`=0)";
|
|
|
|
// DATE
|
|
if($date == 'next') {
|
|
$date = formatDate('now', false, 'mysql_date');
|
|
$sql .= " AND ".LEGUMES_TARIFS_TABLE.".`date`>'".$date."'";
|
|
}
|
|
else {
|
|
if(!isValidDate($date, "mysql_date")) $date = formatDate('now', false, 'mysql_date');
|
|
$sql .= " AND ".LEGUMES_TARIFS_TABLE.".`date`<='".$date."'";
|
|
}
|
|
|
|
$sql .= " ORDER BY ".LEGUMES_TARIFS_TABLE.".`date` DESC, ".LEGUMES_TARIFS_TABLE.".`ref` DESC";
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql);
|
|
|
|
if(!$r['erreur']) {
|
|
if(count($r['datas'])>0) {
|
|
$i = $r['datas'][0];
|
|
$i["dateObj"] = new DateTime($i["date"]);
|
|
$i["print"] = $i["prix"]." €/".$i["unite"];
|
|
$i["date_print"] = formatDate($i["date"], "mysql_date", "print_date");
|
|
}
|
|
}
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
|
|
$GLOBALS['errors'][] = "Une erreur est survenue durant la récupération des informations du tarif du légume dans le base de données !".$er;
|
|
}
|
|
|
|
return $i;
|
|
}
|
|
|
|
function getLegumeTarifUtilise($tarif) {
|
|
$use = false;
|
|
|
|
$sql = "SELECT COUNT(*) as 'use' FROM ".LIVRAISONS_LEGUMES_TABLE." WHERE tarif=".intval($tarif);
|
|
addDebug($sql);
|
|
|
|
$r = $GLOBALS['db_admin']['man']->select($sql,1);
|
|
|
|
if(!$r['erreur']) $use = (int)$r['datas']["use"]>0;
|
|
else {
|
|
$er = "</br>sql: ".$sql."</br>error: ".getReadableVar($r['erreur']);
|
|
$GLOBALS['errors'][] = "Une erreur est survenue durant l'analyse d'utilisation du tarif de légume dans le base de données !".$er;
|
|
}
|
|
|
|
return $use;
|
|
}
|
|
|
|
function addLegumeTarif($datas) {
|
|
return addDatasInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TARIFS_TABLE, // TABLE NAME
|
|
LEGUMES_TARIFS_TABLE_STRUCT, // TABLE STRUCTURE
|
|
$datas, // DATAS
|
|
"du tarif" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
function updateLegumeTarif($id, $datas) {
|
|
return updateDatasInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TARIFS_TABLE, // TABLE NAME
|
|
LEGUMES_TARIFS_TABLE_STRUCT, // TABLE STRUCTURE
|
|
$id, // ID
|
|
$datas, // DATAS
|
|
"du tarif", // NULL STRING
|
|
"au tarif" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
function deleteLegumeTarif($id) {
|
|
return deleteItemInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TARIFS_TABLE, // TABLE NAME
|
|
$id, // ID
|
|
"du tarif" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
function eraseLegumeTarif($id) {
|
|
return eraseItemInTable(
|
|
$GLOBALS['db_admin']['man'], // DB MANAGER
|
|
LEGUMES_TARIFS_TABLE, // TABLE NAME
|
|
$id, // ID
|
|
"du tarif" // ERROR STRING
|
|
);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// PRINT LIST //////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
function printLegumesList() {
|
|
$GLOBALS['smarty'] -> assign('logo', "file://".PUBLIC_HTML_ADMIN_PATH."/img/logo.png");
|
|
$GLOBALS['smarty'] -> assign('date', formatDate('now', false, 'print_date'));
|
|
$GLOBALS['smarty'] -> assign('time', formatDate('now', false, 'print_time'));
|
|
$GLOBALS['smarty'] -> assign('cssFiles',array(
|
|
"file://".PUBLIC_HTML_ADMIN_PATH."css/bootstrap_print_light.css",
|
|
"file://".PUBLIC_HTML_ADMIN_PATH."css/print.css"
|
|
));
|
|
|
|
$html = $GLOBALS['smarty']->fetch("legumes/legumes_list_print.tpl");
|
|
|
|
$dompdf = new Dompdf\Dompdf(["chroot" => ROOT_DIR_PATH]);
|
|
$dompdf->loadHtml($html);
|
|
$dompdf->setPaper('A4', "portrait");
|
|
$options = $dompdf->getOptions();
|
|
$options->setIsRemoteEnabled(true);
|
|
$dompdf->setOptions($options);
|
|
|
|
$dompdf->render();
|
|
$dompdf->stream("Liste des légumes (".formatDate('now', false, 'strdate').").pdf");
|
|
exit();
|
|
}
|