NF-e: Consultando Notas com Possíveis Problemas
Movimentações em aberto ou finalizadas com notas pendentes (desde 01/05/2025 até D-1):
WITH
m AS (SELECT id, data_emissao, tipo_estoque, modulo, situacao, id_entidade, `data` FROM movimentacao WHERE (data_emissao BETWEEN '2025-05-01 00:00:00' AND DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00')) AND situacao <> 'Cancelado')
, nf AS (SELECT * FROM movimentacao_nfe WHERE id_movimentacao IN (SELECT id FROM m))
, a AS (SELECT * FROM nf WHERE (situacao IN ('AUTORIZADO', 'CONTINGENCIA', 'RECEBIDA') OR (modelo = 59 AND situacao = 'TRANSMITIDO')) AND (contingencia IS NULL OR contingencia <> '100'))
, i AS ( SELECT * FROM nf WHERE NOT (situacao IN ('AUTORIZADO', 'CONTINGENCIA', 'RECEBIDA') OR (modelo = 59 AND situacao = 'TRANSMITIDO')) AND (contingencia IS NULL OR contingencia <> '100'))
SELECT
i.id, i.id_movimentacao, m.id_entidade, i.ambiente, i.modelo, i.serie, i.numero, i.chave, m.tipo_estoque, m.modulo, m.situacao AS situacao_movimentacao, i.situacao AS situacao_nfe, m.data_emissao, i.data_situacao
FROM
m
LEFT JOIN a ON (a.id_movimentacao = m.id)
LEFT JOIN i ON (i.id_movimentacao = m.id)
WHERE
a.id IS NULL AND i.id IS NOT NULL
Notas emitidas pelo Módulo NFE onde a situação da movimentação está fora do fluxo de situação da NF-e:
WITH
m AS (SELECT id, data_emissao, tipo_estoque, modulo, situacao, id_entidade, `data` FROM movimentacao WHERE situacao NOT IN ('Cancelado', 'Finalizado', 'Confirmado') AND modulo = 'NFE')
, nf_aberto AS (SELECT * FROM movimentacao_nfe WHERE id_movimentacao IN (SELECT id FROM m) AND situacao IN ('EM DIGITAÇÃO', 'TRANSMITIDO') GROUP BY id_movimentacao)
, nf_errado AS (SELECT * FROM movimentacao_nfe WHERE id_movimentacao IN (SELECT id FROM m) AND situacao NOT IN ('DENEGADO', 'RECEBIDA') AND id_movimentacao NOT IN (SELECT id_movimentacao FROM nf_aberto) GROUP BY id_movimentacao)
SELECT
nf.id, nf.id_movimentacao, m.id_entidade, nf.ambiente, nf.modelo, nf.serie, nf.numero, nf.chave, m.tipo_estoque, m.modulo, m.situacao AS situacao_movimentacao, nf.situacao AS situacao_nfe, m.data_emissao, nf.data_situacao, m.`data` AS data_movimentacao, nf.`data` AS data_nfe
FROM
nf_errado nf
INNER JOIN m ON (m.id = nf.id_movimentacao)