From bc2aefe26acf99d45b7b2ec821d6d091d353a9b6 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Mon, 9 Feb 2026 14:50:04 +0100 Subject: [PATCH] Ajout saisie tarif des sorties temporaires --- config/add_movement_type.html | 79 ++++++++++++++++++++++++--------- config/misc.html | 42 ++++++++++++++---- movements/output_equipment.html | 63 ++++++++++++++++++++++---- 3 files changed, 146 insertions(+), 38 deletions(-) diff --git a/config/add_movement_type.html b/config/add_movement_type.html index 06881dc..c5e827f 100644 --- a/config/add_movement_type.html +++ b/config/add_movement_type.html @@ -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 @@
Type de sortie
- - {{: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]" + {{: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}} - +
+ {{: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}} +

Signification du type de sortie

  • définitif : le matériel n'appartient plus à l'asso (ex : vente, casse, perte, vol, ...)
  • -
  • temporaire : le matériel sort temporairement de l'asso qui en reste propriétaire (ex : location, prêt)
  • +
  • temporaire : 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
  • retour : le matériel non propriété de l'asso est rendu à son propriétaire (ex : retour de location ou d'emprunt)
@@ -135,3 +152,23 @@

{{/if}} + + diff --git a/config/misc.html b/config/misc.html index d49ef65..f58c655 100644 --- a/config/misc.html +++ b/config/misc.html @@ -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}}

Configuration enregistrée.

{{/if}} -{{* lecture config (défaut ou enregistrée) *}} -{{:include file="../_get_config.html" keep="loan_duration"}} -
-
+
+ Sorties temporaires +

Pour chaque sortie temporaire, indiquer si elle est gratuite ou payante

+
+ {{#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}} +
+
+
Autres paramètres
{{: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"}} diff --git a/movements/output_equipment.html b/movements/output_equipment.html index 95ac3cd..e5f0a8a 100644 --- a/movements/output_equipment.html +++ b/movements/output_equipment.html @@ -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}} +
+ {{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}} +
Informations facultatives
- {{:input - type="list" - name="user" - label="Membre destinataire" - target="!users/selector.php" - multiple=true - max=1 - }} +
+ {{if $_GET.output_type != "rent"}} + {{:input + type="list" + name="user" + label="Membre destinataire" + target="!users/selector.php" + multiple=true + max=1 + }} + {{/if}} +
{{: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}} +