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..56f6b14 100644 --- a/_archives.html +++ b/_archives.html @@ -5,6 +5,7 @@ Cette page liste les immobilisations sorties du bilan

+{{* Immobilisation avec une écriture de sortie de bilan *}} {{:include file="_get_config.html" keep="module.config"}} {{* lister les immobilisations *}} @@ -34,6 +35,7 @@ Montant N° compte Compte + Projet @@ -53,61 +55,58 @@ line.debit AS debit, account.id as account_id, account.code as account_code, - account.label as account_label + account.label as account_label, + project.label as project_label FROM acc_transactions AS trans INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id INNER JOIN acc_accounts AS account ON line.id_account = account.id INNER JOIN acc_years AS years ON trans.id_year = years.id + LEFT JOIN acc_projects AS project ON line.id_project = project.id WHERE !condition ORDER BY trans.date DESC; !condition=$condition }} - - {{* voir si l'immo est prise en charge *}} - {{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id assign="info_immo"}} - {{:assign status=$status}} - {{else}} - {{:assign status=null}} - {{/load}} - {{if $status != "archived"}} - {{:continue}} - {{/if}} - {{:assign date_mes=$info_immo.date_mes|or:$trans_date}} {{:assign montant_immo=$debit}} - {{* chercher le doc de sortie du bilan *}} - {{:assign exit_date=null}} - {{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$info_immo.id}} - {{:assign exit_line_id=$exit_line_id}} - {{#select - trans.date - FROM acc_transactions_lines AS line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE line.id = :exit_line_id; - :exit_line_id=$exit_line_id - }} - {{:assign exit_date=$date}} - {{/select}} + {{* voir si l'immo est prise en charge *}} + {{#load type="immo" where="$$.line = :line_id" :line_id=$immo_line_id|intval}} + {{:assign status=$status}} + {{else}} + {{:assign amortissable="nsp"}} + {{:assign status="unknown"}} {{/load}} + {{if $status == "ignored"}} + {{:continue}} + {{/if}} - {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} + {{* chercher des écritures liées à l'immo courante au crédit du même compte + et déduire leur montant de celui de l'immo + *}} + {{:assign solde_immo=$montant_immo}} {{:assign credit_immo=null}} - {{:assign total_credits=0}} - {{#load - type="credit_link" - where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $info_immo.id + {{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as other_id, + line.credit, + MAX(trans2.date) as exit_date + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (trans.id = links.id_transaction OR trans.id = links.id_related) + INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + INNER JOIN acc_transactions AS trans2 ON trans2.id = other_id + WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account + ORDER BY trans2.date, trans2.id + ; + :immo_trans_id=$trans_id + :account=$account_code + assign="credit_immo." }} - {{if $amount == null}} - {{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id; - :credit_line_id=$credit_line_id - }} - {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} - {{/select}} - {{else}} - {{:assign total_credits="%d+%d"|math:$total_credits:$amount}} - {{/if}} - {{/load}} - {{:assign solde_immo="%d-%d"|math:$montant_immo:$total_credits}} + {{:assign solde_immo="%d-%d"|math:$solde_immo:$credit}} + {{:assign exit_date=$exit_date}} + {{/select}} {{if $solde_immo == 0}} {{:assign status="archived"}} @@ -117,6 +116,11 @@ {{:continue}} {{/if}} + {{:assign nb=$credit_immo|count}} + {{:assign nb="%d-1"|math:$nb}} + {{:assign var="last_credit" from="credit_immo.%d"|args:$nb}} + {{:assign montant_immo=$last_credit.credit}} + {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$trans_id}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}} {{:assign nb_immo="%d+1"|math:$nb_immo}} @@ -145,15 +149,15 @@ {{/select}} - #{{$trans_id}} - {{$date_mes|date_short}} + #{{$trans_id}} + {{$trans_date|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}} + {{$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"}} {{/select}} @@ -172,6 +176,7 @@ {{$value|money_html:false|raw}} + {{/foreach}} @@ -183,6 +188,7 @@ {{$total_immo|money_html:false|raw}} + {{/if}} @@ -199,6 +205,7 @@ {{$value|money_html:false|raw}} + {{/foreach}} @@ -210,6 +217,7 @@ {{$total_cessions|money_html:false|raw}} + {{/if}} 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_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..d287632 100644 --- a/_immobilisations.html +++ b/_immobilisations.html @@ -3,16 +3,16 @@ {{* Liste des immobilisations en cours d'amortissement 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é - {{/if}} -

+

+ {{if $type_immo == "managed"}} + Cette page liste les immobilisations en cours d'amortissement + {{elseif $type_immo == "amortized"}} + Cette page liste les immobilisations dont l'amortissement est terminé + {{/if}} +

-{{if $module.table != null}} @@ -29,6 +29,14 @@ + {{* vérifier l'existence de la table du module *}} + {{#load limit="1"}} + {{:assign table_presente=true}} + {{else}} + {{:assign table_presente=false}} + {{/load}} + + {{if $table_presente}} {{* lister les immobilisations *}} {{:assign account_condition="("}} {{#foreach from=$module.config.prefixes item="code"}} @@ -36,8 +44,17 @@ {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} {{/foreach}} {{:assign account_condition=$account_condition|cat:"0)"}} - {{:assign status_condition="($$.status = 'managed' OR $$.status = 'amortized')"}} - {{:assign condition=$account_condition|cat:" AND line.debit > 0 AND "|cat:$status_condition}} + {{:assign doc_condition="($$.status <> 'ignored' AND $$.status <> 'archived')"}} + + {{:assign filter_condition="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 filter_condition="($$.status IS NULL AND NOT (trans.status & 16) AND "|cat:$filter_condition|cat:")"}} + + {{:assign condition=$account_condition|cat:" AND debit > 0 AND ("|cat:$filter_condition|cat:" OR "|cat:$doc_condition|cat:")"}} {{:assign nb_immo=0}} {{:assign total_immo = 0}} @@ -51,81 +68,152 @@ account.id as account_id, account.code as account_code, trans.id_year as trans_id_year, - info.id as immo_doc_id, $$.duration as duration, - $$.label as doc_label, - $$.amount as doc_amount, - $$.date_achat as doc_date_achat, - $$.date as doc_date_mes, $$.status as status FROM acc_transactions AS trans INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id INNER JOIN acc_accounts AS account ON line.id_account = account.id INNER JOIN acc_years AS years ON trans.id_year = years.id - INNER JOIN !table AS info ON $$.line = line.id + LEFT JOIN !table AS info ON $$.line = line.id WHERE !condition - ORDER BY COALESCE(doc_date_achat, trans_date) DESC; + ORDER BY trans.date DESC; !table=$module.table !condition=$condition }} - {{if $status != "managed" && $status != "amortized"}} - {{:continue}} - {{/if}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$immo_trans_id}} {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}} - {{:assign montant_immo=$doc_amount|or:$debit}} - {{:assign immo_date = $doc_date_achat|or:$trans_date}} - {{:assign label_immo=$doc_label|or:$trans_label}} - {{if $label_immo|strpos:$line_label === false}} - {{:assign label_immo=$label_immo|cat:" — "|cat:$line_label}} + {{:assign duration=$duration}} + {{:assign montant_immo=$debit}} + {{if $status == null}} + {{:assign status="unknown"}} {{/if}} - {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} - {{#load - type="credit_link" - where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $immo_doc_id - }} - {{if $amount == null}} - {{#select credit FROM acc_transactions_lines WHERE id = :credit_line_id; - :credit_line_id=$credit_line_id - }} - {{:assign montant_immo="%d-%d"|math:$montant_immo:$credit}} - {{/select}} - {{else}} - {{:assign montant_immo="%d-%d"|math:$montant_immo:$amount}} - {{/if}} - {{/load}} + {{* chercher des écritures liées à l'immo courante au crédit du même compte + et déduire leur montant de celui de l'immo + *}} + {{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as other_id, + line.credit + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (trans.id = links.id_transaction OR trans.id = links.id_related) + INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; + :immo_trans_id=$immo_trans_id + :account=$account_code + }} + {{:assign montant_immo="%d-%d"|math:$montant_immo:$credit}} + {{/select}} + {{* Immobilisation soldée ? *}} + {{* TODO marquer archivée *}} {{if $montant_immo == 0}} - {{* Immobilisation soldée *}} {{:continue}} {{/if}} - {{* montant des amortissements liés à l'immobilisation *}} - {{:include file="./_get_amort_lines.html" immo_doc_id=$immo_doc_id keep="total_amort"}} - {{:assign amort_amount=$total_amort}} + {{* lister les lignes des écritures d'amortissement liées à l'immobilisation *}} + {{:assign amort_lines=null}} + {{#select + l_amort.credit as amount, + CASE links.id_related = t_immo.id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as amort_trans_id, + l_amort.id AS amort_line_id + 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_accounts AS account ON l_amort.id_account = account.id + WHERE l_immo.id = :line_id AND l_amort.credit <> 0 AND account.code LIKE '28%'; + :line_id = $immo_line_id|intval + assign="line" + }} + {{:assign var="amort_lines.%d."|args:$amort_trans_id value=$line}} + {{/select}} + + {{:assign amort_amount=0}} + {{#foreach from=$amort_lines key="amort_trans_id" item="lines"}} + {{:assign nb=$lines|count}} + {{* lister les docs de liaison de l'écriture d'amortissement *}} + {{:assign links=null}} + {{#load type="link" + where="$$.immo_line_id = :immo_line_id AND $$.amort_trans_id = :amort_trans_id" + :immo_line_id = $immo_line_id + :amort_trans_id = $amort_trans_id + assign="links." + }} + {{/load}} + + {{#foreach from=$lines item="line"}} + {{* voir s'il existe une ligne associée à l'écriture d'amortissement *}} + {{:assign line_link_exist=false}} + {{#foreach from=$links item="link"}} + {{if $link.amort_line_id == $line.amort_line_id}} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$line.amount}} + {{:assign line_link_exist=true}} + {{/if}} + {{/foreach}} + {{if ! $line_link_exist}} + {{if $nb == 1}} + {{* créer la liaison ligne immo <-> ligne amort *}} +{{*:debug lier_immo_line_id=$immo_line_id lier_amort_trans_id=$amort_trans_id avec_amort_line_id=$amort_line_id*}} + {{:save + key=""|uuid + type="link" + immo_line_id=$immo_line_id + amort_line_id=$amort_line_id + amort_trans_id=$amort_trans_id + }} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$line.amount}} + {{/if}} + {{/if}} + {{/foreach}} + {{/foreach}} + + {{if $amort_amount == 0}} + {{:assign exist_amort=false}} + {{else}} + {{:assign exist_amort=true}} + {{:assign amort_amount=$amort_amount}} + {{/if}} {{* classement par onglet *}} {{if $type_immo == "managed" && $amort_amount >= $montant_immo}}{{:continue}}{{/if}} - {{if $type_immo == "amortized" && $amort_amount < $montant_immo}}{{:continue}}{{/if}} + {{if $status == "unknown" && ! $exist_amort}}{{:continue}}{{/if}} + {{if $type_immo == "amortized" && $amort_amount < $montant_immo}}{{:continue}}{{/if}} {{* ?? *}} {{:assign nb_immo="%d+1"|math:$nb_immo}} {{:assign total_immo="%d+%d"|math:$total_immo:$montant_immo}} {{:assign var="montant" from="sommes_immo.%s"|args:$account_code}} {{:assign var="sommes_immo.%s"|args:$account_code value="%d+%d"|math:$montant:$montant_immo}} - - - + + + - + @@ -162,8 +250,9 @@ {{/if}} +{{/if}}
#{{$immo_trans_id}}{{$immo_date|date_short}}{{$label_immo}}#{{$immo_trans_id}}{{$trans_date|date_short}}{{$trans_label}}{{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}} {{$montant_immo|money_html:false|raw}} {{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}} + {{if ! $exist_amort || $status == "unknown"}} + {{:linkbutton + label="Paramètres" + href="add_infos.html?immo_line_id=%s&type_immo=%s"|args:$immo_line_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_line_id=%s&type_immo=%s"|args:$immo_line_id:$type_immo + shape="table" }}
-{{/if}} -{{if $nb_immo == 0 || $module.table == null}} -

Aucune immobilisation

-{{/if}} + {{if $nb_immo == 0 || ! $table_presente}} +

Aucune immobilisation

+ {{/if}} +
diff --git a/_immobilisations_autres.html b/_immobilisations_autres.html index 383ba12..1f08e9b 100644 --- a/_immobilisations_autres.html +++ b/_immobilisations_autres.html @@ -1,188 +1,199 @@ {{* -*- brindille -*- *}} -{{* Liste des immobilisations non gérées ou non entièrement affectées *}} +{{* Liste des immobilisations non amortissables ou non (encore) gérées *}} {{:include file="_get_config.html" keep="module.config"}} -

- 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é -

+
-{{:assign saved_hides=$module.config.hides}} -{{:assign var="user_hides" from="saved_hides.%s"|args:$logged_user.id}} +

+ Cette page liste les écritures pas (encore) prises en charge par le module et sans écriture d'amortissement associée. +

-{{if $_POST|count == 0}} - {{:assign unhide=$user_hides.unhide_other}} -{{else}} - {{if $_POST.unhide == null}} - {{:assign unhide=0}} + {{: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_other}} {{else}} - {{:assign unhide=1}} - {{/if}} - {{:assign var="user_hides.unhide_other" 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}} - -{{* vérifier l'existence de la table du module *}} -{{if $module.table != null}} - {{:assign columns="$$.status as status, SUM($$.amount) as amount,"}} - {{:assign table_join="LEFT JOIN !table AS info ON $$.line = line.id"}} - {{:assign doc_condition="($$.status IS NULL OR $$.status == 'managed' OR $$.status == 'ignored')"}} -{{else}} - {{:assign columns=""}} - {{:assign table_join=""}} - {{:assign doc_condition="1"}} -{{/if}} - -{{* - lister les immobilisations non prises en charge par le module - ou dont le montant n'a pas été totalement affecté -*}} -{{:assign account_condition="("}} -{{#foreach from=$module.config.prefixes item="code"}} - {{:assign code=$code|cat:"%"|quote_sql}} - {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} -{{/foreach}} -{{:assign account_condition=$account_condition|cat:"0)"}} - -{{if $unhide == null}} - {{:assign filter_condition="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)"}} -{{else}} - {{:assign filter_condition="1"}} -{{/if}} - -{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16) AND "|cat:$filter_condition|cat:" AND "|cat:$doc_condition}} - -{{:assign nb_managed=0}} -{{:assign nb_ignored=0}} -{{:assign nb_null=0}} -{{:assign nb_other=0}} -{{#select - trans.id as immo_trans_id, - trans.label as trans_label, - trans.date as trans_date, - line.id as immo_line_id, - line.debit AS debit, - line.label AS line_label, - account.id as account_id, - account.code as account_code, - account.label as account_label, - !columns - 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 - !table_join - WHERE !condition - GROUP BY immo_line_id - ORDER BY trans.date; - !columns=$columns - !table_join=$table_join - !table=$module.table - !condition=$condition - assign="immo_line" - }} - {{* - parmi les immos gérées, ne conserver que celles dont le montant dans le doc est non nul - et inférieur au montant de l'écriture d'immo - *}} - {{if $immo_line.status == 'managed'}} - {{if $immo_line.amount == null || $immo_line.amount == 0 || $immo_line.amount == $immo_line.debit}} - {{:continue}} + {{if $_POST.unhide == null}} + {{:assign unhide=0}} + {{else}} + {{:assign unhide=1}} {{/if}} + {{:assign var="user_hides.unhide_other" value=$unhide"}} + {{:assign var="saved_hides.%s"|args:$logged_user.id value=$user_hides}} + {{:save key="config" hides=$saved_hides}} {{/if}} - {{if $status == null}} - {{:assign nb_null="%d+1"|math:$nb_null}} - {{elseif $status == 'managed'}} - {{:assign nb_managed="%d+1"|math:$nb_managed}} - {{elseif $status == 'ignored'}} - {{:assign nb_ignored="%d+1"|math:$nb_ignored}} - {{else}} - {{:assign nb_other="%d+1"|math:$nb_other}} + {{if $unhide}} + {{:assign checked="checked"}} {{/if}} - {{:assign var="immo_lines." value=$immo_line}} -{{/select}} +
+
+ {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher toutes les écritures" }} +
+
-
-
- {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher les écritures ignorées" }} -
-
+ + + + + + + + + + + + + -{{if $immo_lines|count > 0}} -
DateLibelléMontantN° compteCompte
- - - - - - - - - - - - - - - - {{#foreach from=$immo_lines item="line"}} + {{* vérifier l'existence de la table du module *}} + {{#load limit="1"}} + {{:assign columns="$$.duration as duration, $$.status as status,"}} + {{:assign table_join="LEFT JOIN !table AS info ON $$.line = line.id"}} + {{:assign doc_condition1="($$.status == 'ignored')"}} + {{:assign doc_condition2="$$.status IS NULL"}} + {{else}} + {{:assign columns=""}} + {{:assign table_join=""}} + {{:assign doc_condition1="0"}} + {{:assign doc_condition2="1"}} + {{/load}} - {{if $unhide == null}} - {{if $status == "ignored"}} + {{* lister les immobilisations *}} + {{:assign account_condition="("}} + {{#foreach from=$module.config.prefixes item="code"}} + {{:assign code=$code|cat:"%"|quote_sql}} + {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} + {{/foreach}} + {{:assign account_condition=$account_condition|cat:"0)"}} + + {{if $unhide == null}} + {{:assign filter_condition="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)"}} + {{else}} + {{:assign filter_condition="1"}} + {{/if}} + {{:assign filter_condition="("|cat:$doc_condition2|cat:" AND NOT (trans.status & 16) AND "|cat:$filter_condition|cat:")"}} + + {{:assign condition=$account_condition|cat:" AND debit > 0 AND ("|cat:$filter_condition|cat:" OR "|cat:$doc_condition1|cat:")"}} + + {{:assign nb_immo=0}} + {{#select + trans.id as immo_trans_id, + trans.label as trans_label, + trans.date as trans_date, + line.id as immo_line_id, + line.debit AS debit, + line.label AS line_label, + account.id as account_id, + account.code as account_code, + account.label as account_label, + !columns + 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 + !table_join + WHERE !condition + ORDER BY trans.date DESC; + !columns=$columns + !table_join=$table_join + !table=$module.table + !condition=$condition + }} + {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$immo_trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$account_id:$trans_id_year}} + + {{if $status == null}} + {{:assign status="unknown"}} + {{/if}} + + {{if $unhide == null}} + {{if $status != "unknown"}} + {{:continue}} + {{/if}} + {{else}} + {{if $status != "ignored" && $status != "unknown"}} + {{:continue}} + {{/if}} + {{* vérifier si le libellé aurait pu être filtré *}} + {{#foreach from=$module.config.filters item="filter"}} + {{if $filter|strpos:$trans_label !== false}} + {{:assign status="ignored"}} + {{/if}} + {{/foreach}} + {{/if}} + + {{* lister les lignes des écritures d'amortissement liées à l'immobilisation *}} + {{:assign amort_lines=null}} + {{#select + l_amort.credit as amort_amount, + CASE links.id_related = t_immo.id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as amort_trans_id, + l_amort.id AS amort_line_id + 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_accounts AS account ON l_amort.id_account = account.id + WHERE l_immo.id = :line_id AND l_amort.credit <> 0 AND account.code LIKE '28%'; + :line_id = $immo_line_id|intval + assign="amort_lines." + }} + {{/select}} + {{:assign amort_amount=0}} + {{#foreach from=$amort_lines item="line"}} + {{* voir s'il existe un doc associé à l'écriture d'amortissement *}} + {{#load type="link" + where="$$.immo_line_id = :immo_line_id AND $$.amort_trans_id = :amort_trans_id AND $$.amort_line_id = :amort_line_id" + :immo_line_id = $immo_line_id + :amort_trans_id = $line.amort_trans_id + :amort_line_id = $line.amort_line_id + }} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$line.amount}} + {{else}} + {{* TODO À VÉRIFIER (cas multi-lignes) *}} + {{:assign amort_amount="%d+%d"|math:$amort_amount:$line.amount}} + {{/load}} + {{/foreach}} + {{if $amort_amount != 0}} {{:continue}} {{/if}} - {{else}} - {{* vérifier si le libellé aurait pu être filtré *}} - {{#foreach from=$module.config.filters item="filter"}} - {{if $trans_label|strpos:$filter !== false}} - {{:assign status="ignored"}} - {{else}} - {{:assign status=""}} - {{/if}} - {{/foreach}} - {{/if}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.immo_trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.trans_id_year}} - {{:assign reste="%d-%d"|math:$line.debit:$line.amount}} - - - - - - - - - - - - - {{/foreach}} - -
LigneDateLibelléMontantAffectéResteN° compteCompte
#{{$line.immo_trans_id}}{{$line.immo_line_id}}{{$trans_date|date_short}}{{$line.trans_label}}{{if $line.line_label != null && $line.line_label != $line.trans_label}} — {{$line.line_label}}{{/if}}{{"%f"|math:$line.debit|money_html:false|raw}}{{"%f"|math:$line.amount|money_html:false|raw}}{{"%f"|math:$reste|money_html:false|raw}}{{$line.account_code}}{{$line.account_label}} - {{:linkbutton - label="Paramètres" - href="add_infos.html?immo_line_id=%s"|args:$immo_line_id - shape="settings" - target="_dialog" - }} -
-{{else}} -

Aucune immobilisation

-{{/if}} + {{:assign nb_immo="%d+1"|math:$nb_immo}} + + #{{$immo_trans_id}} + {{$trans_date|date_short}} + {{$trans_label}}{{if $line_label != null && $line_label != $trans_label}} — {{$line_label}}{{/if}} + {{"%f"|math:$debit|money_html:false|raw}} + {{$account_code}} + {{$account_label}} + + {{:linkbutton + label="Paramètres" + href="add_infos.html?immo_line_id=%s&type_immo=other"|args:$immo_line_id + shape="settings" + target="_dialog" + }} + + + {{/select}} + + + {{if $nb_immo == 0}} +

Aucune immobilisation

+ {{/if}} +
diff --git a/add_infos.html b/add_infos.html index 9a45878..1ee848b 100644 --- a/add_infos.html +++ b/add_infos.html @@ -1,171 +1,163 @@ {{* -*- brindille -*- *}} {{* - Classer une immobilisation non prise en charge @param immo_line_id + @param type_immo : managed, amortized, archived, other *}} -{{* données de l'immobilisation *}} -{{:assign montant_affecte=0}} -{{#load type="immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval assign="info_immo"}} - {{:assign montant_affecte="%d+%d"|math:$montant_affecte:$amount}} - {{:assign choix_defaut=$info_immo.status}} +{{* données de l'immobilisaion *}} +{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}} {{/load}} - {{#select trans.id as immo_trans_id, - trans.label as trans_label, + trans.label, trans.date as date_achat, line.debit as montant, line.label as line_label, - acc.code, - acc.label as account_label + acc.code FROM acc_transactions_lines AS line INNER join acc_transactions AS trans ON line.id_transaction = trans.id INNER JOIN acc_accounts AS acc ON line.id_account = acc.id WHERE line.id = :line_id; - :line_id = $_GET.immo_line_id|intval - assign="ligne_immo" + :line_id = $_GET.immo_line_id + assign=ligne_immo }} {{else}} - {{:error message="Immobilisation non trouvée"}} + {{:error message="Aucune immobilisation trouvée"}} {{/select}} -{{:assign reste="%d-%d"|math:$ligne_immo.montant:$montant_affecte}} -{{:assign date_achat_defaut=$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign date_mes_defaut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign immo_label=$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.trans_label}} - {{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}} -{{/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, + acc.code + FROM acc_transactions_links as links + INNER JOIN acc_transactions_lines AS line on line.id_transaction = linked_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE (links.id_transaction = :immo_trans_id or links.id_related = :immo_trans_id) + AND line.credit > 0 + ; + :immo_trans_id = $ligne_immo.immo_trans_id +}} + {{:assign var="linked_transactions.%d."|args:$code value=$linked_id}} +{{/select}} +{{:assign var="immo_transactions" from="linked_transactions.%d"|args:$ligne_immo.code}} + +{{* Traiter l'envoi du formulaire *}} {{#form on="save"}} {{if $_POST.classify == null}} - {{:error message="Vous devez faire un choix de classement"}} + {{:error message="Vous devez choisir une action"}} {{/if}} {{if $_POST.classify == "ignored"}} {{* ne pas amortir *}} {{:assign duration=0}} - {{:assign libelle=null}} - {{:assign montant=null}} - {{:assign date_achat=null}} - {{:assign date_mes=null}} + {{:assign date_debut=$ligne_immo.date_achat|parse_date}} {{:assign status="ignored"}} - {{elseif $_POST.classify == "archived"}} - {{* voir s'il y a déjà un doc associé à cette immo *}} - {{#load type="immo" where="$$.line = :immo_line_id" :immo_line_id=$_GET.immo_line_id|intval}} - {{:assign uuid=$key}} - {{:assign immo_doc_id=$id}} - {{else}} - {{:assign uuid=""|uuid}} - {{/load}} - - {{* immobilisation sortie du bilan *}} - {{:save - key=$uuid - validate_schema="asset.schema.json" - type="immo" - line=$_GET.immo_line_id|intval - duration=0 - status=null - assign_new_id="immo_doc_id" - }} - {{:redirect force="exit_step1.html?immo_doc_id=%s&from=exit"|args:$immo_doc_id}} {{else}} - {{* immobilisation amortissable *}} - {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} + {{* vérifier que la date d'acquisition est antérieure à la date de mise en service *}} + {{:assign date_debut=$_POST.date_mes|or:$ligne_immo.date_achat|parse_date}} + {{if $date_debut|strtotime < $ligne_immo.date_achat|strtotime}} + {{:assign dd=$date_debut|date_short}} {{:assign da=$ligne_immo.date_achat|date_short}} - {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}} + {{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$dd:$da}} {{/if}} - {{* vérifier que la date de mise en service est postérieure à la date d'acquisition *}} - {{:assign d1=$_POST.date_achat|or:$ligne_immo.date_achat|parse_date}} - {{:assign d2=$_POST.date_mes|or:$d1|parse_date}} - {{if $d2 < $d1}} - {{:assign da=$d1|date_short}} - {{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$_POST.date_mes:$da}} - {{/if}} - - {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $ligne_immo.date_achat}} - {{:assign date_achat=null}} - {{else}} - {{:assign date_achat=$_POST.date_achat|parse_date}} - {{/if}} - - {{if $_POST.date_mes == null || $_POST.date_mes == $_POST.date_achat}} - {{:assign date_mes=null}} - {{else}} - {{:assign date_mes=$_POST.date_mes|parse_date}} - {{/if}} - - {{:assign duration=$_POST.duree|intval}} - {{if $duration <= 0}} - {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} - {{/if}} - - {{if $_POST.libelle != $ligne_immo.line_label && $_POST.libelle != $ligne_immo.trans_label}} - {{:assign libelle=$_POST.libelle}} - {{/if}} - - {{if $_POST.montant == null || $_POST.montant|money_int == 0 }} - {{if $montant_affecte > 0}} - {{:assign montant=$reste}} + {{if $_POST.classify == "amortized"}} + {{if $info_immo.duration == null}} + {{:assign duration=0}} {{else}} - {{:assign montant=null}} + {{:assign duration=$info_immo.duration}} {{/if}} + {{:assign status="amortized"}} + {{elseif $_POST.classify == "archived"}} + {{if $info_immo.duration == null}} + {{:assign duration=0}} + {{else}} + {{:assign duration=$info_immo.duration}} + {{/if}} + {{:assign status="archived"}} {{else}} - {{:assign montant=$_POST.montant|money_int}} - {{if $montant == $ligne_immo.montant}} - {{:assign montant=null}} + {{:assign duration=$_POST.duree|intval}} + {{if $duration <= 0}} + {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} {{/if}} + {{:assign status="managed"}} {{/if}} - {{if $montant > $reste}} - {{:assign reste_nb="%f"|math:$reste|money_currency:false}} - {{:assign montant_nb="%f"|math:$montant|money_currency:false}} - {{:error message="Le montant (%s) ne peut être supérieur au reste (%s)"|args:$montant_nb:$reste_nb}} - {{/if}} - - {{:assign status="managed"}} {{/if}} {{* enregistrer les infos de l'immobilisation *}} - {{if $info_immo == null || $montant_affecte > 0}} + {{if $info_immo == null}} {{:assign key=""|uuid}} {{else}} {{:assign key=$info_immo.key}} {{/if}} + {{:save key=$key - validate_schema="asset.schema.json" + validate_schema="schema.json" type="immo" line=$_GET.immo_line_id|intval duration=$duration - label=$libelle - amount=$montant - date_achat=$date_achat - date_mes=$date_mes + date=$date_debut status=$status }} - {{if $_POST.classify == "managed"}} - {{:assign type_immo="managed"}} - {{else}} + {{* copier les autres liaisons *}} + {{#foreach from=$linked_transactions key="code" item="liaisons"}} + {{if $code != $ligne_immo.code}} + {{:debug code=$code liaisons=$liaisons}} + {{#foreach from=$liaisons item="elem"}} + {{:assign var="new_transactions." value=$elem}} + {{/foreach}} + {{/if}} + {{/foreach}} + + {{* nouvelles liaisons *}} + {{#foreach from=$_POST.transactions key="key" item="elem"}} + {{:assign var="new_transactions." value=$elem|intval}} + {{/foreach}} + + {{* Enregistrer les liaisons *}} + {{if $new_transactions != null}} + {{:api + method="POST" + path="accounting/transaction/%s/transactions"|args:$ligne_immo.immo_trans_id + assign="result" + assign_code="result_code" + transactions=$new_transactions + }} + {{/if}} + + {{if $_POST.classify == "managed" || $_POST.classify == "amortized"}} + {{:assign type_immo=$_POST.classify}} + {{elseif $_POST.classify == "ignored"}} {{:assign type_immo="other"}} + {{else}} + {{:assign type_immo=$_GET.type_immo}} {{/if}} {{:redirect force="index.html?ok=1&msg=infos&type_immo=%s"|args:$type_immo}} {{/form}} - -{{:admin_header title="Classer l'immobilisation" custom_css="./style.css" current="module_amortization"}} -{{* barre de navigation *}} -{{if ! $dialog}} - {{:include file="_nav.html" current="other" subcurrent="parameter"}} -{{/if}} {{:form_errors}} -{{* date de début du 1er exercice dans paheko *}} -{{#years order="start_date" limit=1}} - {{:assign first_date=$start_date}} -{{/years}} +{{:admin_header title="Classer l'immobilisation" custom_css="./style.css" current="module_amortization"}} + +{{* barre de navigation *}} +{{if ! $dialog}} + {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="parameter"}} +{{/if}} + +{{:assign choix_defaut=$_GET.type_immo}} + +{{if $info_immo != null}} + {{:assign date_defaut=$info_immo.date}} + {{:assign duree_defaut=$info_immo.duration}} + {{:assign choix_defaut=$info_immo.status}} +{{else}} + {{:assign duree_defaut=null}} +{{/if}} {{* - classer l'immobilisation @@ -173,25 +165,18 @@ *}} {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} -

Paramètres de l'immobilisation

+

+ Paramètres de l'immobilisation + #{{$ligne_immo.immo_trans_id}} +

Immobilisation
-
- #{{$ligne_immo.immo_trans_id}} {{$immo_label}} -
+
#{{$ligne_immo.immo_trans_id}} {{$ligne_immo.label}}{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.label}} — {{$ligne_immo.line_label}}{{/if}}
Montant
{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}
- {{if $montant_affecte > 0}} -
Montant déjà affecté
-
{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}
-
Montant restant à affecter
-
{{"%f"|math:$reste|money_currency_html:false|raw}}
- {{/if}}
Date de l'écriture d'immobilisation
{{$ligne_immo.date_achat|date_short}}
-
Compte d'immobilisation
-
{{$ligne_immo.code}} — {{$ligne_immo.account_label}}
@@ -200,22 +185,19 @@ Classement
(obligatoire)
- {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" default=$choix_defaut}} - {{if $ligne_immo.date_achat > $first_date}} - {{:input type="radio-btn" name="classify" value="archived" label="Immobilisation sortie du bilan" default=$choix_defaut}} - {{/if}} - {{:input type="radio-btn" name="classify" value="ignored" label="Immobilisation à ignorer" help="L'écriture n'apparaitra plus dans la liste des immobilisations" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="managed" label="Immobilisation à amortir" help="Cette immobilisation sera classée parmi les immobilisations amortissables" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="amortized" label="Amortissement terminé" help="Cette immobilisation sera classée parmi les immobilisations amorties" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="archived" label="Immobilisation sortie du bilan" help="Cette immobilisation sera classée parmi les immobilisations sorties du bilan" default=$choix_defaut}} + {{:input type="radio-btn" name="classify" value="ignored" label="Immobilisation à ignorer" help="Cette écriture n'apparaitra plus dans la liste des immobilisations" default=$choix_defaut}}
-
+
Informations
- {{:input type="date" name="date_achat" label="Date d'acquisition" default=$date_achat_defaut help="à modifier si nécessaire"}} - {{:input type="text" name="libelle" label="Libellé" default=$immo_label help="à modifier si nécessaire"}} - {{:input type="money" name="montant" label="Montant de l'immobilisation" required=true default=$reste help="à modifier si différent du montant de l'écriture d'immobilisation"}} - {{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 suffix="année(s)"}} - {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_mes_defaut help="à modifier si différente de la date d'acquisition"}} + {{:input type="number" name="duree" label="Durée d'amortissement" default=$duree_defaut required=true min=1}} + {{:input type="list" name="transactions" default=$immo_transactions label="Écritures liées au crédit du compte d'immobilisation" target="!acc/transactions/selector.php" multiple=true help="par exemple écriture d'avoir ou autre réduction du montant de l'acquisition"}} + {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_defaut help="à renseigner uniquement si différente de la date d'acquisition"}}
@@ -227,17 +209,20 @@ {{:admin_footer}} - diff --git a/aide.html b/aide.html index 0bf1430..e6855d7 100644 --- a/aide.html +++ b/aide.html @@ -1,12 +1,163 @@ {{* -*- brindille -*- *}} -{{:admin_header title="Aide" custom_css="./style_aide.css" current="module_amortization"}} +{{:admin_header title="Aide" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{:include file="_nav.html" current="aide"}} -
-
- {{:include file="doc/aide.html"}} -
-
+

+ Ce module gère l'amortissement linéaire des immobilisations. +

+ +

Immobilisations

+Elles sont classées dans plusieurs onglets : + + + +

Ajouter une immobilisation

+ +
+

+ 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 +

+ +
+ +

Amortissements

+ +
+

+ 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. +

+
+ +

Liste des amortissements

+ +
+ On trouve ici de une à trois listes, selon la situation : + +
+ +

Créer une écriture d'amortissement

+ +
+

+ Il faut renseigner les différents paramètres de l'amortissement : +

+ +

+
+ +

Remarques

+ + + + +

+ 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..cf162a2 100644 --- a/amortization.html +++ b/amortization.html @@ -2,89 +2,214 @@ {{* Lister les écritures d'amortissement associées à une immobilisation - @param immo_doc_id : id du doc associé à l'immo + @param immo_line_id : id de la ligne d'immo @param type_immo : managed, amortized, archived, others *}} -{{* 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_line_id, + line.debit as montant, + line.label as line_label, + trans.id as immo_trans_id, + trans.label as label, + trans.date, + account.code as account_code + 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 = $_GET.immo_line_id|intval + assign=ligne_immo + }} +{{else}} + {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_line_id}} +{{/select}} +{{:assign date_debut=$ligne_immo.date}} +{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.immo_trans_id}} -{{: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}} -{{/if}} +{{#load type="immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}} + {{:assign duree=$duration}} + {{:assign date_debut=$date}} + {{:assign status=$status}} +{{/load}} -{{if $info_immo.status == 'ignored'}} +{{if $status == 'ignored'}} {{:error message="Cette immobilisation ne doit pas être amortie"}} {{/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:$ligne_immo.amount:$total_credits}} -{{:assign valeur_residuelle=$solde}} +{{* chercher des écritures liées à l'immo courante au crédit du même compte + et déduire leur montant de celui de l'immo +*}} +{{:assign total_credits=0}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as other_id, + line.credit + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (trans.id = links.id_transaction OR trans.id = links.id_related) + INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; + :immo_trans_id=$ligne_immo.immo_trans_id + :account=$ligne_immo.account_code + }} + {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} +{{/select}} +{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}} +{{:assign solde=$ligne_immo.montant}} -{{* 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}} +{{* lister les lignes des écritures d'amortissement liées à l'immobilisation *}} +{{#select + l_amort.credit as amort_amount, + l_amort.label as amort_line_label, + l_amort.id as amort_line_id, + CASE WHEN links.id_related = t_immo.id + THEN links.id_transaction + ELSE links.id_related + END as amort_trans_id, + trans.date as amort_date, + trans.label as amort_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_line_id|intval + assign="amort_line" +}} + {{* lister les lignes d'amortissement liées à la ligne d'immobilisation *}} + {{#load type="link" + where="$$.immo_line_id = :immo_line_id AND $$.amort_trans_id = :amort_trans_id AND $$.amort_line_id = :amort_line_id" + assign="line" + :immo_line_id=$_GET.immo_line_id|intval + :amort_trans_id=$amort_line.amort_trans_id + :amort_line_id = $amort_line.amort_line_id + }} + {{:assign var="linked_amort." value=$amort_line}} + {{/load}} + {{if $date_debut == null}} + {{:assign date_debut=$amort_date}} + {{/if}} +{{/select}} -{{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 $status == "amortized"}} + {{:assign amort_amount=$ligne_immo.montant}} + {{:assign valeur_residuelle=0}} +{{else}} + {{:assign valeur_residuelle=$ligne_immo.montant}} + {{#foreach from=$linked_amort}} + {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_amount}} + {{/foreach}} {{/if}} -{{:admin_header title="Détails de l'immobilisation" custom_css="./style.css" current="module_amortization"}} +{{* Autres amortissements non rattachés *}} +{{:include file="_get_config.html" keep="module.config"}} +{{:assign filter_condition=" 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 autres_amortissements=false}} +{{#select + line.id_transaction AS amort_trans_id + 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) AND !filter_condition + ORDER BY trans.date, trans.label; + !filter_condition=$filter_condition + assign="amort" +}} + {{* voir s'il existe des écritures liées avec un numéro de compte d'immobilisation *}} + {{#select + links.id_transaction, + links.id_related, + trans.id AS trans_id + FROM acc_transactions_links AS links + INNER JOIN acc_transactions AS trans ON ( + CASE + WHEN links.id_transaction = :id_amort THEN links.id_related + WHEN links.id_related = :id_amort THEN links.id_transaction + END) = trans.id + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE + links.id_transaction = :id_amort OR links.id_related = :id_amort + AND acc.code LIKE '21%' + LIMIT 1 + ; + :id_amort=$amort.amort_trans_id + }} + {{* voir s'il existe un doc associé à une ligne de l'amortissement *}} + {{:assign keep=true}} + {{#load type="link" + where="$$.amort_trans_id = :amort_trans_id" + :amort_trans_id = $amort.amort_trans_id + }} + {{if $amort_line_id == $amort.amort_line_id}} + {{:assign keep=false}} + {{:break}} + {{/if}} + {{else}} + {{:assign keep=false}} + {{/load}} + {{if $keep}} + {{:assign autres_amortissements=true}} + {{/if}} + {{else}} + {{:assign autres_amortissements=true}} + {{/select}} +{{/select}} + +{{:admin_header title="Liste des amortissements" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} -{{if $_GET.type_immo == "amortized" && $valeur_residuelle == 0}} - {{:assign current="amortized"}} +{{if $_GET.type_immo == "amortized" || $valeur_residuelle== 0 }} + {{:assign subcurrent="amortized"}} {{elseif $_GET.type_immo == "archived"}} - {{:assign current="archived"}} -{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed" || $valeur_residuelle > 0}} - {{:assign current="managed"}} + {{:assign subcurrent="archived"}} +{{elseif $_GET.type_immo == null || $_GET.type_immo == "managed"}} + {{:assign subcurrent="managed"}} {{else}} - {{:assign current="other"}} + {{:assign subcurrent="other"}} {{/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,118 +222,45 @@

{{: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_line_id=%s&type_immo=%s"|args:$_GET.immo_line_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.

-

Immobilisation

- -
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
+
#{{$ligne_immo.immo_trans_id}} {{$ligne_immo.label}}{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.label}} — {{$ligne_immo.line_label}}{{/if}}
+
Montant
+
{{"%f"|math:$ligne_immo.montant|money_currency_html:false|raw}}
Début d'amortissement
{{$date_debut|date_short}}
- {{if $info_immo.duration != null}} + {{if $duree != null}}
Durée
-
{{$info_immo.duration}} ans
- {{/if}} -
Montant de l'immobilisation
-
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
- {{if $total_credits > 0}} -
Montant des avoirs
-
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
-
Montant à amortir
-
{{"%f"|math:$solde|money_currency_html:false|raw}}
+
{{$duree}} ans
{{/if}} {{if $valeur_residuelle > 0}}
Montant des amortissements
-
{{$total_amort|money_currency_html:false|raw}}
-
Valeur nette résiduelle
+
{{"%d-%d"|math:$ligne_immo.montant:$valeur_residuelle|money_currency_html:false|raw}}
+
Valeur nette comptable
{{$valeur_residuelle|money_currency_html:false|raw}}
{{/if}} - {{if $info_immo.duration != null && $valeur_residuelle > 0}} + {{if $duree != null && $valeur_residuelle > 0}}
Annuité estimée
-
{{"min(%d, %f/%d)"|math:$valeur_residuelle:$solde:$info_immo.duration|money_currency_html:false|raw}}
+
{{"min(%d, %f/%d)"|math:$valeur_residuelle:$ligne_immo.montant:$duree|money_currency_html:false|raw}}
{{/if}}
-{{if $valeur_residuelle > 0 || $linked_immos != null}} -

Avoirs

- -{{/if}} - -{{if $linked_immos != null}} - - - - - - - - - - {{#foreach from=$linked_immos item="line"}} - {{:assign url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - - - - - - - - {{/foreach}} - -
DateLibelléMontant
#{{$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}} -
-{{/if}} - -

Amortissements

- - +

Amortissements enregistrés

{{if $linked_amort != null}}
@@ -216,55 +268,55 @@ - + - {{#foreach from=$linked_amort|ksort item="line"}} + {{#foreach from=$linked_amort item="line"}} {{* données de l'écriture *}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - {{:assign solde="%f-%d"|math:$solde:$line.amount}} + {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}} + {{:assign solde="%f-%d"|math:$solde:$line.amort_amount}} - - + + + + - - - + - {{/foreach}}
DateLibellé Montant Valeur netteLibellé 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_html:false|raw}}{{"%f"|math:$solde|money_html:false|raw}} - {{$line.trans_label}} - {{if $line.line_label != null && $line.line_label != $line.trans_label}} - — {{$line.line_label}} + {{$line.amort_trans_label}} + {{if $line.amort_line_label != null && $line.amort_line_label != $line.amort_trans_label}} + — {{$line.amort_line_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_line_id=%d&immo_line_id=%d"|args:$line.amort_line_id:$ligne_immo.immo_line_id shape="minus"}}
+{{else}} +

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. -

-{{/if}} +{{if $_GET.type_immo == null || $_GET.type_immo != "amortized"}} -{{if $linked_amort == null}} -

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}} +

+ Il existe des écritures d'amortissement qui ne sont pas rattachées à une immobilisation !
+ Utilisez le bouton « Rattacher une écriture » pour les afficher ; vous pourrez choisir d'en attacher certaines à cette immobilisation. +

+ {{/if}} +{{/if}} {{:form_errors}} {{:admin_footer}} diff --git a/attach_amort.html b/attach_amort.html index c03821b..4770afa 100644 --- a/attach_amort.html +++ b/attach_amort.html @@ -1,174 +1,74 @@ {{* -*- brindille -*- *}} {{* - Enregistrer la liaison entre une ligne d'écriture d'amortissement - et une ligne d'écriture d'immobilisation - @param immo_doc_id : numéro du doc d'immo - @param amort_line_id : numéro de ligne de l'écriture d'amortissement + Enregistrer la liaison entre une écriture d'amortissement et + l'écriture d'immobilisation correspondante *}} -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} - {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} -{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} +{{* chercher l'écriture d'immobilisation *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $_GET.immo_line_id|intval +}} + {{:assign immo_trans_id=$id_transaction}} +{{else}} + {{:error message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_line_id}} +{{/select}} {{* chercher l'écriture d'amortissement *}} {{#select - line.credit as amount, - line.label as line_label, - trans.date as amort_date, - trans.label as trans_label, - trans.id as trans_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions_lines as line - INNER JOIN acc_transactions as trans on line.id_transaction = trans.id - INNER JOIN acc_accounts as acc on line.id_account = acc.id - WHERE line.id = :line_id; + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; :line_id = $_GET.amort_line_id|intval - assign="amort_line" }} + {{:assign amort_trans_id=$id_transaction}} {{else}} - {{:error message="Amortissement non trouvé"}} + {{:error message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_line_id}} {{/select}} -{{:assign amort_label=$amort_line.trans_label}} -{{if $amort_line.line_label != null && $amort_line.line_label != $amort_label}} - {{:assign amort_label=$amort_label|cat:"— "|cat:$amort_line.line_label}} -{{/if}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$amort_line.trans_id}} -{{* montant de l'écriture d'amortissement déjà affecté *}} -{{:assign montant_affecte=0}} -{{#load type="amort_link" - where="$$.amort_line_id = :amort_line_id" - :amort_line_id = $_GET.amort_line_id|intval +{{* chercher les liaisons de l'écriture d'immobilisation *}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as linked_id + FROM acc_transactions_links as links + WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; + :immo_trans_id = $immo_trans_id }} - {{:assign montant_affecte="%d+%d"|math:$montant_affecte:$amount}} -{{/load}} -{{:assign reste="%d-%d"|math:$amort_line.amount:$montant_affecte}} + {{:assign var="linked_transactions." value=$linked_id}} +{{/select}} -{{* Traiter l'envoi du formulaire *}} -{{#form on="save"}} - {{* vérifier que le montant saisi est inférieur au reste *}} - {{if $_POST.montant == null || $_POST.montant == 0}} - {{:assign montant_amort=$reste}} - {{if $montant_affecte == 0}} - {{:assign saved_amount=null}} - {{else}} - {{:assign saved_amount=$reste}} - {{/if}} - {{else}} - {{:assign montant_amort=$_POST.montant|money_int}} - {{if $montant_amort > $reste}} - {{:assign reste_nb="%f"|math:$reste|money_currency:false}} - {{:error message="Le montant de l'amortissement ne peut être supérieur au reste (%s)"|args:$reste_nb}} - {{/if}} - {{if $montant_amort == $amort_line.amount}} - {{:assign saved_amount=null}} - {{else}} - {{:assign saved_amount=$montant_amort}} - {{/if}} - {{/if}} +{{* ajouter la nouvelle liaison *}} +{{:assign var="linked_transactions." value=$amort_trans_id}} +{{:api + method="POST" + path="accounting/transaction/%s/transactions"|args:$immo_trans_id + assign="result" + assign_code="result_code" + transactions=$linked_transactions +}} - {{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} - {{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_credits"}} - {{:assign montant_immo="%d-%d"|math:$montant_immo:$total_credits}} - - {{* montant des amortissements *}} - {{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="total_amort"}} - - {{* vérifier que le montant total des amortissements ne dépasse pas la valeur de l'immo *}} - {{:assign vnc="%d-%d"|math:$montant_immo:$total_amort}} - {{:assign total_amort="%d+%d"|math:$total_amort:$montant_amort}} - {{if $total_amort > $montant_immo}} - {{:assign ma="%f"|math:$montant_amort|money_currency:false}} - {{:assign vnc="%f"|math:$vnc|money_currency:false}} - {{:error message="Le montant de l'amortissement (%s) dépasse la valeur résiduelle de l'immobilisation (%s)"|args:$ma:$vnc}} - {{/if}} - - {{* - supprimer les documents qui pointent sur une ligne d'amortissement absente - cas de la suppression manuelle d'un amortissement - *}} - {{:include file="_remove_orphan_docs.tpl"}} - - {{* Lier l'écriture d'amortissement à l'écriture d'immobilisation *}} - {{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$amort_line.trans_id}} - - {{* vérifier si cette liaison est déjà présente dans les documents pour éviter les doublons *}} - {{* TODO voir si nécessaire ? *}} - {{#load type="amort_link" - where="$$.immo_doc_id = :immo_doc_id AND $$.amort_line_id = :amort_line_id" - :immo_doc_id=$_GET.immo_doc_id|intval - :amort_line_id = $_GET.amort_line_id|intval - limit=1 - }} - {{else}} - {{:save - key=""|uuid - type="amort_link" - immo_doc_id=$_GET.immo_doc_id|intval - amort_line_id=$_GET.amort_line_id|intval - amount=$saved_amount - }} - {{/load}} - - {{* immo soldée ? *}} - {{if $total_amort == $montant_immo && $_GET.from != "exit"}} - {{:assign status="amortized"}} - {{:save - key=$info_immo.key - status=$status - }} - {{/if}} - -{{if $_GET.from == "exit"}} - {{:redirect force="exit_step2.html?immo_doc_id=%s&from=exit&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id}} +{{* vérifier si cette liaison est déjà présente dans les documents pour éviter les doublons *}} +{{#load type="link" + where="$$.immo_line_id = :immo_line_id AND + $$.amort_trans_id = :amort_trans_id AND + $$.amort_line_id = :amort_line_id" + :immo_line_id=$_GET.immo_line_id|intval + :amort_trans_id = $amort_trans_id + :amort_line_id = $_GET.amort_line_id|intval + limit=1 +}} {{else}} - {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=attach_amort"|args:$_GET.immo_doc_id:$status}} -{{/if}} -{{/form}} - -{{:admin_header title="Amortir l'immobilisation" custom_css="./style.css" current="module_amortization"}} - -{{* barre de navigation *}} -{{if ! $dialog}} - {{:include file="_nav.html" current="managed" subcurrent="attach_amort"}} -{{/if}} -{{:form_errors}} - -
-
-
Immobilisation
-
{{$label_immo}}
-
Amortissement
-
#{{$amort_line.trans_id}} {{$amort_label}}
-
Montant de l'écriture d'amortissement
-
{{$amort_line.amount|money_currency_html:false|raw}}
- {{if $montant_affecte > 0}} -
Montant déjà affecté
-
{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}
-
Montant restant à affecter
-
{{"%f"|math:$reste|money_currency_html:false|raw}}
- {{/if}} -
-
- -
-
-
- {{:input type="money" name="montant" label="Montant" default=$reste required=true help="Montant de l'amortissement"}} -
-
-

- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -

-
- + {{:save + key=""|uuid + type="link" + immo_line_id=$_GET.immo_line_id|intval + amort_line_id=$_GET.amort_line_id|intval + amort_trans_id=$amort_trans_id + }} +{{/load}} +{{:redirect force="amortization.html?immo_line_id=%s&ok=1&msg=attach&trans_id=%s"|args:$_GET.immo_line_id:$amort_trans_id}} diff --git a/attach_cession.html b/attach_cession.html deleted file mode 100644 index bd78460..0000000 --- a/attach_cession.html +++ /dev/null @@ -1,39 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Enregistrer la liaison entre une écriture d'immobilisation et - une écriture de cession - @param immo_doc_id : id du document associé à l'immobilisation - @param cession_line_id : ligne de l'écriture de cession -*}} - -{{* 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}} - -{{* chercher l'écriture de cession de l'immobilisation *}} -{{#select - id_transaction - FROM acc_transactions_lines - WHERE id = :line_id; - :line_id = $_GET.cession_line_id|intval -}} - {{:assign cession_id=$id_transaction}} -{{else}} - {{:error message="Impossible de trouver l'écriture de cession de l'immobilisation"}} -{{/select}} - -{{* Lier l'écriture de cession à l'écriture d'immobilisation *}} -{{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$cession_id}} - -{{* enregistrer la liaison de l'écriture de cession *}} -{{:save - key=""|uuid - type="cession_link" - immo_doc_id=$info_immo.id - cession_line_id=$_GET.cession_line_id|intval -}} - -{{:redirect force="exit_step3.html?immo_doc_id=%s&from=exit&ok=1&msg=attach_cession"|args:$_GET.immo_doc_id}} diff --git a/attach_credit.html b/attach_credit.html deleted file mode 100644 index 59cc802..0000000 --- a/attach_credit.html +++ /dev/null @@ -1,148 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Enregistrer la liaison entre une ligne d'immobilisation et - une ligne d'écriture au crédit du compte de l'immobilisation - @param immo_doc_id : numéro du doc d'immo - @param credit_line_id : ligne d'écriture au crédit du compte de l'immobilisation -*}} - -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{: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="total_credits"}} -{{:assign valeur_residuelle="%d-%d"|math:$ligne_immo.amount:$total_credits}} - -{{* lister les amortissements liés à l'immobilisation *}} -{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort, created_amort"}} -{{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$total_amort}} - - -{{* chercher l'écriture au crédit du compte d'immobilisation *}} -{{#select - line.id_transaction as trans_id, - line.credit as amount, - trans.label as trans_label, - line.label as line_label - FROM acc_transactions_lines as line - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE line.id = :line_id; - :line_id = $_GET.credit_line_id|intval - assign="credit_line" -}} -{{else}} - {{:error message="Écriture au crédit non trouvée"}} -{{/select}} -{{:assign credit_trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$credit_line.trans_id}} - -{{* montant de l'écriture de crédit déjà affecté *}} -{{:assign montant_affecte=0}} -{{#load type="credit_link" - where="$$.credit_line_id = :credit_line_id" - :credit_line_id = $_GET.credit_line_id|intval -}} - {{:assign montant_affecte="%d+%d"|math:$montant_affecte:$amount}} -{{/load}} -{{:assign reste="%d-%d"|math:$credit_line.amount:$montant_affecte}} - -{{* Traiter l'envoi du formulaire *}} -{{#form on="save"}} - - {{if $_POST.montant == null}} - {{if $montant_affecte == 0}} - {{:assign saved_credit=null}} - {{:assign montant_credit=$credit_line.amount}} - {{else}} - {{:assign saved_credit=$reste}} - {{:assign montant_credit=$reste}} - {{/if}} - {{else}} - {{:assign montant_credit=$_POST.montant|money_int}} - {{/if}} - - {{* vérifier que le montant saisi est inférieur à la valeur nette de l'écriture d'immobilisation *}} - {{if $montant_credit > $valeur_residuelle}} - {{:assign solde_nb="%f"|math:$valeur_residuelle|money_currency:false}} - {{:error message="Le montant de l'avoir ne peut être supérieur à la valeur nette de l'immobilisation (%s)"|args:$solde_nb}} - {{/if}} - - {{* vérifier que le montant saisi est inférieur au reste de l'écriture de crédit *}} - {{if $montant_credit > $reste}} - {{:assign reste_nb="%f"|math:$reste|money_currency:false}} - {{:error message="Le montant de l'avoir ne peut être supérieur au reste (%s)"|args:$reste_nb}} - {{/if}} - {{if $montant_credit == $credit_line.amount}} - {{:assign saved_credit=null}} - {{else}} - {{:assign saved_credit=$montant_credit}} - {{/if}} - - {{* Lier l'écriture de crédit à l'écriture d'immobilisation *}} - {{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$credit_line.trans_id}} - - {{* enregistrer la liaison des lignes d'immo *}} - {{:save - key=""|uuid - type="credit_link" - immo_doc_id=$_GET.immo_doc_id|intval - credit_line_id=$_GET.credit_line_id|intval - amount=$saved_credit - }} - - {{if $_GET.from == "exit"}} - {{:redirect force="exit_step1.html?immo_doc_id=%s&from=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id:$_GET.from}} - {{else}} - {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=attach_avoir"|args:$_GET.immo_doc_id}} - {{/if}} -{{/form}} - -{{:admin_header title="Écritures au crédit du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} -{{if ! $dialog}} - {{:include - file="_nav.html" - current="managed" - subcurrent="attach_credit" - type_immo="other" -}} -{{/if}} -{{:form_errors}} - -
-
-
Immobilisation
-
{{$label_immo}}
-
Écriture au crédit du compte d'immobilisation
-
#{{$credit_line.trans_id}} {{$credit_line.trans_label}}{{if $credit_line.line_label != null && $credit_line.line_label != $credit_line.trans_label}} — {{$credit_line.line_label}}{{/if}}
-
Montant de l'écriture
-
{{$credit_line.amount|money_currency_html:false|raw}}
-
Montant déjà affecté
-
{{"%f"|math:$montant_affecte|money_currency_html:false|raw}}
-
Montant restant à affecter
-
{{"%f"|math:$reste|money_currency_html:false|raw}}
-
-
- -
-
-
- {{:input type="money" name="montant" label="Montant" default=$reste help="Montant de l'avoir"}} -
-
-

- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -

-
- diff --git a/attach_exit.html b/attach_exit.html deleted file mode 100644 index 36cf6bf..0000000 --- a/attach_exit.html +++ /dev/null @@ -1,39 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Enregistrer la liaison entre une écriture d'immobilisation et - une écriture de sortie d'immobilisation - @param immo_doc_id : id du document associé à l'immobilisation - @param exit_line_id : ligne de l'écriture de sortie d'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}} - -{{* chercher l'écriture de sortie d'immobilisation *}} -{{#select - id_transaction - FROM acc_transactions_lines - WHERE id = :line_id; - :line_id = $_GET.exit_line_id|intval -}} - {{:assign rebut_id=$id_transaction}} -{{else}} - {{:error message="Impossible de trouver l'écriture de sortie d'immobilisation"}} -{{/select}} - -{{* Lier l'écriture de sortie à l'écriture d'immobilisation *}} -{{:include file="_common_attach.html" immo_doc_id=$_GET.immo_doc_id trans_id=$rebut_id}} - -{{* enregistrer la liaison de l'écriture de sortie *}} -{{:save - key=""|uuid - type="exit_link" - immo_doc_id=$info_immo.id - exit_line_id=$_GET.exit_line_id|intval -}} - -{{:redirect to="exit_step4.html?immo_doc_id=%s&from=exit&ok=1&msg=attach_exit"|args:$_GET.immo_doc_id}} diff --git a/balance_sheet_exit.html b/balance_sheet_exit.html index da92038..e7d9ba7 100644 --- a/balance_sheet_exit.html +++ b/balance_sheet_exit.html @@ -2,60 +2,129 @@ {{* Sortir une immobilisation du bilan - @param immo_doc_id : id du doc associé à l'immo + @param immo_line_id : id de la ligne d'immobilisation *}} -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} +{{* Infos de l'immobilisation *}} +{{#select + line.debit as montant, + trans.id AS trans_id, + trans.date as date_achat, + trans.label, + account.code as account_code + 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 = $_GET.immo_line_id|intval + assign="ligne_immo" +}} +{{else}} + {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_line_id}} +{{/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}} +{{:assign date_debut=$ligne_immo.date_achat}} +{{:assign ts_mes=$ligne_immo.date_achat|strtotime}} -{{: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}} -{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} +{{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}} + {{:assign ts_mes=$date|strtotime}} + {{:assign date_debut=$date}} + {{:assign duree_amort=$duration}} +{{/load}} -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.amount" value=$info_immo.amount}} -{{/if}} +{{* chercher des écritures liées à l'immo courante au crédit du même compte + et déduire leur montant de celui de l'immo +*}} +{{:assign total_credits=0}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as other_id, + line.credit + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (trans.id = links.id_transaction OR trans.id = links.id_related) + INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; + :immo_trans_id=$ligne_immo.trans_id + :account=$ligne_immo.account_code +}} + {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} +{{/select}} +{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}} -{{* 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}} +{{* chercher des écritures d'amortissement liées à l'immobilisation *}} +{{:assign total_amort=0}} +{{:assign amort_number=0}} +{{#select + l_amort.credit as amort_amount, + l_amort.id as amort_line_id, + CASE + WHEN links.id_related = t_immo.id + THEN links.id_transaction + ELSE links.id_related + END as amort_trans_id, + trans.date + 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%' + ; + :line_id = $_GET.immo_line_id|intval + assign="amort_line" +}} -{{* lister les amortissements liés à l'immobilisation *}} -{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}} -{{:assign amort_number=$linked_amort|count}} - -{{#foreach from=$linked_amort|ksort item="line"}} - {{if $first_amort_date == null}} - {{:assign first_amort_date=$line.date}} - {{/if}} - {{if $last_amort_date == null}} - {{:assign last_amort_date=$line.date}} - {{elseif $line.date > $last_amort_date}} - {{:assign last_amort_date=$line.date}} - {{/if}} -{{/foreach}} + {{#load type="link" + where="$$.immo_line_id = :immo_line_id AND $$.amort_trans_id = :amort_trans_id" + assign="line" + :immo_line_id=$_GET.immo_line_id|intval :amort_trans_id=$amort_line.amort_trans_id + }} + {{if $line.amort_line_id == $amort_line.amort_line_id}} + {{:assign amort_number="%d+1"|math:$amort_number}} + {{:assign total_amort="%d+%d"|math:$total_amort:$amort_line.amort_amount}} + {{if $first_amort_date == null}} + {{:assign first_amort_date=$amort_line.date}} + {{elseif $amort_line.date < $first_amort_date}} + {{:assign first_amort_date=$amort_line.date}} + {{/if}} + {{if $last_amort_date == null}} + {{:assign last_amort_date=$amort_line.date}} + {{elseif $amort_line.date > $last_amort_date}} + {{:assign last_amort_date=$amort_line.date}} + {{/if}} + {{/if}} + {{else}} + {{:assign amort_number="%d+1"|math:$amort_number}} + {{:assign total_amort="%d+%d"|math:$total_amort:$amort_line.amort_amount}} + {{if $first_amort_date == null}} + {{:assign first_amort_date=$amort_line.date}} + {{elseif $amort_line.date < $first_amort_date}} + {{:assign first_amort_date=$amort_line.date}} + {{/if}} + {{if $last_amort_date == null}} + {{:assign last_amort_date=$amort_line.date}} + {{elseif $amort_line.date > $last_amort_date}} + {{:assign last_amort_date=$amort_line.date}} + {{/if}} + {{/load}} +{{/select}} {{if $total_amort == 0}} {{if $info_immo.status == "amortized"}} - {{:assign total_amort=$ligne_immo.amount}} + {{:assign total_amort=$ligne_immo.montant}} {{/if}} {{else}} - {{:assign date_debut=$last_amort_date}} + {{:assign date_debut=$last_amort_date|strtotime}} + {{:assign date_debut="%d+(60*60*24)"|math:$date_debut|date:"Y-m-d"}} {{/if}} {{:assign ts_debut=$date_debut|strtotime}} -{{:assign ts_debut="%d+(60*60*24)"|math:$ts_debut}} -{{:assign date_debut=$ts_debut|date:"Y-m-d"}} -{{:assign valeur_nette="%f-%f"|math:$ligne_immo.amount:$total_amort}} +{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$total_amort}} {{* lister les exercices ouverts dont la date de fin est postérieure à la date du dernier amortissment @@ -70,8 +139,7 @@ {{:assign fin=$end_date|date_short}} {{:assign var="open_years.%d"|args:$id value=$label|cat:" (du "|cat:$debut|cat:" au "|cat:$fin|cat:")"}} {{else}} - {{:assign debut=$date_debut|date_short}} - {{:error message="Aucun exercice ouvert pour enregistrer la sortie de bilan à partir du %s"|args:$debut}} + {{:error message="Aucun exercice ouvert pour enregistrer un amortissement"}} {{/years}} {{if $years|count == 1}} {{:assign default_year=$years.0.id}} @@ -86,12 +154,39 @@ {{:error message="Vous devez renseigner la date de sortie"}} {{/if}} + {{* vérifier la validité de la date de mise en service *}} + {{if $_POST.date_mes != null}} + {{:assign ts_mes=$_POST.date_mes|parse_date|strtotime}} + {{if $ts_mes < $ligne_immo.date_achat|strtotime || $ts_mes > $first_amort_date|strtotime}} + {{:assign immo_date=$ligne_immo.date_achat|date_short}} + {{:assign amort_date=$first_amort_date|date_short}} + {{:error message="La date de mise en service doit être postérieure à la date d'acquisition de l'immobilisation (%s) et antérieure à la date du premier amortissement (%s)"|args:$immo_date:$amort_date}} + {{/if}} + {{/if}} + + {{* vérifier la validité de la durée d'immobilisation *}} + {{if $valeur_nette > 0}} + {{if $info_immo.duration == null}} + {{if $_POST.duree == null}} + {{:error message="Vous devez renseigner la durée de l'immobilisation"}} + {{elseif $_POST.duree < $amort_number}} + {{:error message="La durée de l'amortissement ne peut être inférieure au nombre d'écritures d'amortissement (%d)"|args:$amort_number}} + {{else}} + {{:assign duree_amort=$_POST.duree}} + {{/if}} + {{/if}} + {{/if}} + {{* vérifier la validité de la date de sortie *}} - {{if $info_immo.date_mes != null}} - {{if $_POST.date_sortie|parse_date < $info_immo.date_mes}} - {{:assign immo_date=$info_immo.date_mes|date_short}} + {{if $info_immo.date != null}} + {{if $_POST.date_sortie|parse_date < $info_immo.date}} + {{:assign immo_date=$info_immo.date|date_short}} {{:error message="La date de sortie doit être postérieure à la date de mise en service de l'immobilisation (%s)"|args:$immo_date}} {{/if}} + {{elseif $_POST.date_mes != null}} + {{if $_POST.date_sortie|parse_date < $_POST.date_mes|parse_date}} + {{:error message="La date de sortie doit être postérieure à la date de mise en service de l'immobilisation (%s)"|args:$_POST.date_mes}} + {{/if}} {{elseif $_POST.date_sortie|parse_date < $ligne_immo.date_achat}} {{:assign immo_date=$ligne_immo.date_achat|date_short}} {{:error message="La date de sortie doit être postérieure à la date d'acquisition de l'immobilisation (%s)"|args:$immo_date}} @@ -101,58 +196,57 @@ {{:error message="La date de sortie doit être postérieure à la date du dernier amortissement (%s)"|args:$last_amort_date}} {{/if}} + {{* vérifier que la date de sortie est située dans un exercice ouvert *}} {{:assign ts_exit = $_POST.date_sortie|parse_date|strtotime}} - {{:assign exercice_ok=false}} - {{* vérifier que la date de sortie est dans l'exercice choisi *}} - {{#foreach from=$years item="current_year"}} - {{if $current_year.id == $_POST.id_year}} - {{:assign selected_year=$current_year.id}} + {{:assign ok=false}} + {{:assign msg_amort=""}} + {{#foreach from=$years}} + {{if $id == $_POST.id_year}} + {{:assign selected_year=$id}} {{if $start_date|strtotime <= $ts_exit && $ts_exit <= $end_date|strtotime}} - {{:assign current_year=$current_year}} - {{:assign exercice_ok=true}} + {{:assign ok=true}} {{:break}} {{/if}} {{/if}} + + {{* voir si des amortissements ont été oubliés *}} + {{if $valeur_nette > 0 && $info_immo.status != "amortized" && $start_date|strtotime > $last_amort_date|strtotime && $end_date|strtotime < $now}} + {{:assign debut=$start_date|date_short}} + {{:assign fin=$end_date|date_short}} + {{:assign msg_amort=$msg_amort|cat:"\n"|cat:" - "|cat:$label|cat:" : du "|cat:$debut|cat:" au "|cat:$fin}} + {{/if}} {{/foreach}} - {{if ! $exercice_ok}} + {{if ! $ok}} {{:error message="La date choisie n'est pas dans l'exercice sélectionné !"}} {{/if}} - - {{* voir si des amortissements ont été oubliés *}} - {{if $valeur_nette > 0 && $info_immo.status != "amortized"}} - {{if $current_year.start_date <= $date_debut && $date_debut <= $current_year.end_date}} - {{:assign amort_ok=true}} - {{else}} - {{:assign amort_ok=false}} - {{/if}} - {{if ! $amort_ok}} - {{:error message="Vous devez d'abord enregistrer les amortissements des exercices précédents"}} - {{/if}} + {{if $msg_amort != ""}} + {{:error message="Vous devez d'abord enregistrer les amortissements des exercices suivants : %s"|args:$msg_amort}} {{/if}} - {{:redirect to="compute_exit_data.html?immo_doc_id=%s&amort_amount=%s&year=%s&date_debut=%s&exit_date=%s"|args:$_GET.immo_doc_id:$total_amort:$selected_year:$ts_debut:$ts_exit}} + {{:redirect to="compute_exit_data.html?immo_line_id=%s&amort_amount=%s&year=%s&date_mes=%s&date_debut=%s&exit_date=%s&duree_amort=%s"|args:$_GET.immo_line_id:$total_amort:$selected_year:$ts_mes:$ts_debut:$ts_exit:$duree_amort}} {{/form}} {{:admin_header title="Sortie de bilan" custom_css="./style.css" current="module_amortization"}} +{{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="%s"|args:$_GET.type_immo subcurrent="balance_exit"}} + {{:include file="_nav.html" current="index" subcurrent="%s"|args:$_GET.type_immo subsubcurrent="balance_exit"}} {{/if}} {{:form_errors}} {{* formulaire de sortie du bilan *}} -

Sortir l'immobilisation « {{$label_immo}} » du bilan

+

Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan

Données de l'imobilisation
Montant
-
{{$ligne_immo.amount|money_currency_html:false|raw}}
+
{{$ligne_immo.montant|money_currency_html:false|raw}}
Date d'acquisition
-
{{$date_achat|date_short}} - {{if $date_mes != null}} +
{{$ligne_immo.date_achat|date_short}}
+ {{if $info_immo.date != null && $info_immo.date != $ligne_immo.date_achat}}
Date de mise en service
-
{{$date_mes|date_short}}
+
{{$info_immo.date|date_short}}
{{/if}} {{if $info_immo.duration != null}}
Durée de l'amortissement
@@ -162,13 +256,23 @@
{{$total_amort|money_currency_html:false|raw}} (à la date de début de l'exercice)
Valeur nette résiduelle
{{$valeur_nette|money_currency_html:false|raw}} (à la date de début de l'exercice)
- {{if $last_amort_date != null}} -
Date du dernier amortissement
-
{{$last_amort_date|date_short}}
- {{/if}}
- + {{if $valeur_nette > 0}} + {{if $info_immo.date == null || $info_immo.duration == null}} +
+ Informations sur l'immobilisation +
+ {{if $info_immo.date == null}} + {{:input type="date" name="date_mes" label="Date de mise en service" help="C'est la date de première utilisation ; à renseigner uniquement si différente de la date d'acquisition"}} + {{/if}} + {{if $info_immo.duration == null}} + {{:input type="number" name="duree" label="Durée d'amortissement" required=true min=1 help="La durée est nécessaire pour calculer l'amortissement complémentaire"}} + {{/if}} +
+
+ {{/if}} + {{/if}}
Informations de sortie
diff --git a/compute_exit_data.html b/compute_exit_data.html index f45a6fe..25231bd 100644 --- a/compute_exit_data.html +++ b/compute_exit_data.html @@ -3,44 +3,60 @@ {{* Calculer les valeurs de la sortie et saisir le montant de la cession (optionnel) paramètres : - @param immo_doc_id : id du doc associé à l'immo - @param amort_amount : montant des amortissements - @param year : exercice de la date de sortie de l'immobilisation - @param date_debut : date de début de la période d'amortissement complémentaire - @param exit_date : date de sortie de l'immobilisation + - immo_line_id : numéro de ligne de l'écriture d'immobilisation + - amort_amount : montant des amortissements + - year : exercice de la date de sortie de l'immobilisation + - date_mes : datede mise en service de l'immobilisation + - date_debut : date de début de la période d'amortissement complémentaire + - exit_date : date de sortie de l'immobilisation + - duree_amort : durée de l'amortiseement (optionnel) *}} -{{* TODO boutons de navigation avant-arrière*}} +{{#select + line.debit as montant, + trans.id AS trans_id, + trans.date as date_achat, + trans.label, + account.code as account_code + 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 = $_GET.immo_line_id|intval + assign="ligne_immo" +}} +{{else}} + {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_line_id}} +{{/select}} -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $label_immo|strpos:$ligne_immo.line_label === false}} - {{:assign label_immo=$label_immo|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} - -{{:assign 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}} +{{* chercher des écritures liées à l'immo courante au crédit du même compte + et déduire leur montant de celui de l'immo +*}} +{{:assign total_credits=0}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as other_id, + line.credit + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (trans.id = links.id_transaction OR trans.id = links.id_related) + INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; + :immo_trans_id=$ligne_immo.trans_id + :account=$ligne_immo.account_code + }} + {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} +{{/select}} +{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}} +{{:assign valeur_nette="%f-%f"|math:$ligne_immo.montant:$_GET.amort_amount}} {{:assign amort_comp=0}} {{* amortissement complémentaire jqà date sortie *}} {{if $valeur_nette > 0}} {{:assign nbjours="1+(%d-%d)/(60*60*24)"|math:$_GET.exit_date:$_GET.date_debut}} - {{:assign annuite="%f/%f"|math:$ligne_immo.amount:$info_immo.duration}} + {{:assign annuite="%f/%f"|math:$ligne_immo.montant:$_GET.duree_amort}} {{:assign amort_comp="round(%f/365*%f, 0)"|math:$annuite:$nbjours}} {{:assign amort_comp="min(%f, %f)"|math:$valeur_nette:$amort_comp}} {{/if}} @@ -53,39 +69,36 @@ {{/if}} {{/if}} - {{:redirect to="write_exit.html?immo_doc_id=%s&amort_amount=%s&year=%s&date_debut=%s&exit_date=%s&cession=%s"|args:$_GET.immo_doc_id:$_GET.amort_amount:$_GET.year:$_GET.date_debut:$_GET.exit_date:$_POST.montant_cession}} + {{:redirect to="write_exit.html?immo_line_id=%s&amort_amount=%s&year=%s&date_mes=%s&date_debut=%s&exit_date=%s&duree_amort=%s&cession=%s"|args:$_GET.immo_line_id:$_GET.amort_amount:$_GET.year:$_GET.date_mes:$_GET.date_debut:$_GET.exit_date:$_GET.duree_amort:$_POST.montant_cession}} {{/form}} {{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} - {{if $valeur_nette > 0}} - {{:assign type_immo="managed"}} - {{else}} - {{:assign type_immo="amortized"}} - {{/if}} - {{:include file="_nav.html" current="%s"|args:$type_immo subcurrent="balance_exit"}} + {{:include file="_nav.html" current="index" subcurrent="balance_exit"}} {{/if}} {{:form_errors}} -

Sortir l'immobilisation « {{$label_immo}} » du bilan

+

Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan

Données de l'imobilisation
Montant
-
{{$ligne_immo.amount|money_currency_html:false|raw}}
+
{{$ligne_immo.montant|money_currency_html:false|raw}}
Date d'acquisition
-
{{$date_achat|date_short}}
- {{if $date_mes != null}} +
{{$ligne_immo.date_achat|date_short}}
+ {{if $_GET.date_mes != $ligne_immo.date_achat|strtotime}}
Date de mise en service
-
{{$date_mes|date_short}}
+
{{$_GET.date_mes|date:"d/m/Y"}}
+ {{/if}} + {{if $_GET.duree_amort != null && $_GET.duree_amort != 0}} +
Durée de l'amortissement
+
{{$_GET.duree_amort}} ans
{{/if}} -
Durée de l'amortissement
-
{{$info_immo.duration}} ans
Montant des amortissements
{{$_GET.amort_amount|money_currency_html:false|raw}} (à la date de début de l'exercice)
Valeur nette résiduelle
diff --git a/config.html b/config.html index a8c91c9..50f295b 100644 --- a/config.html +++ b/config.html @@ -46,7 +46,6 @@ {{/form}} {{:admin_header title="Configuration" custom_css="./style.css" current="module_amortization"}} - {{:include file="_nav.html" current="config"}} {{if $_GET.ok == 1}}

Configuration enregistrée.

@@ -129,7 +128,6 @@ {{/if}} -

Comptes d'immobilisation amortissables

Les immobilisations amortissables sont cherchées dans les comptes sélectionnés et leurs sous-comptes. @@ -139,7 +137,7 @@ Compte - + @@ -156,14 +154,13 @@ }} - {{if ! $code|in:$config_defaut.prefixes}} - {{:button - label="Enlever" - shape="minus" - min="1" - name="remove_line" - }} - {{/if}} + {{:button + label="Enlever" + title="Enlever une ligne" + shape="minus" + min="1" + name="remove_line" + }} {{/foreach}} @@ -185,12 +182,11 @@ Compte - + - {{:assign unfinished_lines=$config_defaut.unfinished|map:implode:"-"|implode:","}} {{#foreach from=$unfinished_accounts key=code item=elem}} @@ -204,15 +200,13 @@ }} - {{if $unfinished_lines|strpos:$code === false}} - {{:button - label="Enlever" - title="Enlever une ligne" - shape="minus" - min="1" - name="remove_line" - }} - {{/if}} + {{:button + label="Enlever" + title="Enlever une ligne" + shape="minus" + min="1" + name="remove_line" + }} {{/foreach}} diff --git a/delete_infos.html b/delete_infos.html deleted file mode 100644 index 8af819c..0000000 --- a/delete_infos.html +++ /dev/null @@ -1,79 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Supprimer les infos d'une immo et les liaisons d'immo associées - @param immo_doc_id -*}} - -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -{{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} - {{:assign immo_label=$immo_label|cat::" — "|cat:$ligne_immo.line_label}} -{{/if}} - -{{#form on="delete"}} - {{#select - trans.id - FROM acc_transactions_lines AS line - INNER JOIN !table AS credit_link ON $$.credit_line_id = line.id - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE $$.type = "credit_link" AND $$.immo_doc_id = :immo_doc_id - ; - !table = $module.table - :immo_doc_id = $_GET.immo_doc_id|intval - }} - {{:assign var="linked_trans." value=$id}} - {{/select}} - - {{if $linked_trans != null}} - {{* chercher et supprimer les écritures liées *}} - {{#select - CASE links.id_related = trans.id - WHEN true THEN links.id_transaction - WHEN false THEN links.id_related - END as linked_id - FROM acc_transactions AS trans - INNER JOIN acc_transactions_links as links - ON (links.id_transaction = trans.id OR links.id_related = trans.id) - WHERE trans.id = :immo_trans_id - ; - :immo_trans_id=$ligne_immo.trans_id - }} - {{if ! $linked_trans|has:$linked_id}} - {{:assign var="linked_transactions." value=$linked_id}} - {{/if}} - {{/select}} - - {{* enregistrer les liaisons restantes *}} - {{:api - method="POST" - path="accounting/transaction/%s/transactions"|args:$ligne_immo.trans_id - assign="result" - assign_code="result_code" - transactions=$linked_transactions - }} - - {{* supprimer les docs de liaison *}} - {{:delete type="credit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id = $_GET.immo_doc_id|intval}} - {{/if}} - - {{* supprimer les infos de l'immobilisation *}} - {{:delete id=$_GET.immo_doc_id|intval}} - {{:redirect force="index.html?ok=1&msg=suppr_infos&type_immo=other"}} -{{/form}} - - -{{:admin_header title="Supprimer" current="module_amortization"}} -{{:form_errors}} -{{:delete_form - legend="Immobilisation « #%s %s »"|args:$ligne_immo.trans_id:$immo_label - warning="Supprimer les paramètres de l'immobilisation « #%s %s » ?"|args:$ligne_immo.trans_id:$immo_label - info="L'écriture d'immobilisation ne sera pas supprimée ; les nouveaux paramètres pourront être saisis depuis l'onglet « À classer »" -}} - -{{:admin_footer}} diff --git a/detach_amort.html b/detach_amort.html index 873c924..c078c3f 100644 --- a/detach_amort.html +++ b/detach_amort.html @@ -3,30 +3,69 @@ {{* Supprimer l'association entre une écriture d'amortissement et une écriture d'immobilisation - @param immo_doc_id : id du doc associé à l'immo - @param amort_line_id : id de la ligne d'amortissement *}} -{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.amort_line_id keep="info_immo"}} +{{* chercher l'écriture d'immobilisation *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $_GET.immo_line_id|intval +}} + {{:assign immo_trans_id=$id_transaction}} +{{else}} + {{:error message="Impossible de trouver l'écriture d'immobilisation de la ligne « %s »"|args:$_GET.immo_line_id}} +{{/select}} + +{{* chercher l'écriture d'amortissement *}} +{{#select + id_transaction + FROM acc_transactions_lines + WHERE id = :line_id; + :line_id = $_GET.amort_line_id|intval +}} + {{:assign amort_id=$id_transaction}} +{{else}} + {{:error message="Impossible de trouver l'écriture d'amortissement de la ligne « %s »"|args:$_GET.amort_line_id}} +{{/select}} + +{{* + chercher les liaisons de l'écriture d'immobilisation + et supprimer la liaison avec l'écriture d'amortissement +*}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as linked_id + FROM acc_transactions_links as links + WHERE id_transaction = :immo_trans_id or id_related = :immo_trans_id; + :immo_trans_id = $immo_trans_id + }} + {{if $linked_id != $amort_id}} + {{:assign var="linked_transactions." value=$linked_id}} + {{/if}} +{{/select}} + +{{* Enregistrer les liaisons *}} +{{:api + method="POST" + path="accounting/transaction/%s/transactions"|args:$immo_trans_id + assign="result" + assign_code="result_code" + transactions=$linked_transactions +}} + {{* supprimer le doc de liaison entre les lignes *}} -{{#load type="amort_link" - where="$$.immo_doc_id = :immo_doc_id AND $$.amort_line_id = :amort_line_id" - :immo_doc_id=$_GET.immo_doc_id|intval +{{#load type="link" + where="$$.immo_line_id = :immo_line_id AND + $$.amort_trans_id = :amort_trans_id AND + $$.amort_line_id = :amort_line_id" + :immo_line_id=$_GET.immo_line_id|intval + :amort_trans_id = $amort_id|intval :amort_line_id = $_GET.amort_line_id|intval }} {{:delete id=$id}} {{/load}} -{{* marquer immo non soldée *}} -{{if $info_immo.status == "amortized"}} - {{:save - key=$info_immo.key - status="managed" - }} -{{/if}} - -{{if $_GET.from == "exit"}} - {{:redirect force="exit_step2.html?immo_doc_id=%s&from=exit&ok=1&msg=detach_amort"|args:$_GET.immo_doc_id}} -{{else}} - {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=detach_amort"|args:$_GET.immo_doc_id:}} -{{/if}} +{{:redirect to="amortization.html?immo_line_id=%s&ok=1&msg=detach&trans_id=%s"|args:$_GET.immo_line_id:$amort_id}} diff --git a/detach_cession.html b/detach_cession.html deleted file mode 100644 index 2733fcc..0000000 --- a/detach_cession.html +++ /dev/null @@ -1,21 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Supprimer l'association entre une écriture d'immobilisation et - une écriture de cession - @param immo_doc_id : id du doc associé à l'immo - @param cession_line_id : id de la ligne de cession -*}} - -{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.cession_line_id}} - -{{* supprimer le doc de liaison entre les lignes *}} -{{#load type="cession_link" - where="$$.immo_doc_id = :immo_doc_id AND $$.cession_line_id = :cession_line_id" - :immo_doc_id=$_GET.immo_doc_id|intval - :cession_line_id = $_GET.cession_line_id|intval -}} - {{:delete id=$id}} -{{/load}} - -{{:redirect to="exit_step3.html?immo_doc_id=%s&from=exit&ok=1&msg=detach_cession"|args:$_GET.immo_doc_id}} diff --git a/detach_credit.html b/detach_credit.html deleted file mode 100644 index 9b7da0e..0000000 --- a/detach_credit.html +++ /dev/null @@ -1,25 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Supprimer l'association entre une écriture d'immobilisation et - une écriture au crédit du compte d'immobilisation - @param immo_doc_id : id du doc associé à l'immo - @param credit_line_id : id de la ligne de crédit -*}} - -{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.credit_line_id}} - -{{* supprimer le doc de liaison entre les lignes *}} -{{#load type="credit_link" - where="$$.immo_doc_id = :immo_doc_id AND $$.credit_line_id = :credit_line_id" - :immo_doc_id=$_GET.immo_doc_id|intval - :credit_line_id = $_GET.credit_line_id|intval -}} - {{:delete id=$id}} -{{/load}} - -{{if $_GET.from == "exit"}} - {{:redirect force="exit_step1.html?immo_doc_id=%s&from=%s&ok=1&msg=detach_avoir"|args:$_GET.immo_doc_id:$_GET.from}} -{{else}} - {{:redirect force="amortization.html?immo_doc_id=%s&ok=1&msg=detach_avoir"|args:$_GET.immo_doc_id}} -{{/if}} diff --git a/detach_exit.html b/detach_exit.html deleted file mode 100644 index 094bd88..0000000 --- a/detach_exit.html +++ /dev/null @@ -1,21 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Supprimer l'association entre une écriture d'immobilisation et - une écriture de sortie de bilan - @param immo_doc_id : id du doc associé à l'immo - @param exit_line_id : id de la ligne de sortie de bilan -*}} - -{{:include file="_common_detach.html" immo_doc_id=$_GET.immo_doc_id line_id=$_GET.exit_line_id}} - -{{* supprimer le doc de liaison entre les lignes *}} -{{#load type="exit_link" - where="$$.immo_doc_id = :immo_doc_id AND $$.exit_line_id = :exit_line_id" - :immo_doc_id=$_GET.immo_doc_id|intval - :exit_line_id = $_GET.exit_line_id|intval -}} - {{:delete id=$id}} -{{/load}} - -{{:redirect to="exit_step4.html?immo_doc_id=%s&from=exit&ok=1&msg=detach_exit"|args:$_GET.immo_doc_id}} diff --git a/doc/aide.html b/doc/aide.html deleted file mode 100644 index 005e29e..0000000 --- a/doc/aide.html +++ /dev/null @@ -1,472 +0,0 @@ -

-

Module -immobilisations et amortissements pour Paheko

-
-

Préambule

-

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.

-

Créer une nouvelle -immobilisation

-

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 :

-
    -
  • Exercice : sélectionner l’exercice dans lequel enregistrer -l’écriture
  • -
  • Date d’acquisition : doit être située dans l’exercice -sélectionné
  • -
  • Libellé
  • -
  • Montant
  • -
  • Compte de décaissement : compte bancaire, de caisse ou fournisseurs -d’immobilisations (404) dans le cas où l’immobilisation est réglée -ultérieurement
  • -
  • Compte d’immobilisation
  • -
  • Projet
  • -
  • Durée d’amortissement en années
  • -
  • Date de mise en service : c’est cette date qui est prise en -compte dans le calcul des amortissements. Il s’agit de la date à partir -de laquelle l’immobilisation peut commencer à être utilisée ; à modifier -uniquement si différente de la date d’acquisition.
  • -
-

Après création, l’immobilisation est classée dans l’onglet -Amortissables.

-

Ristourne sur immobilisation

-

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.

-

Enregistrer un nouvel -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 :

-
    -
  • Exercice : c’est l’exercice dans lequel enregistrer l’écriture
  • -
  • Date de l’écriture : doit être située dans l’exercice -sélectionné
  • -
  • Libellé
  • -
  • Montant : calculé par le module ; il peut être modifié si -nécessaire, par exemple pour l’arrondir
  • -
  • Compte de débit : par défaut c’est le compte 6811 : Dotation aux -amortissements des immobilisations
  • -
  • Compte d’amortissement : par défaut c’est le compte qui correspond -au compte de l’immobilisation, obtenu en intercalant le chiffre 8 après -le premier chiffre du compte d’immobilisation.
  • -
-

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.

-

Incorporer une écriture -d’immobilisation créée hors du module

-

Les immobilisations créées avant la mise en service du -module sont regroupées dans l’onglet À classer. On distingue -deux cas :

- -

Immobilisations créées dans Paheko

-

Cliquer le bouton Paramètres en face de l’immobilisation à -prendre en charge et choisir comment sera considérée -l’immobilisation :

- -

Immobilisation à amortir

-

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.

-
    -
  • Date d’acquisition : (facultatif) à renseigner uniquement si elle -diffère de la date de l’écriture d’immobilisation
  • -
  • Libellé : (facultatif) à renseigner uniquement s’il diffère du -libellé de l’écriture d’immobilisation
  • -
  • Montant de l’immobilisation : (obligatoire) pré-rempli avec le -montant de l’écriture d’immobilisation
  • -
  • Durée d’amortissement : (obligatoire) durée en années
  • -
  • Date de mise en service : (facultatif) voir Créer une nouvelle -immobilisation.
  • -
-

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

-

Immobilisation sortie du bilan

-

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 :

-
    -
  • écritures d’avoir (éventuellement)
  • -
  • écritures d’amortissement : -
      -
    • amortissement annuel : 0, 1 ou plusieurs
    • -
    • amortissement complémentaire à la date de sortie du bilan
    • -
    • amortissement exceptionnel ou écriture de cession, selon le cas
    • -
  • -
  • écriture de sortie du bilan
  • -
-

Le module donne la possibilité de les attacher à l’immobilisation en -plusieurs étapes :

-
    -
  1. Attacher une ou plusieurs écritures d’avoir à l’immobilisation, le -cas échéant
  2. -
  3. Attacher une ou plusieurs écritures d’amortissement à -l’immobilisation
  4. -
  5. Attacher une écriture de cession à l’immobilisation, le cas -échéant
  6. -
  7. Attacher une écriture de sortie du bilan à l’immobilisation
  8. -
-

Une fois cette étape validée, l’immobilisation sera classée dans -l’onglet Sorties du bilan.

-

Immobilisations créées dans une -comptabilité antérieure à Paheko

-

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 :

-
    -
  • montant amortissable de l’immobilisation, c’est-à-dire la différence -entre le montant d’acquisition et le montant des éventuelles ristournes -sous forme d’écritures d’avoir au crédit du compte d’immobilisation
  • -
  • montant total des amortissements
  • -
  • durée d’amortissement
  • -
  • date d’acquisition de l’immobilisation
    -ou
  • -
  • date de mise en service de l’immobilisation ; voir Créer une nouvelle -immobilisation.
  • -
-

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.

-

Exemple

-

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.

-
- - -
-
    -
  • la ligne du compte 2181 correspond à deux -immobilisations de valeurs respectives 5 500€ et -13 590,33€ pour un total de -19 090,33€
  • -
  • la ligne du compte 2185 correspond à trois -immobilisations de valeurs respectives 16 500€, -8 685€ et 3 500€ pour un total de -28 695€
  • -
  • la ligne du compte 28181 correspond à la somme des -amortissements des deux immobilisations du compte -2181
  • -
  • la ligne du compte 28185 correspond à la somme des -amortissements des trois immobilisations du compte -2185
  • -
-

Dans l’onglet À classer on trouve les immobilisations de la -balance d’ouverture :

-
- - -
-
    -
  • la colonne Date donne la date de la balance -d’ouverture
  • -
  • la colonne Montant donne le total des immobilisations de -chaque compte
  • -
  • la colonne Affecté indique quel montant a déjà été attribué -à une ou plusieurs immobilisation(s)
  • -
  • la colonne Reste indique quel montant n’a pas encore été -attribué
  • -
-

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.

-
-Paramètres a renseigner - -
-
    -
  • Date d’acquisition de l’immobilisation
  • -
  • Libellé de l’immobilisation
  • -
  • Montant de l’immobilisation : (obligatoire) à modifier -obligatoirement en indiquant le montant réel de -l’immobilisation.
    -Si une immobilisation a fait l’objet d’un avoir, il faut déduire ce -montant de celui de l’immobilisation : le montant à indiquer est le -montant à amortir.
  • -
  • Durée d’amortissement : (obligatoire) durée en années
  • -
  • Date de mise en service : (facultatif) ; voir Créer une nouvelle -immobilisation.
  • -
-

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.

-

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 :

-
    -
  • cliquer le bouton Détails en face de l’immobilisation -concernée ; si la mention
  • -
-
-

« 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.

-

Cas des amortissements -créés avec Paheko

-
    -
  • cliquer le bouton Attacher un amortissement pour en -afficher la liste
  • -
  • le cas échéant, cliquer Attacher en face de l’écriture à -attacher.
  • -
-

Le montant affiché est celui de l’écriture d’amortissement ; il -suffit de valider.

-

Cas des amortissements -créés hors Paheko

-

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 :

-
    -
  • montant des amortissements du Saxophone : 1016,43€
  • -
  • montant des amortissements du Piano numérique : 4102,39€
  • -
  • montant des amortissements de la Batterie : 1939,24€
  • -
-

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.

-

Sortir une immobilisation du -bilan

-

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.

-
    -
  • dans la première étape, il faut indiquer l’exercice et la date de -sortie du bilan
  • -
  • dans la deuxième étape, il faut indiquer si la sortie de bilan -s’accompagne d’une cession (vente) et dans ce cas, indiquer le montant -de la cession
  • -
  • la troisième étape indique l’ensemble des écritures avec : -
      -
    • un amortissement complémentaire pour l’exercice à la date de sortie -si l’immobilisation n’est pas déjà totalement amortie
    • -
    • un amortissement exceptionnel s’il n’y a pas de cession et si -l’immobilisation n’est pas déjà totalement amortie
    • -
    • une écriture de cession, le cas échéant ; cette écriture est une -créance qu’il faudra solder lors de l’enregistrement du règlement de la -cession
    • -
    • l’écriture de sortie 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.

-

Transformer des -« Immobilisations en cours » en « Immobilisation amortissable »

-

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 :

-
    -
  • Exercice
  • -
  • Date de mise en service ; voir Créer une nouvelle -immobilisation.
  • -
  • Libellé
  • -
  • Compte dans lequel enregistrer l’écriture d’immobilisation
  • -
  • Durée d’amortissement
  • -
-

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}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
-
Montant de l'immobilisation
-
{{$montant_immo|money_currency_html:false|raw}}
- {{if $total_credits > 0}} -
Montant des avoirs
-
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
-
Montant à amortir
-
{{"%f"|math:$solde|money_currency_html:false|raw}}
- {{/if}} - {{if $total_amort > 0}} -
Montant des amortissements
-
{{$total_amort|money_currency_html:false|raw}}
-
Valeur nette résiduelle
-
{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}
- {{/if}} -
-
- -{{if $credit_lines}} - -{{/if}} - -

Écritures d'avoir attachées à l'immobilisation

-{{if $linked_immos != null}} - - - - - - - - - - - - {{#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}} - - - - - - - - - - {{/foreach}} - -
DateLibelléMontantN° compteCompte
#{{$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"}} -
-{{elseif $credit_lines}} -

- Vous pouvez attacher une ou plusieurs écritures d'avoir à votre immobilisation -

-{{else}} -

- Aucune écriture au crédit du compte d'immobilisation ; vous pouvez passer à la suite -

-{{/if}} - - -

- {{:button type="submit" name="proceed" label="Poursuivre" shape="right" class="main"}} -

- diff --git a/exit_step2.html b/exit_step2.html deleted file mode 100644 index acf7cc0..0000000 --- a/exit_step2.html +++ /dev/null @@ -1,197 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Associer des écritures d'amortissement à une immo créée et sortie du - bilan avant la mise en service du module - @param immo_doc_id : id du doc associé à l'immobilisation -*}} - -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{#form on="backward"}} - {{:redirect to="exit_step1.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} -{{/form}} - -{{#form on="forward"}} - {{:redirect to="exit_step3.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} -{{/form}} - -{{: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"}} - -{{* 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|intval - assign="amort_link" - }} - {{if $amort_link.amount == null || $amort_link.amount == 0}} - {{:assign amort_amount=$amort_line.amort_amount}} - {{:assign keep_amort=false}} - {{else}} - {{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}} - {{/if}} - {{else}} - {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} - {{/load}} - {{if $keep_amort && $amort_amount < $amort_line.amort_amount}} - {{:assign var="free_amort_lines." value=$amort_line}} - {{/if}} -{{/select}} - -{{:admin_header title="Immobilisation sortie du bilan" custom_css="./style.css" current="module_amortization"}} -{{if $_GET.from == "exit"}} - {{:assign current="other"}} -{{else}} - {{:assign current="archived"}} -{{/if}} - -{{if $_GET.ok}} - {{if $_GET.msg|match:"attach_amort"}} - {{:assign msg="Écriture d'amortissement attachée"}} - {{elseif $_GET.msg|match:"detach_amort"}} - {{:assign msg="Écriture d'amortissement détachée"}} - {{/if}} -

{{$msg}}

-{{/if}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
-
Montant de l'immobilisation
-
{{$montant_immo|money_currency_html:false|raw}}
- {{if $total_credits > 0}} -
Montant des avoirs
-
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
-
Montant à amortir
-
{{"%f"|math:$solde|money_currency_html:false|raw}}
- {{/if}} - {{if $total_amort > 0}} -
Montant des amortissements
-
{{$total_amort|money_currency_html:false|raw}}
-
Valeur nette résiduelle
-
{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}
- {{/if}} -
-
- -{{if $free_amort_lines}} - -{{/if}} - -

Écritures d'amortissement attachées à l'immobilisation

-{{if $linked_amort != null}} - - - - - - - - - - - - - - {{#foreach from=$linked_amort|ksort item="line"}} - {{* données de l'écriture *}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -
DateLibelléMontantN° compteCompte
#{{$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"}} -
-{{elseif $free_amort_lines}} -

- Vous pouvez attacher une ou plusieurs écritures d'amortissement à l'immobilisation -

-{{else}} -

- Aucune écriture d'amortissement à rattacher ; vous pouvez passer à la suite -

-{{/if}} - -
-

- {{: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"}} -

-
diff --git a/exit_step3.html b/exit_step3.html deleted file mode 100644 index 365d817..0000000 --- a/exit_step3.html +++ /dev/null @@ -1,205 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Associer une écriture de cession à une immo créée et sortie du - bilan avant la mise en service du module - @param immo_doc_id : id du doc associé à l'immobilisation -*}} - -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{#form on="backward"}} - {{:redirect to="exit_step2.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} -{{/form}} - -{{#form on="forward"}} - {{:redirect to="exit_step4.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} -{{/form}} - -{{: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 de cession *}} -{{:assign total_cession=0}} -{{#select - line.id as line_id, - line.credit as amount, - line.label as line_label, - trans.id as trans_id, - trans.date as date, - trans.label as trans_label, - trans.id_year as year, - account.id as account_id, - account.code as account_code, - account.label as account_label - FROM acc_transactions_lines AS line - INNER JOIN acc_accounts AS account ON line.id_account = account.id - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE account.code LIKE :code_cession_new OR account.code LIKE :code_cession_old - ; - :code_cession_new = "757%" - :code_cession_old = "775%" - assign="line" -}} - {{* voir si l'écriture de cession est déjà liée à une immo *}} - {{* TODO VOIR SI UTILE - {{#load type="cession_link" - where="$$.cession_line_id = :cession_line_id" - :cession_line_id = $line.line_id - assign="cession_link" - }} -{{:debug line=$line cession_link=$cession_link}} - {{:assign total_cession="%d+%d"|math:$total_cession:$line.amount}} - {{:assign var="line.linked_id" value=$linked_id}} - {{:assign var="linked_cessions." value=$line}} - {{else}} - {{:assign var="free_cessions." value=$line}} - {{/load}} -*}} - - {{#select - CASE WHEN links.id_related = :trans_id - THEN links.id_transaction - ELSE links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE links.id_transaction = :trans_id OR links.id_related = :trans_id - ; - :trans_id = $line.trans_id - }} - {{if $linked_id == $ligne_immo.trans_id}} - {{:assign total_cession="%d+%d"|math:$total_cession:$line.amount}} - {{:assign var="line.linked_id" value=$linked_id}} - {{:assign var="linked_cessions." value=$line}} - {{/if}} - {{else}} - {{:assign var="free_cessions." value=$line}} - {{/select}} -{{/select}} - -{{: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_cession"}} - {{:assign msg="Écriture de cession attachée"}} - {{elseif $_GET.msg|match:"detach_cession"}} - {{:assign msg="Écriture de cession détachée"}} - {{/if}} -

{{$msg}}

-{{/if}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
-
Montant de l'immobilisation
-
{{$montant_immo|money_currency_html:false|raw}}
- {{if $total_credits > 0}} -
Montant des avoirs
-
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
-
Montant à amortir
-
{{"%f"|math:$solde|money_currency_html:false|raw}}
- {{/if}} - {{if $total_amort > 0}} -
Montant des amortissements
-
{{$total_amort|money_currency_html:false|raw}}
-
Valeur nette résiduelle
-
{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}
- {{/if}} - {{if $total_cession > 0}} -
Montant de la cession
-
{{$total_cession|money_currency_html:false|raw}}
- {{/if}} -
-
- -{{if $linked_cessions == null && $free_cessions != null}} - -{{/if}} - -

Écriture de cession attachée à l'immobilisation

-{{if $linked_cessions != null}} - - - - - - - - - - - - - - {{#foreach from=$linked_cessions item="line"}} - {{* données de l'écriture *}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -
DateLibelléMontantN° compteCompte
#{{$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"}} -
-{{elseif $free_cessions}} -

- 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"}} -

-
diff --git a/exit_step4.html b/exit_step4.html deleted file mode 100644 index d880d2e..0000000 --- a/exit_step4.html +++ /dev/null @@ -1,417 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Associer les différentes écritures à une immo créée et sortie du - bilan avant la mise en service du module - @param immo_doc_id : id du doc associé à l'immobilisation -*}} - -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{: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 une écriture de cession associée *}} -{{#load type="cession_link" - where="$$.immo_doc_id = :immo_doc_id" - :immo_doc_id = $_GET.immo_doc_id|intval - }} - {{if $amount == null || $amount == 0}} - {{#select credit - FROM acc_transactions_lines - WHERE id = :cession_line_id; - :cession_line_id = $cession_line_id - }} - {{:assign montant_cession=$credit}} - {{/select}} - {{else}} - {{:assign montant_cession=$amount}} - {{/if}} - {{:assign cession_doc_id=$id}} -{{/load}} - -{{* chercher une écriture de sortie de bilan associée *}} -{{#load type="exit_link" where="$$.immo_doc_id = :immo_doc_id" :immo_doc_id=$info_immo.id assign="exit_info"}} -{{/load}} -{{if $exit_info != null}} - {{#select - trans.id as trans_id, - trans.label as trans_label, - trans.date as date, - line.id as line_id, - line.label as line_label, - line.credit as amount, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - WHERE line.id = :exit_line_id; - :exit_line_id = $exit_info.exit_line_id - assign="exit_line" - }} - {{/select}} - - {{* lignes de l'écriture de sortie *}} - {{#select - line.label as line_label, - line.credit, - line.debit, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - WHERE trans.id = :exit_trans_id; - :exit_trans_id = $exit_line.trans_id - assign="trans" - }} - {{:assign var="exit_trans.%s"|args:$account_code value=$trans}} - {{/select}} - - {{:assign acc_codes=$exit_trans|keys}} - {{#foreach from=$linked_amort}} - {{if $account_code|in:$acc_codes}} - {{:assign var="exit_amort" from="exit_trans.%s.debit"|args:$account_code}} - {{:break}} - {{/if}} - {{/foreach}} - - {{if $exit_amort != $total_amort}} - {{:assign exit_amort_display=$exit_amort|money_currency:false|replace:" ":" "}} - {{:assign total_amort_display=$total_amort|money_currency:false|replace:" ":" "}} - {{:assign erreur=1}} - {{:assign message="Le montant des amortissement dans l'écriture de sortie (%s) est différent du total des amortissements associés à l'immobilisation (%s)."|args:$exit_amort_display:$total_amort_display}} - {{/if}} - - {{if $exit_line.amount != $solde}} - {{:assign erreur=2}} - {{:assign exit_line_amount=$exit_line.amount|money_currency:false|replace:" ":" "}} - {{:assign solde_immo=$solde|money_currency:false|replace:" ":" "}} - {{:assign message="Le montant de de l'immobilisation dans l'écriture de sortie (%s) est différent du montant à amortir (%s)."|args:$exit_line_amount:$solde_immo}} - {{/if}} -{{/if}} - -{{* - chercher des écritures au crédit du compte de l'immo sans doc associé - - line.credit < ligne_immo.amount => peut-être un avoir - - line.credit = ligne_immo.amount - avoirs => écriture de sortie du bilan -*}} -{{#select - trans.id as trans_id, - trans.label as trans_label, - trans.date as date, - trans.id_year as year, - line.id as credit_line_id, - line.label as line_label, - line.credit as amount, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id - WHERE - acc.code = :acc_code - AND line.credit > 0 - AND credit_line_id NOT IN ( - SELECT json_extract(credit_link.document, '$.credit_line_id') AS line_id FROM !table as credit_link - WHERE json_extract(credit_link.document, '$.type') == "credit_link" - UNION - SELECT json_extract(exit_link.document, '$.exit_line_id') AS line_id FROM !table as exit_link - WHERE json_extract(exit_link.document, '$.type') == "exit_link" - ) - ; - :acc_code=$ligne_immo.account_code - !table =$module.table - assign="credit_line" - }} - {{if $credit_line.amount == $solde}} - {{:assign var="exit_lines." value=$credit_line}} - {{/if}} -{{/select}} - -{{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} -{{:include - file="./_get_amort_code.html" - code_immo=$ligne_immo.account_code - keep="code_amort" -}} - -{{* chercher des écritures d'amortissement correspondant au compte d'une immo sans doc associé *}} -{{#select - line.id as amort_line_id, - line.credit as amort_amount, - line.label as line_label, - trans.id as amort_trans_id, - trans.date as date, - trans.label as trans_label, - trans.id_year as year, - account.id as account_id, - account.code as account_code, - account.label as account_label - FROM acc_transactions_lines AS line - INNER JOIN acc_accounts AS account ON line.id_account = account.id - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE - account.code = :code_amort - AND line.credit > 0 - AND (NOT trans.status & 16) - AND trans.date >= :immo_date - ; - :code_amort = $code_amort - :immo_date=$date_immo - assign="amort_line" -}} - {{* voir s'il existe des lignes d'immo liées à cette ligne d'amortissement *}} - {{:assign amort_amount=0}} - {{:assign keep_amort=true}} - {{#load type="amort_link" - where="$$.amort_line_id = :amort_line_id" - :amort_line_id=$amort_line.amort_line_id|intval - assign="amort_link" - }} - {{if $amort_link.amount == null || $amort_link.amount == 0}} - {{:assign amort_amount=$amort_line.amort_amount}} - {{:assign keep_amort=false}} - {{else}} - {{:assign amort_amount="%d+%d"|math:$amort_amount:$amort_link.amount}} - {{/if}} - {{else}} - {{* pas de ligne d'immo liée à cette ligne d'amort => garder cette ligne d'amortissement *}} - {{/load}} - {{if $keep_amort && $amort_amount < $amort_line.amort_amount}} - {{:assign var="free_amort_lines." value=$amort_line}} - {{/if}} -{{/select}} - -{{#form on="backward"}} - {{:redirect to="exit_step3.html?immo_doc_id=%s&from=%s"|args:$_GET.immo_doc_id:$_GET.from}} -{{/form}} - -{{#form on="validate"}} - {{* mettre à jour l'état de l'immobilisation *}} - {{:save - key=$info_immo.key - status="archived" - }} - {{:redirect to="index.html?type_immo=archived"}} -{{/form}} - -{{#form on="cancel"}} - {{* supprimer les docs de cession et de sortie *}} - {{if $cession_doc_id != null}}{{:delete id=$cession_doc_id}}{{/if}} - {{if $exit_info != null}}{{:delete id=$exit_info.id}}{{/if}} - {{:redirect to="index.html?type_immo=other"}} -{{/form}} - -{{: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_exit"}} - {{:assign msg="Écriture de sortie de bilan attachée"}} - {{elseif $_GET.msg|match:"detach_exit"}} - {{:assign msg="Écriture de sortie de bilan détachée"}} - {{/if}} -

{{$msg}}

-{{/if}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}}
-
Montant de l'immobilisation
-
{{$montant_immo|money_currency_html:false|raw}}
- {{if $total_credits > 0}} -
Montant des avoirs
-
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
-
Montant à amortir
-
{{"%f"|math:$solde|money_currency_html:false|raw}}
- {{/if}} - {{if $total_amort > 0}} -
Montant des amortissements
-
{{$total_amort|money_currency_html:false|raw}}
-
Valeur nette résiduelle
-
{{"%d-%d"|math:$solde:$total_amort|money_currency_html:false|raw}}
- {{/if}} - {{if $montant_cession > 0}} -
Montant de la cession
-
{{$montant_cession|money_currency_html:false|raw}}
- {{/if}} -
-
- -{{if $erreur}} -

{{$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}} -

- - - - - - - - - - - - - {{#foreach from=$exit_trans key="account_code" item="line"}} - {{:assign account_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.id_year}} - - - - - - - - {{/foreach}} - -
Détails de l'écriture de sortie de bilan
NuméroCompteDébitCréditLibellé
{{$line.account_code}}{{$line.account_label}}{{$line.debit|money_currency:false}}{{$line.credit|money_currency:false}}{{$line.line_label}}
-{{/if}} - -{{if $exit_lines}} - -{{/if}} - -

Écriture de sortie de bilan attachée à l'immobilisation

-{{if $exit_line != null}} - {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$exit_line.trans_id}} - - - - - - - - - - - - - - - - - - - - - - - -
DateLibelléMontantN° compteCompte
#{{$exit_line.trans_id}}{{$exit_line.date|date_short}} - {{if $exit_line.line_label != null}} - {{$exit_line.line_label}} - {{else}} - {{$exit_line.trans_label}} - {{/if}} - {{"%f"|math:$exit_line.amount|money_html:false|raw}}{{$exit_line.account_code}}{{$exit_line.account_label}} - {{:linkbutton label="Détacher" href="detach_exit.html?immo_doc_id=%s&exit_line_id=%s&from=exit"|args:$_GET.immo_doc_id:$exit_line.line_id shape="minus"}} -
-{{elseif $exit_lines}} -

- Vous pouvez attacher une écriture de sortie de bilan à l'immobilisation -

-{{/if}} - -{{if $exit_lines}} -{{* -

Écritures non rattachées

- - - - - - - - - - - - - - - {{#foreach from=$exit_lines item="line"}} - {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -
DateLibelléMontantN° compteCompte
#{{$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"}} -
-*}} -{{elseif $exit_line == null}} -

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 » ! -

- {{:save - key=$info_immo.key - status=null - }} -{{/if}} - -
-

- {{: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}} -

-
diff --git a/filters.html b/filters.html index e59478d..7590c9e 100644 --- a/filters.html +++ b/filters.html @@ -31,7 +31,7 @@ Libellé - + diff --git a/ignore.html b/ignore.html index a721759..e396a77 100644 --- a/ignore.html +++ b/ignore.html @@ -21,7 +21,6 @@ {{:error message="Il n'y a aucune écriture avec le numéro de ligne %s !"|args:$_GET.immo_line_id}} {{/select}} {{#load type="immo" assign="info_immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}}{{/load}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} {{* Traiter l'envoi du formulaire *}} {{#form on="proceed"}} @@ -31,7 +30,7 @@ {{:assign status="ignored"}} {{:save key=""|uuid - validate_schema="asset.schema.json" + validate_schema="schema.json" type="immo" line=$_GET.immo_line_id|intval duration=$duration @@ -63,7 +62,7 @@
Écriture
-
#{{$ligne_immo.trans_id}} {{$ligne_immo.label}}
+
#{{$ligne_immo.trans_id}} {{$ligne_immo.label}}
Montant
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
diff --git a/index.html b/index.html index 0627e9f..ed61086 100644 --- a/index.html +++ b/index.html @@ -7,39 +7,44 @@ {{:assign type_immo=$_GET.type_immo}} {{/if}} -{{if $type_immo == "managed"}} - {{:admin_header title="Immobilisations en cours d'amortissement" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "amortized"}} - {{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "archived"}} - {{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "other"}} - {{:admin_header title="Immobilisations à classer" custom_css="./style.css" current="module_amortization"}} -{{elseif $type_immo == "unfinished"}} - {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization" subcurrent="unfinished"}} -{{/if}} -{{:include file="_nav.html" current=$type_immo}} + {{if $type_immo == "managed"}} + {{:admin_header title="Immobilisations en cours d'amortissement" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "amortized"}} + {{:admin_header title="Immobilisations amorties" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "archived"}} + {{:admin_header title="Immobilisations archivées" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "other"}} + {{:admin_header title="Autres immobilisations" custom_css="./style.css" current="module_amortization"}} + {{elseif $type_immo == "unfinished"}} + {{:admin_header title="Immobilisations en cours de constitution" custom_css="./style.css" current="module_amortization"}} + {{/if}} -{{* Mise à niveau *}} -{{:assign module_version="0.40.0"}} -{{:include file="upgrade.html" module_version=$module_version}} - -{{* supprimer les documents sans écriture associée *}} -{{:include file="_remove_orphan_docs.tpl"}} +{{:include file="_nav.html" current="index" subcurrent="%s"|args:$type_immo}} {{if $_GET.ok}} {{if $_GET.msg|match:"immobilisation"}} {{:assign msg="Immobilisation enregistrée"}} - {{elseif $_GET.msg|match:"suppr_infos"}} - {{:assign msg="Paramètres supprimés"}} {{elseif $_GET.msg|match:"infos"}} - {{:assign msg="Paramètres enregistrés"}} + {{:assign msg="Informations enregistrées"}} {{/if}}

{{$msg}}

{{elseif $_GET.err}}

Échec enregistrement immobilisation

{{/if}} +{{#load type="immo"}} + {{* supprimer les documents sans écriture associée *}} + {{#select + line.id as line_id + FROM acc_transactions_lines as line + WHERE line.id = :line_id; + :line_id = $line + }} + {{else}} + {{:delete key=$key}} + {{/select}} +{{/load}} + {{if $type_immo == "other"}} {{:include file="_immobilisations_autres.html"}} {{elseif $type_immo == "archived"}} @@ -49,4 +54,5 @@ {{elseif $type_immo == "managed" || $type_immo == "amortized"}} {{: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}} - - - -
-
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Montant
-
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
-
Date de l'immobilisation
-
{{$date_immo|date_short}}
-
-
- - {{if $other_immos != null}} - - - - - - - - - - - - - - {{#foreach from=$other_immos item="line"}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.credit_trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.credit_year}} - - - - - - - - - - {{/foreach}} - -

Sélectionner une écriture d'avoir ou autre réduction du montant de l'acquisition pour l'associer à l'immobilisation

-
DateMontantLibelléN° compteCompte
#{{$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"}} -
- {{else}} -

Aucune écriture au crédit du compte « {{$ligne_immo.account_code}} »

- {{/if}} -
-{{:form_errors}} -{{:admin_footer}} diff --git a/list_cessions.html b/list_cessions.html deleted file mode 100644 index 9ead861..0000000 --- a/list_cessions.html +++ /dev/null @@ -1,118 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Lister les écritures de cession 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_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}} -{{/if}} - -{{:assign total_cession=0}} -{{#select - line.id as line_id, - line.credit as amount, - line.label as line_label, - trans.id as trans_id, - trans.date as date, - trans.label as trans_label, - trans.id_year as year, - account.id as account_id, - account.code as account_code, - account.label as account_label - FROM acc_transactions_lines AS line - INNER JOIN acc_accounts AS account ON line.id_account = account.id - INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id - WHERE account.code LIKE :code_cession_new OR account.code LIKE :code_cession_old - ; - :code_cession_new = "757%" - :code_cession_old = "775%" - assign="line" -}} - {{#select - CASE WHEN links.id_related = :trans_id - THEN links.id_transaction - ELSE links.id_related - END as linked_id - FROM acc_transactions_links as links - WHERE links.id_transaction = :trans_id OR links.id_related = :trans_id - ; - :trans_id = $line.trans_id - }} - {{if $linked_id == $ligne_immo.trans_id}} - {{:assign total_cession="%d+%d"|math:$total_cession:$line.amount}} - {{:assign var="line.linked_id" value=$linked_id}} - {{:assign var="linked_cessions." value=$line}} - {{/if}} - {{else}} - {{:assign var="free_cessions." value=$line}} - {{/select}} -{{/select}} - -{{:admin_header title="Écritures de cession du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Montant
-
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
-
Date de l'immobilisation
-
{{$date_debut|date_short}}
-
-
- -{{if $free_cessions}} - - - - - - - - - - - - - - - {{#foreach from=$free_cessions item="line"}} - {{:assign cession_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -

Sélectionner une écriture de cession pour l'associer à l'immobilisation

-
DateLibelléMontantN° compteCompte
#{{$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"}} -
-{{/if}} diff --git a/list_exit.html b/list_exit.html deleted file mode 100644 index 306f9f2..0000000 --- a/list_exit.html +++ /dev/null @@ -1,108 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - Lister les écritures de sortie de bilan 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_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}} -{{/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:$ligne_immo.amount:$total_credits}} - -{{#select - trans.id as trans_id, - trans.label as trans_label, - trans.date as date, - trans.id_year as year, - line.id as credit_line_id, - line.label as line_label, - line.credit as amount, - acc.id as account_id, - acc.code as account_code, - acc.label as account_label - FROM acc_transactions AS trans - INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id - INNER JOIN acc_accounts AS acc ON line.id_account = acc.id - LEFT JOIN module_data_amortization AS mda ON json_extract(mda.document, '$.amort_line_id') = line.id - WHERE - acc.code = :acc_code - AND line.credit > 0 - AND credit_line_id NOT IN ( - SELECT json_extract(credit_link.document, '$.credit_line_id') AS line_id FROM !table as credit_link - WHERE json_extract(credit_link.document, '$.type') == "credit_link" - UNION - SELECT json_extract(exit_link.document, '$.exit_line_id') AS line_id FROM !table as exit_link - WHERE json_extract(exit_link.document, '$.type') == "exit_link" - ) - ; - :acc_code=$ligne_immo.account_code - !table =$module.table - assign="credit_line" - }} - {{if $credit_line.amount == $solde}} - {{:assign var="exit_lines." value=$credit_line}} - {{/if}} -{{/select}} - -{{:admin_header title="Écritures de cession du compte d'immobilisation" custom_css="./style.css" current="module_amortization"}} - -
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Montant
-
{{"%f"|math:$ligne_immo.amount|money_currency_html:false|raw}}
-
Date de l'immobilisation
-
{{$date_debut|date_short}}
-
-
- -{{if $exit_lines}} - - - - - - - - - - - - - - {{#foreach from=$exit_lines item="line"}} - {{:assign exit_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} - - - - - - - - - - {{/foreach}} - -

Sélectionner une écriture de sortie de bilan pour l'associer à l'immobilisation

-
DateLibelléMontantN° compteCompte
#{{$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"}} -
-{{/if}} diff --git a/modify_infos.html b/modify_infos.html deleted file mode 100644 index 174d1a4..0000000 --- a/modify_infos.html +++ /dev/null @@ -1,169 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - @param immo_doc_id -*}} - -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{:assign montant_immo=$info_immo.amount|or:$ligne_immo.amount}} -{{:assign immo_label=$info_immo.label|or:$ligne_immo.trans_label}} -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $immo_label}} - {{:assign immo_label=$immo_label|cat:" — "|cat:$ligne_immo.line_label}} -{{/if}} -{{:assign date_achat_defaut=$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign date_mes_defaut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} - -{{* déduire le montant des écritures liées à l'immo courante au crédit du même compte *}} -{{:include file="_get_credit_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_immos, total_credits"}} -{{:assign solde="%d-%d"|math:$montant_immo:$total_credits}} - -{{:assign autres_amount=0}} -{{#load - type="immo" - where="$$.line = :line_id AND id != :doc_id" - :line_id = $info_immo.line - :doc_id = $info_immo.id - }} - {{:assign autres_amount="%d+%d"|math:$autres_amount:$amount}} -{{/load}} -{{:assign max_disponible="%d-%d"|math:$ligne_immo.amount:$autres_amount}} - -{{* traiter la saisie *}} -{{#form on="save"}} - {{if $_POST.date_achat|parse_date > $ligne_immo.date_achat}} - {{:assign da=$ligne_immo.date_achat|date_short}} - {{:error message="Erreur : la date d'achat (%s) ne peut être postérieure à la date de l'écriture d'immobilisation (%s)"|args:$_POST.date_achat:$da}} - {{/if}} - - {{if $_POST.date_achat == null || $_POST.date_achat|parse_date == $info_immo.date_achat}} - {{:assign date_achat=$info_immo.date_achat}} - {{elseif $_POST.date_achat|parse_date == $ligne_immo.date_achat}} - {{:assign date_achat=null}} - {{else}} - {{:assign date_achat=$_POST.date_achat|parse_date}} - {{/if}} - - {{* TODO : simplifier ? *}} - {{if $_POST.date_mes == null || $_POST.date_mes|parse_date == $info_immo.date_mes}} - {{:assign date_mes=$info_immo.date_mes}} - {{elseif $_POST.date_mes|parse_date == $info_immo.date_achat}} - {{:assign date_mes=null}} - {{elseif $_POST.date_mes|parse_date == $ligne_immo.date_achat}} - {{if $info_immo.date_achat == null}} - {{:assign date_mes=null}} - {{else}} - {{:assign date_mes=$ligne_immo.date_achat}} - {{/if}} - {{else}} - {{:assign date_mes=$_POST.date_mes|parse_date}} - {{:assign date_achat_comp=$ligne_immo.date_achat}} - {{if $date_achat != null}} - {{:assign date_achat_comp=$date_achat}} - {{/if}} - {{if $date_mes < $date_achat_comp}} - {{:assign da=$date_achat_comp|date_short}} - {{:error message="Erreur : la date de mise en service (%s) ne peut être antérieure à la date d'acquisition (%s)"|args:$_POST.date_mes:$da}} - {{/if}} - {{/if}} - - {{:assign duration=$_POST.duree|intval}} - {{if $duration <= 0}} - {{:error message="Erreur : la durée d'amortissement doit être strictement positive"}} - {{/if}} - - {{if $_POST.libelle != $ligne_immo.line_label && $_POST.libelle != $ligne_immo.trans_label}} - {{:assign libelle=$_POST.libelle}} - {{else}} - {{:assign libelle=null}} - {{/if}} - - {{:assign montant=null}} - {{if $_POST.montant == null || $_POST.montant|money_int == 0 || $_POST.montant|money_int == $info_immo.amount}} - {{:assign montant=$info_immo.amount}} - {{else}} - {{:assign montant=$_POST.montant|money_int}} - {{if $montant < 0 || $montant > $max_disponible}} - {{:assign montant_aff="%f"|math:$montant|money_currency:false}} - {{:assign max_aff="%f"|math:$max_disponible|money_currency:false}} - {{:error message="Le montant (%s) doit être positif et ne peut être supérieur à %s"|args:$montant_aff:$max_aff}} - {{/if}} - {{/if}} - - {{:assign status="managed"}} - - {{* enregistrer les infos de l'immobilisation *}} - {{:save - key=$info_immo.key - validate_schema="asset.schema.json" - type="immo" - line=$info_immo.line - duration=$duration - label=$libelle - amount=$montant - date_achat=$date_achat - date_mes=$date_mes - status=$status - assign_new_id="new_id" - }} - - {{:assign type_immo="managed"}} - {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=modif"|args:$_GET.immo_doc_id:$type_immo}} -{{/form}} - -{{:admin_header title="Modifier l'immobilisation" custom_css="./style.css" current="module_amortization"}} -{{if ! $dialog}} - {{:include file="_nav.html" current="managed" subcurrent="modify_infos"}} -{{/if}} -{{:form_errors}} - -{{:assign choix_defaut=$_GET.type_immo}} - -{{* - modifier la date de mise en service, les écritures associées ou la durée d'amortissement -*}} - -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -

Paramètres de l'immobilisation

-
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$immo_label}}
-
Compte d'immobilisation
-
{{$ligne_immo.account_code}} — {{$ligne_immo.account_label}} -
Montant
-
{{"%f"|math:$montant_immo|money_currency_html:false|raw}}
- {{if $total_credits > 0}} -
Montant des avoirs
-
{{"%f"|math:$total_credits|money_currency_html:false|raw}}
-
Montant à amortir
-
{{"%f"|math:$solde|money_currency_html:false|raw}}
- {{/if}} -
Date de l'écriture d'immobilisation
-
{{$ligne_immo.date_achat|date_short}}
-
-
- -
-
- Informations -
- {{:input type="number" name="duree" label="Durée d'amortissement" min=1 default=$info_immo.duration suffix="année(s)"}} - {{if $info_immo.amount != null}} - {{:assign max_aff="%f"|math:$max_disponible|money_currency:false}} - {{:input type="money" name="montant" label="Montant de l'immobilisation" default=$montant_immo help="Montant maximum : %s"|args:$max_aff}} - {{/if}} - {{:input type="date" name="date_achat" label="Date d'acquisition" default=$date_achat_defaut help="si différente de la date de l'écriture d'immobilisation"}} - {{:input type="date" name="date_mes" label="Date de mise en service" default=$date_mes_defaut help="si différente de la date d'acquisition"}} - {{:input type="text" name="libelle" label="Libellé" default=$immo_label help="si différent du libellé de l'écriture d'immobilisation"}} -
-
-

- {{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}} -

-
- -{{:admin_footer}} diff --git a/module.ini b/module.ini index 4583613..f3f13f1 100644 --- a/module.ini +++ b/module.ini @@ -1,5 +1,5 @@ name="Amortissements" -description="Immobilisations et amortissements\nversion 0.40.0" +description="Immobilisations et amortissements\nversion 0.32" author="Jean-Christophe Engel" author_url="https://gitea.zaclys.com/lesanges" home_button=false diff --git a/other_amortizations.html b/other_amortizations.html index e3d8f9e..91b379a 100644 --- a/other_amortizations.html +++ b/other_amortizations.html @@ -3,45 +3,98 @@ {{* Lister les écritures d'amortissement indépendantes et proposer des les attacher à l'immo sélectionnée - @param immo_doc_id id du doc d'immo associé -*}} -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} + @param immo_line_id = id de la ligne d'immo + *}} -{{: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}} -{{:assign date_mes=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} - -{{* 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 montant_immo="%d-%d"|math:$montant_immo:$total_credits}} - -{{* 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" -}} -{{if $_GET.filter}} - {{:assign amort_account=$code_amort|quote_sql}} - {{:assign filter_condition="account.code = "|cat:$amort_account}} +{{* récupérer les infos de l'immobilisation *}} +{{#select + trans.label as label, + line.label as line_label + FROM acc_transactions_lines AS line + INNER JOIN acc_transactions AS trans ON line.id_transaction = trans.id + WHERE line.id = :line_id; + :line_id = $_GET.immo_line_id|intval + assign=ligne_immo + }} {{else}} - {{:assign account_filter="28%"|quote_sql}} - {{:assign filter_condition="account.code LIKE "|cat:$account_filter}} + {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_line_id}} +{{/select}} + +{{:include file="_get_config.html" keep="module.config"}} + +{{if $_POST.unhide == null}} + {{:assign filter_condition=" 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)"}} +{{else}} + {{:assign filter_condition="1"}} {{/if}} -{{:assign date_amort=$date_mes|quote_sql}} -{{:assign date_condition="trans.date >= "|cat:$date_amort}} -{{:assign condition=$date_condition|cat:" AND "|cat:$filter_condition}} +{{* lister les écritures d'amortissement *}} +{{#select + line.id as amort_line_id, + line.id_transaction as amort_trans_id, + line.credit as amort_amount, + line.label as line_label, + trans.date as trans_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 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) AND !filter_condition + ORDER BY trans.date, trans.label; + !filter_condition=$filter_condition + assign="amort" + }} -{{* lister les amortissements non rattachés à une immo *}} -{{:include file="./_get_free_amort.html" condition=$condition keep="free_amort_lines"}} + {{* voir s'il existe des écritures liées avec un numéro de compte d'immobilisation *}} + {{#select + links.id_transaction, + links.id_related, + trans.id AS trans_id + FROM acc_transactions_links AS links + INNER JOIN acc_transactions AS trans ON ( + CASE + WHEN links.id_transaction = :id_amort THEN links.id_related + WHEN links.id_related = :id_amort THEN links.id_transaction + END) = trans.id + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE + links.id_transaction = :id_amort OR links.id_related = :id_amort + AND acc.code LIKE '21%' + LIMIT 1 + ; + :id_amort=$amort.amort_trans_id + }} + {{* voir s'il existe un doc associé à une ligne de l'amortissement *}} + {{:assign keep=true}} + {{#load type="link" + where="$$.amort_trans_id = :amort_trans_id" + :amort_trans_id = $amort.amort_trans_id + }} + {{if $amort_line_id == $amort.amort_line_id}} + {{:assign keep=false}} + {{:break}} + {{/if}} + {{else}} + {{:assign keep=false}} + {{/load}} + {{if $keep}} + {{:assign var="autres_amortissements." value=$amort}} + {{/if}} + {{else}} + {{:assign var="autres_amortissements." value=$amort}} + {{/select}} +{{/select}} {{:admin_header title="Amortissements non rattachés" custom_css="./style.css" current="module_amortization"}} @@ -49,86 +102,72 @@ {{if ! $dialog}} {{:include file="_nav.html" - current="managed" - subcurrent="amortization" - type_immo="managed" - autres_amort=$free_amort_lines + current="index" + subcurrent="other" + subsubcurrent="amortization" + type_immo="other" + autres_amort=$autres_amortissements }} {{/if}} - +{{if $_POST.unhide != null}} + {{:assign checked="checked"}} +{{/if}} -{{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$ligne_immo.trans_id}} -
-
-
-
Immobilisation
-
#{{$ligne_immo.trans_id}} {{$label_immo}}
-
Montant
-
{{"%f"|math:$montant_immo|money_currency_html:false|raw}}
-
Début d'amortissement
-
{{$date_mes|date_short}}
-
-
+
+
+ {{:input type="checkbox" value=1 name="unhide" checked="%s"|args:$checked label="Afficher toutes les écritures" }} +
+
- {{if $free_amort_lines != null}} +{{if $autres_amortissements != null}} +
+

Immobilisation « {{$ligne_immo.label}}{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.label}} — {{$ligne_immo.line_label}}{{/if}} »

- + - {{#foreach from=$free_amort_lines item="line"}} - {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.trans_id}} - {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.year}} + {{#foreach from=$autres_amortissements item="line"}} + {{:assign trans_url="%s/acc/transactions/details.php?id=%s"|args:$admin_url:$line.amort_trans_id}} + {{:assign compte_url="%s/acc/accounts/journal.php?id=%s&year=%s"|args:$admin_url:$line.account_id:$line.amort_year}} - + - + - - + - {{/foreach}} -

Sélectionner une écriture d'amortissement pour l'associer à l'immobilisation

DateLibellé MontantLibellé N° compte Compte
#{{$line.trans_id}}#{{$line.amort_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}} + {{"%f"|math:$line.amort_amount|money_html:false|raw}}{{$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_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_line_id=%d&immo_line_id=%d"|args:$line.amort_line_id:$_GET.immo_line_id shape="plus"}}
- {{else}} -

Aucun amortissement pour le compte {{$code_amort}}

- {{/if}} -
- +
+{{/if}} {{:form_errors}} {{:admin_footer}} + + diff --git a/save_amort.html b/save_amort.html index 2504ff8..4aa8e64 100644 --- a/save_amort.html +++ b/save_amort.html @@ -2,45 +2,131 @@ {{* Créer une écriture d'amortissement - @param immo_doc_id : id du doc associé à l'immo + @param immo_line_id : id de la ligne d'immobilisation *}} -{{* données de l'immobilisation *}} -{{:include file="_get_immo_data.html" immo_doc_id=$_GET.immo_doc_id|intval keep="info_immo, ligne_immo, message"}} -{{if $message != null}} - {{:error message=$message}} -{{/if}} - -{{if $info_immo.amount != null}} - {{:assign var="ligne_immo.amount" value=$info_immo.amount}} -{{/if}} -{{:assign date_debut=$info_immo.date_mes|or:$info_immo.date_achat|or:$ligne_immo.date_achat}} -{{:assign amort_label=$info_immo.label|or:$ligne_immo.trans_label}} - -{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $amort_label}} +{{* Infos de l'immobilisation *}} +{{#select + line.id_account as account_id, + line.debit as montant, + line.id_project as project_id, + line.label as line_label, + trans.id as trans_id, + trans.label, + trans.date, + account.code as account_code + 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 + LEFT JOIN acc_projects AS project ON line.id_project = project.id + WHERE line.id = :line_id; + :line_id = $_GET.immo_line_id|intval + assign=ligne_immo + }} +{{else}} + {{:error message="Immobilisation %s non trouvée"|args:$_GET.immo_line_id}} +{{/select}} +{{:assign date_debut=$ligne_immo.date}} +{{:assign var="amort_label" value="Amortissement %s"|args:$ligne_immo.label}} +{{if $ligne_immo.line_label != null && $ligne_immo.line_label != $ligne_immo.label}} {{:assign amort_label=$amort_label|cat:" — "|cat:$ligne_immo.line_label}} {{/if}} -{{:assign var="amort_label" value="Amortissement %s"|args:$amort_label}} -{{* 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}} +{{#load type="immo" where="$$.line = :line_id" :line_id=$_GET.immo_line_id|intval}} + {{:assign duree=$duration}} + {{:assign date_debut=$date}} + {{:assign status=$status}} +{{else}} + {{:error message="Vous devez renseigner la date de mise en service et la durée d'immobilisation"}} +{{/load}} -{{* lister les amortissements liés à l'immobilisation *}} -{{:include file="./_get_amort_lines.html" immo_doc_id=$_GET.immo_doc_id keep="linked_amort, total_amort"}} - -{{:assign valeur_residuelle="%d-%d"|math:$ligne_immo.amount:$total_amort}} -{{if $valeur_residuelle == 0}} +{{if $status == "amortized" || $status == "archived"}} {{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}} {{/if}} -{{#foreach from=$linked_amort|ksort item="line"}} - {{:assign date_debut=$line.date}} - {{:assign code_amort=$line.account_code}} - {{:assign amort_account_label=$line.account_label}} - {{:assign amort_label=$line_label|or:$trans_label}} +{{* chercher des écritures liées à l'immo courante au crédit du même compte + et déduire leur montant de celui de l'immo +*}} +{{:assign total_credits=0}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as other_id, + line.credit + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (trans.id = links.id_transaction OR trans.id = links.id_related) + INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; + :immo_trans_id=$ligne_immo.trans_id + :account=$ligne_immo.account_code + }} + {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} +{{/select}} +{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}} +{{:assign solde=$ligne_immo.montant}} + +{{* 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_id, + 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_line_id|intval + assign="amort_line" +}} + {{#load type="link" + where="$$.immo_line_id = :immo_line_id AND $$.amort_trans_id = :amort_trans_id" + order="$$.date" + assign="line" + :immo_line_id=$_GET.immo_line_id|intval :amort_trans_id=$amort_line.amort_trans_id + }} + {{if $line.amort_line_id == $amort_line.amort_line_id}} + {{:assign var="linked_amort." value=$amort_line}} + {{/if}} + {{else}} + {{:assign var="linked_amort." value=$amort_line}} + {{/load}} +{{/select}} + + +{{:assign total_amort=0}} +{{:assign valeur_residuelle=$ligne_immo.montant}} +{{#foreach from=$linked_amort}} + {{:assign valeur_residuelle="%d-%d"|math:$valeur_residuelle:$amort_amount}} + {{:assign total_amort="%d+%d"|math:$total_amort:$amort_amount}} + {{:assign date_debut=$amort_date}} + {{:assign code_amort=$account_code}} + {{:assign amort_account_label=$account_label}} + {{:assign amort_label=$amort_label}} {{/foreach}} +{{if $valeur_residuelle == 0}} + {{:error message="Cette immobilisation est complètement amortie ; il est impossible d'ajouter une écriture d'amortissement"}} +{{/if}} + {{if $total_amort == 0}} {{* 1er amortissement *}} {{* déterminer le compte d'amortissement en fonction du compte d'immobilisation *}} @@ -52,7 +138,7 @@ keep="code_amort" }} {{:assign var="amort_account_label" value="Amortissement %s"|args:$amort_account.label}} - {{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.trans_label}} + {{:assign var=libelle value="Amortissement %s"|args:$ligne_immo.label}} {{else}} {{* amortissements suivants *}} {{:assign date_debut=$date_debut|strtotime}} @@ -65,7 +151,7 @@ *}} {{:assign msg_years=""}} {{#years closed=false order="start_date" where="start_date <= :debut AND :debut <= end_date" - :debut=$date_debut assign="years."}} + :debut=$date_debut assign=years.}} {{if $total_amort == 0}} {{:assign ts_debut=$date_debut|strtotime}} {{else}} @@ -78,9 +164,7 @@ {{:assign var="years_data.%d"|args:$id value=$ts_debut|cat:" "|cat:$ts_fin}} {{:assign msg_years=$msg_years|cat:"\n"|cat:" - "|cat:$label|cat:" : "|cat:$debut|cat:" à "|cat:$fin}} {{else}} - {{:assign date_debut=$date_debut|date_short}} - {{:assign msg="Pas d'exercice ouvert pour enregistrer un amortissement à partir du %s"|args:$date_debut}} - {{:error message=$msg}} + {{:error message="Aucun exercice ouvert pour enregistrer un amortissement"}} {{/years}} {{* Traiter l'envoi du formulaire *}} @@ -137,35 +221,30 @@ }} {{if $account_ok == null}} {{:assign compte=$credit_account|implode:""}} - {{:redirect url="add_account.html?account=%s&chart=%s"|args:$compte:$selected_chart}} + {{:redirect url="add_account.html?account=%s&chart=%s&immo_line_id=%s"|args:$compte:$selected_chart:$_GET.immo_line_id}} {{/if}} {{* vérifier que le montant ne dépasse pas le solde restant *}} - {{:assign solde="%d-%d"|math:$ligne_immo.amount:$total_amort}} + {{:assign solde="%d-%d"|math:$ligne_immo.montant:$total_amort}} {{if $_POST.montant|trim|money_int > $solde|intval}} - {{:assign montant=$_POST.montant|trim|money_int|money_raw}} {{:assign solde=$solde|money_raw}} - {{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$montant:$solde}} + {{:error message="Le montant indiqué « %s » dépasse le solde à amortir « %s »"|args:$_POST.montant:$solde}} {{/if}} - {{* - supprimer les documents qui pointent sur une ligne d'amortissement absente - cas de la suppression manuelle d'un amortissement - *}} - {{:include file="_remove_orphan_docs.tpl"}} - {{* enregistrer l'écriture *}} {{:assign var="lines." debit=$_POST.montant account=$debit_account|keys|value:0 - id_project=$ligne_immo.id_project + id_project=$ligne_immo.project_id + label=$_POST.designation }} {{:assign var="lines." credit=$_POST.montant account=$credit_account|keys|value:0 - id_project=$ligne_immo.id_project + id_project=$ligne_immo.project_id + label=$_POST.designation }} {{:api method="POST" @@ -181,51 +260,47 @@ }} {{* enregistrer la liaison des lignes *}} - {{#foreach from=$result.lines item="line"}} - {{if $line.account_code == $credit_account|keys|value:0}} - {{:save - key=""|uuid - type="amort_link" - immo_doc_id=$_GET.immo_doc_id|intval - amort_line_id=$line.id - created=true - }} - {{:break}} - {{/if}} - {{/foreach}} - - {{* immo soldée ? *}} - {{if $_POST.montant|trim|money_int == $solde}} - {{:assign status="amortized"}} + {{#select + trans.id AS trans_id, + line.id AS line_id + FROM acc_transactions AS trans + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + WHERE trans.id = :trans_id + ; + :trans_id = $result.id + }} + {{:assign amort_trans_id=$trans_id}} + {{:assign amort_line_id=$line_id}} + {{/select}} + {{if $amort_trans_id != null}} {{:save - key=$info_immo.key - status=$status + key=""|uuid + type="link" + immo_line_id=$_GET.immo_line_id|intval + amort_line_id=$amort_line_id|intval + amort_trans_id=$result.id }} {{/if}} - {{:redirect force="amortization.html?immo_doc_id=%s&type_immo=%s&ok=1&msg=amortissement"|args:$_GET.immo_doc_id:$status}} + {{:redirect force="amortization.html?immo_line_id=%s&ok=1&msg=amortissement"|args:$_GET.immo_line_id}} {{/form}} -{{:assign label_immo=$info_immo.label|or:$ligne_immo.trans_label}} - -{{:admin_header title="Amortissement pour « %s »"|args:$label_immo custom_css="./style.css" current="module_amortization"}} +{{:admin_header title="Ajout amortissement" custom_css="./style.css" current="module_amortization"}} {{* barre de navigation *}} {{if ! $dialog}} - {{:include file="_nav.html" current="managed" subcurrent="amortization"}} + {{:include file="_nav.html" current="index" subcurrent="managed" subsubcurrent="amortization"}} {{/if}} {{:form_errors}} -{{if $years|count == 1}} - {{:assign var=selected_year value=$years.0.id}} -{{/if}} +{{:assign var=selected_year value=$years.0.id}} {{:assign var=date_amort value=$years.0.end_date}} {{:include file="_calcul_dates.html" date_debut=$date_debut date_fin=$date_amort keep="nbjours"}} {{* montant de l'amortissement *}} -{{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.amount:$info_immo.duration:$nbjours|intval}} -{{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.amount:$total_amort}} +{{:assign montant_amort="%f/%f/365*%d"|math:$ligne_immo.montant:$duree:$nbjours|intval}} +{{:assign montant_amort="min(%f, %d-%d)"|math:$montant_amort:$ligne_immo.montant:$total_amort}} {{:assign var="debit_account.6811" value="6811 — Dot. aux amortissements des immobilisations"}} {{:assign var="credit_account.%s"|args:$code_amort value="%s — "|args:$code_amort|cat:$amort_account_label}} @@ -248,7 +323,6 @@ name="debit_account" label="Compte de débit" required=true - readonly=true target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:"68*":$selected_year default=$debit_account }} @@ -257,13 +331,12 @@ name="credit_account" label="Compte d'amortissement (28xx)" required=true - readonly=true target="!acc/charts/accounts/selector.php?codes=%s&id_year=%d"|args:"28*":$selected_year default=$credit_account }} @@ -296,8 +369,8 @@ function redisplayData(evt, ) { setDateEnd(f_years_select, f_date, f_years_data); - displayAmort(f_immo, f_duree, f_amort, f_years_data, f_years_select, f_montant, f_erreur); setSelectorYear(['credit_account', 'debit_account'], f_years_select); + displayAmort(f_immo, f_duree, f_amort, f_years_data, f_years_select, f_montant, f_erreur); } function redisplayAmort(evt, diff --git a/asset.schema.json b/schema.json similarity index 59% rename from asset.schema.json rename to schema.json index 4391dd5..2acebc3 100644 --- a/asset.schema.json +++ b/schema.json @@ -1,6 +1,5 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Donnée d'une immobilisation", "type": "object", "properties": { "type": { @@ -15,20 +14,11 @@ "description": "durée de l'amortissement en années", "type": "integer" }, - "label" : { - "description" : "libellé de l'immobilisation si besoin", - "type" : ["string", "null"] - }, "amount" : { "description": "montant de l'immobilisation si besoin", "type": ["integer", "null"] }, - "date_achat" : { - "description" : "date d'achat de l'immobilisation si besoin", - "type" : ["string", "null"], - "format" : "date" - }, - "date_mes" : { + "date" : { "description" : "date de mise en service de l'immobilisation", "type" : ["string", "null"], "format" : "date" @@ -36,11 +26,7 @@ "status" : { "type" : ["string", "null"], "enum" : ["managed", "amortized", "archived", "ignored"] - }, - "created" : { - "description" : "vrai si immobilisation créée dans le module", - "type" : ["boolean", "null"] } }, - "required": ["type", "line", "duration", "status"] + "required": ["type", "line", "duration", "date"] } diff --git a/scripts.js b/scripts.js index 3def0ba..7496328 100644 --- a/scripts.js +++ b/scripts.js @@ -12,27 +12,25 @@ function toggleInputs(idcb, idfields) { } } -function toggleVisibility(id_check, fields) { - const elem = document.getElementById(id_check); - fields.forEach(function (id_field) { - const field = document.getElementById(id_field); +function toggleVisibility(idcheck, fields) { + const elem = document.getElementById(idcheck); + for (let id of fields) { + const field = document.getElementById(id); if (elem.checked) { - field.classList.remove('hidden'); + field.setAttribute('class', ''); } else { - field.classList.add('hidden'); + field.setAttribute('class', 'hidden'); } - }); + } } // fixer l'exercice des sélecteurs de compte function setAccountYear(button_names, id_year) { for (const name of button_names) { const button = document.querySelector("button[data-name=" + name + "]"); - if (button != null) { - const b_value = button.value; - const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year); - button.setAttribute('value', new_value); - } + const b_value = button.value; + const new_value = b_value.replace(/id_year=\d+/, 'id_year=' + id_year); + button.setAttribute('value', new_value); } } @@ -82,7 +80,7 @@ function setDateEnd(id_exercices, id_date, id_years) { // renvoyer la valeur numérique d'un montant formaté en € function getNumber(text) { - return Number(text.replace(/[^0-9,]/g, '').replace(/,/, '.')); + return Number(text.replace(/[^0-9,]/g, '').replace(/,/, '.')); } // calculer le montant d'un amortissement @@ -134,9 +132,7 @@ function displayAmort(id_immo, id_duree, id_amort, id_years, id_exercices, id_mo case_montant.innerText = montant_amort; } -function setSelectorYear(button_names, f_years_selector) -{ - const selector = document.getElementById(f_years_selector); +function setSelectorYear(button_names, f_years_selector) { const selected_year = document.getElementById(f_years_selector).value; setAccountYear(button_names, selected_year); } @@ -145,21 +141,19 @@ function setSelectorYear(button_names, f_years_selector) // Associer au bouton « Enlever » de chaque ligne l'action de suppression de la ligne function initLine(row) { - let removeBtn = row.querySelector('button[name="remove_line"]'); - if (removeBtn != null) { - removeBtn.onclick = () => { - let count = removeBtn.closest("table").querySelectorAll('tbody tr').length; - var min = removeBtn.getAttribute('min'); + var removeBtn = row.querySelector('button[name="remove_line"]'); + removeBtn.onclick = () => { + let count = removeBtn.closest("table").querySelectorAll('tbody tr').length; + var min = removeBtn.getAttribute('min'); - if (count <= min) { - alert("Il n'est pas possible d'avoir moins de " + min + " ligne(s)."); - return false; - } + if (count <= min) { + alert("Il n'est pas possible d'avoir moins de " + min + " ligne(s)."); + return false; + } - row.parentNode.removeChild(row); - return true; - }; - } + row.parentNode.removeChild(row); + return true; + }; } // Associer au bouton « Ajouter » de chaque table l'action d'ajouter une ligne @@ -187,28 +181,6 @@ function addLine(button, codes) { let lib = newNode.querySelector('.input-list span.label'); lib.innerText = ''; - // si besoin, ajouter le bouton de suppression - let action_cell = newNode.querySelector('td.actions'); - let removeBtn = newNode.querySelector('button[name="remove_line"]'); - if (removeBtn == null) { - const attributs = { - "title" : "Enlever une ligne", - "min": "1", - "name": "remove_line", - "data-icon": "➖", - "type": "button", - "class": "icn-btn", - "value": "1", - "aria-label": "Enlever une ligne" - }; - let new_button = document.createElement("button"); - new_button.appendChild(document.createTextNode("Enlever")); - for (let attr in attributs) { - new_button.setAttribute(attr, attributs[attr]); - } - action_cell.appendChild(new_button); - } - // ajouter la nouvelle ligne line.parentNode.appendChild(newNode); initLine(newNode); diff --git a/style.css b/style.css index 9a24aee..6836da9 100644 --- a/style.css +++ b/style.css @@ -35,15 +35,17 @@ h2[class="aide"], h3[class="aide"] { } .informations dl.describe { - grid-template-columns : 25rem 1fr; + grid-template-columns : 20rem 1fr; } .informations dl.describe > dt { + flex: 0 0 15rem; margin-right: 0; white-space: nowrap; } .informations dl.describe > dd { + flex: 0 0 calc(100% - 20rem); margin-right: 0; } @@ -75,18 +77,6 @@ table.list tbody tr.ignored:nth-child(even) { background: rgba(255, 255, 200, 0.5); } -table.error { - background-color: #fcc; -} -table.error tr, table.error td, table.error thead td { - background-image : none; - background-color: #fcc; -} - -span.input-list.avoirs label { - padding : 0.4rem 0.6rem; -} - -aside.right { - float: right; +html.dialog.dark { + filter: none !important; } diff --git a/style_aide.css b/style_aide.css deleted file mode 100644 index dc0879e..0000000 --- a/style_aide.css +++ /dev/null @@ -1,69 +0,0 @@ -section.page * -{ - padding: 0.1em; - margin-top: 0.1em; -} - -section.page ul { - list-style: inside; - margin-left: 1.5em; -} - -section.page ol { - list-style: decimal; - margin-left: 1.5em; -} - -section.page h1 { - font-size: 2em; -} - -section.page h2 { - font-size: 1.5em; - margin-top : 1.5rem; - margin-bottom : 0.5rem; -} - -section.page h3 { - font-size: 1.2em; - margin-top : 1.5rem; - margin-bottom : 0.5rem; -} - -section.page h4 { - font-size: 1em; - margin-top : 1.5rem; - margin-bottom : 0.5rem; -} - -section.page figure { - margin-top : 0.5rem; - margin-bottom : 1rem; -} - -section.page figcaption { - font-weight : bold; -} - -section.page blockquote { - width: 75%; - margin-left: 2em; - margin-right: 2em; - font-family: Arial, Helvetica, sans-serif; - font-size: 1.1em; -} - -section.page article header { - text-align: center; - margin: 1rem 0; - padding-bottom: 0.5rem; - border-bottom: 2px solid #999; -} - -a:link { - color: #0033aa; -} - -a:link:visited { - color: #6600aa; -} diff --git a/transfer.html b/transfer.html index 3017036..6f5bbcb 100644 --- a/transfer.html +++ b/transfer.html @@ -36,6 +36,7 @@ {{:assign trans_list=$trans_list|implode:","}} {{:assign trans_list="("|cat:$trans_list|cat:")"}} {{:assign condition=$condition|cat:" AND trans.id IN "|cat:$trans_list}} +{{:assign condition=$condition|cat:" AND NOT (trans.status & 16)"}} {{#select trans.id as trans_id, @@ -55,7 +56,6 @@ }} {{:assign var="transactions.%s"|args:$trans_id amount=$line_debit - line_label=$trans_label date=$trans_date code=$account_code label=$account_label @@ -75,12 +75,12 @@ {{/if}} {{* vérifier que la date de mise en service est située dans l'exercice sélectionné *}} - {{:assign ts_date = $_POST.date_mes|parse_date}} + {{:assign ts_date = $_POST.date_mes|parse_date|strtotime}} {{:assign ok=false}} {{#foreach from=$years}} {{if $id == $_POST.id_year}} {{:assign selected_chart=$id_chart}} - {{if $start_date <= $ts_date && $ts_date <= $end_date}} + {{if $start_date|strtotime <= $ts_date && $ts_date <= $end_date|strtotime}} {{:assign ok=true}} {{:break}} {{/if}} @@ -93,8 +93,11 @@ {{if ! $_POST.amortir}} {{* ne pas amortir *}} {{:assign duration=0}} + {{:assign date_debut=$_POST.date_achat|parse_date}} {{:assign status="ignored"}} {{else}} + {{* vérifier que la date d'acquisition est antérieure à la date de mise en service *}} + {{:assign date_debut=$_POST.date_mes|parse_date}} {{:assign duration=$_POST.duree|intval}} {{:assign status="managed"}} {{/if}} @@ -175,13 +178,12 @@ {{* enregistrer les infos de l'immobilisation *}} {{:save key=""|uuid - validate_schema="asset.schema.json" + validate_schema="schema.json" type="immo" line=$immo_line_id duration=$duration - date_mes=null + date=$date_debut status=$status - created=true }} {{if $_POST.amortir}} {{:assign type_immo="managed"}} @@ -193,7 +195,7 @@ {{:admin_header title="Transfert d'immobilisation en cours" custom_css="./style.css" current="module_amortization"}} {{if ! $dialog}} - {{:include file="_nav.html" current="unfinished" subcurrent="transfer"}} + {{:include file="_nav.html" current="index" subcurrent="unfinished" subsubcurrent="transfer"}} {{/if}} {{:form_errors}} @@ -255,17 +257,16 @@ {{: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 + type="list" + name="credit_accounts[]" + required=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}} + {{:input type="text" name="line_labels[]" size="40"}} {{if $projects != null}} {{:input type="select" name="id_project" options=$projects default_empty="— Aucun —"}} @@ -273,7 +274,6 @@ {{/foreach}} - diff --git a/upgrade.html b/upgrade.html deleted file mode 100644 index 9da08ef..0000000 --- a/upgrade.html +++ /dev/null @@ -1,42 +0,0 @@ -{{* -*- brindille -*- *}} - -{{* - mise à niveau des documents selon version -*}} - -{{* version 0.31 *}} -{{:assign tag="0.31"}} - -{{: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.31' && $module.config.version < '0.31' *}} - - {{:include file="_upgrade_to031.tpl"}} -

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..a4de1cd 100644 --- a/write_exit.html +++ b/write_exit.html @@ -3,49 +3,67 @@ {{* Enregistrer les écritures de sortie du bilan paramètres : - - immo_doc_id : id du doc associé à l'immobilisation + - immo_line_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, + trans.id AS trans_id, + trans.date as date_achat, + trans.label, + acc.code as account_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_line_id; + :immo_line_id = $_GET.immo_line_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}} - -{{: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}} +{{* chercher des écritures liées à l'immo courante au crédit du même compte + et déduire leur montant de celui de l'immo +*}} +{{:assign total_credits=0}} +{{#select + CASE links.id_related = :immo_trans_id + WHEN true THEN links.id_transaction + WHEN false THEN links.id_related + END as other_id, + line.credit + FROM acc_transactions AS trans + INNER JOIN acc_transactions_links as links + ON (trans.id = links.id_transaction OR trans.id = links.id_related) + INNER JOIN acc_transactions_lines AS line on line.id_transaction = other_id + INNER JOIN acc_accounts AS acc ON line.id_account = acc.id + WHERE trans.id = :immo_trans_id AND line.credit > 0 AND acc.code = :account; + :immo_trans_id=$ligne_immo.trans_id + :account=$ligne_immo.account_code + }} + {{:assign total_credits="%d+%d"|math:$total_credits:$credit}} +{{/select}} +{{:assign var="ligne_immo.montant" value="%d-%d"|math:$ligne_immo.montant:$total_credits}} +{{: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 +73,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 @@ -81,7 +106,7 @@ }} {{:assign comp_account_code=$account_code|keys|value: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 @@ -106,7 +131,7 @@ keep="account_code" }} {{:assign except_account_code=$account_code|keys|value:0}} - {{:assign libelle="Amortissement exceptionnel "|cat:$label_immo}} + {{:assign libelle="Amortissement exceptionnel "|cat:$ligne_immo.label}} {{:assign var="lines." debit="%f/100"|math:$amort_except @@ -132,23 +157,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 *}} @@ -159,18 +171,18 @@ keep="account_code" }} {{:assign immo_account_code=$account_code|keys|value:0}} - {{:assign libelle="Sortie du bilan de "|cat:$label_immo}} + {{: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 }} @@ -200,26 +212,12 @@ 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 @@ -245,40 +243,36 @@ 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_line_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"}} {{/form}} {{:admin_header title="Sortie du bilan" custom_css="./style.css" current="module_amortization"}} + +{{* 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}} {{* @@ -292,6 +286,10 @@ keep="code_amort" }} +{{* numéros de comptes ; voir info.org *}} +{{:assign vnc_code="652"}} +{{:assign cession_code="757"}} + {{:assign var="liste_codes.6811" name="comp_account"}} {{:assign var="liste_codes.687" name="except_account"}} {{:assign var="liste_codes.462" name="creance_account"}} @@ -336,22 +334,24 @@ {{/foreach}} {{:assign patterns=$pattern_array|implode:"|"}} -

Sortir l'immobilisation « {{$label_immo}} » du bilan

+

Sortir l'immobilisation « {{$ligne_immo.label}} » du bilan

Données de l'imobilisation
Montant
-
{{$ligne_immo.amount|money_currency_html:false|raw}}
+
{{$ligne_immo.montant|money_currency_html:false|raw}}
Date d'acquisition
-
{{$date_achat|date_short}}
- {{if $date_mes != null}} +
{{$ligne_immo.date_achat|date_short}}
+ {{if $_GET.date_mes != $ligne_immo.date_achat|strtotime}}
Date de mise en service
-
{{$date_mes|date_short}}
+
{{$_GET.date_mes|date:"d/m/Y"}}
+ {{/if}} + {{if $_GET.duree_amort != null}} +
Durée de l'amortissement
+
{{$_GET.duree_amort}} ans
{{/if}} -
Durée de l'amortissement
-
{{$info_immo.duration}} ans
Montant des amortissements
{{$_GET.amort_amount|money_currency_html:false|raw}} (à la date de début de l'exercice)
Valeur nette résiduelle
@@ -403,7 +403,6 @@ type="list" name="comp_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"68*":$chart_id - readonly=true default=$comp_account }} @@ -416,7 +415,6 @@ type="list" name="amort_comp_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"28*":$chart_id - readonly=true default=$amort_account }} @@ -449,7 +447,6 @@ type="list" name="except_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"687*":$chart_id - readonly=true default=$except_account }} @@ -462,7 +459,6 @@ type="list" name="amort_except_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"28*":$chart_id - readonly=true default=$amort_account }} @@ -489,12 +485,11 @@ type="list" name="amort_sortie_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"28*":$chart_id - readonly=true default=$amort_account }} {{if $montant_cession == 0}} - {{:assign montant=$ligne_immo.amount}} + {{:assign montant=$ligne_immo.montant}} {{else}} {{:assign montant="%f+%f"|math:$_GET.amort_amount:$amort_comp}} {{/if}} @@ -508,7 +503,6 @@ type="list" name="vnc_account" target="!acc/charts/accounts/selector.php?codes=%s*&id_chart=%s"|args:$vnc_code:$chart_id - readonly=true default=$vnc_account }} @@ -522,12 +516,11 @@ type="list" name="immo_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:$patterns:$chart_id - readonly=true default=$immo_account }} - {{$ligne_immo.amount|money_currency_html:false|raw}} + {{$ligne_immo.montant|money_currency_html:false|raw}} @@ -549,7 +542,6 @@ type="list" name="creance_account" target="!acc/charts/accounts/selector.php?codes=%s&id_chart=%s"|args:"462*":$chart_id - readonly=true default=$creance_account }} @@ -562,7 +554,6 @@ type="list" name="cession_account" target="!acc/charts/accounts/selector.php?codes=%s*&id_chart=%s"|args:$cession_code:$chart_id - readonly=true default=$cession_account }}