Pular para o conteúdo principal

ST_OBSPEDIDONOTA — Transferir Observação do Pedido para a Nota

Tela de configuração: MFA001 — Parâmetros de Faturamento Localização: Parâmetros → aba Opção 2 (pagFatOp2) → GroupBox "Parâmetros Comum a Notas Fiscais / Pedido" (UMFA001.dfm linha 3664) → rótulo "Transferir Observação do Pedido Para Nota" (UMFA001.dfm linha 3705) Tabela: PARMFATUR.ST_OBSPEDIDONOTA Tipo: CHAR(1) — domínio DOM_CHAR1 (S/N) Valor padrão: 'S' — atribuído em UdmMFA001.pas linha 510 no AfterInsert

Componente visual: TwwDBComboBox cmbST_OBSPEDIDONOTA (UMFA001.dfm linhas 4187–4212), posicionado em Left=495 Top=85, com itens 'Sim'=S / 'Não'=N.

Telas impactadas​

MóduloCódigoPapel
Parâmetros de FaturamentoMFA001Produtora — cmbST_OBSPEDIDONOTA grava o valor (UMFA001.dfm linhas 4187–4212). Foco por tecla de atalho roteia para pagPARMAMETROS/pagNota (UMFA001.pas linhas 1139–1143)
NF SaídaMNF002Consumidora — ao importar múltiplos pedidos para a NF, copia a observação concatenada dos pedidos em NOTA.DS_OBSERVACAO quando ST_OBSPEDIDONOTA='S' (UMNF002.pas linha 2138); ao importar um único pedido, copia PEDIDO.DS_OBSERVACAO truncado em 240 caracteres (UMNF002.pas linha 2614)
NF por Ordem de CarregamentoMPD011Consumidora — ao gerar NF a partir de Ordem de Carregamento (UdmNFORDEM.pas linha 921) copia a observação consolidada dos pedidos em NOTA.DS_OBSERVACAO truncada em 230 caracteres
NF por Ordem de Carregamento RecapMRC020Consumidora — mesma regra do MPD011 ao gerar NF em ordens de recap (UdmMRC020NFORDEM.pas linha 1543)
NF Entrada de CarcaçaMNF008Consumidora via SELECT — lê P.ST_OBSPEDIDONOTA no bloco de parâmetros de faturamento (UdmMNF008.pas linha 769)
Manutenção Pedido ConsumidorMCO006Consumidora via SELECT — lê P.ST_OBSPEDIDONOTA no bloco de parâmetros de faturamento (UdmMCO006.pas linha 2113)

Procedures impactadas​

ProcedureArquivoPapel
GRAVA_NOTAFISCALPEDIDOScripts/GRAVA_NOTAFISCALPEDIDO.sqlPrincipal — ao gerar NF a partir de pedido, lê P.ST_OBSPEDIDONOTA em V_ST_OBSPEDIDONOTA (linhas 175–178). Se = 'N', zera V_DS_OBS = NULL (linhas 180–181) antes do INSERT INTO NOTA (linha 186) — a observação do pedido NÃO vai para NOTA.DS_OBSERVACAO
GERA_NOTAFISCALORDEMCARREGScripts/GERA_NOTAFISCALORDEMCARREG.sqlComplementar — ao gerar NF de Ordem de Carregamento executa a mesma regra: SELECT P.ST_OBSPEDIDONOTA ... INTO :V_ST_OBSPEDIDONOTA (linhas 166–169), se = 'N' seta V_DS_OBS = NULL (linhas 171–172) antes do INSERT INTO NOTA (linha 186)
GERA_NFORDEMCARREGMRC049Scripts/GERA_NFORDEMCARREGMRC049.sqlComplementar Recap — mesma regra aplicada em NF de Ordem de Carregamento do MRC049 (linhas 240–246)

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_OBSPEDIDONOTAEste parâmetro. S = transferir observação; N = ignorar observação do pedido
PEDIDO.DS_OBSERVACAOTexto digitado no campo Observação do cabeçalho do pedido — origem dos dados
NOTA.DS_OBSERVACAODestino: campo Observação do cabeçalho da NF. Capacidade usada varia por fluxo: 240 caracteres em MNF002 (pedido único), 230 em MPD011/MRC020
iDs_Observacao (variável local MNF002)String concatenada acumulando DS_OBSERVACAO de todos os pedidos importados (UMNF002.pas linhas 2085–2088)

Nota importante: Este parâmetro NÃO deve ser confundido com TP_OBSNOTA. O TP_OBSNOTA controla flags de montagem da observação fiscal consolidada (via procedure RETORNA_OBSNOTA) — onde a flag S (idx 8) decide se NOTA.DS_OBSERVACAO aparece na observação impressa. Já o ST_OBSPEDIDONOTA decide se o DS_OBSERVACAO do pedido chega a ser gravado em NOTA.DS_OBSERVACAO no momento da geração da NF. São parâmetros complementares.


