ipiranga-inovai-project-lib 0.8__py3-none-any.whl → 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.
Files changed (35) hide show
  1. inovai/models/Endereco.py +101 -0
  2. inovai/models/NFe.py +474 -0
  3. inovai/models/NFeBoleto.py +218 -0
  4. inovai/models/NFeCartao.py +62 -0
  5. inovai/models/NFeDetalhePagamento.py +67 -0
  6. inovai/models/NFeDocImportacao.py +117 -0
  7. inovai/models/NFeDocImportacaoAdicao.py +66 -0
  8. inovai/models/NFeDocRef.py +82 -0
  9. inovai/models/NFeDuplicata.py +58 -0
  10. inovai/models/NFeEnvioXML.py +66 -0
  11. inovai/models/NFeEnvolvido.py +108 -0
  12. inovai/models/NFeExportacao.py +58 -0
  13. inovai/models/NFeFatura.py +62 -0
  14. inovai/models/NFeImposto.py +232 -0
  15. inovai/models/NFeImpostoRetido.py +114 -0
  16. inovai/models/NFeIntermediadorTransacao.py +54 -0
  17. inovai/models/NFeItem.py +252 -0
  18. inovai/models/NFeItemDadosCombustivel.py +79 -0
  19. inovai/models/NFeItemExportacao.py +94 -0
  20. inovai/models/NFeItemOrigemCombustivel.py +57 -0
  21. inovai/models/NFeObservacao.py +58 -0
  22. inovai/models/NFeObservacaoItem.py +58 -0
  23. inovai/models/NFeOrigem.py +58 -0
  24. inovai/models/NFePagamento.py +55 -0
  25. inovai/models/NFeProcReferenciado.py +58 -0
  26. inovai/models/NFeTransporte.py +78 -0
  27. inovai/models/NFeVeiculo.py +62 -0
  28. inovai/models/NFeVolume.py +74 -0
  29. inovai/models/__init__.py +0 -0
  30. {ipiranga_inovai_project_lib-0.8.dist-info → ipiranga_inovai_project_lib-1.0.dist-info}/METADATA +1 -1
  31. ipiranga_inovai_project_lib-1.0.dist-info/RECORD +37 -0
  32. ipiranga_inovai_project_lib-0.8.dist-info/RECORD +0 -8
  33. {ipiranga_inovai_project_lib-0.8.dist-info → ipiranga_inovai_project_lib-1.0.dist-info}/LICENSE +0 -0
  34. {ipiranga_inovai_project_lib-0.8.dist-info → ipiranga_inovai_project_lib-1.0.dist-info}/WHEEL +0 -0
  35. {ipiranga_inovai_project_lib-0.8.dist-info → ipiranga_inovai_project_lib-1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,101 @@
1
+ import xml.etree.ElementTree as ET
2
+
3
+
4
+ class Endereco:
5
+ bairro: str
6
+ cep: str
7
+ complemento: str
8
+ logradouro: str
9
+ municipioCodigoIBGE: str
10
+ municipioNome: str
11
+ numero: str
12
+ paisCodigoIBGE: str
13
+ paisNome: str
14
+ telefone: str
15
+ uf: str
16
+
17
+ def __init__(self, **json):
18
+ if json:
19
+ for key, typeProp in self.__class__.__dict__['__annotations__'].items():
20
+ # str, float, bool, int
21
+ class_name = str(typeProp).split("'")[1].split(".")[-1]
22
+
23
+ if key in json:
24
+ if isinstance(typeProp, list):
25
+ cls = globals()[class_name]
26
+ items = []
27
+ for item_data in json[key]:
28
+ item = cls(**item_data)
29
+ items.append(item)
30
+ setattr(self, key, items)
31
+ elif class_name not in ('str', 'int', 'float', 'bool'):
32
+ cls = globals()[class_name]
33
+ instance = cls(**json[key])
34
+ setattr(self, key, instance)
35
+ else:
36
+ setattr(self, key, str(json[key]))
37
+ else:
38
+ if isinstance(typeProp, list):
39
+ # cls = globals()[class_name]
40
+ items = []
41
+ setattr(self, key, items)
42
+ elif class_name not in ('str', 'int', 'float', 'bool'):
43
+ cls = globals()[class_name]
44
+ instance = cls()
45
+ setattr(self, key, instance)
46
+ else:
47
+ setattr(self, key, '')
48
+ else:
49
+ for key, typeProp in self.__class__.__dict__['__annotations__'].items():
50
+ class_name = str(typeProp).split("'")[1].split(".")[-1]
51
+ if isinstance(typeProp, list):
52
+ # cls = globals()[class_name]
53
+ items = []
54
+ setattr(self, key, items)
55
+ elif class_name not in ('str', 'int', 'float', 'bool'):
56
+ cls = globals()[class_name]
57
+ instance = cls()
58
+ setattr(self, key, instance)
59
+ else:
60
+ setattr(self, key, '')
61
+ def __repr__(self):
62
+ return f'Enderço ({", ".join(f"{key}={value}" for key, value in self.__dict__.items())})'
63
+
64
+ def get_bairro(self):
65
+ return self.bairro
66
+
67
+ def get_cep(self):
68
+ return self.cep
69
+
70
+ def get_complemento(self):
71
+ return self.complemento
72
+
73
+ def get_logradouro(self):
74
+ return self.logradouro
75
+
76
+ def get_municipioCodigoIBGE(self):
77
+ if len(str(self.municipioCodigoIBGE)) > 5: # TODO tirar isso dps de alinhamento com tributos
78
+ return str(self.municipioCodigoIBGE)[2:7]
79
+ return str(self.municipioCodigoIBGE)
80
+
81
+ def get_municipioNome(self):
82
+ return self.municipioNome
83
+
84
+ def get_numero(self):
85
+ return self.numero
86
+
87
+ def get_paisCodigoIBGE(self):
88
+ return self.paisCodigoIBGE
89
+
90
+ def get_paisNome(self):
91
+ return self.paisNome
92
+
93
+ def get_telefone(self):
94
+ return self.telefone
95
+
96
+ def get_uf(self):
97
+ return self.uf
98
+
99
+ def to_xml(self, root_element):
100
+ modelo_element = ET.SubElement(root_element, 'UF_ORIG_DEST')
101
+ modelo_element.text = self.get_uf()
inovai/models/NFe.py ADDED
@@ -0,0 +1,474 @@
1
+ from config import context
2
+ from domain.enum.document_type import DocumentType
3
+ from inovai.enums import TaxType
4
+ from domain.models.NFeBoleto import NFeBoleto
5
+ from domain.models.NFeDocRef import NFeDocRef
6
+ from domain.models.NFeDuplicata import NFeDuplicata
7
+ from domain.models.NFeEnvioXML import NFeEnvioXML
8
+ from domain.models.NFeEnvolvido import NFeEnvolvido
9
+ from domain.models.NFeExportacao import NFeExportacao
10
+ from domain.models.NFeFatura import NFeFatura
11
+ from domain.models.NFeImpostoRetido import NFeImpostoRetido
12
+ from domain.models.NFeIntermediadorTransacao import NFeIntermediadorTransacao
13
+ from domain.models.NFeItem import NFeItem
14
+ from domain.models.NFeObservacao import NFeObservacao
15
+ from domain.models.NFePagamento import NFePagamento
16
+ from domain.models.NFeProcReferenciado import NFeProcReferenciado
17
+ from domain.models.NFeTransporte import NFeTransporte
18
+ import xml.etree.ElementTree as ET
19
+
20
+ from domain.util.util import format_date
21
+
22
+
23
+ class NFe:
24
+ boletos: [NFeBoleto]
25
+ chaveAcesso: str
26
+ cnpjMovimentacao: str
27
+ codFilial: str
28
+ codHolding: str
29
+ codMatriz: str
30
+ compraContrato: str
31
+ compraEmpenho: str
32
+ compraPedido: str
33
+ contingenciaDataHora: str
34
+ contingenciaJustificativa: str
35
+ dadosAdicionais: str
36
+ dadosAdicionaisFisco: str
37
+ dadosObservacao: [NFeObservacao]
38
+ dataFechadia: str
39
+ dataFiscal: str
40
+ destinatario: NFeEnvolvido
41
+ destino: int
42
+ docNum: str
43
+ documentosRef: [NFeDocRef]
44
+ dthEmissao: str
45
+ dthSaiEnt: str
46
+ duplicatas: [NFeDuplicata]
47
+ eConsumidor: bool
48
+ emitente: NFeEnvolvido
49
+ enviosXML: [NFeEnvioXML]
50
+ exportacao: NFeExportacao
51
+ fatura: NFeFatura
52
+ finalidade: str
53
+ idNfEntrada: str
54
+ impostosRetidos: [NFeImpostoRetido]
55
+ intermediadorTransacao: NFeIntermediadorTransacao
56
+ itens: [NFeItem]
57
+ localEntrega: NFeEnvolvido
58
+ localRetirada: NFeEnvolvido
59
+ modelo: str
60
+ natopCodigo: str
61
+ natopDescricao: str
62
+ numero: int
63
+ numeroAleatorio: str
64
+ pagamento: NFePagamento
65
+ possuiIntermediario: bool
66
+ prerecebimentoDtHrSinc: str
67
+ processoReferenciado: NFeProcReferenciado
68
+ protocoloDataHora: str
69
+ protocoloNumero: str
70
+ serie: str
71
+ situacaoNF: str
72
+ statusTransmissao: str
73
+ tentativaTransmissao: float
74
+ tipoDoc: str
75
+ tipoEmissao: str
76
+ tipoNota: str
77
+ tipoPresOperador: str
78
+ transporte: NFeTransporte
79
+ transporteModFrete: str
80
+ ultimaAtualizacaoStatus: str
81
+ valorBCICMS: float
82
+ valorBCICMSMonoRetencao: float
83
+ valorBCICMSMonoRetido: float
84
+ valorBCICMSMonofasico: float
85
+ valorBCICMSST: float
86
+ valorBaseCOFINS: float
87
+ valorBaseINSS: float
88
+ valorBaseISSRet: float
89
+ valorBasePIS: float
90
+ valorBaseReduICMS: float
91
+ valorBaseTributIPI: float
92
+ valorBaseTributISS: float
93
+ valorCOFINS: float
94
+ valorDesconto: float
95
+ valorFCP: float
96
+ valorFCPST: float
97
+ valorFCPSTRet: float
98
+ valorFCPUFDest: float
99
+ valorFrete: float
100
+ valorICMS: float
101
+ valorICMSDeson: float
102
+ valorICMSMonoRetencao: float
103
+ valorICMSMonoRetido: float
104
+ valorICMSMonofasico: float
105
+ valorICMSST: float
106
+ valorII: float
107
+ valorIPI: float
108
+ valorIPIDevol: float
109
+ valorISS: float
110
+ valorISSRet: float
111
+ valorMercadoria: float
112
+ valorNotaFiscal: float
113
+ valorOutros: float
114
+ valorPIS: float
115
+ valorRetBCIRRF: float
116
+ valorRetBCPrev: float
117
+ valorRetCOFINS: float
118
+ valorRetCSLL: float
119
+ valorRetIRRF: float
120
+ valorRetPIS: float
121
+ valorRetPrev: float
122
+ valorSeguro: float
123
+ valorTotalTrib: float
124
+
125
+ def __init__(self, **json):
126
+ if json:
127
+ for key, typeProp in self.__class__.__dict__['__annotations__'].items():
128
+ # str, float, bool, int
129
+ class_name = str(typeProp).split("'")[1].split(".")[-1]
130
+
131
+ if key in json:
132
+ if isinstance(typeProp, list):
133
+ cls = globals()[class_name]
134
+ items = []
135
+ for item_data in json[key]:
136
+ item = cls(**item_data)
137
+ items.append(item)
138
+ setattr(self, key, items)
139
+ elif class_name not in ('str', 'int', 'float', 'bool'):
140
+ cls = globals()[class_name]
141
+ instance = cls(**json[key])
142
+ setattr(self, key, instance)
143
+ else:
144
+ setattr(self, key, str(json[key]))
145
+ else:
146
+ if isinstance(typeProp, list):
147
+ # cls = globals()[class_name]
148
+ items = []
149
+ setattr(self, key, items)
150
+ elif class_name not in ('str', 'int', 'float', 'bool'):
151
+ cls = globals()[class_name]
152
+ instance = cls()
153
+ setattr(self, key, instance)
154
+ else:
155
+ setattr(self, key, '')
156
+ else:
157
+ for key, typeProp in self.__class__.__dict__['__annotations__'].items():
158
+ class_name = str(typeProp).split("'")[1].split(".")[-1]
159
+ if isinstance(typeProp, list):
160
+ # cls = globals()[class_name]
161
+ items = []
162
+ setattr(self, key, items)
163
+ elif class_name not in ('str', 'int', 'float', 'bool'):
164
+ cls = globals()[class_name]
165
+ instance = cls()
166
+ setattr(self, key, instance)
167
+ else:
168
+ setattr(self, key, '')
169
+
170
+ def get_boletos(self):
171
+ return self.boletos
172
+
173
+ def get_chaveAcesso(self):
174
+ return self.chaveAcesso
175
+
176
+ def get_cnpjMovimentacao(self):
177
+ return self.cnpjMovimentacao
178
+
179
+ def get_codFilial(self):
180
+ return self.codFilial
181
+
182
+ def get_codHolding(self):
183
+ return self.codHolding
184
+
185
+ def get_codMatriz(self):
186
+ return self.codMatriz
187
+
188
+ def get_compraContrato(self):
189
+ return self.compraContrato
190
+
191
+ def get_compraEmpenho(self):
192
+ return self.compraEmpenho
193
+
194
+ def get_compraPedido(self):
195
+ return self.compraPedido
196
+
197
+ def get_contingenciaDataHora(self):
198
+ return self.contingenciaDataHora
199
+
200
+ def get_contingenciaJustificativa(self):
201
+ return self.contingenciaJustificativa
202
+
203
+ def get_dadosAdicionais(self):
204
+ return self.dadosAdicionais
205
+
206
+ def get_dadosAdicionaisFisco(self):
207
+ return self.dadosAdicionaisFisco
208
+
209
+ def get_dadosObservacao(self):
210
+ return self.dadosObservacao
211
+
212
+ def get_dataFechadia(self):
213
+ return self.dataFechadia
214
+
215
+ def get_dataFiscal(self):
216
+ return self.dataFiscal
217
+
218
+ def get_destinatario(self):
219
+ return self.destinatario
220
+
221
+ def get_destino(self):
222
+ return self.destino
223
+
224
+ def get_docNum(self):
225
+ return self.docNum
226
+
227
+ def get_documentosRef(self):
228
+ return self.documentosRef
229
+
230
+ def get_dthEmissao(self):
231
+ return format_date(self.dthEmissao)
232
+
233
+ def get_dthSaiEnt(self):
234
+ return format_date(self.dthSaiEnt)
235
+
236
+ def get_duplicatas(self):
237
+ return self.duplicatas
238
+
239
+ def get_eConsumidor(self):
240
+ return self.eConsumidor
241
+
242
+ def get_emitente(self):
243
+ return self.emitente
244
+
245
+ def get_enviosXML(self):
246
+ return self.enviosXML
247
+
248
+ def get_exportacao(self):
249
+ return self.exportacao
250
+
251
+ def get_fatura(self):
252
+ return self.fatura
253
+
254
+ def get_finalidade(self):
255
+ return self.finalidade
256
+
257
+ def get_idNfEntrada(self):
258
+ return self.idNfEntrada
259
+
260
+ def get_impostosRetidos(self):
261
+ return self.impostosRetidos
262
+
263
+ def get_intermediadorTransacao(self):
264
+ return self.intermediadorTransacao
265
+
266
+ def get_itens(self):
267
+ return self.itens
268
+
269
+ def get_localEntrega(self):
270
+ return self.localEntrega
271
+
272
+ def get_localRetirada(self):
273
+ return self.localRetirada
274
+
275
+ def get_modelo(self):
276
+ return self.modelo
277
+
278
+ def get_natopCodigo(self):
279
+ # TODO tirar isso dps do alinhamento com tributos
280
+ if self.natopCodigo:
281
+ self.natopCodigo[0:3].strip()
282
+ return self.itens[0].get_cfop()[0:3].strip() # TODO ABADI IRA CORRIGIR
283
+
284
+ def get_natopDescricao(self):
285
+ if self.natopDescricao is not None and len(str(self.natopDescricao)) > 0:
286
+ return self.natopDescricao
287
+ return self.itens[0].produtoNome
288
+
289
+ def get_numero(self):
290
+ return self.numero
291
+
292
+ def get_numeroAleatorio(self):
293
+ return self.numeroAleatorio
294
+
295
+ def get_pagamento(self):
296
+ return self.pagamento
297
+
298
+ def get_possuiIntermediario(self):
299
+ return self.possuiIntermediario
300
+
301
+ def get_prerecebimentoDtHrSinc(self):
302
+ return self.prerecebimentoDtHrSinc
303
+
304
+ def get_processoReferenciado(self):
305
+ return self.processoReferenciado
306
+
307
+ def get_protocoloDataHora(self):
308
+ return self.protocoloDataHora
309
+
310
+ def get_protocoloNumero(self):
311
+ return self.protocoloNumero
312
+
313
+ def get_serie(self):
314
+ return self.serie
315
+
316
+ def get_situacaoNF(self):
317
+ return self.situacaoNF
318
+
319
+ def get_statusTransmissao(self):
320
+ return self.statusTransmissao
321
+
322
+ def get_tentativaTransmissao(self):
323
+ return self.tentativaTransmissao
324
+
325
+ def get_tipoDoc(self):
326
+ return self.tipoDoc
327
+
328
+ def get_tipoEmissao(self):
329
+ return self.tipoEmissao
330
+
331
+ def get_tipoNota(self):
332
+ return self.tipoNota
333
+
334
+ def get_tipoPresOperador(self):
335
+ return self.tipoPresOperador
336
+
337
+ def get_transporte(self):
338
+ return self.transporte
339
+
340
+ def get_transporteModFrete(self):
341
+ return self.transporteModFrete
342
+
343
+ def get_ultimaAtualizacaoStatus(self):
344
+ return self.ultimaAtualizacaoStatus
345
+
346
+ def get_valorBCICMS(self):
347
+ return self.valorBCICMS
348
+
349
+ def get_valorBCICMSMonoRetencao(self):
350
+ return self.valorBCICMSMonoRetencao
351
+
352
+ def get_valorBCICMSMonoRetido(self):
353
+ return self.valorBCICMSMonoRetido
354
+
355
+ def get_valorBCICMSMonofasico(self):
356
+ return self.valorBCICMSMonofasico
357
+
358
+ def get_valorBCICMSST(self):
359
+ return self.valorBCICMSST
360
+
361
+ def get_valorBaseCOFINS(self):
362
+ return self.valorBaseCOFINS
363
+
364
+ def get_valorBaseINSS(self):
365
+ return self.valorBaseINSS
366
+
367
+ def get_valorBaseISSRet(self):
368
+ return self.valorBaseISSRet
369
+
370
+ def get_valorBasePIS(self):
371
+ return self.valorBasePIS
372
+
373
+ def get_valorBaseReduICMS(self):
374
+ return self.valorBaseReduICMS
375
+
376
+ def get_valorBaseTributIPI(self):
377
+ return self.valorBaseTributIPI
378
+
379
+ def get_valorBaseTributISS(self):
380
+ return self.valorBaseTributISS
381
+
382
+ def get_valorCOFINS(self):
383
+ return self.valorCOFINS
384
+
385
+ def get_valorDesconto(self):
386
+ return self.valorDesconto
387
+
388
+ def get_valorFCP(self):
389
+ return self.valorFCP
390
+
391
+ def get_valorFCPST(self):
392
+ return self.valorFCPST
393
+
394
+ def get_valorFCPSTRet(self):
395
+ return self.valorFCPSTRet
396
+
397
+ def get_valorFCPUFDest(self):
398
+ return self.valorFCPUFDest
399
+
400
+ def get_valorFrete(self):
401
+ return self.valorFrete
402
+
403
+ def get_valorICMS(self):
404
+ return self.valorICMS
405
+
406
+ def get_valorICMSDeson(self):
407
+ return self.valorICMSDeson
408
+
409
+ def get_valorICMSMonoRetencao(self):
410
+ return self.valorICMSMonoRetencao
411
+
412
+ def get_valorICMSMonoRetido(self):
413
+ return self.valorICMSMonoRetido
414
+
415
+ def get_valorICMSMonofasico(self):
416
+ return self.valorICMSMonofasico
417
+
418
+ def get_valorICMSST(self):
419
+ return self.valorICMSST
420
+
421
+ def get_valorII(self):
422
+ return self.valorII
423
+
424
+ def get_valorIPI(self):
425
+ return self.valorIPI
426
+
427
+ def get_valorIPIDevol(self):
428
+ return self.valorIPIDevol
429
+
430
+ def get_valorISS(self):
431
+ return self.valorISS
432
+
433
+ def get_valorISSRet(self):
434
+ return self.valorISSRet
435
+
436
+ def get_valorMercadoria(self):
437
+ return self.valorMercadoria
438
+
439
+ def get_valorNotaFiscal(self):
440
+ return self.valorNotaFiscal
441
+
442
+ def get_valorOutros(self):
443
+ return self.valorOutros
444
+
445
+ def get_valorPIS(self):
446
+ return self.valorPIS
447
+
448
+ def get_valorRetBCIRRF(self):
449
+ return self.valorRetBCIRRF
450
+
451
+ def get_valorRetBCPrev(self):
452
+ return self.valorRetBCPrev
453
+
454
+ def get_valorRetCOFINS(self):
455
+ return self.valorRetCOFINS
456
+
457
+ def get_valorRetCSLL(self):
458
+ return self.valorRetCSLL
459
+
460
+ def get_valorRetIRRF(self):
461
+ return self.valorRetIRRF
462
+
463
+ def get_valorRetPIS(self):
464
+ return self.valorRetPIS
465
+
466
+ def get_valorRetPrev(self):
467
+ return self.valorRetPrev
468
+
469
+ def get_valorSeguro(self):
470
+ return self.valorSeguro
471
+
472
+ def get_valorTotalTrib(self):
473
+ return self.valorTotalTrib
474
+