odoo-addon-l10n-br-fiscal 16.0.14.0.4__py3-none-any.whl → 16.0.14.1.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:71764616952073348db671cc3d714521ae9b7af07d5852953c4e4093bbfd9d8f
14
+ !! source digest: sha256:4957658ffd4e083aa6da113dbe63e539c7942695ad2ec86fda5faffafbe9cb4f
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": "16.0.14.0.4",
13
+ "version": "16.0.14.1.0",
14
14
  "depends": [
15
15
  "product",
16
16
  "uom_alias",
@@ -0,0 +1,15 @@
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 openupgradelib import openupgrade
5
+
6
+
7
+ @openupgrade.migrate()
8
+ def migrate(env, version):
9
+ xmlids_renames = [
10
+ (
11
+ "l10n_br_fiscal.l10n_br_fiscal_operation_line_rule",
12
+ "l10n_br_fiscal.l10n_br_fiscal_operation_rule",
13
+ )
14
+ ]
15
+ openupgrade.rename_xmlids(env.cr, xmlids_renames)
@@ -199,152 +199,37 @@ class FiscalDocumentMixinMethods(models.AbstractModel):
199
199
  elif doc.comment_ids is None:
200
200
  doc.comment_ids = []
201
201
 
202
- def _inverse_amount_freight(self):
203
- for record in self.filtered(lambda doc: doc._get_product_amount_lines()):
204
- if (
202
+ def _distribute_amount_to_lines(self, amount_field_name, line_field_name):
203
+ for record in self:
204
+ if not (
205
205
  record.delivery_costs == "total"
206
206
  or record.force_compute_delivery_costs_by_total
207
207
  ):
208
- amount_freight_value = record.amount_freight_value
209
- if all(record._get_product_amount_lines().mapped("freight_value")):
210
- amount_freight_old = sum(
211
- record._get_product_amount_lines().mapped("freight_value")
212
- )
213
- for line in record._get_product_amount_lines()[:-1]:
214
- line.freight_value = amount_freight_value * (
215
- line.freight_value / amount_freight_old
216
- )
217
- record._get_product_amount_lines()[-1].freight_value = (
218
- amount_freight_value
219
- - sum(
220
- line.freight_value
221
- for line in record._get_product_amount_lines()[:-1]
222
- )
223
- )
224
- else:
225
- fiscal_amount_total = sum(
226
- record._get_product_amount_lines().mapped("price_gross")
208
+ continue
209
+ lines = record._get_product_amount_lines()
210
+ if not lines:
211
+ continue
212
+ amount_to_distribute = record[amount_field_name]
213
+ total_gross = sum(lines.mapped("price_gross"))
214
+ if total_gross > 0:
215
+ distributed_amount = 0
216
+ for line in lines[:-1]:
217
+ proportional_amount = record.currency_id.round(
218
+ amount_to_distribute * (line.price_gross / total_gross)
227
219
  )
228
- for line in record._get_product_amount_lines()[:-1]:
229
- if line.price_gross and fiscal_amount_total:
230
- line.freight_value = amount_freight_value * (
231
- line.price_gross / fiscal_amount_total
232
- )
233
- record._get_product_amount_lines()[-1].freight_value = (
234
- amount_freight_value
235
- - sum(
236
- line.freight_value
237
- for line in record._get_product_amount_lines()[:-1]
238
- )
239
- )
240
- for line in record._get_product_amount_lines():
241
- line._onchange_fiscal_taxes()
242
- record._fields["fiscal_amount_total"].compute_value(record)
243
- record.write(
244
- {
245
- name: value
246
- for name, value in record._cache.items()
247
- if record._fields[name].compute == "_amount_all"
248
- and not record._fields[name].inverse
249
- }
250
- )
220
+ line[line_field_name] = proportional_amount
221
+ distributed_amount += proportional_amount
222
+ lines[-1][line_field_name] = amount_to_distribute - distributed_amount
223
+ else:
224
+ lines.write({line_field_name: 0.0})
225
+ if lines:
226
+ lines[0][line_field_name] = amount_to_distribute
227
+
228
+ def _inverse_amount_freight(self):
229
+ self._distribute_amount_to_lines("amount_freight_value", "freight_value")
251
230
 
252
231
  def _inverse_amount_insurance(self):
253
- for record in self.filtered(lambda doc: doc._get_product_amount_lines()):
254
- if (
255
- record.delivery_costs == "total"
256
- or record.force_compute_delivery_costs_by_total
257
- ):
258
- amount_insurance_value = record.amount_insurance_value
259
- if all(record._get_product_amount_lines().mapped("insurance_value")):
260
- amount_insurance_old = sum(
261
- record._get_product_amount_lines().mapped("insurance_value")
262
- )
263
- for line in record._get_product_amount_lines()[:-1]:
264
- line.insurance_value = amount_insurance_value * (
265
- line.insurance_value / amount_insurance_old
266
- )
267
- record._get_product_amount_lines()[-1].insurance_value = (
268
- amount_insurance_value
269
- - sum(
270
- line.insurance_value
271
- for line in record._get_product_amount_lines()[:-1]
272
- )
273
- )
274
- else:
275
- fiscal_amount_total = sum(
276
- record._get_product_amount_lines().mapped("price_gross")
277
- )
278
- for line in record._get_product_amount_lines()[:-1]:
279
- if line.price_gross and fiscal_amount_total:
280
- line.insurance_value = amount_insurance_value * (
281
- line.price_gross / fiscal_amount_total
282
- )
283
- record._get_product_amount_lines()[-1].insurance_value = (
284
- amount_insurance_value
285
- - sum(
286
- line.insurance_value
287
- for line in record._get_product_amount_lines()[:-1]
288
- )
289
- )
290
- for line in record._get_product_amount_lines():
291
- line._onchange_fiscal_taxes()
292
- record._fields["fiscal_amount_total"].compute_value(record)
293
- record.write(
294
- {
295
- name: value
296
- for name, value in record._cache.items()
297
- if record._fields[name].compute == "_amount_all"
298
- and not record._fields[name].inverse
299
- }
300
- )
232
+ self._distribute_amount_to_lines("amount_insurance_value", "insurance_value")
301
233
 
302
234
  def _inverse_amount_other(self):
303
- for record in self.filtered(lambda doc: doc._get_product_amount_lines()):
304
- if (
305
- record.delivery_costs == "total"
306
- or record.force_compute_delivery_costs_by_total
307
- ):
308
- amount_other_value = record.amount_other_value
309
- if all(record._get_product_amount_lines().mapped("other_value")):
310
- amount_other_old = sum(
311
- record._get_product_amount_lines().mapped("other_value")
312
- )
313
- for line in record._get_product_amount_lines()[:-1]:
314
- line.other_value = amount_other_value * (
315
- line.other_value / amount_other_old
316
- )
317
- record._get_product_amount_lines()[-1].other_value = (
318
- amount_other_value
319
- - sum(
320
- line.other_value
321
- for line in record._get_product_amount_lines()[:-1]
322
- )
323
- )
324
- else:
325
- fiscal_amount_total = sum(
326
- record._get_product_amount_lines().mapped("price_gross")
327
- )
328
- for line in record._get_product_amount_lines()[:-1]:
329
- if line.price_gross and fiscal_amount_total:
330
- line.other_value = amount_other_value * (
331
- line.price_gross / fiscal_amount_total
332
- )
333
- record._get_product_amount_lines()[-1].other_value = (
334
- amount_other_value
335
- - sum(
336
- line.other_value
337
- for line in record._get_product_amount_lines()[:-1]
338
- )
339
- )
340
- for line in record._get_product_amount_lines():
341
- line._onchange_fiscal_taxes()
342
- record._fields["fiscal_amount_total"].compute_value(record)
343
- record.write(
344
- {
345
- name: value
346
- for name, value in record._cache.items()
347
- if record._fields[name].compute == "_amount_all"
348
- and not record._fields[name].inverse
349
- }
350
- )
235
+ self._distribute_amount_to_lines("amount_other_value", "other_value")
@@ -39,45 +39,35 @@
39
39
  <field name="name">Fiscal Tax Estimate multi-company</field>
40
40
  <field name="model_id" ref="model_l10n_br_fiscal_tax_estimate" />
41
41
  <field eval="True" name="global" />
42
- <field
43
- name="domain_force"
44
- >['|',('company_id','=',False),('company_id','in',company_ids)]</field>
42
+ <field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
45
43
  </record>
46
44
 
47
- <record id="l10n_br_fiscal_operation_line_rule" model="ir.rule">
45
+ <record id="l10n_br_fiscal_operation_rule" model="ir.rule">
48
46
  <field name="name">Fiscal Operation multi-company</field>
49
47
  <field name="model_id" ref="model_l10n_br_fiscal_operation" />
50
48
  <field eval="True" name="global" />
51
- <field
52
- name="domain_force"
53
- >['|',('company_id','=',False),('company_id','in',company_ids)]</field>
49
+ <field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
54
50
  </record>
55
51
 
56
52
  <record id="l10n_br_fiscal_document_serie_rule" model="ir.rule">
57
53
  <field name="name">Fiscal Document Serie multi-company</field>
58
54
  <field name="model_id" ref="model_l10n_br_fiscal_document_serie" />
59
55
  <field eval="True" name="global" />
60
- <field
61
- name="domain_force"
62
- >['|',('company_id','=',False),('company_id','in',company_ids)]</field>
56
+ <field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
63
57
  </record>
64
58
 
65
59
  <record id="l10n_br_fiscal_document_rule" model="ir.rule">
66
60
  <field name="name">Fiscal Document multi-company</field>
67
61
  <field name="model_id" ref="model_l10n_br_fiscal_document" />
68
62
  <field eval="True" name="global" />
69
- <field
70
- name="domain_force"
71
- >['|',('company_id','=',False),('company_id','in',company_ids)]</field>
63
+ <field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
72
64
  </record>
73
65
 
74
66
  <record id="l10n_br_fiscal_document_line_rule" model="ir.rule">
75
67
  <field name="name">Fiscal Document line multi-company</field>
76
68
  <field name="model_id" ref="model_l10n_br_fiscal_document_line" />
77
69
  <field eval="True" name="global" />
78
- <field
79
- name="domain_force"
80
- >['|',('company_id','=',False),('company_id','in',company_ids)]</field>
70
+ <field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
81
71
  </record>
82
72
 
83
73
  </odoo>
@@ -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:71764616952073348db671cc3d714521ae9b7af07d5852953c4e4093bbfd9d8f
375
+ !! source digest: sha256:4957658ffd4e083aa6da113dbe63e539c7942695ad2ec86fda5faffafbe9cb4f
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/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>
378
378
  <p><img alt="image" src="https://raw.githubusercontent.com/OCA/l10n-brazil/16.0/l10n_br_fiscal/static/img/fiscal_dashboard.png" /></p>
@@ -12,6 +12,10 @@ class TestDocumentEdition(TransactionCase):
12
12
  def setUpClass(cls):
13
13
  super().setUpClass()
14
14
  cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
15
+ cls.user = cls.env.user
16
+ cls.company = cls.env.ref("l10n_br_base.empresa_lucro_presumido")
17
+ cls.user.company_ids |= cls.company
18
+ cls.user.company_id = cls.company.id
15
19
 
16
20
  def test_basic_doc_edition(self):
17
21
  doc_form = Form(
@@ -163,3 +167,112 @@ class TestDocumentEdition(TransactionCase):
163
167
  self.assertEqual(doc.fiscal_line_ids[0].fiscal_price, 112)
164
168
  self.assertEqual(doc.fiscal_line_ids[0].quantity, 10)
165
169
  self.assertEqual(doc.fiscal_line_ids[0].fiscal_quantity, 5)
170
+
171
+ def test_landed_costs_by_line_and_by_total(self):
172
+ """
173
+ Tests both landed cost scenarios: 'by line' and 'by total'.
174
+ 1. By Line: Enters costs on lines and verifies the header totals.
175
+ 2. By Total: Enters costs on the header and verifies lines distribution.
176
+ """
177
+ self.env.user.groups_id |= self.env.ref("l10n_br_fiscal.group_user")
178
+ product1 = self.env.ref("product.product_product_6")
179
+ product2 = self.env.ref("product.product_product_7")
180
+
181
+ # Part 1: Test with delivery_costs = 'line'
182
+ # ----------------------------------------------------
183
+ self.company.delivery_costs = "line"
184
+ doc_form = Form(self.env["l10n_br_fiscal.document"])
185
+ doc_form.company_id = self.company
186
+ doc_form.partner_id = self.env.ref("l10n_br_base.res_partner_cliente1_sp")
187
+ doc_form.fiscal_operation_id = self.env.ref("l10n_br_fiscal.fo_venda")
188
+
189
+ with doc_form.fiscal_line_ids.new() as line1:
190
+ line1.product_id = product1
191
+ line1.fiscal_operation_line_id = self.env.ref(
192
+ "l10n_br_fiscal.fo_venda_venda"
193
+ )
194
+ line1.price_unit = 1000.0
195
+ line1.quantity = 2.0 # Gross: 2000
196
+ line1.freight_value = 10.0
197
+ line1.insurance_value = 20.0
198
+ line1.other_value = 5.0
199
+
200
+ with doc_form.fiscal_line_ids.new() as line2:
201
+ line2.product_id = product2
202
+ line2.fiscal_operation_line_id = self.env.ref(
203
+ "l10n_br_fiscal.fo_venda_venda"
204
+ )
205
+ line2.price_unit = 500.0
206
+ line2.quantity = 1.0 # Gross: 500
207
+ line2.freight_value = 4.0
208
+ line2.insurance_value = 6.0
209
+ line2.other_value = 2.0
210
+
211
+ doc = doc_form.save()
212
+
213
+ self.assertEqual(doc.company_id.delivery_costs, "line")
214
+ # Assert header totals are the SUM of line values
215
+ self.assertAlmostEqual(doc.amount_freight_value, 14.0) # 10.0 + 4.0
216
+ self.assertAlmostEqual(doc.amount_insurance_value, 26.0) # 20.0 + 6.0
217
+ self.assertAlmostEqual(doc.amount_other_value, 7.0) # 5.0 + 2.0
218
+
219
+ # Assert final fiscal totals (bottom-up calculation)
220
+ # price_gross = (1000*2) + (500*1) = 2500
221
+ # landed_costs = 14 + 26 + 7 = 47
222
+ # fiscal_amount_untaxed (IPI Base) = 2500 + 47 = 2547
223
+ self.assertAlmostEqual(doc.fiscal_amount_untaxed, 2547.00)
224
+ # fiscal_amount_tax (IPI) = (2035 * 3.25%) + (512 * 5%) = 66.14 + 25.60 = 91.74
225
+ self.assertAlmostEqual(doc.fiscal_amount_tax, 91.74, places=2)
226
+ # fiscal_amount_total = 2547.00 + 91.74 = 2638.74
227
+ self.assertAlmostEqual(doc.fiscal_amount_total, 2638.74, places=2)
228
+
229
+ # Part 2: Test with delivery_costs = 'total'
230
+ # ----------------------------------------------------
231
+ self.company.delivery_costs = "total"
232
+ doc_form_edit = Form(doc)
233
+ # Set new header totals, which should trigger inverse methods to distribute
234
+ doc_form_edit.amount_freight_value = 30.0
235
+ doc_form_edit.amount_insurance_value = 60.0
236
+ doc_form_edit.amount_other_value = 90.0
237
+ doc_after_total_update = doc_form_edit.save()
238
+
239
+ line1 = doc_after_total_update.fiscal_line_ids[0]
240
+ line2 = doc_after_total_update.fiscal_line_ids[1]
241
+
242
+ # Assert values were distributed proportionally to price_gross
243
+ # (2000 vs 500 -> 80% vs 20%)
244
+ # Freight: 30.0 * 0.8 = 24.0 | 30.0 * 0.2 = 6.0
245
+ self.assertAlmostEqual(line1.freight_value, 24.0)
246
+ self.assertAlmostEqual(line2.freight_value, 6.0)
247
+ # Insurance: 60.0 * 0.8 = 48.0 | 60.0 * 0.2 = 12.0
248
+ self.assertAlmostEqual(line1.insurance_value, 48.0)
249
+ self.assertAlmostEqual(line2.insurance_value, 12.0)
250
+ # Other: 90.0 * 0.8 = 72.0 | 90.0 * 0.2 = 18.0
251
+ self.assertAlmostEqual(line1.other_value, 72.0)
252
+ self.assertAlmostEqual(line2.other_value, 18.0)
253
+
254
+ # Assert final fiscal totals are recomputed correctly (top-down calculation)
255
+ # price_gross = 2500
256
+ # landed_costs = 30 + 60 + 90 = 180
257
+ # fiscal_amount_untaxed (IPI Base) = 2500 + 180 = 2680
258
+ self.assertAlmostEqual(doc_after_total_update.fiscal_amount_untaxed, 2680.00)
259
+ # Line 1 IPI Base = 2000 (product) + 24 (freight) + 48 (insurance)
260
+ # + 72 (other) = 2144
261
+ # Line 1 IPI Value = 2144 * 3.25% = 69.68
262
+ self.assertAlmostEqual(line1.ipi_base, 2144.00)
263
+ self.assertAlmostEqual(line1.ipi_value, 69.68, places=2)
264
+
265
+ # Line 2 IPI Base = 500 (product) + 6 (freight) + 12 (insurance)
266
+ # + 18 (other) = 536
267
+ # Line 2 IPI Value = 536 * 5% = 26.80
268
+ self.assertAlmostEqual(line2.ipi_base, 536.00)
269
+ self.assertAlmostEqual(line2.ipi_value, 26.80, places=2)
270
+
271
+ # fiscal_amount_tax (IPI) = 69.68 + 26.80 = 96.48
272
+ self.assertAlmostEqual(
273
+ doc_after_total_update.fiscal_amount_tax, 96.48, places=2
274
+ )
275
+ # fiscal_amount_total = 2680.00 + 96.48 = 2776.48
276
+ self.assertAlmostEqual(
277
+ doc_after_total_update.fiscal_amount_total, 2776.48, places=2
278
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-l10n_br_fiscal
3
- Version: 16.0.14.0.4
3
+ Version: 16.0.14.1.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
@@ -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:71764616952073348db671cc3d714521ae9b7af07d5852953c4e4093bbfd9d8f
34
+ !! source digest: sha256:4957658ffd4e083aa6da113dbe63e539c7942695ad2ec86fda5faffafbe9cb4f
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=jXmovx6RaPSxXxo16apN1tCoBoHFNU_r_MHJOju6EaU,13957
1
+ odoo/addons/l10n_br_fiscal/README.rst,sha256=29MVU3TV_Qjd2Q-ok85xmzYD-kKQuA7hZt5X00HDJw0,13957
2
2
  odoo/addons/l10n_br_fiscal/__init__.py,sha256=BQXfCjW4ehK1W1j0z6k8xN7Q2LoZBCjjvYDkQt6nSkI,2717
3
- odoo/addons/l10n_br_fiscal/__manifest__.py,sha256=Ao9w81jCsnt6vU6KL2gy2CPxBADrWG0rqwAq2rartEA,4957
3
+ odoo/addons/l10n_br_fiscal/__manifest__.py,sha256=CkVRRybZm3Ir3-KqejQAs5OGYdwX1Rb2mSGWPf-o8xE,4957
4
4
  odoo/addons/l10n_br_fiscal/tools.py,sha256=HgaCLkPznFxgLfjb76nH36PJ7bN5W7-fdaqtBvM6XC0,4056
5
5
  odoo/addons/l10n_br_fiscal/constants/fiscal.py,sha256=F2a4jYAk2j2Yh1Xw7WeS1GcLfW1DbjeNgEF6l7135wc,14962
6
6
  odoo/addons/l10n_br_fiscal/constants/icms.py,sha256=rHlM6jyRvhrIm03sd6guS1xh7SptADLltPmRJ3C_Vh8,3512
@@ -56,6 +56,7 @@ odoo/addons/l10n_br_fiscal/i18n/l10n_br_fiscal.pot,sha256=5XrgFoOkPNFs0VvC-5vedh
56
56
  odoo/addons/l10n_br_fiscal/i18n/pt_BR.po,sha256=r18-H9zeX1TEwux85-Jt5CuF_l6dLpj8Ix9kPW-tjbs,496209
57
57
  odoo/addons/l10n_br_fiscal/migrations/16.0.13.0.0/pre-migration.py,sha256=pOsGHg7PEz_k2qKeaa0jgqM1xHFpynWZNCrkAloE_vc,745
58
58
  odoo/addons/l10n_br_fiscal/migrations/16.0.14.0.0/pre-migration.py,sha256=lCubp50-qtGUwXGw8BBlyS5fcNZW3aRFZD6mWUqHmKc,827
59
+ odoo/addons/l10n_br_fiscal/migrations/16.0.14.0.5/pre-migration.py,sha256=5CeCQGYg_DnGBMrxjLBFPav4ojnOgqhXb2t7vy4ctcw,464
59
60
  odoo/addons/l10n_br_fiscal/migrations/16.0.2.0.0/pre-migration.py,sha256=tw6d7NZrbOmjEaGHI9y-AMiNWNqf_mceTFqTFXuc6cU,687
60
61
  odoo/addons/l10n_br_fiscal/migrations/16.0.2.15.0/pre-migration.py,sha256=5-aWMxFdyNbyw_MJbfyiSFHnm9zxWKYHibOW5GNauWc,517
61
62
  odoo/addons/l10n_br_fiscal/migrations/16.0.4.0.0/pre-migration.py,sha256=HcFE37sX6j9EHI2lez0NR7kpblHc8RYyoU0ezDd_rpY,9106
@@ -76,7 +77,7 @@ odoo/addons/l10n_br_fiscal/models/document_line.py,sha256=W_8uQz-cn8hIljATy91XYI
76
77
  odoo/addons/l10n_br_fiscal/models/document_line_mixin.py,sha256=es-zS2qi5Pe7rp1maHeIo705_glz94nLzhaNkcxWgw8,43780
77
78
  odoo/addons/l10n_br_fiscal/models/document_line_mixin_methods.py,sha256=sabxe2KXIe-Tlot7c-JFLzcqG1-Zv4mIEDNW_b3DP2s,34172
78
79
  odoo/addons/l10n_br_fiscal/models/document_mixin.py,sha256=GkoNxIAUrzwWh5cYZAm5KD_qBIN-mSQ8phQJdYOlOCg,13343
79
- odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py,sha256=IG37evORl6dJG0-GOluvgnZ9tcMGLTUoPPYYzdvWB5w,15565
80
+ odoo/addons/l10n_br_fiscal/models/document_mixin_methods.py,sha256=Rlv4khSkeIDHEXKO_MvEJTOGHbYMQYAo2f_SwRKbWuo,9694
80
81
  odoo/addons/l10n_br_fiscal/models/document_related.py,sha256=zPc9ubJVCsawhd2HxNBD8ebo6XnVPFzgDOegw6vYEmk,4696
81
82
  odoo/addons/l10n_br_fiscal/models/document_serie.py,sha256=Spe7kpgMBFGS_LBv3DpiqTC4WuafTK8LRv53GVR2UcM,4128
82
83
  odoo/addons/l10n_br_fiscal/models/document_supplement.py,sha256=31oRSHT_SaGSf-dQvriweIxZZiTANxkHHupc5kMYfXA,409
@@ -123,10 +124,10 @@ odoo/addons/l10n_br_fiscal/readme/HISTORY.md,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZO
123
124
  odoo/addons/l10n_br_fiscal/readme/INSTALL.md,sha256=o2UqimrZMd9MsHpwuO6McKJxOGpxMDRftPX7rCM0PRw,134
124
125
  odoo/addons/l10n_br_fiscal/readme/ROADMAP.md,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
125
126
  odoo/addons/l10n_br_fiscal/readme/USAGE.md,sha256=Dw3uZaHJCUtV0xFq6VOQvF2G5fS_oSBCFqwJyXbt1RY,247
126
- odoo/addons/l10n_br_fiscal/security/fiscal_security.xml,sha256=PxRef68OVjlCVMOJZbhieVxivgKJYJm9r3TiZO4RerA,3362
127
+ odoo/addons/l10n_br_fiscal/security/fiscal_security.xml,sha256=QgqzdExfkca0lMt9kmcymVQj_DISZSKJZ8Ea1qO6e28,3167
127
128
  odoo/addons/l10n_br_fiscal/security/ir.model.access.csv,sha256=MQb64W6Es5ChkVqKBit6bHWKyAtrkgO_VamAaSNhvCQ,14359
128
129
  odoo/addons/l10n_br_fiscal/static/description/icon.png,sha256=Vd1HydYBoGCzNfCqxLlch2i2aeCcyxo-uRxWNp6oMbw,14836
129
- odoo/addons/l10n_br_fiscal/static/description/index.html,sha256=wV5teR6Gg_6zrFsRYdeztcU6xQYVIjD4opERFdN-kYE,26637
130
+ odoo/addons/l10n_br_fiscal/static/description/index.html,sha256=FuB8n_07BT7Ztb5PDCL_u4mN7eKhybUF3j4KSoGQTmw,26637
130
131
  odoo/addons/l10n_br_fiscal/static/img/fiscal_dashboard.png,sha256=Q0fpqFNqEXh6m6E1aJfzSKV2tQ9lC1Y-ofUt6qxVupc,151668
131
132
  odoo/addons/l10n_br_fiscal/static/img/fiscal_line.png,sha256=S4Q4OGSzGnbfm4W5sQVvnD4uUzxS6tbJGT_gs3pB4K0,134276
132
133
  odoo/addons/l10n_br_fiscal/static/img/fiscal_operation.png,sha256=2614c1XjxwVznh707e9gujlUXg0ttutKD1ZiSMTqyv8,105871
@@ -134,7 +135,7 @@ odoo/addons/l10n_br_fiscal/static/img/fiscal_total.png,sha256=MaR6ZoM6ZZEaNZk2yn
134
135
  odoo/addons/l10n_br_fiscal/static/src/js/list_renderer_with_button.esm.js,sha256=Ucw7pymMrW2yi_nNrDMvq6ubyub9QMlqH3ZOoaTEHN0,1243
135
136
  odoo/addons/l10n_br_fiscal/tests/__init__.py,sha256=83m4BimGb-6EseEmmCVaKTSel5GB_vkzbI3YZi4mStE,393
136
137
  odoo/addons/l10n_br_fiscal/tests/test_cnae.py,sha256=mmskSfWaoFSohjmRbnGci_6Euc9fc2zbhyH5FdyeIeA,616
137
- odoo/addons/l10n_br_fiscal/tests/test_document_edition.py,sha256=aQYSQixnTQGk6xPQJ6-i5qbdbEHlua_-c7-tr-IT0V8,7064
138
+ odoo/addons/l10n_br_fiscal/tests/test_document_edition.py,sha256=OTqxFFlgOkrxEZMzV7A5B6wzyDDdRtIeXzfITdbCqeQ,12404
138
139
  odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_generic.py,sha256=Q0ZSCjaqAYNKsrrYEeBBLqxhfaUvmd-XhVHADQoPlQw,39985
139
140
  odoo/addons/l10n_br_fiscal/tests/test_fiscal_document_nfse.py,sha256=nEMaaWfv-sb4o48c1-l7mVnSjks3Tue7XxnQb_Q4cqw,1538
140
141
  odoo/addons/l10n_br_fiscal/tests/test_fiscal_tax.py,sha256=U6JbuqKTcyyFTiW5FZGqGY5yi_aPKaC6_LWz_3sKdpg,11322
@@ -197,7 +198,7 @@ odoo/addons/l10n_br_fiscal/wizards/base_wizard_mixin.py,sha256=-r25us0vdNCSe11Gn
197
198
  odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.py,sha256=KfbqnzFuVx7WAro__W130rgvMWKkDBvkDFglMwTwgBQ,4115
198
199
  odoo/addons/l10n_br_fiscal/wizards/document_import_wizard_mixin.xml,sha256=EAiUBkLBC0st-GSA0y7j771hiC_vglKPCIiC0SvG0gw,1830
199
200
  odoo/addons/l10n_br_fiscal/wizards/document_status_wizard.py,sha256=KsYj5YWWePO7uk0psBsFdnCL71eLWhcyg7_c7J4G6vA,818
200
- odoo_addon_l10n_br_fiscal-16.0.14.0.4.dist-info/METADATA,sha256=l-u2kxi4_3kJJ6QOQFbRRpJyjEITqJQegOaVqpFpvaE,14720
201
- odoo_addon_l10n_br_fiscal-16.0.14.0.4.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
202
- odoo_addon_l10n_br_fiscal-16.0.14.0.4.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
203
- odoo_addon_l10n_br_fiscal-16.0.14.0.4.dist-info/RECORD,,
201
+ odoo_addon_l10n_br_fiscal-16.0.14.1.0.dist-info/METADATA,sha256=7C8a9bwhfCFovPmzR2ojuPXYUsQv0biKcOwVyfuI4rc,14720
202
+ odoo_addon_l10n_br_fiscal-16.0.14.1.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
203
+ odoo_addon_l10n_br_fiscal-16.0.14.1.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
204
+ odoo_addon_l10n_br_fiscal-16.0.14.1.0.dist-info/RECORD,,