diff --git a/l10n_br_account/models/account_tax.py b/l10n_br_account/models/account_tax.py index d6d268363..07d7b6379 100644 --- a/l10n_br_account/models/account_tax.py +++ b/l10n_br_account/models/account_tax.py @@ -1,5 +1,5 @@ -from odoo import fields, models +from odoo import api, fields, models class AccountTax(models.Model): @@ -20,3 +20,27 @@ class AccountTax(models.Model): ('irrf', 'IRRF'), ('inss', 'INSS'), ('outros', 'Outros')], string="Tipo") + l10n_br_retention = fields.Boolean(string="Retenção?", compute="_compute_retention", inverse="_inverse_retention") + + def compute_all(self, price_unit, currency=None, quantity=1.0, product=None, partner=None, is_refund=False, handle_price_include=True): + taxes = super(AccountTax, self).compute_all( + price_unit, currency, quantity, product, partner, + is_refund, handle_price_include) + + return taxes + + @api.depends("amount") + def _compute_retention(self): + if self.amount < 0: + self.l10n_br_retention = True + else: + self.l10n_br_retention = False + + def _inverse_retention(self): + self.l10n_br_retention = self.l10n_br_retention + + @api.onchange("l10n_br_retention") + def _onchange_retention(self): + if (self.l10n_br_retention and self.amount > 0 or + not self.l10n_br_retention and self.amount < 0): + self.amount = self.amount * (-1) diff --git a/l10n_br_account/views/account_tax.xml b/l10n_br_account/views/account_tax.xml index 49aad3095..3287dd8e5 100644 --- a/l10n_br_account/views/account_tax.xml +++ b/l10n_br_account/views/account_tax.xml @@ -6,6 +6,9 @@ + + + - \ No newline at end of file +