diff --git a/_calcul_dispo.html b/_calcul_dispo.html
new file mode 100644
index 0000000..9e015a0
--- /dev/null
+++ b/_calcul_dispo.html
@@ -0,0 +1,132 @@
+{{*
+ Calcul des entrées/sorties de matériels à une date donnée
+ paramètres :
+ - liste de catégories
+ - date
+*}}
+
+{{* liste des catégories *}}
+{{if $categories === null}}
+ {{#select
+ key
+ FROM module_data_equipment as cat
+ WHERE json_extract(cat.document, '$.type') = 'category'}}
+ {{:assign var="categories." value=$key}}
+ {{/select}}
+{{/if}}
+
+{{* date *}}
+{{if $date === null}}
+ {{:assign date=$now|date:"Y-m-d"}}
+{{/if}}
+
+{{* 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 'entrée' THEN json_extract(mvt.document, '$.inputNature')
+ WHEN 'sortie' THEN json_extract(mvt.document, '$.outputNature')
+ 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
+ var="equipments.%s.name"|args:$cat_key
+ value=$category}}
+ {{:assign
+ var="equipments.%s.eqpmt.%s.designation"|args:$cat_key:$eqpmt_key
+ value=$designation}}
+
+ {{* 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}}
+ {{: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}}
+ {{: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}}
+ {{:assign nonproprio=0}}
+ {{/if}}
+
+ {{if $direction === 'entrée'}}
+ {{* chercher le type d'entrée parmi les types de la config *}}
+ {{#foreach from=$module.config.inputNature 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 === 'sortie'}}
+ {{* chercher le type de sortie parmi les types de la config *}}
+ {{#foreach from=$module.config.outputNature 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}}
+{{/select}}
diff --git a/categories/list_equipment.html b/categories/list_equipment.html
index eb0f70b..76725a0 100644
--- a/categories/list_equipment.html
+++ b/categories/list_equipment.html
@@ -15,44 +15,7 @@
{{/if}}
-{{* afficher les matériels de la catégorie sélectionnée avec le stock, les entrées et les sorties *}}
- Il n'y a aucun matériel dans cette catégorie.
-
-{{else}}
- {{$designation}}
- {{$stock}}
- {{$sortie}}
- {{$dispo}}
-
-