MNF005 — Cancelamento de Notas Fiscais (enriquecimento)
Menu: Faturamento > Movimentações > Notas Fiscais > Cancelamento de Notas Fiscais
Objetivo
A tela MNF005 cancela uma Nota Fiscal já emitida e válida (ST_NOTA = 'V'), revertendo seus efeitos fiscais, financeiros e de estoque no sistema. Quando a nota é uma NF-e/NFC-e, CT-e ou SAT-CFe já transmitida, a tela primeiro conduz o usuário ao cancelamento junto ao órgão fiscal (SEFAZ/SAT) antes de liberar o cancelamento interno. A tela também é aberta automaticamente por outras telas (CNF001, MNF032, CNF011), que já preenchem os campos de busca da nota a ser cancelada.
Fluxo principal
- Ao abrir a tela (ou ser chamada por CNF001/MNF032/CNF011), o sistema já inicia um novo registro e posiciona o cursor na Empresa; se aberta a partir de outro módulo, os campos Empresa, Pessoa, Tipo de Nota, Lançamento e Série já vêm preenchidos. (MNF005 - Cancelamento de Notas Fiscais) —
source/MNF005/UMNF005.pas:101-191 (iniciar) - Informar Empresa e Pessoa Física/Jurídica; o sistema valida se ambas existem (e se a Pessoa está ativa). (MNF005) —
source/MNF005/UdmMNF005.pas:62-103 (TdmMNF005.tabEMPRESACD_EMPRESAValidate) - Selecionar o Tipo de Nota (Entrada/Saída) e informar o Nº de Lançamento ou o Nº da Nota Fiscal (pode pesquisar com F9) e a Série. (MNF005) —
source/MNF005/UMNF005.pas:1106-1204 (TfrmMNF005.edtNR_LANCAMENTOKeyDown) - O sistema busca automaticamente a nota, o(s) pedido(s) vinculado(s) e avisa se a nota (NF-e/NFC-e) ainda não foi transmitida, perguntando se deseja continuar mesmo assim. (MNF005) —
source/MNF005/UdmMNF005.pas:126-244 (carregaPedido) - Informar o Motivo do Cancelamento (obrigatoriamente cadastrado como tipo Cancelamento). (MNF005) —
source/MNF005/UdmMNF005.pas:105-124 (TdmMNF005.tabEMPRESACD_MOTIVOValidate) - Clicar em Excluir (F7); o sistema pede confirmação 'Deseja Cancelar a Nota Fiscal?' e revalida todos os campos obrigatórios. (MNF005) —
source/MNF005/UMNF005.pas:366-415 (TfrmMNF005.btnExcluirClick) - Se houver boletos ativos registrados via API bancária vinculados à nota, o sistema pede confirmação e solicita a baixa desses boletos ao banco antes de prosseguir. (MNF005) —
source/MNF005/UMNF005.pas:1311-1392 (TfrmMNF005.BaixaBoletosAPINota) - O sistema executa uma simulação (dry-run) da procedure CANCELA_NOTAFISCAL para verificar se o cancelamento é permitido, antes de mexer em dados fiscais. (MNF005) —
source/MNF005/UMNF005.pas:549-568 (TfrmMNF005.btnExcluirClick) - O sistema executa efetivamente a CANCELA_NOTAFISCAL (que também cancela contas, estoque e mestras), grava o cancelamento, oferece reimpressão da nota e exibe mensagem de sucesso com orientação sobre próximas telas. (MNF005) —
source/MNF005/UMNF005.pas:988-1088 (TfrmMNF005.btnExcluirClick)
Campos obrigatórios
| Campo | Condição | Mensagem | Fonte |
|---|---|---|---|
| Empresa (CD_EMPRESA) | sempre, para localizar e cancelar a nota | É obrigatório informar a Empresa! | source/MNF005/UMNF005.pas:383-387 (TfrmMNF005.btnExcluirClick) |
| Pessoa Física/Jurídica (CD_PESSOA) | sempre | É Obrigatório informar a Pessoa! | source/MNF005/UMNF005.pas:389-393 (TfrmMNF005.btnExcluirClick) |
| Nº Lançamento ou Nº Nota Fiscal | pelo menos um dos dois deve estar preenchido | É Obrigatório Informar o Número do Lançamento ou o Número da Nota Fiscal! | source/MNF005/UMNF005.pas:395-399 (TfrmMNF005.btnExcluirClick) |
| Série da Nota Fiscal (CD_SERIE) | sempre | É Obrigatório Informar a Série da Nota Fiscal! | source/MNF005/UMNF005.pas:401-405 (TfrmMNF005.btnExcluirClick) |
| Motivo do Cancelamento (CD_MOTIVO) | sempre, e deve ser um motivo cadastrado com TP_MOTIVO = 'C' | É Obrigatório Informar o Motivo do Cancelamento! | source/MNF005/UMNF005.pas:407-415 (TfrmMNF005.btnExcluirClick) |
Mensagens: causa e ação
A Empresa não está Cadastrada [ADM002]!
Causa: O código de Empresa informado não existe na tabela EMPRESA.
Ação: Corrigir o código ou cadastrar a empresa na tela ADM002.
Fonte: source/MNF005/UdmMNF005.pas:62-78 (TdmMNF005.tabEMPRESACD_EMPRESAValidate)
A NF-e Deve ser Cancelada na Receita Federal. Verifique!
Causa: Após a tentativa de cancelamento na SEFAZ, não foi encontrado protocolo de cancelamento gravado na NFE (e nenhum protocolo foi informado por outra tela).
Ação: Concluir a transmissão do cancelamento da NF-e junto à SEFAZ antes de repetir a operação nesta tela.
Fonte: source/MNF005/UMNF005.pas:640-682 (TfrmMNF005.btnExcluirClick)
A NF-e Esta com a Situação de em Processamento Pela Receita Federal. Favor Consultar sua Situação a Tela CNF001!
Causa: O status da NF-e (CSTAT) é '105', indicando lote em processamento pela SEFAZ.
Ação: Consultar a situação atualizada na tela CNF001 e aguardar antes de tentar cancelar.
Fonte: source/MNF005/UMNF005.pas:622-634 (TfrmMNF005.btnExcluirClick)
A NF-e foi Transmitida Somente em EPEC. Favor Realizar a Transmissão em Modo Normal Antes de Realizar o Cancelamento.
Causa: A NF-e foi emitida em contingência EPEC (TPEMISS = 4) e ainda não tem protocolo de autorização normal.
Ação: Realizar a transmissão em modo normal da NF-e antes de cancelar.
Fonte: source/MNF005/UMNF005.pas:635-637 (TfrmMNF005.btnExcluirClick)
A Nota %s está vinculada à Ordem de Carregamento nº %s. Deseja Reabrir?
Causa: A nota pertence a um Embarque com Ordem de Carregamento ativa (ST_EMBARQUE = 'A').
Ação: Confirmar para reabrir a Ordem/Embarque (o pedido volta à fila de faturamento ou de recap); recusar interrompe o cancelamento da nota.
Fonte: source/MNF005/UMNF005.pas:774-847 (TfrmMNF005.btnExcluirClick)
A Nota Fiscal não está Cadastrada. Verifique!
Causa: Não foi encontrada nota Válida com os dados de Empresa, Pessoa, Série, Tipo e Lançamento/Nº Nota informados.
Ação: Conferir os dados informados ou pesquisar a nota correta com F9 no campo Lançamento.
Fonte: source/MNF005/UMNF005.pas:417-435 (TfrmMNF005.btnExcluirClick)
A Nota não Pode ser Cancelada Pois Pertence a um Contrato de Leite. Verifique!
Causa: A nota tem movimentação de leite vinculada a um Contrato de Leite fechado (ST_CONTRATOLEITE = 'F').
Ação: Não é possível cancelar por esta tela; tratar via módulo de Contrato de Leite.
Fonte: source/MNF005/UMNF005.pas:573-588 (TfrmMNF005.btnExcluirClick)
A Nota Possui Controle de Entrega, Deseja Continuar e Cancelar os Controles de Entrega?
Causa: Existe registro de Controle de Entrega ativo (ST_ENTREGUE <> 'N') para a nota, e os parâmetros de faturamento indicam controle manual.
Ação: Confirmar para prosseguir (os controles de entrega serão cancelados) ou recusar para não cancelar a nota.
Fonte: source/MNF005/UMNF005.pas:443-462 (TfrmMNF005.btnExcluirClick)
A Pessoa Física / Jurídica não está Ativa [TFA001]!
Causa: O cadastro da pessoa informada está com ST_ATIVA = 'N'.
Ação: Reativar o cadastro na tela TFA001 ou usar outra pessoa.
Fonte: source/MNF005/UdmMNF005.pas:80-103 (TdmMNF005.tabEMPRESACD_PESSOAValidate)
A Pessoa Física / Jurídica não está Cadastrada [TFA001]!
Causa: O código de pessoa informado não existe na tabela PESSOA.
Ação: Cadastrar ou corrigir o código da pessoa na TFA001.
Fonte: source/MNF005/UdmMNF005.pas:80-103 (TdmMNF005.tabEMPRESACD_PESSOAValidate)
ECF não Implementado!
Causa: A nota tem cupom fiscal e o parâmetro PARMNOTA.ST_CUPOMFISCAL exige controle de cancelamento do último cupom no ECF, integração não implementada nesta tela.
Ação: Nenhuma ação disponível pela tela; contatar o suporte para avaliar o cenário específico deste cupom fiscal.
Fonte: source/MNF005/UMNF005.pas:1007-1022 (TfrmMNF005.btnExcluirClick)
Esta Nota Fiscal possui %s boleto(s) registrado(s) no banco. Ao continuar, será solicitada a baixa ao banco. Continuar?
Causa: A nota tem duplicatas com boleto ativo registrado via API bancária (BOLETO.ST_APIBOLETOS = 'AC').
Ação: Confirmar para que o sistema envie a instrução de baixa desses boletos ao banco antes do cancelamento.
Fonte: source/MNF005/UMNF005.pas:1321-1392 (TfrmMNF005.BaixaBoletosAPINota)
Esta Nota Fiscal possui Boleto registrado no banco e pertence a outra Empresa. Acesse o sistema com a Empresa da Nota para cancelar, ou baixe o Boleto manualmente. Verifique! [MFC033]
Causa: A empresa da nota é diferente da empresa da sessão logada; a rotina de baixa só funciona com a empresa da sessão.
Ação: Acessar o sistema com a empresa da nota, ou baixar o boleto manualmente no financeiro antes de cancelar.
Fonte: source/MNF005/UMNF005.pas:1380-1387 (TfrmMNF005.BaixaBoletosAPINota)
Informe o Motivo Para o Cancelamento!
Causa: O usuário confirmou continuar cancelando uma nota não transmitida sem preencher o campo Motivo antes.
Ação: Preencher o campo Motivo do Cancelamento.
Fonte: source/MNF005/UdmMNF005.pas:212-221 (carregaPedido)
Nota Fiscal Selecionada Não Transmitida. Deseja Continuar o Cancelamento?
Causa: A NF-e/NFC-e vinculada à nota está com situação 'Pendente' (sem protocolo de autorização).
Ação: Confirmar para prosseguir mesmo assim, ou cancelar e regularizar a transmissão antes.
Fonte: source/MNF005/UdmMNF005.pas:207-221 (carregaPedido)
Não foi possível baixar no banco o(s) boleto(s) abaixo, por isso a Nota Fiscal não foi cancelada: Baixe o(s) boleto(s) manualmente e tente novamente. Verifique! [MFC033]
Causa: O banco não confirmou a baixa do(s) boleto(s) enviada via API (o campo de controle continua preenchido, indicando falha).
Ação: Baixar manualmente o(s) boleto(s) no módulo financeiro e tentar cancelar novamente.
Fonte: source/MNF005/UMNF005.pas:1508-1549 (TfrmMNF005.BaixaBoletosAPINota)
Não é possível cancelar esta Nota Fiscal: a duplicata nº %s / parcela %s está Liquidada e possui Boleto registrado no banco. Estorne a liquidação antes de cancelar a Nota. Verifique! [MFC004]
Causa: A duplicata da nota já foi liquidada (ST_CONTAS = 'L') mas ainda tem boleto ativo registrado no banco.
Ação: Estornar a liquidação da duplicata no financeiro antes de cancelar a nota.
Fonte: source/MNF005/UMNF005.pas:1361-1370 (TfrmMNF005.BaixaBoletosAPINota)
O CT-e Deve ser Cancelada na Receita Federal. Verifique!
Causa: Após a tentativa de cancelamento, não foi encontrado protocolo de cancelamento gravado para o CT-e.
Ação: Concluir o cancelamento do CT-e junto à SEFAZ antes de repetir a operação.
Fonte: source/MNF005/UMNF005.pas:965-980 (TfrmMNF005.btnExcluirClick)
O Motivo de Cancelamento não está Cadastrado [TFA009]!
Causa: O código de motivo informado não existe na tabela MOTIVO.
Ação: Cadastrar ou corrigir o motivo na tela TFA009.
Fonte: source/MNF005/UdmMNF005.pas:105-124 (TdmMNF005.tabEMPRESACD_MOTIVOValidate)
O Motivo não é do Tipo Cancelamento [TFA009]!
Causa: O motivo existe, mas seu TP_MOTIVO não é 'C' (Cancelamento).
Ação: Selecionar um motivo cadastrado como tipo Cancelamento na TFA009.
Fonte: source/MNF005/UdmMNF005.pas:105-124 (TdmMNF005.tabEMPRESACD_MOTIVOValidate)
O SAT-CFe Deve ser Cancelada. Verifique!
Causa: Após a tentativa de cancelamento, não foi encontrado protocolo de cancelamento gravado para o SAT-CFe.
Ação: Concluir o cancelamento do SAT-CFe antes de repetir a operação.
Fonte: source/MNF005/UMNF005.pas:731-746 (TfrmMNF005.btnExcluirClick)
Os Pedido(s) [%s] Associados a Nota Fiscal Possui Controle de Entrega Agendado/Entregue. Verifique! [MNF016]
Causa: Algum item de pedido vinculado à nota tem quantidade em Controle de Entrega maior que a quantidade atendida pelo pedido.
Ação: Verificar e ajustar o controle de entrega do pedido na tela MNF016 antes de cancelar a nota.
Fonte: source/MNF005/UMNF005.pas:466-533 (TfrmMNF005.btnExcluirClick)
É Obrigatório Informar a Empresa para Listar as Notas Fiscais!
Causa: O usuário pressionou F9 no campo Nº Lançamento sem preencher o campo Empresa.
Ação: Preencher o campo Empresa antes de pesquisar as notas.
Fonte: source/MNF005/UMNF005.pas:1115-1123 (TfrmMNF005.edtNR_LANCAMENTOKeyDown)
É obrigatório informar a Empresa! / É Obrigatório informar a Pessoa! / É Obrigatório Informar a Série da Nota Fiscal! / É Obrigatório Informar o Número do Lançamento ou o Número da Nota Fiscal! / É Obrigatório Informar o Motivo do Cancelamento!
Causa: Um dos campos obrigatórios do cabeçalho (Empresa, Pessoa, Lançamento/Nº Nota, Série ou Motivo) não foi preenchido ao confirmar o cancelamento.
Ação: Preencher o campo indicado pelo cursor antes de confirmar novamente o cancelamento.
Fonte: source/MNF005/UMNF005.pas:383-415 (TfrmMNF005.btnExcluirClick)
Operação Cancelada pelo Usuário. / Operação Cancelada!
Causa: O usuário respondeu Não a uma das confirmações do processo (baixa de boleto no banco ou continuidade da entrega/reabertura de Ordem).
Ação: Nenhuma ação necessária; a nota permanece Válida. Repita a operação se realmente desejar cancelar.
Fonte: source/MNF005/UMNF005.pas:1389-1392 (TfrmMNF005.BaixaBoletosAPINota), source/MNF005/UMNF005.pas:461-462 (TfrmMNF005.btnExcluirClick)
Regras de negócio
MNF005.R001(verregras/MNF005/MNF005.R001.md)MNF005.R002(verregras/MNF005/MNF005.R002.md)MNF005.R003(verregras/MNF005/MNF005.R003.md)MNF005.R004(verregras/MNF005/MNF005.R004.md)MNF005.R005(verregras/MNF005/MNF005.R005.md)MNF005.R006(verregras/MNF005/MNF005.R006.md)MNF005.R007(verregras/MNF005/MNF005.R007.md)MNF005.R008(verregras/MNF005/MNF005.R008.md)MNF005.R009(verregras/MNF005/MNF005.R009.md)MNF005.R010(verregras/MNF005/MNF005.R010.md)MNF005.R011(verregras/MNF005/MNF005.R011.md)MNF005.R012(verregras/MNF005/MNF005.R012.md)MNF005.R013(verregras/MNF005/MNF005.R013.md)MNF005.R014(verregras/MNF005/MNF005.R014.md)MNF005.R015(verregras/MNF005/MNF005.R015.md)MNF005.R016(verregras/MNF005/MNF005.R016.md)MNF005.R017(verregras/MNF005/MNF005.R017.md)MNF005.R018(verregras/MNF005/MNF005.R018.md)MNF005.R019(verregras/MNF005/MNF005.R019.md)MNF005.R020(verregras/MNF005/MNF005.R020.md)MNF005.R021(verregras/MNF005/MNF005.R021.md)MNF005.R022(verregras/MNF005/MNF005.R022.md)MNF005.R023(verregras/MNF005/MNF005.R023.md)
Perguntas frequentes
P: Por que não consigo cancelar a nota, dando a mensagem 'A NF-e Deve ser Cancelada na Receita Federal'?
R: Porque a NF-e está transmitida (autorizada) e o sistema não encontrou protocolo de cancelamento gravado. Conclua o cancelamento da NF-e junto à SEFAZ (a tela abre automaticamente) e depois repita o cancelamento na MNF005.
Fonte: source/MNF005/UMNF005.pas:640-682 (TfrmMNF005.btnExcluirClick)
P: O usuário diz que a nota está 'Liquidada' e não consegue cancelar por causa de boleto. O que fazer?
R: A duplicata da nota já foi liquidada mas ainda tem um boleto ativo registrado no banco (via API). É preciso estornar a liquidação dessa duplicata no financeiro antes de cancelar a nota.
Fonte: source/MNF005/UMNF005.pas:1361-1370 (TfrmMNF005.BaixaBoletosAPINota)
P: Por que aparece a mensagem sobre 'Boleto registrado no banco e pertence a outra Empresa'?
R: A baixa automática de boletos ao cancelar a nota só funciona quando o usuário está logado na mesma empresa da nota. Se a empresa logada for diferente, é preciso trocar de empresa no sistema ou baixar o boleto manualmente antes de cancelar.
Fonte: source/MNF005/UMNF005.pas:1380-1387 (TfrmMNF005.BaixaBoletosAPINota)
P: A nota está vinculada a uma Ordem de Carregamento; o que acontece se eu confirmar a reabertura?
R: A Ordem de Carregamento (ou o registro em ORDEMCARREGRECAP, se for fluxo de recap) é reaberta e, se não sobrar outra Ordem ativa no Embarque, o Embarque também é cancelado. O pedido volta a aparecer na fila de faturamento (MNF033) ou de recap (MRC020) para nova emissão.
Fonte: source/MNF005/UMNF005.pas:774-847 (TfrmMNF005.btnExcluirClick)
P: Deu a mensagem 'ECF não Implementado!' ao tentar cancelar uma nota com cupom fiscal. Isso é normal?
R: Sim, é uma limitação conhecida: quando o parâmetro da série permite cancelar apenas o último cupom fiscal emitido, a tela não tem a integração necessária com o ECF implementada e bloqueia o cancelamento nesse cenário.
Fonte: source/MNF005/UMNF005.pas:1007-1022 (TfrmMNF005.btnExcluirClick)
P: Por que a tela pergunta se quero continuar dizendo que a nota não foi transmitida?
R: Porque a NF-e/NFC-e vinculada à nota ainda está pendente de autorização na SEFAZ (sem protocolo). O sistema avisa antes de deixar prosseguir, já que cancelar sem transmissão pode exigir tratamento diferente depois.
Fonte: source/MNF005/UdmMNF005.pas:200-228 (carregaPedido)
P: Por que não consigo pesquisar as notas fiscais com F9 no campo Nº Lançamento?
R: É preciso preencher primeiro os campos Empresa e Pessoa Física/Jurídica; a pesquisa das notas depende desses dois filtros.
Fonte: source/MNF005/UMNF005.pas:1115-1123 (TfrmMNF005.edtNR_LANCAMENTOKeyDown)
P: Deu a mensagem sobre 'Pedido(s) ... Possui Controle de Entrega Agendado/Entregue [MNF016]'. Como resolver?
R: Algum item do pedido vinculado à nota já tem mais quantidade marcada como entregue/agendada do que a quantidade atendida pelo próprio pedido. É preciso revisar o controle de entrega desse pedido na tela MNF016 antes de conseguir cancelar a nota.
Fonte: source/MNF005/UMNF005.pas:466-533 (TfrmMNF005.btnExcluirClick)
P: Por que o cancelamento é bloqueado dizendo que existe uma Conferência válida?
R: A procedure de cancelamento não permite cancelar uma nota que ainda tenha uma Conferência de Nota (MFN035) em situação diferente de Cancelada. É preciso cancelar a Conferência nessa tela antes.
Fonte: Scripts/CANCELA_NOTAFISCAL.sql:269-284 (CANCELA_NOTAFISCAL)
Dúvidas em aberto (o código não responde)
- Quais são os valores possíveis de PARMFATUR.TP_EXCLUSAOENTREGADEVOLUCAO além de 'M' (Manual), e o que a rotina automática GERA_CONTROLEENTREGA faz exatamente nesse caso? — No MNF005, o Controle de Entrega só é verificado manualmente (com pergunta ao usuário) quando ST_CONFIRMAENTREGAREMESSA='N' e TP_EXCLUSAOENTREGADEVOLUCAO='M' (UMNF005.pas:446). Nos demais casos o tratamento fica a cargo de GERA_CONTROLEENTREGA, que não foi lido nesta sessão.
- Quais valores PARMFATUR.ST_CONFIRMAENTREGAREMESSA pode assumir além de 'N', e qual o efeito de cada um? — Só o valor 'N' foi observado sendo testado explicitamente no módulo (UMNF005.pas:446); não há evidência no MNF005 do comportamento para outros valores.
- Existe alguma tela/rotina que implementa hoje o cancelamento de cupom fiscal (ECF), já que o MNF005 explicitamente não implementa? — A mensagem 'ECF não Implementado!' sugere lacuna funcional (UMNF005.pas:1007-1022), mas o módulo não referencia nenhuma tela alternativa para esse cenário.
- Onde o usuário configura o limite de tempo para cancelamento de nota própria (PARMUSUARIO.NR_TEMPOCANCELAMENTONF/TP_TEMPOCANCELAMENTONF)? — A regra de prazo está na procedure CANCELA_NOTAFISCAL (linhas 243-267), mas a tela de configuração desse parâmetro por usuário não faz parte do módulo MNF005.