Parâmetro de Impressão de Margem em Orçamento
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Faturamento → Opção 1 Tabela:
PARMFATUR.ST_IMPRIMEMARGORCAMENTOValor padrão:S(Todos Usuários)
Controla quais usuários podem visualizar o botão "Margem Orçamento" no Pedido de Venda/Orçamento (MPD002). Esse botão imprime o relatório Custo X Venda, exibindo custo unitário, preço de venda, margem em valor e percentual, lucro e impostos por item.
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Parâmetros | MFA001 | Cadastro do parâmetro (ComboBox) |
| Pedido de Venda | MPD002 | Controla a visibilidade do botão btnCusto ("Margem Orçamento") |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
ST_IMPRIMEMARGORCAMENTO | PARMFATUR | Parâmetro geral controlando quem vê o botão |
ST_MARGEMORC | PARMUSUARIO | Permissão individual do usuário (S/N) para ver margem |
CD_AUTORIZADOR / ST_ATIVO | AUTORIZADOR | Cadastro de autorizadores ativos (quando opção = A) |
Opções disponíveis
S - Todos Usuários
| O que faz | Detalhe |
|---|---|
| Quem vê o botão? | Todos os usuários que tiverem PARMUSUARIO.ST_MARGEMORC = 'S' |
| Critério adicional | Depende da permissão individual do usuário em TFA005 (Parâmetros por Usuário) |
Se ST_MARGEMORC = 'N' | Botão fica oculto mesmo nesta opção |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Faturamento → Opção 1 → ST_IMPRIMEMARGORCAMENTO = "Todos Usuários"
- Salve os parâmetros (F6)
- No cadastro de Parâmetros por Usuário (TFA005), marque
ST_MARGEMORC = 'S'para o usuário X - Logue com o usuário X e abra o Pedido de Venda (MPD002)
- Botão "Margem Orçamento" aparece → clicar gera o relatório Custo X Venda do pedido
- Logue com um usuário Y que tenha
ST_MARGEMORC = 'N' - Botão "Margem Orçamento" fica oculto para Y
Resultado esperado: Qualquer usuário com ST_MARGEMORC = 'S' no cadastro individual visualiza o botão e consegue imprimir a margem do orçamento.
A - Apenas Autorizadores
| O que faz | Detalhe |
|---|---|
| Quem vê o botão? | Apenas usuários com ST_MARGEMORC = 'S' E cadastrados em AUTORIZADOR com ST_ATIVO = 'S' |
| Dupla checagem | 1º valida permissão individual, 2º valida cadastro como autorizador ativo |
| Cadastro | Cadastro de Autorizadores (TFA014 ou similar) |
Simulação passo a passo
- MFA001 → ST_IMPRIMEMARGORCAMENTO = "Apenas Autorizadores"
- Salve os parâmetros (F6)
- Cadastre o usuário X em
AUTORIZADORcomST_ATIVO = 'S'e marquePARMUSUARIO.ST_MARGEMORC = 'S' - Cadastre o usuário Y apenas com
ST_MARGEMORC = 'S'(não é autorizador) - Logue com usuário X e abra Pedido de Venda → Botão "Margem Orçamento" aparece
- Logue com usuário Y e abra Pedido de Venda → Botão "Margem Orçamento" fica oculto (não é autorizador ativo)
- Logue com usuário Z que não tem
ST_MARGEMORC = 'S'→ Botão fica oculto
Resultado esperado: Apenas autorizadores ativos e com permissão individual de margem podem imprimir o relatório Custo X Venda do orçamento.
N - Não
| O que faz | Detalhe |
|---|---|
| Quem vê o botão? | Ninguém |
| Comportamento | btnCusto.Visible := False sempre, independentemente da permissão do usuário |
| Impacto | Desabilita globalmente a impressão da margem em orçamento na empresa |
Simulação passo a passo
- MFA001 → ST_IMPRIMEMARGORCAMENTO = "Não"
- Salve os parâmetros (F6)
- Logue com qualquer usuário (inclusive administrador/autorizador)
- Abra um Pedido de Venda (MPD002)
- Botão "Margem Orçamento" não aparece na barra de botões do pedido
- Mesmo que
PARMUSUARIO.ST_MARGEMORC = 'S', o botão permanece oculto
Resultado esperado: O recurso de impressão de margem em orçamento fica totalmente desabilitado para toda a empresa.
Tabela Comparativa Resumida
| Opção | Descrição | Valida ST_MARGEMORC? | Valida AUTORIZADOR? | Botão visível? |
|---|---|---|---|---|
| S | Todos Usuários | Sim | Não | Conforme ST_MARGEMORC do usuário |
| A | Apenas Autorizadores | Sim | Sim (ativo) | Só para autorizadores ativos com permissão |
| N | Não | — | — | Nunca |
Referências no Código Fonte
ComboBox da tela MFA001
-
Arquivo:
source/MFA001/UMFA001.dfm(linhas 8790-8817)object cmbST_IMPRIMEMARGORCAMENTO: TwwDBComboBoxDataField = 'ST_IMPRIMEMARGORCAMENTO'DataSource = dmMFA001.dsPARMFATURItems.Strings = ('Todos Usuários'#9'S''Apenas Autorizadores'#9'A''Não'#9'N')end -
Arquivo:
source/MFA001/UMFA001.pas(linha 319) - declaração do ComboBox -
Arquivo:
source/MFA001/UdmMFA001.dfm(linhas 1395-1400) - TFieldtabPARMFATURST_IMPRIMEMARGORCAMENTO -
Arquivo:
source/MFA001/UdmMFA001.dfm(linhas 2399 e 2788) - SELECT e UPDATE doPARMFATUR -
Arquivo:
source/MFA001/UdmMFA001.pas(linha 183) - declaração do TField -
Arquivo:
source/MFA001/UdmMFA001.pas(linha 515) - valor padrão emAfterInsert:tabPARMFATURST_IMPRIMEMARGORCAMENTO.AsString := 'S';
Uso no Pedido de Venda (MPD002)
-
Arquivo:
source/MPD002/UdmMPD002.pas(linhas 664-700) - controla visibilidade do botão:Consulta :='SELECT P.ST_MARGEMORC ' + #10 +'FROM PARMUSUARIO P ' + #10 +'WHERE P.CD_EMPRESA = ' + IntToStr(sessao.empresa.cd_empresa) + #10 +'AND P.CD_USUARIO = ' + QuotedStr(sessao.usuario.cd_usuario);Resultado := ExecutaConsulta(dmMPD002.transaction, Consulta);if (parmfatur.values['ST_IMPRIMEMARGORCAMENTO'] = 'N') thenfrmMPD002.btnCusto.Visible := Falseelseif (parmfatur.values['ST_IMPRIMEMARGORCAMENTO'] = 'S') thenbeginif (Resultado[0] = 'S') thenfrmMPD002.btnCusto.Visible := TrueelsefrmMPD002.btnCusto.Visible := False;endelseif (parmfatur.values['ST_IMPRIMEMARGORCAMENTO'] = 'A') thenbeginif (Resultado[0] = 'S') thenbeginConsulta :='SELECT A.CD_AUTORIZADOR, A.ST_ATIVO ' + #10 +'FROM AUTORIZADOR A ' + #10 +'WHERE A.CD_AUTORIZADOR = ' + Nulo(sessao.usuario.cd_usuario, 'S') + #10 +' AND A.ST_ATIVO = ''S''';Resultado := ExecutaConsulta(dmMPD002.transaction, Consulta);if (Resultado[0] <> '') thenfrmMPD002.btnCusto.Visible := TrueelsefrmMPD002.btnCusto.Visible := False;endelsefrmMPD002.btnCusto.Visible := False;end; -
Arquivo:
source/MPD002/UdmMPD002.pas(linha 5747) - carregamento do parâmetro via SELECT emPARMFATUR -
Arquivo:
source/MPD002/UMPD002.pas(linhas 232, 348, 5348) - declaração e handler dobtnCusto/btnCustoClick -
Arquivo:
source/MPD002/UMPD002.dfm(linhas 4764-4784) - definição visual do botão:object btnCusto: TBitBtnHint = 'Relatório de Custo X Venda'Caption = 'Margem Orçamento'ImageIndex = 6ImageName = 'printer'OnClick = btnCustoClickend
Observações
- Não há referências do parâmetro
ST_IMPRIMEMARGORCAMENTOem stored procedures (Scripts/). O comportamento é totalmente controlado pela camada Delphi. - O botão
btnCustoClick(UMPD002.pas linha 5348) executa uma consulta complexa emITEMPEDIDO/PEDIDOcalculandoPC_MARGEM,PC_MARGEMCOMPRA,PC_MARGEMVENDA,VL_LUCRO,PC_LUCRO,PC_MARGEMMARKUP,PC_MARGEMLIQUIDAe imprime via relatório. - O parâmetro só tem efeito no MPD002; o recurso de "Margem Orçamento" é exclusivo dessa tela.