FJFrigo · Relatórios › Conferências › 374 (antes 457)

Painel de NF-e Recebidas

NF-e emitidas contra as filiais, guardadas em tabela própria e conferidas contra os lançamentos de entrada. Busca no SIEG (Brasil) ou planilha do Marangatu (Paraguai). Não lança nada. Dois códigos, uma tela.

Tabela: nfe_recebidaEndpoint: /cadastro/nfe-recebidasPrograma antigo: nenhum (desenho novo; o 456 vem do menu456.prg)

Teste

Caso sugerido para QA: o que fazer, o que esperar e como conferir no banco.

Bloqueia

Recusa com a mensagem exata (HTTP 400, mostrada na tela).

Atenção

Limitação, pendência ou ponto em que o código e a ajuda não coincidem.

A

O que a tela é e faz

Identidade 374 = 457

374 e 457 são a mesma tela. 457 era a opção provisória (4-Manutenção › 5-Integrações › 7, idOpcao: null); em 29/09/2026 foi cadastrada como 374 no grupo 3-Relatórios › 7-Conferências › 4-Painel de NF-e Recebidas (histórico 368). Confirmado no código: um componente (PainelNfeRecebidas.vue, rota painelNfeRecebidas), um controlador (/cadastro/nfe-recebidas) e uma ajuda (374.md). O menu atual só tem o 374; o 457 sobrou nos históricos (298) e no status-porte.csv, que ainda traz as duas linhas (457 PARCIAL, 374 REVISAR).

O painel mostra as NF-e que os fornecedores emitiram contra as filiais (recebidas): quantas chegaram, quanto somam, quantas ainda não têm lançamento, por dia, por fornecedor e por filial. Desenho novo (legado e ceif não têm), com tabela própria nfe_recebida (uma linha por chave de acesso). Não grava lançamento nenhum: só guarda a nota no painel. O lançamento (almoxarifado, carne, gado, título) continua sendo feito pelas telas de origem; o vínculo do 456 (Importar XML de Entrada) é o que anexa o XML.

No Paraguai (codicfj 001/002) não há SIEG: a tela troca "Buscar no SIEG" por "Importar XLS" (planilha do Marangatu) e "Baixar XMLs pendentes" (SIFEN).

B

Filtros, botões e opções

Padrões e limites
Campo / botãoDefaultLimitesEfeito
Período (emissão) de / atéhoje − 30 até hojeObrigatório; fim ≥ início; máx. 366 diasFiltra nfe_recebida.data_emissao (coluna date: BETWEEN é seguro aqui)
Todas as minhas filiaisdesmarcada—Desmarcada: só a filial da sessão (a da nota, nfe_recebida.idfilial). Marcada: FiliaisDoUsuario.permitidas e aparece o resumo "Por filial"
Atualizar——GET /cadastro/nfe-recebidas/painel: cartões por situação, gráfico por dia, 15 maiores fornecedores e a lista (as 2.000 notas mais recentes; "notasCortadas" avisa quando passa)
Cartões por situação——Clique filtra a lista (local). Canceladas ficam fora dos totais, do gráfico e dos fornecedores
Buscar no SIEG (Brasil)—Período de upload no SIEG, máx. 92 dias; até hojeInicia a carga em segundo plano (um dia por vez, do mais recente ao mais antigo)
Reconferir pendentes——POST /reconferir: reavalia pelo XML guardado as notas NAO_LANCADA, SEM_CADASTRO e LANCADA_SEM_XML do período
Visualizar DANFE (duplo clique) / Baixar XML—Nota das filiais do usuário e com XMLGET /{id}/danfe (Paraguai: KuDE do fornecedor) e GET /{id}/xml
Ver no e-Kuatia (Paraguai)—XML com QRGET /{id}/consulta: abre o dCarQR do XML
Importar XLS / Baixar XMLs pendentes / Parar (Paraguai)—Planilha "Detalle de Comprobantes Registrados" (RG 90)POST /comprobantes, /comprobantes/baixar, /comprobantes/parar, GET /comprobantes/situacao
C

De onde vem cada dado

Tabela, situações e vínculo

Tabela nfe_recebida

Criada no primeiro uso (CREATE TABLE IF NOT EXISTS, fora de transação; script scripts/sql/nfe_recebida.sql). Chave única em chave (a nota tem um destinatário só). Reler uma nota atualiza a situação e mantém o XML já guardado (xml = IFNULL(VALUES(xml), xml)).

