Compare commits

..

No commits in common. "64d57b8560861983ace646930a4a64b3ae5dfe8c" and "79a37198920beb6a99c74aaeaa20b0633ee4f3cf" have entirely different histories.

13 changed files with 208 additions and 434 deletions

View File

@ -26,6 +26,7 @@
{{#foreach from=$module.config.output_nature item="elem"}} {{#foreach from=$module.config.output_nature item="elem"}}
{{:assign var="config.output_nature.%s"|args:$elem.label value=$elem.type}} {{:assign var="config.output_nature.%s"|args:$elem.label value=$elem.type}}
{{/foreach}} {{/foreach}}
{{* :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.outputs item="elem"}} {{#foreach from=$config_defaut.outputs item="elem"}}

View File

@ -23,11 +23,7 @@
</ul> </ul>
{{/if}} {{/if}}
{{elseif $current == 'config'}} {{elseif $current == 'config'}}
{{if $subcurrent == 'categories'}} {{if $subcurrent == 'typesES'}}
<aside>
{{:linkbutton label="Ajouter une catégorie" shape="plus" href="add_category.html" target="_dialog"}}
</aside>
{{elseif $subcurrent == 'typesES'}}
<aside> <aside>
{{:linkbutton label="Ajouter un type d'entrée" shape="plus" href="config/ajouter_type_mouvement.html?dir=input" target="_dialog"}} {{:linkbutton label="Ajouter un type d'entrée" shape="plus" href="config/ajouter_type_mouvement.html?dir=input" target="_dialog"}}
{{:linkbutton label="Ajouter un type de sortie" shape="plus" href="config/ajouter_type_mouvement.html?dir=output" target="_dialog"}} {{:linkbutton label="Ajouter un type de sortie" shape="plus" href="config/ajouter_type_mouvement.html?dir=output" target="_dialog"}}
@ -35,7 +31,7 @@
{{/if}} {{/if}}
<ul class="sub" > <ul class="sub" >
<li {{if $subcurrent == 'categories'}} class="current"{{/if}}><a href="{{$module.url}}categories/index.html">Catégories</a></li> <li {{if $subcurrent == 'categories'}} class="current"{{/if}}><a href="{{$module.url}}categories/index.html">Catégories</a></li>
<li {{if $subcurrent == 'typesES'}} class="current"{{/if}}><a href="{{$module.url}}config.html">Types d'entrées/sorties</a></li> <li {{if $subcurrent == 'typesES'}} class="current"{{/if}}><a href="{{$module.url}}config.html">Types ES</a></li>
</ul> </ul>
{{/if}} {{/if}}
</nav> </nav>

View File

@ -1,48 +0,0 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
{{* barre de navigation *}}
{{if ! $dialog}}
{{:include file="../_nav.html" current="config" subcurrent="categories"}}
{{/if}}
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{* Vérifier s'il existe déjà une catégorie avec le même nom *}}
{{#load type="category"}}
{{if $name|tolower == $_POST.name|trim|tolower}}
{{:error message="Impossible d'ajouter la catégorie « %s » car elle existe déjà !"|args:$name|trim}}
{{:break}}
{{/if}}
{{/load}}
{{:assign key=""|uuid}}
{{:assign cat_name=$_POST.name|trim|tolower|ucfirst}}
{{:save
key=$key
validate_schema="./category.schema.json"
type="category"
name=$cat_name
}}
{{:assign msg="Catégorie « %s » enregistrée"|args:$cat_name}}
{{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}}
{{/form}}
{{:form_errors}}
{{* formulaire d'ajout de catégorie *}}
<form method="post" action="{{$self_url}}">
<fieldset class="ajout_categorie">
<legend>Ajouter une catégorie</legend>
<dl>
{{:input type="text" name="name" label="Nom" autofocus=true required=true maxlength="100"}}
</dl>
<p class="submit">
{{:button type="submit" name="save" label="Ajouter" shape="right" class="main"}}
</p>
</fieldset>
</form>
{{:admin_footer}}

View File

@ -14,8 +14,7 @@
{{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}}
{{:assign msg="Catégorie « %s » supprimée"|args:$category.name}} {{:redirect force="./index.html?ok=1&msg=suppression"}}
{{:redirect force="./index.html?ok=1&msg=%s"|args:$msg}}
{{/load}} {{/load}}
{{/form}} {{/form}}

View File

@ -10,8 +10,6 @@
<p class="block confirm">Modification enregistrée</p> <p class="block confirm">Modification enregistrée</p>
{{elseif $_GET.msg == "suppression"}} {{elseif $_GET.msg == "suppression"}}
<p class="block confirm">Catégorie supprimée</p> <p class="block confirm">Catégorie supprimée</p>
{{else}}
<p class="block confirm">{{$_GET.msg}}</p>
{{/if}} {{/if}}
{{elseif $_GET.err}} {{elseif $_GET.err}}
{{if $_GET.msg == "modification"}} {{if $_GET.msg == "modification"}}
@ -46,11 +44,9 @@
</section> </section>
{{* Traiter l'envoi du formulaire *}} {{* Traiter l'envoi du formulaire *}}
{{*
{{#form on="save"}} {{#form on="save"}}
*}}
{{* Vérifier s'il existe déjà une catégorie avec le même nom *}} {{* Vérifier s'il existe déjà une catégorie avec le même nom *}}
{{*
{{#load type="category"}} {{#load type="category"}}
{{if $name|tolower == $_POST.name|trim|tolower}} {{if $name|tolower == $_POST.name|trim|tolower}}
{{:error message="Impossible d'ajouter la catégorie « %s » car elle existe déjà !"|args:$name|trim}} {{:error message="Impossible d'ajouter la catégorie « %s » car elle existe déjà !"|args:$name|trim}}
@ -69,8 +65,8 @@
{{/form}} {{/form}}
{{:form_errors}} {{:form_errors}}
*}}
{{* formulaire d'ajout de catégorie {{* formulaire d'ajout de catégorie *}}
<form method="post" action="{{$self_url}}"> <form method="post" action="{{$self_url}}">
<fieldset class="ajout_categorie"> <fieldset class="ajout_categorie">
<legend>Ajouter une catégorie</legend> <legend>Ajouter une catégorie</legend>
@ -82,5 +78,5 @@
</p> </p>
</fieldset> </fieldset>
</form> </form>
*}}
{{:admin_footer}} {{:admin_footer}}

View File

@ -9,6 +9,17 @@
<p class="block confirm">Configuration enregistrée.</p> <p class="block confirm">Configuration enregistrée.</p>
{{/if}} {{/if}}
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{:save key="config"
validate_schema="./config.schema.json"
input_nature=$_POST.input_fields|array_transpose
output_nature=$_POST.output_fields|array_transpose
}}
{{:redirect to="./config.html?ok=1"}}
{{/form}}
{{* lecture config (défaut ou enregistrée) *}} {{* lecture config (défaut ou enregistrée) *}}
{{:include file="./_get_config.html" keep="config"}} {{:include file="./_get_config.html" keep="config"}}
@ -17,7 +28,7 @@
{{:assign var='input_types.%s'|args:$type value=$type}} {{:assign var='input_types.%s'|args:$type value=$type}}
{{/foreach}} {{/foreach}}
{{* types d'entrées qui ne peuvent être supprimées *}} {{* Natures d'entrées qui ne peuvent être supprimées *}}
{{#load type="movement" where="$$.direction='input'" group="$$.input_nature"}} {{#load type="movement" where="$$.direction='input'" group="$$.input_nature"}}
{{:assign var="locked_inputs." value=$input_nature}} {{:assign var="locked_inputs." value=$input_nature}}
{{/load}} {{/load}}
@ -27,59 +38,127 @@
{{:assign var='output_types.%s'|args:$type value=$type}} {{:assign var='output_types.%s'|args:$type value=$type}}
{{/foreach}} {{/foreach}}
{{* types de sorties qui ne peuvent être supprimées *}} {{* Natures de sorties qui ne peuvent être supprimées *}}
{{#load type="movement" where="$$.direction='output'" group="$$.output_nature"}} {{#load type="movement" where="$$.direction='output'" group="$$.output_nature"}}
{{:assign var="locked_outputs." value=$output_nature}} {{:assign var="locked_outputs." value=$output_nature}}
{{/load}} {{/load}}
<h2>Types d'entrées</h2> <form method="post" action="">
<table class="list"> <fieldset>
<legend>Entrées</legend>
<table class="list input_fields">
<thead> <thead>
<tr> <tr>
<th>Libellé</th> <th>Nature de l'entrée</th>
<th>Type</th> <th>Type</th>
<th></th> <th>Action</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="input_body">
{{#foreach from=$config.input_nature key="label" item="type"}} {{#foreach from=$config.input_nature key="label" item="type"}}
<tr> <tr>
<td>{{$label}}</td> <td>{{:input type="text" name="input_fields[label][]" default=$label}}</td>
<td>{{$type}}</td> <td>{{:input type="select"
<td class="actions"> name="input_fields[type][]"
{{if ! $locked_inputs|has:$label}} options=$input_types
{{:linkbutton label="Supprimer" shape="minus" href="config/supprimer_type_mouvement.html?dir=input&mvt=%s"|args:$label target="_dialog"}} default=$type
{{/if}} required=true
{{:linkbutton label="Modifier" shape="edit" href="config/modifier_type_mouvement.html?dir=output&mvt=%s"|args:$label target="_dialog"}} default_empty="— Choisir un type —"}}
</td>
<td class="action">
{{:button
label="Supprimer" shape="minus"
disabled=$locked_inputs|has:$label
onclick="this.parentNode.parentNode.remove();"}}
</td> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}
</tbody> </tbody>
</table> </table>
<p class="actions">
{{:button shape="plus" label="Ajouter un champ" onclick="addLine('#input_body')"}}
</p>
<div class="help block">
<h3>Signification du type d'entrée</h3>
<ul>
<li><b>définitif</b> : l'asso devient propriétaire du matériel (ex : achat, don)</li>
<li><b>temporaire</b> : l'asso ne devient <strong>pas</strong> propriétaire du matériel (ex : location, emprunt)</li>
<li><b>retour</b> : matériel qui revient après une sortie temporaire (ex : retour de location ou de prêt)</li>
</ul>
</div>
</fieldset>
<h2>Types de sorties</h2> <fieldset>
<table class="list"> <legend>Sorties</legend>
<table class="list output_fields">
<thead> <thead>
<tr> <tr>
<th>Libellé</th> <th>Nature de la sortie</th>
<th>Type</th> <th>Type</th>
<th></th> <th>Action</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="output_body">
{{#foreach from=$config.output_nature key="label" item="type"}} {{#foreach from=$config.output_nature key="label" item="type"}}
<tr> <tr>
<td>{{$label}}</td> <td>{{:input type="text" name="output_fields[label][]" default=$label}}</td>
<td>{{$type}}</td> <td>{{:input
<td class="actions"> type="select"
{{if ! $locked_outputs|has:$label}} name="output_fields[type][]"
{{:linkbutton label="Supprimer" shape="minus" href="config/supprimer_type_mouvement.html?dir=output&mvt=%s"|args:$label target="_dialog"}} options=$output_types
{{/if}} default=$type
{{:linkbutton label="Modifier" shape="edit" href="config/modifier_type_mouvement.html?dir=output&mvt=%s"|args:$label target="_dialog"}} required=true
default_empty="— Choisir un type —"}}
</td>
<td class="action">
{{:button
label="Supprimer" shape="minus"
disabled=$locked_outputs|has:$label
onclick="this.parentNode.parentNode.remove();"}}
</td> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}
</tbody> </tbody>
</table> </table>
<p class="actions">
{{:button shape="plus"
label="Ajouter un champ"
onclick="addLine('#output_body')"}}
</p>
<div class="help block">
<h3>Signification du type de sortie</h3>
<ul>
<li><b>définitif</b> : le matériel n'appartient plus à l'asso (ex : vente, casse, perte, vol, ...)</li>
<li><b>temporaire</b> : le matériel sort temporairement de l'asso qui en reste propriétaire (ex : location, prêt)</li>
<li><b>retour</b> : le matériel <strong>non propriété de l'asso</strong> est rendu à son propriétaire (ex : retour de location ou d'emprunt)</li>
</dl>
</div>
</fieldset>
<p class="submit">
{{:button
type="submit"
name="save"
label="Enregistrer"
shape="right"
class="main"
}}
</p>
</form>
<script type="text/javascript">
// dupliquer la dernière ligne d'une table
function addLine(id_body) {
var ligne = document.querySelector(id_body).lastElementChild;
var nelle = ligne.cloneNode(true);
let text = nelle.querySelector('input[type="text"]');
text.value = null;
let menu = nelle.querySelector('select')
if (menu != null) {
menu[0].selected = 'selected';
}
ligne.parentNode.appendChild(nelle);
text.focus();
}
</script>
{{:admin_footer}} {{:admin_footer}}

View File

@ -1,141 +0,0 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
{{* barre de navigation *}}
{{if ! $dialog}}
{{:include file="../_nav.html" current="config" subcurrent="typesES"}}
{{/if}}
{{* Traiter l'envoi du formulaire *}}
{{* lecture config (défaut ou enregistrée) *}}
{{:include file="../_get_config.html" keep="config"}}
{{#form on="save"}}
{{* vérifier l'existence d'une entrée de même nom et générer le résultat *}}
{{#foreach from=$config.input_nature key="label" item="type"}}
{{if $label|trim|tolower == $_POST.input_fields.label|trim|tolower}}
{{:error message="Ce libellé d'entrée est déjà présent"}}
{{/if}}
{{:assign var="input_nature.label" value=$label}}
{{:assign var="input_nature.type" value=$type}}
{{:assign var="input_natures." from=input_nature}}
{{/foreach}}
{{* ajouter la nouvelle entrée *}}
{{if $_GET.dir == 'input'}}
{{:assign input_label=$_POST.input_fields.label|trim|tolower|ucfirst}}
{{:assign var="input_nature.label" value=$_POST.input_fields.label|trim|tolower|ucfirst}}
{{:assign var="input_nature.type" value=$_POST.input_fields.type}}
{{:assign var="input_natures." from=input_nature}}
{{/if}}
{{* vérifier l'existence d'une sortie de même nom et générer le résultat *}}
{{#foreach from=$config.output_nature key="label" item="type"}}
{{if $label|trim|tolower == $_POST.output_fields.label|trim|tolower}}
{{:error message="Ce libellé de sortie est déjà présent"}}
{{/if}}
{{:assign var="output_nature.label" value=$label}}
{{:assign var="output_nature.type" value=$type}}
{{:assign var="output_natures." from=output_nature}}
{{/foreach}}
{{* ajouter la nouvelle sortie *}}
{{if $_GET.dir == 'output'}}
{{:assign output_label=$_POST.output_fields.label|trim|tolower|ucfirst}}
{{:assign var="output_nature.label" value=$_POST.output_fields.label|trim|tolower|ucfirst}}
{{:assign var="output_nature.type" value=$_POST.output_fields.type}}
{{:assign var="output_natures." from=output_nature}}
{{/if}}
{{:save
key="config"
validate_schema="../config.schema.json"
input_nature=$input_natures
output_nature=$output_natures
}}
{{:redirect to="./config.html?ok=1"}}
{{else}}
{{:form_errors}}
{{/form}}
{{if $_GET.dir == 'input'}}
{{* types d'entrées *}}
{{#foreach from=$config.input_nature key="label" item="type"}}
{{:assign var='input_types.%s'|args:$type value=$type}}
{{/foreach}}
<form method="post" action="">
<fieldset>
<legend>Type d'entrée</legend>
<dl>
<td>{{:input
type="text"
label="Libellé de l'entrée"
name="input_fields[label]"
required=true}}</td>
<td>
{{:input type="select"
label="Type d'entrée"
name="input_fields[type]"
options=$input_types
default=$type
required=true
default_empty="— Choisir un type —"}}
</td>
</dl>
<div class="help block">
<h3>Signification du type d'entrée</h3>
<ul>
<li><b>définitif</b> : l'asso devient propriétaire du matériel (ex : achat, don)</li>
<li><b>temporaire</b> : l'asso ne devient <strong>pas</strong> propriétaire du matériel (ex : location, emprunt)</li>
<li><b>retour</b> : matériel qui revient après une sortie temporaire (ex : retour de location ou de prêt)</li>
</ul>
</div>
</fieldset>
<p class="submit">
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
</p>
</form>
{{else}}
{{* types de sorties *}}
{{#foreach from=$config.output_nature key="label" item="type"}}
{{:assign var='output_types.%s'|args:$type value=$type}}
{{/foreach}}
<form method="post" action="">
<fieldset>
<legend>Type de sortie</legend>
<dl>
<td>{{:input
type="text"
label="Libellé de la sortie"
name="output_fields[label]"
required=true}}</td>
<td>
{{:input type="select"
label="Type de sortie"
name="output_fields[type]"
options=$output_types
default=$type
required=true
default_empty="— Choisir un type —"}}
</td>
</dl>
<div class="help block">
<h3>Signification du type de sortie</h3>
<ul>
<li><b>définitif</b> : le matériel n'appartient plus à l'asso (ex : vente, casse, perte, vol, ...)</li>
<li><b>temporaire</b> : le matériel sort temporairement de l'asso qui en reste propriétaire (ex : location, prêt)</li>
<li><b>retour</b> : le matériel <strong>non propriété de l'asso</strong> est rendu à son propriétaire (ex : retour de location ou d'emprunt)</li>
</ul>
</div>
</fieldset>
<p class="submit">
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
</p>
</form>
{{/if}}

View File

@ -1,67 +0,0 @@
{{* -*- brindille -*- *}}
{{*
paramètres :
- dir : input ou output
- mvt : libellé du type de mouvement à modifier
*}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
{{* barre de navigation *}}
{{if ! $dialog}}
{{:include file="../_nav.html" current="config" subcurrent="typesES"}}
{{/if}}
{{* lecture config (défaut ou enregistrée) *}}
{{:include file="../_get_config.html" keep="config"}}
{{:debug config.input_nature=$config.input_nature config.input_nature=$config.input_nature}}
{{:debug mvt=$_GET.mvt}}
{{#form on="save"}}
{{#foreach from=$config.input_nature key="label" item="type"}}
{{:debug key=$label item=$type}}
{{if $_GET.dir == 'input'
&& $label|trim|tolower == $_GET.mvt|trim|tolower}}
{{:assign var="input_nature.label" value=$_POST.name|trim|tolower|ucfirst}}
{{else}
{{:assign var="input_nature.label" value=$label}}
{{/if}}
{{:assign var="input_nature.type" value=$type}}
{{:assign var="input_natures." from=input_nature}}
{{/foreach}}
{{#foreach from=$config.output_nature key="label" item="type"}}
{{if $_GET.dir == 'output' && $label|trim|tolower == $_GET.mvt|trim|tolower}}
{{:assign var="output_nature.label" value=$_POST.name|trim|tolower|ucfirst}}
{{else}}
{{:assign var="output_nature.label" value=$label}}
{{/if}}
{{:assign var="output_nature.type" value=$type}}
{{:assign var="output_natures." from=output_nature}}
{{/foreach}}
{{:debug input_natures=$input_natures output_natures=$output_natures}}
{{*
{{:save
key="config"
validate_schema="../config.schema.json"
input_nature=$input_natures
output_nature=$output_natures
}}
{{:redirect to="./config.html?ok=1"}}
*}}
{{/form}}
{{:form_errors}}
<form method="post" action="">
<fieldset>
<legend>Modifier le libellé</legend>
<dl>
{{:input type="text" name="name" label="Libellé" default=$_GET.mvt required=true maxlength="100"}}
</dl>
<p class="submit">
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
</p>
</fieldset>
</form>

View File

@ -1,61 +0,0 @@
{{* -*- brindille -*- *}}
{{*
paramètres :
- dir : input ou output
- mvt : libellé du type de mouvement à supprimer
*}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
{{* barre de navigation *}}
{{if ! $dialog}}
{{:include file="../_nav.html" current="config" subcurrent="typesES"}}
{{/if}}
{{* lecture config (défaut ou enregistrée) *}}
{{:include file="../_get_config.html" keep="config"}}
{{#form on="delete"}}
{{#foreach from=$config.input_nature key="label" item="type"}}
{{if $_GET.dir == 'input' && $label|trim|tolower != $_GET.mvt|trim|tolower ||
$_GET.dir == 'output'}}
{{:assign var="input_nature.label" value=$label}}
{{:assign var="input_nature.type" value=$type}}
{{:assign var="input_natures." from=input_nature}}
{{/if}}
{{/foreach}}
{{#foreach from=$config.output_nature key="label" item="type"}}
{{if $_GET.dir == 'output' && $label|trim|tolower != $_GET.mvt|trim|tolower ||
$_GET.dir == 'input'}}
{{:assign var="output_nature.label" value=$label}}
{{:assign var="output_nature.type" value=$type}}
{{:assign var="output_natures." from=output_nature}}
{{/if}}
{{/foreach}}
{{:save
key="config"
validate_schema="../config.schema.json"
input_nature=$input_natures
output_nature=$output_natures
}}
{{:redirect to="./config.html?ok=1"}}
{{/form}}
{{if $_GET.dir == 'input'}}
{{:delete_form
legend="Supprimer cette entrée ?"
warning="Supprimer l'entrée « %s » ?"|args:$_GET.mvt
}}
{{else}}
{{:delete_form
legend="Supprimer cette sortie ?"
warning="Supprimer la sortie « %s » ?"|args:$_GET.mvt
}}
{{/if}}
{{:form_errors}}
{{:admin_footer}}

View File

@ -66,6 +66,7 @@
{{:assign var=stock from="equipments.%s.stock"|args:$equipment}} {{:assign var=stock from="equipments.%s.stock"|args:$equipment}}
{{:assign var=exterieur from="equipments.%s.exterieur"|args:$equipment}} {{:assign var=exterieur from="equipments.%s.exterieur"|args:$equipment}}
{{:assign dispo="%d-%d"|math:$stock:$exterieur}} {{:assign dispo="%d-%d"|math:$stock:$exterieur}}
{{*:debug stock=$stock exterieur=$exterieur dispo=$dispo*}}
{{if $stock == null}} {{if $stock == null}}
{{:continue}} {{:continue}}

View File

@ -54,7 +54,7 @@
category=$category.key category=$category.key
designation=$_POST.designation|trim designation=$_POST.designation|trim
}} }}
{{:redirect force="index.html?ok=1&msg=modification&prop=%s"|args:$_GET.prop}} {{:redirect force="index.html?ok=1&msg=modification"}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}

View File

@ -29,12 +29,13 @@
{{/load}} {{/load}}
{{#load where="key = :key" :key=$equipment.category assign="category"}} {{#load where="key = :key" :key=$equipment.category assign="category"}}
{{/load}} {{/load}}
{{*:debug equipment=$equipment category=$category*}}
{{* Traiter l'envoi du formulaire *}} {{* Traiter l'envoi du formulaire *}}
{{#form on="save"}} {{#form on="save"}}
{{* Enregistrer le mouvement *}} {{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}} {{:assign mvt_key=""|uuid}}
{{:assign var="operation" from="input_labels.%d|args:$_POST.nature_operation}} {{:assign var="operation" from="input_labels.%d|args:$_POST.type_operation}}
{{:save {{:save
key=$mvt_key key=$mvt_key
@ -47,13 +48,7 @@
date=$_POST.date|parse_date date=$_POST.date|parse_date
comment=$_POST.remarques|trim comment=$_POST.remarques|trim
}} }}
{{:assign var=type_entree from="config.input_nature.%s"|args:$operation}} {{:redirect force="%sindex.html?ok=1&msg=entrée"|args:$module.url}}
{{if $type_entree == "temporaire"}}
{{:assign prop=0}}
{{else}}
{{:assign prop=1}}
{{/if}}
{{:redirect force="%sindex.html?ok=1&msg=entrée&prop=%s"|args:$module.url:$prop}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
{{/form}} {{/form}}
@ -64,7 +59,7 @@
<fieldset class="entree"> <fieldset class="entree">
<legend>Ajouter une entrée de matériel</legend> <legend>Ajouter une entrée de matériel</legend>
<dl> <dl>
{{:input type="select" name="nature_operation" label="Type" required=true options=$input_labels}} {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels}}
{{: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="text" name="equipment" label="Matériel" required=true disabled=true default=$equipment.designation}} {{:input type="text" name="equipment" label="Matériel" required=true disabled=true default=$equipment.designation}}
{{:input type="text" name="category" label="Catégorie" required=true disabled=true default=$category.name}} {{:input type="text" name="category" label="Catégorie" required=true disabled=true default=$category.name}}

View File

@ -1,10 +1,9 @@
{{* -*- brindille -*- *}} {{* -*- brindille -*- *}}
{{* {{*
Modifier un mouvement
paramètres : paramètres :
- key : clé du mouvement à modifier
- direction : du mouvement à modifier - direction : du mouvement à modifier
- key : clé du mouvement à modifier
- prop : = 1 si matériel propriété - prop : = 1 si matériel propriété
*}} *}}
@ -15,16 +14,21 @@
{{/if}} {{/if}}
{{:admin_header title="Modifier une %s"|args:$msg_direction current="module_equipment"}} {{:admin_header title="Modifier une %s"|args:$msg_direction current="module_equipment"}}
{{:assign direction_mvt=$_GET.direction}}
{{:assign key_mvt=$_GET.key}}
{{* récupérer les infos du mouvement à modifier *}} {{* récupérer les infos du mouvement à modifier *}}
{{#load key=$_GET.key assign="mvt_modif"}} {{#load key=$key_mvt assign="mvt_modif"}}
{{else}} {{else}}
{{:error message="Aucune %s avec la clé %s"|args:$msg_direction:$_GET.key}} {{:error message="Aucune %s avec la clé %s"|args:$msg_direction:$key_mvt}}
{{/load}} {{/load}}
{{if $_GET.direction == "input"}} {{if $direction_mvt == "input"}}
{{:assign input_init=$mvt_modif.input_nature}} {{:assign input_init=$mvt_modif.input_nature}}
{{:assign url="entrees/index.html"}}
{{else}} {{else}}
{{:assign output_init=$mvt_modif.output_nature}} {{:assign output_init=$mvt_modif.output_nature}}
{{:assign url="sorties/index.html"}}
{{/if}} {{/if}}
{{:assign amount_init=$mvt_modif.amount}} {{:assign amount_init=$mvt_modif.amount}}
@ -40,12 +44,12 @@
{{* 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 $_GET.direction == "input"}} {{if $direction_mvt == "input"}}
{{* types d'entrées *}} {{* types d'entrées *}}
{{#foreach from=$config.input_nature key="label" item="type"}} {{#foreach from=$config.input_nature key="label" item="type"}}
{{:assign var="input_labels.%s"|args:$label value="%s"|args:$label}} {{:assign var="input_labels.%s"|args:$label value="%s"|args:$label}}
{{if $label == $mvt_modif.input_nature}} {{if $label == $mvt_modif.input_nature}}
{{:assign nature_defaut=$label}} {{:assign type_defaut=$label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{else}} {{else}}
@ -53,7 +57,7 @@
{{#foreach from=$config.output_nature key="label" item="type"}} {{#foreach from=$config.output_nature key="label" item="type"}}
{{:assign var="output_labels.%s"|args:$label value="%s"|args:$label}} {{:assign var="output_labels.%s"|args:$label value="%s"|args:$label}}
{{if $label == $mvt_modif.output_nature}} {{if $label == $mvt_modif.output_nature}}
{{:assign nature_defaut=$label}} {{:assign type_defaut=$label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{/if}} {{/if}}
@ -67,20 +71,13 @@
{{/if}} {{/if}}
{{* préparer le mouvement modifié *}} {{* préparer le mouvement modifié *}}
{{if $_GET.direction == "input"}} {{if $direction_mvt == "input"}}
{{:assign var="mvt_modif.input_nature" from="input_labels.%s"|args:$_POST.nature_operation}} {{:assign var="mvt_modif.input_nature" from="input_labels.%s"|args:$_POST.type_operation}}
{{:assign var=type_mvt from="config.input_nature.%s"|args:$mvt_modif.input_nature}}
{{else}} {{else}}
{{:assign var="mvt_modif.output_nature" from="output_labels.%s"|args:$_POST.nature_operation}} {{:assign var="mvt_modif.output_nature" from="output_labels.%s"|args:$_POST.type_operation}}
{{:assign var=type_mvt from="config.outut_nature.%s"|args:$mvt_modif.input_nature}}
{{/if}}
{{if $type_mvt == "temporaire"}}
{{:assign prop=0}}
{{else}}
{{:assign prop=1}}
{{/if}} {{/if}}
{{:assign var="mvt_modif.amount" value=$_POST.amount}} {{:assign var="mvt_modif.amount" value=$_POST.amount}}
{{:assign var="mvt_modif.equipment" value=$key_eqpmt_init}} {{:assign var="mvt_modif.equipment" value=$_POST.equipment}}
{{:assign var="mvt_modif.date" value=$_POST.date|parse_date}} {{:assign var="mvt_modif.date" value=$_POST.date|parse_date}}
{{:assign var="mvt_modif.comment" value=$_POST.comment}} {{:assign var="mvt_modif.comment" value=$_POST.comment}}
@ -93,16 +90,17 @@
where=" where="
$$.type = 'movement' $$.type = 'movement'
AND AND
$$.equipment = :eqpmt_key" ($$.equipment = :old_eqpmt_key OR $$.equipment = :new_eqpmt_key)"
:eqpmt_key=$key_eqpmt_init :old_eqpmt_key=$key_eqpmt_init
:new_eqpmt_key=$_POST.equipment
order="$$.date" order="$$.date"
assign="movement" assign="movement"
}} }}
{{if $key != $_GET.key}} {{if $key != $key_mvt}}
{{if $_GET.direction == "input" && ! $insere && $date >= $mvt_modif.date}} {{if $direction_mvt == "input" && ! $insere && $date >= $mvt_modif.date}}
{{:assign var="movements_modif." from=mvt_modif}} {{:assign var="movements_modif." from=mvt_modif}}
{{:assign insere=true}} {{:assign insere=true}}
{{elseif $_GET.direction == "output" && ! $insere && $date > $mvt_modif.date}} {{elseif $direction_mvt == "output" && ! $insere && $date > $mvt_modif.date}}
{{:assign var="movements_modif." from=mvt_modif}} {{:assign var="movements_modif." from=mvt_modif}}
{{:assign insere=true}} {{:assign insere=true}}
{{/if}} {{/if}}
@ -113,7 +111,7 @@
{{:assign var="movements_modif." from=mvt_modif}} {{:assign var="movements_modif." from=mvt_modif}}
{{/if}} {{/if}}
{{* Vérifier la cohérence des mouvements du matériel *}} {{* Vérifier la cohérence des opérations de l'ancien matériel *}}
{{:include {{:include
file="./valider_modification.html" file="./valider_modification.html"
keep="erreur" keep="erreur"
@ -121,32 +119,47 @@
eqpmt_key=$key_eqpmt_init eqpmt_key=$key_eqpmt_init
}} }}
{{* Si le matériel a changé, vérifier la cohérence des opérations du nouveau matériel *}}
{{if ! $erreur && $key_eqpmt_init != $_POST.equipment}}
{{:include
file="./valider_modification.html"
keep="erreur"
movements=$movements_modif
eqpmt_key=$_POST.equipment
}}
{{/if}}
{{#load key=$mvt_modif.equipment assign="eqpmt"}}{{/load}}
{{if $erreur}} {{if $erreur}}
<p class="block error"> <p class="block error">
Modification demandée impossible : Modification demandée impossible :
{{if $_GET.direction == "input"}} {{if $direction_mvt == "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.input_nature}} de {{$eqpmt_init.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.output_nature}} de {{$eqpmt_init.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}}
{{* vérification réussie : modifier le mouvement *}} {{* vérification réussie : modifier le mouvement *}}
{{:save {{:save
key=$_GET.key key=$key_mvt
validate_schema="./movement.schema.json" validate_schema="./movement.schema.json"
type="movement" type="movement"
direction=$_GET.direction direction=$direction_mvt
input_nature=$mvt_modif.input_nature input_nature=$mvt_modif.input_nature
output_nature=$mvt_modif.output_nature output_nature=$mvt_modif.output_nature
amount=$mvt_modif.amount|intval amount=$mvt_modif.amount|intval
equipment=$key_eqpmt_init equipment=$mvt_modif.equipment
date=$mvt_modif.date date=$mvt_modif.date
comment=$mvt_modif.comment comment=$mvt_modif.comment
}} }}
{{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=modification"|args:$key_eqpmt_init:$prop}} {{if $key_eqpmt_init == $_POST.equipment}}
{{:redirect force="../historique.html?ok=1&key=%s&prop=%smsg=modification"|args:$_POST.equipment:$_GET.prop}}
{{else}}
{{:redirect force="../index.html?ok=1&msg=modification"}}
{{/if}}
{{/if}} {{/if}}
{{else}} {{else}}
{{:form_errors}} {{:form_errors}}
@ -157,28 +170,39 @@
*}} *}}
{{* lister les catégories et matériels associés *}} {{* lister les catégories et matériels associés *}}
{{#load key=$eqpmt_init.category assign="category"}}{{/load}} {{#load type="category" assign="category" order="$$.name"}}
{{:assign nom_cat=$category.name}}
{{#load type="equipment" where="$$.category = :key" :key=$category.key assign="equipment"}}
{{:assign var="equipments.%s.%s"|args:$nom_cat:$equipment.key value=$equipment.designation}}
{{/load}}
{{/load}}
{{* formulaire de modification du mouvement *}} {{* formulaire de modification du mouvement *}}
<form method="post" action=""> <form method="post" action="">
<fieldset class="entree"> <fieldset class="entree">
{{if $_GET.direction == "input"}} {{if $direction_mvt == "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>
<dl> <dl>
{{:input type="select" name="nature_operation" label="Type" required=true options=$input_labels default=$nature_defaut}} {{:input type="select" name="type_operation" label="Type" required=true options=$input_labels 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> <dl>
{{:input type="select" name="nature_operation" label="Type" required=true options=$output_labels default=$nature_defaut}} {{:input type="select" name="type_operation" label="Type" required=true options=$output_labels 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="text" name="designation" label="Matériel" disabled=true default=$eqpmt_init.designation}}
{{:input type="text" name="category" label="Catégorie" disabled=true default=$category.name}}
{{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_modif.amount}} {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_modif.amount}}
</dl>
</fieldset>
<fieldset>
<legend>Matériel</legend>
<dl>
{{: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> </dl>
</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"}}
</p> </p>