Pular para o conteúdo principal

DS_MSGORCAMENTO — Mensagem em Orçamentos

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → aba Mensagens (pagMENSAGEM) → grupo Mensagem Orçamento (grpOrcamento) Tabela: PARMFATUR.DS_MSGORCAMENTO Tipo: Texto livre (DOM_VARCHAR240 - até 240 caracteres) Componente (UMFA001.dfm): TDBMemo memDS_MSGORCAMENTO (dentro de grpOrcamento / caption "Mensagem Orçamento", MaxLength = 240) Valor padrão: vazio/NULL — não há atribuição em tabPARMFATURAfterInsert de UdmMFA001.pas (linhas 434-523). O campo permanece NULL até ser digitado pelo usuário.

Telas impactadas​

O parâmetro é lido por layouts de impressão de pedidos/orçamentos. Nenhuma stored procedure em Scripts/ referencia este campo — o consumo é exclusivamente via SQL embutido nos módulos Delphi de impressão.

MóduloCódigoPapel
Parâmetros de FaturamentoMFA001Tela de cadastro/edição do texto (produtora)
Orçamento — Layout gráficoLOR026Consumidor: SELECT direto PF.DS_MSGORCAMENTO (orçamento isolado)
Pedido/Orçamento — Layout gráficoLPD042Consumidor: SELECT PARM.DS_MSGORCAMENTO (ReportBuilder TppDBMemo memoDS_MSGORCAMENTO)
Pedido/Orçamento — Layout gráficoLPD044Consumidor: SELECT PARM.DS_MSGORCAMENTO
Pedido/Orçamento unificadoLPD048Consumidor: concatena em DS_OBSERVACAO via CASE WHEN N.TP_PEDIDO = 'O'
Pedido/Orçamento unificadoLPD119Consumidor: SELECT PARM.DS_MSGORCAMENTO
Pedido/Orçamento unificadoLPD128Consumidor: concatena em DS_OBSERVACAO via CASE WHEN N.TP_PEDIDO = 'O' (3 ocorrências)
Pedido/Orçamento unificadoLPD133Consumidor: concatena em DS_OBSERVACAO via CASE WHEN N.TP_PEDIDO = 'O'
Acerto de Custo Prod. AcabadosCPD009Replica o valor de PARMFATUR em operações de acerto (não é consumidor do texto)
Ferramenta de ExportaçãoFER002Exclui explicitamente o campo ao exportar parâmetros entre bases

Observação: as telas LPD048, LPD128 e LPD133 decidem via CASE WHEN N.TP_PEDIDO = 'O' se usam DS_MSGORCAMENTO (quando é orçamento) ou DS_MSGPEDIDO (quando é pedido). LPD042/LPD044/LPD119 trazem o campo como coluna separada e deixam a decisão de impressão para o layout de banda do ReportBuilder.

Campos envolvidos​

CampoDescrição
PARMFATUR.DS_MSGORCAMENTOEste parâmetro. Texto livre (até 240 caracteres) impresso no rodapé/observação dos orçamentos
PARMFATUR.DS_MSGPEDIDOMensagem irmã — usada em pedidos (N.TP_PEDIDO = 'P')
PARMFATUR.DS_MSGCONTRATOMensagem irmã — usada em contratos
PARMFATUR.DS_MENSAGEMMensagem irmã — usada em Nota Fiscal
ORCAMENTOVENDA.DS_OBSERVACAOObservação específica do orçamento (LOR026)
PEDIDO.DS_OBSERVACAOObservação do registro quando o pedido é marcado como orçamento (TP_PEDIDO = 'O')
PEDIDO.TP_PEDIDODiscriminador 'P'=Pedido, 'O'=Orçamento — determina qual mensagem (DS_MSGPEDIDO vs DS_MSGORCAMENTO) é concatenada

Onde a mensagem aparece​

A mensagem é usada exclusivamente na impressão de orçamentos (em layouts gráficos ReportBuilder). Há dois padrões de consumo no código Delphi.

