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
+