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_SEQUENCIAPEDIDOValor padrão:A(Automática)
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Pedido de Venda | MPD002 | Pedido de venda (consome o parâmetro na gravação e antes do faturamento) |
| Pedido de Venda (Mobile) | MPD020 | Pedido de venda no módulo móvel/filial (consome o parâmetro na gravação) |
Observação:
CPD009(Parâmetros de Pedido de Compra) eRCA006(Parâmetros de Recapadora) também possuem INSERT/UPDATE do campoST_SEQUENCIAPEDIDOem seusUdm*.dfm, mas apenas como telas de gravação do registroPARMFATUR(cópias/assistentes do MFA001). Elas não consomem a regra de negócio de numeração.
Campos envolvidos
| Campo | Descrição |
|---|---|
PEDIDO.NR_PEDIDO | Número interno do pedido (gerado automaticamente pelo sistema) |
PEDIDO.NR_PED | Nú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 faz | Detalhe |
|---|---|
| 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
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → ST_SEQUENCIAPEDIDO = "Automática"
- Salve os parâmetros (F6)
- Abra um Pedido de Venda (MPD002)
- Inicie um novo pedido — o sistema gera automaticamente o
NR_PEDIDO - Deixe o campo
NR_PEDem branco e adicione produtos - Salve o pedido (F6) → Grava normalmente, sem exigir número manual
- 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 faz | Detalhe |
|---|---|
| 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 é validado | UMPD002.pas (linhas 1205 e 2309) e UMPD020.pas (linhas 511 e 689) |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → ST_SEQUENCIAPEDIDO = "Manual"
- Salve os parâmetros (F6)
- Abra um Pedido de Venda (MPD002)
- Inicie um novo pedido, adicione produtos e deixe o campo
NR_PEDem branco - Tente salvar (F6) → Erro
W-0000: "É Obrigatório Informar o Número do Pedido." e foco volta paraedtNR_PEDIDO - Preencha o número manual em
NR_PED(ex.:12345) e salve novamente → Gravação OK - Tente faturar o pedido com
NR_PEDvazio → ErroW-0000: "É Obrigatório informar o Número do Pedido." (bloqueia faturamento) - 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ção | Descrição | NR_PED obrigatório? | Bloqueia gravação se vazio? | Bloqueia faturamento se vazio? |
|---|---|---|---|---|
| A | Automática (padrão) | Não | Não | Não |
| M | Manual | Sim | Sim (W-0000) | Sim (W-0000) |
Referências no Código Fonte
Tela de configuração MFA001
source/MFA001/UMFA001.dfm(linhas 8487–8513) — ComboBoxcmbST_SEQUENCIAPEDIDO:DataField = 'ST_SEQUENCIAPEDIDO'DataSource = dmMFA001.dsPARMFATURItems.Strings = ('Automática'#9'A', 'Manual'#9'M')Style = csDropDownList/MapList = True
source/MFA001/UMFA001.pas(linha 306) — declaração do componentecmbST_SEQUENCIAPEDIDO: TwwDBComboBox.source/MFA001/UdmMFA001.pas(linha 109) — declaração do campotabPARMFATURST_SEQUENCIAPEDIDO: TStringField.source/MFA001/UdmMFA001.pas(linha 465) — valor padrão noAfterInsert:tabPARMFATURST_SEQUENCIAPEDIDO.AsString := 'A';source/MFA001/UdmMFA001.dfm(linhas 120 e 1002–1006) — inclusão do campo noSELECTdatabPARMFATURe noTStringField(size 1, alignment center).
Tela MPD002 — Pedido de Venda
source/MPD002/UMPD002.paslinha 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) = '')) thenbeginedtNR_PEDIDO.SetFocus;raise JException.Create('W-0000', ['É Obrigatório Informar o Número do Pedido.']);end;source/MPD002/UMPD002.paslinha 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) = '')) thenbeginedtNR_PEDIDO.SetFocus;Raise JException.Create('W-0000', ['É Obrigatório informar o Número do Pedido.']);end;source/MPD002/UMPD002.paslinha 4387 — mensagem quando o pedido não é encontrado e a sequência é automática:if (parmfatur.values['ST_SEQUENCIAPEDIDO'] = 'A') thenbeginedtNR_PEDIDO.SetFocus;raise JException.Create('W-0000', ['O Pedido de Venda não está Cadastrado!']);endelsebeginedtNR_PEDIDOFOR.SetFocus;dmMPD002.tabPEDIDONR_PEDIDO.AsString := dmMPD002.tabPEDIDONR_PED.AsString;end;source/MPD002/UdmMPD002.paslinha 5740 — o campo é lido doPARMFATURpara a listaparmfatur.valuesconsumida pela tela.
Tela MPD020 — Pedido de Venda (Mobile)
source/MPD020/UdmMPD020.paslinhas 321 e 358 — leitura do parâmetro na função de carga dos parâmetros:A variável de instância está declarada em' ST_ENTREGA, PC_DESCONTOPED, ST_SEQUENCIAPEDIDO, ST_ALTERAPEDIDO, '#10 +...dmMPD020.iST_SEQUENCIAPEDIDO := Resultado[21];UdmMPD020.paslinha 239 (iST_SEQUENCIAPEDIDO: string).source/MPD020/UMPD020.paslinha 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) = '')) thenbeginedtNR_PEDIDO.SetFocus;raise JException.Create('W-0000', ['É Obrigatório informar o Número do Pedido.']);end;source/MPD020/UMPD020.paslinha 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) = '')) thenbeginedtNR_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.dfmlinhas 381, 474 e 578 — INSERT, UPDATE e SELECT emPARMFATURincluindoST_SEQUENCIAPEDIDO(assistente/MFA001 alternativo para Pedido de Compra).source/RCA006/UdmRCA006.dfmlinhas 3130, 3223 e 3327 — INSERT, UPDATE e SELECT emPARMFATURincluindoST_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.