odoo-addon-l10n-br-fiscal 16.0.12.3.0__py3-none-any.whl → 18.0.1.0.0.6__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.
Potentially problematic release.
This version of odoo-addon-l10n-br-fiscal might be problematic. Click here for more details.
- odoo/addons/l10n_br_fiscal/README.rst +10 -10
- odoo/addons/l10n_br_fiscal/__init__.py +3 -3
- odoo/addons/l10n_br_fiscal/__manifest__.py +3 -2
- odoo/addons/l10n_br_fiscal/constants/fiscal.py +5 -6
- odoo/addons/l10n_br_fiscal/data/ir_cron.xml +19 -34
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_cfop_data.xml +0 -2
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_data.xml +6 -8
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_icms_tax_definition_data.xml +4055 -4033
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_server_action.xml +0 -2
- odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_tax_icms_data.xml +54 -50
- odoo/addons/l10n_br_fiscal/data/operation_data.xml +197 -181
- odoo/addons/l10n_br_fiscal/data/product_data.xml +2 -4
- odoo/addons/l10n_br_fiscal/data/res_partner_data.xml +0 -2
- odoo/addons/l10n_br_fiscal/data/simplified_tax_data.xml +0 -2
- odoo/addons/l10n_br_fiscal/data/uom_data.xml +0 -2
- odoo/addons/l10n_br_fiscal/demo/city_taxation_code_demo.xml +0 -2
- odoo/addons/l10n_br_fiscal/demo/company_demo.xml +0 -3
- odoo/addons/l10n_br_fiscal/demo/fiscal_document_demo.xml +37 -49
- odoo/addons/l10n_br_fiscal/demo/fiscal_document_nfse_demo.xml +0 -1
- odoo/addons/l10n_br_fiscal/demo/fiscal_operation_demo.xml +0 -2
- odoo/addons/l10n_br_fiscal/demo/icms_tax_definition_demo.xml +0 -2
- odoo/addons/l10n_br_fiscal/demo/partner_demo.xml +0 -2
- odoo/addons/l10n_br_fiscal/demo/product_demo.xml +0 -1705
- odoo/addons/l10n_br_fiscal/demo/res_users_demo.xml +0 -2
- odoo/addons/l10n_br_fiscal/hooks.py +68 -0
- odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot +50 -592
- odoo/addons/l10n_br_fiscal/models/cfop.py +1 -1
- odoo/addons/l10n_br_fiscal/models/cnae.py +2 -2
- odoo/addons/l10n_br_fiscal/models/comment.py +14 -29
- odoo/addons/l10n_br_fiscal/models/cst.py +2 -2
- odoo/addons/l10n_br_fiscal/models/data_abstract.py +19 -33
- odoo/addons/l10n_br_fiscal/models/document.py +2 -5
- odoo/addons/l10n_br_fiscal/models/document_mixin.py +0 -2
- odoo/addons/l10n_br_fiscal/models/document_serie.py +6 -4
- odoo/addons/l10n_br_fiscal/models/document_type.py +0 -1
- odoo/addons/l10n_br_fiscal/models/ibpt.py +1 -1
- odoo/addons/l10n_br_fiscal/models/invalidate_number.py +6 -13
- odoo/addons/l10n_br_fiscal/models/legal_nature.py +1 -1
- odoo/addons/l10n_br_fiscal/models/nbm.py +2 -2
- odoo/addons/l10n_br_fiscal/models/nbs.py +4 -4
- odoo/addons/l10n_br_fiscal/models/ncm.py +4 -4
- odoo/addons/l10n_br_fiscal/models/operation.py +2 -13
- odoo/addons/l10n_br_fiscal/models/operation_dashboard.py +1 -1
- odoo/addons/l10n_br_fiscal/models/operation_line.py +1 -1
- odoo/addons/l10n_br_fiscal/models/partner_profile.py +1 -1
- odoo/addons/l10n_br_fiscal/models/tax.py +5 -1
- odoo/addons/l10n_br_fiscal/models/tax_definition.py +2 -35
- odoo/addons/l10n_br_fiscal/models/tax_group.py +6 -6
- odoo/addons/l10n_br_fiscal/models/tax_pis_cofins.py +4 -4
- odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_base.py +2 -2
- odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_credit.py +2 -2
- odoo/addons/l10n_br_fiscal/security/fiscal_security.xml +0 -2
- odoo/addons/l10n_br_fiscal/static/description/index.html +8 -8
- odoo/addons/l10n_br_fiscal/tests/test_cnae.py +2 -3
- odoo/addons/l10n_br_fiscal/tests/test_document_edition.py +35 -36
- odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py +3 -2
- odoo/addons/l10n_br_fiscal/tests/test_service_type.py +2 -3
- odoo/addons/l10n_br_fiscal/views/cest_view.xml +4 -4
- odoo/addons/l10n_br_fiscal/views/cfop_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/city_taxation_code.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/cnae_view.xml +2 -3
- odoo/addons/l10n_br_fiscal/views/comment_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/cst_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/document_line_mixin_view.xml +170 -140
- odoo/addons/l10n_br_fiscal/views/document_line_view.xml +7 -7
- odoo/addons/l10n_br_fiscal/views/document_related_view.xml +17 -13
- odoo/addons/l10n_br_fiscal/views/document_serie_view.xml +3 -3
- odoo/addons/l10n_br_fiscal/views/document_type_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/document_view.xml +37 -37
- odoo/addons/l10n_br_fiscal/views/icms_regulation_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/icms_relief_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/invalidate_number_view.xml +14 -14
- odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_action.xml +36 -36
- odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/legal_nature_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/nbm_view.xml +7 -7
- odoo/addons/l10n_br_fiscal/views/nbs_view.xml +6 -6
- odoo/addons/l10n_br_fiscal/views/ncm_view.xml +8 -8
- odoo/addons/l10n_br_fiscal/views/operation_dashboard_view.xml +33 -25
- odoo/addons/l10n_br_fiscal/views/operation_line_view.xml +4 -4
- odoo/addons/l10n_br_fiscal/views/operation_view.xml +43 -20
- odoo/addons/l10n_br_fiscal/views/partner_profile_view.xml +5 -8
- odoo/addons/l10n_br_fiscal/views/product_genre_view.xml +4 -4
- odoo/addons/l10n_br_fiscal/views/product_product_view.xml +17 -20
- odoo/addons/l10n_br_fiscal/views/product_template_view.xml +16 -13
- odoo/addons/l10n_br_fiscal/views/res_company_view.xml +17 -12
- odoo/addons/l10n_br_fiscal/views/res_config_settings_view.xml +44 -105
- odoo/addons/l10n_br_fiscal/views/res_partner_view.xml +3 -3
- odoo/addons/l10n_br_fiscal/views/service_type_view.xml +7 -8
- odoo/addons/l10n_br_fiscal/views/simplified_tax_range_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/simplified_tax_view.xml +4 -4
- odoo/addons/l10n_br_fiscal/views/tax_definition_view.xml +64 -33
- odoo/addons/l10n_br_fiscal/views/tax_estimate_view.xml +4 -4
- odoo/addons/l10n_br_fiscal/views/tax_group_view.xml +6 -6
- odoo/addons/l10n_br_fiscal/views/tax_ipi_control_seal_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/tax_ipi_guideline_class_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/tax_ipi_guideline_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_base_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_credit_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_view.xml +2 -2
- odoo/addons/l10n_br_fiscal/views/tax_view.xml +16 -18
- odoo/addons/l10n_br_fiscal/views/uom_uom.xml +2 -2
- 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.12.3.0.dist-info → odoo_addon_l10n_br_fiscal-18.0.1.0.0.6.dist-info}/METADATA +15 -15
- {odoo_addon_l10n_br_fiscal-16.0.12.3.0.dist-info → odoo_addon_l10n_br_fiscal-18.0.1.0.0.6.dist-info}/RECORD +108 -112
- 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_addon_l10n_br_fiscal-16.0.12.3.0.dist-info → odoo_addon_l10n_br_fiscal-18.0.1.0.0.6.dist-info}/WHEEL +0 -0
- {odoo_addon_l10n_br_fiscal-16.0.12.3.0.dist-info → odoo_addon_l10n_br_fiscal-18.0.1.0.0.6.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Copyright (C) 2014 KMEE - www.kmee.com.br
|
|
3
3
|
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
|
|
4
4
|
|
|
5
|
-
from odoo import
|
|
5
|
+
from odoo import fields, models
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class Cnae(models.Model):
|
|
@@ -34,6 +34,6 @@ class Cnae(models.Model):
|
|
|
34
34
|
(
|
|
35
35
|
"fiscal_cnae_code_uniq",
|
|
36
36
|
"unique (code)",
|
|
37
|
-
|
|
37
|
+
"CNAE already exists with this code!",
|
|
38
38
|
)
|
|
39
39
|
]
|
|
@@ -6,8 +6,7 @@ from datetime import datetime
|
|
|
6
6
|
|
|
7
7
|
from dateutil.relativedelta import relativedelta
|
|
8
8
|
|
|
9
|
-
from odoo import api, fields, models
|
|
10
|
-
from odoo.osv.expression import AND
|
|
9
|
+
from odoo import api, fields, models
|
|
11
10
|
|
|
12
11
|
from ..constants.fiscal import (
|
|
13
12
|
COMMENT_TYPE,
|
|
@@ -62,37 +61,23 @@ class Comment(models.Model):
|
|
|
62
61
|
)
|
|
63
62
|
|
|
64
63
|
@api.model
|
|
65
|
-
def
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return super()._name_search(
|
|
76
|
-
args=AND([args, domain]),
|
|
77
|
-
operator=operator,
|
|
78
|
-
limit=limit,
|
|
79
|
-
name_get_uid=name_get_uid,
|
|
80
|
-
)
|
|
81
|
-
return super()._name_search(
|
|
82
|
-
name=name,
|
|
83
|
-
args=args,
|
|
84
|
-
operator=operator,
|
|
85
|
-
limit=limit,
|
|
86
|
-
name_get_uid=name_get_uid,
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
def name_get(self):
|
|
64
|
+
def _search_display_name(self, operator, value):
|
|
65
|
+
name = value or ""
|
|
66
|
+
return [
|
|
67
|
+
"|",
|
|
68
|
+
("comment", "ilike", "%" + name + "%"),
|
|
69
|
+
("name", operator, name),
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
@api.depends("comment")
|
|
73
|
+
def _compute_display_name(self):
|
|
90
74
|
def truncate_name(name):
|
|
91
75
|
if len(name) > 60:
|
|
92
76
|
name = f"{name[:60]}..."
|
|
93
77
|
return name
|
|
94
78
|
|
|
95
|
-
|
|
79
|
+
for record in self:
|
|
80
|
+
record.display_name = truncate_name(record.comment)
|
|
96
81
|
|
|
97
82
|
# format_amount function for fiscal observation
|
|
98
83
|
# This way we can format numbers in currency template on fiscal observation
|
|
@@ -163,7 +148,7 @@ class Comment(models.Model):
|
|
|
163
148
|
|
|
164
149
|
comments = [manual_comment] if manual_comment else []
|
|
165
150
|
for record in self:
|
|
166
|
-
template = mako_safe_env.from_string(
|
|
151
|
+
template = mako_safe_env.from_string(record.comment)
|
|
167
152
|
comments.append(template.render(vals))
|
|
168
153
|
return " - ".join(comments)
|
|
169
154
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright (C) 2018 Renato Lima - Akretion
|
|
2
2
|
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
|
|
3
3
|
|
|
4
|
-
from odoo import
|
|
4
|
+
from odoo import fields, models
|
|
5
5
|
|
|
6
6
|
from ..constants.fiscal import FISCAL_IN_OUT_ALL
|
|
7
7
|
|
|
@@ -34,6 +34,6 @@ class CST(models.Model):
|
|
|
34
34
|
(
|
|
35
35
|
"l10n_br_fiscal_cst_code_tax_group_id_uniq",
|
|
36
36
|
"unique (code, tax_group_id)",
|
|
37
|
-
|
|
37
|
+
"CST already exists with this code!",
|
|
38
38
|
)
|
|
39
39
|
]
|
|
@@ -8,7 +8,6 @@ from lxml import etree
|
|
|
8
8
|
|
|
9
9
|
from odoo import _, api, fields, models
|
|
10
10
|
from odoo.exceptions import AccessError
|
|
11
|
-
from odoo.osv import expression
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
class DataAbstract(models.AbstractModel):
|
|
@@ -23,7 +22,7 @@ class DataAbstract(models.AbstractModel):
|
|
|
23
22
|
- Enhanced search: Modifies search views and `_name_search`
|
|
24
23
|
to allow searching by `code`, `code_unmasked`, and `name`
|
|
25
24
|
simultaneously.
|
|
26
|
-
- Standardized display name format in `
|
|
25
|
+
- Standardized display name format in `display_name`
|
|
27
26
|
(`<code> - <name>`).
|
|
28
27
|
- Permission control for archiving/unarchanging, restricted
|
|
29
28
|
to users in 'l10n_br_fiscal.group_manager' group.
|
|
@@ -89,41 +88,28 @@ class DataAbstract(models.AbstractModel):
|
|
|
89
88
|
return model_view
|
|
90
89
|
|
|
91
90
|
@api.model
|
|
92
|
-
def
|
|
93
|
-
|
|
94
|
-
):
|
|
91
|
+
def _search_display_name(self, operator, value):
|
|
92
|
+
name = value or ""
|
|
95
93
|
if operator == "ilike" and not (name or "").strip():
|
|
96
|
-
|
|
94
|
+
return []
|
|
97
95
|
elif operator in ("ilike", "like", "=", "=like", "=ilike"):
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
]
|
|
109
|
-
)
|
|
110
|
-
return self._search(
|
|
111
|
-
expression.AND([domain, args]),
|
|
112
|
-
limit=limit,
|
|
113
|
-
access_rights_uid=name_get_uid,
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
return super()._name_search(
|
|
117
|
-
name, args=args, operator=operator, limit=limit, name_get_uid=name_get_uid
|
|
118
|
-
)
|
|
119
|
-
|
|
120
|
-
def name_get(self):
|
|
96
|
+
return [
|
|
97
|
+
"|",
|
|
98
|
+
"|",
|
|
99
|
+
("name", operator, name),
|
|
100
|
+
("code", operator, name),
|
|
101
|
+
("code_unmasked", "ilike", name + "%"),
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
@api.depends("name", "code")
|
|
105
|
+
def _compute_display_name(self):
|
|
121
106
|
def truncate_name(name):
|
|
122
107
|
if len(name) > 60:
|
|
123
108
|
name = f"{name[:60]}..."
|
|
124
109
|
return name
|
|
125
110
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
111
|
+
for record in self:
|
|
112
|
+
if self._context.get("show_code_only"):
|
|
113
|
+
record.display_name = record.code
|
|
114
|
+
else:
|
|
115
|
+
record.display_name = f"{record.code} - {truncate_name(record.name)}"
|
|
@@ -105,7 +105,6 @@ class Document(models.Model):
|
|
|
105
105
|
string="RPS Number",
|
|
106
106
|
copy=False,
|
|
107
107
|
index=True,
|
|
108
|
-
unaccent=False,
|
|
109
108
|
)
|
|
110
109
|
|
|
111
110
|
document_date = fields.Datetime(
|
|
@@ -361,11 +360,9 @@ class Document(models.Model):
|
|
|
361
360
|
)
|
|
362
361
|
return name
|
|
363
362
|
|
|
364
|
-
def
|
|
365
|
-
res = []
|
|
363
|
+
def _compute_display_name(self):
|
|
366
364
|
for record in self:
|
|
367
|
-
|
|
368
|
-
return res
|
|
365
|
+
record.display_name = record._compute_document_name()
|
|
369
366
|
|
|
370
367
|
@api.depends(
|
|
371
368
|
"issuer",
|
|
@@ -501,14 +501,12 @@ class FiscalDocumentMixin(models.AbstractModel):
|
|
|
501
501
|
document_number = fields.Char(
|
|
502
502
|
copy=False,
|
|
503
503
|
index=True,
|
|
504
|
-
unaccent=False,
|
|
505
504
|
)
|
|
506
505
|
|
|
507
506
|
document_key = fields.Char(
|
|
508
507
|
string="Key",
|
|
509
508
|
copy=False,
|
|
510
509
|
index=True,
|
|
511
|
-
unaccent=False,
|
|
512
510
|
)
|
|
513
511
|
|
|
514
512
|
key_random_code = fields.Char(string="Document Key Random Code")
|
|
@@ -16,9 +16,9 @@ class DocumentSerie(models.Model):
|
|
|
16
16
|
_description = "Fiscal Document Serie"
|
|
17
17
|
_inherit = "l10n_br_fiscal.data.abstract"
|
|
18
18
|
|
|
19
|
-
code = fields.Char(size=3
|
|
19
|
+
code = fields.Char(size=3)
|
|
20
20
|
|
|
21
|
-
name = fields.Char(required=True
|
|
21
|
+
name = fields.Char(required=True)
|
|
22
22
|
|
|
23
23
|
active = fields.Boolean(default=True)
|
|
24
24
|
|
|
@@ -78,8 +78,10 @@ class DocumentSerie(models.Model):
|
|
|
78
78
|
vals.update({"internal_sequence_id": self._create_sequence(vals)})
|
|
79
79
|
return super().create(vals_list)
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
@api.depends("name")
|
|
82
|
+
def _compute_display_name(self):
|
|
83
|
+
for record in self:
|
|
84
|
+
record.display_name = record.name
|
|
83
85
|
|
|
84
86
|
def _is_invalid_number(self, document_number):
|
|
85
87
|
self.ensure_one()
|
|
@@ -45,7 +45,7 @@ def _request(ws_url, params, ibpt_request_timeout=30):
|
|
|
45
45
|
elif response.status_code == requests.codes.service_unavailable:
|
|
46
46
|
raise UserError(_("IBPT Service Unavailable - {!r}").format(ws_url))
|
|
47
47
|
except Exception as e:
|
|
48
|
-
raise UserError(
|
|
48
|
+
raise UserError(f"Error in the request: {e}") from e
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
def get_ibpt_product(
|
|
@@ -28,14 +28,12 @@ class InvalidateNumber(models.Model):
|
|
|
28
28
|
readonly=True,
|
|
29
29
|
default=lambda self: self.env.company.id,
|
|
30
30
|
required=True,
|
|
31
|
-
states={"draft": [("readonly", False)]},
|
|
32
31
|
)
|
|
33
32
|
|
|
34
33
|
document_type_id = fields.Many2one(
|
|
35
34
|
comodel_name="l10n_br_fiscal.document.type",
|
|
36
35
|
required=True,
|
|
37
36
|
readonly=True,
|
|
38
|
-
states={"draft": [("readonly", False)]},
|
|
39
37
|
)
|
|
40
38
|
|
|
41
39
|
document_electronic = fields.Boolean(
|
|
@@ -49,33 +47,29 @@ class InvalidateNumber(models.Model):
|
|
|
49
47
|
('company_id', '=', company_id)]""",
|
|
50
48
|
required=True,
|
|
51
49
|
readonly=True,
|
|
52
|
-
states={"draft": [("readonly", False)]},
|
|
53
50
|
)
|
|
54
51
|
|
|
55
52
|
number_start = fields.Integer(
|
|
56
53
|
string="Initial Number",
|
|
57
54
|
required=True,
|
|
58
55
|
readonly=True,
|
|
59
|
-
states={"draft": [("readonly", False)]},
|
|
60
56
|
)
|
|
61
57
|
|
|
62
58
|
number_end = fields.Integer(
|
|
63
59
|
string="End Number",
|
|
64
60
|
required=True,
|
|
65
61
|
readonly=True,
|
|
66
|
-
states={"draft": [("readonly", False)]},
|
|
67
62
|
)
|
|
68
63
|
|
|
69
64
|
justification = fields.Char(
|
|
70
65
|
required=True,
|
|
71
66
|
readonly=True,
|
|
72
|
-
states={"draft": [("readonly", False)]},
|
|
73
67
|
)
|
|
74
68
|
|
|
75
69
|
state = fields.Selection(
|
|
76
70
|
selection=[
|
|
77
|
-
("draft",
|
|
78
|
-
("done",
|
|
71
|
+
("draft", "Draft"),
|
|
72
|
+
("done", "Done"),
|
|
79
73
|
],
|
|
80
74
|
string="Status",
|
|
81
75
|
readonly=True,
|
|
@@ -105,11 +99,10 @@ class InvalidateNumber(models.Model):
|
|
|
105
99
|
@api.depends("document_type_id", "document_serie_id", "number_start", "number_end")
|
|
106
100
|
def _compute_name(self):
|
|
107
101
|
for record in self:
|
|
108
|
-
record.name =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
end=record.number_end,
|
|
102
|
+
record.name = (
|
|
103
|
+
f"{record.document_type_id.type}/"
|
|
104
|
+
f"({record.document_serie_id.name}): "
|
|
105
|
+
f"{record.number_start} - {record.number_end}"
|
|
113
106
|
)
|
|
114
107
|
|
|
115
108
|
def unlink(self):
|
|
@@ -11,9 +11,9 @@ class Nbm(models.Model):
|
|
|
11
11
|
_inherit = "l10n_br_fiscal.data.product.abstract"
|
|
12
12
|
_description = "NBM"
|
|
13
13
|
|
|
14
|
-
code = fields.Char(size=12
|
|
14
|
+
code = fields.Char(size=12)
|
|
15
15
|
|
|
16
|
-
code_unmasked = fields.Char(size=10
|
|
16
|
+
code_unmasked = fields.Char(size=10)
|
|
17
17
|
|
|
18
18
|
product_tmpl_ids = fields.One2many(inverse_name="nbm_id")
|
|
19
19
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright (C) 2019 Renato Lima - Akretion
|
|
2
2
|
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
|
|
3
3
|
|
|
4
|
-
from odoo import
|
|
4
|
+
from odoo import fields, models
|
|
5
5
|
|
|
6
6
|
from .ibpt import get_ibpt_service
|
|
7
7
|
|
|
@@ -15,9 +15,9 @@ class Nbs(models.Model):
|
|
|
15
15
|
]
|
|
16
16
|
_description = "NBS"
|
|
17
17
|
|
|
18
|
-
code = fields.Char(size=12
|
|
18
|
+
code = fields.Char(size=12)
|
|
19
19
|
|
|
20
|
-
code_unmasked = fields.Char(size=10
|
|
20
|
+
code_unmasked = fields.Char(size=10)
|
|
21
21
|
|
|
22
22
|
tax_estimate_ids = fields.One2many(inverse_name="nbs_id")
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ class Nbs(models.Model):
|
|
|
27
27
|
(
|
|
28
28
|
"fiscal_nbs_code_uniq",
|
|
29
29
|
"unique (code)",
|
|
30
|
-
|
|
30
|
+
"NBS already exists with this code!",
|
|
31
31
|
)
|
|
32
32
|
]
|
|
33
33
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright (C) 2012 Renato Lima - Akretion <renato.lima@akretion.com.br>
|
|
2
2
|
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
|
|
3
3
|
|
|
4
|
-
from odoo import
|
|
4
|
+
from odoo import fields, models
|
|
5
5
|
|
|
6
6
|
from ..constants.fiscal import TAX_DOMAIN_II, TAX_DOMAIN_IPI
|
|
7
7
|
from .ibpt import get_ibpt_product
|
|
@@ -16,9 +16,9 @@ class Ncm(models.Model):
|
|
|
16
16
|
]
|
|
17
17
|
_description = "NCM"
|
|
18
18
|
|
|
19
|
-
code = fields.Char(size=10
|
|
19
|
+
code = fields.Char(size=10)
|
|
20
20
|
|
|
21
|
-
code_unmasked = fields.Char(size=8
|
|
21
|
+
code_unmasked = fields.Char(size=8)
|
|
22
22
|
|
|
23
23
|
exception = fields.Char(size=2)
|
|
24
24
|
|
|
@@ -70,7 +70,7 @@ class Ncm(models.Model):
|
|
|
70
70
|
(
|
|
71
71
|
"fiscal_ncm_code_exception_uniq",
|
|
72
72
|
"unique (code, exception)",
|
|
73
|
-
|
|
73
|
+
"NCM already exists with this code!",
|
|
74
74
|
)
|
|
75
75
|
]
|
|
76
76
|
|
|
@@ -72,14 +72,12 @@ class Operation(models.Model):
|
|
|
72
72
|
code = fields.Char(
|
|
73
73
|
required=True,
|
|
74
74
|
readonly=True,
|
|
75
|
-
states={"draft": [("readonly", False)]},
|
|
76
75
|
tracking=True,
|
|
77
76
|
)
|
|
78
77
|
|
|
79
78
|
name = fields.Char(
|
|
80
79
|
required=True,
|
|
81
80
|
readonly=True,
|
|
82
|
-
states={"draft": [("readonly", False)]},
|
|
83
81
|
tracking=True,
|
|
84
82
|
)
|
|
85
83
|
|
|
@@ -88,7 +86,6 @@ class Operation(models.Model):
|
|
|
88
86
|
string="Type",
|
|
89
87
|
required=True,
|
|
90
88
|
readonly=True,
|
|
91
|
-
states={"draft": [("readonly", False)]},
|
|
92
89
|
tracking=True,
|
|
93
90
|
)
|
|
94
91
|
|
|
@@ -97,16 +94,14 @@ class Operation(models.Model):
|
|
|
97
94
|
string="Finalidade",
|
|
98
95
|
default=EDOC_PURPOSE_NORMAL,
|
|
99
96
|
readonly=True,
|
|
100
|
-
states={"draft": [("readonly", False)]},
|
|
101
97
|
tracking=True,
|
|
102
98
|
)
|
|
103
99
|
|
|
104
100
|
default_price_unit = fields.Selection(
|
|
105
|
-
selection=[("sale_price",
|
|
101
|
+
selection=[("sale_price", "Sale Price"), ("cost_price", "Cost Price")],
|
|
106
102
|
string="Default Price Unit?",
|
|
107
103
|
default="sale_price",
|
|
108
104
|
readonly=True,
|
|
109
|
-
states={"draft": [("readonly", False)]},
|
|
110
105
|
tracking=True,
|
|
111
106
|
)
|
|
112
107
|
|
|
@@ -115,7 +110,6 @@ class Operation(models.Model):
|
|
|
115
110
|
default=OPERATION_FISCAL_TYPE_DEFAULT,
|
|
116
111
|
required=True,
|
|
117
112
|
readonly=True,
|
|
118
|
-
states={"draft": [("readonly", False)]},
|
|
119
113
|
tracking=True,
|
|
120
114
|
)
|
|
121
115
|
|
|
@@ -123,7 +117,6 @@ class Operation(models.Model):
|
|
|
123
117
|
comodel_name="l10n_br_fiscal.operation",
|
|
124
118
|
string="Return Operation",
|
|
125
119
|
readonly=True,
|
|
126
|
-
states={"draft": [("readonly", False)]},
|
|
127
120
|
domain="[('fiscal_operation_type', '!=', fiscal_operation_type), "
|
|
128
121
|
"('fiscal_type', 'in', {'sale': ['sale_refund'], 'purchase': "
|
|
129
122
|
"['purchase_refund'], 'other': ['return_in', 'return_out'],"
|
|
@@ -136,7 +129,6 @@ class Operation(models.Model):
|
|
|
136
129
|
comodel_name="l10n_br_fiscal.operation",
|
|
137
130
|
string="Inverse Operation",
|
|
138
131
|
readonly=True,
|
|
139
|
-
states={"draft": [("readonly", False)]},
|
|
140
132
|
tracking=True,
|
|
141
133
|
)
|
|
142
134
|
|
|
@@ -144,7 +136,6 @@ class Operation(models.Model):
|
|
|
144
136
|
comodel_name="res.company",
|
|
145
137
|
string="Company",
|
|
146
138
|
readonly=True,
|
|
147
|
-
states={"draft": [("readonly", False)]},
|
|
148
139
|
tracking=True,
|
|
149
140
|
)
|
|
150
141
|
|
|
@@ -162,7 +153,6 @@ class Operation(models.Model):
|
|
|
162
153
|
inverse_name="fiscal_operation_id",
|
|
163
154
|
string="Operation Document Types",
|
|
164
155
|
readonly=True,
|
|
165
|
-
states={"draft": [("readonly", False)]},
|
|
166
156
|
)
|
|
167
157
|
|
|
168
158
|
line_ids = fields.One2many(
|
|
@@ -170,7 +160,6 @@ class Operation(models.Model):
|
|
|
170
160
|
inverse_name="fiscal_operation_id",
|
|
171
161
|
string="Operation Line",
|
|
172
162
|
readonly=True,
|
|
173
|
-
states={"draft": [("readonly", False)]},
|
|
174
163
|
copy=True,
|
|
175
164
|
)
|
|
176
165
|
|
|
@@ -184,7 +173,7 @@ class Operation(models.Model):
|
|
|
184
173
|
(
|
|
185
174
|
"fiscal_operation_code_uniq",
|
|
186
175
|
"unique (code)",
|
|
187
|
-
|
|
176
|
+
"Fiscal Operation already exists with this code!",
|
|
188
177
|
)
|
|
189
178
|
]
|
|
190
179
|
|
|
@@ -157,7 +157,7 @@ class Operation(models.Model):
|
|
|
157
157
|
}
|
|
158
158
|
)
|
|
159
159
|
|
|
160
|
-
[action] = self.env.ref("l10n_br_fiscal
|
|
160
|
+
[action] = self.env.ref("l10n_br_fiscal.{action_name}").read()
|
|
161
161
|
action["context"] = ctx
|
|
162
162
|
action["domain"] = self._context.get("use_domain", [])
|
|
163
163
|
action["domain"] += [
|
|
@@ -139,7 +139,7 @@ class OperationLine(models.Model):
|
|
|
139
139
|
(
|
|
140
140
|
"fiscal_operation_name_uniq",
|
|
141
141
|
"unique (name, fiscal_operation_id)",
|
|
142
|
-
|
|
142
|
+
"Fiscal Operation Line already exists with this name!",
|
|
143
143
|
)
|
|
144
144
|
]
|
|
145
145
|
|
|
@@ -226,7 +226,11 @@ class Tax(models.Model):
|
|
|
226
226
|
)
|
|
227
227
|
|
|
228
228
|
_sql_constraints = [
|
|
229
|
-
(
|
|
229
|
+
(
|
|
230
|
+
"fiscal_tax_code_uniq",
|
|
231
|
+
"unique (name)",
|
|
232
|
+
"Tax already exists with this name!",
|
|
233
|
+
)
|
|
230
234
|
]
|
|
231
235
|
|
|
232
236
|
@api.model
|