ColunaConteúdo
idfilialFilial destinatária (no Paraguai, a filial da sessão que importou: as filiais têm o mesmo RUC)
chaveChave de acesso de 44 posições (CDC no Paraguai); única
cnpj_emitente, emitente, numero, data_emissao, nat_op, valor_total, valor_icmsCabeçalho da nota
statusLANCADA_COM_XML, LANCADA_SEM_XML, NAO_LANCADA, SEM_CADASTRO, CANCELADA
mensagem, destino, id_lancamento, documentoPor onde achou o lançamento: destino ALM (almoxarifado_compra), CC (faturamento_compra_carne), CG (faturamento_compra_gado), FIM (financeiro_emissao)
origemSIEG, ARQUIVO (456) ou SET (planilha do Marangatu)
xmlmediumblob com o XML (nulo no Paraguai até o XML ser baixado do SIFEN)
data_inclusao, data_atualizacaoControle

Situação (derivada da situação do 456)

No painelVem deSignifica
LANCADA_COM_XMLJA_IMPORTADA, ou IMPORTAR na importaçãoHá lançamento para a nota e o XML já foi anexado a ele
LANCADA_SEM_XMLIMPORTAR na préviaHá lançamento, mas o XML ainda não foi anexado (use o 456)
NAO_LANCADANAO_ENCONTRADANenhum lançamento achado
SEM_CADASTROSEM_CADASTROCNPJ/RUC do emitente não existe no cadastro 15
CANCELADACANCELADAFora dos totais

Nos cartões e no resumo, "valor não lançado" soma NAO_LANCADA e SEM_CADASTRO; a quantidade total exclui as canceladas. As barras do gráfico por dia pintam de vermelho a parte pendente (NAO_LANCADA + SEM_CADASTRO).

Como o lançamento é procurado (XmlEntradaService)

Quem alimenta a tabela

OrigemQuandoDetalhe
456 Importar XML de EntradaToda prévia e importação, por arquivos ou SIEGRegistra as notas cujo destinatário é filial do usuário; falha no registro só vai ao log e não derruba a importação
Buscar no SIEG (carga da tela)Clique do usuárioSiegSincronizador.iniciarCarga: até 92 dias por busca; um dia por vez (pausa de 3 s entre consultas; 5 esperas de 5/15/30/60/60 s no 429); estado em memória, um banco por vez; a tela consulta GET /sieg/situacao a cada 3 s. O DataUploadFim do SIEG é exclusivo: o cliente manda o dia seguinte como fim
Busca automáticaA cada app.sieg.intervalo-minutos (60)Ontem e hoje, todas as filiais com CNPJ, só em bancos com pool aberto (basesAbertas) e com SIEG_API_KEY; repetir não duplica. Nunca com o backend em homologação (app.conexao.hml=1: bases de teste têm a mesma chave e davam 429); app.sieg.busca-automatica=false desliga
Reconferência noturnaUma vez por noite, app.nfe-recebidas.reconferencia-hora (2h; negativo desliga)Pendentes dos últimos app.nfe-recebidas.reconferencia-dias (90) de todas as filiais, pelo XML guardado, em lotes de 200; não fala com o SIEG, roda também em homologação; Brasil e Paraguai; pula banco com busca em curso; a nota continua na filial em que está
Paraguai: Importar XLSClique do usuárioLinhas de COMPRAS com CDC (origem ELECTRONICO) entram com status pelo CDC (RUC+dígito e número do emissor); sem CDC (VIRTUAL/papel) só são contadas; origem SET; na filial da sessão (reimportar de outra filial move as linhas)
Paraguai: baixar XMLsEm segundo plano após a importação ou "Baixar XMLs pendentes"SifenClient.consultarXml por CDC, com o certificado da filial da sessão, sempre no SIFEN de produção (só leitura); pausa de 0,3 s; 10 falhas seguidas param; retoma onde xml IS NULL
D

Permissões, travas e mensagens

Sem regra nomeada

