Pular para o conteúdo principal

Obriga Informar Data de Entrega no Pedido / Nota

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → aba Pedidos → sub-aba Opção 1 (pagPedidoOp1), ao lado do label Obriga Dt Entrega [MPD002] Tabela: PARMFATUR.ST_DTENTREGA Valor padrão: N (Não obriga)

Define se a Data de Entrega é de preenchimento obrigatório ao salvar um Pedido de Venda (MPD002) ou uma Nota Fiscal de Entrada/Compra (MNF024). É uma regra de validação pura — quando ligado (S), o sistema bloqueia a gravação com a exceção W-0000 caso o campo DT_ENTREGA esteja vazio; quando desligado (N), o campo permanece visível, mas livre.

Diferente de ST_ENTREGA (que controla geração de CONTROLEENTREGA), este parâmetro não cria registros em nenhuma outra tabela, apenas valida o preenchimento.

Telas impactadas​

MóduloCódigoDescrição
Pedido de VendaMPD002Valida DT_ENTREGA obrigatória no pedido antes de salvar
Nota Fiscal (Entrada/Compra)MNF024Valida DT_ENTREGA obrigatória na nota antes de salvar
Relatório Coleta/RecapagemRRC001Usa ST_DTENTREGA como flag de filtro do relatório (quebra/ordenação por Data de Entrega) — não é o parâmetro da PARMFATUR, é um campo homônimo do dataset FILTRO

Atenção: o campo tabFILTROST_DTENTREGA em RRC001 não lê o parâmetro PARMFATUR.ST_DTENTREGA. É uma coluna CAST(NULL AS DOM_CHAR1) ST_DTENTREGA do dataset virtual FILTRO (UdmRRC001.dfm linha 126, valor padrão N em UdmRRC001.pas linha 537), apenas reutilizando o nome.

Procedures/Views/Triggers impactadas​

Nenhuma. O parâmetro é consumido apenas em código Delphi e exposto como atributo da entidade ParmFatur pela API Java (JunsoftBuilder.java linha 344 mapeia .stDtEntrega(resultMap.fieldByName("ST_DTENTREGA").asString())).

Campos envolvidos​

Tabela.CampoDescrição
PARMFATUR.ST_DTENTREGAO próprio parâmetro (CHAR(1), valores S/N)
PEDIDO.DT_ENTREGAData de entrega do pedido — quando ST_DTENTREGA = 'S', o MPD002 exige preenchimento
EMPRESA.DT_ENTREGAData de entrega da nota (dataset temporário usado pelo MNF024, campo tabEMPRESADT_ENTREGA)

Opções disponíveis​

S - Sim (Obriga Data de Entrega)​

O que fazDetalhe
Pedido (MPD002)Antes do save, testa if (parmfatur.values['ST_DTENTREGA'] = 'S') e, se Trim(edtDT_ENTREGA.Text) = '', volta para pagPEDIDO, foca edtDT_ENTREGA e dispara W-0000: 'É Obrigatório informar Data de Entrega!'
Nota Fiscal (MNF024)UdmMNF024.pas carrega o valor para dmMNF024.iST_DTENTREGA := Resultado[4]. Em UMNF024.pas linha 1715 testa if (dmMNF024.iST_DTENTREGA = 'S'); se tabEMPRESADT_ENTREGA.AsString = '', foca edtST_DTENTREGA e dispara W-0000: 'É Obrigatório Informar a Data de Entrega. Verifique!'
Visibilidade do campoDepende de tabEMPRESATP_OPERACAO (ver UMNF024.pas linhas 2619, 2637, 2656) — quando operação é Avulsa (vazia), o edtST_DTENTREGA.Visible := False; quando é A (Aquisição) ou P (Produção), Visible := True. Ou seja, o bloqueio só ocorre em operações onde o campo está visível
Gera CONTROLEENTREGA?Não. Este parâmetro é puramente validação. A geração de controle é regida por ST_ENTREGA

