diff --git a/invoice.py b/invoice.py index 3340340..2fe3bd6 100644 --- a/invoice.py +++ b/invoice.py @@ -1,10 +1,10 @@ # 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 trytond.pool import Pool, PoolMeta -from trytond.model import ModelView, ModelSQL, fields +from trytond.pool import PoolMeta +from trytond.model import fields from trytond.pyson import Eval +from trytond.model.exceptions import ValidationError -from trytond.exceptions import UserError class Invoice(metaclass=PoolMeta): 'Account Invoice' @@ -12,28 +12,31 @@ class Invoice(metaclass=PoolMeta): _states = { 'readonly': Eval('state') != 'draft', - } + } + + account_analytic = fields.Many2One( + 'analytic_account.account', 'Analytic Account', + domain=[('type', '=', 'normal')], + states=_states) - account_analytic = fields.Many2One('analytic_account.account', 'Analytic Account', - domain=[('type', '=', 'normal')], - states=_states) - - class InvoiceLine(metaclass=PoolMeta): - 'Invoice Line' - __name__ = 'account.invoice.line' - - @fields.depends('product', 'unit', '_parent_invoice.type', 'analytic_accounts', - '_parent_invoice.party', 'party', 'invoice', 'invoice_type', - '_parent_invoice.account_analytic', '_parent_invoice.invoice_date', - '_parent_invoice.accounting_date','company', methods=['_get_tax_rule_pattern']) - def on_change_product(self): - super(InvoiceLine, self).on_change_product() - self.analytic_accounts = tuple() - try: - self.analytic_accounts += ({'root': self.invoice.account_analytic.root, - 'account': self.invoice.account_analytic},) - except: - pass + 'Invoice Line' + __name__ = 'account.invoice.line' + @fields.depends( + 'product', 'unit', '_parent_invoice.type', 'analytic_accounts', + '_parent_invoice.party', 'party', 'invoice', 'invoice_type', + '_parent_invoice.account_analytic', '_parent_invoice.invoice_date', + '_parent_invoice.accounting_date', 'company', + methods=['_get_tax_rule_pattern']) + def on_change_product(self): + super(InvoiceLine, self).on_change_product() + self.analytic_accounts = tuple() + try: + if self.invoice and self.invoice.account_analytic: + self.analytic_accounts += ( + {'root': self.invoice.account_analytic.root, + 'account': self.invoice.account_analytic},) + except Exception as e: + raise ValidationError(f"Se produjo un error: {e}") diff --git a/purchase.py b/purchase.py index 5454878..12a3477 100644 --- a/purchase.py +++ b/purchase.py @@ -1,10 +1,10 @@ # 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 trytond.pool import Pool, PoolMeta -from trytond.model import ModelView, ModelSQL, fields +from trytond.pool import PoolMeta +from trytond.model import fields from trytond.pyson import Eval +from trytond.model.exceptions import ValidationError -from trytond.exceptions import UserError class Purchase(metaclass=PoolMeta): 'Purchase Analytic Operation' @@ -12,20 +12,25 @@ class Purchase(metaclass=PoolMeta): _states = { 'readonly': Eval('state') != 'draft', - } + } + + account_analytic = fields.Many2One( + 'analytic_account.account', 'Analytic Account', required=True, + domain=[('type', '=', 'normal')], + states=_states) + - account_analytic = fields.Many2One('analytic_account.account', 'Analytic Account', required=True, - domain=[('type', '=', 'normal')], - states=_states) class PurchaseLine(metaclass=PoolMeta): 'Purchase Line Analytic Operation' - __name__ = 'purchase.line' + __name__ = 'purchase.line' - @fields.depends('product', 'unit', 'purchase', + @fields.depends( + 'product', 'unit', 'purchase', '_parent_purchase.party', '_parent_purchase.invoice_party', '_parent_purchase.account_analytic', 'product_supplier', - 'analytic_accounts', methods=['compute_taxes', 'compute_unit_price', - '_get_product_supplier_pattern']) + 'analytic_accounts', + methods=['compute_taxes', 'compute_unit_price', + '_get_product_supplier_pattern']) def on_change_product(self): if not self.product: return @@ -43,7 +48,7 @@ class PurchaseLine(metaclass=PoolMeta): self.unit = self.product.purchase_uom product_suppliers = list(self.product.product_suppliers_used( - **self._get_product_supplier_pattern())) + **self._get_product_supplier_pattern())) if len(product_suppliers) == 1: self.product_supplier, = product_suppliers elif (self.product_supplier @@ -57,7 +62,8 @@ class PurchaseLine(metaclass=PoolMeta): self.analytic_accounts = tuple() try: - self.analytic_accounts += ({'root': self.purchase.account_analytic.root, - 'account': self.purchase.account_analytic},) - except: - pass + self.analytic_accounts += ( + {'root': self.purchase.account_analytic.root, + 'account': self.purchase.account_analytic},) + except Exception as e: + raise ValidationError(f"Se produjo un error: {e}") diff --git a/sale.py b/sale.py index 49836fc..39009f8 100644 --- a/sale.py +++ b/sale.py @@ -1,10 +1,9 @@ # 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 trytond.pool import Pool, PoolMeta -from trytond.model import ModelView, ModelSQL, fields -from trytond.pyson import Eval +from trytond.pool import PoolMeta +from trytond.model import fields +from trytond.model.exceptions import ValidationError -from trytond.exceptions import UserError class Sale(metaclass=PoolMeta): 'Sale Analytic Operation' @@ -16,11 +15,10 @@ class Sale(metaclass=PoolMeta): ('type', '=', 'normal'), ]) + class SaleLine(metaclass=PoolMeta): 'Sale Line Analytic Operation' - __name__ = 'sale.line' - - + __name__ = 'sale.line' @fields.depends('product', 'unit', 'sale', '_parent_sale.party', '_parent_sale.invoice_party', @@ -30,7 +28,7 @@ class SaleLine(metaclass=PoolMeta): def on_change_product(self): if not self.product: return - + party = None if self.sale: party = self.sale.invoice_party or self.sale.party @@ -44,13 +42,13 @@ class SaleLine(metaclass=PoolMeta): self.unit_price = self.compute_unit_price() - self.type = 'line' self.amount = self.on_change_with_amount() - + self.analytic_accounts = tuple() try: - self.analytic_accounts += ({'root': self.sale.account_analytic.root, - 'account': self.sale.account_analytic},) - except: - pass + self.analytic_accounts += ( + {'root': self.sale.account_analytic.root, + 'account': self.sale.account_analytic},) + except Exception as e: + raise ValidationError(f"Se produjo un error: {e}") diff --git a/setup.py b/setup.py index 1d05cab..ca47a78 100755 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ version = info.get('version', '0.0.1') major_version, minor_version, _ = version.split('.', 2) major_version = int(major_version) minor_version = int(minor_version) -name = 'trytond_analytic_operation' +name = 'trytond_analytic_operations' download_url = 'http://downloads.tryton.org/%s.%s/' % ( major_version, minor_version) @@ -85,19 +85,20 @@ setup(name=name, download_url=download_url, project_urls={ "Bug Tracker": 'https://bugs.tryton.org/', - "Documentation": 'https://docs.tryton.org/projects/modules-analytic-operation', + "Documentation": + 'https://docs.tryton.org/projects/modules-analytic-operation', "Forum": 'https://www.tryton.org/forum', - "Source Code": 'https://hg.tryton.org/modules/analytic_operation', + "Source Code": 'https://hg.tryton.org/modules/analytic_operations', }, keywords='analitic, invoice, purchase, sale', - package_dir={'trytond.modules.analytic_operation': '.'}, + package_dir={'trytond.modules.analytic_operations': '.'}, packages=( - ['trytond.modules.analytic_operation'] - + ['trytond.modules.analytic_operation.%s' % p + ['trytond.modules.analytic_operations'] + + ['trytond.modules.analytic_operations.%s' % p for p in find_packages()] ), package_data={ - 'trytond.modules.analytic_operation': (info.get('xml', []) + 'trytond.modules.analytic_operations': (info.get('xml', []) + ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.fodt', 'icons/*.svg', 'tests/*.rst']), }, @@ -150,6 +151,6 @@ setup(name=name, zip_safe=False, entry_points=""" [trytond.modules] - analytic_operation = trytond.modules.analytic_operation + analytic_operations = trytond.modules.analytic_operations """, # noqa: E501 ) diff --git a/tests/test_module.py b/tests/test_module.py index 37684b7..9657e44 100644 --- a/tests/test_module.py +++ b/tests/test_module.py @@ -5,7 +5,7 @@ from trytond.tests.test_tryton import ModuleTestCase class AnalyticOperationTestCase(ModuleTestCase): "Test Analytic Operation module" - module = 'analytic_operation' + module = 'analytic_operations' del ModuleTestCase diff --git a/tox.ini b/tox.ini index bf66988..05a5fe6 100644 --- a/tox.ini +++ b/tox.ini @@ -4,8 +4,8 @@ envlist = {py37,py38,py39,py310}-{sqlite,postgresql} [testenv] extras = test commands = - coverage run --include=./**/analytic_operation/* -m unittest discover -s tests - coverage report --include=./**/analytic_operation/* --omit=*/tests/* + coverage run --include=./**//* -m unittest discover -s tests + coverage report --include=./**/analytic_operations/* --omit=*/tests/* deps = coverage postgresql: psycopg2 >= 2.7.0