diff --git a/_upgrade_to031.tpl b/_upgrade_to031.tpl new file mode 100644 index 0000000..1efe934 --- /dev/null +++ b/_upgrade_to031.tpl @@ -0,0 +1,99 @@ +{{* -*- brindille -*- *}} + +{{* + Mettre à niveau vers v0.31 + - créer un doc de liaison pour chaque amortissement lié à une immobilisation + mais uniquement pour les immo déjà gérées, sinon l'upgrade + vers 0.33 ne fonctionnera pas car on pourrait se retrouver avec + des liaisons immo <-> amort sans doc associé à l'immo donc la + transformation de link vers amort_link ne pourra se faire + + - id ligne d'immobilisation + - id ligne d'amortissement + - id écriture d'amortissement +*}} + +{{* lister les immobilisations *}} +{{:include file="_get_config.html" keep="module.config"}} + +{{:assign account_condition="("}} +{{#foreach from=$module.config.prefixes item="code"}} + {{:assign code=$code|cat:"%"|quote_sql}} + {{:assign account_condition=$account_condition|cat:" account.code LIKE "|cat:$code|cat:" OR "}} +{{/foreach}} +{{:assign account_condition=$account_condition|cat:"0)"}} + +{{:assign filter_condition=" AND NOT ("}} +{{#foreach from=$module.config.filters item="filter"}} + {{:assign filter="%"|cat:$filter|cat:"%"|quote_sql}} + {{:assign filter_condition=$filter_condition|cat:" trans.label LIKE "|cat:$filter|cat:" OR "}} +{{/foreach}} +{{:assign filter_condition=$filter_condition|cat:"0)"}} + +{{:assign condition=$account_condition|cat:" AND debit > 0 AND NOT (trans.status & 16)"|cat:$filter_condition}} + +{{#select + line.id as immo_line_id + FROM acc_transactions AS trans + INNER JOIN acc_transactions_lines AS line ON line.id_transaction = trans.id + INNER JOIN acc_accounts AS account ON line.id_account = account.id + INNER JOIN acc_years AS years ON trans.id_year = years.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|intval}} + {{:assign status=$status}} + {{else}} + {{:assign status="unknown"}} + {{/load}} + + {{* ne pas faire la liaison si pas de doc *}} + {{if $status == "ignored" || $status == "unknown"}} + {{:continue}} + {{/if}} + + {{* lister les écritures d'amortissement liées *}} + {{:assign amort_lines=null}} + {{#select + 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}} + + {{#foreach from=$amort_lines item="line"}} + {{* chercher un doc associé *}} + {{#load type="link" + where="$$.immo_line_id = :immo_line_id + AND $$.amort_line_id = :amort_line_id + AND $$.amort_trans_id = :amort_trans_id" + :immo_line_id = $immo_line_id + :amort_line_id = $line.amort_line_id + :amort_trans_id = $line.amort_trans_id + assign="link" + }} + {{else}} + {{* pas de doc => le créer *}} + {{:save + key=""|uuid + type="link" + immo_line_id=$immo_line_id + amort_line_id=$line.amort_line_id + amort_trans_id=$line.amort_trans_id + }} + {{/load}} + {{/foreach}} +{{/select}} diff --git a/_upgrade_to033.tpl b/_upgrade_to033.tpl new file mode 100644 index 0000000..b1104a7 --- /dev/null +++ b/_upgrade_to033.tpl @@ -0,0 +1,64 @@ +{{* -*- brindille -*- *}} + +{{* + Mettre à niveau vers v0.33, pour gérer les écritures du bilan d'ouverture + où le montant d'une ligne d'immo ou d'une ligne d'amort peut être + réparti entre plusieurs immo et plusieurs amort + + - modifier le doc d'immo + - date => date_mes (date mise en service) + + - modifier le doc de liaison d'amortissement + - id ligne d'immobilisation => id doc immobilisation + - id ligne d'amortissement + - id écriture d'amortissement + - ajouter montant amortissement +*}} + +{{* doc immo *}} +{{#load type="immo" assign="elem"}} + {{if $elem.date != null}} + {{:assign var="elem.date_mes" value=$elem.date}} + {{:assign var="docs." value=$elem}} + {{:delete id=$elem.id}} + {{/if}} +{{/load}} + +{{* créer les nouveaux documents *}} +{{#foreach from=$docs item="doc"}} + {{:save + key=""|uuid + type=$doc.type + line=$doc.line + duration=$doc.duration + label=$doc.label + amount=$doc.amount + date_achat=$doc.date_achat + date_mes=$doc.date_mes + status=$doc.status + }} +{{/foreach}} + +{{* lister les liaisons actuelles ligne amort => ligne immo *}} +{{#load type="link" assign="link"}} + {{#load type="immo" where="$$.line = :immo_line_id" :immo_line_id=$link.immo_line_id assign="immo"}} + {{:assign link_doc=null}} + {{:assign var="link_doc.immo_doc_id" value=$immo.id}} + {{:assign var="link_doc.amort_line_id" value=$link.amort_line_id}} + {{:assign var="link_docs." value=$link_doc}} + {{else}} + {{* liaison orpheline : ignorer *}} + {{/load}} + {{:delete id=$link.id}} +{{/load}} + +{{* créer les nouvelles liaisons *}} +{{#foreach from=$link_docs item="link"}} + {{:save + key=""|uuid + type="amort_link" + immo_doc_id=$link.immo_doc_id + amort_line_id=$link.amort_line_id + amount=null + }} +{{/foreach}} diff --git a/config.html b/config.html index eec7baf..1f29927 100644 --- a/config.html +++ b/config.html @@ -129,6 +129,27 @@ {{/if}}
+ {{:include file="_check_version.html" keep="new_version"}} + + {{if $new_version}} +
+ Mettre à niveau le module +

+ Pour que la mise à niveau soit effective, il faut d'abord + aller sur la + page du module {{$module.label}}, cliquer le bouton « Configurer » et enfin + cliquer le bouton « Mettre à niveau le module » +

+ {{:linkbutton + label="Mettre à niveau le module" + href="upgrade.html" + shape="reset" + class="main" + }} +
+ {{/if}} +

Comptes d'immobilisation amortissables

Les immobilisations amortissables sont cherchées dans les comptes sélectionnés et leurs sous-comptes. diff --git a/index.html b/index.html index f2fab2e..54040d2 100644 --- a/index.html +++ b/index.html @@ -37,14 +37,26 @@ {{* supprimer les documents sans écriture associée *}} {{:include file="_remove_orphan_docs.tpl"}} -{{if $type_immo == "other"}} - {{:include file="_immobilisations_autres.html"}} -{{elseif $type_immo == "archived"}} - {{:include file="_archives.html"}} -{{elseif $type_immo == "unfinished"}} - {{:include file="_unfinished.html"}} -{{elseif $type_immo == "managed" || $type_immo == "amortized"}} - {{:include file="_immobilisations.html"}} -{{/if}} +{{* vérifier si une nouvelle version du module est installée *}} +{{:include file="_check_version.html" keep="new_version"}} +{{if $new_version}} +

+ Une nouvelle version du module est disponible.
+ Pour effectuer la mise à niveau, il faut d'abord aller sur la + + page du module {{$module.label}}, cliquer le bouton « Configurer » et enfin cliquer le bouton + « Mettre à niveau le module » +

+{{else}} + {{if $type_immo == "other"}} + {{:include file="_immobilisations_autres.html"}} + {{elseif $type_immo == "archived"}} + {{:include file="_archives.html"}} + {{elseif $type_immo == "unfinished"}} + {{:include file="_unfinished.html"}} + {{elseif $type_immo == "managed" || $type_immo == "amortized"}} + {{:include file="_immobilisations.html"}} + {{/if}} +{{/if}} {{:admin_footer}} diff --git a/upgrade.html b/upgrade.html new file mode 100644 index 0000000..8ecfe75 --- /dev/null +++ b/upgrade.html @@ -0,0 +1,50 @@ +{{* -*- brindille -*- *}} + +{{* + mise à niveau des documents selon version +*}} + +{{:admin_header title="Mise à niveau" custom_css="./style.css" current="module_amortization"}} + +{{* numéro de version du module *}} +{{:include file="_get_module_version.tpl" keep="module_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}} + +{{:linkbutton label="Revenir à la page d'accueil du module" href="index.html" shape="right"}} +