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 b5d2cc6..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&from=exit"|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/_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..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 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 93648ec..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 @@+ Ce module gère l'amortissement linéaire des immobilisations. +
+ ++ Il faut renseigner les informations de l'immobilisation. + On peut indiquer qu'il s'agit d'une immobilisation qui ne doit + pas être amortie ; dans le cas contraire, il faut renseigner + les différents paramètres de l'immobilisation +
+ ++ Le calcul de l'amortissement se fait par la méthode linéaire. +
++ La date de début du calcul est par défaut la date d'achat ; si la + date de mise en service est postérieure à la date d'achat, c'est + celle-ci qui est prise en compte. +
++ Ce sont des écritures d'amortissement déjà + enregistrées et liées à l'écriture de + l'immobilisation courante. +
++ Ce sont les écritures amortissement de + l'immobilisation courante qui n'ont pas encore été + enregistrées ; seuls les amortissements d'un + exercice ouvert peuvent être enregistrés ; les + autres sont présents pour information et pourront + être enregistrés quand l'exercice correspondant + aura été ouvert. +
++ Ce sont des écritures passées sur un compte + d'amortissement (28xx) qui ne sont + associées à aucune écriture d'immobilisation ; en + cliquant le bouton « Attacher », on peut rattacher + l'écriture d'amortissement sélectionnée à + l'immobilisation courante. +
++ Si on a rattaché par erreur une écriture + d'amortissement à une immobilisation, le bouton « + Détacher » en face de l'écriture permettra de + défaire l'opération. +
++ Il faut renseigner les différents paramètres de l'amortissement : +
+ Dans le deuxième cas, il faut cliquer sur le bouton « Ajouter + infos » puis : +
+ Tant qu'une immobilisation ne possède pas d'amortissement, il est + possible de modifier ses informations à l'aide du bouton « + Modifier infos ». +
+ diff --git a/amortization.html b/amortization.html index 7d73749..c8280c0 100644 --- a/amortization.html +++ b/amortization.html @@ -2,89 +2,149 @@ {{* Lister les écritures d'amortissement associées à une immobilisation - @param immo_doc_id : id du doc associé à l'immo - @param type_immo : managed, amortized, archived, others + @param immo_id : id de la ligne d'immo + @param type_immo : encours, amortie, sortie, autres *}} -{{* 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}} - +{{* 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 + }} +{{else}} + {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_id}} +{{/select}} +{{:assign date_debut=$ligne_immo.date}} +{{:assign solde=$ligne_immo.montant}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{: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}} -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.amount" value=$info_immo.amount}} + +{{#load type="immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}} + {{:assign duree=$duration}} + {{:assign date_debut=$date}} + {{:assign status=$status}} +{{/load}} + +{{* chercher des écritures d'amortissement liées à l'immobilisation *}} +{{#select + l_amort.credit as amort_amount, + l_amort.label as amort_label, + l_amort.id as amort_line, + CASE WHEN links.id_related = t_immo.id + THEN links.id_transaction + ELSE links.id_related + END as amort_trans_id, + trans.date as amort_date, + 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; + :line_id = $_GET.immo_id|intval + assign=linked_lines. +}} + {{if $date_debut == null}} + {{:assign date_debut=$amort_date}} + {{/if}} +{{/select}} + +{{if $status == "amortized"}} + {{:assign amort_amount=$ligne_immo.montant}} + {{:assign valeur_residuelle=0}} +{{else}} + {{:assign valeur_residuelle=$ligne_immo.montant}} + {{#foreach from=$linked_lines}} + {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_amount}} + {{/foreach}} {{/if}} -{{if $info_immo.status == 'ignored'}} - {{:error message="Cette immobilisation ne doit pas être amortie"}} -{{/if}} +{{* Autres amortissements non rattachés *}} +{{#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}} -{{* 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:$ligne_immo.amount:$total_credits}} -{{:assign valeur_residuelle=$solde}} -{{* 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, created_amort"}} -{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}} - -{{if $valeur_residuelle > 0}} - {{* lister les amortissements non attachés à une immo *}} - {{:assign account_filter="28%"|quote_sql}} - {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} - - {{:assign date_amort=$date_debut|quote_sql}} - {{:assign date_condition="trans.date >= "|cat:$date_amort}} - {{:assign condition=$date_condition|cat:" AND "|cat:$filter_condition}} - {{:include file="./_get_free_amort.html" condition=$condition keep="free_amort_lines"}} -{{/if}} - -{{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} +{{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortissement"}} {{* barre de navigation *}} -{{if $_GET.type_immo == "amortized" && $valeur_residuelle == 0}} - {{:assign current="amortized"}} -{{elseif $_GET.type_immo == "archived"}} - {{:assign current="archived"}} -{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed" || $valeur_residuelle > 0}} - {{:assign current="managed"}} +{{if $_GET.type_immo == "amortie" || $valeur_residuelle== 0 }} + {{:assign subcurrent="amortie"}} +{{elseif $_GET.type_immo == "sortie"}} + {{:assign subcurrent="sortie"}} +{{elseif $_GET.type_immo == null || $_GET.type_immo == "encours"}} + {{:assign subcurrent="encours"}} {{else}} - {{:assign current="other"}} + {{:assign subcurrent="autre"}} {{/if}} {{:include file="_nav.html" - current="%s"|args:$current - subcurrent="details" + current="index" + subcurrent="%s"|args:$subcurrent + subsubcurrent="amortization" type_immo=$_GET.type_immo - autres_amort=$free_amort_lines + autres_amort=$autres_amortissements }} {{if $_GET.ok}} - {{if $_GET.msg|match:"attach_amort"}} - {{:assign msg="Attachement amortissement effectué"}} - {{elseif $_GET.msg|match:"detach_amort"}} - {{:assign msg="Détachement amortissement affectué"}} - {{elseif $_GET.msg|match:"attach_avoir"}} - {{:assign msg="Attachement avoir affectué"}} - {{elseif $_GET.msg|match:"detach_avoir"}} - {{:assign msg="Détachement avoir affectué"}} + {{if $_GET.msg|match:"attach"}} + {{:assign msg="Attachement écriture %s effectué"|args:$_GET.trans_id}} + {{elseif $_GET.msg|match:"detach"}} + {{:assign msg="Détachement écriture %s affectué"|args:$_GET.trans_id}} {{elseif $_GET.msg|match:"amortissement"}} {{:assign msg="Amortissement enregistré"}} - {{elseif $_GET.msg|match:"modif"}} - {{:assign msg="Modifications enregistrées"}} {{/if}}{{$msg}}
{{elseif $_GET.err}} {{if $_GET.msg|match:"attach"}} - {{:assign msg="Échec attachement amortissement"}} + {{:assign msg="Échec attachement"}} {{elseif $_GET.msg|match:"amortissement"}} {{:assign msg="Échec enregistrement amortissement"}} {{/if}} @@ -97,174 +157,100 @@{{:linkbutton label="Sortir du bilan" - href="balance_sheet_exit.html?immo_doc_id=%s&type_immo=%s"|args:$_GET.immo_doc_id:$_GET.type_immo + href="balance_sheet_exit.html?immo_id=%s&type_immo=%s"|args:$_GET.immo_id:$_GET.type_immo shape="export" class="main" }}
- Il sera possible de choisir la date de sortie et d'indiquer - le montant de la cession le cas échéant. + Il sera possible de choisir la date de sortie, d'indiquer + le montant de la cession le cas échéant et de modifier les + comptes associés.
-| N° | -Date | -Libellé | -Montant | -- - - {{#foreach from=$linked_immos item="line"}} - {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - |
|---|---|---|---|---|
| #{{$line.trans_id}} | -{{$line.date|date_short}} | -{{$line.label}} | -{{"%f"|math:$line.amount|money_currency_html:false|raw}} | -- {{if ! $created_amort}} - {{:linkbutton label="Détacher" href="detach_credit.html?immo_doc_id=%s&credit_line_id=%s"|args:$_GET.immo_doc_id:$line.credit_line_id shape="minus"}} - {{/if}} - | -
| N° | +N° | Date | -Libellé | Montant | -Valeur nette | +Solde | +Libellé | N° compte | Compte | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #{{$line.trans_id}} | -{{$line.date|date_short}} | +#{{$line.amort_trans_id}} | +{{$line.amort_date|date_short}} | +{{"%f"|math:$line.amort_amount|money}} | +{{"%f"|math:$solde|money:false}} | - {{$line.trans_label}} - {{if $line.line_label != null && $line.line_label != $line.trans_label}} - — {{$line.line_label}} + {{if $line.amort_label == null}} + {{$line.trans_label}} + {{else}} + {{$line.amort_label}} {{/if}} | -{{"%f"|math:$line.amount|money_html:false|raw}} | -{{"%f"|math:$solde|money_html:false|raw}} | -{{$line.account_code}} | +{{$line.account_code}} | {{$line.account_label}} | -- {{if ! $created_amort}} - {{:linkbutton label="Détacher" href="detach_amort.html?immo_doc_id=%s&amort_line_id=%s"|args:$_GET.immo_doc_id:$line.line_id shape="minus"}} - {{/if}} + | + {{:linkbutton label="Détacher" href="detach_amort.html?amort_id=%d&immo_id=%d"|args:$line.amort_line:$ligne_immo.immo_id shape="minus"}} |
Aucun amortissement enregistré pour cette immobilisation
{{/if}} -{{if $free_amort_lines && ! $created_amort}} -
- 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 ; utilisez le bouton « Enregistrer un amortissement » pour enregistrer un nouvel 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 « Attacher un amortissement » pour les afficher ; vous pourrez choisir d'en attacher certaines à cette immobilisation.
+
- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -
-- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -
-Configuration enregistrée.
-{{/if}} - -{{* récupérer l'exercice courant ou sinon le plus récent *}} -{{:assign var="selected_year" from="logged_user.preferences.accounting_year"}} -{{if $selected_year == null}} - {{* sélectionner l'exercice le plus probable *}} - {{#years}} - {{if $start_date|strtotime <= $now && $end_date|strtotime >= $now}} - {{:assign selected_year=$id}} - {{:break}} - {{/if}} - {{:assign last_year=$id}} - {{/years}} -{{/if}} - -{{if $selected_year == null}} - {{if $last_year == null}} -Aucun exercice
- {{else}} - {{:assign selected_year=$last_year}} - {{/if}} -{{/if}} -{{if $selected_year != null}} - - {{* libellés des comptes d'immobilisation amortissables *}} - {{:assign condition="("}} - {{#foreach from=$module.config.prefixes item="code"}} - {{:assign code=$code|quote_sql}} - {{:assign condition=$condition|cat:" account.code = "|cat:$code|cat:" OR "}} - {{/foreach}} - {{:assign condition=$condition|cat:"0)"}} - {{:assign condition=$condition|cat:" AND year.id = %s"|args:$selected_year}} - - {{#select - account.id as account_id, - account.code, - account.label - FROM acc_accounts AS account - INNER JOIN acc_charts AS chart ON chart.id = account.id_chart - INNER JOIN acc_years AS year ON year.id_chart = chart.id - WHERE !condition - ; - !condition=$condition - }} - {{:assign var="immo_accounts.%s"|args:$code label=$label}} - {{/select}} - - {{* libellés des comptes d'immobilisation en cours de constitution *}} - {{: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|quote_sql}} - {{:assign condition=$condition|cat:" account.code = "|cat:$code|cat:" OR "}} - {{/foreach}} - {{:assign condition=$condition|cat:"0)"}} - {{:assign condition=$condition|cat:" AND year.id = %s"|args:$selected_year}} - - {{#select - account.id as account_id, - account.code, - account.label - FROM acc_accounts AS account - INNER JOIN acc_charts AS chart ON chart.id = account.id_chart - INNER JOIN acc_years AS year ON year.id_chart = chart.id - WHERE !condition - ; - !condition=$condition - }} - {{:assign var="unfinished_accounts.%s"|args:$code label=$label}} - {{/select}} - {{if $unfinished_accounts|count == 0}} - {{:assign var="unfinished_accounts.%s"|args:$config_defaut.unfinished.0.code label=$config_defaut.unfinished.0.label}} - {{/if}} - -- Les immobilisations amortissables sont cherchées dans les comptes sélectionnés et leurs sous-comptes. -
- -| Compte | -- |
|---|---|
| - {{:assign var="immo_account.%s.%s"|args:$code:$code value="%s — "|args:$code|cat:$elem.label}} - {{:assign var="current_account" from="immo_account.%s"|args:$code}} - {{:input - type="list" - name="immo_accounts[]" - target="!acc/charts/accounts/selector.php?codes=%s*&id_year=%d"|args:$code:$selected_year - default=$current_account - }} - | -- {{if ! $code|in:$config_defaut.prefixes}} - {{:button - label="Enlever" - shape="minus" - min="1" - name="remove_line" - }} - {{/if}} - | -
| - | {{:button shape="plus" label="Ajouter" title="Ajouter un compte"}} | -
- Ces immobilisations ne sont pas amortissables ; elles sont cherchées dans les comptes sélectionnés et leurs sous-comptes. -
- -| Compte | -- |
|---|---|
| - {{:assign var="unfinished_account.%s.%s"|args:$code:$code value="%s — "|args:$code|cat:$elem.label}} - {{:assign var="current_account" from="unfinished_account.%s"|args:$code}} - {{:input - type="list" - name="unfinished_accounts[]" - target="!acc/charts/accounts/selector.php?codes=%s*&id_year=%d"|args:$code:$selected_year - default=$current_account - }} - | -- {{if $unfinished_lines|strpos:$code === false}} - {{:button - label="Enlever" - title="Enlever une ligne" - shape="minus" - min="1" - name="remove_line" - }} - {{/if}} - | -
| - | {{:button shape="plus" label="Ajouter" title="Ajouter un compte"}} | -
- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -
-Appliquer l'opération « {{$action}} » sur les écritures :
+| N° | +Libellé | +
| #{{$trans_id}} | +{{$label}} | +
+ {{:button type="submit" name="validate" label="Confirmer" shape="right" class="main"}} +
+Ce module permet de :
-Il permet aussi de transformer des -immobilisations en cours de constitution en immobilisations -amortissables.
-Les immobilisations créées avant -la mise en service du module sont détectées par le module mais il -faut renseigner leurs paramètres (au minimum, la durée d’amortissement) -pour que le module puisse les gérer.
-Les amortissements créés avant la mise en service du module sont -détectées par le module mais il faut les attacher manuellement aux -immobilisations correspondantes.
-Cliquer le bouton Ajouter une immobilisation qui est présent -sur plusieurs onglets ; dans la fenêtre de saisie qui s’affiche il -suffit de saisir les données de l’immobilisation puis de cliquer -Ajouter :
-Après création, l’immobilisation est classée dans l’onglet -Amortissables.
-Lorsqu’on acquiert une immobilisation, il se peut que par la suite on -obtienne une ristourne sous forme d’avoir ; cet avoir est enregistré -dans Paheko par une écriture dont le montant est au crédit du compte -d’immobilisation ; il est important d’attacher cette écriture d’avoir à -l’écriture d’immobilisation. En effet, le montant amortissable est égal -au montant d’acquisition de l’immobilisation moins la somme des -avoirs.
-Tant qu’on n’a pas créé d’amortissement pour une immobilisation, il -est possible d’attacher une écriture d’avoir à l’écriture -d’immobilisation.
-Pour cela, cliquer le bouton Détails en face de -l’immobilisation concernée puis Attacher une écriture d’avoir ; -s’il existe des écritures au crédit du compte de l’immobilisation, on -pourra en sélectionner une pour l’associer à l’écriture -d’immobilisation ; son montant sera ensuite déduit du montant de -l’immobilisaiton pour calculer le montant des amortissements.
-Si l’avoir a été reçu après la création du premier amortissement, il -suffit de supprimer l’écriture d’amortissement et de procéder comme -ci-dessus pour attacher l’avoir ; il faudra ensuite recréer -l’amortissement.
-Une écriture d’amortissement se fait à la date de clôture de -l’exercice. Les amortissements sont calculés selon la méthode linéaire : -montant à amortir divisé par durée d’amortissement en années.
-À partir de l’onglet Amortissables, cliquer le bouton
-Détails en face de l’immobilisation choisie.
-Avant d’enregistrer un nouvel amortissement, il peut être utile de
-vérifier avec le bouton Attacher un amortissement s’il existe
-des écritures d’amortissement qui n’ont pas encore été attachées à
-l’immobilisation (cas des immobilisations et amortissements créés en
-dehors du module) ; voir ci-dessous la rubrique Attacher un amortissement à une
-immobilisation.
Cliquer le bouton Enregistrer un amortissement ; dans la -fenêtre de saisie, les informations sont calculées et pré-remplies par -le modules ; en général, il n’est pas nécessaire de les modifier :
-Après enregistrement, le nouvel amortissement apparaît dans la liste -des amortissements de l’immobilisation.
-Lorsqu’une immobilisation est totalement amortie, elle est classée -dans l’onglet Amorties.
-Les immobilisations créées avant la mise en service du -module sont regroupées dans l’onglet À classer. On distingue -deux cas :
-Cliquer le bouton Paramètres en face de l’immobilisation à -prendre en charge et choisir comment sera considérée -l’immobilisation :
-Le seul paramètre obligatoire est la durée d’amortissement en -années ; les autres paramètres sont pré-remplis à partir de l’écriture -d’immobilisation ; dans la majorité des cas, il n’est pas nécessaire de -les modifier.
-Après enregistrement, l’immobilisation est classée dans l’onglet -Amortissables ; on peut vérifier et éventuellement modifier ses -paramètres grâce au bouton Détails
-Si des amortissements ont été enregistrés pour cette immobilisation -avant la mise en service du module, on pourra les attacher à -l’immobilisation : voir ci-dessous la rubrique Attacher un amortissement à une -immobilisation
-Pour une immobilisation créée et sortie du bilan avant la mise en -service du module, un certain nombre d’écritures sont enregistrées dans -Paheko :
-Le module donne la possibilité de les attacher à l’immobilisation en -plusieurs étapes :
-Une fois cette étape validée, l’immobilisation sera classée dans -l’onglet Sorties du bilan.
-Les immobilisations et amortissements créés dans une comptabilité -antérieure à Paheko peuvent aussi être pris en charge par le module ; -ces immobilisations et amortissements figurent dans le bilan du -dernier exercice de l’ancienne comptabilité et doivent -obligatoirement se retrouver dans la balance d’ouverture du premier -exercice créé dans Paheko ; cette balance comporte, pour chaque -compte d’immobilisation, le montant total des immobilisations -de ce compte. Il va donc être nécessaire de répartir le montant d’un -compte entre les différentes immobilisations dont il est composé. Il en -est de même pour les amortissements.
-Il faut donc obligatoirement disposer des informations ci-dessous -pour chaque immobilisation à incorporer :
-Remarque : les immobilisations créées et sorties -du bilan dans une comptabilité antérieure à Paheko ne figurent plus -au bilan (!) et n’apparaissent donc pas dans la balance d’ouverture du -premier exercice créé dans Paheko ; on n’a donc pas à s’en -(pré)occuper.
-L’exemple ci-dessous montre un extrait de la balance d’ouverture du -premier exercice créé dans Paheko et reprend une partie du bilan du -dernier exercice d’une comptabilité antérieure à Paheko.
-
-
-Dans l’onglet À classer on trouve les immobilisations de la -balance d’ouverture :
-
-
-Pour saisir les paramètres de la première immobilisation du compte -2181, cliquer le bouton Paramètres, puis cocher le choix -« Immobilisation à amortir ».
-Les paramètres sont pré-remplis à partir des données de l’écriture de -la balance d’ouverture et seront donc à modifier en fonction des données -de l’immobilisation concernée.
-
-
-Après validation, cette immobilisation se retrouve classée dans les -immobilisations amortissables :
-
-
-et dans l’onglet À classer on trouve le montant affecté à la -première immobilisation.
-
-
-On fait de même pour la deuxième immobilisation du compte 2181 puis -pour les trois immobilisations du compte 2185 et on obtient :
-
-
-et l’onglet À classer est vide.
-Si des amortissements ont été enregistrés pour une ou plusieurs -immobilisations avant la mise en service du module, on pourra les -attacher à leur immobilisation : voir ci-dessous la rubrique Attacher un amortissement à une -immobilisation.
-Si des écritures d’amortissement ont été saisies avec Paheko -avant la mise en service du module Amortissements, on -peut les attacher à leur immobilisation :
---« 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. »
-
est présente, c’est qu’il existe des écritures d’amortissement -saisies avec Paheko avant la mise en service du module.
-Le montant affiché est celui de l’écriture d’amortissement ; il -suffit de valider.
-Rappel : ces amortissements sont présents dans la balance -d’ouverture du premier exercice créé dans Paheko ; cette balance inclut, -pour chaque compte d’amortissement, le montant total des -amortissements de ce compte à la date de fin du dernier exercice de -la comptabilité antérieure à Paheko ; ce montant devra donc être -réparti entre les différentes immobilisations concernées.
-Exemple : le montant qui figure dans la balance -d’ouverture pour le compte 28185 est de 7058,06€ réparti ainsi :
-Voici la page des détails du Saxophone avant l’attachement des -amortissements de la balance d’ouverture :
-
-
-Cliquer le bouton Attacher un amortissement ; la liste des -amortissements du compte 28185 s’affiche :
-
-
-Sur la page qui s’ouvre quand on clique Attacher, il faut -modifier le montant affiché (7058,06) en indiquant le montant des -amortissements de l’immobilisation (1016,43).
-
-
-De retour sur la page des amortissements, on constate la présence de -l’écriture d’amortissement qu’on vient d’attacher ; on peut détacher une -écriture si on s’est trompé.
-
-
-On peut faire de même pour les amortissements des autres -immobilisations du compte 2185 (Batterie et Piano) puis pour celles du -compte 2181 et l’on obtient :
-
-
-Les immobilisations et amortissements de la balance d’ouverture -initiale ont été incorporés en totalité dans le module.
-Par la suite, pour créer de nouveaux amortissements, il suffit de -procéder comme pour une -immobilisation standard.
-Tant qu’une immobilisation est utilisée dans l’association, elle -reste au bilan, même si elle est totalement amortie.
-On doit la sortir du bilan quand elle n’est plus utilisée (vétusté, -hors service) ou quand elle est donnée ou vendue (dans ce cas, on parle -de cession).
-Cliquer le bouton Détails en face de l’immobilisation à -sortir du bilan, puis cliquer Sortir du bilan.
-Après validation, l’immobilisation est classée dans l’onglet
-Sorties du bilan.
-En cas de besoin, il est possible de parcourir les différentes étapes
-pour vérifier les attachements et éventuellement en modifier certains en
-cliquant le bouton Modifier.
L’onglet En cours regroupe des immobilisations en cours de -constitution (classe 23 et sous-comptes) ; ces immobilisations ne sont -pas amortissables, mais sont destinées à être groupées pour former une -nouvelle immobilisation qui pourra être amortie.
-Pour ce faire, cocher les lignes à grouper puis cliquer -Transférer.
-
-
-Sur la page qui s’ouvre, saisir les données de la nouvelle -immobilisation :
-Après validation, la nouvelle immobilisation sera classée dans -l’onglet Amortissables.
-Si on dé-coche la case Amortir…, l’immobilisation ne sera -pas amortie et sera marquée ignorée. On pourra la retrouver -dans l’onglet À classer en cochant la case Afficher les -écritures ignorées.
diff --git a/doc/exemple_amortissement-saxo-2.png b/doc/exemple_amortissement-saxo-2.png deleted file mode 100644 index b60d936..0000000 Binary files a/doc/exemple_amortissement-saxo-2.png and /dev/null differ diff --git a/doc/exemple_amortissement-saxo.png b/doc/exemple_amortissement-saxo.png deleted file mode 100644 index f611407..0000000 Binary files a/doc/exemple_amortissement-saxo.png and /dev/null differ diff --git a/doc/exemple_amortissements_a_repartir.png b/doc/exemple_amortissements_a_repartir.png deleted file mode 100644 index 14e8cbe..0000000 Binary files a/doc/exemple_amortissements_a_repartir.png and /dev/null differ diff --git a/doc/exemple_balance-initiale.png b/doc/exemple_balance-initiale.png deleted file mode 100644 index 49ffccd..0000000 Binary files a/doc/exemple_balance-initiale.png and /dev/null differ diff --git a/doc/exemple_immobilisations_a_classer-1.png b/doc/exemple_immobilisations_a_classer-1.png deleted file mode 100644 index 7d733fd..0000000 Binary files a/doc/exemple_immobilisations_a_classer-1.png and /dev/null differ diff --git a/doc/exemple_immobilisations_a_classer-2.png b/doc/exemple_immobilisations_a_classer-2.png deleted file mode 100644 index 6bf9501..0000000 Binary files a/doc/exemple_immobilisations_a_classer-2.png and /dev/null differ diff --git a/doc/exemple_immobilisations_amortissables-1.png b/doc/exemple_immobilisations_amortissables-1.png deleted file mode 100644 index 1849504..0000000 Binary files a/doc/exemple_immobilisations_amortissables-1.png and /dev/null differ diff --git a/doc/exemple_immobilisations_amortissables-2.png b/doc/exemple_immobilisations_amortissables-2.png deleted file mode 100644 index 4341016..0000000 Binary files a/doc/exemple_immobilisations_amortissables-2.png and /dev/null differ diff --git a/doc/exemple_immobilisations_amortissables-3.png b/doc/exemple_immobilisations_amortissables-3.png deleted file mode 100644 index 4b3602f..0000000 Binary files a/doc/exemple_immobilisations_amortissables-3.png and /dev/null differ diff --git a/doc/exemple_immobilisations_en-cours-1.png b/doc/exemple_immobilisations_en-cours-1.png deleted file mode 100644 index f94b347..0000000 Binary files a/doc/exemple_immobilisations_en-cours-1.png and /dev/null differ diff --git a/doc/exemple_parametres_immobilisation-1.png b/doc/exemple_parametres_immobilisation-1.png deleted file mode 100644 index a89169d..0000000 Binary files a/doc/exemple_parametres_immobilisation-1.png and /dev/null differ diff --git a/doc/exemple_saisie-amortissement-saxo.png b/doc/exemple_saisie-amortissement-saxo.png deleted file mode 100644 index 35a763b..0000000 Binary files a/doc/exemple_saisie-amortissement-saxo.png and /dev/null differ diff --git a/exit_step1.html b/exit_step1.html deleted file mode 100644 index 3ffa2cd..0000000 --- a/exit_step1.html +++ /dev/null @@ -1,218 +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 $label_immo|strpos:$ligne_immo.line_label === false}} - {{: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 -*}} -{{:assign account_code=$ligne_immo.account_code|cat:"%"}} -{{#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, - account.id as account_id, - account.code as account_code, - account.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 account ON line.id_account = account.id - LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id - WHERE - account.code LIKE :account_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" - ) - ; - :account_code=$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é *}} -{{#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 - 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.from == "exit"}} - {{:assign current="other"}} -{{else}} - {{:assign current="archived"}} -{{/if}} - -{{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}} - -| 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"}} - | -
- 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}} - -- {{:button type="submit" name="proceed" label="Poursuivre" shape="right" class="main"}} -
-{{$msg}}
-{{/if}} - -| N° | -Date | -Libellé | -Montant | -N° compte | -Compte | -- |
| #{{$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"}} - | -
- Vous pouvez attacher une ou plusieurs écritures d'amortissement à l'immobilisation -
-{{else}} -- Aucune écriture d'amortissement à rattacher ; vous pouvez passer à la suite -
-{{/if}} - -- {{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}} - {{:button type="submit" name="forward" label="Poursuivre" shape="right" class="main"}} -
-{{$msg}}
-{{/if}} - -| N° | -Date | -Libellé | -Montant | -N° compte | -Compte | -- |
| #{{$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"}} - | -
- Vous pouvez attacher une écriture de cession à l'immobilisation -
-{{else}} -- Aucune écriture de cession -
-{{/if}} - -- {{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}} - {{:button type="submit" name="forward" label="Poursuivre" shape="right" class="main"}} -
-{{$msg}}
-{{/if}} - -{{$message}}
- {{if $erreur == 1}}
- Vérifiez si vous avez correctement attaché les écritures d'amortissement.
- {{elseif $erreur == 2}}
- Vérifiez si vous avez correctement attaché les éventuelles écritures d'avoir.
- {{/if}}
-
| Numéro | -Compte | -Débit | -Crédit | -Libellé | -
| {{$line.account_code}} | -{{$line.account_label}} | -{{$line.debit|money_currency:false}} | -{{$line.credit|money_currency:false}} | -{{$line.line_label}} | -
| 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"}} - | -
- Vous pouvez attacher une écriture de sortie de bilan à l'immobilisation -
-{{/if}} - -{{if $exit_lines}} -{{* -| N° | -Date | -Libellé | -Montant | -N° compte | -Compte | -- |
| #{{$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"}} - | -
Aucune écriture de sortie de bilan avec un
- montant de {{$solde|money_currency_html:false|raw}} au crédit du
- compte {{$ligne_immo.account_code}} — {{$ligne_immo.account_label}} ;
-
- Vérifiez si vous avez correctement attaché les éventuelles écritures d'avoir.
-
- Si vous avez supprimé l'écriture de sortie de bilan, il faut
- la recréer avant de pouvoir classer cette immobilisation
- « Sortie du bilan » !
-
- {{:button type="submit" name="backward" label="Revenir à l'étape précédente" shape="left" class="main"}} - {{if $exit_line && ! $erreur}} - {{:button type="submit" name="validate" label="Terminer" shape="check" class="main"}} - {{else}} - {{:button type="submit" name="cancel" label="Annuler" shape="delete" class="main"}} - {{/if}} -
-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}} - -- Les écritures dont le libellé contient un des textes ci-dessous seront ignorées -
- -| Libellé | -- |
|---|---|
| - {{:input type="text" name="filters[]" required=false}} - | -- {{:button - label="Enlever" - title="Enlever une ligne" - shape="minus" - name="remove_line" - }} - | -
| - {{:input type="text" name="filters[]" default=$filter required=false}} - | -- {{:button - label="Enlever" - title="Enlever une ligne" - shape="minus" - name="remove_line" - }} - | -
| - | {{:button shape="plus" label="Ajouter" title="Ajouter un libellé"}} | -
- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -
-- {{:button type="submit" name="proceed" label="Confirmer" shape="right" class="main"}} -
- -{{$msg}}
{{elseif $_GET.err}}Échec enregistrement immobilisation
{{/if}} -{{if $type_immo == "other"}} +{{#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 == "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}} + {{:admin_footer}} 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 2a049dc..0000000 --- a/link_immo.html +++ /dev/null @@ -1,153 +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 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}} - -{{: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}} -{{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="linked_immos, total_credits"}} -{{:assign solde="%d-%d"|math:$montant_immo:$total_credits}} - -{{* - lister les écritures au crédit du compte de l'immobilisation -*}} -{{if $_GET.filter}} - {{:assign account_code=$ligne_immo.account_code|cat:"%"}} -{{else}} - {{:assign account_code=$ligne_immo.account_code|substr:0:2|cat:"%"}} -{{/if}} -{{:assign date_immo=$info_immo.date_achat|or:$ligne_immo.date_achat}} - -{{#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 LIKE :account_code AND credit > 0 - AND trans.date >= :date_immo - 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" - 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") - ORDER BY trans.date, trans.label; - :account_code = $account_code - !table = $module.table - :date_immo = $date_immo - assign="credit_line" - }} - {{if $credit_line.credit_amount < $solde}} - {{:assign var="other_immos." value=$credit_line}} - {{/if}} -{{/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}} - - - -| N° | -Date | -Montant | -Libellé | -N° compte | -Compte | -- |
|---|---|---|---|---|---|---|
| #{{$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&from=%s"|args:$line.credit_line_id:$_GET.immo_doc_id:$_GET.from shape="plus"}} - | -
Aucune écriture au crédit du compte « {{$ligne_immo.account_code}} »
- {{/if}} -| N° | -Date | -Libellé | -Montant | -N° compte | -Compte | -- |
| #{{$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"}} - | -
| N° | -Date | -Libellé | -Montant | -N° compte | -Compte | -- |
| #{{$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"}} - | -
- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -
-| N° | Date | -Libellé | Montant | +Libellé | N° compte | Compte | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #{{$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&from=%s"|args:$_GET.immo_doc_id:$line.line_id:$_GET.from shape="plus"}} + | + {{:linkbutton label="Attacher" href="attach_amort.html?amort_id=%d&immo_id=%d"|args:$line.l_id:$_GET.immo_id shape="plus"}} |
Aucun amortissement pour le compte {{$code_amort}}
- {{/if}} -La date choisie n'est dans aucun exercice ouvert !
-| Compte | -Débit | -Crédit | -Libellé ligne | -Projet | -
|---|---|---|---|---|
| - {{:input - type="list" - name="credit_accounts[]" - required=true - readonly=true - target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$code:$selected_year - default=$current_account - }} - | -{{:input name="credit_lines[]" type="text" class="money" size="8" default=$amount|money}} | -{{:input name="debit_lines[]" type="text" class="money" size="8" disabled=true}} | -{{:input type="text" name="line_labels[]" size="40" default=$line_label}} | -- {{if $projects != null}} - {{:input type="select" name="id_project" options=$projects default_empty="— Aucun —"}} - {{/if}} - | -
| - {{:input - type="list" - name="debit_account" - label="Compte d'immobilisation amortissable" - required=true - target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:$patterns:$selected_year - }} - | -{{:input name="credit_lines[]" type="text" class="money" size="8" disabled=true}} | -{{:input name="debit_lines[]" type="text" class="money" size="8" default=$total|money}} | -{{:input type="text" name="line_labels[]" size="40"}} | -- {{if $projects != null}} - {{:input type="select" name="id_project" options=$projects default_empty="— Aucun —"}} - {{/if}} - | -
- {{:button type="submit" name="transfer" label="Transférer" shape="right" class="main"}} -
- -Mise à jour vers version {{$tag}} terminée
-{{/if}} - -{{* version 0.33 *}} -{{:assign tag="0.33"}} - -{{:include file="_compare_version.tpl" nv1=$module_version nv2=$tag keep="comp"}} -{{:assign module_comp=$comp}} -{{:include file="_compare_version.tpl" nv1=$module.config.version nv2=$tag keep="comp"}} -{{:assign config_comp=$comp}} - -{{if $module_comp >= 0 && $config_comp < 0}} -{{* $module_version >= '0.33' && $module.config.version < '0.33' *}} - - {{:include file="_upgrade_to033.tpl"}} -Mise à jour vers version {{$tag}} terminée
-{{/if}} - -{{* enregistrer le nouveau numéro de version dans la config du module *}} -{{:include file="_compare_version.tpl" nv1=$module_version nv2=$module.config.version keep="comp"}} -{{if $comp > 0}} - {{:save key="config" version=$module_version}} -Nouvelle version enregistrée : {{$module_version}}
-{{/if}} diff --git a/write_exit.html b/write_exit.html index cc3921a..591e803 100644 --- a/write_exit.html +++ b/write_exit.html @@ -3,49 +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}} -{{: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}} +{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_id|intval}} +{{/load}} -{{: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}} +{{* 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}} @@ -55,12 +68,19 @@ {{: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 *}} {{#form on="save"}} +{{* + {{if $_POST.amort_comp_account != null} + {{:assign account=$_POST.amort_comp_account}} + {{elseif $_POST.amort_except_account != null} + {{:assign account=$_POST.amort_except_account}} + {{elseif $_POST.amort_sortie_account != null} + {{:assign account=$_POST.amort_sortie_account}} + {{/if}} +*}} {{:assign account=$_POST.amort_sortie_account}} {{:include @@ -68,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 *}} @@ -79,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:$label_immo}} + {{:assign libelle="Amortissement complémentaire "|cat:$ligne_immo.label}} {{:assign var="lines." debit="%f/100"|math:$amort_comp @@ -105,8 +125,8 @@ account=$_POST.except_account keep="account_code" }} - {{:assign except_account_code=$account_code|keys|value:0}} - {{:assign libelle="Amortissement exceptionnel "|cat:$label_immo}} + {{: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 @@ -132,23 +152,10 @@ id_year=$_GET.year type="advanced" date=$_GET.exit_date - label="Amortissement final "|cat:$label_immo + 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 - created=true - }} - {{/if}} - {{/foreach}} {{/if}} {{* écriture de sortie du bilan *}} @@ -158,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:$label_immo}} + {{: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 }} @@ -180,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 @@ -200,38 +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 - created=true - }} - {{:break}} - {{/if}} - {{/foreach}} - {{if $montant_cession > 0}} {{* Cession de l'immobilisation *}} - {{:assign libelle="Cession "|cat:$label_immo}} + {{: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" @@ -245,136 +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 - created=true - }} - {{: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:"|"}} -