1 PACKAGE LNS_FIN_UTILS AS
2 /* $Header: LNS_FIN_UTILS_S.pls 120.5.12010000.3 2008/11/21 12:24:03 mbolli ship $ */
3
4 /*========================================================================+
5 | Declare PUBLIC Data Types and Variables
6 +========================================================================*/
7 TYPE DATE_TBL IS TABLE OF DATE INDEX BY BINARY_INTEGER;
8
9
10 /*========================================================================+
11 | types for building payment schedule
12 +========================================================================*/
13 TYPE PAYMENT_SCHEDULE is record(PERIOD_BEGIN_DATE DATE
14 ,PERIOD_END_DATE DATE
15 ,PERIOD_DUE_DATE DATE
16 ,CONTENTS VARCHAR(30) -- row contents: PRIN, INT, PRIN_INT
17 );
18
19 TYPE PAYMENT_SCHEDULE_TBL is table of PAYMENT_SCHEDULE index by binary_integer;
20
21 /* BEGIN DATE FUNCTIONS */
22 function getNextDate(p_date in date
23 ,p_interval_type in varchar2
24 ,p_direction in number) return Date;
25
26 function getDayCount(p_start_date in date
27 ,p_end_date in date
28 ,p_day_count_method in varchar2) return number;
29
30 function daysInYear(p_year in number
31 ,p_year_count_method in varchar2) return number;
32
33 function julian_date(p_date in date) return number;
34
35 function isLeapYear(p_year in number) return boolean;
36
37 function intervalsInPeriod(p_period_number in number
38 ,p_period_type1 in varchar2
39 ,p_period_type2 in varchar2) return number;
40
41 function buildPaymentSchedule(p_loan_start_date in date
42 ,p_loan_maturity_date in date
43 ,p_first_pay_date in date
44 ,p_num_intervals in number
45 ,p_interval_type in varchar2
46 ,p_pay_in_arrears in boolean) return LNS_FIN_UTILS.PAYMENT_SCHEDULE_TBL;
47
48 function buildSIPPaymentSchedule(p_loan_start_date in date
49 ,p_loan_maturity_date in date
50 ,p_int_first_pay_date in date
51 ,p_int_num_intervals in number
52 ,p_int_interval_type in varchar2
53 ,p_int_pay_in_arrears in boolean
54 ,p_prin_first_pay_date in date
55 ,p_prin_num_intervals in number
56 ,p_prin_interval_type in varchar2
57 ,p_prin_pay_in_arrears in boolean) return LNS_FIN_UTILS.PAYMENT_SCHEDULE_TBL;
58
59 function convertPeriod(p_term in number
60 ,p_term_period in varchar2) return number;
61
62 /* END DATE FUNCTIONS */
63
64 /* BEGIN LOAN PROPERTIES FUNCTIONS */
65 function getMaturityDate(p_term in number
66 ,p_term_period in varchar2
67 ,p_frequency in varchar2
68 ,p_start_date in date) return date;
69
70 -- fix for bug 5842639: added p_loan_start_date parameter
71 function getPaymentSchedule(p_loan_start_date in date
72 ,p_first_pay_date in date
73 ,p_maturity_date in date
74 ,p_pay_in_arrears in boolean
75 ,p_num_intervals in number
76 ,p_interval_type in varchar2) return LNS_FIN_UTILS.DATE_TBL;
77
78 function getInstallmentDate(p_loan_id IN NUMBER
79 ,p_installment_number IN NUMBER) return date;
80
81 function getNumberInstallments(p_loan_id in number) return NUMBER;
82
83 function getNumberInstallments(p_loan_id in number
84 ,p_phase in varchar2) return NUMBER;
85
86 function getActiveRate(p_loan_id in number) return number;
87
88 /* END LOAN PROPERTIES FUNCTIONS */
89
90 /* BEGIN RATE FUNCTIONS */
91 function convertRate(p_annualized_rate in number
92 ,p_amortization_frequency in varchar2) return number;
93
94 function getRateForDate(p_index_rate_id in number
95 ,p_rate_date in date) return number;
96 /* END RATE FUNCTIONS */
97
98
99
100 END LNS_FIN_UTILS;