Pular para o conteúdo principal

PC_DESCMAXLIBERACAO — Percentual Máximo de Desconto para Liberação

Tela de configuração: ADM012 — Parâmetros por Usuário
Tabela: PARMUSUARIO.PC_DESCMAXLIBERACAO
Tipo: NUMERIC(15,2) (percentual)
Valor padrão: NULL

Tela de Configuração​

O campo aparece na tela ADM012 — Parâmetros por Usuário.

Regras de Validação​

RegraMensagem de Erro
Valor deve ser >= 0"O percentual de desconto deve ser maior que 0,00% !"
Valor deve ser <= 100"O percentual de desconto deve ser menor que 100,00% !"

Comportamento por Contexto​

O campo PC_DESCMAXLIBERACAO funciona de acordo com o parâmetro TP_MODELOBLOQUEIO (configurado em MFA001 — Parâmetros de Faturamento, tela de parâmetros gerais).

TP_MODELOBLOQUEIO = 'N' — Modelo Individual Liberado​

O que fazDetalhe
Campo na ADM012Editável (Enabled = True, cor clWindow)
Uso no sistemaAtivo — usado por VERIFICA_BLOQUEIO para validar descontos de itens de pedido
Trigger TRGPARMFATUR_BUMantém o valor; limpa campos alternativos (VL_LIMITECREDACUMULADO, NR_DIASATRASO, PC_MAXDESCONTO)

Simulação passo a passo​

  1. Acesse MFA001 — Parâmetros de Faturamento e defina TP_MODELOBLOQUEIO = 'N'.
  2. Abra a tela ADM012 — Parâmetros por Usuário e selecione um usuário.
  3. Digite no campo PC_DESCMAXLIBERACAO o valor 10,00 (10%).
  4. Salve o registro.
  5. Abra um pedido de venda e aplique desconto de 8% em um item.
  6. Salve o pedido — o sistema não bloqueia, pois 8% <= 10%.
  7. Altere o desconto do item para 15% e tente salvar.
  8. O sistema bloqueia e exibe mensagem de alçada excedida, pois 15% > 10%.

Resultado esperado: Descontos até o percentual configurado são aceitos automaticamente. Descontos acima exigem liberação de usuário com perfil autorizador (ST_AUTORIZADOR = 'S', configurado em ADM012 — Parâmetros por Usuário, campo na mesma tela).

Exceção / Importante: Ao definir TP_MODELOBLOQUEIO = 'N' em MFA001, a trigger TRGPARMFATUR_BU limpa automaticamente os campos VL_LIMITECREDACUMULADO, NR_DIASATRASO e PC_MAXDESCONTO de todos os registros de PARMUSUARIO da empresa. Esses parâmetros deixam de ser usados para bloqueio.

TP_MODELOBLOQUEIO <> 'N' — Modelo Genérico Ativo​

O que fazDetalhe
Campo na ADM012Bloqueado para edição (Enabled = False, cor $00EEEEEE)
Uso no sistemaInativo — VERIFICA_BLOQUEIO não consulta o campo nesta condição
Trigger TRGPARMFATUR_BULimpa o valor (PC_DESCMAXLIBERACAO = NULL) ao alterar TP_MODELOBLOQUEIO

Simulação passo a passo​

  1. Acesse MFA001 — Parâmetros de Faturamento e defina TP_MODELOBLOQUEIO como 'P' (exemplo).
  2. Abra a tela ADM012 — Parâmetros por Usuário.
  3. Observe que o campo PC_DESCMAXLIBERACAO está desabilitado (cinza, não editável).
  4. Tente digitar um valor — o campo não aceita edição.

Resultado esperado: O campo fica bloqueado na UI e zerado no banco pelo trigger. O controle de desconto passa a ser feito pelos campos alternativos (VL_LIMITECREDACUMULADO, NR_DIASATRASO, PC_MAXDESCONTO).

Exceção / Importante: Ao alterar TP_MODELOBLOQUEIO de 'N' para outro valor, a trigger TRGPARMFATUR_BU limpa automaticamente PC_DESCMAXLIBERACAO de todos os usuários da empresa. Valores previamente configurados são perdidos.

Procedures Impactadas​

Rotinas Delphi — Referência direta​

RotinaArquivoEvidência
tabPARMUSUARIOPC_DESCMAXLIBERACAOValidatesource/ADM012/UdmADM012.pas:565Validação de faixa 0–100%
verificaComponentesLiberacaoVendasource/ADM012/UdmADM012.pas:758Habilita/bloqueia campo conforme TP_MODELOBLOQUEIO
TfrmADM013.btnDuplicaUsuarioClicksource/ADM013/UADM013.pas:474Copia o campo ao duplicar usuário
TfrmMPD003.btnSalvarClicksource/MPD003/UMPD003.pas:487Lê o campo na tela de orçamento

Scripts SQL — Referência direta ao campo​

