Compare commits

...

2 commits

Author SHA1 Message Date
Jean-Christophe Engel
a15254f372 Traitement écritures sorties du bilan avant mise en service du module 2026-06-04 11:35:40 +02:00
Jean-Christophe Engel
780eb206ce Mutualisation infos immo, écritures crédit, amortissements liés et libres 2026-06-04 11:34:16 +02:00
29 changed files with 1409 additions and 1013 deletions

View file

@ -93,9 +93,7 @@
{{/select}} {{/select}}
{{/load}} {{/load}}
{{* chercher des écritures liées à l'immo courante au crédit du même compte {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
et déduire leur montant de celui de l'immo
*}}
{{:assign credit_immo=null}} {{:assign credit_immo=null}}
{{:assign total_credits=0}} {{:assign total_credits=0}}
{{#load {{#load

51
_common_detach.html Normal file
View file

@ -0,0 +1,51 @@
{{* -*- brindille -*- *}}
{{*
Supprimer l'association entre deux lignes
@param immo_doc_id : id du doc associé à la ligne d'immobilisation
@param line_id : id de la ligne à détacher
*}}
{{* données de l'immobilisation *}}
{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="ligne_immo, message"}}
{{if $message != null}}
{{:error message=$message}}
{{/if}}
{{* chercher la deuxième écriture *}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $line_id|intval
}}
{{:assign trans_id=$id_transaction}}
{{else}}
{{:error message="Écriture non trouvée"}}
{{/select}}
{{*
chercher les liaisons de l'écriture d'immobilisation
et supprimer la liaison avec la deuxième écriture
*}}
{{#select
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as linked_id
FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $ligne_immo.trans_id
}}
{{if $linked_id != $trans_id}}
{{:assign var="linked_transactions." value=$linked_id}}
{{/if}}
{{/select}}
{{* Enregistrer les liaisons *}}
{{:api
method="POST"
path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
assign="result"
assign_code="result_code"
transactions=$linked_transactions
}}

39
_get_amort_lines.html Normal file
View file

@ -0,0 +1,39 @@
{{* -*- brindille -*- *}}
{{*
lister les lignes d'amortissement liées à la ligne d'immobilisation
@param immo_doc_id : id du doc associé à l'immobilisation
@result linked_amort : lignes d'amortissement liées à la ligne d'immobilisation
@result total_amort : montant total des amortissements de l'immobilisation
*}}
{{:assign total_amort=0}}
{{#load type="amort_link"
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id = $immo_doc_id|intval
assign="amort_info"
}}
{{#select
line.id as line_id,
line.credit as amount,
line.label as line_label,
trans.id as trans_id,
trans.label as trans_label,
trans.date as date,
trans.id_year as year,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER join acc_accounts AS account on line.id_account = account.id
WHERE line.id = :amort_line_id
;
:amort_line_id = $amort_line_id
assign="amort_line"
}}
{{:assign var="amort_line.amount" value=$amort_info.amount|or:$amort_line.amount}}
{{:assign var="linked_amort.%s_%d"|args:$amort_line.date:$amort_info.id value=$amort_line}}
{{:assign total_amort="%d+%d"|math:$total_amort:$amort_line.amount}}
{{/select}}
{{/load}}

31
_get_credit_lines.html Normal file
View file

@ -0,0 +1,31 @@
{{* -*- brindille -*- *}}
{{*
chercher des écritures liées à l'immo paramètre au crédit du même compte
@param immo_doc_id : id du doc associé à l'immobilisation
@param linked_immos : liste des écritures liées
@param total_credits : montant total des écritures
*}}
{{:assign linked_immos=null}}
{{:assign total_credits=0}}
{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$immo_doc_id|intval}}
{{#select
line.credit,
line.id as line_id,
trans.id as trans_id,
trans.label,
trans.date
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign credit=$credit}}
{{:assign var="linked_immos." doc=$id trans_id=$trans_id credit_line_id=$line_id label=$label amount=$credit date=$date}}
{{/select}}
{{if $amount == null}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}

46
_get_free_amort.html Normal file
View file

@ -0,0 +1,46 @@
{{* -*- brindille -*- *}}
{{*
lister les amortissement non rattachés à une immo
@param filter_condition
*}}
{{#select
line.id as line_id,
line.id_transaction as trans_id,
line.credit as amount,
line.label as line_label,
trans.date as trans_date,
trans.label as trans_label,
trans.id_year as year,
account.id as account_id,
account.code as account_code,
account.label as account_label
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
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_line"
}}
{{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}}
{{:assign amort_amount=0}}
{{:assign keep_amort=true}}
{{#load type="amort_link"
where="$$.amort_line_id = :amort_line_id"
:amort_line_id=$amort_line.line_id|intval
assign="amort_link"
}}
{{if $amort_link.amount == null || $amort_link.amount == 0}}
{{:assign amort_amount=$amort_line.amount}}
{{:assign keep_amort=false}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}}
{{/if}}
{{else}}
{{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}}
{{/load}}
{{if $keep_amort && $amort_amount < $amort_line.amount}}
{{:assign var="free_amort_lines." value=$amort_line}}
{{/if}}
{{/select}}

39
_get_immo_data.html Normal file
View file

