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}}
-
+{{* 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 @@