Procedure/ViewArquivoUso
TRGPARMFATUR_BUScripts/TRGPARMFATUR_BU.sql:17Limpa campo quando TP_MODELOBLOQUEIO <> 'N'
VALIDA_LIBERACAOUSUARIOScripts/VALIDA_LIBERACAOUSUARIO.sql:22,43Declara variável e lê PU.PC_MAXDESCONTO (note: INTO :V_PC_DESCMAXLIBERACAO) para comparar desconto calculado
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sql:268Seleção condicional (V_TP_MODELOBLOQUEIO = 'N') para obter P.PC_DESCMAXLIBERACAO
VIEW_DOCUMENTOSBLOQUEADOSScripts/VIEW_DOCUMENTOSBLOQUEADOS.sql:366Seleciona PU.PC_DESCMAXLIBERACAO para exibição na view de documentos bloqueados

Candidatas por uso da tabela PARMUSUARIO​

Estas procedures fazem SELECT em PARMUSUARIO mas não referenciam o campo PC_DESCMAXLIBERACAO literalmente. Não há evidência de impacto funcional direto:

Procedure/ViewArquivoEvidência
CANCELA_NOTAFISCALScripts/CANCELA_NOTAFISCAL.sql:251FROM PARMUSUARIO P
CONTROLE_CAIXAScripts/CONTROLE_CAIXA.sql:34from PARMUSUARIO
GERA_ETIQUETABALANCAScripts/GERA_ETIQUETABALANCA.sql:26FROM PARMUSUARIO PU
PERMISSAO_CAIXAScripts/PERMISSAO_CAIXA.sql:16from PARMUSUARIO
RETORNA_IMPRESSORAUSUARIOScripts/RETORNA_IMPRESSORAUSUARIO.sql:41from PARMUSUARIO
VALIDA_BLOQDESCMAXSUBGRUPOScripts/VALIDA_BLOQDESCMAXSUBGRUPO.sql:86FROM PARMUSUARIOSUBGRUPODESCONTO PU (tabela vinculada, usa ST_HABILITADESCMAXSUBGRUPO, não o campo deste doc)
VALIDA_CODIGOBARRAScripts/VALIDA_CODIGOBARRA.sql:68INNER JOIN PARMUSUARIO P
VALIDA_MODELOBLOQUEIODIASATRASOScripts/VALIDA_MODELOBLOQUEIODIASATRASO.sql:16Usa V_NR_DIASATRASOPARMUSUARIO
VALIDA_MODELOBLOQUEIOPCDESCMAXScripts/VALIDA_MODELOBLOQUEIOPCDESCMAX.sql:16Usa V_PC_MAXDESCONTOPARMUSUARIO (campo PC_MAXDESCONTO)
VALIDA_MODELOBLOQUEIOVLLIMITEScripts/VALIDA_MODELOBLOQUEIOVLLIMITE.sql:18Usa V_VL_LIMITEACUMPARMUSUARIO

Telas Impactadas​

TelaDescriçãoImpacto
ADM012Parâmetros por UsuárioEdição direta do campo
ADM013—Cópia do campo ao duplicar usuário
MPD003OrçamentosLeitura do parâmetro para validação
MFA001Parâmetros de FaturamentoControle do comportamento via TP_MODELOBLOQUEIO

Campos Envolvidos​

CampoTabelaTipoRelação
PC_DESCMAXLIBERACAOPARMUSUARIONUMERIC(15,2)Campo principal
PC_MAXDESCONTOPARMUSUARIONUMERIC(15,2)Substituto quando TP_MODELOBLOQUEIO <> 'N'
VL_LIMITECREDACUMULADOPARMUSUARIONUMERIC(15,2)Limpa junto quando TP_MODELOBLOQUEIO = 'N'
NR_DIASATRASOPARMUSUARIOINTEGERLimpo junto quando TP_MODELOBLOQUEIO = 'N'
TP_MODELOBLOQUEIOPARMFATURCHAR(1)Controla se campo é editável/ativo (configurado em MFA001)
ST_AUTORIZADORPARMUSUARIOCHAR(1)Define se usuário pode liberar bloqueios (configurado em ADM012, campo na mesma tela)
ST_HABILITADESCMAXSUBGRUPOPARMUSUARIOCHAR(1)Habilita bloqueio por subgrupo (configurado em ADM012)

Resumo Funcional​

O parâmetro PC_DESCMAXLIBERACAO define o percentual máximo de desconto que um usuário pode aplicar em itens de pedidos e demais documentos comerciais sem precisar de aprovação de um autorizador.

  • Quando ativo (TP_MODELOBLOQUEIO = 'N'), o campo é editável na ADM012, aceita valores de 0% a 100% e é consultado pelas procedures VERIFICA_BLOQUEIO e VALIDA_LIBERACAOUSUARIO no momento do salvamento.
  • Quando o modelo genérico está ativo (TP_MODELOBLOQUEIO <> 'N'), o controle de desconto é feito por outro mecanismo (campos alternativos) e PC_DESCMAXLIBERACAO fica bloqueado e zerado.