Pular para o conteúdo principal

Bloqueio da Data de Recebimento do CTR (Conhecimento de Frete)

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros de Notas (campo "Bloq. Data de Recebimento CTR [MNF001]") Tabela: PARMFATUR.ST_BLOQDATACTR (DOM_CHAR1, NOT NULL) Valor padrão: N (não bloqueia — DEFAULT na DDL em docs/schema/tables/PARMFATUR.sql:160)

Descrição​

Controla se, ao ratear um CTe/CTR (Conhecimento de Transporte Rodoviário - Frete) sobre as Notas Fiscais de Entrada no MNF001, o sistema deve exigir que a Data de Emissão das Notas Fiscais selecionadas para rateio seja igual à Data de Emissão do CTe que está sendo lançado.

Quando ativo (S), o sistema só permite associar ao CTR notas cujo DT_EMISSAO coincide com o DT_EMISSAO do próprio conhecimento de frete, impedindo rateios de frete em notas de datas divergentes.

Telas impactadas​

MóduloCódigoArquivoDescrição
Nota Fiscal de Entrada - Rateio de FreteMNF001source/MNF001/UFRETENF.pas, source/MNF001/UdmMNF001.pasTela de rateio do CTe/CTR sobre as Notas Fiscais de entrada (usa iST_BLOQDATACTR para validar datas)
MFA001 (configuração)MFA001source/MFA001/UMFA001.dfm, source/MFA001/UdmMFA001.pasTela onde o parâmetro é editado (ComboBox Sim/Não)

Observação: Existe código comentado em source/MNF034/UdmMNF034.pas:382 referenciando este parâmetro no contexto de rateio de frete da MNF034 (conhecimentos CTe), mas a validação está desativada naquele módulo. Atualmente só MNF001 aplica a regra.

Campos envolvidos​

CampoTabelaDescrição
DT_EMISSAONOTA (CTe — tipo C)Data de emissão do conhecimento de frete
DT_EMISSAONOTA (NF de origem — tipo E)Data de emissão da Nota Fiscal candidata ao rateio de frete
FRETENOTA.NR_LANCAMENTONFFRETENOTALançamento da nota vinculada ao CTR

Como o valor é lido​

No carregamento do MNF001, o parâmetro é obtido na procedure de leitura do PARMFATUR e armazenado na variável global dmMNF001.iST_BLOQDATACTR (declarada em source/MNF001/UdmMNF001.pas:1113):

// source/MNF001/UdmMNF001.pas:1378-1416 (trecho)
' CD_MOVTRANSFENT, CD_ITEMCTE, ST_BLOQDATACTR, TP_ORDENALET100, ...
...
dmMNF001.iST_BLOQDATACTR := Resultado[24];

A partir desse ponto, toda a lógica da tela de Frete (UFRETENF.pas) consulta essa variável em memória.


Opções disponíveis​

S - Sim (Bloqueia: Data da Nota DEVE ser igual à Data do CTe)​

O que fazDetalhe
Mostra aviso visual na tela de rateio?SIM (label lblmsgParametroDTCTR visível em UFRETENF.pas:1063-1064): "Permitido apenas Notas com Data lançamento igual a Data de Recebimento."
Ao gravar uma linha de nota no rateioValida se NOTA.DT_EMISSAO = FRETENF.DT_EMISSAO; se diverge, lança erro (UFRETENF.pas:164-169)
Filtro da pesquisa de notas candidatasO SELECT que lista notas filtra N.DT_EMISSAO = [DT_EMISSAO do CTe] (UFRETENF.pas:910-913 e UdmMNF001.pas:5658-5662)
Impacto na listagemApenas notas com a mesma data de emissão do CTe aparecem para rateio

Lógica no código​

// source/MNF001/UFRETENF.pas:164-169 (validacao na gravacao)
if(dmMNF001.iST_BLOQDATACTR = 'S')then
if(tabFRETENFDT_EMISSAO.AsString <> '')then
if(tabNOTADT_EMISSAO.AsString <> tabFRETENFDT_EMISSAO.AsString)then
begin
Raise JException.Create('W-0000',
['A data de Recebimento da Nota diverge da data de Emissão da Nota. Verifique!']);
end;
// source/MNF001/UFRETENF.pas:910-913 (filtro no SELECT de notas candidatas)
datasNota := '';
if(dmMNF001.iST_BLOQDATACTR = 'S')then
datasNota := Nulo(dmMNF001.tabNOTADT_EMISSAO.AsString, 'D')
else
datasNota := 'N.DT_EMISSAO ';
// ... e depois usa "AND N.DT_EMISSAO = " + datasNota
// source/MNF001/UFRETENF.pas:1062-1064 (exibicao do aviso na FormActivate)
lblmsgParametroDTCTR.visible := false;
if(dmMNF001.iST_BLOQDATACTR = 'S')then
lblmsgParametroDTCTR.visible := true;

