odoo-addon-l10n-br-fiscal 16.0.8.0.2__py3-none-any.whl → 16.0.19.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- odoo/addons/l10n_br_fiscal/README.rst +1 -1
- odoo/addons/l10n_br_fiscal/__manifest__.py +10 -3
- odoo/addons/l10n_br_fiscal/constants/fiscal.py +64 -18
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.cest.csv +1043 -983
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.cst.csv +58 -0
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.document.type.csv +1 -0
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.operation.indicator.csv +27 -0
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.classification.csv +163 -0
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.csv +31 -0
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.group.csv +3 -0
- odoo/addons/l10n_br_fiscal/data/operation_data.xml +1 -1
- odoo/addons/l10n_br_fiscal/data/uom_data.xml +186 -33
- odoo/addons/l10n_br_fiscal/demo/fiscal_document_demo.xml +3 -377
- odoo/addons/l10n_br_fiscal/demo/fiscal_document_nfse_demo.xml +0 -12
- odoo/addons/l10n_br_fiscal/demo/fiscal_operation_demo.xml +2 -2
- odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot +902 -304
- odoo/addons/l10n_br_fiscal/i18n/pt_BR.po +22 -22
- odoo/addons/l10n_br_fiscal/migrations/16.0.13.0.0/pre-migration.py +25 -0
- odoo/addons/l10n_br_fiscal/migrations/16.0.14.0.0/pre-migration.py +30 -0
- odoo/addons/l10n_br_fiscal/migrations/16.0.14.0.5/pre-migration.py +15 -0
- odoo/addons/l10n_br_fiscal/models/__init__.py +3 -2
- odoo/addons/l10n_br_fiscal/models/comment.py +2 -2
- odoo/addons/l10n_br_fiscal/models/data_ncm_nbs_abstract.py +1 -1
- odoo/addons/l10n_br_fiscal/models/document.py +83 -226
- odoo/addons/l10n_br_fiscal/models/document_line.py +67 -5
- odoo/addons/l10n_br_fiscal/models/document_line_mixin.py +1932 -136
- odoo/addons/l10n_br_fiscal/models/document_mixin.py +248 -17
- odoo/addons/l10n_br_fiscal/models/document_related.py +11 -8
- odoo/addons/l10n_br_fiscal/models/document_serie.py +33 -0
- odoo/addons/l10n_br_fiscal/models/ibpt.py +1 -1
- odoo/addons/l10n_br_fiscal/models/icms_regulation.py +1 -1
- odoo/addons/l10n_br_fiscal/models/invalidate_number.py +4 -5
- odoo/addons/l10n_br_fiscal/models/operation_dashboard.py +3 -2
- odoo/addons/l10n_br_fiscal/models/operation_indicator.py +58 -0
- odoo/addons/l10n_br_fiscal/models/operation_line.py +28 -0
- odoo/addons/l10n_br_fiscal/models/partner_profile.py +6 -0
- odoo/addons/l10n_br_fiscal/models/product_template.py +5 -1
- odoo/addons/l10n_br_fiscal/models/res_company.py +18 -0
- odoo/addons/l10n_br_fiscal/models/res_partner.py +27 -6
- odoo/addons/l10n_br_fiscal/models/simplified_tax_range.py +8 -0
- odoo/addons/l10n_br_fiscal/models/tax.py +7 -3
- odoo/addons/l10n_br_fiscal/models/tax_classification.py +81 -0
- odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_base.py +1 -1
- odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_credit.py +1 -1
- odoo/addons/l10n_br_fiscal/models/uom_uom.py +24 -0
- odoo/addons/l10n_br_fiscal/security/fiscal_security.xml +6 -16
- odoo/addons/l10n_br_fiscal/security/ir.model.access.csv +8 -2
- odoo/addons/l10n_br_fiscal/static/description/index.html +1 -1
- odoo/addons/l10n_br_fiscal/tests/__init__.py +3 -0
- odoo/addons/l10n_br_fiscal/tests/test_document_edition.py +308 -0
- odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py +23 -111
- odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_nfse.py +5 -13
- odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_serie.py +60 -0
- odoo/addons/l10n_br_fiscal/tests/test_ibpt.py +2 -2
- odoo/addons/l10n_br_fiscal/tests/test_icms_regulation.py +2 -2
- odoo/addons/l10n_br_fiscal/tests/test_tax_benefit.py +14 -20
- odoo/addons/l10n_br_fiscal/tests/test_tax_classification.py +110 -0
- odoo/addons/l10n_br_fiscal/tools.py +1 -1
- odoo/addons/l10n_br_fiscal/views/cest_view.xml +2 -4
- odoo/addons/l10n_br_fiscal/views/cfop_view.xml +3 -5
- odoo/addons/l10n_br_fiscal/views/city_taxation_code.xml +1 -4
- odoo/addons/l10n_br_fiscal/views/cnae_view.xml +2 -4
- odoo/addons/l10n_br_fiscal/views/comment_view.xml +2 -4
- odoo/addons/l10n_br_fiscal/views/cst_view.xml +6 -8
- odoo/addons/l10n_br_fiscal/views/{document_fiscal_line_mixin_view.xml → document_line_mixin_view.xml} +525 -388
- odoo/addons/l10n_br_fiscal/views/document_line_view.xml +101 -82
- odoo/addons/l10n_br_fiscal/views/document_related_view.xml +44 -46
- odoo/addons/l10n_br_fiscal/views/document_serie_view.xml +2 -6
- odoo/addons/l10n_br_fiscal/views/document_type_view.xml +0 -2
- odoo/addons/l10n_br_fiscal/views/document_view.xml +304 -346
- odoo/addons/l10n_br_fiscal/views/icms_regulation_view.xml +14 -16
- odoo/addons/l10n_br_fiscal/views/icms_relief_view.xml +8 -10
- odoo/addons/l10n_br_fiscal/views/invalidate_number_view.xml +46 -48
- odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_action.xml +162 -244
- odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml +16 -72
- odoo/addons/l10n_br_fiscal/views/legal_nature_view.xml +0 -2
- odoo/addons/l10n_br_fiscal/views/nbm_view.xml +5 -6
- odoo/addons/l10n_br_fiscal/views/nbs_view.xml +5 -6
- odoo/addons/l10n_br_fiscal/views/ncm_view.xml +12 -15
- odoo/addons/l10n_br_fiscal/views/operation_dashboard_view.xml +13 -12
- odoo/addons/l10n_br_fiscal/views/operation_indicator_view.xml +75 -0
- odoo/addons/l10n_br_fiscal/views/operation_line_view.xml +22 -21
- odoo/addons/l10n_br_fiscal/views/operation_view.xml +3 -6
- odoo/addons/l10n_br_fiscal/views/partner_profile_view.xml +3 -6
- odoo/addons/l10n_br_fiscal/views/product_genre_view.xml +7 -9
- odoo/addons/l10n_br_fiscal/views/product_product_view.xml +37 -14
- odoo/addons/l10n_br_fiscal/views/product_template_view.xml +34 -14
- odoo/addons/l10n_br_fiscal/views/res_company_view.xml +40 -38
- odoo/addons/l10n_br_fiscal/views/res_config_settings_view.xml +23 -28
- odoo/addons/l10n_br_fiscal/views/res_partner_view.xml +13 -2
- odoo/addons/l10n_br_fiscal/views/service_type_view.xml +7 -8
- odoo/addons/l10n_br_fiscal/views/simplified_tax_range_view.xml +0 -2
- odoo/addons/l10n_br_fiscal/views/simplified_tax_view.xml +0 -2
- odoo/addons/l10n_br_fiscal/views/tax_classification.xml +110 -0
- odoo/addons/l10n_br_fiscal/views/tax_definition_view.xml +157 -129
- odoo/addons/l10n_br_fiscal/views/tax_estimate_view.xml +0 -2
- odoo/addons/l10n_br_fiscal/views/tax_group_view.xml +3 -6
- odoo/addons/l10n_br_fiscal/views/tax_ipi_control_seal_view.xml +0 -2
- odoo/addons/l10n_br_fiscal/views/tax_ipi_guideline_class_view.xml +0 -2
- odoo/addons/l10n_br_fiscal/views/tax_ipi_guideline_view.xml +2 -4
- odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_base_view.xml +2 -4
- odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_credit_view.xml +2 -4
- odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_view.xml +5 -7
- odoo/addons/l10n_br_fiscal/views/tax_view.xml +5 -7
- odoo/addons/l10n_br_fiscal/views/uom_uom.xml +52 -0
- odoo/addons/l10n_br_fiscal/wizards/__init__.py +1 -0
- odoo/addons/l10n_br_fiscal/wizards/base_wizard_mixin.py +1 -1
- odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.py +129 -0
- odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.xml +41 -0
- {odoo_addon_l10n_br_fiscal-16.0.8.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info}/METADATA +3 -3
- {odoo_addon_l10n_br_fiscal-16.0.8.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info}/RECORD +113 -99
- {odoo_addon_l10n_br_fiscal-16.0.8.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info}/WHEEL +1 -1
- odoo/addons/l10n_br_fiscal/models/document_line_mixin_methods.py +0 -814
- odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py +0 -363
- {odoo_addon_l10n_br_fiscal-16.0.8.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info}/top_level.txt +0 -0
|
@@ -83,7 +83,7 @@ class ProductTemplate(models.Model):
|
|
|
83
83
|
domain="[('internal_type', '=', 'normal')]",
|
|
84
84
|
)
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
city_taxation_code_ids = fields.Many2many(
|
|
87
87
|
comodel_name="l10n_br_fiscal.city.taxation.code", string="City Taxation Code"
|
|
88
88
|
)
|
|
89
89
|
|
|
@@ -106,6 +106,10 @@ class ProductTemplate(models.Model):
|
|
|
106
106
|
comodel_name="l10n_br_fiscal.nbs", index=True, string="NBS"
|
|
107
107
|
)
|
|
108
108
|
|
|
109
|
+
operation_indicator_id = fields.Many2one(
|
|
110
|
+
comodel_name="l10n_br_fiscal.operation.indicator",
|
|
111
|
+
)
|
|
112
|
+
|
|
109
113
|
cest_id = fields.Many2one(
|
|
110
114
|
comodel_name="l10n_br_fiscal.cest",
|
|
111
115
|
index=True,
|
|
@@ -14,10 +14,12 @@ from ..constants.fiscal import (
|
|
|
14
14
|
PROCESSADOR_NENHUM,
|
|
15
15
|
PROFIT_CALCULATION,
|
|
16
16
|
PROFIT_CALCULATION_PRESUMED,
|
|
17
|
+
TAX_DOMAIN_CBS,
|
|
17
18
|
TAX_DOMAIN_COFINS,
|
|
18
19
|
TAX_DOMAIN_COFINS_WH,
|
|
19
20
|
TAX_DOMAIN_CSLL,
|
|
20
21
|
TAX_DOMAIN_CSLL_WH,
|
|
22
|
+
TAX_DOMAIN_IBS,
|
|
21
23
|
TAX_DOMAIN_ICMS,
|
|
22
24
|
TAX_DOMAIN_ICMS_SN,
|
|
23
25
|
TAX_DOMAIN_INSS,
|
|
@@ -297,6 +299,12 @@ class ResCompany(models.Model):
|
|
|
297
299
|
domain=[("tax_domain", "=", TAX_DOMAIN_INSS_WH)],
|
|
298
300
|
)
|
|
299
301
|
|
|
302
|
+
tax_classification_id = fields.Many2one(
|
|
303
|
+
comodel_name="l10n_br_fiscal.tax.classification",
|
|
304
|
+
string="Default Tax Classification",
|
|
305
|
+
domain=[("tax_ibs_id", "!=", False), ("tax_cbs_id", "!=", False)],
|
|
306
|
+
)
|
|
307
|
+
|
|
300
308
|
tax_definition_ids = fields.One2many(
|
|
301
309
|
comodel_name="l10n_br_fiscal.tax.definition",
|
|
302
310
|
inverse_name="company_id",
|
|
@@ -377,6 +385,7 @@ class ResCompany(models.Model):
|
|
|
377
385
|
self.tax_icms_id = False
|
|
378
386
|
|
|
379
387
|
self._onchange_piscofins_id()
|
|
388
|
+
self._onchange_tax_classification_id()
|
|
380
389
|
self._onchange_ripi()
|
|
381
390
|
self._onchange_tax_ipi_id()
|
|
382
391
|
self._onchange_tax_icms_id()
|
|
@@ -502,3 +511,12 @@ class ResCompany(models.Model):
|
|
|
502
511
|
self._set_tax_definition(self.tax_inss_wh_id)
|
|
503
512
|
else:
|
|
504
513
|
self._del_tax_definition(TAX_DOMAIN_INSS_WH)
|
|
514
|
+
|
|
515
|
+
@api.onchange("tax_classification_id")
|
|
516
|
+
def _onchange_tax_classification_id(self):
|
|
517
|
+
if self.tax_classification_id:
|
|
518
|
+
self._set_tax_definition(self.tax_classification_id.tax_cbs_id)
|
|
519
|
+
self._set_tax_definition(self.tax_classification_id.tax_ibs_id)
|
|
520
|
+
else:
|
|
521
|
+
self._del_tax_definition(TAX_DOMAIN_CBS)
|
|
522
|
+
self._del_tax_definition(TAX_DOMAIN_IBS)
|
|
@@ -10,6 +10,7 @@ from ..constants.fiscal import (
|
|
|
10
10
|
NFE_IND_IE_DEST,
|
|
11
11
|
NFE_IND_IE_DEST_9,
|
|
12
12
|
NFE_IND_IE_DEST_DEFAULT,
|
|
13
|
+
PUBLIC_ENTIRY_TYPE,
|
|
13
14
|
TAX_FRAMEWORK,
|
|
14
15
|
TAX_FRAMEWORK_NORMAL,
|
|
15
16
|
)
|
|
@@ -76,6 +77,11 @@ class ResPartner(models.Model):
|
|
|
76
77
|
"other government-controlled organizations.",
|
|
77
78
|
)
|
|
78
79
|
|
|
80
|
+
public_entity_type = fields.Selection(
|
|
81
|
+
selection=PUBLIC_ENTIRY_TYPE,
|
|
82
|
+
string="Tipo de Entidade Governamental",
|
|
83
|
+
)
|
|
84
|
+
|
|
79
85
|
ind_final = fields.Selection(
|
|
80
86
|
selection=FINAL_CUSTOMER,
|
|
81
87
|
string="Final Consumption Operation",
|
|
@@ -83,15 +89,15 @@ class ResPartner(models.Model):
|
|
|
83
89
|
tracking=True,
|
|
84
90
|
)
|
|
85
91
|
|
|
86
|
-
|
|
92
|
+
vat = fields.Char(
|
|
87
93
|
tracking=True,
|
|
88
94
|
)
|
|
89
95
|
|
|
90
|
-
|
|
96
|
+
l10n_br_ie_code = fields.Char(
|
|
91
97
|
tracking=True,
|
|
92
98
|
)
|
|
93
99
|
|
|
94
|
-
|
|
100
|
+
l10n_br_im_code = fields.Char(
|
|
95
101
|
tracking=True,
|
|
96
102
|
)
|
|
97
103
|
|
|
@@ -107,6 +113,20 @@ class ResPartner(models.Model):
|
|
|
107
113
|
tracking=True,
|
|
108
114
|
)
|
|
109
115
|
|
|
116
|
+
rntrc_code = fields.Char(
|
|
117
|
+
string="RNTRC Code", size=12, unaccent=False, tracking=True
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
nif_motive_absence = fields.Selection(
|
|
121
|
+
selection=[
|
|
122
|
+
("0", "Not informed in the origin note"),
|
|
123
|
+
("1", "Exemption from NIF"),
|
|
124
|
+
("2", "NIF not required"),
|
|
125
|
+
],
|
|
126
|
+
default=False,
|
|
127
|
+
string="NIF motive absence",
|
|
128
|
+
)
|
|
129
|
+
|
|
110
130
|
def _inverse_fiscal_profile(self):
|
|
111
131
|
for p in self:
|
|
112
132
|
p._onchange_fiscal_profile_id()
|
|
@@ -123,12 +143,13 @@ class ResPartner(models.Model):
|
|
|
123
143
|
p.tax_framework = p.fiscal_profile_id.tax_framework
|
|
124
144
|
p.ind_ie_dest = p.fiscal_profile_id.ind_ie_dest
|
|
125
145
|
p.is_public_entity = p.fiscal_profile_id.is_public_entity
|
|
146
|
+
p.public_entity_type = p.fiscal_profile_id.public_entity_type
|
|
126
147
|
|
|
127
148
|
@api.onchange("ind_ie_dest")
|
|
128
149
|
def _onchange_ind_ie_dest(self):
|
|
129
150
|
for p in self:
|
|
130
151
|
if p.ind_ie_dest == NFE_IND_IE_DEST_9:
|
|
131
|
-
p.
|
|
152
|
+
p.l10n_br_ie_code = False
|
|
132
153
|
p.state_tax_number_ids = False
|
|
133
154
|
|
|
134
155
|
@api.model
|
|
@@ -139,6 +160,6 @@ class ResPartner(models.Model):
|
|
|
139
160
|
"ind_ie_dest",
|
|
140
161
|
"fiscal_profile_id",
|
|
141
162
|
"ind_final",
|
|
142
|
-
"
|
|
143
|
-
"
|
|
163
|
+
"l10n_br_ie_code",
|
|
164
|
+
"l10n_br_im_code",
|
|
144
165
|
]
|
|
@@ -66,3 +66,11 @@ class SimplifiedTaxRange(models.Model):
|
|
|
66
66
|
tax_pis_percent = fields.Float(
|
|
67
67
|
string="Tax PIS Percent", digits="Fiscal Tax Percent"
|
|
68
68
|
)
|
|
69
|
+
|
|
70
|
+
tax_ibs_percent = fields.Float(
|
|
71
|
+
string="Tax IBS Percent", digits="Fiscal Tax Percent"
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
tax_cbs_percent = fields.Float(
|
|
75
|
+
string="Tax CBS Percent", digits="Fiscal Tax Percent"
|
|
76
|
+
)
|
|
@@ -450,9 +450,13 @@ class Tax(models.Model):
|
|
|
450
450
|
and cfop.destination == CFOP_DESTINATION_EXTERNAL
|
|
451
451
|
and partner.ind_ie_dest == NFE_IND_IE_DEST_9
|
|
452
452
|
and tax_dict.get("tax_value")
|
|
453
|
-
and
|
|
454
|
-
|
|
455
|
-
|
|
453
|
+
and (
|
|
454
|
+
operation_line.fiscal_operation_type == FISCAL_OUT
|
|
455
|
+
or (
|
|
456
|
+
operation_line.fiscal_operation_type == FISCAL_IN
|
|
457
|
+
and operation_line.fiscal_operation_id.fiscal_type != "return_in"
|
|
458
|
+
)
|
|
459
|
+
)
|
|
456
460
|
):
|
|
457
461
|
icms_tax_difal, _ = company.icms_regulation_id.map_tax_def_icms_difal(
|
|
458
462
|
company, partner, product, ncm, nbm, cest, operation_line, ind_final
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Copyright 2025 Marcel Savegnago <https://escodoo.com.br>
|
|
2
|
+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
3
|
+
|
|
4
|
+
from odoo import api, fields, models
|
|
5
|
+
|
|
6
|
+
from ..constants.fiscal import (
|
|
7
|
+
TAX_DOMAIN_CBS,
|
|
8
|
+
TAX_DOMAIN_IBS,
|
|
9
|
+
TAX_RATE_TYPE,
|
|
10
|
+
TAX_RATE_TYPE_DEFAULT,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class TaxClassification(models.Model):
|
|
15
|
+
_name = "l10n_br_fiscal.tax.classification"
|
|
16
|
+
_inherit = "l10n_br_fiscal.data.abstract"
|
|
17
|
+
_order = "code"
|
|
18
|
+
_description = "Tax Classification"
|
|
19
|
+
|
|
20
|
+
code = fields.Char(size=8)
|
|
21
|
+
|
|
22
|
+
description = fields.Text()
|
|
23
|
+
|
|
24
|
+
cst_code_prefix_like = fields.Char(
|
|
25
|
+
compute="_compute_cst_code_prefix_like",
|
|
26
|
+
help="Helper field to filter taxes by CST code prefix (3 chars) using LIKE.",
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
@api.depends("code")
|
|
30
|
+
def _compute_cst_code_prefix_like(self):
|
|
31
|
+
for rec in self:
|
|
32
|
+
prefix = (rec.code or "")[:3]
|
|
33
|
+
# Avoid matching all records when the prefix is not available yet.
|
|
34
|
+
rec.cst_code_prefix_like = (
|
|
35
|
+
f"{prefix}%" if len(prefix) == 3 else "__no_match__%"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
tax_ibs_id = fields.Many2one(
|
|
39
|
+
comodel_name="l10n_br_fiscal.tax",
|
|
40
|
+
string="Tax IBS",
|
|
41
|
+
domain=(
|
|
42
|
+
f"[('tax_domain', '=', '{TAX_DOMAIN_IBS}'), '|', "
|
|
43
|
+
"('cst_in_id.code', 'like', cst_code_prefix_like), "
|
|
44
|
+
"('cst_out_id.code', 'like', cst_code_prefix_like)]"
|
|
45
|
+
),
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
tax_cbs_id = fields.Many2one(
|
|
49
|
+
comodel_name="l10n_br_fiscal.tax",
|
|
50
|
+
string="Tax CBS",
|
|
51
|
+
domain=(
|
|
52
|
+
f"[('tax_domain', '=', '{TAX_DOMAIN_CBS}'), '|', "
|
|
53
|
+
"('cst_in_id.code', 'like', cst_code_prefix_like), "
|
|
54
|
+
"('cst_out_id.code', 'like', cst_code_prefix_like)]"
|
|
55
|
+
),
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
regular_taxation = fields.Boolean(
|
|
59
|
+
default=False,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
presumed_credit = fields.Boolean(
|
|
63
|
+
default=False,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
credit_reversal = fields.Boolean(
|
|
67
|
+
default=False,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
rate_type = fields.Selection(
|
|
71
|
+
selection=TAX_RATE_TYPE,
|
|
72
|
+
default=TAX_RATE_TYPE_DEFAULT,
|
|
73
|
+
required=True,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
document_type_ids = fields.Many2many(
|
|
77
|
+
comodel_name="l10n_br_fiscal.document.type",
|
|
78
|
+
relation="tax_classification_document_type_rel",
|
|
79
|
+
string="Related DFes",
|
|
80
|
+
help="Related Digital Fiscal Documents",
|
|
81
|
+
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Copyright 2025 Engenere.one
|
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
3
|
+
|
|
4
|
+
from odoo import fields, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Uom(models.Model):
|
|
8
|
+
_inherit = "uom.uom"
|
|
9
|
+
|
|
10
|
+
code = fields.Char(
|
|
11
|
+
size=6,
|
|
12
|
+
translate=False,
|
|
13
|
+
help="Abbreviated unit code used in electronic fiscal documents "
|
|
14
|
+
"(e.g. NF-e, NFC-e). Must have a maximum of 6 characters "
|
|
15
|
+
"by regulation. e.g. 'UN', 'KG', 'LITRO', 'CX12UN",
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
description = fields.Char(
|
|
19
|
+
help="Full unit description. e.g. 'Unit', 'Kilogram', 'Box of 12 Units'.",
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
_sql_constraints = [
|
|
23
|
+
("unique_code", "UNIQUE(code)", "Unit of Measure code must be unique!")
|
|
24
|
+
]
|
|
@@ -39,45 +39,35 @@
|
|
|
39
39
|
<field name="name">Fiscal Tax Estimate multi-company</field>
|
|
40
40
|
<field name="model_id" ref="model_l10n_br_fiscal_tax_estimate" />
|
|
41
41
|
<field eval="True" name="global" />
|
|
42
|
-
<field
|
|
43
|
-
name="domain_force"
|
|
44
|
-
>['|',('company_id','=',False),('company_id','in',company_ids)]</field>
|
|
42
|
+
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
|
|
45
43
|
</record>
|
|
46
44
|
|
|
47
|
-
<record id="
|
|
45
|
+
<record id="l10n_br_fiscal_operation_rule" model="ir.rule">
|
|
48
46
|
<field name="name">Fiscal Operation multi-company</field>
|
|
49
47
|
<field name="model_id" ref="model_l10n_br_fiscal_operation" />
|
|
50
48
|
<field eval="True" name="global" />
|
|
51
|
-
<field
|
|
52
|
-
name="domain_force"
|
|
53
|
-
>['|',('company_id','=',False),('company_id','in',company_ids)]</field>
|
|
49
|
+
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
|
|
54
50
|
</record>
|
|
55
51
|
|
|
56
52
|
<record id="l10n_br_fiscal_document_serie_rule" model="ir.rule">
|
|
57
53
|
<field name="name">Fiscal Document Serie multi-company</field>
|
|
58
54
|
<field name="model_id" ref="model_l10n_br_fiscal_document_serie" />
|
|
59
55
|
<field eval="True" name="global" />
|
|
60
|
-
<field
|
|
61
|
-
name="domain_force"
|
|
62
|
-
>['|',('company_id','=',False),('company_id','in',company_ids)]</field>
|
|
56
|
+
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
|
|
63
57
|
</record>
|
|
64
58
|
|
|
65
59
|
<record id="l10n_br_fiscal_document_rule" model="ir.rule">
|
|
66
60
|
<field name="name">Fiscal Document multi-company</field>
|
|
67
61
|
<field name="model_id" ref="model_l10n_br_fiscal_document" />
|
|
68
62
|
<field eval="True" name="global" />
|
|
69
|
-
<field
|
|
70
|
-
name="domain_force"
|
|
71
|
-
>['|',('company_id','=',False),('company_id','in',company_ids)]</field>
|
|
63
|
+
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
|
|
72
64
|
</record>
|
|
73
65
|
|
|
74
66
|
<record id="l10n_br_fiscal_document_line_rule" model="ir.rule">
|
|
75
67
|
<field name="name">Fiscal Document line multi-company</field>
|
|
76
68
|
<field name="model_id" ref="model_l10n_br_fiscal_document_line" />
|
|
77
69
|
<field eval="True" name="global" />
|
|
78
|
-
<field
|
|
79
|
-
name="domain_force"
|
|
80
|
-
>['|',('company_id','=',False),('company_id','in',company_ids)]</field>
|
|
70
|
+
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
|
|
81
71
|
</record>
|
|
82
72
|
|
|
83
73
|
</odoo>
|
|
@@ -38,6 +38,9 @@
|
|
|
38
38
|
"l10n_br_fiscal_cest_user","Fiscal CEST for User","model_l10n_br_fiscal_cest","l10n_br_fiscal.group_user",1,0,0,0
|
|
39
39
|
"l10n_br_fiscal_cest_manager","Fiscal CEST for Manager","model_l10n_br_fiscal_cest","l10n_br_fiscal.group_manager",1,0,0,0
|
|
40
40
|
"l10n_br_fiscal_cest_maintenance","Fiscal CEST for Maintenance","model_l10n_br_fiscal_cest","l10n_br_fiscal.group_data_maintenance",1,1,1,1
|
|
41
|
+
"l10n_br_fiscal_tax_classification_user","Fiscal Tax Classification for User","model_l10n_br_fiscal_tax_classification","l10n_br_fiscal.group_user",1,0,0,0
|
|
42
|
+
"l10n_br_fiscal_tax_classification_manager","Fiscal Tax Classification for Manager","model_l10n_br_fiscal_tax_classification","l10n_br_fiscal.group_manager",1,0,0,0
|
|
43
|
+
"l10n_br_fiscal_tax_classification_maintenance","Fiscal Tax Classification for Maintenance","model_l10n_br_fiscal_tax_classification","l10n_br_fiscal.group_data_maintenance",1,1,1,1
|
|
41
44
|
"l10n_br_fiscal_product_genre_user","Fiscal Fiscal Product Genre for User","model_l10n_br_fiscal_product_genre","l10n_br_fiscal.group_user",1,0,0,0
|
|
42
45
|
"l10n_br_fiscal_product_genre_manager","Fiscal Fiscal Product Genre for Manager","model_l10n_br_fiscal_product_genre","l10n_br_fiscal.group_manager",1,0,0,0
|
|
43
46
|
"l10n_br_fiscal_product_genre_maintenance","Fiscal Fiscal Product Genre for Maintenance","model_l10n_br_fiscal_product_genre","l10n_br_fiscal.group_data_maintenance",1,1,1,1
|
|
@@ -67,7 +70,10 @@
|
|
|
67
70
|
"l10n_br_fiscal_operation_line_manager","Fiscal Operation Line for Manager","model_l10n_br_fiscal_operation_line","l10n_br_fiscal.group_manager",1,1,1,1
|
|
68
71
|
"l10n_br_fiscal_operation_document_type_user","Fiscal Operation Document Type for User","model_l10n_br_fiscal_operation_document_type","l10n_br_fiscal.group_user",1,0,0,0
|
|
69
72
|
"l10n_br_fiscal_operation_document_type_manager","Fiscal Operation Document Type for Manager","model_l10n_br_fiscal_operation_document_type","l10n_br_fiscal.group_manager",1,1,1,1
|
|
70
|
-
"
|
|
73
|
+
"l10n_br_fiscal_operation_indicator_user","Operation Indicator for User","model_l10n_br_fiscal_operation_indicator","l10n_br_fiscal.group_user",1,0,0,0
|
|
74
|
+
"l10n_br_fiscal_operation_indicator_manager","Operation Indicator for Manager","model_l10n_br_fiscal_operation_indicator","l10n_br_fiscal.group_manager",1,1,1,1
|
|
75
|
+
"l10n_br_fiscal_operation_indicator_maintenance","Operation Indicator for Maintenance","model_l10n_br_fiscal_operation_indicator","l10n_br_fiscal.group_data_maintenance",1,1,1,1
|
|
76
|
+
"l10n_br_fiscal_partner_profile_user","Fiscal Partner Profile for User","model_l10n_br_fiscal_partner_profile","base.group_user",1,0,0,0
|
|
71
77
|
"l10n_br_fiscal_partner_profile_manager","Fiscal Partner Profile for Manager","model_l10n_br_fiscal_partner_profile","l10n_br_fiscal.group_manager",1,1,1,1
|
|
72
78
|
"l10n_br_fiscal_document_user","Fiscal Document for User","model_l10n_br_fiscal_document","l10n_br_fiscal.group_user",1,1,1,0
|
|
73
79
|
"l10n_br_fiscal_document_manager","Fiscal Document for Manager","model_l10n_br_fiscal_document","l10n_br_fiscal.group_manager",1,1,1,1
|
|
@@ -94,5 +100,5 @@
|
|
|
94
100
|
"l10n_br_fiscal_invalidate_number_manager","manager_l10n_br_fiscal_invalidate_number","model_l10n_br_fiscal_invalidate_number","l10n_br_fiscal.group_manager",1,1,1,1
|
|
95
101
|
"l10n_br_fiscal_city_taxation_code_user","Fiscal City Taxation Code for User","model_l10n_br_fiscal_city_taxation_code","l10n_br_fiscal.group_user",1,1,1,0
|
|
96
102
|
"l10n_br_fiscal_city_taxation_code_manager","Fiscal City Taxation Code for Manager","model_l10n_br_fiscal_city_taxation_code","l10n_br_fiscal.group_user",1,1,1,1
|
|
97
|
-
"l10n_br_fiscal_base_wizard_mixin_user",l10n_br_fiscal_base_wizard_mixin,model_l10n_br_fiscal_base_wizard_mixin,base.group_user,1,1,1,1
|
|
98
103
|
"l10n_br_fiscal_document_status_wizard_user",l10n_br_fiscal_document_status_wizard,model_l10n_br_fiscal_document_status_wizard,base.group_user,1,1,1,1
|
|
104
|
+
"l10n_br_fiscal_document_import_wizard_mixin_user",l10n_br_fiscal_document_import_wizard_mixin_user,model_l10n_br_fiscal_document_import_wizard_mixin,base.group_user,1,1,1,1
|
|
@@ -372,7 +372,7 @@ ul.auto-toc {
|
|
|
372
372
|
!! This file is generated by oca-gen-addon-readme !!
|
|
373
373
|
!! changes will be overwritten. !!
|
|
374
374
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
375
|
-
!! source digest: sha256:
|
|
375
|
+
!! source digest: sha256:946adae5ac2b94ccb38002a3dbc6b2464a2145f654bcfc818a9ae7aab3ae4ac5
|
|
376
376
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
377
377
|
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/l10n-brazil/tree/16.0/l10n_br_fiscal"><img alt="OCA/l10n-brazil" src="https://img.shields.io/badge/github-OCA%2Fl10n--brazil-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/l10n-brazil-16-0/l10n-brazil-16-0-l10n_br_fiscal"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/l10n-brazil&target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
|
378
378
|
<p><img alt="image" src="https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_dashboard.png" /></p>
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
from . import (
|
|
4
4
|
test_cnae,
|
|
5
|
+
test_fiscal_document_serie,
|
|
5
6
|
test_fiscal_document_generic,
|
|
6
7
|
test_fiscal_document_nfse,
|
|
7
8
|
test_fiscal_tax,
|
|
9
|
+
test_tax_classification,
|
|
8
10
|
test_tax_benefit,
|
|
11
|
+
test_document_edition,
|
|
9
12
|
test_ibpt_product,
|
|
10
13
|
test_ibpt_service,
|
|
11
14
|
test_icms_regulation,
|