From eb1d8768adb48f923757da95794cd7d26510a844 Mon Sep 17 00:00:00 2001 From: Rebeca Cecco de Oliveira Date: Fri, 8 Apr 2022 16:31:05 -0300 Subject: [PATCH] finalizado --- Curr_culo.pdf | Bin 0 -> 76456 bytes README.md | 64 +----- desafioRecomb.ipynb | 1 + testes/nfe.xml | 307 +++++++++++++++++++++++++ testes/nfe_cliente_pf.xml | 307 +++++++++++++++++++++++++ testes/nfe_erro_cli_sem_nome.xml | 307 +++++++++++++++++++++++++ testes/nfe_erro_end_cli_incompleto.xml | 307 +++++++++++++++++++++++++ testes/nfe_erro_sem_CNPJ_cli.xml | 307 +++++++++++++++++++++++++ 8 files changed, 1539 insertions(+), 61 deletions(-) create mode 100644 Curr_culo.pdf create mode 100644 desafioRecomb.ipynb create mode 100644 testes/nfe.xml create mode 100644 testes/nfe_cliente_pf.xml create mode 100644 testes/nfe_erro_cli_sem_nome.xml create mode 100644 testes/nfe_erro_end_cli_incompleto.xml create mode 100644 testes/nfe_erro_sem_CNPJ_cli.xml diff --git a/Curr_culo.pdf b/Curr_culo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3f3f0f24bdffb63d959584533f773466ad795b44 GIT binary patch literal 76456 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ção da solução :

\n","\n","* Leitura dos arquivos de notas fisicas utilizando os metódos disponibilizados pela biblioteca nfelib com tratamento de certos tipos de erros (mais detalhes sobre os tipos nos comentários do código)\n","* Persitência de dados e geração de relatórios foram implementados utilizando o SQlite3\n","\n","

Execução do Programa:

\n","\n","* Ultima célula de código contém a chamada de todos os metódos necessários para exibir as funcionalidades presentes na solução\n","* Existem duas opções de execução: Leitura de notas e geração de relatórios\n","* Na opção relatórios é preciso escolher qual tipo e inserir o identificador do fornecedor\n","* Se for escolhida uma opção de execução ou de relatório não esperada é exibida uma mensagem de erro e a execução acaba\n","* Na geração de relatórios se for fornecido um CPNJ inválido a execução também é encerrada\n","\n","

Testes:

\n","\n","* Cada tipo de erro tratado foi testado\n","* Erros previstos: Erros de Parser(mais detalhes nos comentários), arquivo inválido, erro de digitação de CPNJ para gerar relatórios, inserir nota já cadastrada\n","* Nome dos arquivos de teste seguem o padrão nfe_erro_{nome_do_tipo_de_erro}\n","* Caso de teste além do erro: cliente Pessoa Física\n","\n","

