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 hidden or 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