Compare commits

..

2 commits

Author SHA1 Message Date
Jean-Christophe Engel
53c0deee22 Correction erreur si certains types d'entrées ou sorties sont absents 2025-09-25 10:55:02 +02:00
Jean-Christophe Engel
b380ad334d Ne pas mettre de choix vide si un seul élément dans un menu 2025-09-25 10:23:16 +02:00
6 changed files with 75 additions and 52 deletions

View file

@ -2,6 +2,7 @@
{{* {{*
Récupérer soit la config enregistrée, soit la config par défaut Récupérer soit la config enregistrée, soit la config par défaut
@param : default = true si config par défaut
résultat : config.input_nature et config.output_nature résultat : config.input_nature et config.output_nature
*}} *}}
@ -14,7 +15,7 @@
{{#foreach from=$directions key="direction"}} {{#foreach from=$directions key="direction"}}
{{:assign var="nature" from="module.config.%s_nature"|args:$direction}} {{:assign var="nature" from="module.config.%s_nature"|args:$direction}}
{{if $nature != null}} {{if $nature != null && ! $default}}
{{#foreach from=$nature item="elem"}} {{#foreach from=$nature item="elem"}}
{{:assign var="item" label=$label type=$type}} {{:assign var="item" label=$label type=$type}}
{{:assign var="config.%s_nature.%s"|args:$direction:$key value=$item}} {{:assign var="config.%s_nature.%s"|args:$direction:$key value=$item}}

View file

@ -12,8 +12,8 @@
{{* Traiter l'envoi du formulaire *}} {{* Traiter l'envoi du formulaire *}}
{{* lecture config (défaut ou enregistrée) *}} {{* lecture config par défaut *}}
{{:include file="../_get_config.html" keep="config, directions"}} {{:include file="../_get_config.html" keep="config, directions" default=true}}
{{#form on="save"}} {{#form on="save"}}
{{* vérifier s'il existe un type de mouvement de même nom *}} {{* vérifier s'il existe un type de mouvement de même nom *}}

View file

@ -126,16 +126,24 @@
<fieldset class="entree"> <fieldset class="entree">
<legend>Enregistrer une entrée de matériel</legend> <legend>Enregistrer une entrée de matériel</legend>
<dl> <dl>
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}} {{if $input_labels|count == 1}}
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="select" name="operation" label="Type" required=true options=$input_labels}}
{{:input type="number" name="amount" label="Quantité" min=1 required=true default=1}} {{else}}
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}}
{{/if}}
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="number" name="amount" label="Quantité" min=1 required=true default=1}}
</dl> </dl>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend>Sélectionner une catégorie et indiquer le nom du nouveau matériel</legend> <legend>Sélectionner une catégorie et indiquer le nom du nouveau matériel</legend>
<dl> <dl>
{{:input type="select" name="category" label="Catégorie" default_empty="— Aucune —" options=$categories required=true}} {{if $categories|count == 1}}
{{:input type="select" name="category" label="Catégorie" options=$categories required=true}}
{{else}}
{{:input type="select" name="category" label="Catégorie" default_empty="— Aucune —" options=$categories required=true}}
{{/if}}
{{:input type="text" name="name" label="Désignation" required=true}} {{:input type="text" name="name" label="Désignation" required=true}}
{{if $storage != null}} {{if $storage != null}}
{{:input type="select" name="storage" label="Lieu de stockage" default_empty="— Aucun —" options=$storage required=false}} {{:input type="select" name="storage" label="Lieu de stockage" default_empty="— Aucun —" options=$storage required=false}}

View file

@ -103,7 +103,11 @@
<fieldset class="entree"> <fieldset class="entree">
<legend>Enregistrer une entrée de matériel</legend> <legend>Enregistrer une entrée de matériel</legend>
<dl> <dl>
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}} {{if $input_labels|count == 1}}
{{:input type="select" name="operation" label="Type" required=true options=$input_labels}}
{{else}}
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}}
{{/if}}
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="number" name="amount" label="Quantité" required=true min=1 default=1}} {{:input type="number" name="amount" label="Quantité" required=true min=1 default=1}}
{{if $storage != null}} {{if $storage != null}}

View file

@ -173,7 +173,11 @@
<fieldset class="sortie"> <fieldset class="sortie">
<legend>Enregistrer une sortie</legend> <legend>Enregistrer une sortie</legend>
<dl> <dl>
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$output_labels|sort}} {{if $output_labels|count == 1}}
{{:input type="select" name="operation" label="Type" required=true options=$output_labels}}
{{else}}
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$output_labels|sort}}
{{/if}}
{{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}} {{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}}
{{:input type="number" name="amount" label="Quantité" required=true default=1 min=1 max=$dispo}} {{:input type="number" name="amount" label="Quantité" required=true default=1 min=1 max=$dispo}}
{{:input {{:input

View file

@ -30,29 +30,32 @@
{{/load}} {{/load}}
{{if $table_presente}} {{if $table_presente}}
{{#select {{* vérifier la présence des types d'entrées et de sorties requis *}}
eqpmt.key as eqpmt_key, {{if $output_types|has_key:"temporaire" && $input_types|has_key:"retour"}}
json_extract(eqpmt.document, '$.name') as eqpmt_name, {{#select
mvt.key AS mvt_key, eqpmt.key as eqpmt_key,
json_extract(mvt.document, '$.direction') as direction, json_extract(eqpmt.document, '$.name') as eqpmt_name,
json_extract(mvt.document, '$.operation') as operation, mvt.key AS mvt_key,
json_extract(mvt.document, '$.date') as date, json_extract(mvt.document, '$.direction') as direction,
json_extract(mvt.document, '$.amount') as amount json_extract(mvt.document, '$.operation') as operation,
FROM module_data_equipment AS mvt json_extract(mvt.document, '$.date') as date,
INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id json_extract(mvt.document, '$.amount') as amount
INNER JOIN module_data_equipment AS eqpmt FROM module_data_equipment AS mvt
ON json_extract(mvt.document, '$.equipment') = eqpmt.key INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id
WHERE users.id = :user INNER JOIN module_data_equipment AS eqpmt
AND (json_extract(mvt.document, '$.operation') IN !output_types ON json_extract(mvt.document, '$.equipment') = eqpmt.key
OR json_extract(mvt.document, '$.operation') IN !input_types) WHERE users.id = :user
ORDER BY date AND (json_extract(mvt.document, '$.operation') IN !output_types
; OR json_extract(mvt.document, '$.operation') IN !input_types)
:user = $user.id ORDER BY date
!output_types=$output_types.temporaire ;
!input_types=$input_types.retour :user = $user.id
assign="temp_mat." !output_types=$output_types.temporaire
}} !input_types=$input_types.retour
{{/select}} assign="temp_mat."
}}
{{/select}}
{{/if}}
{{if $temp_mat|count != 0}} {{if $temp_mat|count != 0}}
<h3 class="ruler">Matériels attribués temporairement</h3> <h3 class="ruler">Matériels attribués temporairement</h3>
@ -102,26 +105,29 @@
</table> </table>
{{/if}} {{/if}}
{{#select {{* vérifier la présence des types d'entrées et de sorties requis *}}
eqpmt.key as eqpmt_key, {{ if $output_types|has_key:"définitif"}}
json_extract(eqpmt.document, '$.name') as eqpmt_name, {{#select
json_extract(mvt.document, '$.direction') as direction, eqpmt.key as eqpmt_key,
json_extract(mvt.document, '$.operation') as operation, json_extract(eqpmt.document, '$.name') as eqpmt_name,
json_extract(mvt.document, '$.date') as date, json_extract(mvt.document, '$.direction') as direction,
json_extract(mvt.document, '$.amount') as amount json_extract(mvt.document, '$.operation') as operation,
FROM module_data_equipment AS mvt json_extract(mvt.document, '$.date') as date,
INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id json_extract(mvt.document, '$.amount') as amount
INNER JOIN module_data_equipment AS eqpmt FROM module_data_equipment AS mvt
ON json_extract(mvt.document, '$.equipment') = eqpmt.key INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id
WHERE users.id = :user INNER JOIN module_data_equipment AS eqpmt
AND json_extract(mvt.document, '$.operation') IN !output_types ON json_extract(mvt.document, '$.equipment') = eqpmt.key
ORDER BY date DESC WHERE users.id = :user
; AND json_extract(mvt.document, '$.operation') IN !output_types
:user = $user.id ORDER BY date DESC
!output_types=$output_types.définitif ;
assign="def_mat." :user = $user.id
}} !output_types=$output_types.définitif
{{/select}} assign="def_mat."
}}
{{/select}}
{{/if}}
{{if $def_mat|count != 0}} {{if $def_mat|count != 0}}
<h3 class="ruler">Matériels attribués définitivement</h3> <h3 class="ruler">Matériels attribués définitivement</h3>