Observações\n","\n","* Comportamento não desejado da biblioteca: Imprime o xml após o parsing, na documentação disponível não consta como impedir isso"],"metadata":{"id":"LQem7JvLLTQR"}},{"cell_type":"code","execution_count":1,"metadata":{"id":"MKGTAHjZuqny","executionInfo":{"status":"ok","timestamp":1649440799808,"user_tz":180,"elapsed":6955,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"58e3b6cb-c06b-4823-835d-dca63c080e31"},"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting nfelib\n"," Cloning https://github.com/akretion/nfelib.git (to revision master_gen_v4_00) to /tmp/pip-install-xx6awzrs/nfelib_2f0c866ca73e4d07bda428ef1da931a3\n"," Running command git clone -q https://github.com/akretion/nfelib.git /tmp/pip-install-xx6awzrs/nfelib_2f0c866ca73e4d07bda428ef1da931a3\n"]}],"source":["import sqlite3\n","import xml.etree.ElementTree as ET\n","import datetime\n","import re\n","\n","! pip install git+https://github.com/akretion/nfelib.git@master_gen_v4_00#egg=nfelib"]},{"cell_type":"code","source":["from nfelib.v4_00 import leiauteNFe_sub as parser"],"metadata":{"id":"Iv_iO_mpFO4S","executionInfo":{"status":"ok","timestamp":1649440799808,"user_tz":180,"elapsed":8,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["#O desafio é desenvolver um programa que permita realizar as seguintes buscas:\n","\n","#Listar os valores e data de Vencimento dos boletos presentes em um nota fiscal conforme o CPF ou CNPJ de um fornecedor.\n","#Apresentar o nome, identificador (CPF ou CNPJ), endereço dos clientes de um fornecedor."],"metadata":{"id":"DiIUrmkyuyqW","executionInfo":{"status":"ok","timestamp":1649440799809,"user_tz":180,"elapsed":7,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["#Metódo que trata erros de parser do tipo:\n","# 1- Falta de nome de cliente ou do fornecedor\n","# 2- Falta de CNPJ ou CPF do cliente ou do fornecedor\n","# 3- Endereço incompleto do cliente\n","\n","#Interessante implementar verificações mais sofisticadas de erro\n","# validar tanto a existência quanto corretude de CPF, CEP e CNPJ por exemplo\n","\n","def tratamento_erros_parser(nota_fiscal):\n"," #Pessoa Física não pode emitir nota por isso o programa só espera CNPJ do fornecedor\n","\n"," #Tipo 1 e 2 de Erro para caso do fornecedor\n"," if nota_fiscal.infNFe.emit.CNPJ == \"\" or nota_fiscal.infNFe.emit.xNome == \"\":\n"," print(\"***** Erro na Leitura da Nota Fiscal de ID = {} *****\\n Dados do Fornecedor faltando \".format(nota_fiscal.infNFe.Id))\n"," return True\n"," #Tipo 1 e 2 de Erro para o caso de Cliente\n"," elif nota_fiscal.infNFe.dest.CNPJ == \"\" or nota_fiscal.infNFe.dest.CPF == \"\" or nota_fiscal.infNFe.dest.xNome == \"\":\n"," print(\"***** Erro na Leitura da Nota Fiscal de ID = {} *****\\n Dados do Cliente faltando \".format(nota_fiscal.infNFe.Id))\n"," return True\n"," #Tipo 3 de erro\n"," elif nota_fiscal.infNFe.dest.enderDest.CEP == \"\" or nota_fiscal.infNFe.dest.enderDest.xLgr == \"\" or nota_fiscal.infNFe.dest.enderDest.nro == \"\" :\n"," print(\"***** Erro na Leitura da Nota Fiscal de ID = {} *****\\n Dados Endereço do Cliente Incompleto \".format(nota_fiscal.infNFe.Id))\n"," return True\n"," else :\n"," print(\"***** Leitura concluída com sucesso *****\")\n"," return False\n"],"metadata":{"id":"CILTnLXtJBpC","executionInfo":{"status":"ok","timestamp":1649440799809,"user_tz":180,"elapsed":6,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["# Metódo de Leitura dos dados necessários para gerar os relatórios pedidos\n","\n","def parser_notas(arquivo_nota):\n"," erro = True\n"," #metódo de parser da biblioteca\n"," nota_fiscal = parser.parse(arquivo_nota)\n"," erro = tratamento_erros_parser(nota_fiscal)\n"," \n"," if (not erro) : \n"," id_nota = nota_fiscal.infNFe.Id\n"," atributos_fornecedor = [nota_fiscal.infNFe.total.ICMSTot.vNF, \n"," #a bib tem um comportamento diferente para estruturas de aninhamento similares\n"," #para a tag dub os filhos são representados por lista\n"," #por isso não é possível fazer o acesso padrão com .\n"," nota_fiscal.infNFe.cobr.dup[0].dVenc,\n"," nota_fiscal.infNFe.emit.CNPJ,\n"," nota_fiscal.infNFe.emit.xNome]\n"," if nota_fiscal.infNFe.dest.CNPJ == None :\n"," atributos_cliente = [nota_fiscal.infNFe.dest.CPF, nota_fiscal.infNFe.dest.xNome]\n"," else:\n"," atributos_cliente = [nota_fiscal.infNFe.dest.CNPJ, nota_fiscal.infNFe.dest.xNome]\n"," endereco_cliente = [nota_fiscal.infNFe.dest.enderDest.xLgr,\n"," nota_fiscal.infNFe.dest.enderDest.nro,\n"," nota_fiscal.infNFe.dest.enderDest.xBairro,\n"," nota_fiscal.infNFe.dest.enderDest.xMun,\n"," nota_fiscal.infNFe.dest.enderDest.UF,\n"," nota_fiscal.infNFe.dest.enderDest.CEP]\n"," atributos_cliente = atributos_cliente + endereco_cliente\n","\n"," #escolha de projeto fazer como tupla e não lista de acordo com a espeficição do problema\n"," #afinal está sendo feito apenas uma leitura, não há necessidade de alteração e nem deveria ser possível\n"," nota_lida = ((id_nota),(atributos_fornecedor),(atributos_cliente))\n"," return nota_lida\n"," else: return False\n","\n"],"metadata":{"id":"VEYp8X0C00gL","executionInfo":{"status":"ok","timestamp":1649440899119,"user_tz":180,"elapsed":391,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":16,"outputs":[]},{"cell_type":"code","source":["#Checar se a Tabela está vazia\n","\n","def checar_tabela(cur):\n"," cur.execute('''SELECT COUNT(*) from nota_fiscal ''')\n"," resultado = cur.fetchall()\n"," \n"," # se não há nehuma linha como resultado da query significa que a tabela está vazia\n"," if resultado == 0 :\n"," print(\"Não existem notas fiscais para gerar o relatório\")\n"," return True\n"," else :\n"," return False"],"metadata":{"id":"PkcXfryI7Qf8","executionInfo":{"status":"ok","timestamp":1649440800454,"user_tz":180,"elapsed":14,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["def impressao_relatorio(opcao_rel,cnpj):\n","\n"," if(opcao_rel == \"1\"):\n"," print(\"Imprimindo Boletos do Fornecedor com CPNJ: {}\\n\".format(cnpj))\n"," linhas_rel = listar_boletos(cnpj) \n"," else: \n"," print(\"Imprimindo clientes do Fornecedor com CPNJ: {} \\n\",format(cnpj))\n"," linhas_rel = listar_clientes(cnpj)\n","\n"," "],"metadata":{"id":"DAcKJzNd_3Ae","executionInfo":{"status":"ok","timestamp":1649440800455,"user_tz":180,"elapsed":14,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":["#Listar os valores e data de Vencimento dos boletos presentes em um nota fiscal conforme o CPF ou CNPJ de um fornecedor.\n","def listar_boletos(cnpj):\n"," con = sqlite3.connect('nfe.db')\n"," cur = con.cursor()\n","\n"," tabela_vazia = checar_tabela(cur)\n","\n"," if (not tabela_vazia):\n"," for linha in cur.execute(\"SELECT valor, dataVencimento FROM nota_fiscal WHERE CNPJForncedor=? \", (cnpj,)) :\n"," print(linha)\n"," print(\"Valor Boleto: {} Data de Vencimento: {} \\n\".format(linha[0],linha[1]))\n","\n"," qtd_linhas = cur.fetchall()\n"," if len(qtd_linhas) == 0:\n"," print(\"Não há notas desse Fornecedor na base de dados\")\n","\n"," con.close()"],"metadata":{"id":"1VCsK3nBOMRC","executionInfo":{"status":"ok","timestamp":1649440800455,"user_tz":180,"elapsed":14,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":8,"outputs":[]},{"cell_type":"code","source":["#Apresentar o nome, identificador (CPF ou CNPJ), endereço dos clientes de um fornecedor.\n","def listar_clientes(cnpj):\n"," con = sqlite3.connect('nfe.db')\n"," cur = con.cursor()\n","\n"," tabela_vazia = checar_tabela(cur)\n","\n"," if (not tabela_vazia):\n"," for linha in cur.execute(\"SELECT nomeCliente, idCliente, enderecoCliente FROM nota_fiscal WHERE CNPJForncedor=? \", (cnpj,)) :\n"," print(\"Nome Cliente: {}, Identificador do Cliente: {}, Endereço Cliente: {}\".format(linha[0],linha[1],linha[2]))\n","\n"," qtd_linhas = cur.fetchall()\n"," if len(qtd_linhas) == 0:\n"," print(\"Não há notas desse Fornecedor na base de dados\")\n"," \n"," con.close()"],"metadata":{"id":"9uOHIC_AOMF8","executionInfo":{"status":"ok","timestamp":1649440800455,"user_tz":180,"elapsed":14,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":9,"outputs":[]},{"cell_type":"code","source":["def persistir_dados(nota_lida):\n"," id_nota = nota_lida[0]\n"," #retirar o \"NFe\" do começo do Id para que a chave seja númerica (idealmente)\n"," #um problema: da esse erro \"Python int too large to convert to SQLite INTEGER\"\n"," id_nota = id_nota[3:]\n"," atr_for = nota_lida[1]\n"," atr_cli = nota_lida[2]\n"," #removendo o nome e o cpf ou cnpj do cliente dos atributos pra concatenar as infos de endereço\n"," end_cli = atr_cli[2:]\n"," \n"," #transformando o endereço em uma string unica\n"," #idealmente fazer uma tabela endereço e guardar cada campo separadamente\n"," #como não havia nenhum requisito de busca por endereço fiz a simplificação\n"," endereco = end_cli[0] + \",\" + end_cli[1] + \",\" + end_cli[2] + \",\" + end_cli[3] + \",\" + end_cli[4] + \",\" + end_cli[5]\n"," con = sqlite3.connect('nfe.db')\n","\n"," cur = con.cursor()\n"," #cur.execute(\"drop table nota_fiscal\")\n"," cur.execute ('''CREATE TABLE IF NOT EXISTS nota_fiscal\n"," (idNota text, valor real, dataVencimento text, CNPJForncedor text, nomeFornecedor text, idCliente text, nomeCliente text, enderecoCliente text)''')\n"," #Verificação se já a nota já foi inserida anteriormente\n"," cur.execute(\"SELECT idNota=? FROM nota_fiscal\",(id_nota,))\n"," nota = cur.fetchall()\n"," if(len(nota) > 0): print(\"Erro Nota Fiscal já cadastrada\")\n"," else:\n"," cur.execute(\"INSERT INTO nota_fiscal VALUES (?,?,?,?,?,?,?,?) \",(id_nota, #id\n"," (float (atr_for[0])), #valor do boleto\n"," atr_for[1], #data de Vencimento\n"," atr_for[2], #CNPJ Fornecedor\n"," atr_for[3], #Nome do Fornecedor\n"," atr_cli[0], #CPF ou CNPJ Cliente\n"," atr_cli[1], #nome Cliente\n"," endereco) )\n"," con.commit()\n"," \n"," con.close()\n"],"metadata":{"id":"TXWQNKv38uyP","executionInfo":{"status":"ok","timestamp":1649441740761,"user_tz":180,"elapsed":464,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":24,"outputs":[]},{"cell_type":"code","source":["def checar_cnpj(cnpj):\n"," valido = False\n","\n"," #checando se não houve erro de digitação e o cnpj possui algum caracter não númerico\n"," valido = str.isdigit(cnpj)\n","\n"," \n"," if(valido):\n"," #checando se não existe algum digito faltando no cnpj\n"," if(len(cnpj) == 14) : return True\n"," else: return False\n"," else:\n"," return False\n"," #retonei os valores booleanos literais pra ficar mais claro "],"metadata":{"id":"WhIKjgoFPVQe","executionInfo":{"status":"ok","timestamp":1649440800456,"user_tz":180,"elapsed":14,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":12,"outputs":[]},{"cell_type":"code","source":["def checar_arquivo(nome_arquivo):\n"," caminho_valido = re.match('^((\\.\\.|[a-zA-Z0-9_/\\-\\\\ ])*\\.[a-zA-Z0-9]+)$', nome_arquivo)\n"," \n"," if(caminho_valido):\n"," return caminho_valido\n"," else:\n"," return caminho_valido"],"metadata":{"id":"VkjXEYWcO9xo","executionInfo":{"status":"ok","timestamp":1649440800456,"user_tz":180,"elapsed":14,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":13,"outputs":[]},{"cell_type":"code","source":["####### CÉLULA PRINCIPAL DE CÓDIGO #######\n","#To do: fazer o programa rodar até que fosse digitado uma opção válida e não matar a execução\n","\n","tipo_exec = input(\"Modos de Execução \\n 1 - Leitura de NFe \\n 2 - Relatórios \\n\")\n","\n","#Execução de Leitura de Notas\n","if tipo_exec == \"1\":\n"," arquivo_nfe = input(\"Entre com Nome do Arquivo \\n\")\n"," if(checar_arquivo(arquivo_nfe) != None):\n"," nota_lida = parser_notas(arquivo_nfe)\n"," #se nota_lida for uma tupla ao inves de False guarda no BD\n"," if(nota_lida):persistir_dados(nota_lida)\n"," else:\n"," print(\"Arquivo inválido\")\n","\n","#Execução de relatórios\n","elif tipo_exec == \"2\":\n"," relatorio = input(\"Relatórios disponíveis: \\n 1 - Boletos de um Fornecedor \\n 2 - Clientes de um Fornecedor \\n\")\n"," if relatorio != \"1\" and relatorio != \"2\":\n"," print(\"Tipo de Relatório não suportado\\n\")\n"," else:\n"," fornecedor = input(\"Entre com CPNJ do Fornecedor \\n\")\n"," cnpj_valido = checar_cnpj(fornecedor)\n"," if(cnpj_valido):impressao_relatorio(relatorio,fornecedor)\n"," else:\n"," print(\"CNPJ inválido\")\n"," \n","else: \n"," print(\"Tipo de execução não suportado\\n\") \n"," \n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"10YFjI2TIkIZ","executionInfo":{"status":"ok","timestamp":1649441749094,"user_tz":180,"elapsed":5317,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}},"outputId":"47ebd54c-bb4a-447f-b44d-e7e283a031f9"},"execution_count":25,"outputs":[{"output_type":"stream","name":"stdout","text":["Modos de Execução \n"," 1 - Leitura de NFe \n"," 2 - Relatórios \n","1\n","Entre com Nome do Arquivo \n","/content/drive/MyDrive/Colab Notebooks/nfe_cliente_pf.xml\n","\n","\n","\n"," \n"," \n"," 31\n"," 00464032\n"," Vendas a prazo\n"," 55\n"," 2\n"," 3103\n"," 2019-04-10T17:24:03-02:00\n"," 2019-04-11T17:17:30-02:00\n"," 1\n"," 1\n"," 3170206\n"," 1\n"," 1\n"," 7\n"," 1\n"," 1\n"," 0\n"," 1\n"," 0\n"," 001\n"," \n"," \n"," 06273476000182\n"," MECA Office Mobil. Eireli-ME\n"," MECA Office Mobil. Eireli-ME\n"," \n"," AV. MARCOS DE FREITAS COSTA\n"," 1055\n"," DANIEL FOSECA\n"," 3170206\n"," Uberlandia\n"," MG\n"," 38400328\n"," 1058\n"," BRASIL\n"," 3432385585\n"," \n"," 7022916720058\n"," 1\n"," \n"," \n"," 25587387000155\n"," HLTS ENGENHARIA E CONSTRUCOES LTDA\n"," \n"," RUA MACHADO DE ASSIS\n"," 1324\n"," LIDICE\n"," 3170206\n"," Uberlandia\n"," MG\n"," 38400081\n"," 1058\n"," BRASIL\n"," 3432235966\n"," \n"," 1\n"," 7021771340054\n"," \n"," \n"," \n"," 00331\n"," SEM GTIN\n"," CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO\n"," 94019090\n"," 5102\n"," UN\n"," 2\n"," 165.00000\n"," 330.00\n"," SEM GTIN\n"," UN\n"," 2\n"," 165.00000\n"," 1\n"," \n"," \n"," 77.68\n"," \n"," \n"," 0\n"," 102\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," IMOBILIZADO IMOB - 2317 CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO - IMOBILIZADO EQUIP. MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO.\n"," \n"," \n"," \n"," 01228\n"," SEM GTIN\n"," CADEIRA GIRATORIA C/ BRACO ALMOFADADA PRETO\n"," 94019090\n"," 5102\n"," UN\n"," 1\n"," 215.00000\n"," 215.00\n"," SEM GTIN\n"," UN\n"," 1\n"," 215.00000\n"," 1\n"," \n"," \n"," 50.61\n"," \n"," \n"," 0\n"," 102\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," IMOBILIZADO EQUIP/MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO\n"," \n"," \n"," \n"," 01324\n"," SEM GTIN\n"," BANQUETA ALTA 70CM PARA BALCAO ASSENTO 30 OU\n"," 94019090\n"," 5102\n"," PC\n"," 1\n"," 90.00000\n"," 90.00\n"," SEM GTIN\n"," PC\n"," 1\n"," 90.00000\n"," 1\n"," \n"," \n"," 21.19\n"," \n"," \n"," 0\n"," 102\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," 40CM NA COR PRETA - IMOBILIZADO EQUIP./MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO\n"," \n"," \n"," \n"," 01644\n"," SEM GTIN\n"," ESTANTE ACO C/ 06 PRATELEIRAS 0,93X040X1,98M\n"," 94069020\n"," 5102\n"," PC\n"," 2\n"," 234.00000\n"," 468.00\n"," SEM GTIN\n"," PC\n"," 2\n"," 234.00000\n"," 1\n"," \n"," \n"," 45.87\n"," \n"," \n"," 0\n"," 102\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," \n"," 08\n"," \n"," \n"," \n"," (REFORCADA) AMAPA - IMOBILIZADO.\n"," \n"," \n"," \n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 1103.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 0.00\n"," 1103.00\n"," 195.35\n"," \n"," \n"," \n"," 0\n"," \n"," 6\n"," VOLUME\n"," VARIAS\n"," 0.000\n"," 0.000\n"," \n"," \n"," \n"," \n"," 000003103\n"," 1103.00\n"," 0.00\n"," 1103.00\n"," \n"," \n"," 001\n"," 2019-05-11\n"," 1103.00\n"," \n"," \n"," \n"," \n"," 14\n"," 1103.00\n"," \n"," 0.00\n"," \n"," \n"," ORDEM DE FORNECIMENTO 36994 - 28DD - INFORMACOES COMPLEMENTARES a seguinte informacao. EMPRESA ENQUADRADA NO SIMPLES NACIONAL. NAO GERA CREDITO DE IPI/ISS. GERA CREDITO DE ICMS. Trib aprox R$: 54,84 Federal 140,51 Estadual Fonte: IBPT empresometro.com.br S3A6R4\n"," \n"," \n","\n","\n","***** Leitura concluída com sucesso *****\n","**** Persistência concluída com sucesso ****\n","Erro Nota Fiscal já cadastrada\n"]}]},{"cell_type":"code","source":[""],"metadata":{"id":"x6y4sf40Kd6y","executionInfo":{"status":"aborted","timestamp":1649440818709,"user_tz":180,"elapsed":7,"user":{"displayName":"Rebeca Cecco","userId":"04252482099431918266"}}},"execution_count":null,"outputs":[]}]} \ No newline at end of file diff --git a/testes/nfe.xml b/testes/nfe.xml new file mode 100644 index 0000000..7a51de2 --- /dev/null +++ b/testes/nfe.xml @@ -0,0 +1,307 @@ + + + + + + + 31 + 00464032 + Vendas a prazo + 55 + 2 + 3103 + 2019-04-10T17:24:03-02:00 + 2019-04-11T17:17:30-02:00 + 1 + 1 + 3170206 + 1 + 1 + 7 + 1 + 1 + 0 + 1 + 0 + 001 + + + + 06273476000182 + MECA Office Mobil. Eireli-ME + MECA Office Mobil. Eireli-ME + + + AV. MARCOS DE FREITAS COSTA + 1055 + DANIEL FOSECA + 3170206 + Uberlandia + MG + 38400328 + 1058 + BRASIL + 3432385585 + + + 7022916720058 + 1 + + + + 25587387000155 + HLTS ENGENHARIA E CONSTRUCOES LTDA + + + RUA MACHADO DE ASSIS + 1324 + LIDICE + 3170206 + Uberlandia + MG + 38400081 + 1058 + BRASIL + 3432235966 + + + 1 + 7021771340054 + + + + + + 00331 + SEM GTIN + CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 2 + 165.00000 + 330.00 + SEM GTIN + UN + 2 + 165.00000 + 1 + + + + 77.68 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + IMOBILIZADO IMOB - 2317 CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO - IMOBILIZADO EQUIP. MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO. + + + + + 01228 + SEM GTIN + CADEIRA GIRATORIA C/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 1 + 215.00000 + 215.00 + SEM GTIN + UN + 1 + 215.00000 + 1 + + + + 50.61 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + IMOBILIZADO EQUIP/MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01324 + SEM GTIN + BANQUETA ALTA 70CM PARA BALCAO ASSENTO 30 OU + 94019090 + 5102 + PC1 + 90.00000 + 90.00 + SEM GTIN + PC + 1 + 90.00000 + 1 + + + 21.19 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + 40CM NA COR PRETA - IMOBILIZADO EQUIP./MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01644 + SEM GTIN + ESTANTE ACO C/ 06 PRATELEIRAS 0,93X040X1,98M + 94069020 + 5102 + PC + 2 + 234.00000 + 468.00 + SEM GTIN + PC + 2 + 234.00000 + 1 + + + + 45.87 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + (REFORCADA) AMAPA - IMOBILIZADO. + + + + + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 195.35 + + + + + 0 + + 6 + VOLUME + VARIAS + 0.000 + 0.000 + + + + + 000003103 + 1103.00 + 0.00 + 1103.00 + + + 001 + 2019-05-11 + 1103.00 + + + + + 14 + 1103.00 + + 0.00 + + + ORDEM DE FORNECIMENTO 36994 - 28DD - INFORMACOES COMPLEMENTARES a seguinte informacao. EMPRESA ENQUADRADA NO SIMPLES NACIONAL. NAO GERA CREDITO DE IPI/ISS. GERA CREDITO DE ICMS. Trib aprox R$: 54,84 Federal 140,51 Estadual Fonte: IBPT empresometro.com.br S3A6R4 + + + + ngqVwH6QNCAHyRuI529RIAr7Nyk=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 + + + 1 + 14.2.26 + 31190406273476000182550020000031031004640327 + 2019-04-10T17:23:27-03:00 + 131193257591884 + ngqVwH6QNCAHyRuI529RIAr7Nyk= + 100 + Autorizado o uso da NF-e + + + diff --git a/testes/nfe_cliente_pf.xml b/testes/nfe_cliente_pf.xml new file mode 100644 index 0000000..9c7b16d --- /dev/null +++ b/testes/nfe_cliente_pf.xml @@ -0,0 +1,307 @@ + + + + + + + 31 + 00464032 + Vendas a prazo + 55 + 2 + 3103 + 2019-04-10T17:24:03-02:00 + 2019-04-11T17:17:30-02:00 + 1 + 1 + 3170206 + 1 + 1 + 7 + 1 + 1 + 0 + 1 + 0 + 001 + + + + 06273476000182 + MECA Office Mobil. Eireli-ME + MECA Office Mobil. Eireli-ME + + + AV. MARCOS DE FREITAS COSTA + 1055 + DANIEL FOSECA + 3170206 + Uberlandia + MG + 38400328 + 1058 + BRASIL + 3432385585 + + + 7022916720058 + 1 + + + + 25587387000155 + HLTS ENGENHARIA E CONSTRUCOES LTDA + + + RUA MACHADO DE ASSIS + 1324 + LIDICE + 3170206 + Uberlandia + MG + 38400081 + 1058 + BRASIL + 3432235966 + + + 1 + 7021771340054 + + + + + + 00331 + SEM GTIN + CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 2 + 165.00000 + 330.00 + SEM GTIN + UN + 2 + 165.00000 + 1 + + + + 77.68 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + IMOBILIZADO IMOB - 2317 CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO - IMOBILIZADO EQUIP. MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO. + + + + + 01228 + SEM GTIN + CADEIRA GIRATORIA C/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 1 + 215.00000 + 215.00 + SEM GTIN + UN + 1 + 215.00000 + 1 + + + + 50.61 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + IMOBILIZADO EQUIP/MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01324 + SEM GTIN + BANQUETA ALTA 70CM PARA BALCAO ASSENTO 30 OU + 94019090 + 5102 + PC1 + 90.00000 + 90.00 + SEM GTIN + PC + 1 + 90.00000 + 1 + + + 21.19 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + 40CM NA COR PRETA - IMOBILIZADO EQUIP./MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01644 + SEM GTIN + ESTANTE ACO C/ 06 PRATELEIRAS 0,93X040X1,98M + 94069020 + 5102 + PC + 2 + 234.00000 + 468.00 + SEM GTIN + PC + 2 + 234.00000 + 1 + + + + 45.87 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + (REFORCADA) AMAPA - IMOBILIZADO. + + + + + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 195.35 + + + + + 0 + + 6 + VOLUME + VARIAS + 0.000 + 0.000 + + + + + 000003103 + 1103.00 + 0.00 + 1103.00 + + + 001 + 2019-05-11 + 1103.00 + + + + + 14 + 1103.00 + + 0.00 + + + ORDEM DE FORNECIMENTO 36994 - 28DD - INFORMACOES COMPLEMENTARES a seguinte informacao. EMPRESA ENQUADRADA NO SIMPLES NACIONAL. NAO GERA CREDITO DE IPI/ISS. GERA CREDITO DE ICMS. Trib aprox R$: 54,84 Federal 140,51 Estadual Fonte: IBPT empresometro.com.br S3A6R4 + + + + ngqVwH6QNCAHyRuI529RIAr7Nyk=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 + + + 1 + 14.2.26 + 31190406273476000182550020000031031004640327 + 2019-04-10T17:23:27-03:00 + 131193257591884 + ngqVwH6QNCAHyRuI529RIAr7Nyk= + 100 + Autorizado o uso da NF-e + + + diff --git a/testes/nfe_erro_cli_sem_nome.xml b/testes/nfe_erro_cli_sem_nome.xml new file mode 100644 index 0000000..83291de --- /dev/null +++ b/testes/nfe_erro_cli_sem_nome.xml @@ -0,0 +1,307 @@ + + + + + + + 31 + 00464032 + Vendas a prazo + 55 + 2 + 3103 + 2019-04-10T17:24:03-02:00 + 2019-04-11T17:17:30-02:00 + 1 + 1 + 3170206 + 1 + 1 + 7 + 1 + 1 + 0 + 1 + 0 + 001 + + + + 06273476000182 + MECA Office Mobil. Eireli-ME + MECA Office Mobil. Eireli-ME + + + AV. MARCOS DE FREITAS COSTA + 1055 + DANIEL FOSECA + 3170206 + Uberlandia + MG + 38400328 + 1058 + BRASIL + 3432385585 + + + 7022916720058 + 1 + + + + 25587387000155 + + + + RUA MACHADO DE ASSIS + 1324 + LIDICE + 3170206 + Uberlandia + MG + 38400081 + 1058 + BRASIL + 3432235966 + + + 1 + 7021771340054 + + + + + + 00331 + SEM GTIN + CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 2 + 165.00000 + 330.00 + SEM GTIN + UN + 2 + 165.00000 + 1 + + + + 77.68 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + IMOBILIZADO IMOB - 2317 CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO - IMOBILIZADO EQUIP. MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO. + + + + + 01228 + SEM GTIN + CADEIRA GIRATORIA C/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 1 + 215.00000 + 215.00 + SEM GTIN + UN + 1 + 215.00000 + 1 + + + + 50.61 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + IMOBILIZADO EQUIP/MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01324 + SEM GTIN + BANQUETA ALTA 70CM PARA BALCAO ASSENTO 30 OU + 94019090 + 5102 + PC1 + 90.00000 + 90.00 + SEM GTIN + PC + 1 + 90.00000 + 1 + + + 21.19 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + 40CM NA COR PRETA - IMOBILIZADO EQUIP./MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01644 + SEM GTIN + ESTANTE ACO C/ 06 PRATELEIRAS 0,93X040X1,98M + 94069020 + 5102 + PC + 2 + 234.00000 + 468.00 + SEM GTIN + PC + 2 + 234.00000 + 1 + + + + 45.87 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + (REFORCADA) AMAPA - IMOBILIZADO. + + + + + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 195.35 + + + + + 0 + + 6 + VOLUME + VARIAS + 0.000 + 0.000 + + + + + 000003103 + 1103.00 + 0.00 + 1103.00 + + + 001 + 2019-05-11 + 1103.00 + + + + + 14 + 1103.00 + + 0.00 + + + ORDEM DE FORNECIMENTO 36994 - 28DD - INFORMACOES COMPLEMENTARES a seguinte informacao. EMPRESA ENQUADRADA NO SIMPLES NACIONAL. NAO GERA CREDITO DE IPI/ISS. GERA CREDITO DE ICMS. Trib aprox R$: 54,84 Federal 140,51 Estadual Fonte: IBPT empresometro.com.br S3A6R4 + + + + ngqVwH6QNCAHyRuI529RIAr7Nyk=IAxnZ+del9SR4hBrWJOxR6R+9+4wX7K4QIFevGOhjzE36Fe77GbFB3SigoqsZ+ypUDyCz/6dm7ejsDjC6s3ROafT8NBrMFL0bE14WhNK0D0GdrLWCUZdi+IGT/B4rw8unpwq+2JVPe7vLdxpRZPPYaoZCt52yLBiZTxnGEoHRIgUbvByiYDTxvXStpRXXUKCrd2/2G13W+HoEVWOtg97taSgQfbiOT5kTGCC9DQ/EthiOj71TFaWIQV18pfwjAeP0cNFMAp5ILEmXfKZ/Jm6LKRoiVfUZRafK+QU7MatTGHxWKyZSvW/82Ob38kT6jZChea+7vh9N9hDQiTcWmcGUw==MIIH/DCCBeSgAwIBAgIIeSrFaXUFq/8wDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEUMBIGA1UEAxMLQUMgTElOSyBSRkIwHhcNMTcwNjA1MTMwMDI3WhcNMjAwNjA1MTMwMDI3WjCB4DELMAkGA1UEBhMCQlIxCzAJBgNVBAgTAk1HMRMwEQYDVQQHEwpVQkVSTEFORElBMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMTYwNAYDVQQLEy1TZWNyZXRhcmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsTDVJGQiBlLUNOUEogQTMxEDAOBgNVBAsTB0FSIExJTksxODA2BgNVBAMTL01FQ0EgT0ZGSUNFIE1PQklMSUFSSU8gRUlSRUxJIE1FOjA2MjczNDc2MDAwMTgyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlwkJ5RGg+4dBViFqKPh0Em6TN3WrdhpPemslBkLtjYftEy42lELdOkOj+wBVliwAx0Vb1bUBhSAcFDqA4wO1JJLWtglgPvmfZe7dKJeHngFE3BO8aNtaPAr31gZjRLVSr7yIbAiDrXeRh3E+iZKmPPjAtPs8Ulr0rF2nZEV2v/Yer4aeTbGPH//nxaBgrz04O9Iqy/x3Xr7MhgDaywjLvH9bkO3154yYIQIdsEWwRy17S95lhk+Y78EnLmi0IY+8MBBVJGdbvewHN45c3hmZ8zuZMg3oJboZlYegcJBW4W2MDG3Y4NURWES0T4fFhYiJ7r1La5hzPOj/9YUZx9OvMQIDAQABo4IDJzCCAyMwHwYDVR0jBBgwFoAUWY0sJWzh8x5duiYhXoEJKGWF1agwDgYDVR0PAQH/BAQDAgXgMG4GA1UdIARnMGUwYwYGYEwBAgM4MFkwVwYIKwYBBQUHAgEWS2h0dHA6Ly9yZXBvc2l0b3Jpby5saW5rY2VydGlmaWNhY2FvLmNvbS5ici9hYy1saW5rcmZiL2FjLWxpbmstcmZiLXBjLWEzLnBkZjCB+QYDVR0fBIHxMIHuMFCgTqBMhkpodHRwOi8vcmVwb3NpdG9yaW8ubGlua2NlcnRpZmljYWNhby5jb20uYnIvYWMtbGlua3JmYi9sY3ItYWMtbGlua3JmYnYyLmNybDBRoE+gTYZLaHR0cDovL3JlcG9zaXRvcmlvMi5saW5rY2VydGlmaWNhY2FvLmNvbS5ici9hYy1saW5rcmZiL2xjci1hYy1saW5rcmZidjIuY3JsMEegRaBDhkFodHRwOi8vcmVwb3NpdG9yaW8uaWNwYnJhc2lsLmdvdi5ici9sY3IvbGluay9sY3ItYWMtbGlua3JmYnYyLmNybDCBlQYIKwYBBQUHAQEEgYgwgYUwUgYIKwYBBQUHMAKGRmh0dHA6Ly9yZXBvc2l0b3Jpby5saW5rY2VydGlmaWNhY2FvLmNvbS5ici9hYy1saW5rcmZiL2FjLWxpbmtyZmJ2Mi5wN2IwLwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwLmxpbmtjZXJ0aWZpY2FjYW8uY29tLmJyMIHBBgNVHREEgbkwgbaBGFZFTkRBU0BNRUNBT0ZGSUNFLkNPTS5CUqAsBgVgTAEDAqAjEyFDUklTVElOQSBHT01FUyBEQSBTSUxWQSBHT05DQUxWRVOgGQYFYEwBAwOgEBMOMDYyNzM0NzYwMDAxODKgOAYFYEwBAwSgLxMtMDkwODE5Njk2NTI0MDUwMjY2ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoBcGBWBMAQMHoA4TDDAwMDAwMDAwMDAwMDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAgEARglY6zgtmvQ1Tu0B/UegLOfwBT9vvTfJ+owFDczzqxoflLu2zOWj05/YOAup6TNDy/ODjfPz2kwYxAA3jezRk1pLSWyJiJ3iTdMiokSrDBYWdDecvzP/QyzbATiwPFfm4Z1olnrh6btlwlwO1dV4mfUd6s77P+v9+RAK+MK7z3+i/6ye+9AJwCRmHAc7Sw01QIGrYmUUQrP6eSTTrYRhzHE4gjKqJxRBnXJSx+PwVy426nuBJPz5CTavy3xPNqaTaO4YUu1xCl2isGvYOuyXCm6up1RStK3aF0MrTHrGELfh2TVxglkf26YoN9LNWyX9Eqe2sU03P4H67S0hbR4NdhvNI7Kh4j1/JkNyQI2VFewuMnRAz0Ysa6chq/UadsTWWgrCUjGqpJXFm2oF5EUFBhSZUFE8s9PCoAQ4CoweaDRbrOwwEvwTUe2f5dpbai1hJ7cqLAg9PCcVUXMr5x15BEMQ6aXN9mvnqjGLSFsVXuqfpEzfGJAz89OyWHhGwMMIBUhNjDfNYySdyUKCLZviX52DHLUb3qDG/i1jCapeEB+Op/kxsExp4UWVUjpA3qPfo25Iv+dXsrWVfU7gva8jhoEwZd9f0il8v/+sMunH2eivETmucHCBQ+fc/ypwrSd+WGHwnthMxjdSnGL79bdhzt/T4eAJlg/x3O4d3i7a6Ms= + + + 1 + 14.2.26 + 31190406273476000182550020000031031004640327 + 2019-04-10T17:23:27-03:00 + 131193257591884 + ngqVwH6QNCAHyRuI529RIAr7Nyk= + 100 + Autorizado o uso da NF-e + + + diff --git a/testes/nfe_erro_end_cli_incompleto.xml b/testes/nfe_erro_end_cli_incompleto.xml new file mode 100644 index 0000000..80ea460 --- /dev/null +++ b/testes/nfe_erro_end_cli_incompleto.xml @@ -0,0 +1,307 @@ + + + + + + + 31 + 00464032 + Vendas a prazo + 55 + 2 + 3103 + 2019-04-10T17:24:03-02:00 + 2019-04-11T17:17:30-02:00 + 1 + 1 + 3170206 + 1 + 1 + 7 + 1 + 1 + 0 + 1 + 0 + 001 + + + + 06273476000182 + MECA Office Mobil. Eireli-ME + MECA Office Mobil. Eireli-ME + + + AV. MARCOS DE FREITAS COSTA + 1055 + DANIEL FOSECA + 3170206 + Uberlandia + MG + 38400328 + 1058 + BRASIL + 3432385585 + + + 7022916720058 + 1 + + + + 25587387000155 + HLTS ENGENHARIA E CONSTRUCOES LTDA + + + + 1324 + LIDICE + 3170206 + Uberlandia + MG + 38400081 + 1058 + BRASIL + 3432235966 + + + 1 + 7021771340054 + + + + + + 00331 + SEM GTIN + CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 2 + 165.00000 + 330.00 + SEM GTIN + UN + 2 + 165.00000 + 1 + + + + 77.68 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + IMOBILIZADO IMOB - 2317 CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO - IMOBILIZADO EQUIP. MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO. + + + + + 01228 + SEM GTIN + CADEIRA GIRATORIA C/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 1 + 215.00000 + 215.00 + SEM GTIN + UN + 1 + 215.00000 + 1 + + + + 50.61 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + IMOBILIZADO EQUIP/MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01324 + SEM GTIN + BANQUETA ALTA 70CM PARA BALCAO ASSENTO 30 OU + 94019090 + 5102 + PC1 + 90.00000 + 90.00 + SEM GTIN + PC + 1 + 90.00000 + 1 + + + 21.19 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + 40CM NA COR PRETA - IMOBILIZADO EQUIP./MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01644 + SEM GTIN + ESTANTE ACO C/ 06 PRATELEIRAS 0,93X040X1,98M + 94069020 + 5102 + PC + 2 + 234.00000 + 468.00 + SEM GTIN + PC + 2 + 234.00000 + 1 + + + + 45.87 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + (REFORCADA) AMAPA - IMOBILIZADO. + + + + + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 195.35 + + + + + 0 + + 6 + VOLUME + VARIAS + 0.000 + 0.000 + + + + + 000003103 + 1103.00 + 0.00 + 1103.00 + + + 001 + 2019-05-11 + 1103.00 + + + + + 14 + 1103.00 + + 0.00 + + + ORDEM DE FORNECIMENTO 36994 - 28DD - INFORMACOES COMPLEMENTARES a seguinte informacao. EMPRESA ENQUADRADA NO SIMPLES NACIONAL. NAO GERA CREDITO DE IPI/ISS. GERA CREDITO DE ICMS. Trib aprox R$: 54,84 Federal 140,51 Estadual Fonte: IBPT empresometro.com.br S3A6R4 + + + + ngqVwH6QNCAHyRuI529RIAr7Nyk=IAxnZ+del9SR4hBrWJOxR6R+9+4wX7K4QIFevGOhjzE36Fe77GbFB3SigoqsZ+ypUDyCz/6dm7ejsDjC6s3ROafT8NBrMFL0bE14WhNK0D0GdrLWCUZdi+IGT/B4rw8unpwq+2JVPe7vLdxpRZPPYaoZCt52yLBiZTxnGEoHRIgUbvByiYDTxvXStpRXXUKCrd2/2G13W+HoEVWOtg97taSgQfbiOT5kTGCC9DQ/EthiOj71TFaWIQV18pfwjAeP0cNFMAp5ILEmXfKZ/Jm6LKRoiVfUZRafK+QU7MatTGHxWKyZSvW/82Ob38kT6jZChea+7vh9N9hDQiTcWmcGUw==MIIH/DCCBeSgAwIBAgIIeSrFaXUFq/8wDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEUMBIGA1UEAxMLQUMgTElOSyBSRkIwHhcNMTcwNjA1MTMwMDI3WhcNMjAwNjA1MTMwMDI3WjCB4DELMAkGA1UEBhMCQlIxCzAJBgNVBAgTAk1HMRMwEQYDVQQHEwpVQkVSTEFORElBMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMTYwNAYDVQQLEy1TZWNyZXRhcmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsTDVJGQiBlLUNOUEogQTMxEDAOBgNVBAsTB0FSIExJTksxODA2BgNVBAMTL01FQ0EgT0ZGSUNFIE1PQklMSUFSSU8gRUlSRUxJIE1FOjA2MjczNDc2MDAwMTgyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlwkJ5RGg+4dBViFqKPh0Em6TN3WrdhpPemslBkLtjYftEy42lELdOkOj+wBVliwAx0Vb1bUBhSAcFDqA4wO1JJLWtglgPvmfZe7dKJeHngFE3BO8aNtaPAr31gZjRLVSr7yIbAiDrXeRh3E+iZKmPPjAtPs8Ulr0rF2nZEV2v/Yer4aeTbGPH//nxaBgrz04O9Iqy/x3Xr7MhgDaywjLvH9bkO3154yYIQIdsEWwRy17S95lhk+Y78EnLmi0IY+8MBBVJGdbvewHN45c3hmZ8zuZMg3oJboZlYegcJBW4W2MDG3Y4NURWES0T4fFhYiJ7r1La5hzPOj/9YUZx9OvMQIDAQABo4IDJzCCAyMwHwYDVR0jBBgwFoAUWY0sJWzh8x5duiYhXoEJKGWF1agwDgYDVR0PAQH/BAQDAgXgMG4GA1UdIARnMGUwYwYGYEwBAgM4MFkwVwYIKwYBBQUHAgEWS2h0dHA6Ly9yZXBvc2l0b3Jpby5saW5rY2VydGlmaWNhY2FvLmNvbS5ici9hYy1saW5rcmZiL2FjLWxpbmstcmZiLXBjLWEzLnBkZjCB+QYDVR0fBIHxMIHuMFCgTqBMhkpodHRwOi8vcmVwb3NpdG9yaW8ubGlua2NlcnRpZmljYWNhby5jb20uYnIvYWMtbGlua3JmYi9sY3ItYWMtbGlua3JmYnYyLmNybDBRoE+gTYZLaHR0cDovL3JlcG9zaXRvcmlvMi5saW5rY2VydGlmaWNhY2FvLmNvbS5ici9hYy1saW5rcmZiL2xjci1hYy1saW5rcmZidjIuY3JsMEegRaBDhkFodHRwOi8vcmVwb3NpdG9yaW8uaWNwYnJhc2lsLmdvdi5ici9sY3IvbGluay9sY3ItYWMtbGlua3JmYnYyLmNybDCBlQYIKwYBBQUHAQEEgYgwgYUwUgYIKwYBBQUHMAKGRmh0dHA6Ly9yZXBvc2l0b3Jpby5saW5rY2VydGlmaWNhY2FvLmNvbS5ici9hYy1saW5rcmZiL2FjLWxpbmtyZmJ2Mi5wN2IwLwYIKwYBBQUHMAGGI2h0dHA6Ly9vY3NwLmxpbmtjZXJ0aWZpY2FjYW8uY29tLmJyMIHBBgNVHREEgbkwgbaBGFZFTkRBU0BNRUNBT0ZGSUNFLkNPTS5CUqAsBgVgTAEDAqAjEyFDUklTVElOQSBHT01FUyBEQSBTSUxWQSBHT05DQUxWRVOgGQYFYEwBAwOgEBMOMDYyNzM0NzYwMDAxODKgOAYFYEwBAwSgLxMtMDkwODE5Njk2NTI0MDUwMjY2ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoBcGBWBMAQMHoA4TDDAwMDAwMDAwMDAwMDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAgEARglY6zgtmvQ1Tu0B/UegLOfwBT9vvTfJ+owFDczzqxoflLu2zOWj05/YOAup6TNDy/ODjfPz2kwYxAA3jezRk1pLSWyJiJ3iTdMiokSrDBYWdDecvzP/QyzbATiwPFfm4Z1olnrh6btlwlwO1dV4mfUd6s77P+v9+RAK+MK7z3+i/6ye+9AJwCRmHAc7Sw01QIGrYmUUQrP6eSTTrYRhzHE4gjKqJxRBnXJSx+PwVy426nuBJPz5CTavy3xPNqaTaO4YUu1xCl2isGvYOuyXCm6up1RStK3aF0MrTHrGELfh2TVxglkf26YoN9LNWyX9Eqe2sU03P4H67S0hbR4NdhvNI7Kh4j1/JkNyQI2VFewuMnRAz0Ysa6chq/UadsTWWgrCUjGqpJXFm2oF5EUFBhSZUFE8s9PCoAQ4CoweaDRbrOwwEvwTUe2f5dpbai1hJ7cqLAg9PCcVUXMr5x15BEMQ6aXN9mvnqjGLSFsVXuqfpEzfGJAz89OyWHhGwMMIBUhNjDfNYySdyUKCLZviX52DHLUb3qDG/i1jCapeEB+Op/kxsExp4UWVUjpA3qPfo25Iv+dXsrWVfU7gva8jhoEwZd9f0il8v/+sMunH2eivETmucHCBQ+fc/ypwrSd+WGHwnthMxjdSnGL79bdhzt/T4eAJlg/x3O4d3i7a6Ms= + + + 1 + 14.2.26 + 31190406273476000182550020000031031004640327 + 2019-04-10T17:23:27-03:00 + 131193257591884 + ngqVwH6QNCAHyRuI529RIAr7Nyk= + 100 + Autorizado o uso da NF-e + + + diff --git a/testes/nfe_erro_sem_CNPJ_cli.xml b/testes/nfe_erro_sem_CNPJ_cli.xml new file mode 100644 index 0000000..ef54f09 --- /dev/null +++ b/testes/nfe_erro_sem_CNPJ_cli.xml @@ -0,0 +1,307 @@ + + + + + + + 31 + 00464032 + Vendas a prazo + 55 + 2 + 3103 + 2019-04-10T17:24:03-02:00 + 2019-04-11T17:17:30-02:00 + 1 + 1 + 3170206 + 1 + 1 + 7 + 1 + 1 + 0 + 1 + 0 + 001 + + + + 06273476000182 + MECA Office Mobil. Eireli-ME + MECA Office Mobil. Eireli-ME + + + AV. MARCOS DE FREITAS COSTA + 1055 + DANIEL FOSECA + 3170206 + Uberlandia + MG + 38400328 + 1058 + BRASIL + 3432385585 + + + 7022916720058 + 1 + + + + + HLTS ENGENHARIA E CONSTRUCOES LTDA + + + RUA MACHADO DE ASSIS + 1324 + LIDICE + 3170206 + Uberlandia + MG + 38400081 + 1058 + BRASIL + 3432235966 + + + 1 + 7021771340054 + + + + + + 00331 + SEM GTIN + CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 2 + 165.00000 + 330.00 + SEM GTIN + UN + 2 + 165.00000 + 1 + + + + 77.68 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + IMOBILIZADO IMOB - 2317 CADEIRA GIRATORIA S/ BRACO ALMOFADADA PRETO - IMOBILIZADO EQUIP. MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO. + + + + + 01228 + SEM GTIN + CADEIRA GIRATORIA C/ BRACO ALMOFADADA PRETO + 94019090 + 5102 + UN + 1 + 215.00000 + 215.00 + SEM GTIN + UN + 1 + 215.00000 + 1 + + + + 50.61 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + IMOBILIZADO EQUIP/MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01324 + SEM GTIN + BANQUETA ALTA 70CM PARA BALCAO ASSENTO 30 OU + 94019090 + 5102 + PC1 + 90.00000 + 90.00 + SEM GTIN + PC + 1 + 90.00000 + 1 + + + 21.19 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + 40CM NA COR PRETA - IMOBILIZADO EQUIP./MOVEIS P/ CANTEIRO MATERIAIS INSTALACAO DE CANTEIRO + + + + + 01644 + SEM GTIN + ESTANTE ACO C/ 06 PRATELEIRAS 0,93X040X1,98M + 94069020 + 5102 + PC + 2 + 234.00000 + 468.00 + SEM GTIN + PC + 2 + 234.00000 + 1 + + + + 45.87 + + + 0 + 102 + + + + + 08 + + + + + 08 + + + + + (REFORCADA) AMAPA - IMOBILIZADO. + + + + + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 1103.00 + 195.35 + + + + + 0 + + 6 + VOLUME + VARIAS + 0.000 + 0.000 + + + + + 000003103 + 1103.00 + 0.00 + 1103.00 + + + 001 + 2019-05-11 + 1103.00 + + + + + 14 + 1103.00 + + 0.00 + + + ORDEM DE FORNECIMENTO 36994 - 28DD - INFORMACOES COMPLEMENTARES a seguinte informacao. EMPRESA ENQUADRADA NO SIMPLES NACIONAL. NAO GERA CREDITO DE IPI/ISS. GERA CREDITO DE ICMS. Trib aprox R$: 54,84 Federal 140,51 Estadual Fonte: IBPT empresometro.com.br S3A6R4 + + + + ngqVwH6QNCAHyRuI529RIAr7Nyk=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 + + + 1 + 14.2.26 + 31190406273476000182550020000031031004640327 + 2019-04-10T17:23:27-03:00 + 131193257591884 + ngqVwH6QNCAHyRuI529RIAr7Nyk= + 100 + Autorizado o uso da NF-e + + +