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 labelObriga Dt Entrega [MPD002]Tabela:PARMFATUR.ST_DTENTREGAValor 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ódulo | Código | Descrição |
|---|---|---|
| Pedido de Venda | MPD002 | Valida DT_ENTREGA obrigatória no pedido antes de salvar |
| Nota Fiscal (Entrada/Compra) | MNF024 | Valida DT_ENTREGA obrigatória na nota antes de salvar |
| Relatório Coleta/Recapagem | RRC001 | Usa 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_DTENTREGAem RRC001 não lê o parâmetroPARMFATUR.ST_DTENTREGA. É uma colunaCAST(NULL AS DOM_CHAR1) ST_DTENTREGAdo dataset virtualFILTRO(UdmRRC001.dfmlinha 126, valor padrãoNemUdmRRC001.paslinha 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.Campo | Descrição |
|---|---|
PARMFATUR.ST_DTENTREGA | O próprio parâmetro (CHAR(1), valores S/N) |
PEDIDO.DT_ENTREGA | Data de entrega do pedido — quando ST_DTENTREGA = 'S', o MPD002 exige preenchimento |
EMPRESA.DT_ENTREGA | Data 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 faz | Detalhe |
|---|---|
| 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 campo | Depende 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
- Em MFA001 → aba Pedidos → sub-aba Opção 1 → combo Obriga Dt Entrega =
Sim(S) - Salve os parâmetros (F6)
- Abra um novo Pedido em MPD002, preencha
DT_PEDIDO,CD_PESSOA,CD_ENDERECO,CD_CONDPAGTO, mas deixeDT_ENTREGAvazia - 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!"
- Volta a aba para
- 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 faz | Detalhe |
|---|---|
| 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 campo | Inalterada. 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
- Em MFA001 → aba Pedidos → sub-aba Opção 1 → combo Obriga Dt Entrega =
Não(N) - Salve os parâmetros (F6)
- Abra um novo Pedido em MPD002, preencha todos os campos exceto
DT_ENTREGA - Clique em Salvar → o pedido grava normalmente; nenhum aviso é exibido
- O mesmo vale para NF de entrada em MNF024 (Aquisição ou Produção) — salva mesmo com
DT_ENTREGAvazia
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 deCONTROLEENTREGA— o controle só é gerado seST_ENTREGA <> 'N'. É comum combinarST_DTENTREGA = 'S'comST_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ção | Descrição | Pedido (MPD002) valida? | Nota (MNF024) valida? | Mensagem |
|---|---|---|---|---|
| S | Sim (obriga) | Sim | Sim (se campo visível) | É Obrigatório informar Data de Entrega! / É Obrigatório Informar a Data de Entrega. Verifique! |
| N | Não | Não | Não | — |
Referências no Código Fonte
ComboBox e default (MFA001)
| Arquivo | Linha(s) | Trecho |
|---|---|---|
source/MFA001/UMFA001.dfm | 8053–8066 | lbl5: TLabel com Caption = 'Obriga Dt Entrega' (posição Top=256, Left=41) |
source/MFA001/UMFA001.dfm | 8067–8080 | lbl6: TLabel com Caption = '[MPD002]' (indicador do módulo consumidor) |
source/MFA001/UMFA001.dfm | 8847–8873 | cmbST_DTENTREGA: TwwDBComboBox com DataField = 'ST_DTENTREGA' e Items.Strings = ('Sim'#9'S', 'Não'#9'N') |
source/MFA001/UMFA001.pas | 321 | Declaração cmbST_DTENTREGA: TwwDBComboBox |
source/MFA001/UdmMFA001.dfm | 1517–1519 | tabPARMFATURST_DTENTREGA: TStringField com FieldName = 'ST_DTENTREGA' e Origin = '"PARMFATUR"."ST_DTENTREGA"' |
source/MFA001/UdmMFA001.dfm | 212, 3092 | Select do tabPARMFATUR inclui PARMFATUR.ST_DTENTREGA |
source/MFA001/UdmMFA001.dfm | 2407, 2573 | Insert e Update do tabPARMFATUR incluem ST_DTENTREGA / :ST_DTENTREGA |
source/MFA001/UdmMFA001.dfm | 2803 | updPARMFATUR seta ST_DTENTREGA = :ST_DTENTREGA |
source/MFA001/UdmMFA001.pas | 204 | Declaração tabPARMFATURST_DTENTREGA: TStringField |
source/MFA001/UdmMFA001.pas | 531 | AfterInsert: tabPARMFATURST_DTENTREGA.AsString := 'N' (valor padrão) |
Consumidores em Pedidos/Notas
| Arquivo | Linha | Uso |
|---|---|---|
source/MPD002/UdmMPD002.pas | 1402–1410 | if (parmfatur.values['ST_DTENTREGA'] = 'S') → valida edtDT_ENTREGA vazio → W-0000 'É Obrigatório informar Data de Entrega!' |
source/MPD002/UdmMPD002.pas | 5747 | Select principal do PARMFATUR inclui P.ST_DTENTREGA no carregamento dos parâmetros em memória |
source/MNF024/UdmMNF024.pas | 121 | Declaração da variável global iST_DTENTREGA: String em dmMNF024 |
source/MNF024/UdmMNF024.pas | 146 | SELECT P.ST_DTENTREGA do PARMFATUR em Busca_Parametros |
source/MNF024/UdmMNF024.pas | 154 | dmMNF024.iST_DTENTREGA := Resultado[4] — carrega o valor em memória |
source/MNF024/UMNF024.pas | 101 | Declaração do componente edtST_DTENTREGA: TwwDBDateTimePicker |
source/MNF024/UMNF024.pas | 1715–1722 | if (dmMNF024.iST_DTENTREGA = 'S') → valida tabEMPRESADT_ENTREGA.AsString = '' → W-0000 'É Obrigatório Informar a Data de Entrega. Verifique!' |
source/MNF024/UMNF024.pas | 2620, 2638, 2657 | Controla edtST_DTENTREGA.Visible conforme TP_OPERACAO (vazia → False; A Aquisição → True; P Produção → True) |
source/MNF024/UMNF024.dfm | 1254–1266 | lblDT_ENTREGA com Caption = 'Dt Entrega' e FocusControl = edtST_DTENTREGA |
source/MNF024/UMNF024.dfm | 1677+ | Componente edtST_DTENTREGA: TwwDBDateTimePicker |
Ocorrências homônimas (não relacionadas ao parâmetro)
| Arquivo | Linha | Uso |
|---|---|---|
source/RRC001/UdmRRC001.dfm | 126 | CAST(NULL AS DOM_CHAR1) ST_DTENTREGA no dataset virtual FILTRO (relatório de coleta) |
source/RRC001/UdmRRC001.dfm | 403–408 | tabFILTROST_DTENTREGA: TStringField (campo em memória do filtro) |
source/RRC001/UdmRRC001.pas | 144 | Declaração tabFILTROST_DTENTREGA: TStringField |
source/RRC001/UdmRRC001.pas | 537 | Valor padrão do filtro: tabFILTROST_DTENTREGA.Value := 'N' |
source/RRC001/URRC001.dfm | 1070–1087 | chkQuebra_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)
| Arquivo | Linha | Uso |
|---|---|---|
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/queries/ParmFaturSQL.java | 29 | Seleciona aliasTable + ".ST_DTENTREGA " + aliasTable + "_ST_DTENTREGA" no FIELDS() do ParmFaturSQL |
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/JunsoftBuilder.java | 344 | .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.