Pular para o conteúdo principal

NR_DIASATRASO - Nº Dias Atraso (Comportamento)

Tela de configuração: ADM012 — Parâmetros do Usuário Localização: Aba "% Desc" Campo: PARMUSUARIO.NR_DIASATRASO (INTEGER) Componente: edtNR_DIASATRASO (edit) Valor padrão: Nulo (não preenchido)

Tela de configuração​

Em ADM012 — Parâmetros do Usuário, o campo "Pesquisar" (rótulo do componente edtNR_DIASATRASO) aparece na aba "% Desc". Defina o número máximo de dias de atraso em duplicatas que um vendedor/usuário pode tolerar antes de sofrer bloqueio de crédito ou alçada.

Telas impactadas​

TelaNomeComo é usada
TFA002Limite de Crédito — Pessoa / GrupoCompara dias de atraso das duplicatas do cliente com o valor parametrizado para bloquear ou liberar crédito (erro W-0737).
MPD002Pedido de VendaPode usar o parâmetro em validação de crédito no momento da seleção do cliente.
MEQ019Separação de PedidosCompara CREDITO.NR_DIASATRASO vs VIEW_CREDITOPESSOA.NR_MAIORVENC para decidir bloqueio por crédito.
CEQ006Consulta de ContasExibe dias em atraso calculados (NR_DIASATRASO) nas contas a receber.
TFA063Relatório de CréditoFiltra registros por NR_DIASATRASO >= valor.

Campos envolvidos​

CampoTabelaTipoDescrição
NR_DIASATRASOPARMUSUARIODOM_INTEGERNº máximo de dias de atraso permitido por usuário.
NR_DIASATRASOCREDITOINTEGERHerdado de PARMUSUARIO ao montar/atualizar crédito na TFA002.
NR_DIASATRASOCREDITOPERIODICOINTEGERIdem, para crédito periódico.
NR_DIASATRASOCREDITOGRUPOINTEGERIdem, para crédito por grupo.
NR_DIASATRASOCREDITOPERIODICOGRUPOINTEGERIdem, para crédito periódico por grupo.

Opções disponíveis​

Comportamento do campo na ADM012​

O que fazDetalhe
EditávelSim — campo numérico livre (inteiro).
BloqueadoNão por padrão. Pode ficar nulo.
Validação obrigatóriaSe preenchido, o valor deve ser maior que zero (E-0000: "O Nº Dias Atraso deve ser maior que Zero!").
Depende de outro parâmetroTP_MODELOBLOQUEIO (configurado em MFA001 — Parâmetros de Faturamento). Se TP_MODELOBLOQUEIO = 'N', o campo é zerado automaticamente para todos os usuários da empresa via trigger TRGPARMFATUR_BU.

Simulação passo a passo​

  1. Acesse ADM012 — Parâmetros do Usuário.
  2. Abra o registro do usuário desejado (ou crie um novo).
  3. Na aba "% Desc", localize o campo "Pesquisar" (Nº Dias Atraso).
  4. Digite um valor, por exemplo 30.
  5. Salve (F9 ou botão Salvar).

Resultado esperado: O usuário terá como limite de 30 dias de atraso em duplicatas para fins de bloqueio de crédito e alçada de venda. Se configurar TP_MODELOBLOQUEIO = 'N' na MFA001, este valor será apagado automaticamente ao atualizar os parâmetros de faturamento.

Exceção / Importante: Sempre que o parâmetro TP_MODELOBLOQUEIO (configurado em MFA001 — Parâmetros de Faturamento) for alterado para N (Modelo Normal sem alçada por usuário), a trigger TRGPARMFATUR_BU define NR_DIASATRASO = NULL para todos os usuários da empresa. O campo só é relevante quando TP_MODELOBLOQUEIO = 'A' (Alçada) ou TP_MODELOBLOQUEIO = 'L' (Alçada com atualização de crédito na TFA002).

Cenário — Bloqueio por dias de atraso excedido (TFA002 / VALIDA_MODELOBLOQUEIODIASATRASO)​

