Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde a todos.
Tenho uma situação onde estou desenvolvendo um script para calcular a inadimplência da empresa onde trabalho.
A regra que tínhamos era calcular a faixa da inadimplência pelos dias de atraso onde era só pegar a data atual - a data de vencimento que chagava aos dias em atraso.
O problema é que agora a regra mudou. Ela não será mais pela faixa de dias em atraso, mas sim pelo mês. Ou seja, os títulos vencidos do dia 1 a 31 de agosto serão considerados para a faixa de 30 dias na inadimplência de Setembro.
Bom, tentei fazer uma faixa pegando o valor do mês base - o mês do vencimento, mas não dá certo quando temos as passagens de anos.
Como posso implementar isso?
Alguém já passou por uma situação parecida?
Abraços!
Já usei essa data formatada, mas não deu certo, pois o que precisava é trazer uma faixa entre os meses e não para os dias.
Tentei utilizando as funções num() e month() para me retornar apenas o valor numeral do mês, mas quando há mudança de anos ele se perde, pois está vendo apenas meses e não os anos.
A solução que achei foi incluir a função MonthStart() , pois assim tenho como calcular a faixa de dias de um determinado mês.
Exemplo:
Criei uma variável com a data de hoje -1 chamada DATA_BASE_CRC
Aí fiz uma sequêcia de ifs
If(MonthStart($(#DATA_BASE_CRC)) <= AddMonths(MonthStart(DTVENCTO),0),
'A VENCER', ...
Aí só fui adicionando valores no AddMonths para pegar as faixas entre os meses
Obrigado pela atenção Yuri.
Utilize uma data no formato de Mês + Ano (MMM/YYYY), desta forma você não terá esse problema na mudança de ano.
Já usei essa data formatada, mas não deu certo, pois o que precisava é trazer uma faixa entre os meses e não para os dias.
Tentei utilizando as funções num() e month() para me retornar apenas o valor numeral do mês, mas quando há mudança de anos ele se perde, pois está vendo apenas meses e não os anos.
A solução que achei foi incluir a função MonthStart() , pois assim tenho como calcular a faixa de dias de um determinado mês.
Exemplo:
Criei uma variável com a data de hoje -1 chamada DATA_BASE_CRC
Aí fiz uma sequêcia de ifs
If(MonthStart($(#DATA_BASE_CRC)) <= AddMonths(MonthStart(DTVENCTO),0),
'A VENCER', ...
Aí só fui adicionando valores no AddMonths para pegar as faixas entre os meses
Obrigado pela atenção Yuri.
Boa tarde Raphael,
Você pode utilizar a seguinte lógica:
Vencimento em 05/12/2013 e a data atual é 10/01/2014.
Vcto: 05/12/2013
Atual: 10/01/2014
Inicialmente pegue a diferença dos anos e dos meses:
Ano Atual - Ano Vcto: 2014 - 2013 = 1
Depois a diferença entre os meses:
Mes Atual - Mes Vcto: 01 - 12 = -11
A regra utilizada é baseada na fórmula
(RESULTADO ANO * 12) + RESULTADO MES
Ficaria:
(1 * 12) + (-11) = 1
A diferença de meses ficaria 1. Pelo o que entendi funcionaria no seu caso.
Abraços
Bom dia.
Nesse caso não teria como pegar a diferença e jogar em dias, depois converter os dias em meses ? Acredito que dessa forma ele não iria se perder na hora de virar o ano.
Att.
Carlos.
Bom dia Carlos.
Como eu preciso das faixas de inadimplência por meses e não por dias eu fiz da seguinte maneira:
If(IsNum(DTVENCTO), If(MonthStart($(#DATA_BASE_CRC)) <= AddMonths(MonthStart(DTVENCTO),0),
'A VENCER',
If(MonthStart($(#DATA_BASE_CRC)) = AddMonths(MonthStart(DTVENCTO),1),
'30 DIAS',
If(MonthStart($(#DATA_BASE_CRC)) = AddMonths(MonthStart(DTVENCTO),2),
'60 DIAS',
If(MonthStart($(#DATA_BASE_CRC)) = AddMonths(MonthStart(DTVENCTO),3),
'90 DIAS',
If(MonthStart($(#DATA_BASE_CRC)) = AddMonths(MonthStart(DTVENCTO),4),
'120 DIAS',
If(MonthStart($(#DATA_BASE_CRC)) = AddMonths(MonthStart(DTVENCTO),5),
'150 DIAS',
If(MonthStart($(#DATA_BASE_CRC)) = AddMonths(MonthStart(DTVENCTO),6),
'180 DIAS',
If(MonthStart($(#DATA_BASE_CRC)) <= AddMonths(MonthStart(DTVENCTO),7),
'PERDA NO MES',
If(MonthStart($(#DATA_BASE_CRC)) >= AddMonths(MonthStart(DTVENCTO),1),
'PERDA',
)
)
)
)
)
)
)
)
)
,DTVENCTO
)
as [Faixa de Inadimplência],
Primeiro verifico se a data de vencimento me retorna um número, pois em uma etapa anterior do script eu verifico se o vencimento caiu em um final de semana e se foi no último dia do mês, sendo assim estes registros não vem com valor numeral.
depois verifico as faixas de inadimplência.
Como a nossa inadimplência segue até a faixa de seis meses, o restante eu considero como perda do mês (180 a 210) e perda (acima de 210).