Pular para o conteúdo principal

ST_OBSCLIENTEPED — Exibição da Observação do Cliente em Pedidos (variante PED)

Tela de configuração: MFA001 — Parâmetros de Faturamento Localização: Parâmetros → aba Pedidos (pagPedidos — UMFA001.dfm linha 7698) → subaba Opção 1 (pagPedidoOp1 — linha 7708) → GroupBox grpPedidos → rótulo "Mostrar Obs. do Cliente" (lbl61, UMFA001.dfm linhas 8179‑8192) Tabela: PARMFATUR.ST_OBSCLIENTEPED Tipo: DOM_CHAR1 (CHAR(1) NOT NULL DEFAULT 'N') — conforme docs/schema/tables/PARMFATUR.sql linha 171 Valor padrão: 'N' — atribuído em UdmMFA001.pas linha 529 no AfterInsert da tabPARMFATUR

Componente visual: TwwDBComboBox cmbST_OBSCLIENTEPED (UMFA001.dfm linhas 9072‑9100), posicionado em Left=467 Top=207, ao lado do rótulo lbl61 (Left=346 Top=211), com 4 itens: Pessoa Física=S / Financeiro=O / Observação=B / Não=N.

Controla qual observação do cadastro da pessoa (cliente) é exibida automaticamente ao selecionar o cliente em telas específicas que usam a variante PED do parâmetro — a saber: MPD002 (Pedido de Venda), MPD053 e MRC006 (Ordem de Produção Recap). Estas telas NÃO leem ST_OBSCLIENTE — leem exclusivamente ST_OBSCLIENTEPED, permitindo à empresa configurar um comportamento de observação diferenciado para este subconjunto de telas.

Importante — este parâmetro NÃO substitui ST_OBSCLIENTE: os dois convivem. Consulte a seção Interação com ST_OBSCLIENTE para entender qual parâmetro atua em qual tela.

Telas impactadas​

MóduloCódigoPapelComo consome
Parâmetros de FaturamentoMFA001ProdutoracmbST_OBSCLIENTEPED grava o valor (UMFA001.dfm linhas 9072‑9100). Select/Insert/Update do campo em UdmMFA001.dfm linhas 240, 1648‑1650, 2414, 2584, 2821, 3120
Pedido de Venda (MPD002)MPD002Consumidora — modalEm tabPEDIDOCD_PESSOAValidate (após selecionar o cliente), testa parmfatur.values['ST_OBSCLIENTEPED'] e abre TfrmUMPD002OBSCLIENTE (UdmMPD002.pas linhas 1859‑1877). Idem no tratamento em UMPD002.pas linhas 4334‑4352. O SELECT da tabPARMFATUR inclui o campo em UdmMPD002.pas linha 5743
MPD053MPD053Consumidora — modalUdmMPD053.pas linhas 2242‑2276: lê ST_OBSCLIENTEPED via ExecutaConsulta dedicada; se ≠ 'N', busca DS_OBSERVACAO/DS_OBSFINANCEIRO da pessoa e abre TfrmUMPD053OBSCLIENTE com o memo apropriado visível
Ordem de Produção RecapMRC006Consumidora — grid/campoUdmMRC006.pas linhas 250‑263 carrega o parâmetro em iST_OBSCLIENTEPED. UMRC006.pas linhas 2395‑2418: se iST_OBSCLIENTEPED <> 'N', torna grpOBSCLIENTE.Visible := true, consulta PESSOA/PESSOAFISICA e preenche tabORDEMPRODUCAODS_OBSFINANCEIRO conforme a opção (NÃO abre modal — escreve direto no registro)

Consumo também no Backend Java​

ProjetoArquivoLinhaUso
JunsoftWebAPIsource/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/queries/ParmFaturSQL.java36Inclui ST_OBSCLIENTEPED no SELECT padrão de PARMFATUR
JunsoftWebAPIsource/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/JunsoftBuilder.java351Mapeia o campo para a propriedade stObsCliente do DTO ParmFatur (atenção ao nome da propriedade — o Java chama de stObsCliente mas lê de ST_OBSCLIENTEPED)
VulcanoColetasource/Server/VulcanoColeta/VulcanoColetaRestAS/src/main/java/br/com/junsoft/DAO/ParametrosDAO.java—Expõe o parâmetro para o app de coleta Vulcano
VulcanoProdsource/Server/VulcanoProd/VulcanoProdAS/src/main/java/br/com/junsoft/DAO/ParmFaturDAO.java—Expõe o parâmetro para o app de produção Vulcano

Procedures impactadas​

Nenhuma procedure em Scripts/ referencia ST_OBSCLIENTEPED. A lógica é 100% resolvida no código Delphi (e, acessoriamente, em DAOs Java).

Campos envolvidos​

