diff --git a/__init__.py b/__init__.py index 68d3d77315..57d109183a 100644 --- a/__init__.py +++ b/__init__.py @@ -7,11 +7,13 @@ from . import account def register(): Pool.register( + account.AccountTemplate, account.TaxTemplate, account.TaxRuleTemplate, account.FrFECStart, account.FrFECResult, module='account_fr', type_='model') Pool.register( + account.CreateChart, account.FrFEC, module='account_fr', type_='wizard') diff --git a/account.py b/account.py index 2120d75c11..932db06985 100644 --- a/account.py +++ b/account.py @@ -20,6 +20,36 @@ OPENING_NAME = config.get( OPENING_NUMBER = config.get('account_fr', 'fec_opening_number', default="0") +class AccountTemplate(metaclass=PoolMeta): + __name__ = 'account.account.template' + + @classmethod + def __register__(cls, module_name): + cursor = Transaction().connection.cursor() + model_data = Table('ir_model_data') + + # Migration from 6.0: rename ids + if module_name == 'account_fr': + for old_id, new_id in ( + ('fr_pcg_pay', '4011'), + ('fr_pcg_recv', '4111'), + ('fr_pcg_cash', '512'), + ('fr_pcg_expense', '607'), + ): + cursor.execute(*model_data.select(model_data.id, + where=(model_data.fs_id == new_id) + & (model_data.module == module_name))) + if cursor.fetchone(): + continue + cursor.execute(*model_data.update( + columns=[model_data.fs_id], + values=[new_id], + where=(model_data.fs_id == old_id) + & (model_data.module == module_name))) + + super().__register__(module_name) + + class TaxTemplate(metaclass=PoolMeta): __name__ = 'account.tax.template' @@ -56,6 +86,22 @@ class TaxTemplate(metaclass=PoolMeta): super(TaxTemplate, cls).__register__(module_name) +class CreateChart(metaclass=PoolMeta): + __name__ = 'account.create_chart' + + def default_properties(self, fields): + pool = Pool() + ModelData = pool.get('ir.model.data') + defaults = super().default_properties(fields) + template_id = ModelData.get_id('account_fr.root') + if self.account.account_template.id == template_id: + defaults['account_receivable'] = self.get_account( + 'account_fr.4111') + defaults['account_payable'] = self.get_account( + 'account_fr.4011') + return defaults + + class TaxRuleTemplate(metaclass=PoolMeta): __name__ = 'account.tax.rule.template' diff --git a/account_fr.xml b/account_fr.xml index 9f063bf11a..d31580aa98 100644 --- a/account_fr.xml +++ b/account_fr.xml @@ -4688,7 +4688,7 @@ - + Fournisseurs - Achats de biens et prestations de services 4011 @@ -4852,7 +4852,7 @@ - + Clients - Ventes de biens ou de prestations de services 4111 @@ -5881,7 +5881,7 @@ - + Banques 512 @@ -5894,14 +5894,14 @@ 5121 - + Comptes en devises 5124 - + Chèques postaux @@ -6257,7 +6257,7 @@ - + Achats de marchandises 607 @@ -6268,13 +6268,13 @@ Marchandise (ou groupe) A 6071 - + Marchandise (ou groupe) B 6072 - + Frais accessoires incorporés aux achats diff --git a/tests/test_account_fr.py b/tests/test_account_fr.py index bb99b70551..cf287f8c61 100644 --- a/tests/test_account_fr.py +++ b/tests/test_account_fr.py @@ -4,13 +4,22 @@ import doctest import unittest import trytond.tests.test_tryton from trytond.tests.test_tryton import ( - ModuleTestCase, doctest_teardown, doctest_checker) + ModuleTestCase, doctest_teardown, doctest_checker, with_transaction) + +from trytond.modules.company.tests import create_company, set_company +from trytond.modules.account.tests import create_chart class AccountFRTestCase(ModuleTestCase): 'Test Account FR module' module = 'account_fr' + @with_transaction() + def test_create_chart(self): + company = create_company() + with set_company(company): + create_chart(company, chart=self.module + '.root') + def suite(): suite = trytond.tests.test_tryton.suite()