Histo prêts : ajout bouton détails + navigation + mutualisation js

This commit is contained in:
Jean-Christophe Engel 2025-10-29 14:20:58 +01:00
parent 65ee10453c
commit 572dfc172a
8 changed files with 86 additions and 34 deletions

View file

@ -224,7 +224,7 @@
{{/if}} {{/if}}
{{:linkbutton {{:linkbutton
label="Détails" label="Détails"
href="movements/movement_details.html?key=%s&prop=%s"|args:$key:$_GET.prop href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$_GET.prop
shape="eye" shape="eye"
}} }}
{{/if}} {{/if}}
@ -314,7 +314,7 @@
{{/if}} {{/if}}
{{:linkbutton {{:linkbutton
label="Détails" label="Détails"
href="movements/movement_details.html?key=%s&prop=%s"|args:$key:$_GET.prop href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$_GET.prop
shape="eye" shape="eye"
}} }}
</td> </td>

View file

@ -1,6 +1,21 @@
{{* -*- brindille -*- *}} {{* -*- brindille -*- *}}
{{:admin_header title="Matériels hors de l'asso" custom_css="../style.css" current="module_equipment"}} {{:admin_header title="Matériels hors de l'asso" custom_css="../style.css" current="module_equipment"}}
{{if $_GET.ok}}
{{if $_GET.msg == "modification"}}
<p class="block confirm">Modification enregistrée</p>
{{elseif $_GET.msg == "copie"}}
<p class="block confirm">Mouvement copié</p>
{{elseif $_GET.msg == "suppression"}}
<p class="block confirm">Mouvement supprimé</p>
{{/if}}
{{elseif $_GET.err}}
{{if $_GET.msg == "suppression"}}
<p class="block error">Ce mouvement ne peut être supprimé</p>
{{/if}}
{{/if}}
{{:include file="./_nav.html" current="historique" subcurrent="prêts"}} {{:include file="./_nav.html" current="historique" subcurrent="prêts"}}
{{* lecture config (défaut ou enregistrée) *}} {{* lecture config (défaut ou enregistrée) *}}
@ -24,11 +39,11 @@
json_extract(mvt.document, '$.amount') AS out_amount, json_extract(mvt.document, '$.amount') AS out_amount,
json_extract(mvt.document, '$.return_date') AS return_date, json_extract(mvt.document, '$.return_date') AS return_date,
json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(retour.document, '$.amount')), 0) AS remain json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(retour.document, '$.amount')), 0) AS remain
FROM module_data_equipment AS mvt FROM {!$module.table} AS mvt
INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id
LEFT JOIN module_data_equipment AS links ON mvt.key = json_extract(links.document, '$.temp_key') LEFT JOIN {!$module.table} AS links ON mvt.key = json_extract(links.document, '$.temp_key')
LEFT JOIN module_data_equipment AS retour ON retour.key = json_extract(links.document, '$.return') LEFT JOIN {!$module.table} AS retour ON retour.key = json_extract(links.document, '$.return')
INNER JOIN module_data_equipment AS mat ON mat.key = json_extract(mvt.document, '$.equipment') INNER JOIN {!$module.table} AS mat ON mat.key = json_extract(mvt.document, '$.equipment')
WHERE WHERE
json_extract(mvt.document, '$.type') = 'movement' json_extract(mvt.document, '$.type') = 'movement'
AND AND
@ -70,14 +85,17 @@
<td>{{$remain}}</td> <td>{{$remain}}</td>
<td> <td>
{{if $return_date != null}} {{if $return_date != null}}
{{if $nb_jours > 0}} {{:assign jour="jour}}
{{:tag color="darkred" label="Retard %s jours"|args:$nb_jours}} {{if $nb_jours > 0}}
{{elseif $nb_jours < 0}} {{if $nb_jours > 1}}{{:assign jour="jours"}}{{/if}}
{{:assign delai="abs(%d)"|math:$nb_jours}} {{:tag color="darkred" label="Retard %s %s"|args:$nb_jours:$jour}}
{{"Reste %s jours"|args:$delai}} {{elseif $nb_jours < 0}}
{{else}} {{:assign delai="abs(%d)"|math:$nb_jours}}
{{:tag color="darkgreen" label="À rendre aujourdh'ui"}} {{if $nb_jours < -1}}{{:assign jour="jours"}}{{/if}}
{{/if}} {{"Reste %s %s"|args:$delai:$jour}}
{{else}}
{{:tag color="darkgreen" label="À rendre aujourdh'ui"}}
{{/if}}
{{/if}} {{/if}}
</td> </td>
<td> <td>
@ -86,6 +104,11 @@
href="movements/output_return.html?key=%s&prop=1"|args:$mvt_key href="movements/output_return.html?key=%s&prop=1"|args:$mvt_key
shape="reset" shape="reset"
target="_dialog"}} target="_dialog"}}
{{:linkbutton
label="Détails"
href="movements/movement_details.html?key=%s&prop=1&from=lh"|args:$mvt_key
shape="eye"
}}
</td> </td>
</tr> </tr>
{{else}} {{else}}

