Prepare Dominican accounting localization for core review
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from sql import Table
|
||||
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
LEGACY_OBSOLETE_IDS = {
|
||||
'do_tax_itbis_8_compra', 'do_tax_itbis_8_venta',
|
||||
'do_tax_itbis_9_compra', 'do_tax_itbis_9_venta',
|
||||
'do_tax_ret_itbis_2_adq',
|
||||
'do_tax_rule_customer_card_acquirer',
|
||||
'do_tax_rule_customer_itbis8', 'do_tax_rule_customer_itbis9',
|
||||
'do_tax_rule_supplier_itbis8', 'do_tax_rule_supplier_itbis9',
|
||||
'do_tc_itbis_compras_8', 'do_tc_itbis_compras_9',
|
||||
'do_tc_itbis_retenido_adq',
|
||||
'do_tc_itbis_ventas_8', 'do_tc_itbis_ventas_9',
|
||||
'do_tcl_itbis8c_cr', 'do_tcl_itbis8c_inv',
|
||||
'do_tcl_itbis8v_cr', 'do_tcl_itbis8v_inv',
|
||||
'do_tcl_itbis9c_cr', 'do_tcl_itbis9c_inv',
|
||||
'do_tcl_itbis9v_cr', 'do_tcl_itbis9v_inv',
|
||||
'do_tcl_ret_itbis_adq_cr', 'do_tcl_ret_itbis_adq_inv',
|
||||
'do_trline_cust_card_acquirer',
|
||||
'do_trline_cust_itbis8', 'do_trline_cust_itbis9',
|
||||
'do_trline_supp_itbis8', 'do_trline_supp_itbis9',
|
||||
}
|
||||
|
||||
LOCALIZATION_MODELS = {
|
||||
'account.account.template',
|
||||
'account.account.type.template',
|
||||
'account.tax.code.line.template',
|
||||
'account.tax.code.template',
|
||||
'account.tax.group',
|
||||
'account.tax.rule.line.template',
|
||||
'account.tax.rule.template',
|
||||
'account.tax.template',
|
||||
}
|
||||
|
||||
|
||||
class ModelData(metaclass=PoolMeta):
|
||||
__name__ = 'ir.model.data'
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
super().__register__(module_name)
|
||||
|
||||
if module_name != 'account_do': # pragma: no cover
|
||||
return # Defensive guard for composite PoolMeta classes.
|
||||
|
||||
cls._migrate_localization_identifiers()
|
||||
|
||||
@classmethod
|
||||
def _migrate_localization_identifiers(cls):
|
||||
"Preserve pre-language identifiers when upgrading from 8.0.0."
|
||||
|
||||
cursor = Transaction().connection.cursor()
|
||||
table = Table(cls._table)
|
||||
cursor.execute(*table.select(
|
||||
table.id, table.fs_id,
|
||||
where=(table.module == 'account_do')
|
||||
& table.model.in_(tuple(LOCALIZATION_MODELS))))
|
||||
obsolete = []
|
||||
for record_id, fs_id in cursor.fetchall():
|
||||
if fs_id in LEGACY_OBSOLETE_IDS:
|
||||
obsolete.append(record_id)
|
||||
elif not fs_id.endswith(('_en', '_es_419')):
|
||||
cursor.execute(*table.update(
|
||||
[table.fs_id], [fs_id + '_es_419'],
|
||||
where=table.id == record_id))
|
||||
if obsolete:
|
||||
# Retain referenced historical templates as user-owned records.
|
||||
cursor.execute(*table.delete(where=table.id.in_(obsolete)))
|
||||
Reference in New Issue
Block a user