O que fazDetalhe
Quando avaliaNo momento de liberar crédito (TFA002) ou salvar pedido de venda / nota fiscal.
O que comparaDias vencidos das duplicatas do cliente (I_NR_DIASVENCIDOS) vs NR_DIASATRASO do usuário (PARMUSUARIO).
Se excedeAdiciona 'D' ao bloqueio (O_TP_BLOQUEIO) com mensagem "Duplicatas com Atraso acima do Limite".
Modo alçada (TP_MODELOBLOQUEIO = 'A')Só bloqueia a alçada se dias vencidos > I_NR_DIASATRASO E I_NR_DIASVENCIDOS > V_NR_DIASATRASOPARMUSUARIO.

Simulação passo a passo​

  1. Em ADM012, defina NR_DIASATRASO = 15 para o vendedor "JOAO".
  2. Em MFA001, confirme que TP_MODELOBLOQUEIO = 'A'.
  3. Em TFA002, abra o limite de crédito de um cliente.
  4. O cliente possui duplicata vencida há 20 dias.
  5. Tente salvar / liberar crédito para o cliente.

Resultado esperado: O sistema exibe o erro W-0737 informando que os dias de atraso (20) excedem o limite configurado (15) — "Nº Dias Atraso". O crédito não é liberado.

Exceção / Importante: Se o usuário que está operando possuir perfil de autorizador (ST_AUTORIZADOR = 'S' na própria ADM012), o bloqueio pode ser contornado conforme a regra de alçada — consulte VALIDA_MODELOBLOQUEIODIASATRASO para detalhes. A combinação TP_MODELOBLOQUEIO = 'A' + NR_DIASATRASO preenchido significa: o usuário precisa ter dias de atraso maiores que a própria alçada para ser bloqueado.

Cenário — Campo vazio (sem limite parametrizado)​

O que fazDetalhe
SituaçãoNR_DIASATRASO está nulo/vazio na ADM012.
ComportamentoA validação validaDiasAtraso não aplica a restrição de dias de atraso para aquele usuário (Resultado[0] vazio → não entra no if).
EquivalenteSem limite (não há bloqueio por dias de atraso).

Simulação passo a passo​

  1. Em ADM012, deixe o campo "Pesquisar" (Nº Dias Atraso) em branco.
  2. Salve o registro.
  3. Em TFA002, tente liberar crédito para um cliente com duplicatas vencidas há 90 dias.

Resultado esperado: O sistema não bloqueia por dias de atraso, pois não há limite configurado para o usuário. Outros critérios de bloqueio (limite de valor, alçada) ainda podem ser aplicados.

Importante: Deixar o campo vazio não desativa outros mecanismos de bloqueio de crédito — como VL_LIMITECREDACUMULADO (limite acumulado) e PC_MAXDESCONTO (desconto máximo), ambos na mesma aba.

Regra Geral de Autorização​

SituaçãoComportamento
TP_MODELOBLOQUEIO = 'N'NR_DIASATRASO é ignorado e limpo (NULL) para todos os usuários.
TP_MODELOBLOQUEIO = 'L'Usa NR_DIASATRASO para comparar dias vencidos e gerar bloqueio 'D' e alçada 'D'.
TP_MODELOBLOQUEIO = 'A'Usa NR_DIASATRASO de PARMUSUARIO e o campo I_NR_DIASATRASO (da tabela de crédito) como dois níveis: se dias vencidos > ambos, gera bloqueio + alçada.
NR_DIASATRASO vazioNenhuma validação de dias de atraso é aplicada ao usuário.
NR_DIASATRASO > 0 e TP_MODELOBLOQUEIO compatívelDias vencidos > valor → bloqueio (mensagem W-0737 ou entrada em O_TP_BLOQUEIO).

Tabela Comparativa Resumida​

SituaçãoTP_MODELOBLOQUEIO (MFA001)NR_DIASATRASO (ADM012)Efeito prático
Modelo NormalNQualquer valorIgnorado / limpo. Trigger TRGPARMFATUR_BU zera o campo para todos os usuários.
Alçada com atualização de créditoLPreenchido (ex: 30)Dias vencidos > 30 → bloqueio 'D' + alçada 'D'.
Alçada por usuárioAPreenchido (ex: 15)Dias vencidos > 15 E > I_NR_DIASATRASO do crédito → bloqueio + alçada 'D'.
Sem limiteQualquerVazio / NULLNenhuma validação por dias de atraso.
Valor inválidoQualquer<= 0Erro E-0000: "O Nº Dias Atraso deve ser maior que Zero!".

Procedures impactadas​

Rotinas Delphi com referência direta ao parâmetro​

