Pular para o conteúdo principal

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_IMPRIMEMARGORCAMENTO Valor 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óduloCódigoDescrição
ParâmetrosMFA001Cadastro do parâmetro (ComboBox)
Pedido de VendaMPD002Controla a visibilidade do botão btnCusto ("Margem Orçamento")

Campos envolvidos​

CampoTabelaDescrição
ST_IMPRIMEMARGORCAMENTOPARMFATURParâmetro geral controlando quem vê o botão
ST_MARGEMORCPARMUSUARIOPermissão individual do usuário (S/N) para ver margem
CD_AUTORIZADOR / ST_ATIVOAUTORIZADORCadastro de autorizadores ativos (quando opção = A)

Opções disponíveis​

S - Todos Usuários​

O que fazDetalhe
Quem vê o botão?Todos os usuários que tiverem PARMUSUARIO.ST_MARGEMORC = 'S'
Critério adicionalDepende 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​

  1. Vá em MFA001 → Parâmetros → Faturamento → Opção 1 → ST_IMPRIMEMARGORCAMENTO = "Todos Usuários"
  2. Salve os parâmetros (F6)
  3. No cadastro de Parâmetros por Usuário (TFA005), marque ST_MARGEMORC = 'S' para o usuário X
  4. Logue com o usuário X e abra o Pedido de Venda (MPD002)
  5. Botão "Margem Orçamento" aparece → clicar gera o relatório Custo X Venda do pedido
  6. Logue com um usuário Y que tenha ST_MARGEMORC = 'N'
  7. 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 fazDetalhe
Quem vê o botão?Apenas usuários com ST_MARGEMORC = 'S' E cadastrados em AUTORIZADOR com ST_ATIVO = 'S'
Dupla checagem1º valida permissão individual, 2º valida cadastro como autorizador ativo
CadastroCadastro de Autorizadores (TFA014 ou similar)

Simulação passo a passo​

  1. MFA001 → ST_IMPRIMEMARGORCAMENTO = "Apenas Autorizadores"
  2. Salve os parâmetros (F6)
  3. Cadastre o usuário X em AUTORIZADOR com ST_ATIVO = 'S' e marque PARMUSUARIO.ST_MARGEMORC = 'S'
  4. Cadastre o usuário Y apenas com ST_MARGEMORC = 'S' (não é autorizador)
  5. Logue com usuário X e abra Pedido de Venda → Botão "Margem Orçamento" aparece
  6. Logue com usuário Y e abra Pedido de Venda → Botão "Margem Orçamento" fica oculto (não é autorizador ativo)
  7. 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 fazDetalhe
Quem vê o botão?Ninguém
ComportamentobtnCusto.Visible := False sempre, independentemente da permissão do usuário
ImpactoDesabilita globalmente a impressão da margem em orçamento na empresa

Simulação passo a passo​

  1. MFA001 → ST_IMPRIMEMARGORCAMENTO = "Não"
  2. Salve os parâmetros (F6)
  3. Logue com qualquer usuário (inclusive administrador/autorizador)
  4. Abra um Pedido de Venda (MPD002)
  5. Botão "Margem Orçamento" não aparece na barra de botões do pedido
  6. 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çãoDescriçãoValida ST_MARGEMORC?Valida AUTORIZADOR?Botão visível?
STodos UsuáriosSimNãoConforme ST_MARGEMORC do usuário
AApenas AutorizadoresSimSim (ativo)Só para autorizadores ativos com permissão
NNão——Nunca

Referências no Código Fonte​

ComboBox da tela MFA001​

  • Arquivo: source/MFA001/UMFA001.dfm (linhas 8790-8817)

    object cmbST_IMPRIMEMARGORCAMENTO: TwwDBComboBox
    DataField = 'ST_IMPRIMEMARGORCAMENTO'
    DataSource = dmMFA001.dsPARMFATUR
    Items.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) - TField tabPARMFATURST_IMPRIMEMARGORCAMENTO

  • Arquivo: source/MFA001/UdmMFA001.dfm (linhas 2399 e 2788) - SELECT e UPDATE do PARMFATUR

  • Arquivo: source/MFA001/UdmMFA001.pas (linha 183) - declaração do TField

  • Arquivo: source/MFA001/UdmMFA001.pas (linha 515) - valor padrão em AfterInsert:

    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') then
    frmMPD002.btnCusto.Visible := False
    else
    if (parmfatur.values['ST_IMPRIMEMARGORCAMENTO'] = 'S') then
    begin
    if (Resultado[0] = 'S') then
    frmMPD002.btnCusto.Visible := True
    else
    frmMPD002.btnCusto.Visible := False;
    end
    else
    if (parmfatur.values['ST_IMPRIMEMARGORCAMENTO'] = 'A') then
    begin
    if (Resultado[0] = 'S') then
    begin
    Consulta :=
    '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] <> '') then
    frmMPD002.btnCusto.Visible := True
    else
    frmMPD002.btnCusto.Visible := False;
    end
    else
    frmMPD002.btnCusto.Visible := False;
    end;
  • Arquivo: source/MPD002/UdmMPD002.pas (linha 5747) - carregamento do parâmetro via SELECT em PARMFATUR

  • Arquivo: source/MPD002/UMPD002.pas (linhas 232, 348, 5348) - declaração e handler do btnCusto / btnCustoClick

  • Arquivo: source/MPD002/UMPD002.dfm (linhas 4764-4784) - definição visual do botão:

    object btnCusto: TBitBtn
    Hint = 'Relatório de Custo X Venda'
    Caption = 'Margem Orçamento'
    ImageIndex = 6
    ImageName = 'printer'
    OnClick = btnCustoClick
    end

Observações​

  • Não há referências do parâmetro ST_IMPRIMEMARGORCAMENTO em stored procedures (Scripts/). O comportamento é totalmente controlado pela camada Delphi.
  • O botão btnCustoClick (UMPD002.pas linha 5348) executa uma consulta complexa em ITEMPEDIDO/PEDIDO calculando PC_MARGEM, PC_MARGEMCOMPRA, PC_MARGEMVENDA, VL_LUCRO, PC_LUCRO, PC_MARGEMMARKUP, PC_MARGEMLIQUIDA e imprime via relatório.
  • O parâmetro só tem efeito no MPD002; o recurso de "Margem Orçamento" é exclusivo dessa tela.