inventaire : ajout tri par quantité

This commit is contained in:
Jean-Christophe Engel 2025-02-21 13:34:49 +01:00
parent 17052676df
commit 0be13c1c11
2 changed files with 200 additions and 131 deletions

View File

@ -4,19 +4,17 @@
inventaire des entrées/sorties des matériels permanents
*}}
{{* Extraire et compiler les infos de la base *}}
{{:include file="./_calcul_dispo.html" keep="categories,equipments"}}
{{* Sélecteur catégories *}}
{{:assign var="options." value="" label="Toutes les catégories" href="?prop=1"}}
{{#foreach from=$categories key=key item=name}}
{{#load type="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$key value=$name}}
{{:assign
var="options."
value=$key
label=$name
href="?cat_key=%s&prop=1"|args:$key
}}
{{/foreach}}
{{/load}}
<fieldset class="shortFormRight">
<legend>Filtrer par catégorie</legend>
@ -31,13 +29,29 @@
<p class="help">Inventaire des matériels propriété de l'association</p>
</div>
{{* Vérifier s'il y a au moins un matériel non archivé propriété de l'asso *}}
{{:assign mat_present=false}}
{{#foreach from=$equipments key=key item=eqpmt}}
{{if $eqpmt|has_key:"stock" && $eqpmt.status != "archived"}}
{{:assign mat_present=true}}
{{:break}}
{{/if}}
{{* types d'entrées et sorties *}}
{{:include file="./_get_config.html" keep="config"}}
{{#foreach from=$config.input_nature key=key}}
{{:assign var="types.input.%s."|args:$type value=$key}}
{{/foreach}}
{{#foreach from=$types.input key=key}}
{{:assign var=elem from="types.input.%s"|args:$key}}
{{:assign elem=$elem|quote_sql|implode:","}}
{{:assign elem="("|cat:$elem|cat:")"}}
{{:assign var="input_types.%s"|args:$key value=$elem}}
{{/foreach}}
{{#foreach from=$config.output_nature key=key}}
{{:assign var="types.output.%s."|args:$type value=$key}}
{{/foreach}}
{{#foreach from=$types.output key=key}}
{{:assign var=elem from="types.output.%s"|args:$key}}
{{:assign elem=$elem|quote_sql|implode:","}}
{{:assign elem="("|cat:$elem|cat:")"}}
{{:assign var="output_types.%s"|args:$key value=$elem}}
{{/foreach}}
{{* filtrer selon la catégorie *}}
@ -48,45 +62,74 @@
{{:assign condition="$$.category == %s"|args:$cat_key}}
{{/if}}
{{if $mat_present}}
{{#list
select="
$$.name AS 'Matériel' ;
(SELECT $$.name
FROM @TABLE as cat
WHERE cat.key = @TABLE.$$.category) AS "Catégorie" ;
"" AS 'Stock' ;
"" AS 'Sorti' ;
"" AS 'Dispo'
"
WHERE cat.key = @TABLE.$$.category) AS 'Catégorie' ;
(SELECT
SUM($$.amount)
FROM module_data_equipment AS mvt
WHERE
$$.type = 'movement'
AND
$$.operation IN %s
AND
$$.equipment = module_data_equipment.key
) -
(SELECT
COALESCE(SUM($$.amount), 0)
FROM module_data_equipment AS mvt
WHERE
$$.type = 'movement'
AND
$$.operation IN %s
AND
$$.equipment = module_data_equipment.key
) AS 'Stock' ;
(SELECT
COALESCE(SUM($$.amount), 0)
FROM module_data_equipment AS mvt
WHERE
$$.type = 'movement'
AND
$$.operation IN %s
AND
$$.equipment = module_data_equipment.key
) -
(SELECT
COALESCE(SUM($$.amount), 0)
FROM module_data_equipment AS mvt
WHERE
$$.type = 'movement'
AND
$$.operation IN %s
AND
$$.equipment = module_data_equipment.key
) AS 'Sorti' ;
'' AS 'Disponible'
"|args:$input_types.définitif:$output_types.définitif:$output_types.temporaire:$input_types.retour
type="equipment"
where="$$.status <> 'archived' AND %s"|args:$condition
group="col1 HAVING col3 NOT NULL"
order=1
}}
{{:assign var=eqpmt_key value=$key}}
{{:assign var=cat_name from=categories.%s|args:$category}}
{{:assign var=stock from="equipments.%s.stock"|args:$eqpmt_key}}
{{:assign var=exterieur from="equipments.%s.exterieur"|args:$eqpmt_key}}
{{:assign dispo="%d-%d"|math:$stock:$exterieur}}
{{:assign var=eqpmt from="equipments.%s"|args:$eqpmt_key}}
{{if ! $eqpmt|has_key:"stock"}}
{{* aucune unité permanente de ce matériel *}}
{{:continue}}
{{/if}}
{{:assign dispo="%d-%d"|math:$col3:$col4}}
<tr>
<td>{{$name}}</td>
<td>{{$cat_name}}</td>
<td class="num">{{$stock}}</td>
<td class="num">{{if $exterieur == null}}0{{else}}{{$exterieur}}{{/if}}</td>
<td class="num">{{$col3}}</td>
<td class="num">{{$col4}}</td>
<td class="num">{{$dispo}}</td>
<td class="actions">
{{if $exterieur > 0}}
{{if $col4 > 0}}
{{:linkbutton
label="Retour"
href="mouvements/entrees/retour.html?key=%s"|args:$eqpmt_key
href="mouvements/entrees/retour.html?key=%s"|args:$key
shape="history"
target="_dialog"}}
{{/if}}
@ -94,26 +137,25 @@
{{:linkbutton
label="Sortie"
shape="minus"
href="mouvements/sorties/stock_disponible.html?key=%s"|args:$eqpmt_key
href="mouvements/sorties/stock_disponible.html?key=%s"|args:$key
target="_dialog"}}
{{/if}}
{{:linkbutton
label="Entrée"
shape="plus"
href="mouvements/entrees/repertorie.html?key=%s"|args:$eqpmt_key
href="mouvements/entrees/repertorie.html?key=%s"|args:$key
target="_dialog"}}
{{:linkbutton
label="Historique"
href="historique.html?key=%s&prop=1"|args:$eqpmt_key
href="historique.html?key=%s&prop=1"|args:$key
shape="table"}}
{{:linkbutton
label="Modifier"
href="modifier_materiel.html?key=%s&prop=1&stock=%s"|args:$eqpmt_key:$stock
href="modifier_materiel.html?key=%s&prop=1&stock=%s"|args:$key:$col3
shape="edit"
target="_dialog"}}
</td>
</tr>
{{/list}}
{{else}}
<p class="block alert">Aucun matériel.</p>
{{/if}}
{{/list}}

View File

@ -4,19 +4,17 @@
inventaire des entrées/sorties des matériels temporaires
*}}
{{* Extraire et compiler les infos de la base *}}
{{:include file="./_calcul_dispo.html" keep="categories,equipments"}}
{{* Sélecteur catégories *}}
{{:assign var="options." value="" label="Toutes les catégories" href="?prop=0"}}
{{#foreach from=$categories key=key item=name}}
{{#load type="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$key value=$name}}
{{:assign
var="options."
value=$key
label=$name
href="?cat_key=%s&prop=0"|args:$key
}}
{{/foreach}}
{{/load}}
<fieldset class="shortFormRight">
<legend>Filtrer par catégorie</legend>
@ -31,13 +29,29 @@
<p class="help shortFormLeft">Inventaire des matériels empruntés ou loués</p>
</div>
{{* Vérifier s'il y a au moins un matériel non propriété de l'asso *}}
{{:assign mat_present=false}}
{{#foreach from=$equipments key=key item=eqpmt}}
{{if $eqpmt|has_key:"nonproprio" && $eqpmt.status != "archived"}}
{{:assign mat_present=true}}
{{:break}}
{{/if}}
{{* types d'entrées et sorties *}}
{{:include file="./_get_config.html" keep="config"}}
{{#foreach from=$config.input_nature key=key}}
{{:assign var="types.input.%s."|args:$type value=$key}}
{{/foreach}}
{{#foreach from=$types.input key=key}}
{{:assign var=elem from="types.input.%s"|args:$key}}
{{:assign elem=$elem|quote_sql|implode:","}}
{{:assign elem="("|cat:$elem|cat:")"}}
{{:assign var="input_types.%s"|args:$key value=$elem}}
{{/foreach}}
{{#foreach from=$config.output_nature key=key}}
{{:assign var="types.output.%s."|args:$type value=$key}}
{{/foreach}}
{{#foreach from=$types.output key=key}}
{{:assign var=elem from="types.output.%s"|args:$key}}
{{:assign elem=$elem|quote_sql|implode:","}}
{{:assign elem="("|cat:$elem|cat:")"}}
{{:assign var="output_types.%s"|args:$key value=$elem}}
{{/foreach}}
{{* filtrer selon la catégorie *}}
@ -48,56 +62,69 @@
{{:assign condition="$$.category == %s"|args:$cat_key}}
{{/if}}
{{if $mat_present}}
{{#list
select="
$$.name AS 'Matériel' ;
(SELECT $$.name
FROM @TABLE as cat
WHERE cat.key = @TABLE.$$.category) AS "Catégorie" ;
"" AS 'Quantité'
"
WHERE cat.key = @TABLE.$$.category) AS 'Catégorie' ;
(SELECT
SUM($$.amount)
FROM module_data_equipment AS mvt
WHERE
$$.type = 'movement'
AND
$$.operation IN %s
AND
$$.equipment = module_data_equipment.key
) -
(SELECT
COALESCE(SUM($$.amount), 0)
FROM module_data_equipment AS mvt
WHERE
$$.type = 'movement'
AND
$$.operation IN %s
AND
$$.equipment = module_data_equipment.key
) AS 'Quantité'
"|args:$input_types.temporaire:$output_types.retour
type="equipment"
where="%s"|args:$condition
where="$$.status <> 'archived' AND %s"|args:$condition
group="col1 HAVING (col3 NOT NULL AND col3 > 0)"
order=1
}}
{{:assign var=eqpmt_key value=$key}}
{{:assign var=cat_name from=categories.%s|args:$category}}
{{:assign var=qte from="equipments.%s.nonproprio"|args:$eqpmt_key}}
{{if $qte == null}}
{{:continue}}
{{/if}}
{{:assign var=cat_name from=categories.%s|args:$category}}
<tr>
<td>{{$name}}</td>
<td>{{$cat_name}}</td>
<td class="num">{{$qte}}</td>
<td class="num">{{$col3}}</td>
<td class="actions">
{{if $qte > 0}}
{{if $col3 > 0}}
{{:linkbutton
label="Retour"
href="mouvements/sorties/emprunte.html?key=%s"|args:$eqpmt_key
href="mouvements/sorties/emprunte.html?key=%s"|args:$key
shape="history"
target="_dialog"}}
{{/if}}
{{:linkbutton
label="Entrée"
shape="plus"
href="mouvements/entrees/repertorie.html?key=%s"|args:$eqpmt_key
href="mouvements/entrees/repertorie.html?key=%s"|args:$key
target="_dialog"}}
{{:linkbutton
label="Historique"
href="historique.html?key=%s&prop=0"|args:$eqpmt_key
href="historique.html?key=%s&prop=0"|args:$key
shape="table"}}
{{:linkbutton
label="Modifier"
href="modifier_materiel.html?key=%s&prop=0"|args:$eqpmt_key
href="modifier_materiel.html?key=%s&prop=0"|args:$key
shape="edit"
target="_dialog"}}
</td>
</tr>
{{/list}}
{{else}}
<p class="block alert">Aucun matériel.</p>
{{/if}}
{{/list}}