réorganisation (cf remarques Bohwaz)

This commit is contained in:
Jean-Christophe Engel 2023-12-05 19:17:08 +01:00
parent 6006bdd169
commit 0e669a7c21
23 changed files with 279 additions and 236 deletions

View File

@ -7,18 +7,15 @@
{{* liste des catégories *}} {{* liste des catégories *}}
{{if $categories === null}} {{if $categories === null}}
{{#select {{#load type="category"}}
key
FROM module_data_equipment as cat
WHERE json_extract(cat.document, '$.type') = 'category'}}
{{:assign var="categories." value=$key}} {{:assign var="categories." value=$key}}
{{/select}} {{/load}}
{{/if}} {{/if}}
{{* date *}} {{* date *}}
{{if $date === null}} {{if $date === null}}
{{* :assign date=$now|date:"Y-m-d" *}} {{* :assign date=$now|date:"Y-m-d" *}}
{{:assign date="31/12/9999"|parse_date"}} {{:assign date="31/12/9999"|parse_date}}
{{* si on veut aussi lister les mouvements du futur :-) *}} {{* si on veut aussi lister les mouvements du futur :-) *}}
{{/if}} {{/if}}
@ -32,8 +29,8 @@
mvt.key as 'mvt_key', mvt.key as 'mvt_key',
json_extract(mvt.document, '$.direction') as 'direction', json_extract(mvt.document, '$.direction') as 'direction',
CASE json_extract(mvt.document, '$.direction') CASE json_extract(mvt.document, '$.direction')
WHEN 'entrée' THEN json_extract(mvt.document, '$.inputNature') WHEN 'input' THEN json_extract(mvt.document, '$.input_nature')
WHEN 'sortie' THEN json_extract(mvt.document, '$.outputNature') WHEN 'output' THEN json_extract(mvt.document, '$.output_nature')
END END
AS 'operation', AS 'operation',
json_extract(mvt.document, '$.amount') AS 'nombre' json_extract(mvt.document, '$.amount') AS 'nombre'
@ -87,9 +84,9 @@
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="./_get_config.html" keep="config"}} {{:include file="./_get_config.html" keep="config"}}
{{if $direction === 'entrée'}} {{if $direction === 'input'}}
{{* chercher le type d'entrée parmi les types de la config *}} {{* chercher le type d'entrée parmi les types de la config *}}
{{#foreach from=$config.inputNature item="elem"}} {{#foreach from=$config.input_nature item="elem"}}
{{if $operation == $elem.label}} {{if $operation == $elem.label}}
{{if $elem.type == 'définitif'}} {{if $elem.type == 'définitif'}}
{{:assign stock="%d+%d"|math:$stock:$nombre}} {{:assign stock="%d+%d"|math:$stock:$nombre}}
@ -110,9 +107,9 @@
{{:break}} {{:break}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{elseif $direction === 'sortie'}} {{elseif $direction === 'output'}}
{{* chercher le type de sortie parmi les types de la config *}} {{* chercher le type de sortie parmi les types de la config *}}
{{#foreach from=$config.outputNature item="elem"}} {{#foreach from=$config.output_nature item="elem"}}
{{if $operation == $elem.label}} {{if $operation == $elem.label}}
{{if $elem.type == 'définitif'}} {{if $elem.type == 'définitif'}}
{{:assign stock="%d-%d"|math:$stock:$nombre}} {{:assign stock="%d-%d"|math:$stock:$nombre}}

View File

@ -1,34 +1,34 @@
{{* {{*
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
résultat : config.inputNature et config.outputNature résultat : config.input_nature et config.output_nature
*}} *}}
{{* config par défaut *}} {{* config par défaut *}}
{{:read file="./defaut.json" assign="config_defaut"}} {{:read file="./defaut.json" assign="config_defaut"}}
{{:assign config_defaut=$config_defaut|json_decode}} {{:assign config_defaut=$config_defaut|json_decode}}
{{if $module.config.inputNature != null}} {{if $module.config.input_nature != null}}
{{:assign var=config.inputNature value=$module.config.inputNature}} {{:assign var=config.input_nature value=$module.config.input_nature}}
{{else}} {{else}}
{{* pas de config enregistrée : utiliser la config par défaut *}} {{* pas de config enregistrée : utiliser la config par défaut *}}
{{#foreach from=$config_defaut.entrées item="elem"}} {{#foreach from=$config_defaut.inputs item="elem"}}
{{#foreach from=$elem key=label item=value}} {{#foreach from=$elem key=label item=value}}
{{:assign var="item.label" value=$label}} {{:assign var="item.label" value=$label}}
{{:assign var="item.type" value=$value}} {{:assign var="item.type" value=$value}}
{{:assign var="config.inputNature." value=$item}} {{:assign var="config.input_nature." value=$item}}
{{/foreach}} {{/foreach}}
{{/foreach}} {{/foreach}}
{{/if}} {{/if}}
{{if $module.config.outputNature != null}} {{if $module.config.output_nature != null}}
{{:assign var=config.outputNature value=$module.config.outputNature}} {{:assign var=config.output_nature value=$module.config.output_nature}}
{{else}} {{else}}
{{* pas de config enregistrée : utiliser la config par défaut *}} {{* pas de config enregistrée : utiliser la config par défaut *}}
{{#foreach from=$config_defaut.sorties item="elem"}} {{#foreach from=$config_defaut.outputs item="elem"}}
{{#foreach from=$elem key=label item=value}} {{#foreach from=$elem key=label item=value}}
{{:assign var="item.label" value=$label}} {{:assign var="item.label" value=$label}}
{{:assign var="item.type" value=$value}} {{:assign var="item.type" value=$value}}
{{:assign var="config.outputNature." value=$item}} {{:assign var="config.output_nature." value=$item}}
{{/foreach}} {{/foreach}}
{{/foreach}} {{/foreach}}
{{/if}} {{/if}}

View File

@ -9,11 +9,11 @@
{{#form on="delete"}} {{#form on="delete"}}
{{* Vérifier s'il reste des matériels dans cette catégorie *}} {{* Vérifier s'il reste des matériels dans cette catégorie *}}
{{#load type="equipment" category=$_GET.key assign="equipment"}} {{#load type="equipment" category=$_GET.key assign="equipment"}}
{{:redirect force="./index.html?err=1&msg=Cette catégorie ne peut être supprimée car elle contient encore des matériels"}} {{:redirect force="./index.html?err=1&msg=suppression"}}
{{else}} {{else}}
{{* supprimer la catégorie sélectionnée*}} {{* supprimer la catégorie sélectionnée*}}
{{:delete where="key = :key" :key=$category.key}} {{:delete where="key = :key" :key=$category.key}}
{{:redirect force="./index.html?ok=1&msg=La catégorie « %s » a été supprimée"|args:$category.name}} {{:redirect force="./index.html?ok=1&msg=suppression"}}
{{/load}} {{/load}}
{{/form}} {{/form}}

View File

@ -5,11 +5,19 @@
{{:include file="../_nav.html" current="categories"}} {{:include file="../_nav.html" current="categories"}}
{{if $_GET.ok}} {{if $_GET.ok}}
<p class="block confirm">{{$_GET.msg}}</p> {{if $_GET.msg == "modification"}}
{{else}} <p class="block confirm">Modification enregistrée</p>
{{if $_GET.err}} {{elseif $_GET.msg == "suppression"}}
<p class="block error">{{$_GET.msg}}</p> <p class="block confirm">Catégorie supprimée</p>
{{/if}} {{/if}}
{{elseif $_GET.err}}
{{if $_GET.msg == "modification"}}
<p class="block error">{{$_GET.msg}}</p>
{{elseif $_GET.msg == "suppression"}}
<p class="block error">
Cette catégorie ne peut être supprimée car elle contient encore des matériels
</p>
{{/if}}
{{/if}} {{/if}}
{{* afficher les catégories déjà enregistrées *}} {{* afficher les catégories déjà enregistrées *}}

View File

@ -14,7 +14,7 @@
type="category" type="category"
name=$_POST.name|trim name=$_POST.name|trim
}} }}
{{:redirect force="./index.html?ok=1&msg=Catégorie modifiée"}} {{:redirect force="./index.html?ok=1&msg=modification"}}
{{/form}} {{/form}}
{{:form_errors}} {{:form_errors}}

View File

@ -13,8 +13,8 @@
{{:save key="config" {{:save key="config"
validate_schema="./config.schema.json" validate_schema="./config.schema.json"
inputNature=$_POST.input_fields|array_transpose input_nature=$_POST.input_fields|array_transpose
outputNature=$_POST.output_fields|array_transpose output_nature=$_POST.output_fields|array_transpose
}} }}
{{:redirect to="./config.html?ok=1"}} {{:redirect to="./config.html?ok=1"}}
{{/form}} {{/form}}
@ -24,16 +24,16 @@
{{:assign config_defaut=$config_defaut|json_decode}} {{:assign config_defaut=$config_defaut|json_decode}}
{{* types d'entrées *}} {{* types d'entrées *}}
{{#foreach from=$config_defaut.entrées item="elem"}} {{#foreach from=$config_defaut.inputs item="elem"}}
{{#foreach from=$elem key=label item=value}} {{#foreach from=$elem key=label item=value}}
{{:assign var='types_entrees.%s'|args:$value value=$value}} {{:assign var='input_types.%s'|args:$value value=$value}}
{{/foreach}} {{/foreach}}
{{/foreach}} {{/foreach}}
{{* types de sorties *}} {{* types de sorties *}}
{{#foreach from=$config_defaut.sorties item="elem"}} {{#foreach from=$config_defaut.outputs item="elem"}}
{{#foreach from=$elem key=label item=value}} {{#foreach from=$elem key=label item=value}}
{{:assign var='types_sorties.%s'|args:$value value=$value}} {{:assign var='output_typess.%s'|args:$value value=$value}}
{{/foreach}} {{/foreach}}
{{/foreach}} {{/foreach}}
@ -49,11 +49,11 @@
</tr> </tr>
</thead> </thead>
<tbody id="input_body"> <tbody id="input_body">
{{#foreach from=$module.config.inputNature item="input_field"}} {{#foreach from=$module.config.input_nature item="input_field"}}
{{* Vérifier si la suppression de ce type d'entrée est possible *}} {{* Vérifier si la suppression de ce type d'entrée est possible *}}
{{:assign suppr=true}} {{:assign suppr=true}}
{{#load type="movement" where="$$.inputNature = :libelle" :libelle=$input_field.label}} {{#load type="movement" where="$$.input_nature = :libelle" :libelle=$input_field.label}}
{{:assign suppr=false}} {{:assign suppr=false}}
{{/load}} {{/load}}
@ -61,7 +61,7 @@
<td>{{:input type="text" name="input_fields[label][]" default=$input_field.label}}</td> <td>{{:input type="text" name="input_fields[label][]" default=$input_field.label}}</td>
<td>{{:input type="select" <td>{{:input type="select"
name="input_fields[type][]" name="input_fields[type][]"
options=$types_entrees options=$input_types
default=$input_field.type default=$input_field.type
required=true required=true
default_empty="— Choisir un type —"}} default_empty="— Choisir un type —"}}
@ -76,12 +76,12 @@
</tr> </tr>
{{else}} {{else}}
{{* pas de config enregistrée : utiliser les valeurs par défaut *}} {{* pas de config enregistrée : utiliser les valeurs par défaut *}}
{{#foreach from=$config_defaut.entrées item="elem"}} {{#foreach from=$config_defaut.inputs item="elem"}}
{{#foreach from=$elem key=label item=value}} {{#foreach from=$elem key=label item=value}}
{{* Vérifier si la suppression de ce type d'entrée est possible *}} {{* Vérifier si la suppression de ce type d'entrée est possible *}}
{{:assign suppr=true}} {{:assign suppr=true}}
{{#load type="movement" where="$$.inputNature = :libelle" :libelle=$label}} {{#load type="movement" where="$$.input_nature = :libelle" :libelle=$label}}
{{:assign suppr=false}} {{:assign suppr=false}}
{{/load}} {{/load}}
@ -90,7 +90,7 @@
<td>{{:input <td>{{:input
type="select" type="select"
name="input_fields[type][]" name="input_fields[type][]"
options=$types_entrees options=$input_types
required=true required=true
default=$value default=$value
default_empty="— Choisir un type —"}} default_empty="— Choisir un type —"}}
@ -134,11 +134,11 @@
</tr> </tr>
</thead> </thead>
<tbody id="output_body"> <tbody id="output_body">
{{#foreach from=$module.config.outputNature item="output_field"}} {{#foreach from=$module.config.output_nature item="output_field"}}
{{* Vérifier si la suppression de ce type de sortie est possible *}} {{* Vérifier si la suppression de ce type de sortie est possible *}}
{{:assign suppr=true}} {{:assign suppr=true}}
{{#load type="movement" where="$$.outputNature = :libelle" :libelle=$output_field.label}} {{#load type="movement" where="$$.output_nature = :libelle" :libelle=$output_field.label}}
{{:assign suppr=false}} {{:assign suppr=false}}
{{/load}} {{/load}}
@ -147,7 +147,7 @@
<td>{{:input <td>{{:input
type="select" type="select"
name="output_fields[type][]" name="output_fields[type][]"
options=$types_sorties options=$output_typess
default=$output_field.type default=$output_field.type
required=true required=true
default_empty="— Choisir un type —"}} default_empty="— Choisir un type —"}}
@ -162,12 +162,12 @@
</tr> </tr>
{{else}} {{else}}
{{* pas de config enregistrée : utiliser les valeurs par défaut *}} {{* pas de config enregistrée : utiliser les valeurs par défaut *}}
{{#foreach from=$config_defaut.sorties item="elem"}} {{#foreach from=$config_defaut.outputs item="elem"}}
{{#foreach from=$elem key=label item=value}} {{#foreach from=$elem key=label item=value}}
{{* Vérifier si la suppression de ce type de sortie est possible *}} {{* Vérifier si la suppression de ce type de sortie est possible *}}
{{:assign suppr=true}} {{:assign suppr=true}}
{{#load type="movement" where="$$.inputNature = :libelle" :libelle=$label}} {{#load type="movement" where="$$.input_nature = :libelle" :libelle=$label}}
{{:assign suppr=false}} {{:assign suppr=false}}
{{/load}} {{/load}}
@ -176,7 +176,7 @@
<td>{{:input <td>{{:input
type="select" type="select"
name="output_fields[type][]" name="output_fields[type][]"
options=$types_sorties options=$output_typess
required=true required=true
default=$value default=$value
default_empty="— Choisir un type —"}} default_empty="— Choisir un type —"}}

View File

@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object", "type": "object",
"properties": { "properties": {
"inputNature": { "input_nature": {
"description": "Nature des entrées", "description": "Nature des entrées",
"type": ["array", "null"], "type": ["array", "null"],
"items": { "items": {
@ -18,7 +18,7 @@
} }
} }
}, },
"outputNature": { "output_nature": {
"description": "Nature des sorties", "description": "Nature des sorties",
"type": ["array", "null"], "type": ["array", "null"],
"items": { "items": {

View File

@ -1,10 +1,10 @@
{ {
"entrées" : [ "inputs" : [
{ "Achat" : "définitif" }, { "Achat" : "définitif" },
{ "Location" : "temporaire" }, { "Location" : "temporaire" },
{ "Retour de Location/Prêt" : "retour" } { "Retour de Location/Prêt" : "retour" }
], ],
"sorties" : [ "outputs" : [
{ "Vente" : "définitif" }, { "Vente" : "définitif" },
{ "Prêt" : "temporaire" }, { "Prêt" : "temporaire" },
{ "Retour de Location/Emprunt" : "retour" } { "Retour de Location/Emprunt" : "retour" }

View File

@ -20,8 +20,8 @@
{{#list {{#list
type="movement" type="movement"
select="$$.date AS 'Date'; select="$$.date AS 'Date';
$$.direction AS 'Mvt'; CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mvt';
CASE $$.direction WHEN 'entrée' THEN $$.inputNature WHEN 'sortie' THEN $$.outputNature END AS 'Type'; CASE $$.direction WHEN 'input' THEN $$.input_nature WHEN 'output' THEN $$.output_nature END AS 'Type';
$$.amount AS 'Nombre'; $$.amount AS 'Nombre';
$$.comment AS 'Commentaire'" $$.comment AS 'Commentaire'"
equipment=$equipment_key equipment=$equipment_key
@ -29,7 +29,7 @@
}} }}
<tr> <tr>
<td>{{$date|date_short}}</td> <td>{{$date|date_short}}</td>
<td>{{$direction}}</td> <td>{{$col2}}</td>
<td>{{$col3}}</td> <td>{{$col3}}</td>
<td>{{$amount}}</td> <td>{{$amount}}</td>
<td>{{$comment}}</td> <td>{{$comment}}</td>

View File

@ -1,16 +1,17 @@
{{#restrict section="accounting" level="read"}}{{/restrict}}
{{:admin_header title="Gestion des matériels" custom_css=$custom_css current="module_equipment"}} {{:admin_header title="Gestion des matériels" custom_css=$custom_css current="module_equipment"}}
{{* barre de navigation *}} {{* barre de navigation *}}
{{:include file="_nav.html" current="index"}} {{:include file="_nav.html" current="index"}}
{{#select {{if $_GET.ok}}
key <p class="block confirm">Modification effectuée</p>
FROM module_data_equipment as cat {{elseif $_GET.err}}
WHERE json_extract(cat.document, '$.type') = 'category' <p class="block error">Modification refusée</p>
}} {{/if}}
{{#load type="category"}}
{{:assign var="categories." value=$key}} {{:assign var="categories." value=$key}}
{{/select}} {{/load}}
{{if $categories|count == 0}} {{if $categories|count == 0}}
<p class="block alert">Il n'y a aucune catégorie : vous devez en ajouter.</p> <p class="block alert">Il n'y a aucune catégorie : vous devez en ajouter.</p>

View File

@ -48,7 +48,7 @@
category=$category.key category=$category.key
designation=$_POST.designation|trim designation=$_POST.designation|trim
}} }}
{{:redirect force="index.html?ok=1&msg=Modification enregistrée"}} {{:redirect force="index.html?ok=1"}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
@ -62,8 +62,10 @@
<form method="post" action=""> <form method="post" action="">
<fieldset class="modification"> <fieldset class="modification">
<legend>Modifier un matériel</legend> <legend>Modifier un matériel</legend>
<dl>
{{:input type="select" name="category" label="Catégorie" default=$default_category required=true options=$categories}} {{:input type="select" name="category" label="Catégorie" default=$default_category required=true options=$categories}}
{{:input type="text" name="designation" label="Désignation" default=$equipment.designation required=true}} {{:input type="text" name="designation" label="Désignation" default=$equipment.designation required=true}}
</dl>
</fieldset> </fieldset>
<p class="submit"> <p class="submit">

View File

@ -34,10 +34,10 @@
{{if $key != $_GET.key}} {{if $key != $_GET.key}}
{{* ce n'est pas le mouvement à supprimer : cumuler les entrées/sorties *}} {{* ce n'est pas le mouvement à supprimer : cumuler les entrées/sorties *}}
{{if $movement.direction == 'entrée'}} {{if $movement.direction == 'input'}}
{{* chercher le type d'entrée parmi les types de la config *}} {{* chercher le type d'entrée parmi les types de la config *}}
{{#foreach from=$config.inputNature item="elem"}} {{#foreach from=$config.input_nature item="elem"}}
{{if $movement.inputNature == $elem.label}} {{if $movement.input_nature == $elem.label}}
{{if $elem.type == 'temporaire'}} {{if $elem.type == 'temporaire'}}
{{:assign nonprop="%d+%d"|math:$nonprop:$movement.amount}} {{:assign nonprop="%d+%d"|math:$nonprop:$movement.amount}}
{{else}} {{else}}
@ -45,10 +45,10 @@
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{elseif $movement.direction == 'sortie'}} {{elseif $movement.direction == 'output'}}
{{* chercher le type de sortie parmi les types de la config *}} {{* chercher le type de sortie parmi les types de la config *}}
{{#foreach from=$config.outputNature item="elem"}} {{#foreach from=$config.output_nature item="elem"}}
{{if $movement.outputNature == $elem.label}} {{if $movement.output_nature == $elem.label}}
{{if $elem.type == 'retour'}} {{if $elem.type == 'retour'}}
{{:assign nonprop="%d-%d"|math:$nonprop:$movement.amount}} {{:assign nonprop="%d-%d"|math:$nonprop:$movement.amount}}
{{else}} {{else}}
@ -60,7 +60,7 @@
{{* problème ? *}} {{* problème ? *}}
{{if $dispo < 0 || $nonprop < 0}} {{if $dispo < 0 || $nonprop < 0}}
{{:redirect force="./index.html?err=1&msg=Impossible de supprimer l'entrée « %s %s (%d) en date du %s »"|args:$mvt_suppr.inputNature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr}} {{:redirect force="./index.html?err=1&msg=suppression"}}
{{/if}} {{/if}}
{{/if}} {{/if}}
@ -68,14 +68,14 @@
{{* vérification réussie : supprimer l'entrée *}} {{* vérification réussie : supprimer l'entrée *}}
{{:delete key=$_GET.key}} {{:delete key=$_GET.key}}
{{:assign var="msg" value="Entrée « %s %s (%d) en date du %s » supprimée"|args:$mvt_suppr.inputNature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr}} {{:assign var="msg" value="suppression"}}
{{* voir s'il reste des mouvements pour le matériel concerné par le mouvement supprimé *}} {{* 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}} {{#load type="movement" where="$$.equipment = :eqpmt_key" :eqpmt_key=$key_eqpmt_suppr}}
{{else}} {{else}}
{{* supprimer le matériel *}} {{* supprimer le matériel *}}
{{:delete key=$key_eqpmt_suppr}} {{:delete key=$key_eqpmt_suppr}}
{{:assign var="msg" value="%s - Matériel « %s » supprimé"|args:$msg:$eqpmt_suppr.designation}} {{:assign var="msg" value="%s - matériel"|args:$msg}}
{{/load}} {{/load}}
{{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}} {{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}}
@ -83,7 +83,7 @@
{{:delete_form {{:delete_form
legend="Supprimer cette entrée ?" legend="Supprimer cette entrée ?"
warning="Supprimer l'entrée « %s %s (%d) en date du %s » ?"|args:$mvt_suppr.inputNature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr 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é" info="S'il ne reste aucun mouvement pour ce matériel, le matériel sera supprimé"
}} }}

View File

@ -5,17 +5,31 @@
{{:include file="../../_nav.html" current="entrees"}} {{:include file="../../_nav.html" current="entrees"}}
{{if $_GET.ok}} {{if $_GET.ok}}
<p class="block confirm">{{$_GET.msg}}</p> {{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}}
<p class="block confirm">{{$msg}}</p>
{{elseif $_GET.err}} {{elseif $_GET.err}}
<p class="block error">{{$_GET.msg}}</p> {{if $_GET.msg == "suppression"}}
<p class="block error">Impossible de supprimer l'entrée</p>
{{/if}}
{{/if}} {{/if}}
<form method="post" action=""> <form method="post" action="">
<fieldset class="entree"> <fieldset class="entree">
<legend>Ajouter une entrée</legend> <legend>Ajouter une entrée</legend>
{{:linkbutton label="Matériel répertorié" shape="plus" href="repertorie.html?dialog" target="_dialog"}} <dl>
{{:linkbutton label="Matériel non répertorié" shape="plus" href="non_repertorie.html?dialog" target="_dialog"}} {{:linkbutton label="Matériel répertorié" shape="plus" href="repertorie.html" target="_dialog"}}
{{:linkbutton label="Retour de sortie temporaire" shape="plus" href="retour.html?dialog" target="_dialog"}} {{:linkbutton label="Matériel non répertorié" shape="plus" href="non_repertorie.html" target="_dialog"}}
{{:linkbutton label="Retour de sortie temporaire" shape="plus" href="retour.html" target="_dialog"}}
</dl>
</fieldset> </fieldset>
</form> </form>
@ -26,7 +40,7 @@
{{#list {{#list
select=" select="
$$.date AS 'Date' ; $$.date AS 'Date' ;
$$.inputNature AS 'Type' ; $$.input_nature AS 'Type' ;
$$.amount AS 'Nombre' ; $$.amount AS 'Nombre' ;
(SELECT $$.designation (SELECT $$.designation
FROM @TABLE AS b FROM @TABLE AS b
@ -34,13 +48,13 @@
AS 'Matériel' ; AS 'Matériel' ;
$$.comment AS 'Remarques'" $$.comment AS 'Remarques'"
type="movement" type="movement"
direction="entrée" direction="input"
order=1}} order=1}}
{{:assign var='mvt_key' value=$key}} {{:assign var='mvt_key' value=$key}}
<tr> <tr>
<td>{{$date|date_short}}</td> <td>{{$date|date_short}}</td>
<td>{{$inputNature}}</td> <td>{{$input_nature}}</td>
<td>{{$amount}}</td> <td>{{$amount}}</td>
<td>{{$col4}}</td> <td>{{$col4}}</td>
<td>{{$comment}}</td> <td>{{$comment}}</td>
@ -52,7 +66,7 @@
target="_dialog"}} target="_dialog"}}
{{:linkbutton {{:linkbutton
label="Modifier" label="Modifier"
href="../modifier_mouvement.html?key=%s&direction=entrée&caller=%s"|args:$mvt_key:$request_url href="../modifier_mouvement.html?key=%s&direction=input&caller=%s"|args:$mvt_key:$request_url
shape="edit" shape="edit"
target="_dialog"}} target="_dialog"}}
</td> </td>

View File

@ -1,22 +1,18 @@
{{#restrict section="accounting" level="write" block=true}}{{/restrict}} {{#restrict section="accounting" level="write" block=true}}{{/restrict}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}} {{:admin_header title="Entrée de matériel" current="module_equipment"}}
{{if $_GET.dialog === null}} {{* barre de navigation *}}
{{* barre de navigation *}} {{if ! $dialog}}
{{:include file="../../_nav.html" current="entrees"}} {{:include file="../../_nav.html" current="entrees"}}
{{else}}
<header class="header">
<h1>Entrée de matériel</h1>
</header>
{{/if}} {{/if}}
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="../../_get_config.html" keep="config"}} {{:include file="../../_get_config.html" keep="config"}}
{{* types d'entrées *}} {{* types d'entrées *}}
{{#foreach from=$config.inputNature item="elem"}} {{#foreach from=$config.input_nature item="elem"}}
{{if $elem.type != 'retour'}} {{if $elem.type != 'retour'}}
{{:assign var='types_entrees.' value="%s"|args:$elem.label}} {{:assign var='input_types.' value="%s"|args:$elem.label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -47,21 +43,21 @@
{{* Enregistrer le mouvement *}} {{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}} {{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="types_entrees.%d|args:$_POST.type_operation}} {{:assign var="operation" from="input_types.%d"|args:$_POST.type_operation}}
{{:save {{:save
key=$mvt_key key=$mvt_key
validate_schema="../movement.schema.json" validate_schema="../movement.schema.json"
type="movement" type="movement"
direction="entrée" direction="input"
inputNature=$operation input_nature=$operation
amount=$_POST.quantite|intval amount=$_POST.quantite|intval
equipment=$equipment_key equipment=$equipment_key
date=$_POST.date|parse_date date=$_POST.date|parse_date
comment=$_POST.remarques|trim comment=$_POST.remarques|trim
}} }}
{{:redirect force="index.html?ok=1&msg=Entrée de « %s » enregistrée"|args:$_POST.designation}} {{:redirect force="index.html?ok=1&msg=entrée"}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
{{/form}} {{/form}}
@ -76,18 +72,22 @@
<form method="post" action=""> <form method="post" action="">
<fieldset class="entree"> <fieldset class="entree">
<legend>Ajouter une entrée d'un matériel non répertorié</legend> <legend>Ajouter une entrée d'un matériel non répertorié</legend>
{{:input type="select" name="type_operation" label="Type" required=true options=$types_entrees}} <dl>
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="select" name="type_operation" label="Type" required=true options=$input_types}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1}}
</dl>
</fieldset>
<fieldset> <fieldset>
<legend>Matériel</legend> <legend>Matériel</legend>
{{:input type="select" name="category" label="Catégorie" required=true options=$categories}} <dl>
{{:input type="text" name="designation" label="Désignation" required=true}} {{:input type="select" name="category" label="Catégorie" required=true options=$categories}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false}} {{:input type="text" name="designation" label="Désignation" required=true}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false}}
</dl>
</fieldset> </fieldset>
</fieldset>
<p class="submit"> <p class="submit">
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}

View File

@ -1,22 +1,18 @@
{{#restrict section="accounting" level="write" block=true}}{{/restrict}} {{#restrict section="accounting" level="write" block=true}}{{/restrict}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}} {{:admin_header title="Entrée de matériel" current="module_equipment"}}
{{if $_GET.dialog === null}} {{* barre de navigation *}}
{{* barre de navigation *}} {{if ! $dialog}}
{{:include file="../../_nav.html" current="entrees"}} {{:include file="../../_nav.html" current="entrees"}}
{{else}}
<header class="header">
<h1>Entrée de matériel</h1>
</header>
{{/if}} {{/if}}
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="../../_get_config.html" keep="config"}} {{:include file="../../_get_config.html" keep="config"}}
{{* types d'entrées *}} {{* types d'entrées *}}
{{#foreach from=$config.inputNature item="elem"}} {{#foreach from=$config.input_nature item="elem"}}
{{if $elem.type != 'retour'}} {{if $elem.type != 'retour'}}
{{:assign var='types_entrees.' value="%s"|args:$elem.label}} {{:assign var='input_types.' value="%s"|args:$elem.label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -28,21 +24,21 @@
{{* Enregistrer le mouvement *}} {{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}} {{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="types_entrees.%d|args:$_POST.type_operation}} {{:assign var="operation" from="input_types.%d|args:$_POST.type_operation}}
{{:save {{:save
key=$mvt_key key=$mvt_key
validate_schema="../movement.schema.json" validate_schema="../movement.schema.json"
type="movement" type="movement"
direction="entrée" direction="input"
inputNature=$operation input_nature=$operation
amount=$_POST.quantite|intval amount=$_POST.quantite|intval
equipment=$equipment.key equipment=$equipment.key
date=$_POST.date|parse_date date=$_POST.date|parse_date
comment=$_POST.remarques|trim comment=$_POST.remarques|trim
}} }}
{{:redirect force="index.html?ok=1&msg=Entrée de « %s » enregistrée"|args:$equipment.designation}} {{:redirect force="index.html?ok=1&msg=entrée"}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
{{/form}} {{/form}}
@ -64,15 +60,19 @@
<fieldset class="entree"> <fieldset class="entree">
<legend>Ajouter une entrée d'un matériel répertorié</legend> <legend>Ajouter une entrée d'un matériel répertorié</legend>
{{:input type="select" name="type_operation" label="Type" required=true options=$types_entrees}} <dl>
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="select" name="type_operation" label="Type" required=true options=$input_types}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1}}
</dl>
</fieldset>
<fieldset> <fieldset>
<legend>Matériel</legend> <legend>Matériel</legend>
{{:input type="select_groups" name="equipment" label="Matériel" required=true options=$equipments}} <dl>
{{:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false}} {{:input type="select_groups" name="equipment" label="Matériel" required=true options=$equipments}}
</fieldset> {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
</dl>
</fieldset> </fieldset>
<p class="submit"> <p class="submit">

View File

@ -1,22 +1,18 @@
{{#restrict section="accounting" level="write" block=true}}{{/restrict}} {{#restrict section="accounting" level="write" block=true}}{{/restrict}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}} {{:admin_header title="Entrée de matériel" current="module_equipment"}}
{{if $_GET.dialog === null}} {{* barre de navigation *}}
{{* barre de navigation *}} {{if ! $dialog}}
{{:include file="../../_nav.html" current="entrees"}} {{:include file="../../_nav.html" current="entrees"}}
{{else}}
<header class="header">
<h1>Entrée de matériel</h1>
</header>
{{/if}} {{/if}}
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="../../_get_config.html" keep="config"}} {{:include file="../../_get_config.html" keep="config"}}
{{* types d'entrées *}} {{* types d'entrées *}}
{{#foreach from=$config.inputNature item="elem"}} {{#foreach from=$config.input_nature item="elem"}}
{{if $elem.type == 'retour'}} {{if $elem.type == 'retour'}}
{{:assign var='types_entrees.' value="%s"|args:$elem.label}} {{:assign var='input_types.' value="%s"|args:$elem.label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -44,21 +40,21 @@
{{* Enregistrer le mouvement *}} {{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}} {{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="types_entrees.%d|args:$_POST.type_operation}} {{:assign var="operation" from="input_types.%d|args:$_POST.type_operation}}
{{:save {{:save
key=$mvt_key key=$mvt_key
validate_schema="../movement.schema.json" validate_schema="../movement.schema.json"
type="movement" type="movement"
direction="entrée" direction="input"
inputNature=$operation input_nature=$operation
amount=$_POST.quantite|intval amount=$_POST.quantite|intval
equipment=$equipment.key equipment=$equipment.key
date=$_POST.date|parse_date date=$_POST.date|parse_date
comment=$_POST.remarques|trim comment=$_POST.remarques|trim
}} }}
{{:redirect force="index.html?ok=1&msg=Entrée de « %s » enregistrée"|args:$equipment.designation}} {{:redirect force="index.html?ok=1&msg=entrée"}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
{{/form}} {{/form}}
@ -87,16 +83,20 @@
<form method="post" action=""> <form method="post" action="">
<fieldset class="entree"> <fieldset class="entree">
<legend>Ajouter une entrée pour un retour de matériel</legend> <legend>Ajouter une entrée pour un retour de matériel</legend>
{{:input type="select" name="type_operation" label="Type" required=true options=$types_entrees}} <dl>
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}} {{:input type="select" name="type_operation" label="Type" required=true options=$input_types}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1}} {{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1}}
</dl>
</fieldset>
<fieldset> <fieldset>
<legend>Matériel</legend> <legend>Matériel</legend>
<dl>
{{:input type="select_groups" name="equipment" label="Matériel" required=true options=$temporaire}} {{:input type="select_groups" name="equipment" label="Matériel" required=true options=$temporaire}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false}} {{:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false}}
</fieldset> </dl>
</fieldset> </fieldset>
<p class="submit"> <p class="submit">

View File

@ -16,10 +16,10 @@
{{else}} {{else}}
{{:error message="Aucune %s avec la clé %s"|args:$_GET.direction:$key_mvt}} {{:error message="Aucune %s avec la clé %s"|args:$_GET.direction:$key_mvt}}
{{/load}} {{/load}}
{{if $direction == "entrée"}} {{if $direction == "input"}}
{{:assign input_init=$mvt_modif.inputNature}} {{:assign input_init=$mvt_modif.input_nature}}
{{else}} {{else}}
{{:assign output_init=$mvt_modif.outputNature}} {{:assign output_init=$mvt_modif.output_nature}}
{{/if}} {{/if}}
{{:assign amount_init=$mvt_modif.amount}} {{:assign amount_init=$mvt_modif.amount}}
{{:assign date_init=$mvt_modif.date|date_short}} {{:assign date_init=$mvt_modif.date|date_short}}
@ -30,19 +30,19 @@
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="../_get_config.html" keep="config"}} {{:include file="../_get_config.html" keep="config"}}
{{if $direction == "entrée"}} {{if $direction == "input"}}
{{* types d'entrées *}} {{* types d'entrées *}}
{{#foreach from=$config.inputNature key="rang" item="elem"}} {{#foreach from=$config.input_nature key="rang" item="elem"}}
{{:assign var='types_entrees.' value="%s"|args:$elem.label}} {{:assign var='input_types.' value="%s"|args:$elem.label}}
{{if $elem.label == $mvt_modif.inputNature}} {{if $elem.label == $mvt_modif.input_nature}}
{{:assign type_defaut=$rang}} {{:assign type_defaut=$rang}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{else}} {{else}}
{{* types de sorties *}} {{* types de sorties *}}
{{#foreach from=$config.outputNature key="rang" item="elem"}} {{#foreach from=$config.output_nature key="rang" item="elem"}}
{{:assign var='types_sorties.' value="%s"|args:$elem.label}} {{:assign var='types_sorties.' value="%s"|args:$elem.label}}
{{if $elem.label == $mvt_modif.outputNature}} {{if $elem.label == $mvt_modif.output_nature}}
{{:assign type_defaut=$rang}} {{:assign type_defaut=$rang}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -59,10 +59,10 @@
*}} *}}
{{#form on="change"}} {{#form on="change"}}
{{* préparer le mouvement modifié *}} {{* préparer le mouvement modifié *}}
{{if $direction == "entrée"}} {{if $direction == "input"}}
{{:assign var="mvt_modif.inputNature" from="types_entrees.%d"|args:$_POST.type_operation}} {{:assign var="mvt_modif.input_nature" from="input_types.%d"|args:$_POST.type_operation}}
{{else}} {{else}}
{{:assign var="mvt_modif.outputNature" from="types_sorties.%d"|args:$_POST.type_operation}} {{:assign var="mvt_modif.output_nature" from="types_sorties.%d"|args:$_POST.type_operation}}
{{/if}} {{/if}}
{{:assign var="mvt_modif.amount" value=$_POST.amount}} {{:assign var="mvt_modif.amount" value=$_POST.amount}}
{{:assign var="mvt_modif.equipment" value=$_POST.equipment}} {{:assign var="mvt_modif.equipment" value=$_POST.equipment}}
@ -78,8 +78,8 @@
id, key, id, key,
json_extract(document, '$.type') as 'type', json_extract(document, '$.type') as 'type',
json_extract(document, '$.direction') as 'direction', json_extract(document, '$.direction') as 'direction',
json_extract(document, '$.inputNature') as 'inputNature', json_extract(document, '$.input_nature') as 'input_nature',
json_extract(document, '$.outputNature') as 'outputNature', json_extract(document, '$.output_nature') as 'output_nature',
json_extract(document, '$.amount') as 'amount', json_extract(document, '$.amount') as 'amount',
json_extract(document, '$.equipment') as 'equipment', json_extract(document, '$.equipment') as 'equipment',
json_extract(document, '$.date') as 'date', json_extract(document, '$.date') as 'date',
@ -130,12 +130,12 @@
{{if $erreur}} {{if $erreur}}
<p class="block error"> <p class="block error">
Modification demandée impossible : Modification demandée impossible :
{{if $direction == "entrée"}} {{if $direction == "input"}}
« {{$input_init}} de {{$eqpmt_init.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers « {{$input_init}} de {{$eqpmt_init.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers
« {{$mvt_modif.inputNature}} de {{$eqpmt.designation}} (qté : {{$mvt_modif.amount}}) à la date du {{$mvt_modif.date|date_short}} » « {{$mvt_modif.input_nature}} de {{$eqpmt.designation}} (qté : {{$mvt_modif.amount}}) à la date du {{$mvt_modif.date|date_short}} »
{{else}} {{else}}
« {{$output_init}} de {{$eqpmt_init.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers « {{$output_init}} de {{$eqpmt_init.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers
« {{$mvt_modif.outputNature}} de {{$eqpmt.designation}} (qté : {{$mvt_modif.amount}}) à la date du {{$mvt_modif.date|date_short}} » « {{$mvt_modif.output_nature}} de {{$eqpmt.designation}} (qté : {{$mvt_modif.amount}}) à la date du {{$mvt_modif.date|date_short}} »
{{/if}} {{/if}}
</p> </p>
{{else}} {{else}}
@ -145,14 +145,14 @@
validate_schema="./movement.schema.json" validate_schema="./movement.schema.json"
type="movement" type="movement"
direction=$direction direction=$direction
inputNature=$mvt_modif.inputNature input_nature=$mvt_modif.input_nature
outputNature=$mvt_modif.outputNature output_nature=$mvt_modif.output_nature
amount=$mvt_modif.amount|intval amount=$mvt_modif.amount|intval
equipment=$mvt_modif.equipment equipment=$mvt_modif.equipment
date=$mvt_modif.date date=$mvt_modif.date
comment=$mvt_modif.comment comment=$mvt_modif.comment
}} }}
{{:redirect force="%s?ok=1&msg=Modification enregistrée"|args:$url}} {{:redirect force="%s?ok=1&msg=modification"|args:$url}}
{{/if}} {{/if}}
{{/form}} {{/form}}
@ -173,22 +173,27 @@
<form method="post" action=""> <form method="post" action="">
<fieldset class="entree"> <fieldset class="entree">
{{if $direction == "entrée"}} {{if $direction == "input"}}
<legend>Modifier l'entrée « {{$input_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} »</legend> <legend>Modifier l'entrée « {{$input_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} »</legend>
{{:input type="select" name="type_operation" label="Type" required=true options=$types_entrees default=$type_defaut}} <dl>
{{:input type="select" name="type_operation" label="Type" required=true options=$input_types default=$type_defaut}}
{{else}} {{else}}
<legend>Modifier la sortie « {{$output_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} »</legend> <legend>Modifier la sortie « {{$output_init}} {{$eqpmt_init.designation}} ({{$amount_init}}) en date du {{$date_init}} »</legend>
<dl>
{{:input type="select" name="type_operation" label="Type" required=true options=$types_sorties default=$type_defaut}} {{:input type="select" name="type_operation" label="Type" required=true options=$types_sorties default=$type_defaut}}
{{/if}} {{/if}}
{{:input type="date" name="date" label="Date" required=true default=$mvt_modif.date}} {{: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="number" name="amount" label="Quantité" required=true default=$mvt_modif.amount}}
</dl>
</fieldset>
<fieldset> <fieldset>
<legend>Matériel</legend> <legend>Matériel</legend>
<dl>
{{:input type="select_groups" name="equipment" label="Matériel" required=true options=$equipments default=$key_eqpmt_init}} {{: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}} {{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false default=$mvt_modif.comment}}
</dl>
</fieldset> </fieldset>
</fieldset>
<p class="submit"> <p class="submit">
{{:button type="submit" name="change" label="Enregistrer" shape="right" class="main"}} {{:button type="submit" name="change" label="Enregistrer" shape="right" class="main"}}

View File

@ -9,13 +9,13 @@
"direction" : { "direction" : {
"description": "Entrée ou sortie", "description": "Entrée ou sortie",
"type": "string", "type": "string",
"enum": ["entrée", "sortie"] "enum": ["input", "output"]
}, },
"inputNature": { "input_nature": {
"description": "Nature de l'entrée", "description": "Nature de l'entrée",
"type": ["null", "string"] "type": ["null", "string"]
}, },
"outputNature": { "output_nature": {
"description": "Nature de la sortie", "description": "Nature de la sortie",
"type": ["null", "string"] "type": ["null", "string"]
}, },

View File

@ -23,8 +23,8 @@
{{* déterminer s'il s'agit d'une sortie temporaire *}} {{* déterminer s'il s'agit d'une sortie temporaire *}}
{{:assign temporaire=false}} {{:assign temporaire=false}}
{{#foreach from=$config.outputNature item="elem"}} {{#foreach from=$config.output_nature item="elem"}}
{{if $mvt_suppr.outputNature == $elem.label && $elem.type == 'temporaire'}} {{if $mvt_suppr.output_nature == $elem.label && $elem.type == 'temporaire'}}
{{:assign temporaire=true}} {{:assign temporaire=true}}
{{:break}} {{:break}}
{{/if}} {{/if}}
@ -41,17 +41,17 @@
{{if $key != $_GET.key}} {{if $key != $_GET.key}}
{{* ce n'est pas le mouvement à supprimer : cumuler les entrées/sorties *}} {{* ce n'est pas le mouvement à supprimer : cumuler les entrées/sorties *}}
{{if $movement.direction == 'entrée'}} {{if $movement.direction == 'input'}}
{{* chercher le type d'entrée parmi les types de la config *}} {{* chercher le type d'entrée parmi les types de la config *}}
{{#foreach from=$config.inputNature item="elem"}} {{#foreach from=$config.input_nature item="elem"}}
{{if $movement.inputNature == $elem.label && $elem.type == 'retour'}} {{if $movement.input_nature == $elem.label && $elem.type == 'retour'}}
{{:assign exterieur="%d-%d"|math:$exterieur:$movement.amount}} {{:assign exterieur="%d-%d"|math:$exterieur:$movement.amount}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{elseif $movement.direction == 'sortie'}} {{elseif $movement.direction == 'output'}}
{{* chercher le type de sortie parmi les types de la config *}} {{* chercher le type de sortie parmi les types de la config *}}
{{#foreach from=$config.outputNature item="elem"}} {{#foreach from=$config.output_nature item="elem"}}
{{if $movement.outputNature == $elem.label && $elem.type == 'temporaire'}} {{if $movement.output_nature == $elem.label && $elem.type == 'temporaire'}}
{{:assign exterieur="%d+%d"|math:$exterieur:$movement.amount}} {{:assign exterieur="%d+%d"|math:$exterieur:$movement.amount}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -59,7 +59,7 @@
{{* problème ? *}} {{* problème ? *}}
{{if $exterieur < 0}} {{if $exterieur < 0}}
{{:redirect force="./index.html?err=1&msg=Impossible de supprimer la sortie « %s %s (%d) en date du %s »"|args:$mvt_suppr.outputNature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr}} {{:redirect force="./index.html?err=1&msg=suppression"}}
{{/if}} {{/if}}
{{/if}} {{/if}}
@ -68,14 +68,14 @@
{{* vérification réussie : supprimer la sortie *}} {{* vérification réussie : supprimer la sortie *}}
{{:delete key=$_GET.key}} {{:delete key=$_GET.key}}
{{:assign var="msg" value="Sortie « %s %s (%d) en date du %s » supprimée"|args:$mvt_suppr.outputNature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr}} {{:assign var="msg" value="suppression"}}
{{* voir s'il reste des mouvements pour le matériel concerné par le mouvement supprimé *}} {{* 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}} {{#load type="movement" where="$$.equipment = :eqpmt_key" :eqpmt_key=$key_eqpmt_suppr}}
{{else}} {{else}}
{{* supprimer le matériel *}} {{* supprimer le matériel *}}
{{:delete key=$key_eqpmt_suppr}} {{:delete key=$key_eqpmt_suppr}}
{{:assign var="msg" value="%s - Matériel « %s » supprimé"|args:$msg:$eqpmt_suppr.designation}} {{:assign var="msg" value="%s - matériel"|args:$msg}}
{{/load}} {{/load}}
{{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}} {{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}}
@ -83,7 +83,7 @@
{{:delete_form {{:delete_form
legend="Supprimer cette sortie ?" legend="Supprimer cette sortie ?"
warning="Supprimer la sortie « %s %s (%d) en date du %s » ?"|args:$mvt_suppr.outputNature:$eqpmt_suppr.designation:$amount_suppr:$date_suppr 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é" info="S'il ne reste aucun mouvement pour ce matériel, le matériel sera supprimé"
}} }}

View File

@ -1,22 +1,18 @@
{{#restrict section="accounting" level="read"}}{{/restrict}} {{#restrict section="accounting" level="read"}}{{/restrict}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}} {{:admin_header title="Sortie de matériel" current="module_equipment"}}
{{if $_GET.dialog === null}} {{if ! $dialog}}
{{* barre de navigation *}} {{* barre de navigation *}}
{{:include file="../../_nav.html" current="sorties"}} {{:include file="../../_nav.html" current="sorties"}}
{{else}}
<header class="header">
<h1>Sortie de matériel</h1>
</header>
{{/if}} {{/if}}
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="../../_get_config.html" keep="config"}} {{:include file="../../_get_config.html" keep="config"}}
{{* types de sorties *}} {{* types de sorties *}}
{{#foreach from=$config.outputNature item="elem"}} {{#foreach from=$config.output_nature item="elem"}}
{{if $elem.type == 'retour'}} {{if $elem.type == 'retour'}}
{{:assign var='types_sorties.' value="%s"|args:$elem.label}} {{:assign var='output_types.' value="%s"|args:$elem.label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -45,19 +41,19 @@
{{* Enregistrer le mouvement *}} {{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}} {{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="types_sorties.%d|args:$_POST.type_operation}} {{:assign var="operation" from="output_types.%d|args:$_POST.type_operation}}
{{:save {{:save
key=$mvt_key key=$mvt_key
validate_schema="../movement.schema.json" validate_schema="../movement.schema.json"
type="movement" type="movement"
direction="sortie" direction="output"
outputNature=$operation output_nature=$operation
amount=$_POST.quantite|intval amount=$_POST.quantite|intval
equipment=$equipment.key equipment=$equipment.key
date=$_POST.date|parse_date date=$_POST.date|parse_date
comment=$_POST.remarques|trim comment=$_POST.remarques|trim
}} }}
{{:redirect force="index.html?ok=1&msg=Sortie de « %s » (%d) enregistrée"|args:$designation:$_POST.quantite}} {{:redirect force="index.html?ok=1&msg=sortie"}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
{{/form}} {{/form}}
@ -84,16 +80,21 @@
<form method="post" action=""> <form method="post" action="">
<fieldset class="sortie"> <fieldset class="sortie">
<legend>Ajouter une sortie d'un matériel disponible en stock</legend> <legend>Ajouter une sortie d'un matériel disponible en stock</legend>
{{:input type="select" name="type_operation" label="Type" required=true options=$types_sorties}} <dl>
{{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}} {{:input type="select" name="type_operation" label="Type" required=true options=$output_types}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1 min=1}} {{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}}
<fieldset> {{:input type="number" name="quantite" label="Quantité" required=true default=1 min=1}}
</dl>
</fieldset>
<fieldset>
<legend>Matériel</legend> <legend>Matériel</legend>
<p><span class="alert">La quantité disponible est celle à la date du jour</span></p> <p><span class="alert">La quantité disponible est celle à la date du jour</span></p>
<dl>
{{:input type="select_groups" name="equipment" label="Matériel" required=true options=$temporaire onchange="fixerValeurMax('f_equipment', 'f_quantite')"}} {{:input type="select_groups" name="equipment" label="Matériel" required=true options=$temporaire onchange="fixerValeurMax('f_equipment', 'f_quantite')"}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}} {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
</fieldset> </dl>
</fieldset> </fieldset>
<p class="submit"> <p class="submit">

View File

@ -5,16 +5,30 @@
{{:include file="../../_nav.html" current="sorties"}} {{:include file="../../_nav.html" current="sorties"}}
{{if $_GET.ok}} {{if $_GET.ok}}
<p class="block confirm">{{$_GET.msg}}</p> {{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}}
<p class="block confirm">{{$msg}}</p>
{{elseif $_GET.err}} {{elseif $_GET.err}}
<p class="block error">{{$_GET.msg}}</p> {{if $_GET.msg == "suppression"}}
<p class="block error">Impossible de supprimer la sortie</p>
{{/if}}
{{/if}} {{/if}}
<form method="post" action=""> <form method="post" action="">
<fieldset class="sortie"> <fieldset class="sortie">
<legend>Ajouter une sortie </legend> <legend>Ajouter une sortie </legend>
{{:linkbutton label="Matériel en stock disponible" shape="plus" href="stock_disponible.html?dialog" target="_dialog"}} <dl>
{{:linkbutton label="Matériel emprunté" shape="plus" href="emprunte.html?dialog" target="_dialog"}} {{:linkbutton label="Matériel en stock disponible" shape="plus" href="stock_disponible.html" target="_dialog"}}
{{:linkbutton label="Matériel emprunté" shape="plus" href="emprunte.html" target="_dialog"}}
</dl>
</fieldset> </fieldset>
</form> </form>
@ -25,7 +39,7 @@
{{#list {{#list
select=" select="
$$.date AS 'Date' ; $$.date AS 'Date' ;
$$.outputNature AS 'Type' ; $$.output_nature AS 'Type' ;
$$.amount AS 'Nombre' ; $$.amount AS 'Nombre' ;
(SELECT $$.designation (SELECT $$.designation
FROM @TABLE AS b FROM @TABLE AS b
@ -33,13 +47,13 @@
AS 'Matériel' ; AS 'Matériel' ;
$$.comment AS 'Remarques'" $$.comment AS 'Remarques'"
type="movement" type="movement"
direction="sortie" direction="output"
order=1}} order=1}}
{{:assign var='mvt_key' value=$key}} {{:assign var='mvt_key' value=$key}}
<tr> <tr>
<td>{{$date|date_short}}</td> <td>{{$date|date_short}}</td>
<td>{{$outputNature}}</td> <td>{{$output_nature}}</td>
<td>{{$amount}}</td> <td>{{$amount}}</td>
<td>{{$col4}}</td> <td>{{$col4}}</td>
<td>{{$comment}}</td> <td>{{$comment}}</td>
@ -51,7 +65,7 @@
target="_dialog"}} target="_dialog"}}
{{:linkbutton {{:linkbutton
label="Modifier" label="Modifier"
href="../modifier_mouvement.html?key=%s&direction=sortie&caller=%s"|args:$mvt_key:$request_url href="../modifier_mouvement.html?key=%s&direction=output&caller=%s"|args:$mvt_key:$request_url
shape="edit" shape="edit"
target="_dialog"}} target="_dialog"}}
</td> </td>

View File

@ -1,22 +1,18 @@
{{#restrict section="accounting" level="write" block=true}}{{/restrict}} {{#restrict section="accounting" level="write" block=true}}{{/restrict}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}} {{:admin_header title="Sortie de matériel" current="module_equipment"}}
{{if $_GET.dialog === null}} {{if ! $dialog}}
{{* barre de navigation *}} {{* barre de navigation *}}
{{:include file="../../_nav.html" current="sorties"}} {{:include file="../../_nav.html" current="sorties"}}
{{else}}
<header class="header">
<h1>Sortie de matériel</h1>
</header>
{{/if}} {{/if}}
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="../../_get_config.html" keep="config"}} {{:include file="../../_get_config.html" keep="config"}}
{{* types de sorties *}} {{* types de sorties *}}
{{#foreach from=$config.outputNature item="elem"}} {{#foreach from=$config.output_nature item="elem"}}
{{if $elem.type != 'retour'}} {{if $elem.type != 'retour'}}
{{:assign var='types_sorties.' value="%s"|args:$elem.label}} {{:assign var='output_types.' value="%s"|args:$elem.label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -47,19 +43,19 @@
{{* Enregistrer le mouvement *}} {{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}} {{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="types_sorties.%d|args:$_POST.type_operation}} {{:assign var="operation" from="output_types.%d|args:$_POST.type_operation}}
{{:save {{:save
key=$mvt_key key=$mvt_key
validate_schema="../movement.schema.json" validate_schema="../movement.schema.json"
type="movement" type="movement"
direction="sortie" direction="output"
outputNature=$operation output_nature=$operation
amount=$_POST.quantite|intval amount=$_POST.quantite|intval
equipment=$equipment.key equipment=$equipment.key
date=$_POST.date|parse_date date=$_POST.date|parse_date
comment=$_POST.remarques|trim comment=$_POST.remarques|trim
}} }}
{{:redirect force="index.html?ok=1&msg=Sortie de « %s » (%d) enregistrée"|args:$designation:$_POST.quantite}} {{:redirect force="index.html?ok=1&msg=sortie"}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
{{/form}} {{/form}}
@ -86,16 +82,21 @@
<form method="post" action=""> <form method="post" action="">
<fieldset class="sortie"> <fieldset class="sortie">
<legend>Ajouter une sortie d'un matériel disponible en stock</legend> <legend>Ajouter une sortie d'un matériel disponible en stock</legend>
{{:input type="select" name="type_operation" label="Type" required=true options=$types_sorties}} <dl>
{{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}} {{:input type="select" name="type_operation" label="Type" required=true options=$output_types}}
{{:input type="number" name="quantite" label="Quantité" required=true default=1 min=1}} {{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}}
<fieldset> {{:input type="number" name="quantite" label="Quantité" required=true default=1 min=1}}
</dl>
</fieldset>
<fieldset>
<legend>Matériel</legend> <legend>Matériel</legend>
<p><span class="alert">La quantité disponible est celle à la date du jour</span></p> <p><span class="alert">La quantité disponible est celle à la date du jour</span></p>
<dl>
{{:input type="select_groups" name="equipment" label="Matériel" required=true options=$disponibilites onchange="fixerValeurMax('f_equipment', 'f_quantite')"}} {{: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}} {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
</fieldset> </dl>
</fieldset> </fieldset>
<p class="submit"> <p class="submit">

View File

@ -14,10 +14,10 @@
{{:assign nonprop=0}} {{:assign nonprop=0}}
{{#foreach from=$movements item="movement"}} {{#foreach from=$movements item="movement"}}
{{if $movement.equipment == $eqpmt_key}} {{if $movement.equipment == $eqpmt_key}}
{{if $movement.direction == 'entrée'}} {{if $movement.direction == 'input'}}
{{* chercher le type d'entrée parmi les types de la config *}} {{* chercher le type d'entrée parmi les types de la config *}}
{{#foreach from=$config.inputNature item="elem"}} {{#foreach from=$config.input_nature item="elem"}}
{{if $movement.inputNature == $elem.label}} {{if $movement.input_nature == $elem.label}}
{{if $elem.type == 'définitif'}} {{if $elem.type == 'définitif'}}
{{:assign stock="%d+%d"|math:$stock:$movement.amount}} {{:assign stock="%d+%d"|math:$stock:$movement.amount}}
{{elseif $elem.type == 'retour'}} {{elseif $elem.type == 'retour'}}
@ -27,10 +27,10 @@
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{elseif $movement.direction == 'sortie'}} {{elseif $movement.direction == 'output'}}
{{* chercher le type de sortie parmi les types de la config *}} {{* chercher le type de sortie parmi les types de la config *}}
{{#foreach from=$config.outputNature item="elem"}} {{#foreach from=$config.output_nature item="elem"}}
{{if $movement.outputNature == $elem.label}} {{if $movement.output_nature == $elem.label}}
{{if $elem.type == 'définitif'}} {{if $elem.type == 'définitif'}}
{{:assign stock="%d-%d"|math:$stock:$movement.amount}} {{:assign stock="%d-%d"|math:$stock:$movement.amount}}
{{elseif $elem.type == 'temporaire'}} {{elseif $elem.type == 'temporaire'}}