Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 132 additions & 1 deletion l10n_br_account/models/account_move_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,28 @@

from odoo.addons.l10n_br_fiscal.constants.fiscal import FISCAL_TAX_ID_FIELDS

FISCAL_TAX_PREFIXES = [
"icms",
"icmsst",
"issqn",
"issqn_wh",
"icmsst_wh",
"ipi",
"ii",
"cofins",
"cofinsst",
"cofins_wh",
"pis",
"pisst",
"pis_wh",
"csll",
"csll_wh",
"irpj",
"irpj_wh",
"inss",
"inss_wh",
]


class AccountMoveLine(models.Model):
_name = "account.move.line"
Expand Down Expand Up @@ -300,6 +322,22 @@ def changed(fname):
self.env.add_to_compute(self._fields["debit"], container["records"])
self.env.add_to_compute(self._fields["credit"], container["records"])

def _get_manual_tax_values_from_context(self):
tax_values = {}
suffixes = ["_base_manual", "_value_manual"]

for tax_prefix in FISCAL_TAX_PREFIXES:
for suffix in suffixes:
attr_name = tax_prefix + suffix
# tenta pegar do contexto
value = self.env.context.get(attr_name)
# se não veio do contexto, tenta pegar do próprio objeto
if value is None:
value = getattr(self, attr_name, None)
tax_values[attr_name] = value

return tax_values

@api.depends(
"quantity",
"discount",
Expand All @@ -326,6 +364,44 @@ def changed(fname):
"icms_origin",
"ind_final",
"icms_relief_value",
"icms_base_manual",
"icms_value_manual",
"icmsst_base_manual",
"icmsst_value_manual",
"issqn_base_manual",
"issqn_value_manual",
"issqn_wh_base_manual",
"issqn_wh_value_manual",
"icmsst_wh_base_manual",
"icmsst_wh_value_manual",
"ipi_base_manual",
"ipi_value_manual",
"ii_base_manual",
"ii_value_manual",
"cofins_base_manual",
"cofins_value_manual",
"cofinsst_base_manual",
"cofinsst_value_manual",
"cofins_wh_base_manual",
"cofins_wh_value_manual",
"pis_base_manual",
"pis_value_manual",
"pisst_base_manual",
"pisst_value_manual",
"pis_wh_base_manual",
"pis_wh_value_manual",
"csll_base_manual",
"csll_value_manual",
"csll_wh_base_manual",
"csll_wh_value_manual",
"irpj_base_manual",
"irpj_value_manual",
"irpj_wh_base_manual",
"irpj_wh_value_manual",
"inss_base_manual",
"inss_value_manual",
"inss_wh_base_manual",
"inss_wh_value_manual",
)
def _compute_totals(self):
"""
Expand All @@ -344,6 +420,7 @@ def _compute_totals(self):

# Compute 'price_total'.
if line.tax_ids:
manual_tax_values = line._get_manual_tax_values_from_context()
taxes_res = line.tax_ids._origin.with_context().compute_all(
line_discount_price_unit,
currency=line.currency_id,
Expand All @@ -370,6 +447,7 @@ def _compute_totals(self):
icmssn_range=line.icmssn_range_id,
icms_origin=line.icms_origin,
ind_final=line.ind_final,
**manual_tax_values,
)

line.price_subtotal = taxes_res["total_excluded"]
Expand Down Expand Up @@ -424,6 +502,7 @@ def _compute_all_tax(self):

for line in self:
sign = line.move_id.direction_sign
manual_tax_values = line._prepare_br_manual_tax_dict()
if line.display_type == "tax":
line.compute_all_tax = {}
line.compute_all_tax_dirty = False
Expand Down Expand Up @@ -464,6 +543,7 @@ def _compute_all_tax(self):
icmssn_range=line.icmssn_range_id,
icms_origin=line.icms_origin,
ind_final=line.ind_final,
**manual_tax_values,
)
rate = (
line.amount_currency / line.balance
Expand Down Expand Up @@ -521,7 +601,47 @@ def _onchange_icms_fields(self):
if self.fiscal_document_line_id:
self.fiscal_document_line_id._onchange_icms_fields()

@api.onchange(*FISCAL_TAX_ID_FIELDS)
@api.onchange(
*FISCAL_TAX_ID_FIELDS,
"icms_base_manual",
"icms_value_manual",
"icmsst_base_manual",
"icmsst_value_manual",
"issqn_base_manual",
"issqn_value_manual",
"issqn_wh_base_manual",
"issqn_wh_value_manual",
"icmsst_wh_base_manual",
"icmsst_wh_value_manual",
"ipi_base_manual",
"ipi_value_manual",
"ii_base_manual",
"ii_value_manual",
"cofins_base_manual",
"cofins_value_manual",
"cofinsst_base_manual",
"cofinsst_value_manual",
"cofins_wh_base_manual",
"cofins_wh_value_manual",
"pis_base_manual",
"pis_value_manual",
"pisst_base_manual",
"pisst_value_manual",
"pis_wh_base_manual",
"pis_wh_value_manual",
"csll_base_manual",
"csll_value_manual",
"csll_wh_base_manual",
"csll_wh_value_manual",
"irpj_base_manual",
"irpj_value_manual",
"irpj_wh_base_manual",
"irpj_wh_value_manual",
"inss_base_manual",
"inss_value_manual",
"inss_wh_base_manual",
"inss_wh_value_manual",
)
def _onchange_fiscal_taxes(self):
taxes = self.env["l10n_br_fiscal.tax"]
for fiscal_tax_field in FISCAL_TAX_ID_FIELDS:
Expand Down Expand Up @@ -578,3 +698,14 @@ def _check_product_uom_category_id(self):
@api.model
def _get_total_for_tax_totals(self):
return self.move_id.amount_total

def _prepare_br_manual_tax_dict(self):
manual_tax_dict = {}
suffixes = ["_base_manual", "_value_manual"]

for tax_prefix in FISCAL_TAX_PREFIXES:
for suffix in suffixes:
attr_name = tax_prefix + suffix
manual_tax_dict[attr_name] = getattr(self, attr_name)

return manual_tax_dict
4 changes: 4 additions & 0 deletions l10n_br_account/models/account_tax.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ def compute_all(
icmssn_range=None,
icms_origin=None,
ind_final=FINAL_CUSTOMER_NO,
**kwargs,
):
"""Returns all information required to apply taxes
(in self + their children in case of a tax goup).
Expand Down Expand Up @@ -122,6 +123,7 @@ def compute_all(
icmssn_range=icmssn_range,
icms_origin=icms_origin or product.icms_origin,
ind_final=ind_final,
**kwargs,
)

taxes_results["amount_tax_included"] = fiscal_taxes_results["amount_included"]
Expand Down Expand Up @@ -234,6 +236,7 @@ def _compute_taxes_for_single_line(

if taxes:
# line = base_line["record"]
manual_tax_values = base_line["record"]._prepare_br_manual_tax_dict()
taxes_res = taxes.with_context(**base_line["extra_context"]).compute_all(
price_unit_after_discount,
currency=currency,
Expand Down Expand Up @@ -261,6 +264,7 @@ def _compute_taxes_for_single_line(
icmssn_range=line.icmssn_range_id,
icms_origin=line.icms_origin,
ind_final=line.ind_final,
**manual_tax_values,
)

to_update_vals = {
Expand Down
Loading
Loading