diff --git a/_nav.html b/_nav.html index dfdf9ef..8cd2262 100644 --- a/_nav.html +++ b/_nav.html @@ -14,8 +14,8 @@ @@ -26,15 +26,15 @@
  • Historique — {{$eqpmt}} ({{$category}})
  • {{/if}} - {{elseif $current == 'prêt'}} + {{elseif $current == 'prêts'}} {{elseif $current == 'location'}} {{elseif $current == 'archives'}} {{if $subsubcurrent == 'historique'}} diff --git a/global_history.html b/global_history.html index 6038924..a3210ea 100644 --- a/global_history.html +++ b/global_history.html @@ -145,7 +145,7 @@ THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage) ELSE '' END as 'Stockage'; - $$.comment AS 'Remarque' + $$.comment AS 'Commentaire' "|args:$config.user_fields.name_sql where="%s AND %s"|args:$cat_condition:$prop_condition order=1 diff --git a/loan_history.html b/loan_history.html index f825528..1fb0985 100644 --- a/loan_history.html +++ b/loan_history.html @@ -2,21 +2,14 @@ {{#restrict block=true section="accounting" level="write"}}{{/restrict}} -{{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 en cours"|args:$label|ucfirst custom_css="../style.css" current="module_equipment"}} -{{:include file="./_nav.html" current="%s"|args:$label subcurrent="encours"}} +{{:admin_header title="Prêts en cours" custom_css="../style.css" current="module_equipment"}} +{{:include file="./_nav.html" current="prêts" subcurrent="encours"}} {{* vérifier l'existence de la table du module eh oui, il se peut qu'elle ne soit pas encore créée si aucune donnée n'a été ajoutée dedans *}} + {{#load limit="1"}} {{:assign table_presente=true}} {{else}} @@ -38,72 +31,20 @@ {{/if}} {{/if}} +
    +

    Prêts de matériel en cours

    +
    + {{* lecture config (défaut ou enregistrée) *}} {{:include file="./_get_config.html" keep="config"}} -{{* filtrer selon la catégorie *}} -{{if $_GET.cat_key == null}} - {{:assign var="selected_category" from="module.config.%s_hist_cat_key"|args:$_GET.output_type}} -{{elseif $_GET.cat_key == -1}} - {{:assign selected_category=null}} - {{if $_GET.output_type == "loan"}} - {{:save key="config" loan_hist_cat_key=null}} - {{elseif $_GET.output_type == "rent"}} - {{:save key="config" rent_hist_cat_key=null}} - {{/if}} -{{else}} - {{:assign selected_category=$_GET.cat_key}} - {{if $_GET.output_type == "loan"}} - {{:save key="config" loan_hist_cat_key=$selected_category}} - {{elseif $_GET.output_type == "rent"}} - {{:save key="config" rent_hist_cat_key=$selected_category}} - {{/if}} -{{/if}} - -{{* condition de filtrage *}} -{{if $selected_category != null}} - {{:assign cat_key=$selected_category|quote_sql}} - {{:assign cat_condition="json_extract(mat.document, '$.category') = %s"|args:$cat_key}} -{{else}} - {{:assign cat_condition=1}} -{{/if}} - {{#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 $type == 'temporaire' && $fee != 'payant'}} + {{:assign var="output_types." value=$key|quote_sql}} {{/if}} {{/foreach}} -{{:assign out_keys=$out_keys|implode:","}} -{{:assign out_keys="("|cat:$out_keys|cat:")"}} - -{{* sélecteur de catégorie *}} -{{:assign var="cat_options." value="" label="Toutes les catégories" href="?output_type=%s&cat_key=-1"|args:$_GET.output_type}} -{{#load type="category" order="$$.name"}} - {{:assign - var="cat_options." - value=$key - label=$name - href="?output_type=%s&cat_key=%s"|args:$_GET.output_type:$key - }} -{{/load}} - -
    - Filtrer par catégorie - {{:dropdown - title="Filtrer par catégorie" - options=$cat_options - value="%s"|args:$selected_category - }} -
    - -
    -

    {{$label|ucfirst}} de matériel en cours

    -
    +{{:assign output_ops=$output_types|implode:","}} +{{:assign output_ops="("|cat:$output_ops|cat:")"}} {{:assign premier=true}} {{#select @@ -120,29 +61,29 @@ 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 - AND !cat_condition + WHERE + json_extract(mvt.document, '$.type') = 'movement' + AND + json_extract(mvt.document, '$.operation') IN !op GROUP BY mvt.key HAVING remain != 0 - ORDER BY out_date DESC, nom + ORDER BY out_date, nom ; !table=$module.table - !op = $out_keys - !cat_condition=$cat_condition + !op = $output_ops }} {{if $premier}} - - - - - - - - + + + + + + + + @@ -181,14 +122,9 @@ href="movements/output_return.html?key=%s&prop=1"|args:$mvt_key shape="reset" target="_dialog"}} - {{if $_GET.output_type == "loan"}} - {{:assign from="lh"}} - {{elseif $_GET.output_type == "rent"}} - {{:assign from="rh"}} - {{/if}} {{:linkbutton label="Détails" - href="movements/movement_details.html?key=%s&prop=1&from=%s"|args:$mvt_key:$from + href="movements/movement_details.html?key=%s&prop=1&from=lh"|args:$mvt_key shape="eye" }} diff --git a/loan_movements.html b/loan_movements.html index 55d74f7..4425b03 100644 --- a/loan_movements.html +++ b/loan_movements.html @@ -3,66 +3,25 @@ {{#restrict block=true section="accounting" level="write"}}{{/restrict}} {{* - Afficher l'historique des prêts ou locations + Afficher l'historique des prêts *}} -{{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="Historique des prêts" custom_css="./style.css" current="module_equipment"}} -{{:admin_header title="Historique des %ss"|args:$label custom_css="./style.css" current="module_equipment"}} - -{{:include file="./_nav.html" current="%s"|args:$label subcurrent="historique"}} - -{{* - vérifier l'existence de la table du module - eh oui, il se peut qu'elle ne soit pas encore créée si aucune donnée n'a été ajoutée dedans -*}} -{{#load limit="1"}} - {{:assign table_presente=true}} -{{else}} - {{:assign table_presente=false}} -{{/load}} - -{{if $table_presente}} -{{if $_GET.ok}} - {{if $_GET.msg == "modification"}} -

    Modification enregistrée

    - {{elseif $_GET.msg == "copie"}} -

    Mouvement copié

    - {{elseif $_GET.msg == "suppression"}} -

    Mouvement supprimé

    - {{/if}} -{{elseif $_GET.err}} - {{if $_GET.msg == "suppression"}} -

    Ce mouvement ne peut être supprimé

    - {{/if}} -{{/if}} +{{:include file="./_nav.html" current="prêts" subcurrent="historique"}} {{* récupérer la config des entrées/sorties *}} {{:include file="./_get_config.html" keep="config"}} {{* filtrer selon la catégorie *}} {{if $_GET.cat_key == null}} - {{:assign var="selected_category" from="module.config.%s_cat_key"|args:$_GET.output_type}} + {{:assign selected_category=$module.config.loan_cat_key}} {{elseif $_GET.cat_key == -1}} {{:assign selected_category=null}} - {{if $_GET.output_type == "loan"}} - {{:save key="config" loan_cat_key=null}} - {{elseif $_GET.output_type == "rent"}} - {{:save key="config" rent_cat_key=null}} - {{/if}} + {{:save key="config" loan_cat_key=null}} {{else}} {{:assign selected_category=$_GET.cat_key}} - {{if $_GET.output_type == "loan"}} - {{:save key="config" loan_cat_key=$selected_category}} - {{elseif $_GET.output_type == "rent"}} - {{:save key="config" rent_cat_key=$selected_category}} - {{/if}} + {{:save key="config" loan_cat_key=$selected_category}} {{/if}} {{* condition de filtrage *}} @@ -75,12 +34,7 @@ {{* 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'}} + {{if $type == 'temporaire' && $fee != 'payant'}} {{:assign var="out_keys." value=$key|quote_sql}} {{/if}} {{/foreach}} @@ -88,13 +42,13 @@ {{:assign out_keys="("|cat:$out_keys|cat:")"}} {{* sélecteur de catégorie *}} -{{:assign var="cat_options." value="" label="Toutes les catégories" href="?output_type=%s&cat_key=-1"|args:$_GET.output_type}} +{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}} {{#load type="category" order="$$.name"}} {{:assign var="cat_options." value=$key label=$name - href="?output_type=%s&cat_key=%s"|args:$_GET.output_type:$key + href="?cat_key=%s"|args:$key }} {{/load}} @@ -108,7 +62,7 @@
    -

    Historique des {{$label}}s

    +

    Historique des prêts

    {{* lister les mouvements *}} @@ -134,9 +88,12 @@ INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment') LEFT JOIN users ON users.id = json_extract(mvt.document, '$.user') LEFT JOIN !table AS storage ON storage.key = json_extract(mvt.document, '$.storage') - WHERE json_extract(mvt.document, '$.type') = 'movement' - AND json_extract(mvt.document, '$.operation') IN !op - AND !cat_condition + WHERE + json_extract(mvt.document, '$.type') = 'movement' + AND + json_extract(mvt.document, '$.operation') IN !op + AND + !cat_condition ), entrees AS (SELECT @@ -166,11 +123,12 @@ ) SELECT * FROM sorties UNION SELECT * FROM entrees ) - ORDER BY date DESC, user + ORDER BY date ; !table=$module.table !op = $out_keys !cat_condition=$cat_condition + assign="mvts." }} {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}} {{:assign file_path="%s/%s/"|args:$module.storage_root:$key}} @@ -192,7 +150,7 @@ - + @@ -212,14 +170,9 @@ @@ -228,8 +181,5 @@

    Aucun mouvement.

    {{/select}} -
    MatérielDate prêtQuantitéMembreDate retourReste à rendreRemarqueMatérielDate prêtQuantitéMembreDate retourReste à rendreRemarque
    Stockage Documents ÉcrituresRemarqueRemarques
    {{if $transactions != null}}{{:icon shape="money"}}{{/if}} {{$comment}} - {{if $_GET.output_type == "loan"}} - {{:assign from="lm"}} - {{elseif $_GET.output_type == "rent"}} - {{:assign from="rm"}} - {{/if}} {{:linkbutton label="Détails" - href="movements/movement_details.html?key=%s&prop=1&from=%s"|args:$key:$from + href="movements/movement_details.html?key=%s"|args:$key shape="eye" }}
    -{{else}} -

    Aucun mouvement.

    -{{/if}} + {{:admin_footer}} diff --git a/movements/copy_movement.html b/movements/copy_movement.html index 97f0302..84c0e2e 100644 --- a/movements/copy_movement.html +++ b/movements/copy_movement.html @@ -207,25 +207,12 @@ transactions=$transactions 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"}} + {{if $_GET.from == "lh"}} + {{:assign from="../loan_history.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}} + {{:assign from="../equipment_history.html"}} {{/if}} + {{:redirect force="%s?ok=1&key=%s&prop=%s&msg=copie"|args:$from:$eqpmt_key:$prop}} {{/form}} {{if $mvt_new.direction == "input"}} diff --git a/movements/delete_movement.html b/movements/delete_movement.html index 0ecafb2..506ebe4 100644 --- a/movements/delete_movement.html +++ b/movements/delete_movement.html @@ -23,25 +23,11 @@ {{: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"}} + {{if $_GET.from == "lh"}} + {{:assign from="../loan_history.html"}} {{else}} - {{:assign from="../loan_%s.html"|args:$suffix}} - {{:assign param="&output_type=%s"|args:$output_type}} + {{:assign from="../equipment_history.html"}} {{/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 +36,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="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}} {{/if}} {{else}} {{:assign dispo=0}} @@ -83,7 +69,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="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}} {{/if}} {{/if}} {{/load}} @@ -104,7 +90,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="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}} {{/if}} {{elseif $type_operation == 'retour'}} {{#load type="link" where="$$.return = :key" :key=$_GET.key}} @@ -169,11 +155,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="%s?ok=1&key=%s&prop=%s&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}} {{else}} {{* supprimer le matériel *}} {{:delete key=$curr_eqpmt.key}} - {{:redirect force="%s?ok=1&msg=supprmvtmat%s"|args:$from:$param}} + {{:redirect force="../index.html?ok=1&msg=supprmvtmat"}} {{/if}} {{/form}} diff --git a/movements/modify_movement.html b/movements/modify_movement.html index d78c337..542267f 100644 --- a/movements/modify_movement.html +++ b/movements/modify_movement.html @@ -224,25 +224,12 @@ transactions=$transactions 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"}} + {{if $_GET.from == "lh"}} + {{:assign from="../loan_history.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}} + {{:assign from="../equipment_history.html"}} {{/if}} + {{:redirect force="%s?ok=1&key=%s&prop=%s&msg=modification"|args:$from:$eqpmt_key:$prop}} {{/form}} {{if $mvt_new.direction == "input"}} diff --git a/movements/movement_details.html b/movements/movement_details.html index ad367b3..ac2bb5a 100644 --- a/movements/movement_details.html +++ b/movements/movement_details.html @@ -9,7 +9,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"}} diff --git a/rent_history.html b/rent_history.html new file mode 100644 index 0000000..ac4e5a1 --- /dev/null +++ b/rent_history.html @@ -0,0 +1,140 @@ +{{* -*- brindille -*- *}} + +{{#restrict block=true section="accounting" level="write"}}{{/restrict}} + +{{:admin_header title="Locations en cours" custom_css="../style.css" current="module_equipment"}} +{{:include file="./_nav.html" current="location" subcurrent="encours"}} + +{{* + vérifier l'existence de la table du module + eh oui, il se peut qu'elle ne soit pas encore créée si aucune donnée n'a été ajoutée dedans +*}} + +{{#load limit="1"}} + {{:assign table_presente=true}} +{{else}} + {{:assign table_presente=false}} +{{/load}} + +{{if $table_presente}} +{{if $_GET.ok}} + {{if $_GET.msg == "modification"}} +

    Modification enregistrée

    + {{elseif $_GET.msg == "copie"}} +

    Mouvement copié

    + {{elseif $_GET.msg == "suppression"}} +

    Mouvement supprimé

    + {{/if}} +{{elseif $_GET.err}} + {{if $_GET.msg == "suppression"}} +

    Ce mouvement ne peut être supprimé

    + {{/if}} +{{/if}} + +
    +

    Location de matériel en cours

    +
    + +{{* lecture config (défaut ou enregistrée) *}} +{{:include file="./_get_config.html" keep="config"}} + +{{#foreach from=$config.output_nature key="key" item="elem"}} + {{if $type == 'temporaire' && $fee == 'payant'}} + {{:assign var="output_types." value=$key|quote_sql}} + {{/if}} +{{/foreach}} +{{:assign output_ops=$output_types|implode:","}} +{{:assign output_ops="("|cat:$output_ops|cat:")"}} + +{{:assign premier=true}} +{{#select + users.nom AS nom, + users.id AS user, + mvt.key AS mvt_key, + json_extract(mat.document, '$.name') AS mat_name, + json_extract(mvt.document, '$.date') AS out_date, + json_extract(mvt.document, '$.amount') AS out_amount, + json_extract(mvt.document, '$.return_date') AS return_date, + json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(retour.document, '$.amount')), 0) AS remain + FROM {!$module.table} AS mvt + LEFT JOIN users ON json_extract(mvt.document, '$.user') = users.id + LEFT JOIN {!$module.table} AS links ON mvt.key = json_extract(links.document, '$.temp_key') + LEFT JOIN {!$module.table} AS retour ON retour.key = json_extract(links.document, '$.return') + INNER JOIN {!$module.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 + ORDER BY out_date, nom + ; + !op = $output_ops +}} + {{if $premier}} + + + + + + + + + + + + + + + {{:assign premier=false}} + {{/if}} + + {{if $return_date != null}} + {{:assign ts_retour=$return_date|strtotime}} + {{:assign nb_jours="floor((%d-%d)/(60*60*24))"|math:$now:$ts_retour}} + {{/if}} + + + + + + + + + + +{{else}} +

    Aucun mouvement.

    +{{/select}} + +
    MatérielDate prêtQuantitéMembreDate retourReste à rendreRemarque
    {{$mat_name}}{{$out_date|date_short}}{{$out_amount}}{{:link href="/admin/users/details.php?id=%s"|args:$user label="%s"|args:$nom}}{{$return_date|date_short}}{{$remain}} + {{if $return_date != null}} + {{:assign jour="jour}} + {{if $nb_jours > 0}} + {{if $nb_jours > 1}}{{:assign jour="jours"}}{{/if}} + {{:tag color="darkred" label="Retard %s %s"|args:$nb_jours:$jour}} + {{elseif $nb_jours < 0}} + {{:assign delai="abs(%d)"|math:$nb_jours}} + {{if $nb_jours < -1}}{{:assign jour="jours"}}{{/if}} + {{"Reste %s %s"|args:$delai:$jour}} + {{else}} + {{:tag color="darkgreen" label="À rendre aujourd'hui"}} + {{/if}} + {{/if}} + + {{:linkbutton + label="Retour" + href="movements/output_return.html?key=%s&prop=1"|args:$mvt_key + shape="reset" + target="_dialog"}} + {{:linkbutton + label="Détails" + href="movements/movement_details.html?key=%s&prop=1&from=lh"|args:$mvt_key + shape="eye" + }} +
    +{{else}} +

    Aucun mouvement.

    +{{/if}} + +{{:admin_footer}} diff --git a/rent_movements.html b/rent_movements.html new file mode 100644 index 0000000..424e2ed --- /dev/null +++ b/rent_movements.html @@ -0,0 +1,181 @@ +{{* -*- brindille -*- *}} + +{{#restrict block=true section="accounting" level="write"}}{{/restrict}} + +{{* + Afficher l'historique des locations +*}} + +{{:admin_header title="Historique des locations" custom_css="./style.css" current="module_equipment"}} + +{{:include file="./_nav.html" current="location" subcurrent="historique"}} + +{{* récupérer la config des entrées/sorties *}} +{{:include file="./_get_config.html" keep="config"}} + +{{* filtrer selon la catégorie *}} +{{if $_GET.cat_key == null}} + {{:assign selected_category=$module.config.rent_cat_key}} +{{elseif $_GET.cat_key == -1}} + {{:assign selected_category=null}} + {{:save key="config" rent_cat_key=null}} +{{else}} + {{:assign selected_category=$_GET.cat_key}} + {{:save key="config" rent_cat_key=$selected_category}} +{{/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}} + +{{* déterminer les types de mouvements *}} +{{#foreach from=$config.output_nature key="key"}} + {{if $type == 'temporaire' && $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:")"}} + +{{* sélecteur de catégorie *}} +{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}} +{{#load type="category" order="$$.name"}} + {{:assign + var="cat_options." + value=$key + label=$name + href="?cat_key=%s"|args:$key + }} +{{/load}} + +
    + Filtrer par catégorie + {{:dropdown + title="Filtrer par catégorie" + options=$cat_options + value="%s"|args:$selected_category + }} +
    + +
    +

    Historique des locations

    +
    + +{{* lister les mouvements *}} +{{:assign premier=true}} +{{#select * FROM + (WITH + sorties AS + (SELECT + mvt.key, + json_extract(mvt.document, '$.date') AS date, + json_extract(mvt.document, '$.direction') AS direction, + json_extract(mvt.document, '$.operation') AS operation, + json_extract(mat.document, '$.name') AS materiel, + json_extract(mat.document, '$.category') AS category, + json_extract(mvt.document, '$.amount') AS amount, + users.id AS user_id, + users.nom AS user, + json_extract(storage.document, '$.name') AS stockage, + json_extract(mvt.document, '$.transactions') AS transactions, + json_extract(mvt.document, '$.comment') AS comment, + json_extract(mvt.document, '$.return_date') AS return_date + FROM !table AS mvt + INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment') + LEFT JOIN users ON users.id = json_extract(mvt.document, '$.user') + LEFT JOIN !table AS storage ON storage.key = json_extract(mvt.document, '$.storage') + WHERE json_extract(mvt.document, '$.type') = 'movement' + AND json_extract(mvt.document, '$.operation') IN !op + AND !cat_condition + ), + entrees AS + (SELECT + mvt.key, + json_extract(mvt.document, '$.date') AS date, + json_extract(mvt.document, '$.direction') AS direction, + json_extract(mvt.document, '$.operation') AS operation, + json_extract(mat.document, '$.name') AS materiel, + json_extract(mat.document, '$.category') AS category, + json_extract(mvt.document, '$.amount') AS amount, + users.id AS user_id, + users.nom AS user, + json_extract(storage.document, '$.name') AS stockage, + json_extract(mvt.document, '$.transactions') AS transactions, + json_extract(mvt.document, '$.comment') AS comment, + json_extract(mvt.document, '$.return_date') AS return_date + FROM !table AS mvt + INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment') + LEFT JOIN users ON users.id = json_extract(mvt.document, '$.user') + LEFT JOIN !table AS storage ON storage.key = json_extract(mvt.document, '$.storage') + INNER JOIN ( + SELECT json_extract(links.document, '$.return') AS return_key + FROM !table AS links + INNER JOIN sorties ON json_extract(links.document, '$.temp_key') = sorties.key + ) AS filtered_links ON filtered_links.return_key = mvt.key + WHERE !cat_condition + ) + SELECT * FROM sorties UNION SELECT * FROM entrees + ) + ORDER BY date + ; + !table=$module.table + !op = $out_keys + !cat_condition=$cat_condition +}} + {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}} + {{:assign file_path="%s/%s/"|args:$module.storage_root:$key}} + {{:assign file_path=$file_path|cat:"%"}} + {{#select count(*) AS nb FROM files WHERE path LIKE :file_path ; :file_path=$file_path}} + {{:assign nb_files=$nb}} + {{/select}} + + {{if $premier}} + + + + + + + + + + + + + + + + + + {{:assign premier=false}} + {{/if}} + + + + + + + + + + + + + + +{{else}} +

    Aucun mouvement.

    +{{/select}} + +
    DateMouvementOpérationMatérielQuantitéDépositaireStockageDocumentsÉcrituresRemarques
    {{$date|date_short}}{{if $direction == "input"}}Entrée{{else}}Sortie{{/if}}{{$op_label}}{{$materiel}}{{$amount}}{{:link href="/admin/users/details.php?id=%s"|args:$user_id label="%s"|args:$user}}{{$stockage}}{{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}}{{if $transactions != null}}{{:icon shape="money"}}{{/if}}{{$comment}} + {{:linkbutton + label="Détails" + href="movements/movement_details.html?key=%s"|args:$key + shape="eye" + }} +
    +{{:admin_footer}}