VL_LIMITECREDACUMULADO - Limite de Crédito Acumulado (Alçada do Usuário)
Tela de configuração: ADM012 - Parâmetros do Usuário Localização: Aba Lib. Venda (Alçada) — campo "Pesquisar" Tabela:
PARMUSUARIO.VL_LIMITECREDACUMULADO—NUMERIC(15,2)Valor padrão:NULL
Resumo
Define o teto em R$ do usuário logado para liberação de vendas bloqueadas por crédito acumulado (limite total pendente do cliente). Só é consultado quando o parâmetro TP_MODELOBLOQUEIO (configurado em MFA001 - Parâmetros de Faturamento, aba Parâmetros → Ambos) está em modelo de alçada (A ou L).
Telas impactadas
| Tela | Contexto |
|---|---|
| ADM012 / PARMUSUARIO | Onde o campo é editado (aba Lib. Venda) |
| TFA002 / Crédito | Valida na alteração manual do valor acumulado do cliente |
| MFA001 / Parâmetros de Faturamento | TP_MODELOBLOQUEIO controla se a aba Lib. Venda aparece |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
VL_LIMITECREDACUMULADO | PARMUSUARIO | Alçada em R$ do usuário para crédito acumulado |
TP_MODELOBLOQUEIO | PARMFATUR | Modelo de bloqueio (N = Normal, A = Alçada, L = Liberação) |
VL_CREDITOACUM | CREDITO / VIEW_CREDITOPESSOA | Limite de crédito acumulado do cliente |
NR_DIASATRASO | PARMUSUARIO | Alçada de dias de atraso do usuário (mesma aba) |
PC_MAXDESCONTO | PARMUSUARIO | Alçada de % desconto do usuário (mesma aba) |
Opções disponíveis
O campo é numérico livre — não possui opções discretas. O comportamento varia conforme o valor preenchido (ou não) e o modelo de bloqueio ativo.
Valor preenchido (> 0) com TP_MODELOBLOQUEIO = A (Alçada)
| O que faz | Detalhe |
|---|---|
| Define teto de alçada | Usuário pode liberar vendas bloqueadas por crédito acumulado até o valor informado |
| Editável | Aceita qualquer valor > 0 (validação no OnValidate) |
Exige modelo A ou L | Se TP_MODELOBLOQUEIO = N, a aba Lib. Venda é ocultada e o campo é limpo pelo trigger |
Simulação passo a passo
- Acesse ADM012 - Parâmetros do Usuário e selecione o usuário desejado.
- Certifique-se de que
TP_MODELOBLOQUEIO(MFA001) esteja configurado comoA— a aba Lib. Venda (Alçada) ficará visível. - Na aba Lib. Venda, localize o campo VL_LIMITECREDACUMULADO e digite
1500,00. - Salve o registro.
- Na tela de faturamento (ex.: MPD003), ao faturar um pedido do Cliente Alpha cujo total pendente (R$ 1.800,00) ultrapassa o limite acumulado do cliente (R$ 1.000,00), o sistema bloqueia com tipo
T. - Como
TP_MODELOBLOQUEIO = Ae o usuário logado tem alçada de R$ 1.500,00, o sistema compara:I_VL_TOTAL (1.800) > VL_LIMITECREDACUMULADO (1.500)→ ultrapassa a alçada → bloqueio é mantido. - Se a alçada fosse R$ 2.000,00, então
1.800 < 2.000→ não ultrapassa → bloqueio é convertido em alçada (exige usuário com alçada superior).
Resultado esperado: O valor preenchido funciona como teto: vendas cujo excesso ultrapasse esse valor continuam bloqueadas; vendas dentro do teto podem ser liberadas pelo usuário.
Valor NULL (vazio) com TP_MODELOBLOQUEIO = A (Alçada)
| O que faz | Detalhe |
|---|---|
| Sem alçada | Usuário NÃO possui teto de alçada para crédito acumulado |
| Comportamento fallback | O sistema aplica bloqueio direto (como modelo Normal) |
Simulação passo a passo
- Acesse ADM012 e deixe o campo VL_LIMITECREDACUMULADO vazio (NULL) para o usuário.
- Salve o registro.
- Na tela de faturamento, ao faturar um pedido cujo total pendente ultrapassa o limite acumulado do cliente, o sistema bloqueia diretamente com tipo
T— sem conversão para alçada.
Resultado esperado: Sem alçada configurada, o bloqueio por crédito acumulado é sempre direto (não oferece alternativa de liberação pelo próprio usuário).
TP_MODELOBLOQUEIO = N (Normal) — Campo ignorado
| O que faz | Detalhe |
|---|---|
| Aba oculta | A aba Lib. Venda não é exibida na ADM012 |
| Campo zerado | O trigger TRGPARMFATUR_BU limpa automaticamente para NULL |
Simulação passo a passo
- Acesse MFA001 - Parâmetros de Faturamento e configure
TP_MODELOBLOQUEIO = N. - Ao salvar, o trigger
TRGPARMFATUR_BUexecutaUPDATE PARMUSUARIO SET VL_LIMITECREDACUMULADO = NULLpara todos os usuários da empresa. - Na ADM012, a aba Lib. Venda (Alçada) fica invisível — os campos de alçada não são exibidos.
Resultado esperado: Todos os valores de alçada são apagados e a aba desaparece. O bloqueio passa a ser sempre direto.
Exceção / Importante: Ao alternar
TP_MODELOBLOQUEIOdeNparaA/L, os campos de alçada voltam a ser exibidos, mas os valores precisam ser re-cadastrados manualmente, pois foram limpos pelo trigger.
Validação na edição (ADM012)
- O evento
OnValidatedo campo (UdmADM012.pas:634-642) verifica que, se o campo não estiver vazio, o valor deve ser maior que zero. Caso contrário, exibe: "O Vl. Limite Crédito Acumulado deve ser maior que Zero!. Verifique!".
Validação na TFA002 (Crédito)
- A rotina
validaValorAcumulado(UdmTFA002.pas:836-855) consultaVL_LIMITECREDACUMULADOdo usuário logado ao alterar manualmente o crédito acumulado de um cliente. Se o novo valor informado ultrapassar a alçada do usuário, uma exceção é lançada com a mensagem do tipoW-0737, informando o limite máximo permitido.
Exceção / Importante: Essa validação na TFA002 só ocorre quando o usuário está na aba "Pessoa" ou "Grupo" da tela de crédito — protegendo contra alterações manuais acima da alçada.
Lógica no VALIDA_MODELOBLOQUEIOVLLIMITE
O SQL VALIDA_MODELOBLOQUEIOVLLIMITE consulta PARMUSUARIO.VL_LIMITECREDACUMULADO do usuário logado e aplica a seguinte lógica para crédito acumulado (quando I_ST_BLOQUEIO IN ('T','A','O','B','F','G') e I_VL_CREDITOACUM IS NOT NULL):
| Modelo | Condição de bloqueio | Papel de VL_LIMITECREDACUMULADO |
|---|---|---|
N (Normal) | I_VL_TOTAL > I_VL_CREDITOACUM → bloqueio direto | Ignorado |
L (Liberação) | I_VL_TOTAL > I_VL_CREDITOACUM → bloqueio + marcador de alçada | Marcador L é gerado (código comentado faria comparação com o teto) |
A (Alçada) | Se VL_LIMITECREDACUMULADO IS NOT NULL e I_VL_TOTAL > VL_LIMITECREDACUMULADO → bloqueio + marcador de alçada | Teto comparado — se I_VL_TOTAL <= VL_LIMITECREDACUMULADO, o bloqueio não é gerado |
A (Alçada) com NULL | Se VL_LIMITECREDACUMULADO IS NULL → bloqueio direto | Sem alçada, comporta-se como Normal |
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Descrição |
|---|---|---|
tabPARMUSUARIOVL_LIMITECREDACUMULADOValidate | source/ADM012/UdmADM012.pas | Validação: valor deve ser > 0 se preenchido |
TfrmADM013.btnDuplicaUsuarioClick | source/ADM013/UADM013.pas | Duplica o campo ao copiar parâmetros de outro usuário |
validaValorAcumulado | source/TFA002/UdmTFA002.pas | Valida alteração manual de crédito acumulado contra a alçada do usuário |
Scripts SQL com referência direta ao campo
| Procedure/Trigger | Arquivo | Descrição |
|---|---|---|
TRGPARMFATUR_BU | Scripts/TRGPARMFATUR_BU.sql | Quando TP_MODELOBLOQUEIO = N, limpa VL_LIMITECREDACUMULADO = NULL |
VALIDA_MODELOBLOQUEIOVLLIMITE | Scripts/VALIDA_MODELOBLOQUEIOVLLIMITE.sql | Consulta o campo como teto de alçada para crédito acumulado |