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