diff --git a/invoice.py b/invoice.py index b67e20f..f70eae6 100644 --- a/invoice.py +++ b/invoice.py @@ -1,12 +1,10 @@ # This file is part account_invoice_taxes_required module for 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.i18n import gettext from trytond.exceptions import UserError - -__all__ = ['Invoice', 'InvoiceLine'] +from trytond.model import fields class Invoice(metaclass=PoolMeta): @@ -15,6 +13,7 @@ class Invoice(metaclass=PoolMeta): @classmethod def validate(cls, invoices): InvoiceLine = Pool().get('account.invoice.line') + super(Invoice, cls).validate(invoices) for invoice in invoices: InvoiceLine.validate(invoice.lines) @@ -22,6 +21,11 @@ class Invoice(metaclass=PoolMeta): class InvoiceLine(metaclass=PoolMeta): __name__ = 'account.invoice.line' + taxes_required = fields.Boolean('Taxes Required', readonly=True) + + @classmethod + def default_taxes_required(cls): + return True @classmethod def validate(cls, lines): @@ -30,8 +34,10 @@ class InvoiceLine(metaclass=PoolMeta): line.check_tax_required() def check_tax_required(self): - if not self.invoice or self.invoice.state in ('draft', 'cancelled') or \ - self.type != 'line': + if (not self.invoice + or not self.taxes_required + or self.invoice.state in ('draft', 'cancelled') + or self.type != 'line'): return if not self.taxes: raise UserError(gettext( diff --git a/tests/scenario_invoice_taxes_required.rst b/tests/scenario_invoice_taxes_required.rst index 87fca3a..6b71257 100644 --- a/tests/scenario_invoice_taxes_required.rst +++ b/tests/scenario_invoice_taxes_required.rst @@ -102,6 +102,8 @@ Create invoice Without Taxes:: >>> line.description = 'Test' >>> line.quantity = 1 >>> line.unit_price = Decimal(20) + >>> line.taxes_required == True + True >>> invoice.untaxed_amount Decimal('220.00') >>> invoice.tax_amount