Pular para o conteúdo principal

Parâmetro de Sequência de Numeração do Pedido

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 1 (label "Nº de Sequência do Pedido") Tabela: PARMFATUR.ST_SEQUENCIAPEDIDO Valor padrão: A (Automática)

Telas impactadas​

MóduloCódigoDescrição
Pedido de VendaMPD002Pedido de venda (consome o parâmetro na gravação e antes do faturamento)
Pedido de Venda (Mobile)MPD020Pedido de venda no módulo móvel/filial (consome o parâmetro na gravação)

Observação: CPD009 (Parâmetros de Pedido de Compra) e RCA006 (Parâmetros de Recapadora) também possuem INSERT/UPDATE do campo ST_SEQUENCIAPEDIDO em seus Udm*.dfm, mas apenas como telas de gravação do registro PARMFATUR (cópias/assistentes do MFA001). Elas não consomem a regra de negócio de numeração.

Campos envolvidos​

CampoDescrição
PEDIDO.NR_PEDIDONúmero interno do pedido (gerado automaticamente pelo sistema)
PEDIDO.NR_PEDNúmero manual do pedido (digitado pelo usuário quando ST_SEQUENCIAPEDIDO = 'M')
edtNR_PEDIDO (DBEdit)Campo visual onde o foco é posicionado ao validar a obrigatoriedade

Opções disponíveis​

A - Automática​

O que fazDetalhe
Sistema gera número do pedido?SIM, de forma automática via sequência interna
Campo NR_PED é obrigatório?NÃO - pode ficar em branco
Bloqueia gravação/faturamento se NR_PED vazio?Não
Comportamento quando pedido não existe (busca por NR_PED)Dispara mensagem "O Pedido de Venda não está Cadastrado!" com foco em edtNR_PEDIDO (MPD002, linha 4387)

Simulação passo a passo​

  1. Vá em MFA001 → Parâmetros → Ambos → Opção 1 → ST_SEQUENCIAPEDIDO = "Automática"
  2. Salve os parâmetros (F6)
  3. Abra um Pedido de Venda (MPD002)
  4. Inicie um novo pedido — o sistema gera automaticamente o NR_PEDIDO
  5. Deixe o campo NR_PED em branco e adicione produtos
  6. Salve o pedido (F6) → Grava normalmente, sem exigir número manual
  7. Faturar o pedido → Procede sem bloqueio por numeração manual

Resultado esperado: O número do pedido é controlado pelo sistema. O usuário não precisa e não é cobrado a informar um número manual.

Este é o valor padrão ao criar um novo registro no MFA001 (definido em UdmMFA001.pas, AfterInsert, linha 465: tabPARMFATURST_SEQUENCIAPEDIDO.AsString := 'A';).


M - Manual​

O que fazDetalhe
Sistema gera número do pedido?Sim, internamente continua gerando NR_PEDIDO (chave interna)
Campo NR_PED é obrigatório?SIM - o usuário deve digitar o número manualmente
Bloqueia gravação do pedido se NR_PED vazio?Sim - mensagem W-0000: "É Obrigatório Informar o Número do Pedido." com foco em edtNR_PEDIDO
Bloqueia antes do faturamento se NR_PED vazio?Sim - mesma mensagem exibida (com grafia "informar" em minúscula)
Onde é validadoUMPD002.pas (linhas 1205 e 2309) e UMPD020.pas (linhas 511 e 689)

Simulação passo a passo​

  1. Vá em MFA001 → Parâmetros → Ambos → Opção 1 → ST_SEQUENCIAPEDIDO = "Manual"
  2. Salve os parâmetros (F6)
  3. Abra um Pedido de Venda (MPD002)
  4. Inicie um novo pedido, adicione produtos e deixe o campo NR_PED em branco
  5. Tente salvar (F6) → Erro W-0000: "É Obrigatório Informar o Número do Pedido." e foco volta para edtNR_PEDIDO
  6. Preencha o número manual em NR_PED (ex.: 12345) e salve novamente → Gravação OK
  7. Tente faturar o pedido com NR_PED vazio → Erro W-0000: "É Obrigatório informar o Número do Pedido." (bloqueia faturamento)
  8. No MPD020 o comportamento é idêntico (mesma validação em dois pontos da classe)

Resultado esperado: O usuário é obrigado a digitar o número manual do pedido em NR_PED antes de gravar ou faturar. Sem esse número, a gravação/faturamento é bloqueada.


Tabela Comparativa Resumida​

OpçãoDescriçãoNR_PED obrigatório?Bloqueia gravação se vazio?Bloqueia faturamento se vazio?
AAutomática (padrão)NãoNãoNão
MManualSimSim (W-0000)Sim (W-0000)

Referências no Código Fonte​

