FJFrigo · Manutenção · Integrações › 6-Importar XML de Entrada · 456

Importar XML de Entrada

Anexa o XML da NF-e do fornecedor ao lançamento que já existe para aquela nota — compra de almoxarifado, compra de carne ou título. Não cria lançamento nenhum. Cada regra traz a mensagem exata, quando dispara e o confronto com o sistema antigo.

Tabelas: almoxarifado_compra, faturamento_compra_carne, financeiro_emissao (coluna xml_fornecedor), emitente Programa antigo: menu456.prg (importar2)

Bloqueia

Não grava. statuscode 400 com a frase abaixo, que a tela mostra como está.

Confirma

Pergunta antes de seguir. Nesta tela quem pergunta é sempre a própria tela.

Aviso

Não interrompe: o arquivo aparece na grade com a situação e a observação, e é pulado. Os outros arquivos seguem.

Situação na grade

Importar, Já importada, Própria, Cancelada, Sem cadastro, Não encontrada, Repetido e Erro. A frase da coluna Observação é a que está em cada regra.

A

Receber os arquivos

O botão "Escolher XMLs…"

A tela aceita vários .xml ou um .zip com os XMLs dentro (o sistema antigo lia a pasta imp_xml do micro). Escolher os arquivos já dispara a prévia (POST /cadastro/xml-entrada/previa), que não grava nada. O Importar manda os mesmos arquivos de novo e o servidor relê tudo — não confia na prévia.

Bloqueia

Nenhum arquivo XML recebido.

QuandoO envio não traz nenhum .xml — por exemplo, um .zip sem XML dentro.

Todos
Bloqueia

Não foi possível ler o arquivo: …

QuandoFalha de leitura dos bytes durante o Importar (o motivo técnico vem depois dos dois-pontos). Nada é gravado.

Todos
B

Conferir cada XML (prévia)

Na ordem em que o servidor confere

CNPJ/CPF do emitente e número da nota saem do conteúdo do XML (emit/CNPJ ou emit/CPF, ide/nNF); só na falta deles, da chave de 44 dígitos (atributo Id do infNFe, chNFe ou o nome do arquivo). A data de emissão é o dhEmi (ou dEmi).

O lançamento é procurado nesta ordem, e vale o primeiro que achar: compra de almoxarifado (242, Destino "Almox."), compra de carne (2322, "Carne"), título (221, "Título") — pelo emitente, pelo número da nota no documento, só lançamentos vivos e só nas filiais do usuário. Com mais de um na mesma tabela (as parcelas de um título), vale o de menor id.

Aviso

Arquivo vazio.

QuandoO arquivo não tem conteúdo. Situação Erro.

Todos
Aviso

Não é um XML válido.

QuandoO arquivo não abre como XML (inclusive com DOCTYPE, que é recusado por segurança). Situação Erro.

Todos
Aviso

Não é uma NF-e (sem <ide>/<emit>).

QuandoXML válido, mas sem os grupos ide e emit — um evento, um protocolo solto, um CT-e. Situação Erro.

Todos
Aviso

Sem CNPJ do emitente ou número da nota.

QuandoNem o conteúdo nem a chave dão o CNPJ/CPF do emitente ou o número. Situação Erro.

Todos
Aviso

O mesmo XML já veio neste envio.

QuandoDois arquivos com a mesma chave de acesso (sem chave: o mesmo CNPJ e número) no mesmo envio. O primeiro segue; o segundo fica Repetido.

Todos
Aviso

Emitida pela própria filial (nota de saída).

QuandoO CNPJ do emitente do XML é o da filial da sessão. Situação Própria.

Sistema antigoO mesmo teste contra oParametros:cCnpj (:180).

Todos
Aviso

NF-e cancelada.

QuandoO texto <cStat>101</cStat> aparece em qualquer ponto do arquivo. Situação Cancelada.

Sistema antigoMesma procura no arquivo inteiro (:197).

Todos
Aviso

CNPJ/CPF sem cadastro de emitente.

