diff --git a/_get_config.html b/_get_config.html index 095dff9..119a20b 100644 --- a/_get_config.html +++ b/_get_config.html @@ -28,3 +28,9 @@ {{/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/default.json b/default.json index 07a9c10..b9906b7 100644 --- a/default.json +++ b/default.json @@ -33,5 +33,6 @@ "label" : "Retour de Location/Emprunt", "type" : "retour" } - ] + ], + "loan_duration" : "30" } diff --git a/movements/copy_movement.html b/movements/copy_movement.html index 459cde5..29539ea 100644 --- a/movements/copy_movement.html +++ b/movements/copy_movement.html @@ -14,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 » *}} @@ -93,6 +93,11 @@ {{: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.set_return_date != null}} + {{:assign return_date=$_POST.return_date}} + {{else}} + {{:assign return_date=null}} + {{/if}} {{* lister les mouvements @@ -198,6 +203,7 @@ user=$user.id storage=$_POST.storage transactions=$transactions + return_date=$return_date|parse_date }} {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=copie"|args:$eqpmt_key:$prop}} {{/form}} @@ -272,6 +278,22 @@ {{/if}} {{/if}} {{: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}} + {{: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}} @@ -282,3 +304,14 @@ {{:admin_footer}} + + + diff --git a/movements/modify_movement.html b/movements/modify_movement.html index e737d9d..2139e4d 100644 --- a/movements/modify_movement.html +++ b/movements/modify_movement.html @@ -13,7 +13,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}} {{if $mvt_new.direction == "input"}} @@ -84,6 +84,11 @@ {{: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.set_return_date != null}} + {{:assign return_date=$_POST.return_date}} + {{else}} + {{:assign return_date=null}} + {{/if}} {{* lister les mouvements @@ -215,6 +220,7 @@ user=$user_id storage=$_POST.storage transactions=$transactions + return_date=$return_date|parse_date }} {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=modification"|args:$eqpmt_key:$prop}} {{/form}} @@ -298,6 +304,23 @@ {{/if}} {{/if}} {{: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}} + {{: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}} @@ -308,3 +331,22 @@ {{:admin_footer}} + + + diff --git a/movements/movement.schema.json b/movements/movement.schema.json index bd27c1c..eaebdb3 100644 --- a/movements/movement.schema.json +++ b/movements/movement.schema.json @@ -46,6 +46,11 @@ "items": { "type": "integer" } + }, + "return_date" : { + "description": "Date de retour du matériel", + "type" : ["null", "string"], + "format" : "date" } }, "required": ["type", "direction", "operation", "amount", "equipment", "date", "comment"] diff --git a/movements/movement_details.html b/movements/movement_details.html index 16a170f..f25fca7 100644 --- a/movements/movement_details.html +++ b/movements/movement_details.html @@ -101,6 +101,10 @@ {{else}}— {{/if}} + {{if $mvt.return_date != null}} +
Date de retour
+
{{$mvt.return_date|date_short}}
+ {{/if}}
diff --git a/movements/output_equipment.html b/movements/output_equipment.html index 9993f78..d211cb3 100644 --- a/movements/output_equipment.html +++ b/movements/output_equipment.html @@ -6,7 +6,7 @@ *}} {{* 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}} @@ -31,6 +31,15 @@ {{/if}} {{:assign var="type_mvt" from="config.output_nature.%s.type"|args:$_POST.operation}} + {{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.set_return_date != null}} + {{:assign return_date=$_POST.return_date}} + {{else}} + {{:assign return_date=null}} + {{/if}} + {{if $_POST.user|count > 1}} {{:error message="Un membre au plus peut être associé à une sortie"}} {{/if}} @@ -142,6 +151,7 @@ date=$_POST.date|parse_date comment=$_POST.remarques|trim user=$user.id + return_date=$return_date|parse_date }} {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=1&msg=sortie"|args:$_GET.key}} {{/form}} @@ -156,6 +166,8 @@ {{:assign dispo="%d-%d"|math:$equipment.stock:$equipment.out}} {{if $dispo > 0}} + {{: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 *}} @@ -194,6 +206,11 @@ max=1 }} {{: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"}} +

@@ -206,3 +223,23 @@ {{:form_errors}} {{:admin_footer}} + + + diff --git a/scripts.js b/scripts.js index 299b7e4..fe36b24 100644 --- a/scripts.js +++ b/scripts.js @@ -25,3 +25,30 @@ function disableColumSort(liste) { } } } + +function toggleVisibility(idcheck, fields) { + const elem = document.getElementById(idcheck); + for (let id of fields) { + const field = document.getElementById(id); + if (elem.checked) { + field.style.visibility = "visible"; + } else { + field.style.visibility = "hidden"; + } + } +} + +/** + * renvoyer la valeur en secondes d'une date au format j/m/a + * @param {string} date + */ +function str2sec(date) { + const jma = date.split('/'); + const dd = new Date(jma[2], jma[1]-1, jma[0]); + return dd.getTime()/1000; +} + +// renvoyer la valeur en secondes d'un champ date +function getDate(idelem) { + return str2sec(document.getElementById(idelem).value); +}