Ошибка определения ставки при досрочном расторжении депозита
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dnk_dz Эксперт
Вступление в Клуб: 19.09.2007
|
Пт Окт 17, 2008 07:02  Ошибка определения ставки при досрочном расторжении депозита |
|
Полезность: 2
|
Зарегистрировал несоответствие BS00083023.
Описание:
Если штрафная ставка определяется в момент расторжения исходя из фактического срока действия договора (из массива штрафная ставка от срока вида депозитного договора), то не учитывается что в массиве процентных схем имеются записи для одного срока, но с разными датами начала действия процентной схемы.
Предложения по реализации:
Исправить функцию ::[DEPN].[LIB_01].GetPenySch следующим образом (исправления помечены ++КОУ):
Код: |
Function GetPenySch(IdDepn ref [DEPN], OnDate date) return [REF_PRC_SCH] is
Sr number;
Begin
if IdDepn.[GET_BOOL]('CRASH_WITHOUT_PROL', OnDate) then
Sr := OnDate - IdDepn.[GET_DATE]('FIRST_DATE_BEGIN', OnDate);
else
Sr := OnDate - nvl(IdDepn.[GET_DATE]('LAST_PROL', OnDate), IdDepn.[DATE_BEGIN]);
end if;
for ( select Dep( Dep.[PENY_BY_SR] : PenyBySr,
Dep.[VID_DOG].[PENALTY_BY_SR] : VDPenyBySr,
Dep.[SUMMA_DOG] : Summa,
Dep.[DATE_BEGIN] : DATE_BEGIN, -- ++КОУ. Корпушов
Dep.[FINTOOL] : Fintool
)
in ::[DEPN] all
where Dep = IdDepn
)
loop
for ( select Sch(Sch.[PRC_SCH] : Id) in ::[HIS_PRC_SCH_REC] all
where Sch%collection in (Dep.PenyBySr, Dep.VDPenyBySr)
and Sch.[PRC_SCH] is not null
and (Sch.[TERM].[NUM_INTERVALS] is not null or Sch.[ADD_DAYS] is not null)
and nvl(::[PS].[LIB].get_days(Sch.[TERM].[NUM_INTERVALS], Sch.[TERM].[UNIT_INTERVALS], OnDate), 0) + nvl(Sch.[ADD_DAYS], 0) <= Sr
and (Sch.[SUMMA] is null or Sch.[SUMMA] <= Dep.Summa)
and (Sch.[CURRENCY] is null or Sch.[CURRENCY] = Dep.Fintool)
and Sch.[DATE] < Dep.[DATE_BEGIN] -- ++КОУ. Корпушов
order by decode(Sch%collection, Dep.PenyBySr, 1, 2),
Sch.[DATE] desc, -- ++КОУ. Корпушов
nvl(::[PS].[LIB].get_days(Sch.[TERM].[NUM_INTERVALS], Sch.[TERM].[UNIT_INTERVALS], OnDate), 0) + nvl(Sch.[ADD_DAYS], 0) desc,
nvl(Sch.[SUMMA], 0) desc,
nvl(Sch.[CURRENCY], 0) desc
)
loop
return Sch.Id;
end loop;
end loop;
return null;
End;;
|
|
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|