Compare commits

..

3 commits

Author SHA1 Message Date
Jean-Christophe Engel
7ae5860c18 Modif droits pour ajout fichier 2026-02-10 14:53:27 +01:00
Jean-Christophe Engel
71646c9dcd Paramétrisation nom table dans les requêtes 2026-01-27 17:00:24 +01:00
Jean-Christophe Engel
a2c343956c Amélioration filtre par catégorie 2026-01-22 10:44:51 +01:00
20 changed files with 362 additions and 962 deletions

View file

@ -16,7 +16,7 @@
{{:assign var="nature" from="module.config.%s_nature"|args:$direction}} {{:assign var="nature" from="module.config.%s_nature"|args:$direction}}
{{if $nature != null}} {{if $nature != null}}
{{#foreach from=$nature item="elem"}} {{#foreach from=$nature item="elem"}}
{{:assign var="item" label=$label type=$type fee=$fee}} {{:assign var="item" label=$label type=$type}}
{{:assign var="config.%s_nature.%s"|args:$direction:$key value=$item}} {{:assign var="config.%s_nature.%s"|args:$direction:$key value=$item}}
{{/foreach}} {{/foreach}}
{{else}} {{else}}

View file

@ -1,56 +1,40 @@
{{* -*- brindille -*- *}} {{* -*- brindille -*- *}}
{{* {{*
Inventaire des matériels en stock dans l'association inventaire des entrées/sorties des matériels permanents
*}} *}}
{{* filtrer selon la catégorie *}} {{* filtrer selon la catégorie *}}
{{if $_GET.cat_key == null}} {{if $_GET.cat_key == null}}
{{:assign selected_category=$module.config.stock_cat_key}} {{:assign selected_category=$module.config.stock_cat_key}}
{{if $module.config.stock_cat_key != null}}
{{:assign cat_key=$selected_category|quote_sql}}
{{/if}}
{{elseif $_GET.cat_key == -1}} {{elseif $_GET.cat_key == -1}}
{{:assign selected_category=null}} {{:assign selected_category=null}}
{{:save key="config" stock_cat_key=null}} {{:save key="config" stock_cat_key=null}}
{{else}} {{else}}
{{:assign selected_category=$_GET.cat_key}} {{:assign selected_category=$_GET.cat_key}}
{{:assign cat_key=$selected_category|quote_sql}}
{{:save key="config" stock_cat_key=$selected_category}} {{:save key="config" stock_cat_key=$selected_category}}
{{/if}} {{/if}}
{{* condition de filtrage *}} {{* condition de filtrage *}}
{{if $selected_category != null}} {{if $selected_category != null}}
{{:assign cat_key=$selected_category|quote_sql}}
{{:assign cat_condition="$$.category = %s"|args:$cat_key}} {{:assign cat_condition="$$.category = %s"|args:$cat_key}}
{{else}} {{else}}
{{:assign cat_condition="1"}} {{:assign cat_condition="1"}}
{{/if}} {{/if}}
{{* filtrer selon appartenance *}} {{* Sélecteur catégories *}}
{{if $_GET.prop == null}} {{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1&prop=1"}}
{{:assign selected_prop=$module.config.stock_prop}}
{{elseif $_GET.prop == -1}}
{{:assign selected_prop=null}}
{{:save key="config" stock_prop=null}}
{{else}}
{{:assign selected_prop=$_GET.prop}}
{{:save key="config" stock_prop=$_GET.prop}}
{{/if}}
{{if $selected_prop == null}}
{{:assign prop_condition="1"}}
{{elseif $selected_prop == 1}}
{{:assign prop_condition="$$.stock NOT NULL"}}
{{else}}
{{:assign prop_condition="$$.notowned != 0"}}
{{/if}}
{{* sélecteurs de catégorie et d'appartenance *}}
{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}}
{{#load type="category" order="$$.name"}} {{#load type="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$key value=$name}} {{:assign var="categories.%s"|args:$key value=$name}}
{{:assign {{:assign
var="cat_options." var="cat_options."
value=$key value=$key
label=$name label=$name
href="?cat_key=%s"|args:$key href="?cat_key=%s&prop=1"|args:$key
}} }}
{{/load}} {{/load}}
@ -63,21 +47,8 @@
}} }}
</fieldset> </fieldset>
{{:assign var="prop_options." value="" label="Tous les matériels" href="?prop=-1"}}
{{:assign var="prop_options." value="1" label="Matériels propriété de l'association" href="?prop=1"}}
{{:assign var="prop_options." value="0" label="Matériels NON propriété de l'association" href="?prop=0"}}
<fieldset class="shortFormRight">
<legend>Filtrer par appartenance</legend>
{{:dropdown
title="Filtrer par appartenance"
options=$prop_options
value="%s"|args:$selected_prop
}}
</fieldset>
<div class="shortFormLeft"> <div class="shortFormLeft">
<p class="help">Inventaire des matériels présents dans l'association</p> <p class="help">Inventaire des matériels propriété de l'association</p>
</div> </div>
{{#list {{#list
@ -87,32 +58,22 @@
FROM @TABLE as cat FROM @TABLE as cat
WHERE cat.key = @TABLE.$$.category) AS 'Catégorie' ; WHERE cat.key = @TABLE.$$.category) AS 'Catégorie' ;
$$.stock AS 'Stock' ; $$.stock AS 'Stock' ;
(SELECT COALESCE($$.notowned, 0)) AS 'Temp' ;
(SELECT $$.stock + COALESCE($$.notowned, 0)) AS 'Total' ;
$$.out AS 'Sorti' ; $$.out AS 'Sorti' ;
(SELECT $$.stock - $$.out) AS 'Disponible' (SELECT $$.stock - $$.out) AS 'Disponible'
" "
type="equipment" type="equipment"
where="$$.status <> 'archived' AND %s AND %s"|args:$cat_condition:$prop_condition where="$$.status <> 'archived' AND $$.stock NOT NULL AND %s"|args:$cat_condition
order=1 order=1
}} }}
{{:assign var=cat_name from=categories.%s|args:$category}} {{:assign var=cat_name from=categories.%s|args:$category}}
<tr> <tr>
{{if $selected_prop == null}} <td>{{:link href="equipment_history.html?key=%s&prop=1"|args:$key" label=$name}}</td>
{{:assign prop=""}}
{{else}}
{{:assign prop="&prop=%s"|args:$selected_prop}}
{{/if}}
<td>{{:link href="equipment_history.html?key=%s&prop=%s"|args:$key:$selected_prop" label=$name}}</td>
<td>{{$cat_name}}</td> <td>{{$cat_name}}</td>
<td class="num">{{$stock}}</td> <td class="num">{{$stock}}</td>
<td class="num">{{$col4}}</td>
<td class="num">{{$col5}}
<td class="num">{{$out}}</td> <td class="num">{{$out}}</td>
<td class="num">{{$col7}}</td> <td class="num">{{$col5}}</td>
<td class="actions"> <td class="actions">
{{* {{if $col5 > 0}}
{{if $col7 > 0}}
{{:linkbutton {{:linkbutton
label="Sortie" label="Sortie"
shape="minus" shape="minus"
@ -124,7 +85,6 @@
shape="plus" shape="plus"
href="movements/input_equipment.html?key=%s"|args:$key href="movements/input_equipment.html?key=%s"|args:$key
target="_dialog"}} target="_dialog"}}
*}}
{{:linkbutton {{:linkbutton
label="Historique" label="Historique"
href="equipment_history.html?key=%s&prop=1"|args:$key href="equipment_history.html?key=%s&prop=1"|args:$key

View file

@ -12,29 +12,27 @@
{{/if}} {{/if}}
<ul> <ul>
<li {{if $current == 'inventaire'}} class="current"{{/if}}><a href="{{$module.url}}index.html">Inventaire</a></li> <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 == 'historique'}} class="current"{{/if}}><a href="{{$module.url}}global_history.html">Historique</a></li>
<li {{if $current == 'prêt'}} class="current"{{/if}}><a href="{{$module.url}}loan_history.html?output_type=loan">Prêts</a></li>
<li {{if $current == 'location'}} class="current"{{/if}}><a href="{{$module.url}}loan_history.html?output_type=rent">Locations</a></li>
<li {{if $current == 'archives'}} class="current"{{/if}}><a href="{{$module.url}}archives.html">Archives</a></li> <li {{if $current == 'archives'}} class="current"{{/if}}><a href="{{$module.url}}archives.html">Archives</a></li>
<li {{if $current == 'config'}} class="current"{{/if}}><a href="{{$module.url}}categories/index.html">Configuration</a></li> <li {{if $current == 'config'}} class="current"{{/if}}><a href="{{$module.url}}categories/index.html">Configuration</a></li>
</ul> </ul>
{{if $current == 'inventaire'}} {{if $current == 'inventaire'}}
{{if $subcurrent == 'historique'}} <ul class="sub">
<li {{if $subcurrent == 'proprio'}} class="current"{{/if}}><a href="{{$module.url}}index.html?prop=1">Matériels permanents</a></li>
<li {{if $subcurrent == 'nonproprio'}} class="current"{{/if}}><a href="{{$module.url}}index.html?prop=0">Matériels temporaires</a></li>
</ul>
{{if $subsubcurrent == 'historique'}}
<ul class="sub"> <ul class="sub">
<li class="title"><strong>Historique — {{$eqpmt}} ({{$category}})</strong></li> <li class="title"><strong>Historique — {{$eqpmt}} ({{$category}})</strong></li>
</ul> </ul>
{{/if}} {{/if}}
{{elseif $current == 'prêt'}} {{elseif $current == 'historique'}}
<ul class="sub"> <ul class="sub">
<li {{if $subcurrent == 'encours'}} class="current"{{/if}}><a href="{{$module.url}}loan_history.html?output_type=loan">En cours</a></li> <li {{if $subcurrent == 'tous'}} class="current"{{/if}}><a href="{{$module.url}}global_history.html">Tous</a></li>
<li {{if $subcurrent == 'historique'}} class="current"{{/if}}><a href="{{$module.url}}loan_movements.html?output_type=loan">Historique</a></li> <li {{if $subcurrent == 'prêts'}} class="current"{{/if}}><a href="{{$module.url}}loan_history.html">Prêts</a></li>
</ul>
{{elseif $current == 'location'}}
<ul class="sub">
<li {{if $subcurrent == 'encours'}} class="current"{{/if}}><a href="{{$module.url}}loan_history.html?output_type=rent">En cours</a></li>
<li {{if $subcurrent == 'historique'}} class="current"{{/if}}><a href="{{$module.url}}loan_movements.html?output_type=rent">Historique</a></li>
</ul> </ul>
{{elseif $current == 'archives'}} {{elseif $current == 'archives'}}
{{if $subsubcurrent == 'historique'}} {{if $subsubcurrent == 'historique'}}

View file

@ -4,12 +4,34 @@
inventaire des entrées/sorties des matériels temporaires inventaire des entrées/sorties des matériels temporaires
*}} *}}
{{* filtrer selon la catégorie *}}
{{if $_GET.cat_key == null}}
{{:assign selected_category=$module.config.temp_cat_key}}
{{if $module.config.temp_cat_key != null}}
{{:assign cat_key=$selected_category|quote_sql}}
{{/if}}
{{elseif $_GET.cat_key == -1}}
{{:assign selected_category=null}}
{{:save key="config" temp_cat_key=null}}
{{else}}
{{:assign selected_category=$_GET.cat_key}}
{{:assign cat_key=$selected_category|quote_sql}}
{{:save key="config" temp_cat_key=$selected_category}}
{{/if}}
{{* condition de filtrage *}}
{{if $selected_category != null}}
{{:assign cat_condition="$$.category = %s"|args:$cat_key}}
{{else}}
{{:assign cat_condition="1"}}
{{/if}}
{{* Sélecteur catégories *}} {{* Sélecteur catégories *}}
{{:assign var="options." value="" label="Toutes les catégories" href="?prop=0"}} {{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1&prop=0"}}
{{#load type="category" order="$$.name"}} {{#load type="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$key value=$name}} {{:assign var="categories.%s"|args:$key value=$name}}
{{:assign {{:assign
var="options." var="cat_options."
value=$key value=$key
label=$name label=$name
href="?cat_key=%s&prop=0"|args:$key href="?cat_key=%s&prop=0"|args:$key
@ -20,8 +42,8 @@
<legend>Filtrer par catégorie</legend> <legend>Filtrer par catégorie</legend>
{{:dropdown {{:dropdown
title="Filtrer par catégorie" title="Filtrer par catégorie"
options=$options options=$cat_options
value="%s"|args:$_GET.cat_key value="%s"|args:$selected_category
}} }}
</fieldset> </fieldset>
@ -29,14 +51,6 @@
<p class="help">Inventaire des matériels empruntés ou loués</p> <p class="help">Inventaire des matériels empruntés ou loués</p>
</div> </div>
{{* filtrer selon la catégorie *}}
{{if $_GET.cat_key == null}}
{{:assign condition="1"}}
{{else}}
{{:assign cat_key=$_GET.cat_key|quote_sql}}
{{:assign condition="$$.category = %s"|args:$cat_key}}
{{/if}}
{{#list {{#list
select=" select="
$$.name AS 'Matériel' ; $$.name AS 'Matériel' ;
@ -46,7 +60,7 @@
$$.notowned AS 'Quantité' $$.notowned AS 'Quantité'
" "
type="equipment" type="equipment"
where="$$.status <> 'archived' AND $$.notowned != 0 AND %s"|args:$condition where="$$.status <> 'archived' AND $$.notowned != 0 AND %s"|args:$cat_condition
order=1 order=1
}} }}
{{:assign var=cat_name from=categories.%s|args:$category}} {{:assign var=cat_name from=categories.%s|args:$category}}

View file

@ -9,30 +9,11 @@
<p class="block confirm">Matériel remis en service</p> <p class="block confirm">Matériel remis en service</p>
{{/if}} {{/if}}
{{* filtrer selon la catégorie *}}
{{if $_GET.cat_key == null}}
{{:assign selected_category=$module.config.archive_cat_key}}
{{elseif $_GET.cat_key == -1}}
{{:assign selected_category=null}}
{{:save key="config" archive_cat_key=null}}
{{else}}
{{:assign selected_category=$_GET.cat_key}}
{{:save key="config" archive_cat_key=$selected_category}}
{{/if}}
{{* condition de filtrage *}}
{{if $selected_category == null}}
{{:assign cat_condition="1"}}
{{else}}
{{:assign cat_key=$selected_category|quote_sql}}
{{:assign cat_condition="$$.category == %s"|args:$cat_key}}
{{/if}}
{{* Sélecteur catégories *}} {{* Sélecteur catégories *}}
{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}} {{:assign var="options." value="" label="Toutes les catégories" href="?prop=1"}}
{{#load type="category" order="$$.name"}} {{#load type="category" order="$$.name"}}
{{:assign {{:assign
var="cat_options." var="options."
value=$key value=$key
label=$name label=$name
href="?cat_key=%s"|args:$key href="?cat_key=%s"|args:$key
@ -43,8 +24,8 @@
<legend>Filtrer par catégorie</legend> <legend>Filtrer par catégorie</legend>
{{:dropdown {{:dropdown
title="Filtrer par catégorie" title="Filtrer par catégorie"
options=$cat_options options=$options
value="%s"|args:$selected_category value="%s"|args:$_GET.cat_key
}} }}
</fieldset> </fieldset>
@ -52,6 +33,14 @@
<p class="help">Matériels qui ne sont plus dans l'association</p> <p class="help">Matériels qui ne sont plus dans l'association</p>
</div> </div>
{{* filtrer selon la catégorie *}}
{{if $_GET.cat_key == null}}
{{:assign condition="1"}}
{{else}}
{{:assign cat_key=$_GET.cat_key|quote_sql}}
{{:assign condition="$$.category == %s"|args:$cat_key}}
{{/if}}
{{* Liste des matériels archivés *}} {{* Liste des matériels archivés *}}
{{#list {{#list
select=" select="
@ -61,7 +50,7 @@
WHERE cat.key = @TABLE.$$.category) AS "Catégorie" WHERE cat.key = @TABLE.$$.category) AS "Catégorie"
" "
type="equipment" type="equipment"
where="$$.status='archived' AND %s"|args:$cat_condition where="$$.status='archived' AND %s"|args:$condition
order=1 order=1
}} }}

View file

@ -12,21 +12,14 @@
{{/if}} {{/if}}
{{* lecture config (défaut ou enregistrée) *}} {{* lecture config (défaut ou enregistrée) *}}
{{:include file="./_get_config.html" keep="config_defaut, config, directions"}} {{:include file="./_get_config.html" keep="config, directions"}}
{{* interdire la modification et la suppression des types de mouvement prédéfinis *}}
{{#foreach from=$directions key="direction"}}
{{:assign var="nature" from="config_defaut.%ss"|args:$direction}}
{{#foreach from=$nature item="elem"}}
{{:assign var="default_keys." value=$key}}
{{/foreach}}
{{/foreach}}
{{#foreach from=$directions key="direction" item="item"}} {{#foreach from=$directions key="direction" item="item"}}
{{* types de mouvements qui ne peuvent être supprimés *}} {{* types de mouvements qui ne peuvent être supprimés *}}
{{#load type="movement" where="$$.direction='%s'"|args:$direction group="$$.operation"}} {{#load type="movement" where="$$.direction='%s'"|args:$direction group="$$.operation"}}
{{:assign var="locked." value=$operation}} {{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}}
{{:assign var="locked_%ss."|args:$direction value=$op_label}}
{{/load}} {{/load}}
<h2 class="ruler">{{$item|ucfirst}}s</h2> <h2 class="ruler">{{$item|ucfirst}}s</h2>
@ -45,12 +38,11 @@
<td>{{$label}}</td> <td>{{$label}}</td>
<td>{{$type}}</td> <td>{{$type}}</td>
<td class="actions"> <td class="actions">
{{if ! $default_keys|has:$key && ! $locked|has:$key}} {{:assign var="locked" from="locked_%ss"|args:$direction}}
{{if ! $locked|has:$label}}
{{:linkbutton label="Supprimer" shape="delete" href="config/delete_movement_type.html?dir=%s&op_key=%s"|args:$direction:$key target="_dialog"}} {{:linkbutton label="Supprimer" shape="delete" href="config/delete_movement_type.html?dir=%s&op_key=%s"|args:$direction:$key target="_dialog"}}
{{/if}} {{/if}}
{{if ! $default_keys|has:$key}}
{{:linkbutton label="Modifier" shape="edit" href="config/modify_movement_type.html?dir=%s&op_key=%s"|args:$direction:$key target="_dialog"}} {{:linkbutton label="Modifier" shape="edit" href="config/modify_movement_type.html?dir=%s&op_key=%s"|args:$direction:$key target="_dialog"}}
{{/if}}
</td> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}

View file

@ -12,28 +12,18 @@
{{* lecture config *}} {{* lecture config *}}
{{:include file="../_get_config.html" keep="config, directions, config_defaut"}} {{:include file="../_get_config.html" keep="config, directions, config_defaut"}}
{{if ! $directions|has_key:$_GET.dir}}
{{:error message="Direction « %s » inconnue !"|args:$_GET.dir}}
{{/if}}
{{#form on="save"}} {{#form on="save"}}
{{if $_POST.output_fields.type == "temporaire"}}
{{* vérifier si le tarif a été choisi *}}
{{if $_POST.tarif == null}}
{{:error message="Vous n'avez pas choisi le tarif"}}
{{/if}}
{{/if}}
{{* vérifier s'il existe un libellé de même nom dans la même direction *}} {{* vérifier s'il existe un libellé de même nom dans la même direction *}}
{{#foreach from=$directions key="direction"}} {{#foreach from=$directions key="direction"}}
{{:assign var="nature" from="config.%s_nature"|args:$direction}} {{:assign var="nature" from="config.%s_nature"|args:$direction}}
{{#foreach from=$nature key="key" item="elem"}} {{#foreach from=$nature key="key"}}
{{:assign var="fields" from="_POST.%s_fields"|args:$_GET.dir}} {{:assign var="fields" from="_POST.%s_fields"|args:$_GET.dir}}
{{if $_GET.dir == $direction && $fields.label|trim|tolower == $elem.label|trim|tolower}} {{if $_GET.dir == $direction && $label|trim|tolower == $fields.label|trim|tolower}}
{{:error message="Le libellé « %s » est déjà présent"|args:$fields.label}} {{:error message="Ce libellé est déjà présent"}}
{{/if}} {{/if}}
{{:assign var="%s_nature"|args:$direction value=$elem}}
{{:assign var="%s_nature.key"|args:$direction value=$key}} {{:assign var="%s_nature.key"|args:$direction value=$key}}
{{:assign var="%s_nature.label"|args:$direction value=$label}}
{{:assign var="%s_nature.type"|args:$direction value=$type}}
{{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}} {{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}}
{{/foreach}} {{/foreach}}
@ -44,13 +34,6 @@
{{:assign var="%s_nature.key"|args:$direction value=""|uuid}} {{:assign var="%s_nature.key"|args:$direction value=""|uuid}}
{{:assign var="%s_nature.label"|args:$direction value=$newlabel}} {{:assign var="%s_nature.label"|args:$direction value=$newlabel}}
{{:assign var="%s_nature.type"|args:$direction from="_POST.%s_fields.type"|args:$direction}} {{:assign var="%s_nature.type"|args:$direction from="_POST.%s_fields.type"|args:$direction}}
{{if $_POST.output_fields != null}}
{{if $_POST.output_fields.type == "temporaire"}}
{{:assign var="output_nature.fee" value=$_POST.tarif}}
{{else}}
{{:assign var="output_nature.fee" value=null}}
{{/if}}
{{/if}}
{{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}} {{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -121,28 +104,28 @@
<fieldset> <fieldset>
<legend>Type de sortie</legend> <legend>Type de sortie</legend>
<dl> <dl>
{{:input type="select" <td>
label="Type de sortie" {{:input type="select"
name="output_fields[type]" label="Type de sortie"
options=$output_types name="output_fields[type]"
default=$type options=$output_types
required=true default=$type
default_empty="— Choisir un type —"}} required=true
{{:input default_empty="— Choisir un type —"}}
type="text" </td>
label="Libellé de la sortie" <td>
name="output_fields[label]" {{:input
type="text"
label="Libellé de la sortie"
name="output_fields[label]"
required=true}} required=true}}
<div id="tarif"> </td>
{{:input type="radio-btn" name="tarif" value="gratuit" label="Gratuit" required=true prefix_title="Tarification"}}
{{:input type="radio-btn" name="tarif" value="payant" label="Payant" required=true}}
</div>
</dl> </dl>
<div class="help block"> <div class="help block">
<h3>Signification du type de sortie</h3> <h3>Signification du type de sortie</h3>
<ul> <ul>
<li><b>définitif</b> : le matériel n'appartient plus à l'asso (ex : vente, casse, perte, vol, ...)</li> <li><b>définitif</b> : le matériel n'appartient plus à l'asso (ex : vente, casse, perte, vol, ...)</li>
<li><b>temporaire</b> : le matériel sort temporairement de l'asso qui en reste propriétaire (ex : location, prêt) ; dans ce cas, il faut indiquer si ce type de sortie est gratuit ou payant</li> <li><b>temporaire</b> : le matériel sort temporairement de l'asso qui en reste propriétaire (ex : location, prêt)</li>
<li><b>retour</b> : le matériel <strong>non propriété de l'asso</strong> est rendu à son propriétaire (ex : retour de location ou d'emprunt)</li> <li><b>retour</b> : le matériel <strong>non propriété de l'asso</strong> est rendu à son propriétaire (ex : retour de location ou d'emprunt)</li>
</ul> </ul>
</div> </div>
@ -152,23 +135,3 @@
</p> </p>
</form> </form>
{{/if}} {{/if}}
<script type="text/javascript">
// afficher/masquer le choix du tarif
function toggleTarif(event) {
const output_fieldstype = document.getElementById('f_output_fieldstype');
const value = output_fieldstype.value;
if (value == 'temporaire') {
g.toggle('#tarif', true);
} else {
g.toggle('#tarif', false);
}
}
toggleTarif();
(function () {
const output_fieldstype = document.getElementById('f_output_fieldstype');
output_fieldstype.addEventListener("change", toggleTarif);
})();
</script>

View file

@ -10,28 +10,16 @@
{{* lecture config (défaut ou enregistrée) *}} {{* lecture config (défaut ou enregistrée) *}}
{{:include file="../_get_config.html" keep="config_defaut, config, directions"}} {{:include file="../_get_config.html" keep="config, directions"}}
{{if ! $directions|has_key:$_GET.dir}}
{{:error message="Direction « %s » inconnue !"|args:$_GET.dir}}
{{/if}}
{{* interdire la suppression des types de mouvement prédéfinis *}}
{{:assign var="nature" from="config_defaut.%ss"|args:$_GET.dir}}
{{#foreach from=$nature item="elem"}}
{{:assign var="default_keys." value=$key}}
{{/foreach}}
{{if $default_keys|has:$_GET.op_key}}
{{:error message="Ce type de mouvement ne peut être supprimé"}}
{{/if}}
{{#form on="delete"}} {{#form on="delete"}}
{{#foreach from=$directions key="direction"}} {{#foreach from=$directions key="direction"}}
{{:assign var="nature" from="config.%s_nature"|args:$direction}} {{:assign var="nature" from="config.%s_nature"|args:$direction}}
{{#foreach from=$nature key="key" item="elem"}} {{#foreach from=$nature key="key"}}
{{if $_GET.dir == $direction && $key != $_GET.op_key || $_GET.dir != $direction}} {{if $_GET.dir == $direction && $key != $_GET.op_key || $_GET.dir != $direction}}
{{:assign var="%s_nature"|args:$direction value=$elem}}
{{:assign var="%s_nature.key"|args:$direction value=$key}} {{:assign var="%s_nature.key"|args:$direction value=$key}}
{{:assign var="%s_nature.label"|args:$direction value=$label}}
{{:assign var="%s_nature.type"|args:$direction value=$type}}
{{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}} {{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}

View file

@ -2,53 +2,27 @@
{{#restrict block=true section="accounting" level="write"}}{{/restrict}} {{#restrict block=true section="accounting" level="write"}}{{/restrict}}
{{* lecture config (défaut ou enregistrée) *}} {{:admin_header title="Configuration" current="module_equipment"}}
{{:include file="../_get_config.html" keep="loan_duration"}}
{{#form on="save"}} {{#form on="save"}}
{{* vérifier si les boutons ont été cochés *}}
{{#foreach from=$module.config.output_nature item="elem"}}
{{if $elem.type == 'temporaire'}}
{{if $_POST|has_key:$elem.key}}
{{:assign var="fee" from="_POST.%s"|args:$elem.key}}
{{:assign var="elem" key=$elem.key label=$elem.label type=$elem.type fee=$fee}}
{{else}}
{{:error message="Vous n'avez pas fait de choix pour la sortie « %s »"|args:$elem.label}}
{{/if}}
{{/if}}
{{:assign var="output_nature." value=$elem}}
{{/foreach}}
{{:save {{:save
key="config" key="config"
output_nature=$output_nature loan_duration=$_POST.loan_duration
loan_duration=$_POST.loan_duration
}} }}
{{/form}} {{/form}}
{{* barre de navigation *}}
{{:include file="../_nav.html" current="config" subcurrent="divers"}} {{:include file="../_nav.html" current="config" subcurrent="divers"}}
{{:admin_header title="Configuration" current="module_equipment"}}
{{:form_errors}}
{{if $_GET.ok}} {{if $_GET.ok}}
<p class="block confirm">Configuration enregistrée.</p> <p class="block confirm">Configuration enregistrée.</p>
{{/if}} {{/if}}
{{* lecture config (défaut ou enregistrée) *}}
{{:include file="../_get_config.html" keep="loan_duration"}}
<form method="post" action="" data-focus="1"> <form method="post" action="" data-focus="1">
<fieldset> <fieldset class="storage">
<legend>Sorties temporaires</legend>
<p class="help">Pour chaque sortie temporaire, indiquer si elle est gratuite ou payante</p>
<dl>
{{#foreach from=$module.config.output_nature}}
{{if $type == 'temporaire'}}
{{:input type="radio-btn" name=$key value="gratuit" label="Gratuit" required=true prefix_title=$label default=$fee}}
{{:input type="radio-btn" name=$key value="payant" label="Payant" required=true default=$fee}}
{{/if}}
{{/foreach}}
</dl>
</fieldset>
<fieldset>
<legend>Autres paramètres</legend> <legend>Autres paramètres</legend>
<dl> <dl>
{{:input type="number" name="loan_duration" label="Durée de prêt par défaut" min=1 required=true default=$loan_duration help="Durée en nombre de jours"}} {{:input type="number" name="loan_duration" label="Durée de prêt par défaut" min=1 required=true default=$loan_duration help="Durée en nombre de jours"}}

View file

@ -11,34 +11,21 @@
{{* lecture config (défaut ou enregistrée) *}} {{* lecture config (défaut ou enregistrée) *}}
{{:include file="../_get_config.html" keep="config, directions"}} {{:include file="../_get_config.html" keep="config, directions"}}
{{if ! $directions|has_key:$_GET.dir}}
{{:error message="Direction « %s » inconnue !"|args:$_GET.dir}}
{{/if}}
{{* interdire la modification des types de mouvement prédéfinis *}}
{{:assign var="nature" from="config_defaut.%ss"|args:$_GET.dir}}
{{#foreach from=$nature item="elem"}}
{{:assign var="default_keys." value=$key}}
{{/foreach}}
{{if $default_keys|has:$_GET.op_key}}
{{:error message="Ce type de mouvement ne peut être modifié"}}
{{/if}}
{{#form on="save"}} {{#form on="save"}}
{{#foreach from=$directions key="direction"}} {{#foreach from=$directions key="direction"}}
{{:assign var="nature" from="config.%s_nature"|args:$direction}} {{:assign var="nature" from="config.%s_nature"|args:$direction}}
{{#foreach from=$nature key="key" item="elem"}} {{#foreach from=$nature key="key"}}
{{if $_GET.dir == $direction && $_POST.name|trim|tolower == $elem.label|trim|tolower}}
{{:error message="Le libellé « %s » est déjà présent"|args:$_POST.name}}
{{/if}}
{{if $_GET.dir == $direction && $key == $_GET.op_key}}
{{:assign label=$_POST.name|trim}}
{{else}}
{{:assign label=$elem.label}}
{{/if}}
{{:assign var="%s_nature"|args:$direction value=$elem}}
{{:assign var="%s_nature.label"|args:$direction value=$label}}
{{:assign var="%s_nature.key"|args:$direction value=$key}} {{:assign var="%s_nature.key"|args:$direction value=$key}}
{{if $_GET.dir == $direction}}
{{if $key == $_GET.op_key}}
{{:assign var="%s_nature.label"|args:$direction value=$_POST.name|trim}}
{{else}}
{{:assign var="%s_nature.label"|args:$direction value=$label}}
{{/if}}
{{else}}
{{:assign var="%s_nature.label"|args:$direction value=$label}}
{{/if}}
{{:assign var="%s_nature.type"|args:$direction value=$type}}
{{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}} {{:assign var="%s_natures."|args:$direction from="%s_nature"|args:$direction}}
{{/foreach}} {{/foreach}}
{{/foreach}} {{/foreach}}

View file

@ -12,6 +12,14 @@
- msg : message de retour - msg : message de retour
*}} *}}
{{* barre de navigation *}}
{{if $_GET.prop == 1}}
{{:assign proprio="proprio"}}
{{else}}
{{:assign proprio="nonproprio"}}
{{/if}}
{{:assign equipment_key=$_GET.key|trim}} {{:assign equipment_key=$_GET.key|trim}}
{{#load key=$equipment_key assign="equipment"}} {{#load key=$equipment_key assign="equipment"}}
{{else}} {{else}}
@ -25,13 +33,12 @@
{{:admin_header title="Gestion des matériels" custom_css="./style.css" current="module_equipment"}} {{:admin_header title="Gestion des matériels" custom_css="./style.css" current="module_equipment"}}
{{* barre de navigation *}}
{{if $_GET.current != null}} {{if $_GET.current != null}}
{{:assign current=$_GET.current}} {{:assign current=$_GET.current}}
{{else}} {{else}}
{{:assign current="inventaire"}} {{:assign current="inventaire"}}
{{/if}} {{/if}}
{{:include file="./_nav.html" current=$current subcurrent="historique" eqpmt=$equipment.name category=$category.name}} {{:include file="./_nav.html" current=$current subcurrent=$proprio subsubcurrent="historique" eqpmt=$equipment.name category=$category.name}}
{{if $_GET.ok}} {{if $_GET.ok}}
{{if $_GET.msg == "modification"}} {{if $_GET.msg == "modification"}}
@ -54,69 +61,34 @@
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="./_get_config.html" keep="config"}} {{:include file="./_get_config.html" keep="config"}}
{{* filtrer selon appartenance *}} {{* déterminer les types de mouvements selon l'affection du matériel *}}
{{if $_GET.prop == null}} {{#foreach from=$config.input_nature}}
{{:assign selected_prop=$module.config.eqpmt_hist_prop}} {{if $_GET.prop}}
{{elseif $_GET.prop == -1}}
{{:assign selected_prop=null}}
{{:save key="config" eqpmt_hist_prop=null}}
{{else}}
{{:assign selected_prop=$_GET.prop}}
{{:save key="config" eqpmt_hist_prop=$_GET.prop}}
{{/if}}
{{* déterminer les types de mouvements selon l'appartenance du matériel *}}
{{#foreach from=$config.input_nature key="key"}}
{{if $selected_prop == null}}
{{* les deux sortes de matériel *}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{if $type == 'temporaire'}}
{{:assign var="temp_inputs." value=$key|quote_sql}}
{{/if}}
{{elseif $selected_prop == 1}}
{{* matériel propriété de l'asso *}} {{* matériel propriété de l'asso *}}
{{if $type != 'temporaire'}} {{if $type != 'temporaire'}}
{{:assign var="mvt_keys." value=$key|quote_sql}} {{:assign var="input_types." value=$label}}
{{/if}} {{/if}}
{{else}} {{else}}
{{* matériel non propriété de l'asso *}} {{* matériel non propriété de l'asso *}}
{{if $type == 'temporaire'}} {{if $type == 'temporaire'}}
{{:assign var="mvt_keys." value=$key|quote_sql}} {{:assign var="input_types." value=$label}}
{{:assign var="temp_inputs." value=$key|quote_sql}}
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{#foreach from=$config.output_nature key="key"}} {{#foreach from=$config.output_nature}}
{{if $selected_prop == null}} {{if $_GET.prop}}
{{* les deux sortes de matériel *}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{if $type == "temporaire"}}
{{:assign var="temp_outputs." value=$key|quote_sql}}
{{/if}}
{{elseif $selected_prop == 1}}
{{* matériel propriété de l'asso *}} {{* matériel propriété de l'asso *}}
{{if $type != 'retour'}} {{if $type != 'retour'}}
{{:assign var="mvt_keys." value=$key|quote_sql}} {{:assign var="output_types." value=$label}}
{{if $type == "temporaire"}}
{{:assign var="temp_outputs." value=$key|quote_sql}}
{{/if}}
{{/if}} {{/if}}
{{else}} {{else}}
{{* matériel non propriété de l'asso *}} {{* matériel non propriété de l'asso *}}
{{if $type == 'retour'}} {{if $type == 'retour'}}
{{:assign var="mvt_keys." value=$key|quote_sql}} {{:assign var="output_types." value=$label}}
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{:assign key_cond=$mvt_keys|implode:","}}
{{:assign key_cond="("|cat:$key_cond|cat:")"}}
{{if $selected_prop == null}}
{{:assign prop_condition="1"}}
{{else}}
{{:assign prop_condition="$$.operation in %s"|args:$key_cond}}
{{/if}}
{{* calculer et mémoriser les quantités pour que le tri de la liste affiche les valeurs correctes *}} {{* calculer et mémoriser les quantités pour que le tri de la liste affiche les valeurs correctes *}}
{{:assign stock=0}} {{:assign stock=0}}
@ -150,10 +122,27 @@
{{:assign var="quantites.%s.nonproprio"|args:$id value=$nonproprio}} {{:assign var="quantites.%s.nonproprio"|args:$id value=$nonproprio}}
{{/load}} {{/load}}
{{if $selected_prop == null || $selected_prop}} {{if $current != "archives"}}
{{* calculer la quantité sortie temporairement de chaque matériel *}} <nav class="tabs">
{{:assign output_ops=$temp_outputs|implode:","}} <aside>
{{:assign output_ops="("|cat:$output_ops|cat:")"}} {{if $_GET.prop && $dispo_final > 0}}
{{:linkbutton label="Sortie" shape="minus" href="movements/output_equipment.html?key=%s"|args:$_GET.key target="_dialog"}}
{{/if}}
{{:linkbutton label="Entrée" shape="plus" href="movements/input_equipment.html?key=%s"|args:$_GET.key target="_dialog"}}
</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 *}}
{{#foreach from=$config.output_nature key=key}}
{{if $type == "temporaire"}}
{{:assign var="temp_outputs." value=$key|quote_sql}}
{{/if}}
{{/foreach}}
{{:assign operations=$temp_outputs|implode:","}}
{{:assign operations="("|cat:$operations|cat:")"}}
{{#select {{#select
mvt.key AS mvt_key, mvt.key AS mvt_key,
@ -167,17 +156,97 @@
GROUP by mvt.key GROUP by mvt.key
; ;
!table=$module.table !table=$module.table
!op = $output_ops !op = $operations
:eqpmt_key = $_GET.key :eqpmt_key = $_GET.key
}} }}
{{:assign var="reste.%s"|args:$mvt_key value=$reste}} {{:assign var="reste.%s"|args:$mvt_key value=$reste}}
{{/select}} {{/select}}
{{/if}}
{{if $selected_prop == null || ! $selected_prop}} {{#list
type="movement"
select="
($$.date || '_' || substr('000000' || id, -6, 6)) AS 'Date';
CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement';
$$.operation AS 'Opération';
$$.amount AS 'Quantité';
'' AS 'Stock';
'' AS 'Sorti';
'' AS 'Disponible';
CASE WHEN $$.user NOT NULL
THEN (SELECT %s AS nom FROM users WHERE id = $$.user)
ELSE ''
END AS 'Dépositaire';
CASE WHEN $$.storage NOT NULL
THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage)
ELSE ''
END AS 'Stockage';
'' AS 'Documents';
$$.transactions AS 'Écritures'
"|args:$config.user_fields.name_sql
equipment=$equipment_key
order=1
}}
{{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$direction:$operation}}
{{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}}
{{if $direction === "input" && $op_label|in:$input_types ||
$direction === "output"&& $op_label|in:$output_types
}}
{{:assign var="stock" from="quantites.%s.stock"|args:$id}}
{{:assign var="exterieur" from="quantites.%s.exterieur"|args:$id}}
{{:assign var="dispo" from="quantites.%s.dispo"|args:$id}}
{{:assign file_path="%s/%s/"|args:$module.storage_root:$key}}
{{:assign file_path=$file_path|cat:"%"}}
{{#select count(*) AS nb FROM files WHERE path LIKE :file_path ; :file_path=$file_path}}
{{:assign nb_files=$nb}}
{{/select}}
<tr>
<td>{{$date|date_short}}</td>
<td>{{$col2}}</td>
<td class="nosort">{{$op_label}}</td>
<td class="num">{{$amount}}</td>
<td class="num nosort">{{$stock}}</td>
<td class="num nosort">{{$exterieur}}</td>
<td class="num nosort">{{$dispo}}</td>
<td>{{:link href="/admin/users/details.php?id=%s"|args:$user label="%s"|args:$col8}}</td>
<td>{{$col9}}</td>
<td class="num nosort">{{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}}</td>
<td class="num">{{if $transactions|count > 0}}{{:icon shape="money"}}{{/if}}</td>
<td class="actions">
{{if $current != "archives"}}
{{if $direction == "output" && $type_mvt == "temporaire"}}
{{:assign var="temp_ext" from="reste.%s"|args:$key}}
{{if $temp_ext != null && $temp_ext > 0}}
{{:linkbutton
label="Retour"
href="movements/output_return.html?key=%s&prop=%s"|args:$key:$_GET.prop
shape="reset"
target="_dialog"}}
{{/if}}
{{/if}}
{{:linkbutton
label="Détails"
href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$_GET.prop
shape="eye"
}}
{{/if}}
</td>
</tr>
{{/if}}
{{/list}}
{{if $dispo_final === 0}}
<span class="help">Il n'y a aucun matériel disponible, il n'est donc pas possible d'effectuer une sortie</span>
{{/if}}
{{else}}
{{* calculer la quantité présente temporairement de chaque matériel *}} {{* calculer la quantité présente temporairement de chaque matériel *}}
{{:assign input_ops=$temp_inputs|implode:","}} {{#foreach from=$config.input_nature key=key}}
{{:assign input_ops="("|cat:$input_ops|cat:")"}} {{if $type == "temporaire"}}
{{:assign var="temp_inputs." value=$key|quote_sql}}
{{/if}}
{{/foreach}}
{{:assign operations=$temp_inputs|implode:","}}
{{:assign operations="("|cat:$operations|cat:")"}}
{{#select {{#select
mvt.key AS mvt_key, mvt.key AS mvt_key,
@ -191,163 +260,71 @@
GROUP by mvt.key GROUP by mvt.key
; ;
!table=$module.table !table=$module.table
!op = $input_ops !op = $operations
:eqpmt_key = $_GET.key :eqpmt_key = $_GET.key
}} }}
{{:assign var="present.%s"|args:$mvt_key value=$present}} {{:assign var="present.%s"|args:$mvt_key value=$present}}
{{/select}} {{/select}}
{{/if}}
{{:assign {{#list
select_debut=" type="movement"
($$.date || '_' || substr('000000' || id, -6, 6)) AS 'Date'; select="($$.date || '_' || substr('000000' || id, -6, 6)) AS 'Date';
CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement'; CASE $$.direction WHEN 'input' THEN 'Entrée' WHEN 'output' THEN 'Sortie' END AS 'Mouvement';
$$.operation AS 'Opération'; $$.operation AS 'Opération';
$$.amount AS 'Quantité';" $$.amount AS 'Quantité';
}} "" as 'Présent';
{{:assign CASE WHEN $$.storage NOT NULL
select_prop="'' AS 'Stock'; THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage)
'' AS 'Sorti'; ELSE ''
'' AS 'Disponible';" END as 'Stockage';
}} '' AS 'Documents';
{{:assign $$.transactions AS 'Écritures'
select_depositaire="CASE WHEN $$.user NOT NULL "
THEN (SELECT %s AS nom FROM users WHERE id = $$.user) equipment=$equipment_key
ELSE '' order=1
END AS 'Dépositaire';
"|args:$config.user_fields.name_sql
}}
{{:assign
select_non_prop="'' as 'Temporaire';"
}}
{{:assign select_final="
CASE WHEN $$.storage NOT NULL
THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage)
ELSE ''
END AS 'Stockage';
'' AS 'Documents';
$$.transactions AS 'Écritures'
"
}}
{{if $selected_prop == null}}
{{:assign select_clause=$select_debut|cat:$select_prop|cat:$select_non_prop|cat:$select_depositaire|cat:$select_final}}
{{elseif $selected_prop}}
{{:assign select_clause=$select_debut|cat:$select_prop|cat:$select_depositaire|cat:$select_final}}
{{else}}
{{:assign select_clause=$select_debut|cat:$select_non_prop|cat:$select_final}}
{{/if}}
{{:assign var="prop_options." value="" label="Tous les matériels" href="?key=%s&prop=-1"|args:$_GET.key}}
{{:assign var="prop_options." value="1" label="Matériels propriété de l'association" href="?key=%s&prop=1"|args:$_GET.key}}
{{:assign var="prop_options." value="0" label="Matériels NON propriété de l'association" href="?key=%s&prop=0"|args:$_GET.key}}
<fieldset class="shortFormRight">
<legend>Filtrer par appartenance</legend>
{{:dropdown
title="Filtrer par appartenance"
options=$prop_options
value="%s"|args:$selected_prop
}} }}
</fieldset> {{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$direction:$col3}}
{{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}}
{{if $current != "archives"}} {{if $direction === "input" && $op_label|in:$input_types ||
<nav class="tabs"> $direction === "output"&& $op_label|in:$output_types
<aside> }}
{{if $dispo_final > 0 && $selected_prop == null || $selected_prop}} {{:assign var="stock" from="quantites.%s.nonproprio"|args:$id}}
{{:linkbutton label="Sortie" shape="minus" href="movements/output_equipment.html?key=%s"|args:$_GET.key target="_dialog"}}
{{/if}}
{{:linkbutton label="Entrée" shape="plus" href="movements/input_equipment.html?key=%s"|args:$_GET.key target="_dialog"}}
</aside>
</nav>
{{/if}}
{{* lister les mouvements du matériel passé en paramètre *}} {{:assign file_path="%s/%s/"|args:$module.storage_root:$key}}
{{#list {{:assign file_path=$file_path|cat:"%"}}
type="movement" {{#select count(*) AS nb FROM files WHERE path LIKE :file_path ; :file_path=$file_path}}
select="%s"|args:$select_clause {{:assign nb_files=$nb}}
where="%s"|args:$prop_condition {{/select}}
equipment=$equipment_key <tr>
order=1 <td>{{$date|date_short}}</td>
}} <td>{{$col2}}</td>
{{:assign var="type_mvt" from="config.%s_nature.%s.type"|args:$direction:$operation}} <td class="nosort">{{$op_label}}</td>
{{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}} <td class="num">{{$amount}}</td>
<td class="num nosort">{{$stock}}</td>
{{:assign var="stock" from="quantites.%s.stock"|args:$id}} <td>{{$col6}}</td>
{{:assign var="exterieur" from="quantites.%s.exterieur"|args:$id}} <td class="num nosort">{{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}}</td>
{{:assign var="dispo" from="quantites.%s.dispo"|args:$id}} <td class="num">{{if $transactions|count > 0}}{{:icon shape="money"}}{{/if}}</td>
{{:assign var="tempo" from="quantites.%s.nonproprio"|args:$id}} <td class="actions">
{{if $direction == "input" && $type_mvt == "temporaire"}}
{{:assign file_path="%s/%s/"|args:$module.storage_root:$key}} {{:assign var="temp_in" from="present.%s"|args:$key}}
{{:assign file_path=$file_path|cat:"%"}} {{if $temp_in != null && $temp_in > 0}}
{{#select count(*) AS nb FROM files WHERE path LIKE :file_path ; :file_path=$file_path}} {{:linkbutton
{{:assign nb_files=$nb}} label="Retour"
{{/select}} href="movements/input_return.html?key=%s&prop=%s"|args:$key:$_GET.prop
shape="reset"
{{if $selected_prop == null}} target="_dialog"}}
{{:assign user_details=$col9}} {{/if}}
{{:assign storage=$col10}}
{{elseif $selected_prop}}
{{:assign user_details=$col8}}
{{:assign storage=$col9}}
{{else}}
{{:assign user_details=$col6}}
{{:assign storage=$col6}}
{{/if}}
<tr>
<td>{{$date|date_short}}</td>
<td>{{$col2}}</td>
<td class="nosort">{{$op_label}}</td>
<td class="num">{{$amount}}</td>
{{if $selected_prop == null || $selected_prop}}
<td class="num nosort">{{$stock}}</td>
<td class="num nosort">{{$exterieur}}</td>
<td class="num nosort">{{$dispo}}</td>
{{/if}}
{{if $selected_prop == null || ! $selected_prop}}
<td class="num nosort">{{$tempo}}</td>
{{/if}}
{{if $selected_prop == null || $selected_prop}}
<td>{{:link href="/admin/users/details.php?id=%s"|args:$user label="%s"|args:$user_details}}</td>
{{/if}}
<td>{{$storage}}</td>
<td class="num nosort">{{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}}</td>
<td class="num">{{if $transactions|count > 0}}{{:icon shape="money"}}{{/if}}</td>
<td class="actions">
{{if $current != "archives"}}
{{if $direction == "output" && $type_mvt == "temporaire"}}
{{:assign var="temp_ext" from="reste.%s"|args:$key}}
{{if $temp_ext != null && $temp_ext > 0}}
{{:linkbutton
label="Retour"
href="movements/output_return.html?key=%s&prop=%s"|args:$key:$selected_prop
shape="reset"
target="_dialog"}}
{{/if}} {{/if}}
{{/if}} {{:linkbutton
{{if $direction == "input" && $type_mvt == "temporaire"}} label="Détails"
{{:assign var="temp_in" from="present.%s"|args:$key}} href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$_GET.prop
{{if $temp_in != null && $temp_in > 0}} shape="eye"
{{:linkbutton }}
label="Retour" </td>
href="movements/input_return.html?key=%s&prop=%s"|args:$key:$selected_prop </tr>
shape="reset" {{/if}}
target="_dialog"}} {{/list}}
{{/if}}
{{/if}}
{{:linkbutton
label="Détails"
href="movements/movement_details.html?key=%s&prop=%s&from=eh"|args:$key:$selected_prop
shape="eye"
}}
{{/if}}
</td>
</tr>
{{/list}}
{{if $dispo_final == 0 && $stock > 0 && $current != "archives"}}
<span class="help">Il n'y a aucun matériel disponible, il n'est donc pas possible d'effectuer une sortie</span>
{{/if}} {{/if}}
{{:admin_footer}} {{:admin_footer}}

View file

@ -8,7 +8,7 @@
{{:admin_header title="Historique des mouvements" custom_css="./style.css" current="module_equipment"}} {{:admin_header title="Historique des mouvements" custom_css="./style.css" current="module_equipment"}}
{{:include file="./_nav.html" current="historique"}} {{:include file="./_nav.html" current="historique" subcurrent="tous"}}
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
{{:include file="./_get_config.html" keep="config"}} {{:include file="./_get_config.html" keep="config"}}
@ -35,61 +35,7 @@
{{:assign cat_condition=1}} {{:assign cat_condition=1}}
{{/if}} {{/if}}
{{* filtrer selon appartenance *}} {{* Sélecteur catégories *}}
{{if $_GET.prop == null}}
{{:assign selected_prop=$module.config.hist_prop}}
{{elseif $_GET.prop == -1}}
{{:assign selected_prop=null}}
{{:save key="config" hist_prop=null}}
{{else}}
{{:assign selected_prop=$_GET.prop}}
{{:save key="config" hist_prop=$_GET.prop}}
{{/if}}
{{* déterminer les types de mouvements selon l'appartenance du matériel *}}
{{#foreach from=$config.input_nature key="key"}}
{{if $selected_prop == null}}
{{* les deux sortes de matériel *}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{elseif $selected_prop == 1}}
{{* matériel propriété de l'asso *}}
{{if $type != 'temporaire'}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{/if}}
{{else}}
{{* matériel non propriété de l'asso *}}
{{if $type == 'temporaire'}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{/if}}
{{/if}}
{{/foreach}}
{{#foreach from=$config.output_nature key="key"}}
{{if $selected_prop == null}}
{{* les deux sortes de matériel *}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{elseif $selected_prop == 1}}
{{* matériel propriété de l'asso *}}
{{if $type != 'retour'}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{/if}}
{{else}}
{{* matériel non propriété de l'asso *}}
{{if $type == 'retour'}}
{{:assign var="mvt_keys." value=$key|quote_sql}}
{{/if}}
{{/if}}
{{/foreach}}
{{:assign key_cond=$mvt_keys|implode:","}}
{{:assign key_cond="("|cat:$key_cond|cat:")"}}
{{if $selected_prop == null}}
{{:assign prop_condition="1"}}
{{else}}
{{:assign prop_condition="$$.operation in %s"|args:$key_cond}}
{{/if}}
{{* sélecteurs de catégorie et d'appartenance *}}
{{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}} {{:assign var="cat_options." value="" label="Toutes les catégories" href="?cat_key=-1"}}
{{#load type="category" order="$$.name"}} {{#load type="category" order="$$.name"}}
{{:assign var="categories.%s"|args:$key value=$name}} {{:assign var="categories.%s"|args:$key value=$name}}
@ -110,19 +56,6 @@
}} }}
</fieldset> </fieldset>
{{:assign var="prop_options." value="" label="Tous les matériels" href="?prop=-1"}}
{{:assign var="prop_options." value="1" label="Matériels propriété de l'association" href="?prop=1"}}
{{:assign var="prop_options." value="0" label="Matériels NON propriété de l'association" href="?prop=0"}}
<fieldset class="shortFormRight">
<legend>Filtrer par appartenance</legend>
{{:dropdown
title="Filtrer par appartenance"
options=$prop_options
value="%s"|args:$selected_prop
}}
</fieldset>
<div class="shortFormLeft"> <div class="shortFormLeft">
<p class="help">Historique de tous les mouvements de matériel</p> <p class="help">Historique de tous les mouvements de matériel</p>
</div> </div>
@ -145,9 +78,9 @@
THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage) THEN (SELECT $$.name FROM @TABLE as storage WHERE storage.key = @TABLE.$$.storage)
ELSE '' ELSE ''
END as 'Stockage'; END as 'Stockage';
$$.comment AS 'Remarque' $$.comment AS 'Commentaire'
"|args:$config.user_fields.name_sql "|args:$config.user_fields.name_sql
where="%s AND %s"|args:$cat_condition:$prop_condition where="%s"|args:$cat_condition
order=1 order=1
max=50 max=50
desc=true desc=true

View file

@ -14,6 +14,15 @@
{{else}} {{else}}
{{#restrict block=true section="accounting" level="write"}}{{/restrict}} {{#restrict block=true section="accounting" level="write"}}{{/restrict}}
{{if $_GET.prop == null || $_GET.prop}}
{{:assign proprio="proprio"}}
{{else}}
{{:assign proprio="nonproprio"}}
{{/if}}
{{#load type="category" count=true assign="result"}}{{/load}}
{{:include file="_nav.html" current="inventaire" cat="%d"|args:$result.count subcurrent="%s"|args:$proprio}}
{{if $_GET.ok}} {{if $_GET.ok}}
{{if $_GET.msg == "ajout" }} {{if $_GET.msg == "ajout" }}
<p class="block confirm">Ajout effectué</p> <p class="block confirm">Ajout effectué</p>
@ -28,13 +37,14 @@
<p class="block error">Modification refusée</p> <p class="block error">Modification refusée</p>
{{/if}} {{/if}}
{{#load type="category" count=true limit=1 assign="result"}}{{/load}}
{{:include file="_nav.html" current="inventaire" cat="%d"|args:$result.count subcurrent="stock"}}
{{if $result.count == 0}} {{if $result.count == 0}}
<p class="block alert">Il n'y a aucune catégorie : vous devez en ajouter.</p> <p class="block alert">Il n'y a aucune catégorie : vous devez en ajouter.</p>
{{else}} {{else}}
{{:include file="./_inventory.html"}} {{if $_GET.prop == null || $_GET.prop == "1"}}
{{:include file="./_inventory.html"}}
{{else}}
{{:include file="./_temp_inventory.html"}}
{{/if}}
{{/if}} {{/if}}
{{:admin_footer}} {{:admin_footer}}

View file

@ -2,21 +2,14 @@
{{#restrict block=true section="accounting" level="write"}}{{/restrict}} {{#restrict block=true section="accounting" level="write"}}{{/restrict}}
{{if $_GET.output_type == "loan"}} {{:admin_header title="Matériels hors de l'asso" custom_css="../style.css" current="module_equipment"}}
{{:assign label="prêt"}} {{:include file="./_nav.html" current="historique" subcurrent="prêts"}}
{{elseif $_GET.output_type == "rent"}}
{{:assign label="location"}}
{{else}}
{{:error message="Cette page n'existe pas !"}}
{{/if}}
{{:admin_header title="%ss en cours"|args:$label|ucfirst custom_css="../style.css" current="module_equipment"}}
{{:include file="./_nav.html" current="%s"|args:$label subcurrent="encours"}}
{{* {{*
vérifier l'existence de la table du module vérifier l'existence de la table du module
eh oui, il se peut qu'elle ne soit pas encore créée si aucune donnée n'a été ajoutée dedans eh oui, il se peut qu'elle ne soit pas encore créée si aucune donnée n'a été ajoutée dedans
*}} *}}
{{#load limit="1"}} {{#load limit="1"}}
{{:assign table_presente=true}} {{:assign table_presente=true}}
{{else}} {{else}}
@ -38,72 +31,20 @@
{{/if}} {{/if}}
{{/if}} {{/if}}
<div class="shortFormLeft">
<p class="help">Historique des prêts de matériel</p>
</div>
{{* lecture config (défaut ou enregistrée) *}} {{* lecture config (défaut ou enregistrée) *}}
{{:include file="./_get_config.html" keep="config"}} {{:include file="./_get_config.html" keep="config"}}
{{* filtrer selon la catégorie *}}
{{if $_GET.cat_key == null}}
{{:assign var="selected_category" from="module.config.%s_hist_cat_key"|args:$_GET.output_type}}
{{elseif $_GET.cat_key == -1}}
{{:assign selected_category=null}}
{{if $_GET.output_type == "loan"}}
{{:save key="config" loan_hist_cat_key=null}}
{{elseif $_GET.output_type == "rent"}}
{{:save key="config" rent_hist_cat_key=null}}
{{/if}}
{{else}}
{{:assign selected_category=$_GET.cat_key}}
{{if $_GET.output_type == "loan"}}
{{:save key="config" loan_hist_cat_key=$selected_category}}
{{elseif $_GET.output_type == "rent"}}
{{:save key="config" rent_hist_cat_key=$selected_category}}
{{/if}}
{{/if}}
{{* condition de filtrage *}}
{{if $selected_category != null}}
{{:assign cat_key=$selected_category|quote_sql}}
{{:assign cat_condition="json_extract(mat.document, '$.category') = %s"|args:$cat_key}}
{{else}}
{{:assign cat_condition=1}}
{{/if}}
{{#foreach from=$config.output_nature key="key"}} {{#foreach from=$config.output_nature key="key"}}
{{if $type != 'temporaire'}} {{if $type == 'temporaire'}}
{{:continue}} {{:assign var="output_types." value=$key|quote_sql}}
{{/if}}
{{if $_GET.output_type == "loan" && $fee != 'payant'}}
{{:assign var="out_keys." value=$key|quote_sql}}
{{elseif $_GET.output_type == "rent" && $fee == 'payant'}}
{{:assign var="out_keys." value=$key|quote_sql}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{:assign out_keys=$out_keys|implode:","}} {{:assign output_ops=$output_types|implode:","}}
{{:assign out_keys="("|cat:$out_keys|cat:")"}} {{:assign output_ops="("|cat:$output_ops|cat:")"}}
{{* sélecteur de catégorie *}}
{{:assign var="cat_options." value="" label="Toutes les catégories" href="?output_type=%s&cat_key=-1"|args:$_GET.output_type}}
{{#load type="category" order="$$.name"}}
{{:assign
var="cat_options."
value=$key
label=$name
href="?output_type=%s&cat_key=%s"|args:$_GET.output_type:$key
}}
{{/load}}
<fieldset class="shortFormRight">
<legend>Filtrer par catégorie</legend>
{{:dropdown
title="Filtrer par catégorie"
options=$cat_options
value="%s"|args:$selected_category
}}
</fieldset>
<div class="shortFormLeft">
<p class="help">{{$label|ucfirst}} de matériel en cours</p>
</div>
{{:assign premier=true}} {{:assign premier=true}}
{{#select {{#select
@ -120,29 +61,29 @@
LEFT JOIN !table AS links ON mvt.key = json_extract(links.document, '$.temp_key') LEFT JOIN !table AS links ON mvt.key = json_extract(links.document, '$.temp_key')
LEFT JOIN !table AS retour ON retour.key = json_extract(links.document, '$.return') LEFT JOIN !table AS retour ON retour.key = json_extract(links.document, '$.return')
INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment') INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment')
WHERE json_extract(mvt.document, '$.type') = 'movement' WHERE
AND json_extract(mvt.document, '$.operation') IN !op json_extract(mvt.document, '$.type') = 'movement'
AND !cat_condition AND
json_extract(mvt.document, '$.operation') IN !op
GROUP BY mvt.key GROUP BY mvt.key
HAVING remain != 0 HAVING remain != 0
ORDER BY out_date DESC, nom ORDER BY out_date, nom
; ;
!table=$module.table !table=$module.table
!op = $out_keys !op = $output_ops
!cat_condition=$cat_condition
}} }}
{{if $premier}} {{if $premier}}
<table class="list"> <table class="list">
<thead> <thead>
<tr> <tr>
<td>Matériel</td> <th>Matériel</th>
<td>Date prêt</td> <th>Date prêt</th>
<td>Quantité</td> <th>Quantité</th>
<td>Membre</td> <th>Membre</th>
<td>Date retour</td> <th>Date retour</th>
<td>Reste à rendre</td> <th>Reste à rendre</th>
<td>Remarque</td> <th>Remarque</th>
<td class="actions"></td> <th class="actions"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -181,14 +122,9 @@
href="movements/output_return.html?key=%s&prop=1"|args:$mvt_key href="movements/output_return.html?key=%s&prop=1"|args:$mvt_key
shape="reset" shape="reset"
target="_dialog"}} target="_dialog"}}
{{if $_GET.output_type == "loan"}}
{{:assign from="lh"}}
{{elseif $_GET.output_type == "rent"}}
{{:assign from="rh"}}
{{/if}}
{{:linkbutton {{:linkbutton
label="Détails" label="Détails"
href="movements/movement_details.html?key=%s&prop=1&from=%s"|args:$mvt_key:$from href="movements/movement_details.html?key=%s&prop=1&from=lh"|args:$mvt_key
shape="eye" shape="eye"
}} }}
</td> </td>

View file

@ -1,235 +0,0 @@
{{* -*- brindille -*- *}}
{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
{{*
Afficher l'historique des prêts ou locations
*}}
{{if $_GET.output_type == "loan"}}
{{:assign label="prêt"}}
{{elseif $_GET.output_type == "rent"}}
{{:assign label="location"}}
{{else}}
{{:error message="Cette page n'existe pas !"}}
{{/if}}
{{:admin_header title="Historique des %ss"|args:$label custom_css="./style.css" current="module_equipment"}}
{{:include file="./_nav.html" current="%s"|args:$label subcurrent="historique"}}
{{*
vérifier l'existence de la table du module
eh oui, il se peut qu'elle ne soit pas encore créée si aucune donnée n'a été ajoutée dedans
*}}
{{#load limit="1"}}
{{:assign table_presente=true}}
{{else}}
{{:assign table_presente=false}}
{{/load}}
{{if $table_presente}}
{{if $_GET.ok}}
{{if $_GET.msg == "modification"}}
<p class="block confirm">Modification enregistrée</p>
{{elseif $_GET.msg == "copie"}}
<p class="block confirm">Mouvement copié</p>
{{elseif $_GET.msg == "suppression"}}
<p class="block confirm">Mouvement supprimé</p>
{{/if}}
{{elseif $_GET.err}}
{{if $_GET.msg == "suppression"}}
<p class="block error">Ce mouvement ne peut être supprimé</p>
{{/if}}
{{/if}}
{{* récupérer la config des entrées/sorties *}}
{{:include file="./_get_config.html" keep="config"}}
{{* filtrer selon la catégorie *}}
{{if $_GET.cat_key == null}}
{{:assign var="selected_category" from="module.config.%s_cat_key"|args:$_GET.output_type}}
{{elseif $_GET.cat_key == -1}}
{{:assign selected_category=null}}
{{if $_GET.output_type == "loan"}}
{{:save key="config" loan_cat_key=null}}
{{elseif $_GET.output_type == "rent"}}
{{:save key="config" rent_cat_key=null}}
{{/if}}
{{else}}
{{:assign selected_category=$_GET.cat_key}}
{{if $_GET.output_type == "loan"}}
{{:save key="config" loan_cat_key=$selected_category}}
{{elseif $_GET.output_type == "rent"}}
{{:save key="config" rent_cat_key=$selected_category}}
{{/if}}
{{/if}}
{{* condition de filtrage *}}
{{if $selected_category != null}}
{{:assign cat_key=$selected_category|quote_sql}}
{{:assign cat_condition="category = %s"|args:$cat_key}}
{{else}}
{{:assign cat_condition=1}}
{{/if}}
{{* déterminer les types de mouvements *}}
{{#foreach from=$config.output_nature key="key"}}
{{if $type != 'temporaire'}}
{{:continue}}
{{/if}}
{{if $_GET.output_type == "loan" && $fee != 'payant'}}
{{:assign var="out_keys." value=$key|quote_sql}}
{{elseif $_GET.output_type == "rent" && $fee == 'payant'}}
{{:assign var="out_keys." value=$key|quote_sql}}
{{/if}}
{{/foreach}}
{{:assign out_keys=$out_keys|implode:","}}
{{:assign out_keys="("|cat:$out_keys|cat:")"}}
{{* sélecteur de catégorie *}}
{{:assign var="cat_options." value="" label="Toutes les catégories" href="?output_type=%s&cat_key=-1"|args:$_GET.output_type}}
{{#load type="category" order="$$.name"}}
{{:assign
var="cat_options."
value=$key
label=$name
href="?output_type=%s&cat_key=%s"|args:$_GET.output_type:$key
}}
{{/load}}
<fieldset class="shortFormRight">
<legend>Filtrer par catégorie</legend>
{{:dropdown
title="Filtrer par catégorie"
options=$cat_options
value="%s"|args:$selected_category
}}
</fieldset>
<div class="shortFormLeft">
<p class="help">Historique des {{$label}}s</p>
</div>
{{* lister les mouvements *}}
{{:assign premier=true}}
{{#select * FROM
(WITH
sorties AS
(SELECT
mvt.key,
json_extract(mvt.document, '$.date') AS date,
json_extract(mvt.document, '$.direction') AS direction,
json_extract(mvt.document, '$.operation') AS operation,
json_extract(mat.document, '$.name') AS materiel,
json_extract(mat.document, '$.category') AS category,
json_extract(mvt.document, '$.amount') AS amount,
users.id AS user_id,
users.nom AS user,
json_extract(storage.document, '$.name') AS stockage,
json_extract(mvt.document, '$.transactions') AS transactions,
json_extract(mvt.document, '$.comment') AS comment,
json_extract(mvt.document, '$.return_date') AS return_date
FROM !table AS mvt
INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment')
LEFT JOIN users ON users.id = json_extract(mvt.document, '$.user')
LEFT JOIN !table AS storage ON storage.key = json_extract(mvt.document, '$.storage')
WHERE json_extract(mvt.document, '$.type') = 'movement'
AND json_extract(mvt.document, '$.operation') IN !op
AND !cat_condition
),
entrees AS
(SELECT
mvt.key,
json_extract(mvt.document, '$.date') AS date,
json_extract(mvt.document, '$.direction') AS direction,
json_extract(mvt.document, '$.operation') AS operation,
json_extract(mat.document, '$.name') AS materiel,
json_extract(mat.document, '$.category') AS category,
json_extract(mvt.document, '$.amount') AS amount,
users.id AS user_id,
users.nom AS user,
json_extract(storage.document, '$.name') AS stockage,
json_extract(mvt.document, '$.transactions') AS transactions,
json_extract(mvt.document, '$.comment') AS comment,
json_extract(mvt.document, '$.return_date') AS return_date
FROM !table AS mvt
INNER JOIN !table AS mat ON mat.key = json_extract(mvt.document, '$.equipment')
LEFT JOIN users ON users.id = json_extract(mvt.document, '$.user')
LEFT JOIN !table AS storage ON storage.key = json_extract(mvt.document, '$.storage')
INNER JOIN (
SELECT json_extract(links.document, '$.return') AS return_key
FROM !table AS links
INNER JOIN sorties ON json_extract(links.document, '$.temp_key') = sorties.key
) AS filtered_links ON filtered_links.return_key = mvt.key
WHERE !cat_condition
)
SELECT * FROM sorties UNION SELECT * FROM entrees
)
ORDER BY date DESC, user
;
!table=$module.table
!op = $out_keys
!cat_condition=$cat_condition
}}
{{:assign var="op_label" from="config.%s_nature.%s.label"|args:$direction:$operation}}
{{:assign file_path="%s/%s/"|args:$module.storage_root:$key}}
{{:assign file_path=$file_path|cat:"%"}}
{{#select count(*) AS nb FROM files WHERE path LIKE :file_path ; :file_path=$file_path}}
{{:assign nb_files=$nb}}
{{/select}}
{{if $premier}}
<table class="list">
<thead>
<tr>
<td>Date</td>
<td>Mouvement</td>
<td>Opération</td>
<td>Matériel</td>
<td class="num">Quantité</td>
<td>Dépositaire</td>
<td>Stockage</td>
<td>Documents</td>
<td>Écritures</td>
<td>Remarque</td>
<td class="actions"></td>
</tr>
</thead>
<tbody>
{{:assign premier=false}}
{{/if}}
<tr>
<td>{{$date|date_short}}</td>
<td>{{if $direction == "input"}}Entrée{{else}}Sortie{{/if}}</td>
<td>{{$op_label}}</td>
<td>{{$materiel}}</td>
<td class="num">{{$amount}}</td>
<td>{{:link href="/admin/users/details.php?id=%s"|args:$user_id label="%s"|args:$user}}</td>
<td>{{$stockage}}</td>
<td class="num">{{if $nb_files > 0}}{{:icon shape="attach"}}{{/if}}</td>
<td class="num">{{if $transactions != null}}{{:icon shape="money"}}{{/if}}</td>
<td>{{$comment}}</td>
<td class="actions">
{{if $_GET.output_type == "loan"}}
{{:assign from="lm"}}
{{elseif $_GET.output_type == "rent"}}
{{:assign from="rm"}}
{{/if}}
{{:linkbutton
label="Détails"
href="movements/movement_details.html?key=%s&prop=1&from=%s"|args:$key:$from
shape="eye"
}}
</td>
</tr>
{{else}}
<p class="block alert">Aucun mouvement.</p>
{{/select}}
</tbody>
</table>
{{else}}
<p class="block alert">Aucun mouvement.</p>
{{/if}}
{{:admin_footer}}

View file

@ -207,25 +207,12 @@
transactions=$transactions transactions=$transactions
return_date=$return_date|parse_date return_date=$return_date|parse_date
}} }}
{{if $_GET.from == "lh"}}
{{if $_GET.from|substr:0:1 == "l"}} {{:assign from="../loan_history.html"}}
{{:assign output_type="loan"}}
{{elseif $_GET.from|substr:0:1 == "r"}}
{{:assign output_type="rent"}}
{{/if}}
{{if $_GET.from|substr:1:1 == "h"}}
{{:assign suffix="history"}}
{{elseif $_GET.from|substr:1:1 == "m"}}
{{:assign suffix="movements"}}
{{/if}}
{{if $_GET.from == "eh"}}
{{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=copie"|args:$eqpmt_key:$prop}}
{{elseif $suffix == null}}
{{:redirect force="../index.html"}}
{{else}} {{else}}
{{:redirect force="../loan_%s.html?output_type=%s&ok=1&key=%s&prop=%s&msg=copie"|args:$suffix:$output_type:$eqpmt_key:$prop}} {{:assign from="../equipment_history.html"}}
{{/if}} {{/if}}
{{:redirect force="%s?ok=1&key=%s&prop=%s&msg=copie"|args:$from:$eqpmt_key:$prop}}
{{/form}} {{/form}}
{{if $mvt_new.direction == "input"}} {{if $mvt_new.direction == "input"}}

View file

@ -23,25 +23,11 @@
{{:include file="../_get_config.html" keep="config"}} {{:include file="../_get_config.html" keep="config"}}
{{#form on="delete"}} {{#form on="delete"}}
{{if $_GET.from|substr:0:1 == "l"}} {{if $_GET.from == "lh"}}
{{:assign output_type="loan"}} {{:assign from="../loan_history.html"}}
{{elseif $_GET.from|substr:0:1 == "r"}}
{{:assign output_type="rent"}}
{{/if}}
{{if $_GET.from|substr:1:1 == "h"}}
{{:assign suffix="history"}}
{{elseif $_GET.from|substr:1:1 == "m"}}
{{:assign suffix="movements"}}
{{/if}}
{{if $_GET.from == "eh"}}
{{:assign from="../equipment_history.html"}}
{{elseif $suffix == null}}
{{:assign from="../index.html"}}
{{else}} {{else}}
{{:assign from="../loan_%s.html"|args:$suffix}} {{:assign from="../equipment_history.html"}}
{{:assign param="&output_type=%s"|args:$output_type}}
{{/if}} {{/if}}
{{* vérifier s'il est possible de supprimer le mouvement *}} {{* vérifier s'il est possible de supprimer le mouvement *}}
{{if $mvt_suppr.direction == 'input'}} {{if $mvt_suppr.direction == 'input'}}
{{:assign var="type_operation" from="config.input_nature.%s.type"|args:$mvt_suppr.operation}} {{:assign var="type_operation" from="config.input_nature.%s.type"|args:$mvt_suppr.operation}}
@ -50,7 +36,7 @@
{{:assign link_key=$key}} {{:assign link_key=$key}}
{{/load}} {{/load}}
{{if $link_key != null}} {{if $link_key != null}}
{{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}} {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{/if}} {{/if}}
{{else}} {{else}}
{{:assign dispo=0}} {{:assign dispo=0}}
@ -83,7 +69,7 @@
{{* problème ? *}} {{* problème ? *}}
{{if $dispo < 0 || $nonprop < 0}} {{if $dispo < 0 || $nonprop < 0}}
{{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}} {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{/if}} {{/if}}
{{/if}} {{/if}}
{{/load}} {{/load}}
@ -104,7 +90,7 @@
{{:assign link_key=$key}} {{:assign link_key=$key}}
{{/load}} {{/load}}
{{if $link_key != null}} {{if $link_key != null}}
{{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}} {{:redirect force="%s?key=%s&prop=%s&err=1&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{/if}} {{/if}}
{{elseif $type_operation == 'retour'}} {{elseif $type_operation == 'retour'}}
{{#load type="link" where="$$.return = :key" :key=$_GET.key}} {{#load type="link" where="$$.return = :key" :key=$_GET.key}}
@ -169,11 +155,11 @@
out=$curr_eqpmt.out out=$curr_eqpmt.out
notowned=$curr_eqpmt.notowned notowned=$curr_eqpmt.notowned
}} }}
{{:redirect force="%s?ok=1&key=%s&prop=%s&msg=suppression%s"|args:$from:$mvt_suppr.equipment:$_GET.prop:$param}} {{:redirect force="%s?ok=1&key=%s&prop=%s&msg=suppression"|args:$from:$mvt_suppr.equipment:$_GET.prop}}
{{else}} {{else}}
{{* supprimer le matériel *}} {{* supprimer le matériel *}}
{{:delete key=$curr_eqpmt.key}} {{:delete key=$curr_eqpmt.key}}
{{:redirect force="%s?ok=1&msg=supprmvtmat%s"|args:$from:$param}} {{:redirect force="../index.html?ok=1&msg=supprmvtmat"}}
{{/if}} {{/if}}
{{/form}} {{/form}}

View file

@ -224,25 +224,12 @@
transactions=$transactions transactions=$transactions
return_date=$return_date|parse_date return_date=$return_date|parse_date
}} }}
{{if $_GET.from == "lh"}}
{{if $_GET.from|substr:0:1 == "l"}} {{:assign from="../loan_history.html"}}
{{:assign output_type="loan"}}
{{elseif $_GET.from|substr:0:1 == "r"}}
{{:assign output_type="rent"}}
{{/if}}
{{if $_GET.from|substr:1:1 == "h"}}
{{:assign suffix="history"}}
{{elseif $_GET.from|substr:1:1 == "m"}}
{{:assign suffix="movements"}}
{{/if}}
{{if $_GET.from == "eh"}}
{{:redirect force="../equipment_history.html?ok=1&key=%s&prop=%s&msg=copie"|args:$eqpmt_key:$prop}}
{{elseif $suffix == null}}
{{:redirect force="../index.html"}}
{{else}} {{else}}
{{:redirect force="../loan_%s.html?output_type=%s&ok=1&key=%s&prop=%s&msg=modification"|args:$suffix:$output_type:$eqpmt_key:$prop}} {{:assign from="../equipment_history.html"}}
{{/if}} {{/if}}
{{:redirect force="%s?ok=1&key=%s&prop=%s&msg=modification"|args:$from:$eqpmt_key:$prop}}
{{/form}} {{/form}}
{{if $mvt_new.direction == "input"}} {{if $mvt_new.direction == "input"}}

View file

@ -9,7 +9,6 @@
paramètres : paramètres :
- key : clé du mouvement - key : clé du mouvement
- prop = 1 si matériel appartient à l'asso - prop = 1 si matériel appartient à l'asso
- from = page d'appel
*}} *}}
{{:admin_header title="Détails du mouvement" custom_css="../style.css" current="module_equipment"}} {{:admin_header title="Détails du mouvement" custom_css="../style.css" current="module_equipment"}}

View file

@ -5,7 +5,6 @@
{{* {{*
paramètres : paramètres :
- key : clé du matériel à sortir - key : clé du matériel à sortir
- output_type : loan (prêt), rent (location), rien (cas général)
*}} *}}
{{* récupérer la config des entrées/sorties *}} {{* récupérer la config des entrées/sorties *}}
@ -13,17 +12,7 @@
{{* types de sorties *}} {{* types de sorties *}}
{{#foreach from=$config.output_nature key=key}} {{#foreach from=$config.output_nature key=key}}
{{if $type == 'retour'}} {{if $type != 'retour'}}
{{:continue}}
{{/if}}
{{if $type == 'temporaire' && $fee == 'payant'}}
{{:assign var="paid_keys." value=$key}}
{{/if}}
{{if $_GET.output_type == null}}
{{:assign var="output_labels.%s"|args:$key value=$label}}
{{elseif $type == 'temporaire' && $_GET.output_type == "loan" && $fee != 'payant'}}
{{:assign var="output_labels.%s"|args:$key value=$label}}
{{elseif $type == 'temporaire' && $_GET.output_type == "rent" && $fee == 'payant'}}
{{:assign var="output_labels.%s"|args:$key value=$label}} {{:assign var="output_labels.%s"|args:$key value=$label}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -211,36 +200,19 @@
{{/if}} {{/if}}
{{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}} {{:input type="date" name="date" label="Date de sortie" required=true default=$now|date_short}}
{{:input type="number" name="amount" label="Quantité" required=true default=1 min=1 max=$dispo}} {{:input type="number" name="amount" label="Quantité" required=true default=1 min=1 max=$dispo}}
<div id="rent_user">
{{if $_GET.output_type == null || $_GET.output_type == "rent"}}
{{:input
type="list"
name="user"
label="Membre destinataire"
target="!users/selector.php"
multiple=true
max=1
required=true
}}
{{/if}}
</div>
</dl> </dl>
</fieldset> </fieldset>
<fieldset class="entree"> <fieldset class="entree">
<legend>Informations facultatives</legend> <legend>Informations facultatives</legend>
<dl> <dl>
<div id="loan_user"> {{:input
{{if $_GET.output_type != "rent"}} type="list"
{{:input name="user"
type="list" label="Membre destinataire"
name="user" target="!users/selector.php"
label="Membre destinataire" multiple=true
target="!users/selector.php" max=1
multiple=true }}
max=1
}}
{{/if}}
</div>
{{:input type="list" name="transactions" label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}} {{:input type="list" name="transactions" label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture avec facture"}}
{{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}} {{:input type="textarea" name="remarques" label="Remarques" cols="40" rows="3" required=false}}
{{:input id="set_return_date" type="checkbox" value=1 name="set_return_date" label="Fixer une date de retour" help="Cocher pour fixer une date de retour"}} {{:input id="set_return_date" type="checkbox" value=1 name="set_return_date" label="Fixer une date de retour" help="Cocher pour fixer une date de retour"}}
@ -262,10 +234,7 @@
{{:admin_footer}} {{:admin_footer}}
<script type="text/javascript" src="../scripts.js"></script> <script type="text/javascript" src="../scripts.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var paid_keys = {{$paid_keys|json_encode|raw}};
function changeVisibility(evt, idcheck = 'f_set_return_date_1', fields = ['div_return_date']) { function changeVisibility(evt, idcheck = 'f_set_return_date_1', fields = ['div_return_date']) {
toggleVisibility(idcheck, fields); toggleVisibility(idcheck, fields);
} }
@ -275,23 +244,9 @@ function changeReturnDate(evt, id_date = 'f_date', id_return_date = 'f_return_da
setReturnDate(id_date, id_return_date, id_loan_duration); setReturnDate(id_date, id_return_date, id_loan_duration);
} }
function toggleUserDiv(event) {
const operation = document.getElementById('f_operation').value;
console.log('paid_keys=' + paid_keys + ', operation=' + operation);
if (paid_keys.includes(operation)) {
g.toggle('#rent_user', true);
g.toggle('#loan_user', false);
} else {
g.toggle('#rent_user', false);
g.toggle('#loan_user', true);
}
}
toggleUserDiv();
(function () { (function () {
document.getElementById('f_set_return_date_1').checked = false; document.getElementById('f_set_return_date_1').checked = false;
document.getElementById('f_set_return_date_1').onclick = changeVisibility; document.getElementById('f_set_return_date_1').onclick = changeVisibility;
document.getElementById('f_date').onchange = changeReturnDate; document.getElementById('f_date').onchange = changeReturnDate;
document.getElementById('f_operation').onchange = toggleUserDiv;
})(); })();
</script> </script>