Prise en compte amortissement multi-lignes

This commit is contained in:
Jean-Christophe Engel 2026-02-21 11:19:48 +01:00
parent 8cf313502e
commit a4b2115249
6 changed files with 186 additions and 75 deletions

View file

@ -61,7 +61,7 @@
{{#select
l_amort.credit as amort_amount,
l_amort.label as amort_label,
l_amort.id as amort_line,
l_amort.id as amort_line_id,
CASE WHEN links.id_related = t_immo.id
THEN links.id_transaction
ELSE links.id_related
@ -84,8 +84,20 @@
AND account.code LIKE '28%'
ORDER BY trans.date;
:line_id = $_GET.immo_id|intval
assign=linked_lines.
assign="amort_line"
}}
{{#load type="link"
where="$$.immo_line_id = :immo_line_id AND $$.amort_trans_id = :amort_trans_id"
assign="line"
:immo_line_id=$_GET.immo_id|intval :amort_trans_id=$amort_line.amort_trans_id
}}
{{if $line.amort_line_id == $amort_line.amort_line_id}}
{{:assign var="linked_amort." value=$amort_line}}
{{/if}}
{{else}}
{{:assign var="linked_amort." value=$amort_line}}
{{/load}}
{{if $date_debut == null}}
{{:assign date_debut=$amort_date}}
{{/if}}
@ -96,7 +108,7 @@
{{:assign valeur_residuelle=0}}
{{else}}
{{:assign valeur_residuelle=$ligne_immo.montant}}
{{#foreach from=$linked_lines}}
{{#foreach from=$linked_amort}}
{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_amount}}
{{/foreach}}
{{/if}}
@ -112,7 +124,7 @@
{{:assign autres_amortissements=false}}
{{#select
line.id_transaction as t_id
line.id_transaction AS amort_trans_id
FROM acc_transactions_lines AS line
INNER JOIN acc_accounts AS account ON account.id = line.id_account
INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction
@ -120,16 +132,44 @@
WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) AND !filter_condition
ORDER BY trans.date, trans.label;
!filter_condition=$filter_condition
assign="amort"
}}
{{* voir s'il existe des écritures liées avec un numéro de compte d'immobilisation *}}
{{#select
id_transaction,
id_related
FROM acc_transactions_links
WHERE id_transaction = :id_amort OR id_related = :id_amort
links.id_transaction,
links.id_related,
trans.id AS trans_id
FROM acc_transactions_links AS links
INNER JOIN acc_transactions AS trans ON (
CASE
WHEN links.id_transaction = :id_amort THEN links.id_related
WHEN links.id_related = :id_amort THEN links.id_transaction
END) = trans.id
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS acc ON line.id_account = acc.id
WHERE
links.id_transaction = :id_amort OR links.id_related = :id_amort
AND acc.code LIKE '21%'
LIMIT 1
;
:id_amort=$t_id
:id_amort=$amort.amort_trans_id
}}
{{* voir s'il existe un doc associé à une ligne de l'amortissement *}}
{{:assign keep=true}}
{{#load type="link"
where="$$.amort_trans_id = :amort_trans_id"
:amort_trans_id = $amort.amort_trans_id
}}
{{if $amort_line_id == $amort.amort_line_id}}
{{:assign keep=false}}
{{:break}}
{{/if}}
{{else}}
{{:assign keep=false}}
{{/load}}
{{if $keep}}
{{:assign autres_amortissements=true}}
{{/if}}
{{else}}
{{:assign autres_amortissements=true}}
{{/select}}
@ -220,7 +260,7 @@
</div>
<h3 class="ruler">Amortissements enregistrés</h3>
{{if $linked_lines != null}}
{{if $linked_amort != null}}
<section class="amortissement">
<table class="list">
<thead>
@ -236,7 +276,7 @@
</tr>
</thead>
<tbody>
{{#foreach from=$linked_lines item="line"}}
{{#foreach from=$linked_amort item="line"}}
{{* données de l'écriture *}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}}
@ -256,7 +296,7 @@
<td><a href={{$compte_url}}>{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td>
<td>
{{:linkbutton label="Détacher" href="detach_amort.html?amort_id=%d&immo_id=%d"|args:$line.amort_line:$ligne_immo.immo_id shape="minus"}}
{{:linkbutton label="Détacher" href="detach_amort.html?amort_id=%d&immo_id=%d"|args:$line.amort_line_id:$ligne_immo.immo_id shape="minus"}}
</td>
</tr>
{{/foreach}}
@ -273,7 +313,7 @@
{{if $autres_amortissements}}
<p class="block alert">
Il existe des écritures d'amortissement qui ne sont pas rattachés à une immobilisation ! <br />
Il existe des écritures d'amortissement qui ne sont pas rattachées à une immobilisation ! <br />
Utilisez le bouton « Rattacher une écriture » pour les afficher ; vous pourrez choisir d'en attacher certaines à cette immobilisation.
</p>
{{/if}}