diff --git a/README.md b/README.md
index 578af08..e771e69 100644
--- a/README.md
+++ b/README.md
@@ -4,14 +4,15 @@ Ce module permet de gérer les écritures d'amortissements pour les immobilisati
- lister les immobilisations
- ajouter une nouvelle immobilisation
-- lister les amortissements d'une immobilisation
+- lister les amortissements d'une immobilisation :
+ - amortissements déjà enregistrés
+ - amortissements à venir
+- associer une écriture d'amortissement à une immobilisation
- enregistrer un nouvel amortissement
-- incorporer d'anciennes immobilisations et leurs amortisements
## Installation
- télécharger [l'archive zip](https://link.infini.fr/amortissement)
- cliquer « Configuration » puis « Extensions »
- en bas de la page, cliquer « Importer un module »
- sélectionner l'archive téléchargée ci-dessus
-- activer le module
-
+- activer le module qui est maintenant présent dans la liste des extensions inactives
diff --git a/_archives.html b/_archives.html
index 7619bcb..fafad3b 100644
--- a/_archives.html
+++ b/_archives.html
@@ -1,226 +1,216 @@
{{* -*- brindille -*- *}}
{{* Liste des immobilisations sorties du bilan *}}
-
- Cet onglet liste les immobilisations sorties du bilan car elles ne
- sont plus utilisées dans l'association (vétusté, fin de vie,
- vente...).
+
+ Cette page liste les immobilisations sorties du bilan
+{{* Immobilisation avec une écriture de sortie de bilan *}}
{{:include file="_get_config.html" keep="module.config"}}
-{{if $module.table != null}}
+{{* lister les immobilisations *}}
+{{:assign account_condition="("}}
+{{#foreach from=$module.config.prefixes item="code"}}
+ {{:assign code=$code|cat:"%"|quote_sql}}
+ {{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
+{{/foreach}}
+{{:assign account_condition=$account_condition|cat:"0)"}}
- {{* lister les immobilisations *}}
- {{:assign account_condition="("}}
- {{#foreach from=$module.config.prefixes item="code"}}
- {{:assign code=$code|cat:"%"|quote_sql}}
- {{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}}
- {{/foreach}}
- {{:assign account_condition=$account_condition|cat:"0)"}}
- {{:assign status_condition="($$.status = 'archived')"}}
+{{:assign filter_condition=" AND NOT ("}}
+{{#foreach from=$module.config.filters item="filter"}}
+ {{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
+ {{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
+{{/foreach}}
+{{:assign filter_condition=$filter_condition|cat:"0)"}}
+{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"|cat:$filter_condition}}
- {{:assign filter_condition=" ("}}
- {{#foreach from=$module.config.filters item="filter"}}
- {{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}}
- {{:assign filter_condition=$filter_condition|cat:" trans_label LIKE "|cat:$filter|cat:" OR "}}
- {{/foreach}}
- {{:assign filter_condition=$filter_condition|cat:"0)"}}
- {{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16) AND NOT "|cat:$filter_condition|cat:" AND "|cat:$status_condition}}
+
+
+
+
+
N°
+
Mise en service
+
Date sortie
+
Libellé
+
Montant
+
N° compte
+
Compte
+
Projet
+
+
+
+
- {{:assign total_cessions = 0}}
+ {{:assign nb_immo=0}}
+ {{:assign total_immo = 0}}
+ {{:assign total_cessions = 0}}
- {{#select
- trans.id as trans_id,
- trans.label as trans_label,
- trans.date as trans_date,
- trans.id_year as trans_id_year,
- line.id as immo_line_id,
- line.label as line_label,
- line.debit AS debit,
- account.id as account_id,
- account.code as account_code,
- account.label as account_label,
- info.id as immo_doc_id,
- $$.label as doc_label,
- $$.amount as doc_amount,
- $$.date_achat as doc_date_achat,
- $$.date_mes as doc_date_mes,
- $$.status as status
- 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
- INNER JOIN acc_years AS years ON trans.id_year = years.id
- INNER JOIN !table AS info ON $$.line = line.id
- WHERE !condition
- ORDER BY trans.date DESC;
- !table=$module.table
- !condition=$condition
- assign="immo_line"
- }}
-
- {{:assign var="immo_line.date_mes" value=$doc_date_mes|or:$doc_date_achat|or:$trans_date}}
- {{:assign var="immo_line.montant_immo" value=$doc_amount|or:$debit}}
-
- {{* chercher le doc de sortie du bilan *}}
- {{:assign var="immo_line.exit_date" value=null}}
- {{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$immo_doc_id}}
- {{:assign exit_line_id=$exit_line_id}}
- {{#select
- trans.date
- FROM acc_transactions_lines AS line
- INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
- WHERE line.id = :exit_line_id;
- :exit_line_id=$exit_line_id
- }}
- {{:assign var="immo_line.exit_date" value=$date}}
- {{/select}}
- {{/load}}
-
- {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
- {{:assign credit_immo=null}}
- {{:assign total_credits=0}}
- {{#load
- type="credit_link"
- where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id
- }}
- {{if $amount == null}}
- {{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
- :credit_line_id=$credit_line_id
- }}
- {{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
- {{/select}}
- {{else}}
- {{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
- {{/if}}
- {{/load}}
- {{:assign solde_immo="%d-%d"|math:$immo_line.montant_immo:$total_credits}}
- {{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
- {{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$immo_line.montant_immo}}
-
- {{* voir s'il y a une écriture de cession associée à cette immo *}}
{{#select
- trans.id as cession_id,
- trans.label,
- line.id as line_id,
- line.credit
- FROM acc_transactions_lines AS line
- INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id
- INNER JOIN !table AS cession_link ON json_extract(cession_link.document, '$.cession_line_id') = line.id
- INNER JOIN !table AS immo_doc ON json_extract(cession_link.document, '$.immo_doc_id') = immo_doc.id
- WHERE json_extract(immo_doc.document, '$.line') = :immo_line_id
- ;
- !table=$module.table
- :immo_line_id = $immo_line.immo_line_id
- assign="cession_line"
+ trans.id as trans_id,
+ trans.label as trans_label,
+ trans.date as trans_date,
+ trans.id_year as trans_id_year,
+ line.id as immo_id,
+ line.debit AS debit,
+ account.id as account_id,
+ account.code as account_code,
+ account.label as account_label,
+ project.label as project_label
+ 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
+ INNER JOIN acc_years AS years ON trans.id_year = years.id
+ LEFT JOIN acc_projects AS project ON line.id_project = project.id
+ WHERE !condition
+ ORDER BY trans.date DESC;
+ !condition=$condition
}}
- {{:assign var="montant" from="montant_cessions.%d"|args:$account_code}}
- {{:assign var="montant_cessions.%d"|args:$account_code value="%d+%d"|math:$montant:$credit}}
- {{:assign total_cessions="%d+%d"|math:$total_cessions:$credit}}
+ {{:assign montant_immo=$debit}}
+ {{* voir si l'immo est prise en charge *}}
+ {{#load type="immo" where="$$.line = :line_id" :line_id=$immo_id|intval}}
+ {{:assign status=$status}}
+ {{if $amount != null}}
+ {{:assign montant_immo=$amount}}
+ {{/if}}
+ {{else}}
+ {{:assign amortissable="nsp"}}
+ {{:assign status="unknown"}}
+ {{/load}}
+ {{if $status == "ignored"}}
+ {{:continue}}
+ {{/if}}
+
+ {{* voir s'il existe une écriture liée qui solde l'immobilisation *}}
+ {{#select
+ trans.date as exit_date
+ FROM acc_transactions_links AS link
+ INNER JOIN acc_transactions AS trans ON
+ (CASE
+ WHEN link.id_transaction = :trans_id THEN link.id_related
+ WHEN link.id_related = :trans_id THEN link.id_transaction
+ END) = trans.id
+ 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.credit = :montant_immo
+ AND acc.code = :account_code
+ ;
+ :trans_id = $trans_id
+ :montant_immo = $montant_immo
+ :account_code = $account_code
+ }}
+ {{:assign status="archived"}}
+ {{:assign exit_date=$exit_date}}
+ {{/select}}
+
+ {{if $status != "archived"}}
+ {{:continue}}
+ {{/if}}
+
+ {{:assign trans_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:$trans_id_year}}
+ {{:assign nb_immo="%d+1"|math:$nb_immo}}
+ {{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}}
+ {{:assign var="montant" from="sommes_immo.%s"|args:$account_code}}
+ {{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$montant_immo}}
+
+ {{* voir s'il y a une écriture de cession associée à cette immo *}}
+ {{#select
+ trans.id,
+ trans.label,
+ trans.date,
+ line.id,
+ line.debit,
+ acc.code,
+ acc.label
+ FROM acc_transactions_links AS link
+ INNER JOIN acc_transactions AS trans ON (CASE
+ WHEN link.id_transaction = :trans_id THEN link.id_related
+ WHEN link.id_related = :trans_id THEN link.id_transaction
+ END) = trans.id
+ 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 (link.id_transaction = :trans_id OR link.id_related = :trans_id) AND acc.code = 462
+ ;
+ :trans_id = $trans_id
+ }}
+ {{:assign var="montant" from="montant_cessions.%d"|args:$account_code}}
+ {{:assign var="montant_cessions.%d"|args:$account_code value="%d+%d"|math:$montant:$debit}}
+ {{:assign total_cessions="%d+%d"|math:$total_cessions:$debit}}
+ {{/select}}
+
+
-{{/if}}
+
diff --git a/_calcul_dates.html b/_calcul_dates.html
index ef868de..e4dd864 100644
--- a/_calcul_dates.html
+++ b/_calcul_dates.html
@@ -9,4 +9,4 @@
{{:assign ts_debut=$date_debut|strtotime}}
{{:assign ts_fin=$date_fin|strtotime}}
-{{:assign nbjours="round(1+abs(%d-%d)/(60*60*24), 0)"|math:$ts_fin:$ts_debut}}
+{{:assign nbjours="1+abs(%d-%d)/(60*60*24)"|math:$ts_fin:$ts_debut}}
diff --git a/_check_account.html b/_check_account.html
index ce6816e..06e1108 100644
--- a/_check_account.html
+++ b/_check_account.html
@@ -19,7 +19,7 @@
{{/foreach}}
{{:assign condition=$condition|cat:"0)"}}
-{{:assign account_code=$account|keys|value:0}}
+{{:assign account_code=$account|keys|key:0}}
{{#sql
select="code"
tables="acc_accounts"
diff --git a/_common_attach.html b/_common_attach.html
deleted file mode 100644
index 728ee1f..0000000
--- a/_common_attach.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Enregistrer l'association entre une ligne d'immo et une autre ligne (amort, credit, cession, sortie)
- @param immo_doc_id : id du doc associé à la ligne d'immobilisation
- @param trans_id : id de l'écriture à attacher
-*}}
-{{* données de l'immobilisation *}}
-{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="ligne_immo, message"}}
-{{if $message != null}}
- {{:error message=$message}}
-{{/if}}
-
-{{* chercher les liaisons de l'écriture d'immobilisation *}}
-{{#select
- CASE links.id_related = :immo_trans_id
- WHEN true THEN links.id_transaction
- WHEN false THEN links.id_related
- END as linked_id
- FROM acc_transactions_links as links
- WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
- :immo_trans_id = $ligne_immo.trans_id
-}}
- {{:assign var="linked_transactions." value=$linked_id}}
-{{/select}}
-
-{{* ajouter la nouvelle liaison *}}
-{{:assign var="linked_transactions." value=$trans_id}}
-{{* Enregistrer les liaisons *}}
-{{:api
- method="POST"
- path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id
- assign="result"
- assign_code="result_code"
- transactions=$linked_transactions
-}}
-
diff --git a/_common_detach.html b/_common_detach.html
deleted file mode 100644
index e7b6c7a..0000000
--- a/_common_detach.html
+++ /dev/null
@@ -1,52 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Supprimer l'association entre une ligne d'immo et une autre ligne (amort, credit, cession, sortie)
- @param immo_doc_id : id du doc associé à la ligne d'immobilisation
- @param line_id : id de la ligne à détacher
-*}}
-
-{{* données de l'immobilisation *}}
-{{:include file="_get_immo_data.html" immo_doc_id=$immo_doc_id|intval keep="info_immo, ligne_immo, message"}}
-{{if $message != null}}
- {{:error message=$message}}
-{{/if}}
-
-{{* chercher la deuxième écriture *}}
-{{#select
- id_transaction
- FROM acc_transactions_lines
- WHERE id = :line_id;
- :line_id = $line_id
-}}
- {{:assign trans_id=$id_transaction}}
-{{else}}
- {{:error message="Écriture non trouvée"}}
-{{/select}}
-
-{{*
- chercher les liaisons de l'écriture d'immobilisation
- et supprimer la liaison avec la deuxième écriture
-*}}
-{{#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 != $trans_id}}
- {{: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
-}}
diff --git a/_compare_version.tpl b/_compare_version.tpl
deleted file mode 100644
index 88d8a40..0000000
--- a/_compare_version.tpl
+++ /dev/null
@@ -1,34 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Comparer deux numéros de version n1.n2[.n3]
- @param nv1
- @param nv2
- @result comp : -1 si nv1 < nv2, 0 si nv1 = nv2, 1 si nv1 > nv2
-*}}
-
-{{:assign nv1=$nv1|cat:"."}}
-{{:assign nv2=$nv2|cat:"."}}
-{{:assign var="tv1" value=$nv1|explode:"."}}
-{{:assign var="tv2" value=$nv2|explode:"."}}
-
-{{:assign comp=0}}
-{{:assign i=0}}
-{{#foreach from=$tv1 item="e1"}}
- {{:assign var="e2" from="tv2.%d"|args:$i}}
- {{if $e1 < $e2}}
- {{:assign comp=-1}}
- {{:break}}
- {{elseif $e1 > $e2}}
- {{:assign comp=1}}
- {{:break}}
- {{/if}}
- {{:assign i="%d+1"|math:$i}}
-{{/foreach}}
-{{*
- cas où le premier tableau a moins d'éléments que le 2ème
- et où les éléments présents dans les deux tableaux sont identiques
- *}}
-{{if $comp == 0 && $tv1|count < $tv2|count}}
- {{:assign comp = -1}}
-{{/if}}
diff --git a/_get_amort_lines.html b/_get_amort_lines.html
deleted file mode 100644
index dd115e8..0000000
--- a/_get_amort_lines.html
+++ /dev/null
@@ -1,44 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- lister les lignes d'amortissement liées à la ligne d'immobilisation
- @param immo_doc_id : id du doc associé à l'immobilisation
- @result linked_amort : lignes d'amortissement liées à la ligne d'immobilisation
- @result total_amort : montant total des amortissements de l'immobilisation
- @result created_amort : vrai s'il y a au moins un amortissement créé par le module dans la liste
-*}}
-
-{{:assign total_amort=0}}
-{{#load type="amort_link"
- where="$$.immo_doc_id = :immo_doc_id"
- :immo_doc_id = $immo_doc_id|intval
- assign="amort_info"
-}}
- {{#select
- line.id as line_id,
- line.credit as amount,
- line.label as line_label,
- trans.id as trans_id,
- trans.label as trans_label,
- trans.date as date,
- trans.id_year as year,
- 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 line.id_transaction = trans.id
- INNER join acc_accounts AS account on line.id_account = account.id
- WHERE line.id = :amort_line_id
- ;
- :amort_line_id = $amort_line_id
- assign="amort_line"
- }}
- {{:assign var="amort_line.amount" value=$amort_info.amount|or:$amort_line.amount}}
- {{if $amort_info.created}}
- {{:assign var="amort_line.created" value=true}}
- {{:assign var="created_amort" value=true}}
- {{/if}}
- {{:assign var="linked_amort.%s_%d"|args:$amort_line.date:$amort_info.id value=$amort_line}}
- {{:assign total_amort="%d+%d"|math:$total_amort:$amort_line.amount}}
- {{/select}}
-{{/load}}
diff --git a/_get_codes.html b/_get_codes.html
index 0373085..e6d85c1 100644
--- a/_get_codes.html
+++ b/_get_codes.html
@@ -7,8 +7,7 @@
la forme : code — libellé
*}}
-{{:assign values=$account|values}}
-{{:assign label=$values.0}}
+{{:assign label=$account|values|key:0}}
{{:assign pos=$label|strpos:" "}}
{{:assign account_code=$label|substr:0:$pos}}
{{:assign var="account_code.%s"|args:$account_code value=$label}}
diff --git a/_get_credit_lines.html b/_get_credit_lines.html
deleted file mode 100644
index c06adc5..0000000
--- a/_get_credit_lines.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- chercher des écritures liées à l'immo paramètre au crédit du même compte
- @param immo_doc_id : id du doc associé à l'immobilisation
- @result linked_immos : liste des écritures liées
- @result total_credits : montant total des écritures
-*}}
-{{:assign linked_immos=null}}
-{{:assign total_credits=0}}
-{{#load type="credit_link" where="$$.immo_doc_id=:immo_doc_id" :immo_doc_id=$immo_doc_id|intval}}
- {{#select
- line.credit,
- line.id as line_id,
- trans.id as trans_id,
- trans.label,
- trans.date,
- 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_transactions AS trans ON line.id_transaction = trans.id
- INNER join acc_accounts AS account on line.id_account = account.id
- WHERE line.id = :credit_line_id;
- :credit_line_id=$credit_line_id
- }}
- {{:assign credit=$credit}}
- {{:assign var="linked_immos." doc=$id trans_id=$trans_id credit_line_id=$line_id label=$label amount=$credit date=$date account_id=$account_id account_code=$account_code account_label=$account_label year=$year}}
- {{/select}}
- {{if $amount == null}}
- {{:assign total_credits="%d+%d"|math:$total_credits:$credit}}
- {{else}}
- {{:assign total_credits="%d+%d"|math:$total_credits:$amount}}
- {{/if}}
-{{/load}}
diff --git a/_get_free_amort.html b/_get_free_amort.html
deleted file mode 100644
index b3b142f..0000000
--- a/_get_free_amort.html
+++ /dev/null
@@ -1,47 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- lister les amortissement non rattachés à une immo
- @param condition
-*}}
-{{#select
- line.id as line_id,
- line.id_transaction as trans_id,
- line.credit as amount,
- line.label as line_label,
- trans.date as trans_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 account.id = line.id_account
- INNER JOIN acc_transactions AS trans ON trans.id = line.id_transaction
- WHERE credit > 0 AND (NOT trans.status & 16) AND !condition
- ORDER BY trans.date, trans.label;
- !condition=$condition
- 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.line_id|intval
- assign="amort_link"
- }}
- {{if $amort_link.amount == null || $amort_link.amount == 0}}
- {{:assign amort_amount=$amort_line.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.amount}}
- {{:assign var="amort_line.amount" value="%d-%d"|math:$amort_line.amount:$amort_amount}}
- {{:assign var="free_amort_lines." value=$amort_line}}
- {{/if}}
-{{/select}}
diff --git a/_get_immo_data.html b/_get_immo_data.html
deleted file mode 100644
index 513ec0b..0000000
--- a/_get_immo_data.html
+++ /dev/null
@@ -1,39 +0,0 @@
-{{* -*- brindille -*- *}}
-
-{{*
- Récupérer les infos d'une immobilisation
- @param immo_doc_id : id du document associé à l'immobilisation
- @result info_immo : infos du document associé
- @result ligne_immo : données de la base
- @result message non null si une erreur s'est produite
-*}}
-
-{{#load id=$immo_doc_id|intval assign="info_immo"}}
-{{else}}
- {{:assign error=true}}
- {{:assign message="Immobilisation non trouvée"}}
-{{/load}}
-
-{{if ! $error}}
- {{#select
- line.id as line_id,
- line.debit as amount,
- line.label as line_label,
- line.id_project as id_project,
- trans.id as trans_id,
- trans.label as trans_label,
- trans.date as date_achat,
- 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 line.id_transaction = trans.id
- INNER JOIN acc_accounts AS account ON line.id_account = account.id
- WHERE line.id = :line_id;
- :line_id = $info_immo.line
- assign="ligne_immo"
- }}
- {{else}}
- {{:assign message="Immobilisation non trouvée"}}
- {{/select}}
-{{/if}}
diff --git a/_immobilisations.html b/_immobilisations.html
index cc0fc76..aacdc34 100644
--- a/_immobilisations.html
+++ b/_immobilisations.html
@@ -1,180 +1,208 @@
{{* -*- brindille -*- *}}
-{{* Liste des immobilisations en cours d'amortissement ou amorties *}}
+{{* Liste des immobilisations en cours ou amorties *}}
-{{:include file="_get_config.html" keep="module.config"}}
+
-
- {{if $type_immo == "managed"}}
- Cet onglet liste les immobilisations en cours d'amortissement.
- {{elseif $type_immo == "amortized"}}
- Cet onglet liste les
- immobilisations dont l'amortissement est terminé mais qui sont
- encore utilisées dans l'association, donc encore présentes au
- bilan.
- {{/if}}
-
-
-{{if $module.table != null}}
- {{* lister les immobilisations *}}
- {{:assign account_condition="("}}
- {{#foreach from=$module.config.prefixes item="code"}}
- {{:assign code=$code|cat:"%"|quote_sql}}
- {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}}
- {{/foreach}}
- {{:assign account_condition=$account_condition|cat:"0)"}}
- {{:assign status_condition="($$.status = 'managed' OR $$.status = 'amortized')"}}
- {{:assign condition=$account_condition|cat:" AND line.debit > 0 AND "|cat:$status_condition}}
-
- {{#select
- trans.id as immo_trans_id,
- trans.label as trans_label,
- trans.date as trans_date,
- line.id as immo_line_id,
- line.debit AS debit,
- line.label AS line_label,
- account.id as account_id,
- account.code as account_code,
- trans.id_year as trans_id_year,
- info.id as immo_doc_id,
- $$.duration as duration,
- $$.label as doc_label,
- $$.amount as doc_amount,
- $$.date_achat as doc_date_achat,
- $$.date as doc_date_mes,
- $$.status as status
- 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
- INNER JOIN acc_years AS years ON trans.id_year = years.id
- INNER JOIN !table AS info ON $$.line = line.id
- WHERE !condition
- ORDER BY COALESCE(doc_date_achat, trans_date) DESC;
- !table=$module.table
- !condition=$condition
- assign="immo_line"
- }}
- {{:assign montant_immo=$doc_amount|or:$debit}}
- {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}}
- {{#load
- type="credit_link"
- where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id
- }}
- {{if $amount == null}}
- {{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id;
- :credit_line_id=$credit_line_id
- }}
- {{:assign montant_immo="%d-%d"|math:$montant_immo:$credit}}
- {{/select}}
- {{else}}
- {{:assign montant_immo="%d-%d"|math:$montant_immo:$amount}}
- {{/if}}
- {{/load}}
-
- {{if $montant_immo == 0}}
- {{* Immobilisation soldée *}}
- {{:continue}}
- {{else}}
- {{:assign var="immo_line.montant_immo" value=$montant_immo}}
+
+ {{if $type_immo == "managed"}}
+ Cette page liste les immobilisations en cours d'amortissement
+ {{elseif $type_immo == "amortized"}}
+ Cette page liste les immobilisations dont l'amortissement est terminé
{{/if}}
+
- {{* montant des amortissements liés à l'immobilisation *}}
- {{:include file="./_get_amort_lines.html" immo_doc_id=$immo_doc_id keep="total_amort"}}
- {{:assign amort_amount=$total_amort}}
+
-{{/if}}
+
diff --git a/_immobilisations_autres.html b/_immobilisations_autres.html
index 0dca07d..51aaa0d 100644
--- a/_immobilisations_autres.html
+++ b/_immobilisations_autres.html
@@ -1,166 +1,179 @@
{{* -*- brindille -*- *}}
-{{* Liste des immobilisations non gérées ou non entièrement affectées *}}
+{{* Liste des immobilisations non amortissables ou non (encore) gérées *}}
-{{:include file="_get_config.html" keep="module.config"}}
-
- Cet onglet liste les immobilisations créées en dehors du module et
- pas encore prises en charge par le module ou les écritures de la
- balance d'ouverture initiale dont le montant n'est pas encore
- totalement affecté
-
{{"min(%d, %d)"|math:$valeur_residuelle:$annuite|money_currency_html:false|raw}}
- {{if $annuite <= $valeur_residuelle}}
- pour un exercice de 365 jours
- {{/if}}
-
- Il y a des écritures d'amortissement qui ne sont pas attachées à une immobilisation !
- Utilisez le bouton « Attacher un amortissement » pour les afficher ; vous pourrez choisir d'en attacher certaines à cette immobilisation.
-
Aucun amortissement enregistré pour cette
- immobilisation ; en fin d'exercice vous pouvez enregistrer un
- nouvel amortissement à l'aide du bouton « Enregistrer un
- amortissement »
-{{elseif $_GET.type_immo == "managed"}}
-
En fin d'exercice vous pouvez enregistrer
- un nouvel amortissement à l'aide du bouton « Enregistrer un
- amortissement »
-{{/if}}
+ {{* Autres amortissements non rattachés *}}
+ {{if $autres_amortissements != null}}
+
+ Il existe des écritures d'amortissement qui ne sont pas rattachés à une immobilisation !
+ Utilisez le bouton « Rattacher une écriture » pour les afficher ; vous pourrez choisir d'en attacher certaines à cette immobilisation.
+
+ {{/if}}
+{{/if}}
{{:form_errors}}
{{:admin_footer}}
diff --git a/attach_amort.html b/attach_amort.html
index c03821b..8680894 100644
--- a/attach_amort.html
+++ b/attach_amort.html
@@ -1,174 +1,56 @@
{{* -*- brindille -*- *}}
{{*
- Enregistrer la liaison entre une ligne d'écriture d'amortissement
- et une ligne d'écriture d'immobilisation
- @param immo_doc_id : numéro du doc d'immo
- @param amort_line_id : numéro de ligne de l'écriture d'amortissement
+ Enregistrer la liaison entre une écriture d'amortissement et
+ l'écriture d'immobilisation correspondante
*}}
-{{* 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 $label_immo|strpos:$ligne_immo.line_label === false}}
- {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}}
-{{/if}}
-{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}}
+{{* chercher l'écriture d'immobilisation *}}
+{{#select
+ id_transaction
+ FROM acc_transactions_lines
+ WHERE id = :line_id;
+ :line_id = $_GET.immo_id|intval
+}}
+ {{:assign immo_trans_id=$id_transaction}}
+{{else}}
+ {{:error message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_id}}
+{{/select}}
{{* chercher l'écriture d'amortissement *}}
{{#select
- line.credit as amount,
- line.label as line_label,
- trans.date as amort_date,
- trans.label as trans_label,
- trans.id as trans_id,
- acc.code as account_code,
- acc.label as account_label
- FROM acc_transactions_lines as line
- INNER JOIN acc_transactions as trans on line.id_transaction = trans.id
- INNER JOIN acc_accounts as acc on line.id_account = acc.id
- WHERE line.id = :line_id;
- :line_id = $_GET.amort_line_id|intval
- assign="amort_line"
+ id_transaction
+ FROM acc_transactions_lines
+ WHERE id = :line_id;
+ :line_id = $_GET.amort_id|intval
}}
+ {{:assign amort_id=$id_transaction}}
{{else}}
- {{:error message="Amortissement non trouvé"}}
+ {{:error message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_id}}
{{/select}}
-{{:assign amort_label=$amort_line.trans_label}}
-{{if $amort_line.line_label != null && $amort_line.line_label != $amort_label}}
- {{:assign amort_label=$amort_label|cat:"— "|cat:$amort_line.line_label}}
-{{/if}}
-{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$amort_line.trans_id}}
-{{* montant de l'écriture d'amortissement déjà affecté *}}
-{{:assign montant_affecte=0}}
-{{#load type="amort_link"
- where="$$.amort_line_id = :amort_line_id"
- :amort_line_id = $_GET.amort_line_id|intval
+{{* chercher les liaisons de l'écriture d'immobilisation *}}
+{{#select
+ CASE links.id_related = :immo_trans_id
+ WHEN true THEN links.id_transaction
+ WHEN false THEN links.id_related
+ END as linked_id
+ FROM acc_transactions_links as links
+ WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id;
+ :immo_trans_id = $immo_trans_id
}}
- {{:assign montant_affecte="%d+%d"|math:$montant_affecte:$amount}}
-{{/load}}
-{{:assign reste="%d-%d"|math:$amort_line.amount:$montant_affecte}}
+ {{:assign var="linked_transactions." value=$linked_id}}
+{{/select}}
-{{* Traiter l'envoi du formulaire *}}
-{{#form on="save"}}
- {{* vérifier que le montant saisi est inférieur au reste *}}
- {{if $_POST.montant == null || $_POST.montant == 0}}
- {{:assign montant_amort=$reste}}
- {{if $montant_affecte == 0}}
- {{:assign saved_amount=null}}
- {{else}}
- {{:assign saved_amount=$reste}}
- {{/if}}
- {{else}}
- {{:assign montant_amort=$_POST.montant|money_int}}
- {{if $montant_amort > $reste}}
- {{:assign reste_nb="%f"|math:$reste|money_currency:false}}
- {{:error message="Le montant de l'amortissement ne peut être supérieur au reste (%s)"|args:$reste_nb}}
- {{/if}}
- {{if $montant_amort == $amort_line.amount}}
- {{:assign saved_amount=null}}
- {{else}}
- {{:assign saved_amount=$montant_amort}}
- {{/if}}
- {{/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 montant_immo="%d-%d"|math:$montant_immo:$total_credits}}
-
- {{* montant des amortissements *}}
- {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_amort"}}
-
- {{* vérifier que le montant total des amortissements ne dépasse pas la valeur de l'immo *}}
- {{:assign vnc="%d-%d"|math:$montant_immo:$total_amort}}
- {{:assign total_amort="%d+%d"|math:$total_amort:$montant_amort}}
- {{if $total_amort > $montant_immo}}
- {{:assign ma="%f"|math:$montant_amort|money_currency:false}}
- {{:assign vnc="%f"|math:$vnc|money_currency:false}}
- {{:error message="Le montant de l'amortissement (%s) dépasse la valeur résiduelle de l'immobilisation (%s)"|args:$ma:$vnc}}
- {{/if}}
-
- {{*
- supprimer les documents qui pointent sur une ligne d'amortissement absente
- cas de la suppression manuelle d'un amortissement
- *}}
- {{:include file="_remove_orphan_docs.tpl"}}
-
- {{* Lier l'écriture d'amortissement à l'écriture d'immobilisation *}}
- {{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$amort_line.trans_id}}
-
- {{* vérifier si cette liaison est déjà présente dans les documents pour éviter les doublons *}}
- {{* TODO voir si nécessaire ? *}}
- {{#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
- limit=1
- }}
- {{else}}
- {{:save
- key=""|uuid
- type="amort_link"
- immo_doc_id=$_GET.immo_doc_id|intval
- amort_line_id=$_GET.amort_line_id|intval
- amount=$saved_amount
- }}
- {{/load}}
-
- {{* immo soldée ? *}}
- {{if $total_amort == $montant_immo && $_GET.from != "exit"}}
- {{:assign status="amortized"}}
- {{:save
- key=$info_immo.key
- status=$status
- }}
- {{/if}}
-
-{{if $_GET.from == "exit"}}
- {{:redirect force="exit_step2.html?immo_doc_id=%s&from=exit&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id}}
-{{else}}
- {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id:$status}}
-{{/if}}
-{{/form}}
-
-{{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}}
-
-{{* barre de navigation *}}
-{{if ! $dialog}}
- {{:include file="_nav.html" current="managed" subcurrent="attach_amort"}}
-{{/if}}
-{{:form_errors}}
-
-