TabelaCampoPapel
PARMFATURST_OBSCLIENTEPEDEste parâmetro. Domínio: S, O, B, N
PESSOADS_OBSFINANCEIROOrigem para opção O (Observação Financeira)
PESSOADS_OBSERVACAOOrigem para opção B (Observação Geral) no MPD053/MRC006
PESSOAFISICADS_OBSERVACAOOrigem para opção S (Pessoa Física) no MPD053/MRC006
PEDIDODS_OBSCLIENTECópia herdada do cadastro, consultada no MPD002 (opção S)
PEDIDODS_OBSFINANCEIROCópia herdada do cadastro, consultada no MPD002 (opção O)
ORDEM (MPD053)DS_OBSCLIENTE, DS_OBSFINANCEIRODestinos gravados ao exibir o modal
ORDEMPRODUCAO (MRC006)DS_OBSFINANCEIRODestino de escrita — MRC006 preenche este campo com a observação escolhida, em vez de abrir modal

Pré-condição universal: todos os blocos exigem Trim(valor) <> ''. Parâmetro ativo + campo da pessoa vazio = nada acontece.


Opções disponíveis​

S - Pessoa Física (Obs. do Cliente)​

O que fazDetalhe
OrigemMPD002: PEDIDO.DS_OBSCLIENTE (já copiado do cadastro) · MPD053: PESSOAFISICA.DS_OBSERVACAO · MRC006: PESSOAFISICA.DS_OBSERVACAO (terceira coluna do SELECT em UMRC006.pas linha 2406)
Comportamento MPD002Abre TfrmUMPD002OBSCLIENTE com memDS_OBSCLIENTE.Visible := True e caption "Observação do Cliente" (UdmMPD002.pas linhas 1861‑1866 / UMPD002.pas linhas 4336‑4341)
Comportamento MPD053Abre TfrmUMPD053OBSCLIENTE com memDS_OBSCLIENTE.Visible := true e caption "Observação do Cliente" (UdmMPD053.pas linhas 2255‑2263)
Comportamento MRC006Escreve Result[2] (DS_OBSERVACAO da PESSOAFISICA) em tabORDEMPRODUCAODS_OBSFINANCEIRO.AsString (UMRC006.pas linhas 2415‑2416) — o campo financeiro da Ordem é usado como destino

Simulação passo a passo​

  1. MFA001 → aba Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Pessoa Física"
  2. Salve (F6)
  3. Em TFA001, cadastre no cliente DS_OBSCLIENTE = "Cliente VIP — liberar preço especial"
  4. Abra o MPD002, digite/selecione esse cliente no pedido
  5. Ao validar o cliente (tabPEDIDOCD_PESSOAValidate), o fluxo entra no if da linha 1859

Resultado esperado: Abre um modal "Observação do Cliente" exibindo o texto cadastrado. O fluxo de preenchimento do pedido só prossegue após o usuário fechar o modal. O pedido não é bloqueado — é apenas um alerta visual.


O - Financeiro​

O que fazDetalhe
OrigemMPD002: PEDIDO.DS_OBSFINANCEIRO · MPD053: PESSOA.DS_OBSFINANCEIRO · MRC006: PESSOA.DS_OBSFINANCEIRO (segunda coluna do SELECT)
Comportamento MPD002Abre TfrmUMPD002OBSCLIENTE com memDS_OBSFINANCEIRO.Visible := True e caption "Observação Financeira do Cliente" (UdmMPD002.pas linhas 1871‑1876)
Comportamento MPD053Abre TfrmUMPD053OBSCLIENTE com memDS_OBSFINANCEIRO.Visible := true e caption "Observação Financeira do Cliente" (UdmMPD053.pas linhas 2266‑2273)
Comportamento MRC006Escreve Result[1] (DS_OBSFINANCEIRO) em tabORDEMPRODUCAODS_OBSFINANCEIRO.AsString (UMRC006.pas linhas 2412‑2413)
Uso típicoAlertar o vendedor sobre restrições financeiras, inadimplência ou limite antes de continuar o pedido

Simulação passo a passo​

  1. MFA001 → Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Financeiro"
  2. Salve (F6)
  3. No TFA001, preencha DS_OBSFINANCEIRO = "Atraso de 15 dias — verificar com financeiro antes de liberar"
  4. Abra o MPD002 e selecione este cliente

Resultado esperado: Abre o modal "Observação Financeira do Cliente" com o texto cadastrado. Serve como alerta para o vendedor antes de montar o pedido.


B - Observação (Geral)​