1. Impressão unificada Pedido/Orçamento (LPD048, LPD128, LPD133)​

Estes layouts atendem pedidos e orçamentos na mesma tabela PEDIDO (distinguidos por TP_PEDIDO). O SQL usa um CASE WHEN para escolher qual mensagem concatenar ao DS_OBSERVACAO:

CASE
WHEN N.TP_PEDIDO = 'P' THEN COALESCE(N.DS_OBSERVACAO,'')||COALESCE(' '||PARM.DS_MSGPEDIDO,'')
WHEN N.TP_PEDIDO = 'O' THEN COALESCE(N.DS_OBSERVACAO,'')||COALESCE(' '||PARM.DS_MSGORCAMENTO,'')
END DS_OBSERVACAO

Referências reais:

  • source/LPD048/ULPD048.dfm:349-352
  • source/LPD133/ULPD133.dfm:339-342
  • source/LPD128/ULPD128.dfm:284-287, 474-477, 761-764
GatilhoResultado
Registro é orçamento (TP_PEDIDO = 'O') e DS_MSGORCAMENTO preenchido, observação vaziaImprime exclusivamente a mensagem configurada (com espaço à esquerda)
Registro é orçamento com observação "Validade 15 dias" e mensagem "Obrigado pela preferência"Imprime: Validade 15 dias Obrigado pela preferência
Registro é orçamento, campo vazio/NULLNada é concatenado — só a observação do orçamento
Registro é pedido (TP_PEDIDO = 'P')DS_MSGORCAMENTO é ignorado — usa DS_MSGPEDIDO

Simulação passo a passo​

  1. Acesse MFA001 → aba Mensagens → grupo Mensagem Orçamento
  2. Digite no campo memDS_MSGORCAMENTO: Orçamento válido por 15 dias. Sujeito a alteração sem aviso prévio.
  3. Salve os parâmetros (F6)
  4. Emita um orçamento (TP_PEDIDO = 'O') em qualquer tela de orçamento; deixe a observação em branco
  5. Imprima o orçamento via LPD048 (ou LPD128/LPD133)
  6. Na seção de observações do relatório aparecerá: Orçamento válido por 15 dias. Sujeito a alteração sem aviso prévio. (com espaço à esquerda introduzido pelo COALESCE(' '||...))
  7. Converta o mesmo orçamento em pedido (TP_PEDIDO passa a 'P') e reimprima → a mensagem desaparece, sendo substituída por DS_MSGPEDIDO

Resultado esperado: A mensagem funciona como rodapé fixo apenas de orçamentos. Ao converter para pedido, a mensagem de pedido toma seu lugar automaticamente.


2. Impressão dedicada de Orçamento (LOR026, LPD042, LPD044, LPD119)​

Nestes layouts o campo é trazido como coluna separada (sem concatenar com a observação) e o design do relatório decide onde imprimir — tipicamente em uma banda de rodapé com TppDBMemo/campo específico.

Referências reais:

  • source/LOR026/ULOR026.dfm:303 — PF.DS_MSGORCAMENTO (alias direto da tabela PARMFATUR PF) em orçamento isolado (ORCAMENTOVENDA)
  • source/LPD042/ULPD042.dfm:309, 452 — PARM.DS_MSGORCAMENTO como coluna
  • source/LPD042/ULPD048.dfm:1898-1906, 2348-2349, 2683-2685, 2413 — TppDBMemo memoDS_MSGORCAMENTO com DataField = 'DS_MSGORCAMENTO' e TField PedidoDS_MSGORCAMENTO: TStringField (Size = 240)
  • source/LPD044/ULPD044.dfm:334 — PARM.DS_MSGORCAMENTO ao final do SELECT do orçamento
  • source/LPD119/ULPD119.dfm:351 — PARM.DS_MSGORCAMENTO como coluna
GatilhoResultado
Imprimir orçamento em layout LPD042 com mensagem preenchidaTppDBMemo memoDS_MSGORCAMENTO exibe o texto na banda dedicada do relatório
Imprimir orçamento em layout LOR026O texto aparece no bloco de mensagens/rodapé do orçamento
Mensagem vazia/NULLA banda/componente fica em branco — sem erro