@ -0,0 +1,39 @@
{{* -*- brindille -*- *}}
{{*
Récupérer les infos d'une immobilisation
@param immo_doc_id : id du document associé à l'immobilisation
@result info_immo : infos du document associé
@result ligne_immo : données de la base
@result message non null si une erreur s'est produite
*}}
{{#load id=$immo_doc_id|intval assign="info_immo"}}
{{else}}
{{:assign error=true}}
{{:assign message="Immobilisation non trouvée"}}
{{/load}}
{{if ! $error}}
{{#select
line.id as line_id,
line.debit as amount,
line.label as line_label,
line.id_project as id_project,
trans.id as trans_id,
trans.label as trans_label,
trans.date as date_achat,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:assign message="Immobilisation non trouvée"}}
{{/select}}
{{/if}}

View file

@ -77,10 +77,7 @@
{{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}} {{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}}
{{/if}} {{/if}}
{{* {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
chercher des écritures liées à l'immo courante au crédit du même compte
et déduire leur montant de celui de l'immo
*}}
{{#load {{#load
type="credit_link" type="credit_link"
where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id
@ -102,24 +99,9 @@
{{:continue}} {{:continue}}
{{/if}} {{/if}}
{{* chercher des lignes des écritures d'amortissement liées à la ligne d'immobilisation *}} {{* montant des amortissements liés à l'immobilisation *}}
{{:assign amort_lines=null}} {{:include file="./_get_amort_lines.html" immo_doc_id=$immo_doc_id keep="total_amort"}}
{{:assign amort_amount=0}} {{:assign amort_amount=$total_amort}}
{{#load type="amort_link"
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id = $immo_doc_id
assign="amort_link"
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :amort_line_id;
:amort_line_id = $amort_line_id
}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$credit}}
{{/select}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amount}}
{{/if}}
{{/load}}
{{* classement par onglet *}} {{* classement par onglet *}}
{{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}} {{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}}

View file

@ -129,7 +129,7 @@
{{* {{*
TODO cas où : TODO cas où :
- il y a (au moins) une écriture d'avoir - il y a (au moins) une écriture d'avoir
- il y a une écriture dui solde l'immo (montant = montant immo - avoir - il y a une écriture qui solde l'immo (montant = montant immo - avoir
*}} *}}
{{* voir s'il existe une écriture qui solde l'immobilisation (voir ci-dessus) *}} {{* voir s'il existe une écriture qui solde l'immobilisation (voir ci-dessus) *}}

View file

@ -39,8 +39,11 @@
{{#form on="save"}} {{#form on="save"}}
{{if $_POST.classify == null}}
{{:error message="Vous devez faire un choix de classement"}}
{{/if}}
{{if ! $_POST.amortir}} {{if $_POST.classify == "ignored"}}
{{* ne pas amortir *}} {{* ne pas amortir *}}
{{:assign duration=0}} {{:assign duration=0}}
{{:assign libelle=null}} {{:assign libelle=null}}
@ -48,8 +51,20 @@
{{:assign date_achat=null}} {{:assign date_achat=null}}
{{:assign date_mes=null}} {{:assign date_mes=null}}
{{:assign status="ignored"}} {{:assign status="ignored"}}
{{elseif $_POST.classify == "archived"}}
{{* immobilisation sortie du bilan *}}
{{:save
key=""|uuid
validate_schema="schema.json"
type="immo"
line=$_GET.immo_line_id|intval
duration=0
status="archived"
assign_new_id="immo_doc_id"
}}
{{:redirect force="exit_step1.html?immo_doc_id=%s"|args:$immo_doc_id}}
{{else}} {{else}}
{{* immobilisation amortissable *}}
{{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}}
{{:assign da=$ligne_immo.date_achat|date_short}} {{:assign da=$ligne_immo.date_achat|date_short}}
{{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}} {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}}
@ -152,10 +167,13 @@
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.immo_trans_id}}</a></span> {{$ligne_immo.trans_label}}{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.trans_label}} — {{$ligne_immo.line_label}}{{/if}}</dd> <dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.immo_trans_id}}</a></span> {{$ligne_immo.trans_label}}{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.trans_label}} — {{$ligne_immo.line_label}}{{/if}}</dd>
<dt>Montant</dt> <dt>Montant</dt>
<dd class="money strong">{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}</dd> <dd class="money strong">{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}</dd>
{{if $montant_affecte > 0}}
<dt>Montant déjà affecté</dt> <dt>Montant déjà affecté</dt>
<dd class="money strong">{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}</dd> <dd class="money strong">{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}</dd>
<dt>Montant restant à affecter</dt> <dt>Montant restant à affecter</dt>
<dd class="money strong">{{"%f"|math:$reste|money_currency_html:false|raw}}</dd> <dt>Date de l'écriture d'immobilisation</dt> <dd class="money strong">{{"%f"|math:$reste|money_currency_html:false|raw}}</dd>
{{/if}}
<dt>Date de l'écriture d'immobilisation</dt>
<dd>{{$ligne_immo.date_achat|date_short}}</dd> <dd>{{$ligne_immo.date_achat|date_short}}</dd>
<dt>Compte d'immobilisation</dt> <dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.code}} — {{$ligne_immo.account_label}} <dd>{{$ligne_immo.code}} — {{$ligne_immo.account_label}}
@ -164,26 +182,23 @@
<form method="post" action=""> <form method="post" action="">
<fieldset> <fieldset>
<legend>Amortissement</legend> <legend>Classement</legend>
<dl> <dl id="classement_immo">
{{if $info_immo.status == 'ignored'}} <dt><label>Faites un choix</label> <b>(obligatoire)</b></dt>
{{:assign checked=null}} {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" help="Cette immobilisation sera classée parmi les immobilisations amortissables" default=$choix_defaut}}
{{else}} {{:input type="radio-btn" name="classify" value="archived" label="Immobilisation sortie du bilan" help="Cette immobilisation sera classée parmi les immobilisations sorties du bilan" default=$choix_defaut}}
{{:assign checked="checked"}} {{:input type="radio-btn" name="classify" value="ignored" label="Immobilisation à ignorer" help="Cette écriture n'apparaitra plus dans la liste des immobilisations" default=$choix_defaut}}
{{/if}}
{{:input id="amortir" type="checkbox" value=1 name="amortir" label="Amortir cette immobilisation sur une ou plusieurs années" checked="%s"|args:$checked help="Dé-cocher pour ne pas amortir"}}
<div class="masquable">
{{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 suffix="année(s)"}}
</div>
</dl> </dl>
</fieldset> </fieldset>
<fieldset class="masquable"> <fieldset class="masquable">
<legend>Informations facultatives</legend> <legend>Informations</legend>
<dl> <dl>
{{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 suffix="année(s)"}}
{{:input type="money" name="montant" label="Montant de l'immobilisation" required=true default=$reste help="à modifier si différent du montant de l'écriture d'immobilisation"}}
{{:input type="date" name="date_achat" label="Date d'acquisition" help="à renseigner uniquement si différente de la date de l'écriture d'immobilisation"}} {{:input type="date" name="date_achat" label="Date d'acquisition" help="à renseigner uniquement si différente de la date de l'écriture d'immobilisation"}}
{{:input type="date" name="date_mes" label="Date de mise en service" help="à renseigner uniquement si différente de la date d'acquisition"}} {{:input type="date" name="date_mes" label="Date de mise en service" help="à renseigner uniquement si différente de la date d'acquisition"}}
{{:input type="text" name="libelle" label="Libellé" help="à renseigner uniquement si différent du libellé de l'écriture d'immobilisation"}} {{:input type="text" name="libelle" label="Libellé" help="à renseigner uniquement si différent du libellé de l'écriture d'immobilisation"}}
{{:input type="money" name="montant" label="Montant de l'immobilisation" required=true default=$reste}}
</dl> </dl>
</fieldset> </fieldset>
@ -198,20 +213,23 @@
<script type="text/javascript" src="scripts.js"></script> <script type="text/javascript" src="scripts.js"></script>
<script type="text/javascript"> <script type="text/javascript">
function changeVisibility(evt, idcheck = 'f_amortir_1', hiddenclass = 'masquable', id_help = 'help_f_amortir_1') // afficher/masquer les champs de saisie
{ function toggleInputs(event) {
toggleVisibility(idcheck, document.querySelectorAll('.' + hiddenclass)); const classement_immo = document.getElementById('classement_immo');
const help_elem = document.getElementById(id_help); const managed = classement_immo.querySelector('input[type=radio][value=managed]');
if (document.getElementById(idcheck).checked) { if (managed.checked) {
help_elem.innerText = "Dé-cocher pour ne pas amortir"; g.toggle('.masquable', true);
} else { } else {
help_elem.innerText = "Cocher pour amortir"; g.toggle('.masquable', false);
} }
} }
toggleInputs();
(function () { (function () {
document.getElementById('f_amortir_1').onclick = changeVisibility; const radios = document.querySelectorAll('input[name="classify"]');
changeVisibility(null); radios.forEach(radio => {
radio.addEventListener("change", toggleInputs);
});
})(); })();
</script> </script>

View file

@ -7,62 +7,28 @@
*}} *}}
{{* données de l'immobilisation *}} {{* données de l'immobilisation *}}
{{#load type="immo" id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}} {{/if}}
{{#select
line.id as immo_line_id,
line.debit as montant,
line.label as line_label,
trans.id as immo_trans_id,
trans.label as label,
trans.date as date_achat,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} {{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{:assign label_immo=$info_immo.label|or:$ligne_immo.label}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}} {{/if}}
{{if $info_immo.amount != null}} {{if $info_immo.amount != null}}
{{:assign var="ligne_immo.montant" value=$info_immo.amount}} {{:assign var="ligne_immo.amount" value=$info_immo.amount}}
{{/if}} {{/if}}
{{if $info_immo.status == 'ignored'}} {{if $info_immo.status == 'ignored'}}
{{:error message="Cette immobilisation ne doit pas être amortie"}} {{:error message="Cette immobilisation ne doit pas être amortie"}}
{{/if}} {{/if}}
{{* {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
chercher des écritures liées à l'immo courante au crédit du même compte {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
et déduire leur montant de celui de l'immo {{:assign solde="%d-%d"|math:$ligne_immo.amount:$total_credits}}
*}}
{{:assign total_credits=0}}
{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}
{{:assign solde="%d-%d"|math:$ligne_immo.montant:$total_credits}}
{{if $info_immo.status == "amortized"}} {{if $info_immo.status == "amortized"}}
{{:assign amort_amount=$solde}} {{:assign amort_amount=$solde}}
@ -71,71 +37,13 @@
{{:assign valeur_residuelle=$solde}} {{:assign valeur_residuelle=$solde}}
{{/if}} {{/if}}
{{* lister les lignes des écritures d'amortissement liées à l'immobilisation *}} {{* lister les amortissements liés à l'immobilisation *}}
{{#load type="amort_link" {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}}
where="$$.immo_doc_id = :immo_doc_id" {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}}
:immo_doc_id = $_GET.immo_doc_id|intval
}}
{{#select
line.id as amort_line_id,
line.credit,
line.label as amort_line_label,
trans.id as amort_trans_id,
trans.label as amort_trans_label,
trans.date as amort_date,
trans.id_year as amort_year,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER join acc_accounts AS account on line.id_account = account.id
WHERE line.id = :amort_line_id
;
:amort_line_id = $amort_line_id
assign="amort_line"
}}
{{:assign var="amort_line.amort_amount" value=$amount|or:$credit}}
{{:assign var="linked_amort.%s_%d"|args:$amort_date:$id value=$amort_line}}
{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_line.amort_amount}}
{{/select}}
{{/load}}
{{if $valeur_residuelle > 0}} {{if $valeur_residuelle > 0}}
{{* Chercher des amortissements non rattachés à une immo *}} {{* lister les amortissements non rattachés à une immo *}}
{{#select {{:include file="./_get_free_amort.html" filter_condition="1" keep="free_amort_lines"}}
line.id as amort_line_id,
line.id_transaction AS amort_trans_id,
line.credit as amort_amount
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
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)
ORDER BY trans.date, trans.label;
assign="amort"
}}
{{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}}
{{:assign amort_amount=0}}
{{:assign keep_amort=true}}
{{#load type="amort_link"
where="$$.amort_line_id = :amort_line_id"
:amort_line_id = $amort_line_id
assign="amort_link"
}}
{{if $amort_link.amount == null || $amort_link.amount == 0}}
{{:assign amort_amount=$amort.amort_amount}}
{{:assign keep_amort=false}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}}
{{/if}}
{{else}}
{{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}}
{{/load}}
{{if $keep_amort && $amort_amount < $amort.amort_amount}}
{{:assign var="free_amort_lines." value=$amort}}
{{/if}}
{{/select}}
{{/if}} {{/if}}
{{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}} {{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}}
@ -199,7 +107,7 @@
<div class="informations"> <div class="informations">
<dl class="describe"> <dl class="describe">
<dt>Immobilisation</dt> <dt>Immobilisation</dt>
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.immo_trans_id}}</a></span> {{$label_immo}}</dd> <dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span> {{$label_immo}}</dd>
<dt>Compte d'immobilisation</dt> <dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}</dd> <dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}</dd>
<dt>Début d'amortissement</dt> <dt>Début d'amortissement</dt>
@ -209,7 +117,7 @@
<dd>{{$info_immo.duration}} ans</dd> <dd>{{$info_immo.duration}} ans</dd>
{{/if}} {{/if}}
<dt>Montant de l'immobilisation</dt> <dt>Montant de l'immobilisation</dt>
<dd class="money strong">{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}</dd> <dd class="money strong">{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}</dd>
{{if $total_credits > 0}} {{if $total_credits > 0}}
<dt>Montant des avoirs</dt> <dt>Montant des avoirs</dt>
<dd class="money">{{"%f"|math:$total_credits|money_currency_html:false|raw}}</dd> <dd class="money">{{"%f"|math:$total_credits|money_currency_html:false|raw}}</dd>
@ -237,9 +145,9 @@
<tr> <tr>
<th class="num"></th> <th class="num"></th>
<th>Date</th> <th>Date</th>
<th>Libellé</th>
<th class="nombre">Montant</th> <th class="nombre">Montant</th>
<th class="nombre">Valeur nette</th> <th class="nombre">Valeur nette</th>
<th>Libellé</th>
<th>N° compte</th> <th>N° compte</th>
<th>Compte</th> <th>Compte</th>
<th class="actions"></th> <th class="actions"></th>
@ -248,24 +156,24 @@
<tbody> <tbody>
{{#foreach from=$linked_amort|ksort item="line"}} {{#foreach from=$linked_amort|ksort item="line"}}
{{* données de l'écriture *}} {{* données de l'écriture *}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}}
{{:assign solde="%f-%d"|math:$solde:$line.amort_amount}} {{:assign solde="%f-%d"|math:$solde:$line.amount}}
<tr> <tr>
<td class="num"><a href="{{$trans_url}}">#{{$line.amort_trans_id}}</a></td> <td class="num"><a href="{{$trans_url}}">#{{$line.trans_id}}</a></td>
<td>{{$line.amort_date|date_short}}</td> <td>{{$line.date|date_short}}</td>
<td class="money">{{"%f"|math:$line.amort_amount|money_html:false|raw}}</td>
<td class="money">{{"%f"|math:$solde|money_html:false|raw}}</td>
<td> <td>
{{$line.amort_trans_label}} {{$line.trans_label}}
{{if $line.amort_line_label != null && $line.amort_line_label != $line.amort_trans_label}} {{if $line.line_label != null && $line.line_label != $line.trans_label}}
— {{$line.amort_line_label}} — {{$line.line_label}}
{{/if}} {{/if}}
</td> </td>
<td class="money">{{"%f"|math:$line.amount|money_html:false|raw}}</td>
<td class="money">{{"%f"|math:$solde|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$line.account_code}}</a></td> <td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td> <td>{{$line.account_label}}</td>
<td> <td>
{{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.amort_line_id shape="minus"}} {{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}}
</td> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}

View file

