odoo-addon-l10n-br-fiscal 16.0.19.4.0__py3-none-any.whl → 17.0.4.0.0.1__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 +10 -10
- odoo/addons/l10n_br_fiscal/__init__.py +2 -3
- odoo/addons/l10n_br_fiscal/__manifest__.py +3 -7
- odoo/addons/l10n_br_fiscal/constants/fiscal.py +0 -66
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.cest.csv +983 -1043
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.cst.csv +0 -58
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.csv +0 -31
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.group.csv +0 -3
- odoo/addons/l10n_br_fiscal/data/product_data.xml +2 -2
- odoo/addons/l10n_br_fiscal/demo/fiscal_document_demo.xml +88 -0
- odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot +28 -1031
- odoo/addons/l10n_br_fiscal/i18n/pt_BR.po +1078 -1197
- odoo/addons/l10n_br_fiscal/models/__init__.py +2 -2
- odoo/addons/l10n_br_fiscal/models/comment.py +20 -18
- odoo/addons/l10n_br_fiscal/models/data_abstract.py +11 -12
- odoo/addons/l10n_br_fiscal/models/document.py +4 -30
- odoo/addons/l10n_br_fiscal/models/document_line.py +3 -16
- odoo/addons/l10n_br_fiscal/models/document_line_mixin.py +27 -1048
- odoo/addons/l10n_br_fiscal/models/document_line_mixin_methods.py +883 -0
- odoo/addons/l10n_br_fiscal/models/document_mixin.py +3 -241
- odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py +239 -0
- odoo/addons/l10n_br_fiscal/models/document_serie.py +5 -3
- odoo/addons/l10n_br_fiscal/models/invalidate_number.py +0 -6
- odoo/addons/l10n_br_fiscal/models/operation.py +0 -11
- odoo/addons/l10n_br_fiscal/models/operation_dashboard.py +2 -3
- odoo/addons/l10n_br_fiscal/models/operation_line.py +0 -28
- odoo/addons/l10n_br_fiscal/models/partner_profile.py +0 -6
- odoo/addons/l10n_br_fiscal/models/product_template.py +0 -4
- odoo/addons/l10n_br_fiscal/models/res_company.py +0 -18
- odoo/addons/l10n_br_fiscal/models/res_partner.py +0 -17
- odoo/addons/l10n_br_fiscal/models/simplified_tax_range.py +0 -8
- odoo/addons/l10n_br_fiscal/models/tax_definition.py +2 -35
- odoo/addons/l10n_br_fiscal/security/ir.model.access.csv +0 -6
- odoo/addons/l10n_br_fiscal/static/description/index.html +8 -8
- odoo/addons/l10n_br_fiscal/tests/__init__.py +0 -1
- odoo/addons/l10n_br_fiscal/tests/test_cnae.py +2 -3
- odoo/addons/l10n_br_fiscal/tests/test_document_edition.py +10 -37
- odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py +28 -4
- odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_nfse.py +4 -0
- odoo/addons/l10n_br_fiscal/tests/test_service_type.py +2 -3
- odoo/addons/l10n_br_fiscal/tests/test_tax_benefit.py +4 -2
- odoo/addons/l10n_br_fiscal/views/cest_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/cnae_view.xml +0 -1
- odoo/addons/l10n_br_fiscal/views/document_line_mixin_view.xml +170 -243
- odoo/addons/l10n_br_fiscal/views/document_line_view.xml +7 -11
- odoo/addons/l10n_br_fiscal/views/document_related_view.xml +15 -11
- odoo/addons/l10n_br_fiscal/views/document_serie_view.xml +1 -1
- odoo/addons/l10n_br_fiscal/views/document_view.xml +32 -44
- odoo/addons/l10n_br_fiscal/views/invalidate_number_view.xml +12 -12
- odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_action.xml +0 -31
- odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml +2 -18
- odoo/addons/l10n_br_fiscal/views/nbm_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/nbs_view.xml +1 -1
- odoo/addons/l10n_br_fiscal/views/ncm_view.xml +3 -3
- odoo/addons/l10n_br_fiscal/views/operation_dashboard_view.xml +27 -18
- odoo/addons/l10n_br_fiscal/views/operation_line_view.xml +2 -5
- odoo/addons/l10n_br_fiscal/views/operation_view.xml +39 -16
- odoo/addons/l10n_br_fiscal/views/partner_profile_view.xml +3 -6
- odoo/addons/l10n_br_fiscal/views/product_genre_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/product_product_view.xml +17 -45
- odoo/addons/l10n_br_fiscal/views/product_template_view.xml +16 -35
- odoo/addons/l10n_br_fiscal/views/res_company_view.xml +17 -18
- odoo/addons/l10n_br_fiscal/views/res_config_settings_view.xml +37 -98
- odoo/addons/l10n_br_fiscal/views/res_partner_view.xml +3 -13
- odoo/addons/l10n_br_fiscal/views/service_type_view.xml +2 -3
- odoo/addons/l10n_br_fiscal/views/tax_definition_view.xml +60 -29
- odoo/addons/l10n_br_fiscal/views/tax_estimate_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/tax_group_view.xml +4 -4
- odoo/addons/l10n_br_fiscal/views/tax_view.xml +14 -16
- odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.py +1 -1
- odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.xml +2 -5
- {odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/METADATA +16 -16
- {odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/RECORD +77 -88
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.operation.indicator.csv +0 -27
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.classification.csv +0 -163
- odoo/addons/l10n_br_fiscal/migrations/16.0.14.0.5/pre-migration.py +0 -15
- odoo/addons/l10n_br_fiscal/migrations/16.0.2.0.0/pre-migration.py +0 -25
- odoo/addons/l10n_br_fiscal/migrations/16.0.2.15.0/pre-migration.py +0 -19
- odoo/addons/l10n_br_fiscal/migrations/16.0.4.0.0/pre-migration.py +0 -220
- odoo/addons/l10n_br_fiscal/migrations/16.0.5.0.0/pre-migration.py +0 -33
- odoo/addons/l10n_br_fiscal/migrations/16.0.5.2.0/pre-migration.py +0 -21
- odoo/addons/l10n_br_fiscal/models/operation_indicator.py +0 -58
- odoo/addons/l10n_br_fiscal/models/tax_classification.py +0 -81
- odoo/addons/l10n_br_fiscal/tests/test_tax_classification.py +0 -110
- odoo/addons/l10n_br_fiscal/views/operation_indicator_view.xml +0 -75
- odoo/addons/l10n_br_fiscal/views/tax_classification.xml +0 -110
- /odoo/addons/l10n_br_fiscal/migrations/{16.0.13.0.0 → 17.0.2.0.0}/pre-migration.py +0 -0
- /odoo/addons/l10n_br_fiscal/migrations/{16.0.14.0.0 → 17.0.3.0.0}/pre-migration.py +0 -0
- {odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/WHEEL +0 -0
- {odoo_addon_l10n_br_fiscal-16.0.19.4.0.dist-info → odoo_addon_l10n_br_fiscal-17.0.4.0.0.1.dist-info}/top_level.txt +0 -0
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
from . import data_abstract
|
|
4
4
|
from . import data_product_abstract
|
|
5
5
|
from . import data_ncm_nbs_abstract
|
|
6
|
+
from . import document_mixin_methods
|
|
6
7
|
from . import document_mixin
|
|
8
|
+
from . import document_line_mixin_methods
|
|
7
9
|
from . import document_line_mixin
|
|
8
10
|
from . import invalidate_number
|
|
9
11
|
from . import comment
|
|
@@ -52,5 +54,3 @@ from . import uom_uom
|
|
|
52
54
|
from . import operation_dashboard
|
|
53
55
|
from . import city_taxation_code
|
|
54
56
|
from . import document_supplement
|
|
55
|
-
from . import tax_classification
|
|
56
|
-
from . import operation_indicator
|
|
@@ -7,7 +7,7 @@ from datetime import datetime
|
|
|
7
7
|
from dateutil.relativedelta import relativedelta
|
|
8
8
|
|
|
9
9
|
from odoo import api, fields, models
|
|
10
|
-
from odoo.osv
|
|
10
|
+
from odoo.osv import expression
|
|
11
11
|
|
|
12
12
|
from ..constants.fiscal import (
|
|
13
13
|
COMMENT_TYPE,
|
|
@@ -62,37 +62,39 @@ class Comment(models.Model):
|
|
|
62
62
|
)
|
|
63
63
|
|
|
64
64
|
@api.model
|
|
65
|
-
def _name_search(
|
|
66
|
-
self, name, args=None, operator="ilike", limit=100, name_get_uid=None
|
|
67
|
-
):
|
|
68
|
-
args = args or []
|
|
65
|
+
def _name_search(self, name, domain=None, operator="ilike", limit=None, order=None):
|
|
69
66
|
if name:
|
|
70
|
-
domain =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
67
|
+
domain = expression.AND(
|
|
68
|
+
[
|
|
69
|
+
domain or [],
|
|
70
|
+
[
|
|
71
|
+
"|",
|
|
72
|
+
("comment", "ilike", "%" + name + "%"),
|
|
73
|
+
("name", operator, name),
|
|
74
|
+
],
|
|
75
|
+
]
|
|
76
|
+
)
|
|
77
|
+
return super()._search(
|
|
78
|
+
domain,
|
|
78
79
|
limit=limit,
|
|
79
|
-
name_get_uid=name_get_uid,
|
|
80
80
|
)
|
|
81
81
|
return super()._name_search(
|
|
82
82
|
name=name,
|
|
83
|
-
|
|
83
|
+
domain=domain,
|
|
84
84
|
operator=operator,
|
|
85
85
|
limit=limit,
|
|
86
|
-
|
|
86
|
+
order=order,
|
|
87
87
|
)
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
@api.depends("comment")
|
|
90
|
+
def _compute_display_name(self):
|
|
90
91
|
def truncate_name(name):
|
|
91
92
|
if len(name) > 60:
|
|
92
93
|
name = f"{name[:60]}..."
|
|
93
94
|
return name
|
|
94
95
|
|
|
95
|
-
|
|
96
|
+
for record in self:
|
|
97
|
+
record.display_name = truncate_name(record.comment)
|
|
96
98
|
|
|
97
99
|
# format_amount function for fiscal observation
|
|
98
100
|
# This way we can format numbers in currency template on fiscal observation
|
|
@@ -89,15 +89,13 @@ class DataAbstract(models.AbstractModel):
|
|
|
89
89
|
return model_view
|
|
90
90
|
|
|
91
91
|
@api.model
|
|
92
|
-
def _name_search(
|
|
93
|
-
self, name, args=None, operator="ilike", limit=100, name_get_uid=None
|
|
94
|
-
):
|
|
92
|
+
def _name_search(self, name, domain=None, operator="ilike", limit=None, order=None):
|
|
95
93
|
if operator == "ilike" and not (name or "").strip():
|
|
96
94
|
domain = []
|
|
97
95
|
elif operator in ("ilike", "like", "=", "=like", "=ilike"):
|
|
98
96
|
domain = expression.AND(
|
|
99
97
|
[
|
|
100
|
-
|
|
98
|
+
domain or [],
|
|
101
99
|
[
|
|
102
100
|
"|",
|
|
103
101
|
"|",
|
|
@@ -108,22 +106,23 @@ class DataAbstract(models.AbstractModel):
|
|
|
108
106
|
]
|
|
109
107
|
)
|
|
110
108
|
return self._search(
|
|
111
|
-
|
|
109
|
+
domain,
|
|
112
110
|
limit=limit,
|
|
113
|
-
access_rights_uid=name_get_uid,
|
|
114
111
|
)
|
|
115
112
|
|
|
116
113
|
return super()._name_search(
|
|
117
|
-
name,
|
|
114
|
+
name, domain=domain, operator=operator, limit=limit, order=order
|
|
118
115
|
)
|
|
119
116
|
|
|
120
|
-
|
|
117
|
+
@api.depends("name", "code")
|
|
118
|
+
def _compute_display_name(self):
|
|
121
119
|
def truncate_name(name):
|
|
122
120
|
if len(name) > 60:
|
|
123
121
|
name = f"{name[:60]}..."
|
|
124
122
|
return name
|
|
125
123
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
for record in self:
|
|
125
|
+
if self._context.get("show_code_only"):
|
|
126
|
+
record.display_name = record.code
|
|
127
|
+
else:
|
|
128
|
+
record.display_name = f"{record.code} - {truncate_name(record.name)}"
|
|
@@ -17,14 +17,11 @@ from ..constants.fiscal import (
|
|
|
17
17
|
DOCUMENT_ISSUER_PARTNER,
|
|
18
18
|
EDOC_PURPOSE,
|
|
19
19
|
EDOC_PURPOSE_NORMAL,
|
|
20
|
-
EDOC_REFUND_CREDIT_TYPE,
|
|
21
|
-
EDOC_REFUND_DEBIT_TYPE,
|
|
22
20
|
FISCAL_IN_OUT_DICT,
|
|
23
21
|
MODELO_FISCAL_CTE,
|
|
24
22
|
MODELO_FISCAL_NFCE,
|
|
25
23
|
MODELO_FISCAL_NFE,
|
|
26
24
|
MODELO_FISCAL_NFSE,
|
|
27
|
-
PUBLIC_ENTIRY_TYPE,
|
|
28
25
|
SITUACAO_EDOC,
|
|
29
26
|
SITUACAO_EDOC_AUTORIZADA,
|
|
30
27
|
SITUACAO_EDOC_CANCELADA,
|
|
@@ -144,16 +141,8 @@ class Document(models.Model):
|
|
|
144
141
|
partner_id = fields.Many2one(
|
|
145
142
|
comodel_name="res.partner",
|
|
146
143
|
string="Partner",
|
|
147
|
-
inverse="_inverse_partner_id",
|
|
148
144
|
)
|
|
149
145
|
|
|
150
|
-
@api.onchange("partner_id")
|
|
151
|
-
def _inverse_partner_id(self):
|
|
152
|
-
for doc in self:
|
|
153
|
-
for line in doc.fiscal_line_ids:
|
|
154
|
-
if line.partner_id != doc.partner_id:
|
|
155
|
-
line.partner_id = doc.partner_id
|
|
156
|
-
|
|
157
146
|
partner_shipping_id = fields.Many2one(
|
|
158
147
|
comodel_name="res.partner",
|
|
159
148
|
string="Shipping Address",
|
|
@@ -182,21 +171,6 @@ class Document(models.Model):
|
|
|
182
171
|
precompute=True,
|
|
183
172
|
)
|
|
184
173
|
|
|
185
|
-
edoc_refund_debit_type = fields.Selection(
|
|
186
|
-
selection=EDOC_REFUND_DEBIT_TYPE,
|
|
187
|
-
string="Tipo de Nota de Débito",
|
|
188
|
-
)
|
|
189
|
-
|
|
190
|
-
edoc_refund_credit_type = fields.Selection(
|
|
191
|
-
selection=EDOC_REFUND_CREDIT_TYPE,
|
|
192
|
-
string="Tipo de Nota de Crédito",
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
public_entity_type = fields.Selection(
|
|
196
|
-
selection=PUBLIC_ENTIRY_TYPE,
|
|
197
|
-
string="Tipo de Entidade Governamental",
|
|
198
|
-
)
|
|
199
|
-
|
|
200
174
|
document_type = fields.Char(
|
|
201
175
|
string="Document Type Code",
|
|
202
176
|
related="document_type_id.code",
|
|
@@ -388,11 +362,9 @@ class Document(models.Model):
|
|
|
388
362
|
)
|
|
389
363
|
return name
|
|
390
364
|
|
|
391
|
-
def
|
|
392
|
-
res = []
|
|
365
|
+
def _compute_display_name(self):
|
|
393
366
|
for record in self:
|
|
394
|
-
|
|
395
|
-
return res
|
|
367
|
+
record.display_name = record._compute_document_name()
|
|
396
368
|
|
|
397
369
|
@api.depends(
|
|
398
370
|
"issuer",
|
|
@@ -455,6 +427,8 @@ class Document(models.Model):
|
|
|
455
427
|
).format(line.fiscal_operation_id)
|
|
456
428
|
)
|
|
457
429
|
line.fiscal_operation_id = fsc_op_line
|
|
430
|
+
line._onchange_fiscal_operation_id()
|
|
431
|
+
|
|
458
432
|
return_docs |= new_doc
|
|
459
433
|
return return_docs
|
|
460
434
|
|
|
@@ -50,18 +50,11 @@ class DocumentLine(models.Model):
|
|
|
50
50
|
)
|
|
51
51
|
|
|
52
52
|
partner_id = fields.Many2one(
|
|
53
|
-
|
|
54
|
-
compute="_compute_partner_id",
|
|
53
|
+
related="document_id.partner_id",
|
|
55
54
|
store=True,
|
|
56
55
|
precompute=True,
|
|
57
|
-
readonly=False,
|
|
58
56
|
)
|
|
59
57
|
|
|
60
|
-
# Do not depend on `document_id.partner_id`, the inverse is taking care of that
|
|
61
|
-
def _compute_partner_id(self):
|
|
62
|
-
for line in self:
|
|
63
|
-
line.partner_id = line.document_id.partner_id
|
|
64
|
-
|
|
65
58
|
uom_id = fields.Many2one(
|
|
66
59
|
comodel_name="uom.uom",
|
|
67
60
|
string="UOM",
|
|
@@ -71,16 +64,10 @@ class DocumentLine(models.Model):
|
|
|
71
64
|
precompute=True,
|
|
72
65
|
)
|
|
73
66
|
|
|
74
|
-
price_unit = fields.Float(
|
|
75
|
-
digits="Product Price",
|
|
76
|
-
compute="_compute_price_unit_fiscal",
|
|
77
|
-
store=True,
|
|
78
|
-
precompute=True,
|
|
79
|
-
readonly=False,
|
|
80
|
-
)
|
|
81
|
-
|
|
82
67
|
quantity = fields.Float(default=1.0)
|
|
83
68
|
|
|
69
|
+
ind_final = fields.Selection(related="document_id.ind_final")
|
|
70
|
+
|
|
84
71
|
# Usado para tornar Somente Leitura os campos dos custos
|
|
85
72
|
# de entrega quando a definição for por Total
|
|
86
73
|
delivery_costs = fields.Selection(
|