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 fb9cb32a44
6 changed files with 152 additions and 69 deletions

View file

@ -49,10 +49,10 @@
{{:assign nb_immo=0}}
{{:assign total_immo = 0}}
{{#select
trans.id as trans_id,
trans.id as immo_trans_id,
trans.label as trans_label,
trans.date as trans_date,
line.id as immo_id,
line.id as immo_line_id,
line.debit AS debit,
account.id as account_id,
account.code as account_code,
@ -65,13 +65,13 @@
ORDER BY trans.date DESC;
!condition=$condition
}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$immo_trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign duration=null}}
{{:assign montant_immo=$debit}}
{{* voir si l'immo est prise en charge *}}
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_id|intval}}
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id|intval}}
{{:assign duration=$duration}}
{{:assign status=$status}}
{{else}}
@ -86,7 +86,7 @@
et déduire leur montant de celui de l'immo
*}}
{{#select
CASE links.id_related = :immo_id
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as other_id,
@ -96,12 +96,11 @@
ON (trans.id = links.id_transaction OR trans.id = links.id_related)
INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id
INNER JOIN acc_accounts AS acc ON line.id_account = acc.id
WHERE trans.id = :immo_id AND line.credit > 0 AND acc.code = :account;
:immo_id=$trans_id
WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account;
:immo_trans_id=$immo_trans_id
:account=$account_code
}}
{{:assign montant_immo="%d-%d"|math:$montant_immo:$credit}}
{{*:debug ligne=$ligne montant_immo=$montant_immo*}}
{{/select}}
{{if $montant_immo == 0}}
{{:assign status="archived"}}
@ -111,39 +110,50 @@
{{/if}}
{{* voir s'il existe des écritures d'amortissement associées *}}
{{:assign amort_lines=null}}
{{#select
sum(l_amort.credit) as amort_amount,
(l_amort.credit) as amount,
CASE links.id_related = t_immo.id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as amort_trans_id
END as amort_trans_id,
l_amort.id AS amort_line_id
FROM acc_transactions_lines as l_immo
INNER JOIN acc_transactions as t_immo on t_immo.id = l_immo.id_transaction
INNER JOIN acc_transactions_links as links
ON (
t_immo.id = links.id_transaction
OR
t_immo.id = links.id_related
)
ON (t_immo.id = links.id_transaction OR t_immo.id = links.id_related)
INNER JOIN acc_transactions_lines as l_amort on amort_trans_id = l_amort.id_transaction
INNER JOIN acc_accounts AS account ON l_amort.id_account = account.id
WHERE
l_immo.id = :line_id
AND
l_amort.credit <> 0
AND
account.code LIKE '28%';
:line_id = $immo_id|intval
WHERE l_immo.id = :line_id AND l_amort.credit <> 0 AND account.code LIKE '28%';
:line_id = $immo_line_id|intval
assign="amort_lines."
}}
{{if $amort_amount == null}}
{{:assign exist_amort=false}}
{{:assign amort_amount=0}}
{{else}}
{{:assign exist_amort=true}}
{{:assign amort_amount=$amort_amount}}
{{/if}}
{{/select}}
{{:assign amort_amount=0}}
{{#foreach from=$amort_lines item="elem"}}
{{* voir s'il existe un doc associé *}}
{{#load type="link"
where="$$.immo_line_id = :immo_line_id AND $$.amort_trans_id = :amort_trans_id"
:immo_line_id = $immo_line_id
:amort_trans_id = $elem.amort_trans_id
assign="link"
}}
{{if $link.amort_line_id == $elem.amort_line_id}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amount}}
{{/if}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amount}}
{{/load}}
{{/foreach}}
{{if $amort_amount == 0}}
{{:assign exist_amort=false}}
{{else}}
{{:assign exist_amort=true}}
{{:assign amort_amount=$amort_amount}}
{{/if}}
{{* classement par onglet *}}
{{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}}
{{if $type_immo == "managed" && $status == "amortized"}}{{:continue}}{{/if}}
@ -155,7 +165,7 @@
{{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$montant_immo}}
<tr>
<td class="num"><a href={{$trans_url}}>#{{$trans_id}}</a></td>
<td class="num"><a href={{$trans_url}}>#{{$immo_trans_id}}</a></td>
<td>{{$trans_date|date_short}}</td>
<td>{{$trans_label}}</td>
<td class="money">{{$montant_immo|money_html:false|raw}}</td>
@ -166,13 +176,13 @@
<td class="actions">
{{:linkbutton
label="Paramètres"
href="add_infos.html?immo_id=%s&type_immo=%s"|args:$immo_id:$type_immo
href="add_infos.html?immo_id=%s&type_immo=%s"|args:$immo_line_id:$type_immo
shape="settings"
target="_dialog"
}}
{{:linkbutton
label="Amortissements"
href="amortization.html?immo_id=%s&type_immo=%s"|args:$immo_id:$type_immo
href="amortization.html?immo_id=%s&type_immo=%s"|args:$immo_line_id:$type_immo
shape="table"
}}
</td>
@ -181,6 +191,9 @@
</tbody>
<tfoot>
{{if $total_immo != 0}}
<tr>
<td colspan="9">
</tr>
{{#foreach from=$sommes_immo|ksort key="code" item="value"}}
<tr>
<td></td>