Дата капитализации процентов по депозитам
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dnk_dz Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Июл 30, 2008 06:23  Дата капитализации процентов по депозитам |
|
Полезность: Нет оценки
|
Уважаемые коллеги.
Не сталкивался ли кто со следующей проблемой с начислением процентов по депозитам.
Если договор открыт в последний день месяца, напр. 30.04 и период капитализации по нему - 1 месяц, то проценты будут причисляться ко вкладу не каждого 30-го числа, а в последний день месяца. Т.е. 31.05, 30.06 и т.д.
Этот эффект проявляется из-за особенностей реализации функции add_months в Oracle.
Некоторых вкладчиков это сильно напрягает, впрочем и бизнес тоже периодически возбуждается. Переписывать функции Oracle особого желания нет, и так пол-ИБСО переписали
Если кто-то сталкивался и решал такую проблему - расскажите... |
|
 |
dnk_dz Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Июл 30, 2008 08:38   |
|
Полезность: 4
|
Как всегда... Нет, чтобы немного подумать...
Вобщем, разрешил проблему и отвечу сам
С какого-то времени появилась настройка в справочнике "Периодичность операции" - на закладке "Депозиты физических лиц" "Не смещать на конец месяца". Эта настройка позволяет избежать особенности функции add_months и корректирует дату исходя из даты первой капитализации, либо даты начала договора. Данная настройка работает только на вновь открываемые договора, либо по договорам, у которых еще не было ни одной капитализации.
Правда, как всегда, не обошлось без ошибок. Данная настройка не учитывает пролонгацию договора, и как следствие изменение даты капитализации. Например, договор был открыт 28.02.2007, пролонгация прошла 04.04.2008. По идее, если период капитализации - 1 месяц, то после пролонгации капитализаци должна проходить каждого 4-го числа. С включенной настройкой предлагает каждого 28-го...
Следующий код позволяет избежать этого. В операции ::[DEPOSIT_PRIV].[GET_DATE_CH] добавляем следующий код:
Код: | if CODE_INFO = 'DATE_FIRST_CAP' then
declare
date_last_prol date;
begin
date_last_prol := [GET_DATE]('LAST_PROL', ON_DATE);
RetDate := nvl(date_last_prol, [DATE_BEGIN]);
end;
end if;
|
|
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|