diff --git a/README.md b/README.md index 578af08..e771e69 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,15 @@ Ce module permet de gérer les écritures d'amortissements pour les immobilisati - lister les immobilisations - ajouter une nouvelle immobilisation -- lister les amortissements d'une immobilisation +- lister les amortissements d'une immobilisation : + - amortissements déjà enregistrés + - amortissements à venir +- associer une écriture d'amortissement à une immobilisation - enregistrer un nouvel amortissement -- incorporer d'anciennes immobilisations et leurs amortisements ## Installation - télécharger [l'archive zip](https://link.infini.fr/amortissement) - cliquer « Configuration » puis « Extensions » - en bas de la page, cliquer « Importer un module » - sélectionner l'archive téléchargée ci-dessus -- activer le module - +- activer le module qui est maintenant présent dans la liste des extensions inactives diff --git a/_archives.html b/_archives.html index b5d2cc6..8a8f8ad 100644 --- a/_archives.html +++ b/_archives.html @@ -153,7 +153,7 @@ {{$account_code}} {{$account_label}} - {{:linkbutton label="Modifier" href="exit_step1.html?immo_doc_id=%s&from=exit"|args:$info_immo.id shape="edit"}} + {{:linkbutton label="Modifier" href="exit_step3.html?immo_doc_id=%s"|args:$info_immo.id shape="edit"}} {{/select}} @@ -172,6 +172,7 @@ {{$value|money_html:false|raw}} + {{/foreach}} @@ -183,6 +184,7 @@ {{$total_immo|money_html:false|raw}} + {{/if}} @@ -199,6 +201,7 @@ {{$value|money_html:false|raw}} + {{/foreach}} @@ -210,6 +213,7 @@ {{$total_cessions|money_html:false|raw}} + {{/if}} diff --git a/_common_attach.html b/_common_attach.html deleted file mode 100644 index 728ee1f..0000000 --- a/_common_attach.html +++ /dev/null @@ -1,37 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Enregistrer l'association entre une ligne d'immo et une autre ligne (amort, credit, cession, sortie) - @param immo_doc_id : id du doc associé à la ligne d'immobilisation - @param trans_id : id de l'écriture à attacher -*}} -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/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.trans_id -}} - {{:assign var="linked_transactions." value=$linked_id}} -{{/select}} - -{{* ajouter la nouvelle liaison *}} -{{:assign var="linked_transactions." value=$trans_id}} -{{* 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 -}} - diff --git a/_common_detach.html b/_common_detach.html index 8c84736..b4e80d0 100644 --- a/_common_detach.html +++ b/_common_detach.html @@ -1,13 +1,12 @@ {{* -*- brindille -*- *}} {{* - Supprimer l'association entre une ligne d'immo et une autre ligne (amort, credit, cession, sortie) + Supprimer l'association entre deux lignes @param immo_doc_id : id du doc associé à la ligne d'immobilisation @param line_id : id de la ligne à détacher *}} - {{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="info_immo, ligne_immo, message"}} +{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="ligne_immo, message"}} {{if $message != null}} {{:error message=$message}} {{/if}} diff --git a/_compare_version.tpl b/_compare_version.tpl deleted file mode 100644 index 88d8a40..0000000 --- a/_compare_version.tpl +++ /dev/null @@ -1,34 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Comparer deux numéros de version n1.n2[.n3] - @param nv1 - @param nv2 - @result comp : -1 si nv1 < nv2, 0 si nv1 = nv2, 1 si nv1 > nv2 -*}} - -{{:assign nv1=$nv1|cat:"."}} -{{:assign nv2=$nv2|cat:"."}} -{{:assign var="tv1" value=$nv1|explode:"."}} -{{:assign var="tv2" value=$nv2|explode:"."}} - -{{:assign comp=0}} -{{:assign i=0}} -{{#foreach from=$tv1 item="e1"}} - {{:assign var="e2" from="tv2.%d"|args:$i}} - {{if $e1 < $e2}} - {{:assign comp=-1}} - {{:break}} - {{elseif $e1 > $e2}} - {{:assign comp=1}} - {{:break}} - {{/if}} - {{:assign i="%d+1"|math:$i}} -{{/foreach}} -{{* - cas où le premier tableau a moins d'éléments que le 2ème - et où les éléments présents dans les deux tableaux sont identiques - *}} -{{if $comp == 0 && $tv1|count < $tv2|count}} - {{:assign comp = -1}} -{{/if}} diff --git a/_get_amort_lines.html b/_get_amort_lines.html index dd115e8..a985fa2 100644 --- a/_get_amort_lines.html +++ b/_get_amort_lines.html @@ -5,7 +5,6 @@ @param immo_doc_id : id du doc associé à l'immobilisation @result linked_amort : lignes d'amortissement liées à la ligne d'immobilisation @result total_amort : montant total des amortissements de l'immobilisation - @result created_amort : vrai s'il y a au moins un amortissement créé par le module dans la liste *}} {{:assign total_amort=0}} @@ -34,10 +33,6 @@ assign="amort_line" }} {{:assign var="amort_line.amount" value=$amort_info.amount|or:$amort_line.amount}} - {{if $amort_info.created}} - {{:assign var="amort_line.created" value=true}} - {{:assign var="created_amort" value=true}} - {{/if}} {{:assign var="linked_amort.%s_%d"|args:$amort_line.date:$amort_info.id value=$amort_line}} {{:assign total_amort="%d+%d"|math:$total_amort:$amort_line.amount}} {{/select}} diff --git a/_get_free_amort.html b/_get_free_amort.html index b3b142f..a3373a4 100644 --- a/_get_free_amort.html +++ b/_get_free_amort.html @@ -2,7 +2,7 @@ {{* lister les amortissement non rattachés à une immo - @param condition + @param filter_condition *}} {{#select line.id as line_id, @@ -18,9 +18,9 @@ FROM acc_transactions_lines AS line INNER JOIN acc_accounts AS account ON account.id = line.id_account INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction - WHERE credit > 0 AND (NOT trans.status & 16) AND !condition + WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) AND !filter_condition ORDER BY trans.date, trans.label; - !condition=$condition + !filter_condition=$filter_condition assign="amort_line" }} {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} @@ -41,7 +41,6 @@ {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} {{/load}} {{if $keep_amort && $amort_amount < $amort_line.amount}} - {{:assign var="amort_line.amount" value="%d-%d"|math:$amort_line.amount:$amort_amount}} {{:assign var="free_amort_lines." value=$amort_line}} {{/if}} {{/select}} diff --git a/_immobilisations.html b/_immobilisations.html index 93648ec..e78fbfd 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -68,15 +68,12 @@ !table=$module.table !condition=$condition }} - {{if $status != "managed" && $status != "amortized"}} - {{:continue}} - {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$immo_trans_id}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}} {{:assign montant_immo=$doc_amount|or:$debit}} {{:assign immo_date = $doc_date_achat|or:$trans_date}} {{:assign label_immo=$doc_label|or:$trans_label}} - {{if $label_immo|strpos:$line_label === false}} + {{if $line_label != null && $line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}} {{/if}} @@ -96,8 +93,9 @@ {{/if}} {{/load}} + {{* Immobilisation soldée ? *}} + {{* TODO ¿ marquer archivée ? *}} {{if $montant_immo == 0}} - {{* Immobilisation soldée *}} {{:continue}} {{/if}} @@ -123,9 +121,17 @@ {{"%d-%d"|math:$montant_immo:$amort_amount|money_html:false|raw}} {{$account_code}} + {{*if $amort_amount == 0*}} + {{:linkbutton + label="Détails" + href="details_immo.html?immo_doc_id=%s"|args:$immo_doc_id + shape="eye" + }} + {{* target="_dialog"*}} + {{*/if*}} {{:linkbutton - label="Détails" - href="amortization.html?immo_doc_id=%s&type_immo=%s"|args:$immo_doc_id:$type_immo shape="eye" + label="Amortissements" + href="amortization.html?immo_doc_id=%s&type_immo=%s"|args:$immo_doc_id:$type_immo shape="table" }} diff --git a/_immobilisations_autres.html b/_immobilisations_autres.html index 383ba12..bacef59 100644 --- a/_immobilisations_autres.html +++ b/_immobilisations_autres.html @@ -86,7 +86,7 @@ !table_join WHERE !condition GROUP BY immo_line_id - ORDER BY trans.date; + ORDER BY trans.date DESC; !columns=$columns !table_join=$table_join !table=$module.table @@ -114,6 +114,7 @@ {{:assign var="immo_lines." value=$immo_line}} {{/select}} +{{*:debug lines=$immo_lines nb_lines=$immo_lines|count nb_null=$nb_null nb_managed=$nb_managed nb_ignored=$nb_ignored nb_other=$nb_other unhide=$unhide*}}
@@ -147,10 +148,8 @@ {{else}} {{* vérifier si le libellé aurait pu être filtré *}} {{#foreach from=$module.config.filters item="filter"}} - {{if $trans_label|strpos:$filter !== false}} + {{if $filter|strpos:$trans_label !== false}} {{:assign status="ignored"}} - {{else}} - {{:assign status=""}} {{/if}} {{/foreach}} {{/if}} diff --git a/_nav.html b/_nav.html index a3bf0b8..fac14e4 100644 --- a/_nav.html +++ b/_nav.html @@ -1,32 +1,55 @@ {{* -*- brindille -*- *}}
Amortissement - Informations non utilisées pour les immobilisations du compte 23 et ses sous-comptes
+ {{: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" required=true min=0 default=1 suffix="année(s)"}} - {{:input type="date" name="date_mes" label="Date de mise en service" default=$now|date_short help="C'est la date de première utilisation ; à modifier si différente de la date d'acquisition"}} + {{:input type="date" name="date_mes" label="Date de mise en service" help="C'est la date de première utilisation ; à renseigner uniquement si différente de la date d'acquisition"}}
@@ -234,10 +248,13 @@ function changeYear(evt, f_accounts = ['credit_account', 'debit_account'], f_yea setSelectorYear(f_accounts, f_years_select); } +function changeVisibility(evt, idcheck = 'f_amortir_1', iddiv = 'div_amort') +{ + toggleVisibility(idcheck, document.querySelectorAll('#' + iddiv)); +} + (function () { document.getElementById('f_id_year').onchange = changeYear; - document.getElementById('f_date_achat').addEventListener("change", (e) => { - document.getElementById('f_date_mes').value = document.getElementById('f_date_achat').value; - }); + document.getElementById('f_amortir_1').onclick = changeVisibility; })(); diff --git a/add_infos.html b/add_infos.html index 9a45878..d78097c 100644 --- a/add_infos.html +++ b/add_infos.html @@ -9,8 +9,14 @@ {{:assign montant_affecte=0}} {{#load type="immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval assign="info_immo"}} {{:assign montant_affecte="%d+%d"|math:$montant_affecte:$amount}} - {{:assign choix_defaut=$info_immo.status}} {{/load}} +{{if $info_immo != null}} + {{:assign date_defaut=$info_immo.date}} + {{:assign duree_defaut=$info_immo.duration}} + {{:assign choix_defaut=$info_immo.status}} +{{else}} + {{:assign duree_defaut=null}} +{{/if}} {{#select trans.id as immo_trans_id, @@ -31,12 +37,7 @@ {{:error message="Immobilisation non trouvée"}} {{/select}} {{:assign reste="%d-%d"|math:$ligne_immo.montant:$montant_affecte}} -{{:assign date_achat_defaut=$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign date_mes_defaut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign immo_label=$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.trans_label}} - {{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} + {{#form on="save"}} {{if $_POST.classify == null}} @@ -52,25 +53,17 @@ {{:assign date_mes=null}} {{:assign status="ignored"}} {{elseif $_POST.classify == "archived"}} - {{* voir s'il y a déjà un doc associé à cette immo *}} - {{#load type="immo" where="$$.line = :immo_line_id" :immo_line_id=$_GET.immo_line_id|intval}} - {{:assign uuid=$key}} - {{:assign immo_doc_id=$id}} - {{else}} - {{:assign uuid=""|uuid}} - {{/load}} - {{* immobilisation sortie du bilan *}} {{:save - key=$uuid - validate_schema="asset.schema.json" + key=""|uuid + validate_schema="schema.json" type="immo" line=$_GET.immo_line_id|intval duration=0 - status=null + status="managed" assign_new_id="immo_doc_id" }} - {{:redirect force="exit_step1.html?immo_doc_id=%s&from=exit"|args:$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}} @@ -136,7 +129,7 @@ {{/if}} {{:save key=$key - validate_schema="asset.schema.json" + validate_schema="schema.json" type="immo" line=$_GET.immo_line_id|intval duration=$duration @@ -158,15 +151,10 @@ {{:admin_header title="Classer l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="other" subcurrent="parameter"}} + {{:include file="_nav.html" current="index" subcurrent="other" subsubcurrent="parameter"}} {{/if}} {{:form_errors}} -{{* date de début du 1er exercice dans paheko *}} -{{#years order="start_date" limit=1}} - {{:assign first_date=$start_date}} -{{/years}} - {{* - classer l'immobilisation - renseigner ou modifier la date de mise en service, les écritures associées ou la durée d'amortissement @@ -177,9 +165,7 @@
Immobilisation
-
- #{{$ligne_immo.immo_trans_id}} {{$immo_label}} -
+
#{{$ligne_immo.immo_trans_id}} {{$ligne_immo.trans_label}}{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.trans_label}} — {{$ligne_immo.line_label}}{{/if}}
Montant
{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}
{{if $montant_affecte > 0}} @@ -200,22 +186,20 @@ Classement
(obligatoire)
- {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" default=$choix_defaut}} - {{if $ligne_immo.date_achat > $first_date}} - {{:input type="radio-btn" name="classify" value="archived" label="Immobilisation sortie du bilan" default=$choix_defaut}} - {{/if}} - {{:input type="radio-btn" name="classify" value="ignored" label="Immobilisation à ignorer" help="L'écriture n'apparaitra plus dans la liste des immobilisations" default=$choix_defaut}} + {{: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}}
Informations
- {{:input type="date" name="date_achat" label="Date d'acquisition" default=$date_achat_defaut help="à modifier si nécessaire"}} - {{:input type="text" name="libelle" label="Libellé" default=$immo_label help="à modifier si nécessaire"}} - {{: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="number" name="duree" label="Durée d'amortissement" required=true min=1 suffix="année(s)"}} - {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_mes_defaut help="à modifier si différente de la date d'acquisition"}} + {{: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"}}
@@ -236,6 +220,7 @@ function toggleInputs(event) { const managed = classement_immo.querySelector('input[type=radio][value=managed]'); if (managed.checked) { g.toggle('.masquable', true); + document.getElementById('f_duree').focus(); } else { g.toggle('.masquable', false); } @@ -247,9 +232,6 @@ toggleInputs(); radios.forEach(radio => { radio.addEventListener("change", toggleInputs); }); - document.getElementById('f_date_achat').addEventListener("change", (e) => { - document.getElementById('f_date_mes').value = document.getElementById('f_date_achat').value; - }); })(); diff --git a/aide.html b/aide.html index 0bf1430..e6855d7 100644 --- a/aide.html +++ b/aide.html @@ -1,12 +1,163 @@ {{* -*- brindille -*- *}} -{{:admin_header title="Aide" custom_css="./style_aide.css" current="module_amortization"}} +{{:admin_header title="Aide" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{:include file="_nav.html" current="aide"}} -
-
- {{:include file="doc/aide.html"}} -
-
+

+ Ce module gère l'amortissement linéaire des immobilisations. +

+ +

Immobilisations

+Elles sont classées dans plusieurs onglets : + +
    +
  • En cours : immobilisations en cours d'amortissement.
  • +
  • Terminées : immobilisations dont l'amortissement est terminé.
  • +
  • Archivées : immobilisations qui ont été sortie du bilan.
  • +
  • Autres : immobilisations pour lesquelles le module n'a pas + d'information ou qui ont été marquées non amortissables.
  • +
+ +

Ajouter une immobilisation

+ +
+

+ Il faut renseigner les informations de l'immobilisation. + On peut indiquer qu'il s'agit d'une immobilisation qui ne doit + pas être amortie ; dans le cas contraire, il faut renseigner + les différents paramètres de l'immobilisation +

+ +
+ +

Amortissements

+ +
+

+ Le calcul de l'amortissement se fait par la méthode linéaire. +

+

+ La date de début du calcul est par défaut la date d'achat ; si la + date de mise en service est postérieure à la date d'achat, c'est + celle-ci qui est prise en compte. +

+
+ +

Liste des amortissements

+ +
+ On trouve ici de une à trois listes, selon la situation : +
    +
  • + Amortissements enregistrés +

    + Ce sont des écritures d'amortissement déjà + enregistrées et liées à l'écriture de + l'immobilisation courante. +

    +
  • +
  • + Amortissements futurs +

    + Ce sont les écritures amortissement de + l'immobilisation courante qui n'ont pas encore été + enregistrées ; seuls les amortissements d'un + exercice ouvert peuvent être enregistrés ; les + autres sont présents pour information et pourront + être enregistrés quand l'exercice correspondant + aura été ouvert. +

    +
  • +
  • + Autres amortissement non rattachés +

    + Ce sont des écritures passées sur un compte + d'amortissement (28xx) qui ne sont + associées à aucune écriture d'immobilisation ; en + cliquant le bouton « Attacher », on peut rattacher + l'écriture d'amortissement sélectionnée à + l'immobilisation courante. +

    +

    + Si on a rattaché par erreur une écriture + d'amortissement à une immobilisation, le bouton « + Détacher » en face de l'écriture permettra de + défaire l'opération. +

    +
  • +
+
+ +

Créer une écriture d'amortissement

+ +
+

+ Il faut renseigner les différents paramètres de l'amortissement : +

    +
  • Date ; par défaut, il s'agit de la date de fin d'exercice
  • +
  • Libellé : déterminé à partir du libellé de l'immobilisation< ; il peut être modifié/li> +
  • Montant : sa valeur est calculée par le module ; elle peut être modifiée
  • +
  • + Compte de débit : à choisir dans la liste ; par défaut + c'est le compte 6811 : Dotation aux amortissements + des immobilisations +
  • +
  • + Compte d'amortissement : à choisir dans la liste ; par + défaut c'est le compte formé en intercalant un 8 après + le 2 initial du compte d'immobilisation (exemple : + 2183 => 28183) +
  • +
+ +

+
+ +

Remarques

+ +
    +
  • + Les écritures d'immobilisation et d'amortissement créées en + dehors du module ne peuvent être associées automatiquement que + si leurs écritures ont été liées ; dans le cas contraire, il + faudra renseigner manuellement les infos de l'immobilisation. +
  • +
+ + +

+ Dans le deuxième cas, il faut cliquer sur le bouton « Ajouter + infos » puis : +

    +
  • soit indiquer que l'immobilisation ne doit pas être amortie
  • +
  • soit fournir la date de mise en service du bien (si différente de la date d'acquisition) ainsi + que la durée en années de l'amortissement
  • +
+

+

+ Tant qu'une immobilisation ne possède pas d'amortissement, il est + possible de modifier ses informations à l'aide du bouton « + Modifier infos ». +

+ diff --git a/amortization.html b/amortization.html index 7d73749..34e01b1 100644 --- a/amortization.html +++ b/amortization.html @@ -15,7 +15,7 @@ {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} {{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{if $info_immo.amount != null}} @@ -29,40 +29,41 @@ {{* 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:$ligne_immo.amount:$total_credits}} -{{:assign valeur_residuelle=$solde}} + +{{if $info_immo.status == "amortized"}} + {{:assign amort_amount=$solde}} + {{:assign valeur_residuelle=0}} +{{else}} + {{:assign valeur_residuelle=$solde}} +{{/if}} {{* lister les amortissements liés à l'immobilisation *}} -{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort, created_amort"}} +{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}} {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}} {{if $valeur_residuelle > 0}} {{* lister les amortissements non attachés à une immo *}} - {{:assign account_filter="28%"|quote_sql}} - {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} - - {{:assign date_amort=$date_debut|quote_sql}} - {{:assign date_condition="trans.date >= "|cat:$date_amort}} - {{:assign condition=$date_condition|cat:" AND "|cat:$filter_condition}} - {{:include file="./_get_free_amort.html" condition=$condition keep="free_amort_lines"}} + {{:include file="./_get_free_amort.html" filter_condition="1" keep="free_amort_lines"}} {{/if}} -{{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} +{{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} -{{if $_GET.type_immo == "amortized" && $valeur_residuelle == 0}} - {{:assign current="amortized"}} +{{if $_GET.type_immo == "amortized" || $valeur_residuelle== 0 }} + {{:assign subcurrent="amortized"}} {{elseif $_GET.type_immo == "archived"}} - {{:assign current="archived"}} -{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed" || $valeur_residuelle > 0}} - {{:assign current="managed"}} + {{:assign subcurrent="archived"}} +{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed"}} + {{:assign subcurrent="managed"}} {{else}} - {{:assign current="other"}} + {{:assign subcurrent="other"}} {{/if}} {{:include file="_nav.html" - current="%s"|args:$current - subcurrent="details" + current="index" + subcurrent="%s"|args:$subcurrent + subsubcurrent="amortization" type_immo=$_GET.type_immo autres_amort=$free_amort_lines }} @@ -78,8 +79,6 @@ {{:assign msg="Détachement avoir affectué"}} {{elseif $_GET.msg|match:"amortissement"}} {{:assign msg="Amortissement enregistré"}} - {{elseif $_GET.msg|match:"modif"}} - {{:assign msg="Modifications enregistrées"}} {{/if}}

{{$msg}}

{{elseif $_GET.err}} @@ -109,16 +108,52 @@ -

Immobilisation

-
-{{if $credit_lines}} - -{{/if}} - -

Écritures d'avoir attachées à l'immobilisation

{{if $linked_immos != null}} +

Écritures d'avoir attachées à l'immobilisation

@@ -194,7 +179,7 @@ - @@ -211,7 +196,43 @@

{{/if}} - +{{if $credit_lines}} +

Écritures au crédit du compte d'immobilisation

+
{{"%f"|math:$line.amount|money_currency_html:false|raw}} {{$line.account_code}} {{$line.account_label}} + {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}}
+ + + + + + + + + + + + + {{#foreach from=$credit_lines}} + {{:assign credit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$year}} + + + + + + + + + + {{/foreach}} + +
DateLibelléMontantN° compteCompte
#{{$trans_id}}{{$date|date_short}}{{$trans_label}} + {{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}} + {{$amount|money_html|raw}}{{$account_code}}{{$account_label}} + {{:linkbutton label="Attacher" href="attach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$credit_line_id shape="plus" target="_dialog"}} +
+{{/if}} + +

{{:button type="submit" name="proceed" label="Poursuivre" shape="right" class="main"}}

diff --git a/exit_step2.html b/exit_step2.html index acf7cc0..699b947 100644 --- a/exit_step2.html +++ b/exit_step2.html @@ -1,7 +1,7 @@ {{* -*- brindille -*- *}} {{* - Associer des écritures d'amortissement à une immo créée et sortie du + Associer les différentes écritures à une immo créée et sortie du bilan avant la mise en service du module @param immo_doc_id : id du doc associé à l'immobilisation *}} @@ -13,15 +13,15 @@ {{/if}} {{#form on="backward"}} - {{:redirect to="exit_step1.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} + {{:redirect to="exit_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} {{/form}} {{#form on="forward"}} - {{:redirect to="exit_step3.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} + {{:redirect to="exit_step3.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} {{/form}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} @@ -43,6 +43,7 @@ }} {{* chercher des écritures d'amortissement correspondant au compte d'une immo sans doc associé *}} +{{* TODO écritures d'amort pas entièrement affectées *}} {{#select line.id as amort_line_id, line.credit as amort_amount, @@ -90,11 +91,6 @@ {{/select}} {{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}} -{{if $_GET.from == "exit"}} - {{:assign current="other"}} -{{else}} - {{:assign current="archived"}} -{{/if}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach_amort"}} @@ -112,7 +108,7 @@
Compte d'immobilisation
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
Montant de l'immobilisation
-
{{$montant_immo|money_currency_html:false|raw}}
+
{{$ligne_immo.amount|money_html|raw}}
{{if $total_credits > 0}}
Montant des avoirs
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
@@ -128,17 +124,8 @@ -{{if $free_amort_lines}} - -{{/if}} - -

Écritures d'amortissement attachées à l'immobilisation

{{if $linked_amort != null}} +

Écritures d'amortissement attachées à l'immobilisation

@@ -172,7 +159,7 @@ - @@ -189,6 +176,55 @@

{{/if}} + +{{if $free_amort_lines}} +

Autres écritures d'amortissements

+
{{"%f"|math:$line.amount|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} + {{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}}
+ + + + + + + + + + + + + + {{#foreach from=$free_amort_lines item="line"}} + {{:assign amort_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} + + + + + + + + + + {{/foreach}} + +
DateLibelléMontantN° compteCompte
#{{$line.amort_trans_id}}{{$line.date|date_short}} + {{if $line.line_label != null}} + {{$line.line_label}} + {{if $line.trans_label != $line.line_label}} + — {{$line.trans_label}} + {{/if}} + {{else}} + {{$line.trans_label}} + {{/if}} +{{* + {{$line.trans_label}} + {{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}} +*}} + {{"%f"|math:$line.amort_amount|money_html:false|raw}}{{$line.account_code}}{{$line.account_label}} + {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.amort_line_id shape="plus" target="_dialog"}} +
+{{/if}} +

{{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}} diff --git a/exit_step3.html b/exit_step3.html index 365d817..671b415 100644 --- a/exit_step3.html +++ b/exit_step3.html @@ -1,7 +1,7 @@ {{* -*- brindille -*- *}} {{* - Associer une écriture de cession à une immo créée et sortie du + Associer les différentes écritures à une immo créée et sortie du bilan avant la mise en service du module @param immo_doc_id : id du doc associé à l'immobilisation *}} @@ -13,15 +13,24 @@ {{/if}} {{#form on="backward"}} - {{:redirect to="exit_step2.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} + {{:redirect to="exit_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} {{/form}} -{{#form on="forward"}} - {{:redirect to="exit_step4.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} +{{#form on="validate"}} + {{* mettre à jour l'état de l'immobilisation *}} + {{:save + key=$info_immo.key + status="archived" + }} + {{:redirect to="index.html?type_immo=archived"}} +{{/form}} + +{{#form on="finish"}} + {{:redirect to="index.html?type_immo=managed"}} {{/form}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} @@ -35,13 +44,84 @@ {{* lister les amortissements liés à l'immobilisation *}} {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}} -{{* chercher des écritures de cession *}} -{{:assign total_cession=0}} +{{* chercher une écriture de sortie de bilan associée *}} +{{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$info_immo.id assign="exit_info"}} +{{/load}} +{{if $exit_info != null}} + {{#select + trans.id as trans_id, + trans.label as trans_label, + trans.date as date, + line.id as line_id, + line.label as line_label, + line.credit as amount, + acc.id as account_id, + acc.code as account_code, + acc.label as account_label + FROM acc_transactions AS trans + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE line.id = :exit_line_id; + :exit_line_id = $exit_info.exit_line_id + assign="exit_line" + }} + {{/select}} +{{/if}} + +{{* + chercher des écritures au crédit du compte de l'immo sans doc associé + - line.credit < ligne_immo.amount => peut-être un avoir + - line.credit = ligne_immo.amount - avoirs => écriture de sortie du bilan +*}} {{#select - line.id as line_id, - line.credit as amount, - line.label as line_label, trans.id as trans_id, + trans.label as trans_label, + trans.date as date, + trans.id_year as year, + line.id as credit_line_id, + line.label as line_label, + line.credit as amount, + acc.id as account_id, + acc.code as account_code, + acc.label as account_label + FROM acc_transactions AS trans + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id + WHERE + acc.code = :acc_code + AND line.credit > 0 + AND credit_line_id NOT IN ( + SELECT json_extract(credit_link.document, '$.credit_line_id') AS line_id FROM !table as credit_link + WHERE json_extract(credit_link.document, '$.type') == "credit_link" + UNION + SELECT json_extract(exit_link.document, '$.exit_line_id') AS line_id FROM !table as exit_link + WHERE json_extract(exit_link.document, '$.type') == "exit_link" + ) + ; + :acc_code=$ligne_immo.account_code + !table =$module.table + assign="credit_line" + }} + {{if $credit_line.amount == $solde}} + {{:assign var="exit_lines." value=$credit_line}} + {{/if}} +{{/select}} + +{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} +{{:include + file="./_get_amort_code.html" + code_immo=$ligne_immo.account_code + keep="code_amort" +}} + +{{* chercher des écritures d'amortissement correspondant au compte d'une immo sans doc associé *}} +{{* TODO écritures d'amort pas entièrement affectées *}} +{{#select + line.id as amort_line_id, + line.credit as amort_amount, + line.label as line_label, + trans.id as amort_trans_id, trans.date as date, trans.label as trans_label, trans.id_year as year, @@ -51,60 +131,45 @@ FROM acc_transactions_lines AS line INNER JOIN acc_accounts AS account ON line.id_account = account.id INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE account.code LIKE :code_cession_new OR account.code LIKE :code_cession_old + WHERE + account.code = :code_amort + AND line.credit > 0 + AND (NOT trans.status & 16) + AND trans.date >= :immo_date ; - :code_cession_new = "757%" - :code_cession_old = "775%" - assign="line" + :code_amort = $code_amort + :immo_date=$date_immo + assign="amort_line" }} - {{* voir si l'écriture de cession est déjà liée à une immo *}} - {{* TODO VOIR SI UTILE - {{#load type="cession_link" - where="$$.cession_line_id = :cession_line_id" - :cession_line_id = $line.line_id - assign="cession_link" + {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} + {{:assign amort_amount=0}} + {{:assign keep_amort=true}} + {{#load type="amort_link" + where="$$.amort_line_id = :amort_line_id" + :amort_line_id=$amort_line.amort_line_id|intval + assign="amort_link" }} -{{:debug line=$line cession_link=$cession_link}} - {{:assign total_cession="%d+%d"|math:$total_cession:$line.amount}} - {{:assign var="line.linked_id" value=$linked_id}} - {{:assign var="linked_cessions." value=$line}} - {{else}} - {{:assign var="free_cessions." value=$line}} - {{/load}} -*}} - - {{#select - CASE WHEN links.id_related = :trans_id - THEN links.id_transaction - ELSE links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE links.id_transaction = :trans_id OR links.id_related = :trans_id - ; - :trans_id = $line.trans_id - }} - {{if $linked_id == $ligne_immo.trans_id}} - {{:assign total_cession="%d+%d"|math:$total_cession:$line.amount}} - {{:assign var="line.linked_id" value=$linked_id}} - {{:assign var="linked_cessions." value=$line}} + {{if $amort_link.amount == null || $amort_link.amount == 0}} + {{:assign amort_amount=$amort_line.amort_amount}} + {{:assign keep_amort=false}} + {{else}} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}} {{/if}} {{else}} - {{:assign var="free_cessions." value=$line}} - {{/select}} + {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} + {{/load}} + {{if $keep_amort && $amort_amount < $amort_line.amort_amount}} + {{:assign var="free_amort_lines." value=$amort_line}} + {{/if}} {{/select}} {{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}} -{{if $_GET.from == "exit"}} - {{:assign current="other"}} -{{else}} - {{:assign current="archived"}} -{{/if}} {{if $_GET.ok}} - {{if $_GET.msg|match:"attach_cession"}} - {{:assign msg="Écriture de cession attachée"}} - {{elseif $_GET.msg|match:"detach_cession"}} - {{:assign msg="Écriture de cession détachée"}} + {{if $_GET.msg|match:"attach_exit"}} + {{:assign msg="Écriture de sortie de bilan attachée"}} + {{elseif $_GET.msg|match:"detach_exit"}} + {{:assign msg="Écriture de sortie de bilan détachée"}} {{/if}}

{{$msg}}

{{/if}} @@ -116,7 +181,7 @@
Compte d'immobilisation
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
Montant de l'immobilisation
-
{{$montant_immo|money_currency_html:false|raw}}
+
{{$ligne_immo.amount|money_html|raw}}
{{if $total_credits > 0}}
Montant des avoirs
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
@@ -129,24 +194,11 @@
Valeur nette résiduelle
{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}
{{/if}} - {{if $total_cession > 0}} -
Montant de la cession
-
{{$total_cession|money_currency_html:false|raw}}
- {{/if}} -{{if $linked_cessions == null && $free_cessions != null}} - -{{/if}} - -

Écriture de cession attachée à l'immobilisation

-{{if $linked_cessions != null}} +{{if $exit_line != null}} +

Écriture de sortie du bilan attachée à l'immobilisation

@@ -160,46 +212,77 @@ - {{#foreach from=$linked_cessions item="line"}} - {{* données de l'écriture *}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} + + + + + + + + +
#{{$line.trans_id}}{{$line.date|date_short}} - {{if $line.line_label != null}} - {{$line.line_label}} - {{if $line.trans_label != $line.line_label}} - — {{$line.trans_label}} - {{/if}} - {{else}} - {{$line.trans_label}} - {{/if}} - {{"%f"|math:$line.amount|money_html:false|raw}}{{$line.account_code}}{{$line.account_label}} - {{:linkbutton label="Détacher" href="detach_cession.html?immo_doc_id=%s&cession_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}} -
#{{$exit_line.trans_id}}{{$exit_line.date|date_short}} + {{if $exit_line.line_label != null}} + {{$exit_line.line_label}} + {{else}} + {{$exit_line.trans_label}} + {{/if}} + {{"%f"|math:$exit_line.amount|money_html:false|raw}}{{$exit_line.account_code}}{{$exit_line.account_label}} + {{:linkbutton label="Détacher" href="detach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$exit_line.line_id shape="minus"}} +
-{{elseif $free_cessions}} +{{elseif $exit_lines}}

- Vous pouvez attacher une écriture de cession à l'immobilisation -

-{{else}} -

- Aucune écriture de cession + Vous pouvez attacher une écriture de sortie du bilan à l'immobilisation

{{/if}} +{{if $exit_lines}} +

Écritures non rattachées

+ + + + + + + + + + + + + + + {{#foreach from=$exit_lines item="line"}} + {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} + + + + + + + + + + {{/foreach}} + +
DateLibelléMontantN° compteCompte
#{{$line.trans_id}}{{$line.date|date_short}}{{$line.trans_label}} + {{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}} + {{"%f"|math:$line.amount|money_html:false|raw}}{{$line.account_code}}{{$line.account_label}} + {{:linkbutton label="Attacher" href="attach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="plus"}} +
+{{elseif $exit_line == null}} +

Aucune écriture de sortie du bilan. Vérifiez l'attachement d'écriture d'avoir.

+{{/if}} +

{{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}} - {{:button type="submit" name="forward" label="Poursuivre" shape="right" class="main"}} + {{if $exit_line}} + {{:button type="submit" name="validate" label="Terminer" shape="check" class="main"}} + {{else}} + {{:button type="submit" name="finish" label="Terminer" shape="export" class="main"}} + {{/if}}

diff --git a/exit_step4.html b/exit_step4.html deleted file mode 100644 index d880d2e..0000000 --- a/exit_step4.html +++ /dev/null @@ -1,417 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Associer les différentes écritures à une immo créée et sortie du - bilan avant la mise en service du module - @param immo_doc_id : id du doc associé à l'immobilisation -*}} - -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} - {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -{{:assign date_immo=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} - -{{* 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}} - -{{* lister les amortissements liés à l'immobilisation *}} -{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}} - -{{* chercher une écriture de cession associée *}} -{{#load type="cession_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $_GET.immo_doc_id|intval - }} - {{if $amount == null || $amount == 0}} - {{#select credit - FROM acc_transactions_lines - WHERE id = :cession_line_id; - :cession_line_id = $cession_line_id - }} - {{:assign montant_cession=$credit}} - {{/select}} - {{else}} - {{:assign montant_cession=$amount}} - {{/if}} - {{:assign cession_doc_id=$id}} -{{/load}} - -{{* chercher une écriture de sortie de bilan associée *}} -{{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$info_immo.id assign="exit_info"}} -{{/load}} -{{if $exit_info != null}} - {{#select - trans.id as trans_id, - trans.label as trans_label, - trans.date as date, - line.id as line_id, - line.label as line_label, - line.credit as amount, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - WHERE line.id = :exit_line_id; - :exit_line_id = $exit_info.exit_line_id - assign="exit_line" - }} - {{/select}} - - {{* lignes de l'écriture de sortie *}} - {{#select - line.label as line_label, - line.credit, - line.debit, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - WHERE trans.id = :exit_trans_id; - :exit_trans_id = $exit_line.trans_id - assign="trans" - }} - {{:assign var="exit_trans.%s"|args:$account_code value=$trans}} - {{/select}} - - {{:assign acc_codes=$exit_trans|keys}} - {{#foreach from=$linked_amort}} - {{if $account_code|in:$acc_codes}} - {{:assign var="exit_amort" from="exit_trans.%s.debit"|args:$account_code}} - {{:break}} - {{/if}} - {{/foreach}} - - {{if $exit_amort != $total_amort}} - {{:assign exit_amort_display=$exit_amort|money_currency:false|replace:" ":" "}} - {{:assign total_amort_display=$total_amort|money_currency:false|replace:" ":" "}} - {{:assign erreur=1}} - {{:assign message="Le montant des amortissement dans l'écriture de sortie (%s) est différent du total des amortissements associés à l'immobilisation (%s)."|args:$exit_amort_display:$total_amort_display}} - {{/if}} - - {{if $exit_line.amount != $solde}} - {{:assign erreur=2}} - {{:assign exit_line_amount=$exit_line.amount|money_currency:false|replace:" ":" "}} - {{:assign solde_immo=$solde|money_currency:false|replace:" ":" "}} - {{:assign message="Le montant de de l'immobilisation dans l'écriture de sortie (%s) est différent du montant à amortir (%s)."|args:$exit_line_amount:$solde_immo}} - {{/if}} -{{/if}} - -{{* - chercher des écritures au crédit du compte de l'immo sans doc associé - - line.credit < ligne_immo.amount => peut-être un avoir - - line.credit = ligne_immo.amount - avoirs => écriture de sortie du bilan -*}} -{{#select - trans.id as trans_id, - trans.label as trans_label, - trans.date as date, - trans.id_year as year, - line.id as credit_line_id, - line.label as line_label, - line.credit as amount, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id - WHERE - acc.code = :acc_code - AND line.credit > 0 - AND credit_line_id NOT IN ( - SELECT json_extract(credit_link.document, '$.credit_line_id') AS line_id FROM !table as credit_link - WHERE json_extract(credit_link.document, '$.type') == "credit_link" - UNION - SELECT json_extract(exit_link.document, '$.exit_line_id') AS line_id FROM !table as exit_link - WHERE json_extract(exit_link.document, '$.type') == "exit_link" - ) - ; - :acc_code=$ligne_immo.account_code - !table =$module.table - assign="credit_line" - }} - {{if $credit_line.amount == $solde}} - {{:assign var="exit_lines." value=$credit_line}} - {{/if}} -{{/select}} - -{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} -{{:include - file="./_get_amort_code.html" - code_immo=$ligne_immo.account_code - keep="code_amort" -}} - -{{* chercher des écritures d'amortissement correspondant au compte d'une immo sans doc associé *}} -{{#select - line.id as amort_line_id, - line.credit as amort_amount, - line.label as line_label, - trans.id as amort_trans_id, - trans.date as date, - trans.label as trans_label, - trans.id_year as year, - account.id as account_id, - account.code as account_code, - account.label as account_label - FROM acc_transactions_lines AS line - INNER JOIN acc_accounts AS account ON line.id_account = account.id - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE - account.code = :code_amort - AND line.credit > 0 - AND (NOT trans.status & 16) - AND trans.date >= :immo_date - ; - :code_amort = $code_amort - :immo_date=$date_immo - assign="amort_line" -}} - {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} - {{:assign amort_amount=0}} - {{:assign keep_amort=true}} - {{#load type="amort_link" - where="$$.amort_line_id = :amort_line_id" - :amort_line_id=$amort_line.amort_line_id|intval - assign="amort_link" - }} - {{if $amort_link.amount == null || $amort_link.amount == 0}} - {{:assign amort_amount=$amort_line.amort_amount}} - {{:assign keep_amort=false}} - {{else}} - {{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}} - {{/if}} - {{else}} - {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} - {{/load}} - {{if $keep_amort && $amort_amount < $amort_line.amort_amount}} - {{:assign var="free_amort_lines." value=$amort_line}} - {{/if}} -{{/select}} - -{{#form on="backward"}} - {{:redirect to="exit_step3.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} -{{/form}} - -{{#form on="validate"}} - {{* mettre à jour l'état de l'immobilisation *}} - {{:save - key=$info_immo.key - status="archived" - }} - {{:redirect to="index.html?type_immo=archived"}} -{{/form}} - -{{#form on="cancel"}} - {{* supprimer les docs de cession et de sortie *}} - {{if $cession_doc_id != null}}{{:delete id=$cession_doc_id}}{{/if}} - {{if $exit_info != null}}{{:delete id=$exit_info.id}}{{/if}} - {{:redirect to="index.html?type_immo=other"}} -{{/form}} - -{{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}} -{{if $_GET.from == "exit"}} - {{:assign current="other"}} -{{else}} - {{:assign current="archived"}} -{{/if}} - -{{if $_GET.ok}} - {{if $_GET.msg|match:"attach_exit"}} - {{:assign msg="Écriture de sortie de bilan attachée"}} - {{elseif $_GET.msg|match:"detach_exit"}} - {{:assign msg="Écriture de sortie de bilan détachée"}} - {{/if}} -

{{$msg}}

-{{/if}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
-
Montant de l'immobilisation
-
{{$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}} - {{if $total_amort > 0}} -
Montant des amortissements
-
{{$total_amort|money_currency_html:false|raw}}
-
Valeur nette résiduelle
-
{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}
- {{/if}} - {{if $montant_cession > 0}} -
Montant de la cession
-
{{$montant_cession|money_currency_html:false|raw}}
- {{/if}} -
-
- -{{if $erreur}} -

{{$message}}
- {{if $erreur == 1}} - Vérifiez si vous avez correctement attaché les écritures d'amortissement. - {{elseif $erreur == 2}} - Vérifiez si vous avez correctement attaché les éventuelles écritures d'avoir. - {{/if}} -

- - - - - - - - - - - - - {{#foreach from=$exit_trans key="account_code" item="line"}} - {{:assign account_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.id_year}} - - - - - - - - {{/foreach}} - -
Détails de l'écriture de sortie de bilan
NuméroCompteDébitCréditLibellé
{{$line.account_code}}{{$line.account_label}}{{$line.debit|money_currency:false}}{{$line.credit|money_currency:false}}{{$line.line_label}}
-{{/if}} - -{{if $exit_lines}} - -{{/if}} - -

Écriture de sortie de bilan attachée à l'immobilisation

-{{if $exit_line != null}} - {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$exit_line.trans_id}} - - - - - - - - - - - - - - - - - - - - - - - -
DateLibelléMontantN° compteCompte
#{{$exit_line.trans_id}}{{$exit_line.date|date_short}} - {{if $exit_line.line_label != null}} - {{$exit_line.line_label}} - {{else}} - {{$exit_line.trans_label}} - {{/if}} - {{"%f"|math:$exit_line.amount|money_html:false|raw}}{{$exit_line.account_code}}{{$exit_line.account_label}} - {{:linkbutton label="Détacher" href="detach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$exit_line.line_id shape="minus"}} -
-{{elseif $exit_lines}} -

- Vous pouvez attacher une écriture de sortie de bilan à l'immobilisation -

-{{/if}} - -{{if $exit_lines}} -{{* -

Écritures non rattachées

- - - - - - - - - - - - - - - {{#foreach from=$exit_lines item="line"}} - {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -
DateLibelléMontantN° compteCompte
#{{$line.trans_id}}{{$line.date|date_short}}{{$line.trans_label}} - {{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}} - {{"%f"|math:$line.amount|money_html:false|raw}}{{$line.account_code}}{{$line.account_label}} - {{:linkbutton label="Attacher" href="attach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="plus"}} -
-*}} -{{elseif $exit_line == null}} -

Aucune écriture de sortie de bilan avec un - montant de {{$solde|money_currency_html:false|raw}} au crédit du - compte {{$ligne_immo.account_code}} — {{$ligne_immo.account_label}} ; -
- Vérifiez si vous avez correctement attaché les éventuelles écritures d'avoir. -
- Si vous avez supprimé l'écriture de sortie de bilan, il faut - la recréer avant de pouvoir classer cette immobilisation - « Sortie du bilan » ! -

- {{:save - key=$info_immo.key - status=null - }} -{{/if}} - -
-

- {{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}} - {{if $exit_line && ! $erreur}} - {{:button type="submit" name="validate" label="Terminer" shape="check" class="main"}} - {{else}} - {{:button type="submit" name="cancel" label="Annuler" shape="delete" class="main"}} - {{/if}} -

-
diff --git a/filters.html b/filters.html index e59478d..7590c9e 100644 --- a/filters.html +++ b/filters.html @@ -31,7 +31,7 @@ Libellé - + diff --git a/ignore.html b/ignore.html index a721759..96254fd 100644 --- a/ignore.html +++ b/ignore.html @@ -21,7 +21,6 @@ {{:error message="Il n'y a aucune écriture avec le numéro de ligne %s !"|args:$_GET.immo_line_id}} {{/select}} {{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}}{{/load}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} {{* Traiter l'envoi du formulaire *}} {{#form on="proceed"}} @@ -31,7 +30,7 @@ {{:assign status="ignored"}} {{:save key=""|uuid - validate_schema="asset.schema.json" + validate_schema="schema.json" type="immo" line=$_GET.immo_line_id|intval duration=$duration diff --git a/index.html b/index.html index 0627e9f..234de28 100644 --- a/index.html +++ b/index.html @@ -7,39 +7,49 @@ {{:assign type_immo=$_GET.type_immo}} {{/if}} -{{if $type_immo == "managed"}} - {{:admin_header title="Immobilisations en cours d'amortissement" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "amortized"}} - {{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "archived"}} - {{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "other"}} - {{:admin_header title="Immobilisations à classer" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "unfinished"}} - {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization" subcurrent="unfinished"}} -{{/if}} -{{:include file="_nav.html" current=$type_immo}} + {{if $type_immo == "managed"}} + {{:admin_header title="Immobilisations en cours d'amortissement" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "amortized"}} + {{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "archived"}} + {{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "other"}} + {{:admin_header title="Immobilisations à classer" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "unfinished"}} + {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization" subcurrent="unfinished"}} + {{/if}} -{{* Mise à niveau *}} -{{:assign module_version="0.40.0"}} -{{:include file="upgrade.html" module_version=$module_version}} - -{{* supprimer les documents sans écriture associée *}} -{{:include file="_remove_orphan_docs.tpl"}} +{{:include file="_nav.html" current="index" subcurrent="%s"|args:$type_immo}} {{if $_GET.ok}} {{if $_GET.msg|match:"immobilisation"}} {{:assign msg="Immobilisation enregistrée"}} {{elseif $_GET.msg|match:"suppr_infos"}} - {{:assign msg="Paramètres supprimés"}} + {{:assign msg="Informations supprimées"}} {{elseif $_GET.msg|match:"infos"}} - {{:assign msg="Paramètres enregistrés"}} + {{:assign msg="Informations enregistrées"}} {{/if}}

{{$msg}}

{{elseif $_GET.err}}

Échec enregistrement immobilisation

{{/if}} +{{#load type="immo"}} + {{* supprimer les documents sans écriture associée *}} + {{#select + line.id as line_id + FROM acc_transactions_lines as line + WHERE line.id = :line_id; + :line_id = $line + }} + {{else}} + {{:delete key=$key}} + {{/select}} +{{/load}} + +{{* chercher des immos antérieures à la date de début du 1er exercice *}} +{{*:include file="_old_assets.html"*}} + {{if $type_immo == "other"}} {{:include file="_immobilisations_autres.html"}} {{elseif $type_immo == "archived"}} @@ -49,4 +59,5 @@ {{elseif $type_immo == "managed" || $type_immo == "amortized"}} {{:include file="_immobilisations.html"}} {{/if}} + {{:admin_footer}} diff --git a/link.schema.json b/link.schema.json index 0160ff2..88968ed 100644 --- a/link.schema.json +++ b/link.schema.json @@ -1,11 +1,11 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Schéma des liens entre écritures", + "description": "Schéma des liens entre documents", "type": "object", "properties": { "type": { "type": "string", - "enum": ["amort_link", "credit_link", "cession_link", "exit_link"] + "enum": ["amort_link", "credit_link", "exit_link"] }, "immo_doc_id" : { "description": "identifiant du document d'immobilisation associé", @@ -23,22 +23,13 @@ "exclusiveMinimum": 0 }, "exit_line_id": { - "description": "ligne de sortie du bilan de l'immobilisation", - "type": "integer", - "exclusiveMinimum": 0 - }, - "cession_line_id": { - "description": "ligne de cession de l'immobilisation", + "description": "ligne d'amortissement de sortie du bilan de l'immobilisation", "type": "integer", "exclusiveMinimum": 0 }, "amount": { "description": "montant de la ligne d'amortissement ou de crédit", "type": ["number", "null"] - }, - "created" : { - "description" : "vrai si amortissement créé dans le module", - "type" : ["boolean", "null"] } }, "required": ["type", "immo_doc_id"], @@ -48,9 +39,6 @@ "if": {"properties": {"type": {"const": "credit_link"}}, "required": ["type"]}, "then": {"required": ["credit_line_id"]}, "else": - "if": {"properties": {"type": {"const": "cession_link"}}, "required": ["type"]}, - "then": {"required": ["cession_line_id"]}, - "else": "if": {"properties": {"type": {"const": "exit_link"}}, "required": ["type"]}, "then": {"required": ["exit_line_id"]}, } diff --git a/link_immo.html b/link_immo.html index 2a049dc..a05eab1 100644 --- a/link_immo.html +++ b/link_immo.html @@ -11,32 +11,9 @@ {{:error message=$message}} {{/if}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -{{:assign date_immo=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} - -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label ===false }} - {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.amount" value=$info_immo.amount}} -{{/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}} - {{* lister les écritures au crédit du compte de l'immobilisation *}} -{{if $_GET.filter}} - {{:assign account_code=$ligne_immo.account_code|cat:"%"}} -{{else}} - {{:assign account_code=$ligne_immo.account_code|substr:0:2|cat:"%"}} -{{/if}} -{{:assign date_immo=$info_immo.date_achat|or:$ligne_immo.date_achat}} - {{#select line.id as credit_line_id, line.id_transaction as credit_trans_id, @@ -53,23 +30,15 @@ INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction INNER JOIN acc_accounts AS account ON account.id = line.id_account INNER JOIN acc_years AS y ON y.id = trans.id_year - WHERE account.code LIKE :account_code AND credit > 0 - AND trans.date >= :date_immo + WHERE account.code = :account_code AND credit > 0 AND credit_line_id NOT IN ( SELECT json_extract(link.document, '$.credit_line_id') AS credit_line_id FROM !table as link - WHERE json_extract(link.document, '$.type') == "credit_link" - UNION - SELECT json_extract(exit_link.document, '$.exit_line_id') AS line_id FROM !table as exit_link - WHERE json_extract(exit_link.document, '$.type') == "exit_link") + WHERE json_extract(link.document, '$.type') == "credit_link") ORDER BY trans.date, trans.label; - :account_code = $account_code - !table = $module.table - :date_immo = $date_immo - assign="credit_line" + :account_code = $ligne_immo.account_code + !table =$module.table + assign="other_immos." }} - {{if $credit_line.credit_amount < $solde}} - {{:assign var="other_immos." value=$credit_line}} - {{/if}} {{/select}} {{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} @@ -78,38 +47,30 @@ {{if ! $dialog}} {{:include file="_nav.html" - current="managed" - subcurrent="link_immo" + current="config" + subcurrent="other" + subsubcurrent="immo" type_immo="other" }} {{/if}} - -
+
+ + Écritures au crédit du compte d'immobilisation « {{$ligne_immo.account_code}} » + +
Immobilisation
#{{$ligne_immo.trans_id}} {{$label_immo}}
Montant
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
-
Date de l'immobilisation
-
{{$date_immo|date_short}}
+
Date de l'écriture d'immobilisation
+
{{$ligne_immo.date_achat|date_short}}
+
{{if $other_immos != null}} @@ -137,14 +98,14 @@ - {{/foreach}} -

Sélectionner une écriture d'avoir ou autre réduction du montant de l'acquisition pour l'associer à l'immobilisation

{{$line.account_code}} {{$line.account_label}} - {{:linkbutton label="Attacher" href="attach_credit.html?credit_line_id=%d&immo_doc_id=%s&from=%s"|args:$line.credit_line_id:$_GET.immo_doc_id:$_GET.from shape="plus"}} + + {{:linkbutton label="Attacher" href="attach_credit.html?credit_line_id=%d&immo_doc_id=%s"|args:$line.credit_line_id:$_GET.immo_doc_id shape="plus"}}
+

Sélectionner une écriture d'avoir ou autre réduction du montant de l'acquisition pour l'associer à l'immobilisation

{{else}}

Aucune écriture au crédit du compte « {{$ligne_immo.account_code}} »

{{/if}} diff --git a/list_cessions.html b/list_cessions.html deleted file mode 100644 index 9ead861..0000000 --- a/list_cessions.html +++ /dev/null @@ -1,118 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Lister les écritures de cession du compte de l'immobilisation - paramètre et proposer de les attacher à l'immo paramètre - @param immo_doc_id : document associé à l'immo -*}} -{{: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 trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label ===false }} - {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.amount" value=$info_immo.amount}} -{{/if}} - -{{:assign total_cession=0}} -{{#select - line.id as line_id, - line.credit as amount, - line.label as line_label, - trans.id as trans_id, - trans.date as date, - trans.label as trans_label, - trans.id_year as year, - account.id as account_id, - account.code as account_code, - account.label as account_label - FROM acc_transactions_lines AS line - INNER JOIN acc_accounts AS account ON line.id_account = account.id - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE account.code LIKE :code_cession_new OR account.code LIKE :code_cession_old - ; - :code_cession_new = "757%" - :code_cession_old = "775%" - assign="line" -}} - {{#select - CASE WHEN links.id_related = :trans_id - THEN links.id_transaction - ELSE links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE links.id_transaction = :trans_id OR links.id_related = :trans_id - ; - :trans_id = $line.trans_id - }} - {{if $linked_id == $ligne_immo.trans_id}} - {{:assign total_cession="%d+%d"|math:$total_cession:$line.amount}} - {{:assign var="line.linked_id" value=$linked_id}} - {{:assign var="linked_cessions." value=$line}} - {{/if}} - {{else}} - {{:assign var="free_cessions." value=$line}} - {{/select}} -{{/select}} - -{{:admin_header title="Écritures de cession du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Montant
-
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
-
Date de l'immobilisation
-
{{$date_debut|date_short}}
-
-
- -{{if $free_cessions}} - - - - - - - - - - - - - - - {{#foreach from=$free_cessions item="line"}} - {{:assign cession_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -

Sélectionner une écriture de cession pour l'associer à l'immobilisation

-
DateLibelléMontantN° compteCompte
#{{$line.trans_id}}{{$line.date|date_short}} - {{if $line.line_label != null}} - {{$line.line_label}} - {{if $line.trans_label != $line.line_label}} - — {{$line.trans_label}} - {{/if}} - {{else}} - {{$line.trans_label}} - {{/if}} - {{"%f"|math:$line.amount|money_html:false|raw}}{{$line.account_code}}{{$line.account_label}} - {{:linkbutton label="Attacher" href="attach_cession.html?immo_doc_id=%s&cession_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="plus"}} -
-{{/if}} diff --git a/list_exit.html b/list_exit.html deleted file mode 100644 index 306f9f2..0000000 --- a/list_exit.html +++ /dev/null @@ -1,108 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Lister les écritures de sortie de bilan du compte de l'immobilisation - paramètre et proposer de les attacher à l'immo paramètre - @param immo_doc_id : document associé à l'immo -*}} -{{: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 trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label ===false }} - {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.amount" value=$info_immo.amount}} -{{/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:$ligne_immo.amount:$total_credits}} - -{{#select - trans.id as trans_id, - trans.label as trans_label, - trans.date as date, - trans.id_year as year, - line.id as credit_line_id, - line.label as line_label, - line.credit as amount, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id - WHERE - acc.code = :acc_code - AND line.credit > 0 - AND credit_line_id NOT IN ( - SELECT json_extract(credit_link.document, '$.credit_line_id') AS line_id FROM !table as credit_link - WHERE json_extract(credit_link.document, '$.type') == "credit_link" - UNION - SELECT json_extract(exit_link.document, '$.exit_line_id') AS line_id FROM !table as exit_link - WHERE json_extract(exit_link.document, '$.type') == "exit_link" - ) - ; - :acc_code=$ligne_immo.account_code - !table =$module.table - assign="credit_line" - }} - {{if $credit_line.amount == $solde}} - {{:assign var="exit_lines." value=$credit_line}} - {{/if}} -{{/select}} - -{{:admin_header title="Écritures de cession du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Montant
-
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
-
Date de l'immobilisation
-
{{$date_debut|date_short}}
-
-
- -{{if $exit_lines}} - - - - - - - - - - - - - - {{#foreach from=$exit_lines item="line"}} - {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -

Sélectionner une écriture de sortie de bilan pour l'associer à l'immobilisation

-
DateLibelléMontantN° compteCompte
#{{$line.trans_id}}{{$line.date|date_short}}{{$line.trans_label}} - {{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}} - {{"%f"|math:$line.amount|money_html:false|raw}}{{$line.account_code}}{{$line.account_label}} - {{:linkbutton label="Attacher" href="attach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="plus"}} -
-{{/if}} diff --git a/modify_infos.html b/modify_infos.html index 174d1a4..354b3f3 100644 --- a/modify_infos.html +++ b/modify_infos.html @@ -2,6 +2,13 @@ {{* @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"}} @@ -14,8 +21,6 @@ {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} {{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} -{{:assign date_achat_defaut=$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign date_mes_defaut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} {{* 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"}} @@ -34,71 +39,119 @@ {{* traiter la saisie *}} {{#form on="save"}} - {{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}} + {{if ! $_POST.amortir}} + {{* ne pas amortir *}} + {{:assign duration=0}} {{: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}} + {{:assign montant=null}} + {{:assign date_achat=null}} + {{:assign date_mes=null}} + {{:assign status="ignored"}} {{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 $_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}} - {{:assign status="managed"}} + {{* é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="asset.schema.json" + validate_schema="schema.json" type="immo" line=$info_immo.line duration=$duration @@ -110,13 +163,18 @@ assign_new_id="new_id" }} - {{:assign type_immo="managed"}} - {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=modif"|args:$_GET.immo_doc_id:$type_immo}} + {{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="managed" subcurrent="modify_infos"}} + {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="parameter"}} {{/if}} {{:form_errors}} @@ -149,16 +207,33 @@
- Informations + Paramètres de l'amortissement
- {{:input type="number" name="duree" label="Durée d'amortissement" min=1 default=$info_immo.duration suffix="année(s)"}} - {{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=$date_achat_defaut help="si différente de la date de l'écriture d'immobilisation"}} - {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_mes_defaut help="si différente de la date d'acquisition"}} - {{:input type="text" name="libelle" label="Libellé" default=$immo_label help="si différent du libellé de l'écriture d'immobilisation"}} + {{: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 != null}} +
+
+ + + {{#foreach from=$linked_immos item="line"}} + + {{$line.trans_id}} + + + {{/foreach}} + +
+ {{/if}} +

@@ -167,3 +242,17 @@

{{:admin_footer}} + + + diff --git a/module.ini b/module.ini index 4583613..f3f13f1 100644 --- a/module.ini +++ b/module.ini @@ -1,5 +1,5 @@ name="Amortissements" -description="Immobilisations et amortissements\nversion 0.40.0" +description="Immobilisations et amortissements\nversion 0.32" author="Jean-Christophe Engel" author_url="https://gitea.zaclys.com/lesanges" home_button=false diff --git a/other_amortizations.html b/other_amortizations.html index e3d8f9e..6838cbf 100644 --- a/other_amortizations.html +++ b/other_amortizations.html @@ -4,23 +4,33 @@ Lister les écritures d'amortissement indépendantes et proposer des les attacher à l'immo sélectionnée @param immo_doc_id id du doc d'immo associé -*}} + *}} + {{* données de l'immobilisation *}} {{: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 label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} -{{:assign date_mes=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{* 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 montant_immo="%d-%d"|math:$montant_immo:$total_credits}} +{{:include file="_get_config.html" keep="module.config"}} +{{if $_POST.unhide == null}} + {{:assign filter_condition=" NOT ("}} + {{#foreach from=$module.config.filters item="filter"}} + {{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}} + {{:assign filter_condition=$filter_condition|cat:" trans.label LIKE "|cat:$filter|cat:" OR "}} + {{/foreach}} + {{:assign filter_condition=$filter_condition|cat:"0)"}} +{{else}} + {{:assign filter_condition="1"}} +{{/if}} + +{{* lister les amortissements non rattachés à une immo *}} +{{:include file="./_get_free_amort.html" filter_condition=$filter_condition keep="free_amort_lines"}} {{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} {{:include @@ -28,63 +38,33 @@ code_immo=$ligne_immo.account_code keep="code_amort" }} -{{if $_GET.filter}} - {{:assign amort_account=$code_amort|quote_sql}} - {{:assign filter_condition="account.code = "|cat:$amort_account}} -{{else}} - {{:assign account_filter="28%"|quote_sql}} - {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} -{{/if}} - -{{:assign date_amort=$date_mes|quote_sql}} -{{:assign date_condition="trans.date >= "|cat:$date_amort}} -{{:assign condition=$date_condition|cat:" AND "|cat:$filter_condition}} - -{{* lister les amortissements non rattachés à une immo *}} -{{:include file="./_get_free_amort.html" condition=$condition keep="free_amort_lines"}} - {{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" - current="managed" - subcurrent="amortization" - type_immo="managed" + current="index" + subcurrent="other" + subsubcurrent="amortization" + type_immo="other" autres_amort=$free_amort_lines }} {{/if}} - +{{if $_POST.unhide != null}} + {{:assign checked="checked"}} +{{/if}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -
-
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Montant
-
{{"%f"|math:$montant_immo|money_currency_html:false|raw}}
-
Début d'amortissement
-
{{$date_mes|date_short}}
-
-
+
+
+ {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher toutes les écritures"}} +
+
- {{if $free_amort_lines != null}} +{{if $free_amort_lines != null}} +
+

Immobilisation « {{$label_immo}} »

@@ -99,6 +79,9 @@ {{#foreach from=$free_amort_lines item="line"}} + {{if $_POST.unhide == null && $line.account_code != $code_amort}} + {{:continue}} + {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} @@ -117,18 +100,28 @@ - {{/foreach}} -

Sélectionner une écriture d'amortissement pour l'associer à l'immobilisation

{{"%f"|math:$line.amount|money_html:false|raw}} {{$line.account_code}} {{$line.account_label}} - {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s&from=%s"|args:$_GET.immo_doc_id:$line.line_id:$_GET.from shape="plus"}} + + {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="plus"}}
- {{else}} -

Aucun amortissement pour le compte {{$code_amort}}

- {{/if}} -
- +
+{{else}} +

Aucun amortissement à rattacher

+{{/if}} {{:form_errors}} {{:admin_footer}} + + diff --git a/save_amort.html b/save_amort.html index 2504ff8..2b5c044 100644 --- a/save_amort.html +++ b/save_amort.html @@ -22,6 +22,10 @@ {{/if}} {{:assign var="amort_label" value="Amortissement %s"|args:$amort_label}} +{{if $info_immo.status == "amortized" || $info_immo.status == "archived"}} + {{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}} +{{/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="total_credits"}} {{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}} @@ -65,7 +69,7 @@ *}} {{:assign msg_years=""}} {{#years closed=false order="start_date" where="start_date <= :debut AND :debut <= end_date" - :debut=$date_debut assign="years."}} + :debut=$date_debut assign=years.}} {{if $total_amort == 0}} {{:assign ts_debut=$date_debut|strtotime}} {{else}} @@ -78,9 +82,7 @@ {{:assign var="years_data.%d"|args:$id value=$ts_debut|cat:" "|cat:$ts_fin}} {{:assign msg_years=$msg_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "|cat:$debut|cat:" à "|cat:$fin}} {{else}} - {{:assign date_debut=$date_debut|date_short}} - {{:assign msg="Pas d'exercice ouvert pour enregistrer un amortissement à partir du %s"|args:$date_debut}} - {{:error message=$msg}} + {{:error message="Aucun exercice ouvert pour enregistrer un amortissement"}} {{/years}} {{* Traiter l'envoi du formulaire *}} @@ -148,12 +150,6 @@ {{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$montant:$solde}} {{/if}} - {{* - supprimer les documents qui pointent sur une ligne d'amortissement absente - cas de la suppression manuelle d'un amortissement - *}} - {{:include file="_remove_orphan_docs.tpl"}} - {{* enregistrer l'écriture *}} {{:assign var="lines." @@ -167,6 +163,7 @@ account=$credit_account|keys|value:0 id_project=$ligne_immo.id_project }} + {{:api method="POST" path="accounting/transaction" @@ -188,7 +185,6 @@ type="amort_link" immo_doc_id=$_GET.immo_doc_id|intval amort_line_id=$line.id - created=true }} {{:break}} {{/if}} @@ -196,30 +192,26 @@ {{* immo soldée ? *}} {{if $_POST.montant|trim|money_int == $solde}} - {{:assign status="amortized"}} + {{:assign var="info_immo.status" value="amortized"}} {{:save key=$info_immo.key - status=$status + status=$info_immo.status }} {{/if}} - {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=amortissement"|args:$_GET.immo_doc_id:$status}} + {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=amortissement"|args:$_GET.immo_doc_id:$info_immo.status}} {{/form}} -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} - -{{:admin_header title="Amortissement pour « %s »"|args:$label_immo custom_css="./style.css" current="module_amortization"}} +{{:admin_header title="Ajout amortissement" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="managed" subcurrent="amortization"}} + {{:include file="_nav.html" current="index" subcurrent="managed" subsubcurrent="amortization"}} {{/if}} {{:form_errors}} -{{if $years|count == 1}} - {{:assign var=selected_year value=$years.0.id}} -{{/if}} +{{:assign var=selected_year value=$years.0.id}} {{:assign var=date_amort value=$years.0.end_date}} {{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}} @@ -248,7 +240,6 @@ name="debit_account" label="Compte de débit" required=true - readonly=true target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:"68*":$selected_year default=$debit_account }} @@ -257,7 +248,6 @@ name="credit_account" label="Compte d'amortissement (28xx)" required=true - readonly=true target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:"28*":$selected_year default=$credit_account }} @@ -296,8 +286,8 @@ function redisplayData(evt, ) { setDateEnd(f_years_select, f_date, f_years_data); - displayAmort(f_immo, f_duree, f_amort, f_years_data, f_years_select, f_montant, f_erreur); setSelectorYear(['credit_account', 'debit_account'], f_years_select); + displayAmort(f_immo, f_duree, f_amort, f_years_data, f_years_select, f_montant, f_erreur); } function redisplayAmort(evt, diff --git a/asset.schema.json b/schema.json similarity index 85% rename from asset.schema.json rename to schema.json index 4391dd5..23a924b 100644 --- a/asset.schema.json +++ b/schema.json @@ -1,6 +1,5 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Donnée d'une immobilisation", "type": "object", "properties": { "type": { @@ -36,10 +35,6 @@ "status" : { "type" : ["string", "null"], "enum" : ["managed", "amortized", "archived", "ignored"] - }, - "created" : { - "description" : "vrai si immobilisation créée dans le module", - "type" : ["boolean", "null"] } }, "required": ["type", "line", "duration", "status"] diff --git a/scripts.js b/scripts.js index 3def0ba..e6298ca 100644 --- a/scripts.js +++ b/scripts.js @@ -12,10 +12,9 @@ function toggleInputs(idcb, idfields) { } } -function toggleVisibility(id_check, fields) { - const elem = document.getElementById(id_check); - fields.forEach(function (id_field) { - const field = document.getElementById(id_field); +function toggleVisibility(idcheck, fields) { + const elem = document.getElementById(idcheck); + fields.forEach(function (field) { if (elem.checked) { field.classList.remove('hidden'); } else { @@ -28,11 +27,9 @@ function toggleVisibility(id_check, fields) { function setAccountYear(button_names, id_year) { for (const name of button_names) { const button = document.querySelector("button[data-name=" + name + "]"); - if (button != null) { - const b_value = button.value; - const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year); - button.setAttribute('value', new_value); - } + const b_value = button.value; + const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year); + button.setAttribute('value', new_value); } } @@ -134,9 +131,7 @@ function displayAmort(id_immo, id_duree, id_amort, id_years, id_exercices, id_mo case_montant.innerText = montant_amort; } -function setSelectorYear(button_names, f_years_selector) -{ - const selector = document.getElementById(f_years_selector); +function setSelectorYear(button_names, f_years_selector) { const selected_year = document.getElementById(f_years_selector).value; setAccountYear(button_names, selected_year); } @@ -145,21 +140,19 @@ function setSelectorYear(button_names, f_years_selector) // Associer au bouton « Enlever » de chaque ligne l'action de suppression de la ligne function initLine(row) { - let removeBtn = row.querySelector('button[name="remove_line"]'); - if (removeBtn != null) { - removeBtn.onclick = () => { - let count = removeBtn.closest("table").querySelectorAll('tbody tr').length; - var min = removeBtn.getAttribute('min'); + var removeBtn = row.querySelector('button[name="remove_line"]'); + removeBtn.onclick = () => { + let count = removeBtn.closest("table").querySelectorAll('tbody tr').length; + var min = removeBtn.getAttribute('min'); - if (count <= min) { - alert("Il n'est pas possible d'avoir moins de " + min + " ligne(s)."); - return false; - } + if (count <= min) { + alert("Il n'est pas possible d'avoir moins de " + min + " ligne(s)."); + return false; + } - row.parentNode.removeChild(row); - return true; - }; - } + row.parentNode.removeChild(row); + return true; + }; } // Associer au bouton « Ajouter » de chaque table l'action d'ajouter une ligne @@ -187,28 +180,6 @@ function addLine(button, codes) { let lib = newNode.querySelector('.input-list span.label'); lib.innerText = ''; - // si besoin, ajouter le bouton de suppression - let action_cell = newNode.querySelector('td.actions'); - let removeBtn = newNode.querySelector('button[name="remove_line"]'); - if (removeBtn == null) { - const attributs = { - "title" : "Enlever une ligne", - "min": "1", - "name": "remove_line", - "data-icon": "➖", - "type": "button", - "class": "icn-btn", - "value": "1", - "aria-label": "Enlever une ligne" - }; - let new_button = document.createElement("button"); - new_button.appendChild(document.createTextNode("Enlever")); - for (let attr in attributs) { - new_button.setAttribute(attr, attributs[attr]); - } - action_cell.appendChild(new_button); - } - // ajouter la nouvelle ligne line.parentNode.appendChild(newNode); initLine(newNode); diff --git a/style.css b/style.css index 9a24aee..9811b17 100644 --- a/style.css +++ b/style.css @@ -74,13 +74,25 @@ table.list tbody tr.ignored:nth-child(even) { font-style: italic; background: rgba(255, 255, 200, 0.5); } - -table.error { - background-color: #fcc; +html.dark table.list tbody tr.ignored:nth-child(odd) { + font-style: italic; + background: rgba(100, 100, 0, 0.4); } -table.error tr, table.error td, table.error thead td { - background-image : none; - background-color: #fcc; +html.dark table.list tbody tr.ignored:nth-child(even) { + font-style: italic; + background: rgba(100, 100, 0, 0.4); +} + +html.dialog.dark { + filter: none !important; +} + +html.dialog.dark main { + background-color : #ddd; +} + +html.dark .block.alert { + background-color : rgba(87, 206, 235, 0.5); } span.input-list.avoirs label { diff --git a/style_aide.css b/style_aide.css deleted file mode 100644 index dc0879e..0000000 --- a/style_aide.css +++ /dev/null @@ -1,69 +0,0 @@ -section.page * -{ - padding: 0.1em; - margin-top: 0.1em; -} - -section.page ul { - list-style: inside; - margin-left: 1.5em; -} - -section.page ol { - list-style: decimal; - margin-left: 1.5em; -} - -section.page h1 { - font-size: 2em; -} - -section.page h2 { - font-size: 1.5em; - margin-top : 1.5rem; - margin-bottom : 0.5rem; -} - -section.page h3 { - font-size: 1.2em; - margin-top : 1.5rem; - margin-bottom : 0.5rem; -} - -section.page h4 { - font-size: 1em; - margin-top : 1.5rem; - margin-bottom : 0.5rem; -} - -section.page figure { - margin-top : 0.5rem; - margin-bottom : 1rem; -} - -section.page figcaption { - font-weight : bold; -} - -section.page blockquote { - width: 75%; - margin-left: 2em; - margin-right: 2em; - font-family: Arial, Helvetica, sans-serif; - font-size: 1.1em; -} - -section.page article header { - text-align: center; - margin: 1rem 0; - padding-bottom: 0.5rem; - border-bottom: 2px solid #999; -} - -a:link { - color: #0033aa; -} - -a:link:visited { - color: #6600aa; -} diff --git a/transfer.html b/transfer.html index 3017036..cb6643c 100644 --- a/transfer.html +++ b/transfer.html @@ -36,6 +36,7 @@ {{:assign trans_list=$trans_list|implode:","}} {{:assign trans_list="("|cat:$trans_list|cat:")"}} {{:assign condition=$condition|cat:" AND trans.id IN "|cat:$trans_list}} +{{:assign condition=$condition|cat:" AND NOT (trans.status & 16)"}} {{#select trans.id as trans_id, @@ -55,7 +56,6 @@ }} {{:assign var="transactions.%s"|args:$trans_id amount=$line_debit - line_label=$trans_label date=$trans_date code=$account_code label=$account_label @@ -175,13 +175,12 @@ {{* enregistrer les infos de l'immobilisation *}} {{:save key=""|uuid - validate_schema="asset.schema.json" + validate_schema="schema.json" type="immo" line=$immo_line_id duration=$duration date_mes=null status=$status - created=true }} {{if $_POST.amortir}} {{:assign type_immo="managed"}} @@ -193,7 +192,7 @@ {{:admin_header title="Transfert d'immobilisation en cours" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} - {{:include file="_nav.html" current="unfinished" subcurrent="transfer"}} + {{:include file="_nav.html" current="index" subcurrent="unfinished" subsubcurrent="transfer"}} {{/if}} {{:form_errors}} @@ -255,17 +254,16 @@ {{:input - type="list" - name="credit_accounts[]" - required=true - readonly=true - target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$code:$selected_year - default=$current_account + type="list" + name="credit_accounts[]" + required=true + target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$code:$selected_year + default=$current_account }} {{:input name="credit_lines[]" type="text" class="money" size="8" default=$amount|money}} {{:input name="debit_lines[]" type="text" class="money" size="8" disabled=true}} - {{:input type="text" name="line_labels[]" size="40" default=$line_label}} + {{:input type="text" name="line_labels[]" size="40"}} {{if $projects != null}} {{:input type="select" name="id_project" options=$projects default_empty="— Aucun —"}} diff --git a/upgrade.html b/upgrade.html deleted file mode 100644 index 9da08ef..0000000 --- a/upgrade.html +++ /dev/null @@ -1,42 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - mise à niveau des documents selon version -*}} - -{{* version 0.31 *}} -{{:assign tag="0.31"}} - -{{:include file="_compare_version.tpl" nv1=$module_version nv2=$tag keep="comp"}} -{{:assign module_comp=$comp}} -{{:include file="_compare_version.tpl" nv1=$module.config.version nv2=$tag keep="comp"}} -{{:assign config_comp=$comp}} - -{{if $module_comp >= 0 && $config_comp < 0}} -{{* $module_version >= '0.31' && $module.config.version < '0.31' *}} - - {{:include file="_upgrade_to031.tpl"}} -

Mise à jour vers version {{$tag}} terminée

-{{/if}} - -{{* version 0.33 *}} -{{:assign tag="0.33"}} - -{{:include file="_compare_version.tpl" nv1=$module_version nv2=$tag keep="comp"}} -{{:assign module_comp=$comp}} -{{:include file="_compare_version.tpl" nv1=$module.config.version nv2=$tag keep="comp"}} -{{:assign config_comp=$comp}} - -{{if $module_comp >= 0 && $config_comp < 0}} -{{* $module_version >= '0.33' && $module.config.version < '0.33' *}} - - {{:include file="_upgrade_to033.tpl"}} -

Mise à jour vers version {{$tag}} terminée

-{{/if}} - -{{* enregistrer le nouveau numéro de version dans la config du module *}} -{{:include file="_compare_version.tpl" nv1=$module_version nv2=$module.config.version keep="comp"}} -{{if $comp > 0}} - {{:save key="config" version=$module_version}} -

Nouvelle version enregistrée : {{$module_version}}

-{{/if}} diff --git a/write_exit.html b/write_exit.html index cc3921a..ddc1ab0 100644 --- a/write_exit.html +++ b/write_exit.html @@ -17,20 +17,6 @@ {{:error message=$message}} {{/if}} -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} - {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} - -{{:assign date_achat=$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{if $info_immo.date_mes != null && $info_immo.date_mes != $date_achat}} - {{:assign date_mes=$info_immo.date_mes}} -{{/if}} - -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.amount" value=$info_immo.amount}} -{{/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="total_credits"}} {{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}} @@ -55,12 +41,19 @@ {{:assign montant_cession="%f*100"|math:$_GET.cession}} {{/if}} -{{* numéros de comptes ; voir info.org *}} -{{:assign vnc_code="652"}} -{{:assign cession_code="757"}} +{{* TODO : faut-il forcer les 3 sélecteurs de compte d'amortissement à avoir toujours la même valeur ? *}} {{* Traiter l'envoi du formulaire *}} {{#form on="save"}} +{{* + {{if $_POST.amort_comp_account != null} + {{:assign account=$_POST.amort_comp_account}} + {{elseif $_POST.amort_except_account != null} + {{:assign account=$_POST.amort_except_account}} + {{elseif $_POST.amort_sortie_account != null} + {{:assign account=$_POST.amort_sortie_account}} + {{/if}} +*}} {{:assign account=$_POST.amort_sortie_account}} {{:include @@ -81,7 +74,7 @@ }} {{:assign comp_account_code=$account_code|keys|value:0}} - {{:assign libelle="Amortissement complémentaire "|cat:$label_immo}} + {{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.trans_label}} {{:assign var="lines." debit="%f/100"|math:$amort_comp @@ -106,7 +99,7 @@ keep="account_code" }} {{:assign except_account_code=$account_code|keys|value:0}} - {{:assign libelle="Amortissement exceptionnel "|cat:$label_immo}} + {{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.trans_label}} {{:assign var="lines." debit="%f/100"|math:$amort_except @@ -132,7 +125,7 @@ id_year=$_GET.year type="advanced" date=$_GET.exit_date - label="Amortissement final "|cat:$label_immo + label="Amortissement final "|cat:$ligne_immo.trans_label lines=$lines linked_transactions=$ligne_immo.trans_id }} @@ -145,7 +138,6 @@ type="amort_link" immo_doc_id=$info_immo.id amort_line_id=$line.id - created=true }} {{/if}} {{/foreach}} @@ -159,7 +151,7 @@ keep="account_code" }} {{:assign immo_account_code=$account_code|keys|value:0}} - {{:assign libelle="Sortie du bilan de "|cat:$label_immo}} + {{:assign libelle="Sortie du bilan de "|cat:$ligne_immo.trans_label}} {{:assign var="lines." account=$immo_account_code @@ -211,7 +203,6 @@ type="exit_link" immo_doc_id=$info_immo.id exit_line_id=$line.id - created=true }} {{:break}} {{/if}} @@ -219,7 +210,7 @@ {{if $montant_cession > 0}} {{* Cession de l'immobilisation *}} - {{:assign libelle="Cession "|cat:$label_immo}} + {{:assign libelle="Produit cession "|cat:$ligne_immo.trans_label}} {{:include file="_get_codes.html" account=$_POST.creance_account @@ -249,36 +240,18 @@ }} {{/if}} - {{* liaison écriture de cession *}} - {{#foreach from=$result.lines item="line"}} - {{if $line.account_code == $cession_code}} - {{:save - key=""|uuid - type="cession_link" - immo_doc_id=$info_immo.id - cession_line_id=$line.id - created=true - }} - {{:break}} - {{/if}} - {{/foreach}} - {{* mettre à jour l'état de l'immobilisation *}} {{:save key=$info_immo.key status="archived" }} + {{:redirect to="index.html?type_immo=archived"}} {{/form}} {{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} - {{if $valeur_nette > 0}} - {{:assign type_immo="managed"}} - {{else}} - {{:assign type_immo="amortized"}} - {{/if}} - {{:include file="_nav.html" current="%s"|args:$type_immo subcurrent="balance_exit"}} + {{:include file="_nav.html" current="index" subcurrent="balance_exit"}} {{/if}} {{* @@ -292,6 +265,10 @@ keep="code_amort" }} +{{* numéros de comptes ; voir info.org *}} +{{:assign vnc_code="652"}} +{{:assign cession_code="757"}} + {{:assign var="liste_codes.6811" name="comp_account"}} {{:assign var="liste_codes.687" name="except_account"}} {{:assign var="liste_codes.462" name="creance_account"}} @@ -336,7 +313,7 @@ {{/foreach}} {{:assign patterns=$pattern_array|implode:"|"}} -

Sortir l'immobilisation « {{$label_immo}} » du bilan

+

Sortir l'immobilisation « {{$ligne_immo.trans_label}} » du bilan

@@ -345,10 +322,10 @@
Montant
{{$ligne_immo.amount|money_currency_html:false|raw}}
Date d'acquisition
-
{{$date_achat|date_short}}
- {{if $date_mes != null}} +
{{$ligne_immo.date_achat|date_short}}
+ {{if $info_immo.date_mes != null && $info_immo.date_mes != $ligne_immo.date_achat}}
Date de mise en service
-
{{$date_mes|date_short}}
+
{{$info_immo.date_mes|date_short}}
{{/if}}
Durée de l'amortissement
{{$info_immo.duration}} ans
@@ -403,7 +380,6 @@ type="list" name="comp_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"68*":$chart_id - readonly=true default=$comp_account }} @@ -416,7 +392,6 @@ type="list" name="amort_comp_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"28*":$chart_id - readonly=true default=$amort_account }} @@ -449,7 +424,6 @@ type="list" name="except_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"687*":$chart_id - readonly=true default=$except_account }} @@ -462,7 +436,6 @@ type="list" name="amort_except_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"28*":$chart_id - readonly=true default=$amort_account }} @@ -489,7 +462,6 @@ type="list" name="amort_sortie_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"28*":$chart_id - readonly=true default=$amort_account }} @@ -508,7 +480,6 @@ type="list" name="vnc_account" target="!acc/charts/accounts/selector.php?codes=%s*&id_chart=%s"|args:$vnc_code:$chart_id - readonly=true default=$vnc_account }} @@ -522,7 +493,6 @@ type="list" name="immo_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:$patterns:$chart_id - readonly=true default=$immo_account }} @@ -549,7 +519,6 @@ type="list" name="creance_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"462*":$chart_id - readonly=true default=$creance_account }} @@ -562,7 +531,6 @@ type="list" name="cession_account" target="!acc/charts/accounts/selector.php?codes=%s*&id_chart=%s"|args:$cession_code:$chart_id - readonly=true default=$cession_account }}