{{* -*- brindille -*- *}} {{* @param immo_doc_id TODO ? : - séparer les cas des immo simples et complexes (BOI) par exemple pour la durée d'amort par défaut {{:input ...}} - prise en charge immo => param = immo_line_id - modif param immo => param = immo_doc_id - DONE possibilité supprimer liaison écriture avoir *}} {{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} {{if $message != null}} {{:error message=$message}} {{/if}} {{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} {{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} {{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}} {{/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="linked_immos, total_credits"}} {{:assign solde="%d-%d"|math:$montant_immo:$total_credits}} {{:assign autres_amount=0}} {{#load type="immo" where="$$.line = :line_id AND id != :doc_id" :line_id = $info_immo.line :doc_id = $info_immo.id }} {{:assign autres_amount="%d+%d"|math:$autres_amount:$amount}} {{/load}} {{:assign max_disponible="%d-%d"|math:$ligne_immo.amount:$autres_amount}} {{* traiter la saisie *}} {{#form on="save"}} {{if ! $_POST.amortir}} {{* ne pas amortir *}} {{:assign duration=0}} {{:assign libelle=null}} {{:assign montant=null}} {{:assign date_achat=null}} {{:assign date_mes=null}} {{:assign status="ignored"}} {{else}} {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} {{: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}} {{/if}} {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $info_immo.date_achat}} {{:assign date_achat=$info_immo.date_achat}} {{elseif $_POST.date_achat|parse_date == $ligne_immo.date_achat}} {{:assign date_achat=null}} {{else}} {{:assign date_achat=$_POST.date_achat|parse_date}} {{/if}} {{* TODO : simplifier ? *}} {{if $_POST.date_mes == null || $_POST.date_mes|parse_date == $info_immo.date_mes}} {{:assign date_mes=$info_immo.date_mes}} {{elseif $_POST.date_mes|parse_date == $info_immo.date_achat}} {{:assign date_mes=null}} {{elseif $_POST.date_mes|parse_date == $ligne_immo.date_achat}} {{if $info_immo.date_achat == null}} {{:assign date_mes=null}} {{else}} {{:assign date_mes=$ligne_immo.date_achat}} {{/if}} {{else}} {{:assign date_mes=$_POST.date_mes|parse_date}} {{:assign date_achat_comp=$ligne_immo.date_achat}} {{if $date_achat != null}} {{:assign date_achat_comp=$date_achat}} {{/if}} {{if $date_mes < $date_achat_comp}} {{:assign da=$date_achat_comp|date_short}} {{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$_POST.date_mes:$da}} {{/if}} {{/if}} {{:assign duration=$_POST.duree|intval}} {{if $duration <= 0}} {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} {{/if}} {{if $_POST.libelle != $ligne_immo.line_label && $_POST.libelle != $ligne_immo.trans_label}} {{:assign libelle=$_POST.libelle}} {{else}} {{:assign libelle=null}} {{/if}} {{:assign montant=null}} {{if $_POST.montant == null || $_POST.montant|money_int == 0 || $_POST.montant|money_int == $info_immo.amount}} {{:assign montant=$info_immo.amount}} {{else}} {{:assign montant=$_POST.montant|money_int}} {{if $montant < 0 || $montant > $max_disponible}} {{:assign montant_aff="%f"|math:$montant|money_currency:false}} {{:assign max_aff="%f"|math:$max_disponible|money_currency:false}} {{:error message="Le montant (%s) doit être positif et ne peut être supérieur à %s"|args:$montant_aff:$max_aff}} {{/if}} {{/if}} {{:assign status="managed"}} {{/if}} {{* écritures de crédit *}} {{#foreach from=$linked_immos item="line"}} {{if ! $_POST.credit_id|has:$line.trans_id}} {{:assign var="docs_to_remove." value=$line.doc}} {{:assign var="links_to_remove." value=$line.trans_id}} {{/if}} {{/foreach}} {{if $docs_to_remove != null}} {{:assign remove_set=$docs_to_remove|implode:","}} {{:assign remove_set="("|cat:$remove_set|cat:")"}} {{:delete where="id IN %s"|args:$remove_set}} {{* idem avec acc_transactions_links *}} {{#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|in:$links_to_remove}} {{: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 }} {{/if}} {{* enregistrer les infos de l'immobilisation *}} {{:save key=$info_immo.key validate_schema="schema.json" type="immo" line=$info_immo.line duration=$duration label=$libelle amount=$montant date_achat=$date_achat date_mes=$date_mes status=$status assign_new_id="new_id" }} {{if $_POST.amortir}} {{:assign type_immo="managed"}} {{else}} {{:assign type_immo="other"}} {{/if}} {{:redirect force="index.html?ok=1&msg=infos&type_immo=%s"|args:$type_immo}} {{/form}} {{:admin_header title="Modifier l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="parameter"}} {{/if}} {{:form_errors}} {{:assign choix_defaut=$_GET.type_immo}} {{* 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.trans_id}}