diff --git a/historique.html b/historique.html
index eb649bb..9c166a5 100644
--- a/historique.html
+++ b/historique.html
@@ -25,6 +25,8 @@
{{if $_GET.ok}}
{{if $_GET.msg == "modification"}}
Modification enregistrée
+ {{elseif $_GET.msg == "copie"}}
+ Mouvement copié
{{elseif $_GET.msg == "suppression"}}
Mouvement supprimé
{{else}}
@@ -114,7 +116,7 @@
{{:linkbutton
label="Dupliquer"
- href="mouvements/dupliquer_mouvement.html?key=%s&direction=%s"|args:$key:$direction
+ href="mouvements/dupliquer_mouvement.html?key=%s&direction=%s&prop=%s"|args:$key:$direction:$_GET.prop
shape="plus"
target="_dialog"}}
{{:linkbutton
diff --git a/mouvements/dupliquer_mouvement.html b/mouvements/dupliquer_mouvement.html
index d4b95f1..e75699c 100644
--- a/mouvements/dupliquer_mouvement.html
+++ b/mouvements/dupliquer_mouvement.html
@@ -4,7 +4,8 @@
Dupliquer un mouvement
paramètres :
- key : clé du mouvement à dupliquer
- - direction du mouvement input/output)
+ - direction du mouvement à dupliquer
+ - prop = 1 si matériel appartient à l'asso
*}}
{{if $_GET.direction == "input"}}
@@ -14,55 +15,58 @@
{{/if}}
{{:admin_header title="Dupliquer une %s"|args:$msg_direction current="module_equipment"}}
-{{:assign direction=$_GET.direction}}
-{{:assign mvt_key=$_GET.key}}
-
{{* récupérer les infos du mouvement à dupliquer *}}
-{{#load key=$mvt_key assign="mvt_copie"}}
+{{#load key=$_GET.key assign="mvt_new"}}
{{else}}
- {{:error message="Aucune %s avec la clé %s"|args:$msg_direction:$mvt_key}}
+ {{:error message="Aucune %s avec la clé %s"|args:$msg_direction:$_GET.key}}
{{/load}}
-{{if $direction == "input"}}
- {{:assign input_init=$mvt_copie.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_copie.output_nature}}
- {{:assign url="sorties/index.html"}}
+ {{:assign mvt_nature=$mvt_new.output_nature}}
{{/if}}
-{{:assign amount_init=$mvt_copie.amount}}
-{{:assign date_init=$mvt_copie.date|date_short}}
-{{:assign key_eqpmt_init=$mvt_copie.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=$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"}}
-{{if $direction == "input"}}
+{{* limiter les opérations possibles *}}
+{{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_copie.input_nature}}
- {{:assign type_defaut=$label}}
+ {{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"}}
- {{:assign var="output_labels.%s"|args:$label value="%s"|args:$label}}
- {{if $label == $mvt_copie.output_nature}}
- {{:assign type_defaut=$label}}
+ {{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}}
-{{* récupérer les infos du matériel associé *}}
-{{#load key=$key_eqpmt_init assign="eqpmt_init"}}
-{{else}}
- {{:error message="Aucun matériel avec la clé « %s »"|args:$key_eqpmt_init}}
-{{/load}}
-
-{{* récupérer les infos de la catégorie *}}
-{{#load type="category" key=$eqpmt_init.category assign="category"}}
-{{/load}}
{{*
-------------------- Traiter la saisie --------------------
*}}
@@ -72,64 +76,121 @@
{{/if}}
{{* préparer le mouvement copié *}}
- {{if $direction == "input"}}
- {{:assign var="mvt_copie.input_nature" from="input_labels.%s"|args:$_POST.type_operation}}
- {{:assign var="type_mvt" from="config.input_nature.%s"|args:$mvt_copie.input_nature}}
+ {{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_copie.output_nature" from="output_labels.%s"|args:$_POST.type_operation}}
- {{:assign var="type_mvt" from="config.output_nature.%s"|args:$mvt_copie.output_nature}}
+ {{: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_copie.amount" value=$_POST.amount}}
- {{:assign var="mvt_copie.date" value=$_POST.date|parse_date}}
- {{:assign var="mvt_copie.comment" value=$_POST.comment}}
- {{* Enregistrer le mouvement *}}
- {{:assign mvt_key=""|uuid}}
- {{:save
- key=$mvt_key
- validate_schema="movement.schema.json"
- type="movement"
- direction=$direction
- input_nature=$mvt_copie.input_nature
- output_nature=$mvt_copie.output_nature
- amount=$mvt_copie.amount|intval
- equipment=$key_eqpmt_init
- date=$mvt_copie.date
- comment=$mvt_copie.comment
+ {{: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"
}}
- {{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=%s"|args:$key_eqpmt_init:$prop:$msg_direction}}
+ {{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}}
+
+ Modification demandée impossible :
+ « {{$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 : 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}}
+{{else}}
+ {{:form_errors}}
{{/form}}
-{{: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 *}}
|