O que fazDetalhe
OrigemMPD053/MRC006: PESSOA.DS_OBSERVACAO (primeira coluna do SELECT) — observação geral do cadastro
Comportamento MPD002Nenhum! UdmMPD002.pas e UMPD002.pas só tratam as opções 'S' e 'O'. Se estiver configurado como 'B', o MPD002 não abre nada (cai no else vazio)
Comportamento MPD053Nenhum! UdmMPD053.pas linhas 2255‑2274 só trata 'S' e 'O'; qualquer outro valor diferente de 'N' passa pelo if (ObsParm[0] <> 'N'), consulta a pessoa, mas não entra em nenhum dos if internos — modal não aparece
Comportamento MRC006Escreve Result[0] (DS_OBSERVACAO da PESSOA) em tabORDEMPRODUCAODS_OBSFINANCEIRO.AsString (UMRC006.pas linhas 2409‑2410)

Armadilha: diferentemente de ST_OBSCLIENTE (que é plenamente tratado nas 3 opções S/O/B em todas as telas impactadas), a opção B do ST_OBSCLIENTEPED só funciona efetivamente no MRC006. No MPD002 e MPD053, configurar como B faz o parâmetro se comportar como N na prática (nenhum modal é exibido).

Simulação passo a passo​

  1. MFA001 → Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Observação"
  2. Salve (F6)
  3. No TFA001, preencha DS_OBSERVACAO = "Entregar apenas de segunda a quinta, até 14h"
  4. Abra o MRC006 (Ordem de Produção) e informe a pessoa na ordem
  5. Ao validar o cliente, o bloco das linhas 2395‑2418 é executado

Resultado esperado:

  • No MRC006: grpOBSCLIENTE se torna visível, o registro da ORDEMPRODUCAO é posto em Edit e o campo DS_OBSFINANCEIRO da ordem recebe o texto da observação geral da pessoa.
  • No MPD002/MPD053: nada acontece — o pedido continua sem aviso mesmo com o campo preenchido.

N - Não (desabilitado)​

O que fazDetalhe
ExibiçãoNenhum aviso em nenhuma das 3 telas
MPD002Todos os if (parmfatur.values['ST_OBSCLIENTEPED'] = 'S'/'O') falham e o pedido prossegue direto
MPD053O primeiro if (ObsParm[0] <> 'N') (UdmMPD053.pas linha 2247) falha, pulando até mesmo a consulta secundária em PESSOA/PESSOAFISICA — ganho de performance em ambientes que não usam a feature
MRC006if (dmMRC006.iST_OBSCLIENTEPED <> 'N') (UMRC006.pas linha 2395) falha — grpOBSCLIENTE permanece invisível e a ordem não é editada para gravar observação

Simulação passo a passo​

  1. MFA001 → Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Não"
  2. Salve (F6)
  3. Abra MPD002, MPD053 ou MRC006 e selecione um cliente que tenha todas as observações preenchidas no cadastro

Resultado esperado: Nenhum modal abre, nenhuma observação é copiada para os documentos e o grid grpOBSCLIENTE do MRC006 permanece invisível. Este é o valor padrão ao criar um novo registro (UdmMFA001.pas linha 529).


Interação com ST_OBSCLIENTE / ST_OBSPEDIDONOTA​

Três parâmetros lidam com "observação do cliente" — entender a separação é crítico:

ParâmetroÂmbito (telas que leem)Destino do texto
ST_OBSCLIENTEMNF002, MPD020, MOF001, MPD005, MRC001, MRC048, MRC020, MRC015, MRC014, MRC023, MRC007, MRC039, MCO006, MNF008, MNF017Abre modal com a observação (ou controla visibilidade no MRC048)
ST_OBSCLIENTEPED (este)MPD002, MPD053, MRC006Abre modal no MPD002/MPD053 (somente S/O) · escreve em ORDEMPRODUCAO.DS_OBSFINANCEIRO no MRC006 (S/O/B)
ST_OBSPEDIDONOTAMNF002, MPD011, MRC020 (+ procedures)Controla se a observação do pedido é copiada para NOTA.DS_OBSERVACAO na geração da NF

Regras operacionais:

  1. Nenhuma tela consulta os dois parâmetros ST_OBSCLIENTE e ST_OBSCLIENTEPED ao mesmo tempo. São listas disjuntas de telas — cada tela escolhe qual parâmetro ler em tempo de codificação.
  2. Configure ambos de forma coerente. Se sua empresa quer ver a "Obs. Cliente" em todos os fluxos de pedido/NF, deixe os dois com o mesmo valor (ex.: S e S). Se só quer na suite recap/mobile e não na NF tradicional, ajuste individualmente.
  3. A opção B funciona plenamente apenas no MRC006. Em MPD002 e MPD053, B equivale operacionalmente a N.
  4. O backend Java (JunsoftBuilder.java linha 351) mapeia ST_OBSCLIENTEPED para a propriedade stObsCliente — a nomenclatura no Java está desalinhada com a coluna de origem; qualquer integração que use a API deve lembrar dessa correspondência.
  5. ST_OBSPEDIDONOTA é ortogonal a este parâmetro — atua na migração pedido→nota (campo DS_OBSERVACAO do documento), não no alerta visual do cliente.

