odoo-addon-l10n-br-fiscal 16.0.2.0.0.2__py3-none-any.whl → 16.0.2.2.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.

Potentially problematic release.


This version of odoo-addon-l10n-br-fiscal might be problematic. Click here for more details.

Files changed (26) hide show
  1. odoo/addons/l10n_br_fiscal/README.rst +1 -1
  2. odoo/addons/l10n_br_fiscal/__manifest__.py +1 -1
  3. odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot +8 -8
  4. odoo/addons/l10n_br_fiscal/i18n/pt_BR.po +312 -858
  5. odoo/addons/l10n_br_fiscal/models/__init__.py +5 -14
  6. odoo/addons/l10n_br_fiscal/models/ncm.py +27 -0
  7. odoo/addons/l10n_br_fiscal/models/tax_definition.py +189 -1
  8. odoo/addons/l10n_br_fiscal/static/description/index.html +1 -1
  9. {odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info}/METADATA +2 -2
  10. {odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info}/RECORD +17 -26
  11. odoo/addons/l10n_br_fiscal/models/ncm_cest.py +0 -18
  12. odoo/addons/l10n_br_fiscal/models/ncm_nbm.py +0 -18
  13. odoo/addons/l10n_br_fiscal/models/ncm_tax_pis_cofins.py +0 -18
  14. odoo/addons/l10n_br_fiscal/models/tax_definition_benefit.py +0 -119
  15. odoo/addons/l10n_br_fiscal/models/tax_definition_cfop.py +0 -36
  16. odoo/addons/l10n_br_fiscal/models/tax_definition_company.py +0 -29
  17. odoo/addons/l10n_br_fiscal/models/tax_definition_icms.py +0 -36
  18. odoo/addons/l10n_br_fiscal/models/tax_definition_operation_line.py +0 -37
  19. odoo/addons/l10n_br_fiscal/models/tax_definition_partner_profile.py +0 -33
  20. /odoo/addons/l10n_br_fiscal/models/{document_fiscal_line_mixin.py → document_line_mixin.py} +0 -0
  21. /odoo/addons/l10n_br_fiscal/models/{document_fiscal_line_mixin_methods.py → document_line_mixin_methods.py} +0 -0
  22. /odoo/addons/l10n_br_fiscal/models/{document_fiscal_mixin.py → document_mixin.py} +0 -0
  23. /odoo/addons/l10n_br_fiscal/models/{document_fiscal_mixin_fields.py → document_mixin_fields.py} +0 -0
  24. /odoo/addons/l10n_br_fiscal/models/{document_fiscal_mixin_methods.py → document_mixin_methods.py} +0 -0
  25. {odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info}/WHEEL +0 -0
  26. {odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info → odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info}/top_level.txt +0 -0
@@ -3,12 +3,12 @@
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_fiscal_mixin_methods
7
- from . import document_fiscal_mixin_fields
8
- from . import document_fiscal_mixin
6
+ from . import document_mixin_methods
7
+ from . import document_mixin_fields
8
+ from . import document_mixin
9
9
  from . import document_move_mixin
10
- from . import document_fiscal_line_mixin_methods
11
- from . import document_fiscal_line_mixin
10
+ from . import document_line_mixin_methods
11
+ from . import document_line_mixin
12
12
  from . import invalidate_number
13
13
  from . import comment
14
14
  from . import ibpt
@@ -19,26 +19,17 @@ from . import nbs
19
19
  from . import service_type
20
20
  from . import ncm
21
21
  from . import nbm
22
- from . import ncm_nbm
23
22
  from . import cest
24
- from . import ncm_cest
25
23
  from . import tax_group
26
24
  from . import tax
27
25
  from . import tax_pis_cofins
28
26
  from . import tax_pis_cofins_base
29
27
  from . import tax_pis_cofins_credit
30
- from . import ncm_tax_pis_cofins
31
28
  from . import tax_ipi_control_seal
32
29
  from . import tax_ipi_guideline
33
30
  from . import tax_ipi_guideline_class
34
31
  from . import tax_estimate
35
32
  from . import tax_definition
36
- from . import tax_definition_benefit
37
- from . import tax_definition_company
38
- from . import tax_definition_cfop
39
- from . import tax_definition_icms
40
- from . import tax_definition_operation_line
41
- from . import tax_definition_partner_profile
42
33
  from . import icms_regulation
43
34
  from . import icms_relief
44
35
  from . import document_type
@@ -51,6 +51,33 @@ class Ncm(models.Model):
51
51
  string="Tax Definition",
52
52
  )
53
53
 
