Last active
November 3, 2021 17:13
-
-
Save CoutinhoElias/988e6966384a31c0bcd8961406039f06 to your computer and use it in GitHub Desktop.
Importar XML de NF-E
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from peewee import * | |
from peewee import SqliteDatabase, Model, TextField, ForeignKeyField | |
import xmltodict | |
import glob, os | |
database = SqliteDatabase('C:\\DadosNFeasy\\Data\\NfEasy2.db') | |
class UnknownField(object): | |
def __init__(self, *_, **__): pass | |
class BaseModel(Model): | |
class Meta: | |
database = database | |
class Empresa(BaseModel): | |
ambiente_mdfe = TextField(null=True) | |
ambiente_nfce = TextField(null=True) | |
ambiente_nfe = TextField(null=True) | |
ambiente_nfse = TextField(null=True) | |
aproveitamento_icms = BooleanField(null=True) | |
bairro = TextField(null=True) | |
cep = TextField(null=True) | |
cnae_fiscal = TextField(null=True) | |
cnpj = TextField(primary_key=True) | |
codigo_crm = TextField(null=True) | |
codigo_seguranca_contribuinte = TextField(null=True) | |
complemento = TextField(null=True) | |
danfe_contigencia = BooleanField(null=True) | |
data_exclusao = DateTimeField(null=True) | |
data_ultima_sincronizacao = TextField(null=True) | |
descricao_certificado = TextField(null=True) | |
diretorio_logo = TextField(null=True) | |
email = TextField(null=True) | |
email_adicional_envio_nota = TextField(null=True) | |
emite_mdfe = BooleanField(null=True) | |
emite_nfce = BooleanField(null=True) | |
emite_tef = BooleanField(null=True) | |
empresa_contabilidade = BooleanField(null=True) | |
empresa_master = TextField(null=True) | |
fonte_tributos_nfe = TextField(null=True) | |
identificacao_codigo_seguranca_contribuinte = TextField(null=True) | |
inscricao_estadual = TextField(null=True) | |
inscricao_estadual_substituto_tributario = TextField(null=True) | |
inscricao_municipal = TextField(null=True) | |
logradouro = TextField(null=True) | |
mensagem_generica_nfce = TextField(null=True) | |
mensagem_regime_normal = TextField(null=True) | |
mensagem_simples = TextField(null=True) | |
mensagem_simples_sublimite = TextField(null=True) | |
municipio = TextField(null=True) | |
nome = TextField() | |
nome_fantasia = TextField(null=True) | |
numero = TextField(null=True) | |
pais = TextField(null=True) | |
produtor_cana = BooleanField(null=True) | |
regime_tributario = TextField(null=True) | |
serial_certificado = TextField(null=True) | |
site = TextField(null=True) | |
status_produto_subempresa = TextField(null=True) | |
telefone = TextField(null=True) | |
tipo_certificado = TextField(null=True) | |
tipo_emissao = TextField(null=True) | |
tipo_pessoa = TextField(constraints=[SQL("DEFAULT 'Juridica'")], null=True) | |
uf = TextField() | |
class Meta: | |
table_name = 'empresa' | |
class CenarioPagamento(BaseModel): | |
bandeira_operadora = TextField(null=True) | |
cenario = TextField(null=True) | |
cnpj_credenciadora = TextField(null=True) | |
cnpj_emitente = ForeignKeyField(column_name='cnpj_emitente', model=Empresa, null=True) | |
indicador_forma_pagamento = TextField(null=True) | |
meio_pagamento = TextField() | |
tipo_integracao_pagamento = TextField(null=True) | |
class Meta: | |
table_name = 'cenario_pagamento' | |
class Cfop(BaseModel): | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
destino_operacao = TextField(null=True) | |
finalidade_emissao = TextField(null=True) | |
id_cfop = AutoField(null=True) | |
numero_cfop = TextField(null=True) | |
tipo_documento = TextField(null=True) | |
class Meta: | |
table_name = 'cfop' | |
class Cliente(BaseModel): | |
bairro = TextField(null=True) | |
cep = TextField(null=True) | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
contribuinte = TextField(null=True) | |
cpf_cnpj = TextField(index=True, null=True) | |
cpl = TextField(null=True) | |
email = TextField(null=True) | |
inscricao_estadual = TextField(null=True) | |
inscricao_municipal = TextField(null=True) | |
inscricao_suframa = TextField(null=True) | |
logradouro = TextField(null=True) | |
municipio = TextField(null=True) | |
numero = TextField(null=True) | |
pais = TextField(null=True) | |
razao_social = TextField() | |
telefone = TextField(null=True) | |
tipo_pessoa = TextField(null=True) | |
uf = TextField(null=True) | |
class Meta: | |
table_name = 'cliente' | |
class CodigoBeneficioFiscal(BaseModel): | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
codigo = TextField(null=True) | |
id_codigo_benef = AutoField(null=True) | |
modelo = TextField() | |
situacao_tributaria = TextField(null=True) | |
class Meta: | |
table_name = 'codigo_beneficio_fiscal' | |
class Condutor(BaseModel): | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
cpf_cnpj = TextField(index=True, null=True) | |
id_condutor = AutoField(null=True) | |
nome = TextField() | |
tipo_pessoa = TextField(null=True) | |
class Meta: | |
table_name = 'condutor' | |
class Configuracao(BaseModel): | |
chave = TextField(primary_key=True) | |
valor = TextField() | |
class Meta: | |
table_name = 'configuracao' | |
class ConfiguracaoEmpresa(BaseModel): | |
data_ultimo_envio_nfstock = DateTimeField(null=True) | |
data_ultimo_erro_nfstock = DateTimeField(null=True) | |
id_empresa = ForeignKeyField(column_name='id_empresa', model=Empresa, null=True) | |
tipo_emitente_mdfe = TextField(null=True) | |
tipo_tef = TextField(null=True) | |
ultima_identificacao_tef = IntegerField(null=True) | |
class Meta: | |
table_name = 'configuracao_empresa' | |
class ConfiguracaoResponsavelTecnico(BaseModel): | |
ambiente = TextField(null=True) | |
cnpj = TextField(null=True) | |
contato = TextField(null=True) | |
csrt = TextField(null=True) | |
email = TextField(null=True) | |
id_responsavel_tecnico = TextField(null=True) | |
modelo = TextField(null=True) | |
sigla = TextField(null=True) | |
telefone = TextField(null=True) | |
class Meta: | |
table_name = 'configuracao_responsavel_tecnico' | |
class TipoDocumento(BaseModel): | |
ativo = BooleanField(column_name='Ativo', constraints=[SQL("DEFAULT false")], null=True) | |
descricao = TextField() | |
id_tipo_documento = AutoField() | |
class Meta: | |
table_name = 'tipo_documento' | |
class TipoXml(BaseModel): | |
descricao = TextField(null=True) | |
id_tipo_documento = ForeignKeyField(column_name='id_tipo_documento', model=TipoDocumento) | |
id_tipo_xml = AutoField() | |
class Meta: | |
table_name = 'tipo_xml' | |
class Lote(BaseModel): | |
ambiente = TextField() | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
datahora_envio = DateTimeField() | |
id_lote = AutoField(null=True) | |
id_tipo_xml = ForeignKeyField(column_name='id_tipo_xml', model=TipoXml, null=True) | |
numero_recibo = TextField(null=True) | |
processado = BooleanField(constraints=[SQL("DEFAULT false")], null=True) | |
tipo_emissao = TextField() | |
class Meta: | |
table_name = 'lote' | |
class DocumentoFiscal(BaseModel): | |
chave_acesso = TextField(unique=True) | |
id_documento_fiscal = AutoField(null=True) | |
id_lote = ForeignKeyField(column_name='id_lote', model=Lote) | |
versao = TextField() | |
xml = BlobField() | |
class Meta: | |
table_name = 'documento_fiscal' | |
class LoteNfse(BaseModel): | |
ambiente = TextField() | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
datahora_envio = DateTimeField() | |
id_lote = AutoField(null=True) | |
id_tipo_xml = ForeignKeyField(column_name='id_tipo_xml', model=TipoXml, null=True) | |
numero_protocolo = TextField(column_name='numero_Protocolo', null=True) | |
processado = BooleanField(constraints=[SQL("DEFAULT false")], null=True) | |
status_nfstock = TextField() | |
tipo_emissao = TextField() | |
class Meta: | |
table_name = 'lote_nfse' | |
class DocumentoFiscalNfse(BaseModel): | |
chave_acesso = TextField() | |
id_documento_fiscal = AutoField(null=True) | |
id_lote = ForeignKeyField(column_name='id_lote', model=LoteNfse) | |
inscricao_municipal = TextField(null=True) | |
numero = TextField(null=True) | |
numero_autorizacao_nfse = TextField(null=True) | |
numero_rps = TextField(null=True) | |
serie = TextField(null=True) | |
xml = BlobField() | |
xml_retorno_municipio = BlobField(null=True) | |
class Meta: | |
table_name = 'documento_fiscal_nfse' | |
class EmpresaAutDownload(BaseModel): | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
cpf_cnpj = TextField(null=True) | |
descricao = TextField(null=True) | |
tipo_pessoa = TextField(null=True) | |
class Meta: | |
table_name = 'empresa_aut_download' | |
class ProdutoAlterdata(BaseModel): | |
chave = TextField() | |
descricao = TextField(null=True) | |
id_tipo_documento_fiscal = ForeignKeyField(column_name='id_tipo_documento_fiscal', model=TipoDocumento) | |
class Meta: | |
table_name = 'produto_alterdata' | |
class EmpresaProduto(BaseModel): | |
id_empresa = ForeignKeyField(column_name='id_empresa', model=Empresa, null=True) | |
id_produto = ForeignKeyField(column_name='id_produto', model=ProdutoAlterdata, null=True) | |
status = TextField(null=True) | |
class Meta: | |
table_name = 'empresa_produto' | |
class EmpresaTipoDocumento(BaseModel): | |
id_empresa = ForeignKeyField(column_name='id_empresa', model=Empresa, null=True) | |
id_tipo_documento = ForeignKeyField(column_name='id_tipo_documento', model=TipoDocumento, null=True) | |
serie = IntegerField(null=True) | |
versao = TextField(null=True) | |
versao_servico = TextField(null=True) | |
class Meta: | |
table_name = 'empresa_tipo_documento' | |
class EventoGerador(BaseModel): | |
chave_evento = TextField() | |
chave_nota = TextField() | |
cnpj_emitente = ForeignKeyField(column_name='cnpj_emitente', model=Empresa, null=True) | |
data_hora_evento = DateTimeField() | |
modelo = TextField() | |
numero_protocolo = BigIntegerField(null=True) | |
seq_evento = IntegerField() | |
status = TextField(null=True) | |
tipo_evento = TextField() | |
xml_distribuicao_evento = BlobField(null=True) | |
xml_evento = BlobField() | |
xml_ret_evento = BlobField(null=True) | |
class Meta: | |
table_name = 'evento_gerador' | |
class EventoMdfeGerador(BaseModel): | |
chave_evento = TextField() | |
chave_nota = TextField() | |
cnpj_emitente = ForeignKeyField(column_name='cnpj_emitente', model=Empresa, null=True) | |
data_hora_evento = DateTimeField() | |
modelo = TextField() | |
numero_protocolo = BigIntegerField(null=True) | |
seq_evento = IntegerField() | |
status = TextField(null=True) | |
tipo_evento = TextField() | |
xml_distribuicao_evento = BlobField(null=True) | |
xml_evento = BlobField() | |
xml_ret_evento = BlobField(null=True) | |
class Meta: | |
table_name = 'evento_mdfe_gerador' | |
class Icms(BaseModel): | |
aliq_aplicavel_calc_cred = DecimalField(null=True) | |
aliq_icms = DecimalField(null=True) | |
aliq_icms_st = DecimalField(null=True) | |
bc_operacao_propria = DecimalField(null=True) | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
descricao = TextField(null=True) | |
hash_code = IntegerField() | |
id_icms = AutoField(null=True) | |
margem_val_adic_icms_st = DecimalField(null=True) | |
modalidade_bc_icms = TextField(null=True) | |
modalidade_bc_icms_st = TextField(null=True) | |
motivo_desoneracao_icms = TextField(null=True) | |
origem = TextField(null=True) | |
reducao_da_bc_icms = DecimalField(null=True) | |
reducao_da_bc_icms_st = DecimalField(null=True) | |
regime = TextField() | |
situacao_tributaria = TextField(null=True) | |
uf = TextField(null=True) | |
class Meta: | |
table_name = 'icms' | |
class InutilizacaoGerador(BaseModel): | |
chave = TextField() | |
cnpj_emitente = ForeignKeyField(column_name='cnpj_emitente', model=Empresa, null=True) | |
data_hora = DateTimeField() | |
justificativa = TextField() | |
modelo = TextField() | |
numero_final = IntegerField() | |
numero_inicial = IntegerField() | |
numero_protocolo = BigIntegerField(null=True) | |
serie = IntegerField() | |
status = TextField(null=True) | |
xml_inutilizacao = BlobField() | |
xml_inutilizacao_assinada = BlobField(null=True) | |
xml_ret_inutilizacao = BlobField(null=True) | |
class Meta: | |
table_name = 'inutilizacao_gerador' | |
class Ipi(BaseModel): | |
aliq = DecimalField(null=True) | |
classe_enquadramento = TextField(null=True) | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
cnpj_produtor = TextField(null=True) | |
codigo_enquadramento = TextField(null=True) | |
descricao = TextField(null=True) | |
id_ipi = AutoField(null=True) | |
situacao_tributaria = TextField(null=True) | |
tipo_calculo = TextField(null=True) | |
valor_unidade = DecimalField(null=True) | |
class Meta: | |
table_name = 'ipi' | |
indexes = ( | |
(('cnpj_empresa', 'classe_enquadramento', 'codigo_enquadramento', 'cnpj_produtor'), True), | |
) | |
class Issqn(BaseModel): | |
aliq = DecimalField(null=True) | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
descricao = TextField(null=True) | |
exigibilidade = TextField(null=True) | |
id_issqn = AutoField(null=True) | |
incentivo_fiscal = TextField(null=True) | |
lista_servico = TextField(null=True) | |
municipio_incidencia = TextField(null=True) | |
municipio_ocorrencia = TextField(null=True) | |
pais_incidencia = TextField(null=True) | |
uf_incidencia = TextField(null=True) | |
uf_ocorrencia = TextField(null=True) | |
class Meta: | |
table_name = 'issqn' | |
class MdfeGerador(BaseModel): | |
ambiente = TextField(null=True) | |
arquivo_distribuicao = BlobField(null=True) | |
arquivo_retorno = BlobField(null=True) | |
carga_posterior = TextField() | |
chave_acesso = TextField() | |
cnpj_emitente = ForeignKeyField(column_name='cnpj_emitente', model=Empresa, null=True) | |
data_hora_autorizacao = DateTimeField(null=True) | |
data_hora_emissao = DateTimeField() | |
modal = TextField(null=True) | |
modelo = TextField() | |
numero = IntegerField() | |
numero_protocolo = BigIntegerField(null=True) | |
origem = TextField() | |
serie = IntegerField() | |
situacao = TextField() | |
tipo_emissao = TextField() | |
uf_carga = TextField(null=True) | |
uf_final = TextField(null=True) | |
xml = BlobField() | |
class Meta: | |
table_name = 'mdfe_gerador' | |
class NfeGerador(BaseModel): | |
ambiente = TextField(null=True) | |
arquivo_distribuicao = BlobField(null=True) | |
arquivo_retorno = BlobField(null=True) | |
chave_acesso = TextField() | |
cnpj_emitente = ForeignKeyField(column_name='cnpj_emitente', model=Empresa, null=True) | |
cpf_cnpj_destinatario = TextField(null=True) | |
data_hora_autorizacao = DateTimeField(null=True) | |
data_hora_emissao = DateTimeField() | |
modelo = TextField() | |
numero = IntegerField() | |
numero_protocolo = BigIntegerField(null=True) | |
origem = TextField() | |
serie = IntegerField() | |
situacao = TextField() | |
tela_origem = TextField() | |
tipo_emissao = TextField() | |
uf_destinatario = TextField(null=True) | |
xml = BlobField() | |
class Meta: | |
table_name = 'nfe_gerador' | |
class PisCofins(BaseModel): | |
aliq_cofins = DecimalField(null=True) | |
aliq_pis = DecimalField(null=True) | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
descricao = TextField(null=True) | |
id_pis_cofins = AutoField(null=True) | |
situacao_tributaria_cofins = TextField(null=True) | |
situacao_tributaria_pis = TextField(null=True) | |
tipo_calculo_cofins = TextField(null=True) | |
tipo_calculo_pis = TextField(null=True) | |
valor_cofins = DecimalField(null=True) | |
valor_pis = DecimalField(null=True) | |
class Meta: | |
table_name = 'pis_cofins' | |
class Produto(BaseModel): | |
c_barra = TextField(null=True) | |
c_barra_trib = TextField(null=True) | |
c_enquadramento_legal = TextField(null=True) | |
cest = TextField(null=True) | |
classe_enquadramento = TextField(null=True) | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
cnpj_produtor = TextField(null=True) | |
codigo = TextField() | |
descricao = TextField() | |
ean = TextField(null=True) | |
ean_unid_trib = TextField(null=True) | |
ext_ipi = TextField(null=True) | |
genero = TextField(null=True) | |
id_produto = AutoField(null=True) | |
ipi = ForeignKeyField(column_name='ipi', model=Ipi, null=True) | |
ncm = TextField(null=True) | |
pis_cofins = ForeignKeyField(column_name='pis_cofins', model=PisCofins, null=True) | |
qtd_trib = DecimalField(null=True) | |
unid_com = TextField(null=True) | |
unid_trib = TextField(null=True) | |
v_unit_com = DecimalField(null=True) | |
v_unit_trib = DecimalField(null=True) | |
class Meta: | |
table_name = 'produto' | |
class ProdutoCfop(BaseModel): | |
id_cfop = ForeignKeyField(column_name='id_cfop', model=Cfop) | |
id_produto = ForeignKeyField(column_name='id_produto', model=Produto) | |
class Meta: | |
table_name = 'produto_cfop' | |
indexes = ( | |
(('id_produto', 'id_cfop'), True), | |
) | |
primary_key = CompositeKey('id_cfop', 'id_produto') | |
class ProdutoCodigoBeneficio(BaseModel): | |
id_codigo_beneficio = ForeignKeyField(column_name='id_codigo_beneficio', model=CodigoBeneficioFiscal) | |
id_produto = ForeignKeyField(column_name='id_produto', model=Produto) | |
class Meta: | |
table_name = 'produto_codigo_beneficio' | |
indexes = ( | |
(('id_produto', 'id_codigo_beneficio'), True), | |
) | |
primary_key = CompositeKey('id_codigo_beneficio', 'id_produto') | |
class ProdutoIcms(BaseModel): | |
id_icms = ForeignKeyField(column_name='id_icms', model=Icms) | |
id_produto = ForeignKeyField(column_name='id_produto', model=Produto) | |
class Meta: | |
table_name = 'produto_icms' | |
primary_key = False | |
class ProdutoIssqn(BaseModel): | |
id_issqn = ForeignKeyField(column_name='id_issqn', model=Issqn) | |
id_produto = ForeignKeyField(column_name='id_produto', model=Produto) | |
class Meta: | |
table_name = 'produto_issqn' | |
indexes = ( | |
(('id_produto', 'id_issqn'), True), | |
) | |
primary_key = CompositeKey('id_issqn', 'id_produto') | |
class SqliteSequence(BaseModel): | |
name = BareField(null=True) | |
seq = BareField(null=True) | |
class Meta: | |
table_name = 'sqlite_sequence' | |
primary_key = False | |
class TefGerador(BaseModel): | |
cnpj_emitente = ForeignKeyField(column_name='cnpj_emitente', model=Empresa, null=True) | |
comando = TextField() | |
id_documento = IntegerField() | |
identificacao = IntegerField() | |
modelo = TextField() | |
nome_computador = TextField(null=True) | |
resposta = TextField(null=True) | |
status = TextField(null=True) | |
tef_envio = BlobField() | |
tef_retorno = BlobField(null=True) | |
via_cancelamento = BlobField(null=True) | |
via_cliente = BlobField(null=True) | |
via_estabelecimento = BlobField(null=True) | |
class Meta: | |
table_name = 'tef_gerador' | |
class Transportadora(BaseModel): | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
contribuinte = TextField(null=True) | |
cpf_cnpj = TextField(index=True, null=True) | |
inscricao_estadual = TextField(null=True) | |
logradouro = TextField(null=True) | |
municipio = TextField(null=True) | |
razao_social = TextField() | |
tipo_pessoa = TextField(null=True) | |
uf = TextField(null=True) | |
class Meta: | |
table_name = 'transportadora' | |
class TributosItem(BaseModel): | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
id_item = IntegerField() | |
id_nfe_gerador = ForeignKeyField(column_name='id_nfe_gerador', model=NfeGerador, null=True) | |
tributo_estadual = DecimalField(null=True) | |
tributo_federal = DecimalField(null=True) | |
tributo_municipal = DecimalField(null=True) | |
class Meta: | |
table_name = 'tributos_item' | |
class TributosNcm(BaseModel): | |
codigo_ncm = TextField() | |
imposto_estadual = DecimalField() | |
imposto_federal = DecimalField() | |
imposto_importado = DecimalField() | |
imposto_municipal = DecimalField() | |
uf = TextField() | |
vigencia_fim = DateTimeField() | |
vigencia_inicio = DateTimeField() | |
class Meta: | |
table_name = 'tributos_ncm' | |
class Veiculo(BaseModel): | |
c_int = TextField(null=True) | |
cap_kg = BigIntegerField(null=True) | |
cap_m3 = BigIntegerField(null=True) | |
cnpj_empresa = ForeignKeyField(column_name='cnpj_empresa', model=Empresa, null=True) | |
contribuinte = TextField(null=True) | |
cpf_cnpj = TextField(index=True, null=True) | |
ie = TextField(null=True) | |
nome = TextField(null=True) | |
placa = TextField() | |
renavam = TextField(null=True) | |
rntrc = BigIntegerField(null=True) | |
tara = BigIntegerField() | |
tipo_carroceria = TextField(null=True) | |
tipo_pessoa = TextField(null=True) | |
tipo_proprietario = TextField(null=True) | |
tipo_rodado = TextField(null=True) | |
tipo_veiculo = TextField(null=True) | |
uf = TextField(null=True) | |
uf_veiculo_licenciado = TextField(null=True) | |
class Meta: | |
table_name = 'veiculo' | |
data_destinatario = [] | |
data_produto = [] | |
def ler_xml(_file): | |
xml_destinatario = {} | |
xml_produto = {} | |
# Seleciona os dados do arquivo | |
handle = open(_file,"r") | |
content = handle.read() | |
d = xmltodict.parse(content) | |
try: | |
xml_destinatario['cnpj_empresa'] = d['nfeProc']['NFe']['infNFe']['emit']['CNPJ'] | |
xml_destinatario['cpf_cnpj'] = d['nfeProc']['NFe']['infNFe']['dest']['CNPJ'] | |
if len(d['nfeProc']['NFe']['infNFe']['dest']['CNPJ']) > 11: | |
xml_destinatario['tipo_pessoa'] = 'Juridica' | |
else: | |
xml_destinatario['tipo_pessoa'] = 'Fisica' | |
xml_destinatario['razao_social'] = d['nfeProc']['NFe']['infNFe']['dest']['xNome'] | |
try: | |
xml_destinatario['inscricao_estadual'] = d['nfeProc']['NFe']['infNFe']['dest']['IE'] | |
except: | |
xml_destinatario['inscricao_estadual'] = None | |
xml_destinatario['logradouro'] = d['nfeProc']['NFe']['infNFe']['dest']['enderDest']['xLgr'] | |
xml_destinatario['numero'] = d['nfeProc']['NFe']['infNFe']['dest']['enderDest']['nro'] | |
xml_destinatario['cpl'] = 'A' | |
xml_destinatario['bairro'] = d['nfeProc']['NFe']['infNFe']['dest']['enderDest']['xBairro'] | |
xml_destinatario['municipio'] = d['nfeProc']['NFe']['infNFe']['dest']['enderDest']['xMun'] | |
xml_destinatario['uf'] = d['nfeProc']['NFe']['infNFe']['dest']['enderDest']['UF'] | |
xml_destinatario['pais'] = d['nfeProc']['NFe']['infNFe']['dest']['enderDest']['xPais'] | |
xml_destinatario['cep'] = d['nfeProc']['NFe']['infNFe']['dest']['enderDest']['CEP'] | |
xml_destinatario['email'] = 'sem_e-mail@no_xml.com' | |
xml_destinatario['telefone'] = '8599999999' | |
xml_destinatario['contribuinte'] = 'ContribuinteICMS' | |
xml_destinatario['inscricao_suframa'] = '' | |
xml_destinatario['inscricao_municipal'] = '' | |
#-------------------------------------------------------------------------- | |
# Verifica se existe um destinatario cadastrado na tabela, caso verdade ele passa. | |
exists_c = sum(destinatario.get('cpf_cnpj') == xml_destinatario['cpf_cnpj'] for destinatario in data_destinatario) | |
if not exists_c: | |
data_destinatario.append(xml_destinatario) | |
xml_destinatario = {} | |
#-------------------------------------------------------------------------- | |
print('Nota fiscal: ', d['nfeProc']['NFe']['infNFe']['ide']['cNF']) | |
except: | |
print('Não é nota') | |
i = 0 | |
# Preenche xml_produto com os dados obtidos no xml da NF-e | |
while i >= 0: | |
try: | |
xml_produto['cnpj_empresa'] = d['nfeProc']['NFe']['infNFe']['emit']['CNPJ'] | |
xml_produto['codigo'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['cProd'] | |
xml_produto['descricao'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['xProd'] | |
xml_produto['ean'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['cEAN'] | |
xml_produto['ean_unid_trib'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['uTrib'] | |
xml_produto['c_barra'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['cEAN'] | |
xml_produto['c_barra_trib'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['cEAN'] | |
xml_produto['ext_ipi'] = 55 | |
xml_produto['genero'] = None | |
xml_produto['ncm'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['NCM'] | |
xml_produto['cest'] = None | |
xml_produto['unid_com'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['uCom'] | |
xml_produto['v_unit_com'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['vUnCom'] | |
xml_produto['unid_trib'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['uTrib'] | |
xml_produto['qtd_trib'] = 1 | |
xml_produto['v_unit_trib'] = d['nfeProc']['NFe']['infNFe']['det'][i]['prod']['vUnTrib'] | |
xml_produto['classe_enquadramento'] = None | |
xml_produto['c_enquadramento_legal'] = None | |
xml_produto['cnpj_produtor'] = None | |
xml_produto['pis_cofins'] = None | |
xml_produto['ipi'] = None | |
try: | |
xml_produto['pis_cofins'] = d['nfeProc']['NFe']['infNFe']['det'][i]['imposto']['PIS']['PISNT']['CST'] | |
except: | |
xml_produto['pis_cofins'] = d['nfeProc']['NFe']['infNFe']['det'][i]['imposto']['PIS']['PISAliq']['CST'] | |
xml_produto['ipi'] = None | |
#-------------------------------------------------------------------------- | |
# Verifica se existe um produto cadastrado na tabela, caso verdade ele passa. | |
exists_p = sum(produto.get('codigo') == xml_produto['codigo'] for produto in data_produto) | |
if not exists_p: | |
data_produto.append(xml_produto) | |
xml_produto = {} | |
#-------------------------------------------------------------------------- | |
i += 1 | |
except: | |
i = -1 | |
#-------------------------------------------------------------------------- | |
# Identifica os arquivos xml | |
os.chdir("C:\\Users\\Elias\\Desktop\\XMLsEmissor") | |
for file in glob.glob("*.xml"): | |
ler_xml(file) | |
#print(file, '<<<<<<====================') | |
p = 0 | |
while p >= 0: | |
try: | |
produto = Produto( | |
cnpj_empresa = data_produto[p]['cnpj_empresa'], | |
codigo = data_produto[p]['codigo'], | |
descricao = data_produto[p]['descricao'], | |
ean = data_produto[p]['ean'], | |
#ean_unid_trib = data_produto[p]['ean_unid_trib'], | |
c_barra = data_produto[p]['c_barra'], | |
c_barra_trib = data_produto[p]['c_barra_trib'], | |
ext_ipi = data_produto[p]['ext_ipi'], | |
#genero = data_produto[p]['genero'], | |
ncm = data_produto[p]['ncm'], | |
cest = data_produto[p]['cest'], | |
unid_com = data_produto[p]['unid_com'], | |
v_unit_com = data_produto[p]['v_unit_com'], | |
unid_trib = data_produto[p]['unid_trib'], | |
qtd_trib = data_produto[p]['qtd_trib'], | |
v_unit_trib = data_produto[p]['v_unit_trib'], | |
classe_enquadramento = data_produto[p]['classe_enquadramento'], | |
c_enquadramento_legal = data_produto[p]['c_enquadramento_legal'], | |
#cnpj_produtor = data_produto[p]['cnpj_produtor'], | |
#pis_cofins = data_produto[p]['pis_cofins'], | |
#ipi = data_produto[p]['ipi'] | |
) | |
produto.save() | |
p += 1 | |
except: | |
print('Encerrou processo PRODUTOS =================================') | |
p = -1 | |
#-------------------------------------------------------------------------- | |
c = 0 | |
while c >= 0: | |
try: | |
cliente = Cliente( | |
cnpj_empresa = data_destinatario[c]['cnpj_empresa'], | |
cpf_cnpj = data_destinatario[c]['cpf_cnpj'], | |
tipo_pessoa = data_destinatario[c]['tipo_pessoa'], | |
razao_social = data_destinatario[c]['razao_social'], | |
inscricao_estadual = data_destinatario[c]['inscricao_estadual'], | |
logradouro = data_destinatario[c]['logradouro'], | |
numero = data_destinatario[c]['numero'], | |
cpl = data_destinatario[c]['cpl'], | |
bairro = data_destinatario[c]['bairro'], | |
municipio = data_destinatario[c]['municipio'], | |
uf = data_destinatario[c]['uf'], | |
pais = data_destinatario[c]['pais'], | |
cep = data_destinatario[c]['cep'], | |
email = data_destinatario[c]['email'], | |
telefone = data_destinatario[c]['telefone'], | |
contribuinte = data_destinatario[c]['contribuinte'], | |
inscricao_suframa = data_destinatario[c]['inscricao_suframa'], | |
inscricao_municipal = data_destinatario[c]['inscricao_municipal'], | |
) | |
cliente.save() | |
c += 1 | |
except: | |
print('Encerrou processo CLIENTES =================================') | |
c = -1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment