Filtrer les libellés des écritures

This commit is contained in:
Jean-Christophe Engel 2025-11-19 11:27:59 +01:00
parent 262b25889b
commit 9dd8c018f0
7 changed files with 153 additions and 9 deletions

View file

@ -37,8 +37,16 @@
{{/foreach}}
{{:assign condition=$condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}}
{{:assign nb_immo=0}}
{{:assign filter_condition=" NOT ("}}
{{#foreach from=$module.config.filters item="filter"}}
{{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
{{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
{{/foreach}}
{{:assign filter_condition=$filter_condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND "|cat:$filter_condition}}
{{:assign nb_immo=0}}
{{#select
trans.id as trans_id,
trans.label as trans_label,

View file

@ -29,7 +29,7 @@
<tbody>
{{* lister les immobilisations *}}
{{:include file="_get_config.html" keep="module.config.prefixes"}}
{{:include file="_get_config.html" keep="module.config"}}
{{:assign condition="("}}
{{#foreach from=$module.config.prefixes item="code"}}
@ -38,8 +38,16 @@
{{/foreach}}
{{:assign condition=$condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}}
{{:assign nb_immo=0}}
{{:assign filter_condition=" NOT ("}}
{{#foreach from=$module.config.filters item="filter"}}
{{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
{{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
{{/foreach}}
{{:assign filter_condition=$filter_condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND "|cat:$filter_condition}}
{{:assign nb_immo=0}}
{{#select
trans.id as trans_id,
trans.label as trans_label,

View file

@ -33,4 +33,12 @@
<li class="title"><strong>Sortie de bilan</strong></li>
</ul>
{{/if}}
{{if $current == "config"}}
<ul class="sub">
<li {{if $subcurrent == null}} class="current"{{/if}}><a href="config.html">Comptes d'immobilisation</a></li>
<li {{if $subcurrent == "create_accounts"}} class="current"{{/if}}><a href="create_accounts.html">Comptes de sortie du bilan</a></li>
<li {{if $subcurrent == "filters"}} class="current"{{/if}}><a href="filters.html">Filtres de libellés</a></li>
</ul>
{{/if}}
</nav>

View file

@ -52,7 +52,7 @@
<tbody>
{{* lister les immobilisations en cours de constitution *}}
{{:include file="_get_config.html" keep="module.config.unfinished"}}
{{:include file="_get_config.html" keep="module.config"}}
{{:assign accounts_condition="("}}
{{#foreach from=$module.config.unfinished item="elem"}}
@ -61,8 +61,17 @@
{{/foreach}}
{{:assign accounts_condition=$accounts_condition|cat:"0)"}}
{{:assign condition=$accounts_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}}
{{:assign nb_immo=0}}
{{:assign filter_condition=" NOT ("}}
{{#foreach from=$module.config.filters item="filter"}}
{{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
{{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
{{/foreach}}
{{:assign filter_condition=$filter_condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND "|cat:$filter_condition}}
{{*:debug condition=$condition*}}
{{:assign nb_immo=0}}
{{#select
trans.id as trans_id,
trans.label as trans_label,

View file

@ -1,8 +1,5 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Configuration" custom_css="./style.css" current="module_amortissement"}}
{{:include file="_nav.html" current="config"}}
{{if $_GET.ok == 1}}
<p class="block confirm">Configuration enregistrée.</p>
{{/if}}
@ -52,6 +49,9 @@
{{:form_errors}}
{{/form}}
{{:admin_header title="Configuration" custom_css="./style.css" current="module_amortissement"}}
{{:include file="_nav.html" current="config"}}
{{* récupérer l'exercice courant ou sinon le plus récent *}}
{{:assign var="selected_year" from="logged_user.preferences.accounting_year"}}
{{if $selected_year == null}}

96
filters.html Normal file
View file

@ -0,0 +1,96 @@
{{* -*- brindille -*- *}}
{{:admin_header title="Configuration" custom_css="./style.css" current="module_amortissement"}}
{{:include file="_nav.html" current="config" subcurrent="filters"}}
{{if $_GET.ok == 1}}
<p class="block confirm">Configuration enregistrée.</p>
{{/if}}
{{* lecture config *}}
{{:include file="./_get_config.html" keep="module.config"}}
{{#form on="save"}}
{{* enregistrer les filtres dans la config *}}
{{#foreach from=$_POST.filters item="filter"}}
{{if $filter != ""}}
{{:assign var="filters." value=$filter}}
{{/if}}
{{/foreach}}
{{:save key="config" filters=$filters}}
{{:redirect to="./misc.html"}}
{{/form}}
<form method="post" action="">
<h3>Liste de libellés à ignorer</h3>
<p class="help">
Les écritures dont le libellé contient un des textes ci-dessous seront ignorées
</p>
<table class="list" id="filter_list">
<thead>
<tr>
<th>Libellé</th>
<th></th>
</tr>
</thead>
<tbody>
{{if $module.config.filters == null}}
<tr>
<td>
{{:input type="text" name="filters[]" required=false}}
</td>
<td class="actions">
{{:button
label="Enlever"
title="Enlever une ligne"
shape="minus"
min="1"
name="remove_line"
}}
</td>
</tr>
{{else}}
{{#foreach from=$module.config.filters item="filter"}}
<tr>
<td>
{{:input type="text" name="filters[]" default=$filter required=false}}
</td>
<td class="actions">
{{:button
label="Enlever"
title="Enlever une ligne"
shape="minus"
min="1"
name="remove_line"
}}
</td>
</tr>
{{/foreach}}
{{/if}}
</tbody>
<tfoot>
<tr>
<td></td>
<td class="actions">{{:button shape="plus" label="Ajouter" title="Ajouter un libellé"}}</td>
</tr>
</tfoot>
</table>
<p class="submit">
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
</p>
</form>
<script type="text/javascript" src="scripts.js"></script>
<script type="text/javascript" async="async">
// bouton - : supprimer une ligne
let lines = $('#filter_list tbody tr');
lines.forEach(initLine);
// bouton + : dupliquer une ligne de la 1ère table
for (const b of $('#filter_list tfoot button')) {
copyLine(b);
}
</script>

View file

@ -149,7 +149,7 @@ function initLine(row) {
var min = removeBtn.getAttribute('min');
if (count <= min) {
alert("Il n'est pas possible d'avoir moins de " + min + " compte(s).");
alert("Il n'est pas possible d'avoir moins de " + min + " ligne(s).");
return false;
}
@ -235,3 +235,18 @@ function computeTotal(id_total, id_url) {
let new_href = url.href.replace(/trans=.*/, 'trans=' + Object.values(transactions));
url.href = new_href;
}
// dupliquer la dernière ligne d'une table
function copyLine(button) {
button.onclick = () => {
let lines = button.closest("table").querySelectorAll('tbody tr');
let line = lines[lines.length - 1];
let newNode = line.cloneNode(true);
let libelle = newNode.querySelector('input');
libelle.value = '';
// ajouter la nouvelle ligne
line.parentNode.appendChild(newNode);
initLine(newNode);
};
}