{{* -*- brindille -*- *}} {{:admin_header title="Modifier l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* @param immo_line_id @param immo_doc_id ¿ @param type_immo : managed, amortized, archived, other ? TODO : - ¿ faire une ligne modifiable pour chaque avoir avec un bouton de suppression ? - 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 *}} {{* données de l'immobilisation *}} {{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{else}} {{:error message="Immobilisation non trouvée"}} {{/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 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}} {{* 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 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." value=$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 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.montant:$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 == null || $_POST.date_achat|parse_date == $ligne_immo.date_achat}} {{:assign date_achat=null}} {{elseif $_POST.date_achat|parse_date == $info_immo.date_achat}} {{:assign date_achat=$info_immo.date_achat}} {{else}} {{:assign date_achat=$_POST.date_achat|parse_date}} {{/if}} {{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_mes == null || $_POST.date_mes|parse_date == $ligne_immo.date_achat}} {{:assign date_mes=null}} {{elseif $_POST.date_mes|parse_date == $info_immo.date_achat}} {{:assign date_mes=null}} {{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}} {{* 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}} {{:form_errors}} {{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="parameter"}} {{/if}} {{: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.immo_trans_id}}

Paramètres de l'immobilisation

Immobilisation
#{{$ligne_immo.immo_trans_id}} {{$immo_label}}
Compte d'immobilisation
{{$ligne_immo.code}} — {{$ligne_immo.account_label}}
Montant
{{"%f"|math:$montant_immo|money_currency_html:false|raw}}
{{if $total_credits > 0}}
Montant des avoirs
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
Montant à amortir
{{"%f"|math:$solde|money_currency_html:false|raw}}
{{/if}}
Date de l'écriture d'immobilisation
{{$ligne_immo.date_achat|date_short}}
Paramètres de l'amortissement
{{:input id="amortir" type="checkbox" value=1 name="amortir" label="Amortir cette immobilisation sur une ou plusieurs années" checked="checked" help="Dé-cocher pour ne pas amortir"}}
{{:input type="number" name="duree" label="Durée d'amortissement" min=1 default=$info_immo.duration}} {{:input type="text" name="libelle" label="Libellé" default=$info_immo.label}} {{if $info_immo.amount != null}} {{:assign max_aff="%f"|math:$max_disponible|money_currency:false}} {{:input type="money" name="montant" label="Montant de l'immobilisation" default=$montant_immo help="Montant maximum = %s"|args:$max_aff}} {{/if}} {{:input type="date" name="date_achat" label="Date d'acquisition" default=$info_immo.date_achat}} {{:input type="date" name="date_mes" label="Date de mise en service" default=$info_immo.date_mes}} {{if $linked_immos}}
{{#foreach from=$linked_immos item="id"}} {{:input type="hidden" name="credit_id" value=$id}}{{$id}} {{/foreach}}
{{/if}}

{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}

{{:admin_footer}}