From e4ad0b69821bf60aaa0b564b7a6e44617721049f Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Fri, 20 Dec 2024 11:22:24 +0100 Subject: [PATCH] =?UTF-8?q?am=C3=A9lioration=20validation=20modification?= =?UTF-8?q?=20et=20copie=20mouvement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- historique.html | 4 +- mouvements/dupliquer_mouvement.html | 187 ++++++++++++++++++--------- mouvements/modifier_mouvement.html | 136 ++++++++++--------- mouvements/valider_modification.html | 45 ++++--- 4 files changed, 221 insertions(+), 151 deletions(-) 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 *}}
-
- {{if $direction == "input"}} - Créer une copie de l'entrée « {{$input_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} » +
+ {{if $_GET.direction == "input"}} + Créer une copie de l'entrée « {{$mvt_nature}} {{$eqpmt.designation}} ({{$amount_init}}) en date du {{$date_init}} »
- {{: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 default=$nature_defaut}} {{else}} - Créer une copie de la sortie « {{$output_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} » + Créer une copie de la sortie « {{$mvt_nature}} {{$eqpmt.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 default=$nature_defaut}} {{/if}} - {{:input type="date" name="date" label="Date" required=true default=$now|date_short}} - {{:input type="text" name="designation" label="Matériel" disabled=true default=$eqpmt_init.designation}} + {{:input type="date" name="date" label="Date" required=true default=$mvt_new.date}} + {{:input type="text" name="designation" label="Matériel" disabled=true default=$eqpmt.designation}} {{:input type="text" name="category" label="Catégorie" disabled=true default=$category.name}} - {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_copie.amount}} - {{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false default=$mvt_copie.comment}} + {{: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}}
diff --git a/mouvements/modifier_mouvement.html b/mouvements/modifier_mouvement.html index 21490db..accac17 100644 --- a/mouvements/modifier_mouvement.html +++ b/mouvements/modifier_mouvement.html @@ -15,25 +15,25 @@ {{:admin_header title="Modifier une %s"|args:$msg_direction current="module_equipment"}} {{* récupérer les infos du mouvement à modifier *}} -{{#load key=$_GET.key assign="mvt_modif"}} +{{#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 input_init=$mvt_modif.input_nature}} + {{:assign mvt_nature=$mvt_new.input_nature}} {{else}} - {{:assign output_init=$mvt_modif.output_nature}} + {{: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 *}} @@ -43,7 +43,7 @@ {{* 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}} + {{if $label == $mvt_new.input_nature}} {{:assign nature_defaut=$label}} {{/if}} {{/foreach}} @@ -51,7 +51,7 @@ {{* 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}} + {{if $label == $mvt_new.output_nature}} {{:assign nature_defaut=$label}} {{/if}} {{/foreach}} @@ -60,32 +60,38 @@ {{* -------------------- Traiter la saisie -------------------- *}} -{{#form on="change"}} +{{#form on="save"}} {{if $_POST.amount <= 0}} {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}} {{/if}} {{* préparer le mouvement modifié *}} {{if $_GET.direction == "input"}} - {{:assign var="mvt_modif.input_nature" from="input_labels.%s"|args:$_POST.nature_operation}} - {{:assign var=type_mvt from="config.input_nature.%s"|args:$mvt_modif.input_nature}} + {{: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_modif.output_nature" from="output_labels.%s"|args:$_POST.nature_operation}} - {{:assign var=type_mvt from="config.outut_nature.%s"|args:$mvt_modif.input_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}} - {{if $type_mvt == "temporaire"}} - {{:assign prop=0}} - {{else}} - {{:assign prop=1}} - {{/if}} - {{:assign var="mvt_modif.amount" value=$_POST.amount}} - {{:assign var="mvt_modif.equipment" value=$key_eqpmt_init}} - {{:assign var="mvt_modif.date" value=$_POST.date|parse_date}} - {{:assign var="mvt_modif.comment" value=$_POST.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 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 @@ -93,59 +99,60 @@ $$.type = 'movement' AND $$.equipment = :eqpmt_key" - :eqpmt_key=$key_eqpmt_init + :eqpmt_key=$eqpmt_key order="$$.date" assign="movement" }} {{if $key != $_GET.key}} - {{if $_GET.direction == "input" && ! $insere && $date >= $mvt_modif.date}} - {{:assign var="movements_modif." from=mvt_modif}} - {{:assign insere=true}} - {{elseif $_GET.direction == "output" && ! $insere && $date > $mvt_modif.date}} - {{:assign var="movements_modif." from=mvt_modif}} - {{:assign insere=true}} + {{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 mouvements du matériel *}} {{:include file="./valider_modification.html" keep="erreur" - movements=$movements_modif - eqpmt_key=$key_eqpmt_init + movements=$movements_new }} {{if $erreur}}

Modification demandée impossible : - {{if $_GET.direction == "input"}} - {{$input_init}} de « {{$eqpmt_init.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers - « {{$mvt_modif.input_nature}} de {{$eqpmt_init.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_init.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=$_GET.key - validate_schema="./movement.schema.json" + validate_schema="movement.schema.json" type="movement" direction=$_GET.direction - input_nature=$mvt_modif.input_nature - output_nature=$mvt_modif.output_nature - amount=$mvt_modif.amount|intval - equipment=$key_eqpmt_init - date=$mvt_modif.date - comment=$mvt_modif.comment + 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=modification"|args:$key_eqpmt_init:$prop}} + {{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=modification"|args:$eqpmt_key:$prop}} {{/if}} {{else}} {{:form_errors}} @@ -155,31 +162,32 @@ -------------------- Préparer la saisie -------------------- *}} -{{* lister les catégories et matériels associés *}} -{{#load key=$eqpmt_init.category assign="category"}}{{/load}} +{{* récupérer les infos de la catégorie *}} +{{#load key=$eqpmt.category assign="category"}}{{/load}} {{* formulaire de modification du mouvement *}} -
+
{{if $_GET.direction == "input"}} - Modifier l'entrée « {{$input_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} » + Modifier l'entrée « {{$mvt_nature}} {{$eqpmt.designation}} ({{$amount_init}}) en date du {{$date_init}} »
{{:input type="select" name="nature_operation" label="Type" required=true options=$input_labels default=$nature_defaut}} {{else}} - Modifier la sortie « {{$output_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} » + Modifier la sortie « {{$mvt_nature}} {{$eqpmt.designation}} ({{$amount_init}}) en date du {{$date_init}} »
{{:input type="select" name="nature_operation" label="Type" required=true options=$output_labels default=$nature_defaut}} {{/if}} - {{:input type="date" name="date" label="Date" required=true default=$mvt_modif.date}} - {{:input type="text" name="designation" label="Matériel" disabled=true default=$eqpmt_init.designation}} + {{:input type="date" name="date" label="Date" required=true default=$mvt_new.date}} + {{:input type="text" name="designation" label="Matériel" disabled=true default=$eqpmt.designation}} {{:input type="text" name="category" label="Catégorie" disabled=true default=$category.name}} - {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_modif.amount}} - {{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false default=$mvt_modif.comment}} + {{: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}}
+

- {{: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/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}}