CftClub.ru
Клуб специалистов ЦФТ-Банк

% ставка по депозитному договору
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Ноя 03, 2011 08:16   % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
Добрый день.

Подскажите, плиз, есть ли в ЦФТ функция или библиотека которая вытаскивает % ставку по депозитному договору ЦИФРОЙ?
А то все базовые представления вытаскивают ссылку на справочник, а надо цифоркой.
Может я зря функцию рисовал в Оракле?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Ноя 03, 2011 08:46   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
есть ли в ЦФТ функция или библиотека которая вытаскивает % ставку по депозитному договору ЦИФРОЙ?


см.

::[PRC_SCHEME].[LIB].GetPrcRate

напр.
RetNum := ::[PRC_SCHEME].[LIB].GetPrcRate(dep.[PRC_DOG], P_ON_DATE );
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Ноя 03, 2011 10:24   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
vtar пишет:

см.
::[PRC_SCHEME].[LIB].GetPrcRate


Спасибо, а как правильно её использовать, а то если я 2 параметра использую, то сложные % ставки не подтягивает (см. скрин).
А если добавляю туда параметр остаток по депозитному счёту, то вообще половина ставок 0 становится. Вот так с 3мя параметрами выгледит столбец (смысел в том, что бегу по платежным документам где в дебете или кредите 423 счета, потому в селект кроме депозитов ничего не может попасть) :

,decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,::[PRC_SCHEME].[LIB].GetPrcRate(x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[PRC_DOG],x.[DATE_DOC],x.[ACC_DT].[SALDO]),::[PRC_SCHEME].[LIB].GetPrcRate(x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[PRC_DOG],x.[DATE_DOC]),x.[ACC_KT].[SALDO])

[/img]
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Ноя 03, 2011 13:01   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:

Спасибо, а как правильно её использовать,

чтобы понять, как правильно, нужно услышать постановку задачи, приведенный **код наводит на мысли о не совсем верном методе решения Smile
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Ноя 03, 2011 13:29   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
чтобы понять, как правильно, нужно услышать постановку задачи, приведенный **код наводит на мысли о не совсем верном методе решения Smile


Смысел представления такой, за определённый период вытащить все корреспонденции с 423 счетами, при этом половина столбцов из платёжных документов (дата проводки, сумма, дебет и кредит, назначение платежа ну и т.д) вторая половина из депозитных договоров (% ставка, вид договора, срок и т.д). Причём представление должно запускаться из платёжных документов.
Вытащил всё, а вот ставку не могу.
Decode стоит для того чтобы вытягивать продукт по дебету или кредиту соответственно.
Вот собственно весь код представления:

Код:

type main is
select x( to_char(x.[DATE_DOC],'DD.MM.YYYY') :DATA_DOC
         ,x.[SUM] :DEBET
         ,x.[VALUTA].[CUR_SHORT] :DEBET_VAL
         ,x.[SUM_PO] :KREDIT
         ,x.[VALUTA_PO].[CUR_SHORT] :KREDIT_VAL
         ,x.[SUM_NT] :NACIONAL
         ,x.[NAZN] :NAZN_PLAT
         ,to_date(decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[DATE_ENDING],x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[DATE_ENDING]),'DD.MM.YYYY') - to_date(decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[DATE_BEGINING],x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[DATE_BEGINING]),'DD.MM.YYYY') :srok
            ,decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[PRC_DOG],x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[PRC_DOG]) :PRC_STAVKA
--         ,decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,::[PRC_SCHEME].[LIB].GetPrcRate(x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[PRC_DOG],x.[DATE_DOC],x.[ACC_DT].[SALDO]),::[PRC_SCHEME].[LIB].GetPrcRate(x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[PRC_DOG],x.[DATE_DOC]),x.[ACC_KT].[SALDO]) 
         ,decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[VID_DOG].[NAME],x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[VID_DOG].[NAME]) :VID_VKL
         ,decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[DATE_BEGINING],x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[DATE_BEGINING]) :NACHALO
         ,decode(substr(x.[ACC_DT].[MAIN_V_ID],1,2),42,x.[PRODUCT_DT].[ACC_PROD] -> (DEPN)[DATE_ENDING],x.[PRODUCT_CT].[ACC_PROD] -> (DEPN)[DATE_ENDING]) :KONEC
) in ::[MAIN_DOCUM]
where to_date(x.[DATE_DOC],'DD.MM.YYYY')>= to_date (sys_context(user_context,'DATE_BEGIN'),'DD.MM.YYYY')
  and to_date(x.[DATE_DOC],'DD.MM.YYYY')<= to_date (sys_context(user_context,'DATE_END'),'DD.MM.YYYY')
  and (substr(x.[ACC_DT].[MAIN_V_ID],1,3) in (423,426) or substr(x.[ACC_KT].[MAIN_V_ID],1,3) in (423,426))
  and substr(x.[NAZN],1,10) != 'Переоценка';