Tabela Comparativa Resumida​

OpçãoDescriçãoMPD002MPD053MRC006
SPessoa FísicaModal DS_OBSCLIENTEModal PF.DS_OBSERVACAOGrava em DS_OBSFINANCEIRO
OFinanceiroModal DS_OBSFINANCEIROModal P.DS_OBSFINANCEIROGrava em DS_OBSFINANCEIRO
BObservação(sem efeito)(sem efeito)Grava em DS_OBSFINANCEIRO
NNão (padrão)nadanada (short-circuit)nada — grid invisível

Referências no Código Fonte​

Tela de configuração (MFA001)​

ArquivoLinhaDescrição
source/MFA001/UMFA001.dfm8179‑8192Rótulo lbl61 — Caption Mostrar Obs. do Cliente
source/MFA001/UMFA001.dfm9072‑9100ComboBox cmbST_OBSCLIENTEPED (DataField ST_OBSCLIENTEPED), itens S/O/B/N
source/MFA001/UdmMFA001.dfm240, 3120Campo no SELECT da tabPARMFATUR
source/MFA001/UdmMFA001.dfm1648‑1650Declaração de TStringField com FieldName/Origin
source/MFA001/UdmMFA001.dfm2414Lista de colunas no INSERT
source/MFA001/UdmMFA001.dfm2584Parâmetro :ST_OBSCLIENTEPED no VALUES do INSERT
source/MFA001/UdmMFA001.dfm2821ST_OBSCLIENTEPED = :ST_OBSCLIENTEPED no UPDATE
source/MFA001/UdmMFA001.pas226Declaração tabPARMFATURST_OBSCLIENTEPED: TStringField
source/MFA001/UdmMFA001.pas529Valor padrão no AfterInsert: := 'N'

Consumo nas telas (Delphi)​

ArquivoLinhasUso
source/MPD002/UdmMPD002.pas1859, 1869tabPEDIDOCD_PESSOAValidate — testa S/O e abre TfrmUMPD002OBSCLIENTE
source/MPD002/UdmMPD002.pas5743Inclui P.ST_OBSCLIENTEPED no SELECT de PARMFATUR
source/MPD002/UMPD002.pas4334, 4344Mesma lógica em outro fluxo (possivelmente reprocesso)
source/MPD053/UdmMPD053.pas2242SELECT isolado de ST_OBSCLIENTEPED
source/MPD053/UdmMPD053.pas2247Teste <> 'N' — short-circuit
source/MPD053/UdmMPD053.pas2255, 2265Testa S/O e abre TfrmUMPD053OBSCLIENTE
source/MRC006/UdmMRC006.pas251SELECT ST_OBSCLIENTEPED, ST_BLOQPEDIDOMFA006, ST_TABPRECO
source/MRC006/UdmMRC006.pas256Atribui a variável pública iST_OBSCLIENTEPED
source/MRC006/UMRC006.pas2395Teste <> 'N' — torna grpOBSCLIENTE visível
source/MRC006/UMRC006.pas2409Opção B — grava PESSOA.DS_OBSERVACAO em ORDEMPRODUCAO.DS_OBSFINANCEIRO
source/MRC006/UMRC006.pas2412Opção O — grava PESSOA.DS_OBSFINANCEIRO
source/MRC006/UMRC006.pas2415Opção S — grava PESSOAFISICA.DS_OBSERVACAO

Backend Java (consumidores REST)​

ArquivoLinhaUso
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/queries/ParmFaturSQL.java36Inclui ST_OBSCLIENTEPED no SELECT padrão de PARMFATUR
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/JunsoftBuilder.java351resultMap.fieldByName("ST_OBSCLIENTEPED").asString() → .stObsCliente(...) (atenção ao nome desalinhado no DTO)
source/Server/VulcanoColeta/VulcanoColetaRestAS/src/main/java/br/com/junsoft/DAO/ParametrosDAO.java—Exposição para app Vulcano (coleta)
source/Server/VulcanoProd/VulcanoProdAS/src/main/java/br/com/junsoft/DAO/ParmFaturDAO.java—Exposição para app Vulcano (produção)

Procedures SQL​

Nenhuma procedure em Scripts/ referencia ST_OBSCLIENTEPED. Toda a lógica de decisão está no código Delphi e, acessoriamente, em DAOs Java.

DDL da tabela​

ArquivoLinhaDefinição
docs/schema/tables/PARMFATUR.sql171ST_OBSCLIENTEPED DOM_CHAR1 DEFAULT 'N' NOT NULL