Ajout saisie tarif des sorties temporaires
This commit is contained in:
parent
03d278ab2c
commit
bc2aefe26a
3 changed files with 146 additions and 38 deletions
|
|
@ -12,18 +12,28 @@
|
|||
{{* lecture config *}}
|
||||
{{:include file="../_get_config.html" keep="config, directions, config_defaut"}}
|
||||
|
||||
{{if ! $directions|has_key:$_GET.dir}}
|
||||
{{:error message="Direction « %s » inconnue !"|args:$_GET.dir}}
|
||||
{{/if}}
|
||||
|
||||
{{#form on="save"}}
|
||||
{{if $_POST.output_fields.type == "temporaire"}}
|
||||
{{* vérifier si le tarif a été choisi *}}
|
||||
{{if $_POST.tarif == null}}
|
||||
{{:error message="Vous n'avez pas choisi le tarif"}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{* vérifier s'il existe un libellé de même nom dans la même direction *}}
|
||||
{{#foreach from=$directions key="direction"}}
|
||||
{{:assign var="nature" from="config.%s_nature"|args:$direction}}
|
||||
{{#foreach from=$nature key="key"}}
|
||||
{{#foreach from=$nature key="key" item="elem"}}
|
||||
{{:assign var="fields" from="_POST.%s_fields"|args:$_GET.dir}}
|
||||
{{if $_GET.dir == $direction && $label|trim|tolower == $fields.label|trim|tolower}}
|
||||
{{:error message="Ce libellé est déjà présent"}}
|
||||
{{if $_GET.dir == $direction && $fields.label|trim|tolower == $elem.label|trim|tolower}}
|
||||
{{:error message="Le libellé « %s » est déjà présent"|args:$fields.label}}
|
||||
{{/if}}
|
||||
{{:assign var="%s_nature"|args:$direction value=$elem}}
|
||||
{{:assign var="%s_nature.key"|args:$direction value=$key}}
|
||||
{{:assign var="%s_nature.label"|args:$direction value=$label}}
|
||||
{{:assign var="%s_nature.type"|args:$direction value=$type}}
|
||||
{{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}}
|
||||
{{/foreach}}
|
||||
|
||||
|
|
@ -34,6 +44,13 @@
|
|||
{{:assign var="%s_nature.key"|args:$direction value=""|uuid}}
|
||||
{{:assign var="%s_nature.label"|args:$direction value=$newlabel}}
|
||||
{{:assign var="%s_nature.type"|args:$direction from="_POST.%s_fields.type"|args:$direction}}
|
||||
{{if $_POST.output_fields != null}}
|
||||
{{if $_POST.output_fields.type == "temporaire"}}
|
||||
{{:assign var="output_nature.fee" value=$_POST.tarif}}
|
||||
{{else}}
|
||||
{{:assign var="output_nature.fee" value=null}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
|
@ -104,28 +121,28 @@
|
|||
<fieldset>
|
||||
<legend>Type de sortie</legend>
|
||||
<dl>
|
||||
<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>
|
||||
<td>
|
||||
{{:input
|
||||
type="text"
|
||||
label="Libellé de la sortie"
|
||||
name="output_fields[label]"
|
||||
{{:input type="select"
|
||||
label="Type de sortie"
|
||||
name="output_fields[type]"
|
||||
options=$output_types
|
||||
default=$type
|
||||
required=true
|
||||
default_empty="— Choisir un type —"}}
|
||||
{{:input
|
||||
type="text"
|
||||
label="Libellé de la sortie"
|
||||
name="output_fields[label]"
|
||||
required=true}}
|
||||
</td>
|
||||
<div id="tarif">
|
||||
{{:input type="radio-btn" name="tarif" value="gratuit" label="Gratuit" required=true prefix_title="Tarification"}}
|
||||
{{:input type="radio-btn" name="tarif" value="payant" label="Payant" required=true}}
|
||||
</div>
|
||||
</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>temporaire</b> : le matériel sort temporairement de l'asso qui en reste propriétaire (ex : location, prêt) ; dans ce cas, il faut indiquer si ce type de sortie est gratuit ou payant</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>
|
||||
|
|
@ -135,3 +152,23 @@
|
|||
</p>
|
||||
</form>
|
||||
{{/if}}
|
||||
|
||||
<script type="text/javascript">
|
||||
// afficher/masquer le choix du tarif
|
||||
function toggleTarif(event) {
|
||||
const output_fieldstype = document.getElementById('f_output_fieldstype');
|
||||
const value = output_fieldstype.value;
|
||||
if (value == 'temporaire') {
|
||||
g.toggle('#tarif', true);
|
||||
} else {
|
||||
g.toggle('#tarif', false);
|
||||
}
|
||||
}
|
||||
toggleTarif();
|
||||
|
||||
(function () {
|
||||
const output_fieldstype = document.getElementById('f_output_fieldstype');
|
||||
output_fieldstype.addEventListener("change", toggleTarif);
|
||||
})();
|
||||
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -2,27 +2,53 @@
|
|||
|
||||
{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
|
||||
|
||||
{{:admin_header title="Configuration" current="module_equipment"}}
|
||||
{{* lecture config (défaut ou enregistrée) *}}
|
||||
{{:include file="../_get_config.html" keep="loan_duration"}}
|
||||
|
||||
{{#form on="save"}}
|
||||
{{* vérifier si les boutons ont été cochés *}}
|
||||
{{#foreach from=$module.config.output_nature item="elem"}}
|
||||
{{if $elem.type == 'temporaire'}}
|
||||
{{if $_POST|has_key:$elem.key}}
|
||||
{{:assign var="fee" from="_POST.%s"|args:$elem.key}}
|
||||
{{:assign var="elem" key=$elem.key label=$elem.label type=$elem.type fee=$fee}}
|
||||
{{else}}
|
||||
{{:error message="Vous n'avez pas fait de choix pour la sortie « %s »"|args:$elem.label}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{:assign var="output_nature." value=$elem}}
|
||||
{{/foreach}}
|
||||
|
||||
{{:save
|
||||
key="config"
|
||||
loan_duration=$_POST.loan_duration
|
||||
key="config"
|
||||
output_nature=$output_nature
|
||||
loan_duration=$_POST.loan_duration
|
||||
}}
|
||||
|
||||
{{/form}}
|
||||
|
||||
{{* barre de navigation *}}
|
||||
{{:include file="../_nav.html" current="config" subcurrent="divers"}}
|
||||
{{:admin_header title="Configuration" current="module_equipment"}}
|
||||
{{:form_errors}}
|
||||
|
||||
{{if $_GET.ok}}
|
||||
<p class="block confirm">Configuration enregistrée.</p>
|
||||
{{/if}}
|
||||
|
||||
{{* lecture config (défaut ou enregistrée) *}}
|
||||
{{:include file="../_get_config.html" keep="loan_duration"}}
|
||||
|
||||
<form method="post" action="" data-focus="1">
|
||||
<fieldset class="storage">
|
||||
<fieldset>
|
||||
<legend>Sorties temporaires</legend>
|
||||
<p class="help">Pour chaque sortie temporaire, indiquer si elle est gratuite ou payante</p>
|
||||
<dl>
|
||||
{{#foreach from=$module.config.output_nature}}
|
||||
{{if $type == 'temporaire'}}
|
||||
{{:input type="radio-btn" name=$key value="gratuit" label="Gratuit" required=true prefix_title=$label default=$fee}}
|
||||
{{:input type="radio-btn" name=$key value="payant" label="Payant" required=true default=$fee}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
</dl>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Autres paramètres</legend>
|
||||
<dl>
|
||||
{{:input type="number" name="loan_duration" label="Durée de prêt par défaut" min=1 required=true default=$loan_duration help="Durée en nombre de jours"}}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
{{*
|
||||
paramètres :
|
||||
- key : clé du matériel à sortir
|
||||
- output_type : loan (prêt), rent (location), rien (cas général)
|
||||
*}}
|
||||
|
||||
{{* récupérer la config des entrées/sorties *}}
|
||||
|
|
@ -12,7 +13,17 @@
|
|||
|
||||
{{* types de sorties *}}
|
||||
{{#foreach from=$config.output_nature key=key}}
|
||||
{{if $type != 'retour'}}
|
||||
{{if $type == 'retour'}}
|
||||
{{:continue}}
|
||||
{{/if}}
|
||||
{{if $type == 'temporaire' && $fee == 'payant'}}
|
||||
{{:assign var="paid_keys." value=$key}}
|
||||
{{/if}}
|
||||
{{if $_GET.output_type == null}}
|
||||
{{:assign var="output_labels.%s"|args:$key value=$label}}
|
||||
{{elseif $type == 'temporaire' && $_GET.output_type == "loan" && $fee != 'payant'}}
|
||||
{{:assign var="output_labels.%s"|args:$key value=$label}}
|
||||
{{elseif $type == 'temporaire' && $_GET.output_type == "rent" && $fee == 'payant'}}
|
||||
{{:assign var="output_labels.%s"|args:$key value=$label}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
|
|
@ -200,19 +211,36 @@
|
|||
{{/if}}
|
||||
{{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}}
|
||||
{{:input type="number" name="amount" label="Quantité" required=true default=1 min=1 max=$dispo}}
|
||||
<div id="rent_user">
|
||||
{{if $_GET.output_type == null || $_GET.output_type == "rent"}}
|
||||
{{:input
|
||||
type="list"
|
||||
name="user"
|
||||
label="Membre destinataire"
|
||||
target="!users/selector.php"
|
||||
multiple=true
|
||||
max=1
|
||||
required=true
|
||||
}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</dl>
|
||||
</fieldset>
|
||||
<fieldset class="entree">
|
||||
<legend>Informations facultatives</legend>
|
||||
<dl>
|
||||
{{:input
|
||||
type="list"
|
||||
name="user"
|
||||
label="Membre destinataire"
|
||||
target="!users/selector.php"
|
||||
multiple=true
|
||||
max=1
|
||||
}}
|
||||
<div id="loan_user">
|
||||
{{if $_GET.output_type != "rent"}}
|
||||
{{:input
|
||||
type="list"
|
||||
name="user"
|
||||
label="Membre destinataire"
|
||||
target="!users/selector.php"
|
||||
multiple=true
|
||||
max=1
|
||||
}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{:input type="list" name="transactions" label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}}
|
||||
{{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
|
||||
{{:input id="set_return_date" type="checkbox" value=1 name="set_return_date" label="Fixer une date de retour" help="Cocher pour fixer une date de retour"}}
|
||||
|
|
@ -234,7 +262,10 @@
|
|||
{{:admin_footer}}
|
||||
|
||||
<script type="text/javascript" src="../scripts.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var paid_keys = {{$paid_keys|json_encode|raw}};
|
||||
|
||||
function changeVisibility(evt, idcheck = 'f_set_return_date_1', fields = ['div_return_date']) {
|
||||
toggleVisibility(idcheck, fields);
|
||||
}
|
||||
|
|
@ -244,9 +275,23 @@ function changeReturnDate(evt, id_date = 'f_date', id_return_date = 'f_return_da
|
|||
setReturnDate(id_date, id_return_date, id_loan_duration);
|
||||
}
|
||||
|
||||
function toggleUserDiv(event) {
|
||||
const operation = document.getElementById('f_operation').value;
|
||||
console.log('paid_keys=' + paid_keys + ', operation=' + operation);
|
||||
if (paid_keys.includes(operation)) {
|
||||
g.toggle('#rent_user', true);
|
||||
g.toggle('#loan_user', false);
|
||||
} else {
|
||||
g.toggle('#rent_user', false);
|
||||
g.toggle('#loan_user', true);
|
||||
}
|
||||
}
|
||||
toggleUserDiv();
|
||||
|
||||
(function () {
|
||||
document.getElementById('f_set_return_date_1').checked = false;
|
||||
document.getElementById('f_set_return_date_1').onclick = changeVisibility;
|
||||
document.getElementById('f_date').onchange = changeReturnDate;
|
||||
document.getElementById('f_operation').onchange = toggleUserDiv;
|
||||
})();
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue