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.dfmlinha 3664) → rótulo "Transferir Observação do Pedido Para Nota" (UMFA001.dfmlinha 3705) Tabela:PARMFATUR.ST_OBSPEDIDONOTATipo:CHAR(1)— domínioDOM_CHAR1(S/N) Valor padrão:'S'— atribuído emUdmMFA001.paslinha 510 noAfterInsert
Componente visual:
TwwDBComboBox cmbST_OBSPEDIDONOTA(UMFA001.dfmlinhas 4187–4212), posicionado em Left=495 Top=85, com itens'Sim'=S / 'Não'=N.
Telas impactadas
| Módulo | Código | Papel |
|---|---|---|
| Parâmetros de Faturamento | MFA001 | Produtora — 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ída | MNF002 | Consumidora — 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 Carregamento | MPD011 | Consumidora — 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 Recap | MRC020 | Consumidora — mesma regra do MPD011 ao gerar NF em ordens de recap (UdmMRC020NFORDEM.pas linha 1543) |
| NF Entrada de Carcaça | MNF008 | Consumidora via SELECT — lê P.ST_OBSPEDIDONOTA no bloco de parâmetros de faturamento (UdmMNF008.pas linha 769) |
| Manutenção Pedido Consumidor | MCO006 | Consumidora via SELECT — lê P.ST_OBSPEDIDONOTA no bloco de parâmetros de faturamento (UdmMCO006.pas linha 2113) |
Procedures impactadas
| Procedure | Arquivo | Papel |
|---|---|---|
GRAVA_NOTAFISCALPEDIDO | Scripts/GRAVA_NOTAFISCALPEDIDO.sql | Principal — 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_NOTAFISCALORDEMCARREG | Scripts/GERA_NOTAFISCALORDEMCARREG.sql | Complementar — 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_NFORDEMCARREGMRC049 | Scripts/GERA_NFORDEMCARREGMRC049.sql | Complementar Recap — mesma regra aplicada em NF de Ordem de Carregamento do MRC049 (linhas 240–246) |
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.ST_OBSPEDIDONOTA | Este parâmetro. S = transferir observação; N = ignorar observação do pedido |
PEDIDO.DS_OBSERVACAO | Texto digitado no campo Observação do cabeçalho do pedido — origem dos dados |
NOTA.DS_OBSERVACAO | Destino: 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. OTP_OBSNOTAcontrola flags de montagem da observação fiscal consolidada (via procedureRETORNA_OBSNOTA) — onde a flagS(idx 8) decide seNOTA.DS_OBSERVACAOaparece na observação impressa. Já oST_OBSPEDIDONOTAdecide se oDS_OBSERVACAOdo pedido chega a ser gravado emNOTA.DS_OBSERVACAOno momento da geração da NF. São parâmetros complementares.
Opções disponíveis
S — Sim (padrão)
| O que faz | Detalhe |
|---|---|
| MNF002 — Múltiplos pedidos | UMNF002.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 único | UMNF002.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 SQL | Em 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
- Em MFA001 → aba Opção 2 → Transferir Observação do Pedido Para Nota → selecione
Sim→ salve (F6). - Cadastre um pedido em MPD002 e digite no campo Observação:
"Entregar após 14h — cliente sem recepcionista.". - Gere a NF desse pedido em MNF002 (importando 1 pedido via F7 ou via "Gera NF do Pedido").
- No cabeçalho da NF o campo Observação (
memDS_OBSERVACAO) é preenchido automaticamente com"Entregar após 14h — cliente sem recepcionista.". - 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 faz | Detalhe |
|---|---|
| MNF002 | A 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/MRC020 | O bloco if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') não executa — tabNOTADS_OBSERVACAO não é alterado pelo NFORDEM |
| Procedures SQL | IF (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
- Em MFA001 → aba Opção 2 → Transferir Observação do Pedido Para Nota → selecione
Não→ salve (F6). - Cadastre pedido em MPD002 com Observação
"Entregar após 14h". - Gere NF do pedido em MNF002.
- O campo Observação da NF permanece em branco (ou com o valor que o operador digitar manualmente na NF).
- Se a NF for gerada via procedure (
GRAVA_NOTAFISCALPEDIDO), oINSERT INTO NOTAgravaDS_OBSERVACAO = NULLmesmo que o chamador tenha preparado um texto emV_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(flagS— idx 8) (TP_OBSNOTA) — OST_OBSPEDIDONOTAcontrola seDS_OBSERVACAOé gravado na NF ao importar o pedido; a flagSdoTP_OBSNOTAcontrola se o conteúdo deNOTA.DS_OBSERVACAOé impresso na observação consolidada do DANFE (viaRETORNA_OBSNOTA_ATRIBUICOES.sqllinha 97). Para o texto do pedido aparecer no DANFE, os dois precisam estar corretos:ST_OBSPEDIDONOTA='S'(traz do pedido) eTP_OBSNOTAcontendo a letraS(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_OBSERVACAOno 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_OBSERVACAOcomiDs_Observacao(linha 2139): qualquer texto manual digitado antes é perdido. Prefira digitar observações após importar os pedidos.
Tabela Comparativa Resumida
| Valor | MNF002 (pedido único) | MNF002 (vários pedidos) | MPD011/MRC020 (Ordem Carreg.) | GRAVA_NOTAFISCALPEDIDO |
|---|---|---|---|---|
S | Copia PEDIDO.DS_OBSERVACAO truncado em 240 | Copia concatenação iDs_Observacao dos pedidos | Copia DS_OBSERVACAO consolidada truncada em 230 | Grava V_DS_OBS em NOTA.DS_OBSERVACAO |
N | Não copia — NF fica em branco | Não copia — NF fica em branco | Não copia — NF fica em branco | Seta V_DS_OBS = NULL antes do INSERT |
Referências no Código Fonte
Delphi — Tela MFA001 (produtora)
| Arquivo | Linhas | Papel |
|---|---|---|
source/MFA001/UMFA001.dfm | 3664 | GroupBox "Parâmetros Comum a Notas Fiscais / Pedido" onde o controle reside |
source/MFA001/UMFA001.dfm | 3699–3712 | TLabel Label27 com Caption = 'Transferir Observação do Pedido Para Nota' (rótulo do combo) |
source/MFA001/UMFA001.dfm | 4187–4212 | TwwDBComboBox cmbST_OBSPEDIDONOTA com DataField = 'ST_OBSPEDIDONOTA' e itens Sim=S / Não=N |
source/MFA001/UMFA001.pas | 259 | Declaração cmbST_OBSPEDIDONOTA: TwwDBComboBox |
source/MFA001/UMFA001.pas | 1139–1143 | Navegação de foco — ao pressionar atalho que esteja no combo, leva para pagPARMAMETROS/pagNota e foca cmbST_PAGTOAVISTA |
source/MFA001/UdmMFA001.pas | 154 | Declaração tabPARMFATURST_OBSPEDIDONOTA: TStringField |
source/MFA001/UdmMFA001.pas | 510 | AfterInsert: valor padrão 'S' — tabPARMFATURST_OBSPEDIDONOTA.AsString := 'S'; |
source/MFA001/UdmMFA001.dfm | 161, 1230–1232, 2389, 2550, 2766, 3041 | ST_OBSPEDIDONOTA nos SQLs do tabPARMFATUR (SelectSQL, InsertSQL, ModifySQL) e no TStringField |
Delphi — Consumidores (leem PARMFATUR.ST_OBSPEDIDONOTA)
| Arquivo | Linhas | Papel |
|---|---|---|
source/MNF002/UMNF002.pas | 2138–2139 | if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') then dmMNF002.tabNOTADS_OBSERVACAO.AsString := iDs_Observacao; — múltiplos pedidos |
source/MNF002/UMNF002.pas | 2614–2615 | if (ParmFatur.Values['ST_OBSPEDIDONOTA']='S') then dmMNF002.tabNOTADS_OBSERVACAO.AsString := Copy(dmMNF002.tabPEDIDODS_OBSERVACAO.AsString, 1, 240); — pedido único |
source/MPD011/UdmNFORDEM.pas | 921–931 | Bloco que copia DS_OBSERVACAO consolidada (230 caracteres) para tabNOTADS_OBSERVACAO quando gera NF de Ordem de Carregamento |
source/MPD011/UdmMPD011.pas | 1582 | SELECT ... PF.ST_OBSPEDIDONOTA FROM PARMFATUR PF — carregamento dos parâmetros de faturamento |
source/MRC020/UdmMRC020NFORDEM.pas | 1543–1551 | Mesma lógica do MPD011 aplicada no módulo de recap |
source/MNF008/UdmMNF008.pas | 769 | SELECT ... P.ST_OBSPEDIDONOTA FROM PARMFATUR P — parâmetros para NF de entrada de carcaça |
source/MCO006/UdmMCO006.pas | 2113 | SELECT ... P.ST_OBSPEDIDONOTA FROM PARMFATUR P — parâmetros para pedido consumidor |
SQL — Procedures (Firebird)
| Arquivo | Linhas-chave | Papel |
|---|---|---|
Scripts/GRAVA_NOTAFISCALPEDIDO.sql | 77, 175–178, 180–181 | DECLARE 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.sql | 81, 166–169, 171–172 | Mesma regra aplicada em NF de Ordem de Carregamento padrão |
Scripts/GERA_NFORDEMCARREGMRC049.sql | 83, 240–246 | Mesma regra aplicada em NF de Ordem de Carregamento Recap MRC049 |