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 7fdff8be3b
8 changed files with 161 additions and 10 deletions

View file

@ -37,8 +37,16 @@
{{/foreach}} {{/foreach}}
{{:assign condition=$condition|cat:"0)"}} {{:assign condition=$condition|cat:"0)"}}
{{:assign condition=$condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}} {{: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 {{#select
trans.id as trans_id, trans.id as trans_id,
trans.label as trans_label, trans.label as trans_label,

View file

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

View file

@ -33,4 +33,12 @@
<li class="title"><strong>Sortie de bilan</strong></li> <li class="title"><strong>Sortie de bilan</strong></li>
</ul> </ul>
{{/if}} {{/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> </nav>

View file

@ -52,7 +52,7 @@
<tbody> <tbody>
{{* lister les immobilisations en cours de constitution *}} {{* 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="("}} {{:assign accounts_condition="("}}
{{#foreach from=$module.config.unfinished item="elem"}} {{#foreach from=$module.config.unfinished item="elem"}}
@ -61,8 +61,17 @@
{{/foreach}} {{/foreach}}
{{:assign accounts_condition=$accounts_condition|cat:"0)"}} {{:assign accounts_condition=$accounts_condition|cat:"0)"}}
{{:assign condition=$accounts_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"}} {{: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 {{#select
trans.id as trans_id, trans.id as trans_id,
trans.label as trans_label, trans.label as trans_label,

View file

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

94
filters.html Normal file
View file

@ -0,0 +1,94 @@
{{* -*- 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="./filters.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"
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"
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

@ -23,6 +23,14 @@
{{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}} {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}}
{{/select}} {{/select}}
{{:include file="_get_config.html" keep="module.config"}}
{{: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)"}}
{{#select {{#select
line.id as l_id, line.id as l_id,
line.id_transaction as t_id, line.id_transaction as t_id,
@ -38,8 +46,9 @@
INNER JOIN acc_accounts AS account ON account.id = line.id_account INNER JOIN acc_accounts AS account ON account.id = line.id_account
INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction
INNER JOIN acc_years AS y ON y.id = trans.id_year INNER JOIN acc_years AS y ON y.id = trans.id_year
WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) AND !filter_condition
ORDER BY trans.date, trans.label; ORDER BY trans.date, trans.label;
!filter_condition=$filter_condition
assign=autre_amort assign=autre_amort
}} }}
{{#select {{#select

View file

@ -149,7 +149,7 @@ function initLine(row) {
var min = removeBtn.getAttribute('min'); var min = removeBtn.getAttribute('min');
if (count <= 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; return false;
} }
@ -235,3 +235,18 @@ function computeTotal(id_total, id_url) {
let new_href = url.href.replace(/trans=.*/, 'trans=' + Object.values(transactions)); let new_href = url.href.replace(/trans=.*/, 'trans=' + Object.values(transactions));
url.href = new_href; 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);
};
}