Ajout possibilité spécifier montant immo

This commit is contained in:
Jean-Christophe Engel 2026-02-04 14:04:09 +01:00
parent 9594f6b206
commit f32e1d1a51
9 changed files with 201 additions and 144 deletions

View file

@ -1,6 +1,6 @@
{{* -*- brindille -*- *}}
{{* Liste des immobilisations archivées *}}
{{* Liste des immobilisations sorties du bilan *}}
<p class="help">
Cette page liste les immobilisations sorties du bilan
</p>
@ -8,48 +8,21 @@
{{* Immobilisation avec une écriture de sortie de bilan *}}
{{:include file="_get_config.html" keep="module.config"}}
{{:assign accounts_condition="("}}
{{* lister les immobilisations *}}
{{:assign account_condition="("}}
{{#foreach from=$module.config.prefixes item="code"}}
{{:assign code=$code|cat:"%"|quote_sql}}
{{:assign accounts_condition=$accounts_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
{{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
{{/foreach}}
{{:assign accounts_condition=$accounts_condition|cat:"0)"}}
{{:assign condition=$accounts_condition|cat:" AND acc2.code = account.code AND line.debit > 0 AND line.debit = line2.credit AND NOT (trans.status & 16)"}}
{{:assign account_condition=$account_condition|cat:"0)"}}
{{:assign filter_condition=" NOT ("}}
{{:assign filter_condition=" AND 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}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as trans_date,
line.id as immo_id,
account.id as account_id,
account.code as account_code,
account.label as account_label,
line.debit AS debit,
project.label as project_label,
trans.id_year as trans_id_year,
trans2.date as exit_date
FROM acc_transactions AS trans
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
INNER JOIN acc_transactions_lines AS line2 ON line.debit = line2.credit
INNER JOIN acc_transactions AS trans2 ON trans2.id = line2.id_transaction
INNER JOIN acc_accounts AS acc2 ON acc2.id = line2.id_account
LEFT JOIN acc_projects AS project ON line.id_project = project.id
WHERE !condition
ORDER BY trans.date DESC;
!condition=$condition
assign="immo_archivee"
}}
{{:assign var="immo_archivees.%s"|args:$trans_id value=$immo_archivee}}
{{/select}}
{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"|cat:$filter_condition}}
<section class="immobilisation">
<table class="list">
@ -67,28 +40,79 @@
</tr>
</thead>
<tbody>
{{:assign nb_immo=0}}
{{:assign total_immo = 0}}
{{:assign total_cessions = 0}}
{{#foreach from=$immo_archivees}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign nb_immo="%d+1"|math:$nb_immo}}
{{:assign total_immo="%d+%d"|math:$total_immo:$debit}}
{{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
{{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$debit}}
<tr>
<td class="num"><a href={{$trans_url}}>#{{$trans_id}}</a></td>
<td>{{$trans_date|date_short}}</td>
<td>{{$exit_date|date_short}}</td>
<td>{{$trans_label}}</td>
<td class="money">{{"%f"|math:$debit|money_html:false|raw}}</td>
<td><a href={{$compte_url}}>{{$account_code}}</a></td>
<td>{{$account_label}}</td>
<td>{{$project_label}}</td>
<td class="actions">
</td>
</tr>
{{:assign nb_immo=0}}
{{:assign total_immo = 0}}
{{:assign total_cessions = 0}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as trans_date,
trans.id_year as trans_id_year,
line.id as immo_id,
line.debit AS debit,
account.id as account_id,
account.code as account_code,
account.label as account_label,
project.label as project_label
FROM acc_transactions AS trans
INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
INNER JOIN acc_years AS years ON trans.id_year = years.id
LEFT JOIN acc_projects AS project ON line.id_project = project.id
WHERE !condition
ORDER BY trans.date DESC;
!condition=$condition
}}
{{:assign montant_immo=$debit}}
{{* voir si l'immo est prise en charge *}}
{{#load type="immo" where="$$.line = :line_id" :line_id=$immo_id|intval}}
{{:assign status=$status}}
{{if $amount != null}}
{{:assign montant_immo=$amount}}
{{/if}}
{{else}}
{{:assign amortissable="nsp"}}
{{:assign status="unknown"}}
{{/load}}
{{if $status == "ignored"}}
{{:continue}}
{{/if}}
{{* voir s'il existe une écriture liée qui solde l'immobilisation *}}
{{#select
trans.date as exit_date
FROM acc_transactions_links AS link
INNER JOIN acc_transactions AS trans ON
(CASE
WHEN link.id_transaction = :trans_id THEN link.id_related
WHEN link.id_related = :trans_id THEN link.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 line.credit = :montant_immo
AND acc.code = :account_code
;
:trans_id = $trans_id
:montant_immo = $montant_immo
:account_code = $account_code
}}
{{:assign status="archived"}}
{{:assign exit_date=$exit_date}}
{{/select}}
{{if $status != "archived"}}
{{:continue}}
{{/if}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}}
{{:assign nb_immo="%d+1"|math:$nb_immo}}
{{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}}
{{: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}}
{{* voir s'il y a une écriture de cession associée à cette immo *}}
{{#select
trans.id,
@ -100,21 +124,33 @@
acc.label
FROM acc_transactions_links AS link
INNER JOIN acc_transactions AS trans ON (CASE
WHEN link.id_transaction = :trans_id THEN link.id_related
WHEN link.id_related = :trans_id THEN link.id_transaction
WHEN link.id_transaction = :trans_id THEN link.id_related
WHEN link.id_related = :trans_id THEN link.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 (link.id_transaction = :trans_id OR link.id_related = :trans_id) AND acc.code = 462
;
:trans_id = $trans_id
}}
}}
{{:assign var="montant" from="montant_cessions.%d"|args:$account_code}}
{{:assign var="montant_cessions.%d"|args:$account_code value="%d+%d"|math:$montant:$debit}}
{{:assign total_cessions="%d+%d"|math:$total_cessions:$debit}}
{{/select}}
{{/foreach}}
</tbody>
<tr>
<td class="num"><a href={{$trans_url}}>#{{$trans_id}}</a></td>
<td>{{$trans_date|date_short}}</td>
<td>{{$exit_date|date_short}}</td>
<td>{{$trans_label}}</td>
<td class="money">{{"%f"|math:$montant_immo|money_html:false|raw}}</td>
<td><a href={{$compte_url}}>{{$account_code}}</a></td>
<td>{{$account_label}}</td>
<td>{{$project_label}}</td>
<td class="actions">
</td>
</tr>
{{/select}}
</tbody>
<tfoot>
{{if $total_immo != 0}}
@ -130,18 +166,18 @@
<td></td>
<td class="actions"></td>
</tr>
{{/foreach}}
<tr>
<td></td>
<td></td>
<td></td>
<td class="strong">Total des immobilisations</td>
<td class="money strong">{{$total_immo|money_html:false|raw}}</td>
<td></td>
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/foreach}}
<tr>
<td></td>
<td></td>
<td></td>
<td class="strong">Total des immobilisations</td>
<td class="money strong">{{$total_immo|money_html:false|raw}}</td>
<td></td>
<td></td>
<td></td>
<td class="actions"></td>
</tr>
{{/if}}
{{if $total_cessions != 0}}
<tr>