Sem regra nomeada (RegraAcessoService não é usado nesta tela). O menu 374 depende de opcao_sistema + grupo_permissao. Os endpoints estão em /cadastro/* (JWT). DANFE, XML e e-Kuatia só atendem nota de filial do usuário (FiliaisDoUsuario.permitidas); a busca no SIEG e o painel são limitados às filiais escolhidas.

Bloqueia

Informe o período.

QuandoDatas vazias no painel, na reconferência ou na carga do SIEG.

Bloqueia

A data final é anterior à inicial.

QuandoPeríodo invertido (painel, reconferência, SIEG).

Bloqueia

Período de no máximo 366 dias.

QuandoPainel/reconferência com mais de 366 dias.

Bloqueia

Período de no máximo 92 dias por busca no SIEG.

QuandoCarga do SIEG acima de 92 dias (a data final no futuro é cortada em hoje).

Bloqueia

O período está todo no futuro.

QuandoCarga do SIEG com início depois de hoje.

Bloqueia

Cadastre a chave do SIEG (SIEG_API_KEY) na Config. Globais (41).

QuandoCarga do SIEG sem a chave em system_config.

Bloqueia

Já há uma busca no SIEG em andamento neste banco (dia ..., N de M).

QuandoSegunda carga no mesmo banco (uma por banco; a automática também reserva o banco).

Bloqueia

O usuário não tem filial.

QuandoVisão geral sem nenhuma filial permitida.

Bloqueia

Nota não encontrada nas suas filiais, ou o XML dela ainda não foi baixado.

QuandoDANFE/XML/consulta de nota inexistente, de outra filial ou sem XML.

Bloqueia

O XML deste documento não traz o link de consulta (QR).

QuandoVer no e-Kuatia com XML sem dCarQR.

Bloqueia

Data inválida: x

QuandoParâmetro de data fora do formato ISO.

Aviso

Nenhuma nota pendente no período.

QuandoReconferir sem notas pendentes com XML guardado (resposta informativa, não erro).

E

Configuração, rotinas agendadas

system_config e application.yml
OndeChave / propriedadePadrãoEfeito
system_configSIEG_API_KEYsem valorChave da API do SIEG (cadastrada na Config. Globais, botão do 41; tratada como segredo). Sem ela nem a carga da tela nem a automática funcionam
application.ymlapp.sieg.busca-automaticatrueLiga/desliga a busca automática
application.ymlapp.sieg.intervalo-minutos60Intervalo da busca automática (<= 0 desliga)
application.ymlapp.nfe-recebidas.reconferencia-hora2Hora (0-23) da reconferência noturna; negativo desliga
application.ymlapp.nfe-recebidas.reconferencia-dias90Quantos dias de emissão a reconferência olha
application.ymlapp.conexao.hml1Com 1 (homologação) a busca automática do SIEG não roda; a carga da tela e a reconferência noturna rodam
filialCNPJ/RUC das filiais—Define os destinatários buscados e a filial de cada nota

Nenhuma system_config de e-mail: o painel não envia mensagem. Os valores de app.* têm default no código (@Value); só aparecem no application.yml se alguém os sobrescrever.

F

Casos de teste sugeridos

QA
Teste

Painel com os padrões

FazerAbrir 374 (Brasil), deixar 30 dias, sem "Todas as minhas filiais", Atualizar.

EsperadoCartões com quantidades por situação da filial ativa; gráfico por dia; 15 maiores fornecedores; lista com DANFE/XML. A soma LANCADA_COM_XML + LANCADA_SEM_XML + NAO_LANCADA + SEM_CADASTRO = quantidade total; canceladas à parte.

ConferirSELECT status, COUNT(*) n, SUM(valor_total) valor FROM nfe_recebida WHERE idfilial = :filial AND data_emissao BETWEEN :de AND :ate GROUP BY statusRetrato de referência no central em 04/10/2026 (todas as filiais, origem SIEG, emissão 31/08 a 02/10): LANCADA_SEM_XML 925, NAO_LANCADA 512, LANCADA_COM_XML 201, CANCELADA 87, SEM_CADASTRO 67; nenhuma linha com XML nulo.

Teste

Visão geral por filial

FazerMarcar "Todas as minhas filiais" e Atualizar.

EsperadoAparece "Por filial", ordenado do maior valor para o menor; os totais gerais são a soma das filiais.

Teste

Buscar no SIEG

FazerInformar um dia recente e clicar "Buscar no SIEG" (com SIEG_API_KEY cadastrada e fora de homologação).

EsperadoA chamada volta na hora; as duas linhas acima dos cartões mostram o dia atual e "N de M"; o painel recarrega a cada dia concluído; é possível fechar a janela e a carga continua. Segunda carga no mesmo banco recusa com "Já há uma busca no SIEG em andamento...". Sem chave: "Cadastre a chave do SIEG...". Mais de 92 dias: "Período de no máximo 92 dias por busca no SIEG.".

ConferirSELECT COUNT(*), MAX(data_atualizacao) FROM nfe_recebida WHERE origem = 'SIEG' e o log "457 - carga do SIEG ...".

Teste

Busca automática

FazerCom o backend em produção, aguardar o intervalo.

EsperadoA linha "automática" mostra a última rodada (ontem e hoje); repetir não duplica notas (chave única). Em homologação (app.conexao.hml=1) ela não roda e o log registra "busca automática do SIEG desligada: backend em homologação".

Teste

Reconferir pendentes depois de lançar

FazerLançar no 242/2322/221 uma nota que estava NAO_LANCADA (mesmo emitente e número) e clicar "Reconferir pendentes".

EsperadoA nota passa a LANCADA_SEM_XML (ou COM_XML se o XML foi anexado no 456). Sem pendentes: "Nenhuma nota pendente no período.". Notas fora do período, sem XML guardado ou de outras filiais não são reavaliadas.

ConferirSELECT status, destino, id_lancamento, documento, mensagem FROM nfe_recebida WHERE chave = :chave

Teste

Vínculo: janela de 120 dias e filial

FazerConferir uma nota cujo número se repete todo ano (produtor que numera por dia+mês+sequência) e uma transferência entre filiais.

EsperadoLançamento a mais de 120 dias da emissão não vincula (a nota fica NAO_LANCADA); nota de transferência não casa com título de venda da filial emissora (título precisa ser a pagar e de filial com o CNPJ da destinatária). Casos do histórico: NF-e 40920003 de LEONOR PALUDO (04/09/2026) versus compra de carne 10641314 de 05/09/2025; NF-e 668 série 5 da BMG filial 28 para a 05.

Teste

Compra de gado (Brasil)

FazerImportar a NF-e do pecuarista pelo 456 e olhar o painel.

EsperadoA nota vira lançada com destino CG e a mensagem diz por onde achou (fatura, documento da compra ou os dois); nenhum XML é gravado na compra de gado.

ConferirSELECT chave, status, destino, id_lancamento, mensagem FROM nfe_recebida WHERE destino = 'CG' ORDER BY data_atualizacao DESC LIMIT 20

Teste

DANFE, XML e permissão

FazerBaixar o XML e abrir o DANFE de uma nota; tentar o id de uma nota de filial fora do usuário (URL direta).

EsperadoNota própria: download/PDF. Nota de outra filial ou sem XML: "Nota não encontrada nas suas filiais, ou o XML dela ainda não foi baixado.".

Teste

Paraguai: planilha e XMLs

FazerEm tenant paraguaio, "Importar XLS" com a planilha do Marangatu e depois "Baixar XMLs pendentes".

EsperadoComprovantes com CDC entram com origem SET e situação pelo CDC; os sem CDC só são contados no retorno; os XMLs chegam em segundo plano (acompanhar por GET /comprobantes/situacao); "Parar" interrompe e reimportar/baixar retoma onde xml IS NULL. Todas as filiais de concepcion têm o mesmo RUC: a nota fica na filial da sessão.

ConferirSELECT origem, status, COUNT(*), SUM(xml IS NULL) sem_xml FROM nfe_recebida GROUP BY origem, status

Teste

Limite de 2.000 notas

FazerEscolher um período com mais de 2.000 notas.

EsperadoA lista mostra as 2.000 mais recentes e avisa que foi cortada; cartões, gráfico e fornecedores continuam calculados sobre o total.

G

Limitações, pendências e pontos de atenção

Achados da leitura do código
Atenção

Corrigido em 04/10/2026: ajuda desatualizada

374.md e 374.es.md citam agora a compra de gado (2312, Brasil — sempre conta como lançada com XML), o título só a pagar, a procura na filial destinatária (e nas de mesmo CNPJ) e a janela de 120 dias entre a emissão da nota e o lançamento.

Atenção

Corrigido em 04/10/2026: comentário do serviço dizia 30 minutos

O Javadoc de NfeRecebidaService cita agora app.sieg.intervalo-minutos (60).

Atenção

Decisão em aberto: nota "Não encontrada"

Vira pré-lançamento no 221 ou sugere compra (242/2322)? Hoje só é listada (histórico 298).

Atenção

Limitações conhecidas

Estado das buscas (SIEG, planilha) fica em memória: reiniciar o backend perde o andamento e a "última automática". Automática e reconferência só olham bancos com pool aberto (alguém entrou desde que o backend subiu). Reconferência noturna usa o relógio do servidor da aplicação. A consulta ao SIFEN, a tela e o SIEG real não foram exercitados na tela (histórico 372/298); status PARCIAL (457) e REVISAR (374).

Nada bate com essa busca. Tente um trecho menor, ou limpe os filtros.