diff --git a/_get_config.html b/_get_config.html index 671a20e..119a20b 100644 --- a/_get_config.html +++ b/_get_config.html @@ -16,7 +16,7 @@ {{:assign var="nature" from="module.config.%s_nature"|args:$direction}} {{if $nature != null}} {{#foreach from=$nature item="elem"}} - {{:assign var="item" label=$label type=$type fee=$fee}} + {{:assign var="item" label=$label type=$type}} {{:assign var="config.%s_nature.%s"|args:$direction:$key value=$item}} {{/foreach}} {{else}} diff --git a/_inventory.html b/_inventory.html index 53e9566..b74bdbb 100644 --- a/_inventory.html +++ b/_inventory.html @@ -1,56 +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 *}} -{{if $_GET.cat_key == null}} - {{:assign selected_category=$module.config.stock_cat_key}} -{{elseif $_GET.cat_key == -1}} - {{:assign selected_category=null}} - {{:save key="config" stock_cat_key=null}} -{{else}} - {{:assign selected_category=$_GET.cat_key}} - {{:save key="config" stock_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}} - -{{* filtrer selon appartenance *}} -{{if $_GET.prop == null}} - {{:assign selected_prop=$module.config.stock_prop}} -{{elseif $_GET.prop == -1}} - {{:assign selected_prop=null}} - {{:save key="config" stock_prop=null}} -{{else}} - {{:assign selected_prop=$_GET.prop}} - {{:save key="config" stock_prop=$_GET.prop}} -{{/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}} @@ -58,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 }}
-

Inventaire des matériels présents dans l'association

+

Inventaire des matériels propriété de l'association

+{{* 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' ; @@ -87,32 +44,22 @@ 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 $col7 > 0}} + {{if $col5 > 0}} {{:linkbutton label="Sortie" shape="minus" @@ -124,7 +71,6 @@ shape="plus" href="movements/input_equipment.html?key=%s"|args:$key target="_dialog"}} -*}} {{:linkbutton label="Historique" href="equipment_history.html?key=%s&prop=1"|args:$key diff --git a/_nav.html b/_nav.html index 8cd2262..8ea688e 100644 --- a/_nav.html +++ b/_nav.html @@ -12,29 +12,27 @@ {{/if}} {{if $current == 'inventaire'}} - {{if $subcurrent == 'historique'}} + + + {{if $subsubcurrent == 'historique'}} {{/if}} - {{elseif $current == 'prêts'}} + {{elseif $current == 'historique'}} - {{elseif $current == 'location'}} - {{elseif $current == 'archives'}} {{if $subsubcurrent == 'historique'}} @@ -60,9 +58,7 @@ {{/if}} diff --git a/archives.html b/archives.html index efb1a22..261673c 100644 --- a/archives.html +++ b/archives.html @@ -9,30 +9,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,8 +24,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 }} @@ -52,6 +33,14 @@

Matériels qui ne sont plus dans l'association

+{{* 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 select=" @@ -61,7 +50,7 @@ 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 }} diff --git a/equipment_history.html b/equipment_history.html index 26a3ead..786adbe 100644 --- a/equipment_history.html +++ b/equipment_history.html @@ -12,6 +12,14 @@ - msg : message de retour *}} + +{{* barre de navigation *}} +{{if $_GET.prop == 1}} + {{:assign proprio="proprio"}} +{{else}} + {{:assign proprio="nonproprio"}} +{{/if}} + {{:assign equipment_key=$_GET.key|trim}} {{#load key=$equipment_key assign="equipment"}} {{else}} @@ -25,13 +33,12 @@ {{:admin_header title="Gestion des matériels" custom_css="./style.css" current="module_equipment"}} -{{* barre de navigation *}} {{if $_GET.current != null}} {{:assign current=$_GET.current}} {{else}} {{:assign current="inventaire"}} {{/if}} -{{:include file="./_nav.html" current=$current subcurrent="historique" eqpmt=$equipment.name category=$category.name}} +{{:include file="./_nav.html" current=$current subcurrent=$proprio subsubcurrent="historique" eqpmt=$equipment.name category=$category.name}} {{if $_GET.ok}} {{if $_GET.msg == "modification"}} @@ -54,69 +61,34 @@ {{* récupérer la config des entrées/sorties *}} {{:include file="./_get_config.html" keep="config"}} -{{* filtrer selon appartenance *}} -{{if $_GET.prop == null}} - {{:assign selected_prop=$module.config.eqpmt_hist_prop}} -{{elseif $_GET.prop == -1}} - {{:assign selected_prop=null}} - {{:save key="config" eqpmt_hist_prop=null}} -{{else}} - {{:assign selected_prop=$_GET.prop}} - {{:save key="config" eqpmt_hist_prop=$_GET.prop}} -{{/if}} - -{{* déterminer les types de mouvements selon l'appartenance du matériel *}} -{{#foreach from=$config.input_nature key="key"}} - {{if $selected_prop == null}} - {{* les deux sortes de matériel *}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{if $type == 'temporaire'}} - {{:assign var="temp_inputs." value=$key|quote_sql}} - {{/if}} - {{elseif $selected_prop == 1}} +{{* déterminer les types de mouvements selon l'affection du matériel *}} +{{#foreach from=$config.input_nature}} + {{if $_GET.prop}} {{* matériel propriété de l'asso *}} {{if $type != 'temporaire'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} + {{:assign var="input_types." value=$label}} {{/if}} {{else}} {{* matériel non propriété de l'asso *}} {{if $type == 'temporaire'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{:assign var="temp_inputs." value=$key|quote_sql}} + {{:assign var="input_types." value=$label}} {{/if}} {{/if}} {{/foreach}} -{{#foreach from=$config.output_nature key="key"}} - {{if $selected_prop == null}} - {{* les deux sortes de matériel *}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{if $type == "temporaire"}} - {{:assign var="temp_outputs." value=$key|quote_sql}} - {{/if}} - {{elseif $selected_prop == 1}} +{{#foreach from=$config.output_nature}} + {{if $_GET.prop}} {{* matériel propriété de l'asso *}} {{if $type != 'retour'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{if $type == "temporaire"}} - {{:assign var="temp_outputs." value=$key|quote_sql}} - {{/if}} + {{:assign var="output_types." value=$label}} {{/if}} {{else}} {{* matériel non propriété de l'asso *}} {{if $type == 'retour'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} + {{:assign var="output_types." value=$label}} {{/if}} {{/if}} {{/foreach}} -{{:assign key_cond=$mvt_keys|implode:","}} -{{:assign key_cond="("|cat:$key_cond|cat:")"}} - -{{if $selected_prop == null}} - {{:assign prop_condition="1"}} -{{else}} - {{:assign prop_condition="$$.operation in %s"|args:$key_cond}} -{{/if}} {{* calculer et mémoriser les quantités pour que le tri de la liste affiche les valeurs correctes *}} {{:assign stock=0}} @@ -150,111 +122,10 @@ {{:assign var="quantites.%s.nonproprio"|args:$id value=$nonproprio}} {{/load}} -{{if $selected_prop == null || $selected_prop}} - {{* calculer la quantité sortie temporairement de chaque matériel *}} - {{:assign output_ops=$temp_outputs|implode:","}} - {{:assign output_ops="("|cat:$output_ops|cat:")"}} - - {{#select - mvt.key AS mvt_key, - json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(mvt2.document, '$.amount')), 0) AS reste - 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') - WHERE - json_extract(mvt.document, '$.operation') IN !op - AND json_extract(mvt.document, '$.equipment') = :eqpmt_key - GROUP by mvt.key - ; - !table=$module.table - !op = $output_ops - :eqpmt_key = $_GET.key - }} - {{:assign var="reste.%s"|args:$mvt_key value=$reste}} - {{/select}} -{{/if}} - -{{if $selected_prop == null || ! $selected_prop}} - {{* calculer la quantité présente temporairement de chaque matériel *}} - {{:assign input_ops=$temp_inputs|implode:","}} - {{:assign input_ops="("|cat:$input_ops|cat:")"}} - - {{#select - mvt.key AS mvt_key, - 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') - WHERE - json_extract(mvt.document, '$.operation') IN !op - AND json_extract(mvt.document, '$.equipment') = :eqpmt_key - GROUP by mvt.key - ; - !table=$module.table - !op = $input_ops - :eqpmt_key = $_GET.key - }} - {{:assign var="present.%s"|args:$mvt_key value=$present}} - {{/select}} -{{/if}} - -{{:assign - select_debut=" - ($$.date || '_' || substr('000000' || id, -6, 6)) AS 'Date'; - CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement'; - $$.operation AS 'Opération'; - $$.amount AS 'Quantité';" -}} -{{:assign - select_prop="'' AS 'Stock'; - '' AS 'Sorti'; - '' AS 'Disponible';" -}} -{{:assign - select_depositaire="CASE WHEN $$.user NOT NULL - THEN (SELECT %s AS nom FROM users WHERE id = $$.user) - ELSE '' - END AS 'Dépositaire'; - "|args:$config.user_fields.name_sql -}} -{{:assign - select_non_prop="'' as 'Temporaire';" -}} -{{:assign select_final=" - CASE WHEN $$.storage NOT NULL - THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage) - ELSE '' - END AS 'Stockage'; - '' AS 'Documents'; - $$.transactions AS 'Écritures' - " -}} - -{{if $selected_prop == null}} - {{:assign select_clause=$select_debut|cat:$select_prop|cat:$select_non_prop|cat:$select_depositaire|cat:$select_final}} -{{elseif $selected_prop}} - {{:assign select_clause=$select_debut|cat:$select_prop|cat:$select_depositaire|cat:$select_final}} -{{else}} - {{:assign select_clause=$select_debut|cat:$select_non_prop|cat:$select_final}} -{{/if}} - -{{:assign var="prop_options." value="" label="Tous les matériels" href="?key=%s&prop=-1"|args:$_GET.key}} -{{:assign var="prop_options." value="1" label="Matériels propriété de l'association" href="?key=%s&prop=1"|args:$_GET.key}} -{{:assign var="prop_options." value="0" label="Matériels NON propriété de l'association" href="?key=%s&prop=0"|args:$_GET.key}} - -
- Filtrer par appartenance - {{:dropdown - title="Filtrer par appartenance" - options=$prop_options - value="%s"|args:$selected_prop - }} -
- {{if $current != "archives"}} {{/if}} -{{* lister les mouvements du matériel passé en paramètre *}} -{{#list - type="movement" - select="%s"|args:$select_clause - where="%s"|args:$prop_condition - equipment=$equipment_key - order=1 -}} - {{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$direction:$operation}} - {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}} +{{* lister tous les mouvements du matériel passé en paramètre *}} +{{if $_GET.prop}} + {{* calculer la quantité temporairement l'extérieur de chaque matériel *}} + {{#foreach from=$config.output_nature key=key}} + {{if $type == "temporaire"}} + {{:assign var="temp_outputs." value=$key|quote_sql}} + {{/if}} + {{/foreach}} + {{:assign operations=$temp_outputs|implode:","}} + {{:assign operations="("|cat:$operations|cat:")"}} - {{:assign var="stock" from="quantites.%s.stock"|args:$id}} - {{:assign var="exterieur" from="quantites.%s.exterieur"|args:$id}} - {{:assign var="dispo" from="quantites.%s.dispo"|args:$id}} - {{:assign var="tempo" from="quantites.%s.nonproprio"|args:$id}} - - {{: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 + mvt.key AS mvt_key, + json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(mvt2.document, '$.amount')), 0) AS reste + 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 json_extract(mvt.document, '$.equipment') = :eqpmt_key + GROUP by mvt.key + ; + !op = $operations + :eqpmt_key = $_GET.key + }} + {{:assign var="reste.%s"|args:$mvt_key value=$reste}} {{/select}} - {{if $selected_prop == null}} - {{:assign user_details=$col9}} - {{:assign storage=$col10}} - {{elseif $selected_prop}} - {{:assign user_details=$col8}} - {{:assign storage=$col9}} - {{else}} - {{:assign user_details=$col6}} - {{:assign storage=$col6}} + {{#list + type="movement" + select=" + ($$.date || '_' || substr('000000' || id, -6, 6)) AS 'Date'; + CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement'; + $$.operation AS 'Opération'; + $$.amount AS 'Quantité'; + '' AS 'Stock'; + '' AS 'Sorti'; + '' AS 'Disponible'; + CASE WHEN $$.user NOT NULL + THEN (SELECT %s AS nom FROM users WHERE id = $$.user) + ELSE '' + END AS 'Dépositaire'; + CASE WHEN $$.storage NOT NULL + THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage) + ELSE '' + END AS 'Stockage'; + '' AS 'Documents'; + $$.transactions AS 'Écritures' + "|args:$config.user_fields.name_sql + equipment=$equipment_key + order=1 + }} + {{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$direction:$operation}} + {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}} + + {{if $direction === "input" && $op_label|in:$input_types || + $direction === "output"&& $op_label|in:$output_types + }} + {{:assign var="stock" from="quantites.%s.stock"|args:$id}} + {{:assign var="exterieur" from="quantites.%s.exterieur"|args:$id}} + {{:assign var="dispo" from="quantites.%s.dispo"|args:$id}} + + {{: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}} + + {{$date|date_short}} + {{$col2}} + {{$op_label}} + {{$amount}} + {{$stock}} + {{$exterieur}} + {{$dispo}} + {{:link href="/admin/users/details.php?id=%s"|args:$user label="%s"|args:$col8}} + {{$col9}} + {{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}} + {{if $transactions|count > 0}}{{:icon shape="money"}}{{/if}} + + {{if $current != "archives"}} + {{if $direction == "output" && $type_mvt == "temporaire"}} + {{:assign var="temp_ext" from="reste.%s"|args:$key}} + {{if $temp_ext != null && $temp_ext > 0}} + {{:linkbutton + label="Retour" + href="movements/output_return.html?key=%s&prop=%s"|args:$key:$_GET.prop + shape="reset" + target="_dialog"}} + {{/if}} + {{/if}} + {{:linkbutton + label="Détails" + href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$_GET.prop + shape="eye" + }} + {{/if}} + + + {{/if}} + {{/list}} + {{if $dispo_final === 0}} + Il n'y a aucun matériel disponible, il n'est donc pas possible d'effectuer une sortie {{/if}} +{{else}} + {{* calculer la quantité présente temporairement de chaque matériel *}} + {{#foreach from=$config.input_nature key=key}} + {{if $type == "temporaire"}} + {{:assign var="temp_inputs." value=$key|quote_sql}} + {{/if}} + {{/foreach}} + {{:assign operations=$temp_inputs|implode:","}} + {{:assign operations="("|cat:$operations|cat:")"}} - - {{$date|date_short}} - {{$col2}} - {{$op_label}} - {{$amount}} - {{if $selected_prop == null || $selected_prop}} - {{$stock}} - {{$exterieur}} - {{$dispo}} - {{/if}} - {{if $selected_prop == null || ! $selected_prop}} - {{$tempo}} - {{/if}} - {{if $selected_prop == null || $selected_prop}} - {{:link href="/admin/users/details.php?id=%s"|args:$user label="%s"|args:$user_details}} - {{/if}} - {{$storage}} - {{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}} - {{if $transactions|count > 0}}{{:icon shape="money"}}{{/if}} - - {{if $current != "archives"}} - {{if $direction == "output" && $type_mvt == "temporaire"}} - {{:assign var="temp_ext" from="reste.%s"|args:$key}} - {{if $temp_ext != null && $temp_ext > 0}} - {{:linkbutton - label="Retour" - href="movements/output_return.html?key=%s&prop=%s"|args:$key:$selected_prop - shape="reset" - target="_dialog"}} - {{/if}} - {{/if}} - {{if $direction == "input" && $type_mvt == "temporaire"}} - {{:assign var="temp_in" from="present.%s"|args:$key}} - {{if $temp_in != null && $temp_in > 0}} - {{:linkbutton - label="Retour" - href="movements/input_return.html?key=%s&prop=%s"|args:$key:$selected_prop - shape="reset" - target="_dialog"}} - {{/if}} - {{/if}} - {{:linkbutton - label="Détails" - href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$selected_prop - shape="eye" - }} - {{/if}} - - -{{/list}} + {{#select + mvt.key AS mvt_key, + json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(mvt2.document, '$.amount')), 0) AS present + 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 json_extract(mvt.document, '$.equipment') = :eqpmt_key + GROUP by mvt.key + ; + !op = $operations + :eqpmt_key = $_GET.key + }} + {{:assign var="present.%s"|args:$mvt_key value=$present}} + {{/select}} -{{if $dispo_final == 0 && $stock > 0 && $current != "archives"}} - Il n'y a aucun matériel disponible, il n'est donc pas possible d'effectuer une sortie + {{#list + type="movement" + select="($$.date || '_' || substr('000000' || id, -6, 6)) AS 'Date'; + CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement'; + $$.operation AS 'Opération'; + $$.amount AS 'Quantité'; + "" as 'Présent'; + CASE WHEN $$.storage NOT NULL + THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage) + ELSE '' + END as 'Stockage'; + '' AS 'Documents'; + $$.transactions AS 'Écritures' + " + equipment=$equipment_key + order=1 + }} + {{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$direction:$col3}} + {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}} + + {{if $direction === "input" && $op_label|in:$input_types || + $direction === "output"&& $op_label|in:$output_types + }} + {{:assign var="stock" from="quantites.%s.nonproprio"|args:$id}} + + {{: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}} + + {{$date|date_short}} + {{$col2}} + {{$op_label}} + {{$amount}} + {{$stock}} + {{$col6}} + {{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}} + {{if $transactions|count > 0}}{{:icon shape="money"}}{{/if}} + + {{if $direction == "input" && $type_mvt == "temporaire"}} + {{:assign var="temp_in" from="present.%s"|args:$key}} + {{if $temp_in != null && $temp_in > 0}} + {{:linkbutton + label="Retour" + href="movements/input_return.html?key=%s&prop=%s"|args:$key:$_GET.prop + shape="reset" + target="_dialog"}} + {{/if}} + {{/if}} + {{:linkbutton + label="Détails" + href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$_GET.prop + shape="eye" + }} + + + {{/if}} + {{/list}} {{/if}} {{:admin_footer}} diff --git a/global_history.html b/global_history.html index a3210ea..81e576b 100644 --- a/global_history.html +++ b/global_history.html @@ -8,93 +8,17 @@ {{:admin_header title="Historique des mouvements" custom_css="./style.css" current="module_equipment"}} -{{:include file="./_nav.html" current="historique"}} +{{:include file="./_nav.html" current="historique" subcurrent="tous"}} {{* 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.hist_cat_key}} -{{elseif $_GET.cat_key == -1}} - {{:assign selected_category=null}} - {{:save key="config" hist_cat_key=null}} -{{else}} - {{:assign selected_category=$_GET.cat_key}} - {{:save key="config" hist_cat_key=$selected_category}} -{{/if}} - -{{* condition de filtrage *}} -{{if $selected_category != null}} - {{:assign cat_condition="(SELECT key - FROM @TABLE AS cat - WHERE cat.key = (SELECT $$.category - FROM @TABLE AS mat - WHERE mat.key = @TABLE.$$.equipment)) = '%s'"|args:$selected_category}} -{{else}} - {{:assign cat_condition=1}} -{{/if}} - -{{* filtrer selon appartenance *}} -{{if $_GET.prop == null}} - {{:assign selected_prop=$module.config.hist_prop}} -{{elseif $_GET.prop == -1}} - {{:assign selected_prop=null}} - {{:save key="config" hist_prop=null}} -{{else}} - {{:assign selected_prop=$_GET.prop}} - {{:save key="config" hist_prop=$_GET.prop}} -{{/if}} - -{{* déterminer les types de mouvements selon l'appartenance du matériel *}} -{{#foreach from=$config.input_nature key="key"}} - {{if $selected_prop == null}} - {{* les deux sortes de matériel *}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{elseif $selected_prop == 1}} - {{* matériel propriété de l'asso *}} - {{if $type != 'temporaire'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{/if}} - {{else}} - {{* matériel non propriété de l'asso *}} - {{if $type == 'temporaire'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{/if}} - {{/if}} -{{/foreach}} - -{{#foreach from=$config.output_nature key="key"}} - {{if $selected_prop == null}} - {{* les deux sortes de matériel *}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{elseif $selected_prop == 1}} - {{* matériel propriété de l'asso *}} - {{if $type != 'retour'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{/if}} - {{else}} - {{* matériel non propriété de l'asso *}} - {{if $type == 'retour'}} - {{:assign var="mvt_keys." value=$key|quote_sql}} - {{/if}} - {{/if}} -{{/foreach}} -{{:assign key_cond=$mvt_keys|implode:","}} -{{:assign key_cond="("|cat:$key_cond|cat:")"}} - -{{if $selected_prop == null}} - {{:assign prop_condition="1"}} -{{else}} - {{:assign prop_condition="$$.operation in %s"|args:$key_cond}} -{{/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="?"}} {{#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 @@ -105,21 +29,8 @@ 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 }}
@@ -127,7 +38,18 @@

Historique de tous les mouvements de matériel

-{{* lister les mouvements *}} +{{* condition de filtrage *}} +{{if $_GET.cat_key != null}} + {{:assign condition="(SELECT key + FROM @TABLE AS cat + WHERE cat.key = (SELECT $$.category + FROM @TABLE AS mat + WHERE mat.key = @TABLE.$$.equipment)) = '%s'"|args:$_GET.cat_key}} +{{else}} + {{:assign condition=1}} +{{/if}} + +{{* lister tous les mouvements *}} {{#list type="movement" select="($$.date || '_' || substr('000000' || id, -6, 6)) AS 'Date'; @@ -147,7 +69,7 @@ END as 'Stockage'; $$.comment AS 'Commentaire' "|args:$config.user_fields.name_sql - where="%s AND %s"|args:$cat_condition:$prop_condition + where="%s"|args:$condition order=1 max=50 desc=true diff --git a/index.html b/index.html index 740bf3b..dce00cb 100644 --- a/index.html +++ b/index.html @@ -14,6 +14,15 @@ {{else}} {{#restrict block=true section="accounting" level="write"}}{{/restrict}} + {{if $_GET.prop == null || $_GET.prop}} + {{:assign proprio="proprio"}} + {{else}} + {{:assign proprio="nonproprio"}} + {{/if}} + + {{#load type="category" count=true assign="result"}}{{/load}} + {{:include file="_nav.html" current="inventaire" cat="%d"|args:$result.count subcurrent="%s"|args:$proprio}} + {{if $_GET.ok}} {{if $_GET.msg == "ajout" }}

Ajout effectué

@@ -28,13 +37,14 @@

Modification refusée

{{/if}} - {{#load type="category" count=true limit=1 assign="result"}}{{/load}} - {{:include file="_nav.html" current="inventaire" cat="%d"|args:$result.count subcurrent="stock"}} - {{if $result.count == 0}}

Il n'y a aucune catégorie : vous devez en ajouter.

{{else}} - {{:include file="./_inventory.html"}} + {{if $_GET.prop == null || $_GET.prop == "1"}} + {{:include file="./_inventory.html"}} + {{else}} + {{:include file="./_temp_inventory.html"}} + {{/if}} {{/if}} {{:admin_footer}} diff --git a/loan_history.html b/loan_history.html index 1fb0985..997ffa4 100644 --- a/loan_history.html +++ b/loan_history.html @@ -2,8 +2,8 @@ {{#restrict block=true section="accounting" level="write"}}{{/restrict}} -{{:admin_header title="Prêts en cours" custom_css="../style.css" current="module_equipment"}} -{{:include file="./_nav.html" current="prêts" subcurrent="encours"}} +{{:admin_header title="Matériels hors de l'asso" custom_css="../style.css" current="module_equipment"}} +{{:include file="./_nav.html" current="historique" subcurrent="prêts"}} {{* vérifier l'existence de la table du module @@ -32,14 +32,14 @@ {{/if}}
-

Prêts de matériel en cours

+

Historique des prêts de matériel

{{* lecture config (défaut ou enregistrée) *}} {{:include file="./_get_config.html" keep="config"}} {{#foreach from=$config.output_nature key="key"}} - {{if $type == 'temporaire' && $fee != 'payant'}} + {{if $type == 'temporaire'}} {{:assign var="output_types." value=$key|quote_sql}} {{/if}} {{/foreach}} @@ -56,11 +56,11 @@ 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 !table AS mvt + FROM {!$module.table} AS mvt LEFT 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') + 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 @@ -69,7 +69,6 @@ HAVING remain != 0 ORDER BY out_date, nom ; - !table=$module.table !op = $output_ops }} {{if $premier}} diff --git a/loan_movements.html b/loan_movements.html deleted file mode 100644 index 4425b03..0000000 --- a/loan_movements.html +++ /dev/null @@ -1,185 +0,0 @@ -{{* -*- brindille -*- *}} - -{{#restrict block=true section="accounting" level="write"}}{{/restrict}} - -{{* - Afficher l'historique des prêts -*}} - -{{:admin_header title="Historique des prêts" custom_css="./style.css" current="module_equipment"}} - -{{: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 selected_category=$module.config.loan_cat_key}} -{{elseif $_GET.cat_key == -1}} - {{:assign selected_category=null}} - {{:save key="config" loan_cat_key=null}} -{{else}} - {{:assign selected_category=$_GET.cat_key}} - {{:save key="config" loan_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 prêts

-
- -{{* 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="mvts." -}} - {{: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}} diff --git a/member_history.html b/member_history.html index cf47264..bf44103 100644 --- a/member_history.html +++ b/member_history.html @@ -51,13 +51,13 @@ json_extract(mvt.document, '$.amount') as amount, COALESCE((SELECT json_extract(links.document, '$.temp_key') - FROM !table AS links + FROM {!$module.table} AS links WHERE json_extract(links.document, '$.temp_key') = mvt.key OR json_extract(links.document, '$.return') = mvt.key), mvt.key) AS out_temp_key - FROM !table AS mvt + FROM {!$module.table} AS mvt INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id - INNER JOIN !table AS eqpmt + INNER JOIN {!$module.table} AS eqpmt ON json_extract(mvt.document, '$.equipment') = eqpmt.key WHERE users.id = :user AND eqpmt.key = :eqpmt_key @@ -65,7 +65,6 @@ OR json_extract(mvt.document, '$.operation') IN !input_types) ORDER BY out_temp_key, date ; - !table=$module.table :user = $_GET.id :eqpmt_key = $_GET.key|trim !output_types=$output_types.temporaire diff --git a/movements/input_return.html b/movements/input_return.html index 4512516..c4601b3 100644 --- a/movements/input_return.html +++ b/movements/input_return.html @@ -34,15 +34,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 }} diff --git a/movements/output_return.html b/movements/output_return.html index 162fc37..430f745 100644 --- a/movements/output_return.html +++ b/movements/output_return.html @@ -34,15 +34,14 @@ {{#select json_extract(mvt.document, '$.amount') - IFNULL(SUM(json_extract(mvt2.document, '$.amount')), 0) AS exterieur - 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 }} diff --git a/rent_history.html b/rent_history.html deleted file mode 100644 index ac4e5a1..0000000 --- a/rent_history.html +++ /dev/null @@ -1,140 +0,0 @@ -{{* -*- 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 deleted file mode 100644 index c4cb1d7..0000000 --- a/rent_movements.html +++ /dev/null @@ -1,185 +0,0 @@ -{{* -*- 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="mvts." -}} - {{: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}} diff --git a/snippets/_details.html b/snippets/_details.html index 9ab9458..00a6e0b 100644 --- a/snippets/_details.html +++ b/snippets/_details.html @@ -44,9 +44,9 @@ json_extract(mvt.document, '$.amount') AS qte, json_extract(mvt.document, '$.return_date') AS return_date, json_extract(mvt.document, '$.operation') AS operation - FROM !table AS mvt + FROM {!$module.table} AS mvt INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id - INNER JOIN !table AS eqpmt ON json_extract(mvt.document, '$.equipment') = eqpmt.key + INNER JOIN {!$module.table} AS eqpmt ON json_extract(mvt.document, '$.equipment') = eqpmt.key WHERE users.id = :user AND @@ -57,7 +57,6 @@ json_extract(mvt.document, '$.operation') IN !input_types) ORDER BY eqpmt_name, date ; - !table=$module.table :user = $user.id !output_types=$output_types.temporaire !input_types=$input_types.retour @@ -166,16 +165,15 @@ json_extract(mvt.document, '$.operation') as operation, MIN(json_extract(mvt.document, '$.date')) as date, SUM(json_extract(mvt.document, '$.amount')) as amount - FROM !table AS mvt + FROM {!$module.table} AS mvt INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id - INNER JOIN !table AS eqpmt + INNER JOIN {!$module.table} AS eqpmt ON json_extract(mvt.document, '$.equipment') = eqpmt.key WHERE users.id = :user AND json_extract(mvt.document, '$.operation') IN !output_types GROUP BY eqpmt_key, operation ORDER BY eqpmt_name, date ; - !table=$module.table :user = $user.id !output_types=$output_types.définitif assign="def_mat."