Opções disponíveis​

S — Sim (padrão)​

O que fazDetalhe
MNF002 — Múltiplos pedidosUMNF002.pas linha 2138: if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') then dmMNF002.tabNOTADS_OBSERVACAO.AsString := iDs_Observacao; — concatena o DS_OBSERVACAO de cada pedido do vetor e grava na NF
MNF002 — Pedido únicoUMNF002.pas linha 2614: if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') then dmMNF002.tabNOTADS_OBSERVACAO.AsString := Copy(dmMNF002.tabPEDIDODS_OBSERVACAO.AsString, 1, 240); — trunca em 240 caracteres
MPD011 (Ordem Carregamento)UdmNFORDEM.pas linhas 921–931: grava DS_OBSERVACAO consolidado truncado em 230 caracteres
MRC020 (Ordem Carregamento Recap)UdmMRC020NFORDEM.pas linhas 1543–1551: mesma regra, truncado em 230
Procedures SQLEm GRAVA_NOTAFISCALPEDIDO, GERA_NOTAFISCALORDEMCARREG e GERA_NFORDEMCARREGMRC049, o teste IF (V_ST_OBSPEDIDONOTA = 'N') THEN V_DS_OBS = NULL; não dispara, e V_DS_OBS é persistido em NOTA.DS_OBSERVACAO no INSERT

Simulação passo a passo​

  1. Em MFA001 → aba Opção 2 → Transferir Observação do Pedido Para Nota → selecione Sim → salve (F6).
  2. Cadastre um pedido em MPD002 e digite no campo Observação: "Entregar após 14h — cliente sem recepcionista.".
  3. Gere a NF desse pedido em MNF002 (importando 1 pedido via F7 ou via "Gera NF do Pedido").
  4. No cabeçalho da NF o campo Observação (memDS_OBSERVACAO) é preenchido automaticamente com "Entregar após 14h — cliente sem recepcionista.".
  5. Alternativamente, gere uma NF de Ordem de Carregamento em MPD011 com vários pedidos que tenham observações — o sistema concatena todas as observações e grava truncado em 230 caracteres.

Resultado esperado: o texto de observação digitado no pedido aparece automaticamente na NF gerada, sem necessidade de redigitação. Em NF consolidada de vários pedidos, as observações são agrupadas.


N — Não​

O que fazDetalhe
MNF002A cópia condicional if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') falha — NOTA.DS_OBSERVACAO fica com o valor corrente (em branco ou com observação manual digitada pelo usuário)
MPD011/MRC020O bloco if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') não executa — tabNOTADS_OBSERVACAO não é alterado pelo NFORDEM
Procedures SQLIF (V_ST_OBSPEDIDONOTA = 'N') THEN V_DS_OBS = NULL; dispara — mesmo que o chamador passe observação em I_DS_OBS, a procedure zera o valor antes do INSERT INTO NOTA, garantindo que NOTA.DS_OBSERVACAO fique nulo

Simulação passo a passo​

  1. Em MFA001 → aba Opção 2 → Transferir Observação do Pedido Para Nota → selecione Não → salve (F6).
  2. Cadastre pedido em MPD002 com Observação "Entregar após 14h".
  3. Gere NF do pedido em MNF002.
  4. O campo Observação da NF permanece em branco (ou com o valor que o operador digitar manualmente na NF).
  5. Se a NF for gerada via procedure (GRAVA_NOTAFISCALPEDIDO), o INSERT INTO NOTA grava DS_OBSERVACAO = NULL mesmo que o chamador tenha preparado um texto em V_DS_OBS.

Resultado esperado: a observação digitada no pedido não é replicada na NF. Útil quando a observação do pedido é de controle interno de separação/logística e não deve aparecer no DANFE impresso para o cliente.


Interação com outros parâmetros​

  • TP_OBSNOTA (flag S — idx 8) (TP_OBSNOTA) — O ST_OBSPEDIDONOTA controla se DS_OBSERVACAO é gravado na NF ao importar o pedido; a flag S do TP_OBSNOTA controla se o conteúdo de NOTA.DS_OBSERVACAO é impresso na observação consolidada do DANFE (via RETORNA_OBSNOTA_ATRIBUICOES.sql linha 97). Para o texto do pedido aparecer no DANFE, os dois precisam estar corretos: ST_OBSPEDIDONOTA='S' (traz do pedido) e TP_OBSNOTA contendo a letra S (manda imprimir).
  • Limites de tamanho — Os módulos Delphi truncam de forma diferente: MNF002 pedido único corta em 240 caracteres (Copy(..., 1, 240) linha 2615), MPD011/MRC020 cortam em 230 (Copy(..., 0, 230) linhas 928 e 1548). NOTA.DS_OBSERVACAO no banco suporta o valor completo, mas quem reduzir são os módulos na gravação.
  • Sobrescrita — No MNF002, quando importa múltiplos pedidos, o bloco sobrescreve integralmente tabNOTADS_OBSERVACAO com iDs_Observacao (linha 2139): qualquer texto manual digitado antes é perdido. Prefira digitar observações após importar os pedidos.

