Informations de sortie
diff --git a/compute_exit_data.html b/compute_exit_data.html
index c824af5..f046e77 100644
--- a/compute_exit_data.html
+++ b/compute_exit_data.html
@@ -3,44 +3,34 @@
{{*
Calculer les valeurs de la sortie et saisir le montant de la cession (optionnel)
paramètres :
- @param immo_doc_id : id du doc associé à l'immo
- @param amort_amount : montant des amortissements
- @param year : exercice de la date de sortie de l'immobilisation
- @param date_debut : date de début de la période d'amortissement complémentaire
- @param exit_date : date de sortie de l'immobilisation
+ - immo_id : numéro de ligne de l'écriture d'immobilisation
+ - amort_amount : montant des amortissements
+ - year : exercice de la date de sortie de l'immobilisation
+ - date_mes : datede mise en service de l'immobilisation
+ - date_debut : date de début de la période d'amortissement complémentaire
+ - exit_date : date de sortie de l'immobilisation
+ - duree_amort : durée de l'amortiseement (optionnel)
*}}
-{{* 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}}
- {{:error message=$message}}
-{{/if}}
-
-{{: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_achat=$info_immo.date_achat|or:$ligne_immo.date_achat}}
-{{if $info_immo.date_mes != null && $info_immo.date_mes != $date_achat}}
- {{:assign date_mes=$info_immo.date_mes}}
-{{/if}}
-
-{{if $info_immo.amount != null}}
- {{:assign var="ligne_immo.amount" value=$info_immo.amount}}
-{{/if}}
-
-{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
-{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}}
-{{:assign var="ligne_immo.amount" value="%d-%d"|math:$ligne_immo.amount:$total_credits}}
-{{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$_GET.amort_amount}}
+{{#select
+ line.debit as montant,
+ trans.date as date_achat,
+ trans.label
+ FROM acc_transactions_lines AS line
+ INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
+ WHERE line.id = :line_id;
+ :line_id = $_GET.immo_id|intval
+ assign="ligne_immo"
+}}
+{{else}}
+ {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}}
+{{/select}}
+{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount}}
{{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}}
{{if $valeur_nette > 0}}
{{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}}
- {{:assign annuite="%f/%f"|math:$ligne_immo.amount:$info_immo.duration}}
+ {{:assign annuite="%f/%f"|math:$ligne_immo.montant:$_GET.duree_amort}}
{{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}}
{{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}}
{{/if}}
@@ -53,52 +43,49 @@
{{/if}}
{{/if}}
- {{:redirect to="write_exit.html?immo_doc_id=%s&amort_amount=%s&year=%s&date_debut=%s&exit_date=%s&cession=%s"|args:$_GET.immo_doc_id:$_GET.amort_amount:$_GET.year:$_GET.date_debut:$_GET.exit_date:$_POST.montant_cession}}
+ {{:redirect to="write_exit.html?immo_id=%s&amort_amount=%s&year=%s&date_mes=%s&date_debut=%s&exit_date=%s&duree_amort=%s&cession=%s"|args:$_GET.immo_id:$_GET.amort_amount:$_GET.year:$_GET.date_mes:$_GET.date_debut:$_GET.exit_date:$_GET.duree_amort:$_POST.montant_cession}}
{{/form}}
-{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortization"}}
+{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortissement"}}
{{* barre de navigation *}}
{{if ! $dialog}}
- {{if $valeur_nette > 0}}
- {{:assign type_immo="managed"}}
- {{else}}
- {{:assign type_immo="amortized"}}
- {{/if}}
- {{:include file="_nav.html" current="%s"|args:$type_immo subcurrent="balance_exit"}}
+ {{:include file="_nav.html" current="index" subcurrent="balance_exit"}}
{{/if}}
{{:form_errors}}
-Sortir l'immobilisation « {{$label_immo}} » du bilan
+Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan
-{{/if}}
-
-
-
diff --git a/confirm_action.html b/confirm_action.html
new file mode 100644
index 0000000..ee82683
--- /dev/null
+++ b/confirm_action.html
@@ -0,0 +1,50 @@
+{{* -*- brindille -*- *}}
+
+{{#form on="validate"}}
+ {{:debug get=$_GET post=$_POST}}
+{{/form}}
+
+{{:admin_header title="Confirmer"}}
+{{:assign .="infos"}}
+{{*:debug post=$_POST*}}
+{{if $_POST.actions == "amortize"}}
+ {{:assign action="Marquer l'immobilisation amortie"}}
+{{elseif $_POST.actions == "ignore"}}
+ {{:assign action="Ignorer l'écriture"}}
+{{/if}}
+{{:assign msg_titre="Appliquer l'opération « %s » sur les écritures : "|args:$action}}
+
+{{:assign msg_lines=""}}
+
+{{:admin_header title="Confirmer l'opération" custom_css="./style.css" current="module_amortissement"*}}
+
+
+
+{{:admin_footer}}
diff --git a/defaut.json b/defaut.json
index df93eec..5c00d9b 100644
--- a/defaut.json
+++ b/defaut.json
@@ -1,14 +1,8 @@
{
"tva": false,
- "prefixes": [
- "20",
- "21",
- "27"
- ],
- "unfinished": [
- {
- "code" : "23",
- "label" : "Immobilisations en cours"
- }
- ]
+ "prefixes": {
+ "20": "Immobilisations incorporelles",
+ "21": "Immobilisations corporelles",
+ "27": "Immobilisations financières"
+ }
}
diff --git a/delete_infos.html b/delete_infos.html
deleted file mode 100644
index 8af819c..0000000
--- a/delete_infos.html
+++ /dev/null
@@ -1,79 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Supprimer les infos d'une immo et les liaisons d'immo associées
- @param immo_doc_id
-*}}
-
-{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
-{{if $message != null}}
- {{:error message=$message}}
-{{/if}}
-
-{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
-{{:assign 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 AS credit_link 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}}
-
- {{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.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.trans_id
- assign="result"
- assign_code="result_code"
- transactions=$linked_transactions
- }}
-
- {{* supprimer les docs de liaison *}}
- {{:delete type="credit_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.trans_id:$immo_label
- warning="Supprimer les paramètres de l'immobilisation « #%s %s » ?"|args:$ligne_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_amort.html b/detach_amort.html
index eba97ee..b2ae4da 100644
--- a/detach_amort.html
+++ b/detach_amort.html
@@ -3,30 +3,56 @@
{{*
Supprimer l'association entre une écriture d'amortissement et
une écriture d'immobilisation
- @param immo_doc_id : id du doc associé à l'immo
- @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}}
-
-{{* 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"
- :immo_doc_id=$_GET.immo_doc_id|intval
- :amort_line_id = $_GET.amort_line_id|intval
+{{* chercher l'écriture d'immobilisation *}}
+{{#select
+ id_transaction
+ FROM acc_transactions_lines
+ WHERE id = :line_id;
+ :line_id = $_GET.immo_id|intval
}}
- {{:delete id=$id}}
-{{/load}}
-
-{{* marquer immo non soldée *}}
-{{* TODO : À VÉRIFIER *}}
-{{:save
- key=$info_immo.key
- status="managed"
-}}
-
-{{if $_GET.from == "exit"}}
- {{:redirect force="exit_step2.html?immo_doc_id=%s&ok=1&msg=detach_amort"|args:$_GET.immo_doc_id}}
+ {{:assign immo_trans_id=$id_transaction}}
{{else}}
- {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=detach_amort"|args:$_GET.immo_doc_id:}}
-{{/if}}
+ {{:error message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_id}}
+{{/select}}
+
+{{* chercher l'écriture d'amortissement *}}
+{{#select
+ id_transaction
+ FROM acc_transactions_lines
+ WHERE id = :line_id;
+ :line_id = $_GET.amort_id|intval
+}}
+ {{:assign amort_id=$id_transaction}}
+{{else}}
+ {{:error message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_id}}
+{{/select}}
+
+{{*
+ chercher les liaisons de l'écriture d'immobilisation
+ et supprimer la liaison avec l'écriture d'amortissement
+*}}
+{{#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 != $amort_id}}
+ {{:assign var="linked_transactions." value=$linked_id}}
+ {{/if}}
+{{/select}}
+
+{{* Enregistrer les liaisons *}}
+{{:api
+ method="POST"
+ path="accounting/transaction/%s/transactions"|args:$immo_trans_id
+ assign="result"
+ assign_code="result_code"
+ transactions=$linked_transactions
+}}
+{{:redirect to="amortization.html?immo_id=%s&ok=1&msg=detach&trans_id=%s"|args:$_GET.immo_id:$amort_id}}
diff --git a/detach_cession.html b/detach_cession.html
deleted file mode 100644
index eab7863..0000000
--- a/detach_cession.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{{* -*- 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
deleted file mode 100644
index 9665e85..0000000
--- a/detach_credit.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Supprimer l'association entre une écriture d'immobilisation et
- une écriture au crédit du compte d'immobilisation
- @param immo_doc_id : id du doc associé à l'immo
- @param credit_line_id : id de la ligne de crédit
-*}}
-
-{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.credit_line_id}}
-
-{{* 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}}
-
-{{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}}
-{{/if}}
diff --git a/detach_exit.html b/detach_exit.html
deleted file mode 100644
index 1a71701..0000000
--- a/detach_exit.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Supprimer l'association entre une écriture d'immobilisation et
- une écriture de sortie de bilan
- @param immo_doc_id : id du doc associé à l'immo
- @param exit_line_id : id de la ligne de sortie de bilan
-*}}
-
-{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.exit_line_id}}
-
-{{* supprimer le doc de liaison entre les lignes *}}
-{{#load type="exit_link"
- where="$$.immo_doc_id = :immo_doc_id AND $$.exit_line_id = :exit_line_id"
- :immo_doc_id=$_GET.immo_doc_id|intval
- :exit_line_id = $_GET.exit_line_id|intval
-}}
- {{:delete id=$id}}
-{{/load}}
-
-{{:redirect to="exit_step4.html?immo_doc_id=%s&ok=1&msg=detach_exit"|args:$_GET.immo_doc_id}}
diff --git a/exit_step1.html b/exit_step1.html
deleted file mode 100644
index 0fc2fb1..0000000
--- a/exit_step1.html
+++ /dev/null
@@ -1,239 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- 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
-*}}
-
-{{* données de l'immobilisation *}}
-{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}}
-{{if $message != null}}
- {{:error message=$message}}
-{{/if}}
-
-{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
-{{if $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 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="credit_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.ok}}
- {{if $_GET.msg|match:"attach_avoir"}}
- {{:assign msg="Écriture d'avoir attachée"}}
- {{elseif $_GET.msg|match:"detach_avoir"}}
- {{:assign msg="Écriture d'avoir détachée"}}
- {{/if}}
- {{$msg}}
-{{/if}}
-
-
-
-{{if $linked_immos != null}}
- Écritures d'avoir attachées à l'immobilisation
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
- {{#foreach from=$linked_immos item="line"}}
- {{:assign 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}}
-
- #{{$line.trans_id}}
- {{$line.date|date_short}}
- {{$line.label}}
- {{"%f"|math:$line.amount|money_currency_html:false|raw}}
- {{$line.account_code}}
- {{$line.account_label}}
-
- {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}}
-
-
- {{/foreach}}
-
-
-{{elseif $credit_lines}}
-
- Vous pouvez attacher une ou plusieurs écritures d'avoir à votre immobilisation
-
-{{else}}
-
- Aucune écriture au crédit du compte d'immobilisation ; vous pouvez passer à la suite
-
-{{/if}}
-
-{{if $credit_lines}}
- Autres écritures au crédit du compte d'immobilisation
-
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
-
- {{#foreach from=$credit_lines}}
- {{:assign credit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}}
- {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$year}}
-
- #{{$trans_id}}
- {{$date|date_short}}
- {{$trans_label}}
- {{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}}
-
- {{$amount|money_html|raw}}
- {{$account_code}}
- {{$account_label}}
-
- {{:linkbutton label="Attacher" href="attach_credit.html?immo_doc_id=%s&credit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$credit_line_id shape="plus" target="_dialog"}}
-
-
- {{/foreach}}
-
-
-{{/if}}
-
-
diff --git a/exit_step2.html b/exit_step2.html
deleted file mode 100644
index 8199426..0000000
--- a/exit_step2.html
+++ /dev/null
@@ -1,233 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- 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
-*}}
-
-{{* 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_step1.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
-{{/form}}
-
-{{#form on="forward"}}
- {{:redirect to="exit_step3.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
-{{/form}}
-
-{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}}
-{{if $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"}}
-
-{{* 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.ok}}
- {{if $_GET.msg|match:"attach_amort"}}
- {{:assign msg="Écriture d'amortissement attachée"}}
- {{elseif $_GET.msg|match:"detach_amort"}}
- {{:assign msg="Écriture d'amortissement détachée"}}
- {{/if}}
- {{$msg}}
-{{/if}}
-
-
-
-{{if $linked_amort != null}}
- Écritures d'amortissement attachées à l'immobilisation
-
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
-
- {{#foreach from=$linked_amort|ksort 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}}
-
- #{{$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_amort.html?immo_doc_id=%s&amort_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}}
-
-
- {{/foreach}}
-
-
-{{elseif $free_amort_lines}}
-
- Vous pouvez attacher une ou plusieurs écritures d'amortissement à l'immobilisation
-
-{{else}}
-
- Aucune écriture d'amortissement à rattacher ; vous pouvez passer à la suite
-
-{{/if}}
-
-
-{{if $free_amort_lines}}
- Autres écritures d'amortissements
-
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
-
-
- {{#foreach from=$free_amort_lines item="line"}}
- {{:assign amort_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}}
- {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}}
-
- #{{$line.amort_trans_id}}
- {{$line.date|date_short}}
-
- {{if $line.line_label != null}}
- {{$line.line_label}}
- {{if $line.trans_label != $line.line_label}}
- — {{$line.trans_label}}
- {{/if}}
- {{else}}
- {{$line.trans_label}}
- {{/if}}
-{{*
- {{$line.trans_label}}
- {{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}}
-*}}
-
- {{"%f"|math:$line.amort_amount|money_html:false|raw}}
- {{$line.account_code}}
- {{$line.account_label}}
-
- {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$line.amort_line_id shape="plus" target="_dialog"}}
-
-
- {{/foreach}}
-
-
-{{/if}}
-
-
diff --git a/exit_step3.html b/exit_step3.html
deleted file mode 100644
index 5d8ff0d..0000000
--- a/exit_step3.html
+++ /dev/null
@@ -1,221 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}}
-{{*
- 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
-*}}
-
-{{* 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_step2.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
-{{/form}}
-
-{{#form on="forward"}}
- {{:redirect to="exit_step4.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
-{{/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 des écritures de cession *}}
-{{:assign total_cession=0}}
-{{#select
- line.id as line_id,
- line.credit as amount,
- line.label as line_label,
- trans.id as trans_id,
- trans.date as date,
- trans.label as trans_label,
- trans.id_year as year,
- account.id as account_id,
- account.code as account_code,
- account.label as account_label
- FROM acc_transactions_lines AS line
- INNER JOIN acc_accounts AS account ON line.id_account = account.id
- INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
- WHERE account.code LIKE :code_cession_new OR account.code LIKE :code_cession_old
- ;
- :code_cession_new = "757%"
- :code_cession_old = "775%"
- assign="line"
-}}
- {{* voir si l'écriture de cession est déjà liée à une immo *}}
- {{#select
- CASE WHEN links.id_related = :trans_id
- THEN links.id_transaction
- ELSE links.id_related
- END as linked_id
- FROM acc_transactions_links as links
- WHERE links.id_transaction = :trans_id OR links.id_related = :trans_id
- ;
- :trans_id = $line.trans_id
- }}
- {{if $linked_id == $ligne_immo.trans_id}}
- {{:assign total_cession="%d+%d"|math:$total_cession:$line.amount}}
- {{:assign var="line.linked_id" value=$linked_id}}
- {{:assign var="linked_cessions." value=$line}}
- {{/if}}
- {{else}}
- {{:assign var="free_cessions." value=$line}}
- {{/select}}
-{{/select}}
-{{*:debug linked_cessions=$linked_cessions free_cessions=$free_cessions total_cession=$total_cession*}}
-
-{{if $_GET.ok}}
- {{if $_GET.msg|match:"attach_cession"}}
- {{:assign msg="Écriture de cession attachée"}}
- {{elseif $_GET.msg|match:"detach_cession"}}
- {{:assign msg="Écriture de cession détachée"}}
- {{/if}}
- {{$msg}}
-{{/if}}
-
-
-
-{{if $linked_cessions != null}}
- Écriture de cession attachée à l'immobilisation
-
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
-
- {{#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}}
-
- #{{$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"}}
-
-
- {{/foreach}}
-
-
-{{elseif $free_cessions}}
-
- Vous pouvez attacher une écriture de cession à l'immobilisation
-
-{{else}}
-
- Aucune écriture de cession... que faire ?
-
-{{/if}}
-
-
-{{if $free_cessions}}
- Autres écritures de cession
-
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
-
-
- {{#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}}
-
- #{{$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"}}
-
-
- {{/foreach}}
-
-
-{{/if}}
-
-
diff --git a/exit_step4.html b/exit_step4.html
deleted file mode 100644
index ccb6d7f..0000000
--- a/exit_step4.html
+++ /dev/null
@@ -1,288 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Associer les différentes écritures à une immo créée et sortie du
- bilan avant la mise en service du module
- @param immo_doc_id : id du doc associé à l'immobilisation
-*}}
-
-{{* données de l'immobilisation *}}
-{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}}
-{{if $message != null}}
- {{:error message=$message}}
-{{/if}}
-
-{{#form on="backward"}}
- {{:redirect to="exit_step3.html?immo_doc_id=%s"|args:$_GET.immo_doc_id}}
-{{/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 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.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}}
-
-
-
-{{if $exit_line != null}}
- Écriture de sortie du bilan attachée à l'immobilisation
-
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
-
-
- #{{$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
-
-
-
- N°
- Date
- Libellé
- Montant
- N° compte
- Compte
-
-
-
-
-
- {{#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}}
-
- #{{$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"}}
-
-
- {{/foreach}}
-
-
-{{elseif $exit_line == null}}
- Aucune écriture de sortie du bilan. Vérifiez l'attachement d'écriture d'avoir.
-{{/if}}
-
-
diff --git a/filters.html b/filters.html
deleted file mode 100644
index 7590c9e..0000000
--- a/filters.html
+++ /dev/null
@@ -1,94 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{:admin_header title="Configuration" custom_css="./style.css" current="module_amortization"}}
-{{:include file="_nav.html" current="config" subcurrent="filters"}}
-
-{{if $_GET.ok == 1}}
- Configuration enregistrée.
-{{/if}}
-
-{{* lecture config *}}
-{{:include file="./_get_config.html" keep="module.config"}}
-
-{{#form on="save"}}
- {{* enregistrer les filtres dans la config *}}
- {{#foreach from=$_POST.filters item="filter"}}
- {{if $filter != ""}}
- {{:assign var="filters." value=$filter}}
- {{/if}}
- {{/foreach}}
- {{:save key="config" filters=$filters}}
- {{:redirect to="./filters.html"}}
-{{/form}}
-
-
-
-
-
diff --git a/ignore.html b/ignore.html
deleted file mode 100644
index 4c1b760..0000000
--- a/ignore.html
+++ /dev/null
@@ -1,85 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Marquer la ligne d'écriture « à ignorer »
- @param immo_line_id : numéro de ligne
-*}}
-
-{{#select
- trans.id AS trans_id,
- trans.date AS date,
- trans.label AS label,
- line.debit AS amount
- FROM acc_transactions_lines AS line
- INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
- WHERE line.id = :line_id
- ;
- :line_id = $_GET.immo_line_id
- assign=ligne_immo
-}}
-{{else}}
- {{:error message="Il n'y a aucune écriture avec le numéro de ligne %s !"|args:$_GET.immo_line_id}}
-{{/select}}
-{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}}{{/load}}
-
-{{* Traiter l'envoi du formulaire *}}
-{{#form on="proceed"}}
- {{if $_POST.ignore != null && $info_immo == null}}
- {{* ignorer l'écriture *}}
- {{:assign duration=0}}
- {{:assign status="ignored"}}
- {{:save
- key=""|uuid
- validate_schema="asset.schema.json"
- type="immo"
- line=$_GET.immo_line_id|intval
- duration=$duration
- date=$ligne_immo.date
- status=$status
- }}
- {{:redirect force="index.html?ok=1&msg=infos&type_immo=unfinished"}}
- {{elseif $_POST.ignore == null && $info_immo != null}}
- {{* dés-ignorer l'écriture *}}
- {{:delete id=$info_immo.id}}
- {{:redirect force="index.html?ok=1&msg=infos&type_immo=unfinished"}}
- {{else}}
- {{:redirect force="index.html?type_immo=unfinished"}}
- {{/if}}
-{{else}}
- {{:form_errors}}
-{{/form}}
-
-{{:admin_header title="Ignorer l'écriture" custom_css="./style.css" current="module_amortization"}}
-
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include file="_nav.html" current="index"}}
-{{/if}}
-
-
-
-{{:admin_footer}}
diff --git a/index.html b/index.html
index f2fab2e..ac5c003 100644
--- a/index.html
+++ b/index.html
@@ -1,31 +1,18 @@
{{* -*- brindille -*- *}}
+{{:admin_header title="Immobilisations et amortissements" custom_css="./style.css" current="module_amortization"}}
{{* barre de navigation *}}
{{if $_GET.type_immo == null}}
- {{:assign type_immo="managed"}}
+ {{:assign type_immo="encours"}}
{{else}}
{{:assign type_immo=$_GET.type_immo}}
{{/if}}
- {{if $type_immo == "managed"}}
- {{:admin_header title="Immobilisations en cours d'amortissement" custom_css="./style.css" current="module_amortization"}}
- {{elseif $type_immo == "amortized"}}
- {{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}}
- {{elseif $type_immo == "archived"}}
- {{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}}
- {{elseif $type_immo == "other"}}
- {{:admin_header title="Immobilisations à classer" custom_css="./style.css" current="module_amortization"}}
- {{elseif $type_immo == "unfinished"}}
- {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization" subcurrent="unfinished"}}
- {{/if}}
-
-{{:include file="_nav.html" current=$type_immo}}
+{{:include file="_nav.html" current="index" subcurrent="%s"|args:$type_immo}}
{{if $_GET.ok}}
{{if $_GET.msg|match:"immobilisation"}}
{{:assign msg="Immobilisation enregistrée"}}
- {{elseif $_GET.msg|match:"suppr_infos"}}
- {{:assign msg="Informations supprimées"}}
{{elseif $_GET.msg|match:"infos"}}
{{:assign msg="Informations enregistrées"}}
{{/if}}
@@ -34,16 +21,24 @@
Échec enregistrement immobilisation
{{/if}}
-{{* supprimer les documents sans écriture associée *}}
-{{:include file="_remove_orphan_docs.tpl"}}
+{{#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}}
-{{if $type_immo == "other"}}
+{{if $type_immo == "autre"}}
{{:include file="_immobilisations_autres.html"}}
-{{elseif $type_immo == "archived"}}
+{{elseif $type_immo == "sortie"}}
{{:include file="_archives.html"}}
-{{elseif $type_immo == "unfinished"}}
- {{:include file="_unfinished.html"}}
-{{elseif $type_immo == "managed" || $type_immo == "amortized"}}
+{{elseif $type_immo == "encours" || $type_immo == "amortie"}}
{{:include file="_immobilisations.html"}}
{{/if}}
diff --git a/link.schema.json b/link.schema.json
deleted file mode 100644
index 0160ff2..0000000
--- a/link.schema.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "$schema": "https://json-schema.org/draft/2020-12/schema",
- "description": "Schéma des liens entre écritures",
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": ["amort_link", "credit_link", "cession_link", "exit_link"]
- },
- "immo_doc_id" : {
- "description": "identifiant du document d'immobilisation associé",
- "type" : "integer",
- "exclusiveMinimum": 0
- },
- "amort_line_id" : {
- "description": "ligne d'amortissement associée à l'immobilisation",
- "type": "integer",
- "exclusiveMinimum": 0
- },
- "credit_line_id": {
- "description": "ligne au crédit du compte de l'immobilisation",
- "type": "integer",
- "exclusiveMinimum": 0
- },
- "exit_line_id": {
- "description": "ligne de sortie du bilan de l'immobilisation",
- "type": "integer",
- "exclusiveMinimum": 0
- },
- "cession_line_id": {
- "description": "ligne de cession de l'immobilisation",
- "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"],
- "if": {"properties": {"type": {"const": "amort_link"}}, "required": ["type"]},
- "then": {"required": ["amort_line_id"]},
- "else":
- "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
deleted file mode 100644
index ddee4dd..0000000
--- a/link_immo.html
+++ /dev/null
@@ -1,117 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Lister les écritures au crédit du compte de l'immobilisation
- paramètre et proposer de les attacher à l'immo paramètre
- @param immo_doc_id : document associé à l'immo
- *}}
-
-{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
-{{if $message != null}}
- {{:error message=$message}}
-{{/if}}
-{{:assign 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
-*}}
-{{#select
- line.id as credit_line_id,
- line.id_transaction as credit_trans_id,
- line.credit as credit_amount,
- line.label as line_label,
- trans.id as immo_trans_id,
- trans.date as trans_date,
- trans.label as trans_label,
- trans.id_year as credit_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_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
- 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")
- ORDER BY trans.date, trans.label;
- :account_code = $ligne_immo.account_code
- !table =$module.table
- assign="other_immos."
- }}
-{{/select}}
-
-{{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}}
-
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include
- file="_nav.html"
- current="managed"
- subcurrent="link_immo"
- type_immo="other"
-}}
-{{/if}}
-
-
-
-
- Écritures au crédit du compte d'immobilisation « {{$ligne_immo.account_code}} »
-
-
-
-
-
- {{if $other_immos != null}}
-
-
-
- N°
- Date
- Montant
- Libellé
- N° compte
- Compte
-
-
-
-
- {{#foreach from=$other_immos item="line"}}
- {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.credit_trans_id}}
- {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.credit_year}}
-
- #{{$line.credit_trans_id}}
- {{$line.trans_date|date_short}}
- {{"%f"|math:$line.credit_amount|money_html:false|raw}}
- {{$line.trans_label}}
- {{if $line.line_label != null && $line.line_label != $line.trans_label}} - {{$line.line_label}}{{/if}}
-
- {{$line.account_code}}
- {{$line.account_label}}
-
- {{:linkbutton label="Attacher" href="attach_credit.html?credit_line_id=%d&immo_doc_id=%s"|args:$line.credit_line_id:$_GET.immo_doc_id shape="plus"}}
-
-
- {{/foreach}}
-
-
- 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}}
-
-{{:form_errors}}
-{{:admin_footer}}
diff --git a/modify_infos.html b/modify_infos.html
deleted file mode 100644
index 7694e83..0000000
--- a/modify_infos.html
+++ /dev/null
@@ -1,206 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- @param immo_doc_id
-*}}
-
-{{: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 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}}
-
-{{* 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}}
-
-{{:assign autres_amount=0}}
-{{#load
- type="immo"
- where="$$.line = :line_id AND id != :doc_id"
- :line_id = $info_immo.line
- :doc_id = $info_immo.id
- }}
- {{:assign autres_amount="%d+%d"|math:$autres_amount:$amount}}
-{{/load}}
-{{:assign max_disponible="%d-%d"|math:$ligne_immo.amount:$autres_amount}}
-
-{{* traiter la saisie *}}
-{{#form on="save"}}
- {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}}
- {{:assign da=$ligne_immo.date_achat|date_short}}
- {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}}
- {{/if}}
-
- {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $info_immo.date_achat}}
- {{:assign date_achat=$info_immo.date_achat}}
- {{elseif $_POST.date_achat|parse_date == $ligne_immo.date_achat}}
- {{:assign date_achat=null}}
- {{else}}
- {{:assign date_achat=$_POST.date_achat|parse_date}}
- {{/if}}
-
- {{* TODO : simplifier ? *}}
- {{if $_POST.date_mes == null || $_POST.date_mes|parse_date == $info_immo.date_mes}}
- {{:assign date_mes=$info_immo.date_mes}}
- {{elseif $_POST.date_mes|parse_date == $info_immo.date_achat}}
- {{:assign date_mes=null}}
- {{elseif $_POST.date_mes|parse_date == $ligne_immo.date_achat}}
- {{if $info_immo.date_achat == null}}
- {{:assign date_mes=null}}
- {{else}}
- {{:assign date_mes=$ligne_immo.date_achat}}
- {{/if}}
- {{else}}
- {{:assign date_mes=$_POST.date_mes|parse_date}}
- {{:assign date_achat_comp=$ligne_immo.date_achat}}
- {{if $date_achat != null}}
- {{:assign date_achat_comp=$date_achat}}
- {{/if}}
- {{if $date_mes < $date_achat_comp}}
- {{:assign da=$date_achat_comp|date_short}}
- {{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$_POST.date_mes:$da}}
- {{/if}}
- {{/if}}
-
- {{:assign duration=$_POST.duree|intval}}
- {{if $duration <= 0}}
- {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}}
- {{/if}}
-
- {{if $_POST.libelle != $ligne_immo.line_label && $_POST.libelle != $ligne_immo.trans_label}}
- {{:assign libelle=$_POST.libelle}}
- {{else}}
- {{: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"}}
-
- {{* écritures de crédit *}}
- {{#foreach from=$linked_immos item="line"}}
- {{if ! $_POST.credit_id|has:$line.trans_id}}
- {{:assign var="docs_to_remove." value=$line.doc}}
- {{:assign var="links_to_remove." value=$line.trans_id}}
- {{/if}}
- {{/foreach}}
-
- {{if $docs_to_remove != null}}
- {{:assign remove_set=$docs_to_remove|implode:","}}
- {{:assign remove_set="("|cat:$remove_set|cat:")"}}
- {{:delete where="id IN %s"|args:$remove_set}}
-
- {{* idem avec acc_transactions_links *}}
- {{#select
- CASE links.id_related = :immo_trans_id
- WHEN true THEN links.id_transaction
- WHEN false THEN links.id_related
- END as linked_id
- FROM acc_transactions_links as links
- WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
- :immo_trans_id = $ligne_immo.trans_id
- }}
- {{if ! $linked_id|in:$links_to_remove}}
- {{:assign var="linked_transactions." value=$linked_id}}
- {{/if}}
- {{/select}}
-
- {{* Enregistrer les liaisons *}}
- {{:api
- method="POST"
- path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
- assign="result"
- assign_code="result_code"
- transactions=$linked_transactions
- }}
- {{/if}}
-
- {{* enregistrer les infos de l'immobilisation *}}
- {{:save
- key=$info_immo.key
- validate_schema="asset.schema.json"
- type="immo"
- line=$info_immo.line
- duration=$duration
- label=$libelle
- amount=$montant
- date_achat=$date_achat
- date_mes=$date_mes
- status=$status
- assign_new_id="new_id"
- }}
-
- {{:assign type_immo="managed"}}
- {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=modif"|args:$_GET.immo_doc_id:$type_immo}}
-
-{{/form}}
-
-{{:admin_header title="Modifier l'immobilisation" custom_css="./style.css" current="module_amortization"}}
-{{if ! $dialog}}
- {{:include file="_nav.html" current="managed" subcurrent="modify_infos"}}
-{{/if}}
-{{:form_errors}}
-
-{{:assign choix_defaut=$_GET.type_immo}}
-
-{{*
- modifier la date de mise en service, les écritures associées ou la durée d'amortissement
-*}}
-
-{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}}
-Paramètres de l'immobilisation
-
-
-
-
-{{:admin_footer}}
diff --git a/module.ini b/module.ini
index f3f13f1..a583efe 100644
--- a/module.ini
+++ b/module.ini
@@ -1,5 +1,5 @@
name="Amortissements"
-description="Immobilisations et amortissements\nversion 0.32"
+description="Gestion des amortissements pour le logiciel de comptabilité Paheko"
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 8716a25..6e32724 100644
--- a/other_amortizations.html
+++ b/other_amortizations.html
@@ -3,127 +3,110 @@
{{*
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}}
+ @param immo_id = id de la ligne d'immo
+ *}}
-{{: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}}
-
-{{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"
+{{* récupérer les infos de l'immobilisation *}}
+{{#select
+ line.id as immo_id,
+ line.debit as montant,
+ trans.id as trans_id,
+ trans.label as label,
+ trans.date
+ FROM acc_transactions_lines AS line
+ INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
+ WHERE line.id = :line_id;
+ :line_id = $_GET.immo_id|intval
+ assign=ligne_immo
}}
- {{:assign filter_condition="account.code = "|cat:$code_amort}}
{{else}}
- {{:assign account_filter="28%"|quote_sql}}
- {{:assign filter_condition="account.code LIKE "|cat:$account_filter}}
-{{/if}}
+ {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}}
+{{/select}}
-{{* lister les amortissements non rattachés à une immo *}}
-{{:include file="./_get_free_amort.html" filter_condition=$filter_condition keep="free_amort_lines"}}
+{{#select
+ line.id as l_id,
+ line.id_transaction as t_id,
+ line.credit as amort_amount,
+ line.label as l_label,
+ trans.date as t_date,
+ trans.label as t_label,
+ trans.id_year as amort_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 account.id = line.id_account
+ INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction
+ INNER JOIN acc_years AS y ON y.id = trans.id_year
+ WHERE account.code LIKE "28%" AND credit > 0 AND (NOT trans.status & 16)
+ ORDER BY trans.date, trans.label;
+ assign=autre_amort
+}}
+ {{#select
+ id_transaction,
+ id_related
+ FROM acc_transactions_links
+ WHERE id_transaction = :id_amort OR id_related = :id_amort;
+ :id_amort=$t_id
+ }}
+ {{else}}
+ {{:assign var="autres_amortissements." value=$autre_amort}}
+ {{/select}}
+{{/select}}
-{{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortization"}}
+{{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortissement"}}
{{* barre de navigation *}}
{{if ! $dialog}}
{{:include
file="_nav.html"
- current="managed"
- subcurrent="amortization"
- type_immo="managed"
- autres_amort=$free_amort_lines
+ current="index"
+ subcurrent="autre"
+ subsubcurrent="amortization"
+ type_immo="autre"
+ autres_amort=$autres_amortissements
}}
{{/if}}
-
-
-
-
-{{if $free_amort_lines != null}}
+{{if $autres_amortissements != null}}
- Immobilisation « {{$label_immo}} »
+ Immobilisation « {{$ligne_immo.label}} »
N°
Date
- Libellé
Montant
+ Libellé
N° compte
Compte
- {{#foreach from=$free_amort_lines item="line"}}
-{{*
- {{if $_GET.filter && $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}}
+ {{#foreach from=$autres_amortissements item="line"}}
+ {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.t_id}}
+ {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}}
- #{{$line.trans_id}}
- {{$line.trans_date|date_short}}
-
- {{if $line.line_label != null}}
- {{$line.line_label}}
- {{if $line.trans_label != $line.line_label}}
- — {{$line.trans_label}}
- {{/if}}
- {{else}}
- {{$line.trans_label}}
- {{/if}}
+ #{{$line.t_id}}
+ {{$line.t_date|date_short}}
+ {{"%f"|math:$line.amort_amount|money}}
+ {{if $line.l_label == null}}
+ {{$line.t_label}}
+ {{else}}
+ {{$line.l_label}}
+ {{/if}}
- {{"%f"|math:$line.amount|money_html:false|raw}}
- {{$line.account_code}}
+ {{$line.account_code}}
{{$line.account_label}}
- {{:linkbutton label="Attacher" href="attach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="plus"}}
+ {{:linkbutton label="Attacher" href="attach_amort.html?amort_id=%d&immo_id=%d"|args:$line.l_id:$_GET.immo_id shape="plus"}}
{{/foreach}}
-{{else}}
- Aucun amortissement pour le compte {{$code_amort}}
{{/if}}
-
-
{{:form_errors}}
{{:admin_footer}}
-
-
diff --git a/save_amort.html b/save_amort.html
index 224d52e..1c9df59 100644
--- a/save_amort.html
+++ b/save_amort.html
@@ -2,46 +2,75 @@
{{*
Créer une écriture d'amortissement
- @param immo_doc_id : id du doc associé à l'immo
+ @param immo_id : id de la ligne d'immobilisation
*}}
-{{* 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}}
+{{* Infos de l'immobilisation *}}
+{{#select
+ line.id as immo_id,
+ line.id_account as account_id,
+ line.debit as montant,
+ line.id_project as project_id,
+ trans.id as trans_id,
+ trans.label,
+ trans.date,
+ y.id as year_id,
+ y.start_date,
+ y.end_date,
+ project.label as project_label
+ FROM acc_transactions_lines AS line
+ INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
+ INNER JOIN acc_years AS y ON trans.id_year = y.id
+ LEFT JOIN acc_projects AS project ON line.id_project = project.id
+ WHERE line.id = :line_id;
+ :line_id = $_GET.immo_id|intval
+ assign=ligne_immo
+ }}
+{{else}}
+ {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}}
+{{/select}}
+{{:assign date_debut=$ligne_immo.date}}
-{{if $info_immo.amount != null}}
- {{:assign var="ligne_immo.amount" value=$info_immo.amount}}
-{{/if}}
-{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}}
-{{:assign amort_label=$info_immo.label|or:$ligne_immo.trans_label}}
+{{#load type="immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}}
+ {{:assign duree=$duration}}
+ {{:assign date_debut=$date}}
+{{else}}
+ {{:error message="Vous devez renseigner la date de mise en service et la durée d'immobilisation"}}
+{{/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}}
-{{:assign var="amort_label" value="Amortissement %s"|args:$amort_label}}
+{{* chercher des écritures d'amortissement liées à l'immobilisation *}}
+{{#select
+ SUM(l_amort.credit) as amort_amount,
+ l_amort.label as amort_label,
+ l_amort.id as amort_line_id,
+ CASE WHEN links.id_related = t_immo.id
+ THEN links.id_transaction
+ ELSE links.id_related
+ END as amort_trans_id,
+ MAX(trans.date) as amort_date,
+ COUNT(trans.id) as amort_number,
+ trans.label as trans_label,
+ trans.id_year as amort_year,
+ account.id as account_id,
+ account.code as account_code,
+ account.label as account_label
+ FROM acc_transactions_lines as l_immo
+ INNER JOIN acc_transactions as t_immo on t_immo.id = l_immo.id_transaction
+ INNER JOIN acc_transactions_links as links
+ ON (t_immo.id = links.id_transaction
+ OR
+ t_immo.id = links.id_related)
+ INNER JOIN acc_transactions_lines as l_amort on amort_trans_id = l_amort.id_transaction
+ INNER join acc_transactions as trans on l_amort.id_transaction = trans.id
+ INNER join acc_accounts as account on l_amort.id_account = account.id
+ WHERE l_immo.id = :line_id AND account.code LIKE '28%'
+ ORDER BY trans.date DESC LIMIT 1;
+ :line_id = $_GET.immo_id|intval
+ assign=amort_line
+}}
+{{/select}}
-{{* 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}}
-
-{{* 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"}}
-
-{{:assign valeur_residuelle="%d-%d"|math:$ligne_immo.amount:$total_amort}}
-{{if $valeur_residuelle == 0}}
- {{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}}
-{{/if}}
-
-{{#foreach from=$linked_amort|ksort item="line"}}
- {{:assign date_debut=$line.date}}
- {{:assign code_amort=$line.account_code}}
- {{:assign amort_account_label=$line.account_label}}
- {{:assign amort_label=$line_label|or:$trans_label}}
-{{/foreach}}
-
-{{if $total_amort == 0}}
+{{if $amort_line.amort_number == 0}}
{{* 1er amortissement *}}
{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}}
{{#select code, label from acc_accounts where id = :id; :id=$ligne_immo.account_id assign=amort_account}}
@@ -51,12 +80,15 @@
code_immo=$amort_account.code
keep="code_amort"
}}
- {{:assign var="amort_account_label" value="Amortissement %s"|args:$amort_account.label}}
- {{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.trans_label}}
+ {{:assign var=amort_label value="Amortissement %s"|args:$amort_account.label}}
+ {{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.label}}
{{else}}
{{* amortissements suivants *}}
- {{:assign date_debut=$date_debut|strtotime}}
+ {{:assign date_debut=$amort_line.amort_date|strtotime}}
{{:assign date_debut="%d+(60*60*24)"|math:$date_debut|date:"Y-m-d"}}
+ {{:assign var=code_amort value=$amort_line.account_code}}
+ {{:assign var=amort_label value=$amort_line.account_label}}
+ {{:assign var=libelle value=$amort_line.amort_label}}
{{/if}}
{{*
@@ -65,8 +97,8 @@
*}}
{{:assign msg_years=""}}
{{#years closed=false order="start_date" where="start_date <= :debut AND :debut <= end_date"
- :debut=$date_debut assign="years."}}
- {{if $total_amort == 0}}
+ :debut=$date_debut assign=years.}}
+ {{if $amort_line.amort_number == 0}}
{{:assign ts_debut=$date_debut|strtotime}}
{{else}}
{{:assign ts_debut=$start_date|strtotime}}
@@ -78,9 +110,7 @@
{{:assign var="years_data.%d"|args:$id value=$ts_debut|cat:" "|cat:$ts_fin}}
{{:assign msg_years=$msg_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "|cat:$debut|cat:" à "|cat:$fin}}
{{else}}
- {{:assign date_debut=$date_debut|date_short}}
- {{:assign msg="Pas d'exercice ouvert pour enregistrer un amortissement à partir du %s"|args:$date_debut}}
- {{:error message=$msg}}
+ {{:error message="Aucun exercice ouvert pour enregistrer un amortissement"}}
{{/years}}
{{* Traiter l'envoi du formulaire *}}
@@ -117,8 +147,10 @@
- que le compte d'amortissement débute par un préfixe correct (280, 281, ...)
- est présent dans le PC de l'exercice correspondant à la date
*}}
- {{:include file="_get_config.html" keep="module.config.prefixes"}}
- {{#foreach from=$module.config.prefixes item="code"}}
+ {{:read file="./defaut.json" assign="config_json"}}
+ {{:assign config_defaut=$config_json|json_decode}}
+ {{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
+ {{#foreach from=$prefix_array item="code"}}
{{* déterminer le numéro du compte d'amortissement associé au compte d'immobilisation *}}
{{:include
file="./_get_amort_code.html"
@@ -137,31 +169,31 @@
}}
{{if $account_ok == null}}
{{:assign compte=$credit_account|implode:""}}
- {{:redirect url="add_account.html?account=%s&chart=%s"|args:$compte:$selected_chart}}
+ {{:redirect url="add_account.html?account=%s&chart=%s&immo_id=%s"|args:$compte:$selected_chart:$_GET.immo_id}}
{{/if}}
{{* vérifier que le montant ne dépasse pas le solde restant *}}
- {{:assign solde="%d-%d"|math:$ligne_immo.amount:$total_amort}}
+ {{:assign solde="%d-%d"|math:$ligne_immo.montant:$amort_line.amort_amount}}
{{if $_POST.montant|trim|money_int > $solde|intval}}
- {{:assign montant=$_POST.montant|trim|money_int|money_raw}}
{{:assign solde=$solde|money_raw}}
- {{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$montant:$solde}}
+ {{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$_POST.montant:$solde}}
{{/if}}
{{* enregistrer l'écriture *}}
{{:assign
var="lines."
debit=$_POST.montant
- account=$debit_account|keys|value:0
- id_project=$ligne_immo.id_project
+ account=$debit_account|keys|key:0
+ id_project=$_GET.project_id
+ label=$_POST.designation
}}
{{:assign
var="lines."
credit=$_POST.montant
- account=$credit_account|keys|value:0
- id_project=$ligne_immo.id_project
+ account=$credit_account|keys|key:0
+ id_project=$_GET.project_id
+ label=$_POST.designation
}}
-
{{:api
method="POST"
path="accounting/transaction"
@@ -175,66 +207,27 @@
linked_transactions=$ligne_immo.trans_id|intval
}}
- {{* enregistrer la liaison des lignes *}}
- {{#foreach from=$result.lines item="line"}}
- {{if $line.account_code == $credit_account|keys|value:0}}
- {{* TODO VOIR SI CORRECT ET UTILE *}}
- {{*
- vérifier la présence d'un doc avec cette ligne d'amortissement
- (cas de la suppression manuelle d'un amortissement)
- *}}
-
- {{#load type="amort_link" where="$$.amort_line_id = :amort_line_id" :amort_line_id=$line.id debug=true assign="info_amort"}}
- {{:debug info_amort=$info_amort}}
- {{:assign uuid=$key}}
- {{:break}}
- {{else}}
- {{:assign uuid=""|uuid}}
- {{/load}}
-{{:debug uuid=$uuid}}
- {{:save
- key=""|uuid
- type="amort_link"
- immo_doc_id=$_GET.immo_doc_id|intval
- amort_line_id=$line.id
- created=true
- }}
- {{:break}}
- {{/if}}
- {{/foreach}}
-
- {{* immo soldée ? *}}
- {{if $_POST.montant|trim|money_int == $solde}}
- {{:assign var="info_immo.status" value="amortized"}}
- {{:save
- key=$info_immo.key
- status=$info_immo.status
- }}
- {{/if}}
-
- {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=amortissement"|args:$_GET.immo_doc_id:$info_immo.status}}
+ {{:redirect force="amortization.html?immo_id=%s&ok=1&msg=amortissement"|args:$_GET.immo_id}}
{{/form}}
-{{:admin_header title="Ajout amortissement" custom_css="./style.css" current="module_amortization"}}
+{{:admin_header title="Ajout amortissement" current="module_amortissement"}}
{{* barre de navigation *}}
{{if ! $dialog}}
- {{:include file="_nav.html" current="managed" subcurrent="amortization"}}
+ {{:include file="_nav.html" current="index" subcurrent="encours" subsubcurrent="amortization"}}
{{/if}}
{{:form_errors}}
-{{if $years|count == 1}}
- {{:assign var=selected_year value=$years.0.id}}
-{{/if}}
+{{:assign var=selected_year value=$years.0.id}}
{{:assign var=date_amort value=$years.0.end_date}}
{{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}}
{{* montant de l'amortissement *}}
-{{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.amount:$info_immo.duration:$nbjours|intval}}
-{{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.amount:$total_amort}}
+{{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.montant:$duree:$nbjours|intval}}
+{{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.montant:$amort_line.amort_amount}}
{{:assign var="debit_account.6811" value="6811 — Dot. aux amortissements des immobilisations"}}
-{{:assign var="credit_account.%s"|args:$code_amort value="%s — "|args:$code_amort|cat:$amort_account_label}}
+{{:assign var="credit_account.%s"|args:$code_amort value="%s — "|args:$code_amort|cat:$amort_label}}
{{* -------------------------------------------------------------------------------- *}}
@@ -248,30 +241,28 @@
{{:input type="select" default=$selected_year name="id_year" label="Exercice" required=true default_empty="— Faire un choix —" options=$open_years}}
{{:input type="date" name="date_amort" label="Date" required=true default=$date_amort|date_short}}
- {{:input type="text" name="designation" label="Libellé" required=true default=$amort_label size="50"}}
+ {{:input type="text" name="designation" label="Désignation" required=true default=$libelle}}
{{:input type="money" name="montant" label="Montant" required=true default=$montant_amort}}
{{:input
type="list"
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
}}
{{:input
type="list"
name="credit_account"
- label="Compte d'amortissement (28xx)"
+ label="Compte d'amortissement (280xx ou 281xx)"
required=true
- readonly=true
target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:"28*":$selected_year
default=$credit_account
}}
- {{:input type="text" name="montant_immo" default=$ligne_immo.amount}}
- {{:input type="text" name="duree_amort" default=$info_immo.duration}}
- {{:input type="text" name="somme_amort" default=$total_amort}}
+ {{:input type="text" name="montant_immo" default=$ligne_immo.montant}}
+ {{:input type="text" name="duree_amort" default=$duree}}
+ {{:input type="text" name="somme_amort" default=$amort_line.amort_amount}}
{{:input type="select" name="years_data" options=$years_data}}
@@ -303,8 +294,8 @@ function redisplayData(evt,
)
{
setDateEnd(f_years_select, f_date, f_years_data);
- displayAmort(f_immo, f_duree, f_amort, f_years_data, f_years_select, f_montant, f_erreur);
setSelectorYear(['credit_account', 'debit_account'], f_years_select);
+ displayAmort(f_immo, f_duree, f_amort, f_years_data, f_years_select, f_montant, f_erreur);
}
function redisplayAmort(evt,
diff --git a/schema.json b/schema.json
new file mode 100644
index 0000000..4279385
--- /dev/null
+++ b/schema.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": ["immo"]
+ },
+ "line" : {
+ "description": "id ligne écriture de l'immobilisation",
+ "type": "integer"
+ },
+ "duration" : {
+ "description": "durée de l'amortissement en années",
+ "type": "integer"
+ },
+ "date" : {
+ "description" : "date de mise en service de l'immobilisation",
+ "type" : ["string", "null"],
+ "format" : "date"
+ },
+ "status" : {
+ "type" : ["string", "null"],
+ "enum" : ["managed", "amortized", "archived", "ignored"]
+ }
+ },
+ "required": ["type", "line", "duration", "date"]
+}
diff --git a/scripts.js b/scripts.js
index c59df55..232df76 100644
--- a/scripts.js
+++ b/scripts.js
@@ -14,24 +14,23 @@ function toggleInputs(idcb, idfields) {
function toggleVisibility(idcheck, fields) {
const elem = document.getElementById(idcheck);
- fields.forEach(function (field) {
+ for (let id of fields) {
+ const field = document.getElementById(id);
if (elem.checked) {
- field.classList.remove('hidden');
+ field.setAttribute('class', '');
} else {
- field.classList.add('hidden');
+ field.setAttribute('class', 'hidden');
}
- });
+ }
}
// fixer l'exercice des sélecteurs de compte
function setAccountYear(button_names, id_year) {
for (const name of button_names) {
const button = document.querySelector("button[data-name=" + name + "]");
- if (button != null) {
- const b_value = button.value;
- const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year);
- button.setAttribute('value', new_value);
- }
+ const b_value = button.value;
+ const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year);
+ button.setAttribute('value', new_value);
}
}
@@ -81,7 +80,7 @@ function setDateEnd(id_exercices, id_date, id_years) {
// renvoyer la valeur numérique d'un montant formaté en €
function getNumber(text) {
- return Number(text.replace(/[^0-9,]/g, '').replace(/,/, '.'));
+ return Number(text.replace(/ /g, '').replace(/,/, '.').replace(/€/, ''));
}
// calculer le montant d'un amortissement
@@ -101,6 +100,7 @@ function displayAmort(id_immo, id_duree, id_amort, id_years, id_exercices, id_mo
{
const div_erreur = document.getElementById(id_erreur);
div_erreur.setAttribute('class', 'hidden');
+// document.getElementById(id_erreur).setAttribute('class', 'hidden');
let case_montant = document.getElementById(id_montant);
const selected_year = document.getElementById(id_exercices).value;
if (selected_year == '') {
@@ -119,10 +119,12 @@ function displayAmort(id_immo, id_duree, id_amort, id_years, id_exercices, id_mo
}
if (id_date != null) {
const date_choisie = str2sec(document.getElementById(id_date).value);
+ console.log("date_choisie = " + date_choisie + ", date_debut=" + date_debut + ", date_fin = " + date_fin);
if (date_debut <= date_choisie && date_choisie <= date_fin) {
date_fin = date_choisie;
} else {
div_erreur.setAttribute('class', '');
+// document.getElementById(id_erreur).setAttribute('class', '');
}
}
const montant_immo = Number(document.getElementById(id_immo).value);
@@ -133,140 +135,7 @@ function displayAmort(id_immo, id_duree, id_amort, id_years, id_exercices, id_mo
case_montant.innerText = montant_amort;
}
-function setSelectorYear(button_names, f_years_selector)
-{
- const selector = document.getElementById(f_years_selector);
+function setSelectorYear(button_names, f_years_selector) {
const selected_year = document.getElementById(f_years_selector).value;
setAccountYear(button_names, selected_year);
}
-
-// config : gestion des ajouts/suppression comptes immo
-
-// 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');
-
- if (count <= min) {
- alert("Il n'est pas possible d'avoir moins de " + min + " ligne(s).");
- return false;
- }
-
- row.parentNode.removeChild(row);
- return true;
- };
-}
-
-// Associer au bouton « Ajouter » de chaque table l'action d'ajouter une ligne
-function addLine(button, codes) {
- button.onclick = () => {
- let lines = button.closest("table").querySelectorAll('tbody tr');
- let line = lines[lines.length - 1];
- let newNode = line.cloneNode(true);
-
- // Réinitialiser le sélecteur de compte
- let selectButton = newNode.querySelector('.input-list button');
- let url = selectButton.value;
- let new_url = url.replace(/codes=[0-9]+\*?/, "codes=" + codes);
- selectButton.value = new_url;
-
- // gestionnaire d'événement du sélecteur
- selectButton.onclick = () => {
- g.current_list_input = selectButton.parentNode;
- let url = selectButton.value + (selectButton.value.indexOf('?') > 0 ? '&' : '?') + '_dialog';
- g.openFrameDialog(url);
- return false;
- };
-
- // réinitialiser le libellé associé au sélecteur
- let lib = newNode.querySelector('.input-list span.label');
- lib.innerText = '';
-
- // ajouter la nouvelle ligne
- line.parentNode.appendChild(newNode);
- initLine(newNode);
- };
-}
-
-// afficher le montant
-function addAmountLine(amount, label, parent) {
- const node = document.createElement("tr");
- const col_compte = document.createElement("td");
- col_compte.classList.add("label");
- const col_montant = document.createElement("td");
- col_montant.classList.add("money");
- const montant = document.createTextNode(new Intl.NumberFormat("fr-FR", { style: "currency", currency: "EUR" }).format(amount / 100., ));
- col_compte.appendChild(document.createTextNode(label));
- col_montant.appendChild(montant);
- node.appendChild(col_compte);
- node.appendChild(col_montant);
- parent.appendChild(node);
-}
-
-// calculer et afficher le total des lignes sélectionnées
-function computeTotal(id_total, id_url) {
-
- // calculer le total par compte et le total général
- let total = new Object;
- let total_general = 0;
- const transactions = [];
- let lines = document.querySelectorAll('.list tbody tr');
- for (const line of lines) {
- let button = line.querySelector('input[type=checkbox]');
- if (button.checked) {
- let money = line.querySelector('.money');
- let code = line.querySelector('.account_code a').innerText;
- if (code in total) {
- total[code] += getNumber(money.innerText) * 100;
- } else {
- total[code] = getNumber(money.innerText) * 100;
- }
- total_general += getNumber(money.innerText) * 100;
- const number = line.querySelector('.num a').innerText.slice(1);
- transactions.push(number);
- }
- }
- // afficher les totaux
- const body = document.getElementById(id_total).querySelector('table tbody');
- const new_body = document.createElement('tbody');
-
- for (const code in total) {
- addAmountLine(total[code], "Compte " + code + " : ", new_body);
- }
- body.parentNode.replaceChild(new_body, body);
-
- // et le total général
- const foot = document.getElementById(id_total).querySelector('table tfoot');
- if (Object.keys(total).length > 1) {
- const new_foot = document.createElement('tfoot');
- addAmountLine(total_general, "Total : ", new_foot);
- foot.parentNode.replaceChild(new_foot, foot);
- } else {
- // pas besoin de total général si moins de 2 comptes
- for (const e of foot.children) {
- foot.removeChild(e);
- }
- }
-
- // mettre à jour les paramètres de l'url
- let url = document.getElementById(id_url);
- let new_href = url.href.replace(/trans=.*/, 'trans=' + Object.values(transactions));
- url.href = new_href;
-}
-
-// dupliquer la dernière ligne d'une table
-function copyLine(button) {
- button.onclick = () => {
- let lines = button.closest("table").querySelectorAll('tbody tr');
- let line = lines[lines.length - 1];
- let newNode = line.cloneNode(true);
- let libelle = newNode.querySelector('input');
- libelle.value = '';
-
- // ajouter la nouvelle ligne
- line.parentNode.appendChild(newNode);
- initLine(newNode);
- };
-}
diff --git a/style.css b/style.css
index 9811b17..fd1cbfb 100644
--- a/style.css
+++ b/style.css
@@ -31,74 +31,17 @@ h2[class="aide"], h3[class="aide"] {
}
.informations dt::after {
- content: ' : ';
-}
-
-.informations dl.describe {
- grid-template-columns : 25rem 1fr;
+ content: ' :';
}
.informations dl.describe > dt {
margin-right: 0;
- white-space: nowrap;
-}
-
-.informations dl.describe > dd {
- margin-right: 0;
}
nav.amort aside {
margin-top : 0;
}
-fieldset.shortFormLeft div.informations {
- border: 1px solid var(--gLightBorderColor);
- background: rgba(var(--gSecondColor), 0.2);
- border-radius: .5em;
-}
-
-.strong {
- font-weight: bold;
-}
-
-table.montant td.label {
- text-align : right;
- padding-right : 1em;
-}
-
-table.list tbody tr.ignored:nth-child(odd) {
- font-style: italic;
- background: rgba(255, 255, 200, 0.2);
-}
-table.list tbody tr.ignored:nth-child(even) {
- font-style: italic;
- background: rgba(255, 255, 200, 0.5);
-}
-html.dark table.list tbody tr.ignored:nth-child(odd) {
- font-style: italic;
- background: rgba(100, 100, 0, 0.4);
-}
-html.dark table.list tbody tr.ignored:nth-child(even) {
- font-style: italic;
- background: rgba(100, 100, 0, 0.4);
-}
-
-html.dialog.dark {
- filter: none !important;
-}
-
-html.dialog.dark main {
- background-color : #ddd;
-}
-
-html.dark .block.alert {
- background-color : rgba(87, 206, 235, 0.5);
-}
-
-span.input-list.avoirs label {
- padding : 0.4rem 0.6rem;
-}
-
-aside.right {
- float: right;
+.describe dt::after {
+ content: ' :';
}
diff --git a/transfer.html b/transfer.html
deleted file mode 100644
index 17d3b31..0000000
--- a/transfer.html
+++ /dev/null
@@ -1,338 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{:include file="_get_config.html" keep="module.config.prefixes"}}
-
-{{#years closed=false order="start_date" assign=years.}}
- {{:assign ts_debut=$start_date|strtotime}}
- {{:assign ts_fin=$end_date|strtotime}}
- {{:assign debut=$start_date|date_short}}
- {{:assign fin=$end_date|date_short}}
- {{:assign var="years_data.%d"|args:$id value=$ts_debut|cat:" "|cat:$ts_fin}}
- {{:assign var="open_years.%d"|args:$id value=$label|cat:" ("|cat:$debut|cat:" - "|cat:$fin|cat:")"}}
- {{if $ts_debut <= $now && $now <= $ts_fin}}
- {{:assign selected_year=$id}}
- {{/if}}
-{{else}}
- {{:error message="Aucun exercice ouvert"}}
-{{/years}}
-
-{{* déterminer les comptes d'immo en cours *}}
-{{:include file="_get_config.html" keep="module.config.unfinished"}}
-{{:assign condition="("}}
-{{#foreach from=$module.config.unfinished item="elem"}}
- {{if $elem.code != null}}
- {{:assign code=$elem.code}}
- {{else}}
- {{:assign code=$elem}}
- {{/if}}
- {{:assign code=$code|cat:"%"|quote_sql}}
- {{:assign condition=$condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
-{{/foreach}}
-{{:assign condition=$condition|cat:"0)"}}
-
-{{* détails des écritures paramètres *}}
-{{:assign trans=$_GET.trans|explode:","}}
-{{:assign var="trans_list" value=$trans|map:quote_sql}}
-{{:assign trans_list=$trans_list|implode:","}}
-{{:assign trans_list="("|cat:$trans_list|cat:")"}}
-{{:assign condition=$condition|cat:" AND trans.id IN "|cat:$trans_list}}
-{{:assign condition=$condition|cat:" AND NOT (trans.status & 16)"}}
-
-{{#select
- trans.id as trans_id,
- trans.label AS trans_label,
- trans.date AS trans_date,
- SUM(line.debit) AS line_debit,
- account.code AS account_code,
- account.label AS account_label,
- line.id_project as project_id
- FROM acc_transactions AS trans
- INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id
- INNER JOIN acc_accounts AS account ON line.id_account = account.id
- WHERE !condition
- GROUP BY trans.id
- ;
- !condition=$condition
-}}
- {{:assign var="transactions.%s"|args:$trans_id
- amount=$line_debit
- date=$trans_date
- code=$account_code
- label=$account_label
- project=$project_id
- }}
- {{if $max_date == null || $trans_date > $max_date}}
- {{:assign max_date=$trans_date}}
- {{/if}}
-{{/select}}
-
-{{* Traiter l'envoi du formulaire *}}
-{{#form on="transfer"}}
- {{* vérifier que la date de mise en service est postérieure aux dates d'acquisition *}}
- {{if $_POST.date_mes|parse_date < $max_date}}
- {{:assign dacq=$max_date|date_short}}
- {{:error message="La date de mise en service (%s) doit être postérieure à la date d'acquisition d'immobilisation la plus récente (%s) !"|args:$_POST.date_mes:$dacq}}
- {{/if}}
-
- {{* vérifier que la date de mise en service est située dans l'exercice sélectionné *}}
- {{:assign ts_date = $_POST.date_mes|parse_date}}
- {{:assign ok=false}}
- {{#foreach from=$years}}
- {{if $id == $_POST.id_year}}
- {{:assign selected_chart=$id_chart}}
- {{if $start_date <= $ts_date && $ts_date <= $end_date}}
- {{:assign ok=true}}
- {{:break}}
- {{/if}}
- {{/if}}
- {{/foreach}}
- {{if ! $ok}}
- {{:error message="La date saisie n'est pas dans l'exercice choisi !"}}
- {{/if}}
-
- {{if ! $_POST.amortir}}
- {{* ne pas amortir *}}
- {{:assign duration=0}}
- {{:assign status="ignored"}}
- {{else}}
- {{:assign duration=$_POST.duree|intval}}
- {{:assign status="managed"}}
- {{/if}}
-
- {{* comptes de débit *}}
- {{#foreach from=$_POST.credit_accounts key="rang" item="elem"}}
- {{:include
- file="_get_codes.html"
- account=$elem
- keep="account_code"
- }}
- {{:assign debit_account=$account_code|keys|value:0}}
- {{:assign var="amount" from="_POST.credit_lines.%s"|args:$rang}}
- {{:assign var="label" from="_POST.line_labels.%s"|args:$rang}}
- {{:assign
- var="lines."
- account=$debit_account
- credit=$amount
- label=$label
- }}
- {{/foreach}}
-
- {{* compte de crédit *}}
- {{:include
- file="_get_codes.html"
- account=$_POST.debit_account
- keep="account_code"
- }}
- {{:assign credit_account=$account_code|keys|value:0}}
- {{:assign var="amount" from="_POST.debit_lines.%s"|args:0}}
- {{:assign count=$_POST.line_labels|count}}
- {{:assign count="%d-1"|math:$count}}
- {{:assign var="label" from="_POST.line_labels.%s"|args:$count}}
- {{:assign
- var="lines."
- account=$credit_account
- debit=$amount
- label=$label
- }}
-
- {{* vérifier :
- - que le compte d'immo débute par un préfixe correct (20, 21, ...)
- - est présent dans le PC de l'exercice correspondant à la date
- *}}
-
- {{:include
- file="_check_account.html"
- account=$account_code
- chart_id=$selected_chart
- prefix_array=$module.config.prefixes
- keep="account_ok"
- }}
-
- {{if $account_ok == null}}
- {{:assign compte=$credit_account|implode:""}}
- {{:error message="Le compte « %s » n'est pas un compte d'immobilisation ou n'est pas dans le plan comptable de l'exercice choisi"|args:$compte}}
- {{/if}}
-
- {{* écritures liées *}}
- {{:assign var="linked_transactions" value=$transactions|keys}}
-
- {{* enregistrer l'écriture *}}
- {{:api
- method="POST"
- path="accounting/transaction"
- assign="result"
- id_year=$_POST.id_year
- type="advanced"
- date=$_POST.date_mes
- label=$_POST.designation|trim
- lines=$lines
- linked_transactions=$linked_transactions
- }}
-
- {{:assign lines_count=$lines|count}}
- {{:assign lines_count="%d-1"|math:$lines_count}}
- {{:assign var="immo_line_id" from="result.lines.%s.id"|args:$lines_count}}
- {{* enregistrer les infos de l'immobilisation *}}
- {{:save
- key=""|uuid
- validate_schema="asset.schema.json"
- type="immo"
- line=$immo_line_id
- duration=$duration
- date_mes=null
- status=$status
- }}
- {{if $_POST.amortir}}
- {{:assign type_immo="managed"}}
- {{else}}
- {{:assign type_immo="other"}}
- {{/if}}
- {{:redirect force="index.html?ok=1&msg=immobilisation&type_immo=%s"|args:$type_immo}}
-{{/form}}
-
-{{:admin_header title="Transfert d'immobilisation en cours" custom_css="./style.css" current="module_amortization"}}
-{{if ! $dialog}}
- {{:include file="_nav.html" current="unfinished" subcurrent="transfer"}}
-{{/if}}
-
-{{:form_errors}}
-
-{{* formulaire d'ajout d'immobilisation *}}
-{{if $_GET.trans == null}}
- {{:error message="Vous n'avez sélectionné aucune écriture !"}}
-{{/if}}
-
-{{if $max_date|strtotime > $now}}
- {{:assign default_date=$max_date}}
-{{else}}
- {{:assign default_date=$now|date_short}}
-{{/if}}
-
-{{#select id,label FROM acc_projects WHERE archived = 0;}}
- {{:assign var="projects.%d"|args:$id value=$label}}
-{{/select}}
-
-{{#foreach from=$module.config.prefixes item="code"}}
- {{:assign var="pattern_array." value="%s*"|args:$code}}
-{{/foreach}}
-{{:assign var="patterns" value=$pattern_array|implode:"|"}}
-
-
-
La date choisie n'est dans aucun exercice ouvert !
-
-
-
-{{:admin_footer}}
-
-
-
diff --git a/write_exit.html b/write_exit.html
index beb6e68..591e803 100644
--- a/write_exit.html
+++ b/write_exit.html
@@ -3,35 +3,62 @@
{{*
Enregistrer les écritures de sortie du bilan
paramètres :
- - immo_doc_id : id du doc associé à l'immobilisation
+ - immo_id : numéro de ligne de l'écriture d'immobilisation
- amort_amount : montant des amortissements
- year : exercice de la date de sortie de l'immobilisation
+ - date_mes : date de mise en service de l'immobilisation
- date_debut : date de début de la période d'amortissement complémentaire
- exit_date : date de sortie de l'immobilisation
+ - duree_amort : durée de l'amortiseement (optionnel)
- cession : montant de la cession (optionnel)
*}}
-{{* 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}}
+{{#select
+ line.debit as montant,
+ line.id_transaction,
+ line.id_account,
+ trans.date as date_achat,
+ trans.label,
+ acc.code,
+ id_project
+ 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 = :immo_id;
+ :immo_id = $_GET.immo_id|intval
+ assign="ligne_immo"
+}}
+{{/select}}
-{{* 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}}
-{{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$_GET.amort_amount}}
+{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}}
+{{/load}}
+{{* date de début de l'exercice *}}
+{{#select start_date FROM acc_years WHERE id = :year_id; :year_id = $_GET.year}}
+{{*
+ {{if $start_date < "2025-01-01"
+*}}
+ {{:assign vnc_code="675"}}
+ {{:assign cession_code="775"}}
+{{*
+ {{else}}
+ {{:assign vnc_code="657"}}
+ {{:assign cession_code="757"}}
+ {{/if}}
+*}}
+{{/select}}
+
+{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount}}
{{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}}
{{:assign amort_except=0}} {{* amortissement exceptionnel jqà date fin amortissement *}}
{{if $valeur_nette > 0}}
{{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}}
- {{:assign annuite="%f/%f"|math:$ligne_immo.amount:$info_immo.duration}}
+ {{:assign annuite="%f/%f"|math:$ligne_immo.montant:$_GET.duree_amort}}
{{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}}
{{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}}
{{if $_GET.cession == null}}
- {{:assign amort_except="%f-%f-%f"|math:$ligne_immo.amount:$_GET.amort_amount:$amort_comp}}
+ {{:assign amort_except="%f-%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount:$amort_comp}}
{{/if}}
{{/if}}
@@ -41,10 +68,6 @@
{{: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 *}}
@@ -65,7 +88,7 @@
account=$account
keep="account_code"
}}
- {{:assign amort_account_code=$account_code|keys|value:0}}
+ {{:assign amort_account_code=$account_code|keys|key:0}}
{{if $valeur_nette > 0}}
{{* immo non totalement amortie *}}
@@ -76,9 +99,9 @@
account=$_POST.comp_account
keep="account_code"
}}
- {{:assign comp_account_code=$account_code|keys|value:0}}
+ {{:assign comp_account_code=$account_code|keys|key:0}}
- {{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.trans_label}}
+ {{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.label}}
{{:assign
var="lines."
debit="%f/100"|math:$amort_comp
@@ -102,8 +125,8 @@
account=$_POST.except_account
keep="account_code"
}}
- {{:assign except_account_code=$account_code|keys|value:0}}
- {{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.trans_label}}
+ {{:assign except_account_code=$account_code|keys|key:0}}
+ {{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.label}}
{{:assign
var="lines."
debit="%f/100"|math:$amort_except
@@ -129,22 +152,10 @@
id_year=$_GET.year
type="advanced"
date=$_GET.exit_date
- label="Amortissement final "|cat:$ligne_immo.trans_label
+ label="Amortissement final "|cat:$ligne_immo.label
lines=$lines
- linked_transactions=$ligne_immo.trans_id
+ linked_transactions=$ligne_immo.id_transaction
}}
-
- {{* liaisons lignes d'amortissement *}}
- {{#foreach from=$result.lines item="line"}}
- {{if $line.account_code == $amort_account_code}}
- {{:save
- key=""|uuid
- type="amort_link"
- immo_doc_id=$info_immo.id
- amort_line_id=$line.id
- }}
- {{/if}}
- {{/foreach}}
{{/if}}
{{* écriture de sortie du bilan *}}
@@ -154,19 +165,19 @@
account=$_POST.immo_account
keep="account_code"
}}
- {{:assign immo_account_code=$account_code|keys|value:0}}
- {{:assign libelle="Sortie du bilan de "|cat:$ligne_immo.trans_label}}
+ {{:assign immo_account_code=$account_code|keys|key:0}}
+ {{:assign libelle="Sortie du bilan de "|cat:$ligne_immo.label}}
{{:assign
var="lines."
account=$immo_account_code
- credit="%f/100"|math:$ligne_immo.amount
+ credit="%f/100"|math:$ligne_immo.montant
id_project=$ligne_immo.id_project
label=$libelle
}}
{{:assign
var="lines."
account=$amort_account_code
- debit="(%f-%f)/100"|math:$ligne_immo.amount:$valeur_nette
+ debit="(%f-%f)/100"|math:$ligne_immo.montant:$valeur_nette
id_project=$ligne_immo.id_project
label=$libelle
}}
@@ -176,7 +187,7 @@
account=$_POST.vnc_account
keep="account_code"
}}
- {{:assign vnc_account_code=$account_code|keys|value:0}}
+ {{:assign vnc_account_code=$account_code|keys|key:0}}
{{:assign
var="lines."
account=$vnc_account_code
@@ -196,37 +207,24 @@
date=$_GET.exit_date
label=$libelle
lines=$lines
- linked_transactions=$ligne_immo.trans_id
+ linked_transactions=$ligne_immo.id_transaction
}}
- {{* liaison écriture de sortie *}}
- {{#foreach from=$result.lines item="line"}}
- {{if $line.account_code == $immo_account_code}}
- {{:save
- key=""|uuid
- type="exit_link"
- immo_doc_id=$info_immo.id
- exit_line_id=$line.id
- }}
- {{:break}}
- {{/if}}
- {{/foreach}}
-
{{if $montant_cession > 0}}
{{* Cession de l'immobilisation *}}
- {{:assign libelle="Produit cession "|cat:$ligne_immo.trans_label}}
+ {{:assign libelle="Produit cession "|cat:$ligne_immo.label}}
{{:include
file="_get_codes.html"
account=$_POST.creance_account
keep="account_code"
}}
- {{:assign creance_account=$account_code|keys|value:0}}
+ {{:assign creance_account=$account_code|keys|key:0}}
{{:include
file="_get_codes.html"
account=$_POST.cession_account
keep="account_code"
}}
- {{:assign cession_account=$account_code|keys|value:0}}
+ {{:assign cession_account=$account_code|keys|key:0}}
{{:api
method="POST"
path="accounting/transaction"
@@ -240,135 +238,127 @@
debit=$creance_account
credit=$cession_account
id_project=$ligne_immo.id_project
- linked_transactions=$ligne_immo.trans_id
+ linked_transactions=$ligne_immo.id_transaction
}}
{{/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
- }}
- {{:break}}
- {{/if}}
- {{/foreach}}
+ {{if $info_immo != null}}
+ {{* mettre à jour l'état de l'immobilisation *}}
+ {{:save
+ key=$info_immo.key
+ status="archived"
+ }}
+ {{else}}
+ {{:save
+ key=""|uuid
+ validate_schema="schema.json"
+ type="immo"
+ line=$_GET.immo_id|intval
+ duration=$_GET.duree_amort|intval
+ date=$_GET.date_mes|date:"Y-m-d"
+ status="archived"
+ }}
+ {{/if}}
- {{* mettre à jour l'état de l'immobilisation *}}
- {{:save
- key=$info_immo.key
- status="archived"
- }}
- {{:redirect to="index.html?type_immo=archived"}}
+ {{:redirect to="index.html?type_immo=sortie"}}
{{/form}}
-{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortization"}}
+{{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortissement"}}
+
+{{* barre de navigation *}}
{{if ! $dialog}}
- {{if $valeur_nette > 0}}
- {{:assign type_immo="managed"}}
- {{else}}
- {{:assign type_immo="amortized"}}
- {{/if}}
- {{:include file="_nav.html" current="%s"|args:$type_immo subcurrent="balance_exit"}}
+ {{:include file="_nav.html" current="index" subcurrent="balance_exit"}}
{{/if}}
+{{:form_errors}}
-{{*
- Préparer les infos pour le formulaire
- déterminer les comptes pour les différentes écritures
-*}}
+{{* Préparer les infos pour le formulaire *}}
+{{* déterminer les comptes pour les différentes écritures *}}
{{:include
file="./_get_amort_code.html"
- code_immo=$ligne_immo.account_code
+ code_immo=$ligne_immo.code
keep="code_amort"
}}
-
{{:assign var="liste_codes.6811" name="comp_account"}}
{{:assign var="liste_codes.687" name="except_account"}}
{{:assign var="liste_codes.462" name="creance_account"}}
{{:assign var="liste_codes.%s"|args:$code_amort name="amort_account"}}
-{{:assign var="liste_codes.%s"|args:$ligne_immo.account_code name="immo_account"}}
+{{:assign var="liste_codes.%s"|args:$ligne_immo.code name="immo_account"}}
{{:assign var="liste_codes.%s"|args:$vnc_code name="vnc_account"}}
{{:assign var="liste_codes.%s"|args:$cession_code name="cession_account"}}
{{:assign condition=$liste_codes|keys|implode:","}}
{{:assign condition="acc.code IN ("|cat:$condition|cat:")"}}
-{{#select
- chart.id
- FROM acc_charts AS chart
- INNER JOIN acc_years AS year ON chart.id = year.id_chart
- WHERE year.id = :year_id;
- :year_id = $_GET.year
- }}
- {{:assign chart_id=$id}}
-{{/select}}
-
{{#select
acc.id,
acc.code as acc_code,
- acc.label as acc_label
+ acc.label as acc_label,
+ year.label as year_label
FROM acc_accounts as acc
INNER JOIN acc_charts as chart ON chart.id = acc.id_chart
- WHERE chart.id = :chart_id AND !condition;
- :chart_id = $chart_id
+ INNER JOIN acc_years as year ON chart.id = year.id_chart
+ WHERE year.id = 1 AND !condition;
!condition=$condition
}}
{{:assign var="liste_codes.%s.id"|args:$acc_code value=$id}}
{{:assign var="liste_codes.%s.acc_label"|args:$acc_code value=$acc_label}}
+ {{:assign var="liste_codes.%s.year_label"|args:$acc_code value=$year_label}}
{{/select}}
{{#foreach from=$liste_codes key=code}}
{{:assign var="%s.%s"|args:$name:$code value="%s — %s"|args:$code:$acc_label}}
{{/foreach}}
-{{:include file="_get_config.html" keep="module.config.prefixes"}}
-{{#foreach from=$module.config.prefixes item="code"}}
+{{:read file="./defaut.json" assign="config_json"}}
+{{:assign config_defaut=$config_json|json_decode}}
+{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}}
+
+{{#foreach from=$prefix_array item="code"}}
{{:assign var="pattern_array." value="%s*"|args:$code}}
{{/foreach}}
{{:assign patterns=$pattern_array|implode:"|"}}
-Sortir l'immobilisation « {{$ligne_immo.trans_label}} » du bilan
+Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan
-{{:form_errors}}
{{:admin_footer}}