odoo-addon-l10n-br-fiscal-edi 15.0.1.0.0.2__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 (42) hide show
  1. odoo/addons/l10n_br_fiscal_edi/README.rst +124 -0
  2. odoo/addons/l10n_br_fiscal_edi/__init__.py +2 -0
  3. odoo/addons/l10n_br_fiscal_edi/__manifest__.py +41 -0
  4. odoo/addons/l10n_br_fiscal_edi/i18n/l10n_br_fiscal_edi.pot +896 -0
  5. odoo/addons/l10n_br_fiscal_edi/models/__init__.py +4 -0
  6. odoo/addons/l10n_br_fiscal_edi/models/document.py +294 -0
  7. odoo/addons/l10n_br_fiscal_edi/models/document_event.py +392 -0
  8. odoo/addons/l10n_br_fiscal_edi/models/document_workflow.py +387 -0
  9. odoo/addons/l10n_br_fiscal_edi/models/invalidate_number.py +53 -0
  10. odoo/addons/l10n_br_fiscal_edi/readme/CONTRIBUTORS.md +5 -0
  11. odoo/addons/l10n_br_fiscal_edi/readme/DESCRIPTION.md +6 -0
  12. odoo/addons/l10n_br_fiscal_edi/readme/ROADMAP.md +6 -0
  13. odoo/addons/l10n_br_fiscal_edi/readme/USAGE.md +7 -0
  14. odoo/addons/l10n_br_fiscal_edi/security/ir.model.access.csv +7 -0
  15. odoo/addons/l10n_br_fiscal_edi/static/description/icon.png +0 -0
  16. odoo/addons/l10n_br_fiscal_edi/static/description/index.html +460 -0
  17. odoo/addons/l10n_br_fiscal_edi/tests/__init__.py +1 -0
  18. odoo/addons/l10n_br_fiscal_edi/tests/test_fiscal_document_generic.py +1191 -0
  19. odoo/addons/l10n_br_fiscal_edi/tests/test_tax_benefit.py +74 -0
  20. odoo/addons/l10n_br_fiscal_edi/tests/test_workflow.py +118 -0
  21. odoo/addons/l10n_br_fiscal_edi/views/document_event_report.xml +15 -0
  22. odoo/addons/l10n_br_fiscal_edi/views/document_event_template.xml +114 -0
  23. odoo/addons/l10n_br_fiscal_edi/views/document_event_view.xml +68 -0
  24. odoo/addons/l10n_br_fiscal_edi/views/document_view.xml +77 -0
  25. odoo/addons/l10n_br_fiscal_edi/views/invalidate_number_view.xml +19 -0
  26. odoo/addons/l10n_br_fiscal_edi/views/l10n_br_fiscal_action.xml +38 -0
  27. odoo/addons/l10n_br_fiscal_edi/views/l10n_br_fiscal_menu.xml +23 -0
  28. odoo/addons/l10n_br_fiscal_edi/wizards/__init__.py +7 -0
  29. odoo/addons/l10n_br_fiscal_edi/wizards/base_wizard_mixin.py +13 -0
  30. odoo/addons/l10n_br_fiscal_edi/wizards/document_cancel_wizard.py +20 -0
  31. odoo/addons/l10n_br_fiscal_edi/wizards/document_cancel_wizard.xml +30 -0
  32. odoo/addons/l10n_br_fiscal_edi/wizards/document_correction_wizard.py +17 -0
  33. odoo/addons/l10n_br_fiscal_edi/wizards/document_correction_wizard.xml +30 -0
  34. odoo/addons/l10n_br_fiscal_edi/wizards/document_import_wizard_mixin.py +132 -0
  35. odoo/addons/l10n_br_fiscal_edi/wizards/document_import_wizard_mixin.xml +44 -0
  36. odoo/addons/l10n_br_fiscal_edi/wizards/document_status_wizard.xml +58 -0
  37. odoo/addons/l10n_br_fiscal_edi/wizards/invalidate_number_wizard.py +33 -0
  38. odoo/addons/l10n_br_fiscal_edi/wizards/invalidate_number_wizard.xml +30 -0
  39. odoo_addon_l10n_br_fiscal_edi-15.0.1.0.0.2.dist-info/METADATA +141 -0
  40. odoo_addon_l10n_br_fiscal_edi-15.0.1.0.0.2.dist-info/RECORD +42 -0
  41. odoo_addon_l10n_br_fiscal_edi-15.0.1.0.0.2.dist-info/WHEEL +5 -0
  42. odoo_addon_l10n_br_fiscal_edi-15.0.1.0.0.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1191 @@
