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.

Files changed (113) hide show
  1. odoo/addons/l10n_br_fiscal/README.rst +10 -10
  2. odoo/addons/l10n_br_fiscal/__init__.py +3 -3
  3. odoo/addons/l10n_br_fiscal/__manifest__.py +3 -2
  4. odoo/addons/l10n_br_fiscal/constants/fiscal.py +5 -6
  5. odoo/addons/l10n_br_fiscal/data/ir_cron.xml +19 -34
  6. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_cfop_data.xml +0 -2
  7. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_data.xml +6 -8
  8. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_icms_tax_definition_data.xml +4055 -4033
  9. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_server_action.xml +0 -2
  10. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal_tax_icms_data.xml +54 -50
  11. odoo/addons/l10n_br_fiscal/data/operation_data.xml +197 -181
  12. odoo/addons/l10n_br_fiscal/data/product_data.xml +2 -4
  13. odoo/addons/l10n_br_fiscal/data/res_partner_data.xml +0 -2
  14. odoo/addons/l10n_br_fiscal/data/simplified_tax_data.xml +0 -2
  15. odoo/addons/l10n_br_fiscal/data/uom_data.xml +0 -2
  16. odoo/addons/l10n_br_fiscal/demo/city_taxation_code_demo.xml +0 -2
  17. odoo/addons/l10n_br_fiscal/demo/company_demo.xml +0 -3
  18. odoo/addons/l10n_br_fiscal/demo/fiscal_document_demo.xml +37 -49
  19. odoo/addons/l10n_br_fiscal/demo/fiscal_document_nfse_demo.xml +0 -1
  20. odoo/addons/l10n_br_fiscal/demo/fiscal_operation_demo.xml +0 -2
  21. odoo/addons/l10n_br_fiscal/demo/icms_tax_definition_demo.xml +0 -2
  22. odoo/addons/l10n_br_fiscal/demo/partner_demo.xml +0 -2
  23. odoo/addons/l10n_br_fiscal/demo/product_demo.xml +0 -1705
  24. odoo/addons/l10n_br_fiscal/demo/res_users_demo.xml +0 -2
  25. odoo/addons/l10n_br_fiscal/hooks.py +68 -0
  26. odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot +50 -592
  27. odoo/addons/l10n_br_fiscal/models/cfop.py +1 -1
  28. odoo/addons/l10n_br_fiscal/models/cnae.py +2 -2
  29. odoo/addons/l10n_br_fiscal/models/comment.py +14 -29
  30. odoo/addons/l10n_br_fiscal/models/cst.py +2 -2
  31. odoo/addons/l10n_br_fiscal/models/data_abstract.py +19 -33
  32. odoo/addons/l10n_br_fiscal/models/document.py +2 -5
  33. odoo/addons/l10n_br_fiscal/models/document_mixin.py +0 -2
  34. odoo/addons/l10n_br_fiscal/models/document_serie.py +6 -4
  35. odoo/addons/l10n_br_fiscal/models/document_type.py +0 -1
  36. odoo/addons/l10n_br_fiscal/models/ibpt.py +1 -1
  37. odoo/addons/l10n_br_fiscal/models/invalidate_number.py +6 -13
  38. odoo/addons/l10n_br_fiscal/models/legal_nature.py +1 -1
  39. odoo/addons/l10n_br_fiscal/models/nbm.py +2 -2
  40. odoo/addons/l10n_br_fiscal/models/nbs.py +4 -4
  41. odoo/addons/l10n_br_fiscal/models/ncm.py +4 -4
  42. odoo/addons/l10n_br_fiscal/models/operation.py +2 -13
  43. odoo/addons/l10n_br_fiscal/models/operation_dashboard.py +1 -1
  44. odoo/addons/l10n_br_fiscal/models/operation_line.py +1 -1
  45. odoo/addons/l10n_br_fiscal/models/partner_profile.py +1 -1
  46. odoo/addons/l10n_br_fiscal/models/tax.py +5 -1
  47. odoo/addons/l10n_br_fiscal/models/tax_definition.py +2 -35
  48. odoo/addons/l10n_br_fiscal/models/tax_group.py +6 -6
  49. odoo/addons/l10n_br_fiscal/models/tax_pis_cofins.py +4 -4
  50. odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_base.py +2 -2
  51. odoo/addons/l10n_br_fiscal/models/tax_pis_cofins_credit.py +2 -2
  52. odoo/addons/l10n_br_fiscal/security/fiscal_security.xml +0 -2
  53. odoo/addons/l10n_br_fiscal/static/description/index.html +8 -8
  54. odoo/addons/l10n_br_fiscal/tests/test_cnae.py +2 -3
  55. odoo/addons/l10n_br_fiscal/tests/test_document_edition.py +35 -36
  56. odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py +3 -2
  57. odoo/addons/l10n_br_fiscal/tests/test_service_type.py +2 -3
  58. odoo/addons/l10n_br_fiscal/views/cest_view.xml +4 -4
  59. odoo/addons/l10n_br_fiscal/views/cfop_view.xml +2 -2
  60. odoo/addons/l10n_br_fiscal/views/city_taxation_code.xml +2 -2
  61. odoo/addons/l10n_br_fiscal/views/cnae_view.xml +2 -3
  62. odoo/addons/l10n_br_fiscal/views/comment_view.xml +2 -2
  63. odoo/addons/l10n_br_fiscal/views/cst_view.xml +2 -2
  64. odoo/addons/l10n_br_fiscal/views/document_line_mixin_view.xml +170 -140
  65. odoo/addons/l10n_br_fiscal/views/document_line_view.xml +7 -7
  66. odoo/addons/l10n_br_fiscal/views/document_related_view.xml +17 -13
  67. odoo/addons/l10n_br_fiscal/views/document_serie_view.xml +3 -3
  68. odoo/addons/l10n_br_fiscal/views/document_type_view.xml +2 -2
  69. odoo/addons/l10n_br_fiscal/views/document_view.xml +37 -37
  70. odoo/addons/l10n_br_fiscal/views/icms_regulation_view.xml +2 -2
  71. odoo/addons/l10n_br_fiscal/views/icms_relief_view.xml +2 -2
  72. odoo/addons/l10n_br_fiscal/views/invalidate_number_view.xml +14 -14
  73. odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_action.xml +36 -36
  74. odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml +2 -2
  75. odoo/addons/l10n_br_fiscal/views/legal_nature_view.xml +2 -2
  76. odoo/addons/l10n_br_fiscal/views/nbm_view.xml +7 -7
  77. odoo/addons/l10n_br_fiscal/views/nbs_view.xml +6 -6
  78. odoo/addons/l10n_br_fiscal/views/ncm_view.xml +8 -8
  79. odoo/addons/l10n_br_fiscal/views/operation_dashboard_view.xml +33 -25
  80. odoo/addons/l10n_br_fiscal/views/operation_line_view.xml +4 -4
  81. odoo/addons/l10n_br_fiscal/views/operation_view.xml +43 -20
  82. odoo/addons/l10n_br_fiscal/views/partner_profile_view.xml +5 -8
  83. odoo/addons/l10n_br_fiscal/views/product_genre_view.xml +4 -4
  84. odoo/addons/l10n_br_fiscal/views/product_product_view.xml +17 -20
  85. odoo/addons/l10n_br_fiscal/views/product_template_view.xml +16 -13
  86. odoo/addons/l10n_br_fiscal/views/res_company_view.xml +17 -12
  87. odoo/addons/l10n_br_fiscal/views/res_config_settings_view.xml +44 -105
  88. odoo/addons/l10n_br_fiscal/views/res_partner_view.xml +3 -3
  89. odoo/addons/l10n_br_fiscal/views/service_type_view.xml +7 -8
  90. odoo/addons/l10n_br_fiscal/views/simplified_tax_range_view.xml +2 -2
  91. odoo/addons/l10n_br_fiscal/views/simplified_tax_view.xml +4 -4
  92. odoo/addons/l10n_br_fiscal/views/tax_definition_view.xml +64 -33
  93. odoo/addons/l10n_br_fiscal/views/tax_estimate_view.xml +4 -4
  94. odoo/addons/l10n_br_fiscal/views/tax_group_view.xml +6 -6
  95. odoo/addons/l10n_br_fiscal/views/tax_ipi_control_seal_view.xml +2 -2
  96. odoo/addons/l10n_br_fiscal/views/tax_ipi_guideline_class_view.xml +2 -2
  97. odoo/addons/l10n_br_fiscal/views/tax_ipi_guideline_view.xml +2 -2
  98. odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_base_view.xml +2 -2
  99. odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_credit_view.xml +2 -2
  100. odoo/addons/l10n_br_fiscal/views/tax_pis_cofins_view.xml +2 -2
  101. odoo/addons/l10n_br_fiscal/views/tax_view.xml +16 -18
  102. odoo/addons/l10n_br_fiscal/views/uom_uom.xml +2 -2
  103. odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.py +1 -1
  104. odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.xml +2 -5
  105. {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
  106. {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
  107. odoo/addons/l10n_br_fiscal/migrations/16.0.2.0.0/pre-migration.py +0 -25
  108. odoo/addons/l10n_br_fiscal/migrations/16.0.2.15.0/pre-migration.py +0 -19
  109. odoo/addons/l10n_br_fiscal/migrations/16.0.4.0.0/pre-migration.py +0 -220
  110. odoo/addons/l10n_br_fiscal/migrations/16.0.5.0.0/pre-migration.py +0 -33
  111. odoo/addons/l10n_br_fiscal/migrations/16.0.5.2.0/pre-migration.py +0 -21
  112. {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
  113. {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
@@ -195,6 +195,6 @@ class Cfop(models.Model):
195
195
  (
196
196
  "fiscal_cfop_code_uniq",
197
197
  "unique (code)",
198
- "CFOP already exists with this code !",
198
+ "CFOP already exists with this code!",
199
199
  )
200
200
  ]
@@ -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 _, fields, models
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
- _("CNAE already exists with this code !"),
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, tools
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 _name_search(
66
- self, name, args=None, operator="ilike", limit=100, name_get_uid=None
67
- ):
68
- args = args or []
69
- if name:
70
- domain = [
71
- "|",
72
- ("comment", "ilike", "%" + name + "%"),
73
- ("name", operator, name),
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
- return [(r.id, f"{truncate_name(r.name)}") for r in self]
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(tools.ustr(record.comment))
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 _, fields, models
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
- _("CST already exists with this code !"),
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 `name_get`
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 _name_search(
93
- self, name, args=None, operator="ilike", limit=100, name_get_uid=None
94
- ):
91
+ def _search_display_name(self, operator, value):
92
+ name = value or ""
95
93
  if operator == "ilike" and not (name or "").strip():
96
- domain = []
94
+ return []
97
95
  elif operator in ("ilike", "like", "=", "=like", "=ilike"):
98
- domain = expression.AND(
99
- [
100
- args or [],
101
- [
102
- "|",
103
- "|",
104
- ("name", operator, name),
105
- ("code", operator, name),
106
- ("code_unmasked", "ilike", name + "%"),
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
- if self._context.get("show_code_only"):
127
- return [(r.id, f"{r.code}") for r in self]
128
-
129
- return [(r.id, f"{r.code} - {truncate_name(r.name)}") for r in self]
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 name_get(self):
365
- res = []
363
+ def _compute_display_name(self):
366
364
  for record in self:
367
- res.append((record.id, record._compute_document_name()))
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, unaccent=False)
19
+ code = fields.Char(size=3)
20
20
 
21
- name = fields.Char(required=True, unaccent=False)
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
- def name_get(self):
82
- return [(r.id, f"{r.name}") for r in self]
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()
@@ -14,7 +14,6 @@ class DocumentType(models.Model):
14
14
 
15
15
  code = fields.Char(
16
16
  size=8,
17
- unaccent=False,
18
17
  )
19
18
 
20
19
  name = fields.Char(
@@ -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(_("Error in the request: {}").format(e)) from e
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", _("Draft")),
78
- ("done", _("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 = "{type}/({serie}): {start} - {end}".format(
109
- type=record.document_type_id.type,
110
- serie=record.document_serie_id.name,
111
- start=record.number_start,
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):
@@ -15,6 +15,6 @@ class LegalNature(models.Model):
15
15
  (
16
16
  "fiscal_legal_nature_code_uniq",
17
17
  "unique (code)",
18
- "Legal Nature already exists with this code !",
18
+ "Legal Nature already exists with this code!",
19
19
  )
20
20
  ]
@@ -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, unaccent=False)
14
+ code = fields.Char(size=12)
15
15
 
16
- code_unmasked = fields.Char(size=10, unaccent=False)
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 _, fields, models
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, unaccent=False)
18
+ code = fields.Char(size=12)
19
19
 
20
- code_unmasked = fields.Char(size=10, unaccent=False)
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
- _("NBS already exists with this code !"),
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 _, fields, models
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, unaccent=False)
19
+ code = fields.Char(size=10)
20
20
 
21
- code_unmasked = fields.Char(size=8, unaccent=False)
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
- _("NCM already exists with this code !"),
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", _("Sale Price")), ("cost_price", _("Cost 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
- _("Fiscal Operation already exists with this code !"),
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.%s" % action_name).read()
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
- _("Fiscal Operation Line already exists with this name !"),
142
+ "Fiscal Operation Line already exists with this name!",
143
143
  )
144
144
  ]
145
145
 
@@ -63,7 +63,7 @@ class PartnerProfile(models.Model):
63
63
  (
64
64
  "fiscal_partner_profile_code_uniq",
65
65
  "unique (code)",
66
- "Fiscal Partner Profile already exists with this code !",
66
+ "Fiscal Partner Profile already exists with this code!",
67
67
  )
68
68
  ]
69
69
 
@@ -226,7 +226,11 @@ class Tax(models.Model):
226
226
  )
227
227
 
228
228
  _sql_constraints = [
229
- ("fiscal_tax_code_uniq", "unique (name)", "Tax already exists with this name !")
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