diff --git a/functions/functions_clients.php b/functions/functions_clients.php
index 497a648..0980873 100644
--- a/functions/functions_clients.php
+++ b/functions/functions_clients.php
@@ -141,6 +141,25 @@ function getClientAbsences($id) { return getClientAbsencesList("fin", "DESC", $i
function getClientComplementDuAtDate($id, $date) {
$val = 0;
+ // CONTRATS
+ $sql = "SELECT"
+ ." CASE WHEN ISNULL(`complement_avt_saisie`)"
+ ." THEN 0.0"
+ ." ELSE `complement_avt_saisie`"
+ ." END as 'complement_avt_saisie'"
+ ." FROM ".CONTRATS_TABLE
+ ." WHERE `client`=".intval($id)
+ ." AND `date`<'".$date."'";
+
+ $r = $GLOBALS['db_admin']['man']->select($sql,1);
+
+ if(!$r['erreur']) $val += floatval($r['datas']['complement_avt_saisie']);
+ else {
+ $er = "sql: ".$sql."error: ".getReadableVar($r['erreur']);
+ return "Une erreur est survenue durant la récupération du complement dû par le client dans le base de données !".$er;
+ }
+
+ // PANIERS
$sql = "SELECT"
." CASE WHEN ISNULL( SUM(`complement`) - SUM(`complement_regle`) )"
." THEN 0.00"
@@ -155,10 +174,10 @@ function getClientComplementDuAtDate($id, $date) {
$r = $GLOBALS['db_admin']['man']->select($sql,1);
- if(!$r['erreur']) $val = $r['datas']['complement_du'];
+ if(!$r['erreur']) $val += floatval($r['datas']['complement_du']);
else {
$er = "sql: ".$sql."error: ".getReadableVar($r['erreur']);
- $GLOBALS['errors'][] = "Une erreur est survenue durant la récupération dû complement du par le client dans le base de données !".$er;
+ return "Une erreur est survenue durant la récupération du complement dû par le client dans le base de données !".$er;
}
return $val;
diff --git a/functions/functions_livraisons.php b/functions/functions_livraisons.php
index 1ffe1ea..5b2e762 100644
--- a/functions/functions_livraisons.php
+++ b/functions/functions_livraisons.php
@@ -142,24 +142,42 @@ function getLivraisonEmargementList($paniers_eligibles, $date, $lieu=0) {
if($l["ref"] == $lieu || !$lieu>0) {
foreach($l["paniers"] as $pType) {
foreach($pType["paniers"] as $p) {
- if($p["present"]) {
- $du = getClientComplementDuAtDate($p["client_ref"], $date);
- if($du > 0) $p["complement_du"] = "$du €";
- else if($du < 0) $p["complement_du"] = abs($du)." € d'avoir";
- else $p["complement_du"] = "/";
-
- if((float)$p["complement"]>0) $p["complement"] .= " €";
- else $p["complement"] = "";
-
- if((float)$p["complement_regle"]>0) $p["complement_regle"] .= " €";
- else $p["complement_regle"] = "";
+ 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"] = "/";
- $p["complement"] = "/";
- $p["complement_regle"] = "/";
+ $p["complement_du_print"] = "/";
+ $p["complement_print"] = "";
+ $p["complement_regle_print"] = "";
+
+ if($p["present"]) {
+ // 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;
}
- $list[] = $p;
}
}
}
@@ -376,7 +394,6 @@ function getLivraisonPaniersEligibles($paniers_groupe, $date, $quinz_groupe, $pa
}
// AJOUT
-
$list[$lieu]["paniers"][$pType]["paniers"][] = $i;
if($i["present"]) {
$list[$lieu]["nb_paniers"]++;
diff --git a/public_html_admin/css/livraisons.css b/public_html_admin/css/livraisons.css
index 5a53c8c..f05ecf4 100644
--- a/public_html_admin/css/livraisons.css
+++ b/public_html_admin/css/livraisons.css
@@ -108,6 +108,8 @@
.formLivraison table.panier tr.legume td.unite { width: 40px; }
+.formLivraison table.panier tr.editing { background-color: #cdebf8; }
+
.formLivraison table.panier th.nb_paniers_restants,
.formLivraison table.panier td.nb_paniers_restants { width: 120px; text-align: center; }
@@ -233,6 +235,12 @@ table.emargement .nb_paniers { max-width: 25px; }
table.emargement .complement { max-width: 40px; }
table.emargement .signature { max-width: 60px; }
+table.emargement .type.multi_paniers,
+table.emargement .nb_paniers.multi_paniers {
+ padding-top: 6px;
+ padding-bottom: 6px;
+}
+
table.emargement tr.absent { background-color: #F0F0F0; }
table.emargement tr.absent td.nom,
diff --git a/public_html_admin/js/livraisons.js b/public_html_admin/js/livraisons.js
index cb0844a..74e89f4 100644
--- a/public_html_admin/js/livraisons.js
+++ b/public_html_admin/js/livraisons.js
@@ -186,6 +186,7 @@ function modalViewLivraison_loadPaniers() {
modalViewLivraison.find("div.tabPaniers tr:not(.absent) td.complement").each(function(n,e) {
$(this).addClass("editable").dblclick(function(e) {
e.preventDefault();
+ $(this).parent().addClass("editing");
val = parseFloat( $(this).html() );
var ipt = $("");
$(this).html("").append(ipt);
@@ -198,7 +199,8 @@ function modalViewLivraison_loadPaniers() {
})
if(val>0) ipt.val(val).attr("old_value", val);
- ipt.blur(function(e) {
+ ipt.blur(function(e) {
+ $(this).parent().parent().removeClass("editing");
if( $(this).hasClass("saving") ) return;
if( parseFloat($(this).attr("old_value"))>0 ) ipt.parent().html(number_format(parseFloat($(this).attr("old_value")), 2)+" €");
else ipt.parent().html(".")
@@ -211,12 +213,25 @@ function modalViewLivraison_loadPaniers() {
modalViewLivraison.find("div.tabPaniers tr:not(.absent) td.complement_regle").each(function(n,e) {
$(this).addClass("editable").dblclick(function(e) {
e.preventDefault();
+ $(this).parent().addClass("editing");
val = parseFloat( $(this).html() );
var ipt = $("");
$(this).html("").append(ipt);
initFloatInput(ipt);
+ ipt.keypress( function(event) {
+ if(event.keyCode==13) {
+ $(this).addClass("saving");
+ modalViewLivraison_saveComplement( $(this) );
+ }
+ })
+
if(val>0) ipt.val(val).attr("old_value", val);
- ipt.blur(function(e) { modalViewLivraison_saveComplement( $(this) ); });
+ ipt.blur(function(e) {
+ $(this).parent().parent().removeClass("editing");
+ if( $(this).hasClass("saving") ) return;
+ if( parseFloat($(this).attr("old_value"))>0 ) ipt.parent().html(number_format(parseFloat($(this).attr("old_value")), 2)+" €");
+ else ipt.parent().html(".")
+ });
ipt.select();
});
});
@@ -451,7 +466,7 @@ function modalFormLivraison_udpateCompo(modal, paniersTypes) {
}
function modalFormLivraison_addPanierTypeCompo(modal, datas) {
- var table = $("
")
+ var table = $("")
.attr("ref", datas.ref)
.attr("modal", modal.attr('id'));
@@ -467,6 +482,7 @@ function modalFormLivraison_addPanierTypeCompo(modal, datas) {
btnCopyCompo.click(function(e) {
e.preventDefault(); $(this).blur();
+ if(e.clientX==0 && e.clientY==0) return;
modalFormLivraison_copyPanierTypeCompo(modal, table, $(this));
})
@@ -537,6 +553,7 @@ function modalFormLivraison_addPanierTypeCompoLegume(modal, panier, datas) {
/*** INITIALIZE ***/
tdNom.dblclick(function(e) {
+ $(this).parent().addClass("editing");
var ipt = $("").val($(this).html());
ipt.attr('ref', $(this).attr('ref'))
.attr('tarif_ref', $(this).attr('tarif_ref'))
@@ -601,6 +618,7 @@ function modalFormLivraison_addPanierTypeCompoLegume(modal, panier, datas) {
val = $(this).html();
unite = $(this).attr("unite");
if(unite in legumeTarifUnitesAccronymes) {
+ $(this).parent().addClass("editing");
var ipt = $("");
$(this).html("").append(ipt);
initFloatInput(ipt);
@@ -609,7 +627,7 @@ function modalFormLivraison_addPanierTypeCompoLegume(modal, panier, datas) {
var td = $(this).parent();
val = parseFloat( $(this).val() );
td.html( number_format(val, 3) );
- td.parent().updateCompoLegumeMontant();
+ td.parent().removeClass("editing").updateCompoLegumeMontant(true);
});
ipt.select();
}
@@ -640,7 +658,7 @@ function modalFormLivraison_loadPanierTypeCompoLegumeTarif(row, tarif_ref, tarif
row.find("td.quantite_unite").html(unite);
- row.updateCompoLegumeMontant();
+ row.updateCompoLegumeMontant(false);
}
function modalFormLivraison_refreshPanierTypeCompoLegumeTarif(modal, panier, row) {
@@ -690,7 +708,7 @@ function modalFormLivraison_copyPanierTypeCompo(modal, panier, btn) {
}
}
-$.fn.updateCompoLegumeMontant = function() {
+$.fn.updateCompoLegumeMontant = function(focus) {
q = parseFloat($(this).find("td.quantite").html());
t = parseFloat($(this).find("td.tarif").html());
$(this).find("td.montant").html( number_format(q * t, 2)+" €" );
@@ -698,7 +716,8 @@ $.fn.updateCompoLegumeMontant = function() {
// UPDATE TOTAL
panier = $(this).parent().parent();
modalFormLivraison_updateMontantTotalPanier(panier);
- panier.find(".btnAddLegume").focus();
+
+ if(focus) panier.find(".btnAddLegume").focus();
};
function modalFormLivraison_updateMontantTotalPanier(panier) {
diff --git a/public_html_admin/templates/livraisons/livraison_form.tpl b/public_html_admin/templates/livraisons/livraison_form.tpl
index 8ee2a16..333eeed 100644
--- a/public_html_admin/templates/livraisons/livraison_form.tpl
+++ b/public_html_admin/templates/livraisons/livraison_form.tpl
@@ -56,7 +56,7 @@
aucun panier
-
+
| TOTAL : |
diff --git a/public_html_admin/templates/livraisons/livraison_form_tab_paniers.tpl b/public_html_admin/templates/livraisons/livraison_form_tab_paniers.tpl
index 0f5a208..67a7fae 100644
--- a/public_html_admin/templates/livraisons/livraison_form_tab_paniers.tpl
+++ b/public_html_admin/templates/livraisons/livraison_form_tab_paniers.tpl
@@ -1,5 +1,5 @@
{foreach from=$lieux item=lieu}
-
+
| {$lieu.nom} |
diff --git a/public_html_admin/templates/livraisons/livraison_modal_view_tab_compo.tpl b/public_html_admin/templates/livraisons/livraison_modal_view_tab_compo.tpl
index d04f6b1..5272653 100644
--- a/public_html_admin/templates/livraisons/livraison_modal_view_tab_compo.tpl
+++ b/public_html_admin/templates/livraisons/livraison_modal_view_tab_compo.tpl
@@ -1,5 +1,5 @@
{foreach from=$infos.legumes item=p}
-
+
| {$p.nom} (x{$p.nb}) |
diff --git a/public_html_admin/templates/livraisons/livraison_modal_view_tab_legumes.tpl b/public_html_admin/templates/livraisons/livraison_modal_view_tab_legumes.tpl
index 701ce8f..627ce80 100644
--- a/public_html_admin/templates/livraisons/livraison_modal_view_tab_legumes.tpl
+++ b/public_html_admin/templates/livraisons/livraison_modal_view_tab_legumes.tpl
@@ -1,4 +1,4 @@
-
+
| TOTAL : |
diff --git a/public_html_admin/templates/livraisons/livraison_modal_view_tab_paniers.tpl b/public_html_admin/templates/livraisons/livraison_modal_view_tab_paniers.tpl
index 6f253e9..06aa74a 100644
--- a/public_html_admin/templates/livraisons/livraison_modal_view_tab_paniers.tpl
+++ b/public_html_admin/templates/livraisons/livraison_modal_view_tab_paniers.tpl
@@ -1,5 +1,5 @@
{foreach from=$infos.paniers_eligibles item=lieu}
-
+
| {$lieu.nom} |
diff --git a/public_html_admin/templates/livraisons/prints/livraison_print_emargement.tpl b/public_html_admin/templates/livraisons/prints/livraison_print_emargement.tpl
index 2e14b92..ef33641 100644
--- a/public_html_admin/templates/livraisons/prints/livraison_print_emargement.tpl
+++ b/public_html_admin/templates/livraisons/prints/livraison_print_emargement.tpl
@@ -35,11 +35,19 @@
| {$c.client_prenom} {$c.client_nom} |
{$c.client_tel} |
- {$c.panier_type_nom} |
- {$c.nb_paniers_livres} / {$c.nb_paniers} |
- {$c.complement_du} |
- {$c.complement} |
- {$c.complement_regle} |
+
+ {foreach from=$c.paniers item=p name=paniers}
+ {if !$smarty.foreach.paniers.first} + {/if}{$p.panier_type_nom}
+ {/foreach}
+ |
+
+ {foreach from=$c.paniers item=p name=paniers}
+ {if !$smarty.foreach.paniers.first} {/if}{$p.nb_paniers_livres} / {$p.nb_paniers}
+ {/foreach}
+ |
+ {$c.complement_du_print} |
+ {$c.complement_print} |
+ {$c.complement_regle_print} |
{if !$c.present}ABSENT{/if} |
{/foreach}