Modifier la catégorie « {{$category.name}} »
diff --git a/config.html b/config.html
index 4d395eb..cff708a 100644
--- a/config.html
+++ b/config.html
@@ -1,23 +1,14 @@
+{{* -*- brindille -*- *}}
+
{{:admin_header title="Configuration" current="module_equipment"}}
{{* barre de navigation *}}
-{{:include file="_nav.html" current="config"}}
+{{:include file="_nav.html" current="config" subcurrent="typesES"}}
{{if $_GET.ok}}
Configuration enregistrée.
{{/if}}
-{{* Traiter l'envoi du formulaire *}}
-{{#form on="save"}}
-
- {{:save key="config"
- validate_schema="./config.schema.json"
- input_nature=$_POST.input_fields|array_transpose
- output_nature=$_POST.output_fields|array_transpose
- }}
- {{:redirect to="./config.html?ok=1"}}
-{{/form}}
-
{{* lecture config (défaut ou enregistrée) *}}
{{:include file="./_get_config.html" keep="config"}}
@@ -26,7 +17,7 @@
{{:assign var='input_types.%s'|args:$type value=$type}}
{{/foreach}}
-{{* Natures d'entrées qui ne peuvent être supprimées *}}
+{{* types d'entrées qui ne peuvent être supprimées *}}
{{#load type="movement" where="$$.direction='input'" group="$$.input_nature"}}
{{:assign var="locked_inputs." value=$input_nature}}
{{/load}}
@@ -36,127 +27,59 @@
{{:assign var='output_types.%s'|args:$type value=$type}}
{{/foreach}}
-{{* Natures de sorties qui ne peuvent être supprimées *}}
+{{* types de sorties qui ne peuvent être supprimées *}}
{{#load type="movement" where="$$.direction='output'" group="$$.output_nature"}}
{{:assign var="locked_outputs." value=$output_nature}}
{{/load}}
-
-
-
{{:admin_footer}}
diff --git a/config/ajouter_type_mouvement.html b/config/ajouter_type_mouvement.html
new file mode 100644
index 0000000..f4a55b6
--- /dev/null
+++ b/config/ajouter_type_mouvement.html
@@ -0,0 +1,143 @@
+{{* -*- brindille -*- *}}
+
+{{* barre de navigation *}}
+{{if ! $dialog}}
+ {{:include file="../_nav.html" current="config" subcurrent="typesES"}}
+{{/if}}
+
+{{* Traiter l'envoi du formulaire *}}
+
+{{* lecture config (défaut ou enregistrée) *}}
+{{:include file="../_get_config.html" keep="config"}}
+
+{{#form on="save"}}
+
+ {{* vérifier l'existence d'une entrée de même nom et générer le résultat *}}
+ {{#foreach from=$config.input_nature key="label" item="type"}}
+ {{if $label|trim|tolower == $_POST.input_fields.label|trim|tolower}}
+ {{:error message="Ce libellé d'entrée est déjà présent"}}
+ {{/if}}
+ {{:assign var="input_nature.label" value=$label}}
+ {{:assign var="input_nature.type" value=$type}}
+ {{:assign var="input_natures." from=input_nature}}
+ {{/foreach}}
+
+ {{* ajouter la nouvelle entrée *}}
+ {{if $_GET.dir == 'input'}}
+ {{:assign input_label=$_POST.input_fields.label|trim|tolower|ucfirst}}
+ {{:assign var="input_nature.label" value=$_POST.input_fields.label|trim|tolower|ucfirst}}
+ {{:assign var="input_nature.type" value=$_POST.input_fields.type}}
+ {{:assign var="input_natures." from=input_nature}}
+ {{/if}}
+
+ {{* vérifier l'existence d'une sortie de même nom et générer le résultat *}}
+ {{#foreach from=$config.output_nature key="label" item="type"}}
+ {{if $label|trim|tolower == $_POST.output_fields.label|trim|tolower}}
+ {{:error message="Ce libellé de sortie est déjà présent"}}
+ {{/if}}
+ {{:assign var="output_nature.label" value=$label}}
+ {{:assign var="output_nature.type" value=$type}}
+ {{:assign var="output_natures." from=output_nature}}
+ {{/foreach}}
+
+ {{* ajouter la nouvelle sortie *}}
+ {{if $_GET.dir == 'output'}}
+ {{:assign output_label=$_POST.output_fields.label|trim|tolower|ucfirst}}
+ {{:assign var="output_nature.label" value=$_POST.output_fields.label|trim|tolower|ucfirst}}
+ {{:assign var="output_nature.type" value=$_POST.output_fields.type}}
+ {{:assign var="output_natures." from=output_nature}}
+ {{/if}}
+
+ {{:save
+ key="config"
+ validate_schema="../config.schema.json"
+ input_nature=$input_natures
+ output_nature=$output_natures
+ }}
+{{:redirect to="./config.html?ok=1"}}
+{{/form}}
+
+{{:admin_header title="Gestion des matériels" current="module_equipment"}}
+{{:form_errors}}
+
+{{if $_GET.dir == 'input'}}
+ {{* types d'entrées *}}
+ {{#foreach from=$config.input_nature key="label" item="type"}}
+ {{:assign var='input_types.%s'|args:$type value=$type}}
+ {{/foreach}}
+
+
+{{else}}
+ {{* types de sorties *}}
+ {{#foreach from=$config.output_nature key="label" item="type"}}
+ {{:assign var='output_types.%s'|args:$type value=$type}}
+ {{/foreach}}
+
+
+{{/if}}
diff --git a/config/modifier_type_mouvement.html b/config/modifier_type_mouvement.html
new file mode 100644
index 0000000..c4b61f4
--- /dev/null
+++ b/config/modifier_type_mouvement.html
@@ -0,0 +1,66 @@
+{{* -*- brindille -*- *}}
+
+{{*
+ paramètres :
+ - dir : input ou output
+ - mvt : libellé du type de mouvement à modifier
+*}}
+
+{{* barre de navigation *}}
+{{if ! $dialog}}
+ {{:include file="../_nav.html" current="config" subcurrent="typesES"}}
+{{/if}}
+
+{{* lecture config (défaut ou enregistrée) *}}
+{{:include file="../_get_config.html" keep="config"}}
+
+{{:debug config.input_nature=$config.input_nature config.input_nature=$config.input_nature}}
+{{:debug mvt=$_GET.mvt}}
+{{#form on="save"}}
+ {{#foreach from=$config.input_nature key="label" item="type"}}
+ {{:debug key=$label item=$type}}
+ {{if $_GET.dir == 'input'
+ && $label|trim|tolower == $_GET.mvt|trim|tolower}}
+ {{:assign var="input_nature.label" value=$_POST.name|trim|tolower|ucfirst}}
+ {{else}
+ {{:assign var="input_nature.label" value=$label}}
+ {{/if}}
+ {{:assign var="input_nature.type" value=$type}}
+ {{:assign var="input_natures." from=input_nature}}
+ {{/foreach}}
+
+ {{#foreach from=$config.output_nature key="label" item="type"}}
+ {{if $_GET.dir == 'output' && $label|trim|tolower == $_GET.mvt|trim|tolower}}
+ {{:assign var="output_nature.label" value=$_POST.name|trim|tolower|ucfirst}}
+ {{else}}
+ {{:assign var="output_nature.label" value=$label}}
+ {{/if}}
+ {{:assign var="output_nature.type" value=$type}}
+ {{:assign var="output_natures." from=output_nature}}
+ {{/foreach}}
+{{:debug input_natures=$input_natures output_natures=$output_natures}}
+{{*
+ {{:save
+ key="config"
+ validate_schema="../config.schema.json"
+ input_nature=$input_natures
+ output_nature=$output_natures
+ }}
+ {{:redirect to="./config.html?ok=1"}}
+*}}
+{{/form}}
+
+{{:admin_header title="Gestion des matériels" current="module_equipment"}}
+{{:form_errors}}
+
+
diff --git a/config/supprimer_type_mouvement.html b/config/supprimer_type_mouvement.html
new file mode 100644
index 0000000..eba02c7
--- /dev/null
+++ b/config/supprimer_type_mouvement.html
@@ -0,0 +1,61 @@
+{{* -*- brindille -*- *}}
+
+{{*
+ paramètres :
+ - dir : input ou output
+ - mvt : libellé du type de mouvement à supprimer
+*}}
+
+{{* barre de navigation *}}
+{{if ! $dialog}}
+ {{:include file="../_nav.html" current="config" subcurrent="typesES"}}
+{{/if}}
+
+{{* lecture config (défaut ou enregistrée) *}}
+{{:include file="../_get_config.html" keep="config"}}
+
+{{#form on="delete"}}
+ {{#foreach from=$config.input_nature key="label" item="type"}}
+ {{if $_GET.dir == 'input' && $label|trim|tolower != $_GET.mvt|trim|tolower ||
+ $_GET.dir == 'output'}}
+ {{:assign var="input_nature.label" value=$label}}
+ {{:assign var="input_nature.type" value=$type}}
+ {{:assign var="input_natures." from=input_nature}}
+ {{/if}}
+ {{/foreach}}
+
+ {{#foreach from=$config.output_nature key="label" item="type"}}
+ {{if $_GET.dir == 'output' && $label|trim|tolower != $_GET.mvt|trim|tolower ||
+ $_GET.dir == 'input'}}
+ {{:assign var="output_nature.label" value=$label}}
+ {{:assign var="output_nature.type" value=$type}}
+ {{:assign var="output_natures." from=output_nature}}
+ {{/if}}
+ {{/foreach}}
+
+ {{:save
+ key="config"
+ validate_schema="../config.schema.json"
+ input_nature=$input_natures
+ output_nature=$output_natures
+ }}
+ {{:redirect to="./config.html?ok=1"}}
+
+{{/form}}
+
+{{:admin_header title="Gestion des matériels" current="module_equipment"}}
+{{:form_errors}}
+
+{{if $_GET.dir == 'input'}}
+ {{:delete_form
+ legend="Supprimer cette entrée ?"
+ warning="Supprimer l'entrée « %s » ?"|args:$_GET.mvt
+ }}
+{{else}}
+ {{:delete_form
+ legend="Supprimer cette sortie ?"
+ warning="Supprimer la sortie « %s » ?"|args:$_GET.mvt
+ }}
+{{/if}}
+
+{{:admin_footer}}
diff --git a/historique.html b/historique.html
index d716b0f..3187fd0 100644
--- a/historique.html
+++ b/historique.html
@@ -1,5 +1,25 @@
+{{* -*- brindille -*- *}}
+
+{{*
+ Afficher l'historique des mouvements d'un matériel
+ paramètres
+ - key : clé du matériel
+ - prop : = 1 si matériel appartient à l'asso
+ - ok : vrai si opération terminée avec succès
+ - err : vrai si opération terminée en erreur (ça fait doublon avec ok, non ?)
+ - msg : message de retour
+*}}
+
+
+{{* barre de navigation *}}
+{{if $_GET.prop == 1}}
+ {{:assign proprio="proprio"}}
+{{else}}
+ {{:assign proprio="nonproprio"}}
+{{/if}}
+
{{:assign equipment_key=$_GET.key|trim}}
-{{#load key=$_GET.key assign="equipment"}}
+{{#load key=$equipment_key assign="equipment"}}
{{else}}
{{:error message="Pas de matériel avec la clé %s"|args:$equipment_key}}
{{/load}}
@@ -8,12 +28,32 @@
{{else}}
{{:error message="Le matériel %s n'appartient à aucune catégorie"|args:$equipment.designation}}
{{/load}}
-{{:admin_header title="Historique des mouvements de %s (%s)"|args:$equipment.designation:$category.name current="module_equipment"}}
+{{:admin_header title="Gestion des matériels" current="module_equipment"}}
+
+{{:include file="./_nav.html" current="inventaire" subcurrent=$proprio subsubcurrent="mouvements" eqpmt=$equipment.designation category=$category.name}}
+
+{{if $_GET.ok}}
+ {{if $_GET.msg == "modification"}}
+ Modification enregistrée
+ {{elseif $_GET.msg == "copie"}}
+ Mouvement copié
+ {{elseif $_GET.msg == "suppression"}}
+ Mouvement supprimé
+ {{else}}
+ {{$_GET.msg}}
+ {{/if}}
+{{elseif $_GET.err}}
+ {{if $_GET.msg == "suppression"}}
+ Ce mouvement ne peut être supprimé
+ {{else}}
+ {{$_GET.msg}}
+ {{/if}}
+{{/if}}
{{* récupérer la config des entrées/sorties *}}
{{:include file="./_get_config.html" keep="config"}}
-{{* déterminer les type de mouvements selon l'affection du matériel *}}
+{{* déterminer les types de mouvements selon l'affection du matériel *}}
{{#foreach from=$config.input_nature key=mvt item=type_mvt}}
{{if $_GET.prop}}
{{* matériel propriété de l'asso *}}
@@ -27,6 +67,7 @@
{{/if}}
{{/if}}
{{/foreach}}
+
{{#foreach from=$config.output_nature key=mvt item=type_mvt}}
{{if $_GET.prop}}
{{* matériel propriété de l'asso *}}
@@ -41,29 +82,136 @@
{{/if}}
{{/foreach}}
-{{* lister tous les mouvements du matériel passé en paramètre *}}
-{{#list
- type="movement"
- select="$$.date AS 'Date';
- CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mvt';
- CASE $$.direction WHEN 'input' THEN $$.input_nature WHEN 'output' THEN $$.output_nature END AS 'Type';
- $$.amount AS 'Nombre';
- $$.comment AS 'Commentaire'"
- equipment=$equipment_key
- order=1
-}}
- {{if $direction === "input" && $input_nature|in:$input_types ||
- $direction === "output" && $output_nature|in:$output_types
- }}
-
- {{$date|date_short}}
- {{$col2}}
- {{$col3}}
- {{$amount}}
- {{$comment}}
-
-
+{{* calculer et mémoriser les quantités pour que le tri de la liste affiche les valeurs correctes *}}
+{{:assign stock=0}}
+{{:assign exterieur=0}}
+{{:assign nonproprio=0}}
+
+{{#load type="movement" where="$$.equipment = :key" :key=$equipment_key order="$$.date"}}
+ {{if $direction == 'input'}}
+ {{:assign var="type_mvt" from="config.input_nature.%s"|args:$input_nature}}
+ {{if $type_mvt == 'définitif'}}
+ {{:assign stock="%d+%d"|math:$stock:$amount}}
+ {{elseif $type_mvt == 'retour'}}
+ {{:assign exterieur="%d-%d"|math:$exterieur:$amount}}
+ {{elseif $type_mvt == 'temporaire'}}
+ {{:assign nonproprio="%d+%d"|math:$nonproprio:$amount}}
+ {{/if}}
+ {{else}}
+ {{:assign var="type_mvt" from="config.output_nature.%s"|args:$output_nature}}
+ {{if $type_mvt == 'définitif'}}
+ {{:assign stock="%d-%d"|math:$stock:$amount}}
+ {{elseif $type_mvt == 'temporaire'}}
+ {{:assign exterieur="%d+%d"|math:$exterieur:$amount}}
+ {{elseif $type_mvt == 'retour'}}
+ {{:assign nonproprio="%d-%d"|math:$nonproprio:$amount}}
+ {{/if}}
{{/if}}
-{{/list}}
+ {{:assign dispo="%d-%d"|math:$stock:$exterieur}}
+ {{:assign var="quantites.%s.stock"|args:$id value=$stock}}
+ {{:assign var="quantites.%s.exterieur"|args:$id value=$exterieur}}
+ {{:assign var="quantites.%s.dispo"|args:$id value=$dispo}}
+ {{:assign var="quantites.%s.nonproprio"|args:$id value=$nonproprio}}
+{{/load}}
+
+{{* lister tous les mouvements du matériel passé en paramètre *}}
+{{if $_GET.prop}}
+ {{#list
+ type="movement"
+ select="$$.date AS 'Date';
+ CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement';
+ CASE $$.direction WHEN 'input' THEN $$.input_nature WHEN 'output' THEN $$.output_nature END AS 'Opération';
+ $$.amount AS 'Quantité';
+ "" as 'Stock';
+ "" as 'Sorti';
+ "" as 'Disponible';
+ $$.comment AS 'Commentaire'"
+ equipment=$equipment_key
+ order=1
+ }}
+ {{:assign var="type_mvt" from="config.%s_nature.%s"|args:$direction:$col3}}
+
+ {{if $direction === "input" && $input_nature|in:$input_types ||
+ $direction === "output"&& $output_nature|in:$output_types
+ }}
+ {{:assign var="stock" from="quantites.%s.stock"|args:$id}}
+ {{:assign var="exterieur" from="quantites.%s.exterieur"|args:$id}}
+ {{:assign var="dispo" from="quantites.%s.dispo"|args:$id}}
+
+ {{$date|date_short}}
+ {{$col2}}
+ {{$col3}}
+ {{$amount}}
+ {{$stock}}
+ {{$exterieur}}
+ {{$dispo}}
+ {{$comment}}
+
+ {{:linkbutton
+ label="Dupliquer"
+ href="mouvements/dupliquer_mouvement.html?key=%s&direction=%s&prop=%s"|args:$key:$direction:$_GET.prop
+ shape="plus"
+ target="_dialog"}}
+ {{:linkbutton
+ label="Modifier"
+ href="mouvements/modifier_mouvement.html?key=%s&direction=%s"|args:$key:$direction
+ shape="edit"
+ target="_dialog"}}
+ {{:linkbutton
+ label="Supprimer"
+ href="mouvements/supprimer_mouvement.html?key=%s&direction=%s&prop=%s"|args:$key:$direction:$_GET.prop
+ shape="delete"
+ target="_dialog"}}
+
+
+ {{/if}}
+ {{/list}}
+
+{{else}}
+ {{#list
+ type="movement"
+ select="$$.date AS 'Date';
+ CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement';
+ CASE $$.direction WHEN 'input' THEN $$.input_nature WHEN 'output' THEN $$.output_nature END AS 'Opération';
+ $$.amount AS 'Quantité';
+ "" as 'Présent';
+ $$.comment AS 'Commentaire'"
+ equipment=$equipment_key
+ order=1
+ }}
+ {{:assign var="type_mvt" from="config.%s_nature.%s"|args:$direction:$col3}}
+
+ {{if $direction === "input" && $input_nature|in:$input_types ||
+ $direction === "output"&& $output_nature|in:$output_types
+ }}
+ {{:assign var="stock" from="quantites.%s.nonproprio"|args:$id}}
+
+ {{$date|date_short}}
+ {{$col2}}
+ {{$col3}}
+ {{$amount}}
+ {{$stock}}
+ {{$comment}}
+
+ {{:linkbutton
+ label="Dupliquer"
+ href="mouvements/dupliquer_mouvement.html?key=%s&direction=%s&prop=%s"|args:$key:$direction:$_GET.prop
+ shape="plus"
+ target="_dialog"}}
+ {{:linkbutton
+ label="Modifier"
+ href="mouvements/modifier_mouvement.html?key=%s&direction=%s"|args:$key:$direction
+ shape="edit"
+ target="_dialog"}}
+ {{:linkbutton
+ label="Supprimer"
+ href="mouvements/supprimer_mouvement.html?key=%s&direction=%s&prop=%s"|args:$key:$direction:$_GET.prop
+ shape="delete"
+ target="_dialog"}}
+
+
+ {{/if}}
+ {{/list}}
+{{/if}}
{{:admin_footer}}
diff --git a/index.html b/index.html
index 8616e35..799aa05 100644
--- a/index.html
+++ b/index.html
@@ -1,22 +1,37 @@
+{{* -*- brindille -*- *}}
+
{{:admin_header title="Gestion des matériels" custom_css=$custom_css current="module_equipment"}}
{{* barre de navigation *}}
-{{:include file="_nav.html" current="index"}}
+{{if $_GET.prop == null || $_GET.prop}}
+ {{:assign proprio="proprio"}}
+{{else}}
+ {{:assign proprio="nonproprio"}}
+{{/if}}
+
+{{#load type="category" count=true assign="result"}}{{/load}}
+{{:include file="_nav.html" current="inventaire" cat="%d"|args:$result.count subcurrent="%s"|args:$proprio}}
{{if $_GET.ok}}
- Modification effectuée
+ {{if $_GET.msg == "ajout" }}
+ Ajout effectué
+ {{elseif $_GET.msg == "modification" }}
+ Modification effectuée
+ {{else}}
+ {{$_GET.msg}}
+ {{/if}}
{{elseif $_GET.err}}
Modification refusée
{{/if}}
-{{#load type="category"}}
- {{:assign var="category_keys." value=$key}}
-{{/load}}
-
-{{if $category_keys|count == 0}}
+{{if $result.count == 0}}
Il n'y a aucune catégorie : vous devez en ajouter.
{{else}}
- {{:include file="./inventaire.html" print_cat_name=true}}
+ {{if $_GET.prop == null || $_GET.prop}}
+ {{:include file="./inventaire.html"}}
+ {{else}}
+ {{:include file="./inventaire_nonprop.html"}}
+ {{/if}}
{{/if}}
{{:admin_footer}}
diff --git a/inventaire.html b/inventaire.html
index 8014583..7d253e7 100644
--- a/inventaire.html
+++ b/inventaire.html
@@ -1,145 +1,109 @@
{{* -*- brindille -*- *}}
-{{* inventaire des entrées/sorties des matériels des catégories de la variable category_keys *}}
+{{*
+ inventaire des entrées/sorties des matériels permanents
+*}}
{{* Extraire et compiler les infos de la base *}}
-{{:include file="./_calcul_dispo.html" keep="cumul_mvt,category_keys,equipments"}}
+{{:include file="./_calcul_dispo.html" keep="categories,equipments"}}
-{{* Afficher les résultats *}}
-{{if $equipments === null}}
- Aucun matériel.
+{{* Sélecteur catégories *}}
+
+ Filtrer par catégorie
+
+
+
+
+
+
+
+{{* Vérifier s'il y a au moins un matériel propriété de l'asso *}}
+{{:assign mat_present=false}}
+{{#foreach from=$equipments key=key item=eqpmt}}
+ {{if $eqpmt|has_key:"stock"}}
+ {{:assign mat_present=true}}
+ {{:break}}
+ {{/if}}
+{{/foreach}}
+
+{{if $mat_present}}
+ {{#list
+ select="
+ $$.designation AS 'Matériel' ;
+ "" AS 'Catégorie' ;
+ "" AS 'Stock' ;
+ "" AS 'Sorti' ;
+ "" AS 'Dispo'
+ "
+ type="equipment"
+ order=1
+ }}
+ {{:assign var=eqpmt_key value=$key}}
+ {{:assign var=cat_key value=$category}}
+ {{:assign var=cat_name from=categories.%s|args:$cat_key}}
+
+ {{if $_GET.cat_key != null && $_GET.cat_key != $cat_key}}
+ {{:continue}}
+ {{/if}}
+
+ {{:assign var=stock from="equipments.%s.stock"|args:$eqpmt_key}}
+ {{:assign var=exterieur from="equipments.%s.exterieur"|args:$eqpmt_key}}
+ {{:assign dispo="%d-%d"|math:$stock:$exterieur}}
+
+ {{if $stock == null}}
+ {{:continue}}
+ {{/if}}
+
+
+ {{$designation}}
+ {{$cat_name}}
+ {{$stock}}
+ {{if $exterieur == null}}0{{else}}{{$exterieur}}{{/if}}
+ {{$dispo}}
+
+ {{if $exterieur > 0}}
+ {{:linkbutton
+ label="Retour"
+ href="mouvements/entrees/retour.html?key=%s"|args:$eqpmt_key
+ shape="history"
+ target="_dialog"}}
+ {{/if}}
+ {{if $dispo > 0}}
+ {{:linkbutton
+ label="Sortie"
+ shape="minus"
+ href="mouvements/sorties/stock_disponible.html?key=%s"|args:$eqpmt_key
+ target="_dialog"}}
+ {{/if}}
+ {{:linkbutton
+ label="Entrée"
+ shape="plus"
+ href="mouvements/entrees/repertorie.html?key=%s"|args:$eqpmt_key
+ target="_dialog"}}
+ {{:linkbutton
+ label="Mouvements"
+ href="historique.html?key=%s&prop=1"|args:$eqpmt_key
+ shape="table"}}
+ {{:linkbutton
+ label="Modifier"
+ href="modifier_materiel.html?key=%s&prop=1"|args:$eqpmt_key
+ shape="edit"
+ target="_dialog"}}
+
+
+ {{/list}}
{{else}}
-
- Matériels dont l'association est propriétaire
-
- {{* itérer sur les catégories *}}
- {{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}}
-
- {{* vérifier s'il y a des matériels dans cette catégorie *}}
- {{:assign present=false}}
- {{if $cat_elem|keys|has:"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}}
- {{if $present}}
- {{if $print_cat_name}}
- {{$cat_elem.name}}
- {{/if}}
-
-
-
-
- Désignation
- Stock
- Sortie
- Disponible
-
-
-
-
-
- {{* itérer sur les matériels de la catégorie *}}
- {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}}
- {{:assign keys=$eqpmt|keys}}
- {{if "stock"|in:$keys && $eqpmt.stock !== 0}}
- {{if "exterieur"|in:$keys}}
- {{:assign dispo="%d-%d"|math:$eqpmt.stock:$eqpmt.exterieur}}
- {{:assign exterieur=$eqpmt.exterieur}}
- {{else}}
- {{:assign dispo=$eqpmt.stock}}
- {{:assign exterieur=0}}
- {{/if}}
-
- {{$eqpmt.designation}}
- {{$eqpmt.stock}}
- {{$exterieur}}
- {{$dispo}}
-
- {{:linkbutton
- label="Historique des mouvements"
- href="%shistorique.html?key=%s&prop=1"|args:$module.url:$eqpmt_key
- shape="table"
- target="_dialog"}}
- {{:linkbutton
- label="Modifier"
- href="%smodifier_materiel.html?key=%s"|args:$module.url:$eqpmt_key
- shape="edit"
- target="_dialog"}}
-
-
- {{/if}}
- {{else}}
- Il n'y a aucun matériel dans cette catégorie.
- {{/foreach}}
-
-
- {{/if}}
- {{/foreach}}
-
- Matériels dont l'association n'est pas propriétaire
-
- {{* itérer sur les catégories *}}
- {{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}}
-
- {{* vérifier s'il y a des matériels dans cette catégorie *}}
- {{:assign present=false}}
- {{if $cat_elem|keys|has:"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}}
- {{if $present}}
-
- {{if $print_cat_name}}
- {{$cat_elem.name}}
- {{/if}}
-
-
-
-
- Désignation
- Quantité
-
-
-
-
-
- {{* itérer sur les matériels de la catégorie *}}
- {{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}}
-
- {{:assign keys=$eqpmt|keys}}
- {{if "nonproprio"|in:$keys && $eqpmt.nonproprio !== 0}}
- {{:assign dispo="%d-%d"|math:$eqpmt.stock:$eqpmt.exterieur}}
-
- {{$eqpmt.designation}}
- {{$eqpmt.nonproprio}}
-
- {{:linkbutton
- label="Historique des mouvements"
- href="%shistorique.html?key=%s"|args:$module.url:$eqpmt_key
- shape="table"
- target="_dialog"}}
- {{:linkbutton
- label="Modifier"
- href="%smodifier_materiel.html?key=%s"|args:$module.url:$eqpmt_key
- shape="edit"
- target="_dialog"}}
-
-
- {{/if}}
- {{else}}
- Il n'y a aucun matériel dans cette catégorie.
- {{/foreach}}
-
-
- {{/if}}
- {{/foreach}}
-
+ Aucun matériel.
{{/if}}
diff --git a/inventaire_nonprop.html b/inventaire_nonprop.html
new file mode 100644
index 0000000..391b243
--- /dev/null
+++ b/inventaire_nonprop.html
@@ -0,0 +1,96 @@
+{{* -*- brindille -*- *}}
+
+{{*
+ inventaire des entrées/sorties des matériels temporaires
+*}}
+
+{{* Extraire et compiler les infos de la base *}}
+{{:include file="./_calcul_dispo.html" keep="categories,equipments"}}
+
+{{* Sélecteur catégories *}}
+
+ Filtrer par catégorie
+
+
+
+
+
+
+
+{{* Vérifier s'il y a au moins un matériel non propriété de l'asso *}}
+{{:assign mat_present=false}}
+{{#foreach from=$equipments key=key item=eqpmt}}
+ {{if $eqpmt|has_key:"nonproprio"}}
+ {{:assign mat_present=true}}
+ {{:break}}
+ {{/if}}
+{{/foreach}}
+
+{{if $mat_present}}
+ {{#list
+ select="
+ $$.designation AS 'Matériel' ;
+ "" AS 'Catégorie' ;
+ "" AS 'Quantité'
+ "
+ type="equipment"
+ order=1
+ }}
+ {{:assign var=eqpmt_key value=$key}}
+ {{:assign var=cat_key value=$category}}
+ {{:assign var=cat_name from=categories.%s|args:$cat_key}}
+
+ {{if $_GET.cat_key != null && $_GET.cat_key != $cat_key}}
+ {{:continue}}
+ {{/if}}
+
+ {{:assign var=qte from="equipments.%s.nonproprio"|args:$eqpmt_key}}
+
+ {{if $qte == null}}
+ {{:continue}}
+ {{/if}}
+
+
+ {{$designation}}
+ {{$cat_name}}
+ {{$qte}}
+
+ {{if $qte > 0}}
+ {{:linkbutton
+ label="Retour"
+ href="mouvements/sorties/emprunte.html?key=%s"|args:$eqpmt_key
+ shape="history"
+ target="_dialog"}}
+ {{/if}}
+ {{:linkbutton
+ label="Entrée"
+ shape="plus"
+ href="mouvements/entrees/repertorie.html?key=%s"|args:$eqpmt_key
+ target="_dialog"}}
+ {{:linkbutton
+ label="Mouvements"
+ href="historique.html?key=%s&prop=0"|args:$eqpmt_key
+ shape="table"}}
+ {{:linkbutton
+ label="Modifier"
+ href="modifier_materiel.html?key=%s&prop=0"|args:$eqpmt_key
+ shape="edit"
+ target="_dialog"}}
+
+
+ {{/list}}
+{{else}}
+ Aucun matériel.
+{{/if}}
diff --git a/modifier_materiel.html b/modifier_materiel.html
index e81099d..e711a59 100644
--- a/modifier_materiel.html
+++ b/modifier_materiel.html
@@ -1,4 +1,10 @@
-{{:admin_header title="Modifier matériel" current="module_equipment"}}
+{{* -*- brindille -*- *}}
+
+{{*
+ Paramètres :
+ - key : clé du matériel à modifier
+ - prop : =1 si matériel propriété de l'association
+*}}
{{:assign equipment_key=$_GET.key|trim}}
{{#load key=$_GET.key assign="equipment"}}
@@ -22,7 +28,7 @@
{{#load key=$equipment_key}}
{{if $designation|trim|tolower != $_POST.designation|trim|tolower}}
{{* le nom change => vérifier l'existence d'un matériel du même nom *}}
- {{#load type="equipment" where="lower($$.designation) = :name" :name=$_POST.designation|trim|tolower}}
+ {{#load type="equipment" where="$$.designation = :name" :name=$_POST.designation|trim|tolower|ucfirst limit=1}}
{{:assign chgt_ok=false}}
{{/load}}
{{else}}
@@ -31,8 +37,8 @@
{{/load}}
{{else}}
- {{* catégorie ne change pas => vérifier le nom*}}
- {{#load type="equipment" where="lower($$.designation) = :name" :name=$_POST.designation|trim|tolower}}
+ {{* catégorie ne change pas => vérifier le nom *}}
+ {{#load type="equipment" where="$$.designation = :name" :name=$_POST.designation|trim|tolower|ucfirst limit=1}}
{{:assign chgt_ok=false}}
{{/load}}
{{/if}}
@@ -45,14 +51,14 @@
{{:save
key=$equipment_key
category=$category.key
- designation=$_POST.designation|trim
+ designation=$_POST.designation|trim|tolower|ucfirst
}}
- {{:redirect force="index.html?ok=1"}}
-
-{{else}}
- {{:form_errors}}
+ {{:redirect force="index.html?ok=1&msg=modification&prop=%s"|args:$_GET.prop}}
{{/form}}
+{{:admin_header title="Modifier matériel" current="module_equipment"}}
+{{:form_errors}}
+
{{* lister les catégories disponibles *}}
{{#load type="category" assign="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$category.key value=$category.name}}
diff --git a/mouvements/ajouter_entree.html b/mouvements/ajouter_entree.html
new file mode 100644
index 0000000..60836ae
--- /dev/null
+++ b/mouvements/ajouter_entree.html
@@ -0,0 +1,121 @@
+{{* -*- brindille -*- *}}
+
+{{* barre de navigation *}}
+{{if ! $dialog}}
+ {{:include file="../_nav.html" current="entrees"}}
+{{/if}}
+
+{{* récupérer la config des entrées/sorties *}}
+{{:include file="../_get_config.html" keep="config"}}
+
+{{* types d'entrées *}}
+{{#foreach from=$config.input_nature key="label" item="type"}}
+ {{if $type != 'retour'}}
+ {{:assign var='input_labels.' value="%s"|args:$label}}
+ {{/if}}
+{{/foreach}}
+
+{{* lister les catégories et les matériels disponibles *}}
+{{#load type="category" assign="category" order="$$.name"}}
+ {{*:assign nom_cat=$category.name*}}
+ {{:assign var="categories.%s"|args:$category.key value=$category.name}}
+{{/load}}
+
+{{* Traiter l'envoi du formulaire *}}
+{{#form on="save"}}
+
+ {{* vérifier la quantité saisie (UTILE ? : fait par la navigateur) *}}
+ {{if $_POST.quantite <= 0}}
+ {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.quantite}}
+ {{/if}}
+
+ {{:assign post_mat=$_POST.designation|trim|tolower|ucfirst}}
+
+ {{* vérifier l'existence d'un matériel de même nom *}}
+ {{#load type="equipment" where="$$.designation = :name COLLATE U_NOCASE" :name=$_POST.designation|trim limit=1}}}}
+ {{:assign equipment_key=$key}}
+ {{:assign var=nom_cat from="categories.%s"|args:$category}}
+ {{:assign present=true}}
+ {{/load}}
+ {{:assign var=post_cat from="categories.%s"|args:$_POST.category}}
+
+ {{if $present}}
+ {{* voir si le matériel existe dans une autre catégorie *}}
+ {{if $nom_cat != $post_cat}}
+ {{:error message="Le matériel « %s » est déjà présent dans la catégorie « %s » ..."|args:$post_mat:$nom_cat}}
+ {{/if}}
+ {{* utiliser la clé du matériel trouvé *}}
+
+ {{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=$_POST.category
+ designation=$post_mat
+ }}
+ {{/if}}
+
+ {{* 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
+ }}
+
+ {{:assign msg="Ajout de l'entrée « %s (%d) en date du %s » effectué"|args:$post_mat:$_POST.quantite:$_POST.date}}
+ {{:assign var=type_entree from="config.input_nature.%s"|args:$operation}}
+ {{if $type_entree == "temporaire"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+ {{:redirect force="../index.html?prop=%s&ok=1&msg=%s"|args:$prop:$msg}}
+{{/form}}
+
+{{:admin_header title="Entrée de matériel" current="module_equipment"}}
+{{:form_errors}}
+
+{{if $categories != null}}
+ {{* formulaire ajout matériel *}}
+
+{{else}}
+ Il n'y a aucune catégorie, il faut en créer au moins une
+{{/if}}
+{{:admin_footer}}
diff --git a/mouvements/dupliquer_mouvement.html b/mouvements/dupliquer_mouvement.html
new file mode 100644
index 0000000..0d75690
--- /dev/null
+++ b/mouvements/dupliquer_mouvement.html
@@ -0,0 +1,198 @@
+{{* -*- brindille -*- *}}
+
+{{*
+ Dupliquer un mouvement
+ paramètres :
+ - key : clé du mouvement à dupliquer
+ - direction du mouvement à dupliquer
+ - prop = 1 si matériel appartient à l'asso
+*}}
+
+{{if $_GET.direction == "input"}}
+ {{:assign msg_direction="entrée"}}
+{{else}}
+ {{:assign msg_direction="sortie"}}
+{{/if}}
+
+{{* récupérer les infos du mouvement à dupliquer *}}
+{{#load key=$_GET.key assign="mvt_new"}}
+{{else}}
+ {{:error message="Aucune %s avec la clé %s"|args:$msg_direction:$_GET.key}}
+{{/load}}
+
+{{* infos pour affichage *}}
+{{if $_GET.direction == "input"}}
+ {{:assign mvt_nature=$mvt_new.input_nature}}
+{{else}}
+ {{:assign mvt_nature=$mvt_new.output_nature}}
+{{/if}}
+{{:assign amount_init=$mvt_new.amount}}
+{{:assign date_init=$mvt_new.date|date_short}}
+{{:assign eqpmt_key=$mvt_new.equipment}}
+
+{{* récupérer les infos du matériel associé *}}
+{{#load key=$eqpmt_key assign="eqpmt"}}
+{{else}}
+ {{:error message="Aucun matériel avec la clé « %s »"|args:$eqpmt_key}}
+{{/load}}
+
+{{* récupérer la config des entrées/sorties *}}
+{{:include file="../_get_config.html" keep="config"}}
+
+{{* limiter les opérations possibles *}}
+{{if $_GET.direction == "input"}}
+ {{* types d'entrées *}}
+ {{#foreach from=$config.input_nature key="label" item="type"}}
+ {{if $_GET.prop && $type != "temporaire" ||
+ ! $_GET.prop && $type == "temporaire"
+ }}
+ {{:assign var="input_labels.%s"|args:$label value="%s"|args:$label}}
+ {{/if}}
+ {{if $label == $mvt_new.input_nature}}
+ {{:assign nature_defaut=$label}}
+ {{/if}}
+ {{/foreach}}
+{{else}}
+ {{* types de sorties *}}
+ {{#foreach from=$config.output_nature key="label" item="type"}}
+ {{if $_GET.prop && $type != "retour" ||
+ ! $_GET.prop && $type == "retour"
+ }}
+ {{:assign var="output_labels.%s"|args:$label value="%s"|args:$label}}
+ {{/if}}
+ {{if $label == $mvt_new.output_nature}}
+ {{:assign nature_defaut=$label}}
+ {{/if}}
+ {{/foreach}}
+{{/if}}
+
+{{*
+ -------------------- Traiter la saisie --------------------
+*}}
+{{#form on="save"}}
+ {{if $_POST.amount <= 0}}
+ {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}}
+ {{/if}}
+
+ {{* préparer le mouvement copié *}}
+ {{if $_GET.direction == "input"}}
+ {{:assign var="mvt_new.input_nature" value=$_POST.nature_operation}}
+ {{:assign var="type_mvt" from="config.input_nature.%s"|args:$mvt_new.input_nature}}
+ {{if $type_mvt == "temporaire"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+ {{else}}
+ {{:assign var="mvt_new.output_nature" value=$_POST.nature_operation}}
+ {{:assign var="type_mvt" from="config.output_nature.%s"|args:$mvt_new.output_nature}}
+ {{if $type_mvt == "retour"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+ {{/if}}
+
+ {{:assign var="mvt_new.amount" value=$_POST.amount}}
+ {{:assign var="mvt_new.date" value=$_POST.date|parse_date}}
+ {{:assign var="mvt_new.comment" value=$_POST.comment}}
+
+ {{*
+ lister les mouvements
+ - insérer le mvt copié à sa place par date croissante
+ *}}
+ {{:assign insere=false}}
+ {{#load
+ where="
+ $$.type = 'movement'
+ AND
+ $$.equipment = :eqpmt_key"
+ :eqpmt_key=$eqpmt_key
+ order="$$.date"
+ assign="movement"
+ }}
+ {{if! $insere}}
+ {{if
+ $_GET.direction == "input" && $date >= $mvt_new.date ||
+ $_GET.direction == "output" && $date > $mvt_new.date
+ }}
+ {{:assign var="movements_new." from=mvt_new}}
+ {{:assign insere=true}}
+ {{/if}}
+ {{/if}}
+ {{:assign var="movements_new." from=movement}}
+ {{/load}}
+ {{if ! $insere}}
+ {{:assign var="movements_new." from=mvt_new}}
+ {{/if}}
+
+ {{* Vérifier la cohérence des mouvements du matériel *}}
+ {{:include
+ file="./valider_modification.html"
+ keep="erreur"
+ movements=$movements_new
+ }}
+
+ {{if $erreur}}
+
+ Impossible d'enregistrer ce mouvement :
+ {{if $_GET.direction == "input"}}
+ « {{$mvt_new.input_nature}}
+ {{else}}
+ « {{$mvt_new.output_nature}}
+ {{/if}}
+ de {{$eqpmt.designation}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »
+
+ {{else}}
+ {{* vérification réussie : enregistrer le mouvement modifié *}}
+ {{:assign mvt_key=""|uuid}}
+ {{:save
+ key=$mvt_key
+ validate_schema="movement.schema.json"
+ type="movement"
+ direction=$_GET.direction
+ input_nature=$mvt_new.input_nature
+ output_nature=$mvt_new.output_nature
+ amount=$mvt_new.amount|intval
+ equipment=$eqpmt_key
+ date=$mvt_new.date
+ comment=$mvt_new.comment
+ }}
+ {{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=copie"|args:$eqpmt_key:$prop}}
+ {{/if}}
+{{/form}}
+
+{{:admin_header title="Dupliquer une %s"|args:$msg_direction current="module_equipment"}}
+{{:form_errors}}
+
+{{*
+ -------------------- Préparer la saisie --------------------
+*}}
+
+{{* récupérer les infos de la catégorie *}}
+{{#load key=$eqpmt.category assign="category"}}{{/load}}
+
+{{* formulaire de copie du mouvement *}}
+
+
+{{:admin_footer}}
diff --git a/mouvements/entrees/_temporaire.html b/mouvements/entrees/_temporaire.html
index 236b2b0..f8d9e80 100644
--- a/mouvements/entrees/_temporaire.html
+++ b/mouvements/entrees/_temporaire.html
@@ -1,12 +1,14 @@
- {{* déterminer la quantité des matériels sortis temporairement *}}
- {{#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:$cat_elem.name:$eqpmt_key
- value="%s (quantité : %d)"|args:$eqpmt.designation:$quantite
- }}
- {{/if}}
- {{/foreach}}
+{{* -*- brindille -*- *}}
+
+{{* déterminer la quantité des matériels sortis temporairement *}}
+{{#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:$cat_elem.name:$eqpmt_key
+ value="%s (quantité : %d)"|args:$eqpmt.designation:$quantite
+ }}
+ {{/if}}
{{/foreach}}
+{{/foreach}}
diff --git a/mouvements/entrees/delete_entree.html b/mouvements/entrees/delete_entree.html
deleted file mode 100644
index b098cae..0000000
--- a/mouvements/entrees/delete_entree.html
+++ /dev/null
@@ -1,85 +0,0 @@
-{{:admin_header title="Supprimer une entrée" current="module_equipment"}}
-
-{{* récupérer les infos du mouvement à supprimer et du matériel associé *}}
-{{#load key=$_GET.key assign="mvt_suppr"}}
-{{else}}
- {{:error message="Aucune entrée avec la clé « %s »"|args:$_GET.key}}
-{{/load}}
-
-{{:assign amount_suppr=$mvt_suppr.amount}}
-{{:assign date_suppr=$mvt_suppr.date|date_short}}
-{{:assign key_eqpmt_suppr=$mvt_suppr.equipment}}
-
-{{#load key=$key_eqpmt_suppr assign="eqpmt_suppr"}}
-{{else}}
- {{:error message="Aucun matériel avec la clé « %s »"|args:$key_eqpmt_suppr}}
-{{/load}}
-
-{{#form on="delete"}}
-
- {{* récupérer la config des entrées/sorties *}}
- {{:include file="../../_get_config.html" keep="config"}}
-
- {{* vérifier s'il est possible de supprimer l'entrée *}}
- {{:assign dispo=0}}
- {{:assign nonprop=0}}
- {{* parcourir la liste des mouvements du matériel *}}
-
- {{#load
- type="movement"
- where="$$.equipment = :key" :key=$key_eqpmt_suppr
- 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 $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 ? *}}
- {{if $dispo < 0 || $nonprop < 0}}
- {{:redirect force="./index.html?err=1&msg=suppression"}}
- {{/if}}
-
- {{/if}}
- {{/load}}
-
- {{* vérification réussie : supprimer l'entrée *}}
- {{:delete key=$_GET.key}}
- {{:assign var="msg" value="suppression"}}
-
- {{* voir s'il reste des mouvements pour le matériel concerné par le mouvement supprimé *}}
- {{#load type="movement" where="$$.equipment = :eqpmt_key" :eqpmt_key=$key_eqpmt_suppr}}
- {{else}}
- {{* supprimer le matériel *}}
- {{:delete key=$key_eqpmt_suppr}}
- {{:assign var="msg" value="%s - matériel"|args:$msg}}
- {{/load}}
-
- {{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}}
-{{/form}}
-
-{{:delete_form
- legend="Supprimer cette entrée ?"
- warning="Supprimer l'entrée « %s %s (%d) en date du %s » ?"|args:$mvt_suppr.input_nature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr
- info="S'il ne reste aucun mouvement pour ce matériel, le matériel sera supprimé"
-}}
-
-{{:form_errors}}
-
-{{:admin_footer}}
diff --git a/mouvements/entrees/index.html b/mouvements/entrees/index.html
deleted file mode 100644
index a824cf3..0000000
--- a/mouvements/entrees/index.html
+++ /dev/null
@@ -1,103 +0,0 @@
-{{:admin_header title="Gestion des matériels" current="module_equipment"}}
-
-{{* barre de navigation *}}
-{{:include file="../../_nav.html" current="entrees"}}
-
-{{if $_GET.ok}}
- {{if $_GET.msg|match:"suppression"}}
- {{:assign msg="Entrée supprimée"}}
- {{if $_GET.msg|match:"matériel"}}
- {{:assign var="msg" value="%s - Matériel supprimé"|args:$msg}}
- {{/if}}
- {{elseif $_GET.msg == "entrée"}}
- {{:assign msg="Entrée enregistrée"}}
- {{elseif $_GET.msg == "modification"}}
- {{:assign msg="Entrée modifiée"}}
- {{/if}}
- {{$msg}}
-{{elseif $_GET.err}}
- {{if $_GET.msg == "suppression"}}
- Impossible de supprimer l'entrée
- {{/if}}
-{{/if}}
-
-{{* vérifier s'il existe des catégories *}}
-{{#load type="category"}}
- {{:assign categories_exist=true}}
-{{else}}
- Il n'y a aucune catégorie : vous devez en ajouter.
-{{/load}}
-
-{{if $categories_exist}}
-
- {{#load type="equipment"}}
- {{:assign disabled=false}}
- {{else}}
- {{:assign disabled=true}}
- {{/load}}
-
- {{* vérifier s'il y a des sorties temporaires *}}
- {{if ! $disabled}}
- {{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}}
- {{:include file="_temporaire.html" keep="temporaire"}}
- {{/if}}
-
-
-
- {{* lister les entrées *}}
-
- Liste des entrées
-
- {{#list
- select="
- $$.date AS 'Date' ;
- $$.input_nature AS 'Type' ;
- $$.amount AS 'Nombre' ;
- (SELECT $$.designation
- FROM @TABLE AS b
- WHERE b.key = @TABLE.$$.equipment) AS 'Matériel' ;
- $$.comment AS 'Remarques'"
- type="movement"
- direction="input"
- order=1}}
-
- {{:assign var='mvt_key' value=$key}}
-
- {{$date|date_short}}
- {{$input_nature}}
- {{$amount}}
- {{$col4}}
- {{$comment}}
-
- {{:linkbutton
- label="Supprimer"
- href="delete_entree.html?key=%s"|args:$mvt_key
- shape="delete"
- target="_dialog"}}
- {{:linkbutton
- label="Modifier"
- href="../modifier_mouvement.html?key=%s&direction=input"|args:$mvt_key
- shape="edit"
- target="_dialog"}}
-
-
- {{else}}
- Il n'y a aucune entrée.
- {{/list}}
-
-{{/if}}
-
-{{:admin_footer}}
diff --git a/mouvements/entrees/non_repertorie.html b/mouvements/entrees/non_repertorie.html
deleted file mode 100644
index 6ca311f..0000000
--- a/mouvements/entrees/non_repertorie.html
+++ /dev/null
@@ -1,99 +0,0 @@
-{{:admin_header title="Entrée de matériel" current="module_equipment"}}
-
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include file="../../_nav.html" current="entrees"}}
-{{/if}}
-
-{{* récupérer la config des entrées/sorties *}}
-{{:include file="../../_get_config.html" keep="config"}}
-
-{{* types d'entrées *}}
-{{#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}}
-
- {{* 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_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}}
-
-{{* lister les catégories disponibles *}}
-{{#load type="category" assign="category" order="$$.name"}}
-{{:assign var="categories.%s"|args:$category.key value=$category.name}}
-{{/load}}
-
-{{if $categories != null}}
- {{* formulaire d'ajout de matériel *}}
-
-{{else}}
- Il n'y a aucune catégorie, il faut en créer au moins une
-{{/if}}
-{{:admin_footer}}
diff --git a/mouvements/entrees/repertorie.html b/mouvements/entrees/repertorie.html
index 484d5cb..9733fdf 100644
--- a/mouvements/entrees/repertorie.html
+++ b/mouvements/entrees/repertorie.html
@@ -1,4 +1,10 @@
-{{:admin_header title="Entrée de matériel" current="module_equipment"}}
+{{* -*- brindille -*- *}}
+
+{{*
+ Ajouter une entrée de matériel
+ paramètres :
+ - key : clé du matériel à ajouter
+*}}
{{* barre de navigation *}}
{{if ! $dialog}}
@@ -15,16 +21,23 @@
{{/if}}
{{/foreach}}
+{{* récupérer les informations du matériel et de sa catégorie *}}
+{{#load key=$_GET.key assign="equipment"}}
+{{/load}}
+{{#load where="key = :key" :key=$equipment.category assign="category"}}
+{{/load}}
+
{{* 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}}
+ {{* vérifier la quantité saisie *}}
+ {{if $_POST.quantite <= 0}}
+ {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.quantite}}
+ {{/if}}
{{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}}
- {{:assign var="operation" from="input_labels.%d|args:$_POST.type_operation}}
+ {{:assign var="operation" from="input_labels.%d|args:$_POST.nature_operation}}
{{:save
key=$mvt_key
@@ -37,47 +50,38 @@
date=$_POST.date|parse_date
comment=$_POST.remarques|trim
}}
-
- {{:redirect force="index.html?ok=1&msg=entrée"}}
-{{else}}
- {{:form_errors}}
+ {{:assign var=type_entree from="config.input_nature.%s"|args:$operation}}
+ {{if $type_entree == "temporaire"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+ {{:redirect force="../../index.html?ok=1&msg=entrée&prop=%s"|args:$prop}}
{{/form}}
-{{* lister les catégories et matériels associés *}}
-{{#load type="category" assign="category" order="$$.name"}}
- {{:assign nom_cat=$category.name}}
- {{#load type="equipment" where="$$.category = :key" :key=$category.key assign="equipment"}}
- {{:assign var="equipments.%s.%s"|args:$nom_cat:$equipment.key value=$equipment.designation}}
- {{/load}}
-{{/load}}
+{{:admin_header title="Entrée de matériel" current="module_equipment"}}
+{{:form_errors}}
-{{* Vérifier s'il y a au moins un matériel enregistré *}}
-{{if $equipments != null}}
-
- {{* formulaire d'entrée de matériel *}}
-
-
{{:admin_footer}}
diff --git a/mouvements/entrees/retour.html b/mouvements/entrees/retour.html
index d0f92e4..d42de25 100644
--- a/mouvements/entrees/retour.html
+++ b/mouvements/entrees/retour.html
@@ -1,4 +1,9 @@
-{{:admin_header title="Entrée de matériel" current="module_equipment"}}
+{{* -*- brindille -*- *}}
+
+{{*
+ paramètres :
+ - key : clé du matériel qui revient
+*}}
{{* barre de navigation *}}
{{if ! $dialog}}
@@ -18,20 +23,19 @@
{{* 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 type="equipment" key=$_GET.key assign="equipment"}}
{{:assign designation=$equipment.designation}}
- {{:assign var="categories." value=$equipment.category}}
{{/load}}
{{* Extraire et compiler les infos de la base *}}
{{:include
file="../../_calcul_dispo.html"
- keep="cumul_mvt"
+ keep="equipments"
date=$_POST.date|parse_date
}}
- {{* déterminer la quantité sortie temporairement de ce matriel à la date donnée *}}
- {{:assign var=sorti from="cumul_mvt.%s.eqpmt.%s.exterieur"|args:$equipment.category:$_POST.equipment}}
+ {{* déterminer la quantité sortie temporairement de ce matériel à la date donnée *}}
+ {{:assign var=sorti from="equipments.%s.exterieur"|args:$_GET.key}}
{{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}}
@@ -53,47 +57,63 @@
comment=$_POST.remarques|trim
}}
- {{:redirect force="index.html?ok=1&msg=entrée"}}
-{{else}}
- {{:form_errors}}
+ {{:redirect force="../../historique.html?ok=1&key=%s&prop=1&msg=retour"|args:$_GET.key}}
{{/form}}
+{{:admin_header title="Retour de matériel" current="module_equipment"}}
+{{:form_errors}}
+
{{* Extraire et compiler les infos de la base *}}
-{{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}}
+{{:include file="../../_calcul_dispo.html" keep="categories, equipments"}}
+{{:assign var=sorti from="equipments.%s.exterieur"|args:$_GET.key}}
-{{if $cumul_mvt !== null}}
+{{if $sorti > 0}}
- {{* déterminer la quantité des matériels sortis temporairement *}}
- {{:include file="_temporaire.html" keep="temporaire"}}
+ {{* déterminer le matériel concerné par le mouvement *}}
+ {{#load key=$_GET.key assign="equipment"}}
+ {{/load}}
+ {{:assign var=cat_name from=categories.%s|args:$equipment.category}}
- {{if $temporaire != null}}
-
- {{* formulaire d'entrée de matériel *}}
-
-
- Ajouter une entrée pour un retour de matériel
-
- {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels}}
+ {{* formulaire d'entrée de matériel *}}
+
+
+
+ Ajouter un retour de matériel
+
+ {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels|sort}}
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
- {{:input type="number" name="quantite" label="Quantité" required=true default=1}}
-
-
-
- Matériel
-
- {{:input type="select_groups" name="equipment" label="Matériel" required=true options=$temporaire}}
+ {{:input type="number" name="quantite" label="Quantité" min=1 required=true default=$sorti max=$sorti}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false}}
-
-
- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
-
-
- {{else}}
- Il n'y a aucun matériel sorti temporairement
- {{/if}}
+
+
+ {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
+
+
{{else}}
Il n'y a aucun matériel
{{/if}}
+
+
{{:admin_footer}}
diff --git a/mouvements/modifier_mouvement.html b/mouvements/modifier_mouvement.html
index 3a8a409..be6187a 100644
--- a/mouvements/modifier_mouvement.html
+++ b/mouvements/modifier_mouvement.html
@@ -1,56 +1,57 @@
{{* -*- brindille -*- *}}
+{{*
+ Modifier un mouvement
+ paramètres :
+ - key : clé du mouvement à modifier
+ - direction : du mouvement à modifier
+*}}
+
{{if $_GET.direction == "input"}}
{{:assign msg_direction="entrée"}}
{{else}}
{{:assign msg_direction="sortie"}}
{{/if}}
-{{:admin_header title="Modifier une %s"|args:$msg_direction current="module_equipment"}}
-
-{{:assign direction_mvt=$_GET.direction}}
-{{:assign key_mvt=$_GET.key}}
{{* récupérer les infos du mouvement à modifier *}}
-{{#load key=$key_mvt assign="mvt_modif"}}
+{{#load key=$_GET.key assign="mvt_new"}}
{{else}}
- {{:error message="Aucune %s avec la clé %s"|args:$msg_direction:$key_mvt}}
+ {{:error message="Aucune %s avec la clé %s"|args:$msg_direction:$_GET.key}}
{{/load}}
-{{if $direction_mvt == "input"}}
- {{:assign input_init=$mvt_modif.input_nature}}
- {{:assign url="entrees/index.html"}}
+{{* infos pour affichage *}}
+{{if $_GET.direction == "input"}}
+ {{:assign mvt_nature=$mvt_new.input_nature}}
{{else}}
- {{:assign output_init=$mvt_modif.output_nature}}
- {{:assign url="sorties/index.html"}}
+ {{:assign mvt_nature=$mvt_new.output_nature}}
{{/if}}
-
-{{:assign amount_init=$mvt_modif.amount}}
-{{:assign date_init=$mvt_modif.date|date_short}}
-{{:assign key_eqpmt_init=$mvt_modif.equipment}}
+{{:assign amount_init=$mvt_new.amount}}
+{{:assign date_init=$mvt_new.date|date_short}}
+{{:assign eqpmt_key=$mvt_new.equipment}}
{{* récupérer les infos du matériel associé *}}
-{{#load key=$key_eqpmt_init assign="eqpmt_init"}}
+{{#load key=$eqpmt_key assign="eqpmt"}}
{{else}}
- {{:error message="Aucun matériel avec la clé « %s »"|args:$key_eqpmt_init}}
+ {{:error message="Aucun matériel avec la clé « %s »"|args:$eqpmt_key}}
{{/load}}
{{* récupérer la config des entrées/sorties *}}
{{:include file="../_get_config.html" keep="config"}}
-{{if $direction_mvt == "input"}}
+{{if $_GET.direction == "input"}}
{{* types d'entrées *}}
{{#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 $label == $mvt_new.input_nature}}
+ {{:assign nature_defaut=$label}}
{{/if}}
{{/foreach}}
{{else}}
{{* types de sorties *}}
{{#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 $label == $mvt_new.output_nature}}
+ {{:assign nature_defaut=$label}}
{{/if}}
{{/foreach}}
{{/if}}
@@ -58,137 +59,131 @@
{{*
-------------------- Traiter la saisie --------------------
*}}
-{{#form on="change"}}
- {{* préparer le mouvement modifié *}}
- {{if $direction_mvt == "input"}}
- {{:assign var="mvt_modif.input_nature" from="input_labels.%s"|args:$_POST.type_operation}}
- {{else}}
- {{:assign var="mvt_modif.output_nature" from="output_labels.%s"|args:$_POST.type_operation}}
+{{#form on="save"}}
+ {{if $_POST.amount <= 0}}
+ {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}}
{{/if}}
- {{:assign var="mvt_modif.amount" value=$_POST.amount}}
- {{:assign var="mvt_modif.equipment" value=$_POST.equipment}}
- {{:assign var="mvt_modif.date" value=$_POST.date|parse_date}}
- {{:assign var="mvt_modif.comment" value=$_POST.comment}}
+
+ {{* préparer le mouvement modifié *}}
+ {{if $_GET.direction == "input"}}
+ {{:assign var="mvt_new.input_nature" value=$_POST.nature_operation}}
+ {{:assign var="type_mvt" from="config.input_nature.%s"|args:$mvt_new.input_nature}}
+ {{if $type_mvt == "temporaire"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+ {{else}}
+ {{:assign var="mvt_new.output_nature" value=$_POST.nature_operation}}
+ {{:assign var="type_mvt" from="config.output_nature.%s"|args:$mvt_new.output_nature}}
+ {{if $type_mvt == "retour"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+ {{/if}}
+
+ {{:assign var="mvt_new.amount" value=$_POST.amount}}
+ {{:assign var="mvt_new.date" value=$_POST.date|parse_date}}
+ {{:assign var="mvt_new.comment" value=$_POST.comment}}
{{*
- lister les mouvements et remplacer le mouvement sélectionné par sa version modifiée
- en l'insérant à sa place par date croissante
+ lister les mouvements
+ - ignorer le mouvement à modifier
+ - insérer le mvt modifié à sa place par date croissante
*}}
{{:assign insere=false}}
{{#load
where="
$$.type = 'movement'
AND
- ($$.equipment = :old_eqpmt_key OR $$.equipment = :new_eqpmt_key)"
- :old_eqpmt_key=$key_eqpmt_init
- :new_eqpmt_key=$_POST.equipment
+ $$.equipment = :eqpmt_key"
+ :eqpmt_key=$eqpmt_key
order="$$.date"
assign="movement"
}}
- {{if $key != $key_mvt}}
- {{if $direction_mvt == "input" && ! $insere && $date >= $mvt_modif.date}}
- {{:assign var="movements_modif." from=mvt_modif}}
- {{:assign insere=true}}
- {{elseif $direction_mvt == "output" && ! $insere && $date > $mvt_modif.date}}
- {{:assign var="movements_modif." from=mvt_modif}}
- {{:assign insere=true}}
+ {{if $key != $_GET.key}}
+ {{if! $insere}}
+ {{if
+ $_GET.direction == "input" && $date >= $mvt_new.date ||
+ $_GET.direction == "output" && $date > $mvt_new.date
+ }}
+ {{:assign var="movements_new." from=mvt_new}}
+ {{:assign insere=true}}
+ {{/if}}
{{/if}}
- {{:assign var="movements_modif." from=movement}}
+ {{:assign var="movements_new." from=movement}}
{{/if}}
{{/load}}
{{if ! $insere}}
- {{:assign var="movements_modif." from=mvt_modif}}
+ {{:assign var="movements_new." from=mvt_new}}
{{/if}}
- {{* Vérifier la cohérence des opérations de l'ancien matériel *}}
+ {{* Vérifier la cohérence des mouvements du matériel *}}
{{:include
file="./valider_modification.html"
keep="erreur"
- movements=$movements_modif
- eqpmt_key=$key_eqpmt_init
+ movements=$movements_new
}}
- {{* Si le matériel a changé, vérifier la cohérence des opérations du nouveau matériel *}}
- {{if ! $erreur && $key_eqpmt_init != $_POST.equipment}}
- {{:include
- file="./valider_modification.html"
- keep="erreur"
- movements=$movements_modif
- eqpmt_key=$_POST.equipment
- }}
- {{/if}}
-
- {{#load key=$mvt_modif.equipment assign="eqpmt"}}{{/load}}
{{if $erreur}}
Modification demandée impossible :
- {{if $direction_mvt == "input"}}
- « {{$input_init}} de {{$eqpmt_init.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers
- « {{$mvt_modif.input_nature}} de {{$eqpmt.designation}} (qté : {{$mvt_modif.amount}}) à la date du {{$mvt_modif.date|date_short}} »
- {{else}}
- « {{$output_init}} de {{$eqpmt_init.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers
- « {{$mvt_modif.output_nature}} de {{$eqpmt.designation}} (qté : {{$mvt_modif.amount}}) à la date du {{$mvt_modif.date|date_short}} »
- {{/if}}
+ « {{$mvt_nature}} de {{$eqpmt.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers
+ {{if $_GET.direction == "input"}}
+ « {{$mvt_new.input_nature}}
+ {{else}}
+ « {{$mvt_new.output_nature}}
+ {{/if}}
+ de {{$eqpmt.designation}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »
{{else}}
- {{* vérification réussie : modifier le mouvement *}}
+ {{* vérification réussie : enregistrer le mouvement modifié *}}
{{:save
- key=$key_mvt
- validate_schema="./movement.schema.json"
+ key=$_GET.key
+ validate_schema="movement.schema.json"
type="movement"
- direction=$direction_mvt
- input_nature=$mvt_modif.input_nature
- output_nature=$mvt_modif.output_nature
- amount=$mvt_modif.amount|intval
- equipment=$mvt_modif.equipment
- date=$mvt_modif.date
- comment=$mvt_modif.comment
+ direction=$_GET.direction
+ input_nature=$mvt_new.input_nature
+ output_nature=$mvt_new.output_nature
+ amount=$mvt_new.amount|intval
+ equipment=$eqpmt_key
+ date=$mvt_new.date
+ comment=$mvt_new.comment
}}
- {{:redirect force="%s?ok=1&msg=modification"|args:$url}}
+ {{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=modification"|args:$eqpmt_key:$prop}}
{{/if}}
-
{{/form}}
+{{:admin_header title="Modifier une %s"|args:$msg_direction current="module_equipment"}}
+{{:form_errors}}
+
{{*
-------------------- Préparer la saisie --------------------
*}}
-{{* lister les catégories et matériels associés *}}
-{{#load type="category" assign="category" order="$$.name"}}
- {{:assign nom_cat=$category.name}}
- {{#load type="equipment" where="$$.category = :key" :key=$category.key assign="equipment"}}
- {{:assign var="equipments.%s.%s"|args:$nom_cat:$equipment.key value=$equipment.designation}}
- {{/load}}
-{{/load}}
+{{* récupérer les infos de la catégorie *}}
+{{#load key=$eqpmt.category assign="category"}}{{/load}}
{{* formulaire de modification du mouvement *}}
-
-
- {{if $direction_mvt == "input"}}
- Modifier l'entrée « {{$input_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} »
+
+ Modifier « {{$mvt_nature}} {{$eqpmt.designation}} (Catégorie : {{$category.name}}) »
+ {{if $_GET.direction == "input"}}
- {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels default=$type_defaut}}
+ {{:input type="select" name="nature_operation" label="Type" required=true options=$input_labels|sort default=$nature_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=$output_labels default=$type_defaut}}
+ {{:input type="select" name="nature_operation" label="Type" required=true options=$output_labels|sort default=$nature_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}}
+ {{:input type="date" name="date" label="Date" required=true default=$mvt_new.date}}
+ {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_new.amount}}
+ {{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false default=$mvt_new.comment}}
-
- Matériel
-
- {{:input type="select_groups" name="equipment" label="Matériel" required=true options=$equipments default=$key_eqpmt_init}}
- {{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false default=$mvt_modif.comment}}
-
-
-
- {{:button type="submit" name="change" label="Enregistrer" shape="right" class="main"}}
+ {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
diff --git a/mouvements/sorties/_temporaire.html b/mouvements/sorties/_temporaire.html
index 51bf870..9732a2e 100644
--- a/mouvements/sorties/_temporaire.html
+++ b/mouvements/sorties/_temporaire.html
@@ -1,3 +1,5 @@
+{{* -*- brindille -*- *}}
+
{{* calculer les quantité de matériels dont l'asso n'est pas propriétaire *}}
{{#foreach from=$cumul_mvt key="cat_key" item="cat_elem"}}
{{#foreach from=$cat_elem.eqpmt key="eqpmt_key" item="eqpmt"}}
diff --git a/mouvements/sorties/delete_sortie.html b/mouvements/sorties/delete_sortie.html
deleted file mode 100644
index 37e316a..0000000
--- a/mouvements/sorties/delete_sortie.html
+++ /dev/null
@@ -1,87 +0,0 @@
-{{:admin_header title="Supprimer une sortie" current="module_equipment"}}
-
-{{* récupérer les infos du mouvement à supprimer et du matériel associé *}}
-{{#load key=$_GET.key assign="mvt_suppr"}}
-{{else}}
- {{:error message="Aucune sortie avec la clé « %s »"|args:$_GET.key}}
-{{/load}}
-
-{{:assign amount_suppr=$mvt_suppr.amount}}
-{{:assign date_suppr=$mvt_suppr.date|date_short}}
-{{:assign key_eqpmt_suppr=$mvt_suppr.equipment}}
-
-{{#load key=$key_eqpmt_suppr assign="eqpmt_suppr"}}
-{{else}}
- {{:error message="Aucun matériel avec la clé « %s »"|args:$key_eqpmt_suppr}}
-{{/load}}
-
-{{#form on="delete"}}
-
- {{* récupérer la config des entrées/sorties *}}
- {{:include file="../../_get_config.html" keep="config"}}
-
- {{* déterminer s'il s'agit d'une sortie temporaire *}}
- {{:assign temporaire=false}}
- {{: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}}
- {{:assign exterieur=0}}
- {{#load
- type="movement"
- where="$$.equipment = :key" :key=$key_eqpmt_suppr
- 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 $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}}
-
- {{* vérification réussie : supprimer la sortie *}}
- {{:delete key=$_GET.key}}
- {{:assign var="msg" value="suppression"}}
-
- {{* voir s'il reste des mouvements pour le matériel concerné par le mouvement supprimé *}}
- {{#load type="movement" where="$$.equipment = :eqpmt_key" :eqpmt_key=$key_eqpmt_suppr}}
- {{else}}
- {{* supprimer le matériel *}}
- {{:delete key=$key_eqpmt_suppr}}
- {{:assign var="msg" value="%s - matériel"|args:$msg}}
- {{/load}}
-
- {{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}}
-{{/form}}
-
-{{:delete_form
- legend="Supprimer cette sortie ?"
- warning="Supprimer la sortie « %s %s (%d) en date du %s » ?"|args:$mvt_suppr.output_nature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr
- info="S'il ne reste aucun mouvement pour ce matériel, le matériel sera supprimé"
-}}
-
-{{:form_errors}}
-
-{{:admin_footer}}
diff --git a/mouvements/sorties/emprunte.html b/mouvements/sorties/emprunte.html
index f574b23..e499426 100644
--- a/mouvements/sorties/emprunte.html
+++ b/mouvements/sorties/emprunte.html
@@ -1,6 +1,9 @@
{{* -*- brindille -*- *}}
-{{:admin_header title="Sortie de matériel" current="module_equipment"}}
+{{*
+ paramètres :
+ - key : clé du matériel à rendre
+*}}
{{if ! $dialog}}
{{* barre de navigation *}}
@@ -20,9 +23,7 @@
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{* récupérer les infos du matériel *}}
- {{#load type="equipment" key=$_POST.equipment assign="equipment"}}
- {{:assign designation=$equipment.designation}}
- {{:assign var="category_keys." value=$equipment.category}}
+ {{#load type="equipment" key=$_GET.key assign="equipment"}}
{{/load}}
{{:assign stock=0}}
@@ -31,26 +32,15 @@
{{:assign insere=false}}
{{* lister tous les mouvements du matériel *}}
- {{#load type="movement" where="$$.equipment = '%s'"|args:$_POST.equipment assign="mvt" order="$$.date ASC"}}
+ {{#load type="movement" where="$$.equipment = '%s'"|args:$_GET.key assign="mvt" order="$$.date ASC"}}
{{* traiter le nouveau mouvement *}}
{{if ! $insere && $mvt.date > $_POST.date|parse_date}}
- {{:assign var="operation" from="output_labels.%s|args:$_POST.type_operation}}
- {{:assign var="type_mvt" from="config.output_nature.%s"|args:$operation}}
- {{:assign dispo_old=$nonproprio}}
-
- {{if $type_mvt == 'définitif'}}
- {{:assign stock="%d-%d"|math:$stock:$_POST.quantite}}
- {{elseif $type_mvt == 'temporaire'}}
- {{:assign exterieur="%d+%d"|math:$exterieur:$_POST.quantite}}
- {{elseif $type_mvt == 'retour'}}
- {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.quantite}}
- {{/if}}
-
{{:assign insere=true}}
- {{:assign dispo="%d-%d"|math:$stock:$exterieur}}
+ {{:assign dispo_old=$nonproprio}}
+ {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.quantite}}
- {{if $dispo < 0 || $stock < 0 || $exterieur < 0 || $nonproprio < 0}}
+ {{if $nonproprio < 0}}
{{:assign date_err=$_POST.date|date:"d/m/Y"}}
{{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.quantite:$dispo_old:$date_err}}
{{/if}}
@@ -79,14 +69,22 @@
{{/if}}
{{:assign dispo="%d-%d"|math:$stock:$exterieur}}
+
{{if $dispo < 0 || $stock < 0 || $exterieur < 0 || $nonproprio < 0}}
{{:assign date_err=$mvt.date|date:"d/m/Y"}}
- {{:error message="Erreur : la quantité indiquée (%s) est incompatible avec la sortie « %s : %s » à la date du %s"|args:$_POST.quantite:$designation:$mvt.amount:$date_err}}
+ {{:error message="Erreur : la quantité indiquée (%s) est incompatible avec la sortie de %s unités à la date du %s"|args:$_POST.quantite:$mvt.amount:$date_err}}
{{/if}}
{{/load}}
+ {{if ! $insere}}
+ {{:assign dispo_old=$nonproprio}}
+ {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.quantite}}
+ {{if $nonproprio < 0}}
+ {{:assign date_err=$_POST.date|date:"d/m/Y"}}
+ {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.quantite:$dispo_old:$date_err}}
+ {{/if}}
+ {{/if}}
{{* Enregistrer le mouvement *}}
-
{{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="output_labels.%d|args:$_POST.type_operation}}
{{:save
@@ -100,34 +98,37 @@
date=$_POST.date|parse_date
comment=$_POST.remarques|trim
}}
- {{:redirect force="index.html?ok=1&msg=sortie"}}
-{{else}}
- {{:form_errors}}
+ {{:redirect force="../../historique.html?ok=1&key=%s&prop=0&msg=sortie"|args:$_GET.key}}
{{/form}}
+{{:admin_header title="Sortie de matériel" current="module_equipment"}}
+{{:form_errors}}
+
{{* Extraire et compiler les infos de la base *}}
-{{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}}
+{{:include file="../../_calcul_dispo.html" keep="categories,equipments"}}
+{{:assign var=present from="equipments.%s.nonproprio"|args:$_GET.key}}
-{{if $cumul_mvt !== null}}
- {{* calculer les quantité de matériels dont l'asso n'est pas propriétaire *}}
- {{:include file="_temporaire.html" keep="temporaire"}}
+{{if $present > 0}}
+ {{* déterminer le matériel concerné par le mouvement *}}
+ {{#load key=$_GET.key assign="equipment"}}{{/load}}
+ {{:assign var=cat_name from=categories.%s|args:$equipment.category}}
- {{if $temporaire != null}}
{{* formulaire de sortie de matériel *}}
+
Ajouter une sortie d'un matériel présent temporairement
- {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels}}
+ {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels|sort}}
{{: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}}
-
-
-
- Matériel
- La quantité indiquée est celle à la date du jour
-
- {{:input type="select_groups" name="equipment" label="Matériel" required=true options=$temporaire onchange="fixerValeurMax('f_equipment', 'f_quantite')"}}
+ {{:input type="number" name="quantite" label="Quantité" required=true default=$present min=1 max=$present}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
@@ -135,10 +136,6 @@
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
- {{else}}
- {{:assign date_err=$now|date:'d/m/Y'}}
- Il n'y a aucun matériel présent temporairement à la date du {{$date_err}}
- {{/if}}
{{else}}
Il n'y a aucun matériel en stock
{{/if}}
@@ -146,14 +143,16 @@
{{:admin_footer}}
diff --git a/mouvements/sorties/index.html b/mouvements/sorties/index.html
deleted file mode 100644
index 513dfc1..0000000
--- a/mouvements/sorties/index.html
+++ /dev/null
@@ -1,101 +0,0 @@
-{{:admin_header title="Gestion des matériels" current="module_equipment"}}
-
-{{* barre de navigation *}}
-{{:include file="../../_nav.html" current="sorties"}}
-
-{{if $_GET.ok}}
- {{if $_GET.msg|match:"suppression"}}
- {{:assign msg="Sortie supprimée"}}
- {{if $_GET.msg|match:"matériel"}}
- {{:assign var="msg" value="%s - Matériel supprimé"|args:$msg}}
- {{/if}}
- {{elseif $_GET.msg == "sortie"}}
- {{:assign msg="Sortie enregistrée"}}
- {{elseif $_GET.msg == "modification"}}
- {{:assign msg="Sortie modifiée"}}
- {{/if}}
- {{$msg}}
-{{elseif $_GET.err}}
- {{if $_GET.msg == "suppression"}}
- Impossible de supprimer la sortie
- {{/if}}
-{{/if}}
-
-{{* vérifier s'il existe des catégories *}}
-{{#load type="category"}}
- {{:assign categories_exist=true}}
-{{else}}
- Il n'y a aucune catégorie : vous devez en ajouter.
-{{/load}}
-
-{{if $categories_exist}}
-
- {{* vérifier s'il y a eu des entrées de matériel *}}
- {{#load type="equipment"}}
- {{:assign disabled=false}}
- {{else}}
- {{:assign disabled=true}}
- {{/load}}
-
- {{* vérifier s'il y a des entrées temporaires *}}
- {{if ! $disabled}}
- {{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}}
- {{:include file="_temporaire.html" keep="temporaire"}}
-
-
-
- Ajouter une sortie
-
- {{:linkbutton label="Matériel en stock disponible" shape="plus" href="stock_disponible.html" target="_dialog"}}
- {{if $temporaire != null}}
- {{:linkbutton label="Matériel emprunté" shape="plus" href="emprunte.html" target="_dialog"}}
- {{/if}}
-
-
-
- {{/if}}
-
- {{* lister les sorties *}}
-
- Liste des sorties
-
- {{#list
- select="
- $$.date AS 'Date' ;
- $$.output_nature AS 'Type' ;
- $$.amount AS 'Nombre' ;
- (SELECT $$.designation
- FROM @TABLE AS b
- WHERE b.key = @TABLE.$$.equipment) AS 'Matériel' ;
- $$.comment AS 'Remarques'"
- type="movement"
- direction="output"
- order=1}}
-
- {{:assign var='mvt_key' value=$key}}
-
- {{$date|date_short}}
- {{$output_nature}}
- {{$amount}}
- {{$col4}}
- {{$comment}}
-
- {{:linkbutton
- label="Supprimer"
- href="delete_sortie.html?key=%s"|args:$mvt_key
- shape="delete"
- target="_dialog"}}
- {{:linkbutton
- label="Modifier"
- href="../modifier_mouvement.html?key=%s&direction=output"|args:$mvt_key
- shape="edit"
- target="_dialog"}}
-
-
- {{else}}
- Il n'y a aucune sortie.
- {{/list}}
-
-{{/if}}
-
-{{:admin_footer}}
diff --git a/mouvements/sorties/stock_disponible.html b/mouvements/sorties/stock_disponible.html
index 0f955d3..00199d5 100644
--- a/mouvements/sorties/stock_disponible.html
+++ b/mouvements/sorties/stock_disponible.html
@@ -1,6 +1,9 @@
{{* -*- brindille -*- *}}
-{{:admin_header title="Sortie de matériel" current="module_equipment"}}
+{{*
+ paramètres :
+ - key : clé du matériel à sortir
+*}}
{{if ! $dialog}}
{{* barre de navigation *}}
@@ -20,9 +23,7 @@
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{* récupérer les infos du matériel *}}
- {{#load type="equipment" key=$_POST.equipment assign="equipment"}}
- {{:assign designation=$equipment.designation}}
- {{:assign var="category_keys." value=$equipment.category}}
+ {{#load type="equipment" key=$_GET.key assign="equipment"}}
{{/load}}
{{:assign stock=0}}
@@ -31,26 +32,23 @@
{{:assign insere=false}}
{{* lister tous les mouvements du matériel *}}
- {{#load type="movement" where="$$.equipment = '%s'"|args:$_POST.equipment assign="mvt" order="$$.date ASC"}}
+ {{#load type="movement" where="$$.equipment = '%s'"|args:$_GET.key assign="mvt" order="$$.date ASC"}}
{{* traiter le nouveau mouvement *}}
{{if ! $insere && $mvt.date > $_POST.date|parse_date}}
+ {{:assign insere=true}}
+ {{:assign dispo_old="%d-%d"|math:$stock:$exterieur}}
{{:assign var="operation" from="output_labels.%s|args:$_POST.type_operation}}
{{:assign var="type_mvt" from="config.output_nature.%s"|args:$operation}}
- {{:assign dispo_old="%d-%d"|math:$stock:$exterieur}}
{{if $type_mvt == 'définitif'}}
{{:assign stock="%d-%d"|math:$stock:$_POST.quantite}}
{{elseif $type_mvt == 'temporaire'}}
{{:assign exterieur="%d+%d"|math:$exterieur:$_POST.quantite}}
- {{elseif $type_mvt == 'retour'}}
- {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.quantite}}
{{/if}}
- {{:assign insere=true}}
{{:assign dispo="%d-%d"|math:$stock:$exterieur}}
-
- {{if $dispo < 0 || $stock < 0 || $exterieur < 0 || $nonproprio < 0}}
+ {{if $dispo < 0 || $stock < 0 || $exterieur < 0}}
{{:assign date_err=$_POST.date|date:"d/m/Y"}}
{{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.quantite:$dispo_old:$date_err}}
{{/if}}
@@ -79,14 +77,31 @@
{{/if}}
{{:assign dispo="%d-%d"|math:$stock:$exterieur}}
+
{{if $dispo < 0 || $stock < 0 || $exterieur < 0 || $nonproprio < 0}}
{{:assign date_err=$mvt.date|date:"d/m/Y"}}
- {{:error message="Erreur : la quantité indiquée (%s) est incompatible avec la sortie « %s : %s » à la date du %s"|args:$_POST.quantite:$designation:$mvt.amount:$date_err}}
+ {{:error message="Erreur : la quantité indiquée (%s) est incompatible avec la sortie de %s unités à la date du %s"|args:$_POST.quantite:$mvt.amount:$date_err}}
{{/if}}
{{/load}}
+ {{if ! $insere}}
+ {{:assign dispo_old="%d-%d"|math:$stock:$exterieur}}
+ {{:assign var="operation" from="output_labels.%s|args:$_POST.type_operation}}
+ {{:assign var="type_mvt" from="config.output_nature.%s"|args:$operation}}
+
+ {{if $type_mvt == 'définitif'}}
+ {{:assign stock="%d-%d"|math:$stock:$_POST.quantite}}
+ {{elseif $type_mvt == 'temporaire'}}
+ {{:assign exterieur="%d+%d"|math:$exterieur:$_POST.quantite}}
+ {{/if}}
+
+ {{:assign dispo="%d-%d"|math:$stock:$exterieur}}
+ {{if $dispo < 0 || $stock < 0 || $exterieur < 0}}
+ {{:assign date_err=$_POST.date|date:"d/m/Y"}}
+ {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.quantite:$dispo_old:$date_err}}
+ {{/if}}
+ {{/if}}
{{* Enregistrer le mouvement *}}
-
{{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="output_labels.%d|args:$_POST.type_operation}}
{{:save
@@ -100,70 +115,64 @@
date=$_POST.date|parse_date
comment=$_POST.remarques|trim
}}
- {{:redirect force="index.html?ok=1&msg=sortie"}}
-{{else}}
- {{:form_errors}}
+ {{:redirect force="../../historique.html?ok=1&key=%s&prop=1&msg=sortie"|args:$_GET.key}}
{{/form}}
+{{:admin_header title="Sortie de matériel" current="module_equipment"}}
+{{:form_errors}}
+
{{* Extraire et compiler les infos de la base *}}
-{{:include file="../../_calcul_dispo.html" keep="cumul_mvt"}}
+{{:include file="../../_calcul_dispo.html" keep="categories,equipments"}}
+{{:assign var=stock from="equipments.%s.stock"|args:$_GET.key}}
+{{:assign var=exterieur from="equipments.%s.exterieur"|args:$_GET.key}}
+{{:assign dispo="%d-%d"|math:$stock:$exterieur}}
-{{if $cumul_mvt !== null}}
- {{* calculer les disponibilités *}}
- {{#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}}
- {{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 $dispo > 0}}
- {{if $disponibilites != null}}
- {{* formulaire de sortie de matériel *}}
-
-
- Ajouter une sortie d'un matériel disponible en stock
-
- {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels}}
+ {{* déterminer le matériel concerné par le mouvement *}}
+ {{#load key=$_GET.key assign="equipment"}}{{/load}}
+ {{:assign var=cat_name from=categories.%s|args:$equipment.category}}
+
+ {{* formulaire de sortie de matériel *}}
+
+
+
+ Ajouter une sortie
+
+ {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels|sort}}
{{: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}}
-
-
-
- Matériel
- La quantité indiquée est celle à la date du jour
-
- {{:input type="select_groups" name="equipment" label="Matériel" required=true options=$disponibilites onchange="fixerValeurMax('f_equipment', 'f_quantite')"}}
- {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
-
-
-
- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
-
-
- {{else}}
- {{:assign date_err=$now|date:'d/m/Y'}}
- Il n'y a aucun matériel disponible à la date du {{$date_err}}
- {{/if}}
+ {{:input type="number" name="quantite" label="Quantité" required=true default=$dispo min=1 max=$dispo}}
+ {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
+
+
+
+ {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
+
+
{{else}}
- Il n'y a aucun matériel en stock
+ Il y a 0 unité de ce matériel disponible à la date du {{$now|date_short}}
{{/if}}
{{:admin_footer}}
diff --git a/mouvements/supprimer_mouvement.html b/mouvements/supprimer_mouvement.html
new file mode 100644
index 0000000..fe30d9f
--- /dev/null
+++ b/mouvements/supprimer_mouvement.html
@@ -0,0 +1,135 @@
+{{* -*- brindille -*-}}
+
+{{*
+ paramètres GET :
+ - key : clé du mouvement à supprimer
+ - prop : = 1 si matériel propriété de l'asso
+*}}
+
+{{:assign var="libelles.input" value="entrée"}}
+{{:assign var="libelles.output" value="sortie"}}
+
+{{#load key=$_GET.key assign="mvt_suppr"}}
+{{else}}
+ {{:error message="Aucun mouvement avec la clé « %s »"|args:$_GET.key}}
+{{/load}}
+
+{{:assign var="libelle" from="libelles.%s"|args:$mvt_suppr.direction}}
+{{:assign key_eqpmt_suppr=$mvt_suppr.equipment}}
+{{:assign var="date_suppr" value="%s"|args:$mvt_suppr.date|date_short}}
+
+{{* trouver le matériel concerné par ce mouvement *}}
+{{#load type="equipment" where="key = :key" :key=$mvt_suppr.equipment assign="equipment"}}
+{{else}}
+ {{:error message="Aucun matériel avec la clé « %s »"|args:$mvt_suppr.equipment}}
+{{/load}}
+
+{{#form on="delete"}}
+ {{* récupérer la config des entrées/sorties *}}
+ {{:include file="../_get_config.html" keep="config"}}
+
+ {{* TODO vérifier s'il est possible de supprimer le mouvement *}}
+ {{if $mvt_suppr.direction == 'input'}}
+ {{:assign dispo=0}}
+ {{:assign nonprop=0}}
+
+ {{#load
+ type="movement"
+ where="$$.equipment = :key" :key=$mvt_suppr.equipment
+ 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 $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 ? *}}
+ {{if $dispo < 0 || $nonprop < 0}}
+ {{:redirect force="../historique.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}}
+ {{/if}}
+
+ {{/if}}
+ {{/load}}
+
+ {{else}}
+ {{* sortie *}}
+ {{:assign temporaire=false}}
+ {{:assign var="output_nature" from="config.output_nature.%s"|args:$mvt_suppr.output_nature}}
+
+ {{if $output_nature == 'temporaire'}}
+ {{:assign exterieur=0}}
+ {{#load
+ type="movement"
+ where="$$.equipment = :key" :key=$mvt_suppr.equipment
+ 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 $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="../historique.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}}
+ {{/if}}
+ {{/if}}
+ {{/load}}
+ {{/if}}
+ {{/if}}
+
+ {{* vérification réussie : supprimer le mouvement *}}
+ {{:delete key=$_GET.key}}
+ {{:assign libelle=$libelle|ucfirst}}
+ {{:assign var="msg" value="%s « %s (%d) en date du %s » supprimée"|args:$libelle:$equipment.designation:$mvt_suppr.amount:$date_suppr}}
+
+ {{* voir s'il reste des mouvements pour le matériel concerné par le mouvement supprimé *}}
+ {{#load type="movement" where="$$.equipment = :eqpmt_key" :eqpmt_key=$equipment.key}}
+ {{else}}
+ {{* supprimer le matériel *}}
+ {{:delete key=$equipment.key}}
+ {{:assign var="msg" value="%s - Matériel « %s » supprimé"|args:$msg:$equipment.designation}}
+ {{:redirect force="../index.html?ok=1&msg=%s"|args:$msg}}
+ {{/load}}
+
+ {{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=%s"|args:$mvt_suppr.equipment:$_GET.prop:$msg}}
+{{/form}}
+
+{{:admin_header title="Supprimer une %s"|args:$libelle current="module_equipment"}}
+{{:form_errors}}
+
+{{:delete_form
+ legend="Supprimer cette %s ?"|args:$libelle
+ warning="Supprimer « %s (%d) en date du %s » ?"|args:$equipment.designation:$mvt_suppr.amount:$date_suppr
+ info="S'il ne reste aucun mouvement pour ce matériel, le matériel sera supprimé"
+}}
+
+
+{{:admin_footer}}
diff --git a/mouvements/valider_modification.html b/mouvements/valider_modification.html
index c2b87e1..950dad2 100644
--- a/mouvements/valider_modification.html
+++ b/mouvements/valider_modification.html
@@ -2,8 +2,7 @@
Vérifier la cohérence des E/S d'un matériel
- paramètres :
- - movements : liste de mouvements
- - eqpmt_key : clé du matériel à vérifier
+ - movements : liste de mouvements d'un matériel
*}}
{{* récupérer la config des entrées/sorties *}}
@@ -13,33 +12,33 @@
{{:assign stock=0}}
{{:assign exterieur=0}}
{{:assign nonprop=0}}
+
{{#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 $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}}
- {{:assign dispo="%d-%d"|math:$stock:$exterieur}}
- {{if $dispo < 0 || $stock < 0 || $exterieur < 0 || $nonprop < 0}}
- {{:assign erreur=true}}
- {{:break}}
+ {{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}}
+ {{:assign erreur=true}}
+ {{:break}}
+ {{/if}}
{{/foreach}}