3. Acerto de Custo (CPD009) — replicação sem consumo​

A tela CPD009 (Acerto de Custo de Produtos Acabados) faz operações de SELECT/INSERT/UPDATE em PARMFATUR contendo DS_MSGORCAMENTO entre os demais campos, mas não consome o conteúdo do texto — apenas mantém o registro íntegro durante operações de acerto/replicação.

Referências: source/CPD009/UdmCPD009.dfm:294, 357, 437, 560


4. Exportação de parâmetros (FER002)​

A ferramenta FER002 exclui explicitamente DS_MSGORCAMENTO (junto de DS_MENSAGEM, DS_MSGPEDIDO, DS_MSGCONTRATO, DS_LOGOTIPO e códigos de layouts) ao copiar parâmetros entre bases. O filtro aparece em 8 pontos do código (linhas 184, 248, 357, 422, 511, 655, 787, 838 de source/FER002/UFER002.pas).

GatilhoResultado
Exportar parâmetros de filial A para filial B via FER002O campo NÃO é replicado
MotivoMensagens de documento e branding são específicos de cada empresa/filial

Consequência operacional: ao configurar uma nova empresa/filial, o campo deve ser preenchido manualmente em MFA001.


Regras de formatação​

RegraDetalhe
Tamanho máximoVARCHAR(240) (domínio Firebird DOM_VARCHAR240) e MaxLength = 240 no TDBMemo de MFA001
Quebras de linhaO componente é TDBMemo → aceita Enter durante a digitação. Nos layouts com concatenação `' '
Espaço líderO padrão SQL `COALESCE(' '
Campo vazio/NULLTratado via COALESCE — não gera erro, apenas "some" da impressão
Macros/placeholdersNão há substituição de macros. O texto é literal ($DATA$, $EMPRESA$ seriam impressos como estão)
AcentuaçãoPreservada (VARCHAR segue charset do banco). Diferente de DS_MSGPEDIDO, nenhum consumidor conhecido aplica CollateBr sobre este campo — o uso é exclusivamente em layouts gráficos ReportBuilder
Seletividade por tipoEm LPD048/LPD128/LPD133 a mensagem só aparece quando PEDIDO.TP_PEDIDO = 'O'; em LOR026/LPD042/LPD044/LPD119 o filtro já é garantido pelo contexto (tela dedicada a orçamento)

Interação com outros parâmetros (DS_MENSAGEM, DS_MSGPEDIDO, DS_MSGCONTRATO)​

O parâmetro DS_MSGORCAMENTO faz parte da família de textos padrão por tipo de documento configurada na aba Mensagens do MFA001. Cada parâmetro atende um tipo distinto — não há vazamento entre documentos:

ParâmetroGrupo na abaDocumento alvoProcedure dedicada?
DS_MENSAGEMMensagem Nota FiscalNota Fiscal (NF-e, saída, entrada)Sim — RETORNA_OBSNOTA
DS_MSGPEDIDOMensagem PedidoPedido (TP_PEDIDO = 'P')Não (consumo direto no SQL dos layouts)
DS_MSGORCAMENTOMensagem OrçamentoOrçamento (TP_PEDIDO = 'O', ORCAMENTOVENDA)Não (consumo direto no SQL dos layouts)
DS_MSGCONTRATOMensagem ContratoContratoNão

Relação com DS_MSGPEDIDO em layouts unificados​

Nos layouts LPD048, LPD128 e LPD133 (que atendem pedidos e orçamentos na mesma tabela PEDIDO), os dois parâmetros coexistem no mesmo SELECT dentro de um CASE:

  • Se TP_PEDIDO = 'P' → usa DS_MSGPEDIDO
  • Se TP_PEDIDO = 'O' → usa DS_MSGORCAMENTO
  • Apenas um dos dois entra na DS_OBSERVACAO impressa — nunca os dois juntos

Diferença em relação a DS_MENSAGEM​

CaracterísticaDS_MENSAGEMDS_MSGORCAMENTO
Stored procedure dedicadaRETORNA_OBSNOTA + RETORNA_OBSNOTA_ATRIBUICOESNenhuma — só SQL embutido em .dfm
Ponto final automáticoSim (a procedure adiciona . )Não — o layout imprime literal, com ' ' como separador
Vai para XML da NF-eSim (infCpl)Não — é apenas visual no relatório gráfico
Depende de TP_OBSNOTANão (sempre primeiro bloco)Não aplicável — é escolhido via TP_PEDIDO

Exportação conjunta (FER002)​

Os quatro campos (DS_MENSAGEM, DS_MSGPEDIDO, DS_MSGORCAMENTO, DS_MSGCONTRATO) mais DS_LOGOTIPO são tratados como família de branding/rodapé e todos são ignorados pela FER002 ao exportar parâmetros entre bases.


Referências no Código Fonte​

Tela de configuração (MFA001)​

  • source/MFA001/UMFA001.dfm:11852-11883 — grpOrcamento: TGroupBox (Caption "Mensagem Orçamento") + memDS_MSGORCAMENTO: TDBMemo (DataField = 'DS_MSGORCAMENTO', MaxLength = 240)
  • source/MFA001/UMFA001.pas:62-63 — declarações grpOrcamento: TGroupBox / memDS_MSGORCAMENTO: TDBMemo
  • source/MFA001/UdmMFA001.pas:95 — tabPARMFATURDS_MSGORCAMENTO: TStringField
  • source/MFA001/UdmMFA001.pas:434-523 — tabPARMFATURAfterInsert não define valor padrão para este campo
  • source/MFA001/UdmMFA001.dfm:106 — SELECT ... PARMFATUR.DS_MSGORCAMENTO
  • source/MFA001/UdmMFA001.dfm:932-935 — TField persistente tabPARMFATURDS_MSGORCAMENTO (Size = 240)
  • source/MFA001/UdmMFA001.dfm:2360 — SELECT de reload
  • source/MFA001/UdmMFA001.dfm:2511 — cláusula INSERT ... VALUES (:DS_MSGORCAMENTO, ...)
  • source/MFA001/UdmMFA001.dfm:2691 — UPDATE PARMFATUR SET DS_MSGORCAMENTO = :DS_MSGORCAMENTO
  • source/MFA001/UdmMFA001.dfm:2986 — SELECT auxiliar

Consumidores — concatenação em DS_OBSERVACAO (padrão CASE WHEN TP_PEDIDO = 'O')​

  • source/LPD048/ULPD048.dfm:352
  • source/LPD128/ULPD128.dfm:287, 477, 764 (três ocorrências — a tela tem múltiplos datasets)
  • source/LPD133/ULPD133.dfm:342

Consumidores — coluna dedicada no SELECT (decisão no layout ReportBuilder)​

  • source/LOR026/ULOR026.dfm:303 — PF.DS_MSGORCAMENTO (orçamento isolado — ORCAMENTOVENDA)
  • source/LPD042/ULPD042.dfm:309, 452
  • source/LPD042/ULPD048.dfm:1898-1906, 2348-2349, 2413, 2683-2685 — componente TppDBMemo memoDS_MSGORCAMENTO + TField PedidoDS_MSGORCAMENTO (Size = 240)
  • source/LPD044/ULPD044.dfm:334
  • source/LPD119/ULPD119.dfm:351

Replicação PARMFATUR (não-consumidores)​

  • source/CPD009/UdmCPD009.dfm:294, 357, 437, 560 — SELECT/INSERT/UPDATE incluindo DS_MSGORCAMENTO

Exportação excluída (FER002)​

  • source/FER002/UFER002.pas:184, 248, 357, 422, 511, 655, 787, 838 — oito verificações = 'DS_MSGORCAMENTO' para pular o campo na exportação entre bases

Schema​

  • docs/schema/tables/PARMFATUR.sql:60 — DS_MSGORCAMENTO DOM_VARCHAR240