Simplification calcul dispo et config par défaut
This commit is contained in:
parent
d7f7ec9423
commit
af9dbf2b22
14 changed files with 260 additions and 304 deletions
|
|
@ -1,134 +1,112 @@
|
|||
{{*
|
||||
Calcul des entrées/sorties de matériels à une date donnée
|
||||
paramètres :
|
||||
- liste de catégories
|
||||
- liste de clés de catégories
|
||||
- date
|
||||
résultat : cumul_mvt
|
||||
*}}
|
||||
|
||||
{{* liste des catégories *}}
|
||||
{{if $categories === null}}
|
||||
{{if $category_keys === null}}
|
||||
{{#load type="category"}}
|
||||
{{:assign var="categories." value=$key}}
|
||||
{{:assign var="cumul_mvt.%s.name"|args:$key value=$name}}
|
||||
{{/load}}
|
||||
{{else}}
|
||||
{{#load type="category" where="key"|sql_where:'IN':$category_keys}}
|
||||
{{:assign var="cumul_mvt.%s.name"|args:$key value=$name}}
|
||||
{{/load}}
|
||||
{{/if}}
|
||||
|
||||
{{* date *}}
|
||||
{{if $date === null}}
|
||||
{{* :assign date=$now|date:"Y-m-d" *}}
|
||||
{{:assign date="31/12/9999"|parse_date}}
|
||||
{{* si on veut aussi lister les mouvements du futur :-) *}}
|
||||
{{/if}}
|
||||
{{#foreach from=$cumul_mvt key="cat_key" item="elem"}}
|
||||
{{:assign var="in_categories." value="'%s'"|args:$cat_key}}
|
||||
{{/foreach}}
|
||||
|
||||
{{* Extraire et compiler les infos de la base *}}
|
||||
{{#select
|
||||
json_extract(mvt.document, '$.date') as 'date',
|
||||
eqpmt.key as 'eqpmt_key',
|
||||
json_extract(eqpmt.document, '$.designation') as 'designation',
|
||||
cat.key as 'cat_key',
|
||||
json_extract(cat.document, '$.name') as 'category',
|
||||
mvt.key as 'mvt_key',
|
||||
json_extract(mvt.document, '$.direction') as 'direction',
|
||||
CASE json_extract(mvt.document, '$.direction')
|
||||
WHEN 'input' THEN json_extract(mvt.document, '$.input_nature')
|
||||
WHEN 'output' THEN json_extract(mvt.document, '$.output_nature')
|
||||
END
|
||||
AS 'operation',
|
||||
json_extract(mvt.document, '$.amount') AS 'nombre'
|
||||
FROM module_data_equipment as eqpmt
|
||||
INNER JOIN module_data_equipment as cat
|
||||
ON json_extract(eqpmt.document, '$.category') = cat.key
|
||||
INNER JOIN module_data_equipment as mvt
|
||||
ON json_extract(mvt.document, '$.equipment') = eqpmt.key
|
||||
WHERE json_extract(eqpmt.document, '$.type') = "equipment"
|
||||
AND !categories
|
||||
AND json_extract(mvt.document, '$.date') <= :date
|
||||
ORDER BY
|
||||
json_extract(cat.document, '$.name'),
|
||||
json_extract(eqpmt.document, '$.designation'),
|
||||
json_extract(mvt.document, '$.date');
|
||||
!categories='cat_key'|sql_where:'IN':$categories
|
||||
:date=$date
|
||||
}}
|
||||
{{:assign in_categories=$in_categories|implode:","}}
|
||||
{{:assign in_categories="("|cat:$in_categories|cat:")"}}
|
||||
|
||||
{{:assign
|
||||
var="equipments.%s.name"|args:$cat_key
|
||||
value=$category}}
|
||||
{{:assign
|
||||
var="equipments.%s.eqpmt.%s.designation"|args:$cat_key:$eqpmt_key
|
||||
value=$designation}}
|
||||
{{* liste des matériels dans les catégories passées en paramètre *}}
|
||||
{{#load type="equipment" where="$$.category IN %s"|args:$in_categories}}
|
||||
{{:assign var="equipments.%s.category"|args:$key value=$category}}
|
||||
{{:assign var="equipments.%s.designation"|args:$key value=$designation}}
|
||||
{{:assign var="in_equipments." value="'%s'"|args:$key}}
|
||||
{{/load}}
|
||||
{{:assign in_equipments=$in_equipments|implode:","}}
|
||||
{{:assign in_equipments="("|cat:$in_equipments|cat:")"}}
|
||||
|
||||
{{* récupérer la config des entrées/sorties *}}
|
||||
{{:include file="./_get_config.html" keep="config"}}
|
||||
|
||||
{{* parcourir les mouvements et cumuler les entrées/sorties *}}
|
||||
{{#load type="movement" where="$$.equipment IN %s"|args:$in_equipments assign="mvt"}}
|
||||
{{* matériel propriété de l'asso en stock *}}
|
||||
{{:assign
|
||||
var="stock"
|
||||
from="equipments.%s.eqpmt.%s.stock"|args:$cat_key:$eqpmt_key}}
|
||||
{{if $stock === null}}
|
||||
from="equipments.%s.stock"|args:$mvt.equipment}}
|
||||
{{if $stock == null}}
|
||||
{{:assign stock=0}}
|
||||
{{/if}}
|
||||
|
||||
{{* matériel propriété de l'asso à l'extérieur *}}
|
||||
{{:assign
|
||||
var="exterieur"
|
||||
from="equipments.%s.eqpmt.%s.exterieur"|args:$cat_key:$eqpmt_key}}
|
||||
{{if $exterieur === null}}
|
||||
from="equipments.%s.exterieur"|args:$mvt.equipment}}
|
||||
{{if $exterieur == null}}
|
||||
{{:assign exterieur=0}}
|
||||
{{/if}}
|
||||
|
||||
{{* matériel non propriété de l'asso *}}
|
||||
{{:assign
|
||||
var="nonproprio"
|
||||
from="equipments.%s.eqpmt.%s.nonproprio"|args:$cat_key:$eqpmt_key}}
|
||||
{{if $nonproprio === null}}
|
||||
from="equipments.%s.nonproprio"|args:$mvt.equipment}}
|
||||
{{if $nonproprio == null}}
|
||||
{{:assign nonproprio=0}}
|
||||
{{/if}}
|
||||
|
||||
{{* récupérer la config des entrées/sorties *}}
|
||||
{{:include file="./_get_config.html" keep="config"}}
|
||||
{{* déterminer le type de mouvement *}}
|
||||
{{:assign var="mvt_nature" from="mvt.%s_nature"|args:$mvt.direction}}
|
||||
{{:assign var="type_mvt" from="config.%s_nature.%s"|args:$mvt.direction:$mvt_nature}}
|
||||
|
||||
{{if $direction === 'input'}}
|
||||
{{* chercher le type d'entrée parmi les types de la config *}}
|
||||
{{#foreach from=$config.input_nature item="elem"}}
|
||||
{{if $operation == $elem.label}}
|
||||
{{if $elem.type == 'définitif'}}
|
||||
{{:assign stock="%d+%d"|math:$stock:$nombre}}
|
||||
{{:assign
|
||||
var="equipments.%s.eqpmt.%s.stock"|args:$cat_key:$eqpmt_key
|
||||
from=stock}}
|
||||
{{elseif $elem.type == 'retour'}}
|
||||
{{:assign exterieur="%d-%d"|math:$exterieur:$nombre}}
|
||||
{{:assign
|
||||
var="equipments.%s.eqpmt.%s.exterieur"|args:$cat_key:$eqpmt_key
|
||||
from=exterieur}}
|
||||
{{elseif $elem.type == 'temporaire'}}
|
||||
{{:assign nonproprio="%d+%d"|math:$nonproprio:$nombre}}
|
||||
{{:assign
|
||||
var="equipments.%s.eqpmt.%s.nonproprio"|args:$cat_key:$eqpmt_key
|
||||
from=nonproprio}}
|
||||
{{/if}}
|
||||
{{:break}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{elseif $direction === 'output'}}
|
||||
{{* chercher le type de sortie parmi les types de la config *}}
|
||||
{{#foreach from=$config.output_nature item="elem"}}
|
||||
{{if $operation == $elem.label}}
|
||||
{{if $elem.type == 'définitif'}}
|
||||
{{:assign stock="%d-%d"|math:$stock:$nombre}}
|
||||
{{:assign
|
||||
var="equipments.%s.eqpmt.%s.stock"|args:$cat_key:$eqpmt_key
|
||||
from=stock}}
|
||||
{{elseif $elem.type == 'temporaire'}}
|
||||
{{:assign exterieur="%d+%d"|math:$exterieur:$nombre}}
|
||||
{{:assign
|
||||
var="equipments.%s.eqpmt.%s.exterieur"|args:$cat_key:$eqpmt_key
|
||||
from=exterieur}}
|
||||
{{elseif $elem.type == 'retour'}}
|
||||
{{:assign nonproprio="%d-%d"|math:$nonproprio:$nombre}}
|
||||
{{:assign
|
||||
var="equipments.%s.eqpmt.%s.nonproprio"|args:$cat_key:$eqpmt_key
|
||||
from=nonproprio}}
|
||||
{{/if}}
|
||||
{{:break}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{if $mvt.direction === 'input'}}
|
||||
{{if $type_mvt == 'définitif'}}
|
||||
{{:assign stock="%d+%d"|math:$stock:$mvt.amount}}
|
||||
{{:assign
|
||||
var="equipments.%s.stock"|args:$mvt.equipment
|
||||
from=stock}}
|
||||
{{elseif $type_mvt == 'retour'}}
|
||||
{{:assign exterieur="%d-%d"|math:$exterieur:$mvt.amount}}
|
||||
{{:assign
|
||||
var="equipments.%s.exterieur"|args:$mvt.equipment
|
||||
from=exterieur}}
|
||||
{{elseif $type_mvt == 'temporaire'}}
|
||||
{{:assign nonproprio="%d+%d"|math:$nonproprio:$mvt.amount}}
|
||||
{{:assign
|
||||
var="equipments.%s.nonproprio"|args:$mvt.equipment
|
||||
from=nonproprio}}
|
||||
{{/if}}
|
||||
{{elseif $mvt.direction === 'output'}}
|
||||
{{if $type_mvt == 'définitif'}}
|
||||
{{:assign stock="%d-%d"|math:$stock:$mvt.amount}}
|
||||
{{:assign
|
||||
var="equipments.%s.stock"|args:$mvt.equipment
|
||||
from=stock}}
|
||||
{{elseif $type_mvt == 'temporaire'}}
|
||||
{{:assign exterieur="%d+%d"|math:$exterieur:$mvt.amount}}
|
||||
{{:assign
|
||||
var="equipments.%s.exterieur"|args:$mvt.equipment
|
||||
from=exterieur}}
|
||||
{{elseif $type_mvt == 'retour'}}
|
||||
{{:assign nonproprio="%d-%d"|math:$nonproprio:$mvt.amount}}
|
||||
{{:assign
|
||||
var="equipments.%s.nonproprio"|args:$mvt.equipment
|
||||
from=nonproprio}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/select}}
|
||||
|
||||
{{/load}}
|
||||
|
||||
{{* grouper les résultats par catégorie *}}
|
||||
{{#foreach from=$equipments key="eqpmt_key" item="eqpmt"}}
|
||||
{{:assign
|
||||
var="cumul_mvt.%s.eqpmt.%s"|args:$eqpmt.category:$eqpmt_key
|
||||
value=$eqpmt}}
|
||||
{{/foreach}}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue