Liaison immo avec écritures de crédits sur compte d'immobilisation

This commit is contained in:
Jean-Christophe Engel 2026-02-13 14:52:00 +01:00
parent 53695b6547
commit 310aa8cd07
7 changed files with 225 additions and 101 deletions

View file

@ -9,19 +9,42 @@
{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}}
{{/load}}
{{#select
trans.id,
trans.date as date_achat,
line.debit as montant
line.debit as montant,
acc.code
FROM acc_transactions_lines AS line
INNER join acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS acc ON line.id_account = acc.id
WHERE line.id = :line_id;
:line_id = $_GET.immo_id
assign=ligne_immo
}}
{{else}}
{{:error message="Aucune immobilisation trouvée"}}
{{/select}}
{{* chercher les liaisons de l'écriture d'immobilisation *}}
{{#select
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as linked_id,
acc.code
FROM acc_transactions_links as links
INNER JOIN acc_transactions_lines AS line on line.id_transaction = linked_id
INNER JOIN acc_accounts AS acc ON line.id_account = acc.id
WHERE (links.id_transaction = :immo_trans_id or links.id_related = :immo_trans_id)
AND line.credit > 0
;
:immo_trans_id = $ligne_immo.id
}}
{{:assign var="linked_transactions.%d."|args:$code value=$linked_id}}
{{/select}}
{{:assign var="immo_transactions" from="linked_transactions.%d"|args:$ligne_immo.code}}
{{* Traiter l'envoi du formulaire *}}
{{#form on="save"}}
{{if $_POST.classify == null}}
{{:error message="Vous devez choisir une action"}}
{{/if}}
@ -29,7 +52,6 @@
{{if $_POST.classify == "ignored"}}
{{* ne pas amortir *}}
{{:assign duration=0}}
{{:assign montant=0}}
{{:assign date_debut=$ligne_immo.date_achat|parse_date}}
{{:assign status="ignored"}}
{{else}}
@ -62,7 +84,6 @@
{{/if}}
{{:assign status="managed"}}
{{/if}}
{{:assign montant="%d*100"|math:$_POST.montant}}
{{/if}}
{{* enregistrer les infos de l'immobilisation *}}
@ -78,11 +99,36 @@
type="immo"
line=$_GET.immo_id|intval
duration=$duration
amount=$montant|intval
date=$date_debut
status=$status
}}
{{* copier les autres liaisons *}}
{{#foreach from=$linked_transactions key="code" item="liaisons"}}
{{if $code != $ligne_immo.code}}
{{:debug code=$code liaisons=$liaisons}}
{{#foreach from=$liaisons item="elem"}}
{{:assign var="new_transactions." value=$elem}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{* nouvelles liaisons *}}
{{#foreach from=$_POST.transactions key="key" item="elem"}}
{{:assign var="new_transactions." value=$elem|intval}}
{{/foreach}}
{{* Enregistrer les liaisons *}}
{{if $new_transactions != null}}
{{:api
method="POST"
path="accounting/transaction/%s/transactions"|args:$ligne_immo.id
assign="result"
assign_code="result_code"
transactions=$new_transactions
}}
{{/if}}
{{if $_POST.classify == "managed" || $_POST.classify == "amortized"}}
{{:assign type_immo=$_POST.classify}}
{{elseif $_POST.classify == "ignored"}}
@ -91,9 +137,8 @@
{{:assign type_immo=$_GET.type_immo}}
{{/if}}
{{:redirect force="index.html?ok=1&msg=infos&type_immo=%s"|args:$type_immo}}
{{else}}
{{:form_errors}}
{{/form}}
{{:form_errors}}
{{:admin_header title="Classer l'immobilisation" custom_css=$custom_css current="module_amortization"}}
@ -107,16 +152,13 @@
{{if $info_immo != null}}
{{:assign date_defaut=$info_immo.date}}
{{:assign duree_defaut=$info_immo.duration}}
{{:assign montant_defaut=$info_immo.amount}}
{{else}}
{{:assign duree_defaut=null}}
{{:assign montant_defaut=null}}
{{/if}}
{{*
- classer l'immobilisation
- renseigner ou modifier la date de mise en service, le montant de
l'immobilisation et la durée d'amortissement
- renseigner ou modifier la date de mise en service, les écritures associées ou la durée d'amortissement
*}}
<form method="post" action="">
<fieldset>
@ -134,7 +176,7 @@
<legend>Informations</legend>
<dl>
{{:input type="number" name="duree" label="Durée d'amortissement" default=$duree_defaut required=true min=1}}
{{:input type="money" name="montant" label="Montant" default=$montant_defaut help="à renseigner uniquement si différent du montant de l'acquisition"}}
{{:input type="list" name="transactions" default=$immo_transactions label="Écritures liées" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture d'avoir ou autre réduction du montant de l'acquisition"}}
{{:input type="date" name="date_mes" label="Date de mise en service" default=$date_defaut help="à renseigner uniquement si différente de la date d'acquisition"}}
</dl>
</fieldset>