Skip to content

Instantly share code, notes, and snippets.

@CoutinhoElias
Last active November 3, 2021 17:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CoutinhoElias/988e6966384a31c0bcd8961406039f06 to your computer and use it in GitHub Desktop.
Save CoutinhoElias/988e6966384a31c0bcd8961406039f06 to your computer and use it in GitHub Desktop.
Importar XML de NF-E
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