Traitement écritures sorties du bilan avant mise en service du module

This commit is contained in:
Jean-Christophe Engel 2026-06-04 11:26:45 +02:00
parent 780eb206ce
commit a15254f372
13 changed files with 1011 additions and 146 deletions

View file

@ -39,8 +39,11 @@
{{#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 *}}
{{:assign duration=0}}
{{:assign libelle=null}}
@ -48,8 +51,20 @@
{{:assign date_achat=null}}
{{:assign date_mes=null}}
{{: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}}
{{* immobilisation amortissable *}}
{{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}}
@ -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>
<dt>Montant</dt>
<dd class="money strong">{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}</dd>
<dt>Montant déjà affecté</dt>
<dd class="money strong">{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}</dd>
<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>
{{if $montant_affecte > 0}}
<dt>Montant déjà affecté</dt>
<dd class="money strong">{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}</dd>
<dt>Montant restant à affecter</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>
<dt>Compte d'immobilisation</dt>
<dd>{{$ligne_immo.code}} — {{$ligne_immo.account_label}}
@ -164,26 +182,23 @@
<form method="post" action="">
<fieldset>
<legend>Amortissement</legend>
<dl>
{{if $info_immo.status == 'ignored'}}
{{:assign checked=null}}
{{else}}
{{:assign checked="checked"}}
{{/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>
<legend>Classement</legend>
<dl id="classement_immo">
<dt><label>Faites un choix</label> <b>(obligatoire)</b></dt>
{{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" help="Cette immobilisation sera classée parmi les immobilisations amortissables" default=$choix_defaut}}
{{: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}}
{{: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}}
</dl>
</fieldset>
</fieldset>
<fieldset class="masquable">
<legend>Informations facultatives</legend>
<legend>Informations</legend>
<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_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="money" name="montant" label="Montant de l'immobilisation" required=true default=$reste}}
</dl>
</fieldset>
@ -198,20 +213,23 @@
<script type="text/javascript" src="scripts.js"></script>
<script type="text/javascript">
function changeVisibility(evt, idcheck = 'f_amortir_1', hiddenclass = 'masquable', id_help = 'help_f_amortir_1')
{
toggleVisibility(idcheck, document.querySelectorAll('.' + hiddenclass));
const help_elem = document.getElementById(id_help);
if (document.getElementById(idcheck).checked) {
help_elem.innerText = "Dé-cocher pour ne pas amortir";
// afficher/masquer les champs de saisie
function toggleInputs(event) {
const classement_immo = document.getElementById('classement_immo');
const managed = classement_immo.querySelector('input[type=radio][value=managed]');
if (managed.checked) {
g.toggle('.masquable', true);
} else {
help_elem.innerText = "Cocher pour amortir";
g.toggle('.masquable', false);
}
}
toggleInputs();
(function () {
document.getElementById('f_amortir_1').onclick = changeVisibility;
changeVisibility(null);
const radios = document.querySelectorAll('input[name="classify"]');
radios.forEach(radio => {
radio.addEventListener("change", toggleInputs);
});
})();
</script>