Tabela Comparativa Resumida​

ValorMNF002 (pedido único)MNF002 (vários pedidos)MPD011/MRC020 (Ordem Carreg.)GRAVA_NOTAFISCALPEDIDO
SCopia PEDIDO.DS_OBSERVACAO truncado em 240Copia concatenação iDs_Observacao dos pedidosCopia DS_OBSERVACAO consolidada truncada em 230Grava V_DS_OBS em NOTA.DS_OBSERVACAO
NNão copia — NF fica em brancoNão copia — NF fica em brancoNão copia — NF fica em brancoSeta V_DS_OBS = NULL antes do INSERT

Referências no Código Fonte​

Delphi — Tela MFA001 (produtora)​

ArquivoLinhasPapel
source/MFA001/UMFA001.dfm3664GroupBox "Parâmetros Comum a Notas Fiscais / Pedido" onde o controle reside
source/MFA001/UMFA001.dfm3699–3712TLabel Label27 com Caption = 'Transferir Observação do Pedido Para Nota' (rótulo do combo)
source/MFA001/UMFA001.dfm4187–4212TwwDBComboBox cmbST_OBSPEDIDONOTA com DataField = 'ST_OBSPEDIDONOTA' e itens Sim=S / Não=N
source/MFA001/UMFA001.pas259Declaração cmbST_OBSPEDIDONOTA: TwwDBComboBox
source/MFA001/UMFA001.pas1139–1143Navegação de foco — ao pressionar atalho que esteja no combo, leva para pagPARMAMETROS/pagNota e foca cmbST_PAGTOAVISTA
source/MFA001/UdmMFA001.pas154Declaração tabPARMFATURST_OBSPEDIDONOTA: TStringField
source/MFA001/UdmMFA001.pas510AfterInsert: valor padrão 'S' — tabPARMFATURST_OBSPEDIDONOTA.AsString := 'S';
source/MFA001/UdmMFA001.dfm161, 1230–1232, 2389, 2550, 2766, 3041ST_OBSPEDIDONOTA nos SQLs do tabPARMFATUR (SelectSQL, InsertSQL, ModifySQL) e no TStringField

Delphi — Consumidores (leem PARMFATUR.ST_OBSPEDIDONOTA)​

ArquivoLinhasPapel
source/MNF002/UMNF002.pas2138–2139if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') then dmMNF002.tabNOTADS_OBSERVACAO.AsString := iDs_Observacao; — múltiplos pedidos
source/MNF002/UMNF002.pas2614–2615if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') then dmMNF002.tabNOTADS_OBSERVACAO.AsString := Copy(dmMNF002.tabPEDIDODS_OBSERVACAO.AsString, 1, 240); — pedido único
source/MPD011/UdmNFORDEM.pas921–931Bloco que copia DS_OBSERVACAO consolidada (230 caracteres) para tabNOTADS_OBSERVACAO quando gera NF de Ordem de Carregamento
source/MPD011/UdmMPD011.pas1582SELECT ... PF.ST_OBSPEDIDONOTA FROM PARMFATUR PF — carregamento dos parâmetros de faturamento
source/MRC020/UdmMRC020NFORDEM.pas1543–1551Mesma lógica do MPD011 aplicada no módulo de recap
source/MNF008/UdmMNF008.pas769SELECT ... P.ST_OBSPEDIDONOTA FROM PARMFATUR P — parâmetros para NF de entrada de carcaça
source/MCO006/UdmMCO006.pas2113SELECT ... P.ST_OBSPEDIDONOTA FROM PARMFATUR P — parâmetros para pedido consumidor

SQL — Procedures (Firebird)​

ArquivoLinhas-chavePapel
Scripts/GRAVA_NOTAFISCALPEDIDO.sql77, 175–178, 180–181DECLARE VARIABLE V_ST_OBSPEDIDONOTA DOM_CHAR1; — lê P.ST_OBSPEDIDONOTA de PARMFATUR e, se ='N', seta V_DS_OBS = NULL antes do INSERT INTO NOTA
Scripts/GERA_NOTAFISCALORDEMCARREG.sql81, 166–169, 171–172Mesma regra aplicada em NF de Ordem de Carregamento padrão
Scripts/GERA_NFORDEMCARREGMRC049.sql83, 240–246Mesma regra aplicada em NF de Ordem de Carregamento Recap MRC049