RotinaArquivoUso
TdmADM012.tabPARMUSUARIONR_DIASATRASOValidatesource/ADM012/UdmADM012.pas:730Validação: valor deve ser > 0.
TdmTFA002.validaDiasAtrasosource/TFA002/UdmTFA002.pas:806Consulta PU.NR_DIASATRASO e compara com dias informados; erro W-0737.
TfrmADM013.btnDuplicaUsuarioClicksource/ADM013/UADM013.pas:475Copia NR_DIASATRASO ao duplicar usuário.
TfrmMEQ019.btnSalvarClicksource/MEQ019/UMEQ019.pas:617Lê COALESCE(C.NR_DIASATRASO,0) para verificar bloqueio de crédito na separação.
TdmMPD002.tabPEDIDOCD_PESSOAValidatesource/MPD002/UdmMPD002.pas:1679Usa COALESCE(CR.NR_DIASATRASO,0) em validação de crédito ao selecionar cliente no pedido.
TdmMPD049.tabEMPRESACD_PESSOAValidatesource/MPD049/UdmMPD049.pas:620Lê NR_DIASATRASO e NR_MAIORVENC na validação de empresa/cliente.
TfrmMPD055.edtCD_PESSOAExitsource/MPD055/UMPD055.pas:883Lê NR_DIASATRASO na saída do campo cliente.
ComunicadorEquipamentoSolicitarAcessosource/MPD055/UdmMPD055.pas:121Declara iNR_DIASATRASO para comunicação de acesso.
iniciar / TfrmTFA002.btnSalvarClicksource/TFA002/UTFA002.pas:304, 721Consulta e salva NR_DIASATRASO na tabela CREDITO.
TfrmTFA002.btnATUALIZARLIMITEClicksource/TFA002/UTFA002.pas:1863Lê tabPERIODONR_DIASATRASO para atualizar limites.
TdmTFA002.tabCREDITONR_DIASATRASOValidatesource/TFA002/UdmTFA002.pas:899Validação na tabela CREDITO.
TdmTFA002.tabPERIODOBeforePostsource/TFA002/UdmTFA002.pas:706Persiste NR_DIASATRASO no período de crédito.
TfrmCEQ006.btnProcurarClicksource/CEQ006/UCEQ006.pas:612Exibe NR_DIASATRASO calculado em consulta de contas.
TfrmCFC004.btnProcurarClicksource/CFC004/UCFC004.pas:323Calcula DATEDIFF(...) como NR_DIASATRASO.
TfrmTFA063.btnConsultarClicksource/TFA063/UTFA063.pas:293Filtra C.NR_DIASATRASO >= valor.

Scripts SQL com referência direta ao campo​

Procedure/TriggerArquivoUso
VALIDA_MODELOBLOQUEIODIASATRASOScripts/VALIDA_MODELOBLOQUEIODIASATRASO.sql:30Lê PU.NR_DIASATRASO para validar bloqueio por dias; adiciona 'D' ao bloqueio.
TRGPARMFATUR_BUScripts/TRGPARMFATUR_BU.sql:11Define PU.NR_DIASATRASO = NULL quando TP_MODELOBLOQUEIO = 'N'.
TRGAI_PESSOAScripts/TRGAI_PESSOA.sql:17Lê P.NR_DIASATRASO de PARMUSUARIO ao criar/atualizar cliente.
GERA_CREDITOScripts/GERA_CREDITO.sql:32Lê NR_DIASATRASO para popular a tabela CREDITO.
CREDITOPERIODICO_AI0Scripts/CREDITOPERIODICO_AI0.sql:16Lê P.NR_DIASATRASO ao inserir crédito periódico.
CREDITOPERIODICOGRUPO_AI0Scripts/CREDITOPERIODICOGRUPO_AI0.sql:16Lê P.NR_DIASATRASO ao inserir crédito periódico por grupo.
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sql:38Declara V_NR_DIASATRASO para lógica de bloqueio geral.
VERIFICA_CREDITOScripts/VERIFICA_CREDITO.sql:16Declara I_NR_DIASATRASO para verificação de crédito.
VIEW_CREDITO_ESTABILScripts/VIEW_CREDITO_ESTABIL.sql:13Define output O_NR_DIASATRASO.
VIEW_CREDITOPESSOAScripts/VIEW_CREDITOPESSOA.sql:11Define coluna NR_DIASATRASO.