Simulação passo a passo​

  1. Em MFA001 → aba Pedidos → sub-aba Opção 1 → combo Obriga Dt Entrega = Sim (S)
  2. Salve os parâmetros (F6)
  3. Abra um novo Pedido em MPD002, preencha DT_PEDIDO, CD_PESSOA, CD_ENDERECO, CD_CONDPAGTO, mas deixe DT_ENTREGA vazia
  4. Clique em Salvar → o sistema:
    • Volta a aba para pagPEDIDO
    • Coloca o foco em edtDT_ENTREGA
    • Exibe a mensagem: "É Obrigatório informar Data de Entrega!"
  5. Preencha a data e salve novamente → o pedido grava sem problemas

Resultado esperado: A DT_ENTREGA é tratada como campo crítico e nenhum pedido/nota é gravado sem ela. Útil em operações logísticas onde a roteirização/agenda depende desta data.


N - Não (Não Obriga) — valor padrão​

O que fazDetalhe
Pedido (MPD002)O if (parmfatur.values['ST_DTENTREGA'] = 'S') em UdmMPD002.pas linha 1402 avalia false — o bloco de validação é totalmente ignorado
Nota Fiscal (MNF024)Idem — o if (dmMNF024.iST_DTENTREGA = 'S') em UMNF024.pas linha 1715 não executa
Visibilidade do campoInalterada. O edtDT_ENTREGA continua visível e editável; só não é exigido
Gera CONTROLEENTREGA?Não (não depende deste parâmetro)

Simulação passo a passo​

  1. Em MFA001 → aba Pedidos → sub-aba Opção 1 → combo Obriga Dt Entrega = Não (N)
  2. Salve os parâmetros (F6)
  3. Abra um novo Pedido em MPD002, preencha todos os campos exceto DT_ENTREGA
  4. Clique em Salvar → o pedido grava normalmente; nenhum aviso é exibido
  5. O mesmo vale para NF de entrada em MNF024 (Aquisição ou Produção) — salva mesmo com DT_ENTREGA vazia

Resultado esperado: Este é o valor padrão atribuído no AfterInsert (UdmMFA001.pas linha 531). Cenário comum em empresas onde a data de entrega é informativa ou não se aplica a todo pedido/nota.

Este é o valor padrão ao criar um novo registro no MFA001.


Interação com outros parâmetros​

  • ST_ENTREGA (Controle de Entrega): totalmente independente. ST_DTENTREGA = 'S' não implica criação de CONTROLEENTREGA — o controle só é gerado se ST_ENTREGA <> 'N'. É comum combinar ST_DTENTREGA = 'S' com ST_ENTREGA = 'N' para empresas que exigem a data mas não operam agenda de entrega.
  • TP_CAMPOSBLOQPED / ST_ALTERAPEDIDO: a validação de obrigatoriedade roda no save de novos pedidos. Em edição de pedidos já bloqueados, as regras de bloqueio de alteração (ST_ALTERAPEDIDOBLOQ) se sobrepõem.

Tabela Comparativa Resumida​

OpçãoDescriçãoPedido (MPD002) valida?Nota (MNF024) valida?Mensagem
SSim (obriga)SimSim (se campo visível)É Obrigatório informar Data de Entrega! / É Obrigatório Informar a Data de Entrega. Verifique!
NNãoNãoNão—

Referências no Código Fonte​

ComboBox e default (MFA001)​