QuandoNenhum emitente do cadastro inteiro tem aquele CNPJ/CPF (comparado sem ponto, barra, hífen e espaço). Situação Sem cadastro.

Sistema antigo"sem cadastro" no pulados_imp_xml.txt (:213).

Todos
Aviso

Nenhum lançamento com esta nota para o emitente.

QuandoNenhuma das três tabelas tem lançamento vivo, nas filiais do usuário, daquele emitente com o número da nota no documento. Situação Não encontrada.

Sistema antigo"não encontrada NF" (:229).

AtençãoO documento tem de conter o número: todos os algarismos dele sem zero à esquerda iguais ao nNF, ou um grupo de algarismos igual (001-001-0000055 e 12-1 casam com 55 e 12). A nota 12 não casa com o documento 1234 — no sistema antigo casava. Emitente com CNPJ repetido no cadastro: vale qualquer um deles.

Todos
Aviso

O lançamento já tem XML.

QuandoO lançamento achado já tem xml_fornecedor preenchido. Situação Já importada; nada muda nele.

Sistema antigo"já importada NF" (:254-258).

Todos
C

Importar

O botão

Grava, numa transação só, o XML (em UTF-8) em xml_fornecedor de cada lançamento com situação Importar. Na compra de almoxarifado e na de carne a data_emissao passa a ser a do XML; no título só o XML é gravado. Depois de gravar, a grade passa a mostrar o que de fato aconteceu.

Confirma

Anexar o XML em 3 lançamento(s)?

QuandoPergunta da tela, antes de enviar. O botão fica desabilitado quando a prévia não tem nada a importar.

Todos
Aviso

(sem mensagem) — não há trava de mês fechado

QuandoA importação não confere U.D.F.: troca a data_emissao de compra de período já fechado. Mesmo comportamento do sistema antigo.

Todos
D

Permissões

Quem pode passar

grep hUsuarioRegras no menu456.prg devolve zero: não há regra nomeada a conceder. A opção não está em opcao_sistema (o item do menu não tem código de permissão) e a tela é aberta por quem vê o submenu Integrações. O alcance é limitado às filiais do usuário (usuario_filial).

E

Como o erro chega na tela

Para o QA reproduzir e reportar

Recusa: HTTP 200 com statuscode 400 e a frase, que a tela mostra na faixa vermelha acima da grade. Os "Aviso" deste documento não são erro: aparecem na coluna Observação da grade, com a situação ao lado, e o marcador "Mostrar só os pulados" filtra só eles. Falha sem frase aparece como "Não foi possível ler os arquivos." (prévia) ou "Não foi possível gravar." (importar). Erro inesperado traz o código de ocorrência de 8 caracteres — copie-o no chamado.

F

Regras chumbadas no código

Esperadas — não abrir como defeito

A ordem de procura (almoxarifado, carne, título) e o cStat 101 como sinal de cancelamento são do sistema antigo. Nada chumbado por tenant.

G

Diferenças e decisões pendentes

O que muda em relação ao sistema antigo
PontoSituação
origem dos arquivosupload de .xml/.zip pelo navegador; o antigo lia a pasta imp_xml do micro
CNPJ e númerosaem do conteúdo do XML; o antigo os tirava do nome do arquivo (posições 7 e 26 — o nome tinha de ser a chave)
casamento do documentopor número; o antigo usava documento LIKE '%nNF%', e a nota 12 casava com o documento 1234
lançamento excluídonão conta; o antigo não filtrava excluido
filiaissó as do usuário; o antigo procurava no banco inteiro
várias linhas casandovale o menor id, como o primeiro registro que o antigo lia
transaçãotudo junto ou nada; o antigo gravava arquivo a arquivo
relatóriona grade (e no Imprimir da grade); o antigo gravava pulados_imp_xml.txt e dizia "Terminado com pulados!"
campos de data da tela antiganão portados — o antigo não os lia
mês fechadonão conferido, como no antigo — decisão pendente se deve travar

Nenhuma regra bate com essa busca. Tente um trecho menor da mensagem, ou limpe os filtros.