DBA Data[Home] [Help]

PACKAGE BODY: APPS.LNS_DEFAULT_HOOKS_PVT

Source


1 PACKAGE BODY LNS_DEFAULT_HOOKS_PVT as
2 /* $Header: LNS_DEF_HOOKS_B.pls 120.0.12010000.1 2009/07/02 17:41:43 scherkas noship $ */
3 
4 
5 /*=======================================================================+
6  |  Package Global Constants
7  +=======================================================================*/
8     G_PKG_NAME                      CONSTANT VARCHAR2(30):= 'LNS_DEFAULT_HOOKS_PVT';
9     G_LOG_ENABLED                   varchar2(5);
10     G_MSG_LEVEL                     NUMBER;
11 
12 
13 /*========================================================================
14  | PRIVATE PROCEDURE LogMessage
15  |
16  | DESCRIPTION
17  |      This procedure logs debug messages to db and to CM log
18  |
19  | CALLED FROM PROCEDURES/FUNCTIONS (local to this package body)
20  |
21  | CALLS PROCEDURES/FUNCTIONS (local to this package body)
22  |      None
23  |
24  | PARAMETERS
25  |      p_msg_level     IN      Debug msg level
26  |      p_msg           IN      Debug msg itself
27  |
28  | KNOWN ISSUES
29  |      None
30  |
31  | NOTES
32  |      Any interesting aspect of the code in the package body which needs
33  |      to be stated.
34  |
35  | MODIFICATION HISTORY
36  | Date                  Author            Description of Changes
37  | 04-02-2008            scherkas          Created
38  |
39  *=======================================================================*/
40 Procedure LogMessage(p_msg_level IN NUMBER, p_msg in varchar2)
41 IS
42 BEGIN
43     if (p_msg_level >= G_MSG_LEVEL) then
44 
45         FND_LOG.STRING(p_msg_level, G_PKG_NAME, p_msg);
46         if FND_GLOBAL.Conc_Request_Id is not null then
47             fnd_file.put_line(FND_FILE.LOG, p_msg);
48         end if;
49 
50     end if;
51 
52 EXCEPTION
53     WHEN OTHERS THEN
54         LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: ' || sqlerrm);
55 END;
56 
57 
58 
59  /*========================================================================
60  | PUBLIC PROCEDURE SHIFT_PAY_START_DATES
61  |
62  | DESCRIPTION
63  |      This procedure implements default algorithm for shifting first interest payment and first principal payment dates
64  |       on full disbursement payment in AP. New dates are returned back to caller.
65  |
66  | CALLED FROM PROCEDURES/FUNCTIONS (local to this package body)
67  |      None
68  |
69  | CALLS PROCEDURES/FUNCTIONS (local to this package body)
70  |
71  |
72  | PSEUDO CODE/LOGIC
73  |    NEW_INT_START_DATE = NEW_LOAN_START_DATE + diff in days between ORIG_INT_START_DATE and  ORIG_LOAN_START_DATE
74  |    NEW_PRIN_START_DATE = NEW_LOAN_START_DATE + diff in months between ORIG_PRIN_START_DATE and ORIG_LOAN_START_DATE
75  |
76  | PARAMETERS
77  |      P_LOAN_ID               IN          Loan ID
78  |      P_DISBURSEMENT_DATE     IN          Disbursement Date
79  |      P_ORIG_LOAN_START_DATE  IN          Original loan start date
80  |      P_ORIG_INT_START_DATE   IN          Original interest payment start date. Passed for all amortization methods.
81  |      P_ORIG_PRIN_START_DATE  IN          Original principal payment start date. Passed only for Seperate Schedule method.
82  |      P_ORIG_LOAN_MATUR_DATE  IN          Original loan maturity date
83  |      P_NEW_LOAN_START_DATE   IN          New loan start date
84  |      P_NEW_LOAN_MATUR_DATE   IN OUT NOCOPY  New loan maturity date. If changed - new value will be stored
85  |      X_NEW_INT_START_DATE    OUT NOCOPY  New/calculated interest payment start date. Must be returned for all amortization methods.
86  |      X_NEW_PRIN_START_DATE   OUT NOCOPY  New/calculated principal payment start date. Must be returned only for Seperate Schedule method.
87  |
88  | KNOWN ISSUES
89  |      None
90  |
91  | NOTES
92  |      Any interesting aspect of the code in the package body which needs
93  |      to be stated.
94  |
95  | MODIFICATION HISTORY
96  | Date                  Author            Description of Changes
97  | 12-23-2004            scherkas          Created
98  |
99  *=======================================================================*/
100 PROCEDURE SHIFT_PAY_START_DATES(
101         P_LOAN_ID               IN              NUMBER,
102         P_DISBURSEMENT_DATE     IN              DATE,
103         P_ORIG_LOAN_START_DATE  IN              DATE,
104         P_ORIG_INT_START_DATE   IN              DATE,
105         P_ORIG_PRIN_START_DATE  IN              DATE,
106         P_ORIG_LOAN_MATUR_DATE  IN              DATE,
107         P_NEW_LOAN_START_DATE   IN              DATE,
108         P_NEW_LOAN_MATUR_DATE   IN OUT NOCOPY   DATE,
109         X_NEW_INT_START_DATE    OUT NOCOPY      DATE,
110         X_NEW_PRIN_START_DATE   OUT NOCOPY      DATE)
111 IS
112 
113 /*-----------------------------------------------------------------------+
114  | Local Variable Declarations and initializations                       |
115  +-----------------------------------------------------------------------*/
116 
117     l_api_name                      CONSTANT VARCHAR2(30) := 'SHIFT_PAY_START_DATES';
118     l_day_difference                NUMBER;
119 
120 /*-----------------------------------------------------------------------+
121  | Cursor Declarations                                                   |
122  +-----------------------------------------------------------------------*/
123 
124 BEGIN
125 
126     LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' +');
127 
128     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'Input:');
129     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_LOAN_ID: ' || P_LOAN_ID);
130     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_DISBURSEMENT_DATE: ' || P_DISBURSEMENT_DATE);
131     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_ORIG_LOAN_START_DATE: ' || P_ORIG_LOAN_START_DATE);
132     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_ORIG_INT_START_DATE: ' || P_ORIG_INT_START_DATE);
133     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_ORIG_PRIN_START_DATE: ' || P_ORIG_PRIN_START_DATE);
134     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_ORIG_LOAN_MATUR_DATE: ' || P_ORIG_LOAN_MATUR_DATE);
135     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_NEW_LOAN_START_DATE: ' || P_NEW_LOAN_START_DATE);
136     LogMessage(FND_LOG.LEVEL_PROCEDURE, 'P_NEW_LOAN_MATUR_DATE: ' || P_NEW_LOAN_MATUR_DATE);
137 
138     -- default new payment start dates
139     X_NEW_INT_START_DATE := P_NEW_LOAN_START_DATE;
140     if P_ORIG_PRIN_START_DATE is not null then
141         X_NEW_PRIN_START_DATE := P_NEW_LOAN_START_DATE;
142     end if;
143 
144     -- count the difference between the original loan start date and original interest payment start date
145     l_day_difference := P_ORIG_INT_START_DATE - P_ORIG_LOAN_START_DATE;
146     logMessage(FND_LOG.LEVEL_PROCEDURE, 'l_int_day_difference: ' || l_day_difference);
147 
148     X_NEW_INT_START_DATE := P_NEW_LOAN_START_DATE + l_day_difference;
149     logMessage(FND_LOG.LEVEL_PROCEDURE, 'X_NEW_INT_START_DATE: ' || X_NEW_INT_START_DATE);
150 
151     -- count the difference between the old start date and old principal first payment date (if its not null)
152     if P_ORIG_PRIN_START_DATE is not null then
153         l_day_difference := P_ORIG_PRIN_START_DATE - P_ORIG_LOAN_START_DATE;
154         logMessage(FND_LOG.LEVEL_PROCEDURE, 'l_prin_day_difference: ' || l_day_difference);
155 
156         X_NEW_PRIN_START_DATE := P_NEW_LOAN_START_DATE + l_day_difference;
157         logMessage(FND_LOG.LEVEL_PROCEDURE, 'X_NEW_PRIN_START_DATE: ' || X_NEW_PRIN_START_DATE);
158     end if;
159 
160     LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
161 
162 EXCEPTION
163     WHEN OTHERS THEN
164         LogMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME || '.' || l_api_name || ' - In exception');
165 END;
166 
167 
168 
169 
170 BEGIN
171     G_LOG_ENABLED := 'N';
172     G_MSG_LEVEL := FND_LOG.LEVEL_UNEXPECTED;
173 
174     /* getting msg logging info */
175     G_LOG_ENABLED := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'), 'N');
176     if (G_LOG_ENABLED = 'N') then
177        G_MSG_LEVEL := FND_LOG.LEVEL_UNEXPECTED;
178     else
179        G_MSG_LEVEL := NVL(to_number(FND_PROFILE.VALUE('AFLOG_LEVEL')), FND_LOG.LEVEL_UNEXPECTED);
180     end if;
181 
182     LogMessage(FND_LOG.LEVEL_STATEMENT, 'G_LOG_ENABLED: ' || G_LOG_ENABLED);
183     LogMessage(FND_LOG.LEVEL_STATEMENT, 'G_MSG_LEVEL: ' || G_MSG_LEVEL);
184 
185 END;