ArquivoLinha(s)Trecho
source/MFA001/UMFA001.dfm8053–8066lbl5: TLabel com Caption = 'Obriga Dt Entrega' (posição Top=256, Left=41)
source/MFA001/UMFA001.dfm8067–8080lbl6: TLabel com Caption = '[MPD002]' (indicador do módulo consumidor)
source/MFA001/UMFA001.dfm8847–8873cmbST_DTENTREGA: TwwDBComboBox com DataField = 'ST_DTENTREGA' e Items.Strings = ('Sim'#9'S', 'Não'#9'N')
source/MFA001/UMFA001.pas321Declaração cmbST_DTENTREGA: TwwDBComboBox
source/MFA001/UdmMFA001.dfm1517–1519tabPARMFATURST_DTENTREGA: TStringField com FieldName = 'ST_DTENTREGA' e Origin = '"PARMFATUR"."ST_DTENTREGA"'
source/MFA001/UdmMFA001.dfm212, 3092Select do tabPARMFATUR inclui PARMFATUR.ST_DTENTREGA
source/MFA001/UdmMFA001.dfm2407, 2573Insert e Update do tabPARMFATUR incluem ST_DTENTREGA / :ST_DTENTREGA
source/MFA001/UdmMFA001.dfm2803updPARMFATUR seta ST_DTENTREGA = :ST_DTENTREGA
source/MFA001/UdmMFA001.pas204Declaração tabPARMFATURST_DTENTREGA: TStringField
source/MFA001/UdmMFA001.pas531AfterInsert: tabPARMFATURST_DTENTREGA.AsString := 'N' (valor padrão)

Consumidores em Pedidos/Notas​

ArquivoLinhaUso
source/MPD002/UdmMPD002.pas1402–1410if (parmfatur.values['ST_DTENTREGA'] = 'S') → valida edtDT_ENTREGA vazio → W-0000 'É Obrigatório informar Data de Entrega!'
source/MPD002/UdmMPD002.pas5747Select principal do PARMFATUR inclui P.ST_DTENTREGA no carregamento dos parâmetros em memória
source/MNF024/UdmMNF024.pas121Declaração da variável global iST_DTENTREGA: String em dmMNF024
source/MNF024/UdmMNF024.pas146SELECT P.ST_DTENTREGA do PARMFATUR em Busca_Parametros
source/MNF024/UdmMNF024.pas154dmMNF024.iST_DTENTREGA := Resultado[4] — carrega o valor em memória
source/MNF024/UMNF024.pas101Declaração do componente edtST_DTENTREGA: TwwDBDateTimePicker
source/MNF024/UMNF024.pas1715–1722if (dmMNF024.iST_DTENTREGA = 'S') → valida tabEMPRESADT_ENTREGA.AsString = '' → W-0000 'É Obrigatório Informar a Data de Entrega. Verifique!'
source/MNF024/UMNF024.pas2620, 2638, 2657Controla edtST_DTENTREGA.Visible conforme TP_OPERACAO (vazia → False; A Aquisição → True; P Produção → True)
source/MNF024/UMNF024.dfm1254–1266lblDT_ENTREGA com Caption = 'Dt Entrega' e FocusControl = edtST_DTENTREGA
source/MNF024/UMNF024.dfm1677+Componente edtST_DTENTREGA: TwwDBDateTimePicker

Ocorrências homônimas (não relacionadas ao parâmetro)​

ArquivoLinhaUso
source/RRC001/UdmRRC001.dfm126CAST(NULL AS DOM_CHAR1) ST_DTENTREGA no dataset virtual FILTRO (relatório de coleta)
source/RRC001/UdmRRC001.dfm403–408tabFILTROST_DTENTREGA: TStringField (campo em memória do filtro)
source/RRC001/UdmRRC001.pas144Declaração tabFILTROST_DTENTREGA: TStringField
source/RRC001/UdmRRC001.pas537Valor padrão do filtro: tabFILTROST_DTENTREGA.Value := 'N'
source/RRC001/URRC001.dfm1070–1087chkQuebra_Data: TDBCheckBox — Caption = 'Data de Entrega', DataField = 'ST_DTENTREGA', ValueChecked = 'S'/ValueUnchecked = 'N' — é um checkbox de quebra/ordenação do relatório, sem relação com PARMFATUR.ST_DTENTREGA

API Java (JunsoftWebAPI)​

ArquivoLinhaUso
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/queries/ParmFaturSQL.java29Seleciona aliasTable + ".ST_DTENTREGA " + aliasTable + "_ST_DTENTREGA" no FIELDS() do ParmFaturSQL
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/JunsoftBuilder.java344.stDtEntrega(resultMap.fieldByName("ST_DTENTREGA").asString()) — expõe o parâmetro no POJO ParmFatur retornado pela API

Scripts SQL (Firebird)​

Nenhum. Grep em Scripts/ não retornou ocorrências de ST_DTENTREGA — o parâmetro é consumido apenas em código Delphi e mapeado pela API Java, não participa de procedures/views/triggers.