@ -8,31 +8,16 @@
*}} *}}
{{* données de l'immobilisation *}} {{* données de l'immobilisation *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}} {{/if}}
{{#select
line.id_transaction as immo_trans_id,
line.debit as montant,
trans.label as trans_label,
line.label as line_label
FROM acc_transactions_lines as line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}} {{/if}}
{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.montant}} {{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}}
{{* chercher l'écriture d'amortissement *}} {{* chercher l'écriture d'amortissement *}}
{{#select {{#select
@ -61,7 +46,7 @@
{{* montant de l'écriture d'amortissement déjà affecté *}} {{* montant de l'écriture d'amortissement déjà affecté *}}
{{:assign montant_affecte=0}} {{:assign montant_affecte=0}}
{{#load type="amort_link" assign="linked_amort." {{#load type="amort_link"
where="$$.amort_line_id = :amort_line_id" where="$$.amort_line_id = :amort_line_id"
:amort_line_id = $_GET.amort_line_id|intval :amort_line_id = $_GET.amort_line_id|intval
}} }}
@ -92,49 +77,14 @@
{{/if}} {{/if}}
{{/if}} {{/if}}
{{* vérifier que le montant total des amortissements ne dépasse pas la valeur de l'immo *}} {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{* montant de l'immo *}} {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
{{:assign total_credits=0}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $_GET.immo_doc_id|intval
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}
{{:assign montant_immo="%d-%d"|math:$montant_immo:$total_credits}} {{:assign montant_immo="%d-%d"|math:$montant_immo:$total_credits}}
{{* montant des amortissements *}} {{* montant des amortissements *}}
{{:assign total_amort=0}} {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_amort"}}
{{#load
type="amort_link"
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id=$_GET.immo_doc_id|intval
}}
{{if $amount == null || $amount == 0}}
{{#select
line.credit
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER join acc_accounts AS account on line.id_account = account.id
WHERE line.id = :amort_line_id
;
:amort_line_id = $amort_line_id
}}
{{:assign total_amort="%d+%d"|math:$total_amort:$credit}}
{{/select}}
{{else}}
{{:assign total_amort="%d+%d"|math:$total_amort:$amount}}
{{/if}}
{{/load}}
{{* vérifier que le montant total des amortissements ne dépasse pas la valeur de l'immo *}}
{{:assign vnc="%d-%d"|math:$montant_immo:$total_amort}} {{:assign vnc="%d-%d"|math:$montant_immo:$total_amort}}
{{:assign total_amort="%d+%d"|math:$total_amort:$montant_amort}} {{:assign total_amort="%d+%d"|math:$total_amort:$montant_amort}}
{{if $total_amort > $montant_immo}} {{if $total_amort > $montant_immo}}
@ -151,7 +101,7 @@
END as linked_id END as linked_id
FROM acc_transactions_links as links FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $ligne_immo.immo_trans_id :immo_trans_id = $ligne_immo.trans_id
}} }}
{{:assign var="linked_transactions." value=$linked_id}} {{:assign var="linked_transactions." value=$linked_id}}
{{/select}} {{/select}}
@ -160,7 +110,7 @@
{{:assign var="linked_transactions." value=$amort_line.trans_id}} {{:assign var="linked_transactions." value=$amort_line.trans_id}}
{{:api {{:api
method="POST" method="POST"
path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
assign="result" assign="result"
assign_code="result_code" assign_code="result_code"
transactions=$linked_transactions transactions=$linked_transactions
@ -193,7 +143,11 @@
}} }}
{{/if}} {{/if}}
{{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id:$status}} {{if $_GET.from == "exit"}}
{{:redirect to="exit_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
{{else}}
{{:redirect to="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id:$status}}
{{/if}}
{{/form}} {{/form}}
{{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}}

View file

@ -1,41 +1,30 @@
{{* -*- brindille -*- *}} {{* -*- brindille -*- *}}
{{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}}
{{* {{*
Enregistrer la liaison entre une ligne d'immobilisation et Enregistrer la liaison entre une ligne d'immobilisation et
une ligne d'écriture au crédit du compte de l'immobilisation une ligne d'écriture au crédit du compte de l'immobilisation
@param credit_line_id : ligne d'écriture au crédit du compte de l'immobilisation
@param immo_doc_id : numéro du doc d'immo @param immo_doc_id : numéro du doc d'immo
@param credit_line_id : ligne d'écriture au crédit du compte de l'immobilisation
*}} *}}
{{* chercher l'écriture d'immobilisation *}} {{* données de l'immobilisation *}}
{{#load id=$_GET.immo_doc_id|intval assign="doc_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non gérée ; vous devez d'abord renseigner ses informations"}} {{:error message=$message}}
{{/load}} {{/if}}
{{#select
line.id as immo_line_id,
line.id_transaction as immo_trans_id,
line.label as line_label,
trans.label as trans_label
FROM acc_transactions_lines as line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :line_id;
:line_id = $doc_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign label_immo=$doc_immo.label|or:$ligne_immo.trans_label}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}} {{/if}}
{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
{{:assign solde_immo="%d-%d"|math:$ligne_immo.amount:$total_credits}}
{{* chercher l'écriture au crédit du compte d'immobilisation *}} {{* chercher l'écriture au crédit du compte d'immobilisation *}}
{{#select {{#select
line.id_transaction as credit_trans_id, line.id_transaction as trans_id,
line.credit as amount, line.credit as amount,
trans.label as trans_label, trans.label as trans_label,
line.label as line_label line.label as line_label
@ -46,13 +35,13 @@
assign="credit_line" assign="credit_line"
}} }}
{{else}} {{else}}
{{:error message="Impossible de trouver l'écriture au crédit du compte de l'immobilisation de la ligne « %s »"|args:$ligne_immo.trans_label}} {{:error message="Écriture au crédit non trouvée"}}
{{/select}} {{/select}}
{{:assign credit_trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$credit_line.credit_trans_id}} {{:assign credit_trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$credit_line.trans_id}}
{{* montant de l'écriture de crédit déjà affecté *}} {{* montant de l'écriture de crédit déjà affecté *}}
{{:assign montant_affecte=0}} {{:assign montant_affecte=0}}
{{#load type="credit_link" assign="linked_immo." {{#load type="credit_link"
where="$$.credit_line_id = :credit_line_id" where="$$.credit_line_id = :credit_line_id"
:credit_line_id = $_GET.credit_line_id|intval :credit_line_id = $_GET.credit_line_id|intval
}} }}
@ -62,15 +51,23 @@
{{* Traiter l'envoi du formulaire *}} {{* Traiter l'envoi du formulaire *}}
{{#form on="save"}} {{#form on="save"}}
{{* vérifier que le montant saisi est inférieur au reste *}}
{{if $_POST.montant == null}} {{if $_POST.montant == null}}
{{if $montant_affecte == 0}} {{if $montant_affecte == 0}}
{{:assign saved_credit=null}} {{:assign saved_credit=null}}
{{:assign montant_credit=$credit_line.amount}}
{{else}} {{else}}
{{:assign saved_credit=$reste}} {{:assign saved_credit=$reste}}
{{:assign montant_credit=$reste}}
{{/if}} {{/if}}
{{else}} {{else}}
{{:assign montant_credit=$_POST.montant|money_int}} {{:assign montant_credit=$_POST.montant|money_int}}
{{* vérifier que le montant saisi est inférieur au solde de l'écriture d'immobilisation *}}
{{if $montant_credit > $solde_immo}}
{{:assign solde_nb="%f"|math:$solde_immo|money_currency:false}}
{{:error message="Le montant de l'avoir ne peut être supérieur au montant de l'immobilisation (%s)"|args:$solde_nb}}
{{/if}}
{{* vérifier que le montant saisi est inférieur au reste de l'écriture de crédit *}}
{{if $montant_credit > $reste}} {{if $montant_credit > $reste}}
{{:assign reste_nb="%f"|math:$reste|money_currency:false}} {{:assign reste_nb="%f"|math:$reste|money_currency:false}}
{{:error message="Le montant de l'avoir ne peut être supérieur au reste (%s)"|args:$reste_nb}} {{:error message="Le montant de l'avoir ne peut être supérieur au reste (%s)"|args:$reste_nb}}
@ -90,18 +87,18 @@
END as linked_id END as linked_id
FROM acc_transactions_links as links FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $ligne_immo.immo_trans_id :immo_trans_id = $ligne_immo.trans_id
}} }}
{{:assign var="linked_transactions." value=$linked_id}} {{:assign var="linked_transactions." value=$linked_id}}
{{/select}} {{/select}}
{{* ajouter la nouvelle liaison *}} {{* ajouter la nouvelle liaison *}}
{{:assign var="linked_transactions." value=$credit_line.credit_trans_id}} {{:assign var="linked_transactions." value=$credit_line.trans_id}}
{{* Enregistrer les liaisons *}} {{* Enregistrer les liaisons *}}
{{:api {{:api
method="POST" method="POST"
path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
assign="result" assign="result"
assign_code="result_code" assign_code="result_code"
transactions=$linked_transactions transactions=$linked_transactions
@ -120,9 +117,22 @@
amount=$saved_credit amount=$saved_credit
}} }}
{{:redirect force="details_immo.html?immo_doc_id=%s&ok=1&msg=attach_immo"|args:$_GET.immo_doc_id}} {{if $montant_credit == $solde_immo}}
{{:save
id=$_GET.immo_doc_id
status="archived"
}}
{{/if}}
{{if $_GET.from == "exit"}}
{{:redirect force="exit_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
{{else}}
{{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}}
{{/if}}
{{*:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=attach_credit"|args:$_GET.immo_doc_id*}}
{{/form}} {{/form}}
{{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}}
{{if ! $dialog}} {{if ! $dialog}}
{{:include {{:include
file="_nav.html" file="_nav.html"
@ -139,7 +149,7 @@
<dt>Immobilisation</dt> <dt>Immobilisation</dt>
<dd>{{$label_immo}}</dd> <dd>{{$label_immo}}</dd>
<dt>Écriture au crédit du compte d'immobilisation</dt> <dt>Écriture au crédit du compte d'immobilisation</dt>
<dd><span class="num"><a href="{{$credit_trans_url}}">#{{$credit_line.credit_trans_id}}</a></span> {{$credit_line.trans_label}}{{if $credit_line.line_label != null && $credit_line.line_label != $credit_line.trans_label}} — {{$credit_line.line_label}}{{/if}}</dd> <dd><span class="num"><a href="{{$credit_trans_url}}">#{{$credit_line.trans_id}}</a></span> {{$credit_line.trans_label}}{{if $credit_line.line_label != null && $credit_line.line_label != $credit_line.trans_label}} — {{$credit_line.line_label}}{{/if}}</dd>
<dt>Montant de l'écriture</dt> <dt>Montant de l'écriture</dt>
<dd>{{$credit_line.amount|money_currency_html:false|raw}}</dd> <dd>{{$credit_line.amount|money_currency_html:false|raw}}</dd>
<dt>Montant déjà affecté</dt> <dt>Montant déjà affecté</dt>

61
attach_exit.html Normal file
View file

@ -0,0 +1,61 @@
{{* -*- brindille -*- *}}
{{*
Enregistrer la liaison entre une écriture d'immobilisation et
une écriture de sortie d'immobilisation
@param immo_doc_id : id du document associé à l'immobilisation
@param exit_line_id : ligne de l'écriture de sortie d'immobilisation
*}}
{{* données de l'immobilisation *}}
{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}}
{{if $message != null}}
{{:error message=$message}}
{{/if}}
{{* chercher l'écriture de sortie d'immobilisation *}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $_GET.exit_line_id|intval
}}
{{:assign rebut_id=$id_transaction}}
{{else}}
{{:error message="Impossible de trouver l'écriture de sortie d'immobilisation"}}
{{/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
FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $ligne_immo.trans_id
}}
{{:assign var="linked_transactions." value=$linked_id}}
{{/select}}
{{* ajouter la nouvelle liaison *}}
{{:assign var="linked_transactions." value=$rebut_id}}
{{* Enregistrer les liaisons *}}
{{:api
method="POST"
path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
assign="result"
assign_code="result_code"
transactions=$linked_transactions
}}
{{* enregistrer la liaison de l'écriture de sortie *}}
{{:save
key=""|uuid
type="exit_link"
immo_doc_id=$info_immo.id
exit_line_id=$_GET.exit_line_id|intval
}}
{{:redirect to="exit_step3.html?immo_doc_id=%s&ok=1&msg=attach_exit"|args:$_GET.immo_doc_id}}

View file

@ -5,114 +5,49 @@
@param immo_doc_id : id du doc associé à l'immo @param immo_doc_id : id du doc associé à l'immo
*}} *}}
{{* Infos de l'immobilisation *}} {{* données de l'immobilisation *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}} {{/if}}
{{#select {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
line.debit as montant, {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
trans.id AS trans_id, {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
trans.date as date_achat, {{/if}}
trans.label,
account.code as account_code
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign date_achat=$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{if $info_immo.date_mes != null && $info_immo.date_mes != $date_achat}}
{{:assign date_mes=$info_immo.date_mes}}
{{/if}}
{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} {{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{if $info_immo.amount != null}} {{if $info_immo.amount != null}}
{{:assign var="ligne_immo.montant" value=$info_immo.amount}} {{:assign var="ligne_immo.amount" value=$info_immo.amount}}
{{/if}} {{/if}}
{{* chercher des écritures liées à l'immo courante au crédit du même compte {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
et déduire leur montant de celui de l'immo {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
*}} {{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}}
{{:assign total_credits=0}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id = $info_immo.id
assign="credit_link"
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{else}}
{{*
TODO : à garder ?
pas de doc => voir liaison écritures
*}}
{{#select
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as other_id,
line.credit
FROM acc_transactions AS trans
INNER JOIN acc_transactions_links as links
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_trans_id AND line.credit > 0 AND acc.code = :account;
:immo_trans_id=$ligne_immo.trans_id
:account=$ligne_immo.account_code
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{/load}}
{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}}
{{:assign total_amort=0}} {{* lister les amortissements liés à l'immobilisation *}}
{{#load type="amort_link" {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}}
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id = $_GET.immo_doc_id|intval
}}
{{#select
line.credit,
trans.date as amort_date
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :amort_line_id
;
:amort_line_id = $amort_line_id
assign="amort_line"
}}
{{:assign amort_amount=$amount|or:$credit}}
{{:assign total_amort="%d+%d"|math:$total_amort:$amort_amount}}
{{:assign var="linked_amort.%s_%d"|args:$amort_date:$id value=$amort_line}}
{{/select}}
{{/load}}
{{:assign amort_number=$linked_amort|count}} {{:assign amort_number=$linked_amort|count}}
{{#foreach from=$linked_amort|ksort item="line"}} {{#foreach from=$linked_amort|ksort item="line"}}
{{if $first_amort_date == null}} {{if $first_amort_date == null}}
{{:assign first_amort_date=$line.amort_date}} {{:assign first_amort_date=$line.date}}
{{/if}} {{/if}}
{{if $last_amort_date == null}} {{if $last_amort_date == null}}
{{:assign last_amort_date=$line.amort_date}} {{:assign last_amort_date=$line.date}}
{{elseif $line.amort_date > $last_amort_date}} {{elseif $line.date > $last_amort_date}}
{{:assign last_amort_date=$line.amort_date}} {{:assign last_amort_date=$line.date}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{if $total_amort == 0}} {{if $total_amort == 0}}
{{if $info_immo.status == "amortized"}} {{if $info_immo.status == "amortized"}}
{{:assign total_amort=$ligne_immo.montant}} {{:assign total_amort=$ligne_immo.amount}}
{{/if}} {{/if}}
{{else}} {{else}}
{{:assign date_debut=$last_amort_date}} {{:assign date_debut=$last_amort_date}}
@ -120,7 +55,7 @@
{{:assign ts_debut=$date_debut|strtotime}} {{:assign ts_debut=$date_debut|strtotime}}
{{:assign ts_debut="%d+(60*60*24)"|math:$ts_debut}} {{:assign ts_debut="%d+(60*60*24)"|math:$ts_debut}}
{{:assign date_debut=$ts_debut|date:"Y-m-d"}} {{:assign date_debut=$ts_debut|date:"Y-m-d"}}
{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$total_amort}} {{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$total_amort}}
{{* {{*
lister les exercices ouverts dont la date de fin est postérieure à la date du dernier amortissment lister les exercices ouverts dont la date de fin est postérieure à la date du dernier amortissment
@ -205,19 +140,19 @@
{{:form_errors}} {{:form_errors}}
{{* formulaire de sortie du bilan *}} {{* formulaire de sortie du bilan *}}
<h3>Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan</h3> <h3>Sortir l'immobilisation « {{$label_immo}} » du bilan</h3>
<form method="post" action=""> <form method="post" action="">
<div class="informations"> <div class="informations">
<legend>Données de l'imobilisation</legend> <legend>Données de l'imobilisation</legend>
<dl class="describe"> <dl class="describe">
<dt>Montant</dt> <dt>Montant</dt>
<dd id="montant_immo" class="money">{{$ligne_immo.montant|money_currency_html:false|raw}}</dd> <dd id="montant_immo" class="money">{{$ligne_immo.amount|money_currency_html:false|raw}}</dd>
<dt>Date d'acquisition</dt> <dt>Date d'acquisition</dt>
<dd>{{$info_immo.date_achat|or:$ligne_immo.date_achat|date_short}}</dd> <dd>{{$date_achat|date_short}}
{{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}} {{if $date_mes != null}}
<dt>Date de mise en service</dt> <dt>Date de mise en service</dt>
<dd>{{$info_immo.date_mes|date_short}}</dd> <dd>{{$date_mes|date_short}}</dd>
{{/if}} {{/if}}
{{if $info_immo.duration != null}} {{if $info_immo.duration != null}}
<dt>Durée de l'amortissement</dt> <dt>Durée de l'amortissement</dt>

View file

@ -10,78 +10,35 @@
@param exit_date : date de sortie de l'immobilisation @param exit_date : date de sortie de l'immobilisation
*}} *}}
{{* TODO *}} {{* TODO *}}
{{* Infos de l'immobilisation *}} {{* données de l'immobilisation *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}}
{{#select
line.debit as montant,
trans.id AS trans_id,
trans.date as date_achat,
trans.label,
account.code as account_code
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{* chercher des écritures liées à l'immo courante au crédit du même compte
et déduire leur montant de celui de l'immo
*}}
{{:assign total_credits=0}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id = $info_immo.id
assign="credit_link"
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}} {{/if}}
{{else}}
{{* {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
TODO : à garder ? {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
pas de doc => voir liaison écritures {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
*}} {{/if}}
{{#select
CASE links.id_related = :immo_trans_id {{:assign date_achat=$info_immo.date_achat|or:$ligne_immo.date_achat}}
WHEN true THEN links.id_transaction {{if $info_immo.date_mes != null && $info_immo.date_mes != $date_achat}}
WHEN false THEN links.id_related {{:assign date_mes=$info_immo.date_mes}}
END as other_id, {{/if}}
line.credit
FROM acc_transactions AS trans {{if $info_immo.amount != null}}
INNER JOIN acc_transactions_links as links {{:assign var="ligne_immo.amount" value=$info_immo.amount}}
ON (trans.id = links.id_transaction OR trans.id = links.id_related) {{/if}}
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 {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
:immo_trans_id=$ligne_immo.trans_id {{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}}
:account=$ligne_immo.account_code {{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$_GET.amort_amount}}
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{/load}}
{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}}
{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount}}
{{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}} {{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}}
{{if $valeur_nette > 0}} {{if $valeur_nette > 0}}
{{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}} {{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}}
{{:assign annuite="%f/%f"|math:$ligne_immo.montant:$info_immo.duration}} {{:assign annuite="%f/%f"|math:$ligne_immo.amount:$info_immo.duration}}
{{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}} {{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}}
{{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}} {{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}}
{{/if}} {{/if}}
@ -106,19 +63,19 @@
{{:form_errors}} {{:form_errors}}
<h3>Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan</h3> <h3>Sortir l'immobilisation « {{$label_immo}} » du bilan</h3>
<form method="post" action=""> <form method="post" action="">
<div class="informations"> <div class="informations">
<legend>Données de l'imobilisation</legend> <legend>Données de l'imobilisation</legend>
<dl class="describe"> <dl class="describe">
<dt>Montant</dt> <dt>Montant</dt>
<dd id="montant_immo" class="money">{{$ligne_immo.montant|money_currency_html:false|raw}}</dd> <dd id="montant_immo" class="money">{{$ligne_immo.amount|money_currency_html:false|raw}}</dd>
<dt>Date d'acquisition</dt> <dt>Date d'acquisition</dt>
<dd >{{$ligne_immo.date_achat|date_short}}</dd> <dd >{{$date_achat|date_short}}</dd>
{{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}} {{if $date_mes != null}}
<dt>Date de mise en service</dt> <dt>Date de mise en service</dt>
<dd>{{$info_immo.date_mes|date_short}}</dd> <dd>{{$date_mes|date_short}}</dd>
{{/if}} {{/if}}
<dt>Durée de l'amortissement</dt> <dt>Durée de l'amortissement</dt>
<dd id="duree_amort" class="num">{{$info_immo.duration}} ans</dd> <dd id="duree_amort" class="num">{{$info_immo.duration}} ans</dd>

View file

@ -5,30 +5,12 @@
@param immo_doc_id @param immo_doc_id
*}} *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}} {{/if}}
{{#select
trans.id as immo_trans_id,
trans.label as trans_label,
trans.date as date_achat,
line.debit as montant,
line.label as line_label,
acc.code,
acc.label as account_label
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 = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
{{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} {{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}}
{{:assign immo_label=$immo_label|cat::" — "|cat:$ligne_immo.line_label}} {{:assign immo_label=$immo_label|cat::" — "|cat:$ligne_immo.line_label}}
@ -49,7 +31,6 @@
{{:assign var="linked_trans." value=$id}} {{:assign var="linked_trans." value=$id}}
{{/select}} {{/select}}
{{:debug linked_trans=$linked_trans}}
{{if $linked_trans != null}} {{if $linked_trans != null}}
{{* chercher et supprimer les écritures liées *}} {{* chercher et supprimer les écritures liées *}}
{{#select {{#select
@ -62,7 +43,7 @@
ON (links.id_transaction = trans.id OR links.id_related = trans.id) ON (links.id_transaction = trans.id OR links.id_related = trans.id)
WHERE trans.id = :immo_trans_id WHERE trans.id = :immo_trans_id
; ;
:immo_trans_id=$ligne_immo.immo_trans_id :immo_trans_id=$ligne_immo.trans_id
}} }}
{{if ! $linked_trans|has:$linked_id}} {{if ! $linked_trans|has:$linked_id}}
{{:assign var="linked_transactions." value=$linked_id}} {{:assign var="linked_transactions." value=$linked_id}}
@ -72,7 +53,7 @@
{{* enregistrer les liaisons restantes *}} {{* enregistrer les liaisons restantes *}}
{{:api {{:api
method="POST" method="POST"
path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
assign="result" assign="result"
assign_code="result_code" assign_code="result_code"
transactions=$linked_transactions transactions=$linked_transactions
@ -92,8 +73,8 @@
{{:admin_header title="Supprimer" current="module_amortization"}} {{:admin_header title="Supprimer" current="module_amortization"}}
{{:form_errors}} {{:form_errors}}
{{:delete_form {{:delete_form
legend="Immobilisation « #%s %s »"|args:$ligne_immo.immo_trans_id:$immo_label legend="Immobilisation « #%s %s »"|args:$ligne_immo.trans_id:$immo_label
warning="Supprimer les paramètres de l'immobilisation « #%s %s » ?"|args:$ligne_immo.immo_trans_id:$immo_label warning="Supprimer les paramètres de l'immobilisation « #%s %s » ?"|args:$ligne_immo.trans_id:$immo_label
info="L'écriture d'immobilisation ne sera pas supprimée ; les nouveaux paramètres pourront être saisis depuis l'onglet « À classer »" info="L'écriture d'immobilisation ne sera pas supprimée ; les nouveaux paramètres pourront être saisis depuis l'onglet « À classer »"
}} }}

View file

@ -7,62 +7,7 @@
@param amort_line_id : id de la ligne d'amortissement @param amort_line_id : id de la ligne d'amortissement
*}} *}}
{{* données de l'immobilisation *}} {{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.amort_line_id}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/load}}
{{* écriture d'immobilisation *}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $info_immo.line
}}
{{:assign immo_trans_id=$id_transaction}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{* écriture d'amortissement *}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $_GET.amort_line_id|intval
}}
{{:assign amort_id=$id_transaction}}
{{else}}
{{:error message="Amortissement non trouvé"}}
{{/select}}
{{*
chercher les liaisons de l'écriture d'immobilisation
et supprimer la liaison avec l'écriture d'amortissement
*}}
{{#select
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as linked_id
FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $immo_trans_id
}}
{{if $linked_id != $amort_id}}
{{:assign var="linked_transactions." value=$linked_id}}
{{/if}}
{{/select}}
{{* Enregistrer les liaisons *}}
{{:api
method="POST"
path="accounting/transaction/%s/transactions"|args:$immo_trans_id
assign="result"
assign_code="result_code"
transactions=$linked_transactions
}}
{{* supprimer le doc de liaison entre les lignes *}} {{* supprimer le doc de liaison entre les lignes *}}
{{#load type="amort_link" {{#load type="amort_link"
@ -74,9 +19,14 @@
{{/load}} {{/load}}
{{* marquer immo non soldée *}} {{* marquer immo non soldée *}}
{{* TODO : À VÉRIFIER *}}
{{:save {{:save
key=$info_immo.key key=$info_immo.key
status="managed" status="managed"
}} }}
{{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=detach"|args:$_GET.immo_doc_id:}} {{if $_GET.from == "exit"}}
{{:redirect to="exit_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
{{else}}
{{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=detach_amort"|args:$_GET.immo_doc_id:}}
{{/if}}

32
detach_credit.html Normal file
View file

@ -0,0 +1,32 @@
{{* -*- brindille -*- *}}
{{*
Supprimer l'association entre une écriture d'immobilisation et
une écriture au crédit du compte d'immobilisation
@param immo_doc_id : id du doc associé à l'immo
@param credit_line_id : id de la ligne de crédit
*}}
{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.credit_line_id}}
{{* supprimer le doc de liaison entre les lignes *}}
{{#load type="credit_link"
where="$$.immo_doc_id = :immo_doc_id AND $$.credit_line_id = :credit_line_id"
:immo_doc_id=$_GET.immo_doc_id|intval
:credit_line_id = $_GET.credit_line_id|intval
}}
{{:delete id=$id}}
{{/load}}
{{* TODO : À VÉRIFIER *}}
{{:save
id=$_GET.immo_doc_id|intval
status="managed"
}}
{{if $_GET.from == "exit"}}
{{:redirect to="exit_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
{{else}}
{{:redirect to="amortization.html?immo_doc_id=%s&ok=1&msg=detach_avoir&"|args:$_GET.immo_doc_id}}
{{/if}}
{{*:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=detach&"|args:$_GET.immo_doc_id*}}

21
detach_exit.html Normal file
View file

@ -0,0 +1,21 @@
{{* -*- brindille -*- *}}
{{*
Supprimer l'association entre une écriture d'immobilisation et
une écriture de sortie de bilan
@param immo_doc_id : id du doc associé à l'immo
@param exit_line_id : id de la ligne de sortie de bilan
*}}
{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.exit_line_id}}
{{* supprimer le doc de liaison entre les lignes *}}
{{#load type="exit_link"
where="$$.immo_doc_id = :immo_doc_id AND $$.exit_line_id = :exit_line_id"
:immo_doc_id=$_GET.immo_doc_id|intval
:exit_line_id = $_GET.exit_line_id|intval
}}
{{:delete id=$id}}
{{/load}}
{{:redirect to="exit_step3.html?immo_doc_id=%s&ok=1&msg=detach_exit"|args:$_GET.immo_doc_id}}

View file

@ -1,75 +0,0 @@
{{* -*- brindille -*- *}}
{{*
Supprimer l'association entre une écriture d'immobilisation et
une écriture au crédit du compte d'immobilisation
@param immo_doc_id : id du doc associé à l'immo
@param credit_line_id : id de la ligne de crédit
*}}
{{* données de l'immobilisation *}}
{{#load type="immo" id=$_GET.immo_doc_id|intval assign="info_immo"}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/load}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $info_immo.line
}}
{{:assign immo_trans_id=$id_transaction}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{* chercher l'écriture au crédit *}}
{{#select
id_transaction
FROM acc_transactions_lines
WHERE id = :line_id;
:line_id = $_GET.credit_line_id|intval
}}
{{:assign credit_id=$id_transaction}}
{{else}}
{{:error message="Écriture au crédit non trouvée"}}
{{/select}}
{{*
chercher les liaisons de l'écriture d'immobilisation
et supprimer la liaison avec l'écriture au crédit
*}}
{{#select
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as linked_id
FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $immo_trans_id
}}
{{if $linked_id != $credit_id}}
{{:assign var="linked_transactions." value=$linked_id}}
{{/if}}
{{/select}}
{{* Enregistrer les liaisons *}}
{{:api
method="POST"
path="accounting/transaction/%s/transactions"|args:$immo_trans_id
assign="result"
assign_code="result_code"
transactions=$linked_transactions
}}
{{* supprimer le doc de liaison entre les lignes *}}
{{#load type="credit_link"
where="$$.immo_doc_id = :immo_doc_id AND $$.credit_line_id = :credit_line_id"
:immo_doc_id=$_GET.immo_doc_id|intval
:credit_line_id = $_GET.credit_line_id|intval
}}
{{:delete id=$id}}
{{/load}}
{{:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=detach&"|args:$_GET.immo_doc_id}}

View file

@ -9,84 +9,25 @@
*}} *}}
{{* données de l'immobilisation *}} {{* données de l'immobilisation *}}
{{#load type="immo" id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}} {{/if}}
{{#select {{:assign var="info_immo.amount" value=$info_immo.amount|or:$ligne_immo.amount}}
trans.id as immo_trans_id,
trans.label as label,
trans.date as date_achat,
line.id as immo_line_id,
line.debit as montant,
line.label as line_label,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign var="info_immo.amount" value=$info_immo.amount|or:$ligne_immo.montant}}
{{:assign var="info_immo.date_achat" value=$info_immo.date_achat|or:$ligne_immo.date_achat}} {{:assign var="info_immo.date_achat" value=$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{:assign var="info_immo.date_mes" value=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} {{:assign var="info_immo.date_mes" value=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{:assign var="info_immo.label" value=$info_immo.label|or:$ligne_immo.label}} {{:assign var="info_immo.label" value=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $info_immo.label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $info_immo.label}}
{{:assign var="info_immo.label" value=$info_immo.label|cat:" — "|cat:$ligne_immo.line_label}} {{:assign var="info_immo.label" value=$info_immo.label|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}} {{/if}}
{{* {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
chercher des écritures liées à l'immo courante au crédit du même compte {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}}
et déduire leur montant de celui de l'immo
*}}
{{:assign linked_immos=null}}
{{:assign total_credits=0}}
{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}}
{{#select
line.credit,
line.id as line_id,
trans.id as trans_id,
trans.label,
trans.date
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign credit=$credit}}
{{:assign var="linked_immos." trans_id=$trans_id credit_line_id=$line_id label=$label amount=$credit date=$date}}
{{/select}}
{{if $amount == null}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}
{{:assign solde="%d-%d"|math:$info_immo.amount:$total_credits}} {{:assign solde="%d-%d"|math:$info_immo.amount:$total_credits}}
{{:assign total_amort=0}} {{* lister les amortissements liés à l'immobilisation *}}
{{* lister les docs d'amortissement liées à la ligne d'immobilisation *}} {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_amort"}}
{{#load type="amort_link"
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id=$_GET.immo_doc_id|intval
}}
{{if $amount != null}}
{{:assign total_amort="%d+%d"|math:$total_amort:$amount}}
{{else}}
{{#select credit FROM acc_transactions_lines WHERE id = :amort_line_id;
:amort_line_id=$amort_line_id
}}
{{:assign total_amort="%d+%d"|math:$total_amort:$credit}}
{{/select}}
{{/if}}
{{/load}}
{{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}}
@ -102,7 +43,7 @@
{{:include file="_nav.html" current="index" subcurrent="details" subsubcurrent=$subsubcurrent}} {{:include file="_nav.html" current="index" subcurrent="details" subsubcurrent=$subsubcurrent}}
{{/if}} {{/if}}
*}} *}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
<nav class="tabs"> <nav class="tabs">
<aside> <aside>
@ -122,7 +63,7 @@
{{if $_GET.ok}} {{if $_GET.ok}}
{{if $_GET.msg|match:"attach_amort"}} {{if $_GET.msg|match:"attach_amort"}}
{{:assign msg="Écriture d'amortissement attachée"}} {{:assign msg="Écriture d'amortissement attachée"}}
{{elseif $_GET.msg|match:"attach_immo"}} {{elseif $_GET.msg|match:"attach_credit"}}
{{:assign msg="Écriture au crédit attachée"}} {{:assign msg="Écriture au crédit attachée"}}
{{elseif $_GET.msg|match:"info"}} {{elseif $_GET.msg|match:"info"}}
{{:assign msg="Données de l'immobilisation enregistrées"}} {{:assign msg="Données de l'immobilisation enregistrées"}}
@ -139,7 +80,7 @@
<h3 class="ruler"> <h3 class="ruler">
Immobilisation Immobilisation
<span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.immo_trans_id}}</a></span> <span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span>
{{$info_immo.label}} {{$info_immo.label}}
</h3> </h3>
{{if $linked_immos != null}} {{if $linked_immos != null}}
@ -155,7 +96,7 @@
<td>{{$line.date|date_short}}</td> <td>{{$line.date|date_short}}</td>
<td class="money">{{"%f"|math:$line.amount|money_currency_html:false|raw}}</td> <td class="money">{{"%f"|math:$line.amount|money_currency_html:false|raw}}</td>
<td> <td>
{{:linkbutton label="Détacher" href="detach_immo.html?immo_doc_id=%s&credit_line_id=%s"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}} {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}}
</td> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}
@ -163,11 +104,12 @@
</table> </table>
</aside> </aside>
{{/if}} {{/if}}
<div class="informations"> <div class="informations">
<dl class="describe"> <dl class="describe">
{{* {{*
<dt>Immobilisation</dt> <dt>Immobilisation</dt>
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.immo_trans_id}}</a></span><span class="label"> {{$info_immo.label}}</span></dd> <dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span><span class="label"> {{$info_immo.label}}</span></dd>
*}} *}}
<dt>Compte d'immobilisation</dt> <dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}</dd> <dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}</dd>

222
exit_step1.html Normal file
View file

@ -0,0 +1,222 @@
{{* -*- brindille -*- *}}
{{*
Associer les différentes écritures à une immo créée et sortie du
bilan avant la mise en service du module
@param immo_doc_id : id du doc associé à l'immobilisation
*}}
{{* données de l'immobilisation *}}
{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}}
{{if $message != null}}
{{:error message=$message}}
{{/if}}
{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
{{:assign date_immo=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}}
{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}}
{{:assign solde="%d-%d"|math:$montant_immo:$total_credits}}
{{* lister les amortissements liés à l'immobilisation *}}
{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}}
{{* chercher des écritures au crédit du compte de l'immo sans doc associé *}}
{{*
- line.credit < ligne_immo.amount => peut-être un avoir
- line.credit = ligne_immo.amount - avoirs => écriture de sortie du bilan
*}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as date,
trans.id_year as year,
line.id as credit_line_id,
line.label as line_label,
line.credit as amount,
acc.id as account_id,
acc.code as account_code,
acc.label as account_label
FROM acc_transactions AS trans
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
LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id
WHERE
acc.code = :acc_code
AND line.credit > 0
AND credit_line_id NOT IN (
SELECT json_extract(link.document, '$.credit_line_id') AS line_id FROM !table as link
WHERE json_extract(link.document, '$.type') == "credit_link")
;
:acc_code=$ligne_immo.account_code
!table =$module.table
assign="credit_line"
}}
{{if $credit_line.amount < $solde}}
{{:assign var="credit_lines." value=$credit_line}}
{{elseif $credit_line.amount == $solde}}
{{:assign var="exit_lines." value=$credit_line}}
{{/if}}
{{/select}}
{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}}
{{:include
file="./_get_amort_code.html"
code_immo=$ligne_immo.account_code
keep="code_amort"
}}
{{* chercher des écritures d'amortissement correspondant au compte d'une immo sans doc associé *}}
{{* TODO écritures d'amort pas entièrement affectées *}}
{{#select
line.id as amort_line_id,
line.credit as amort_amount,
line.label as line_label,
trans.id as amort_trans_id,
trans.date as date,
trans.label as trans_label,
trans.id_year as year,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_accounts AS account ON line.id_account = account.id
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE
account.code = :code_amort
AND line.credit > 0
AND (NOT trans.status & 16)
AND trans.date >= :immo_date
;
:code_amort = $code_amort
:immo_date=$date_immo
assign="amort_line"
}}
{{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}}
{{:assign amort_amount=0}}
{{:assign keep_amort=true}}
{{#load type="amort_link"
where="$$.amort_line_id = :amort_line_id"
:amort_line_id=$amort_line.amort_line_id|intval
assign="amort_link"
}}
{{if $amort_link.amount == null || $amort_link.amount == 0}}
{{:assign amort_amount=$amort_line.amort_amount}}
{{:assign keep_amort=false}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}}
{{/if}}
{{else}}
{{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}}
{{/load}}
{{if $keep_amort && $amort_amount < $amort_line.amort_amount}}
{{:assign var="free_amort_lines." value=$amort_line}}
{{/if}}
{{/select}}
{{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}}
<div class="informations">
<dl class="describe">
<dt>Immobilisation</dt>
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span> {{$label_immo}}</dd>
<dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}</dd>
<dt>Montant de l'immobilisation</dt>
<dd><span class="money">{{$ligne_immo.amount|money_html|raw}}</dd>
{{if $total_credits > 0}}
<dt>Montant des avoirs</dt>
<dd class="money">{{"%f"|math:$total_credits|money_currency_html:false|raw}}</dd>
<dt>Montant à amortir</dt>
<dd class="money">{{"%f"|math:$solde|money_currency_html:false|raw}}</dd>
{{/if}}
{{if $total_amort > 0}}
<dt>Montant des amortissements</dt>
<dd>{{$total_amort|money_currency_html:false|raw}}</dd>
<dt>Valeur nette résiduelle</dt>
<dd>{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}</dd>
{{/if}}
</dl>
</div>
{{if $linked_immos != null}}
<h3 class="ruler">Écritures d'avoir attachées à l'immobilisation</h3>
{{/if}}
{{if $linked_immos != null}}
<table class="list">
<thead>
<td class="num"></td>
<td>Date</td>
<td>Libellé</td>
<td class="nombre">Montant</td>
<td class="actions"></td>
</thead>
<tbody>
{{#foreach from=$linked_immos item="line"}}
{{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}}
<tr>
<td class="num"><a href="{{$url}}">#{{$line.trans_id}}</a></td>
<td>{{$line.date|date_short}}</td>
<td>{{$line.label}}</td>
<td class="money">{{"%f"|math:$line.amount|money_currency_html:false|raw}}</td>
<td>
{{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}}
</td>
</tr>
{{/foreach}}
</tbody>
</table>
{{else}}
<p class="block alert">
Vous pouvez attacher une ou plusieurs écritures d'avoir à votre immobilisation
</p>
{{/if}}
{{if $credit_lines}}
<h3 class="ruler">Écritures au crédit du compte d'immobilisation</h3>
<table class="list">
<thead>
<tr>
<td class="num"></td>
<td>Date</td>
<td>Libellé</td>
<td>Montant</td>
<td>N° compte</td>
<td>Compte</td>
<td class="actions"></td>
</tr>
</thead>
<tbody>
{{#foreach from=$credit_lines}}
{{:assign credit_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:$year}}
<tr>
<td class="num"><a href="{{$credit_url}}">#{{$trans_id}}</a></td>
<td>{{$date|date_short}}</td>
<td>{{$trans_label}}
{{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}}
</td>
<td class="money">{{$amount|money_html|raw}}</td>
<td><a href="{{$compte_url}}">{{$account_code}}</a></td>
<td>{{$account_label}}</td>
<td>
{{:linkbutton label="Attacher" href="attach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$credit_line_id shape="plus" target="_dialog"}}
</td>
</tr>
{{/foreach}}
</tbody>
</table>
{{/if}}
<form method="post" action="exit_step2.html?immo_doc_id={{$_GET.immo_doc_id}}">
<p class="submit">
{{:button type="submit" name="proceed" label="Poursuivre" shape="right" class="main"}}
</p>
</form>

246
exit_step2.html Normal file
View file

@ -0,0 +1,246 @@
{{* -*- brindille -*- *}}
{{*
Associer les différentes écritures à une immo créée avant la mise
en service du module et sortie du bilan
@param immo_doc_id : id du doc associé à l'immobilisation
*}}
{{* données de l'immobilisation *}}
{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="ligne_immo, message"}}
{{if $message != null}}
{{:error message=$message}}
{{/if}}
{{* voir si un document a été associé à l'immo *}}
{{#load id=$ligne_immo.line_id assign="info_immo"}}{{/load}}
{{#form on="backward"}}
{{:redirect to="exit_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
{{/form}}
{{#form on="forward"}}
{{:redirect to="exit_step3.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
{{/form}}
{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
{{:assign date_immo=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}}
{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}}
{{:assign solde="%d-%d"|math:$montant_immo:$total_credits}}
{{* lister les amortissements liés à l'immobilisation *}}
{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}}
{{*
chercher des écritures au crédit du compte de l'immo sans doc associé
- line.credit < ligne_immo.amount => peut-être un avoir
- line.credit = ligne_immo.amount - avoirs => écriture de sortie du bilan
*}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as date,
trans.id_year as year,
line.id as credit_line_id,
line.label as line_label,
line.credit as amount,
acc.id as account_id,
acc.code as account_code,
acc.label as account_label
FROM acc_transactions AS trans
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
LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id
WHERE
acc.code = :acc_code
AND line.credit > 0
AND credit_line_id NOT IN (
SELECT json_extract(link.document, '$.credit_line_id') AS line_id FROM !table as link
WHERE json_extract(link.document, '$.type') == "credit_link")
;
:acc_code=$ligne_immo.account_code
!table =$module.table
assign="credit_line"
}}
{{if $credit_line.amount < $solde}}
{{:assign var="credit_lines." value=$credit_line}}
{{elseif $credit_line.amount == $solde}}
{{:assign var="exit_lines." value=$credit_line}}
{{/if}}
{{/select}}
{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}}
{{:include
file="./_get_amort_code.html"
code_immo=$ligne_immo.account_code
keep="code_amort"
}}
{{* chercher des écritures d'amortissement correspondant au compte d'une immo sans doc associé *}}
{{* TODO écritures d'amort pas entièrement affectées *}}
{{#select
line.id as amort_line_id,
line.credit as amort_amount,
line.label as line_label,
trans.id as amort_trans_id,
trans.date as date,
trans.label as trans_label,
trans.id_year as year,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_accounts AS account ON line.id_account = account.id
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE
account.code = :code_amort
AND line.credit > 0
AND (NOT trans.status & 16)
AND trans.date >= :immo_date
;
:code_amort = $code_amort
:immo_date=$date_immo
assign="amort_line"
}}
{{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}}
{{:assign amort_amount=0}}
{{:assign keep_amort=true}}
{{#load type="amort_link"
where="$$.amort_line_id = :amort_line_id"
:amort_line_id=$amort_line.amort_line_id|intval
assign="amort_link"
}}
{{if $amort_link.amount == null || $amort_link.amount == 0}}
{{:assign amort_amount=$amort_line.amort_amount}}
{{:assign keep_amort=false}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}}
{{/if}}
{{else}}
{{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}}
{{/load}}
{{if $keep_amort && $amort_amount < $amort_line.amort_amount}}
{{:assign var="free_amort_lines." value=$amort_line}}
{{/if}}
{{/select}}
{{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}}
<div class="informations">
<dl class="describe">
<dt>Immobilisation</dt>
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span> {{$label_immo}}</dd>
<dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}</dd>
<dt>Montant de l'immobilisation</dt>
<dd><span class="money">{{$ligne_immo.amount|money_html|raw}}</dd>
{{if $total_credits > 0}}
<dt>Montant des avoirs</dt>
<dd class="money">{{"%f"|math:$total_credits|money_currency_html:false|raw}}</dd>
<dt>Montant à amortir</dt>
<dd class="money">{{"%f"|math:$solde|money_currency_html:false|raw}}</dd>
{{/if}}
{{if $total_amort > 0}}
<dt>Montant des amortissements</dt>
<dd>{{$total_amort|money_currency_html:false|raw}}</dd>
<dt>Valeur nette résiduelle</dt>
<dd>{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}</dd>
{{/if}}
</dl>
</div>
{{if $linked_amort != null}}
<h3 class="ruler">Écritures d'amortissement attachées à l'immobilisation</h3>
<table class="list">
<thead>
<tr>
<td class="num"></td>
<td>Date</td>
<td>Libellé</td>
<td class="nombre">Montant</td>
<td>N° compte</td>
<td>Compte</td>
<td class="actions"></td>
</tr>
</thead>
<tbody>
{{#foreach from=$linked_amort|ksort item="line"}}
{{* données de l'écriture *}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}}
<tr>
<td class="num"><a href="{{$trans_url}}">#{{$line.trans_id}}</a></td>
<td>{{$line.date|date_short}}</td>
<td>
{{if $line.line_label != null}}
{{$line.line_label}}
{{else}}
{{$line.trans_label}}
{{/if}}
</td>
<td class="money">{{"%f"|math:$line.amount|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td>
<td>
{{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}}
</td>
</tr>
{{/foreach}}
</tbody>
</table>
{{else}}
<p class="block alert">
Vous pouvez attacher une ou plusieurs écritures d'amortissement à votre immobilisation
</p>
{{/if}}
<h3 class="ruler">Autres écritures d'amortissements</h3>
{{if $free_amort_lines}}
<table class="list">
<thead>
<tr>
<td class="num"></td>
<td>Date</td>
<td>Libellé</td>
<td class="nombre">Montant</td>
<td>N° compte</td>
<td>Compte</td>
<td class="actions"></td>
</tr>
</thead>
<tbody>
{{#foreach from=$free_amort_lines item="line"}}
{{:assign amort_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.year}}
<tr>
<td class="num"><a href="{{$amort_url}}">#{{$line.amort_trans_id}}</a></td>
<td>{{$line.date|date_short}}</td>
<td>{{$line.trans_label}}
{{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}}
</td>
<td class="money">{{"%f"|math:$line.amort_amount|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td>
<td>
{{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.amort_line_id shape="plus" target="_dialog"}}
</td>
</tr>
{{/foreach}}
</tbody>
</table>
{{/if}}
<form method="post" action="">
<p class="submit">
{{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}}
{{:button type="submit" name="forward" label="Poursuivre" shape="right" class="main"}}
</p>
</form>

288
exit_step3.html Normal file
View file

@ -0,0 +1,288 @@
{{* -*- brindille -*- *}}
{{*
Associer les différentes écritures à une immo créée avant la mise
en service du module et sortie du bilan
@param immo_doc_id : id du doc associé à l'immobilisation
*}}
{{*
TODO : affichage après attachement écriture sortie bilan (ligne attachée, bouton détacher)
*}}
{{* données de l'immobilisation *}}
{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}}
{{if $message != null}}
{{:error message=$message}}
{{/if}}
{{#form on="backward"}}
{{:redirect to="exit_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
{{/form}}
{{#form on="validate"}}
{{* mettre à jour l'état de l'immobilisation *}}
{{:save
key=$info_immo.key
status="archived"
}}
{{:redirect to="index.html?type_immo=archived"}}
{{/form}}
{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
{{:assign date_immo=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}}
{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}}
{{:assign solde="%d-%d"|math:$montant_immo:$total_credits}}
{{* lister les amortissements liés à l'immobilisation *}}
{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}}
{{* chercher une écriture de sortie de bilan associée *}}
{{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$info_immo.id assign="exit_info"}}
{{/load}}
{{if $exit_info != null}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as date,
line.id as line_id,
line.label as line_label,
line.credit as amount,
acc.id as account_id,
acc.code as account_code,
acc.label as account_label
FROM acc_transactions AS trans
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.id = :exit_line_id;
:exit_line_id = $exit_info.exit_line_id
assign="exit_line"
}}
{{/select}}
{{/if}}
{{* chercher des écritures au crédit du compte de l'immo sans doc associé *}}
{{*
- line.credit < ligne_immo.amount => peut-être un avoir
- line.credit = ligne_immo.amount - avoirs => écriture de sortie du bilan
*}}
{{#select
trans.id as trans_id,
trans.label as trans_label,
trans.date as date,
trans.id_year as year,
line.id as credit_line_id,
line.label as line_label,
line.credit as amount,
acc.id as account_id,
acc.code as account_code,
acc.label as account_label
FROM acc_transactions AS trans
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
LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id
WHERE
acc.code = :acc_code
AND line.credit > 0
AND credit_line_id NOT IN (
SELECT json_extract(credit_link.document, '$.credit_line_id') AS line_id FROM !table as credit_link
WHERE json_extract(credit_link.document, '$.type') == "credit_link"
UNION
SELECT json_extract(exit_link.document, '$.exit_line_id') AS line_id FROM !table as exit_link
WHERE json_extract(exit_link.document, '$.type') == "exit_link"
)
;
:acc_code=$ligne_immo.account_code
!table =$module.table
assign="credit_line"
}}
{{if $credit_line.amount < $solde}}
{{:assign var="credit_lines." value=$credit_line}}
{{elseif $credit_line.amount == $solde}}
{{:assign var="exit_lines." value=$credit_line}}
{{/if}}
{{/select}}
{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}}
{{:include
file="./_get_amort_code.html"
code_immo=$ligne_immo.account_code
keep="code_amort"
}}
{{* chercher des écritures d'amortissement correspondant au compte d'une immo sans doc associé *}}
{{* TODO écritures d'amort pas entièrement affectées *}}
{{#select
line.id as amort_line_id,
line.credit as amort_amount,
line.label as line_label,
trans.id as amort_trans_id,
trans.date as date,
trans.label as trans_label,
trans.id_year as year,
account.id as account_id,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_accounts AS account ON line.id_account = account.id
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE
account.code = :code_amort
AND line.credit > 0
AND (NOT trans.status & 16)
AND trans.date >= :immo_date
;
:code_amort = $code_amort
:immo_date=$date_immo
assign="amort_line"
}}
{{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}}
{{:assign amort_amount=0}}
{{:assign keep_amort=true}}
{{#load type="amort_link"
where="$$.amort_line_id = :amort_line_id"
:amort_line_id=$amort_line.amort_line_id|intval
assign="amort_link"
}}
{{if $amort_link.amount == null || $amort_link.amount == 0}}
{{:assign amort_amount=$amort_line.amort_amount}}
{{:assign keep_amort=false}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}}
{{/if}}
{{else}}
{{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}}
{{/load}}
{{if $keep_amort && $amort_amount < $amort_line.amort_amount}}
{{:assign var="free_amort_lines." value=$amort_line}}
{{/if}}
{{/select}}
{{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}}
{{if $_GET.ok}}
{{if $_GET.msg|match:"attach_exit"}}
{{:assign msg="Écriture de sortie de bilan attachée"}}
{{elseif $_GET.msg|match:"detach_exit"}}
{{:assign msg="Écriture de sortie de bilan détachée"}}
{{/if}}
<p class="block confirm">{{$msg}}</p>
{{/if}}
<div class="informations">
<dl class="describe">
<dt>Immobilisation</dt>
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span> {{$label_immo}}</dd>
<dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}</dd>
<dt>Montant de l'immobilisation</dt>
<dd><span class="money">{{$ligne_immo.amount|money_html|raw}}</dd>
{{if $total_credits > 0}}
<dt>Montant des avoirs</dt>
<dd class="money">{{"%f"|math:$total_credits|money_currency_html:false|raw}}</dd>
<dt>Montant à amortir</dt>
<dd class="money">{{"%f"|math:$solde|money_currency_html:false|raw}}</dd>
{{/if}}
{{if $total_amort > 0}}
<dt>Montant des amortissements</dt>
<dd>{{$total_amort|money_currency_html:false|raw}}</dd>
<dt>Valeur nette résiduelle</dt>
<dd>{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}</dd>
{{/if}}
</dl>
</div>
{{if $exit_line != null}}
<h3 class="ruler">Écriture de sortie du bilan attachée à l'immobilisation</h3>
<table class="list">
<thead>
<tr>
<td class="num"></td>
<td>Date</td>
<td>Libellé</td>
<td class="nombre">Montant</td>
<td>N° compte</td>
<td>Compte</td>
<td class="actions"></td>
</tr>
</thead>
<tbody>
<tr>
<td class="num"><a href="{{$trans_url}}">#{{$exit_line.trans_id}}</a></td>
<td>{{$exit_line.date|date_short}}</td>
<td>
{{if $exit_line.line_label != null}}
{{$exit_line.line_label}}
{{else}}
{{$exit_line.trans_label}}
{{/if}}
</td>
<td class="money">{{"%f"|math:$exit_line.amount|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$exit_line.account_code}}</a></td>
<td>{{$exit_line.account_label}}</td>
<td>
{{:linkbutton label="Détacher" href="detach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$exit_line.line_id shape="minus"}}
</td>
</tr>
</tbody>
</table>
{{else}}
<p class="block alert">
Vous pouvez attacher une écriture de sortie du bilan à votre immobilisation
</p>
{{/if}}
{{if $exit_lines}}
<h3 class="ruler">Écritures non rattachées</h3>
<table class="list">
<thead>
<tr>
<td class="num"></td>
<td>Date</td>
<td>Libellé</td>
<td class="nombre">Montant</td>
<td>N° compte</td>
<td>Compte</td>
<td class="actions"></td>
</tr>
</thead>
<tbody>
{{#foreach from=$exit_lines item="line"}}
{{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}}
<tr>
<td class="num"><a href="{{$exit_url}}">#{{$line.trans_id}}</a></td>
<td>{{$line.date|date_short}}</td>
<td>{{$line.trans_label}}
{{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}}
</td>
<td class="money">{{"%f"|math:$line.amount|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td>
<td>
{{:linkbutton label="Attacher" href="attach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="plus"}}
</td>
</tr>
{{/foreach}}
</tbody>
</table>
{{elseif $exit_line == null}}
<p class="block alert">Aucune écriture de sortie du bilan</p>
{{/if}}
<form method="post" action="">
<p class="submit">
{{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}}
{{if $exit_line}}
{{:button type="submit" name="validate" label="Valider" shape="check" class="main"}}
{{/if}}
</p>
</form>

View file

@ -6,34 +6,9 @@
@param immo_doc_id : document associé à l'immo @param immo_doc_id : document associé à l'immo
*}} *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Informations de l'immobilisation non trouvées"}} {{:error message=$message}}
{{/load}}
{{* récupérer les infos de l'immobilisation *}}
{{#select
trans.id as immo_trans_id,
trans.label as label,
trans.date as date_achat,
line.id as immo_line_id,
line.label as line_label,
line.debit as montant,
account.code as account_code
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation « %s » non trouvée"|args:$info_immo.line}}
{{/select}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}}
{{:assign label_immo=$ligne_immo.label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}} {{/if}}
{{* {{*
@ -88,9 +63,9 @@
<div class="informations"> <div class="informations">
<dl class="describe"> <dl class="describe">
<dt>Immobilisation</dt> <dt>Immobilisation</dt>
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.immo_trans_id}}</a></span> {{$label_immo}}</dd> <dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span> {{$label_immo}}</dd>
<dt>Montant</dt> <dt>Montant</dt>
<dd class="money strong">{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}</dd> <dd class="money strong">{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}</dd>
<dt>Date de l'écriture d'immobilisation</dt> <dt>Date de l'écriture d'immobilisation</dt>
<dd>{{$ligne_immo.date_achat|date_short}}</dd> <dd>{{$ligne_immo.date_achat|date_short}}</dd>
</dl> </dl>
@ -124,7 +99,7 @@
<td><a href="{{$compte_url}}">{{$line.account_code}}</a></td> <td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td> <td>{{$line.account_label}}</td>
<td> <td>
{{:linkbutton label="Attacher" href="attach_immo.html?credit_line_id=%d&immo_doc_id=%s"|args:$line.credit_line_id:$_GET.immo_doc_id shape="plus"}} {{:linkbutton label="Attacher" href="attach_credit.html?credit_line_id=%d&immo_doc_id=%s"|args:$line.credit_line_id:$_GET.immo_doc_id shape="plus"}}
</td> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}

View file

@ -11,60 +11,19 @@
- DONE possibilité supprimer liaison écriture avoir - DONE possibilité supprimer liaison écriture avoir
*}} *}}
{{* données de l'immobilisation *}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{if $message != null}}
{{else}} {{:error message=$message}}
{{:error message="Immobilisation non trouvée"}} {{/if}}
{{/load}}
{{#select
trans.id as immo_trans_id,
trans.label as trans_label,
trans.date as date_achat,
line.debit as montant,
line.label as line_label,
acc.code,
acc.label as account_label
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 = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.montant}}
{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}}
{{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} {{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}}
{{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}} {{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}} {{/if}}
{{*
chercher des écritures liées à l'immo courante au crédit du même compte {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
et déduire leur montant de celui de l'immo {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}}
*}}
{{:assign linked_immos=null}}
{{:assign total_credits=0}}
{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}}
{{#select
line.credit,
trans.id
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign credit=$credit}}
{{:assign credit_trans_id=$id}}
{{/select}}
{{:assign var="linked_immos." doc=$id trans=$credit_trans_id}}
{{if $amount == null}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}
{{:assign solde="%d-%d"|math:$montant_immo:$total_credits}} {{:assign solde="%d-%d"|math:$montant_immo:$total_credits}}
{{:assign autres_amount=0}} {{:assign autres_amount=0}}
@ -76,7 +35,7 @@
}} }}
{{:assign autres_amount="%d+%d"|math:$autres_amount:$amount}} {{:assign autres_amount="%d+%d"|math:$autres_amount:$amount}}
{{/load}} {{/load}}
{{:assign max_disponible="%d-%d"|math:$ligne_immo.montant:$autres_amount}} {{:assign max_disponible="%d-%d"|math:$ligne_immo.amount:$autres_amount}}
{{* traiter la saisie *}} {{* traiter la saisie *}}
{{#form on="save"}} {{#form on="save"}}
@ -152,10 +111,10 @@
{{/if}} {{/if}}
{{* écritures de crédit *}} {{* écritures de crédit *}}
{{#foreach from=$linked_immos item="elem"}} {{#foreach from=$linked_immos item="line"}}
{{if ! $_POST.credit_id|has:$elem.trans}} {{if ! $_POST.credit_id|has:$line.trans_id}}
{{:assign var="docs_to_remove." value=$elem.doc}} {{:assign var="docs_to_remove." value=$line.doc}}
{{:assign var="links_to_remove." value=$elem.trans}} {{:assign var="links_to_remove." value=$line.trans_id}}
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
@ -172,7 +131,7 @@
END as linked_id END as linked_id
FROM acc_transactions_links as links FROM acc_transactions_links as links
WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
:immo_trans_id = $ligne_immo.immo_trans_id :immo_trans_id = $ligne_immo.trans_id
}} }}
{{if ! $linked_id|in:$links_to_remove}} {{if ! $linked_id|in:$links_to_remove}}
{{:assign var="linked_transactions." value=$linked_id}} {{:assign var="linked_transactions." value=$linked_id}}
@ -182,7 +141,7 @@
{{* Enregistrer les liaisons *}} {{* Enregistrer les liaisons *}}
{{:api {{:api
method="POST" method="POST"
path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
assign="result" assign="result"
assign_code="result_code" assign_code="result_code"
transactions=$linked_transactions transactions=$linked_transactions
@ -225,14 +184,14 @@
modifier la date de mise en service, les écritures associées ou la durée d'amortissement modifier la date de mise en service, les écritures associées ou la durée d'amortissement
*}} *}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
<h3 class="ruler">Paramètres de l'immobilisation</h3> <h3 class="ruler">Paramètres de l'immobilisation</h3>
<div class="informations"> <div class="informations">
<dl class="describe"> <dl class="describe">
<dt>Immobilisation</dt> <dt>Immobilisation</dt>
<dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.immo_trans_id}}</a></span> {{$immo_label}}</dd> <dd><span class="num"><a href="{{$trans_url}}">#{{$ligne_immo.trans_id}}</a></span> {{$immo_label}}</dd>
<dt>Compte d'immobilisation</dt> <dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.code}} — {{$ligne_immo.account_label}} <dd>{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
<dt>Montant</dt> <dt>Montant</dt>
<dd class="money strong">{{"%f"|math:$montant_immo|money_currency_html:false|raw}}</dd> <dd class="money strong">{{"%f"|math:$montant_immo|money_currency_html:false|raw}}</dd>
{{if $total_credits > 0}} {{if $total_credits > 0}}
@ -265,9 +224,9 @@
<dd> <dd>
<span class="input-list avoirs"> <span class="input-list avoirs">
<label for="credit_id">Écritures&nbsp;:</label> <label for="credit_id">Écritures&nbsp;:</label>
{{#foreach from=$linked_immos item="elem"}} {{#foreach from=$linked_immos item="line"}}
<span class="label"> <span class="label">
<input type="hidden" name="credit_id[]" value="{{$elem.trans}}">{{$elem.trans}} <input type="hidden" name="credit_id[]" value="{{$line.trans_id}}">{{$line.trans_id}}
<button data-icon="✘" type="button" class=" icn-btn" title="Cliquer pour supprimer la liaison"></button> <button data-icon="✘" type="button" class=" icn-btn" title="Cliquer pour supprimer la liaison"></button>
</span> </span>
{{/foreach}} {{/foreach}}

View file

@ -7,25 +7,12 @@
*}} *}}
{{* données de l'immobilisation *}} {{* données de l'immobilisation *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}} {{/if}}
{{#select {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
trans.label as label,
line.label as line_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{:assign label_immo=$info_immo.label|or:$ligne_immo.label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}}
{{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
{{/if}} {{/if}}
@ -42,48 +29,8 @@
{{:assign filter_condition="1"}} {{:assign filter_condition="1"}}
{{/if}} {{/if}}
{{* lister les écritures d'amortissement *}} {{* lister les amortissements non rattachés à une immo *}}
{{#select {{:include file="./_get_free_amort.html" filter_condition=$filter_condition keep="free_amort_lines"}}
line.id as amort_line_id,
line.id_transaction as amort_trans_id,
line.credit as amort_amount,
line.label as line_label,
trans.date as trans_date,
trans.label as trans_label,
trans.id_year as amort_year,
account.id as account_id,
account.code as account_code,
account.label as account_label
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
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) AND !filter_condition
ORDER BY trans.date, trans.label;
!filter_condition=$filter_condition
assign="amort"
}}
{{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}}
{{:assign amort_amount=0}}
{{:assign keep_amort=true}}
{{#load type="amort_link"
where="$$.amort_line_id = :amort_line_id"
:amort_line_id=$amort.amort_line_id|intval
assign="amort_link"
}}
{{if $amort_link.amount == null || $amort_link.amount == 0}}
{{:assign amort_amount=$amort.amort_amount}}
{{:assign keep_amort=false}}
{{else}}
{{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}}
{{/if}}
{{else}}
{{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}}
{{/load}}
{{if $keep_amort && $amort_amount < $amort.amort_amount}}
{{:assign var="free_amort_lines." value=$amort}}
{{/if}}
{{/select}}
{{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortization"}} {{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortization"}}
@ -117,8 +64,8 @@
<tr> <tr>
<th></th> <th></th>
<th>Date</th> <th>Date</th>
<th class="nombre">Montant</th>
<th>Libellé</th> <th>Libellé</th>
<th class="nombre">Montant</th>
<th>N° compte</th> <th>N° compte</th>
<th>Compte</th> <th>Compte</th>
<th class="actions"></th> <th class="actions"></th>
@ -126,19 +73,19 @@
</thead> </thead>
<tbody> <tbody>
{{#foreach from=$free_amort_lines item="line"}} {{#foreach from=$free_amort_lines item="line"}}
{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}}
{{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}}
<tr> <tr>
<td class="num"><a href="{{$trans_url}}">#{{$line.amort_trans_id}}</a></td> <td class="num"><a href="{{$trans_url}}">#{{$line.trans_id}}</a></td>
<td>{{$line.trans_date|date_short}}</td> <td>{{$line.trans_date|date_short}}</td>
<td class="money">{{"%f"|math:$line.amort_amount|money_html:false|raw}}</td>
<td>{{$line.trans_label}} <td>{{$line.trans_label}}
{{if $line.line_label != null && $line.line_label != $line.trans_label}} - {{$line.line_label}}{{/if}} {{if $line.line_label != null && $line.line_label != $line.trans_label}} - {{$line.line_label}}{{/if}}
</td> </td>
<td class="money">{{"%f"|math:$line.amount|money_html:false|raw}}</td>
<td><a href="{{$compte_url}}">{{$line.account_code}}</a></td> <td><a href="{{$compte_url}}">{{$line.account_code}}</a></td>
<td>{{$line.account_label}}</td> <td>{{$line.account_label}}</td>
<td> <td>
{{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.amort_line_id shape="plus"}} {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="plus"}}
</td> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}

View file

@ -5,37 +5,17 @@
@param immo_doc_id : id du doc associé à l'immo @param immo_doc_id : id du doc associé à l'immo
*}} *}}
{{* Infos de l'immobilisation *}} {{* données de l'immobilisation *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{else}} {{if $message != null}}
{{:error message="Immobilisation non trouvée"}} {{:error message=$message}}
{{/load}}
{{#select
line.id_account as account_id,
line.debit as montant,
line.id_project as project_id,
line.label as line_label,
trans.id as immo_trans_id,
trans.label,
trans.date,
account.code as account_code
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER JOIN acc_accounts AS account ON line.id_account = account.id
LEFT JOIN acc_projects AS project ON line.id_project = project.id
WHERE line.id = :line_id;
:line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{if $info_immo.amount != null}}
{{:assign var="ligne_immo.montant" value=$info_immo.amount}}
{{/if}} {{/if}}
{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date}}
{{:assign amort_label=$info_immo.label|or:$ligne_immo.label}} {{if $info_immo.amount != null}}
{{:assign var="ligne_immo.amount" value=$info_immo.amount}}
{{/if}}
{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
{{:assign amort_label=$info_immo.label|or:$ligne_immo.trans_label}}
{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $amort_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $amort_label}}
{{:assign amort_label=$amort_label|cat:" — "|cat:$ligne_immo.line_label}} {{:assign amort_label=$amort_label|cat:" — "|cat:$ligne_immo.line_label}}
@ -46,69 +26,25 @@
{{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}} {{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}}
{{/if}} {{/if}}
{{* {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
chercher des écritures liées à l'immo courante au crédit du même compte {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
et déduire leur montant de celui de l'immo {{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}}
*}}
{{:assign total_credits=0}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $_GET.immo_doc_id|intval
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}}
{{/load}}
{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}}
{{:assign solde=$ligne_immo.montant}}
{{* chercher des écritures d'amortissement liées à la ligne d'immobilisation *}} {{* lister les amortissements liés à l'immobilisation *}}
{{#load {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}}
type="amort_link"
where="$$.immo_doc_id = :immo_doc_id"
order="$$.date"
:immo_doc_id=$_GET.immo_doc_id|intval
}}
{{#select
line.credit,
trans.date as amort_date,
COALESCE(trans.label, line.label) as amort_label,
account.code as account_code,
account.label as account_label
FROM acc_transactions_lines AS line
INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
INNER join acc_accounts AS account on line.id_account = account.id
WHERE line.id = :amort_line_id
;
:amort_line_id = $amort_line_id
assign="amort_line"
}}
{{:assign var="amort_line.amort_amount" value=$amount|or:$credit}}
{{:assign var="linked_amort.%s_%d"|args:$amort_date:$id value=$amort_line}}
{{/select}}
{{/load}}
{{:assign total_amort=0}}
{{:assign valeur_residuelle=$ligne_immo.montant}}
{{#foreach from=$linked_amort|ksort item="line"}}
{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$line.amort_amount}}
{{:assign total_amort="%d+%d"|math:$total_amort:$line.amort_amount}}
{{:assign date_debut=$line.amort_date}}
{{:assign code_amort=$line.account_code}}
{{:assign amort_account_label=$line.account_label}}
{{:assign amort_label=$amort_label}}
{{/foreach}}
{{:assign valeur_residuelle="%d-%d"|math:$ligne_immo.amount:$total_amort}}
{{if $valeur_residuelle == 0}} {{if $valeur_residuelle == 0}}
{{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}} {{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}}
{{/if}} {{/if}}
{{#foreach from=$linked_amort|ksort item="line"}}
{{:assign date_debut=$line.date}}
{{:assign code_amort=$line.account_code}}
{{:assign amort_account_label=$line.account_label}}
{{:assign amort_label=$line_label|or:$trans_label}}
{{/foreach}}
{{if $total_amort == 0}} {{if $total_amort == 0}}
{{* 1er amortissement *}} {{* 1er amortissement *}}
{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} {{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}}
@ -120,7 +56,7 @@
keep="code_amort" keep="code_amort"
}} }}
{{:assign var="amort_account_label" value="Amortissement %s"|args:$amort_account.label}} {{:assign var="amort_account_label" value="Amortissement %s"|args:$amort_account.label}}
{{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.label}} {{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.trans_label}}
{{else}} {{else}}
{{* amortissements suivants *}} {{* amortissements suivants *}}
{{:assign date_debut=$date_debut|strtotime}} {{:assign date_debut=$date_debut|strtotime}}
@ -207,10 +143,11 @@
{{/if}} {{/if}}
{{* vérifier que le montant ne dépasse pas le solde restant *}} {{* vérifier que le montant ne dépasse pas le solde restant *}}
{{:assign solde="%d-%d"|math:$ligne_immo.montant:$total_amort}} {{:assign solde="%d-%d"|math:$ligne_immo.amount:$total_amort}}
{{if $_POST.montant|trim|money_int > $solde|intval}} {{if $_POST.montant|trim|money_int > $solde|intval}}
{{:assign montant=$_POST.montant|trim|money_int|money_raw}}
{{:assign solde=$solde|money_raw}} {{:assign solde=$solde|money_raw}}
{{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$_POST.montant:$solde}} {{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$montant:$solde}}
{{/if}} {{/if}}
{{* enregistrer l'écriture *}} {{* enregistrer l'écriture *}}
@ -218,13 +155,13 @@
var="lines." var="lines."
debit=$_POST.montant debit=$_POST.montant
account=$debit_account|keys|value:0 account=$debit_account|keys|value:0
id_project=$ligne_immo.project_id id_project=$ligne_immo.id_project
}} }}
{{:assign {{:assign
var="lines." var="lines."
credit=$_POST.montant credit=$_POST.montant
account=$credit_account|keys|value:0 account=$credit_account|keys|value:0
id_project=$ligne_immo.project_id id_project=$ligne_immo.id_project
}} }}
{{:api {{:api
@ -237,7 +174,7 @@
date=$_POST.date_amort date=$_POST.date_amort
label=$_POST.designation label=$_POST.designation
lines=$lines lines=$lines
linked_transactions=$ligne_immo.immo_trans_id|intval linked_transactions=$ligne_immo.trans_id|intval
}} }}
{{* enregistrer la liaison des lignes *}} {{* enregistrer la liaison des lignes *}}
@ -279,8 +216,8 @@
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}} {{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{* montant de l'amortissement *}} {{* montant de l'amortissement *}}
{{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.montant:$info_immo.duration:$nbjours|intval}} {{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.amount:$info_immo.duration:$nbjours|intval}}
{{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.montant:$total_amort}} {{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.amount:$total_amort}}
{{:assign var="debit_account.6811" value="6811 — Dot. aux amortissements des immobilisations"}} {{:assign var="debit_account.6811" value="6811 — Dot. aux amortissements des immobilisations"}}
{{:assign var="credit_account.%s"|args:$code_amort value="%s — "|args:$code_amort|cat:$amort_account_label}} {{:assign var="credit_account.%s"|args:$code_amort value="%s — "|args:$code_amort|cat:$amort_account_label}}
@ -315,7 +252,7 @@
default=$credit_account default=$credit_account
}} }}
<div id="donnees" class="hidden"> <div id="donnees" class="hidden">
{{:input type="text" name="montant_immo" default=$ligne_immo.montant}} {{:input type="text" name="montant_immo" default=$ligne_immo.amount}}
{{:input type="text" name="duree_amort" default=$info_immo.duration}} {{:input type="text" name="duree_amort" default=$info_immo.duration}}
{{:input type="text" name="somme_amort" default=$total_amort}} {{:input type="text" name="somme_amort" default=$total_amort}}
{{:input type="select" name="years_data" options=$years_data}} {{:input type="select" name="years_data" options=$years_data}}

View file

@ -11,85 +11,27 @@
- cession : montant de la cession (optionnel) - cession : montant de la cession (optionnel)
*}} *}}
{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{* données de l'immobilisation *}}
{{else}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
{{:error message="Immobilisation non trouvée"}} {{if $message != null}}
{{/load}} {{:error message=$message}}
{{#select
line.debit as montant,
line.id_transaction,
trans.id AS trans_id,
trans.date as date_achat,
trans.label,
acc.code as account_code,
id_project
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 = :immo_line_id;
:immo_line_id = $info_immo.line
assign="ligne_immo"
}}
{{else}}
{{:error message="Immobilisation non trouvée"}}
{{/select}}
{{* chercher des écritures liées à l'immo courante au crédit du même compte
et déduire leur montant de celui de l'immo
*}}
{{:assign total_credits=0}}
{{#load
type="credit_link"
where="$$.immo_doc_id = :immo_doc_id"
:immo_doc_id = $info_immo.id
assign="credit_link"
}}
{{if $amount == null}}
{{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
:credit_line_id=$credit_line_id
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{else}}
{{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
{{/if}} {{/if}}
{{else}}
{{* {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
TODO : à garder ? {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
pas de doc => voir liaison écritures {{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}}
*}} {{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$_GET.amort_amount}}
{{#select
CASE links.id_related = :immo_trans_id
WHEN true THEN links.id_transaction
WHEN false THEN links.id_related
END as other_id,
line.credit
FROM acc_transactions AS trans
INNER JOIN acc_transactions_links as links
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_trans_id AND line.credit > 0 AND acc.code = :account;
:immo_trans_id=$ligne_immo.trans_id
:account=$ligne_immo.account_code
}}
{{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
{{/select}}
{{/load}}
{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}}
{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount}}
{{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}} {{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}}
{{:assign amort_except=0}} {{* amortissement exceptionnel jqà date fin amortissement *}} {{:assign amort_except=0}} {{* amortissement exceptionnel jqà date fin amortissement *}}
{{if $valeur_nette > 0}} {{if $valeur_nette > 0}}
{{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}} {{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}}
{{:assign annuite="%f/%f"|math:$ligne_immo.montant:$info_immo.duration}} {{:assign annuite="%f/%f"|math:$ligne_immo.amount:$info_immo.duration}}
{{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}} {{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}}
{{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}} {{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}}
{{if $_GET.cession == null}} {{if $_GET.cession == null}}
{{:assign amort_except="%f-%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount:$amort_comp}} {{:assign amort_except="%f-%f-%f"|math:$ligne_immo.amount:$_GET.amort_amount:$amort_comp}}
{{/if}} {{/if}}
{{/if}} {{/if}}
@ -132,7 +74,7 @@
}} }}
{{:assign comp_account_code=$account_code|keys|value:0}} {{:assign comp_account_code=$account_code|keys|value:0}}
{{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.label}} {{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.trans_label}}
{{:assign {{:assign
var="lines." var="lines."
debit="%f/100"|math:$amort_comp debit="%f/100"|math:$amort_comp
@ -157,7 +99,7 @@
keep="account_code" keep="account_code"
}} }}
{{:assign except_account_code=$account_code|keys|value:0}} {{:assign except_account_code=$account_code|keys|value:0}}
{{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.label}} {{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.trans_label}}
{{:assign {{:assign
var="lines." var="lines."
debit="%f/100"|math:$amort_except debit="%f/100"|math:$amort_except
@ -183,9 +125,9 @@
id_year=$_GET.year id_year=$_GET.year
type="advanced" type="advanced"
date=$_GET.exit_date date=$_GET.exit_date
label="Amortissement final "|cat:$ligne_immo.label label="Amortissement final "|cat:$ligne_immo.trans_label
lines=$lines lines=$lines
linked_transactions=$ligne_immo.id_transaction linked_transactions=$ligne_immo.trans_id
}} }}
{{* liaisons lignes d'amortissement *}} {{* liaisons lignes d'amortissement *}}
@ -209,18 +151,18 @@
keep="account_code" keep="account_code"
}} }}
{{:assign immo_account_code=$account_code|keys|value:0}} {{:assign immo_account_code=$account_code|keys|value:0}}
{{:assign libelle="Sortie du bilan de "|cat:$ligne_immo.label}} {{:assign libelle="Sortie du bilan de "|cat:$ligne_immo.trans_label}}
{{:assign {{:assign
var="lines." var="lines."
account=$immo_account_code account=$immo_account_code
credit="%f/100"|math:$ligne_immo.montant credit="%f/100"|math:$ligne_immo.amount
id_project=$ligne_immo.id_project id_project=$ligne_immo.id_project
label=$libelle label=$libelle
}} }}
{{:assign {{:assign
var="lines." var="lines."
account=$amort_account_code account=$amort_account_code
debit="(%f-%f)/100"|math:$ligne_immo.montant:$valeur_nette debit="(%f-%f)/100"|math:$ligne_immo.amount:$valeur_nette
id_project=$ligne_immo.id_project id_project=$ligne_immo.id_project
label=$libelle label=$libelle
}} }}
@ -250,7 +192,7 @@
date=$_GET.exit_date date=$_GET.exit_date
label=$libelle label=$libelle
lines=$lines lines=$lines
linked_transactions=$ligne_immo.id_transaction linked_transactions=$ligne_immo.trans_id
}} }}
{{* liaison écriture de sortie *}} {{* liaison écriture de sortie *}}
@ -268,7 +210,7 @@
{{if $montant_cession > 0}} {{if $montant_cession > 0}}
{{* Cession de l'immobilisation *}} {{* Cession de l'immobilisation *}}
{{:assign libelle="Produit cession "|cat:$ligne_immo.label}} {{:assign libelle="Produit cession "|cat:$ligne_immo.trans_label}}
{{:include {{:include
file="_get_codes.html" file="_get_codes.html"
account=$_POST.creance_account account=$_POST.creance_account
@ -294,7 +236,7 @@
debit=$creance_account debit=$creance_account
credit=$cession_account credit=$cession_account
id_project=$ligne_immo.id_project id_project=$ligne_immo.id_project
linked_transactions=$ligne_immo.id_transaction linked_transactions=$ligne_immo.trans_id
}} }}
{{/if}} {{/if}}
@ -371,14 +313,14 @@
{{/foreach}} {{/foreach}}
{{:assign patterns=$pattern_array|implode:"|"}} {{:assign patterns=$pattern_array|implode:"|"}}
<h3>Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan</h3> <h3>Sortir l'immobilisation « {{$ligne_immo.trans_label}} » du bilan</h3>
<form method="post" action=""> <form method="post" action="">
<div class="informations"> <div class="informations">
<legend>Données de l'imobilisation</legend> <legend>Données de l'imobilisation</legend>
<dl class="describe"> <dl class="describe">
<dt>Montant</dt> <dt>Montant</dt>
<dd class="money">{{$ligne_immo.montant|money_currency_html:false|raw}}</dd> <dd class="money">{{$ligne_immo.amount|money_currency_html:false|raw}}</dd>
<dt>Date d'acquisition</dt> <dt>Date d'acquisition</dt>
<dd >{{$ligne_immo.date_achat|date_short}}</dd> <dd >{{$ligne_immo.date_achat|date_short}}</dd>
{{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}} {{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}}
@ -524,7 +466,7 @@
}} }}
</td> </td>
{{if $montant_cession == 0}} {{if $montant_cession == 0}}
{{:assign montant=$ligne_immo.montant}} {{:assign montant=$ligne_immo.amount}}
{{else}} {{else}}
{{:assign montant="%f+%f"|math:$_GET.amort_amount:$amort_comp}} {{:assign montant="%f+%f"|math:$_GET.amort_amount:$amort_comp}}
{{/if}} {{/if}}
@ -555,7 +497,7 @@
}} }}
</td> </td>
<td></td> <td></td>
<td>{{$ligne_immo.montant|money_currency_html:false|raw}}</td> <td>{{$ligne_immo.amount|money_currency_html:false|raw}}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>