pas
Профи


Вступление в Клуб: 20.11.2007
СообщениеЧт Ноя 03, 2011 13:36    Ответить с цитатой
Полезность: Нет оценки
DEPOSIT_MULT, DEPOSIT_PRIV, DEPOSIT_ORG смотрел?
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Ноя 03, 2011 13:47   % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
pas пишет:
DEPOSIT_MULT, DEPOSIT_PRIV, DEPOSIT_ORG смотрел?


А чем они мне могут помочь?

По сути все данные есть, в том числе и для функции ::[PRC_SCHEME].[LIB].GetPrcRate
- вид есть, дата есть, сумму тоже вытащить можно по счёту.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Ноя 03, 2011 14:03    Ответить с цитатой
Полезность: Нет оценки
Рекомендую Вам начать со следующего

1) уточнить, процентная ставка реально плавающая от остатка депозита или все таки плавающая на момент заключения /пролонгации - от суммы договора [SUMMA_DOG]

2) как будут пользоваться представлением - если для уже проведенных документов, это одно, если хотят смотреть данные на еще не проведенном документе (или в обоих случаях) - это задача будет гораздо сложнее (например, в случае плавающей ставки от остатка депозита для проводки на внесение средств )
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Ноя 03, 2011 14:13   % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Рекомендую Вам начать со следующего

1) уточнить

2) как будут пользоваться представлением


1.) Если ставка сложная, то ставка реально плавающая от остатка депозита (на вечер от даты проводки)

2) Смотрим документы только проведённые (условие дорисую, чтобы другие статусы не попадали)
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПн Ноя 07, 2011 08:37   % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
Ладно, буду тогда свою функцию использовать, т.к. как только в штатную ставиш сумму или сумму+срок - сваливаются половина договоров с простой % стакой - выдаёт 365%, мне бы такие % Laughing

Подскажите,пожалуйста, как из этого PL+ представления вызвать оракловую функцию?
Моя функция:

FUNCTION kav_depoz_prost_proc(depoz_id IN NUMBER,summa_dog IN NUMBER )
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Ноя 07, 2011 09:56   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
Ладно, буду тогда свою функцию использовать, т.к. как только в штатную ставиш сумму или сумму+срок - сваливаются половина договоров с простой % стакой - выдаёт 365%, мне бы такие % Laughing

Подскажите,пожалуйста, как из этого PL+ представления вызвать оракловую функцию?
Моя функция:

FUNCTION kav_depoz_prost_proc(depoz_id IN NUMBER,summa_dog IN NUMBER )


Код:
::[Имя класса].[имя операции(библиотеки)]. kav_depoz_prost_proc(парам.1, парам.2, ..., парам.N);

_________________
всегда есть как минимум 2 выхода
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПн Ноя 07, 2011 10:02   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:

Код:
::[Имя класса].[имя операции(библиотеки)]. kav_depoz_prost_proc(парам.1, парам.2, ..., парам.N);


нет, я же говорю, она ОРАКЛОВАЯ, её нет в словаре. Мне её надо вызвать стандартным PL/SQL из pl+ представления
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеПн Ноя 07, 2011 10:22   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
Alexsey пишет:

Код:
::[Имя класса].[имя операции(библиотеки)]. kav_depoz_prost_proc(парам.1, парам.2, ..., парам.N);


нет, я же говорю, она ОРАКЛОВАЯ, её нет в словаре. Мне её надо вызвать стандартным PL/SQL из pl+ представления


Оракловые функции вызываются без квадратных скобок.
Но, если я правильно понял, то эту функцию Вы разрабатываете, а значит её нужно поместить в PL+ библиотеку, и использовать вызов, как описал Алексей.
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПн Ноя 07, 2011 10:37   Re: % ставка по депозитному договору Ответить с цитатой
Полезность: Нет оценки
maestro пишет:

Оракловые функции вызываются без квадратных скобок.
Но, если я правильно понял, то эту функцию Вы разрабатываете, а значит её нужно поместить в PL+ библиотеку, и использовать вызов, как описал Алексей.


А мы можем разве ЦФТшные библиотеки править? Они же перезатерутся при обновлении.
markoff
Участник - экстремал


Вступление в Клуб: 09.06.2009
СообщениеПн Ноя 07, 2011 10:51    Ответить с цитатой
Полезность: Нет оценки
Смысл их помещать в PL+ библиотеку?
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru