{{* -*- brindille -*- *}} {{#restrict section="users" level="read"}}{{/restrict}} {{* lecture config (défaut ou enregistrée) *}} {{:include file="../_get_config.html" keep="config, directions"}} {{#foreach from=$directions key="direction"}} {{:assign var="nature" from="config.%s_nature"|args:$direction}} {{#foreach from=$nature key=key}} {{:assign var="types.%s.%s."|args:$direction:$type value=$key|quote_sql}} {{/foreach}} {{:assign var="io_types" from="types.%s"|args:$direction}} {{#foreach from=$io_types key=key}} {{:assign var=elem from="io_types.%s"|args:$key}} {{:assign elem=$elem|implode:","}} {{:assign elem="("|cat:$elem|cat:")"}} {{:assign var="%s_types.%s"|args:$direction:$key value=$elem}} {{/foreach}} {{/foreach}} {{* 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}} {{* Matériels attribués temporairement *}} {{* vérifier la présence des types d'entrées et de sorties requis *}} {{if $output_types|has_key:"temporaire" && $input_types|has_key:"retour"}} {{* Calculer les quantités de matériel en prêt, retourné et restant *}} {{:assign premier=true}} {{#select mvt.key AS mvt_key, json_extract(mvt.document, '$.date') AS out_date, json_extract(eqpmt.document, '$.name') AS eqpmt_name, json_extract(mvt.document, '$.amount') AS qte, IFNULL(SUM(json_extract(retour.document, '$.amount')), 0) AS return_amount, json_extract(mvt.document, '$.operation') AS operation FROM module_data_equipment AS mvt 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_data_equipment AS retour ON retour.key = json_extract(links.document, '$.return') INNER JOIN module_data_equipment AS eqpmt ON json_extract(mvt.document, '$.equipment') = eqpmt.key WHERE users.id = :user AND json_extract(mvt.document, '$.type') = 'movement' AND json_extract(mvt.document, '$.operation') IN !output_types GROUP BY mvt.key ORDER BY eqpmt_name, json_extract(mvt.document, '$.date') ; :user = $user.id !output_types=$output_types.temporaire }} {{:assign reste="%d-%d"|math:$qte:$return_amount}} {{if $reste > 0}} {{:assign class=""}} {{else}} {{:assign class="r0"}} {{/if}} {{:assign var="op_label" from="config.output_nature.%s.label"|args:$operation}} {{:assign total=$qte}} {{if $premier}} {{:assign premier=false}}

Matériels attribués temporairement

{{:input type="checkbox" value=1 name="no_return" label="Masquer les matériels rendus en totalité"}}
{{/if}} {{* Sortie temporaire *}} {{* chercher les retours *}} {{#select json_extract(links.document, '$.return') AS return_key, json_extract(return_mvt.document, '$.amount') AS return_amount, json_extract(return_mvt.document, '$.date') AS return_date, json_extract(return_mvt.document, '$.operation') AS operation FROM module_data_equipment AS links INNER JOIN module_data_equipment AS return_mvt ON return_mvt.key = return_key WHERE json_extract(links.document, '$.temp_key') = :mvt_key ORDER BY return_date ; :mvt_key=$mvt_key }} {{:assign var="op_label" from="config.input_nature.%s.label"|args:$operation}} {{:assign total="%d-%d"|math:$total:$return_amount}} {{* retour de sortie temporaire *}} {{/select}} {{/select}}
Date Matériel Opération Quantité Total
{{$out_date|date_short}} {{$eqpmt_name}} {{$op_label}} {{$qte}} {{$total}} {{if $reste > 0}} {{if $reste > 1}} {{:assign msg_reste="Reste %s unités"|args:$reste}} {{else}} {{:assign msg_reste="Reste %s unité"|args:$reste}} {{/if}} {{:linkbutton label="Retour" href="%smovements/output_return.html?key=%s&prop=0&user=%s"|args:$module.url:$mvt_key:$user.id shape="history" title=$msg_reste target="_dialog"}} {{/if}}
{{$return_date|date_short}} {{$eqpmt_name}} {{$op_label}} {{$return_amount}} {{$total}}
{{/if}} {{* Matériels attribués définitivement *}} {{* vérifier la présence des types de sorties requis *}} {{if $output_types|has_key:"définitif"}} {{#select eqpmt.key as eqpmt_key, json_extract(eqpmt.document, '$.name') as eqpmt_name, json_extract(mvt.document, '$.direction') as direction, json_extract(mvt.document, '$.operation') as operation, json_extract(mvt.document, '$.date') as date, json_extract(mvt.document, '$.amount') as amount FROM module_data_equipment AS mvt INNER JOIN users ON json_extract(mvt.document, '$.user') = users.id INNER JOIN module_data_equipment AS eqpmt ON json_extract(mvt.document, '$.equipment') = eqpmt.key WHERE users.id = :user AND json_extract(mvt.document, '$.operation') IN !output_types ORDER BY date DESC ; :user = $user.id !output_types=$output_types.définitif assign="def_mat." }} {{/select}} {{/if}} {{if $def_mat|count != 0}}

Matériels attribués définitivement

{{#foreach from=$def_mat}} {{: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}} {{:assign var="total" from="reste.%s"|args:$eqpmt_key}} {{if $total == null}} {{:assign total=0}} {{/if}} {{if $direction == 'output' && $type_mvt == 'définitif'}} {{:assign var="reste.%s"|args:$eqpmt_key value="%d+%d"|math:$total:$amount}} {{/if}} {{:assign var="total" from="reste.%s"|args:$eqpmt_key}} {{/foreach}}
Date Matériel Opération Quantité Total
{{$date|date_short}} {{$eqpmt_name}} {{$op_label}} {{$amount}} {{$total}}
{{/if}} {{/if}}