From c10ff02403a1a4fb1db7b5e5a436ce9a250482f3 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Mon, 24 Mar 2025 20:47:49 +0100 Subject: [PATCH] =?UTF-8?q?Enregistrement=20quantit=C3=A9s=20avec=20mat?= =?UTF-8?q?=C3=A9riel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- equipment.schema.json | 17 +++- inventaire.html | 110 ++--------------------- inventaire_nonprop.html | 46 +--------- mouvements/ajouter_entree.html | 59 ++++++++---- mouvements/dupliquer_mouvement.html | 42 ++++++++- mouvements/entrees/repertorie.html | 28 +++++- mouvements/entrees/retour.html | 18 +++- mouvements/modifier_mouvement.html | 63 +++++++++++-- mouvements/sorties/emprunte.html | 30 +++++-- mouvements/sorties/stock_disponible.html | 38 ++++++-- mouvements/supprimer_mouvement.html | 41 ++++++++- 11 files changed, 291 insertions(+), 201 deletions(-) diff --git a/equipment.schema.json b/equipment.schema.json index ac54ec5..c30f073 100644 --- a/equipment.schema.json +++ b/equipment.schema.json @@ -18,7 +18,22 @@ "description": "État du matériel", "type": "string", "enum": ["available", "archived"] + }, + "stock": { + "description": "Quantité en stock", + "type" : "integer", + "minimum": 0 + }, + "out": { + "description": "Quantité sortie temporairement", + "type" : "integer", + "minimum": 0 + }, + "notowned": { + "description": "Quantité présente temporairement", + "type" : "integer", + "minimum": 0 } }, - "required": ["type", "category", "name", "status"] + "required": ["type", "category", "name", "status", "stock", "out", "notowned"] } diff --git a/inventaire.html b/inventaire.html index 7cc58bf..eb84e36 100644 --- a/inventaire.html +++ b/inventaire.html @@ -29,24 +29,6 @@

Inventaire des matériels propriété de l'association

