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
| Tela | Nome | Como é usada |
|---|---|---|
| TFA002 | Limite de Crédito — Pessoa / Grupo | Compara dias de atraso das duplicatas do cliente com o valor parametrizado para bloquear ou liberar crédito (erro W-0737). |
| MPD002 | Pedido de Venda | Pode usar o parâmetro em validação de crédito no momento da seleção do cliente. |
| MEQ019 | Separação de Pedidos | Compara CREDITO.NR_DIASATRASO vs VIEW_CREDITOPESSOA.NR_MAIORVENC para decidir bloqueio por crédito. |
| CEQ006 | Consulta de Contas | Exibe dias em atraso calculados (NR_DIASATRASO) nas contas a receber. |
| TFA063 | Relatório de Crédito | Filtra registros por NR_DIASATRASO >= valor. |
Campos envolvidos
| Campo | Tabela | Tipo | Descrição |
|---|---|---|---|
NR_DIASATRASO | PARMUSUARIO | DOM_INTEGER | Nº máximo de dias de atraso permitido por usuário. |
NR_DIASATRASO | CREDITO | INTEGER | Herdado de PARMUSUARIO ao montar/atualizar crédito na TFA002. |
NR_DIASATRASO | CREDITOPERIODICO | INTEGER | Idem, para crédito periódico. |
NR_DIASATRASO | CREDITOGRUPO | INTEGER | Idem, para crédito por grupo. |
NR_DIASATRASO | CREDITOPERIODICOGRUPO | INTEGER | Idem, para crédito periódico por grupo. |
Opções disponíveis
Comportamento do campo na ADM012
| O que faz | Detalhe |
|---|---|
| Editável | Sim — campo numérico livre (inteiro). |
| Bloqueado | Não por padrão. Pode ficar nulo. |
| Validação obrigatória | Se preenchido, o valor deve ser maior que zero (E-0000: "O Nº Dias Atraso deve ser maior que Zero!"). |
| Depende de outro parâmetro | TP_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
- Acesse ADM012 — Parâmetros do Usuário.
- Abra o registro do usuário desejado (ou crie um novo).
- Na aba "% Desc", localize o campo "Pesquisar" (Nº Dias Atraso).
- Digite um valor, por exemplo
30. - 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 paraN(Modelo Normal sem alçada por usuário), a triggerTRGPARMFATUR_BUdefineNR_DIASATRASO = NULLpara todos os usuários da empresa. O campo só é relevante quandoTP_MODELOBLOQUEIO = 'A'(Alçada) ouTP_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 faz | Detalhe |
|---|---|
| Quando avalia | No momento de liberar crédito (TFA002) ou salvar pedido de venda / nota fiscal. |
| O que compara | Dias vencidos das duplicatas do cliente (I_NR_DIASVENCIDOS) vs NR_DIASATRASO do usuário (PARMUSUARIO). |
| Se excede | Adiciona '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
- Em ADM012, defina
NR_DIASATRASO = 15para o vendedor "JOAO". - Em MFA001, confirme que
TP_MODELOBLOQUEIO = 'A'. - Em TFA002, abra o limite de crédito de um cliente.
- O cliente possui duplicata vencida há 20 dias.
- 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 — consulteVALIDA_MODELOBLOQUEIODIASATRASOpara detalhes. A combinaçãoTP_MODELOBLOQUEIO = 'A'+NR_DIASATRASOpreenchido 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 faz | Detalhe |
|---|---|
| Situação | NR_DIASATRASO está nulo/vazio na ADM012. |
| Comportamento | A 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). |
| Equivalente | Sem limite (não há bloqueio por dias de atraso). |
Simulação passo a passo
- Em ADM012, deixe o campo "Pesquisar" (Nº Dias Atraso) em branco.
- Salve o registro.
- 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) ePC_MAXDESCONTO(desconto máximo), ambos na mesma aba.
Regra Geral de Autorização
| Situação | Comportamento |
|---|---|
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 vazio | Nenhuma validação de dias de atraso é aplicada ao usuário. |
NR_DIASATRASO > 0 e TP_MODELOBLOQUEIO compatível | Dias vencidos > valor → bloqueio (mensagem W-0737 ou entrada em O_TP_BLOQUEIO). |
Tabela Comparativa Resumida
| Situação | TP_MODELOBLOQUEIO (MFA001) | NR_DIASATRASO (ADM012) | Efeito prático |
|---|---|---|---|
| Modelo Normal | N | Qualquer valor | Ignorado / limpo. Trigger TRGPARMFATUR_BU zera o campo para todos os usuários. |
| Alçada com atualização de crédito | L | Preenchido (ex: 30) | Dias vencidos > 30 → bloqueio 'D' + alçada 'D'. |
| Alçada por usuário | A | Preenchido (ex: 15) | Dias vencidos > 15 E > I_NR_DIASATRASO do crédito → bloqueio + alçada 'D'. |
| Sem limite | Qualquer | Vazio / NULL | Nenhuma validação por dias de atraso. |
| Valor inválido | Qualquer | <= 0 | Erro E-0000: "O Nº Dias Atraso deve ser maior que Zero!". |
Procedures impactadas
Rotinas Delphi com referência direta ao parâmetro
| Rotina | Arquivo | Uso |
|---|---|---|
TdmADM012.tabPARMUSUARIONR_DIASATRASOValidate | source/ADM012/UdmADM012.pas:730 | Validação: valor deve ser > 0. |
TdmTFA002.validaDiasAtraso | source/TFA002/UdmTFA002.pas:806 | Consulta PU.NR_DIASATRASO e compara com dias informados; erro W-0737. |
TfrmADM013.btnDuplicaUsuarioClick | source/ADM013/UADM013.pas:475 | Copia NR_DIASATRASO ao duplicar usuário. |
TfrmMEQ019.btnSalvarClick | source/MEQ019/UMEQ019.pas:617 | Lê COALESCE(C.NR_DIASATRASO,0) para verificar bloqueio de crédito na separação. |
TdmMPD002.tabPEDIDOCD_PESSOAValidate | source/MPD002/UdmMPD002.pas:1679 | Usa COALESCE(CR.NR_DIASATRASO,0) em validação de crédito ao selecionar cliente no pedido. |
TdmMPD049.tabEMPRESACD_PESSOAValidate | source/MPD049/UdmMPD049.pas:620 | Lê NR_DIASATRASO e NR_MAIORVENC na validação de empresa/cliente. |
TfrmMPD055.edtCD_PESSOAExit | source/MPD055/UMPD055.pas:883 | Lê NR_DIASATRASO na saída do campo cliente. |
ComunicadorEquipamentoSolicitarAcesso | source/MPD055/UdmMPD055.pas:121 | Declara iNR_DIASATRASO para comunicação de acesso. |
iniciar / TfrmTFA002.btnSalvarClick | source/TFA002/UTFA002.pas:304, 721 | Consulta e salva NR_DIASATRASO na tabela CREDITO. |
TfrmTFA002.btnATUALIZARLIMITEClick | source/TFA002/UTFA002.pas:1863 | Lê tabPERIODONR_DIASATRASO para atualizar limites. |
TdmTFA002.tabCREDITONR_DIASATRASOValidate | source/TFA002/UdmTFA002.pas:899 | Validação na tabela CREDITO. |
TdmTFA002.tabPERIODOBeforePost | source/TFA002/UdmTFA002.pas:706 | Persiste NR_DIASATRASO no período de crédito. |
TfrmCEQ006.btnProcurarClick | source/CEQ006/UCEQ006.pas:612 | Exibe NR_DIASATRASO calculado em consulta de contas. |
TfrmCFC004.btnProcurarClick | source/CFC004/UCFC004.pas:323 | Calcula DATEDIFF(...) como NR_DIASATRASO. |
TfrmTFA063.btnConsultarClick | source/TFA063/UTFA063.pas:293 | Filtra C.NR_DIASATRASO >= valor. |
Scripts SQL com referência direta ao campo
| Procedure/Trigger | Arquivo | Uso |
|---|---|---|
VALIDA_MODELOBLOQUEIODIASATRASO | Scripts/VALIDA_MODELOBLOQUEIODIASATRASO.sql:30 | Lê PU.NR_DIASATRASO para validar bloqueio por dias; adiciona 'D' ao bloqueio. |
TRGPARMFATUR_BU | Scripts/TRGPARMFATUR_BU.sql:11 | Define PU.NR_DIASATRASO = NULL quando TP_MODELOBLOQUEIO = 'N'. |
TRGAI_PESSOA | Scripts/TRGAI_PESSOA.sql:17 | Lê P.NR_DIASATRASO de PARMUSUARIO ao criar/atualizar cliente. |
GERA_CREDITO | Scripts/GERA_CREDITO.sql:32 | Lê NR_DIASATRASO para popular a tabela CREDITO. |
CREDITOPERIODICO_AI0 | Scripts/CREDITOPERIODICO_AI0.sql:16 | Lê P.NR_DIASATRASO ao inserir crédito periódico. |
CREDITOPERIODICOGRUPO_AI0 | Scripts/CREDITOPERIODICOGRUPO_AI0.sql:16 | Lê P.NR_DIASATRASO ao inserir crédito periódico por grupo. |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql:38 | Declara V_NR_DIASATRASO para lógica de bloqueio geral. |
VERIFICA_CREDITO | Scripts/VERIFICA_CREDITO.sql:16 | Declara I_NR_DIASATRASO para verificação de crédito. |
VIEW_CREDITO_ESTABIL | Scripts/VIEW_CREDITO_ESTABIL.sql:13 | Define output O_NR_DIASATRASO. |
VIEW_CREDITOPESSOA | Scripts/VIEW_CREDITOPESSOA.sql:11 | Define coluna NR_DIASATRASO. |