54
+ cest_ids = fields.Many2many(
55
+ comodel_name="l10n_br_fiscal.cest",
56
+ relation="fiscal_cest_ncm_rel",
57
+ column1="ncm_id",
58
+ column2="cest_id",
59
+ readonly=True,
60
+ string="CESTs",
61
+ )
62
+
63
+ nbm_ids = fields.Many2many(
64
+ comodel_name="l10n_br_fiscal.nbm",
65
+ relation="fiscal_nbm_ncm_rel",
66
+ column1="ncm_id",
67
+ column2="nbm_id",
68
+ readonly=True,
69
+ string="NBMs",
70
+ )
71
+
72
+ piscofins_ids = fields.Many2many(
73
+ comodel_name="l10n_br_fiscal.tax.pis.cofins",
74
+ relation="fiscal_pis_cofins_ncm_rel",
75
+ column1="ncm_id",
76
+ column2="piscofins_id",
77
+ readonly=True,
78
+ string="PIS/COFINS",
79
+ )
80
+
54
81
  _sql_constraints = [
55
82
  (
56
83
  "fiscal_ncm_code_exception_uniq",
@@ -2,7 +2,7 @@
2
2
  # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
3
3
 
4
4
  from odoo import _, api, fields, models
5
- from odoo.exceptions import UserError
5
+ from odoo.exceptions import UserError, ValidationError
6
6
 
7
7
  from .. import tools
8
8
  from ..constants.fiscal import (
@@ -12,6 +12,7 @@ from ..constants.fiscal import (
12
12
  OPERATION_STATE,
13
13
  OPERATION_STATE_DEFAULT,
14
14
  )
15
+ from ..constants.icms import ICMS_TAX_BENEFIT_TYPE
15
16
 
16
17
 
17
18
  class TaxDefinition(models.Model):
@@ -37,6 +38,19 @@ class TaxDefinition(models.Model):
37
38
 
38
39
  display_name = fields.Char(compute="_compute_display_name", store=True)
39
40
 
41
+ code = fields.Char(
42
+ size=8,
43
+ states={"draft": [("readonly", False)]},
44
+ )
45
+
46
+ name = fields.Char(
47
+ states={"draft": [("readonly", False)]},
48
+ )
49
+
50
+ description = fields.Text(
51
+ states={"draft": [("readonly", False)]},
52
+ )
53
+
40
54
  type_in_out = fields.Selection(
41
55
  selection=FISCAL_IN_OUT,
42
56
  string="Type",
@@ -234,6 +248,31 @@ class TaxDefinition(models.Model):
234
248
  domain="['|', ('cst_in_id', '=', cst_id), ('cst_out_id', '=', cst_id)]",
235
249
  )
236
250
 
251
+ fiscal_profile_id = fields.Many2one(
252
+ comodel_name="l10n_br_fiscal.partner.profile", string="Partner Profile"
253
+ )
254
+
255
+ fiscal_operation_line_id = fields.Many2one(
256
+ comodel_name="l10n_br_fiscal.operation.line", string="Operation Line"
257
+ )
258
+
259
+ icms_regulation_id = fields.Many2one(
260
+ comodel_name="l10n_br_fiscal.icms.regulation", string="ICMS Regulation"
261
+ )
262
+
263
+ cfop_id = fields.Many2one(comodel_name="l10n_br_fiscal.cfop", string="CFOP")
264
+
265
+ is_benefit = fields.Boolean(
266
+ string="Benefit?",
267
+ readonly=True,
268
+ states={"draft": [("readonly", False)]},
269
+ )
270
+
271
+ benefit_type = fields.Selection(
272
+ selection=ICMS_TAX_BENEFIT_TYPE,
273
+ states={"draft": [("readonly", False)]},
274
+ )
275
+
237
276
  def _get_search_domain(self, tax_definition):
238
277
  """Create domain to be used in contraints methods"""
239
278
  domain = [
@@ -243,6 +282,34 @@ class TaxDefinition(models.Model):
243
282
  ("tax_group_id", "=", tax_definition.tax_group_id.id),
244
283
  ("tax_id", "=", tax_definition.tax_id.id),
245
284
  ]
285
+ if tax_definition.icms_regulation_id:
286
+ domain.append(
287
+ ("icms_regulation_id", "=", tax_definition.icms_regulation_id.id),
288
+ )
289
+ if tax_definition.icms_regulation_id and tax_definition.is_benefit:
290
+ domain.append(
291
+ ("is_benefit", "=", tax_definition.is_benefit),
292
+ )
293
+ if tax_definition.ncm_ids:
294
+ domain.append(
295
+ ("ncm_ids", "in", tax_definition.ncm_ids.ids),
296
+ )
297
+ if tax_definition.cest_ids:
298
+ domain.append(
299
+ ("cest_ids", "in", tax_definition.cest_ids.ids),
300
+ )
301
+ if tax_definition.nbm_ids:
302
+ domain.append(
303
+ ("nbm_ids", "in", tax_definition.nbm_ids.ids),
304
+ )
305
+ if tax_definition.product_ids:
306
+ domain.append(
307
+ ("product_ids", "in", tax_definition.product_ids.ids),
308
+ )
309
+ if tax_definition.ncm_exception:
310
+ domain.append(
311
+ ("ncm_exception", "=", tax_definition.ncm_exception),
312
+ )
246
313
  return domain
247
314
 
248
315
  def action_review(self):
@@ -411,3 +478,124 @@ class TaxDefinition(models.Model):
411
478
  self.cst_id = self.tax_id.cst_out_id
412
479
  else:
413
480
  self.cst_id = self.tax_id.cst_in_id
481
+
482
+ @api.onchange("cfop_id")
483
+ def _onchange_cfop_id(self):
484
+ if self.cfop_id:
485
+ self.type_in_out = self.cfop_id.type_in_out
486
+
487
+ @api.constrains("fiscal_profile_id")
488
+ def _check_fiscal_profile_id(self):
489
+ for record in self:
490
+ if record.fiscal_profile_id:
491
+ domain = [
492
+ ("id", "!=", record.id),
493
+ ("fiscal_profile_id", "=", record.fiscal_profile_id.id),
494
+ ("tax_group_id", "=", record.tax_group_id.id),
495
+ ("tax_id", "=", record.tax_id.id),
496
+ ]
497
+
498
+ if record.env["l10n_br_fiscal.tax.definition"].search_count(domain):
499
+ raise ValidationError(
500
+ _(
501
+ "Tax Definition already exists "
502
+ "for this Partner Profile and Tax Group !"
503
+ )
504
+ )
505
+
506
+ @api.constrains("fiscal_operation_line_id")
507
+ def _check_fiscal_operation_line_id(self):
508
+ for record in self:
509
+ if record.fiscal_operation_line_id:
510
+ domain = [
511
+ ("id", "!=", record.id),
512
+ (
513
+ "fiscal_operation_line_id",
514
+ "=",
515
+ record.fiscal_operation_line_id.id,
516
+ ),
517
+ ("tax_group_id", "=", record.tax_group_id.id),
518
+ ("tax_id", "=", record.tax_id.id),
519
+ ]
520
+
521
+ if record.env["l10n_br_fiscal.tax.definition"].search_count(domain):
522
+ raise ValidationError(
523
+ _(
524
+ "Tax Definition already exists "
525
+ "for this Operation Line and Tax Group !"
526
+ )
527
+ )
528
+
529
+ @api.constrains("icms_regulation_id", "state_from_id")
530
+ def _check_icms(self):
531
+ for record in self:
532
+ if record.icms_regulation_id:
533
+ domain = self._get_search_domain(record)
534
+ if record.env["l10n_br_fiscal.tax.definition"].search_count(domain):
535
+ raise ValidationError(
536
+ _(
537
+ "Tax Definition already exists "
538
+ "for this ICMS and Tax Group !"
539
+ )
540
+ )
541
+
542
+ @api.constrains("company_id")
543
+ def _check_company_id(self):
544
+ for record in self:
545
+ if record.company_id:
546
+ domain = [
547
+ ("id", "!=", record.id),
548
+ ("company_id", "=", record.company_id.id),
549
+ ("tax_group_id", "=", record.tax_group_id.id),
550
+ ("tax_id", "=", record.tax_id.id),
551
+ ]
552
+
553
+ if record.env["l10n_br_fiscal.tax.definition"].search_count(domain):
554
+ raise ValidationError(
555
+ _(
556
+ "Tax Definition already exists "
557
+ "for this Company and Tax Group !"
558
+ )
559
+ )
560
+
561
+ @api.constrains("cfop_id")
562
+ def _check_cfop_id(self):
563
+ for record in self:
564
+ if record.cfop_id:
565
+ domain = [
566
+ ("id", "!=", record.id),
567
+ ("cfop_id", "=", record.cfop_id.id),
568
+ ("tax_group_id", "=", record.tax_group_id.id),
569
+ ("tax_id", "=", record.tax_id.id),
570
+ ]
571
+
572
+ if record.env["l10n_br_fiscal.tax.definition"].search_count(domain):
573
+ raise ValidationError(
574
+ _(
575
+ "Tax Definition already exists "
576
+ "for this CFOP and Tax Group !"
577
+ )
578
+ )
579
+
580
+ @api.constrains("is_benefit", "code", "benefit_type", "state_from_id")
581
+ def _check_tax_benefit_code(self):
582
+ for record in self:
583
+ if record.is_benefit:
584
+ if record.code:
585
+ if len(record.code) != 8:
586
+ raise ValidationError(
587
+ _("Tax benefit code must be 8 characters!")
588
+ )
589
+
590
+ if record.code[:2].upper() != record.state_from_id.code.upper():
591
+ raise ValidationError(
592
+ _("Tax benefit code must be start with state code!")
593
+ )
594
+
595
+ if record.code[3:4] != record.benefit_type:
596
+ raise ValidationError(
597
+ _(
598
+ "The tax benefit code must contain "
599
+ "the type of benefit!"
600
+ )
601
+ )
@@ -367,7 +367,7 @@ ul.auto-toc {
367
367
  !! This file is generated by oca-gen-addon-readme !!
368
368
  !! changes will be overwritten. !!
369
369
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:9165dc37b4b81b12aef106282b7c40de7a4aec9762d614daccf79e7d3588071c
370
+ !! source digest: sha256:8047868298765d6a178c5bb116844014390a0a03028f9972e69218161da8d11a
371
371
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
372
  <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/licence-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&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
373
  <p><img alt="image" src="https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_dashboard.png" /></p>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-l10n_br_fiscal
3
- Version: 16.0.2.0.0.2
3
+ Version: 16.0.2.2.0
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: erpbrasil.base>=2.3.0
6
6
  Requires-Dist: odoo-addon-l10n_br_base>=16.0dev,<16.1dev
@@ -25,7 +25,7 @@ Módulo fiscal brasileiro
25
25
  !! This file is generated by oca-gen-addon-readme !!
26
26
  !! changes will be overwritten. !!
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
- !! source digest: sha256:9165dc37b4b81b12aef106282b7c40de7a4aec9762d614daccf79e7d3588071c
28
+ !! source digest: sha256:8047868298765d6a178c5bb116844014390a0a03028f9972e69218161da8d11a
29
29
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30
30
 
31
31
  .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
@@ -1,6 +1,6 @@
1
- odoo/addons/l10n_br_fiscal/README.rst,sha256=GTNm5_gQbeacQ1fNLuiwBvBVOZYvvSAILkha6SdE8i4,13710
1
+ odoo/addons/l10n_br_fiscal/README.rst,sha256=R7e7e-6c8msha8mHHFC-bVSrmawWmnEDSWL1lerBgBQ,13710
2
2
  odoo/addons/l10n_br_fiscal/__init__.py,sha256=16Tdff74OkWmnKSfmV6qrNkgsK12gOtMMppwWmIAFIo,144
3
- odoo/addons/l10n_br_fiscal/__manifest__.py,sha256=Kuqw67Mwis17Ht0mmr11_buh-bq7yXqUxNlDqUYW5YY,3713
3
+ odoo/addons/l10n_br_fiscal/__manifest__.py,sha256=eyvj8CEUM2zl43ef43YrWnh0ouf79oHo0ooF9LM2LDM,3713
4
4
  odoo/addons/l10n_br_fiscal/hooks.py,sha256=cna_821w1vrwbfQd59YVY66cU9hhY0av2Zwzr5nHDVI,4825
5
5
  odoo/addons/l10n_br_fiscal/tools.py,sha256=TP8pifcnvh51FM70KxMxpbuU01gAx1BFTbaRZAvqyB0,2484
6
6
  odoo/addons/l10n_br_fiscal/constants/fiscal.py,sha256=ICWcrew-iUcWFgF4bLzdjUtbMdaejZ0AucwLFu5u1fo,14935
@@ -58,10 +58,10 @@ odoo/addons/l10n_br_fiscal/demo/partner_demo.xml,sha256=Nuw5PaZ4ernV9bqEP4oRcsmV
58
58
  odoo/addons/l10n_br_fiscal/demo/product_demo.xml,sha256=D61ewI_-geCkYnCVYN9nbflZlmX_j8xwE1UWVBTr5XE,83686
59
59
  odoo/addons/l10n_br_fiscal/demo/res_users_demo.xml,sha256=CL7BmZ1xnWSh6MSWxrG9dK9C1ObTYGvgj21vCcY4_qE,599
60
60
  odoo/addons/l10n_br_fiscal/demo/subsequent_operation_demo.xml,sha256=U-PJXr6uerccXT5dR8_KXKTu1YOahR0dKBcowlHgQIU,560
61
- odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot,sha256=aiGs0X5XJWacStqExM2-brJ_U8HwLJADctR7vnZSQGQ,430563
62
- odoo/addons/l10n_br_fiscal/i18n/pt_BR.po,sha256=7tFGEZl8BxS5WmtaPt7oHsAMecwZV8mPXSknMCfd32g,532187
61
+ odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot,sha256=eeJFDV7ZCznJEFELaclWAl3XEU4AuxUnA8wAuZN1L4I,430490
62
+ odoo/addons/l10n_br_fiscal/i18n/pt_BR.po,sha256=m4wjZ08XFk4uQO-SfC-fD9oEdjEwEd6B6zk0eK_2eOg,495670
63
63
  odoo/addons/l10n_br_fiscal/migrations/16.0.2.0.0/pre-migration.py,sha256=tw6d7NZrbOmjEaGHI9y-AMiNWNqf_mceTFqTFXuc6cU,687
64
- odoo/addons/l10n_br_fiscal/models/__init__.py,sha256=nVjvWmBJXwgAuXqGbUTUcNfSbu62_4GBeNn1hzPhKXM,2093
64
+ odoo/addons/l10n_br_fiscal/models/__init__.py,sha256=jA39miEtr6bRzl7PdmRmDKyk86wVtEpPqQ5edLZLOms,1749
65
65
  odoo/addons/l10n_br_fiscal/models/cest.py,sha256=FKWv89l6m9LiB-LPN789917BwCkWshSj2nlZ6yrNtpE,1955
66
66
  odoo/addons/l10n_br_fiscal/models/cfop.py,sha256=3MF857TFGVERQcwcDM97-PcM0Xes4uTfPsAPogZG7Q4,3263
67
67
  odoo/addons/l10n_br_fiscal/models/city_taxation_code.py,sha256=2uqZoJmhip1KcvliKsUYpfzB6RecAv9dC-7sFkRJVgc,1192
@@ -73,12 +73,12 @@ odoo/addons/l10n_br_fiscal/models/data_ncm_nbs_abstract.py,sha256=rHm2r3o0nwo3ZD
73
73
  odoo/addons/l10n_br_fiscal/models/data_product_abstract.py,sha256=wbc3exJQp33aYK8IOJ490JvDWBPCpU0NEkMR6YjaLfQ,793
74
74
  odoo/addons/l10n_br_fiscal/models/document.py,sha256=oEGED2A2pPzsvIwvfadowZC8MRIfeJSBrwy2tcYkXRM,20148
75
75
  odoo/addons/l10n_br_fiscal/models/document_email.py,sha256=ikGhCrTI18X01RszlCqO0tvhTOKr2d5KJLcj_QA1o_Y,2113
76
- odoo/addons/l10n_br_fiscal/models/document_fiscal_line_mixin.py,sha256=v9Wv0b206PBoUg5WmldqIGlpWwaulNmBxFO_3Ii9714,26240
77
- odoo/addons/l10n_br_fiscal/models/document_fiscal_line_mixin_methods.py,sha256=Q1yytUFJMTGt8PoLSPCrBk2sfXhEs4vVM-jnEP70jnU,32699
78
- odoo/addons/l10n_br_fiscal/models/document_fiscal_mixin.py,sha256=1Ep0ClxXpMTB_mzikF_3gdA3Nk6N2YxMR8yDq_QoOAg,282
79
- odoo/addons/l10n_br_fiscal/models/document_fiscal_mixin_fields.py,sha256=hYg2uwPsSPFKv10j9HoNaRWMkEC4Fw2tC5LHdZ1nrt4,11390
80
- odoo/addons/l10n_br_fiscal/models/document_fiscal_mixin_methods.py,sha256=RA1ciMP-G_8_X4DE1T8K9o-VoO3M5Zw1OAATqdui9x0,11650
81
76
  odoo/addons/l10n_br_fiscal/models/document_line.py,sha256=N_aSQZzXlpJpapdaDXA2Gv2xbCoqRO-nDhuh6LHu0eE,1398
77
+ odoo/addons/l10n_br_fiscal/models/document_line_mixin.py,sha256=v9Wv0b206PBoUg5WmldqIGlpWwaulNmBxFO_3Ii9714,26240
78
+ odoo/addons/l10n_br_fiscal/models/document_line_mixin_methods.py,sha256=Q1yytUFJMTGt8PoLSPCrBk2sfXhEs4vVM-jnEP70jnU,32699
79
+ odoo/addons/l10n_br_fiscal/models/document_mixin.py,sha256=1Ep0ClxXpMTB_mzikF_3gdA3Nk6N2YxMR8yDq_QoOAg,282
80
+ odoo/addons/l10n_br_fiscal/models/document_mixin_fields.py,sha256=hYg2uwPsSPFKv10j9HoNaRWMkEC4Fw2tC5LHdZ1nrt4,11390
81
+ odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py,sha256=RA1ciMP-G_8_X4DE1T8K9o-VoO3M5Zw1OAATqdui9x0,11650
82
82
  odoo/addons/l10n_br_fiscal/models/document_move_mixin.py,sha256=ulMK_FTA6AyxAC9CnduL3JtQr1hByn7B2D9ya19Tld4,7038
83
83
  odoo/addons/l10n_br_fiscal/models/document_related.py,sha256=rn3SK1BmrEYywquMRNodrwHdKa1PpZzEaqbyF9dw6EY,4181
84
84
  odoo/addons/l10n_br_fiscal/models/document_serie.py,sha256=Spe7kpgMBFGS_LBv3DpiqTC4WuafTK8LRv53GVR2UcM,4128
@@ -89,10 +89,7 @@ odoo/addons/l10n_br_fiscal/models/icms_relief.py,sha256=apls6lhlGASA93O_lNCterkZ
89
89
  odoo/addons/l10n_br_fiscal/models/invalidate_number.py,sha256=exacJKe7IhgLN4WMTmMek8pH6M62GRTFZHLN9y8AM_A,4795
90
90
  odoo/addons/l10n_br_fiscal/models/nbm.py,sha256=RNS3jvw1V1lorZoj6A0NS9QsQ_wSmv6k3w51ayTxATQ,1827
91
91
  odoo/addons/l10n_br_fiscal/models/nbs.py,sha256=tvRLJEHiLkylaeLvEUIRjcAQUncxz4p_bx7TRcqhE3g,900
92
- odoo/addons/l10n_br_fiscal/models/ncm.py,sha256=HwqJNk6j-X3r8zER8fl3EbXRw_v4A8um_G_rpWL9ue4,1786
93
- odoo/addons/l10n_br_fiscal/models/ncm_cest.py,sha256=iLLRZmdC5Gwr_t2kN6zoGGGRPx9nStPsTQezHc-jLW8,483
94
- odoo/addons/l10n_br_fiscal/models/ncm_nbm.py,sha256=fk7W0H01-feYQArK5pwBY284EE4yHGHQMks8z0DBgb0,478
95
- odoo/addons/l10n_br_fiscal/models/ncm_tax_pis_cofins.py,sha256=4zFN9sqhcffHQMPe0AAfipbqDkVAKhFLOwh0r71nums,514
92
+ odoo/addons/l10n_br_fiscal/models/ncm.py,sha256=VJc7srh09grBmk4oqtvkpKoI1_UIGmLAh5m1zno319s,2484
96
93
  odoo/addons/l10n_br_fiscal/models/operation.py,sha256=3pAWZrxUzf3u92jwPfdU6ynN1v6P6rpyhupubnDBQaA,7950
97
94
  odoo/addons/l10n_br_fiscal/models/operation_dashboard.py,sha256=xyNIQd5LK-Y_Y-475tRdLLjYP5gKDx9p08BM6KDhGlY,5682
98
95
  odoo/addons/l10n_br_fiscal/models/operation_document_type.py,sha256=ZZQYNCe7lof5kb26P8GztkvLR58cA6cr33NTiz7vQOU,1511
@@ -112,13 +109,7 @@ odoo/addons/l10n_br_fiscal/models/simplified_tax_range.py,sha256=2fhHkkI8uHc22Xt
112
109
  odoo/addons/l10n_br_fiscal/models/subsequent_document.py,sha256=Z_LfOOtlmr7Fr45fbTevTYyFcZr5dKsjSovLhKqjIOM,6793
113
110
  odoo/addons/l10n_br_fiscal/models/subsequent_operation.py,sha256=jkeo7KjR3NaXWv7O2Mujx7OmQE7S1lIN1zR10oFbjRk,1610
114
111
  odoo/addons/l10n_br_fiscal/models/tax.py,sha256=8GSop6Wr6m2cH9ihSyrH-pOKrDarqTbBCZDkSMivFz8,25795
115
- odoo/addons/l10n_br_fiscal/models/tax_definition.py,sha256=ZWFj-ZPZJ15pDVKGoFG0IOOHiotkpUdU0XoMThZd_xI,11943
116
- odoo/addons/l10n_br_fiscal/models/tax_definition_benefit.py,sha256=L8XEDIMydpa1AbcQVJdgD31sxajffoYH2rk8qGtIbbI,3821
117
- odoo/addons/l10n_br_fiscal/models/tax_definition_cfop.py,sha256=qOGXBetor0P4ogxy0aojrFH_jgIrX-58A2YsDTqYlYI,1277
118
- odoo/addons/l10n_br_fiscal/models/tax_definition_company.py,sha256=LtY3ntiB20bGZpS23NOwEYaJYD99CRMv5K_4jz2Gl4Y,1064
119
- odoo/addons/l10n_br_fiscal/models/tax_definition_icms.py,sha256=aDkOcBuMpXQwaR66JSb3jIvD7_3HyZokU0oqxgq52FU,1367
120
- odoo/addons/l10n_br_fiscal/models/tax_definition_operation_line.py,sha256=VASV5v9QVLfPczjt_mDGxImir1nOCBwqpMxL-C5VJY8,1383
121
- odoo/addons/l10n_br_fiscal/models/tax_definition_partner_profile.py,sha256=4RoUdwW0l-oTrkdPS6yqH70dJcdps3lVa2kHGKkcp8o,1252
112
+ odoo/addons/l10n_br_fiscal/models/tax_definition.py,sha256=AjjczuRdYlcsUecWIQY2oBwbzwqq25X4-zV9aZnLWEA,18947
122
113
  odoo/addons/l10n_br_fiscal/models/tax_estimate.py,sha256=9Hdy5Jznv9NRj2Fwr9TfI4Yn9r3iigRUs4BfBumOu64,1388
123
114
  odoo/addons/l10n_br_fiscal/models/tax_group.py,sha256=_zoRvgeuKof_3VMVzlkzKjfpTTmtY6ArPgNKbcc9jsQ,2120
124
115
  odoo/addons/l10n_br_fiscal/models/tax_ipi_control_seal.py,sha256=d3k_WZPWOJ09Wol0XSsOsXDGV40eIXz61oIbsqOwC18,310
@@ -139,7 +130,7 @@ odoo/addons/l10n_br_fiscal/readme/USAGE.md,sha256=Dw3uZaHJCUtV0xFq6VOQvF2G5fS_oS
139
130
  odoo/addons/l10n_br_fiscal/security/fiscal_security.xml,sha256=c4D3MoIsVnkZ1pDY_iw8jM2hBPz3VCkl5JKnm_hkau0,3700
140
131
  odoo/addons/l10n_br_fiscal/security/ir.model.access.csv,sha256=a1vKKQEUKVBbu6zfvlU3ayAP7VxFi3DABsg8TYH08BM,14591
141
132
  odoo/addons/l10n_br_fiscal/static/description/icon.png,sha256=Vd1HydYBoGCzNfCqxLlch2i2aeCcyxo-uRxWNp6oMbw,14836
142
- odoo/addons/l10n_br_fiscal/static/description/index.html,sha256=1FIs9Tt33iXPvpBPcJGDTBlVqlXZlCC7ZfnwlGFP_Kg,26274
133
+ odoo/addons/l10n_br_fiscal/static/description/index.html,sha256=kJ0iBqa0CdHdaNStzCVbIvitqhgUXHVqGif-px5w9qE,26274
143
134
  odoo/addons/l10n_br_fiscal/static/img/fiscal_dashboard.png,sha256=Q0fpqFNqEXh6m6E1aJfzSKV2tQ9lC1Y-ofUt6qxVupc,151668
144
135
  odoo/addons/l10n_br_fiscal/static/img/fiscal_line.png,sha256=S4Q4OGSzGnbfm4W5sQVvnD4uUzxS6tbJGT_gs3pB4K0,134276
145
136
  odoo/addons/l10n_br_fiscal/static/img/fiscal_operation.png,sha256=2614c1XjxwVznh707e9gujlUXg0ttutKD1ZiSMTqyv8,105871
@@ -209,7 +200,7 @@ odoo/addons/l10n_br_fiscal/views/uom_uom.xml,sha256=pqq2l0Vd8nz3oJBoe2GERQFMB3I5
209
200
  odoo/addons/l10n_br_fiscal/wizards/__init__.py,sha256=_sLxjpuJblbtSngjCsnMm7Iur5afF5xLEkAQLu4sy7I,69
210
201
  odoo/addons/l10n_br_fiscal/wizards/base_wizard_mixin.py,sha256=-r25us0vdNCSe11Gnf_tyPtN1qq-JKsL-fgWbPGktRo,2856
211
202
  odoo/addons/l10n_br_fiscal/wizards/document_status_wizard.py,sha256=KsYj5YWWePO7uk0psBsFdnCL71eLWhcyg7_c7J4G6vA,818
212
- odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info/METADATA,sha256=6ODYwGMqVEEmApBpERjoeQ3ZFiicFVLVtNMdYGVqxoQ,14383
213
- odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info/WHEEL,sha256=8Rd4enx1PCuyDWP4SABqO5Fv8rpaknqp3VzjoFFLa6c,83
214
- odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
215
- odoo_addon_l10n_br_fiscal-16.0.2.0.0.2.dist-info/RECORD,,
203
+ odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info/METADATA,sha256=oegkD9sEquPNoen3QyTugbJoa6PTC3XwHvlDQTLIdm0,14381
204
+ odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info/WHEEL,sha256=8Rd4enx1PCuyDWP4SABqO5Fv8rpaknqp3VzjoFFLa6c,83
205
+ odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
206
+ odoo_addon_l10n_br_fiscal-16.0.2.2.0.dist-info/RECORD,,
@@ -1,18 +0,0 @@
1
- # Copyright (C) 2019 Renato Lima - Akretion
2
- # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
3
-
4
- from odoo import fields, models
5
-
6
-
7
- # pylint: disable=consider-merging-classes-inherited
8
- class NCM(models.Model):
9
- _inherit = "l10n_br_fiscal.ncm"
10
-
11
- cest_ids = fields.Many2many(
12
- comodel_name="l10n_br_fiscal.cest",
13
- relation="fiscal_cest_ncm_rel",
14
- column1="ncm_id",
15
- column2="cest_id",
16
- readonly=True,
17
- string="CESTs",
18
- )
@@ -1,18 +0,0 @@
1
- # Copyright (C) 2020 Renato Lima - Akretion
2
- # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
3
-
4
- from odoo import fields, models
5
-
6
-
7
- # pylint: disable=consider-merging-classes-inherited
8
- class NCM(models.Model):
9
- _inherit = "l10n_br_fiscal.ncm"
10
-
11
- nbm_ids = fields.Many2many(
12
- comodel_name="l10n_br_fiscal.nbm",
13
- relation="fiscal_nbm_ncm_rel",
14
- column1="ncm_id",
15
- column2="nbm_id",
16
- readonly=True,
17
- string="NBMs",
18
- )
@@ -1,18 +0,0 @@
1
- # Copyright (C) 2019 Renato Lima - Akretion
2
- # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
3
-
4
- from odoo import fields, models
5
-
6
-
7
- # pylint: disable=consider-merging-classes-inherited
8
- class NCM(models.Model):
9
- _inherit = "l10n_br_fiscal.ncm"
10
-
11
- piscofins_ids = fields.Many2many(
12
- comodel_name="l10n_br_fiscal.tax.pis.cofins",
13
- relation="fiscal_pis_cofins_ncm_rel",
14
- column1="ncm_id",
15
- column2="piscofins_id",
16
- readonly=True,
17
- string="PIS/COFINS",
18
- )
@@ -1,119 +0,0 @@
1
- # Copyright (C) 2023 Renato Lima - Akretion
2
- # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
3
-
4
- from odoo import _, api, fields, models
5
- from odoo.exceptions import ValidationError
6
-
7
- from ..constants.icms import ICMS_TAX_BENEFIT_TYPE
8
-
9
-
10
- # pylint: disable=consider-merging-classes-inherited
11
- class TaxDefinitionBenefit(models.Model):
12
- _inherit = "l10n_br_fiscal.tax.definition"
13
-
14
- is_benefit = fields.Boolean(
15
- string="Benefit?",
16
- readonly=True,
17
- states={"draft": [("readonly", False)]},
18
- )
19
-
20
- code = fields.Char(
21
- size=8,
22
- states={"draft": [("readonly", False)]},
23
- )
24
-
25
- name = fields.Char(
26
- states={"draft": [("readonly", False)]},
27
- )
28
-
29
- description = fields.Text(
30
- states={"draft": [("readonly", False)]},
31
- )
32
-
33
- benefit_type = fields.Selection(
34
- selection=ICMS_TAX_BENEFIT_TYPE,
35
- states={"draft": [("readonly", False)]},
36
- )
37
-
38
- # Anexo RICMS
39
- # Informar o anexo do Regulamento do ICMS.
40
-
41
- # Artigo
42
- # Informar o artigo referente ao enquadramento legal da operação
43
- # ou prestação geradora de crédito acumulado.
44
-
45
- # Inciso
46
- # Informar o inciso referente ao enquadramento legal da operação
47
- # ou prestação geradora de crédito acumulado.
48
-
49
- # Alínea
50
- # Alínea referente ao enquadramento legal da operação ou prestação
51
- # geradora de crédito acumulado.
52
-
53
- # Parágrafo
54
- # Informar o parágrafo referente ao enquadramento legal da operação
55
- # ou prestação geradora de crédito acumulado.
56
-
57
- # Item RICMS
58
- # Informar o item do Regulamento do ICMS.
59
-
60
- # Letra RICMS
61
- # Informar a letra do Regulamento do ICMS.
62
-
63
- def _get_search_domain(self, tax_definition):
64
- """Create domain to be used in contraints methods"""
65
- domain = super()._get_search_domain(tax_definition)
66
- if tax_definition.icms_regulation_id and tax_definition.is_benefit:
67
- domain.append(
68
- ("is_benefit", "=", tax_definition.is_benefit),
69
- )
70
-
71
- if tax_definition.ncm_ids:
72
- domain.append(
73
- ("ncm_ids", "in", tax_definition.ncm_ids.ids),
74
- )
75
-
76
- if tax_definition.cest_ids:
77
- domain.append(
78
- ("cest_ids", "in", tax_definition.cest_ids.ids),
79
- )
80
-
81
- if tax_definition.nbm_ids:
82
- domain.append(
83
- ("nbm_ids", "in", tax_definition.nbm_ids.ids),
84
- )
85
-
86
- if tax_definition.product_ids:
87
- domain.append(
88
- ("product_ids", "in", tax_definition.product_ids.ids),
89
- )
90
-
91
- if tax_definition.ncm_exception:
92
- domain.append(
93
- ("ncm_exception", "=", tax_definition.ncm_exception),
94
- )
95
-
96
- return domain
97
-
98
- @api.constrains("is_benefit", "code", "benefit_type", "state_from_id")
99
- def _check_tax_benefit_code(self):
100
- for record in self:
101
- if record.is_benefit:
102
- if record.code:
103
- if len(record.code) != 8:
104
- raise ValidationError(
105
- _("Tax benefit code must be 8 characters!")
106
- )
107
-
108
- if record.code[:2].upper() != record.state_from_id.code.upper():
109
- raise ValidationError(
110
- _("Tax benefit code must be start with state code!")
111
- )
112
-
113
- if record.code[3:4] != record.benefit_type:
114
- raise ValidationError(
115
- _(
116
- "The tax benefit code must contain "
117
- "the type of benefit!"
118
- )
119
- )
@@ -1,36 +0,0 @@
1
- # Copyright (C) 2019 Renato Lima - Akretion
2
- # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
3
-
4
- from odoo import _, api, fields, models
5
- from odoo.exceptions import ValidationError
6
-
7
-
8
- # pylint: disable=consider-merging-classes-inherited
9
- class TaxDefinitionCFOP(models.Model):
10
- _inherit = "l10n_br_fiscal.tax.definition"
11
-
12
- cfop_id = fields.Many2one(comodel_name="l10n_br_fiscal.cfop", string="CFOP")
13
-
14
- @api.constrains("cfop_id")
15
- def _check_cfop_id(self):
16
- for record in self:
17
- if record.cfop_id:
18
- domain = [
19
- ("id", "!=", record.id),
20
- ("cfop_id", "=", record.cfop_id.id),
21
- ("tax_group_id", "=", record.tax_group_id.id),
22
- ("tax_id", "=", record.tax_id.id),
23
- ]
24
-
25
- if record.env["l10n_br_fiscal.tax.definition"].search_count(domain):
26
- raise ValidationError(
27
- _(
28
- "Tax Definition already exists "
29
- "for this CFOP and Tax Group !"
30
- )
31
- )
32
-
33
- @api.onchange("cfop_id")
34
- def _onchange_cfop_id(self):
35
- if self.cfop_id:
36
- self.type_in_out = self.cfop_id.type_in_out