DBA Data[Home] [Help]

PACKAGE: APPS.LNS_FINANCIALS

Source


1 PACKAGE LNS_FINANCIALS AS
2 /* $Header: LNS_FINANCIAL_S.pls 120.11.12010000.6 2009/01/12 20:19:55 scherkas ship $ */
3 
4 /*========================================================================+
5 |  Declare PUBLIC Data Types and Variables
6 +========================================================================*/
7 
8 /*========================================================================+
9 |  Interest Rate Rec is for capturing interest rate details
10 |  Rate Schedule Table is to help handle multi-rate loans
11 +========================================================================*/
12   TYPE INTEREST_RATE_REC IS RECORD(RATE_ID                  NUMBER
13                                   ,BEGIN_DATE               DATE
14                                   ,END_DATE                 DATE
15                                   ,ANNUAL_RATE              NUMBER
16                                   ,SPREAD                   NUMBER
17                                   ,BEGIN_INSTALLMENT_NUMBER NUMBER
18                                   ,END_INSTALLMENT_NUMBER   NUMBER
19                                   ,INTEREST_ONLY_FLAG       VARCHAR2(1)
20                                   ,PHASE                    VARCHAR2(30)
21                                   ,FLOATING_FLAG            VARCHAR2(1));
22 
23   TYPE RATE_SCHEDULE_TBL IS TABLE OF INTEREST_RATE_REC INDEX BY BINARY_INTEGER;
24 
25 /*========================================================================+
26 |  This is the main record type for amortization
27 |  The runAmortization procedures will return this information to UI
28 +========================================================================*/
29   TYPE AMORTIZATION_REC IS RECORD(INSTALLMENT_NUMBER   NUMBER
30                                  ,DUE_DATE             DATE
31                                  ,PERIOD_START_DATE    DATE
32                                  ,PERIOD_END_DATE      DATE
33                                  ,PRINCIPAL_AMOUNT     NUMBER
34                                  ,INTEREST_AMOUNT      NUMBER
35                                  ,NORMAL_INT_AMOUNT    NUMBER
36                                  ,ADD_PRIN_INT_AMOUNT  NUMBER
37                                  ,ADD_INT_INT_AMOUNT   NUMBER
38                                  ,PENAL_INT_AMOUNT     NUMBER
39                                  ,FEE_AMOUNT           NUMBER
40                                  ,OTHER_AMOUNT         NUMBER
41                                  ,BEGIN_BALANCE        NUMBER
42                                  ,END_BALANCE          NUMBER
43                                  ,TOTAL                NUMBER
44                                  ,INTEREST_CUMULATIVE  NUMBER
45                                  ,PRINCIPAL_CUMULATIVE NUMBER
46                                  ,FEES_CUMULATIVE      NUMBER
47                                  ,OTHER_CUMULATIVE     NUMBER
48                                  ,RATE_ID              NUMBER
49                                  ,RATE_UNADJ           NUMBER
50                                  ,RATE_CHANGE_FREQ     VARCHAR2(30)
51                                  ,SOURCE               VARCHAR2(30)
52                                  ,GRAND_TOTAL_FLAG     VARCHAR2(1)
53                                  ,UNPAID_PRIN          NUMBER
54                                  ,UNPAID_INT           NUMBER
55                                  ,INTEREST_RATE        NUMBER);
56 
57   TYPE AMORTIZATION_TBL IS TABLE OF AMORTIZATION_REC INDEX BY BINARY_INTEGER;
58 
59 /*========================================================================+
60 |  This record type will contain all the pertinent properties for a loan
61 |  includes reamortization , currency, arrears, amounts
62 |+========================================================================*/
63   TYPE LOAN_DETAILS_REC IS RECORD(LOAN_ID                       NUMBER       -- loan id
64                                  ,LOAN_TERM                     NUMBER       -- term of the loan
65                                  ,LOAN_TERM_PERIOD              VARCHAR2(30) -- term period of the loan
66                                  ,AMORTIZED_TERM                NUMBER       -- amotrtized term of the loan
67                                  ,AMORTIZED_TERM_PERIOD         VARCHAR2(30) -- amotrtized term period of the loan
68                                  ,AMORTIZATION_FREQUENCY        VARCHAR2(30)
69                                  ,PAYMENT_FREQUENCY             VARCHAR2(30)
70                                  ,FIRST_PAYMENT_DATE            DATE
71                                  ,LOAN_START_DATE               DATE
72                                  ,REQUESTED_AMOUNT              NUMBER
73                                  ,FUNDED_AMOUNT                 NUMBER
74                                  ,REMAINING_BALANCE             NUMBER
75                                  ,PRINCIPAL_PAID_TO_DATE        NUMBER
76                                  ,INTEREST_PAID_TO_DATE         NUMBER
77                                  ,FEES_PAID_TO_DATE             NUMBER
78                                  ,UNPAID_PRINCIPAL              NUMBER
79                                  ,UNPAID_INTEREST               NUMBER
80                                  ,UNBILLED_PRINCIPAL            NUMBER
81                                  ,MATURITY_DATE                 DATE
82                                  ,NUMBER_INSTALLMENTS           NUMBER       -- based off of TERM + TERM_PERIOD
83                                  ,NUM_AMORTIZATION_INTERVALS    NUMBER       -- based off of AMORTIZATION_TERM + AMORTIZATION_TERM_PERIOD
84                                  ,REAMORTIZE_OVERPAY            VARCHAR2(1)
85                                  ,REAMORTIZE_UNDERPAY           VARCHAR2(1)
86                                  ,REAMORTIZE_WITH_INTEREST      VARCHAR2(1)  -- for future use
87                                  ,REAMORTIZE_AMOUNT             NUMBER
88                                  ,REAMORTIZE_FROM_INSTALLMENT   NUMBER
89                                  ,REAMORTIZE_TO_INSTALLMENT     NUMBER       -- for future use
90                                  ,LAST_INSTALLMENT_BILLED       NUMBER
91                                  ,DAY_COUNT_METHOD              VARCHAR2(30) -- day count methodology
92                                  ,PAY_IN_ARREARS                VARCHAR2(1)  -- Y/N for pay in arrears
93                                  ,PAY_IN_ARREARS_BOOLEAN        BOOLEAN      -- boolean for pay in arrears
94                                  ,CUSTOM_SCHEDULE               VARCHAR2(1)  -- Y/N for custom payment schedule
95                                  ,LOAN_STATUS                   VARCHAR2(30) -- loan status
96                                  ,LAST_INTEREST_ACCRUAL         DATE         -- last interest accrual date
97                                  ,LAST_ACTIVITY                 VARCHAR2(30) -- for future use
98                                  ,LAST_ACTIVITY_DATE            DATE         -- last activity date on the loan
99                                  ,LOAN_CURRENCY                 VARCHAR2(15) -- loan currency
100                                  ,CURRENCY_PRECISION            NUMBER       -- currency precision
101                                  ,OPEN_TERM                     NUMBER       -- open term
102                                  ,OPEN_TERM_PERIOD              VARCHAR2(30) -- open term period
103                                  ,OPEN_PAYMENT_FREQUENCY        VARCHAR2(30) -- payment freq during open phase
104                                  ,OPEN_FIRST_PAYMENT_DATE       DATE         -- open phase first pay date
105                                  ,OPEN_START_DATE               DATE         -- begin date of open phase
106                                  ,OPEN_MATURITY_DATE            DATE         -- maturity date of open phase
107                                  ,LOAN_PHASE                    VARCHAR2(30) -- OPEN or TERM for phase of the loan
108                                  ,BALLOON_PAYMENT_TYPE          VARCHAR2(30)  -- TERM or AMOUNT
109                                  ,BALLOON_PAYMENT_AMOUNT        NUMBER       -- if balloon type = AMOUNT then the actual amount
110                                  ,AMORTIZED_AMOUNT              NUMBER       -- amortized amount
111                                  ,RATE_TYPE                     VARCHAR2(30) -- fixed or variable
112                                  ,OPEN_RATE_CHG_FREQ            VARCHAR2(30) -- how often rate changes during open phase
113                                  ,OPEN_INDEX_RATE_ID            NUMBER       -- index_rate_id
114                                  ,OPEN_INDEX_DATE               DATE         -- open index date
115                                  ,OPEN_CEILING_RATE             NUMBER       -- open ceiling rate
116                                  ,OPEN_FLOOR_RATE               NUMBER       -- open floor rate
117                                  ,OPEN_FIRST_PERCENT_INCREASE   NUMBER       -- open first percentage increase
118                                  ,OPEN_ADJ_PERCENT_INCREASE     NUMBER       -- open percentage increase btwn adjustments
119                                  ,OPEN_LIFE_PERCENT_INCREASE    NUMBER       -- open lifetime max adjustment for interest
120                                  ,TERM_RATE_CHG_FREQ            VARCHAR2(30) -- how often rate changes during term phase
121                                  ,TERM_INDEX_RATE_ID            NUMBER       -- index_rate_id
122                                  ,TERM_INDEX_DATE               DATE         -- term index date
123                                  ,TERM_CEILING_RATE             NUMBER       -- term ceiling rate
124                                  ,TERM_FLOOR_RATE               NUMBER       -- term floor rate
125                                  ,TERM_FIRST_PERCENT_INCREASE   NUMBER       -- term first percentage increase
126                                  ,TERM_ADJ_PERCENT_INCREASE     NUMBER       -- term percentage increase btwn adjustments
127                                  ,TERM_LIFE_PERCENT_INCREASE    NUMBER       -- term lifetime max adjustment for interest
128                                  ,OPEN_TO_TERM_FLAG             VARCHAR2(1)
129                                  ,OPEN_TO_TERM_EVENT            VARCHAR2(30)
130                                  ,MULTIPLE_FUNDING_FLAG         VARCHAR2(1)
131                                  ,SECONDARY_STATUS              VARCHAR2(30)
132                                  ,OPEN_PROJECTED_INTEREST_RATE  NUMBER  -- open projected interest rate
133                                  ,TERM_PROJECTED_INTEREST_RATE  NUMBER  -- term projected interest rate
134                                  ,INITIAL_INTEREST_RATE         NUMBER                                       --
135                                  ,LAST_INTEREST_RATE            NUMBER                                    --
136                                  ,FIRST_RATE_CHANGE_DATE        DATE
137                                  ,NEXT_RATE_CHANGE_DATE         DATE
138                                  ,CALCULATION_METHOD            VARCHAR2(30)  -- interest calc method: simple, compound
139                                  ,INTEREST_COMPOUNDING_FREQ     VARCHAR2(30)
140                                  ,PAYMENT_CALC_METHOD           VARCHAR2(30)  -- payment calc method: equal payment, equal principal
141                                  ,ORIG_PAY_CALC_METHOD          VARCHAR2(30)
142                                  ,PRIN_FIRST_PAY_DATE           DATE    -- principal first payment date; used with PAYMENT_CALC_METHOD=SEPERATE_PRIN_INT
143                                  ,PRIN_PAYMENT_FREQUENCY        VARCHAR2(30)  -- principal payment freq; used with PAYMENT_CALC_METHOD=SEPERATE_PRIN_INT
144                                  ,PRIN_NUMBER_INSTALLMENTS      NUMBER  -- principal number of installments; used with PAYMENT_CALC_METHOD=SEPERATE_PRIN_INT
145                                  ,PRIN_AMORT_INSTALLMENTS       NUMBER  -- principal number of amortized installments; used with PAYMENT_CALC_METHOD=SEPERATE_PRIN_INT
146                                  ,PRIN_PAY_IN_ARREARS           VARCHAR2(1)  -- Y/N for principal pay in arrears; used with PAYMENT_CALC_METHOD=SEPERATE_PRIN_INT
147                                  ,PRIN_PAY_IN_ARREARS_BOOL      BOOLEAN      -- boolean for principal pay in arrears
148                                  ,EXTEND_FROM_INSTALLMENT       NUMBER
149                                  ,ORIG_NUMBER_INSTALLMENTS      NUMBER
150                                  ,PENAL_INT_RATE                NUMBER
151                                  ,PENAL_INT_GRACE_DAYS          NUMBER
152 							);
153 
154 /*========================================================================+
155 |  this is for the old payoff calculation
156 +========================================================================*/
157   TYPE PAYOFF_REC is RECORD(TOTAL_PRINCIPAL_REMAINING    NUMBER
158                            ,UNPAID_PRINCIPAL             NUMBER -- billed but not paid
159                            ,UNBILLED_PRINCIPAL           NUMBER -- not billed
160                            ,TOTAL_INTEREST_REMAINING     NUMBER
161                            ,UNPAID_INTEREST              NUMBER -- billed but not paid
162                            ,ADDITIONAL_INTEREST_DUE      NUMBER -- this is the main calculation needs
163                            ,TOTAL_FEES_REMAINING         NUMBER
164                            ,UNPAID_FEES                  NUMBER -- billed but not paid
165                            ,ADDITIONAL_FEES_DUE          NUMBER -- for future
166                            ,DUE_DATE                     DATE);
167 
168   TYPE PAYOFF_TBL is TABLE OF PAYOFF_REC INDEX BY BINARY_INTEGER;
169 
170 /*========================================================================+
171 |  new record type for payoff enhancements
172 |  tbl type is extensible by "PURPOSE"
173 +========================================================================*/
174   TYPE PAYOFF_REC2 is record(PAYOFF_PURPOSE  VARCHAR2(30)
175                             ,BILLED_AMOUNT   NUMBER
176                             ,UNBILLED_AMOUNT NUMBER
177                             ,TOTAL_AMOUNT    NUMBER );
178 
179   TYPE PAYOFF_TBL2 is TABLE OF PAYOFF_REC2 INDEX BY BINARY_INTEGER;
180 
181 /*========================================================================+
182 |  used to calculate average daily balance
183 +========================================================================*/
184   TYPE LOAN_ACTIVITY_REC is record(ACTIVITY_DATE     DATE
185                                   ,ACTIVITY_AMOUNT   NUMBER
186                                   ,ENDING_BALANCE    NUMBER
187                                   ,DAYS_AT_BALANCE   NUMBER);
188 
189   TYPE LOAN_ACTIVITY_TBL is table of LOAN_ACTIVITY_REC index by binary_integer;
190 
191 /*========================================================================+
192 |  types for building payment schedule
193 +========================================================================*/
194   TYPE PAYMENT_SCHEDULE is record(PERIOD_BEGIN_DATE  DATE
195                                  ,PERIOD_END_DATE    DATE);
196 
197   TYPE PAYMENT_SCHEDULE_TBL is table of PAYMENT_SCHEDULE index by binary_integer;
198 
199 /*========================================================================+
200 |  helper types
201 +========================================================================*/
202   TYPE DATE_TBL   IS TABLE OF DATE INDEX BY BINARY_INTEGER;
203   type amount_tbl is table of number index by Binary_Integer;
204   type vchar_tbl  is table of varchar2(30) index by binary_integer;
205 
206 /*========================================================================+
207 |  fees types
208 +========================================================================*/
209   TYPE FEES_REC IS RECORD(FEE_ID            NUMBER
210                          ,FEE_NAME          VARCHAR2(50)
211                          ,FEE_AMOUNT        NUMBER
212                          ,FEE_INSTALLMENT   NUMBER
213                          ,FEE_DESCRIPTION   VARCHAR2(250)
214                          ,FEE_SCHEDULE_ID   NUMBER
215                          ,FEE_WAIVABLE_FLAG VARCHAR2(1)
216                          ,WAIVE_AMOUNT      NUMBER
217                          ,BILLED_FLAG       VARCHAR2(1)
218                          ,ACTIVE_FLAG       VARCHAR2(1));
219 
220  TYPE FEES_TBL IS TABLE OF FEES_REC INDEX BY BINARY_INTEGER;
221 
222 procedure shiftLoan(p_loan_id        in number
223                    ,p_init_msg_list  IN VARCHAR2
224                    ,p_commit         IN VARCHAR2
225                    ,x_return_status  OUT NOCOPY VARCHAR2
226                    ,x_msg_count      OUT NOCOPY NUMBER
230                         ,p_new_start_date in date
227                    ,x_msg_data       OUT NOCOPY VARCHAR2);
228 
229 procedure shiftLoanDates(p_loan_id        in number
231 						,p_phase          in varchar2
232                         ,x_loan_details   out NOCOPY lns_financials.loan_details_rec
233                         ,x_dates_shifted_flag OUT NOCOPY VARCHAR2
234                         ,x_return_status  OUT NOCOPY VARCHAR2
235                         ,x_msg_count      OUT NOCOPY NUMBER
236                         ,x_msg_data       OUT NOCOPY VARCHAR2);
237 
238 function getAverageDailyBalance(p_loan_id     number
239                                ,p_term_id     number
240                                ,p_from_date   date
241                                ,p_to_date     date
242                                ,p_calc_method number) return number;
243 
244 function getWeightedBalance(p_loan_id          number
245                            ,p_from_date        date
246                            ,p_to_date          date
247                            ,p_calc_method      varchar2
248 													 ,p_phase            varchar2
249 													 ,p_day_count_method varchar2) return number;
250 
251 procedure validatePayoff(p_loan_details   in LNS_FINANCIALS.LOAN_DETAILS_REC
252                         ,p_payoff_date    in date
253                         ,x_return_status  OUT NOCOPY VARCHAR2
254                         ,x_msg_count      OUT NOCOPY NUMBER
255                         ,x_msg_data       OUT NOCOPY VARCHAR2);
256 
257 -- payoff calculation
258 procedure calculatePayoff(p_api_version    IN NUMBER
259                          ,p_init_msg_list  IN VARCHAR2
260                          ,p_loan_id        in number
261                          ,p_payoff_date    in date
262                          ,x_payoff_tbl     OUT NOCOPY LNS_FINANCIALS.PAYOFF_TBL2
263                          ,x_return_status  OUT NOCOPY VARCHAR2
264                          ,x_msg_count      OUT NOCOPY NUMBER
265                          ,x_msg_data       OUT NOCOPY VARCHAR2);
266 
267 function getLoanDetails(p_loan_id        in number
268                        ,p_based_on_terms in varchar2
269 											 ,p_phase          in varchar2) return LNS_FINANCIALS.LOAN_DETAILS_REC;
270 
271 function compoundInterest(p_rate         in number
272                          ,p_period_value in number
273                          ,p_period_type  in varchar2) return number;
274 
275 function getAnnualRate(p_loan_Id in number) return number;
276 
277 function getActiveRate(p_loan_id in number) return number;
278 
279 function getRemainingBalance(p_loan_id in number) return number;
280 
281 function getPeriodicRate(p_period_start_date in date
282                         ,p_period_end_date   in date
283                         ,p_annualized_rate   in number
284                         ,p_days_count_method in varchar2) return number;
285 
286 function getWeightedRate(p_loan_details in LNS_FINANCIALS.LOAN_DETAILS_REC
287                         ,p_start_date in date
288                         ,p_end_date   in date
289                         ,p_rate_tbl   in LNS_FINANCIALS.RATE_SCHEDULE_TBL) return number;
290 
291 procedure amortizeEPLoan(p_loan_details       in LNS_FINANCIALS.LOAN_DETAILS_REC
292                       ,p_rate_schedule      in LNS_FINANCIALS.RATE_SCHEDULE_TBL
293                       ,p_based_on_terms     IN VARCHAR2
294                       ,p_installment_number in number
295                       ,x_loan_amort_tbl     out nocopy LNS_FINANCIALS.AMORTIZATION_TBL);
296 
297 procedure amortizeLoan(p_loan_details       in LNS_FINANCIALS.LOAN_DETAILS_REC
301                       ,x_loan_amort_tbl     out nocopy LNS_FINANCIALS.AMORTIZATION_TBL);
298                       ,p_rate_schedule      in LNS_FINANCIALS.RATE_SCHEDULE_TBL
299                       ,p_based_on_terms     IN VARCHAR2
300                       ,p_installment_number in number
302 
303 procedure amortizeLoan(p_loan_Id            in number
304                       ,p_based_on_terms     IN VARCHAR2
305                       ,p_installment_number in number
306                       ,x_loan_amort_tbl     out nocopy LNS_FINANCIALS.AMORTIZATION_TBL);
307 
308 procedure loanProjection(p_loan_details       in  LNS_FINANCIALS.LOAN_DETAILS_REC
309                         ,p_rate_schedule      in  LNS_FINANCIALS.RATE_SCHEDULE_TBL
310                         ,x_loan_amort_tbl     out nocopy LNS_FINANCIALS.AMORTIZATION_TBL);
311 
312 procedure runOpenProjection(p_init_msg_list  IN VARCHAR2
313                            ,p_loan_ID        IN NUMBER
314                            ,p_based_on_terms IN VARCHAR2
315                            ,x_amort_tbl      OUT NOCOPY LNS_FINANCIALS.AMORTIZATION_TBL
316                            ,x_return_status  OUT NOCOPY VARCHAR2
317                            ,x_msg_count      OUT NOCOPY NUMBER
318                            ,x_msg_data       OUT NOCOPY VARCHAR2);
319 
320 procedure validateLoan(p_api_version    IN NUMBER
321                       ,p_init_msg_list  IN VARCHAR2
322                       ,p_loan_ID        IN NUMBER
323                       ,x_return_status  OUT NOCOPY VARCHAR2
324                       ,x_msg_count      OUT NOCOPY NUMBER
325                       ,x_msg_data       OUT NOCOPY VARCHAR2);
326 
327 procedure runAmortization(p_api_version    IN NUMBER
328                          ,p_init_msg_list  IN VARCHAR2
329                          ,p_commit         IN VARCHAR2
330                          ,p_loan_ID        IN NUMBER
331                          ,p_based_on_terms IN VARCHAR2
332                          ,x_amort_tbl      OUT NOCOPY LNS_FINANCIALS.AMORTIZATION_TBL
333                          ,x_return_status  OUT NOCOPY VARCHAR2
334                          ,x_msg_count      OUT NOCOPY NUMBER
335                          ,x_msg_data       OUT NOCOPY VARCHAR2);
336 
337 function getRateSchedule(p_loan_id in number
338                         ,p_phase   in varchar2) return LNS_FINANCIALS.RATE_SCHEDULE_TBL;
339 
340 --function getRateSchedule(p_loan_id in number) return LNS_FINANCIALS.RATE_SCHEDULE_TBL;
341 
342 function getRateDetails(p_installment IN NUMBER
343                        ,p_rate_tbl    IN LNS_FINANCIALS.RATE_SCHEDULE_TBL) return LNS_FINANCIALS.INTEREST_RATE_REC;
344 
345 function getRateDetails(p_date in date
346                        ,p_rate_tbl in LNS_FINANCIALS.RATE_SCHEDULE_TBL) return LNS_FINANCIALS.INTEREST_RATE_REC;
347 
348 function termlyPayment(p_termly_amount     in number
349                       ,p_annual_rate       in number
350                       ,p_loan_amount       in number
351                       ,p_payments_per_year in number
352                       ,p_period_type       in varchar2) return number;
353 
354 procedure getInstallment(p_api_version        IN NUMBER
355                         ,p_init_msg_list      IN VARCHAR2
356                         ,p_commit             IN VARCHAR2
357                         ,p_loan_Id            IN NUMBER
358                         ,p_installment_number IN NUMBER
359                         ,x_amortization_rec   OUT NOCOPY LNS_FINANCIALS.AMORTIZATION_REC
360                         ,x_fees_tbl           OUT NOCOPY LNS_FINANCIALS.FEES_TBL
361                         ,x_return_status      OUT NOCOPY VARCHAR2
362                         ,x_msg_count          OUT NOCOPY NUMBER
363                         ,x_msg_data           OUT NOCOPY VARCHAR2);
364 
365 procedure getOpenInstallment(p_init_msg_list      IN VARCHAR2
366                             ,p_loan_Id            in number
367                             ,p_installment_number in number
368                             ,x_amortization_rec   OUT NOCOPY LNS_FINANCIALS.AMORTIZATION_REC
369                             ,x_fees_tbl           OUT NOCOPY LNS_FINANCIALS.FEES_TBL
370                             ,x_return_status      OUT NOCOPY VARCHAR2
371                             ,x_msg_count          OUT NOCOPY NUMBER
372                             ,x_msg_data           OUT NOCOPY VARCHAR2);
373 
374 function getRatesTable(p_index_rate_id           in number
375 											,p_index_date              in date
376 											,p_rate_change_frequency   in varchar2
377 											,p_maturity_date           in date) return LNS_FINANCIALS.RATE_SCHEDULE_TBL;
378 
379 
380 procedure preProcessInstallment(p_api_version        IN NUMBER
381                                ,p_init_msg_list      IN VARCHAR2
382                                ,p_commit             IN VARCHAR2
383                                ,p_loan_ID            IN NUMBER
384                                ,p_installment_number IN NUMBER
385                                ,x_amortization_rec   OUT NOCOPY LNS_FINANCIALS.AMORTIZATION_REC
386                                ,x_return_status      OUT NOCOPY VARCHAR2
387                                ,x_msg_count          OUT NOCOPY NUMBER
388                                ,x_msg_data           OUT NOCOPY VARCHAR2);
389 
390 procedure preProcessOpenInstallment(p_init_msg_list      IN VARCHAR2
391                                    ,p_commit             IN VARCHAR2
392                                    ,p_loan_ID            IN NUMBER
393                                    ,p_installment_number IN NUMBER
394                                    ,x_amortization_rec   OUT NOCOPY LNS_FINANCIALS.AMORTIZATION_REC
395                                    ,x_return_status      OUT NOCOPY VARCHAR2
396                                    ,x_msg_count          OUT NOCOPY NUMBER
397                                    ,x_msg_data           OUT NOCOPY VARCHAR2);
398 
399 function calculateEPPayment(p_loan_amount     in number
400                             ,p_num_intervals   in number
401                             ,p_ending_balance  in number
402                             ,p_pay_in_arrears  in boolean) return number;
403 
404 function calculatePayment(p_loan_amount     in number
405                          ,p_periodic_rate   in number
406                          ,p_num_intervals   in number
407                          ,p_ending_balance  in number
408                          ,p_pay_in_arrears  in boolean) return number;
409 
410 function calculateInterest(p_amount             in number
411                           ,p_periodic_rate      in number
412                           ,p_compounding_period in varchar2)  return number;
413 
414 function calculateInterestRate(p_initial_rate            in number
415                               ,p_rate_to_compare         in number
416                               ,p_last_period_rate        in number
417                               ,p_max_first_adjustment    in number
418                               ,p_max_period_adjustment   in number
419                               ,p_max_lifetime_adjustment in number
420                               ,p_ceiling_rate            in number
421                               ,p_floor_rate              in number
422                               ,p_installment_number      in number) return number;
423 
424 procedure      floatingRatePostProcessing(p_loan_id                  IN NUMBER
425                                          ,p_init_msg_list            IN VARCHAR2
426                                          ,p_commit                   IN VARCHAR2
430                                          ,p_annualized_interest_rate IN NUMBER
427                                          ,p_installment_number       IN NUMBER
428                                          ,p_period_begin_date        IN DATE
429                                          ,p_interest_adjustment_freq IN VARCHAR2
431                                          ,p_rate_id                  IN OUT NOCOPY NUMBER
432                                          ,p_phase                    IN VARCHAR2
433                                          ,x_return_status            OUT NOCOPY VARCHAR2
434                                          ,x_msg_count                OUT NOCOPY NUMBER
435                                          ,x_msg_data                 OUT NOCOPY VARCHAR2);
436 
437 
438 function getAPR(p_loan_id     in number
439                ,p_term_id     in number
440                ,p_actual_flag in varchar2) return number;
441 
442 function frequency2ppy(p_frequency in varchar2) return number;
443 
444 function getCompoundPeriodicRate(p_compound_freq in varchar2
445                         ,p_payment_freq in varchar2
446                         ,p_annualized_rate   in number
447                         ,p_period_start_date in date
448                         ,p_period_end_date   in date
449                         ,p_days_count_method in varchar2) return number;
450 
451 -- This function calculates normal interest
452 function CALC_NORM_INTEREST(p_loan_id               in  number,
453                            p_calc_method           in  varchar2,
454                            p_period_start_date     in  date,
455                            p_period_end_date       in  date,
456                            p_interest_rate         in  number,
457                            p_day_count_method      in  varchar2,
458                            p_payment_freq          in  varchar2,
459                            p_compound_freq         in  varchar2) return number;
460 
461 -- This procedure calculates additional and penal interest
462 procedure CALC_ADD_INTEREST(p_loan_id               in  number,
463                            p_calc_method           in  varchar2,
464                            p_period_start_date     in  date,
465                            p_period_end_date       in  date,
466                            p_interest_rate         in  number,
467                            p_day_count_method      in  varchar2,
468                            p_payment_freq          in  varchar2,
469                            p_compound_freq         in  varchar2,
470                            p_penal_int_rate        in  number,
471                            p_prev_grace_end_date   in  date,
472                            p_grace_start_date      in  date,
473                            p_grace_end_date        in  date,
474                            p_target                in  varchar2,
475                            x_add_interest          out NOCOPY number,
476                            x_penal_interest        out NOCOPY number);
477 
478 END LNS_FINANCIALS;