diff --git a/README.md b/README.md
index 591a199..16a0479 100644
--- a/README.md
+++ b/README.md
@@ -12,14 +12,11 @@ compta ou un fichier.
Un matériel appartenant à l'association peut sortir :
- temporairement (prêt, ...) : il est possible de lui associer un lieu
- de stockage ainsi qu'un membre dépositaire du matériel et une date
- de retour ; il peut ensuite revenir dans l'association.
+ de stockage ainsi qu'un membre dépositaire du matériel ; il peut
+ ensuite revenir dans l'association.
- définitivement (vente, ...) : il est possible de lui associer un
membre bénéficiaire du matériel.
-Il est possible de suivre les matériels prêtés ou loués et de savoir
-si la date de retour est proche ou dépassée.
-
Un matériel présent temporairement dans l'association peut être
retourné à son propriétaire.
diff --git a/_get_config.html b/_get_config.html
index 0ebc002..119a20b 100644
--- a/_get_config.html
+++ b/_get_config.html
@@ -16,13 +16,21 @@
{{:assign var="nature" from="module.config.%s_nature"|args:$direction}}
{{if $nature != null}}
{{#foreach from=$nature item="elem"}}
- {{:assign var="config.%s_nature.%s"|args:$direction:$key value=$elem}}
+ {{:assign var="item" label=$label type=$type}}
+ {{:assign var="config.%s_nature.%s"|args:$direction:$key value=$item}}
{{/foreach}}
{{else}}
{{* pas de config enregistrée : utiliser la config par défaut *}}
{{:assign var="nature" from="config_defaut.%ss"|args:$direction}}
{{#foreach from=$nature item="elem"}}
- {{:assign var="config.%s_nature.%s"|args:$direction:$key value=$elem}}
+ {{:assign var="item" label=$label type=$type}}
+ {{:assign var="config.%s_nature.%s"|args:$direction:$key value=$item}}
{{/foreach}}
{{/if}}
{{/foreach}}
+
+{{if $module.config.loan_duration != null}}
+ {{:assign loan_duration=$module.config.loan_duration}}
+{{else}}
+ {{:assign loan_duration=$config_defaut.loan_duration}}
+{{/if}}
diff --git a/_inventory.html b/_inventory.html
index ce8cffc..b74bdbb 100644
--- a/_inventory.html
+++ b/_inventory.html
@@ -1,65 +1,18 @@
{{* -*- brindille -*- *}}
{{*
- Inventaire des matériels en stock dans l'association
+ inventaire des entrées/sorties des matériels permanents
*}}
-{{* filtrer selon la catégorie *}}
-{{:assign saved_filters=$module.config.filters}}
-{{:assign var="user_filters" from="saved_filters.%s"|args:$logged_user.id}}
-
-{{if $_GET.cat_key == null}}
- {{:assign selected_category=$user_filters.stock_cat_key}}
-{{else}}
- {{if $_GET.cat_key == -1}}
- {{:assign selected_category=null}}
- {{else}}
- {{:assign selected_category=$_GET.cat_key}}
- {{/if}}
- {{:assign var="user_filters.stock_cat_key" value=$selected_category}}
- {{:assign var="saved_filters.%s"|args:$logged_user.id value=$user_filters}}
- {{:save key="config" filters=$saved_filters}}
-{{/if}}
-
-{{* condition de filtrage *}}
-{{if $selected_category != null}}
- {{:assign cat_key=$selected_category|quote_sql}}
- {{:assign cat_condition="$$.category = %s"|args:$cat_key}}
-{{else}}
- {{:assign cat_condition="1"}}
-{{/if}}
-
-{{* filtrer selon appartenance *}}
-{{if $_GET.prop == null}}
- {{:assign selected_prop=$user_filters.stock_prop}}
-{{else}}
- {{if $_GET.prop == -1}}
- {{:assign selected_prop=null}}
- {{else}}
- {{:assign selected_prop=$_GET.prop}}
- {{/if}}
- {{:assign var="user_filters.stock_prop" value=$selected_prop}}
- {{:assign var="saved_filters.%s"|args:$logged_user.id value=$user_filters}}
- {{:save key="config" filters=$saved_filters}}
-{{/if}}
-
-{{if $selected_prop == null}}
- {{:assign prop_condition="1"}}
-{{elseif $selected_prop == 1}}
- {{:assign prop_condition="$$.stock NOT NULL"}}
-{{else}}
- {{:assign prop_condition="$$.notowned != 0"}}
-{{/if}}
-
-{{* sélecteurs de catégorie et d'appartenance *}}
-{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}}
+{{* Sélecteur catégories *}}
+{{:assign var="options." value="" label="Toutes les catégories" href="?prop=1"}}
{{#load type="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$key value=$name}}
{{:assign
- var="cat_options."
+ var="options."
value=$key
label=$name
- href="?cat_key=%s"|args:$key
+ href="?cat_key=%s&prop=1"|args:$key
}}
{{/load}}
@@ -67,28 +20,23 @@
Filtrer par catégorie
{{:dropdown
title="Filtrer par catégorie"
- options=$cat_options
- value="%s"|args:$selected_category
- }}
-
-
-{{:assign var="prop_options." value="" label="Tous les matériels" href="?prop=-1"}}
-{{:assign var="prop_options." value="1" label="Matériels propriété de l'association" href="?prop=1"}}
-{{:assign var="prop_options." value="0" label="Matériels NON propriété de l'association" href="?prop=0"}}
-
-
- Filtrer par appartenance
- {{:dropdown
- title="Filtrer par appartenance"
- options=$prop_options
- value="%s"|args:$selected_prop
+ options=$options
+ value="%s"|args:$_GET.cat_key
}}
+{{* filtrer selon la catégorie *}}
+{{if $_GET.cat_key == null}}
+ {{:assign condition="1"}}
+{{else}}
+ {{:assign cat_key=$_GET.cat_key|quote_sql}}
+ {{:assign condition="$$.category = %s"|args:$cat_key}}
+{{/if}}
+
{{#list
select="
$$.name AS 'Matériel' ;
@@ -96,32 +44,35 @@
FROM @TABLE as cat
WHERE cat.key = @TABLE.$$.category) AS 'Catégorie' ;
$$.stock AS 'Stock' ;
- (SELECT COALESCE($$.notowned, 0)) AS 'Temp' ;
- (SELECT $$.stock + COALESCE($$.notowned, 0)) AS 'Total' ;
$$.out AS 'Sorti' ;
(SELECT $$.stock - $$.out) AS 'Disponible'
"
type="equipment"
- where="$$.status <> 'archived' AND %s AND %s"|args:$cat_condition:$prop_condition
+ where="$$.status <> 'archived' AND $$.stock NOT NULL AND %s"|args:$condition
order=1
}}
{{:assign var=cat_name from=categories.%s|args:$category}}
- {{if $selected_prop == null}}
- {{:assign prop=""}}
- {{else}}
- {{:assign prop="&prop=%s"|args:$selected_prop}}
- {{/if}}
- {{:link href="equipment_history.html?key=%s&prop=%s"|args:$key:$selected_prop label=$name}}
+ {{:link href="equipment_history.html?key=%s&prop=1"|args:$key" label=$name}}
{{$cat_name}}
{{$stock}}
- {{$col4}}
- {{$col5}}
{{$out}}
- {{$col7}}
+ {{$col5}}
+ {{if $col5 > 0}}
+ {{:linkbutton
+ label="Sortie"
+ shape="minus"
+ href="movements/output_equipment.html?key=%s"|args:$key
+ target="_dialog"}}
+ {{/if}}
+ {{:linkbutton
+ label="Entrée"
+ shape="plus"
+ href="movements/input_equipment.html?key=%s"|args:$key
+ target="_dialog"}}
{{:linkbutton
- label="Mouvements"
+ label="Historique"
href="equipment_history.html?key=%s&prop=1"|args:$key
shape="table"}}
{{:linkbutton
diff --git a/_nav.html b/_nav.html
index c615e3d..8ea688e 100644
--- a/_nav.html
+++ b/_nav.html
@@ -3,72 +3,63 @@
{{if $current == 'inventaire'}}
- {{if $subcurrent == 'stock'}}
- {{if $cat == 0}}
- {{:linkbutton label="Ajouter une catégorie" shape="plus" href="categories/add_category.html" target="_dialog"}}
- {{else}}
- {{:exportmenu right=true}}
- {{:linkbutton label="Ajouter un nouveau matériel" shape="plus" href="movements/add_new_equipment.html" target="_dialog"}}
- {{/if}}
- {{elseif $subcurrent == "mouvements"}}
- {{if $sortie != null}}
- {{:linkbutton label="Sortie" shape="minus" href="movements/output_equipment.html?key=%s"|args:$key target="_dialog"}}
- {{/if}}
- {{:linkbutton label="Entrée" shape="plus" href="movements/input_equipment.html?key=%s"|args:$key target="_dialog"}}
- {{/if}}
-
- {{elseif $current == 'config'}}
-
- {{if $subcurrent == 'categories'}}
- {{:linkbutton label="Ajouter une catégorie" shape="plus" href="add_category.html" target="_dialog"}}
- {{elseif $subcurrent == 'storage'}}
- {{:linkbutton label="Ajouter un lieu de stockage" shape="plus" href="add_storage.html" target="_dialog"}}
- {{elseif $subcurrent == 'typesES'}}
- {{:linkbutton label="Ajouter un type d'entrée" shape="plus" href="config/add_movement_type.html?dir=input" target="_dialog"}}
- {{:linkbutton label="Ajouter un type de sortie" shape="plus" href="config/add_movement_type.html?dir=output" target="_dialog"}}
+ {{if $subsubcurrent == null && $cat == 0}}
+ {{:linkbutton label="Ajouter une catégorie" shape="plus" href="categories/add_category.html" target="_dialog"}}
+ {{else}}
+ {{:linkbutton label="Ajouter un nouveau matériel" shape="plus" href="movements/add_new_equipment.html" target="_dialog"}}
{{/if}}
{{/if}}
{{if $current == 'inventaire'}}
- {{if $subcurrent == 'mouvements'}}
+
+
+ {{if $subsubcurrent == 'historique'}}
- Mouvements — {{$eqpmt}} ({{$category}})
+ Historique — {{$eqpmt}} ({{$category}})
{{/if}}
- {{elseif $current == 'prêt'}}
+ {{elseif $current == 'historique'}}
- {{elseif $current == 'location'}}
-
{{elseif $current == 'archives'}}
- {{if $subcurrent == 'mouvements'}}
+ {{if $subsubcurrent == 'historique'}}
Historique — {{$eqpmt}} ({{$category}})
{{/if}}
{{elseif $current == 'config'}}
+ {{if $subcurrent == 'categories'}}
+
+ {{:linkbutton label="Ajouter une catégorie" shape="plus" href="add_category.html" target="_dialog"}}
+
+ {{elseif $subcurrent == 'storage'}}
+
+ {{:linkbutton label="Ajouter un lieu de stockage" shape="plus" href="add_storage.html" target="_dialog"}}
+
+ {{elseif $subcurrent == 'typesES'}}
+
+ {{:linkbutton label="Ajouter un type d'entrée" shape="plus" href="config/add_movement_type.html?dir=input" target="_dialog"}}
+ {{:linkbutton label="Ajouter un type de sortie" shape="plus" href="config/add_movement_type.html?dir=output" target="_dialog"}}
+
+ {{/if}}
{{/if}}
diff --git a/_temp_inventory.html b/_temp_inventory.html
index d4b29d4..df4f8aa 100644
--- a/_temp_inventory.html
+++ b/_temp_inventory.html
@@ -4,34 +4,12 @@
inventaire des entrées/sorties des matériels temporaires
*}}
-{{* filtrer selon la catégorie *}}
-{{if $_GET.cat_key == null}}
- {{:assign selected_category=$module.config.temp_cat_key}}
- {{if $module.config.temp_cat_key != null}}
- {{:assign cat_key=$selected_category|quote_sql}}
- {{/if}}
-{{elseif $_GET.cat_key == -1}}
- {{:assign selected_category=null}}
- {{:save key="config" temp_cat_key=null}}
-{{else}}
- {{:assign selected_category=$_GET.cat_key}}
- {{:assign cat_key=$selected_category|quote_sql}}
- {{:save key="config" temp_cat_key=$selected_category}}
-{{/if}}
-
-{{* condition de filtrage *}}
-{{if $selected_category != null}}
- {{:assign cat_condition="$$.category = %s"|args:$cat_key}}
-{{else}}
- {{:assign cat_condition="1"}}
-{{/if}}
-
{{* Sélecteur catégories *}}
-{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1&prop=0"}}
+{{:assign var="options." value="" label="Toutes les catégories" href="?prop=0"}}
{{#load type="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$key value=$name}}
{{:assign
- var="cat_options."
+ var="options."
value=$key
label=$name
href="?cat_key=%s&prop=0"|args:$key
@@ -42,8 +20,8 @@
Filtrer par catégorie
{{:dropdown
title="Filtrer par catégorie"
- options=$cat_options
- value="%s"|args:$selected_category
+ options=$options
+ value="%s"|args:$_GET.cat_key
}}
@@ -51,6 +29,14 @@
Inventaire des matériels empruntés ou loués
+{{* filtrer selon la catégorie *}}
+{{if $_GET.cat_key == null}}
+ {{:assign condition="1"}}
+{{else}}
+ {{:assign cat_key=$_GET.cat_key|quote_sql}}
+ {{:assign condition="$$.category = %s"|args:$cat_key}}
+{{/if}}
+
{{#list
select="
$$.name AS 'Matériel' ;
@@ -60,7 +46,7 @@
$$.notowned AS 'Quantité'
"
type="equipment"
- where="$$.status <> 'archived' AND $$.notowned != 0 AND %s"|args:$cat_condition
+ where="$$.status <> 'archived' AND $$.notowned != 0 AND %s"|args:$condition
order=1
}}
{{:assign var=cat_name from=categories.%s|args:$category}}
diff --git a/archives.html b/archives.html
index 5525aab..087ac1c 100644
--- a/archives.html
+++ b/archives.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{:admin_header title="Matériels archivés" current="module_equipment"}}
{{:include file="_nav.html" current="archives"}}
@@ -9,30 +7,11 @@
Matériel remis en service
{{/if}}
-{{* filtrer selon la catégorie *}}
-{{if $_GET.cat_key == null}}
- {{:assign selected_category=$module.config.archive_cat_key}}
-{{elseif $_GET.cat_key == -1}}
- {{:assign selected_category=null}}
- {{:save key="config" archive_cat_key=null}}
-{{else}}
- {{:assign selected_category=$_GET.cat_key}}
- {{:save key="config" archive_cat_key=$selected_category}}
-{{/if}}
-
-{{* condition de filtrage *}}
-{{if $selected_category == null}}
- {{:assign cat_condition="1"}}
-{{else}}
- {{:assign cat_key=$selected_category|quote_sql}}
- {{:assign cat_condition="$$.category == %s"|args:$cat_key}}
-{{/if}}
-
{{* Sélecteur catégories *}}
-{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}}
+{{:assign var="options." value="" label="Toutes les catégories" href="?prop=1"}}
{{#load type="category" order="$$.name"}}
{{:assign
- var="cat_options."
+ var="options."
value=$key
label=$name
href="?cat_key=%s"|args:$key
@@ -43,14 +22,18 @@
Filtrer par catégorie
{{:dropdown
title="Filtrer par catégorie"
- options=$cat_options
- value="%s"|args:$selected_category
+ options=$options
+ value="%s"|args:$_GET.cat_key
}}
-
+{{* filtrer selon la catégorie *}}
+{{if $_GET.cat_key == null}}
+ {{:assign condition="1"}}
+{{else}}
+ {{:assign cat_key=$_GET.cat_key|quote_sql}}
+ {{:assign condition="$$.category == %s"|args:$cat_key}}
+{{/if}}
{{* Liste des matériels archivés *}}
{{#list
@@ -61,16 +44,16 @@
WHERE cat.key = @TABLE.$$.category) AS "Catégorie"
"
type="equipment"
- where="$$.status='archived' AND %s"|args:$cat_condition
+ where="$$.status='archived' AND %s"|args:$condition
order=1
}}
- {{:link href="equipment_history.html?key=%s&prop=1¤t=archives"|args:$key label=$name}}
+ {{$name}}
{{$col2}}
{{:linkbutton
- label="Mouvements"
+ label="Historique"
href="equipment_history.html?key=%s&prop=1¤t=archives"|args:$key
shape="table"}}
{{:linkbutton
diff --git a/categories/add_category.html b/categories/add_category.html
index 0fe45c8..20691ae 100644
--- a/categories/add_category.html
+++ b/categories/add_category.html
@@ -1,6 +1,9 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
+{{* barre de navigation *}}
+{{if ! $dialog}}
+ {{:include file="../_nav.html" current="config" subcurrent="categories"}}
+{{/if}}
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
@@ -22,11 +25,6 @@
{{/form}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include file="../_nav.html" current="config" subcurrent="categories"}}
-{{/if}}
-
{{:form_errors}}
{{* formulaire d'ajout de catégorie *}}
diff --git a/categories/delete_category.html b/categories/delete_category.html
index 7838f41..7430344 100644
--- a/categories/delete_category.html
+++ b/categories/delete_category.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{#load key=$_GET.key assign="category"}}
{{else}}
{{:error message="Catégorie introuvable"}}
diff --git a/categories/index.html b/categories/index.html
index d021953..0eb43d0 100644
--- a/categories/index.html
+++ b/categories/index.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{:admin_header title="Configuration" current="module_equipment"}}
{{* barre de navigation *}}
diff --git a/categories/modify_category.html b/categories/modify_category.html
index 0819a78..9d2d315 100644
--- a/categories/modify_category.html
+++ b/categories/modify_category.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{#load key=$_GET.key assign="category"}}
{{else}}
{{:error message="Catégorie introuvable"}}
diff --git a/config.html b/config.html
index f4bab4a..d7661ab 100644
--- a/config.html
+++ b/config.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{:admin_header title="Configuration" current="module_equipment"}}
{{* barre de navigation *}}
@@ -11,22 +9,15 @@
Configuration enregistrée.
{{/if}}
-{{* lecture config *}}
-{{:include file="./_get_config.html" keep="config_defaut, config, directions"}}
-
-{{* interdire la modification et la suppression des types de mouvement prédéfinis *}}
-{{#foreach from=$directions key="direction"}}
- {{:assign var="nature" from="config_defaut.%ss"|args:$direction}}
- {{#foreach from=$nature item="elem"}}
- {{:assign var="default_keys." value=$key}}
- {{/foreach}}
-{{/foreach}}
+{{* lecture config (défaut ou enregistrée) *}}
+{{:include file="./_get_config.html" keep="config, directions"}}
{{#foreach from=$directions key="direction" item="item"}}
{{* types de mouvements qui ne peuvent être supprimés *}}
{{#load type="movement" where="$$.direction='%s'"|args:$direction group="$$.operation"}}
- {{:assign var="locked." value=$operation}}
+ {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}}
+ {{:assign var="locked_%ss."|args:$direction value=$op_label}}
{{/load}}
{{$item|ucfirst}}s
@@ -41,23 +32,15 @@
{{:assign var="nature" from="config.%s_nature"|args:$direction}}
{{#foreach from=$nature key=key}}
- {{:assign sortie_temp=false}}
- {{if $direction == 'output'}}
- {{:assign var="type" from="nature.%s.type"|args:$key}}
- {{if $type == 'temporaire'}}
- {{:assign sortie_temp=true}}
- {{/if}}
- {{/if}}
{{$label}}
{{$type}}
- {{if ! $default_keys|has:$key && ! $locked|has:$key}}
+ {{:assign var="locked" from="locked_%ss"|args:$direction}}
+ {{if ! $locked|has:$label}}
{{:linkbutton label="Supprimer" shape="delete" href="config/delete_movement_type.html?dir=%s&op_key=%s"|args:$direction:$key target="_dialog"}}
{{/if}}
- {{if ! $default_keys|has:$key || $sortie_temp}}
{{:linkbutton label="Modifier" shape="edit" href="config/modify_movement_type.html?dir=%s&op_key=%s"|args:$direction:$key target="_dialog"}}
- {{/if}}
{{/foreach}}
diff --git a/config.schema.json b/config.schema.json
index 1f9213c..8395b2f 100644
--- a/config.schema.json
+++ b/config.schema.json
@@ -36,11 +36,6 @@
"type" : {
"type" : "string",
"enum" : ["définitif", "temporaire", "retour"]
- },
- "fee" : {
- "description" : "tarif sortie temporaire",
- "type" : ["string", "null"],
- "enum" : ["gratuit", "payant"]
}
}
}
diff --git a/config/add_movement_type.html b/config/add_movement_type.html
index ecf6866..226311f 100644
--- a/config/add_movement_type.html
+++ b/config/add_movement_type.html
@@ -1,39 +1,32 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
paramètres :
- dir : input ou output
*}}
+{{* barre de navigation *}}
+{{if ! $dialog}}
+ {{:include file="../_nav.html" current="config" subcurrent="typesES"}}
+{{/if}}
+
{{* Traiter l'envoi du formulaire *}}
{{* 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" item="elem"}}
+ {{#foreach from=$nature key="key"}}
{{:assign var="fields" from="_POST.%s_fields"|args:$_GET.dir}}
- {{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 $_GET.dir == $direction && $label|trim|tolower == $fields.label|trim|tolower}}
+ {{:error message="Ce libellé est déjà présent"}}
{{/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}}
@@ -44,13 +37,6 @@
{{: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}}
@@ -65,11 +51,6 @@
{{/form}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include file="../_nav.html" current="config" subcurrent="typesES"}}
-{{/if}}
-
{{:form_errors}}
{{if $_GET.dir == 'input'}}
@@ -121,63 +102,34 @@
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) ; dans ce cas, il faut indiquer si ce type de sortie est gratuit ou payant
+ temporaire : le matériel sort temporairement de l'asso qui en reste propriétaire (ex : location, prêt)
retour : le matériel non propriété de l'asso est rendu à son propriétaire (ex : retour de location ou d'emprunt)
-
-
Tarification
-
- Une sortie temporaire gratuite sera classée dans l'onglet Prêt
- Une sortie temporaire payante sera classée dans l'onglet Locations
-
-
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
{{/if}}
-
-
diff --git a/config/delete_movement_type.html b/config/delete_movement_type.html
index 801f821..9e889ab 100644
--- a/config/delete_movement_type.html
+++ b/config/delete_movement_type.html
@@ -1,37 +1,27 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
paramètres :
- dir : input ou output
- op_key : clé du type de mouvement à supprimer
*}}
+{{* 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_defaut, config, directions"}}
-
-{{if ! $directions|has_key:$_GET.dir}}
- {{:error message="Direction « %s » inconnue !"|args:$_GET.dir}}
-{{/if}}
-
-{{* interdire la suppression des types de mouvement prédéfinis *}}
-{{:assign var="nature" from="config_defaut.%ss"|args:$_GET.dir}}
-{{#foreach from=$nature item="elem"}}
- {{:assign var="default_keys." value=$key}}
-{{/foreach}}
-{{if $default_keys|has:$_GET.op_key}}
- {{:error message="Ce type de mouvement ne peut être supprimé"}}
-{{/if}}
+{{:include file="../_get_config.html" keep="config, directions"}}
{{#form on="delete"}}
{{#foreach from=$directions key="direction"}}
{{:assign var="nature" from="config.%s_nature"|args:$direction}}
- {{#foreach from=$nature key="key" item="elem"}}
+ {{#foreach from=$nature key="key"}}
{{if $_GET.dir == $direction && $key != $_GET.op_key || $_GET.dir != $direction}}
- {{: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}}
{{/if}}
{{/foreach}}
@@ -47,10 +37,6 @@
{{/form}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include file="../_nav.html" current="config" subcurrent="typesES"}}
-{{/if}}
{{:form_errors}}
{{:assign var="mvt_label" from="config.%s_nature.%s.label"|args:$_GET.dir:$_GET.op_key}}
diff --git a/config/misc.html b/config/misc.html
deleted file mode 100644
index 7034c04..0000000
--- a/config/misc.html
+++ /dev/null
@@ -1,40 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
-{{#form on="save"}}
- {{* vérifier la validité de la durée saisie *}}
- {{if $_POST.loan_duration < 0}}
- {{:error message="Durée (%s) erronée ; doit être >= 0"|args:$_POST.loan_duration}}
- {{/if}}
-
- {{:save
- key="config"
- loan_duration=$_POST.loan_duration
- }}
-
-{{/form}}
-
-{{:admin_header title="Configuration" current="module_equipment"}}
-{{:include file="../_nav.html" current="config" subcurrent="divers"}}
-{{:form_errors}}
-
-{{if $_GET.ok}}
- Configuration enregistrée.
-{{/if}}
-
-{{* lecture config *}}
-{{:include file="../_get_config.html" keep="loan_duration"}}
-
-
-{{:admin_footer}}
diff --git a/config/modify_movement_type.html b/config/modify_movement_type.html
index 0f7a9f7..b5210c3 100644
--- a/config/modify_movement_type.html
+++ b/config/modify_movement_type.html
@@ -1,42 +1,34 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
paramètres :
- dir : input ou output
- - op_key : clé du type de mouvement dont on veut modifier le libellé ou le tarif
+ - op_key : clé du type de mouvement dont on veut modifier le libellé
*}}
+{{* 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_defaut, config, directions"}}
+{{:include file="../_get_config.html" keep="config, directions"}}
{{#form on="save"}}
- {{if $_POST.tarif == null && $_POST.name == null}}
- {{:redirect to="./config.html"}}
- {{/if}}
{{#foreach from=$directions key="direction"}}
{{:assign var="nature" from="config.%s_nature"|args:$direction}}
- {{#foreach from=$nature key="key" item="elem"}}
- {{if $_POST.name == null}}
- {{:assign label=$elem.label}}
- {{else}}
- {{if $_GET.dir == $direction && $key != $_GET.op_key &&
- $_POST.name|trim|tolower == $elem.label|trim|tolower}}
- {{:error message="Le libellé « %s » est déjà présent"|args:$_POST.name}}
- {{/if}}
- {{if $_GET.dir == $direction && $key == $_GET.op_key}}
- {{:assign label=$_POST.name|trim}}
- {{else}}
- {{:assign label=$elem.label}}
- {{/if}}
- {{/if}}
- {{:assign var="%s_nature"|args:$direction value=$elem}}
- {{:assign var="%s_nature.label"|args:$direction value=$label}}
+ {{#foreach from=$nature key="key"}}
{{:assign var="%s_nature.key"|args:$direction value=$key}}
- {{if $_POST.tarif != null && $key == $_GET.op_key}}
- {{:assign var="%s_nature.fee"|args:$direction value=$_POST.tarif}}
+ {{if $_GET.dir == $direction}}
+ {{if $key == $_GET.op_key}}
+ {{:assign var="%s_nature.label"|args:$direction value=$_POST.name|trim}}
+ {{else}}
+ {{:assign var="%s_nature.label"|args:$direction value=$label}}
+ {{/if}}
+ {{else}}
+ {{:assign var="%s_nature.label"|args:$direction value=$label}}
{{/if}}
+ {{:assign var="%s_nature.type"|args:$direction value=$type}}
{{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}}
{{/foreach}}
{{/foreach}}
@@ -51,71 +43,14 @@
{{/form}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
-{{if ! $dialog}}
- {{:include file="../_nav.html" current="config" subcurrent="typesES"}}
-{{/if}}
{{:form_errors}}
-
-{{* vérifier que $_GET.dir est bien une direction connue *}}
-{{if ! $directions|has_key:$_GET.dir}}
- {{:error message="Direction « %s » inconnue !"|args:$_GET.dir}}
-{{/if}}
-
-{{* vérifier que $_GET.op_key est bien dans la liste des opérations *}}
-{{:assign var="config_nature" from="config.%s_nature"|args:$_GET.dir}}
-{{if ! $config_nature|keys|has:$_GET.op_key}}
- {{:error message="Type de mouvement inconnu !"}}
-{{/if}}
-
-{{* sortie temporaire ? *}}
-{{:assign sortie_temp=false}}
-{{if $_GET.dir == 'output'}}
- {{:assign var="elem" from="config_nature.%s"|args:$_GET.op_key}}
- {{if $elem.type == 'temporaire'}}
- {{:assign sortie_temp=true}}
- {{:assign fee=$elem.fee}}
- {{/if}}
-{{/if}}
-
-{{* mouvement prédéfini ? *}}
-{{:assign var="default_nature" from="config_defaut.%ss"|args:$_GET.dir}}
-{{#foreach from=$default_nature item="elem"}}
- {{:assign var="default_keys." value=$key}}
-{{/foreach}}
-
-{{:assign label_mod=true}}
-{{if $default_keys|has:$_GET.op_key}}
- {{:assign label_mod=false}}
-{{/if}}
-
-{{if ! $label_mod && ! $sortie_temp}}
- {{:error message="Ce type de mouvement ne peut être modifié"}}
-{{/if}}
-
{{:assign var="default_label" from="config.%s_nature.%s.label"|args:$_GET.dir:$_GET.op_key}}
-
- {{/if}}
- {{if $otk == null || $otk != $out_temp_key}}
-
-
-
- Date
- Opération
- Quantité
- Total
-
-
-
-
- {{:assign otk=$out_temp_key}}
- {{/if}}
-
- {{if $direction == 'input' && $type_mvt == 'retour'}}
- {{:assign var="reste.%s"|args:$out_temp_key value="%d-%d"|math:$total:$amount}}
- {{elseif $direction == 'output' && $type_mvt == 'temporaire'}}
- {{:assign var="reste.%s"|args:$out_temp_key value="%d+%d"|math:$total:$amount}}
- {{/if}}
- {{:assign var="total" from="reste.%s"|args:$out_temp_key}}
-
-
- {{$date|date_short}}
- {{$op_label}}
- {{$amount}}
- {{$total}}
-
- {{#restrict section="accounting" level="write"}}
- {{if $direction == "output" && $type_mvt == "temporaire"}}
- {{:linkbutton
- label="Retour"
- href="%smovements/output_return.html?key=%s&prop=0&user=%s"|args:$module.url:$mvt_key:$_GET.id
- shape="history"
- target="_dialog"}}
- {{/if}}
- {{/restrict}}
-
-
-{{/select}}
-
-
diff --git a/member_loan.html b/member_loan.html
deleted file mode 100644
index 28f7278..0000000
--- a/member_loan.html
+++ /dev/null
@@ -1,105 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
-{{*
- paramètres :
- - id : id membre
-*}}
-
-{{if $_GET.output_type == "loan"}}
- {{:assign label="prêt"}}
-{{elseif $_GET.output_type == "rent"}}
- {{:assign label="location"}}
-{{else}}
- {{:error message="Cette page n'existe pas !"}}
-{{/if}}
-
-{{:admin_header title="%ss aux membres"|args:$label|ucfirst custom_css="./style.css" current="module_equipment"}}
-{{:include file="./_nav.html" current="%s"|args:$label subcurrent="membres"}}
-
-{{* vérifier l'existence de la table du module *}}
-{{#load limit="1"}}
- {{:assign table_presente=true}}
-{{else}}
- {{:assign table_presente=false}}
-{{/load}}
-
-{{if $table_presente}}
-{{:include file="./_get_config.html" keep="config"}}
-
-{{* déterminer les types de mouvements *}}
-{{#foreach from=$config.output_nature key="key"}}
- {{if $type != 'temporaire'}}
- {{:continue}}
- {{/if}}
- {{if $_GET.output_type == "loan" && $fee != 'payant'}}
- {{:assign var="out_keys." value=$key|quote_sql}}
- {{elseif $_GET.output_type == "rent" && $fee == 'payant'}}
- {{:assign var="out_keys." value=$key|quote_sql}}
- {{/if}}
-{{/foreach}}
-{{:assign out_keys=$out_keys|implode:","}}
-{{:assign out_keys="("|cat:$out_keys|cat:")"}}
-
-{{:assign premier=true}}
-{{#select
- nom, user, GROUP_CONCAT(mat_name, ", ") AS materiel, SUM(remain) AS quantite
- FROM
- (SELECT users.nom AS nom,
- users.id AS user,
- json_extract(mat.document, '$.name') AS mat_name,
- json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(retour.document, '$.amount')), 0) AS remain
- FROM !table AS mvt
- INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id
- LEFT JOIN !table AS links ON mvt.key = json_extract(links.document, '$.temp_key')
- LEFT JOIN !table AS retour ON retour.key = json_extract(links.document, '$.return')
- INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment')
- WHERE json_extract(mvt.document, '$.type') = 'movement'
- AND json_extract(mvt.document, '$.operation') IN !op
- GROUP BY mvt.key
- HAVING remain != 0
- )
- GROUP BY user
- ORDER BY nom
- ;
- !table=$module.table
- !op = $out_keys
- }}
-
- {{if $premier}}
-
-
-
- Membre
- Quantité
- Matériels
-
-
-
- {{:assign premier=false}}
- {{/if}}
-
-
- {{:link href="/admin/users/details.php?id=%s"|args:$user label="%s"|args:$nom}}
- {{$quantite}}
- {{$materiel}}
-
-{{else}}
- {{if $label == "prêt"}}
- Aucun {{$label}} en cours.
- {{elseif $label == "location"}}
- Aucune {{$label}} en cours.
- {{/if}}
-{{/select}}
-
-
-{{else}}
- {{if $label == "prêt"}}
- Aucun {{$label}} en cours.
- {{elseif $label == "location"}}
- Aucune {{$label}} en cours.
- {{/if}}
-{{/if}}
-
-{{:admin_footer}}
diff --git a/modify_equipment.html b/modify_equipment.html
index 6236ef7..d36c78b 100644
--- a/modify_equipment.html
+++ b/modify_equipment.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
Paramètres :
- key : clé du matériel à modifier
diff --git a/module.ini b/module.ini
index b64a48c..28ffd9e 100644
--- a/module.ini
+++ b/module.ini
@@ -1,10 +1,8 @@
name="Gestion des matériels"
-description="Permet de gérer un inventaire de matériels, ainsi que de suivre les prêts.\nversion 0.7"
+description="Permet de gérer un inventaire de matériels, ainsi que de suivre les prêts."
author="Jean-Christophe Engel"
author_url="https://gitea.zaclys.com/lesanges"
home_button=true
menu=true
-restrict_section="connect"
-restrict_level="read"
-restrict_details="Les membres connectés peuvent consulter l'historique de leurs prêts ; les membres ayant accès en lecture aux membres peuvent consulter l'historique des prêts des autres membres ; seuls les membres ayant accès en écriture à la comptabilité peuvent utiliser l'ensemble des fonctionnalités du module."
-allow_user_restrict=false
+restrict_section="accounting"
+restrict_level="write"
diff --git a/movements/add_new_equipment.html b/movements/add_new_equipment.html
index 456cfdd..af91337 100644
--- a/movements/add_new_equipment.html
+++ b/movements/add_new_equipment.html
@@ -1,6 +1,9 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
+{{* barre de navigation *}}
+{{if ! $dialog}}
+ {{:include file="../_nav.html" current="entrees"}}
+{{/if}}
{{* récupérer la config des entrées/sorties *}}
{{:include file="../_get_config.html" keep="config"}}
@@ -117,10 +120,6 @@
{{/form}}
{{:admin_header title="Entrée de matériel" current="module_equipment"}}
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include file="../_nav.html" current="entrees"}}
-{{/if}}
{{:form_errors}}
{{if $categories != null}}
@@ -134,23 +133,23 @@
Informations obligatoires
- {{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
- {{:input type="number" name="amount" label="Quantité" min=1 required=true default=1}}
- {{:input type="text" name="name" label="Désignation" required=true}}
{{if $input_labels|count == 1}}
{{:input type="select" name="operation" label="Type" required=true options=$input_labels}}
{{else}}
{{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}}
{{/if}}
+ {{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
+ {{:input type="number" name="amount" label="Quantité" min=1 required=true default=1}}
{{if $categories|count == 1}}
{{:input type="select" name="category" label="Catégorie" options=$categories required=true}}
{{else}}
{{:input type="select" name="category" label="Catégorie" default_empty="— Aucune —" options=$categories required=true}}
{{/if}}
+ {{:input type="text" name="name" label="Désignation" required=true}}
- Autres informations
+ Informations facultatives
{{if $storage != null}}
{{:input type="select" name="storage" label="Lieu de stockage" default_empty="— Aucun —" options=$storage required=false}}
diff --git a/movements/copy_movement.html b/movements/copy_movement.html
index 6814d88..29539ea 100644
--- a/movements/copy_movement.html
+++ b/movements/copy_movement.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
Dupliquer un mouvement
paramètres :
@@ -16,7 +14,7 @@
{{/load}}
{{* récupérer la config des entrées/sorties *}}
-{{:include file="../_get_config.html" keep="config, directions"}}
+{{:include file="../_get_config.html" keep="config, directions, loan_duration"}}
{{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$mvt_new.direction:$mvt_new.operation}}
{{* interdire de dupliquer un retour => utiliser le bouton « Retour » *}}
@@ -95,12 +93,8 @@
{{:assign var="mvt_new.amount" value=$_POST.amount}}
{{:assign var="mvt_new.date" value=$_POST.date|parse_date}}
{{:assign var="mvt_new.comment" value=$_POST.comment}}
-
- {{if $_POST.return_date != null}}
- {{:assign return_date=$_POST.return_date|parse_date}}
- {{if $return_date < $_POST.date|parse_date}}
- {{:error message="La date de retour doit être postérieure à la date de sortie !"}}
- {{/if}}
+ {{if $_POST.set_return_date != null}}
+ {{:assign return_date=$_POST.return_date}}
{{else}}
{{:assign return_date=null}}
{{/if}}
@@ -209,27 +203,9 @@
user=$user.id
storage=$_POST.storage
transactions=$transactions
- return_date=$return_date
+ return_date=$return_date|parse_date
}}
-
- {{if $_GET.from|substr:0:1 == "l"}}
- {{:assign output_type="loan"}}
- {{elseif $_GET.from|substr:0:1 == "r"}}
- {{:assign output_type="rent"}}
- {{/if}}
- {{if $_GET.from|substr:1:1 == "h"}}
- {{:assign suffix="history"}}
- {{elseif $_GET.from|substr:1:1 == "m"}}
- {{:assign suffix="movements"}}
- {{/if}}
-
- {{if $_GET.from == "eh"}}
- {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=copie"|args:$eqpmt_key:$prop}}
- {{elseif $suffix == null}}
- {{:redirect force="../index.html"}}
- {{else}}
- {{:redirect force="../loan_%s.html?output_type=%s&ok=1&key=%s&prop=%s&msg=copie"|args:$suffix:$output_type:$eqpmt_key:$prop}}
- {{/if}}
+ {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=copie"|args:$eqpmt_key:$prop}}
{{/form}}
{{if $mvt_new.direction == "input"}}
@@ -244,6 +220,7 @@
-------------------- Préparer la saisie --------------------
*}}
+{{* récupérer les infos de la catégorie *}}
{{#load key=$equipment.category assign="category"}}{{/load}}
{{:assign var="op_label" from="config.%s_nature.%s.label"|args:$mvt_new.direction:$mvt_new.operation}}
@@ -271,18 +248,17 @@
Informations obligatoires
- {{:input type="date" name="date" label="Date" required=true default=$mvt_new.date}}
- {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_new.amount}}
{{if $mvt_new.direction == "input"}}
{{:input type="select" name="operation" label="Type" required=true options=$input_labels|sort default=$mvt_new.operation}}
{{else}}
{{:input type="select" name="operation" label="Type" required=true options=$output_labels|sort default=$mvt_new.operation}}
{{/if}}
+ {{:input type="date" name="date" label="Date" required=true default=$mvt_new.date}}
+ {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_new.amount}}
-
- Autres informations
+ Informations facultatives
{{if $prop == 1 && $mvt_new.direction == "output"}}
{{:input
@@ -295,26 +271,27 @@
max=1
}}
{{/if}}
- {{if $mvt_new.direction == "input" && $storage != null}}
- {{:input type="select" name="storage" label="Lieu de stockage" default=$mvt_new.storage default_empty="— Aucun —" options=$storage required=false}}
+ {{if $mvt_new.direction == "input"}}
+ {{:input type="select" name="storage" default=$mvt_new.storage label="Lieu de stockage" default_empty="— Aucun —" options=$storage required=false}}
+ {{if $type_mvt != "retour"}}
+ {{:input type="list" name="transactions" label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}}
+ {{/if}}
{{/if}}
- {{if $type_mvt != "retour"}}
- {{:input type="list" name="transactions" label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}}
- {{/if}}
- {{:input type="textarea" name="comment" label="Remarques" cols="40" rows="3" required=false default=$mvt_new.comment}}
- {{if $mvt_new.direction == "output"}}
+ {{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false default=$mvt_new.comment}}
+ {{if $mvt_new.direction == "output" && $type_mvt == "temporaire"}}
{{if $mvt_new.return_date != null}}
+ {{:assign checked="checked"}}
+ {{:assign visibility="visible"}}
{{:assign return_date=$mvt_new.return_date}}
{{else}}
- {{if $module.config.loan_duration != null && $module.config.loan_duration > 0}}
- {{:assign ts_sortie=$mvt_new.date|strtotime}}
- {{:assign ts_retour="%d+%d*(60*60*24)"|math:$ts_sortie:$module.config.loan_duration}}
- {{:assign return_date=$ts_retour|date_short}}
- {{/if}}
+ {{:assign visibility="hidden"}}
+ {{:assign ts_sortie=$mvt_new.date|strtotime}}
+ {{:assign ts_retour="%d+%d*(60*60*24)"|math:$ts_sortie:$loan_duration}}
+ {{:assign return_date=$ts_retour|date_short}}
{{/if}}
-
+ {{: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" checked="%s"|args:$checked}}
+
{{:input type="date" name="return_date" label="Date de retour" default=$return_date}}
-
{{/if}}
@@ -329,27 +306,12 @@
{{:admin_footer}}
-
diff --git a/movements/delete_movement.html b/movements/delete_movement.html
index ce9e4c3..aea6243 100644
--- a/movements/delete_movement.html
+++ b/movements/delete_movement.html
@@ -1,6 +1,4 @@
-{{* -*- brindille -*- *}}
-
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
+{{* -*- brindille -*-}}
{{*
paramètres GET :
@@ -23,25 +21,6 @@
{{:include file="../_get_config.html" keep="config"}}
{{#form on="delete"}}
- {{if $_GET.from|substr:0:1 == "l"}}
- {{:assign output_type="loan"}}
- {{elseif $_GET.from|substr:0:1 == "r"}}
- {{:assign output_type="rent"}}
- {{/if}}
- {{if $_GET.from|substr:1:1 == "h"}}
- {{:assign suffix="history"}}
- {{elseif $_GET.from|substr:1:1 == "m"}}
- {{:assign suffix="movements"}}
- {{/if}}
- {{if $_GET.from == "eh"}}
- {{:assign from="../equipment_history.html"}}
- {{elseif $suffix == null}}
- {{:assign from="../index.html"}}
- {{else}}
- {{:assign from="../loan_%s.html"|args:$suffix}}
- {{:assign param="&output_type=%s"|args:$output_type}}
- {{/if}}
-
{{* vérifier s'il est possible de supprimer le mouvement *}}
{{if $mvt_suppr.direction == 'input'}}
{{:assign var="type_operation" from="config.input_nature.%s.type"|args:$mvt_suppr.operation}}
@@ -50,7 +29,7 @@
{{:assign link_key=$key}}
{{/load}}
{{if $link_key != null}}
- {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}}
+ {{:redirect force="../equipment_history.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}}
{{/if}}
{{else}}
{{:assign dispo=0}}
@@ -83,7 +62,7 @@
{{* problème ? *}}
{{if $dispo < 0 || $nonprop < 0}}
- {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}}
+ {{:redirect force="../equipment_history.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}}
{{/if}}
{{/if}}
{{/load}}
@@ -104,7 +83,7 @@
{{:assign link_key=$key}}
{{/load}}
{{if $link_key != null}}
- {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}}
+ {{:redirect force="../equipment_history.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}}
{{/if}}
{{elseif $type_operation == 'retour'}}
{{#load type="link" where="$$.return = :key" :key=$_GET.key}}
@@ -169,11 +148,11 @@
out=$curr_eqpmt.out
notowned=$curr_eqpmt.notowned
}}
- {{:redirect force="%s?ok=1&key=%s&prop=%s&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}}
+ {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}}
{{else}}
{{* supprimer le matériel *}}
{{:delete key=$curr_eqpmt.key}}
- {{:redirect force="../index.html?ok=1&msg=supprmvtmat"|args}}
+ {{:redirect force="../index.html?ok=1&msg=supprmvtmat"}}
{{/if}}
{{/form}}
diff --git a/movements/input_equipment.html b/movements/input_equipment.html
index 502580e..deff4cc 100644
--- a/movements/input_equipment.html
+++ b/movements/input_equipment.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
Enregistrer une entrée de matériel
paramètres :
@@ -44,7 +42,7 @@
{{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$_POST.amount|intval}}
{{/if}}
- {{* écritures liées *}}
+ {{* documents liés *}}
{{#foreach from=$_POST.transactions item="value"}}
{{:assign var="transactions." value=$value|intval}}
{{/foreach}}
@@ -106,17 +104,17 @@
Informations obligatoires
+ {{if $input_labels|count == 1}}
+ {{:input type="select" name="operation" label="Type" required=true options=$input_labels}}
+ {{else}}
+ {{:input type="select" name="operation" label="Type" required=true default_empty="— Aucun —" options=$input_labels|sort}}
+ {{/if}}
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="number" name="amount" label="Quantité" required=true min=1 default=1}}
- {{if $input_labels|count == 1}}
- {{:input type="select" name="operation" label="Type d'entrée" required=true options=$input_labels}}
- {{else}}
- {{:input type="select" name="operation" label="Type d'entrée" required=true default_empty="— Aucun —" options=$input_labels|sort}}
- {{/if}}
- Autres informations
+ Informations facultatives
{{if $storage != null}}
{{:input type="select" name="storage" label="Lieu de stockage" default_empty="— Aucun —" options=$storage required=false}}
diff --git a/movements/input_return.html b/movements/input_return.html
index 3b984b3..4683205 100644
--- a/movements/input_return.html
+++ b/movements/input_return.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
Enregistrer un retour d'entrée temporaire
paramètres :
@@ -34,15 +32,14 @@
{{#select
json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(mvt2.document, '$.amount')), 0) AS present
- FROM !table AS mvt
- LEFT JOIN !table AS link ON mvt.key = json_extract(link.document, '$.temp_key')
- LEFT JOIN !table AS mvt2 ON mvt2.key = json_extract(link.document, '$.return')
+ FROM {!$module.table} AS mvt
+ LEFT JOIN {!$module.table} AS link ON mvt.key = json_extract(link.document, '$.temp_key')
+ LEFT JOIN {!$module.table} AS mvt2 ON mvt2.key = json_extract(link.document, '$.return')
WHERE
json_extract(mvt.document, '$.operation') IN !op
AND mvt.key = :mvt_key
GROUP by mvt.key
;
- !table=$module.table
!op = $operations
:mvt_key = $_GET.key
}}
@@ -204,9 +201,9 @@
Retour de matériel
+ {{:input type="select" name="operation" label="Type" required=true options=$return_label}}
{{:input type="date" name="date" label="Date" required=true default=$now|date_short}}
{{:input type="number" name="amount" label="Quantité" min=1 max=$present required=true default=1}}
- {{:input type="select" name="operation" label="Type de mouvement" required=true options=$return_label}}
{{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false}}
diff --git a/movements/modify_movement.html b/movements/modify_movement.html
index 7dd87d0..2139e4d 100644
--- a/movements/modify_movement.html
+++ b/movements/modify_movement.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
Modifier un mouvement
paramètres :
@@ -15,7 +13,22 @@
{{/load}}
{{* récupérer la config des entrées/sorties *}}
-{{:include file="../_get_config.html" keep="config, directions"}}
+{{:include file="../_get_config.html" keep="config, directions, loan_duration"}}
+{{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$mvt_new.direction:$mvt_new.operation}}
+
+{{if $mvt_new.direction == "input"}}
+ {{if $type_mvt == "temporaire"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+{{else}}
+ {{if $type_mvt == "retour"}}
+ {{:assign prop=0}}
+ {{else}}
+ {{:assign prop=1}}
+ {{/if}}
+{{/if}}
{{* infos pour affichage *}}
{{:assign var="op_label" from="config.%s_nature.%s.label"|args:$mvt_new.direction:$mvt_new.operation}}
@@ -30,15 +43,25 @@
{{:error message="Aucun matériel avec la clé « %s »"|args:$eqpmt_key}}
{{/load}}
+{{#foreach from=$directions key="direction"}}
+ {{:assign var="nature" from="config.%s_nature"|args:$direction}}
+ {{#foreach from=$nature key="key"}}
+ {{if $type_mvt != "retour" && $type != "retour" ||
+ $type_mvt == "retour" && $type == "retour"}}
+ {{:assign var="%s_labels.%s"|args:$direction:$key value=$label}}
+ {{/if}}
+ {{/foreach}}
+{{/foreach}}
+
{{*
-------------------- Traiter la saisie --------------------
*}}
{{#form on="save"}}
- {{* vérifier la validité de la saisie *}}
{{if $_POST.amount <= 0}}
{{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}}
{{/if}}
+ {{* vérifier validité des données *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
@@ -61,13 +84,8 @@
{{:assign var="mvt_new.amount" value=$_POST.amount}}
{{:assign var="mvt_new.date" value=$_POST.date|parse_date}}
{{:assign var="mvt_new.comment" value=$_POST.comment}}
- {{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$mvt_new.direction:$mvt_new.operation}}
-
- {{if $_POST.return_date != null}}
- {{:assign return_date=$_POST.return_date|parse_date}}
- {{if $return_date < $_POST.date|parse_date}}
- {{:error message="La date de retour doit être postérieure à la date de sortie !"}}
- {{/if}}
+ {{if $_POST.set_return_date != null}}
+ {{:assign return_date=$_POST.return_date}}
{{else}}
{{:assign return_date=null}}
{{/if}}
@@ -79,7 +97,10 @@
*}}
{{:assign insere=false}}
{{#load
- where="$$.type = 'movement' AND $$.equipment = :eqpmt_key"
+ where="
+ $$.type = 'movement'
+ AND
+ $$.equipment = :eqpmt_key"
:eqpmt_key=$eqpmt_key
order="$$.date"
assign="movement"
@@ -181,7 +202,7 @@
{{* enregistrer le mouvement modifié *}}
{{if $user == null}}
- {{:assign user_id=null}}
+ {{:assign user_id=$mvt_new.user}}
{{else}}
{{:assign user_id=$user.id}}
{{/if}}
@@ -199,41 +220,9 @@
user=$user_id
storage=$_POST.storage
transactions=$transactions
- return_date=$return_date
+ return_date=$return_date|parse_date
}}
-
- {{if $_GET.from|substr:0:1 == "l"}}
- {{:assign output_type="loan"}}
- {{elseif $_GET.from|substr:0:1 == "r"}}
- {{:assign output_type="rent"}}
- {{/if}}
- {{if $_GET.from|substr:1:1 == "h"}}
- {{:assign suffix="history"}}
- {{elseif $_GET.from|substr:1:1 == "m"}}
- {{:assign suffix="movements"}}
- {{/if}}
-
- {{if $mvt_new.direction == "input"}}
- {{if $type_mvt == "temporaire"}}
- {{:assign prop=0}}
- {{else}}
- {{:assign prop=1}}
- {{/if}}
- {{else}}
- {{if $type_mvt == "retour"}}
- {{:assign prop=0}}
- {{else}}
- {{:assign prop=1}}
- {{/if}}
- {{/if}}
-
- {{if $_GET.from == "eh"}}
- {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=modification"|args:$eqpmt_key:$prop}}
- {{elseif $suffix == null}}
- {{:redirect force="../index.html"}}
- {{else}}
- {{:redirect force="../loan_%s.html?output_type=%s&ok=1&key=%s&prop=%s&msg=modification"|args:$suffix:$output_type:$eqpmt_key:$prop}}
- {{/if}}
+ {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=modification"|args:$eqpmt_key:$prop}}
{{/form}}
{{if $mvt_new.direction == "input"}}
@@ -250,18 +239,6 @@
{{#load key=$equipment.category assign="category"}}{{/load}}
-{{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$mvt_new.direction:$mvt_new.operation}}
-{{#foreach from=$directions key="direction"}}
- {{:assign var="nature" from="config.%s_nature"|args:$direction}}
- {{#foreach from=$nature key="key"}}
- {{if $type_mvt != "retour" && $type != "retour" ||
- $type_mvt == "retour" && $type == "retour"}}
- {{:assign var="%s_labels.%s"|args:$direction:$key value=$label}}
- {{/if}}
- {{/foreach}}
-{{/foreach}}
-
-
{{if $mvt_new.user != null}}
{{#select id, !name as nom FROM users WHERE id=:id; !name=$config.user_fields.name_sql :id=$mvt_new.user}}
{{:assign var="user.%s"|args:$id value=$nom}}
@@ -294,20 +271,20 @@
Informations obligatoires
- {{:input type="date" name="date" label="Date" required=true default=$mvt_new.date}}
- {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_new.amount}}
{{if $mvt_new.direction == "input"}}
{{:input type="select" name="operation" label="Type" required=true options=$input_labels|sort default=$mvt_new.operation}}
{{else}}
{{:input type="select" name="operation" label="Type" required=true options=$output_labels|sort default=$mvt_new.operation}}
{{/if}}
+ {{:input type="date" name="date" label="Date" required=true default=$mvt_new.date}}
+ {{:input type="number" name="amount" label="Quantité" min=1 required=true default=$mvt_new.amount}}
- Autres informations
+ Informations facultatives
- {{if $mvt_new.direction == "output" && $type_mvt != "retour"}}
+ {{if $prop == 1 && $mvt_new.direction == "output"}}
{{:input
type="list"
name="user"
@@ -318,26 +295,30 @@
max=1
}}
{{/if}}
- {{if $mvt_new.direction == "input" && $storage != null}}
- {{:input type="select" name="storage" label="Lieu de stockage" default=$mvt_new.storage default_empty="— Aucun —" options=$storage required=false}}
- {{/if}}
- {{if $type_mvt != "retour"}}
- {{:input type="list" name="transactions" label="Écritures liées" default=$mvt_new.transactions target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}}
+ {{if $mvt_new.direction == "input"}}
+ {{if $storage != null}}
+ {{:input type="select" name="storage" label="Lieu de stockage" default=$mvt_new.storage default_empty="— Aucun —" options=$storage required=false}}
+ {{/if}}
+ {{if $type_mvt != "retour"}}
+ {{:input type="list" name="transactions" default=$mvt_new.transactions label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}}
+ {{/if}}
{{/if}}
{{:input type="textarea" name="comment" label="Remarques" cols="40", rows="3" required=false default=$mvt_new.comment}}
- {{if $mvt_new.direction == "output"}}
+ {{if $mvt_new.direction == "output" && $type_mvt == "temporaire"}}
{{if $mvt_new.return_date != null}}
+ {{:assign checked="checked"}}
+ {{:assign visibility="visible"}}
{{:assign return_date=$mvt_new.return_date}}
{{else}}
- {{if $module.config.loan_duration != null && $module.config.loan_duration > 0}}
- {{:assign ts_sortie=$mvt_new.date|strtotime}}
- {{:assign ts_retour="%d+%d*(60*60*24)"|math:$ts_sortie:$module.config.loan_duration}}
- {{:assign return_date=$ts_retour|date_short}}
- {{/if}}
+ {{:assign visibility="hidden"}}
+ {{:assign ts_sortie=$mvt_new.date|strtotime}}
+ {{:assign ts_retour="%d+%d*(60*60*24)"|math:$ts_sortie:$loan_duration}}
+ {{:assign return_date=$ts_retour|date_short}}
{{/if}}
-
+ {{: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" checked="%s"|args:$checked}}
+
{{:input type="date" name="return_date" label="Date de retour" default=$return_date}}
-
+
{{/if}}
@@ -352,27 +333,20 @@
{{:admin_footer}}
-
diff --git a/movements/movement_details.html b/movements/movement_details.html
index 7011d81..f25fca7 100644
--- a/movements/movement_details.html
+++ b/movements/movement_details.html
@@ -1,7 +1,5 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
Afficher les détails d'un mouvement et donner la possibilité :
- d'associer des fichiers
@@ -9,7 +7,6 @@
paramètres :
- key : clé du mouvement
- prop = 1 si matériel appartient à l'asso
- - from = page d'appel
*}}
{{:admin_header title="Détails du mouvement" custom_css="../style.css" current="module_equipment"}}
@@ -45,18 +42,18 @@
{{:linkbutton
label="Modifier ce mouvement"
- href="modify_movement.html?key=%s&from=%s"|args:$_GET.key:$_GET.from
+ href="modify_movement.html?key=%s"|args:$_GET.key
shape="edit"
target="_dialog"}}
{{:linkbutton
label="Supprimer ce mouvement"
- href="delete_movement.html?key=%s&prop=%s&from=%s"|args:$_GET.key:$_GET.prop:$_GET.from
+ href="delete_movement.html?key=%s&prop=%s"|args:$_GET.key:$_GET.prop
shape="delete"
target="_dialog"}}
{{if $type_mvt != "retour"}}
{{:linkbutton
label="Dupliquer ce mouvement"
- href="copy_movement.html?key=%s&prop=%s&from=%s"|args:$_GET.key:$_GET.prop:$_GET.from
+ href="copy_movement.html?key=%s&prop=%s"|args:$_GET.key:$_GET.prop
shape="plus"
target="_dialog"}}
{{/if}}
@@ -66,9 +63,9 @@
Opération
{{$op_label}}
Matériel
- {{:link href="../equipment_history.html?key=%s&prop=%s"|args:$equipment.key:$_GET.prop label=$equipment.name}}
+ {{$equipment.name}}
Catégorie
- {{:link href="../index.html?cat_key=%s&prop=1"|args:$category.key label=$category.name}}
+ {{$category.name}}
Date
{{$mvt.date|date_short}}
Quantité
@@ -77,7 +74,7 @@
Membre destinataire
{{if $mvt.user != null}}
- {{:link href="/admin/users/details.php?id=%s"|args:$mvt.user label=$user_name}}
+ {{$user_name}}
{{else}}—
{{/if}}
@@ -98,22 +95,19 @@
{{else}}—
{{/foreach}}
- {{if $mvt.direction == "output" && $type_mvt != "retour"}}
- Date de retour
-
- {{if $mvt.return_date != null}}
- {{$mvt.return_date|date_short}}
- {{else}}—
- {{/if}}
-
- {{/if}}
Remarques
{{if $mvt.comment != null}}
{{$mvt.comment}}
{{else}}—
{{/if}}
+ {{if $mvt.return_date != null}}
+ Date de retour
+ {{$mvt.return_date|date_short}}
+ {{/if}}
-{{:admin_files path=$mvt.key upload=true edit=true use_trash=false}}
+
{{:admin_footer}}
diff --git a/movements/output_equipment.html b/movements/output_equipment.html
index 7a1958a..d211cb3 100644
--- a/movements/output_equipment.html
+++ b/movements/output_equipment.html
@@ -1,29 +1,16 @@
{{* -*- brindille -*- *}}
-{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
-
{{*
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 *}}
-{{:include file="../_get_config.html" keep="config"}}
+{{:include file="../_get_config.html" keep="config, loan_duration"}}
{{* types de sorties *}}
{{#foreach from=$config.output_nature key=key}}
- {{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'}}
+ {{if $type != 'retour'}}
{{:assign var="output_labels.%s"|args:$key value=$label}}
{{/if}}
{{/foreach}}
@@ -33,27 +20,22 @@
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
- {{* vérifier la validité de la saisie *}}
-
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
+ {{* vérifier les infos saisies *}}
{{if $_POST.operation == ""}}
{{:error message="Vous devez choisir un type de sortie"}}
{{/if}}
{{:assign var="type_mvt" from="config.output_nature.%s.type"|args:$_POST.operation}}
- {{if $type_mvt != "temporaire" && $_POST.return_date != null}}
+ {{if $type_mvt != "temporaire" && $_POST.set_return_date != null}}
{{:error message="On ne peut associer une date de retour qu'à une sortie temporaire"}}
{{/if}}
-
- {{if $_POST.return_date != null}}
- {{:assign return_date=$_POST.return_date|parse_date}}
- {{if $return_date < $_POST.date|parse_date}}
- {{:error message="La date de retour doit être postérieure à la date de sortie !"}}
- {{/if}}
+ {{if $_POST.set_return_date != null}}
+ {{:assign return_date=$_POST.return_date}}
{{else}}
{{:assign return_date=null}}
{{/if}}
@@ -144,11 +126,6 @@
{{:assign var="equipment.out" value="%d+%d"|math:$equipment.out:$_POST.amount|intval}}
{{/if}}
- {{* écritures liées *}}
- {{#foreach from=$_POST.transactions item="value"}}
- {{:assign var="transactions." value=$value|intval}}
- {{/foreach}}
-
{{:save
key=$equipment.key
validate_schema="../equipment.schema.json"
@@ -174,8 +151,7 @@
date=$_POST.date|parse_date
comment=$_POST.remarques|trim
user=$user.id
- return_date=$return_date
- transactions=$transactions
+ return_date=$return_date|parse_date
}}
{{:redirect force="../equipment_history.html?ok=1&key=%s&prop=1&msg=sortie"|args:$_GET.key}}
{{/form}}
@@ -185,16 +161,13 @@
{{* barre de navigation *}}
{{:include file="../_nav.html" current="sorties"}}
{{/if}}
-{{:form_errors}}
{{#load key=$equipment.category assign="category"}}{{/load}}
{{:assign dispo="%d-%d"|math:$equipment.stock:$equipment.out}}
{{if $dispo > 0}}
- {{if $module.config.loan_duration != null && $module.config.loan_duration > 0}}
- {{:assign ts_retour="%d+%d*(60*60*24)"|math:$now:$module.config.loan_duration}}
- {{:assign date_retour=$ts_retour|date_short}}
- {{/if}}
+ {{:assign ts_retour="%d+%d*(60*60*24)"|math:$now:$loan_duration}}
+ {{:assign date_retour=$ts_retour|date_short}}
{{* formulaire de sortie de matériel *}}