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_MSGORCAMENTOTipo: Texto livre (DOM_VARCHAR240- até 240 caracteres) Componente (UMFA001.dfm):TDBMemo memDS_MSGORCAMENTO(dentro degrpOrcamento/ caption "Mensagem Orçamento",MaxLength = 240) Valor padrão: vazio/NULL — não há atribuição emtabPARMFATURAfterInsertdeUdmMFA001.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ódulo | Código | Papel |
|---|---|---|
| Parâmetros de Faturamento | MFA001 | Tela de cadastro/edição do texto (produtora) |
| Orçamento — Layout gráfico | LOR026 | Consumidor: SELECT direto PF.DS_MSGORCAMENTO (orçamento isolado) |
| Pedido/Orçamento — Layout gráfico | LPD042 | Consumidor: SELECT PARM.DS_MSGORCAMENTO (ReportBuilder TppDBMemo memoDS_MSGORCAMENTO) |
| Pedido/Orçamento — Layout gráfico | LPD044 | Consumidor: SELECT PARM.DS_MSGORCAMENTO |
| Pedido/Orçamento unificado | LPD048 | Consumidor: concatena em DS_OBSERVACAO via CASE WHEN N.TP_PEDIDO = 'O' |
| Pedido/Orçamento unificado | LPD119 | Consumidor: SELECT PARM.DS_MSGORCAMENTO |
| Pedido/Orçamento unificado | LPD128 | Consumidor: concatena em DS_OBSERVACAO via CASE WHEN N.TP_PEDIDO = 'O' (3 ocorrências) |
| Pedido/Orçamento unificado | LPD133 | Consumidor: concatena em DS_OBSERVACAO via CASE WHEN N.TP_PEDIDO = 'O' |
| Acerto de Custo Prod. Acabados | CPD009 | Replica o valor de PARMFATUR em operações de acerto (não é consumidor do texto) |
| Ferramenta de Exportação | FER002 | Exclui explicitamente o campo ao exportar parâmetros entre bases |
Observação: as telas
LPD048,LPD128eLPD133decidem viaCASE WHEN N.TP_PEDIDO = 'O'se usamDS_MSGORCAMENTO(quando é orçamento) ouDS_MSGPEDIDO(quando é pedido).LPD042/LPD044/LPD119trazem o campo como coluna separada e deixam a decisão de impressão para o layout de banda do ReportBuilder.
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.DS_MSGORCAMENTO | Este parâmetro. Texto livre (até 240 caracteres) impresso no rodapé/observação dos orçamentos |
PARMFATUR.DS_MSGPEDIDO | Mensagem irmã — usada em pedidos (N.TP_PEDIDO = 'P') |
PARMFATUR.DS_MSGCONTRATO | Mensagem irmã — usada em contratos |
PARMFATUR.DS_MENSAGEM | Mensagem irmã — usada em Nota Fiscal |
ORCAMENTOVENDA.DS_OBSERVACAO | Observação específica do orçamento (LOR026) |
PEDIDO.DS_OBSERVACAO | Observação do registro quando o pedido é marcado como orçamento (TP_PEDIDO = 'O') |
PEDIDO.TP_PEDIDO | Discriminador '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-352source/LPD133/ULPD133.dfm:339-342source/LPD128/ULPD128.dfm:284-287,474-477,761-764
| Gatilho | Resultado |
|---|---|
Registro é orçamento (TP_PEDIDO = 'O') e DS_MSGORCAMENTO preenchido, observação vazia | Imprime 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/NULL | Nada é concatenado — só a observação do orçamento |
Registro é pedido (TP_PEDIDO = 'P') | DS_MSGORCAMENTO é ignorado — usa DS_MSGPEDIDO |
Simulação passo a passo
- Acesse MFA001 → aba Mensagens → grupo Mensagem Orçamento
- Digite no campo
memDS_MSGORCAMENTO:Orçamento válido por 15 dias. Sujeito a alteração sem aviso prévio. - Salve os parâmetros (F6)
- Emita um orçamento (
TP_PEDIDO = 'O') em qualquer tela de orçamento; deixe a observação em branco - Imprima o orçamento via LPD048 (ou LPD128/LPD133)
- 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 peloCOALESCE(' '||...)) - Converta o mesmo orçamento em pedido (
TP_PEDIDOpassa a'P') e reimprima → a mensagem desaparece, sendo substituída porDS_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 tabelaPARMFATUR PF) em orçamento isolado (ORCAMENTOVENDA)source/LPD042/ULPD042.dfm:309,452—PARM.DS_MSGORCAMENTOcomo colunasource/LPD042/ULPD048.dfm:1898-1906, 2348-2349, 2683-2685, 2413—TppDBMemo memoDS_MSGORCAMENTOcomDataField = 'DS_MSGORCAMENTO'e TFieldPedidoDS_MSGORCAMENTO: TStringField (Size = 240)source/LPD044/ULPD044.dfm:334—PARM.DS_MSGORCAMENTOao final do SELECT do orçamentosource/LPD119/ULPD119.dfm:351—PARM.DS_MSGORCAMENTOcomo coluna
| Gatilho | Resultado |
|---|---|
| Imprimir orçamento em layout LPD042 com mensagem preenchida | TppDBMemo memoDS_MSGORCAMENTO exibe o texto na banda dedicada do relatório |
| Imprimir orçamento em layout LOR026 | O texto aparece no bloco de mensagens/rodapé do orçamento |
| Mensagem vazia/NULL | A 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).
| Gatilho | Resultado |
|---|---|
| Exportar parâmetros de filial A para filial B via FER002 | O campo NÃO é replicado |
| Motivo | Mensagens 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
| Regra | Detalhe |
|---|---|
| Tamanho máximo | VARCHAR(240) (domínio Firebird DOM_VARCHAR240) e MaxLength = 240 no TDBMemo de MFA001 |
| Quebras de linha | O componente é TDBMemo → aceita Enter durante a digitação. Nos layouts com concatenação `' ' |
| Espaço líder | O padrão SQL `COALESCE(' ' |
| Campo vazio/NULL | Tratado via COALESCE — não gera erro, apenas "some" da impressão |
| Macros/placeholders | Não há substituição de macros. O texto é literal ($DATA$, $EMPRESA$ seriam impressos como estão) |
| Acentuação | Preservada (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 tipo | Em 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âmetro | Grupo na aba | Documento alvo | Procedure dedicada? |
|---|---|---|---|
DS_MENSAGEM | Mensagem Nota Fiscal | Nota Fiscal (NF-e, saída, entrada) | Sim — RETORNA_OBSNOTA |
DS_MSGPEDIDO | Mensagem Pedido | Pedido (TP_PEDIDO = 'P') | Não (consumo direto no SQL dos layouts) |
DS_MSGORCAMENTO | Mensagem Orçamento | Orçamento (TP_PEDIDO = 'O', ORCAMENTOVENDA) | Não (consumo direto no SQL dos layouts) |
DS_MSGCONTRATO | Mensagem Contrato | Contrato | Nã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'→ usaDS_MSGPEDIDO - Se
TP_PEDIDO = 'O'→ usaDS_MSGORCAMENTO - Apenas um dos dois entra na
DS_OBSERVACAOimpressa — nunca os dois juntos
Diferença em relação a DS_MENSAGEM
| Característica | DS_MENSAGEM | DS_MSGORCAMENTO |
|---|---|---|
| Stored procedure dedicada | RETORNA_OBSNOTA + RETORNA_OBSNOTA_ATRIBUICOES | Nenhuma — só SQL embutido em .dfm |
| Ponto final automático | Sim (a procedure adiciona . ) | Não — o layout imprime literal, com ' ' como separador |
| Vai para XML da NF-e | Sim (infCpl) | Não — é apenas visual no relatório gráfico |
Depende de TP_OBSNOTA | Nã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çõesgrpOrcamento: TGroupBox/memDS_MSGORCAMENTO: TDBMemosource/MFA001/UdmMFA001.pas:95—tabPARMFATURDS_MSGORCAMENTO: TStringFieldsource/MFA001/UdmMFA001.pas:434-523—tabPARMFATURAfterInsertnão define valor padrão para este camposource/MFA001/UdmMFA001.dfm:106—SELECT ... PARMFATUR.DS_MSGORCAMENTOsource/MFA001/UdmMFA001.dfm:932-935— TField persistentetabPARMFATURDS_MSGORCAMENTO(Size = 240)source/MFA001/UdmMFA001.dfm:2360— SELECT de reloadsource/MFA001/UdmMFA001.dfm:2511— cláusulaINSERT ... VALUES (:DS_MSGORCAMENTO, ...)source/MFA001/UdmMFA001.dfm:2691—UPDATE PARMFATUR SET DS_MSGORCAMENTO = :DS_MSGORCAMENTOsource/MFA001/UdmMFA001.dfm:2986— SELECT auxiliar
Consumidores — concatenação em DS_OBSERVACAO (padrão CASE WHEN TP_PEDIDO = 'O')
source/LPD048/ULPD048.dfm:352source/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, 452source/LPD042/ULPD048.dfm:1898-1906, 2348-2349, 2413, 2683-2685— componenteTppDBMemo memoDS_MSGORCAMENTO+TField PedidoDS_MSGORCAMENTO(Size = 240)source/LPD044/ULPD044.dfm:334source/LPD119/ULPD119.dfm:351
Replicação PARMFATUR (não-consumidores)
source/CPD009/UdmCPD009.dfm:294, 357, 437, 560— SELECT/INSERT/UPDATE incluindoDS_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