Nouvelle organisation des entrées et sorties
This commit is contained in:
parent
dc8fd82aec
commit
43270faf38
118
config.html
118
config.html
|
@ -11,34 +11,29 @@
|
||||||
{{* Traiter l'envoi du formulaire *}}
|
{{* Traiter l'envoi du formulaire *}}
|
||||||
{{#form on="save"}}
|
{{#form on="save"}}
|
||||||
|
|
||||||
{{#foreach from=$_POST.input_fields|array_transpose item="field"}}
|
|
||||||
{{:assign var="input_fields." label=$field.label|trim owner=$field.owner|boolval}}
|
|
||||||
{{/foreach}}
|
|
||||||
|
|
||||||
{{#foreach from=$_POST.output_fields|array_transpose item="field"}}
|
|
||||||
{{:assign var="output_fields." label=$field.label|trim final=$field.final|boolval}}
|
|
||||||
{{/foreach}}
|
|
||||||
|
|
||||||
{{:save key="config"
|
{{:save key="config"
|
||||||
validate_schema="./config.schema.json"
|
validate_schema="./config.schema.json"
|
||||||
inputNature=$input_fields
|
inputNature=$_POST.input_fields|array_transpose
|
||||||
outputNature=$output_fields
|
outputNature=$_POST.output_fields|array_transpose
|
||||||
}}
|
}}
|
||||||
{{:redirect to="./config.html?ok=1"}}
|
{{:redirect to="./config.html?ok=1"}}
|
||||||
{{/form}}
|
{{/form}}
|
||||||
|
|
||||||
{{* types d'entrées par défaut *}}
|
{{* types d'entrées *}}
|
||||||
{{:assign var='types_entrees.Achat' value=1}}
|
{{:assign var='types_entrees' définitif="définitif" temporaire="temporaire" retour="retour"}}
|
||||||
{{:assign var='types_entrees.Don' value=1}}
|
|
||||||
{{:assign var='types_entrees.Récupération' value=1}}
|
|
||||||
{{:assign var='types_entrees.Location' value=0}}
|
|
||||||
{{:assign var='types_entrees.Emprunt' value=0}}
|
|
||||||
|
|
||||||
{{* types de sorties par défaut *}}
|
{{* entrées par défaut *}}
|
||||||
{{:assign var='types_sorties.Vente' value=1}}
|
{{:assign var='entrees_defaut.Achat' value='définitif'}}
|
||||||
{{:assign var='types_sorties.Don' value=1}}
|
{{:assign var='entrees_defaut.Location' value='temporaire'}}
|
||||||
{{:assign var='types_sorties.Location' value=0}}
|
{{:assign var='entrees_defaut.Retour de Location/Prêt' value='retour'}}
|
||||||
{{:assign var='types_sorties.Prêt' value=0}}
|
|
||||||
|
{{* types de sorties *}}
|
||||||
|
{{:assign var='types_sorties' définitif="définitif" temporaire="temporaire" retour="retour"}}
|
||||||
|
|
||||||
|
{{* sorties par défaut *}}
|
||||||
|
{{:assign var='sorties_defaut.Vente' value='définitif'}}
|
||||||
|
{{:assign var='sorties_defaut.Prêt' value='temporaire'}}
|
||||||
|
{{:assign var='sorties_defaut.Retour de Location/Prêt' value='retour'}}
|
||||||
|
|
||||||
<form method="post" action="">
|
<form method="post" action="">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -46,8 +41,8 @@
|
||||||
<table class="list input_fields">
|
<table class="list input_fields">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Type d'entrée</th>
|
<th>Nature de l'entrée</th>
|
||||||
<th>Propriétaire ? <br/><span class="help" style="font-weight:normal">Cocher si l'association devient propriétaire du matériel</span></th>
|
<th>Type</th>
|
||||||
<th>Action</th>
|
<th>Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -55,28 +50,16 @@
|
||||||
{{#foreach from=$module.config.inputNature item="input_field"}}
|
{{#foreach from=$module.config.inputNature item="input_field"}}
|
||||||
<tr>
|
<tr>
|
||||||
<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>
|
<td>{{:input type="select" name="input_fields[type][]" options=$types_entrees default=$input_field.type required=true default_empty="— Choisir un type —"}}</td>
|
||||||
<label>
|
|
||||||
{{:input type="hidden" name="input_fields[owner][]" value=0}}
|
|
||||||
{{:input type="checkbox" name="input_fields[owner][]" value=1 default=$input_field.owner}}
|
|
||||||
Proprio ?
|
|
||||||
</label>
|
|
||||||
</td>
|
|
||||||
<td class="action">
|
<td class="action">
|
||||||
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#foreach from=$types_entrees key="label" item="value"}}
|
{{#foreach from=$entrees_defaut key="label" item="value"}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{:input type="text" name="input_fields[label][]" default=$label}}</td>
|
<td>{{:input type="text" name="input_fields[label][]" default=$label}}</td>
|
||||||
<td>
|
<td>{{:input type="select" name="input_fields[type][]" options=$types_entrees required=true default=$value default_empty="— Choisir un type —"}}</td>
|
||||||
<label>
|
|
||||||
{{:input type="hidden" name="input_fields[owner][]" value=0}}
|
|
||||||
{{:input type="checkbox" name="input_fields[owner][]" value=1 default=$value}}
|
|
||||||
Proprio ?
|
|
||||||
</label>
|
|
||||||
</td>
|
|
||||||
<td class="action">
|
<td class="action">
|
||||||
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
||||||
</td>
|
</td>
|
||||||
|
@ -90,6 +73,14 @@
|
||||||
label="Ajouter un champ"
|
label="Ajouter un champ"
|
||||||
onclick="addLine('#input_body')"}}
|
onclick="addLine('#input_body')"}}
|
||||||
</p>
|
</p>
|
||||||
|
<div class="help">
|
||||||
|
<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>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -97,8 +88,8 @@
|
||||||
<table class="list output_fields">
|
<table class="list output_fields">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Type de sortie</th>
|
<th>Nature de la sortie</th>
|
||||||
<th>Définitif ? <br/><span class="help" style="font-weight:normal">Cocher si la sortie est définitive</span></th>
|
<th>Type</th>
|
||||||
<th>Action</th>
|
<th>Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -106,28 +97,16 @@
|
||||||
{{#foreach from=$module.config.outputNature item="output_field"}}
|
{{#foreach from=$module.config.outputNature item="output_field"}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{:input type="text" name="output_fields[label][]" default=$output_field.label}}</td>
|
<td>{{:input type="text" name="output_fields[label][]" default=$output_field.label}}</td>
|
||||||
<td>
|
<td>{{:input type="select" name="output_fields[type][]" options=$types_sorties default=$output_field.type required=true default_empty="— Choisir un type —"}}</td>
|
||||||
<label>
|
|
||||||
{{:input type="hidden" name="output_fields[final][]" value=0}}
|
|
||||||
{{:input type="checkbox" name="output_fields[final][]" value=1 default=$output_field.final}}
|
|
||||||
Définitif ?
|
|
||||||
</label>
|
|
||||||
</td>
|
|
||||||
<td class="action">
|
<td class="action">
|
||||||
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#foreach from=$types_sorties key="label" item="value"}}
|
{{#foreach from=$sorties_defaut key="label" item="value"}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{:input type="text" name="output_fields[label][]" default=$label}}</td>
|
<td>{{:input type="text" name="output_fields[label][]" default=$label}}</td>
|
||||||
<td>
|
<td>{{:input type="select" name="output_fields[type][]" options=$types_sorties required=true default=$value default_empty="— Choisir un type —"}}</td>
|
||||||
<label>
|
|
||||||
{{:input type="hidden" name="output_fields[final][]" value=0}}
|
|
||||||
{{:input type="checkbox" name="output_fields[final][]" value=1 default=$value}}
|
|
||||||
Définitif ?
|
|
||||||
</label>
|
|
||||||
</td>
|
|
||||||
<td class="action">
|
<td class="action">
|
||||||
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
{{:button label="Retirer" shape="minus" onclick="this.parentNode.parentNode.remove();"}}
|
||||||
</td>
|
</td>
|
||||||
|
@ -141,6 +120,14 @@
|
||||||
label="Ajouter un champ"
|
label="Ajouter un champ"
|
||||||
onclick="addLine('#output_body')"}}
|
onclick="addLine('#output_body')"}}
|
||||||
</p>
|
</p>
|
||||||
|
<div class="help">
|
||||||
|
<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 de prêt)</li>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<p class="submit">
|
<p class="submit">
|
||||||
|
@ -150,7 +137,6 @@
|
||||||
label="Enregistrer"
|
label="Enregistrer"
|
||||||
shape="right"
|
shape="right"
|
||||||
class="main"
|
class="main"
|
||||||
onclick="return desactiverCache('#input_body', '#output_body');"
|
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
@ -162,26 +148,12 @@
|
||||||
var nelle = ligne.cloneNode(true);
|
var nelle = ligne.cloneNode(true);
|
||||||
let text = nelle.querySelector('input[type="text"]');
|
let text = nelle.querySelector('input[type="text"]');
|
||||||
text.value = null;
|
text.value = null;
|
||||||
let cb = nelle.querySelector('input[type="checkbox"]')
|
let menu = nelle.querySelector('select')
|
||||||
if (cb != null) {
|
if (menu != null) {
|
||||||
cb.checked = false;
|
menu[0].selected = 'selected';
|
||||||
}
|
}
|
||||||
ligne.parentNode.appendChild(nelle);
|
ligne.parentNode.appendChild(nelle);
|
||||||
text.focus();
|
text.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Désactiver les champs caché des checkbox cochés
|
|
||||||
function desactiverCache(...id_body) {
|
|
||||||
for (const id of id_body) {
|
|
||||||
for (let ligne of document.querySelector(id).children) {
|
|
||||||
let idCase = ligne.querySelector("input[type=checkbox]");
|
|
||||||
let cache = ligne.querySelector("input[type=hidden]"); // le champ caché
|
|
||||||
if (idCase.checked) {
|
|
||||||
cache.disabled = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{{:admin_footer}}
|
{{:admin_footer}}
|
||||||
|
|
|
@ -4,15 +4,16 @@
|
||||||
"properties": {
|
"properties": {
|
||||||
"inputNature": {
|
"inputNature": {
|
||||||
"description": "Nature des entrées",
|
"description": "Nature des entrées",
|
||||||
"type": "array",
|
"type": ["array", "null"],
|
||||||
"items": {
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"label" : {
|
"label" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
"owner" : {
|
"type" : {
|
||||||
"type" : "boolean"
|
"type" : "string",
|
||||||
|
"enum" : ["définitif", "temporaire", "retour"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,8 +27,9 @@
|
||||||
"label" : {
|
"label" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
"final" : {
|
"type" : {
|
||||||
"type" : "boolean"
|
"type" : "string",
|
||||||
|
"enum" : ["définitif", "temporaire", "retour"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue