Compare commits
5 Commits
6a603d1713
...
c681b47e7f
Author | SHA1 | Date | |
---|---|---|---|
c681b47e7f | |||
f8e5d43888 | |||
0110cf277a | |||
bcb8cd581d | |||
300f9b8248 |
@ -21,17 +21,17 @@
|
||||
},
|
||||
"stock": {
|
||||
"description": "Quantité en stock",
|
||||
"type" : "integer",
|
||||
"type" : ["integer", "null"],
|
||||
"minimum": 0
|
||||
},
|
||||
"out": {
|
||||
"description": "Quantité sortie temporairement",
|
||||
"type" : "integer",
|
||||
"type" : ["integer", "null"],
|
||||
"minimum": 0
|
||||
},
|
||||
"notowned": {
|
||||
"description": "Quantité présente temporairement",
|
||||
"type" : "integer",
|
||||
"type" : ["integer", "null"],
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
|
@ -119,18 +119,21 @@
|
||||
{{:assign var="quantites.%s.nonproprio"|args:$id value=$nonproprio}}
|
||||
{{/load}}
|
||||
|
||||
<nav class="tabs">
|
||||
<aside>
|
||||
{{if $_GET.prop}}
|
||||
{{if $equipment.stock > 0}}
|
||||
{{:linkbutton label="Sortie" shape="minus" href="mouvements/sorties/stock_disponible.html?key=%s"|args:$_GET.key target="_dialog"}}
|
||||
{{/if}}
|
||||
{{if $current != "archives"}}
|
||||
<nav class="tabs">
|
||||
<aside>
|
||||
{{if $_GET.prop}}
|
||||
{{if $equipment.stock > 0}}
|
||||
{{:linkbutton label="Sortie" shape="minus" href="mouvements/sorties/stock_disponible.html?key=%s"|args:$_GET.key target="_dialog"}}
|
||||
{{/if}}
|
||||
{{:linkbutton label="Entrée" shape="plus" href="mouvements/entrees/repertorie.html?key=%s"|args:$_GET.key target="_dialog"}}
|
||||
{{else}}
|
||||
{{:linkbutton label="Entrée" shape="plus" href="mouvements/entrees/repertorie.html?key=%s"|args:$_GET.key target="_dialog"}}
|
||||
{{else}}
|
||||
{{:linkbutton label="Entrée" shape="plus" href="mouvements/entrees/repertorie.html?key=%s"|args:$_GET.key target="_dialog"}}
|
||||
{{/if}}
|
||||
</aside>
|
||||
</nav>
|
||||
{{/if}}
|
||||
</aside>
|
||||
</nav>
|
||||
{{/if}}
|
||||
|
||||
{{* lister tous les mouvements du matériel passé en paramètre *}}
|
||||
{{if $_GET.prop}}
|
||||
{{* calculer la quantité temporairement l'extérieur de chaque matériel *}}
|
||||
@ -260,8 +263,7 @@
|
||||
}}
|
||||
{{:assign var="present.%s"|args:$mvt_key value=$present}}
|
||||
{{/select}}
|
||||
{{*:debug present=$present*}}
|
||||
{{*:debug direction=$direction type_mvt=$type_mvt in=$in*}}
|
||||
|
||||
{{#list
|
||||
type="movement"
|
||||
select="$$.date AS 'Date';
|
||||
|
@ -48,7 +48,7 @@
|
||||
(SELECT $$.stock - $$.out) AS 'Disponible'
|
||||
"
|
||||
type="equipment"
|
||||
where="$$.status <> 'archived' AND $$.stock != 0 AND %s"|args:$condition
|
||||
where="$$.status <> 'archived' AND $$.stock NOT NULL AND %s"|args:$condition
|
||||
order=1
|
||||
}}
|
||||
{{:assign var=cat_name from=categories.%s|args:$category}}
|
||||
|
@ -71,10 +71,10 @@
|
||||
{{:assign equipment_key=""|uuid}}
|
||||
{{if $type_mvt == 'définitif'}}
|
||||
{{:assign stock=$_POST.amount|intval}}
|
||||
{{:assign notowned=0}}
|
||||
{{:assign notowned=null}}
|
||||
{{elseif $type_mvt == 'temporaire'}}
|
||||
{{:assign notowned=$_POST.amount|intval}}
|
||||
{{:assign stock=0}}
|
||||
{{:assign stock=null}}
|
||||
{{/if}}
|
||||
{{:save
|
||||
key=$equipment_key
|
||||
|
@ -70,7 +70,7 @@
|
||||
{{:error message="La quantité (%s) doit être strictement positive !!"|args:$_POST.amount}}
|
||||
{{/if}}
|
||||
|
||||
{{* interdire date dans le futur *}}
|
||||
{{* vérifier la validité de la saisie *}}
|
||||
{{if $_POST.date|parse_date|strtotime > $now}}
|
||||
{{:error message="Impossible de saisir une date dans le futur (%s)"|args:$_POST.date}}
|
||||
{{/if}}
|
||||
@ -139,7 +139,6 @@
|
||||
de {{$equipment.name}} (qté : {{$mvt_new.amount}}) à la date du {{$mvt_new.date|date_short}} »
|
||||
</p>
|
||||
{{else}}
|
||||
|
||||
{{* calculer la nouvelle quantité du matériel *}}
|
||||
{{if $mvt_new.direction == "input"}}
|
||||
{{:assign var="type_mvt" from="config.input_nature.%s.type"|args:$_POST.operation}}
|
||||
@ -172,7 +171,6 @@
|
||||
out=$equipment.out
|
||||
notowned=$equipment.notowned
|
||||
}}
|
||||
|
||||
{{* vérification réussie : enregistrer le mouvement modifié *}}
|
||||
{{:assign mvt_key=""|uuid}}
|
||||
{{:save
|
||||
@ -216,8 +214,8 @@
|
||||
<form method="post" action="">
|
||||
<fieldset>
|
||||
<legend>Créer une copie de « {{$op_label}} {{$equipment.name}} (Catégorie : {{$category.name}}) »</legend>
|
||||
{{if $mvt_new.direction == "input"}}
|
||||
<dl>
|
||||
<dl>
|
||||
{{if $mvt_new.direction == "input"}}
|
||||
{{:input type="select" name="operation" label="Type" required=true options=$input_labels|sort default=$mvt_new.operation}}
|
||||
{{else}}
|
||||
{{:input type="select" name="operation" label="Type" required=true options=$output_labels|sort default=$mvt_new.operation}}
|
||||
@ -228,12 +226,11 @@
|
||||
{{:input
|
||||
type="list"
|
||||
name="user"
|
||||
label="Membre"
|
||||
label="Membre destinataire"
|
||||
default=$user
|
||||
target="!users/selector.php"
|
||||
multiple=true
|
||||
max=1
|
||||
help="dans le cas d'une sortie temporaire, il est possible d'associer un membre bénéficiaire"
|
||||
}}
|
||||
{{/if}}
|
||||
{{if $mvt_new.direction == "input"}}
|
||||
|
@ -87,6 +87,7 @@
|
||||
- insérer le mvt modifié à sa place par date croissante
|
||||
*}}
|
||||
{{:assign insere=false}}
|
||||
{{:assign entree_def=false}}
|
||||
{{#load
|
||||
where="
|
||||
$$.type = 'movement'
|
||||
@ -172,6 +173,24 @@
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{if $equipment.stock == 0}}
|
||||
{{* vérifier s'il y a au moins une entrée définitive *}}
|
||||
{{#foreach from=$config.input_nature key=key}}
|
||||
{{if $type == 'définitif'}}
|
||||
{{:assign var="input_types." value=$key}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{#foreach from=$movements_new}}
|
||||
{{if $operation|in:$input_types}}
|
||||
{{:assign entree_def=true}}
|
||||
{{:break}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{if ! $entree_def}}
|
||||
{{:assign var="equipment.stock" value=null}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{:save
|
||||
key=$equipment.key
|
||||
validate_schema="../equipment.schema.json"
|
||||
@ -238,12 +257,11 @@
|
||||
{{:input
|
||||
type="list"
|
||||
name="user"
|
||||
label="Membre"
|
||||
label="Membre destinataire"
|
||||
default=$user
|
||||
target="!users/selector.php"
|
||||
multiple=true
|
||||
max=1
|
||||
help="dans le cas d'une sortie temporaire, il est possible d'associer un membre bénéficiaire"
|
||||
}}
|
||||
{{/if}}
|
||||
{{if $mvt_new.direction == "input"}}
|
||||
|
@ -160,7 +160,11 @@
|
||||
temp_key=$_GET.key
|
||||
return=$mvt_key
|
||||
}}
|
||||
{{:redirect force="../historique.html?ok=1&key=%s&prop=1&msg=retour"|args:$mvt_new.equipment}}
|
||||
{{if $_GET.user == null}}
|
||||
{{:redirect force="../historique.html?ok=1&key=%s&prop=1&msg=retour"|args:$mvt_new.equipment}}
|
||||
{{else}}
|
||||
{{:redirect force="/admin/users/details.php?id=%s"|args:$_GET.user}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/form}}
|
||||
|
||||
|
@ -187,11 +187,10 @@
|
||||
{{:input
|
||||
type="list"
|
||||
name="user"
|
||||
label="Membre"
|
||||
label="Membre destinataire"
|
||||
target="!users/selector.php"
|
||||
multiple=true
|
||||
max=1
|
||||
help="dans le cas d'une sortie temporaire, il est possible d'associer un membre bénéficiaire"
|
||||
}}
|
||||
{{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
|
||||
</dl>
|
||||
|
@ -12,7 +12,7 @@
|
||||
{{/load}}
|
||||
|
||||
{{* trouver le matériel concerné par ce mouvement *}}
|
||||
{{#load type="equipment" where="key = :key" :key=$mvt_suppr.equipment assign="equipment"}}
|
||||
{{#load type="equipment" where="key = :key" :key=$mvt_suppr.equipment assign="curr_eqpmt"}}
|
||||
{{else}}
|
||||
{{:error message="Aucun matériel avec la clé « %s »"|args:$mvt_suppr.equipment}}
|
||||
{{/load}}
|
||||
@ -66,6 +66,7 @@
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/load}}
|
||||
|
||||
{{* suppression possible *}}
|
||||
{{if $type_operation == 'retour'}}
|
||||
{{#load type="link" where="$$.return = :key" :key=$_GET.key}}
|
||||
@ -98,45 +99,59 @@
|
||||
{{/if}}
|
||||
|
||||
{{* 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}}
|
||||
{{:assign mvt_ok=1}}
|
||||
{{#foreach from=$config.input_nature key=key}}
|
||||
{{if $type == 'définitif'}}
|
||||
{{:assign var="input_types." value=$key}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{#load type="movement" where="$$.equipment = :eqpmt_key" :eqpmt_key=$curr_eqpmt.key}}
|
||||
{{:assign mvt_ok=true}}
|
||||
{{if $operation|in:$input_types}}
|
||||
{{:assign entree_def=true}}
|
||||
{{:break}}
|
||||
{{/if}}
|
||||
{{/load}}
|
||||
|
||||
{{if $mvt_ok}}
|
||||
{{* calculer la nouvelle quantité du matériel *}}
|
||||
{{* calculer et mettre à jour la nouvelle quantité du matériel *}}
|
||||
{{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$mvt_suppr.direction:$mvt_suppr.operation}}
|
||||
{{if $mvt_suppr.direction == 'input'}}
|
||||
{{if $type_mvt == 'définitif'}}
|
||||
{{:assign var="equipment.stock" value="%d-%d"|math:$equipment.stock:$mvt_suppr.amount|intval}}
|
||||
{{:assign var="curr_eqpmt.stock" value="%d-%d"|math:$curr_eqpmt.stock:$mvt_suppr.amount|intval}}
|
||||
{{elseif $type_mvt == 'temporaire'}}
|
||||
{{:assign var="equipment.notowned" value="%d-%d"|math:$equipment.notowned:$mvt_suppr.amount|intval}}
|
||||
{{:assign var="curr_eqpmt.notowned" value="%d-%d"|math:$curr_eqpmt.notowned:$mvt_suppr.amount|intval}}
|
||||
{{elseif $type_mvt == 'retour'}}
|
||||
{{:assign var="equipment.out" value="%d+%d"|math:$equipment.out:$mvt_suppr.amount|intval}}
|
||||
{{:assign var="curr_eqpmt.out" value="%d+%d"|math:$curr_eqpmt.out:$mvt_suppr.amount|intval}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{if $type_mvt == 'définitif'}}
|
||||
{{:assign var="equipment.stock" value="%d+%d"|math:$equipment.stock:$mvt_suppr.amount|intval}}
|
||||
{{:assign var="curr_eqpmt.stock" value="%d+%d"|math:$curr_eqpmt.stock:$mvt_suppr.amount|intval}}
|
||||
{{elseif $type_mvt == 'temporaire'}}
|
||||
{{:assign var="equipment.out" value="%d-%d"|math:$equipment.out:$mvt_suppr.amount|intval}}
|
||||
{{:assign var="curr_eqpmt.out" value="%d-%d"|math:$curr_eqpmt.out:$mvt_suppr.amount|intval}}
|
||||
{{elseif $type_mvt == 'retour'}}
|
||||
{{:assign var="equipment.notowned" value="%d+%d"|math:$equipment.notowned:$mvt_suppr.amount|intval}}
|
||||
{{:assign var="curr_eqpmt.notowned" value="%d+%d"|math:$curr_eqpmt.notowned:$mvt_suppr.amount|intval}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{if $curr_eqpmt.stock == 0 && ! $entree_def}}
|
||||
{{:assign var="curr_eqpmt.stock" value=null}}
|
||||
{{/if}}
|
||||
|
||||
{{:save
|
||||
key=$equipment.key
|
||||
key=$curr_eqpmt.key
|
||||
validate_schema="../equipment.schema.json"
|
||||
type="equipment"
|
||||
category=$equipment.category
|
||||
name=$equipment.name
|
||||
category=$curr_eqpmt.category
|
||||
name=$curr_eqpmt.name
|
||||
status="available"
|
||||
stock=$equipment.stock
|
||||
out=$equipment.out
|
||||
notowned=$equipment.notowned
|
||||
stock=$curr_eqpmt.stock
|
||||
out=$curr_eqpmt.out
|
||||
notowned=$curr_eqpmt.notowned
|
||||
}}
|
||||
{{:redirect force="../historique.html?ok=1&key=%s&prop=%s&msg=suppression"|args:$mvt_suppr.equipment:$_GET.prop}}
|
||||
{{else}}
|
||||
{{* supprimer le matériel *}}
|
||||
{{:delete key=$equipment.key}}
|
||||
{{:delete key=$curr_eqpmt.key}}
|
||||
{{:redirect force="../index.html?ok=1&msg=supprmvtmat"}}
|
||||
{{/if}}
|
||||
{{/form}}
|
||||
@ -149,7 +164,7 @@
|
||||
|
||||
{{:delete_form
|
||||
legend="Supprimer ?"
|
||||
warning="Supprimer le mouvement « %s de %s (quantité : %d) en date du %s » ?"|args:$mvt_label:$equipment.name:$mvt_suppr.amount:$date_suppr
|
||||
warning="Supprimer le mouvement « %s de %s (quantité : %d) en date du %s » ?"|args:$mvt_label:$curr_eqpmt.name:$mvt_suppr.amount:$date_suppr
|
||||
}}
|
||||
|
||||
|
||||
|
@ -30,7 +30,9 @@
|
||||
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 OR json_extract(mvt.document, '$.operation') IN !input_types
|
||||
WHERE users.id = :user
|
||||
AND (json_extract(mvt.document, '$.operation') IN !output_types
|
||||
OR json_extract(mvt.document, '$.operation') IN !input_types)
|
||||
ORDER BY date
|
||||
;
|
||||
:user = $user.id
|
||||
@ -65,7 +67,7 @@
|
||||
{{if $direction == "output" && $type_mvt == "temporaire"}}
|
||||
{{:linkbutton
|
||||
label="Retour"
|
||||
href="%smouvements/output_return.html?key=%s&prop=0"|args:$module.url:$mvt_key
|
||||
href="%smouvements/output_return.html?key=%s&prop=0&user=%s"|args:$module.url:$mvt_key:$user.id
|
||||
shape="history"
|
||||
target="_dialog"}}
|
||||
{{/if}}
|
||||
@ -86,7 +88,8 @@
|
||||
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
|
||||
WHERE users.id = :user
|
||||
AND json_extract(mvt.document, '$.operation') IN !output_types
|
||||
ORDER BY date DESC
|
||||
;
|
||||
:user = $user.id
|
||||
|
Loading…
Reference in New Issue
Block a user