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/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}} 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}} 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 0954f68..44cd729 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,21 @@ *}} {{: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 + line.id as line_id, + trans.id as 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." trans_id=$trans_id credit_line_id=$line_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,24 +95,48 @@ {{/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é"}} + {{: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}} @@ -120,31 +145,39 @@ {{/if}}

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

+{{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
-
{{"%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="id"}} - {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$id}} - #{{$id}} - {{/foreach}} - {{*:debug linked_immos=$linked_immos*}} -
-
Montant à amortir
-
{{"%f"|math:$solde|money_currency_html:false|raw}}
- {{/if}}
Date d'acquisition
{{$info_immo.date_achat|date_short}}
{{if $info_immo.date_mes != null && $info_immo.date_mes != $info_immo.date_achat}} @@ -153,7 +186,28 @@ {{/if}}
Durée d'amortissement
{{$info_immo.duration}} ans
-
Montant des amortissements
-
{{$total_amort|money_currency_html:false|raw}}
+
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 comptable
+
{{"%d-%d-%d"|math:$info_immo.amount:$total_credits:$total_amort|money_currency_html:false|raw}}
+ {{/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}} 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; +}