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.
Files changed (90) hide show
  1. odoo/addons/l10n_br_fiscal/README.rst +10 -10
  2. odoo/addons/l10n_br_fiscal/__init__.py +2 -3
  3. odoo/addons/l10n_br_fiscal/__manifest__.py +3 -7
  4. odoo/addons/l10n_br_fiscal/constants/fiscal.py +0 -66
  5. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.cest.csv +983 -1043
  6. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.cst.csv +0 -58
  7. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.csv +0 -31
  8. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.group.csv +0 -3
  9. odoo/addons/l10n_br_fiscal/data/product_data.xml +2 -2
  10. odoo/addons/l10n_br_fiscal/demo/fiscal_document_demo.xml +88 -0
  11. odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot +28 -1031
  12. odoo/addons/l10n_br_fiscal/i18n/pt_BR.po +1078 -1197
  13. odoo/addons/l10n_br_fiscal/models/__init__.py +2 -2
  14. odoo/addons/l10n_br_fiscal/models/comment.py +20 -18
  15. odoo/addons/l10n_br_fiscal/models/data_abstract.py +11 -12
  16. odoo/addons/l10n_br_fiscal/models/document.py +4 -30
  17. odoo/addons/l10n_br_fiscal/models/document_line.py +3 -16
  18. odoo/addons/l10n_br_fiscal/models/document_line_mixin.py +27 -1048
  19. odoo/addons/l10n_br_fiscal/models/document_line_mixin_methods.py +883 -0
  20. odoo/addons/l10n_br_fiscal/models/document_mixin.py +3 -241
  21. odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py +239 -0
  22. odoo/addons/l10n_br_fiscal/models/document_serie.py +5 -3
  23. odoo/addons/l10n_br_fiscal/models/invalidate_number.py +0 -6
  24. odoo/addons/l10n_br_fiscal/models/operation.py +0 -11
  25. odoo/addons/l10n_br_fiscal/models/operation_dashboard.py +2 -3
  26. odoo/addons/l10n_br_fiscal/models/operation_line.py +0 -28
  27. odoo/addons/l10n_br_fiscal/models/partner_profile.py +0 -6
  28. odoo/addons/l10n_br_fiscal/models/product_template.py +0 -4
  29. odoo/addons/l10n_br_fiscal/models/res_company.py +0 -18
  30. odoo/addons/l10n_br_fiscal/models/res_partner.py +0 -17
  31. odoo/addons/l10n_br_fiscal/models/simplified_tax_range.py +0 -8
  32. odoo/addons/l10n_br_fiscal/models/tax_definition.py +2 -35
  33. odoo/addons/l10n_br_fiscal/security/ir.model.access.csv +0 -6
  34. odoo/addons/l10n_br_fiscal/static/description/index.html +8 -8
  35. odoo/addons/l10n_br_fiscal/tests/__init__.py +0 -1
  36. odoo/addons/l10n_br_fiscal/tests/test_cnae.py +2 -3
  37. odoo/addons/l10n_br_fiscal/tests/test_document_edition.py +10 -37
  38. odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py +28 -4
  39. odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_nfse.py +4 -0
  40. odoo/addons/l10n_br_fiscal/tests/test_service_type.py +2 -3
  41. odoo/addons/l10n_br_fiscal/tests/test_tax_benefit.py +4 -2
  42. odoo/addons/l10n_br_fiscal/views/cest_view.xml +2 -2
  43. odoo/addons/l10n_br_fiscal/views/cnae_view.xml +0 -1
  44. odoo/addons/l10n_br_fiscal/views/document_line_mixin_view.xml +170 -243
  45. odoo/addons/l10n_br_fiscal/views/document_line_view.xml +7 -11
  46. odoo/addons/l10n_br_fiscal/views/document_related_view.xml +15 -11
  47. odoo/addons/l10n_br_fiscal/views/document_serie_view.xml +1 -1
  48. odoo/addons/l10n_br_fiscal/views/document_view.xml +32 -44
  49. odoo/addons/l10n_br_fiscal/views/invalidate_number_view.xml +12 -12
  50. odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_action.xml +0 -31
  51. odoo/addons/l10n_br_fiscal/views/l10n_br_fiscal_menu.xml +2 -18
  52. odoo/addons/l10n_br_fiscal/views/nbm_view.xml +2 -2
  53. odoo/addons/l10n_br_fiscal/views/nbs_view.xml +1 -1
  54. odoo/addons/l10n_br_fiscal/views/ncm_view.xml +3 -3
  55. odoo/addons/l10n_br_fiscal/views/operation_dashboard_view.xml +27 -18
  56. odoo/addons/l10n_br_fiscal/views/operation_line_view.xml +2 -5
  57. odoo/addons/l10n_br_fiscal/views/operation_view.xml +39 -16
  58. odoo/addons/l10n_br_fiscal/views/partner_profile_view.xml +3 -6
  59. odoo/addons/l10n_br_fiscal/views/product_genre_view.xml +2 -2
  60. odoo/addons/l10n_br_fiscal/views/product_product_view.xml +17 -45
  61. odoo/addons/l10n_br_fiscal/views/product_template_view.xml +16 -35
  62. odoo/addons/l10n_br_fiscal/views/res_company_view.xml +17 -18
  63. odoo/addons/l10n_br_fiscal/views/res_config_settings_view.xml +37 -98
  64. odoo/addons/l10n_br_fiscal/views/res_partner_view.xml +3 -13
  65. odoo/addons/l10n_br_fiscal/views/service_type_view.xml +2 -3
  66. odoo/addons/l10n_br_fiscal/views/tax_definition_view.xml +60 -29
  67. odoo/addons/l10n_br_fiscal/views/tax_estimate_view.xml +2 -2
  68. odoo/addons/l10n_br_fiscal/views/tax_group_view.xml +4 -4
  69. odoo/addons/l10n_br_fiscal/views/tax_view.xml +14 -16
  70. odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.py +1 -1
  71. odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.xml +2 -5
  72. {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
  73. {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
  74. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.operation.indicator.csv +0 -27
  75. odoo/addons/l10n_br_fiscal/data/l10n_br_fiscal.tax.classification.csv +0 -163
  76. odoo/addons/l10n_br_fiscal/migrations/16.0.14.0.5/pre-migration.py +0 -15
  77. odoo/addons/l10n_br_fiscal/migrations/16.0.2.0.0/pre-migration.py +0 -25
  78. odoo/addons/l10n_br_fiscal/migrations/16.0.2.15.0/pre-migration.py +0 -19
  79. odoo/addons/l10n_br_fiscal/migrations/16.0.4.0.0/pre-migration.py +0 -220
  80. odoo/addons/l10n_br_fiscal/migrations/16.0.5.0.0/pre-migration.py +0 -33
  81. odoo/addons/l10n_br_fiscal/migrations/16.0.5.2.0/pre-migration.py +0 -21
  82. odoo/addons/l10n_br_fiscal/models/operation_indicator.py +0 -58
  83. odoo/addons/l10n_br_fiscal/models/tax_classification.py +0 -81
  84. odoo/addons/l10n_br_fiscal/tests/test_tax_classification.py +0 -110
  85. odoo/addons/l10n_br_fiscal/views/operation_indicator_view.xml +0 -75
  86. odoo/addons/l10n_br_fiscal/views/tax_classification.xml +0 -110
  87. /odoo/addons/l10n_br_fiscal/migrations/{16.0.13.0.0 → 17.0.2.0.0}/pre-migration.py +0 -0
  88. /odoo/addons/l10n_br_fiscal/migrations/{16.0.14.0.0 → 17.0.3.0.0}/pre-migration.py +0 -0
  89. {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
  90. {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.expression import AND
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
- ("comment", "ilike", "%" + name + "%"),
73
- ("name", operator, name),
74
- ]
75
- return super()._name_search(
76
- args=AND([args, domain]),
77
- operator=operator,
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
- args=args,
83
+ domain=domain,
84
84
  operator=operator,
85
85
  limit=limit,
86
- name_get_uid=name_get_uid,
86
+ order=order,
87
87
  )
88
88
 
89
- def name_get(self):
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
- return [(r.id, f"{truncate_name(r.name)}") for r in self]
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
- args or [],
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
- expression.AND([domain, args]),
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, args=args, operator=operator, limit=limit, name_get_uid=name_get_uid
114
+ name, domain=domain, operator=operator, limit=limit, order=order
118
115
  )
119
116
 
120
- def name_get(self):
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
- 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]
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 name_get(self):
392
- res = []
365
+ def _compute_display_name(self):
393
366
  for record in self:
394
- res.append((record.id, record._compute_document_name()))
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
- comodel_name="res.partner",
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(