Tela de configuração MFA001​

  • source/MFA001/UMFA001.dfm (linhas 8487–8513) — ComboBox cmbST_SEQUENCIAPEDIDO:
    • DataField = 'ST_SEQUENCIAPEDIDO'
    • DataSource = dmMFA001.dsPARMFATUR
    • Items.Strings = ('Automática'#9'A', 'Manual'#9'M')
    • Style = csDropDownList / MapList = True
  • source/MFA001/UMFA001.pas (linha 306) — declaração do componente cmbST_SEQUENCIAPEDIDO: TwwDBComboBox.
  • source/MFA001/UdmMFA001.pas (linha 109) — declaração do campo tabPARMFATURST_SEQUENCIAPEDIDO: TStringField.
  • source/MFA001/UdmMFA001.pas (linha 465) — valor padrão no AfterInsert:
    tabPARMFATURST_SEQUENCIAPEDIDO.AsString := 'A';
  • source/MFA001/UdmMFA001.dfm (linhas 120 e 1002–1006) — inclusão do campo no SELECT da tabPARMFATUR e no TStringField (size 1, alignment center).

Tela MPD002 — Pedido de Venda​

  • source/MPD002/UMPD002.pas linha 1205 — valida antes de gravar/confirmar o pedido:
    { Se a Sequencia for Manual e estiver em branco trava }
    if ((parmfatur.values['ST_SEQUENCIAPEDIDO'] = 'M') and (Trim(dmMPD002.tabPEDIDONR_PED.AsString) = '')) then
    begin
    edtNR_PEDIDO.SetFocus;
    raise JException.Create('W-0000', ['É Obrigatório Informar o Número do Pedido.']);
    end;
  • source/MPD002/UMPD002.pas linha 2309 — valida antes de faturar o pedido (mesma regra, mensagem com "informar" em minúscula):
    {Se a Sequencia for Manual e estiver em branco trava}
    if ((parmfatur.values['ST_SEQUENCIAPEDIDO'] = 'M') and (Trim(dmMPD002.tabPEDIDONR_PED.AsString) = '')) then
    begin
    edtNR_PEDIDO.SetFocus;
    Raise JException.Create('W-0000', ['É Obrigatório informar o Número do Pedido.']);
    end;
  • source/MPD002/UMPD002.pas linha 4387 — mensagem quando o pedido não é encontrado e a sequência é automática:
    if (parmfatur.values['ST_SEQUENCIAPEDIDO'] = 'A') then
    begin
    edtNR_PEDIDO.SetFocus;
    raise JException.Create('W-0000', ['O Pedido de Venda não está Cadastrado!']);
    end
    else
    begin
    edtNR_PEDIDOFOR.SetFocus;
    dmMPD002.tabPEDIDONR_PEDIDO.AsString := dmMPD002.tabPEDIDONR_PED.AsString;
    end;
  • source/MPD002/UdmMPD002.pas linha 5740 — o campo é lido do PARMFATUR para a lista parmfatur.values consumida pela tela.

Tela MPD020 — Pedido de Venda (Mobile)​

  • source/MPD020/UdmMPD020.pas linhas 321 e 358 — leitura do parâmetro na função de carga dos parâmetros:
    ' ST_ENTREGA, PC_DESCONTOPED, ST_SEQUENCIAPEDIDO, ST_ALTERAPEDIDO, '#10 +
    ...
    dmMPD020.iST_SEQUENCIAPEDIDO := Resultado[21];
    A variável de instância está declarada em UdmMPD020.pas linha 239 (iST_SEQUENCIAPEDIDO: string).
  • source/MPD020/UMPD020.pas linha 511 — validação de gravação:
    { Se a Sequencia for Manual e estiver em branco trava }
    if ((dmMPD020.iST_SEQUENCIAPEDIDO = 'M') and (Trim(dmMPD020.tabPEDIDONR_PED.AsString) = '')) then
    begin
    edtNR_PEDIDO.SetFocus;
    raise JException.Create('W-0000', ['É Obrigatório informar o Número do Pedido.']);
    end;
  • source/MPD020/UMPD020.pas linha 689 — validação antes do faturamento (mesma regra):
    { Se a Sequencia for Manual e estiver em branco trava }
    if ((dmMPD020.iST_SEQUENCIAPEDIDO = 'M') and (Trim(dmMPD020.tabPEDIDONR_PED.AsString) = '')) then
    begin
    edtNR_PEDIDO.SetFocus;
    Raise JException.Create('W-0000', ['É Obrigatório informar o Número do Pedido.']);
    end;

Telas auxiliares (apenas gravam/espelham o parâmetro em PARMFATUR)​

  • source/CPD009/UdmCPD009.dfm linhas 381, 474 e 578 — INSERT, UPDATE e SELECT em PARMFATUR incluindo ST_SEQUENCIAPEDIDO (assistente/MFA001 alternativo para Pedido de Compra).
  • source/RCA006/UdmRCA006.dfm linhas 3130, 3223 e 3327 — INSERT, UPDATE e SELECT em PARMFATUR incluindo ST_SEQUENCIAPEDIDO (variante Recapadora).

Procedures SQL​

Nenhuma stored procedure em Scripts/ referencia ST_SEQUENCIAPEDIDO. A regra é inteiramente aplicada em código Delphi nas telas MPD002 e MPD020.