Pular para o conteúdo principal

Bloqueio da Confirmação de Ordem de Carregamento Sem Nota Fiscal

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Faturamento → Opção 2 (label "Bloquear Confirmação Sem Nota Fiscal[MPD011/MRC020]") Tabela: PARMFATUR.ST_BLOQCONFIRMACAO Valor padrão: N (permite confirmar com pergunta)

Define o comportamento ao Confirmar/Encerrar uma Ordem de Carregamento que ainda possui pedidos sem Nota Fiscal emitida (ou seja, itens da ordem com ST_ORDEMCARREG = 'N' e NR_LANCAMENTO IS NULL). Quando ativado (S), impede totalmente o encerramento. Quando desativado (N), apenas pergunta ao usuário se deseja prosseguir mesmo assim.

Telas impactadas​

MóduloCódigoDescrição
Geração de NF por OrdemMPD011Confirmação/Encerramento da Ordem de Carregamento (fluxo padrão)
Recebimento - Confirmação de OrdemMRC020Confirmação/Encerramento de Ordem via Recebimento
Recebimento - Variante 049MRC049Outra variante de Confirmação de Ordem no Recebimento

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_BLOQCONFIRMACAOFlag S/N com a configuração do bloqueio
ORDEMCARREG.ST_ORDEMCARREGSituação da ordem de carregamento (N = em aberto / não encerrada)
ORDEMCARREG.NR_LANCAMENTOSe IS NULL indica que a NF ainda não foi emitida
ORDEMCARREG.NR_EMBARQUE / CD_EMPRESAIdentificação da ordem em validação

Opções disponíveis​

N - Não (padrão)​

O que fazDetalhe
Bloqueia a confirmação?Não — exibe pergunta C-0000 ao usuário
Mensagem exibida"Existem Notas Fiscais Pendentes para esta Ordem que não foram Emitidas. Deseja Confirmar/Encerrar a Ordem?"
Se o usuário responde "Sim"Ordem é encerrada normalmente
Se o usuário responde "Não"Lança JException W-0000 → "Encerramento da Ordem de Carregamento Cancelada!"
Valor atribuído em AfterInsert'N' (UdmMFA001.pas:535)

Simulação passo a passo​

  1. Em MFA001 → Opção 1 → Bloquear Confirmação Sem Nota Fiscal = "Não".
  2. Salve os parâmetros (F6).
  3. Abra MPD011 (ou MRC020 / MRC049).
  4. Localize uma Ordem de Carregamento que tenha pelo menos um pedido sem Nota Fiscal emitida (ORDEMCARREG.NR_LANCAMENTO IS NULL e ST_ORDEMCARREG = 'N').
  5. Tente Confirmar/Encerrar a ordem.

Resultado esperado: Aparece o diálogo "Existem Notas Fiscais Pendentes para esta Ordem que não foram Emitidas. Deseja Confirmar/Encerrar a Ordem?". Clicando "Sim" a ordem é encerrada; clicando "Não" a operação é cancelada com a mensagem "Encerramento da Ordem de Carregamento Cancelada!".


S - Sim​

O que fazDetalhe
Bloqueia a confirmação?Sim — encerramento é abortado
Mensagem exibida"Existem Notas Fiscais Pendentes para esta Ordem que não foram Emitidas."
Pergunta ao usuário?Não — cai direto no else que dispara JException
Efeito finalA ordem não pode ser encerrada enquanto houver NFs pendentes

Simulação passo a passo​

  1. Em MFA001 → Opção 1 → Bloquear Confirmação Sem Nota Fiscal = "Sim".
  2. Salve os parâmetros (F6).
  3. Abra MPD011 (ou MRC020 / MRC049).
  4. Selecione uma Ordem de Carregamento com pelo menos um pedido ainda sem NF emitida.
  5. Tente Confirmar/Encerrar a ordem.

Resultado esperado: O sistema exibe imediatamente a mensagem "Existem Notas Fiscais Pendentes para esta Ordem que não foram Emitidas." (em MPD011) ou "Existem Notas Fiscais Pendentes para esta Ordem que não foram Emitidas. Confirmação Cancelada!" (em MRC020/MRC049) e aborta o encerramento da ordem.


Regra Geral​

  • O parâmetro é carregado pela rotina BuscaParametros_MPD011 no datamodule de MPD011 e replicado no TStringList que é passado para as unidades MRC020/MRC049 via ParmFatur.Values['ST_BLOQCONFIRMACAO'].
  • Em todos os três módulos (MPD011, MRC020, MRC049) a lógica de decisão é idêntica: if ParmFatur.Values['ST_BLOQCONFIRMACAO'] = 'N' then <pergunta> caso contrário <bloqueia direto>.
  • O rótulo no formulário deixa explícito quais telas são afetadas: Bloquear Confirmação Sem Nota Fiscal[MPD011/MRC020] (UMFA001.dfm:3794).
  • A verificação de "NFs pendentes" é feita pelo próprio módulo via SELECT COUNT(NR_EMBARQUE) FROM ORDEMCARREG WHERE ST_ORDEMCARREG = 'N' AND NR_LANCAMENTO IS NULL antes de avaliar o parâmetro.
  • Não existe procedure armazenada (Scripts/*.sql) usando este parâmetro — o controle é inteiramente feito no lado cliente (Delphi).

Tabela Comparativa Resumida​

OpçãoDescriçãoPermite encerrar?Pergunta ao usuário?Mensagem
NNão (padrão)Sim, se usuário confirmarSim"Deseja Confirmar/Encerrar a Ordem?"
SSimNãoNão"Existem Notas Fiscais Pendentes para esta Ordem que não foram Emitidas."

Referências no Código Fonte​

ArquivoLinhasFunção
source/MFA001/UMFA001.dfm3788-3802Label lblST_CONFIRMACAOBLOQUEIO com caption "Bloquear Confirmação Sem Nota Fiscal[MPD011/MRC020]"
source/MFA001/UMFA001.dfm4312-4338ComboBox cmbST_BLOQCONFIRMACAO com Items.Strings = ('Sim'#9'S', 'Não'#9'N'), DataField = 'ST_BLOQCONFIRMACAO'
source/MFA001/UMFA001.pas415-416Declaração de lblST_CONFIRMACAOBLOQUEIO: TLabel e cmbST_BLOQCONFIRMACAO: TwwDBComboBox
source/MFA001/UdmMFA001.pas230Campo tabPARMFATURST_BLOQCONFIRMACAO: TStringField
source/MFA001/UdmMFA001.pas535Valor padrão 'N' em AfterInsert
source/MFA001/UdmMFA001.dfm245, 1677-1682, 2416, 2587, 2825, 3125SELECT / INSERT / UPDATE do campo no dataset tabPARMFATUR
source/MPD011/UdmMPD011.pas1580BuscaParametros_MPD011 inclui PF.ST_BLOQCONFIRMACAO no SELECT de PARMFATUR
source/MPD011/UMPD011.pas862-869Lógica if (ParmFatur.Values['ST_BLOQCONFIRMACAO'] = 'N') then msgCodigo('C-0000',...) else raise JException na confirmação da ordem
source/MRC020/UMRC020.pas860-867Mesma lógica aplicada na confirmação da ordem em MRC020
source/MRC049/UMRC049.pas795-802Mesma lógica aplicada na confirmação da ordem em MRC049