1
+ # @ 2020 Akretion - www.akretion.com.br -
2
+ # Magno Costa <magno.costa@akretion.com.br>
3
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
4
+
5
+
6
+ from odoo.tests import SavepointCase
7
+
8
+ from ..constants.fiscal import (
9
+ SITUACAO_EDOC_A_ENVIAR,
10
+ SITUACAO_EDOC_AUTORIZADA,
11
+ SITUACAO_EDOC_CANCELADA,
12
+ SITUACAO_EDOC_EM_DIGITACAO,
13
+ )
14
+ from ..constants.icms import ICMS_ORIGIN_TAX_IMPORTED
15
+
16
+
17
+ class TestFiscalDocumentGeneric(SavepointCase):
18
+ @classmethod
19
+ def setUpClass(cls):
20
+ super().setUpClass()
21
+ # Contribuinte
22
+ cls.nfe_same_state = cls.env.ref("l10n_br_fiscal.demo_nfe_same_state")
23
+ cls.nfe_other_state = cls.env.ref("l10n_br_fiscal.demo_nfe_other_state")
24
+ cls.nfe_not_taxpayer = cls.env.ref("l10n_br_fiscal.demo_nfe_nao_contribuinte")
25
+
26
+ cls.nfe_not_taxpayer_pf = cls.env.ref(
27
+ "l10n_br_fiscal.demo_nfe_nao_contribuinte_pf"
28
+ )
29
+
30
+ cls.nfe_export = cls.env.ref("l10n_br_fiscal.demo_nfe_export")
31
+
32
+ # Simples Nacional
33
+ cls.nfe_sn_same_state = cls.env.ref("l10n_br_fiscal.demo_nfe_sn_same_state")
34
+ cls.nfe_sn_other_state = cls.env.ref("l10n_br_fiscal.demo_nfe_sn_other_state")
35
+ cls.nfe_sn_not_taxpayer = cls.env.ref(
36
+ "l10n_br_fiscal.demo_nfe_sn_nao_contribuinte"
37
+ )
38
+ cls.nfe_sn_export = cls.env.ref("l10n_br_fiscal.demo_nfe_sn_export")
39
+
40
+ # Compra
41
+ cls.nfe_purchase_same_state = cls.env.ref(
42
+ "l10n_br_fiscal.demo_nfe_purchase_same_state"
43
+ )
44
+
45
+ def test_nfe_same_state(self):
46
+ """Test NFe same state."""
47
+
48
+ self.nfe_same_state._onchange_document_serie_id()
49
+ self.nfe_same_state._onchange_fiscal_operation_id()
50
+
51
+ for line in self.nfe_same_state.fiscal_line_ids:
52
+ # Save the original price_unit value of the line as defined in
53
+ # the NFe demo data.
54
+ original_price_unit = line.price_unit
55
+
56
+ line._onchange_product_id_fiscal()
57
+
58
+ # Restore the original price_unit value,
59
+ # as the product change might have altered it.
60
+ line.price_unit = original_price_unit
61
+
62
+ line._onchange_commercial_quantity()
63
+ line._onchange_ncm_id()
64
+ line._onchange_fiscal_operation_id()
65
+ line._onchange_fiscal_operation_line_id()
66
+ line._onchange_fiscal_taxes()
67
+
68
+ if "Revenda" in line.fiscal_operation_line_id.name:
69
+ self.assertEqual(
70
+ line.cfop_id.code,
71
+ "5102",
72
+ "Error to mappping CFOP 5102"
73
+ " for Revenda de Contribuinte Dentro do Estado.",
74
+ )
75
+ else:
76
+ self.assertEqual(
77
+ line.cfop_id.code,
78
+ "5101",
79
+ "Error to mapping CFOP 5101"
80
+ " for Venda de Contribuinte Dentro do Estado.",
81
+ )
82
+
83
+ icms_internal_sp = [
84
+ self.env.ref("l10n_br_fiscal.tax_icms_4"),
85
+ self.env.ref("l10n_br_fiscal.tax_icms_7"),
86
+ self.env.ref("l10n_br_fiscal.tax_icms_12"),
87
+ self.env.ref("l10n_br_fiscal.tax_icms_18"),
88
+ self.env.ref("l10n_br_fiscal.tax_icms_25"),
89
+ ]
90
+
91
+ is_icms_internal = line.icms_tax_id in icms_internal_sp
92
+
93
+ # ICMS
94
+ self.assertTrue(
95
+ is_icms_internal,
96
+ "Error to mapping ICMS Inernal for {}"
97
+ " for Venda de Contribuinte Dentro do "
98
+ "Estado.".format(self.nfe_same_state.partner_id.state_id.name),
99
+ )
100
+ self.assertEqual(
101
+ line.icms_cst_id.code,
102
+ "00",
103
+ "Error to mapping CST 00 from ICMS 12%"
104
+ " for Venda de Contribuinte Dentro do Estado.",
105
+ )
106
+
107
+ # ICMS FCP
108
+ self.assertFalse(
109
+ line.icmsfcp_tax_id,
110
+ "Error to mapping ICMS FCP 2%"
111
+ " for Venda de Contribuinte Dentro do Estado.",
112
+ )
113
+
114
+ # IPI
115
+ if "Revenda" in line.fiscal_operation_line_id.name:
116
+ self.assertEqual(
117
+ line.ipi_tax_id.name,
118
+ "IPI NT",
119
+ "Error to mapping IPI NT"
120
+ " for Revenda de Contribuinte Dentro do Estado.",
121
+ )
122
+ self.assertEqual(
123
+ line.ipi_cst_id.code,
124
+ "53",
125
+ "Error to mapping CST 53 from IPI NT"
126
+ " to Revenda de Contribuinte Dentro do Estado.",
127
+ )
128
+ else:
129
+ self.assertEqual(
130
+ line.ipi_tax_id.name,
131
+ "IPI 5%",
132
+ "Error to mapping IPI 5%"
133
+ " for Venda de Contribuinte Dentro do Estado.",
134
+ )
135
+ self.assertEqual(
136
+ line.ipi_cst_id.code,
137
+ "50",
138
+ "Error to mapping CST 50 from IPI 5%"
139
+ " to Venda de Contribuinte Dentro do Estado.",
140
+ )
141
+
142
+ # PIS
143
+ self.assertEqual(
144
+ line.pis_tax_id.name,
145
+ "PIS 0,65%",
146
+ "Error to mapping PIS 0,65%"
147
+ " for Venda de Contribuinte Dentro do Estado.",
148
+ )
149
+ self.assertEqual(
150
+ line.pis_cst_id.code,
151
+ "01",
152
+ "Error to mapping CST 01 - Operação Tributável com Alíquota"
153
+ " Básica from PIS 0,65% to Venda de Contribuinte Dentro do Estado.",
154
+ )
155
+
156
+ # PIS
157
+ self.assertEqual(
158
+ line.cofins_tax_id.name,
159
+ "COFINS 3%",
160
+ "Error to mapping COFINS 3%"
161
+ " for Venda de Contribuinte Dentro do Estado.",
162
+ )
163
+ self.assertEqual(
164
+ line.cofins_cst_id.code,
165
+ "01",
166
+ "Error to mapping CST 01 - Operação Tributável com Alíquota Básica"
167
+ " Básica to COFINS 3% de Venda de Contribuinte Dentro do Estado.",
168
+ )
169
+
170
+ product_total = line.price_unit * line.quantity
171
+ self.assertEqual(line.price_gross, product_total)
172
+
173
+ # self.nfe_same_state.action_document_confirm()
174
+
175
+ self.assertEqual(
176
+ self.nfe_same_state.state_edoc,
177
+ SITUACAO_EDOC_A_ENVIAR,
178
+ "Document is not in To Sent state",
179
+ )
180
+
181
+ self.nfe_same_state.action_document_send()
182
+
183
+ # self.assertEqual(
184
+ # self.nfe_same_state.state_edoc,
185
+ # SITUACAO_EDOC_AUTORIZADA,
186
+ # "Document is not in Authorized state",
187
+ # )
188
+
189
+ # Total value of the products
190
+ # self.assertEqual(self.nfe_same_state.amount_price_gross, 200)
191
+
192
+ # result = self.nfe_same_state.action_document_cancel()
193
+ # self.assertTrue(result)
194
+
195
+ def test_nfe_other_state(self):
196
+ """Test NFe other state."""
197
+
198
+ self.nfe_other_state._onchange_document_serie_id()
199
+ self.nfe_other_state._onchange_fiscal_operation_id()
200
+
201
+ for line in self.nfe_other_state.fiscal_line_ids:
202
+ line._onchange_product_id_fiscal()
203
+ line._onchange_commercial_quantity()
204
+ line._onchange_ncm_id()
205
+ line._onchange_fiscal_operation_id()
206
+ line._onchange_fiscal_operation_line_id()
207
+ line._onchange_fiscal_taxes()
208
+
209
+ if "Revenda" in line.fiscal_operation_line_id.name:
210
+ self.assertEqual(
211
+ line.cfop_id.code,
212
+ "6102",
213
+ "Error to mapping CFOP 6102"
214
+ " for Revenda de Contribuinte p/ Fora do Estado.",
215
+ )
216
+ else:
217
+ self.assertEqual(
218
+ line.cfop_id.code,
219
+ "6101",
220
+ "Error to mapping CFOP 6101"
221
+ " for Venda de Contribuinte p/ Fora do Estado.",
222
+ )
223
+
224
+ # ICMS
225
+ if line.product_id.icms_origin in ICMS_ORIGIN_TAX_IMPORTED:
226
+ self.assertEqual(
227
+ line.icms_tax_id.name,
228
+ "ICMS 4%",
229
+ "Error to mapping ICMS 4%"
230
+ " for Venda de Contribuinte p/ Fora do Estado.",
231
+ )
232
+ self.assertEqual(
233
+ line.icms_cst_id.code,
234
+ "00",
235
+ "Error to mapping CST 00 from ICMS 4%"
236
+ " for Venda de Contribuinte p/ Fora do Estado.",
237
+ )
238
+ else:
239
+ self.assertEqual(
240
+ line.icms_tax_id.name,
241
+ "ICMS 7%",
242
+ "Error to mapping ICMS 7%"
243
+ " for Venda de Contribuinte p/ Fora do Estado.",
244
+ )
245
+ self.assertEqual(
246
+ line.icms_cst_id.code,
247
+ "00",
248
+ "Error to mapping CST 00 from ICMS 7%"
249
+ " for Venda de Contribuinte p/ Fora do Estado.",
250
+ )
251
+
252
+ # ICMS FCP
253
+ self.assertFalse(
254
+ line.icmsfcp_tax_id,
255
+ "Error to mapping ICMS FCP 2%"
256
+ " for Venda de Contribuinte Dentro do Estado.",
257
+ )
258
+
259
+ # IPI
260
+ if "Revenda" in line.fiscal_operation_line_id.name:
261
+ self.assertEqual(
262
+ line.ipi_tax_id.name,
263
+ "IPI NT",
264
+ "Error to mapping IPI NT"
265
+ " for Revenda de Contribuinte Dentro do Estado.",
266
+ )
267
+ self.assertEqual(
268
+ line.ipi_cst_id.code,
269
+ "53",
270
+ "Error to mapping CST 53 from IPI NT"
271
+ " to Revenda de Contribuinte Dentro do Estado.",
272
+ )
273
+ else:
274
+ self.assertEqual(
275
+ line.ipi_tax_id.name,
276
+ "IPI 5%",
277
+ "Error to mapping IPI 5%"
278
+ " for Venda de Contribuinte Dentro do Estado.",
279
+ )
280
+ self.assertEqual(
281
+ line.ipi_cst_id.code,
282
+ "50",
283
+ "Error to mapping CST 50 from IPI 5%"
284
+ " to Venda de Contribuinte Dentro do Estado.",
285
+ )
286
+
287
+ # PIS
288
+ self.assertEqual(
289
+ line.pis_tax_id.name,
290
+ "PIS 0,65%",
291
+ "Error to mapping PIS 0,65%"
292
+ " for Venda de Contribuinte p/ Fora do Estado.",
293
+ )
294
+ self.assertEqual(
295
+ line.pis_cst_id.code,
296
+ "01",
297
+ "Error to mapping CST 01 - Operação Tributável com Alíquota"
298
+ " Básica from PIS 0,65% for"
299
+ " Venda de Contribuinte p/ Fora do Estado.",
300
+ )
301
+
302
+ # PIS
303
+ self.assertEqual(
304
+ line.cofins_tax_id.name,
305
+ "COFINS 3%",
306
+ "Error to mapping COFINS 3%"
307
+ " for Venda de Contribuinte p/ Fora do Estado.",
308
+ )
309
+ self.assertEqual(
310
+ line.cofins_cst_id.code,
311
+ "01",
312
+ "Error to mapping CST 01 -"
313
+ " Operação Tributável com Alíquota Básica"
314
+ "from COFINS 3% for Venda de Contribuinte p/ Fora do Estado.",
315
+ )
316
+
317
+ def test_nfe_not_taxpayer(self):
318
+ """Test NFe not taxpayer."""
319
+
320
+ self.nfe_not_taxpayer._onchange_document_serie_id()
321
+ self.nfe_not_taxpayer._onchange_fiscal_operation_id()
322
+
323
+ for line in self.nfe_not_taxpayer.fiscal_line_ids:
324
+ line._onchange_product_id_fiscal()
325
+ line._onchange_commercial_quantity()
326
+ line._onchange_ncm_id()
327
+ line._onchange_fiscal_operation_id()
328
+ line._onchange_fiscal_operation_line_id()
329
+ line._onchange_fiscal_taxes()
330
+
331
+ if "Revenda" in line.fiscal_operation_line_id.name:
332
+ self.assertEqual(
333
+ line.cfop_id.code,
334
+ "6108",
335
+ "Error to mapping CFOP 6108"
336
+ " for Revenda de Contribuinte p/ Não Contribuinte.",
337
+ )
338
+ else:
339
+ self.assertEqual(
340
+ line.cfop_id.code,
341
+ "6107",
342
+ "Error to mapping CFOP 6107"
343
+ " for Venda de Contribuinte p/ Não Contribuinte.",
344
+ )
345
+
346
+ # ICMS
347
+ self.assertEqual(
348
+ line.icms_tax_id.name,
349
+ "ICMS 12%",
350
+ "Error to mapping ICMS 12%"
351
+ " for Venda de Contribuinte p/ Não Contribuinte.",
352
+ )
353
+ self.assertEqual(
354
+ line.icms_cst_id.code,
355
+ "00",
356
+ "Error to mapping CST 00 from ICMS 12%"
357
+ " for Venda de Contribuinte p/ Não Contribuinte.",
358
+ )
359
+
360
+ # ICMS FCP
361
+ self.assertEqual(
362
+ line.icmsfcp_tax_id.name,
363
+ "FCP 2%",
364
+ "Erro ao mapear ICMS FCP 2%"
365
+ " para Venda de Contribuinte p/ Não Contribuinte.",
366
+ )
367
+
368
+ # IPI
369
+ if "Revenda" in line.fiscal_operation_line_id.name:
370
+ self.assertEqual(
371
+ line.ipi_tax_id.name,
372
+ "IPI NT",
373
+ "Error to mapping IPI NT"
374
+ " for Revenda de Contribuinte Dentro do Estado.",
375
+ )
376
+ self.assertEqual(
377
+ line.ipi_cst_id.code,
378
+ "53",
379
+ "Error to mapping CST 53 from IPI NT"
380
+ " to Revenda de Contribuinte Dentro do Estado.",
381
+ )
382
+ else:
383
+ self.assertEqual(
384
+ line.ipi_tax_id.name,
385
+ "IPI 5%",
386
+ "Error to mapping IPI 5%"
387
+ " for Venda de Contribuinte Dentro do Estado.",
388
+ )
389
+ self.assertEqual(
390
+ line.ipi_cst_id.code,
391
+ "50",
392
+ "Error to mapping CST 50 from IPI 5%"
393
+ " to Venda de Contribuinte Dentro do Estado.",
394
+ )
395
+
396
+ # PIS
397
+ self.assertEqual(
398
+ line.pis_tax_id.name,
399
+ "PIS 0,65%",
400
+ "Error to mapping PIS 0,65%"
401
+ " for Venda de Contribuinte p/ Não Contribuinte.",
402
+ )
403
+ self.assertEqual(
404
+ line.pis_cst_id.code,
405
+ "01",
406
+ "Error to mapping CST 01 - Operação Tributável com Alíquota"
407
+ " Básica from PIS 0,65% for"
408
+ " Venda de Contribuinte p/ Não Contribuinte.",
409
+ )
410
+
411
+ # PIS
412
+ self.assertEqual(
413
+ line.cofins_tax_id.name,
414
+ "COFINS 3%",
415
+ "Error to mapping COFINS 3%"
416
+ " for Venda de Contribuinte p/ Não Contribuinte.",
417
+ )
418
+ self.assertEqual(
419
+ line.cofins_cst_id.code,
420
+ "01",
421
+ "Error to mapping CST 01 -"
422
+ " Operação Tributável com Alíquota Básica"
423
+ "from COFINS 3% for Venda de Contribuinte p/ Não Contribuinte.",
424
+ )
425
+
426
+ def test_nfe_not_taxpayer_not_company(self):
427
+ """Test NFe not taxpayer not Company."""
428
+
429
+ self.nfe_not_taxpayer_pf._onchange_document_serie_id()
430
+ self.nfe_not_taxpayer_pf._onchange_fiscal_operation_id()
431
+
432
+ for line in self.nfe_not_taxpayer_pf.fiscal_line_ids:
433
+ line._onchange_product_id_fiscal()
434
+ line._onchange_commercial_quantity()
435
+ line._onchange_ncm_id()
436
+ line._onchange_fiscal_operation_id()
437
+ line._onchange_fiscal_operation_line_id()
438
+ line._onchange_fiscal_taxes()
439
+
440
+ if "Revenda" in line.fiscal_operation_line_id.name:
441
+ self.assertEqual(
442
+ line.cfop_id.code,
443
+ "6108",
444
+ "Error to mapping CFOP 6108"
445
+ " for Revenda de Contribuinte p/ Não Contribuinte.",
446
+ )
447
+ else:
448
+ self.assertEqual(
449
+ line.cfop_id.code,
450
+ "6107",
451
+ "Error to mapping CFOP 6107"
452
+ " for Venda de Contribuinte p/ Não Contribuinte.",
453
+ )
454
+
455
+ # ICMS
456
+ self.assertEqual(
457
+ line.icms_tax_id.name,
458
+ "ICMS 12%",
459
+ "Error to mapping ICMS 12%"
460
+ " for Venda de Contribuinte p/ Não Contribuinte.",
461
+ )
462
+ self.assertEqual(
463
+ line.icms_cst_id.code,
464
+ "00",
465
+ "Error to mapping CST 00 from ICMS 12%"
466
+ " for Venda de Contribuinte p/ Não Contribuinte.",
467
+ )
468
+
469
+ # ICMS FCP
470
+ self.assertEqual(
471
+ line.icmsfcp_tax_id.name,
472
+ "FCP 2%",
473
+ "Erro ao mapear ICMS FCP 2%"
474
+ " para Venda de Contribuinte p/ Não Contribuinte.",
475
+ )
476
+
477
+ # IPI
478
+ if "Revenda" in line.fiscal_operation_line_id.name:
479
+ self.assertEqual(
480
+ line.ipi_tax_id.name,
481
+ "IPI NT",
482
+ "Error to mapping IPI NT"
483
+ " for Revenda de Contribuinte Dentro do Estado.",
484
+ )
485
+ self.assertEqual(
486
+ line.ipi_cst_id.code,
487
+ "53",
488
+ "Error to mapping CST 53 from IPI NT"
489
+ " to Revenda de Contribuinte Dentro do Estado.",
490
+ )
491
+ else:
492
+ self.assertEqual(
493
+ line.ipi_tax_id.name,
494
+ "IPI 5%",
495
+ "Error to mapping IPI 5%"
496
+ " for Venda de Contribuinte Dentro do Estado.",
497
+ )
498
+ self.assertEqual(
499
+ line.ipi_cst_id.code,
500
+ "50",
501
+ "Error to mapping CST 50 from IPI 5%"
502
+ " to Venda de Contribuinte Dentro do Estado.",
503
+ )
504
+
505
+ # PIS
506
+ self.assertEqual(
507
+ line.pis_tax_id.name,
508
+ "PIS 0,65%",
509
+ "Error to mapping PIS 0,65%"
510
+ " for Venda de Contribuinte p/ Não Contribuinte.",
511
+ )
512
+ self.assertEqual(
513
+ line.pis_cst_id.code,
514
+ "01",
515
+ "Error to mapping CST 01 - Operação Tributável com Alíquota"
516
+ " Básica from PIS 0,65% for"
517
+ " Venda de Contribuinte p/ Não Contribuinte.",
518
+ )
519
+
520
+ # PIS
521
+ self.assertEqual(
522
+ line.cofins_tax_id.name,
523
+ "COFINS 3%",
524
+ "Error to mapping COFINS 3%"
525
+ " for Venda de Contribuinte p/ Não Contribuinte.",
526
+ )
527
+ self.assertEqual(
528
+ line.cofins_cst_id.code,
529
+ "01",
530
+ "Error to mapping CST 01 -"
531
+ " Operação Tributável com Alíquota Básica"
532
+ "from COFINS 3% for Venda de Contribuinte p/ Não Contribuinte.",
533
+ )
534
+
535
+ def test_nfe_export(self):
536
+ """Test NFe export."""
537
+
538
+ self.nfe_export._onchange_document_serie_id()
539
+ self.nfe_export._onchange_fiscal_operation_id()
540
+
541
+ for line in self.nfe_export.fiscal_line_ids:
542
+ line._onchange_product_id_fiscal()
543
+ line._onchange_commercial_quantity()
544
+ line._onchange_ncm_id()
545
+ line._onchange_fiscal_operation_id()
546
+ line._onchange_fiscal_operation_line_id()
547
+ line._onchange_fiscal_taxes()
548
+
549
+ if "Revenda" in line.fiscal_operation_line_id.name:
550
+ self.assertEqual(
551
+ line.cfop_id.code,
552
+ "7102",
553
+ "Error to mapping CFOP 7102"
554
+ " for Revenda de Contribuinte p/ o Exterior.",
555
+ )
556
+ else:
557
+ self.assertEqual(
558
+ line.cfop_id.code,
559
+ "7101",
560
+ "Error to mapping CFOP 7101"
561
+ " for Venda de Contribuinte p/ o Exterior.",
562
+ )
563
+
564
+ # ICMS - TODO field missing
565
+ # self.assertEqual(
566
+ # line.icms_tax_id.name, 'ICMS 7%',
567
+ # "Error to mapping ICMS 7%"
568
+ # " for Venda de Contribuinte p/ o Exterior.")
569
+ # self.assertEqual(
570
+ # line.icms_cst_id.code, '00',
571
+ # "Error to mapping CST 00 from ICMS 7%"
572
+ # " for Venda de Contribuinte p/ o Exterior.")
573
+
574
+ # ICMS FCP
575
+ # self.assertEqual(
576
+ # line.icmsfcp_tax_id.name, 'FCP 2%',
577
+ # "Erro ao mapear ICMS FCP 2%"
578
+ # " para Venda de Contribuinte p/ o Exterior.")
579
+
580
+ # IPI
581
+ if "Revenda" in line.fiscal_operation_line_id.name:
582
+ self.assertEqual(
583
+ line.ipi_tax_id.name,
584
+ "IPI NT",
585
+ "Error to mapping IPI NT"
586
+ " for Revenda de Contribuinte Dentro do Estado.",
587
+ )
588
+ self.assertEqual(
589
+ line.ipi_cst_id.code,
590
+ "53",
591
+ "Error to mapping CST 53 from IPI NT"
592
+ " to Revenda de Contribuinte Dentro do Estado.",
593
+ )
594
+ else:
595
+ self.assertEqual(
596
+ line.ipi_tax_id.name,
597
+ "IPI 5%",
598
+ "Error to mapping IPI 5%"
599
+ " for Venda de Contribuinte Dentro do Estado.",
600
+ )
601
+ self.assertEqual(
602
+ line.ipi_cst_id.code,
603
+ "50",
604
+ "Error to mapping CST 50 from IPI 5%"
605
+ " to Venda de Contribuinte Dentro do Estado.",
606
+ )
607
+
608
+ # PIS
609
+ self.assertEqual(
610
+ line.pis_tax_id.name,
611
+ "PIS 0,65%",
612
+ "Error to mapping PIS 0,65%"
613
+ " for Venda de Contribuinte p/ o Exterior.",
614
+ )
615
+ self.assertEqual(
616
+ line.pis_cst_id.code,
617
+ "01",
618
+ "Error to mapping CST 01 - Operação Tributável com Alíquota"
619
+ " Básica from PIS 0,65% for"
620
+ " Venda de Contribuinte p/ o Exterior.",
621
+ )
622
+
623
+ # PIS
624
+ self.assertEqual(
625
+ line.cofins_tax_id.name,
626
+ "COFINS 3%",
627
+ "Error to mapping COFINS 3%"
628
+ " for Venda de Contribuinte p/ o Exterior.",
629
+ )
630
+ self.assertEqual(
631
+ line.cofins_cst_id.code,
632
+ "01",
633
+ "Error to mapping CST 01 -"
634
+ " Operação Tributável com Alíquota Básica"
635
+ "from COFINS 3% for Venda de Contribuinte p/ o Exterior.",
636
+ )
637
+
638
+ def test_nfe_sn_same_state(self):
639
+ """Test NFe Simples Nacional same state."""
640
+
641
+ self.nfe_sn_same_state._onchange_document_serie_id()
642
+ self.nfe_sn_same_state._onchange_fiscal_operation_id()
643
+
644
+ for line in self.nfe_sn_same_state.fiscal_line_ids:
645
+ line._onchange_product_id_fiscal()
646
+ line._onchange_commercial_quantity()
647
+
648
+ # set fake estimate tax
649
+ line.ncm_id.tax_estimate_ids.create(
650
+ {
651
+ "ncm_id": line.ncm_id.id,
652
+ "state_id": line.company_id.state_id.id,
653
+ "key": "fake estimate tax",
654
+ "origin": "fake estimate tax",
655
+ "federal_taxes_national": 33.00,
656
+ }
657
+ )
658
+
659
+ line._onchange_ncm_id()
660
+ line._onchange_fiscal_operation_id()
661
+ line._onchange_fiscal_operation_line_id()
662
+ line._onchange_fiscal_taxes()
663
+
664
+ if "Revenda" in line.fiscal_operation_line_id.name:
665
+ self.assertEqual(
666
+ line.cfop_id.code,
667
+ "5102",
668
+ "Error to mappping CFOP 5102"
669
+ " for Revenda de Simples Nacional Dentro do Estado.",
670
+ )
671
+ # IPI
672
+ self.assertEqual(
673
+ line.ipi_tax_id.name,
674
+ "IPI NT",
675
+ "Error to mapping IPI Simples Nacional"
676
+ " for Venda de Simples Nacional Fora do Estado.",
677
+ )
678
+ self.assertEqual(
679
+ line.ipi_cst_id.code,
680
+ "53",
681
+ "Error to mapping CST 53 from IPI Simples Nacional"
682
+ " for Venda de Simples Nacional Fora do Estado.",
683
+ )
684
+ else:
685
+ self.assertEqual(
686
+ line.cfop_id.code,
687
+ "5101",
688
+ "Error to mapping CFOP 5101"
689
+ " for Venda de Simples Nacional Dentro do Estado.",
690
+ )
691
+ # IPI
692
+ self.assertEqual(
693
+ line.ipi_tax_id.name,
694
+ "IPI Outros",
695
+ "Error to mapping IPI Simples Nacional"
696
+ " for Venda de Simples Nacional Fora do Estado.",
697
+ )
698
+ self.assertEqual(
699
+ line.ipi_cst_id.code,
700
+ "99",
701
+ "Error to mapping CST 99 from IPI Simples Nacional"
702
+ " for Venda de Simples Nacional Fora do Estado.",
703
+ )
704
+
705
+ # ICMS
706
+ self.assertEqual(
707
+ line.icmssn_tax_id.name,
708
+ "ICMS SN Com Permissão de Crédito",
709
+ "Error to mapping ICMS SN Com Permissão de Crédito"
710
+ " for Venda de Simples Nacional Dentro do Estado.",
711
+ )
712
+ self.assertEqual(
713
+ line.icms_cst_id.code,
714
+ "101",
715
+ "Error to mapping CST 101 do ICMS SN Com Permissão de Crédito"
716
+ " for Venda de Simples Nacional Dentro do Estado.",
717
+ )
718
+
719
+ # ICMS FCP - TODO mapping failed
720
+ # self.assertEqual(
721
+ # line.icmsfcp_tax_id.name, 'FCP 2%',
722
+ # "Erro ao mapear ICMS FCP 2%"
723
+ # " para Venda de Simples Nacional Dentro do Estado.")
724
+
725
+ # PIS
726
+ self.assertEqual(
727
+ line.pis_tax_id.name,
728
+ "PIS Outros",
729
+ "Error to mapping PIS Simples Nacional"
730
+ " for Venda de Simples Nacional Dentro do Estado.",
731
+ )
732
+ self.assertEqual(
733
+ line.pis_cst_id.code,
734
+ "49",
735
+ "Error to mapping CST 49 Outras Operações de Saída"
736
+ " from PIS Simples Nacional from Venda de"
737
+ " Simples Nacional Dentro do Estado.",
738
+ )
739
+
740
+ # COFINS
741
+ self.assertEqual(
742
+ line.cofins_tax_id.name,
743
+ "COFINS Outros",
744
+ "Error to mapping COFINS Simples Nacional"
745
+ " for Venda de Simples Nacional Dentro do Estado.",
746
+ )
747
+ self.assertEqual(
748
+ line.cofins_cst_id.code,
749
+ "49",
750
+ "Error to mapping CST 49 Outras Operações de Saída"
751
+ " from COFINS Simples Nacional for Venda de"
752
+ " Simples Nacional Fora do Estado.",
753
+ )
754
+
755
+ # ESTIMATE TAXES
756
+ self.assertEqual(self.nfe_sn_same_state.amount_estimate_tax, 1308.45)
757
+
758
+ def test_nfe_sn_other_state(self):
759
+ """Test NFe SN other state."""
760
+
761
+ self.nfe_sn_other_state._onchange_document_serie_id()
762
+ self.nfe_sn_other_state._onchange_fiscal_operation_id()
763
+
764
+ for line in self.nfe_sn_other_state.fiscal_line_ids:
765
+ line._onchange_product_id_fiscal()
766
+ line._onchange_commercial_quantity()
767
+ line._onchange_ncm_id()
768
+ line._onchange_fiscal_operation_id()
769
+ line._onchange_fiscal_operation_line_id()
770
+ line._onchange_fiscal_taxes()
771
+
772
+ if "Revenda" in line.fiscal_operation_line_id.name:
773
+ self.assertEqual(
774
+ line.cfop_id.code,
775
+ "6102",
776
+ "Error to mappping CFOP 6102"
777
+ " for Revenda de Simples Nacional Fora do Estado.",
778
+ )
779
+ # IPI
780
+ self.assertEqual(
781
+ line.ipi_tax_id.name,
782
+ "IPI NT",
783
+ "Error to mapping IPI Simples Nacional"
784
+ " for Venda de Simples Nacional Fora do Estado.",
785
+ )
786
+ self.assertEqual(
787
+ line.ipi_cst_id.code,
788
+ "53",
789
+ "Error to mapping CST 53 from IPI Simples Nacional"
790
+ " for Venda de Simples Nacional Fora do Estado.",
791
+ )
792
+ else:
793
+ self.assertEqual(
794
+ line.cfop_id.code,
795
+ "6101",
796
+ "Error to mapping CFOP 6101"
797
+ " for Venda de Simples Nacional Fora do Estado.",
798
+ )
799
+ # IPI
800
+ self.assertEqual(
801
+ line.ipi_tax_id.name,
802
+ "IPI Outros",
803
+ "Error to mapping IPI Simples Nacional"
804
+ " for Venda de Simples Nacional Fora do Estado.",
805
+ )
806
+ self.assertEqual(
807
+ line.ipi_cst_id.code,
808
+ "99",
809
+ "Error to mapping CST 99 from IPI Simples Nacional"
810
+ " for Venda de Simples Nacional Fora do Estado.",
811
+ )
812
+
813
+ # ICMS
814
+ self.assertEqual(
815
+ line.icmssn_tax_id.name,
816
+ "ICMS SN Com Permissão de Crédito",
817
+ "Error to mapping ICMS SN Com Permissão de Crédito"
818
+ " for Venda de Simples Nacional Dentro do Estado.",
819
+ )
820
+ self.assertEqual(
821
+ line.icms_cst_id.code,
822
+ "101",
823
+ "Erro ao mapear a CST 101 do ICMS SN Com Permissão de Crédito"
824
+ " para Venda de Simples Nacional Dentro do Estado.",
825
+ )
826
+
827
+ # ICMS FCP - TODO mapping failed
828
+ # self.assertEqual(
829
+ # line.icmsfcp_tax_id.name, 'FCP 2%',
830
+ # "Erro ao mapear ICMS FCP 2%"
831
+ # " para Venda de Simples Nacional Fora do Estado.")
832
+
833
+ # PIS
834
+ self.assertEqual(
835
+ line.pis_tax_id.name,
836
+ "PIS Outros",
837
+ "Erro ao mapear PIS Simples Nacional"
838
+ " para Venda de Simples Nacional Fora do Estado.",
839
+ )
840
+ self.assertEqual(
841
+ line.pis_cst_id.code,
842
+ "49",
843
+ "Erro ao mapear a CST 49 Outras Operações de Saída"
844
+ " com Alíquota Básica do PIS Simples Nacional de Venda de"
845
+ " Simples Nacional Dentro do Estado.",
846
+ )
847
+
848
+ # COFINS
849
+ self.assertEqual(
850
+ line.cofins_tax_id.name,
851
+ "COFINS Outros",
852
+ "Error to mapping COFINS Simples Nacional"
853
+ " for Venda de Simples Nacional Dentro do Estado.",
854
+ )
855
+ self.assertEqual(
856
+ line.cofins_cst_id.code,
857
+ "49",
858
+ "Error to mapping CST 49 Outras Operações de Saída"
859
+ " from COFINS Simples Nacional for Venda de"
860
+ " Simples Nacional Fora do Estado.",
861
+ )
862
+
863
+ def test_nfe_sn_not_taxpayer(self):
864
+ """Test NFe SN not taxpayer."""
865
+
866
+ self.nfe_sn_not_taxpayer._onchange_document_serie_id()
867
+ self.nfe_sn_not_taxpayer._onchange_fiscal_operation_id()
868
+
869
+ for line in self.nfe_sn_not_taxpayer.fiscal_line_ids:
870
+ line._onchange_product_id_fiscal()
871
+ line._onchange_commercial_quantity()
872
+ line._onchange_ncm_id()
873
+ line._onchange_fiscal_operation_id()
874
+ line._onchange_fiscal_operation_line_id()
875
+ line._onchange_fiscal_taxes()
876
+
877
+ if "Revenda" in line.fiscal_operation_line_id.name:
878
+ self.assertEqual(
879
+ line.cfop_id.code,
880
+ "5102",
881
+ "Error to mappping CFOP 5102"
882
+ " for Revenda de Simples Nacional Fora do Estado.",
883
+ )
884
+ else:
885
+ self.assertEqual(
886
+ line.cfop_id.code,
887
+ "5101",
888
+ "Error to mapping CFOP 5101"
889
+ " for Venda de Simples Nacional Fora do Estado.",
890
+ )
891
+
892
+ # ICMS
893
+ self.assertEqual(
894
+ line.icms_tax_id.name,
895
+ "ICMS 18%",
896
+ "Error to mapping ICMS 18%"
897
+ " for Venda de Simples Nacional Fora do Estado.",
898
+ )
899
+ self.assertEqual(
900
+ line.icms_cst_id.code,
901
+ "00",
902
+ "Erro ao mapear a CST 00 do ICMS 18%"
903
+ " para Venda de Simples Nacional Fora do Estado.",
904
+ )
905
+
906
+ # ICMS FCP
907
+ # self.assertEqual(
908
+ # line.icmsfcp_tax_id.name, 'FCP 2%',
909
+ # "Erro ao mapear ICMS FCP 2%"
910
+ # " para Venda de Simples Nacional Fora do Estado.")
911
+
912
+ # IPI
913
+ self.assertEqual(
914
+ line.ipi_tax_id.name,
915
+ "IPI 5%",
916
+ "Erro ao mapear IPI 5%"
917
+ " para Venda de Simples Nacional Fora do Estado.",
918
+ )
919
+ self.assertEqual(
920
+ line.ipi_cst_id.code,
921
+ "50",
922
+ "Erro ao mapear a CST 50 do IPI 5%"
923
+ " de Venda de Simples Nacional Fora do Estado.",
924
+ )
925
+
926
+ # PIS
927
+ self.assertEqual(
928
+ line.pis_tax_id.name,
929
+ "PIS 0,65%",
930
+ "Erro ao mapear PIS 0,65%"
931
+ " para Venda de Simples Nacional Fora do Estado.",
932
+ )
933
+ self.assertEqual(
934
+ line.pis_cst_id.code,
935
+ "01",
936
+ "Erro ao mapear a CST 01 - Operação Tributável"
937
+ " com Alíquota Básica do PIS 0,65% de Venda de"
938
+ " Simples Nacional Fora do Estado.",
939
+ )
940
+
941
+ # PIS
942
+ self.assertEqual(
943
+ line.cofins_tax_id.name,
944
+ "COFINS 3%",
945
+ "Erro ao mapear COFINS 3%"
946
+ " para Venda de Simples Nacional Dentro do Estado.",
947
+ )
948
+ self.assertEqual(
949
+ line.cofins_cst_id.code,
950
+ "01",
951
+ "Erro ao mapear a CST 01 - Operação Tributável"
952
+ " com Alíquota Básica do COFINS 3% de Venda de"
953
+ " Simples Nacional Fora do Estado.",
954
+ )
955
+
956
+ def test_nfe_sn_export(self):
957
+ """Test NFe SN export."""
958
+
959
+ self.nfe_sn_export._onchange_document_serie_id()
960
+ self.nfe_sn_export._onchange_fiscal_operation_id()
961
+
962
+ for line in self.nfe_sn_export.fiscal_line_ids:
963
+ line._onchange_product_id_fiscal()
964
+ line._onchange_commercial_quantity()
965
+ line._onchange_ncm_id()
966
+ line._onchange_fiscal_operation_id()
967
+ line._onchange_fiscal_operation_line_id()
968
+ line._onchange_fiscal_taxes()
969
+
970
+ if "Revenda" in line.fiscal_operation_line_id.name:
971
+ self.assertEqual(
972
+ line.cfop_id.code,
973
+ "7102",
974
+ "Error to mapping CFOP 7102"
975
+ " for Revenda de Contribuinte p/ o Exterior.",
976
+ )
977
+ # IPI
978
+ self.assertEqual(
979
+ line.ipi_tax_id.name,
980
+ "IPI NT",
981
+ "Error to mapping IPI Simples Nacional"
982
+ " for Venda de Simples Nacional Fora do Estado.",
983
+ )
984
+ self.assertEqual(
985
+ line.ipi_cst_id.code,
986
+ "53",
987
+ "Error to mapping CST 53 from IPI Simples Nacional"
988
+ " for Venda de Simples Nacional Fora do Estado.",
989
+ )
990
+ else:
991
+ self.assertEqual(
992
+ line.cfop_id.code,
993
+ "7101",
994
+ "Error to mapping CFOP 7101"
995
+ " for Venda de Contribuinte p/ o Exterior.",
996
+ )
997
+ # IPI
998
+ self.assertEqual(
999
+ line.ipi_tax_id.name,
1000
+ "IPI Outros",
1001
+ "Error to mapping IPI Simples Nacional"
1002
+ " for Venda de Simples Nacional Fora do Estado.",
1003
+ )
1004
+ self.assertEqual(
1005
+ line.ipi_cst_id.code,
1006
+ "99",
1007
+ "Error to mapping CST 99 from IPI Simples Nacional"
1008
+ " for Venda de Simples Nacional Fora do Estado.",
1009
+ )
1010
+
1011
+ # ICMS
1012
+ self.assertEqual(
1013
+ line.icmssn_tax_id.name,
1014
+ "ICMS SN Com Permissão de Crédito",
1015
+ "Error to mapping ICMS SN Com Permissão de Crédito"
1016
+ " for Venda de Simples Nacional Dentro do Estado.",
1017
+ )
1018
+ self.assertEqual(
1019
+ line.icms_cst_id.code,
1020
+ "101",
1021
+ "Erro ao mapear a CST 101 do ICMS SN Com Permissão de Crédito"
1022
+ " para Venda de Simples Nacional Dentro do Estado.",
1023
+ )
1024
+
1025
+ # ICMS FCP
1026
+ # self.assertEqual(
1027
+ # line.icmsfcp_tax_id.name, 'FCP 2%',
1028
+ # "Erro ao mapear ICMS FCP 2%"
1029
+ # " para Venda de Contribuinte p/ o Exterior.")
1030
+
1031
+ # PIS
1032
+ self.assertEqual(
1033
+ line.pis_tax_id.name,
1034
+ "PIS Outros",
1035
+ "Erro ao mapear PIS Simples Nacional"
1036
+ " para Venda de Simples Nacional Fora do Estado.",
1037
+ )
1038
+ self.assertEqual(
1039
+ line.pis_cst_id.code,
1040
+ "49",
1041
+ "Erro ao mapear a CST 49 Outras Operações de Saída"
1042
+ " com Alíquota Básica do PIS Simples Nacional de Venda de"
1043
+ " Simples Nacional Dentro do Estado.",
1044
+ )
1045
+
1046
+ # COFINS
1047
+ self.assertEqual(
1048
+ line.cofins_tax_id.name,
1049
+ "COFINS Outros",
1050
+ "Error to mapping COFINS Simples Nacional"
1051
+ " for Venda de Simples Nacional Dentro do Estado.",
1052
+ )
1053
+ self.assertEqual(
1054
+ line.cofins_cst_id.code,
1055
+ "49",
1056
+ "Error to mapping CST 49 Outras Operações de Saída"
1057
+ " from COFINS Simples Nacional for Venda de"
1058
+ " Simples Nacional Fora do Estado.",
1059
+ )
1060
+
1061
+ def test_nfe_return(self):
1062
+ """Test Fiscal Document Return"""
1063
+ action = self.nfe_same_state.action_create_return()
1064
+ return_id = self.nfe_same_state.browse(
1065
+ [i[2][0] for i in action["domain"] if i[0] == "id"]
1066
+ )
1067
+
1068
+ self.assertEqual(
1069
+ return_id.fiscal_operation_id.id,
1070
+ self.nfe_same_state.fiscal_operation_id.return_fiscal_operation_id.id,
1071
+ "Error on creation return",
1072
+ )
1073
+
1074
+ def test_nfe_comments(self):
1075
+ self.nfe_not_taxpayer._document_comment()
1076
+ additional_data = self.nfe_not_taxpayer.fiscal_line_ids[0].additional_data
1077
+ self.assertEqual(
1078
+ additional_data,
1079
+ "manual comment test - Valor Aprox. dos Tributos: R$ 0,00",
1080
+ # TODO FIXME changed 0.00 to 0,00 to get tests pass on v13, but not
1081
+ # correct
1082
+ )
1083
+
1084
+ def test_fields_freight_insurance_other_costs(self):
1085
+ """Test fields Freight, Insurance and Other Costs when
1086
+ defined or By Line or By Total.
1087
+ """
1088
+
1089
+ # Teste definindo os valores Por Linha
1090
+ for line in self.nfe_same_state.fiscal_line_ids:
1091
+ line.freight_value = 10.0
1092
+ line.insurance_value = 10.0
1093
+ line.other_value = 10.0
1094
+
1095
+ self.assertEqual(
1096
+ self.nfe_same_state.amount_freight_value,
1097
+ 20.0,
1098
+ "Unexpected value for the field" " Amount Freight in Fiscal Document line",
1099
+ )
1100
+ self.assertEqual(
1101
+ self.nfe_same_state.amount_insurance_value,
1102
+ 20.0,
1103
+ "Unexpected value for the field"
1104
+ " Amount Insurance in Fiscal Document line",
1105
+ )
1106
+ self.assertEqual(
1107
+ self.nfe_same_state.amount_other_value,
1108
+ 20.0,
1109
+ "Unexpected value for the field"
1110
+ " Amount Other Value in Fiscal Document line",
1111
+ )
1112
+
1113
+ # Teste definindo os valores Por Total
1114
+ # Por padrão a definição dos campos está por Linha
1115
+ self.nfe_same_state.company_id.delivery_costs = "total"
1116
+
1117
+ # Caso que os Campos na Linha tem valor
1118
+ self.nfe_same_state.amount_freight_value = 10.0
1119
+ self.nfe_same_state.amount_insurance_value = 10.0
1120
+ self.nfe_same_state.amount_other_value = 10.0
1121
+
1122
+ for line in self.nfe_same_state.fiscal_line_ids:
1123
+ self.assertEqual(
1124
+ line.freight_value,
1125
+ 5.0,
1126
+ "Unexpected value for the field" " Freight in Fiscal Document line",
1127
+ )
1128
+ self.assertEqual(
1129
+ line.insurance_value,
1130
+ 5.0,
1131
+ "Unexpected value for the field" " Insurance in Fiscal Document line",
1132
+ )
1133
+ self.assertEqual(
1134
+ line.other_value,
1135
+ 5.0,
1136
+ "Unexpected value for the field"
1137
+ " Other Values in Fiscal Document line",
1138
+ )
1139
+
1140
+ # Caso que os Campos na Linha não tem valor
1141
+ for line in self.nfe_same_state.fiscal_line_ids:
1142
+ line.freight_value = 0.0
1143
+ line.insurance_value = 0.0
1144
+ line.other_value = 0.0
1145
+
1146
+ self.nfe_same_state.amount_freight_value = 20.0
1147
+ self.nfe_same_state.amount_insurance_value = 20.0
1148
+ self.nfe_same_state.amount_other_value = 20.0
1149
+
1150
+ for line in self.nfe_same_state.fiscal_line_ids:
1151
+ self.assertEqual(
1152
+ line.freight_value,
1153
+ 10.0,
1154
+ "Unexpected value for the field" " Freight in Fiscal Document line",
1155
+ )
1156
+ self.assertEqual(
1157
+ line.insurance_value,
1158
+ 10.0,
1159
+ "Unexpected value for the field" " Insurance in Fiscal Document line",
1160
+ )
1161
+ self.assertEqual(
1162
+ line.other_value,
1163
+ 10.0,
1164
+ "Unexpected value for the field"
1165
+ " Other Values in Fiscal Document line",
1166
+ )
1167
+
1168
+ def test_nfe_purchase_same_state(self):
1169
+ # self.nfe_purchase_same_state.action_document_confirm()
1170
+
1171
+ self.assertEqual(
1172
+ self.nfe_purchase_same_state.state_edoc,
1173
+ SITUACAO_EDOC_AUTORIZADA,
1174
+ "Document is not in Authorized state",
1175
+ )
1176
+
1177
+ self.nfe_purchase_same_state.action_document_back2draft()
1178
+
1179
+ self.assertEqual(
1180
+ self.nfe_purchase_same_state.state_edoc,
1181
+ SITUACAO_EDOC_EM_DIGITACAO,
1182
+ "Document is not in Draft state",
1183
+ )
1184
+
1185
+ self.nfe_purchase_same_state.action_document_cancel()
1186
+
1187
+ self.assertEqual(
1188
+ self.nfe_purchase_same_state.state_edoc,
1189
+ SITUACAO_EDOC_CANCELADA,
1190
+ "Document is not in Canceled state",
1191
+ )