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 a4356d6..e774b6d 100644 --- a/_archives.html +++ b/_archives.html @@ -1,219 +1,118 @@ {{* -*- brindille -*- *}} -{{* Liste des immobilisations sorties du bilan *}} -
- Cette page liste les immobilisations sorties du bilan -
+{{* Liste des immobilisations archivées *}} -{{:include file="_get_config.html" keep="module.config"}} +{{* Immobilisation archivées prises en charge *}} +{{#load type="immo" where="$$.status = 'archived'"}} + {{:assign var="lines." value="'%s'"|args:$line}} +{{/load}} +{{:assign lines=$lines|implode:","}} +{{:assign lines="("|cat:$lines|cat:")"}} +{{:assign condition="line.id IN %s"|args:$lines}} -{{* lister les immobilisations *}} -{{:assign account_condition="("}} -{{#foreach from=$module.config.prefixes item="code"}} +{{#select + trans.id as trans_id, + trans.label as trans_label, + trans.date as trans_date, + line.id as immo_id, + account.id as account_id, + account.code as account_code, + account.label as account_label, + line.debit AS debit, + project.label as project_label, + trans.id_year as trans_id_year + 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="immo_archivee" +}} + {{:assign var="immo_archivees.%s"|args:$trans_id value=$immo_archivee}} +{{/select}} + +{{* Immobilisation avec une écriture de sortie de bilan *}} +{{:read file="./defaut.json" assign="config_json"}} +{{:assign config_defaut=$config_json|json_decode}} +{{:assign var="prefix_array" value=$config_defaut.prefixes|keys}} + +{{:assign condition="("}} +{{#foreach from=$prefix_array item="code"}} {{:assign code=$code|cat:"%"|quote_sql}} - {{:assign account_condition=$account_condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}} + {{:assign condition=$condition|cat:"account.code LIKE "|cat:$code|cat:" OR "}} {{/foreach}} -{{:assign account_condition=$account_condition|cat:"0)"}} +{{:assign condition=$condition|cat:"0)"}} +{{:assign cond2=$condition|replace:"account.":"acc2."}} +{{:assign condition=$condition|cat:" AND "|cat:$cond2}} +{{:assign condition=$condition|cat:" AND line.debit > 0 AND NOT (trans.status & 16)"}} -{{: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}} +{{#select + trans.id as trans_id, + trans.label as trans_label, + trans.date as trans_date, + line.id as immo_id, + account.id as account_id, + account.code as account_code, + account.label as account_label, + line.debit AS debit, + project.label as project_label, + trans.id_year as trans_id_year + 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 acc_transactions_lines AS line2 ON line.debit = line2.credit + INNER JOIN acc_transactions AS trans2 ON trans2.id = line2.id_transaction + INNER JOIN acc_accounts AS acc2 ON acc2.id = line2.id_account + LEFT JOIN acc_projects AS project ON line.id_project = project.id + WHERE !condition + ORDER BY trans.date DESC; + !condition=$condition + assign="immo_archivee" + }} + {{if ! $trans_id|key_in:$immo_archivees}} + {{:assign var="immo_archivees.%s"|args:$trans_id value=$immo_archivee}} + {{/if}} +{{/select}}| N° | -Mise en service | -Date sortie | +Date | Libellé | Montant | N° compte | Compte | +Projet | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #{{$trans_id}} | -{{$date_mes|date_short}} | -{{$exit_date|date_short}} | -{{$trans_label}}{{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}} | -{{"%f"|math:$montant_immo|money_html:false|raw}} | -{{$account_code}} | +#{{$trans_id}} | +{{$trans_date|date_short}} | +{{$trans_label}} | +{{"%f"|math:$debit|money:false}} | +{{$account_code}} | {{$account_label}} | +{{$project_label}} | - {{:linkbutton label="Modifier" href="exit_step1.html?immo_doc_id=%s"|args:$info_immo.id shape="edit"}} |
| - | |||||||||||||
| - | - | - | Total du compte {{$code}} | -{{$value|money_html:false|raw}} | -- | - | - | ||||||
| - | - | - | Total des immobilisations | -{{$total_immo|money_html:false|raw}} | -- | - | - | ||||||
| - | |||||||||||||
| - | - | - | Cessions du compte {{$code}} | -{{$value|money_html:false|raw}} | -- | - | - | ||||||
| - | - | - | Total des cessions | -{{$total_cessions|money_html:false|raw}} | -- | - | - | ||||||
Aucune immobilisation
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 8c84736..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|intval -}} - {{: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/_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..a780b40 100644 --- a/_get_codes.html +++ b/_get_codes.html @@ -2,13 +2,9 @@ {{* déterminer le numéro du compte passé en paramètre dans un tableau - la clé est parfois l'identifiant du compte, parfois son code... - d'où l'obligation d'extraire le code de la valeur qui a toujours - 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_config.html b/_get_config.html deleted file mode 100644 index b1a9231..0000000 --- a/_get_config.html +++ /dev/null @@ -1,23 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Récupérer la config -*}} - -{{* config par défaut *}} -{{:read file="./defaut.json" assign="config_defaut"}} -{{:assign config_defaut=$config_defaut|json_decode}} - -{{if $module.config.prefixes == null}} - {{:assign var="module.config.prefixes" value=$config_defaut.prefixes}} -{{/if}} - -{{if $module.config.unfinished == null}} - {{:assign var="module.config.unfinished" value=$config_defaut.unfinished}} -{{/if}} - -{{* -{{if $module.config.tva == null}} - {{:assign var="module.config.tva" value=$config_defaut.tva}} -{{/if}} -*}} 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 8a2649b..0000000 --- a/_get_free_amort.html +++ /dev/null @@ -1,47 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - lister les amortissement non rattachés à une immo - @param filter_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 !filter_condition - ORDER BY trans.date, trans.label; - !filter_condition=$filter_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 ab4d4d6..2f28b30 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -1,169 +1,178 @@ {{* -*- 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"}}
- Cette page liste les immobilisations en cours d'amortissement
- {{elseif $type_immo == "amortized"}}
- Cette page liste les immobilisations dont l'amortissement est terminé
+Immobilisations en cours
+ {{elseif $type_immo == "amortie"}}
+ Immobilisations amorties
{{/if}}
-
| N° | +N° | Date | Libellé | Montant | Durée | -Amortissements | -Valeur nette | N° compte | +Compte | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #{{$immo_trans_id}} | -{{$immo_date|date_short}} | -{{$label_immo}} | -{{$montant_immo|money_html:false|raw}} | +#{{$trans_id}} | +{{$trans_date|date_short}} | +{{$trans_label}} | +{{"%f"|math:$debit|money}} | {{if $duration != null}}{{$duration}}{{/if}} | -{{$amort_amount|money_html:false|raw}} | -{{"%d-%d"|math:$montant_immo:$amort_amount|money_html:false|raw}} | -{{$account_code}} | +{{$account_code}} | +{{$account_label}} | + {{if ! $exist_amort}} + {{:linkbutton + label="Paramètres" + href="add_infos.html?immo_id=%s&amort=1&op=modif&type_immo=%s"|args:$immo_id:$type_immo + shape="settings" + target="_dialog" + }} + {{elseif $status == "unknown"}} + {{:linkbutton + label="Paramètres" + href="add_infos.html?immo_id=%s&amort=1&op=new&type_immo=%s"|args:$immo_id:$type_immo + shape="settings" + target="_dialog" + }} + {{/if}} {{:linkbutton - label="Détails" - href="amortization.html?immo_doc_id=%s&type_immo=%s"|args:$immo_doc_id:$type_immo shape="eye" + label="Amortissements" + href="amortization.html?immo_id=%s&type_immo=%s"|args:$immo_id:$type_immo + shape="table" }} |
| - | ||||||||||||||
| - | - | Total du compte {{$code}} | -{{$value|money_html:false|raw}} | -- | - | - | - | - | ||||||
| - | - | Total des immobilisations | -{{$total_immo|money_html|raw}} | -- | - | - | - | - | ||||||
Aucune immobilisation
-{{/if}} + {{if $nb_immo == 0}} +Aucune immobilisation
+ {{/if}} +- Cette page liste les immobilisations 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é -
+Aucune immobilisation
+ {{/if}} +- Cette page liste les immobilisations en cours de constitution, donc non amortissables -
- - {{:include file="_get_config.html" keep="module.config"}} - {{:assign saved_hides=$module.config.hides}} - {{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}} - - {{if $_POST|count == 0}} - {{:assign unhide=$user_hides.unhide_unfinished}} - {{else}} - {{if $_POST.unhide == null}} - {{:assign unhide=0}} - {{else}} - {{:assign unhide=1}} - {{/if}} - {{:assign var="user_hides.unhide_unfinished" value=$unhide"}} - {{:assign var="saved_hides.%s"|args:$logged_user.id value=$user_hides}} - {{:save key="config" hides=$saved_hides}} - {{/if}} - {{if $unhide}} - {{:assign checked="checked"}} - {{/if}} - -| - | N° | -Date | -Libellé | -Montant | -N° compte | -Compte | -- |
|---|---|---|---|---|---|---|---|
| {{:input type="checkbox" name="selected[]" value=$trans_id}} | -#{{$trans_id}} | -{{$trans_date|date_short}} | -{{$trans_label}} | -{{"%f"|math:$debit|money_html:false|raw}} | -{{$account_code}} | -{{$account_label}} | -- {{:linkbutton - label="Modifier" - href="ignore.html?immo_line_id=%s"|args:$immo_line_id - shape="edit" - target="_dialog" - }} - | -
| - | - | - | Total du compte {{$code}} | -{{$value|money_html|raw}} | -- | - | - |
| - | - | - | Total des immobilisations | -{{$total_immo|money_html|raw}} | -- | - | - |
Aucune immobilisation
- {{/if}} -La date choisie n'est dans aucun exercice ouvert !
@@ -195,14 +155,14 @@