Compare commits

..

4 Commits

19 changed files with 137 additions and 60 deletions

View File

@ -17,21 +17,21 @@
{{* le matériel paramètre *}}
{{#load key=$_GET.key}}
{{:assign var="equipments.%s.category"|args:$key value=$category}}
{{:assign var="equipments.%s.designation"|args:$key value=$designation}}
{{:assign var="equipments.%s.name"|args:$key value=$name}}
{{:assign var="in_equipments." value="'%s'"|args:$key}}
{{/load}}
{{elseif $_GET.cat_key}}
{{* matériels de la catégorie paramètre *}}
{{#load type="equipment" where="$$.category = :category_key" :category_key=$_GET.cat_key}}
{{:assign var="equipments.%s.category"|args:$key value=$category}}
{{:assign var="equipments.%s.designation"|args:$key value=$designation}}
{{:assign var="equipments.%s.name"|args:$key value=$name}}
{{:assign var="in_equipments." value="'%s'"|args:$key}}
{{/load}}
{{else}}
{{* tous les matériels *}}
{{#load type="equipment"}}
{{:assign var="equipments.%s.category"|args:$key value=$category}}
{{:assign var="equipments.%s.designation"|args:$key value=$designation}}
{{:assign var="equipments.%s.name"|args:$key value=$name}}
{{:assign var="in_equipments." value="'%s'"|args:$key}}
{{/load}}
{{/if}}

View File

@ -3,7 +3,7 @@
<nav class="tabs">
{{if $current == 'inventaire'}}
<aside>
{{if $subcurrent == null && $cat == 0}}
{{if $subsubcurrent == null && $cat == 0}}
{{:linkbutton label="Ajouter une catégorie" shape="plus" href="categories/add_category.html" target="_dialog"}}
{{else}}
{{:linkbutton label="Ajouter un nouveau matériel" shape="plus" href="mouvements/ajouter_entree.html" target="_dialog"}}
@ -13,6 +13,7 @@
<ul>
<li {{if $current == 'inventaire'}} class="current"{{/if}}><a href="{{$module.url}}index.html?prop=1">Inventaire</a></li>
<li {{if $current == 'historique'}} class="current"{{/if}}><a href="{{$module.url}}global_history.html">Historique</a></li>
<li {{if $current == 'config'}} class="current"{{/if}}><a href="{{$module.url}}categories/index.html">Configuration</a></li>
</ul>
@ -22,9 +23,9 @@
<li {{if $subcurrent == 'nonproprio'}} class="current"{{/if}}><a href="{{$module.url}}index.html?prop=0">Matériels temporaires</a></li>
</ul>
{{if $subsubcurrent == 'mouvements'}}
{{if $subsubcurrent == 'historique'}}
<ul class="sub">
<li class="title"><strong>Mouvements de {{$eqpmt}} ({{$category}})</strong></li>
<li class="title"><strong>Historique — {{$eqpmt}} ({{$category}})</strong></li>
</ul>
{{/if}}
{{elseif $current == 'config'}}

View File

@ -10,10 +10,10 @@
"description": "Clé de la catégorie",
"type": "string"
},
"designation": {
"name": {
"description": "Désignation du matériel",
"type": "string"
}
},
"required": ["type", "category", "designation"]
"required": ["type", "category", "name"]
}

41
global_history.html Normal file
View File

@ -0,0 +1,41 @@
{{* -*- brindille -*- *}}
{{*
Afficher l'historique de tous les mouvements
*}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
{{:include file="./_nav.html" current="historique"}}
{{* récupérer la config des entrées/sorties *}}
{{:include file="./_get_config.html" keep="config"}}
{{* lister tous les mouvements *}}
{{#list
type="movement"
select="$$.date AS 'Date';
CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement';
$$.operation AS 'Opération';
(SELECT $$.name
FROM @TABLE AS b
WHERE b.key = @TABLE.$$.equipment) AS 'Matériel' ;
$$.amount AS 'Quantité';
$$.comment AS 'Commentaire'"
order=1
desc=true
}}
{{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}}
<tr>
<td>{{$date|date_short}}</td>
<td>{{$col2}}</td>
<td>{{$op_label}}</td>
<td>{{$col4}}</td>
<td class="num">{{$amount}}</td>
<td>{{$comment}}</td>
<td></td>
</tr>
{{/list}}
{{:admin_footer}}

View File

@ -26,11 +26,11 @@
{{#load type="category" where="key = :cle" :cle=$equipment.category assign="category"}}
{{else}}
{{:error message="Le matériel %s n'appartient à aucune catégorie"|args:$equipment.designation}}
{{:error message="Le matériel %s n'appartient à aucune catégorie"|args:$equipment.name}}
{{/load}}
{{:admin_header title="Gestion des matériels" current="module_equipment"}}
{{:include file="./_nav.html" current="inventaire" subcurrent=$proprio subsubcurrent="mouvements" eqpmt=$equipment.designation category=$category.name}}
{{:include file="./_nav.html" current="inventaire" subcurrent=$proprio subsubcurrent="historique" eqpmt=$equipment.name category=$category.name}}
{{if $_GET.ok}}
{{if $_GET.msg == "modification"}}

View File

@ -43,7 +43,7 @@
{{if $mat_present}}
{{#list
select="
$$.designation AS 'Matériel' ;
$$.name AS 'Matériel' ;
"" AS 'Catégorie' ;
"" AS 'Stock' ;
"" AS 'Sorti' ;
@ -69,7 +69,7 @@
{{/if}}
<tr>
<td>{{$designation}}</td>
<td>{{$name}}</td>
<td>{{$cat_name}}</td>
<td class="num">{{$stock}}</td>
<td class="num">{{if $exterieur == null}}0{{else}}{{$exterieur}}{{/if}}</td>
@ -95,7 +95,7 @@
href="mouvements/entrees/repertorie.html?key=%s"|args:$eqpmt_key
target="_dialog"}}
{{:linkbutton
label="Mouvements"
label="Historique"
href="historique.html?key=%s&prop=1"|args:$eqpmt_key
shape="table"}}
{{:linkbutton

View File

@ -43,7 +43,7 @@
{{if $mat_present}}
{{#list
select="
$$.designation AS 'Matériel' ;
$$.name AS 'Matériel' ;
"" AS 'Catégorie' ;
"" AS 'Quantité'
"
@ -65,7 +65,7 @@
{{/if}}
<tr>
<td>{{$designation}}</td>
<td>{{$name}}</td>
<td>{{$cat_name}}</td>
<td class="num">{{$qte}}</td>
<td class="actions">
@ -82,7 +82,7 @@
href="mouvements/entrees/repertorie.html?key=%s"|args:$eqpmt_key
target="_dialog"}}
{{:linkbutton
label="Mouvements"
label="Historique"
href="historique.html?key=%s&prop=0"|args:$eqpmt_key
shape="table"}}
{{:linkbutton

View File

@ -26,9 +26,9 @@
{{* catégorie change : vérifier le nom *}}
{{#load key=$equipment_key}}
{{if $designation|trim|tolower != $_POST.designation|trim|tolower}}
{{if $name|trim|tolower != $_POST.name|trim|tolower}}
{{* le nom change => vérifier l'existence d'un matériel du même nom *}}
{{#load type="equipment" where="$$.designation = :name" :name=$_POST.designation|trim|tolower|ucfirst limit=1}}
{{#load type="equipment" where="$$.name = :name" :name=$_POST.name|trim|tolower|ucfirst limit=1}}
{{:assign chgt_ok=false}}
{{/load}}
{{else}}
@ -38,7 +38,7 @@
{{else}}
{{* catégorie ne change pas => vérifier le nom *}}
{{#load type="equipment" where="$$.designation = :name" :name=$_POST.designation|trim|tolower|ucfirst limit=1}}
{{#load type="equipment" where="$$.name = :name" :name=$_POST.name|trim|tolower|ucfirst limit=1}}
{{:assign chgt_ok=false}}
{{/load}}
{{/if}}
@ -51,7 +51,7 @@
{{:save
key=$equipment_key
category=$category.key
designation=$_POST.designation|trim|tolower|ucfirst
name=$_POST.name|trim|tolower|ucfirst
}}
{{:redirect force="index.html?ok=1&msg=modification&prop=%s"|args:$_GET.prop}}
{{/form}}
@ -69,7 +69,7 @@
<legend>Modifier un matériel</legend>
<dl>
{{:input type="select" name="category" label="Catégorie" default=$default_category required=true options=$categories}}
{{:input type="text" name="designation" label="Désignation" default=$equipment.designation required=true}}
{{:input type="text" name="name" label="Désignation" default=$equipment.name required=true}}
</dl>
</fieldset>

View File

@ -29,16 +29,20 @@
{{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.quantite}}
{{/if}}
{{:assign post_mat=$_POST.designation|trim|tolower|ucfirst}}
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
{{* vérifier l'existence d'un matériel de même nom *}}
{{#load type="equipment" where="$$.designation = :name COLLATE U_NOCASE" :name=$_POST.designation|trim limit=1}}}}
{{#load type="equipment" where="$$.name = :name COLLATE U_NOCASE" :name=$_POST.name|trim limit=1}}}}
{{:assign equipment_key=$key}}
{{:assign var=nom_cat from="categories.%s"|args:$category}}
{{:assign present=true}}
{{/load}}
{{:assign var=post_cat from="categories.%s"|args:$_POST.category}}
{{:assign post_mat=$_POST.name|trim|tolower|ucfirst}}
{{if $present}}
{{* voir si le matériel existe dans une autre catégorie *}}
{{if $nom_cat != $post_cat}}
@ -55,7 +59,7 @@
validate_schema="../equipment.schema.json"
type="equipment"
category=$_POST.category
designation=$post_mat
name=$post_mat
}}
{{/if}}
@ -82,6 +86,7 @@
{{:assign prop=1}}
{{/if}}
{{:redirect force="../index.html?prop=%s&ok=1&msg=%s"|args:$prop:$msg}}
{{/form}}
{{:admin_header title="Entrée de matériel" current="module_equipment"}}
@ -104,7 +109,7 @@
<legend>Sélectionner une catégorie et indiquer le nom du nouveau matériel</legend>
<dl>
{{:input type="select" name="category" label="Catégorie" options=$categories required=true}}
{{:input type="text" name="designation" label="Désignation" required=true}}
{{:input type="text" name="name" label="Désignation" required=true}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40", rows="3" required=false}}
</dl>
</fieldset>

View File

@ -56,6 +56,11 @@
{{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}}
{{/if}}
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
{{* préparer le mouvement copié *}}
{{if $mvt_new.direction == "input"}}
{{:assign var="mvt_new.input_nature" value=$_POST.operation}}
@ -123,7 +128,7 @@
{{else}}
« {{$mvt_new.output_nature}}
{{/if}}
de {{$eqpmt.designation}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »
de {{$eqpmt.name}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »
</p>
{{else}}
{{* vérification réussie : enregistrer le mouvement modifié *}}
@ -143,7 +148,7 @@
{{/if}}
{{/form}}
{{:admin_header title="Dupliquer une %s"|args:$msg_direction current="module_equipment"}}
{{:admin_header title="Dupliquer un mouvement" current="module_equipment"}}
{{:form_errors}}
{{*
@ -157,7 +162,7 @@
{{* formulaire de copie du mouvement *}}
<form method="post" action="">
<fieldset>
<legend>Créer une copie de « {{$op_label}} {{$eqpmt.designation}} (Catégorie : {{$category.name}}) »</legend>
<legend>Créer une copie de « {{$op_label}} {{$eqpmt.name}} (Catégorie : {{$category.name}}) »</legend>
{{if $mvt_new.direction == "input"}}
<dl>
{{:input type="select" name="operation" label="Type" required=true options=$input_labels|sort default=$mvt_new.operation}}

View File

@ -7,7 +7,7 @@
{{if $quantite != 0}}
{{:assign
var="temporaire.%s.%s"|args:$cat_elem.name:$eqpmt_key
value="%s (quantité : %d)"|args:$eqpmt.designation:$quantite
value="%s (quantité : %d)"|args:$eqpmt.name:$quantite
}}
{{/if}}
{{/foreach}}

View File

@ -35,6 +35,11 @@
{{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.quantite}}
{{/if}}
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
{{* Enregistrer le mouvement *}}
{{:assign mvt_key=""|uuid}}
{{:save
@ -62,15 +67,15 @@
{{* formulaire de saisie d'une entrée de matériel *}}
<form method="post" action="">
<div class="informations">
<fieldset class="informations">
<legend>Informations matériel</legend>
<dl class="describe">
<dt>Matériel</dt>
<dd>{{$equipment.designation}}</dd>
<dd>{{$equipment.name}}</dd>
<dt>Catégorie</dt>
<dd>{{$category.name}}</dd>
</dl>
</div>
</fieldset>
<fieldset class="entree">
<legend>Ajouter une entrée de matériel</legend>
<dl>

View File

@ -22,9 +22,14 @@
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
{{* récupérer les infos du matériel *}}
{{#load type="equipment" key=$_GET.key assign="equipment"}}
{{:assign designation=$equipment.designation}}
{{:assign name=$equipment.name}}
{{/load}}
{{* Extraire et compiler les infos de la base *}}
@ -74,18 +79,17 @@
{{* formulaire d'entrée de matériel *}}
<form method="post" action="">
<div class="informations">
<fieldset class="informations">
<legend>Informations matériel</legend>
<dl class="describe">
<dt>Matériel</dt>
<dd>{{$equipment.designation}}</dd>
<dd>{{$equipment.name}}</dd>
<dt>Catégorie</dt>
<dd>{{$cat_name}}</dd>
<dt>Quantité sortie</dt>
<dd>{{$sorti}}</dd>
</dl>
<p><span class="alert">La quantité sortie est celle à la date du jour</span></p>
</div>
</fieldset>
<fieldset class="entree">
<legend>Ajouter un retour de matériel</legend>
<dl>

View File

@ -48,6 +48,11 @@
{{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}}
{{/if}}
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
{{* préparer le mouvement modifié *}}
{{if $mvt_new.direction == "input"}}
{{:assign var="mvt_new.input_nature" value=$_POST.operation}}
@ -114,9 +119,9 @@
{{:assign var="new_op_label" from="config.%s_nature.%s.label"|args:$mvt_new.direction:$mvt_new.operation}}
<p class="block error">
Modification demandée impossible :
« {{$op_label}} de {{$eqpmt.designation}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers
« {{$op_label}} de {{$eqpmt.name}} (qté : {{$amount_init}}) en date du {{$date_init}} » vers
« {{$new_op_label}}
de {{$eqpmt.designation}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »
de {{$eqpmt.name}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »
</p>
{{else}}
{{* vérification réussie : enregistrer le mouvement modifié *}}
@ -135,7 +140,7 @@
{{/if}}
{{/form}}
{{:admin_header title="Modifier une %s"|args:$msg_direction current="module_equipment"}}
{{:admin_header title="Modifier un mouvement" current="module_equipment"}}
{{:form_errors}}
{{*
@ -148,7 +153,7 @@
{{* formulaire de modification du mouvement *}}
<form method="post" action="">
<fieldset>
<legend>Modifier « {{$op_label}} {{$eqpmt.designation}} (Catégorie : {{$category.name}}) »</legend>
<legend>Modifier « {{$op_label}} {{$eqpmt.name}} (Catégorie : {{$category.name}}) »</legend>
{{if $mvt_new.direction == "input"}}
<dl>
{{:input type="select" name="operation" label="Type" required=true options=$input_labels|sort default=$mvt_new.operation}}

View File

@ -7,7 +7,7 @@
{{if $quantite != 0}}
{{:assign
var="temporaire.%s.%s"|args:$cat_elem.name:$eqpmt_key
value="%s (quantité : %d)"|args:$eqpmt.designation:$quantite
value="%s (quantité : %d)"|args:$eqpmt.name:$quantite
}}
{{/if}}
{{/foreach}}

View File

@ -22,6 +22,11 @@
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
{{* récupérer les infos du matériel *}}
{{#load type="equipment" key=$_GET.key assign="equipment"}}
{{/load}}
@ -113,18 +118,17 @@
{{* formulaire de sortie de matériel *}}
<form method="post" action="">
<div class="informations">
<fieldset class="informations">
<legend>Informations matériel</legend>
<dl class="describe">
<dt>Matériel</dt>
<dd>{{$equipment.designation}}</dd>
<dd>{{$equipment.name}}</dd>
<dt>Catégorie</dt>
<dd>{{$cat_name}}</dd>
<dt>Quantité présente</dt>
<dd>{{$present}}</dd>
</dl>
<p><span class="alert">La quantité présente est celle à la date du jour</span></p>
</div>
</fieldset>
<fieldset class="sortie">
<legend>Ajouter une sortie d'un matériel présent temporairement</legend>
<dl>

View File

@ -22,6 +22,11 @@
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{* interdire date dans le futur *}}
{{if $_POST.date|parse_date|strtotime > $now}}
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
{{/if}}
{{* récupérer les infos du matériel *}}
{{#load type="equipment" key=$_GET.key assign="equipment"}}
{{/load}}
@ -130,18 +135,17 @@
{{* formulaire de sortie de matériel *}}
<form method="post" action="">
<div class="informations">
<fieldset class="informations">
<legend>Informations matériel</legend>
<dl class="describe">
<dt>Matériel</dt>
<dd>{{$equipment.designation}}</dd>
<dd>{{$equipment.name}}</dd>
<dt>Catégorie</dt>
<dd>{{$cat_name}}</dd>
<dt>Quantité disponible</dt>
<dd class="num">{{$dispo}}</dd>
</dl>
<p><span class="alert">La quantité indiquée est celle à la date du jour</span></p>
</div>
</fieldset>
<fieldset class="sortie">
<legend>Ajouter une sortie</legend>
<dl>

View File

@ -106,27 +106,26 @@
{{* vérification réussie : supprimer le mouvement *}}
{{:delete key=$_GET.key}}
{{:assign libelle=$libelle|ucfirst}}
{{:assign var="msg" value="%s « %s (%d) en date du %s » supprimée"|args:$libelle:$equipment.designation:$mvt_suppr.amount:$date_suppr}}
{{:assign var="msg" value="%s « %s (%d) en date du %s » supprimée"|args:$libelle:$equipment.name:$mvt_suppr.amount:$date_suppr}}
{{* voir s'il reste des mouvements pour le matériel concerné par le mouvement supprimé *}}
{{#load type="movement" where="$$.equipment = :eqpmt_key" :eqpmt_key=$equipment.key}}
{{else}}
{{* supprimer le matériel *}}
{{:delete key=$equipment.key}}
{{:assign var="msg" value="%s - Matériel « %s » supprimé"|args:$msg:$equipment.designation}}
{{:assign var="msg" value="%s - Matériel « %s » supprimé"|args:$msg:$equipment.name}}
{{:redirect force="../index.html?ok=1&msg=%s"|args:$msg}}
{{/load}}
{{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=%s"|args:$mvt_suppr.equipment:$_GET.prop:$msg}}
{{/form}}
{{:admin_header title="Supprimer une %s"|args:$libelle current="module_equipment"}}
{{:admin_header title="Supprimer un mouvement" current="module_equipment"}}
{{:form_errors}}
{{:delete_form
legend="Supprimer cette %s ?"|args:$libelle
warning="Supprimer « %s (%d) en date du %s » ?"|args:$equipment.designation:$mvt_suppr.amount:$date_suppr
info="S'il ne reste aucun mouvement pour ce matériel, le matériel sera supprimé"
legend="Supprimer ?"
warning="Supprimer « %s (%d) en date du %s » ?"|args:$equipment.name:$mvt_suppr.amount:$date_suppr
}}

View File

@ -1,16 +1,14 @@
.informations {
margin-top : 0.5em;
margin-bottom : 0.2em;
padding : 0.5em;
text-align : left;
}
/*
.informations legend {
font-weight: bold;
border-bottom : solid 1px;
margin-bottom : 0.5em;
}
*/
.informations dt::after {
content: ' :';
}
@ -21,4 +19,10 @@
.informations dl.describe > dt {
flex: 0 0 10rem;
margin-right: 0;
}
.informations dl.describe > dd {
margin-top : 0;
margin-left : 0;
}