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

@@ -11,7 +11,7 @@ Módulo fiscal brasileiro
11
11
  !! This file is generated by oca-gen-addon-readme !!
12
12
  !! changes will be overwritten. !!
13
13
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
- !! source digest: sha256:34b2c11494e5932d480130048fb1335afb329a496a4fa5e8cbec1bc11d39d3d0
14
+ !! source digest: sha256:4e8525f529edd42318b594e54c31e6c4c3f77420d011c880c3b8b1679664e667
15
15
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
16
 
17
17
  .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
@@ -10,7 +10,7 @@
10
10
  "maintainers": ["renatonlima", "rvalyi"],
11
11
  "website": "https://github.com/OCA/l10n-brazil",
12
12
  "development_status": "Production/Stable",
13
- "version": "18.0.3.2.0",
13
+ "version": "18.0.3.3.0",
14
14
  "depends": [
15
15
  "product",
16
16
  "uom_alias",
@@ -336,6 +336,11 @@ msgstr ""
336
336
  msgid "A CST is necessary to create fiscal operations for your fiscal moves."
337
337
  msgstr ""
338
338
 
339
+ #. module: l10n_br_fiscal
340
+ #: model:ir.model.constraint,message:l10n_br_fiscal.constraint_l10n_br_fiscal_document_serie_document_serie_unique
341
+ msgid "A Fiscal Document Serie already exists for this document type."
342
+ msgstr ""
343
+
339
344
  #. module: l10n_br_fiscal
340
345
  #: model_terms:ir.actions.act_window,help:l10n_br_fiscal.legal_nature_action
341
346
  msgid ""
@@ -8096,6 +8101,20 @@ msgstr ""
8096
8101
  msgid "You can delete only draft Invalidate Number Range !"
8097
8102
  msgstr ""
8098
8103
 
8104
+ #. module: l10n_br_fiscal
8105
+ #. odoo-python
8106
+ #: code:addons/l10n_br_fiscal/models/document_serie.py:0
8107
+ msgid ""
8108
+ "You cannot change the code of a document serie %(name)s that is already in "
8109
+ "use."
8110
+ msgstr ""
8111
+
8112
+ #. module: l10n_br_fiscal
8113
+ #. odoo-python
8114
+ #: code:addons/l10n_br_fiscal/models/document_serie.py:0
8115
+ msgid "You cannot change the internal sequence."
8116
+ msgstr ""
8117
+
8099
8118
  #. module: l10n_br_fiscal
8100
8119
  #. odoo-python
8101
8120
  #: code:addons/l10n_br_fiscal/models/operation_line.py:0
@@ -88,7 +88,11 @@ class FiscalDocumentMixinMethods(models.AbstractModel):
88
88
  @api.depends("document_type_id", "issuer")
89
89
  def _compute_document_serie_id(self):
90
90
  for doc in self:
91
- if doc.document_type_id and doc.issuer == DOCUMENT_ISSUER_COMPANY:
91
+ if (
92
+ not doc.document_serie_id
93
+ and doc.document_type_id
94
+ and doc.issuer == DOCUMENT_ISSUER_COMPANY
95
+ ):
92
96
  doc.document_serie_id = doc.document_type_id.get_document_serie(
93
97
  doc.company_id, doc.fiscal_operation_id
94
98
  )
@@ -3,11 +3,13 @@
3
3
  # License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
4
4
 
5
5
  from odoo import _, api, fields, models
6
+ from odoo.exceptions import ValidationError
6
7
 
7
8
  from ..constants.fiscal import (
8
9
  DOCUMENT_ISSUER_COMPANY,
9
10
  FISCAL_IN_OUT,
10
11
  FISCAL_IN_OUT_DEFAULT,
12
+ SITUACAO_EDOC_EM_DIGITACAO,
11
13
  )
12
14
 
13
15
 
@@ -55,6 +57,14 @@ class DocumentSerie(models.Model):
55
57
  string="Invalidate Number Range",
56
58
  )
57
59
 
60
+ _sql_constraints = [
61
+ (
62
+ "document_serie_unique",
63
+ "unique(code, document_type_id, company_id)",
64
+ "A Fiscal Document Serie already exists for this document type.",
65
+ )
66
+ ]
67
+
58
68
  @api.model
