{{* -*- brindille -*- *}} {{* Enregistrer la liaison entre une ligne d'écriture d'amortissement et une ligne d'écriture d'immobilisation @param immo_line_id : numéro de ligne de l'écriture d'immobilisation @param amort_line_id : numéro de ligne de l'écriture d'amortissement @param immo_doc_id : numéro du doc d'immo *}} {{* chercher l'écriture d'immobilisation *}} {{#select line.id_transaction as immo_trans_id, 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 = $_GET.immo_line_id|intval assign="ligne_immo" }} {{else}} {{:error message="Immobilisation non trouvée"}} {{/select}} {{* chercher le doc associé à l'immo *}} {{#load id=$_GET.immo_doc_id|intval}} {{:assign label_immo=$label|or:$ligne_immo.trans_label}} {{else}} {{:error message="Immobilisation non trouvée"}} {{/load}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{* chercher l'écriture d'amortissement *}} {{#select line.credit as amount, line.label as line_label, trans.date as amort_date, trans.label as trans_label, trans.id as trans_id, acc.code as account_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 = $_GET.amort_line_id|intval assign="amort_line" }} {{else}} {{:error message="Amortissement non trouvé"}} {{/select}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$amort_line.trans_id}} {{* montant de l'écriture d'amortissement déjà affecté *}} {{:assign montant_affecte=0}} {{#load type="amort_link" assign="linked_amort." where="$$.amort_line_id = :amort_line_id" :amort_line_id = $_GET.amort_line_id|intval }} {{:assign montant_affecte="%d+%d"|math:$montant_affecte:$amount}} {{/load}} {{:assign reste="%d-%d"|math:$amort_line.amount:$montant_affecte}} {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} {{* vérifier que le montant saisi est inférieur au reste *}} {{if $_POST.montant == null}} {{if $montant_affecte == 0}} {{:assign saved_amount=null}} {{else}} {{:assign saved_amount=$reste}} {{/if}} {{else}} {{:assign montant_amort=$_POST.montant|money_int}} {{if $montant_amort > $reste}} {{:assign reste_nb="%f"|math:$reste|money_currency:false}} {{:error message="Le montant de l'amortissement ne peut être supérieur au reste (%s)"|args:$reste_nb}} {{/if}} {{if $montant_amort == $amort_line.amount}} {{:assign saved_amount=null}} {{else}} {{:assign saved_amount=$montant_amort}} {{/if}} {{/if}} {{* 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.immo_trans_id }} {{:assign var="linked_transactions." value=$linked_id}} {{/select}} {{* ajouter la nouvelle liaison *}} {{:assign var="linked_transactions." value=$amort_line.trans_id}} {{:api method="POST" path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id assign="result" assign_code="result_code" transactions=$linked_transactions }} {{* vérifier si cette liaison est déjà présente dans les documents pour éviter les doublons *}} {{* TODO voir si nécessaire ? *}} {{#load type="amort_link" where="$$.immo_doc_id = :immo_doc_id AND $$.amort_line_id = :amort_line_id" :immo_doc_id=$_GET.immo_doc_id|intval :amort_line_id = $_GET.amort_line_id|intval limit=1 }} {{else}} {{:save key=""|uuid type="amort_link" immo_doc_id=$_GET.immo_doc_id|intval amort_line_id=$_GET.amort_line_id|intval amount=$saved_amount }} {{/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}} {{/form}} {{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" current="config" subcurrent="init" subsubcurrent="parameter"}} {{/if}} {{:form_errors}}