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.dfmlinha 7698) → subaba Opção 1 (pagPedidoOp1— linha 7708) → GroupBoxgrpPedidos→ rótulo "Mostrar Obs. do Cliente" (lbl61,UMFA001.dfmlinhas 8179‑8192) Tabela:PARMFATUR.ST_OBSCLIENTEPEDTipo:DOM_CHAR1(CHAR(1) NOT NULL DEFAULT 'N') — conformedocs/schema/tables/PARMFATUR.sqllinha 171 Valor padrão:'N'— atribuído emUdmMFA001.paslinha 529 noAfterInsertdatabPARMFATUR
Componente visual:
TwwDBComboBox cmbST_OBSCLIENTEPED(UMFA001.dfmlinhas 9072‑9100), posicionado emLeft=467 Top=207, ao lado do rótulolbl61(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ódulo | Código | Papel | Como consome |
|---|---|---|---|
| Parâmetros de Faturamento | MFA001 | Produtora | cmbST_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) | MPD002 | Consumidora — modal | Em 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 |
| MPD053 | MPD053 | Consumidora — modal | UdmMPD053.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 Recap | MRC006 | Consumidora — grid/campo | UdmMRC006.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
| Projeto | Arquivo | Linha | Uso |
|---|---|---|---|
| JunsoftWebAPI | source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/queries/ParmFaturSQL.java | 36 | Inclui ST_OBSCLIENTEPED no SELECT padrão de PARMFATUR |
| JunsoftWebAPI | source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/JunsoftBuilder.java | 351 | Mapeia 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) |
| VulcanoColeta | source/Server/VulcanoColeta/VulcanoColetaRestAS/src/main/java/br/com/junsoft/DAO/ParametrosDAO.java | — | Expõe o parâmetro para o app de coleta Vulcano |
| VulcanoProd | source/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
| Tabela | Campo | Papel |
|---|---|---|
PARMFATUR | ST_OBSCLIENTEPED | Este parâmetro. Domínio: S, O, B, N |
PESSOA | DS_OBSFINANCEIRO | Origem para opção O (Observação Financeira) |
PESSOA | DS_OBSERVACAO | Origem para opção B (Observação Geral) no MPD053/MRC006 |
PESSOAFISICA | DS_OBSERVACAO | Origem para opção S (Pessoa Física) no MPD053/MRC006 |
PEDIDO | DS_OBSCLIENTE | Cópia herdada do cadastro, consultada no MPD002 (opção S) |
PEDIDO | DS_OBSFINANCEIRO | Cópia herdada do cadastro, consultada no MPD002 (opção O) |
ORDEM (MPD053) | DS_OBSCLIENTE, DS_OBSFINANCEIRO | Destinos gravados ao exibir o modal |
ORDEMPRODUCAO (MRC006) | DS_OBSFINANCEIRO | Destino 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 faz | Detalhe |
|---|---|
| Origem | MPD002: 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 MPD002 | Abre TfrmUMPD002OBSCLIENTE com memDS_OBSCLIENTE.Visible := True e caption "Observação do Cliente" (UdmMPD002.pas linhas 1861‑1866 / UMPD002.pas linhas 4336‑4341) |
| Comportamento MPD053 | Abre TfrmUMPD053OBSCLIENTE com memDS_OBSCLIENTE.Visible := true e caption "Observação do Cliente" (UdmMPD053.pas linhas 2255‑2263) |
| Comportamento MRC006 | Escreve 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
- MFA001 → aba Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Pessoa Física"
- Salve (F6)
- Em TFA001, cadastre no cliente
DS_OBSCLIENTE="Cliente VIP — liberar preço especial" - Abra o MPD002, digite/selecione esse cliente no pedido
- Ao validar o cliente (
tabPEDIDOCD_PESSOAValidate), o fluxo entra noifda 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 faz | Detalhe |
|---|---|
| Origem | MPD002: PEDIDO.DS_OBSFINANCEIRO · MPD053: PESSOA.DS_OBSFINANCEIRO · MRC006: PESSOA.DS_OBSFINANCEIRO (segunda coluna do SELECT) |
| Comportamento MPD002 | Abre TfrmUMPD002OBSCLIENTE com memDS_OBSFINANCEIRO.Visible := True e caption "Observação Financeira do Cliente" (UdmMPD002.pas linhas 1871‑1876) |
| Comportamento MPD053 | Abre TfrmUMPD053OBSCLIENTE com memDS_OBSFINANCEIRO.Visible := true e caption "Observação Financeira do Cliente" (UdmMPD053.pas linhas 2266‑2273) |
| Comportamento MRC006 | Escreve Result[1] (DS_OBSFINANCEIRO) em tabORDEMPRODUCAODS_OBSFINANCEIRO.AsString (UMRC006.pas linhas 2412‑2413) |
| Uso típico | Alertar o vendedor sobre restrições financeiras, inadimplência ou limite antes de continuar o pedido |
Simulação passo a passo
- MFA001 → Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Financeiro"
- Salve (F6)
- No TFA001, preencha
DS_OBSFINANCEIRO="Atraso de 15 dias — verificar com financeiro antes de liberar" - 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 faz | Detalhe |
|---|---|
| Origem | MPD053/MRC006: PESSOA.DS_OBSERVACAO (primeira coluna do SELECT) — observação geral do cadastro |
| Comportamento MPD002 | Nenhum! 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 MPD053 | Nenhum! 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 MRC006 | Escreve 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çãoBdoST_OBSCLIENTEPEDsó funciona efetivamente no MRC006. No MPD002 e MPD053, configurar comoBfaz o parâmetro se comportar comoNna prática (nenhum modal é exibido).
Simulação passo a passo
- MFA001 → Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Observação"
- Salve (F6)
- No TFA001, preencha
DS_OBSERVACAO="Entregar apenas de segunda a quinta, até 14h" - Abra o MRC006 (Ordem de Produção) e informe a pessoa na ordem
- Ao validar o cliente, o bloco das linhas 2395‑2418 é executado
Resultado esperado:
- No MRC006:
grpOBSCLIENTEse torna visível, o registro daORDEMPRODUCAOé posto em Edit e o campoDS_OBSFINANCEIROda 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 faz | Detalhe |
|---|---|
| Exibição | Nenhum aviso em nenhuma das 3 telas |
| MPD002 | Todos os if (parmfatur.values['ST_OBSCLIENTEPED'] = 'S'/'O') falham e o pedido prossegue direto |
| MPD053 | O 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 |
| MRC006 | if (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
- MFA001 → Pedidos → Opção 1 → Mostrar Obs. do Cliente = "Não"
- Salve (F6)
- 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_OBSCLIENTE | MNF002, MPD020, MOF001, MPD005, MRC001, MRC048, MRC020, MRC015, MRC014, MRC023, MRC007, MRC039, MCO006, MNF008, MNF017 | Abre modal com a observação (ou controla visibilidade no MRC048) |
ST_OBSCLIENTEPED (este) | MPD002, MPD053, MRC006 | Abre modal no MPD002/MPD053 (somente S/O) · escreve em ORDEMPRODUCAO.DS_OBSFINANCEIRO no MRC006 (S/O/B) |
ST_OBSPEDIDONOTA | MNF002, MPD011, MRC020 (+ procedures) | Controla se a observação do pedido é copiada para NOTA.DS_OBSERVACAO na geração da NF |
Regras operacionais:
- 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.
- 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.:
SeS). Se só quer na suite recap/mobile e não na NF tradicional, ajuste individualmente. - A opção
Bfunciona plenamente apenas no MRC006. EmMPD002eMPD053,Bequivale operacionalmente aN. - O backend Java (
JunsoftBuilder.javalinha 351) mapeiaST_OBSCLIENTEPEDpara a propriedadestObsCliente— a nomenclatura no Java está desalinhada com a coluna de origem; qualquer integração que use a API deve lembrar dessa correspondência. ST_OBSPEDIDONOTAé ortogonal a este parâmetro — atua na migração pedido→nota (campoDS_OBSERVACAOdo documento), não no alerta visual do cliente.
Tabela Comparativa Resumida
| Opção | Descrição | MPD002 | MPD053 | MRC006 |
|---|---|---|---|---|
| S | Pessoa Física | Modal DS_OBSCLIENTE | Modal PF.DS_OBSERVACAO | Grava em DS_OBSFINANCEIRO |
| O | Financeiro | Modal DS_OBSFINANCEIRO | Modal P.DS_OBSFINANCEIRO | Grava em DS_OBSFINANCEIRO |
| B | Observação | (sem efeito) | (sem efeito) | Grava em DS_OBSFINANCEIRO |
| N | Não (padrão) | nada | nada (short-circuit) | nada — grid invisível |
Referências no Código Fonte
Tela de configuração (MFA001)
| Arquivo | Linha | Descrição |
|---|---|---|
source/MFA001/UMFA001.dfm | 8179‑8192 | Rótulo lbl61 — Caption Mostrar Obs. do Cliente |
source/MFA001/UMFA001.dfm | 9072‑9100 | ComboBox cmbST_OBSCLIENTEPED (DataField ST_OBSCLIENTEPED), itens S/O/B/N |
source/MFA001/UdmMFA001.dfm | 240, 3120 | Campo no SELECT da tabPARMFATUR |
source/MFA001/UdmMFA001.dfm | 1648‑1650 | Declaração de TStringField com FieldName/Origin |
source/MFA001/UdmMFA001.dfm | 2414 | Lista de colunas no INSERT |
source/MFA001/UdmMFA001.dfm | 2584 | Parâmetro :ST_OBSCLIENTEPED no VALUES do INSERT |
source/MFA001/UdmMFA001.dfm | 2821 | ST_OBSCLIENTEPED = :ST_OBSCLIENTEPED no UPDATE |
source/MFA001/UdmMFA001.pas | 226 | Declaração tabPARMFATURST_OBSCLIENTEPED: TStringField |
source/MFA001/UdmMFA001.pas | 529 | Valor padrão no AfterInsert: := 'N' |
Consumo nas telas (Delphi)
| Arquivo | Linhas | Uso |
|---|---|---|
source/MPD002/UdmMPD002.pas | 1859, 1869 | tabPEDIDOCD_PESSOAValidate — testa S/O e abre TfrmUMPD002OBSCLIENTE |
source/MPD002/UdmMPD002.pas | 5743 | Inclui P.ST_OBSCLIENTEPED no SELECT de PARMFATUR |
source/MPD002/UMPD002.pas | 4334, 4344 | Mesma lógica em outro fluxo (possivelmente reprocesso) |
source/MPD053/UdmMPD053.pas | 2242 | SELECT isolado de ST_OBSCLIENTEPED |
source/MPD053/UdmMPD053.pas | 2247 | Teste <> 'N' — short-circuit |
source/MPD053/UdmMPD053.pas | 2255, 2265 | Testa S/O e abre TfrmUMPD053OBSCLIENTE |
source/MRC006/UdmMRC006.pas | 251 | SELECT ST_OBSCLIENTEPED, ST_BLOQPEDIDOMFA006, ST_TABPRECO |
source/MRC006/UdmMRC006.pas | 256 | Atribui a variável pública iST_OBSCLIENTEPED |
source/MRC006/UMRC006.pas | 2395 | Teste <> 'N' — torna grpOBSCLIENTE visível |
source/MRC006/UMRC006.pas | 2409 | Opção B — grava PESSOA.DS_OBSERVACAO em ORDEMPRODUCAO.DS_OBSFINANCEIRO |
source/MRC006/UMRC006.pas | 2412 | Opção O — grava PESSOA.DS_OBSFINANCEIRO |
source/MRC006/UMRC006.pas | 2415 | Opção S — grava PESSOAFISICA.DS_OBSERVACAO |
Backend Java (consumidores REST)
| Arquivo | Linha | Uso |
|---|---|---|
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/queries/ParmFaturSQL.java | 36 | Inclui ST_OBSCLIENTEPED no SELECT padrão de PARMFATUR |
source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/JunsoftBuilder.java | 351 | resultMap.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
| Arquivo | Linha | Definição |
|---|---|---|
docs/schema/tables/PARMFATUR.sql | 171 | ST_OBSCLIENTEPED DOM_CHAR1 DEFAULT 'N' NOT NULL |