View file

@ -205,7 +205,12 @@
transactions=$transactions transactions=$transactions
return_date=$return_date|parse_date return_date=$return_date|parse_date
}} }}
{{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=copie"|args:$eqpmt_key:$prop}} {{if $_GET.from == "lh"}}
{{:assign from="../loan_history.html"}}
{{else}}
{{:assign from="../equipment_history.html"}}
{{/if}}
{{:redirect force="%s?ok=1&key=%s&prop=%s&msg=copie"|args:$from:$eqpmt_key:$prop}}
{{/form}} {{/form}}
{{if $mvt_new.direction == "input"}} {{if $mvt_new.direction == "input"}}
@ -292,6 +297,7 @@
{{: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 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}}
<div id="div_return_date" style="visibility:{{$visibility}}"> <div id="div_return_date" style="visibility:{{$visibility}}">
{{:input type="date" name="return_date" label="Date de retour" default=$return_date}} {{:input type="date" name="return_date" label="Date de retour" default=$return_date}}
<input type="hidden" id="loan_duration" name="loan_duration" value="{{$loan_duration}}">
</div> </div>
{{/if}} {{/if}}
</dl> </dl>
@ -311,7 +317,13 @@ function changeVisibility(evt, idcheck = 'f_set_return_date_1', fields = ['div_r
toggleVisibility(idcheck, fields); toggleVisibility(idcheck, fields);
} }
function changeReturnDate(evt, id_date = 'f_date', id_return_date = 'f_return_date', id_loan_duration='loan_duration')
{
setReturnDate(id_date, id_return_date, id_loan_duration);
}
(function () { (function () {
document.getElementById('f_set_return_date_1').onclick = changeVisibility; document.getElementById('f_set_return_date_1').onclick = changeVisibility;
document.getElementById('f_date').onchange = changeReturnDate;
})(); })();
</script> </script>

View file

@ -21,6 +21,11 @@
{{:include file="../_get_config.html" keep="config"}} {{:include file="../_get_config.html" keep="config"}}
{{#form on="delete"}} {{#form on="delete"}}
{{if $_GET.from == "lh"}}
{{:assign from="../loan_history.html"}}
{{else}}
{{:assign from="../equipment_history.html"}}
{{/if}}
{{* vérifier s'il est possible de supprimer le mouvement *}} {{* vérifier s'il est possible de supprimer le mouvement *}}
{{if $mvt_suppr.direction == 'input'}} {{if $mvt_suppr.direction == 'input'}}
{{:assign var="type_operation" from="config.input_nature.%s.type"|args:$mvt_suppr.operation}} {{:assign var="type_operation" from="config.input_nature.%s.type"|args:$mvt_suppr.operation}}
@ -29,7 +34,7 @@
{{:assign link_key=$key}} {{:assign link_key=$key}}
{{/load}} {{/load}}
{{if $link_key != null}} {{if $link_key != null}}
{{:redirect force="../equipment_history.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}} {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{/if}} {{/if}}
{{else}} {{else}}
{{:assign dispo=0}} {{:assign dispo=0}}
@ -62,7 +67,7 @@
{{* problème ? *}} {{* problème ? *}}
{{if $dispo < 0 || $nonprop < 0}} {{if $dispo < 0 || $nonprop < 0}}
{{:redirect force="../equipment_history.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}} {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/load}} {{/load}}
@ -83,7 +88,7 @@
{{:assign link_key=$key}} {{:assign link_key=$key}}
{{/load}} {{/load}}
{{if $link_key != null}} {{if $link_key != null}}
{{:redirect force="../equipment_history.html?key=%s&prop=%s&err=1&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}} {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{/if}} {{/if}}
{{elseif $type_operation == 'retour'}} {{elseif $type_operation == 'retour'}}
{{#load type="link" where="$$.return = :key" :key=$_GET.key}} {{#load type="link" where="$$.return = :key" :key=$_GET.key}}
@ -148,7 +153,7 @@
out=$curr_eqpmt.out out=$curr_eqpmt.out
notowned=$curr_eqpmt.notowned notowned=$curr_eqpmt.notowned
}} }}
{{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}} {{:redirect force="%s?ok=1&key=%s&prop=%s&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{else}} {{else}}
{{* supprimer le matériel *}} {{* supprimer le matériel *}}
{{:delete key=$curr_eqpmt.key}} {{:delete key=$curr_eqpmt.key}}

View file

@ -222,7 +222,12 @@
transactions=$transactions transactions=$transactions
return_date=$return_date|parse_date return_date=$return_date|parse_date
}} }}
{{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=modification"|args:$eqpmt_key:$prop}} {{if $_GET.from == "lh"}}
{{:assign from="../loan_history.html"}}
{{else}}
{{:assign from="../equipment_history.html"}}
{{/if}}
{{:redirect force="%s?ok=1&key=%s&prop=%s&msg=modification"|args:$from:$eqpmt_key:$prop}}
{{/form}} {{/form}}
{{if $mvt_new.direction == "input"}} {{if $mvt_new.direction == "input"}}
@ -231,8 +236,8 @@
{{:assign mvt_label="sortie"}} {{:assign mvt_label="sortie"}}
{{/if}} {{/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}}
{{:form_errors}}
{{* {{*
-------------------- Préparer la saisie -------------------- -------------------- Préparer la saisie --------------------
*}} *}}
@ -338,11 +343,9 @@ function changeVisibility(evt, idcheck = 'f_set_return_date_1', fields = ['div_r
toggleVisibility(idcheck, fields); toggleVisibility(idcheck, fields);
} }
function changeReturnDate(evt, id_date = 'f_date', id_return_date = 'f_return_date', id_loan_duration='loan_duration') { function changeReturnDate(evt, id_date = 'f_date', id_return_date = 'f_return_date', id_loan_duration='loan_duration')
const loan_duration = document.getElementById(id_loan_duration).value; {
let nbsec = getDate(id_date) + loan_duration*24*60*60; setReturnDate(id_date, id_return_date, id_loan_duration);
const date_retour = new Date(nbsec * 1000);
document.getElementById(id_return_date).value = date_retour.toLocaleDateString();
} }
(function () { (function () {

View file

@ -42,18 +42,18 @@
<nav class="tabs"> <nav class="tabs">
{{:linkbutton {{:linkbutton
label="Modifier ce mouvement" label="Modifier ce mouvement"
href="modify_movement.html?key=%s"|args:$_GET.key href="modify_movement.html?key=%s&from=%s"|args:$_GET.key:$_GET.from
shape="edit" shape="edit"
target="_dialog"}} target="_dialog"}}
{{:linkbutton {{:linkbutton
label="Supprimer ce mouvement" label="Supprimer ce mouvement"
href="delete_movement.html?key=%s&prop=%s"|args:$_GET.key:$_GET.prop href="delete_movement.html?key=%s&prop=%s&from=%s"|args:$_GET.key:$_GET.prop:$_GET.from
shape="delete" shape="delete"
target="_dialog"}} target="_dialog"}}
{{if $type_mvt != "retour"}} {{if $type_mvt != "retour"}}
{{:linkbutton {{:linkbutton
label="Dupliquer ce mouvement" label="Dupliquer ce mouvement"
href="copy_movement.html?key=%s&prop=%s"|args:$_GET.key:$_GET.prop href="copy_movement.html?key=%s&prop=%s&from=%s"|args:$_GET.key:$_GET.prop:$_GET.from
shape="plus" shape="plus"
target="_dialog"}} target="_dialog"}}
{{/if}} {{/if}}

View file

@ -230,11 +230,9 @@ function changeVisibility(evt, idcheck = 'f_set_return_date_1', fields = ['div_r
toggleVisibility(idcheck, fields); toggleVisibility(idcheck, fields);
} }
function changeReturnDate(evt, id_date = 'f_date', id_return_date = 'f_return_date', id_loan_duration='loan_duration') { function changeReturnDate(evt, id_date = 'f_date', id_return_date = 'f_return_date', id_loan_duration='loan_duration')
const loan_duration = document.getElementById(id_loan_duration).value; {
let nbsec = getDate(id_date) + loan_duration*24*60*60; setReturnDate(id_date, id_return_date, id_loan_duration);
const date_retour = new Date(nbsec * 1000);
document.getElementById(id_return_date).value = date_retour.toLocaleDateString();
} }
(function () { (function () {

View file

@ -52,3 +52,14 @@ function str2sec(date) {
function getDate(idelem) { function getDate(idelem) {
return str2sec(document.getElementById(idelem).value); return str2sec(document.getElementById(idelem).value);
} }
/**
* modifier la date de retour en fonction de la date de sortie et de la durée du prêt
*/
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();
}