Simulação passo a passo​

  1. Acesse MFA001 → aba Notas Fiscais → sub-aba Parâmetros de Notas
  2. No ComboBox "Bloq. Data de Recebimento CTR [MNF001]" selecione Sim
  3. Salve (F6)
  4. Abra MNF001 e lance um CTe de entrada com DT_EMISSAO = 10/04/2026
  5. Clique em Rateio do Frete para abrir o UFRETENF
  6. A tela exibe o aviso "Permitido apenas Notas com Data lançamento igual a Data de Recebimento."
  7. Ao procurar notas para ratear, somente notas com DT_EMISSAO = 10/04/2026 são listadas
  8. Tente gravar uma linha de nota cuja emissão seja 08/04/2026 → Erro: "A data de Recebimento da Nota diverge da data de Emissão da Nota. Verifique!"
  9. Grave uma nota com DT_EMISSAO = 10/04/2026 → sucesso

Resultado esperado: O rateio do CTe só aceita notas emitidas na mesma data do próprio CTe; tanto a listagem (filtro) quanto a gravação (validação) aplicam a restrição.


N - Não (Livre: qualquer data é aceita)​

O que fazDetalhe
Mostra aviso visual?Não (label fica invisível)
Validação na gravaçãoPulada — qualquer data de NF pode ser associada ao CTR
Filtro da pesquisa de notasNão há filtro por data (usa N.DT_EMISSAO sem igualdade, ou seja, mantém qualquer valor)
ComportamentoPadrão legado: rateio livre de frete sobre qualquer NF de entrada do mesmo fornecedor/pessoa

Simulação passo a passo​

  1. Acesse MFA001 → aba Notas Fiscais → Parâmetros de Notas
  2. No ComboBox "Bloq. Data de Recebimento CTR [MNF001]" selecione Não
  3. Salve (F6)
  4. Abra MNF001 e lance um CTe com DT_EMISSAO = 10/04/2026
  5. Abra o rateio de frete (UFRETENF)
  6. Aviso não aparece
  7. A pesquisa de notas candidatas lista todas as notas elegíveis, independentemente da data de emissão
  8. Grave uma nota com DT_EMISSAO = 01/04/2026 (diferente do CTe) → Gravação permitida

Resultado esperado: Qualquer NF de entrada do fornecedor pode ser rateada pelo CTR, sem validação/filtro por data de emissão.


Tabela Comparativa Resumida​

OpçãoAviso na telaFiltro de notas (SELECT)Validação na gravaçãoResultado prático
SVisívelAND N.DT_EMISSAO = [DT do CTe]Bloqueia se datas divergemSó rateia notas da mesma data do CTR
NOcultoSem restrição de dataNão validaLivre (padrão)

Mensagens geradas​

CódigoTipoMensagemOrigem
W-0000Aviso (JException)A data de Recebimento da Nota diverge da data de Emissão da Nota. Verifique!source/MNF001/UFRETENF.pas:168

Também existe o label estático " Permitido apenas Notas com Data lançamento igual a Data de Recebimento."* em source/MNF001/UFRETENF.dfm:114-130 (lblmsgParametroDTCTR), exibido apenas quando o parâmetro = S.


Referências no Código Fonte​

Delphi (source/)​

ArquivoLinha(s)Papel
source/MFA001/UMFA001.dfm6342-6354Label73: Caption "Bloq. Data de Recebimento CTR [MNF001]"
source/MFA001/UMFA001.dfm7277-7303ComboBox wwDBComboBox11 (DataField=ST_BLOQDATACTR, Items Sim=S/Não=N)
source/MFA001/UdmMFA001.dfm223-224SELECT do tabPARMFATUR incluindo a coluna
source/MFA001/UdmMFA001.dfm1559-1562Definição do TStringField
source/MFA001/UdmMFA001.dfm2810Cláusula UPDATE gerada pelo TUpdateSQL
source/MFA001/UdmMFA001.dfm3104SELECT secundário do tabPARMFATUR
source/MFA001/UdmMFA001.pas211Declaração tabPARMFATURST_BLOQDATACTR: TStringField
source/MNF001/UdmMNF001.pas1113Declaração da variável iST_BLOQDATACTR: String
source/MNF001/UdmMNF001.pas1378Inclusão da coluna no SELECT do PARMFATUR
source/MNF001/UdmMNF001.pas1416dmMNF001.iST_BLOQDATACTR := Resultado[24]
source/MNF001/UdmMNF001.pas5659-5662Uso em pesquisa de notas para rateio (filtro condicional por data)
source/MNF001/UFRETENF.pas164-169Validação na gravação do rateio (lança W-0000)
source/MNF001/UFRETENF.pas910-913Filtro de data no SELECT de notas candidatas
source/MNF001/UFRETENF.pas1063-1064Exibe/oculta lblmsgParametroDTCTR no FormActivate
source/MNF001/UFRETENF.dfm114-130Label lblmsgParametroDTCTR (aviso visual)
source/MNF034/UdmMNF034.pas382-385Código comentado referenciando o parâmetro (regra não aplicada em MNF034)

SQL (Scripts/)​

Nenhuma referência encontrada em Scripts/ — o parâmetro é consumido exclusivamente por código Delphi.

DDL​

ArquivoLinhaConteúdo
docs/schema/tables/PARMFATUR.sql160ST_BLOQDATACTR DOM_CHAR1 DEFAULT 'N' NOT NULL