From e4a637c6525ba2b84c17cb9767ca857aa8461884 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Mon, 11 May 2026 10:23:28 +0200 Subject: [PATCH 1/5] =?UTF-8?q?Correction=20erreur=20affichage=20annuit?= =?UTF-8?q?=C3=A9=20estim=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- amortization.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/amortization.html b/amortization.html index 237ee0c..60fb1c4 100644 --- a/amortization.html +++ b/amortization.html @@ -64,7 +64,6 @@ {{/if}} {{/load}} {{:assign solde="%d-%d"|math:$ligne_immo.montant:$total_credits}} -{{*:debug info_immo=$info_immo ligne_immo=$ligne_immo total_credits=$total_credits solde=$solde*}} {{if $info_immo.status == "amortized"}} {{:assign amort_amount=$solde}} @@ -213,7 +212,7 @@ {{/if}} {{if $info_immo.duration != null && $valeur_residuelle > 0}}
Annuité estimée
-
{{"min(%d, %f/%d)"|math:$valeur_residuelle:solde:$info_immo.duration|money_currency_html:false|raw}}
+
{{"min(%d, %f/%d)"|math:$valeur_residuelle:$solde:$info_immo.duration|money_currency_html:false|raw}}
{{/if}} From b15eab168c9f2dbd81c143fde22d4da4dd12fd4e Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Mon, 11 May 2026 11:14:31 +0200 Subject: [PATCH 2/5] =?UTF-8?q?Correction=20d=C3=A9termination=20dates=20a?= =?UTF-8?q?chat=20et=20mise=20en=20service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- add_infos.html | 23 ++++++++++++----------- modify_infos.html | 28 ++++++++++++++++++---------- save_amort.html | 6 ++++++ 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/add_infos.html b/add_infos.html index a6c96ea..72ec2c1 100644 --- a/add_infos.html +++ b/add_infos.html @@ -73,6 +73,18 @@ {{: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 $_POST.date_achat == null || $_POST.date_achat|parse_date == $ligne_immo.date_achat}} + {{:assign date_achat=null}} + {{else}} + {{:assign date_achat=$_POST.date_achat|parse_date}} + {{/if}} + + {{if $_POST.date_mes == null || $_POST.date_mes == $_POST.date_achat}} + {{:assign date_mes=null}} + {{else}} + {{:assign date_mes=$_POST.date_mes|parse_date}} + {{/if}} + {{:assign duration=$_POST.duree|intval}} {{if $duration <= 0}} {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} @@ -100,17 +112,6 @@ {{:error message="Le montant (%s) ne peut être supérieur au reste (%s)"|args:$montant_nb:$reste_nb}} {{/if}} - {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $ligne_immo.date_achat}} - {{:assign date_achat=null}} - {{else}} - {{:assign date_achat=$_POST.date_achat|parse_date}} - {{/if}} - - {{if $_POST.date_mes == null || $_POST.date_mes == $_POST.date_achat || $_POST.date_mes|parse_date == $ligne_immo.date_achat}} - {{:assign date_mes=null}} - {{else}} - {{:assign date_mes=$_POST.date_mes|parse_date}} - {{/if}} {{:assign status="managed"}} {{/if}} diff --git a/modify_infos.html b/modify_infos.html index edd3c92..826a106 100644 --- a/modify_infos.html +++ b/modify_infos.html @@ -91,22 +91,30 @@ {{:assign date_mes=null}} {{:assign status="ignored"}} {{else}} - {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $ligne_immo.date_achat}} - {{:assign date_achat=null}} - {{elseif $_POST.date_achat|parse_date == $info_immo.date_achat}} - {{:assign date_achat=$info_immo.date_achat}} - {{else}} - {{:assign date_achat=$_POST.date_achat|parse_date}} - {{/if}} {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} {{:assign da=$ligne_immo.date_achat|date_short}} {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}} {{/if}} - {{if $_POST.date_mes == null || $_POST.date_mes|parse_date == $ligne_immo.date_achat}} - {{:assign date_mes=null}} + {{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}} @@ -250,7 +258,7 @@ {{: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}} + {{: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}} diff --git a/save_amort.html b/save_amort.html index 1b199c0..d548c44 100644 --- a/save_amort.html +++ b/save_amort.html @@ -31,6 +31,9 @@ {{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} {{:assign duree=$duration}} + {{if $date_achat != null}} + {{:assign date_debut=$date_achat}} + {{/if}} {{if $date_mes != null}} {{:assign date_debut=$date_mes}} {{/if}} @@ -42,6 +45,7 @@ {{else}} {{:error message="Informations de l'immobilisation « %s » non trouvées ; vous devez d'abord les renseigner"|args:$ligne_immo.label}} {{/load}} + {{if $ligne_immo.line_label != null && $ligne_immo.line_label != $amort_label}} {{:assign amort_label=$amort_label|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} @@ -83,6 +87,7 @@ {{#select line.credit, trans.date as amort_date, + COALESCE(trans.label, line.label) as amort_label, account.code as account_code, account.label as account_label FROM acc_transactions_lines AS line @@ -106,6 +111,7 @@ {{:assign date_debut=$line.amort_date}} {{:assign code_amort=$line.account_code}} {{:assign amort_account_label=$line.account_label}} + {{:assign amort_label=$amort_label}} {{/foreach}} {{if $valeur_residuelle == 0}} From b83942efd234e935bb7eb977574714894b9f6793 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Mon, 11 May 2026 11:31:21 +0200 Subject: [PATCH 3/5] Ajout delete_infos.html --- delete_infos.html | 100 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 delete_infos.html diff --git a/delete_infos.html b/delete_infos.html new file mode 100644 index 0000000..5e5d2a0 --- /dev/null +++ b/delete_infos.html @@ -0,0 +1,100 @@ +{{* -*- brindille -*- *}} + +{{* + Supprimer les infos d'une immo et les liaisons d'immo associées + @param immo_doc_id +*}} + +{{#load id=$_GET.immo_doc_id|intval assign="info_immo"}} +{{else}} + {{:error message="Immobilisation non trouvée"}} +{{/load}} +{{#select + trans.id as immo_trans_id, + trans.label as trans_label, + trans.date as date_achat, + line.debit as montant, + line.label as line_label, + acc.code, + acc.label as account_label + FROM acc_transactions_lines AS line + INNER join acc_transactions AS trans ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE line.id = :line_id; + :line_id = $info_immo.line + assign="ligne_immo" + }} +{{else}} + {{:error message="Immobilisation non trouvée"}} +{{/select}} + +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} +{{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} + {{:assign immo_label=$immo_label|cat::" — "|cat:$ligne_immo.line_label}} +{{/if}} + +{{#form on="delete"}} + {{#select + trans.id + FROM acc_transactions_lines AS line + INNER JOIN !table ON $$.credit_line_id = line.id + INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id + WHERE $$.type = + "credit_link" AND $$.immo_doc_id = :immo_doc_id + ; + !table = $module.table + :immo_doc_id = $_GET.immo_doc_id|intval + }} + {{:assign var="linked_trans." value=$id}} + {{/select}} + + {{:debug linked_trans=$linked_trans}} + {{if $linked_trans != null}} + {{* chercher et supprimer les écritures liées *}} + {{#select + CASE links.id_related = trans.id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as linked_id + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (links.id_transaction = trans.id OR links.id_related = trans.id) + WHERE trans.id = :immo_trans_id + ; + :immo_trans_id=$ligne_immo.immo_trans_id + }} + {{if ! $linked_trans|has:$linked_id}} + {{:assign var="linked_transactions." value=$linked_id}} + {{/if}} + {{/select}} + + {{* enregistrer les liaisons restantes *}} + {{:api + method="POST" + path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id + assign="result" + assign_code="result_code" + transactions=$linked_transactions + }} + + {{* supprimer les docs de liaison *}} + {{:delete type="immo_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $_GET.immo_doc_id|intval}} + + {{/if}} + + {{* supprimer les infos de l'immobilisation *}} + {{:delete id=$_GET.immo_doc_id|intval}} + {{:redirect force="index.html?ok=1&msg=suppr_infos&type_immo=other"}} +{{/form}} + + +{{:admin_header title="Supprimer" current="module_amortization"}} +{{:form_errors}} +{{:delete_form + legend="Immobilisation « #%s %s »"|args:$ligne_immo.immo_trans_id:$immo_label + warning="Supprimer les paramètres de l'immobilisation « #%s %s » ?"|args:$ligne_immo.immo_trans_id:$immo_label + info="L'écriture d'immobilisation ne sera pas supprimée ; les nouveaux paramètres pourront être saisis depuis l'onglet « À classer »" +}} + +{{:admin_footer}} From 18ce7b0edd13002a6b9cd402a9352296576fed6c Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Tue, 12 May 2026 09:56:08 +0200 Subject: [PATCH 4/5] =?UTF-8?q?Modification=20pr=C3=A9sentation=20=C3=A9cr?= =?UTF-8?q?itures=20avoir=20li=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- details_immo.html | 71 +++++++++++++++++++++++++++++++++++++---------- style.css | 9 ++++++ 2 files changed, 65 insertions(+), 15 deletions(-) diff --git a/details_immo.html b/details_immo.html index 0954f68..70fc845 100644 --- a/details_immo.html +++ b/details_immo.html @@ -1,6 +1,5 @@ {{* -*- brindille -*- *}} -{{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} {{* Afficher les détails d'une immmo @@ -32,7 +31,7 @@ account.code as account_code, account.label as account_label FROM acc_transactions_lines AS line - INNER join acc_transactions AS trans ON line.id_transaction = trans.id + INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id INNER JOIN acc_accounts AS account ON line.id_account = account.id WHERE line.id = :line_id; :line_id = $info_immo.line @@ -44,7 +43,7 @@ {{:assign var="info_immo.amount" value=$info_immo.amount|or:$ligne_immo.montant}} {{: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:$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.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}} @@ -56,19 +55,20 @@ *}} {{:assign linked_immos=null}} {{:assign total_credits=0}} -{{#load type="immo_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}} +{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}} {{#select line.credit, - trans.id + trans.id, + trans.label, + trans.date FROM acc_transactions_lines AS line INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id WHERE line.id = :credit_line_id; :credit_line_id=$credit_line_id }} {{:assign credit=$credit}} - {{:assign credit_trans_id=$id}} + {{:assign var="linked_immos." id=$id label=$label amount=$credit date=$date}} {{/select}} - {{:assign var="linked_immos." value=$credit_trans_id}} {{if $amount == null}} {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} {{else}} @@ -94,17 +94,37 @@ {{/if}} {{/load}} -{{* barre de navigation *}} +{{: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"}} - {{else}} - {{:assign subsubcurrent=null}} + {{/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.immo_trans_id}} + + {{if $_GET.ok}} {{if $_GET.msg|match:"attach_amort"}} {{:assign msg="Attachement amortissement effectué"}} @@ -119,14 +139,34 @@

{{$msg}}

{{/if}} +{{*

Paramètres de l'immobilisation #{{$ligne_immo.immo_trans_id}}

+*}} +{{if $linked_immos != null}} + +{{/if}}
Immobilisation
-
#{{$ligne_immo.immo_trans_id}} {{$info_immo.label}}
+
#{{$ligne_immo.immo_trans_id}} {{$info_immo.label}}
Compte d'immobilisation
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
Montant de l'immobilisation
@@ -134,14 +174,15 @@ {{if $total_credits > 0}}
Montant des avoirs
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
+{{*
Écritures d'avoir
- {{#foreach from=$linked_immos item="id"}} - {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$id}} - #{{$id}} + {{#foreach from=$linked_immos item="elem"}} + {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$elem.id}} + #{{$elem.id}} {{/foreach}} - {{*:debug linked_immos=$linked_immos*}}
+*}}
Montant à amortir
{{"%f"|math:$solde|money_currency_html:false|raw}}
{{/if}} diff --git a/style.css b/style.css index 1a8ed6d..e7ed568 100644 --- a/style.css +++ b/style.css @@ -98,3 +98,12 @@ html.dark .block.alert { span.input-list.avoirs label { padding : 0.4rem 0.6rem; } + +aside.right { + float: right; +} + +span.label { + font-size : 120%; + font-weight : bold; +} From 23fac6ecea85c55de2e182e1e2fc8d32eea6caea Mon Sep 17 00:00:00 2001 From: Jean-Christophe Engel Date: Tue, 12 May 2026 11:52:01 +0200 Subject: [PATCH 5/5] =?UTF-8?q?Ajout=20possibilit=C3=A9=20d=C3=A9tachement?= =?UTF-8?q?=20=C3=A9criture=20cr=C3=A9dit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- detach_immo.html | 73 ++++++++++++++++++++++++++++++++++++++++++++ details_immo.html | 77 +++++++++++++++++++++++++++-------------------- 2 files changed, 118 insertions(+), 32 deletions(-) create mode 100644 detach_immo.html diff --git a/detach_immo.html b/detach_immo.html new file mode 100644 index 0000000..3eccc75 --- /dev/null +++ b/detach_immo.html @@ -0,0 +1,73 @@ +{{* -*- brindille -*- *}} + +{{* + Supprimer l'association entre une écriture d'immobilisation et + une écriture au crédit du compte d'immobilisation + @param immo_line_id : id de la ligne d'immo + @param credit__line_id : id de la ligne de crédit + @param immo_doc_id : id du doc associé à l'immo +*}} +{{:debug get=$_GET}} +{{* chercher l'écriture d'immobilisation *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $_GET.immo_line_id|intval +}} + {{:assign immo_trans_id=$id_transaction}} +{{else}} + {{:error message="Immobilisation non trouvée"}} +{{/select}} + +{{* chercher l'écriture au crédit *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $_GET.credit_line_id|intval +}} + {{:assign credit_id=$id_transaction}} +{{else}} + {{:error message="Écriture au crédit non trouvée"}} +{{/select}} + +{{* + chercher les liaisons de l'écriture d'immobilisation + et supprimer la liaison avec l'écriture au crédit +*}} +{{#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 = $immo_trans_id + }} + {{if $linked_id != $credit_id}} + {{:assign var="linked_transactions." value=$linked_id}} + {{/if}} +{{/select}} +{{:debug linked_transactions=$linked_transactions}} +{{* Enregistrer les liaisons *}} +{{:api + method="POST" + path="accounting/transaction/%s/transactions"|args:$immo_trans_id + assign="result" + assign_code="result_code" + transactions=$linked_transactions +}} + +{{* supprimer le doc de liaison entre les lignes *}} +{{#load type="credit_link" + where="$$.immo_doc_id = :immo_doc_id AND $$.credit_line_id = :credit_line_id" + :immo_doc_id=$_GET.immo_doc_id|intval + :credit_line_id = $_GET.credit_line_id|intval +}} + {{:delete id=$id}} +{{/load}} + +{{:redirect + to="details_immo.html?immo_doc_id=%s&ok=1&msg=detach&"|args:$_GET.immo_doc_id}} +*}} diff --git a/details_immo.html b/details_immo.html index 70fc845..44cd729 100644 --- a/details_immo.html +++ b/details_immo.html @@ -58,7 +58,8 @@ {{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$_GET.immo_doc_id|intval}} {{#select line.credit, - trans.id, + line.id as line_id, + trans.id as trans_id, trans.label, trans.date FROM acc_transactions_lines AS line @@ -67,7 +68,7 @@ :credit_line_id=$credit_line_id }} {{:assign credit=$credit}} - {{:assign var="linked_immos." id=$id label=$label amount=$credit date=$date}} + {{:assign var="linked_immos." trans_id=$trans_id credit_line_id=$line_id label=$label amount=$credit date=$date}} {{/select}} {{if $amount == null}} {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} @@ -127,11 +128,15 @@ {{if $_GET.ok}} {{if $_GET.msg|match:"attach_amort"}} - {{:assign msg="Attachement amortissement effectué"}} + {{:assign msg="Écriture d'amortissement attachée"}} {{elseif $_GET.msg|match:"attach_immo"}} - {{:assign msg="Attachement avoir effectué"}} + {{: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}} @@ -139,24 +144,26 @@

{{$msg}}

{{/if}} -{{*

- Paramètres de l'immobilisation + Immobilisation #{{$ligne_immo.immo_trans_id}} + {{$info_immo.label}}

-*}} {{if $linked_immos != null}}