diff --git a/_get_config.html b/_get_config.html index 07ef418..0ebc002 100644 --- a/_get_config.html +++ b/_get_config.html @@ -26,9 +26,3 @@ {{/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/config/misc.html b/config/misc.html index ba11eec..7034c04 100644 --- a/config/misc.html +++ b/config/misc.html @@ -3,9 +3,9 @@ {{#restrict block=true section="accounting" level="write"}}{{/restrict}} {{#form on="save"}} - {{* vérifier la valisité de la durée saisie *}} - {{if $_POST.loan_duration <= 0}} - {{:error message="Durée (%s) erronée ; doit être > 0"|args:$_POST.loan_duration}} + {{* 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 @@ -30,7 +30,7 @@
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"}} + {{:input type="number" name="loan_duration" label="Durée de prêt par défaut" min=0 default=$module.config.loan_duration help="Durée en nombre de jours ; mettre 0 pour supprimer la durée par défaut"}}

diff --git a/default.json b/default.json index e46150c..ab06a2c 100644 --- a/default.json +++ b/default.json @@ -40,6 +40,5 @@ "label" : "Retour de Location/Emprunt", "type" : "retour" } - ], - "loan_duration" : "30" + ] } diff --git a/movements/copy_movement.html b/movements/copy_movement.html index 258c2d1..6814d88 100644 --- a/movements/copy_movement.html +++ b/movements/copy_movement.html @@ -16,7 +16,7 @@ {{/load}} {{* récupérer la config des entrées/sorties *}} -{{:include file="../_get_config.html" keep="config, directions, loan_duration"}} +{{:include file="../_get_config.html" keep="config, directions"}} {{: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,8 +95,12 @@ {{: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}} + + {{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}} {{else}} {{:assign return_date=null}} {{/if}} @@ -205,7 +209,7 @@ user=$user.id storage=$_POST.storage transactions=$transactions - return_date=$return_date|parse_date + return_date=$return_date }} {{if $_GET.from|substr:0:1 == "l"}} @@ -240,7 +244,6 @@ -------------------- 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}} @@ -268,15 +271,16 @@

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
@@ -292,27 +296,25 @@ }} {{/if}} {{if $mvt_new.direction == "input" && $storage != null}} - {{:input type="select" name="storage" default=$mvt_new.storage label="Lieu de stockage" default_empty="— Aucun —" options=$storage required=false}} + {{: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" 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" && $type_mvt == "temporaire"}} + {{: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.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 $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}} {{/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}}
@@ -327,9 +329,17 @@ {{:admin_footer}} + diff --git a/movements/modify_movement.html b/movements/modify_movement.html index 4738698..82c6e1f 100644 --- a/movements/modify_movement.html +++ b/movements/modify_movement.html @@ -15,7 +15,7 @@ {{/load}} {{* récupérer la config des entrées/sorties *}} -{{:include file="../_get_config.html" keep="config, directions, loan_duration"}} +{{:include file="../_get_config.html" keep="config, directions"}} {{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$mvt_new.direction:$mvt_new.operation}} {{if $mvt_new.direction == "input"}} @@ -59,11 +59,11 @@ -------------------- 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}} @@ -86,8 +86,12 @@ {{: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}} + + {{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}} {{else}} {{:assign return_date=null}} {{/if}} @@ -222,7 +226,7 @@ user=$user_id storage=$_POST.storage transactions=$transactions - return_date=$return_date|parse_date + return_date=$return_date }} {{if $_GET.from|substr:0:1 == "l"}} @@ -250,9 +254,10 @@ {{else}} {{:assign mvt_label="sortie"}} {{/if}} -{{:admin_header title="Modifier une %s"|args:$mvt_label custom_css="./../style.css" current="module_equipment"}} +{{:admin_header title="Modifier une %s"|args:$mvt_label custom_css="./../style.css" current="module_equipment"}} {{:form_errors}} + {{* -------------------- Préparer la saisie -------------------- *}} @@ -315,30 +320,26 @@ max=1 }} {{/if}} - {{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 $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" default=$mvt_new.transactions label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}} + {{: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}} {{: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.direction == "output"}} {{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 $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}} {{/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}} @@ -353,9 +354,17 @@ {{:admin_footer}} + diff --git a/movements/output_equipment.html b/movements/output_equipment.html index 7043184..7a1958a 100644 --- a/movements/output_equipment.html +++ b/movements/output_equipment.html @@ -9,7 +9,7 @@ *}} {{* récupérer la config des entrées/sorties *}} -{{:include file="../_get_config.html" keep="config, loan_duration"}} +{{:include file="../_get_config.html" keep="config"}} {{* types de sorties *}} {{#foreach from=$config.output_nature key=key}} @@ -33,22 +33,27 @@ {{* 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.set_return_date != null}} + {{if $type_mvt != "temporaire" && $_POST.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}} + + {{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}} {{else}} {{:assign return_date=null}} {{/if}} @@ -169,7 +174,7 @@ date=$_POST.date|parse_date comment=$_POST.remarques|trim user=$user.id - return_date=$return_date|parse_date + return_date=$return_date transactions=$transactions }} {{:redirect force="../equipment_history.html?ok=1&key=%s&prop=1&msg=sortie"|args:$_GET.key}} @@ -180,13 +185,16 @@ {{* 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}} - {{:assign ts_retour="%d+%d*(60*60*24)"|math:$now:$loan_duration}} - {{:assign date_retour=$ts_retour|date_short}} + {{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}} {{* formulaire de sortie de matériel *}}
@@ -226,10 +234,9 @@ }} {{: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"}} -
@@ -241,16 +248,20 @@

Il n'y a aucune unité de ce matériel disponible à la date du {{$now|date_short}}

{{/if}} -{{:form_errors}} {{:admin_footer}} diff --git a/scripts.js b/scripts.js index 2de1a45..c913078 100644 --- a/scripts.js +++ b/scripts.js @@ -26,18 +26,6 @@ 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 @@ -59,7 +47,29 @@ function getDate(idelem) { function setReturnDate(id_date, id_return_date, id_loan_duration) { const loan_duration = document.getElementById(id_loan_duration).value; - let nbsec = getDate(id_date) + loan_duration*24*60*60; - const date_retour = new Date(nbsec * 1000); - document.getElementById(id_return_date).value = date_retour.toLocaleDateString(); + if (loan_duration !== undefined && loan_duration > 0) { + let nbsec = getDate(id_date) + loan_duration*24*60*60; + const date_retour = new Date(nbsec * 1000); + document.getElementById(id_return_date).value = date_retour.toLocaleDateString(); + } +} + +/** + * changer la visibilité de la date de retour + */ +function toggleVisibility(id_date, id_type, div, id_return_date) +{ + const key = document.getElementById(id_type).value; + let type_sortie; + if (key !== undefined && key != '') { + type_sortie = output_nature[key].type; + } + const div_date = document.getElementById(div); + if (type_sortie == 'temporaire') { + div_date.style.visibility = "visible"; + document.getElementById(id_date).onchange(); + } else { + div_date.style.visibility = "hidden"; + document.getElementById(id_return_date).value = null; + } }