-{{* types d'entrées et sorties *}} -{{:include file="./_get_config.html" keep="config, directions"}} - -{{#foreach from=$directions key="direction"}} - {{:assign var="nature" from="config.%s_nature"|args:$direction}} - {{#foreach from=$nature key="key"}} - {{:assign var="types.%s.%s."|args:$direction:$type value=$key}} - {{/foreach}} - - {{:assign var="iotypes" from="types.%s"|args:$direction}} - {{#foreach from=$iotypes key="key"}} - {{:assign var=elem from="iotypes.%s"|args:$key}} - {{:assign elem=$elem|quote_sql|implode:","}} - {{:assign elem="("|cat:$elem|cat:")"}} - {{:assign var="%s_types.%s"|args:$direction:$key value=$elem}} - {{/foreach}} -{{/foreach}} - {{* filtrer selon la catégorie *}} {{if $_GET.cat_key == null}} {{:assign condition="1"}} @@ -61,100 +43,20 @@ (SELECT $$.name FROM @TABLE as cat WHERE cat.key = @TABLE.$$.category) AS 'Catégorie' ; - (SELECT - SUM($$.amount) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) - - (SELECT - COALESCE(SUM($$.amount), 0) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) AS 'Stock' ; - (SELECT - COALESCE(SUM($$.amount), 0) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) - - (SELECT - COALESCE(SUM($$.amount), 0) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) AS 'Sorti' ; - - (SELECT - SUM($$.amount) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) - - (SELECT - COALESCE(SUM($$.amount), 0) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) - - (SELECT - COALESCE(SUM($$.amount), 0) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) + (SELECT - COALESCE(SUM($$.amount), 0) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) AS 'Disponible' - "|args:$input_types.définitif:$output_types.définitif:$output_types.temporaire:$input_types.retour:$input_types.définitif:$output_types.définitif:$output_types.temporaire:$input_types.retour + $$.stock AS 'Stock' ; + $$.out AS 'Sorti' ; + (SELECT $$.stock - $$.out) AS 'Disponible' + " type="equipment" where="$$.status <> 'archived' AND %s"|args:$condition - group="col1 HAVING col3 NOT NULL" order=1 }} - {{:assign var=cat_name from=categories.%s|args:$category}} - {{$name}} {{$cat_name}} - {{$col3}} - {{$col4}} + {{$stock}} + {{$out}} {{$col5}} {{if $col4 > 0}} diff --git a/inventaire_nonprop.html b/inventaire_nonprop.html index 049bef0..4ef0727 100644 --- a/inventaire_nonprop.html +++ b/inventaire_nonprop.html @@ -29,24 +29,6 @@

Inventaire des matériels empruntés ou loués

-{{* types d'entrées et sorties *}} -{{:include file="./_get_config.html" keep="config, directions"}} - -{{#foreach from=$directions key="direction"}} - {{:assign var="nature" from="config.%s_nature"|args:$direction}} - {{#foreach from=$nature key="key"}} - {{:assign var="types.%s.%s."|args:$direction:$type value=$key}} - {{/foreach}} - - {{:assign var="iotypes" from="types.%s"|args:$direction}} - {{#foreach from=$iotypes key="key"}} - {{:assign var=elem from="iotypes.%s"|args:$key}} - {{:assign elem=$elem|quote_sql|implode:","}} - {{:assign elem="("|cat:$elem|cat:")"}} - {{:assign var="%s_types.%s"|args:$direction:$key value=$elem}} - {{/foreach}} -{{/foreach}} - {{* filtrer selon la catégorie *}} {{if $_GET.cat_key == null}} {{:assign condition="1"}} @@ -61,35 +43,13 @@ (SELECT $$.name FROM @TABLE as cat WHERE cat.key = @TABLE.$$.category) AS 'Catégorie' ; - (SELECT - SUM($$.amount) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) - - (SELECT - COALESCE(SUM($$.amount), 0) - FROM @TABLE AS mvt - WHERE - $$.type = 'movement' - AND - $$.operation IN %s - AND - $$.equipment = @TABLE.key - ) AS 'Quantité' - "|args:$input_types.temporaire:$output_types.retour + $$.notowned AS 'Quantité' + " type="equipment" - where="$$.status <> 'archived' AND %s"|args:$condition - group="col1 HAVING (col3 NOT NULL AND col3 > 0)" + where="$$.status <> 'archived' AND $$.notowned != 0 AND %s"|args:$condition order=1 }} - {{:assign var=cat_name from=categories.%s|args:$category}} - {{$name}} {{$cat_name}} diff --git a/mouvements/ajouter_entree.html b/mouvements/ajouter_entree.html index 84c34db..18b6392 100644 --- a/mouvements/ajouter_entree.html +++ b/mouvements/ajouter_entree.html @@ -24,9 +24,9 @@ {{* 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}} + {{* vérifier la quantité saisie *}} + {{if $_POST.amount <= 0}} + {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}} {{/if}} {{* interdire date dans le futur *}} @@ -35,25 +35,26 @@ {{/if}} {{* vérifier l'existence d'un matériel de même nom *}} - {{#load type="equipment" where="$$.name = :name COLLATE U_NOCASE" :name=$_POST.name|trim limit=1}}}} - {{:assign equipment_key=$key}} - {{:assign var=nom_cat from="categories.%s"|args:$category}} + {{#load type="equipment" where="$$.name = :name COLLATE U_NOCASE" :name=$_POST.name|trim limit=1 assign="equipment"}} {{:assign present=true}} {{/load}} + {{:assign var=nom_cat from="categories.%s"|args:$equipment.category}} {{:assign var=post_cat from="categories.%s"|args:$_POST.category}} - {{:assign post_mat=$_POST.name|trim|tolower|ucfirst}} + {{:assign var="type_mvt" from="config.input_nature.%s.type"|args:$_POST.operation}} + {{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 *}} + {{* calculer la nouvelle quantité du matériel *}} + {{if $type_mvt == 'définitif'}} + {{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$_POST.amount|intval}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$_POST.amount|intval}} + {{/if}} + {{:assign equipment_key=$equipment.key}} {{:save key=$equipment_key validate_schema="../equipment.schema.json" @@ -61,9 +62,32 @@ category=$_POST.category name=$post_mat status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + {{else}} + {{* enregistrer un nouveau matériel *}} + {{:assign equipment_key=""|uuid}} + {{if $type_mvt == 'définitif'}} + {{:assign stock=$_POST.amount|intval}} + {{:assign notowned=0}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign notowned=$_POST.amount|intval}} + {{:assign stock=0}} + {{/if}} + {{:save + key=$equipment_key + validate_schema="../equipment.schema.json" + type="equipment" + category=$_POST.category + name=$post_mat + status="available" + stock=$stock + out=0 + notowned=$notowned }} {{/if}} - {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} {{:assign var="operation" from="input_labels.%d"|args:$_POST.type_operation}} @@ -73,14 +97,13 @@ type="movement" direction="input" operation=$_POST.operation - amount=$_POST.quantite|intval + amount=$_POST.amount|intval equipment=$equipment_key date=$_POST.date|parse_date comment=$_POST.remarques|trim }} - {{:assign var=entree from="config.input_nature.%s"|args:$_POST.operation}} - {{if $entree.type == "temporaire"}} + {{if $type_mvt == "temporaire"}} {{:assign prop=0}} {{else}} {{:assign prop=1}} @@ -100,7 +123,7 @@
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}} - {{:input type="number" name="quantite" label="Quantité" min=1 required=true default=1}} + {{:input type="number" name="amount" label="Quantité" min=1 required=true default=1}}
diff --git a/mouvements/dupliquer_mouvement.html b/mouvements/dupliquer_mouvement.html index 66f4695..86c1f50 100644 --- a/mouvements/dupliquer_mouvement.html +++ b/mouvements/dupliquer_mouvement.html @@ -19,7 +19,7 @@ {{:assign eqpmt_key=$mvt_new.equipment}} {{* récupérer les infos du matériel associé *}} -{{#load key=$eqpmt_key assign="eqpmt"}} +{{#load key=$eqpmt_key assign="equipment"}} {{else}} {{:error message="Aucun matériel avec la clé « %s »"|args:$eqpmt_key}} {{/load}} @@ -121,9 +121,43 @@ {{:assign var="mvt_label" from="%s_labels.%s"|args:$mvt_new.direction:$mvt_new.operation}}

Impossible d'enregistrer ce mouvement : « {{$mvt_label}} - de {{$eqpmt.name}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} » + de {{$equipment.name}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »

{{else}} + + {{* calculer la nouvelle quantité du matériel *}} + {{if $mvt_new.direction == "input"}} + {{:assign var="type_mvt" from="config.input_nature.%s.type"|args:$_POST.operation}} + {{if $type_mvt == 'définitif'}} + {{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$_POST.amount|intval}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$_POST.amount|intval}} + {{elseif $type_mvt == 'retour'}} + {{:assign var="equipment.out" value="%d-%d"|math:$equipment.out:$_POST.amount|intval}} + {{/if}} + {{else}} + {{:assign var="type_mvt" from="config.output_nature.%s.type"|args:$_POST.operation}} + {{if $type_mvt == 'définitif'}} + {{:assign var="equipment.stock" value="%d-%d"|math:$equipment.stock:$_POST.amount|intval}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign var="equipment.out" value="%d+%d"|math:$equipment.out:$_POST.amount|intval}} + {{elseif $type_mvt == 'retour'}} + {{:assign var="equipment.notowned" value="%d-%d"|math:$equipment.notowned:$_POST.amount|intval}} + {{/if}} + {{/if}} + + {{:save + key=$equipment.key + validate_schema="../equipment.schema.json" + type="equipment" + category=$equipment.category + name=$equipment.name + status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + {{* vérification réussie : enregistrer le mouvement modifié *}} {{:assign mvt_key=""|uuid}} {{:save @@ -149,13 +183,13 @@ *}} {{* récupérer les infos de la catégorie *}} -{{#load key=$eqpmt.category assign="category"}}{{/load}} +{{#load key=$equipment.category assign="category"}}{{/load}} {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$mvt_new.direction:$mvt_new.operation}} {{* formulaire de copie du mouvement *}}
- Créer une copie de « {{$op_label}} {{$eqpmt.name}} (Catégorie : {{$category.name}}) » + Créer une copie de « {{$op_label}} {{$equipment.name}} (Catégorie : {{$category.name}}) » {{if $mvt_new.direction == "input"}}
{{:input type="select" name="operation" label="Type" required=true options=$input_labels|sort default=$mvt_new.operation}} diff --git a/mouvements/entrees/repertorie.html b/mouvements/entrees/repertorie.html index 3162023..261f145 100644 --- a/mouvements/entrees/repertorie.html +++ b/mouvements/entrees/repertorie.html @@ -31,8 +31,8 @@ {{#form on="save"}} {{* vérifier la quantité saisie *}} - {{if $_POST.quantite <= 0}} - {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.quantite}} + {{if $_POST.amount <= 0}} + {{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}} {{/if}} {{* interdire date dans le futur *}} @@ -40,6 +40,26 @@ {{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}} {{/if}} + {{* calculer la nouvelle quantité du matériel *}} + {{:assign var="type_mvt" from="config.input_nature.%s.type"|args:$_POST.operation}} + {{if $type_mvt == 'définitif'}} + {{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$_POST.amount|intval}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$_POST.amount|intval}} + {{/if}} + + {{:save + key=$equipment.key + validate_schema="../../equipment.schema.json" + type="equipment" + category=$equipment.category + name=$equipment.name + status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} {{:save @@ -48,7 +68,7 @@ type="movement" direction="input" operation=$_POST.operation - amount=$_POST.quantite|intval + amount=$_POST.amount|intval equipment=$equipment.key date=$_POST.date|parse_date comment=$_POST.remarques|trim @@ -81,7 +101,7 @@
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" 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 min=1 default=1}} + {{:input type="number" name="amount" label="Quantité" required=true min=1 default=1}} {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
diff --git a/mouvements/entrees/retour.html b/mouvements/entrees/retour.html index fe461d8..f2667e9 100644 --- a/mouvements/entrees/retour.html +++ b/mouvements/entrees/retour.html @@ -82,7 +82,23 @@ {{/if}}

{{else}} - {{* vérification réussie : enregistrer le mouvement modifié *}} + {{* calculer la nouvelle quantité du matériel *}} + {{:assign var="type_mvt" from="config.input_nature.%s.type"|args:$_POST.operation}} + {{:assign var="equipment.out" value="%d-%d"|math:$equipment.out:$_POST.amount|intval}} + + {{:save + key=$equipment.key + validate_schema="../../equipment.schema.json" + type="equipment" + category=$equipment.category + name=$equipment.name + status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + + {{* enregistrer le mouvement modifié *}} {{:save key=""|uuid validate_schema="../movement.schema.json" diff --git a/mouvements/modifier_mouvement.html b/mouvements/modifier_mouvement.html index 6c02bf8..e8a8ee5 100644 --- a/mouvements/modifier_mouvement.html +++ b/mouvements/modifier_mouvement.html @@ -18,11 +18,12 @@ {{* infos pour affichage *}} {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$mvt_new.direction:$mvt_new.operation}} {{:assign amount_init=$mvt_new.amount}} +{{:assign operation_init=$mvt_new.operation}} {{: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"}} +{{#load key=$eqpmt_key assign="equipment"}} {{else}} {{:error message="Aucun matériel avec la clé « %s »"|args:$eqpmt_key}} {{/load}} @@ -112,12 +113,62 @@ {{:assign var="new_op_label" from="config.%s_nature.%s.label"|args:$mvt_new.direction:$mvt_new.operation}}

Modification demandée impossible : - « {{$op_label}} de {{$eqpmt.name}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers + « {{$op_label}} de {{$equipment.name}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers « {{$new_op_label}} - de {{$eqpmt.name}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} » + de {{$equipment.name}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »

{{else}} - {{* vérification réussie : enregistrer le mouvement modifié *}} + {{* calculer la nouvelle quantité du matériel *}} + {{:assign var="type_mvt_init" from="config.%s_nature.%s.type"|args:$mvt_new.direction:$operation_init}} + {{:assign var="type_mvt_final" from="config.%s_nature.%s.type"|args:$mvt_new.direction:$mvt_new.operation}} + + {{if $mvt_new.direction == 'input'}} + {{if $type_mvt_init == 'définitif'}} + {{:assign var="equipment.stock" value="%d-%d"|math:$equipment.stock:$amount_init}} + {{elseif $type_mvt_init == 'temporaire'}} + {{:assign var="equipment.notowned" value="%d-%d"|math:$equipment.notowned:$amount_init}} + {{elseif $type_mvt_init == 'retour'}} + {{:assign var="equipment.out" value="%d+%d"|math:$equipment.out:$amount_init}} + {{/if}} + + {{if $type_mvt_final == 'définitif'}} + {{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$mvt_new.amount|intval}} + {{elseif $type_mvt_final == 'temporaire'}} + {{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$mvt_new.amount|intval}} + {{elseif $type_mvt_final == 'retour'}} + {{:assign var="equipment.out" value="%d-%d"|math:$equipment.out:$mvt_new.amount|intval}} + {{/if}} + {{else}} + {{if $type_mvt_init == 'définitif'}} + {{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$amount_init}} + {{elseif $type_mvt_init == 'temporaire'}} + {{:assign var="equipment.out" value="%d-%d"|math:$equipment.out:$amount_init}} + {{elseif $type_mvt_init == 'retour'}} + {{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$amount_init}} + {{/if}} + + {{if $type_mvt_final == 'définitif'}} + {{:assign var="equipment.stock" value="%d-%d"|math:$equipment.stock:$mvt_new.amount|intval}} + {{elseif $type_mvt_final == 'temporaire'}} + {{:assign var="equipment.out" value="%d+%d"|math:$equipment.out:$mvt_new.amount|intval}} + {{elseif $type_mvt_final == 'retour'}} + {{:assign var="equipment.notowned" value="%d-%d"|math:$equipment.notowned:$mvt_new.amount|intval}} + {{/if}} + {{/if}} + + {{:save + key=$equipment.key + validate_schema="../equipment.schema.json" + type="equipment" + category=$equipment.category + name=$equipment.name + status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + + {{* enregistrer le mouvement modifié *}} {{:save key=$_GET.key validate_schema="movement.schema.json" @@ -141,12 +192,12 @@ *}} {{* récupérer les infos de la catégorie *}} -{{#load key=$eqpmt.category assign="category"}}{{/load}} +{{#load key=$equipment.category assign="category"}}{{/load}} {{* formulaire de modification du mouvement *}}
- Modifier « {{$op_label}} {{$eqpmt.name}} (Catégorie : {{$category.name}}) » + Modifier « {{$op_label}} {{$equipment.name}} (Catégorie : {{$category.name}}) » {{if $mvt_new.direction == "input"}}
{{:input type="select" name="operation" label="Type" required=true options=$input_labels|sort default=$mvt_new.operation}} diff --git a/mouvements/sorties/emprunte.html b/mouvements/sorties/emprunte.html index 6b94afa..a0a2bd0 100644 --- a/mouvements/sorties/emprunte.html +++ b/mouvements/sorties/emprunte.html @@ -43,11 +43,11 @@ {{if ! $insere && $mvt.date > $_POST.date|parse_date}} {{:assign insere=true}} {{:assign dispo_old=$nonproprio}} - {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.quantite}} + {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.amount}} {{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}} + {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.amount:$dispo_old:$date_err}} {{/if}} {{/if}} @@ -76,18 +76,34 @@ {{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 de %s unités à la date du %s"|args:$_POST.quantite:$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.amount:$mvt.amount:$date_err}} {{/if}} {{/load}} {{if ! $insere}} {{:assign dispo_old=$nonproprio}} - {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.quantite}} + {{:assign nonproprio="%d-%d"|math:$nonproprio:$_POST.amount}} {{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}} + {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.amount:$dispo_old:$date_err}} {{/if}} {{/if}} + {{* calculer la nouvelle quantité du matériel *}} + {{:assign var="type_mvt" from="config.output_nature.%s.type"|args:$_POST.operation}} + {{:assign var="equipment.notowned" value="%d-%d"|math:$equipment.notowned:$_POST.amount|intval}} + + {{:save + key=$equipment.key + validate_schema="../../equipment.schema.json" + type="equipment" + category=$equipment.category + name=$equipment.name + status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} {{:save @@ -96,7 +112,7 @@ type="movement" direction="output" operation=$_POST.operation - amount=$_POST.quantite|intval + amount=$_POST.amount|intval equipment=$equipment.key date=$_POST.date|parse_date comment=$_POST.remarques|trim @@ -134,7 +150,7 @@
{{:input type="select" name="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=$present min=1 max=$present}} + {{:input type="number" name="amount" label="Quantité" required=true default=$present min=1 max=$present}} {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
diff --git a/mouvements/sorties/stock_disponible.html b/mouvements/sorties/stock_disponible.html index 711a23d..91222b5 100644 --- a/mouvements/sorties/stock_disponible.html +++ b/mouvements/sorties/stock_disponible.html @@ -45,15 +45,15 @@ {{:assign var="type_mvt" from="config.output_nature.%s.type"|args:$_POST.operation}} {{if $type_mvt == 'définitif'}} - {{:assign stock="%d-%d"|math:$stock:$_POST.quantite}} + {{:assign stock="%d-%d"|math:$stock:$_POST.amount}} {{elseif $type_mvt == 'temporaire'}} - {{:assign exterieur="%d+%d"|math:$exterieur:$_POST.quantite}} + {{:assign exterieur="%d+%d"|math:$exterieur:$_POST.amount}} {{/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}} + {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.amount:$dispo_old:$date_err}} {{/if}} {{/if}} @@ -82,7 +82,7 @@ {{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 de %s unités à la date du %s"|args:$_POST.quantite:$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.amount:$mvt.amount:$date_err}} {{/if}} {{/load}} {{if ! $insere}} @@ -90,18 +90,38 @@ {{:assign var="type_mvt" from="config.output_nature.%s.type"|args:$_POST.operation}} {{if $type_mvt == 'définitif'}} - {{:assign stock="%d-%d"|math:$stock:$_POST.quantite}} + {{:assign stock="%d-%d"|math:$stock:$_POST.amount}} {{elseif $type_mvt == 'temporaire'}} - {{:assign exterieur="%d+%d"|math:$exterieur:$_POST.quantite}} + {{:assign exterieur="%d+%d"|math:$exterieur:$_POST.amount}} {{/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}} + {{:error message="Erreur : la quantité indiquée (%s) est supérieure à celle disponible (%d) à la date du %s"|args:$_POST.amount:$dispo_old:$date_err}} {{/if}} {{/if}} + {{* calculer la nouvelle quantité du matériel *}} + {{:assign var="type_mvt" from="config.output_nature.%s.type"|args:$_POST.operation}} + {{if $type_mvt == 'définitif'}} + {{:assign var="equipment.stock" value="%d-%d"|math:$equipment.stock:$_POST.amount|intval}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign var="equipment.out" value="%d+%d"|math:$equipment.out:$_POST.amount|intval}} + {{/if}} + + {{:save + key=$equipment.key + validate_schema="../../equipment.schema.json" + type="equipment" + category=$equipment.category + name=$equipment.name + status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + {{* Enregistrer le mouvement *}} {{:assign mvt_key=""|uuid}} {{:save @@ -110,7 +130,7 @@ type="movement" direction="output" operation=$_POST.operation - amount=$_POST.quantite|intval + amount=$_POST.amount|intval equipment=$equipment.key date=$_POST.date|parse_date comment=$_POST.remarques|trim @@ -151,7 +171,7 @@
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" 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=$dispo min=1 max=$dispo}} + {{:input type="number" name="amount" label="Quantité" required=true default=$dispo min=1 max=$dispo}} {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
diff --git a/mouvements/supprimer_mouvement.html b/mouvements/supprimer_mouvement.html index 75c63c2..80a6dd6 100644 --- a/mouvements/supprimer_mouvement.html +++ b/mouvements/supprimer_mouvement.html @@ -102,14 +102,47 @@ {{* 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}} + {{:assign mvt_ok=1}} + {{/load}} + {{if $mvt_ok}} + {{* calculer la nouvelle quantité du matériel *}} + {{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$mvt_suppr.direction:$mvt_suppr.operation}} + {{if $mvt_suppr.direction == 'input'}} + {{if $type_mvt == 'définitif'}} + {{:assign var="equipment.stock" value="%d-%d"|math:$equipment.stock:$mvt_suppr.amount|intval}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign var="equipment.notowned" value="%d-%d"|math:$equipment.notowned:$mvt_suppr.amount|intval}} + {{elseif $type_mvt == 'retour'}} + {{:assign var="equipment.out" value="%d+%d"|math:$equipment.out:$mvt_suppr.amount|intval}} + {{/if}} + {{else}} + {{if $type_mvt == 'définitif'}} + {{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$mvt_suppr.amount|intval}} + {{elseif $type_mvt == 'temporaire'}} + {{:assign var="equipment.out" value="%d-%d"|math:$equipment.out:$mvt_suppr.amount|intval}} + {{elseif $type_mvt == 'retour'}} + {{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$mvt_suppr.amount|intval}} + {{/if}} + {{/if}} + + {{:save + key=$equipment.key + validate_schema="../equipment.schema.json" + type="equipment" + category=$equipment.category + name=$equipment.name + status="available" + stock=$equipment.stock + out=$equipment.out + notowned=$equipment.notowned + }} + {{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}} {{else}} {{* supprimer le matériel *}} {{:delete key=$equipment.key}} - {{:assign var="msg" value="%s - Matériel « %s » supprimé"|args:$msg:$equipment.name}} - {{:redirect force="../index.html?ok=1&msg=supprmvtmat"|args:$msg}} - {{/load}} + {{:redirect force="../index.html?ok=1&msg=supprmvtmat"}} + {{/if}} - {{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}} {{/form}} {{:admin_header title="Supprimer un mouvement" current="module_equipment"}}