From af9dbf2b224193b76960b5e1c05b7b271f00cee6 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Thu, 7 Dec 2023 17:33:49 +0100 Subject: [PATCH] =?UTF-8?q?Simplification=20calcul=20dispo=20et=20config?= =?UTF-8?q?=20par=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _calcul_dispo.html | 178 ++++++++++------------- _get_config.html | 8 +- categories/list_equipment.html | 12 +- index.html | 4 +- inventaire.html | 32 ++-- mouvements/entrees/delete_entree.html | 40 +++-- mouvements/entrees/non_repertorie.html | 79 +++++----- mouvements/entrees/repertorie.html | 11 +- mouvements/entrees/retour.html | 24 +-- mouvements/modifier_mouvement.html | 24 +-- mouvements/sorties/delete_sortie.html | 40 +++-- mouvements/sorties/emprunte.html | 26 ++-- mouvements/sorties/stock_disponible.html | 36 ++--- mouvements/valider_modification.html | 50 +++---- 14 files changed, 260 insertions(+), 304 deletions(-) diff --git a/_calcul_dispo.html b/_calcul_dispo.html index 11f06dc..7ede91c 100644 --- a/_calcul_dispo.html +++ b/_calcul_dispo.html @@ -1,134 +1,112 @@ {{* Calcul des entrées/sorties de matériels à une date donnée paramètres : - - liste de catégories + - liste de clés de catégories - date + résultat : cumul_mvt *}} {{* liste des catégories *}} -{{if $categories === null}} +{{if $category_keys === null}} {{#load type="category"}} - {{:assign var="categories." value=$key}} + {{:assign var="cumul_mvt.%s.name"|args:$key value=$name}} + {{/load}} +{{else}} + {{#load type="category" where="key"|sql_where:'IN':$category_keys}} + {{:assign var="cumul_mvt.%s.name"|args:$key value=$name}} {{/load}} {{/if}} -{{* date *}} -{{if $date === null}} - {{* :assign date=$now|date:"Y-m-d" *}} - {{:assign date="31/12/9999"|parse_date}} - {{* si on veut aussi lister les mouvements du futur :-) *}} -{{/if}} +{{#foreach from=$cumul_mvt key="cat_key" item="elem"}} + {{:assign var="in_categories." value="'%s'"|args:$cat_key}} +{{/foreach}} -{{* Extraire et compiler les infos de la base *}} -{{#select - json_extract(mvt.document, '$.date') as 'date', - eqpmt.key as 'eqpmt_key', - json_extract(eqpmt.document, '$.designation') as 'designation', - cat.key as 'cat_key', - json_extract(cat.document, '$.name') as 'category', - mvt.key as 'mvt_key', - json_extract(mvt.document, '$.direction') as 'direction', - CASE json_extract(mvt.document, '$.direction') - WHEN 'input' THEN json_extract(mvt.document, '$.input_nature') - WHEN 'output' THEN json_extract(mvt.document, '$.output_nature') - END - AS 'operation', - json_extract(mvt.document, '$.amount') AS 'nombre' - FROM module_data_equipment as eqpmt - INNER JOIN module_data_equipment as cat - ON json_extract(eqpmt.document, '$.category') = cat.key - INNER JOIN module_data_equipment as mvt - ON json_extract(mvt.document, '$.equipment') = eqpmt.key - WHERE json_extract(eqpmt.document, '$.type') = "equipment" - AND !categories - AND json_extract(mvt.document, '$.date') <= :date - ORDER BY - json_extract(cat.document, '$.name'), - json_extract(eqpmt.document, '$.designation'), - json_extract(mvt.document, '$.date'); - !categories='cat_key'|sql_where:'IN':$categories - :date=$date -}} +{{:assign in_categories=$in_categories|implode:","}} +{{:assign in_categories="("|cat:$in_categories|cat:")"}} - {{:assign - var="equipments.%s.name"|args:$cat_key - value=$category}} - {{:assign - var="equipments.%s.eqpmt.%s.designation"|args:$cat_key:$eqpmt_key - value=$designation}} +{{* liste des matériels dans les catégories passées en paramètre *}} +{{#load type="equipment" where="$$.category IN %s"|args:$in_categories}} + {{:assign var="equipments.%s.category"|args:$key value=$category}} + {{:assign var="equipments.%s.designation"|args:$key value=$designation}} + {{:assign var="in_equipments." value="'%s'"|args:$key}} +{{/load}} +{{:assign in_equipments=$in_equipments|implode:","}} +{{:assign in_equipments="("|cat:$in_equipments|cat:")"}} +{{* récupérer la config des entrées/sorties *}} +{{:include file="./_get_config.html" keep="config"}} + +{{* parcourir les mouvements et cumuler les entrées/sorties *}} +{{#load type="movement" where="$$.equipment IN %s"|args:$in_equipments assign="mvt"}} {{* matériel propriété de l'asso en stock *}} {{:assign var="stock" - from="equipments.%s.eqpmt.%s.stock"|args:$cat_key:$eqpmt_key}} - {{if $stock === null}} + from="equipments.%s.stock"|args:$mvt.equipment}} + {{if $stock == null}} {{:assign stock=0}} {{/if}} {{* matériel propriété de l'asso à l'extérieur *}} {{:assign var="exterieur" - from="equipments.%s.eqpmt.%s.exterieur"|args:$cat_key:$eqpmt_key}} - {{if $exterieur === null}} + from="equipments.%s.exterieur"|args:$mvt.equipment}} + {{if $exterieur == null}} {{:assign exterieur=0}} {{/if}} {{* matériel non propriété de l'asso *}} {{:assign var="nonproprio" - from="equipments.%s.eqpmt.%s.nonproprio"|args:$cat_key:$eqpmt_key}} - {{if $nonproprio === null}} + from="equipments.%s.nonproprio"|args:$mvt.equipment}} + {{if $nonproprio == null}} {{:assign nonproprio=0}} {{/if}} - {{* récupérer la config des entrées/sorties *}} - {{:include file="./_get_config.html" keep="config"}} + {{* déterminer le type de mouvement *}} + {{:assign var="mvt_nature" from="mvt.%s_nature"|args:$mvt.direction}} + {{:assign var="type_mvt" from="config.%s_nature.%s"|args:$mvt.direction:$mvt_nature}} - {{if $direction === 'input'}} - {{* chercher le type d'entrée parmi les types de la config *}} - {{#foreach from=$config.input_nature item="elem"}} - {{if $operation == $elem.label}} - {{if $elem.type == 'définitif'}} - {{:assign stock="%d+%d"|math:$stock:$nombre}} - {{:assign - var="equipments.%s.eqpmt.%s.stock"|args:$cat_key:$eqpmt_key - from=stock}} - {{elseif $elem.type == 'retour'}} - {{:assign exterieur="%d-%d"|math:$exterieur:$nombre}} - {{:assign - var="equipments.%s.eqpmt.%s.exterieur"|args:$cat_key:$eqpmt_key - from=exterieur}} - {{elseif $elem.type == 'temporaire'}} - {{:assign nonproprio="%d+%d"|math:$nonproprio:$nombre}} - {{:assign - var="equipments.%s.eqpmt.%s.nonproprio"|args:$cat_key:$eqpmt_key - from=nonproprio}} - {{/if}} - {{:break}} - {{/if}} - {{/foreach}} - {{elseif $direction === 'output'}} - {{* chercher le type de sortie parmi les types de la config *}} - {{#foreach from=$config.output_nature item="elem"}} - {{if $operation == $elem.label}} - {{if $elem.type == 'définitif'}} - {{:assign stock="%d-%d"|math:$stock:$nombre}} - {{:assign - var="equipments.%s.eqpmt.%s.stock"|args:$cat_key:$eqpmt_key - from=stock}} - {{elseif $elem.type == 'temporaire'}} - {{:assign exterieur="%d+%d"|math:$exterieur:$nombre}} - {{:assign - var="equipments.%s.eqpmt.%s.exterieur"|args:$cat_key:$eqpmt_key - from=exterieur}} - {{elseif $elem.type == 'retour'}} - {{:assign nonproprio="%d-%d"|math:$nonproprio:$nombre}} - {{:assign - var="equipments.%s.eqpmt.%s.nonproprio"|args:$cat_key:$eqpmt_key - from=nonproprio}} - {{/if}} - {{:break}} - {{/if}} - {{/foreach}} + {{if $mvt.direction === 'input'}} + {{if $type_mvt == 'définitif'}} + {{:assign stock="%d+%d"|math:$stock:$mvt.amount}} + {{:assign + var="equipments.%s.stock"|args:$mvt.equipment + from=stock}} + {{elseif $type_mvt == 'retour'}} + {{:assign exterieur="%d-%d"|math:$exterieur:$mvt.amount}} + {{:assign + var="equipments.%s.exterieur"|args:$mvt.equipment + from=exterieur}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign nonproprio="%d+%d"|math:$nonproprio:$mvt.amount}} + {{:assign + var="equipments.%s.nonproprio"|args:$mvt.equipment + from=nonproprio}} + {{/if}} + {{elseif $mvt.direction === 'output'}} + {{if $type_mvt == 'définitif'}} + {{:assign stock="%d-%d"|math:$stock:$mvt.amount}} + {{:assign + var="equipments.%s.stock"|args:$mvt.equipment + from=stock}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign exterieur="%d+%d"|math:$exterieur:$mvt.amount}} + {{:assign + var="equipments.%s.exterieur"|args:$mvt.equipment + from=exterieur}} + {{elseif $type_mvt == 'retour'}} + {{:assign nonproprio="%d-%d"|math:$nonproprio:$mvt.amount}} + {{:assign + var="equipments.%s.nonproprio"|args:$mvt.equipment + from=nonproprio}} + {{/if}} {{/if}} -{{/select}} + +{{/load}} + +{{* grouper les résultats par catégorie *}} +{{#foreach from=$equipments key="eqpmt_key" item="eqpmt"}} + {{:assign + var="cumul_mvt.%s.eqpmt.%s"|args:$eqpmt.category:$eqpmt_key + value=$eqpmt}} +{{/foreach}} diff --git a/_get_config.html b/_get_config.html index 5da627b..b9db258 100644 --- a/_get_config.html +++ b/_get_config.html @@ -13,9 +13,7 @@ {{* pas de config enregistrée : utiliser la config par défaut *}} {{#foreach from=$config_defaut.inputs item="elem"}} {{#foreach from=$elem key=label item=value}} - {{:assign var="item.label" value=$label}} - {{:assign var="item.type" value=$value}} - {{:assign var="config.input_nature." value=$item}} + {{:assign var="config.input_nature.%s"|args:$label value=$value}} {{/foreach}} {{/foreach}} {{/if}} @@ -26,9 +24,7 @@ {{* pas de config enregistrée : utiliser la config par défaut *}} {{#foreach from=$config_defaut.outputs item="elem"}} {{#foreach from=$elem key=label item=value}} - {{:assign var="item.label" value=$label}} - {{:assign var="item.type" value=$value}} - {{:assign var="config.output_nature." value=$item}} + {{:assign var="config.output_nature.%s"|args:$label value=$value}} {{/foreach}} {{/foreach}} {{/if}} diff --git a/categories/list_equipment.html b/categories/list_equipment.html index 30f8fa2..245a14b 100644 --- a/categories/list_equipment.html +++ b/categories/list_equipment.html @@ -6,16 +6,12 @@ {{:admin_header title="Matériels de la catégorie « %s »"|args:$cat_name current="module_equipment"}} -{{if $_GET.dialog === null}} - {{* barre de navigation *}} - {{:include file="../_nav.html" current="categories"}} -{{else}} -
-

Matériels de la catégorie « {{$cat_name}} »

-
+{{* barre de navigation *}} +{{if ! $dialog}} + {{:include file="../_nav.html" current="entrees"}} {{/if}} -{{:assign var="categories." value=$_GET.key}} +{{:assign var="category_keys." value=$_GET.key}} {{:include file="../inventaire.html"}} {{:admin_footer}} diff --git a/index.html b/index.html index fa18dc9..8616e35 100644 --- a/index.html +++ b/index.html @@ -10,10 +10,10 @@ {{/if}} {{#load type="category"}} - {{:assign var="categories." value=$key}} + {{:assign var="category_keys." value=$key}} {{/load}} -{{if $categories|count == 0}} +{{if $category_keys|count == 0}}

Il n'y a aucune catégorie : vous devez en ajouter.

{{else}} {{:include file="./inventaire.html" print_cat_name=true}} diff --git a/inventaire.html b/inventaire.html index e705abf..9ccb51a 100644 --- a/inventaire.html +++ b/inventaire.html @@ -2,10 +2,10 @@ {{* inventaire des entrées/sorties des matériels des catégories de la variable $categories *}} {{* Extraire et compiler les infos de la base *}} -{{:include file="./_calcul_dispo.html" keep="equipments"}} +{{:include file="./_calcul_dispo.html" keep="cumul_mvt,categories"}} {{* Afficher les résultats *}} -{{if $equipments === null}} +{{if $cumul_mvt === null}} {{if $categories|count == 1}}

Il n'y a aucun matériel dans cette catégorie.

{{else}} @@ -16,21 +16,21 @@

Matériels dont l'association est propriétaire

{{* itérer sur les catégories *}} - {{#foreach from=$equipments key="cat_key" item="category"}} + {{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}} + + {{if $print_cat_name}} +

{{$cat_elem.name}}

+ {{/if}} {{* vérifier s'il y a des matériels dans cette catégorie *}} {{:assign present=false}} - {{#foreach from=$category.eqpmt key="eqpmt_key" item="eqpmt"}} + {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}} {{if $eqpmt.stock !== null && $eqpmt.stock !== 0}} {{:assign present=true}} {{:break}} {{/if}} {{/foreach}} - {{if $print_cat_name}} -

{{$category.name}}

- {{/if}} - {{if $present}} @@ -45,7 +45,7 @@ {{* itérer sur les matériels de la catégorie *}} - {{#foreach from=$category.eqpmt key="eqpmt_key" item="eqpmt"}} + {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}} {{:assign keys=$eqpmt|keys}} {{if "stock"|in:$keys && $eqpmt.stock !== 0}} @@ -82,21 +82,21 @@

Matériels dont l'association n'est pas propriétaire

{{* itérer sur les catégories *}} - {{#foreach from=$equipments key="cat_key" item="category"}} + {{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}} + + {{if $print_cat_name}} +

{{$cat_elem.name}}

+ {{/if}} {{* vérifier s'il y a des matériels dans cette catégorie *}} {{:assign present=false}} - {{#foreach from=$category.eqpmt key="eqpmt_key" item="eqpmt"}} + {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}} {{if $eqpmt.nonproprio !== null && $eqpmt.nonproprio !== 0}} {{:assign present=true}} {{:break}} {{/if}} {{/foreach}} - {{if $print_cat_name}} -

{{$category.name}}

- {{/if}} - {{if $present}}
@@ -109,7 +109,7 @@ {{* itérer sur les matériels de la catégorie *}} - {{#foreach from=$category.eqpmt key="eqpmt_key" item="eqpmt"}} + {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}} {{:assign keys=$eqpmt|keys}} {{if "nonproprio"|in:$keys && $eqpmt.nonproprio !== 0}} diff --git a/mouvements/entrees/delete_entree.html b/mouvements/entrees/delete_entree.html index 8cd0aa7..a628b53 100644 --- a/mouvements/entrees/delete_entree.html +++ b/mouvements/entrees/delete_entree.html @@ -29,33 +29,27 @@ {{#load type="movement" where="$$.equipment = :key" :key=$key_eqpmt_suppr - assign="movement" + assign="mvt" order="$$.date"}} + {{* déterminer le type de mouvement *}} + {{:assign var="mvt_nature" from="mvt.%s_nature"|args:$mvt.direction}} + {{:assign var="type_mvt" from="config.%s_nature.%s"|args:$mvt.direction:$mvt_nature}} + {{if $key != $_GET.key}} {{* ce n'est pas le mouvement à supprimer : cumuler les entrées/sorties *}} - {{if $movement.direction == 'input'}} - {{* chercher le type d'entrée parmi les types de la config *}} - {{#foreach from=$config.input_nature item="elem"}} - {{if $movement.input_nature == $elem.label}} - {{if $elem.type == 'temporaire'}} - {{:assign nonprop="%d+%d"|math:$nonprop:$movement.amount}} - {{else}} - {{:assign dispo="%d+%d"|math:$dispo:$movement.amount}} - {{/if}} - {{/if}} - {{/foreach}} - {{elseif $movement.direction == 'output'}} - {{* chercher le type de sortie parmi les types de la config *}} - {{#foreach from=$config.output_nature item="elem"}} - {{if $movement.output_nature == $elem.label}} - {{if $elem.type == 'retour'}} - {{:assign nonprop="%d-%d"|math:$nonprop:$movement.amount}} - {{else}} - {{:assign dispo="%d-%d"|math:$dispo:$movement.amount}} - {{/if}} - {{/if}} - {{/foreach}} + {{if $mvt.direction == 'input'}} + {{if $type_mvt == 'temporaire'}} + {{:assign nonprop="%d+%d"|math:$nonprop:$mvt.amount}} + {{else}} + {{:assign dispo="%d+%d"|math:$dispo:$mvt.amount}} + {{/if}} + {{elseif $mvt.direction == 'output'}} + {{if $type_mvt == 'retour'}} + {{:assign nonprop="%d-%d"|math:$nonprop:$mvt.amount}} + {{else}} + {{:assign dispo="%d-%d"|math:$dispo:$mvt.amount}} + {{/if}} {{/if}} {{* problème ? *}} diff --git a/mouvements/entrees/non_repertorie.html b/mouvements/entrees/non_repertorie.html index a00b378..531c725 100644 --- a/mouvements/entrees/non_repertorie.html +++ b/mouvements/entrees/non_repertorie.html @@ -10,61 +10,60 @@ {{:include file="../../_get_config.html" keep="config"}} {{* types d'entrées *}} -{{#foreach from=$config.input_nature item="elem"}} - {{if $elem.type != 'retour'}} - {{:assign var='input_types.' value="%s"|args:$elem.label}} +{{#foreach from=$config.input_nature key="label" item="type"}} + {{if $type != 'retour'}} + {{:assign var='input_labels.' value="%s"|args:$label}} {{/if}} {{/foreach}} {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} - {{* récupérer les infos de la catégorie *}} - {{#load type="category" key=$_POST.category assign="category"}} - {{/load}} + {{* récupérer les infos de la catégorie *}} + {{#load type="category" key=$_POST.category assign="category"}} + {{/load}} - {{* vérifier l'existence d'un matériel du même nom *}} - {{#load type="equipment" where="lower($$.designation) = :name" :name=$_POST.designation|trim|tolower}} - {{* utiliser la clé du matériel trouvé *}} - {{:assign equipment_key=$key}} - {{else}} - {{* nouveau matériel => nouvelle clé *}} - {{:assign equipment_key=""|uuid}} - - {{* enregistrer un nouveau matériel *}} - {{:save - key=$equipment_key - validate_schema="../../equipment.schema.json" - type="equipment" - category=$category.key - designation=$_POST.designation|trim - }} - {{/load}} - - {{* Enregistrer le mouvement *}} - {{:assign mvt_key=""|uuid}} - {{:assign var="operation" from="input_types.%d"|args:$_POST.type_operation}} + {{* vérifier l'existence d'un matériel du même nom *}} + {{#load type="equipment" where="lower($$.designation) = :name" :name=$_POST.designation|trim|tolower}} + {{* utiliser la clé du matériel trouvé *}} + {{:assign equipment_key=$key}} + {{else}} + {{* nouveau matériel => nouvelle clé *}} + {{:assign equipment_key=""|uuid}} + {{* enregistrer un nouveau matériel *}} {{:save - key=$mvt_key - validate_schema="../movement.schema.json" - type="movement" - direction="input" - input_nature=$operation - amount=$_POST.quantite|intval - equipment=$equipment_key - date=$_POST.date|parse_date - comment=$_POST.remarques|trim + key=$equipment_key + validate_schema="../../equipment.schema.json" + type="equipment" + category=$category.key + designation=$_POST.designation|trim }} + {{/load}} - {{:redirect force="index.html?ok=1&msg=entrée"}} + {{* Enregistrer le mouvement *}} + {{:assign mvt_key=""|uuid}} + {{:assign var="operation" from="input_labels.%d"|args:$_POST.type_operation}} + + {{:save + key=$mvt_key + validate_schema="../movement.schema.json" + type="movement" + direction="input" + input_nature=$operation + amount=$_POST.quantite|intval + equipment=$equipment_key + date=$_POST.date|parse_date + comment=$_POST.remarques|trim + }} + + {{:redirect force="index.html?ok=1&msg=entrée"}} {{else}} - {{:form_errors}} + {{:form_errors}} {{/form}} {{* lister les catégories disponibles *}} {{#load type="category" assign="category" order="$$.name"}} -{{* :assign var="categories.%d"|args:$category.id value=$category.name *}} {{:assign var="categories.%s"|args:$category.key value=$category.name}} {{/load}} @@ -74,7 +73,7 @@
Ajouter une entrée d'un matériel non répertorié
- {{:input type="select" name="type_operation" label="Type" required=true options=$input_types}} + {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="number" name="quantite" label="Quantité" required=true default=1}}
diff --git a/mouvements/entrees/repertorie.html b/mouvements/entrees/repertorie.html index de17285..4f3b62c 100644 --- a/mouvements/entrees/repertorie.html +++ b/mouvements/entrees/repertorie.html @@ -10,21 +10,22 @@ {{:include file="../../_get_config.html" keep="config"}} {{* types d'entrées *}} -{{#foreach from=$config.input_nature item="elem"}} - {{if $elem.type != 'retour'}} - {{:assign var='input_types.' value="%s"|args:$elem.label}} +{{#foreach from=$config.input_nature key="label" item="type"}} + {{if $type != 'retour'}} + {{:assign var='input_labels.' value="%s"|args:$label}} {{/if}} {{/foreach}} {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} + {{* récupérer les infos du matériel *}} {{#load type="equipment" key=$_POST.equipment assign="equipment"}} {{/load}} {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} - {{:assign var="operation" from="input_types.%d|args:$_POST.type_operation}} + {{:assign var="operation" from="input_labels.%d|args:$_POST.type_operation}} {{:save key=$mvt_key @@ -60,7 +61,7 @@
Ajouter une entrée d'un matériel répertorié
- {{:input type="select" name="type_operation" label="Type" required=true options=$input_types}} + {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="number" name="quantite" label="Quantité" required=true default=1}}
diff --git a/mouvements/entrees/retour.html b/mouvements/entrees/retour.html index aeacc7d..9a40454 100644 --- a/mouvements/entrees/retour.html +++ b/mouvements/entrees/retour.html @@ -10,9 +10,9 @@ {{:include file="../../_get_config.html" keep="config"}} {{* types d'entrées *}} -{{#foreach from=$config.input_nature item="elem"}} - {{if $elem.type == 'retour'}} - {{:assign var='input_types.' value="%s"|args:$elem.label}} +{{#foreach from=$config.input_nature key="label" item="type"}} + {{if $type == 'retour'}} + {{:assign var='input_labels.' value="%s"|args:$label}} {{/if}} {{/foreach}} @@ -27,12 +27,12 @@ {{* Extraire et compiler les infos de la base *}} {{:include file="../../_calcul_dispo.html" - keep="equipments" + keep="cumul_mvt" date=$_POST.date|parse_date }} {{* déterminer la quantité sortie temporairement de ce matriel à la date donnée *}} - {{:assign var=sorti from="equipments.%s.eqpmt.%s.exterieur"|args:$equipment.category:$_POST.equipment}} + {{:assign var=sorti from="cumul_mvt.%s.eqpmt.%s.exterieur"|args:$equipment.category:$_POST.equipment}} {{if $_POST.quantite|intval > $sorti}} {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle sortie (%d) à la date du %s"|args:$_POST.quantite:$sorti:$_POST.date}} @@ -40,7 +40,7 @@ {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} - {{:assign var="operation" from="input_types.%d|args:$_POST.type_operation}} + {{:assign var="operation" from="input_labels.%d|args:$_POST.type_operation}} {{:save key=$mvt_key @@ -60,17 +60,17 @@ {{/form}} {{* Extraire et compiler les infos de la base *}} -{{:include file="../../_calcul_dispo.html" keep="equipments"}} +{{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}} -{{if $equipments !== null}} +{{if $cumul_mvt !== null}} {{* déterminer la quantité des matériels sortis temporairement *}} - {{#foreach from=$equipments key="cat_key" item="category"}} - {{#foreach from=$category.eqpmt key="eqpmt_key" item="eqpmt"}} + {{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}} + {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}} {{:assign quantite=$eqpmt.exterieur}} {{if $quantite != 0}} {{:assign - var="temporaire.%s.%s"|args:$category.name:$eqpmt_key + var="temporaire.%s.%s"|args:$cat_elem.name:$eqpmt_key value="%s (quantité : %d)"|args:$eqpmt.designation:$quantite }} {{/if}} @@ -84,7 +84,7 @@
Ajouter une entrée pour un retour de matériel
- {{:input type="select" name="type_operation" label="Type" required=true options=$input_types}} + {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="number" name="quantite" label="Quantité" required=true default=1}}
diff --git a/mouvements/modifier_mouvement.html b/mouvements/modifier_mouvement.html index f48bc4a..a9bb844 100644 --- a/mouvements/modifier_mouvement.html +++ b/mouvements/modifier_mouvement.html @@ -27,18 +27,18 @@ {{if $direction == "input"}} {{* types d'entrées *}} - {{#foreach from=$config.input_nature key="rang" item="elem"}} - {{:assign var='input_types.' value="%s"|args:$elem.label}} - {{if $elem.label == $mvt_modif.input_nature}} - {{:assign type_defaut=$rang}} + {{#foreach from=$config.input_nature key="label" item="type"}} + {{:assign var="input_labels.%s"|args:$label value="%s"|args:$label}} + {{if $label == $mvt_modif.input_nature}} + {{:assign type_defaut=$label}} {{/if}} {{/foreach}} {{else}} {{* types de sorties *}} - {{#foreach from=$config.output_nature key="rang" item="elem"}} - {{:assign var='types_sorties.' value="%s"|args:$elem.label}} - {{if $elem.label == $mvt_modif.output_nature}} - {{:assign type_defaut=$rang}} + {{#foreach from=$config.output_nature key="label" item="type"}} + {{:assign var="output_labels.%s"|args:$label value="%s"|args:$label}} + {{if $label == $mvt_modif.output_nature}} + {{:assign type_defaut=$label}} {{/if}} {{/foreach}} {{/if}} @@ -55,9 +55,9 @@ {{#form on="change"}} {{* préparer le mouvement modifié *}} {{if $direction == "input"}} - {{:assign var="mvt_modif.input_nature" from="input_types.%d"|args:$_POST.type_operation}} + {{:assign var="mvt_modif.input_nature" from="input_labels.%s"|args:$_POST.type_operation}} {{else}} - {{:assign var="mvt_modif.output_nature" from="types_sorties.%d"|args:$_POST.type_operation}} + {{:assign var="mvt_modif.output_nature" from="output_labels.%s"|args:$_POST.type_operation}} {{/if}} {{:assign var="mvt_modif.amount" value=$_POST.amount}} {{:assign var="mvt_modif.equipment" value=$_POST.equipment}} @@ -160,11 +160,11 @@ {{if $direction == "input"}} Modifier l'entrée « {{$input_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} »
- {{:input type="select" name="type_operation" label="Type" required=true options=$input_types default=$type_defaut}} + {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels default=$type_defaut}} {{else}} Modifier la sortie « {{$output_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} »
- {{:input type="select" name="type_operation" label="Type" required=true options=$types_sorties default=$type_defaut}} + {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels default=$type_defaut}} {{/if}} {{:input type="date" name="date" label="Date" required=true default=$mvt_modif.date}} {{:input type="number" name="amount" label="Quantité" required=true default=$mvt_modif.amount}} diff --git a/mouvements/sorties/delete_sortie.html b/mouvements/sorties/delete_sortie.html index 1a5075a..4d2485a 100644 --- a/mouvements/sorties/delete_sortie.html +++ b/mouvements/sorties/delete_sortie.html @@ -23,12 +23,11 @@ {{* déterminer s'il s'agit d'une sortie temporaire *}} {{:assign temporaire=false}} - {{#foreach from=$config.output_nature item="elem"}} - {{if $mvt_suppr.output_nature == $elem.label && $elem.type == 'temporaire'}} - {{:assign temporaire=true}} - {{:break}} - {{/if}} - {{/foreach}} + {{:assign var="output_nature" from="config.output_nature.%s"|args:$mvt_suppr.output_nature}} + + {{if $output_nature == 'temporaire'}} + {{:assign temporaire=true}} + {{/if}} {{* dans le cas d'une sortie temporaire, vérifier s'il est possible de la supprimer *}} {{if $temporaire}} @@ -36,32 +35,29 @@ {{#load type="movement" where="$$.equipment = :key" :key=$key_eqpmt_suppr - assign="movement" + assign="mvt" order="$$.date"}} + {{* déterminer le type de mouvement *}} + {{:assign var="mvt_nature" from="mvt.%s_nature"|args:$mvt.direction}} + {{:assign var="type_mvt" from="config.%s_nature.%s"|args:$mvt.direction:$mvt_nature}} + {{if $key != $_GET.key}} {{* ce n'est pas le mouvement à supprimer : cumuler les entrées/sorties *}} - {{if $movement.direction == 'input'}} - {{* chercher le type d'entrée parmi les types de la config *}} - {{#foreach from=$config.input_nature item="elem"}} - {{if $movement.input_nature == $elem.label && $elem.type == 'retour'}} - {{:assign exterieur="%d-%d"|math:$exterieur:$movement.amount}} - {{/if}} - {{/foreach}} - {{elseif $movement.direction == 'output'}} - {{* chercher le type de sortie parmi les types de la config *}} - {{#foreach from=$config.output_nature item="elem"}} - {{if $movement.output_nature == $elem.label && $elem.type == 'temporaire'}} - {{:assign exterieur="%d+%d"|math:$exterieur:$movement.amount}} - {{/if}} - {{/foreach}} + {{if $mvt.direction == 'input'}} + {{if $type_mvt == 'retour'}} + {{:assign exterieur="%d-%d"|math:$exterieur:$mvt.amount}} + {{/if}} + {{elseif $mvt.direction == 'output'}} + {{if $type_mvt == 'temporaire'}} + {{:assign exterieur="%d+%d"|math:$exterieur:$mvt.amount}} + {{/if}} {{/if}} {{* problème ? *}} {{if $exterieur < 0}} {{:redirect force="./index.html?err=1&msg=suppression"}} {{/if}} - {{/if}} {{/load}} {{/if}} diff --git a/mouvements/sorties/emprunte.html b/mouvements/sorties/emprunte.html index 2add0e3..7ca64c8 100644 --- a/mouvements/sorties/emprunte.html +++ b/mouvements/sorties/emprunte.html @@ -10,9 +10,9 @@ {{:include file="../../_get_config.html" keep="config"}} {{* types de sorties *}} -{{#foreach from=$config.output_nature item="elem"}} - {{if $elem.type == 'retour'}} - {{:assign var='output_types.' value="%s"|args:$elem.label}} +{{#foreach from=$config.output_nature key="label" item="type"}} + {{if $type == 'retour'}} + {{:assign var='output_labels.' value="%s"|args:$label}} {{/if}} {{/foreach}} @@ -21,18 +21,18 @@ {{* récupérer les infos du matériel *}} {{#load type="equipment" key=$_POST.equipment assign="equipment"}} {{:assign designation=$equipment.designation}} - {{:assign var="categories." value=$equipment.category}} + {{:assign var="category_keys." value=$equipment.category}} {{/load}} {{* Extraire et compiler les infos de la base *}} {{:include file="../../_calcul_dispo.html" - keep="equipments" + keep="cumul_mvt" date=$_POST.date|parse_date }} {{* déterminer la quantité présente de ce matériel à la date donnée *}} - {{:assign var=present from="equipments.%s.eqpmt.%s.nonproprio"|args:$equipment.category:$_POST.equipment}} + {{:assign var=present from="cumul_mvt.%s.eqpmt.%s.nonproprio"|args:$equipment.category:$_POST.equipment}} {{if $_POST.quantite|intval > $present}} {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle présente (%d) à la date du %s"|args:$_POST.quantite:$present:$_POST.date}} @@ -41,7 +41,7 @@ {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} - {{:assign var="operation" from="output_types.%d|args:$_POST.type_operation}} + {{:assign var="operation" from="output_labels.%d|args:$_POST.type_operation}} {{:save key=$mvt_key validate_schema="../movement.schema.json" @@ -59,16 +59,16 @@ {{/form}} {{* Extraire et compiler les infos de la base *}} -{{:include file="../../_calcul_dispo.html" keep="equipments"}} +{{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}} -{{if $equipments !== null}} +{{if $cumul_mvt !== null}} {{* calculer les quantité de matériels dont l'asso n'est pas propriétaire *}} - {{#foreach from=$equipments key="cat_key" item="category"}} - {{#foreach from=$category.eqpmt key="eqpmt_key" item="eqpmt"}} + {{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}} + {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}} {{:assign quantite="%d-%d"|math:$eqpmt.nonproprio:$eqpmt.retour}} {{if $quantite != 0}} {{:assign - var="temporaire.%s.%s"|args:$category.name:$eqpmt_key + var="temporaire.%s.%s"|args:$cat_elem.name:$eqpmt_key value="%s (quantité : %d)"|args:$eqpmt.designation:$quantite }} {{/if}} @@ -81,7 +81,7 @@
Ajouter une sortie d'un matériel disponible en stock
- {{:input type="select" name="type_operation" label="Type" required=true options=$output_types}} + {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels}} {{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}} {{:input type="number" name="quantite" label="Quantité" required=true default=1 min=1}}
diff --git a/mouvements/sorties/stock_disponible.html b/mouvements/sorties/stock_disponible.html index 3ec8d48..0fbe5e4 100644 --- a/mouvements/sorties/stock_disponible.html +++ b/mouvements/sorties/stock_disponible.html @@ -10,9 +10,9 @@ {{:include file="../../_get_config.html" keep="config"}} {{* types de sorties *}} -{{#foreach from=$config.output_nature item="elem"}} - {{if $elem.type != 'retour'}} - {{:assign var='output_types.' value="%s"|args:$elem.label}} +{{#foreach from=$config.output_nature key="label" item="type"}} + {{if $type != 'retour'}} + {{:assign var='output_labels.' value="%s"|args:$label}} {{/if}} {{/foreach}} @@ -21,19 +21,19 @@ {{* récupérer les infos du matériel *}} {{#load type="equipment" key=$_POST.equipment assign="equipment"}} {{:assign designation=$equipment.designation}} - {{:assign var="categories." value=$equipment.category}} + {{:assign var="category_keys." value=$equipment.category}} {{/load}} {{* Extraire et compiler les infos de la base *}} {{:include file="../../_calcul_dispo.html" - keep="equipments" + keep="cumul_mvt" date=$_POST.date|parse_date }} {{* déterminer la quantité disponible de ce matériel à la date donnée *}} - {{:assign var=stock from="equipments.%s.eqpmt.%s.stock"|args:$equipment.category:$_POST.equipment}} - {{:assign var=exterieur from="equipments.%s.eqpmt.%s.exterieur"|args:$equipment.category:$_POST.equipment}} + {{:assign var=stock from="cumul_mvt.%s.eqpmt.%s.stock"|args:$equipment.category:$_POST.equipment}} + {{:assign var=exterieur from="cumul_mvt.%s.eqpmt.%s.exterieur"|args:$equipment.category:$_POST.equipment}} {{:assign dispo="%d-%d"|math:$stock:$exterieur}} {{if $_POST.quantite|intval > $dispo}} @@ -43,7 +43,7 @@ {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} - {{:assign var="operation" from="output_types.%d|args:$_POST.type_operation}} + {{:assign var="operation" from="output_labels.%d|args:$_POST.type_operation}} {{:save key=$mvt_key validate_schema="../movement.schema.json" @@ -61,17 +61,19 @@ {{/form}} {{* Extraire et compiler les infos de la base *}} -{{:include file="../../_calcul_dispo.html" keep="equipments"}} +{{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}} -{{if $equipments !== null}} +{{if $cumul_mvt !== null}} {{* calculer les disponibilités *}} - {{#foreach from=$equipments key="cat_key" item="category"}} - {{#foreach from=$category.eqpmt key="eqpmt_key" item="eqpmt"}} + {{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}} + {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}} {{:assign dispo="%d-%d"|math:$eqpmt.stock:$eqpmt.exterieur}} - {{:assign - var="disponibilites.%s.%s"|args:$category.name:$eqpmt_key - value="%s (dispo : %d)"|args:$eqpmt.designation:$dispo - }} + {{if $dispo != 0}} + {{:assign + var="disponibilites.%s.%s"|args:$cat_elem.name:$eqpmt_key + value="%s (dispo : %d)"|args:$eqpmt.designation:$dispo + }} + {{/if}} {{/foreach}} {{/foreach}} {{if $disponibilites === null}} @@ -83,7 +85,7 @@
Ajouter une sortie d'un matériel disponible en stock
- {{:input type="select" name="type_operation" label="Type" required=true options=$output_types}} + {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels}} {{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}} {{:input type="number" name="quantite" label="Quantité" required=true default=1 min=1}}
diff --git a/mouvements/valider_modification.html b/mouvements/valider_modification.html index 97cc344..40b01c8 100644 --- a/mouvements/valider_modification.html +++ b/mouvements/valider_modification.html @@ -12,34 +12,28 @@ {{:assign stock=0}} {{:assign exterieur=0}} {{:assign nonprop=0}} -{{#foreach from=$movements item="movement"}} - {{if $movement.equipment == $eqpmt_key}} - {{if $movement.direction == 'input'}} - {{* chercher le type d'entrée parmi les types de la config *}} - {{#foreach from=$config.input_nature item="elem"}} - {{if $movement.input_nature == $elem.label}} - {{if $elem.type == 'définitif'}} - {{:assign stock="%d+%d"|math:$stock:$movement.amount}} - {{elseif $elem.type == 'retour'}} - {{:assign exterieur="%d-%d"|math:$exterieur:$movement.amount}} - {{elseif $elem.type == 'temporaire'}} - {{:assign nonprop="%d+%d"|math:$nonprop:$movement.amount}} - {{/if}} - {{/if}} - {{/foreach}} - {{elseif $movement.direction == 'output'}} - {{* chercher le type de sortie parmi les types de la config *}} - {{#foreach from=$config.output_nature item="elem"}} - {{if $movement.output_nature == $elem.label}} - {{if $elem.type == 'définitif'}} - {{:assign stock="%d-%d"|math:$stock:$movement.amount}} - {{elseif $elem.type == 'temporaire'}} - {{:assign exterieur="%d+%d"|math:$exterieur:$movement.amount}} - {{elseif $elem.type == 'retour'}} - {{:assign nonprop="%d-%d"|math:$nonprop:$movement.amount}} - {{/if}} - {{/if}} - {{/foreach}} +{{#foreach from=$movements item="mvt"}} + {{* déterminer le type de mouvement *}} + {{:assign var="mvt_nature" from="mvt.%s_nature"|args:$mvt.direction}} + {{:assign var="type_mvt" from="config.%s_nature.%s"|args:$mvt.direction:$mvt_nature}} + + {{if $mvt.equipment == $eqpmt_key}} + {{if $mvt.direction == 'input'}} + {{if $type_mvt == 'définitif'}} + {{:assign stock="%d+%d"|math:$stock:$mvt.amount}} + {{elseif $type_mvt == 'retour'}} + {{:assign exterieur="%d-%d"|math:$exterieur:$mvt.amount}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign nonprop="%d+%d"|math:$nonprop:$mvt.amount}} + {{/if}} + {{elseif $mvt.direction == 'output'}} + {{if $type_mvt == 'définitif'}} + {{:assign stock="%d-%d"|math:$stock:$mvt.amount}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign exterieur="%d+%d"|math:$exterieur:$mvt.amount}} + {{elseif $type_mvt == 'retour'}} + {{:assign nonprop="%d-%d"|math:$nonprop:$mvt.amount}} + {{/if}} {{/if}} {{:assign dispo="%d-%d"|math:$stock:$exterieur}} {{if $dispo < 0 || $stock < 0 || $exterieur < 0 || $nonprop < 0}}