59
69
  def _create_sequence(self, values):
60
70
  """Create new no_gap entry sequence for every
@@ -83,6 +93,29 @@ class DocumentSerie(models.Model):
83
93
  for record in self:
84
94
  record.display_name = record.name
85
95
 
96
+ def write(self, vals):
97
+ if "internal_sequence_id" in vals:
98
+ raise ValidationError(_("You cannot change the internal sequence."))
99
+ if "code" in vals:
100
+ for serie in self:
101
+ if serie.code == vals["code"]:
102
+ continue
103
+ if self.env["l10n_br_fiscal.document"].search_count(
104
+ [
105
+ ("document_serie_id", "=", serie.id),
106
+ ("state_edoc", "not in", [SITUACAO_EDOC_EM_DIGITACAO]),
107
+ ],
108
+ limit=1,
109
+ ):
110
+ raise ValidationError(
111
+ _(
112
+ "You cannot change the code of a document "
113
+ "serie %(name)s that is already in use.",
114
+ name=serie.name,
115
+ )
116
+ )
117
+ return super().write(vals)
118
+
86
119
  def _is_invalid_number(self, document_number):
87
120
  self.ensure_one()
88
121
  is_invalid_number = True
@@ -372,7 +372,7 @@ ul.auto-toc {
372
372
  !! This file is generated by oca-gen-addon-readme !!
373
373
  !! changes will be overwritten. !!
374
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
- !! source digest: sha256:34b2c11494e5932d480130048fb1335afb329a496a4fa5e8cbec1bc11d39d3d0
375
+ !! source digest: sha256:4e8525f529edd42318b594e54c31e6c4c3f77420d011c880c3b8b1679664e667
376
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
377
  <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/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/l10n-brazil/tree/18.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-18-0/l10n-brazil-18-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=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
378
  <p><img alt="image" src="https://raw.githubusercontent.com/OCA/l10n-brazil/18.0/l10n_br_fiscal/static/img/fiscal_dashboard.png" /></p>
@@ -2,6 +2,7 @@
2
2
 
3
3
  from . import (
4
4
  test_cnae,
5
+ test_fiscal_document_serie,
5
6
  test_fiscal_document_generic,
6
7
  test_fiscal_document_nfse,
7
8
  test_fiscal_tax,
@@ -0,0 +1,60 @@
1
+ # Copyright (C) 2025 Renato Lima - Akretion <renato.lima@akretion.com.br>
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
+
4
+ from psycopg2 import IntegrityError
5
+
6
+ from odoo.exceptions import ValidationError
7
+ from odoo.tests import TransactionCase
8
+ from odoo.tools import mute_logger
9
+
10
+
11
+ class TestFiscalDocumentSerie(TransactionCase):
12
+ @classmethod
13
+ def setUpClass(cls):
14
+ super().setUpClass()
15
+ cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
16
+
17
+ # Company
18
+ cls.company_sn = cls.env.ref("l10n_br_base.empresa_simples_nacional")
19
+
20
+ # Fiscal Document Type
21
+ cls.document_type_nfe = cls.env.ref("l10n_br_fiscal.document_55")
22
+
23
+ cls.document_serie_nfe_5 = cls.env["l10n_br_fiscal.document.serie"].create(
24
+ {
25
+ "code": "5",
26
+ "name": "Serie 5",
27
+ "document_type_id": cls.document_type_nfe.id,
28
+ "company_id": cls.company_sn.id,
29
+ }
30
+ )
31
+
32
+ # Fiscal Document
33
+ cls.document = cls.env["l10n_br_fiscal.document"].create(
34
+ {
35
+ "company_id": cls.company_sn.id,
36
+ "document_type_id": cls.document_type_nfe.id,
37
+ "document_serie_id": cls.document_serie_nfe_5.id,
38
+ "partner_id": cls.env.ref("l10n_br_base.res_partner_cliente1_sp").id,
39
+ "state_edoc": "cancelada",
40
+ }
41
+ )
42
+
43
+ def test_document_serie_duplicated(self):
44
+ """Test document serie duplicate constraint."""
45
+ document_serie = self.env["l10n_br_fiscal.document.serie"]
46
+ document_serie_values = {
47
+ "code": "10",
48
+ "name": "Serie 10",
49
+ "document_type_id": self.document_type_nfe.id,
50
+ "company_id": self.company_sn.id,
51
+ }
52
+
53
+ with self.assertRaises(IntegrityError), mute_logger("odoo.sql_db"):
54
+ for _ in range(2):
55
+ document_serie.create(document_serie_values)
56
+
57
+ def test_document_serie_code_in_use(self):
58
+ """Test document serie code in use constraint."""
59
+ with self.assertRaises(ValidationError):
60
+ self.document_serie_nfe_5.write({"code": "7"})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-l10n_br_fiscal
3
- Version: 18.0.3.2.0
3
+ Version: 18.0.3.3.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==18.0.*
@@ -31,7 +31,7 @@ Módulo fiscal brasileiro
31
31
  !! This file is generated by oca-gen-addon-readme !!
32
32
  !! changes will be overwritten. !!
33
33
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
34
- !! source digest: sha256:34b2c11494e5932d480130048fb1335afb329a496a4fa5e8cbec1bc11d39d3d0
34
+ !! source digest: sha256:4e8525f529edd42318b594e54c31e6c4c3f77420d011c880c3b8b1679664e667
35
35
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
36
36
 
37
37
  .. |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=Pdoev-UPQIFiyPGuvqAwe_HbU6fxlJWuQfSkbB7Khnk,13957
1
+ odoo/addons/l10n_br_fiscal/README.rst,sha256=joSKPJplWSaeou6_1I0WFI7lz8Ea6V8KHxFOcgpOFa0,13957
2
2
  odoo/addons/l10n_br_fiscal/__init__.py,sha256=ixnRLE1DBhgricJPOLc4Hj3-Fiqgv-KbDsI2YpvidDw,2701
3
- odoo/addons/l10n_br_fiscal/__manifest__.py,sha256=KqlPbDkdpI0YnVm2_71c9WnOY7FFFy2iCRvfnFuqd9w,5001
3
+ odoo/addons/l10n_br_fiscal/__manifest__.py,sha256=9Qs7cyPil0tUeShWSYZwf4HxfBjFGt62GyVrzqkWLTE,5001
4
4
  odoo/addons/l10n_br_fiscal/hooks.py,sha256=SYuewp_SXEkIINZQmXL7KnjttrDxjpJaSlH5UOqwczU,3534
5
5
  odoo/addons/l10n_br_fiscal/tools.py,sha256=HgaCLkPznFxgLfjb76nH36PJ7bN5W7-fdaqtBvM6XC0,4056
6
6
  odoo/addons/l10n_br_fiscal/constants/fiscal.py,sha256=xasb2lrn8GK25FaYadaUXxU7BW3hHz4bKQ9MG_RgOw4,14922
@@ -53,7 +53,7 @@ odoo/addons/l10n_br_fiscal/demo/icms_tax_definition_demo.xml,sha256=d6HYTnY3M8H6
53
53
  odoo/addons/l10n_br_fiscal/demo/partner_demo.xml,sha256=sp3c5kWXY0lajSIetMExjKe0oCXljqcwzmj7J4xMQdI,7171
54
54
  odoo/addons/l10n_br_fiscal/demo/product_demo.xml,sha256=qsIbCBwIuD4ONtrSoGB3ChlDc-WYIPQBE1adg2lr3zQ,11890
55
55
  odoo/addons/l10n_br_fiscal/demo/res_users_demo.xml,sha256=TYaDuEGCjbh-zVHnARqHATWwIX_-9DA0JbDoStLcC-o,605
56
- odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot,sha256=1kANEtun9gSZ-HRpptv3BgzDYdpjKwiaQCUrrmBXBos,379820
56
+ odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot,sha256=ON5faVCV8eN7k5uWcjgETxeNnLP008wPZa59N6BnWUM,380404
57
57
  odoo/addons/l10n_br_fiscal/i18n/pt_BR.po,sha256=VVA8684ZIg6HwOUoU_m4eeT-FKUnH6eIppomDY9SfGI,453785
58
58
  odoo/addons/l10n_br_fiscal/migrations/18.0.2.0.0/pre-migration.py,sha256=pOsGHg7PEz_k2qKeaa0jgqM1xHFpynWZNCrkAloE_vc,745
59
59
  odoo/addons/l10n_br_fiscal/migrations/18.0.3.0.0/pre-migration.py,sha256=lCubp50-qtGUwXGw8BBlyS5fcNZW3aRFZD6mWUqHmKc,827
@@ -72,9 +72,9 @@ odoo/addons/l10n_br_fiscal/models/document_line.py,sha256=pycbresixkkg5CtWItiJxz
72
72
  odoo/addons/l10n_br_fiscal/models/document_line_mixin.py,sha256=_8ZTQoZMC4KZyDhu5ngMo37rdFr7PzmSU_V91NJQWNE,45015
73
73
  odoo/addons/l10n_br_fiscal/models/document_line_mixin_methods.py,sha256=CNoqsz7FkfTPAKG4a-h4Csf2yBK2ccD-NF_nhni3Ce0,34590
74
74
  odoo/addons/l10n_br_fiscal/models/document_mixin.py,sha256=DDA7x2Ow9GQ9U7wjZ4ypSGtM3BTZwCkvxjO11INbe1g,13295
75
- odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py,sha256=Rlv4khSkeIDHEXKO_MvEJTOGHbYMQYAo2f_SwRKbWuo,9694
75
+ odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py,sha256=WEO2O1Ndper2EGJrOIiVE83d2vAmxn3kWVVo1CXgaJQ,9788
76
76
  odoo/addons/l10n_br_fiscal/models/document_related.py,sha256=zPc9ubJVCsawhd2HxNBD8ebo6XnVPFzgDOegw6vYEmk,4696
77
- odoo/addons/l10n_br_fiscal/models/document_serie.py,sha256=nU1dNtv2L9wab7tqKSty_IYezxpIQEtSYiMEwpHRqzs,4157
77
+ odoo/addons/l10n_br_fiscal/models/document_serie.py,sha256=sJLCFNMzsPEJRM7FZO9LQ1xNfI58xEhLwQdGLFflpyE,5388
78
78
  odoo/addons/l10n_br_fiscal/models/document_supplement.py,sha256=31oRSHT_SaGSf-dQvriweIxZZiTANxkHHupc5kMYfXA,409
79
79
  odoo/addons/l10n_br_fiscal/models/document_type.py,sha256=Dn-PkfShuHe8Fg-JH5oB7lnRhPoxxO18DelEuOWhmGg,1938
80
80
  odoo/addons/l10n_br_fiscal/models/ibpt.py,sha256=mjkxXtO4SB1xvyULJtGMdi49SNpHq6TABCsLmw14F70,2495
@@ -122,17 +122,18 @@ odoo/addons/l10n_br_fiscal/readme/USAGE.md,sha256=Dw3uZaHJCUtV0xFq6VOQvF2G5fS_oS
122
122
  odoo/addons/l10n_br_fiscal/security/fiscal_security.xml,sha256=G8uAxbI_DZPRHXDAQZWYwchyHPZKpghupRb1ZMf3bdI,3165
123
123
  odoo/addons/l10n_br_fiscal/security/ir.model.access.csv,sha256=MQb64W6Es5ChkVqKBit6bHWKyAtrkgO_VamAaSNhvCQ,14359
124
124
  odoo/addons/l10n_br_fiscal/static/description/icon.png,sha256=Vd1HydYBoGCzNfCqxLlch2i2aeCcyxo-uRxWNp6oMbw,14836
125
- odoo/addons/l10n_br_fiscal/static/description/index.html,sha256=qgfsF9WA4QO5HUXOcz04j9haQPlOGxcWJbRl2V8GmgE,26637
125
+ odoo/addons/l10n_br_fiscal/static/description/index.html,sha256=8XboJtPKJqqmtUq9BLGx7I2RGiSr07fEUxY9Mwc_rrI,26637
126
126
  odoo/addons/l10n_br_fiscal/static/img/fiscal_dashboard.png,sha256=Q0fpqFNqEXh6m6E1aJfzSKV2tQ9lC1Y-ofUt6qxVupc,151668
127
127
  odoo/addons/l10n_br_fiscal/static/img/fiscal_line.png,sha256=S4Q4OGSzGnbfm4W5sQVvnD4uUzxS6tbJGT_gs3pB4K0,134276
128
128
  odoo/addons/l10n_br_fiscal/static/img/fiscal_operation.png,sha256=2614c1XjxwVznh707e9gujlUXg0ttutKD1ZiSMTqyv8,105871
129
129
  odoo/addons/l10n_br_fiscal/static/img/fiscal_total.png,sha256=MaR6ZoM6ZZEaNZk2ynSmaHjkRUU0SOkeUW5_HbJQS50,132739
130
130
  odoo/addons/l10n_br_fiscal/static/src/js/list_renderer_with_button.esm.js,sha256=Ucw7pymMrW2yi_nNrDMvq6ubyub9QMlqH3ZOoaTEHN0,1243
131
- odoo/addons/l10n_br_fiscal/tests/__init__.py,sha256=83m4BimGb-6EseEmmCVaKTSel5GB_vkzbI3YZi4mStE,393
131
+ odoo/addons/l10n_br_fiscal/tests/__init__.py,sha256=AxICXrwfUbYQnwRT0ITPS3fb-WYHyRaKUG6BDuDwhtw,425
132
132
  odoo/addons/l10n_br_fiscal/tests/test_cnae.py,sha256=QAY1BX_OztHsnGE1O47d0Cz2Cpr7FaRix7-dRgESBs0,581
133
133
  odoo/addons/l10n_br_fiscal/tests/test_document_edition.py,sha256=aVpQGZkd6V-oOI30vfJzm3WeK3yWbrG18m3e_dnlpd8,13271
134
134
  odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py,sha256=3e2wA-_I8uhUbbXkqw-Wuvw5VkbMR67mSB95vV3tSKo,39560
135
135
  odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_nfse.py,sha256=iej1FiolEQTFcUPDl6EsvC8zu4SYqi93dC-3rCos0LE,1491
136
+ odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_serie.py,sha256=gcuk82UJVVGWZedHfZxF6g2OZ5-jtq8fcvdoKbAgCV4,2199
136
137
  odoo/addons/l10n_br_fiscal/tests/test_fiscal_tax.py,sha256=U6JbuqKTcyyFTiW5FZGqGY5yi_aPKaC6_LWz_3sKdpg,11322
137
138
  odoo/addons/l10n_br_fiscal/tests/test_ibpt.py,sha256=vJKit2Aok-zIk_723nRietLTbVKPstD88vznN2PwMZg,5227
138
139
  odoo/addons/l10n_br_fiscal/tests/test_ibpt_product.py,sha256=h00TpY-tTw3z8U24yTzzvyWkfnKjHqlCbqetBKJNV94,2794
@@ -193,7 +194,7 @@ odoo/addons/l10n_br_fiscal/wizards/base_wizard_mixin.py,sha256=-r25us0vdNCSe11Gn
193
194
  odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.py,sha256=zP_KFjGy41sDzS6Jag4QtNXOWGaVC0vsARQHBsF3xN8,4114
194
195
  odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.xml,sha256=ZSkG9q2IzsC7mmcJuykRRzEacPOmEnj36zpS8DSomkc,1724
195
196
  odoo/addons/l10n_br_fiscal/wizards/document_status_wizard.py,sha256=KsYj5YWWePO7uk0psBsFdnCL71eLWhcyg7_c7J4G6vA,818
196
- odoo_addon_l10n_br_fiscal-18.0.3.2.0.dist-info/METADATA,sha256=XsYUCavQPBM2aYwW3J-jlxJtYfRmmM5XL2w5zkS9VyI,14691
197
- odoo_addon_l10n_br_fiscal-18.0.3.2.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
198
- odoo_addon_l10n_br_fiscal-18.0.3.2.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
199
- odoo_addon_l10n_br_fiscal-18.0.3.2.0.dist-info/RECORD,,
197
+ odoo_addon_l10n_br_fiscal-18.0.3.3.0.dist-info/METADATA,sha256=6JVV66DDR6l9WV961drJmSuOMIAPYbm6op5uP_RZ37s,14691
198
+ odoo_addon_l10n_br_fiscal-18.0.3.3.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
199
+ odoo_addon_l10n_br_fiscal-18.0.3.3.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
200
+ odoo_addon_l10n_br_fiscal-18.0.3.3.0.dist-info/RECORD,,