diff --git a/README.md b/README.md index e771e69..578af08 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,14 @@ 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 : - - amortissements déjà enregistrés - - amortissements à venir -- associer une écriture d'amortissement à une immobilisation +- lister les amortissements d'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 qui est maintenant présent dans la liste des extensions inactives +- activer le module + diff --git a/_archives.html b/_archives.html index 8a8f8ad..a4356d6 100644 --- a/_archives.html +++ b/_archives.html @@ -153,7 +153,7 @@ {{$account_code}} {{$account_label}} - {{:linkbutton label="Modifier" href="exit_step3.html?immo_doc_id=%s"|args:$info_immo.id shape="edit"}} + {{:linkbutton label="Modifier" href="exit_step1.html?immo_doc_id=%s"|args:$info_immo.id shape="edit"}} {{/select}} @@ -172,7 +172,6 @@ {{$value|money_html:false|raw}} - {{/foreach}} @@ -184,7 +183,6 @@ {{$total_immo|money_html:false|raw}} - {{/if}} @@ -201,7 +199,6 @@ {{$value|money_html:false|raw}} - {{/foreach}} @@ -213,7 +210,6 @@ {{$total_cessions|money_html:false|raw}} - {{/if}} diff --git a/_common_attach.html b/_common_attach.html new file mode 100644 index 0000000..728ee1f --- /dev/null +++ b/_common_attach.html @@ -0,0 +1,37 @@ +{{* -*- 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 b4e80d0..8c84736 100644 --- a/_common_detach.html +++ b/_common_detach.html @@ -1,12 +1,13 @@ {{* -*- brindille -*- *}} {{* - Supprimer l'association entre deux lignes + Supprimer 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 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="ligne_immo, message"}} +{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="info_immo, ligne_immo, message"}} {{if $message != null}} {{:error message=$message}} {{/if}} diff --git a/_get_amort_lines.html b/_get_amort_lines.html index a985fa2..dd115e8 100644 --- a/_get_amort_lines.html +++ b/_get_amort_lines.html @@ -5,6 +5,7 @@ @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}} @@ -33,6 +34,10 @@ 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 a3373a4..8a2649b 100644 --- a/_get_free_amort.html +++ b/_get_free_amort.html @@ -18,7 +18,7 @@ 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 account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16) AND !filter_condition + WHERE credit > 0 AND (NOT trans.status & 16) AND !filter_condition ORDER BY trans.date, trans.label; !filter_condition=$filter_condition assign="amort_line" @@ -41,6 +41,7 @@ {{* 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 e78fbfd..ab4d4d6 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -68,6 +68,9 @@ !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}} @@ -93,9 +96,8 @@ {{/if}} {{/load}} - {{* Immobilisation soldée ? *}} - {{* TODO ¿ marquer archivée ? *}} {{if $montant_immo == 0}} + {{* Immobilisation soldée *}} {{:continue}} {{/if}} @@ -121,17 +123,9 @@ {{"%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="Amortissements" - href="amortization.html?immo_doc_id=%s&type_immo=%s"|args:$immo_doc_id:$type_immo shape="table" + label="Détails" + href="amortization.html?immo_doc_id=%s&type_immo=%s"|args:$immo_doc_id:$type_immo shape="eye" }} diff --git a/_immobilisations_autres.html b/_immobilisations_autres.html index bacef59..7a4b04c 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 DESC; + ORDER BY trans.date; !columns=$columns !table_join=$table_join !table=$module.table @@ -114,7 +114,6 @@ {{: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*}}
@@ -148,7 +147,7 @@ {{else}} {{* vérifier si le libellé aurait pu être filtré *}} {{#foreach from=$module.config.filters item="filter"}} - {{if $filter|strpos:$trans_label !== false}} + {{if $trans_label|strpos:$filter !== false}} {{:assign status="ignored"}} {{/if}} {{/foreach}} diff --git a/_nav.html b/_nav.html index fac14e4..c81e1f3 100644 --- a/_nav.html +++ b/_nav.html @@ -1,55 +1,31 @@ {{* -*- brindille -*- *}}
diff --git a/aide.html b/aide.html deleted file mode 100644 index e6855d7..0000000 --- a/aide.html +++ /dev/null @@ -1,163 +0,0 @@ -{{* -*- brindille -*- *}} - -{{:admin_header title="Aide" custom_css="./style.css" current="module_amortization"}} - -{{* barre de navigation *}} -{{:include file="_nav.html" current="aide"}} - -

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

- -

Immobilisations

-Elles sont classées dans plusieurs onglets : - - - -

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 : - -
- -

Créer une écriture d'amortissement

- -
-

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

- -

-
- -

Remarques

- - - - -

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

-

-

- 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 34e01b1..085edd3 100644 --- a/amortization.html +++ b/amortization.html @@ -29,41 +29,36 @@ {{* 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}} - -{{if $info_immo.status == "amortized"}} - {{:assign amort_amount=$solde}} - {{:assign valeur_residuelle=0}} -{{else}} - {{:assign valeur_residuelle=$solde}} -{{/if}} +{{:assign valeur_residuelle=$solde}} {{* 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"}} +{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort, created_amort"}} {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}} {{if $valeur_residuelle > 0}} {{* lister les amortissements non attachés à une immo *}} - {{:include file="./_get_free_amort.html" filter_condition="1" keep="free_amort_lines"}} + {{:assign account_filter="28%"|quote_sql}} + {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} + {{:include file="./_get_free_amort.html" filter_condition=$filter_condition keep="free_amort_lines"}} {{/if}} -{{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}} +{{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} -{{if $_GET.type_immo == "amortized" || $valeur_residuelle== 0 }} - {{:assign subcurrent="amortized"}} +{{if $_GET.type_immo == "amortized" && $valeur_residuelle == 0}} + {{:assign current="amortized"}} {{elseif $_GET.type_immo == "archived"}} - {{:assign subcurrent="archived"}} -{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed"}} - {{:assign subcurrent="managed"}} + {{:assign current="archived"}} +{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed" || $valeur_residuelle > 0}} + {{:assign current="managed"}} {{else}} - {{:assign subcurrent="other"}} + {{:assign current="other"}} {{/if}} {{:include file="_nav.html" - current="index" - subcurrent="%s"|args:$subcurrent - subsubcurrent="amortization" + current="%s"|args:$current + subcurrent="details" type_immo=$_GET.type_immo autres_amort=$free_amort_lines }} @@ -79,6 +74,8 @@ {{: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}} @@ -108,52 +105,16 @@
- -{{if $linked_immos != null}} - -{{/if}} -
Immobilisation
@@ -176,7 +137,7 @@ {{/if}} {{if $valeur_residuelle > 0}}
Montant des amortissements
-
{{"%d-%d"|math:$solde:$valeur_residuelle|money_currency_html:false|raw}}
+
{{$total_amort|money_currency_html:false|raw}}
Valeur nette résiduelle
{{$valeur_residuelle|money_currency_html:false|raw}}
{{/if}} @@ -187,7 +148,63 @@
-

Amortissements enregistrés

+{{if $valeur_residuelle > 0 || $linked_immos != null}} +

Avoirs

+ +{{/if}} + +{{if $linked_immos != null}} + + + + + + + + + + {{#foreach from=$linked_immos item="line"}} + {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} + + + + + + + + {{/foreach}} + +
DateLibelléMontant
#{{$line.trans_id}}{{$line.date|date_short}}{{$line.label}}{{"%f"|math:$line.amount|money_currency_html:false|raw}} + {{if $total_amort == 0}} + {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}} + {{/if}} +
+{{/if}} + +

Amortissements

+ + {{if $linked_amort != null}}
@@ -223,7 +240,9 @@ {{/foreach}} @@ -232,7 +251,7 @@ {{/if}} -{{if $free_amort_lines}} +{{if $free_amort_lines && ! $created_amort}}

Il y a des écritures d'amortissement qui ne sont pas attachées à une immobilisation !
Utilisez le bouton « Attacher un amortissement » pour les afficher ; vous pourrez choisir d'en attacher certaines à cette immobilisation. @@ -242,5 +261,6 @@ {{if $linked_amort == null}}

Aucun amortissement enregistré pour cette immobilisation ; utilisez le bouton « Enregistrer un amortissement » pour enregistrer un nouvel amortissement

{{/if}} + {{:form_errors}} {{:admin_footer}} diff --git a/schema.json b/asset.schema.json similarity index 85% rename from schema.json rename to asset.schema.json index 23a924b..4391dd5 100644 --- a/schema.json +++ b/asset.schema.json @@ -1,5 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Donnée d'une immobilisation", "type": "object", "properties": { "type": { @@ -35,6 +36,10 @@ "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/attach_amort.html b/attach_amort.html index adf9e5c..a6d05bb 100644 --- a/attach_amort.html +++ b/attach_amort.html @@ -93,28 +93,14 @@ {{:error message="Le montant de l'amortissement (%s) dépasse la valeur résiduelle de l'immobilisation (%s)"|args:$ma:$vnc}} {{/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}} + {{* + 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"}} - {{* ajouter la nouvelle liaison *}} - {{:assign var="linked_transactions." value=$amort_line.trans_id}} - {{:api - method="POST" - path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id - assign="result" - assign_code="result_code" - transactions=$linked_transactions - }} + {{* Lier l'écriture d'amortissement à l'écriture d'immobilisation *}} + {{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$amort_line.trans_id}} {{* vérifier si cette liaison est déjà présente dans les documents pour éviter les doublons *}} {{* TODO voir si nécessaire ? *}} @@ -135,7 +121,7 @@ {{/load}} {{* immo soldée ? *}} - {{if $total_amort == $montant_immo}} + {{if $total_amort == $montant_immo && $_GET.from != "exit"}} {{:assign status="amortized"}} {{:save key=$info_immo.key @@ -154,7 +140,7 @@ {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="config" subcurrent="init" subsubcurrent="parameter"}} + {{:include file="_nav.html" current="managed" subcurrent="attach_amort"}} {{/if}} {{:form_errors}} diff --git a/attach_cession.html b/attach_cession.html new file mode 100644 index 0000000..8ffe851 --- /dev/null +++ b/attach_cession.html @@ -0,0 +1,39 @@ +{{* -*- brindille -*- *}} + +{{* + Enregistrer la liaison entre une écriture d'immobilisation et + une écriture de cession + @param immo_doc_id : id du document associé à l'immobilisation + @param cession_line_id : ligne de l'écriture de cession +*}} + +{{* 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}} + +{{* chercher l'écriture de cession de l'immobilisation *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $_GET.cession_line_id|intval +}} + {{:assign cession_id=$id_transaction}} +{{else}} + {{:error message="Impossible de trouver l'écriture de cession de l'immobilisation"}} +{{/select}} + +{{* Lier l'écriture de cession à l'écriture d'immobilisation *}} +{{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$cession_id}} + +{{* enregistrer la liaison de l'écriture de cession *}} +{{:save + key=""|uuid + type="cession_link" + immo_doc_id=$info_immo.id + cession_line_id=$_GET.cession_line_id|intval +}} + +{{:redirect force="exit_step3.html?immo_doc_id=%s&ok=1&msg=attach_cession"|args:$_GET.immo_doc_id}} diff --git a/attach_credit.html b/attach_credit.html index aed0bae..276dc76 100644 --- a/attach_credit.html +++ b/attach_credit.html @@ -79,30 +79,8 @@ {{/if}} {{/if}} -{{* chercher les liaisons de l'écriture d'immobilisation *}} -{{#select - CASE links.id_related = :immo_trans_id - WHEN true THEN links.id_transaction - WHEN false THEN links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; - :immo_trans_id = $ligne_immo.trans_id -}} - {{:assign var="linked_transactions." value=$linked_id}} -{{/select}} - -{{* ajouter la nouvelle liaison *}} -{{:assign var="linked_transactions." value=$credit_line.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 -}} + {{* Lier l'écriture de crédit à l'écriture d'immobilisation *}} + {{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$credit_line.trans_id}} {{* TODO ? vérifier le succès avant d'enregistrer le doc ? @@ -117,28 +95,28 @@ amount=$saved_credit }} + {{* {{if $montant_credit == $solde_immo}} {{:save id=$_GET.immo_doc_id status="archived" }} {{/if}} +*}} {{if $_GET.from == "exit"}} {{:redirect force="exit_step1.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} {{else}} {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} {{/if}} -{{*:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=attach_credit"|args:$_GET.immo_doc_id*}} {{/form}} {{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} {{:include file="_nav.html" - current="config" - subcurrent="other" - subsubcurrent="immo" + current="managed" + subcurrent="attach_credit" type_immo="other" }} {{/if}} diff --git a/attach_exit.html b/attach_exit.html index 11bc17c..2dda568 100644 --- a/attach_exit.html +++ b/attach_exit.html @@ -25,30 +25,8 @@ {{:error message="Impossible de trouver l'écriture de sortie d'immobilisation"}} {{/select}} -{{* 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=$rebut_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 -}} +{{* Lier l'écriture de sortie à l'écriture d'immobilisation *}} +{{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$rebut_id}} {{* enregistrer la liaison de l'écriture de sortie *}} {{:save @@ -58,4 +36,4 @@ exit_line_id=$_GET.exit_line_id|intval }} -{{:redirect to="exit_step3.html?immo_doc_id=%s&ok=1&msg=attach_exit"|args:$_GET.immo_doc_id}} +{{:redirect to="exit_step4.html?immo_doc_id=%s&ok=1&msg=attach_exit"|args:$_GET.immo_doc_id}} diff --git a/balance_sheet_exit.html b/balance_sheet_exit.html index 2b4cf6b..a561c80 100644 --- a/balance_sheet_exit.html +++ b/balance_sheet_exit.html @@ -10,6 +10,12 @@ {{if $message != null}} {{:error message=$message}} {{/if}} +{{* TODO VÉRIFIER SI UTILE *}} +{{* +{{if $info_immo.duration == null || $info_immo.duration == 0}} + {{:error message="Vous devez renseigner la durée d'amortissement au préalable"}} +{{/if}} +*}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} @@ -71,7 +77,7 @@ {{:assign var="open_years.%d"|args:$id value=$label|cat:" (du "|cat:$debut|cat:" au "|cat:$fin|cat:")"}} {{else}} {{:assign debut=$date_debut|date_short}} - {{:error message="Aucun exercice ouvert pour enregistrer un amortissement à partir du %s"|args:$debut}} + {{:error message="Aucun exercice ouvert pour enregistrer la sortie de bilan à partir du %s"|args:$debut}} {{/years}} {{if $years|count == 1}} {{:assign default_year=$years.0.id}} @@ -135,7 +141,7 @@ {{:admin_header title="Sortie de bilan" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="balance_exit"}} + {{:include file="_nav.html" current="%s"|args:$_GET.type_immo subcurrent="balance_exit"}} {{/if}} {{:form_errors}} diff --git a/compute_exit_data.html b/compute_exit_data.html index 7caf90b..c824af5 100644 --- a/compute_exit_data.html +++ b/compute_exit_data.html @@ -9,7 +9,9 @@ @param date_debut : date de début de la période d'amortissement complémentaire @param exit_date : date de sortie de l'immobilisation *}} -{{* TODO *}} + +{{* TODO boutons de navigation avant-arrière*}} + {{* 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}} @@ -58,7 +60,12 @@ {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="balance_exit"}} + {{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"}} {{/if}} {{:form_errors}} diff --git a/config.html b/config.html index 50f295b..eec7baf 100644 --- a/config.html +++ b/config.html @@ -46,6 +46,7 @@ {{/form}} {{:admin_header title="Configuration" custom_css="./style.css" current="module_amortization"}} + {{:include file="_nav.html" current="config"}} {{if $_GET.ok == 1}}

Configuration enregistrée.

@@ -154,13 +155,14 @@ }} {{/foreach}} @@ -187,6 +189,7 @@ + {{:assign unfinished_lines=$config_defaut.unfinished|map:implode:"-"|implode:","}} {{#foreach from=$unfinished_accounts key=code item=elem}} {{/foreach}} diff --git a/detach_amort.html b/detach_amort.html index eba97ee..b058716 100644 --- a/detach_amort.html +++ b/detach_amort.html @@ -7,8 +7,7 @@ @param amort_line_id : id de la ligne d'amortissement *}} -{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.amort_line_id}} - +{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.amort_line_id keep="info_immo"}} {{* supprimer le doc de liaison entre les lignes *}} {{#load type="amort_link" where="$$.immo_doc_id = :immo_doc_id AND $$.amort_line_id = :amort_line_id" @@ -19,11 +18,12 @@ {{/load}} {{* marquer immo non soldée *}} -{{* TODO : À VÉRIFIER *}} -{{:save - key=$info_immo.key - status="managed" -}} +{{if $info_immo.status == "amortized"}} + {{:save + key=$info_immo.key + status="managed" + }} +{{/if}} {{if $_GET.from == "exit"}} {{:redirect force="exit_step2.html?immo_doc_id=%s&ok=1&msg=detach_amort"|args:$_GET.immo_doc_id}} diff --git a/detach_cession.html b/detach_cession.html new file mode 100644 index 0000000..eab7863 --- /dev/null +++ b/detach_cession.html @@ -0,0 +1,21 @@ +{{* -*- brindille -*- *}} + +{{* + Supprimer l'association entre une écriture d'immobilisation et + une écriture de cession + @param immo_doc_id : id du doc associé à l'immo + @param cession_line_id : id de la ligne de cession +*}} + +{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.cession_line_id}} + +{{* supprimer le doc de liaison entre les lignes *}} +{{#load type="cession_link" + where="$$.immo_doc_id = :immo_doc_id AND $$.cession_line_id = :cession_line_id" + :immo_doc_id=$_GET.immo_doc_id|intval + :cession_line_id = $_GET.cession_line_id|intval +}} + {{:delete id=$id}} +{{/load}} + +{{:redirect to="exit_step3.html?immo_doc_id=%s&ok=1&msg=detach_cession"|args:$_GET.immo_doc_id}} diff --git a/detach_credit.html b/detach_credit.html index f2adb62..9665e85 100644 --- a/detach_credit.html +++ b/detach_credit.html @@ -18,15 +18,8 @@ {{:delete id=$id}} {{/load}} -{{* TODO : À VÉRIFIER *}} -{{:save - id=$_GET.immo_doc_id|intval - status="managed" -}} - {{if $_GET.from == "exit"}} {{:redirect force="exit_step1.html?immo_doc_id=%s&ok=1&msg=detach_avoir"|args:$_GET.immo_doc_id}} {{else}} - {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=detach_avoir"|args:$_GET.immo_doc_id}} + {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=detach_avoir"|args:$_GET.immo_doc_id}} {{/if}} -{{*:redirect to="details_immo.html?immo_doc_id=%s&ok=1&msg=detach&"|args:$_GET.immo_doc_id*}} diff --git a/detach_exit.html b/detach_exit.html index 486fc7c..1a71701 100644 --- a/detach_exit.html +++ b/detach_exit.html @@ -18,4 +18,4 @@ {{:delete id=$id}} {{/load}} -{{:redirect to="exit_step3.html?immo_doc_id=%s&ok=1&msg=detach_exit"|args:$_GET.immo_doc_id}} +{{:redirect to="exit_step4.html?immo_doc_id=%s&ok=1&msg=detach_exit"|args:$_GET.immo_doc_id}} diff --git a/details_immo.html b/details_immo.html deleted file mode 100644 index 0896717..0000000 --- a/details_immo.html +++ /dev/null @@ -1,148 +0,0 @@ -{{* -*- brindille -*- *}} - - -{{* - Afficher les détails d'une immmo - - permettre l'association d'une immo au crédit du compte de l'immo - - permettre de modifier les paramètres de l'immo - @param immo_doc_id : numéro du doc d'immo -*}} - -{{* 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 var="info_immo.amount" value=$info_immo.amount|or:$ligne_immo.amount}} -{{:assign var="info_immo.date_achat" value=$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign var="info_immo.date_mes" value=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign var="info_immo.label" value=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $info_immo.label}} - {{:assign var="info_immo.label" value=$info_immo.label|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} - -{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} -{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}} -{{:assign solde="%d-%d"|math:$info_immo.amount:$total_credits}} - -{{* lister les amortissements liés à l'immobilisation *}} -{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_amort"}} - -{{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} - -{{* -{{if ! $dialog}} - {{:assign subsubcurrent=null}} - {{if $total_credits == 0 && $total_amort == 0}} - {{:assign subsubcurrent="credit"}} - {{/if}} - {{if $total_amort == 0}} - {{:assign subsubcurrent=$subsubcurrent|cat:"-modif"}} - {{/if}} - {{:include file="_nav.html" current="index" subcurrent="details" subsubcurrent=$subsubcurrent}} -{{/if}} -*}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} - - - -{{if $_GET.ok}} - {{if $_GET.msg|match:"attach_amort"}} - {{:assign msg="Écriture d'amortissement attachée"}} - {{elseif $_GET.msg|match:"attach_credit"}} - {{:assign msg="Écriture au crédit attachée"}} - {{elseif $_GET.msg|match:"info"}} - {{:assign msg="Données de l'immobilisation enregistrées"}} - {{elseif $_GET.msg|match:"detach"}} - {{:assign msg="Écriture au crédit détachée"}} - {{else}} - {{:assign msg="Opération effectuée avec succès"}} - {{/if}} -

{{$msg}}

-{{elseif $_GET.err}} - {{:assign msg="L'opération a échoué"}} -

{{$msg}}

-{{/if}} - -

- Immobilisation - #{{$ligne_immo.trans_id}} - {{$info_immo.label}} -

-{{if $linked_immos != null}} -
{{$line.account_code}} {{$line.account_label}} - {{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}} + {{if ! $created_amort}} + {{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}} + {{/if}}
- {{:button - label="Enlever" - title="Enlever une ligne" - shape="minus" - min="1" - name="remove_line" - }} + {{if ! $code|in:$config_defaut.prefixes}} + {{:button + label="Enlever" + shape="minus" + min="1" + name="remove_line" + }} + {{/if}}
@@ -200,13 +203,15 @@ }} - {{:button - label="Enlever" - title="Enlever une ligne" - shape="minus" - min="1" - name="remove_line" - }} + {{if $unfinished_lines|strpos:$code === false}} + {{:button + label="Enlever" + title="Enlever une ligne" + shape="minus" + min="1" + name="remove_line" + }} + {{/if}}
- - - {{#foreach from=$linked_immos item="line"}} - {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - - - - - - - - {{/foreach}} - -
Écritures d'avoir liées
#{{$line.trans_id}}{{$line.label}}{{$line.date|date_short}}{{"%f"|math:$line.amount|money_currency_html:false|raw}} - {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}} -
- -{{/if}} - -
-
-{{* -
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$info_immo.label}}
-*}} -
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
-
Date d'acquisition
-
{{$info_immo.date_achat|date_short}}
- {{if $info_immo.date_mes != null && $info_immo.date_mes != $info_immo.date_achat}} -
Date de mise en service
-
{{$info_immo.date_mes|date_short}}
- {{/if}} -
Durée d'amortissement
-
{{$info_immo.duration}} ans
-
Montant de l'immobilisation
-
{{"%f"|math:$info_immo.amount|money_currency_html:false|raw}}
- {{if $total_credits > 0}} -
Montant des avoirs
-
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
-{{* -
Écritures d'avoir
-
- {{#foreach from=$linked_immos item="line"}} - {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.id}} - #{{$line.id}} - {{/foreach}} -
-*}} -
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-%d"|math:$info_immo.amount:$total_credits:$total_amort|money_currency_html:false|raw}}
- {{/if}} -
-
diff --git a/exit_step1.html b/exit_step1.html index d3cc904..1154fcb 100644 --- a/exit_step1.html +++ b/exit_step1.html @@ -1,7 +1,7 @@ {{* -*- brindille -*- *}} {{* - Associer les différentes écritures à une immo créée et sortie du + Associer des écritures de crédit à 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 *}} @@ -32,6 +32,7 @@ - line.credit < ligne_immo.amount => peut-être un avoir - line.credit = ligne_immo.amount - avoirs => écriture de sortie du bilan *}} +{{:assign account_code=$ligne_immo.account_code|cat:"%"}} {{#select trans.id as trans_id, trans.label as trans_label, @@ -40,15 +41,15 @@ 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 + account.id as account_id, + account.code as account_code, + account.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 + INNER JOIN acc_accounts AS account ON line.id_account = account.id LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id WHERE - acc.code = :acc_code + account.code LIKE :account_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 @@ -58,7 +59,7 @@ WHERE json_extract(exit_link.document, '$.type') == "exit_link" ) ; - :acc_code=$ligne_immo.account_code + :account_code=$account_code !table =$module.table assign="credit_line" }} @@ -75,7 +76,6 @@ }} {{* 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, @@ -105,7 +105,7 @@ {{:assign keep_amort=true}} {{#load type="amort_link" where="$$.amort_line_id = :amort_line_id" - :amort_line_id=$amort_line.amort_line_id|intval + :amort_line_id=$amort_line.amort_line_id assign="amort_link" }} {{if $amort_link.amount == null || $amort_link.amount == 0}} @@ -123,6 +123,12 @@ {{/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}} +{{:include file="_nav.html" current=$current subcurrent="exit"}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach_avoir"}} @@ -197,7 +203,7 @@ {{/if}} {{if $credit_lines}} -

Écritures au crédit du compte d'immobilisation

+

Autres écritures au crédit du compte d'immobilisation

@@ -232,7 +238,7 @@
{{/if}} -
+

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

diff --git a/exit_step2.html b/exit_step2.html index 699b947..8235a02 100644 --- a/exit_step2.html +++ b/exit_step2.html @@ -1,7 +1,7 @@ {{* -*- brindille -*- *}} {{* - Associer les différentes écritures à une immo créée et sortie du + Associer des écritures d'amortissement à 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,11 +13,11 @@ {{/if}} {{#form on="backward"}} - {{:redirect to="exit_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} + {{:redirect to="exit_step1.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} {{/form}} {{#form on="forward"}} - {{:redirect to="exit_step3.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} + {{:redirect to="exit_step3.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} {{/form}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} @@ -43,7 +43,6 @@ }} {{* 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, @@ -91,6 +90,12 @@ {{/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}} +{{:include file="_nav.html" current=$current subcurrent="exit"}} {{if $_GET.ok}} {{if $_GET.msg|match:"attach_amort"}} diff --git a/exit_step3.html b/exit_step3.html index 671b415..fca3fec 100644 --- a/exit_step3.html +++ b/exit_step3.html @@ -1,7 +1,7 @@ {{* -*- brindille -*- *}} {{* - Associer les différentes écritures à une immo créée et sortie du + Associer une écriture de cession à 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,20 +13,11 @@ {{/if}} {{#form on="backward"}} - {{:redirect to="exit_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}} + {{:redirect to="exit_step2.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="finish"}} - {{:redirect to="index.html?type_immo=managed"}} +{{#form on="forward"}} + {{:redirect to="exit_step4.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} {{/form}} {{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} @@ -44,84 +35,13 @@ {{* 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 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 -*}} +{{* chercher des écritures de cession *}} +{{:assign total_cession=0}} {{#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.id as line_id, 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.id as trans_id, trans.date as date, trans.label as trans_label, trans.id_year as year, @@ -131,45 +51,62 @@ 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 + WHERE account.code LIKE :code_cession_new OR account.code LIKE :code_cession_old ; - :code_amort = $code_amort - :immo_date=$date_immo - assign="amort_line" + :code_cession_new = "757%" + :code_cession_old = "775%" + assign="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" + {{* 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" }} - {{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}} +{{: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}} {{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}} + {{:assign var="free_cessions." value=$line}} + {{/select}} {{/select}} +{{*:debug linked_cessions=$linked_cessions free_cessions=$free_cessions total_cession=$total_cession*}} {{: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}} +{{:include file="_nav.html" current=$current subcurrent="exit"}} {{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 $_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}}

{{$msg}}

{{/if}} @@ -194,11 +131,15 @@
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 $exit_line != null}} -

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

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

Écriture de cession attachée à l'immobilisation

@@ -212,77 +153,91 @@ - - - - - - - - - + {{#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}}
#{{$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"}} -
#{{$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"}} +
-{{elseif $exit_lines}} +{{elseif $free_cessions}}

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

+{{else}} +

+ Aucune écriture de cession... que faire ?

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

Écritures non rattachées

+ +{{if $free_cessions}} +

Autres écritures de cession

- - - - - - - - - - - + + + + + + + + + + + - {{#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}} - + {{#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}} +
DateLibelléMontantN° compteCompte
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"}} -
#{{$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"}} +
-{{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"}} - {{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}} + {{:button type="submit" name="forward" label="Poursuivre" shape="right" class="main"}}

diff --git a/exit_step4.html b/exit_step4.html new file mode 100644 index 0000000..7868913 --- /dev/null +++ b/exit_step4.html @@ -0,0 +1,316 @@ +{{* -*- 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}} + +{{#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="finish"}} + {{:redirect to="index.html?type_immo=managed"}} +{{/form}} + +{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} +{{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}} +{{: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}} +{{/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}} +{{/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é *}} +{{* 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, + 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}} + +{{: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}} +{{:include file="_nav.html" current=$current subcurrent="exit"}} + +{{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
+
{{$ligne_immo.amount|money_html|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 $exit_line != null}} +

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

+ + + + + + + + + + + + + + + + + + + + + + + +
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 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"}} + {{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/ignore.html b/ignore.html index 96254fd..4c1b760 100644 --- a/ignore.html +++ b/ignore.html @@ -30,7 +30,7 @@ {{:assign status="ignored"}} {{:save key=""|uuid - validate_schema="schema.json" + validate_schema="asset.schema.json" type="immo" line=$_GET.immo_line_id|intval duration=$duration diff --git a/index.html b/index.html index 234de28..f2fab2e 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@ {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization" subcurrent="unfinished"}} {{/if}} -{{:include file="_nav.html" current="index" subcurrent="%s"|args:$type_immo}} +{{:include file="_nav.html" current=$type_immo}} {{if $_GET.ok}} {{if $_GET.msg|match:"immobilisation"}} @@ -34,21 +34,8 @@

É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"*}} +{{* supprimer les documents sans écriture associée *}} +{{:include file="_remove_orphan_docs.tpl"}} {{if $type_immo == "other"}} {{:include file="_immobilisations_autres.html"}} diff --git a/link.schema.json b/link.schema.json index 88968ed..0160ff2 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 documents", + "description": "Schéma des liens entre écritures", "type": "object", "properties": { "type": { "type": "string", - "enum": ["amort_link", "credit_link", "exit_link"] + "enum": ["amort_link", "credit_link", "cession_link", "exit_link"] }, "immo_doc_id" : { "description": "identifiant du document d'immobilisation associé", @@ -23,13 +23,22 @@ "exclusiveMinimum": 0 }, "exit_line_id": { - "description": "ligne d'amortissement de sortie du bilan de l'immobilisation", + "description": "ligne de sortie du bilan de l'immobilisation", + "type": "integer", + "exclusiveMinimum": 0 + }, + "cession_line_id": { + "description": "ligne de cession 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"], @@ -39,6 +48,9 @@ "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 a05eab1..43be090 100644 --- a/link_immo.html +++ b/link_immo.html @@ -10,10 +10,19 @@ {{if $message != null}} {{:error message=$message}} {{/if}} +{{:assign label_immo=$ligne_immo.trans_label}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $label_immo}} + {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} +{{/if}} {{* 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}} {{#select line.id as credit_line_id, line.id_transaction as credit_trans_id, @@ -30,12 +39,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 = :account_code AND credit > 0 + WHERE account.code LIKE :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") + 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") ORDER BY trans.date, trans.label; - :account_code = $ligne_immo.account_code + :account_code = $account_code !table =$module.table assign="other_immos." }} @@ -47,30 +59,38 @@ {{if ! $dialog}} {{:include file="_nav.html" - current="config" - subcurrent="other" - subsubcurrent="immo" + current="managed" + subcurrent="link_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'écriture d'immobilisation
+
Date de l'immobilisation
{{$ligne_immo.date_achat|date_short}}
-
{{if $other_immos != null}} @@ -104,8 +124,8 @@ {{/foreach}} +

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

-

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/modify_infos.html b/modify_infos.html index 354b3f3..174d1a4 100644 --- a/modify_infos.html +++ b/modify_infos.html @@ -2,13 +2,6 @@ {{* @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"}} @@ -21,6 +14,8 @@ {{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"}} @@ -39,119 +34,71 @@ {{* traiter la saisie *}} {{#form on="save"}} - {{if ! $_POST.amortir}} - {{* ne pas amortir *}} - {{:assign duration=0}} - {{:assign libelle=null}} - {{:assign montant=null}} + {{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}} - {{:assign date_mes=null}} - {{:assign status="ignored"}} {{else}} - {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} - {{:assign da=$ligne_immo.date_achat|date_short}} - {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}} - {{/if}} + {{:assign date_achat=$_POST.date_achat|parse_date}} + {{/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}} + {{* 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}} - {{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}} + {{:assign date_mes=$ligne_immo.date_achat}} {{/if}} - - {{:assign duration=$_POST.duree|intval}} - {{if $duration <= 0}} - {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} + {{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 $_POST.libelle != $ligne_immo.line_label && $_POST.libelle != $ligne_immo.trans_label}} - {{:assign libelle=$_POST.libelle}} - {{else}} - {{:assign libelle=null}} + {{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}} - - {{:assign montant=null}} - {{if $_POST.montant == null || $_POST.montant|money_int == 0 || $_POST.montant|money_int == $info_immo.amount}} - {{:assign montant=$info_immo.amount}} - {{else}} - {{:assign montant=$_POST.montant|money_int}} - {{if $montant < 0 || $montant > $max_disponible}} - {{:assign montant_aff="%f"|math:$montant|money_currency:false}} - {{:assign max_aff="%f"|math:$max_disponible|money_currency:false}} - {{:error message="Le montant (%s) doit être positif et ne peut être supérieur à %s"|args:$montant_aff:$max_aff}} - {{/if}} - {{/if}} - - {{:assign status="managed"}} {{/if}} - {{* écritures de crédit *}} - {{#foreach from=$linked_immos item="line"}} - {{if ! $_POST.credit_id|has:$line.trans_id}} - {{:assign var="docs_to_remove." value=$line.doc}} - {{:assign var="links_to_remove." value=$line.trans_id}} - {{/if}} - {{/foreach}} - - {{if $docs_to_remove != null}} - {{:assign remove_set=$docs_to_remove|implode:","}} - {{:assign remove_set="("|cat:$remove_set|cat:")"}} - {{:delete where="id IN %s"|args:$remove_set}} - - {{* idem avec acc_transactions_links *}} - {{#select - CASE links.id_related = :immo_trans_id - WHEN true THEN links.id_transaction - WHEN false THEN links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; - :immo_trans_id = $ligne_immo.trans_id - }} - {{if ! $linked_id|in:$links_to_remove}} - {{:assign var="linked_transactions." value=$linked_id}} - {{/if}} - {{/select}} - - {{* Enregistrer les liaisons *}} - {{:api - method="POST" - path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id - assign="result" - assign_code="result_code" - transactions=$linked_transactions - }} + {{: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"}} + {{* enregistrer les infos de l'immobilisation *}} {{:save key=$info_immo.key - validate_schema="schema.json" + validate_schema="asset.schema.json" type="immo" line=$info_immo.line duration=$duration @@ -163,18 +110,13 @@ assign_new_id="new_id" }} - {{if $_POST.amortir}} - {{:assign type_immo="managed"}} - {{else}} - {{:assign type_immo="other"}} - {{/if}} - {{:redirect force="index.html?ok=1&msg=infos&type_immo=%s"|args:$type_immo}} - + {{: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}} {{/form}} {{:admin_header title="Modifier l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="parameter"}} + {{:include file="_nav.html" current="managed" subcurrent="modify_infos"}} {{/if}} {{:form_errors}} @@ -207,33 +149,16 @@
- Paramètres de l'amortissement + Informations
- {{: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}} -
+ {{: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"}}

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

{{:admin_footer}} - - - diff --git a/module.ini b/module.ini index f3f13f1..aaeb203 100644 --- a/module.ini +++ b/module.ini @@ -1,5 +1,5 @@ name="Amortissements" -description="Immobilisations et amortissements\nversion 0.32" +description="Immobilisations et amortissements\nversion 0.33" 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 6838cbf..61f870f 100644 --- a/other_amortizations.html +++ b/other_amortizations.html @@ -4,67 +4,82 @@ 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 $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}} -{{: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)"}} +{{* 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}} + +{{if $_GET.filter}} + {{* 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" + }} + {{:assign filter_condition="account.code = "|cat:$code_amort}} {{else}} - {{:assign filter_condition="1"}} + {{:assign account_filter="28%"|quote_sql}} + {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} {{/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 - file="./_get_amort_code.html" - code_immo=$ligne_immo.account_code - keep="code_amort" -}} {{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} {{:include file="_nav.html" - current="index" - subcurrent="other" - subsubcurrent="amortization" - type_immo="other" + current="managed" + subcurrent="amortization" + type_immo="managed" autres_amort=$free_amort_lines }} {{/if}} -{{if $_POST.unhide != null}} - {{:assign checked="checked"}} -{{/if}} + -
-
- {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher toutes les écritures"}} -
-
+{{: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}}
+
+
-{{if $free_amort_lines != null}} -
-

Immobilisation « {{$label_immo}} »

+ {{if $free_amort_lines != null}} @@ -79,9 +94,6 @@ {{#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}} @@ -106,11 +118,14 @@ {{/foreach}} +

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

-
-{{else}} -

Aucun amortissement à rattacher

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

Aucun amortissement pour le compte {{$code_amort}}

+ {{/if}} +
+ + {{:form_errors}} {{:admin_footer}} diff --git a/save_amort.html b/save_amort.html index 2b5c044..2504ff8 100644 --- a/save_amort.html +++ b/save_amort.html @@ -22,10 +22,6 @@ {{/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}} @@ -69,7 +65,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}} @@ -82,7 +78,9 @@ {{: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}} - {{:error message="Aucun exercice ouvert pour enregistrer un amortissement"}} + {{: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}} {{/years}} {{* Traiter l'envoi du formulaire *}} @@ -150,6 +148,12 @@ {{: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." @@ -163,7 +167,6 @@ account=$credit_account|keys|value:0 id_project=$ligne_immo.id_project }} - {{:api method="POST" path="accounting/transaction" @@ -185,6 +188,7 @@ type="amort_link" immo_doc_id=$_GET.immo_doc_id|intval amort_line_id=$line.id + created=true }} {{:break}} {{/if}} @@ -192,26 +196,30 @@ {{* immo soldée ? *}} {{if $_POST.montant|trim|money_int == $solde}} - {{:assign var="info_immo.status" value="amortized"}} + {{:assign status="amortized"}} {{:save key=$info_immo.key - status=$info_immo.status + status=$status }} {{/if}} - {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=amortissement"|args:$_GET.immo_doc_id:$info_immo.status}} + {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=amortissement"|args:$_GET.immo_doc_id:$status}} {{/form}} -{{:admin_header title="Ajout amortissement" custom_css="./style.css" current="module_amortization"}} +{{: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"}} {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="managed" subsubcurrent="amortization"}} + {{:include file="_nav.html" current="managed" subcurrent="amortization"}} {{/if}} {{:form_errors}} -{{:assign var=selected_year value=$years.0.id}} +{{if $years|count == 1}} + {{:assign var=selected_year value=$years.0.id}} +{{/if}} {{:assign var=date_amort value=$years.0.end_date}} {{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}} @@ -240,6 +248,7 @@ 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 }} @@ -248,6 +257,7 @@ 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 }} @@ -286,8 +296,8 @@ function redisplayData(evt, ) { setDateEnd(f_years_select, f_date, f_years_data); - 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); + setSelectorYear(['credit_account', 'debit_account'], f_years_select); } function redisplayAmort(evt, diff --git a/scripts.js b/scripts.js index e6298ca..3def0ba 100644 --- a/scripts.js +++ b/scripts.js @@ -12,9 +12,10 @@ function toggleInputs(idcb, idfields) { } } -function toggleVisibility(idcheck, fields) { - const elem = document.getElementById(idcheck); - fields.forEach(function (field) { +function toggleVisibility(id_check, fields) { + const elem = document.getElementById(id_check); + fields.forEach(function (id_field) { + const field = document.getElementById(id_field); if (elem.checked) { field.classList.remove('hidden'); } else { @@ -27,9 +28,11 @@ function toggleVisibility(idcheck, fields) { function setAccountYear(button_names, id_year) { for (const name of button_names) { const button = document.querySelector("button[data-name=" + name + "]"); - const b_value = button.value; - const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year); - button.setAttribute('value', new_value); + 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); + } } } @@ -131,7 +134,9 @@ 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) { +function setSelectorYear(button_names, f_years_selector) +{ + const selector = document.getElementById(f_years_selector); const selected_year = document.getElementById(f_years_selector).value; setAccountYear(button_names, selected_year); } @@ -140,19 +145,21 @@ function setSelectorYear(button_names, f_years_selector) { // Associer au bouton « Enlever » de chaque ligne l'action de suppression de la ligne function initLine(row) { - var removeBtn = row.querySelector('button[name="remove_line"]'); - removeBtn.onclick = () => { - let count = removeBtn.closest("table").querySelectorAll('tbody tr').length; - var min = removeBtn.getAttribute('min'); + 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'); - 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 @@ -180,6 +187,28 @@ 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/transfer.html b/transfer.html index cb6643c..6a491b1 100644 --- a/transfer.html +++ b/transfer.html @@ -175,12 +175,13 @@ {{* enregistrer les infos de l'immobilisation *}} {{:save key=""|uuid - validate_schema="schema.json" + validate_schema="asset.schema.json" type="immo" line=$immo_line_id duration=$duration date_mes=null status=$status + created=true }} {{if $_POST.amortir}} {{:assign type_immo="managed"}} @@ -192,7 +193,7 @@ {{:admin_header title="Transfert d'immobilisation en cours" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} - {{:include file="_nav.html" current="index" subcurrent="unfinished" subsubcurrent="transfer"}} + {{:include file="_nav.html" current="unfinished" subcurrent="transfer"}} {{/if}} {{:form_errors}} @@ -257,6 +258,7 @@ 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 }} diff --git a/write_exit.html b/write_exit.html index ddc1ab0..cfd4a3a 100644 --- a/write_exit.html +++ b/write_exit.html @@ -41,6 +41,10 @@ {{: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 *}} @@ -138,6 +142,7 @@ type="amort_link" immo_doc_id=$info_immo.id amort_line_id=$line.id + created=true }} {{/if}} {{/foreach}} @@ -203,6 +208,7 @@ type="exit_link" immo_doc_id=$info_immo.id exit_line_id=$line.id + created=true }} {{:break}} {{/if}} @@ -240,18 +246,36 @@ }} {{/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}} - {{:include file="_nav.html" current="index" subcurrent="balance_exit"}} + {{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"}} {{/if}} {{* @@ -265,10 +289,6 @@ 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"}} @@ -380,6 +400,7 @@ 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 }} @@ -392,6 +413,7 @@ 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 }} @@ -424,6 +446,7 @@ 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 }} @@ -436,6 +459,7 @@ 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 }} @@ -462,6 +486,7 @@ 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 }} @@ -480,6 +505,7 @@ 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 }} @@ -493,6 +519,7 @@ 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 }} @@ -519,6 +546,7 @@ 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 }} @@ -531,6 +559,7 @@ 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 }}