diff --git a/attach_amort.html b/attach_amort.html index f643f9a..f369cd4 100644 --- a/attach_amort.html +++ b/attach_amort.html @@ -11,6 +11,7 @@ {{* chercher l'écriture d'immobilisation *}} {{#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 @@ -24,11 +25,12 @@ {{/select}} {{* chercher le doc associé à l'immo *}} -{{#load id=$_GET.immo_doc_id|intval}} +{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:assign label_immo=$label|or:$ligne_immo.trans_label}} {{else}} {{:error message="Immobilisation non trouvée"}} {{/load}} +{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.montant}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} @@ -67,9 +69,9 @@ {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} - {{* vérifier que le montant saisi est inférieur au reste *}} - {{if $_POST.montant == null}} + {{if $_POST.montant == null || $_POST.montant == 0}} + {{:assign montant_amort=$reste}} {{if $montant_affecte == 0}} {{:assign saved_amount=null}} {{else}} @@ -88,6 +90,57 @@ {{/if}} {{/if}} + {{* vérifier que le montant total des amortissements ne dépasse pas la valeur de l'immo *}} + {{* montant de l'immo *}} + {{: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}} + + {{* montant des amortissements *}} + {{:assign total_amort=0}} + {{#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}} + + {{:assign vnc="%d-%d"|math:$montant_immo:$total_amort}} + {{:assign total_amort="%d+%d"|math:$total_amort:$montant_amort}} + {{if $total_amort > $montant_immo}} + {{:assign ma="%f"|math:$montant_amort|money_currency:false}} + {{:assign vnc="%f"|math:$vnc|money_currency:false}} + {{:error message="Le montant de l'amortissement (%s) dépasse la valeur résiduelle de l'immobilisation (%s)"|args:$ma:$vnc}} + {{/if}} + {{* chercher les liaisons de l'écriture d'immobilisation *}} {{#select CASE links.id_related = :immo_trans_id @@ -129,7 +182,16 @@ }} {{/load}} - {{:redirect force="amortization.html?immo_line_id=%s&immo_doc_id=%s&ok=1&msg=attach_amort"|args:$_GET.immo_line_id:$_GET.immo_doc_id}} + {{* immo soldée ? *}} + {{if $total_amort == $montant_immo}} + {{:assign status="amortized"}} + {{:save + key=$info_immo.key + status=$status + }} + {{/if}} + + {{:redirect force="amortization.html?immo_line_id=%s&immo_doc_id=%s&type_immo=%s&ok=1&msg=attach_amort"|args:$_GET.immo_line_id:$_GET.immo_doc_id:$status}} {{/form}} {{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}} @@ -148,10 +210,12 @@