[Home] [Help]
PACKAGE BODY: APPS.FA_LEASE_SCHEDULE_PUB
Source
1 PACKAGE BODY FA_LEASE_SCHEDULE_PUB AS
2 /* $Header: FAPLSCB.pls 120.3 2005/07/28 00:19:26 tkawamur noship $ */
3
4 --*********************** GLOBAL CONSTANTS *******************************
5 G_PKG_NAME CONSTANT VARCHAR2(30) := 'FA_LEASE_SCHEDULE_PUB';
6 G_API_NAME CONSTANT VARCHAR2(30) := 'LEASE SCHEDULE API';
7 G_API_VERSION CONSTANT NUMBER := 1.0;
8
9 G_LOG_LEVEL_REC fa_api_types.log_level_rec_type;
10 --*********************** PUBLIC PROCEDURES *****************************
11 -- CREATE PAYMENTS PUBLIC API
12 PROCEDURE CREATE_PAYMENTS (
13 -- STANDARD PARAMTERS --
14 P_API_VERSION IN NUMBER,
15 P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
16 P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
17 P_VALIDATION_LEVEL IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
18 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
19 X_MSG_COUNT OUT NOCOPY NUMBER,
20 X_MSG_DATA OUT NOCOPY VARCHAR2,
21 P_CALLING_FN IN VARCHAR2,
22 P_TRANS_REC IN FA_API_TYPES.TRANS_REC_TYPE,
23 PX_LEASE_SCHEDULES_REC IN OUT NOCOPY FA_API_TYPES.LEASE_SCHEDULES_REC_TYPE,
24 P_LEASE_PAYMENTS_TBL IN FA_API_TYPES.LEASE_PAYMENTS_TBL_TYPE) AS
25
26
27 VALUE_ERROR_EXCEPTION EXCEPTION;
28 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE_PAYMENTS';
29 L_API_VERSION CONSTANT NUMBER := 1.0;
30 L_PAYMENT_LINE_NUMBER NUMBER;
31 L_PAYMENT_SCHEDULE_ID NUMBER;
32 L_END_DATE DATE;
33 L_MONTHS_PER_PERIOD NUMBER;
34
35 BEGIN
36
37 SAVEPOINT CREATE_PAYMENTS;
38 if (not g_log_level_rec.initialized) then
39 if (NOT fa_util_pub.get_log_level_rec (
40 x_log_level_rec => g_log_level_rec
41 )) then
42 raise VALUE_ERROR_EXCEPTION;
43 end if;
44 end if;
45
46
47 ----------------------------------------------------
48 -- STANDARD CALL TO CHECK FOR CALL COMPATIBILITY.
49 ----------------------------------------------------
50 IF NOT FND_API.COMPATIBLE_API_CALL(L_API_VERSION,P_API_VERSION,L_API_NAME,G_PKG_NAME)
51 THEN
52 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
53 END IF;
54
55 -------------------------------------------------------------
56 -- INITIALIZE MESSAGE LIST IF P_INIT_MSG_LIST IS SET TO TRUE.
57 -------------------------------------------------------------
58 IF FND_API.TO_BOOLEAN(P_INIT_MSG_LIST) THEN
59 FA_SRVR_MSG.INIT_SERVER_MESSAGE;
60 FA_DEBUG_PKG.INITIALIZE;
61 END IF;
62
63 ----------------------------------------------------
64 -- VALIDATE SUPPLIED INFORMATION
65 ----------------------------------------------------
66 IF NOT FA_LEASE_SCHEDULE_PVT.VALIDATE_PAYMENTS(PX_LEASE_SCHEDULES_REC,P_LEASE_PAYMENTS_TBL,L_MONTHS_PER_PERIOD,
67 p_log_level_rec => g_log_level_rec)
68 THEN
69 RAISE VALUE_ERROR_EXCEPTION;
70 END IF;
71
72
73 ----------------------------------------------------
74 -- EVERYTHING LOOKS OK LET'S INSERT THIS ROW
75 ----------------------------------------------------
76 SELECT FA_LEASE_SCHEDULES_S.NEXTVAL
77 INTO
78 L_PAYMENT_SCHEDULE_ID
79 FROM DUAL;
80
81 IF (g_log_level_rec.statement_level)
82 THEN
83 FA_DEBUG_PKG.ADD('FA_LEASE_SCHEDULE_PUB', 'PAYMENT_SCHEDULE_ID', L_PAYMENT_SCHEDULE_ID
84 ,p_log_level_rec => g_log_level_rec);
85 END IF;
86
87 INSERT INTO FA_LEASE_SCHEDULES
88 (PAYMENT_SCHEDULE_ID
89 ,PAYMENT_SCHEDULE_NAME
90 ,PRESENT_VALUE
91 ,INTEREST_RATE
92 ,LEASE_INCEPTION_DATE
93 ,CREATED_BY
94 ,CREATION_DATE
95 ,LAST_UPDATE_LOGIN
96 ,LAST_UPDATE_DATE
97 ,LAST_UPDATED_BY
98 ,CURRENCY_CODE
99 ,FREQUENCY)
100 VALUES
101 (L_PAYMENT_SCHEDULE_ID
102 ,PX_LEASE_SCHEDULES_REC.PAYMENT_SCHEDULE_NAME
103 ,PX_LEASE_SCHEDULES_REC.PRESENT_VALUE
104 ,PX_LEASE_SCHEDULES_REC.INTEREST_RATE
105 ,PX_LEASE_SCHEDULES_REC.LEASE_INCEPTION_DATE
106 ,NVL(P_TRANS_REC.WHO_INFO.CREATED_BY,-1)
107 ,NVL(P_TRANS_REC.WHO_INFO.CREATION_DATE,SYSDATE)
108 ,NVL(P_TRANS_REC.WHO_INFO.LAST_UPDATE_LOGIN,-1)
109 ,NVL(P_TRANS_REC.WHO_INFO.LAST_UPDATE_DATE,SYSDATE)
110 ,NVL(P_TRANS_REC.WHO_INFO.LAST_UPDATED_BY,-1)
111 ,PX_LEASE_SCHEDULES_REC.CURRENCY_CODE
112 ,UPPER(PX_LEASE_SCHEDULES_REC.FREQUENCY));
113
114 L_PAYMENT_LINE_NUMBER:=1;
115 FOR TBL_INDEX IN 1..P_LEASE_PAYMENTS_TBL.COUNT LOOP
116 L_END_DATE:=NULL;
117 L_END_DATE:=FA_LEASE_SCHEDULE_PVT.CALC_END_DATE(P_LEASE_PAYMENTS_TBL(TBL_INDEX).NUMBER_OF_PAYMENTS,L_MONTHS_PER_PERIOD,P_LEASE_PAYMENTS_TBL(TBL_INDEX).START_DATE);
118
119 INSERT INTO FA_LEASE_PAYMENTS (
120 PAYMENT_LINE_NUMBER
121 ,PAYMENT_SCHEDULE_ID
122 ,START_DATE
123 ,PAYMENT_AMOUNT
124 ,NUMBER_OF_PAYMENTS
125 ,PERIOD
126 ,END_DATE
127 ,ROW_PRESENT_VALUE
128 ,CREATED_BY
129 ,CREATION_DATE
130 ,LAST_UPDATE_LOGIN
131 ,LAST_UPDATE_DATE
132 ,LAST_UPDATED_BY )
133 VALUES
134 (L_PAYMENT_LINE_NUMBER
135 ,L_PAYMENT_SCHEDULE_ID
136 ,P_LEASE_PAYMENTS_TBL(TBL_INDEX).START_DATE
137 ,P_LEASE_PAYMENTS_TBL(TBL_INDEX).PAYMENT_AMOUNT
138 ,P_LEASE_PAYMENTS_TBL(TBL_INDEX).NUMBER_OF_PAYMENTS
139 ,P_LEASE_PAYMENTS_TBL(TBL_INDEX).PAYMENT_TYPE
140 ,L_END_DATE
141 ,NULL
142 ,NVL(P_TRANS_REC.WHO_INFO.CREATED_BY,-1)
143 ,NVL(P_TRANS_REC.WHO_INFO.CREATION_DATE,SYSDATE)
144 ,NVL(P_TRANS_REC.WHO_INFO.LAST_UPDATE_LOGIN,-1)
145 ,NVL(P_TRANS_REC.WHO_INFO.LAST_UPDATE_DATE,SYSDATE)
146 ,NVL(P_TRANS_REC.WHO_INFO.LAST_UPDATED_BY,-1)
147 );
148
149 L_PAYMENT_LINE_NUMBER:=L_PAYMENT_LINE_NUMBER+1;
150
151 END LOOP;
152
153 PX_LEASE_SCHEDULES_REC.PAYMENT_SCHEDULE_ID:=L_PAYMENT_SCHEDULE_ID;
154
155 ----------------------------------------------------
156 -- CHECK FOR COMMIT
157 ----------------------------------------------------
158
159 IF FND_API.TO_BOOLEAN( P_COMMIT) THEN
160 COMMIT WORK;
161 END IF;
162
163 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
164
165 EXCEPTION
166 WHEN VALUE_ERROR_EXCEPTION THEN
167 ROLLBACK TO CREATE_PAYMENTS;
168 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
169 WHEN OTHERS THEN
170 ROLLBACK TO CREATE_PAYMENTS;
171 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
172 X_MSG_DATA:=SQLERRM;
173 END CREATE_PAYMENTS;
174
175 -- CREATE AMORTIZATION API
176 PROCEDURE CREATE_AMORTIZATION (
177 -- STANDARD PARAMTERS --
178 P_API_VERSION IN NUMBER,
179 P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
180 P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
181 P_VALIDATION_LEVEL IN NUMBER:=FND_API.G_VALID_LEVEL_FULL,
182 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
183 X_MSG_COUNT OUT NOCOPY NUMBER,
184 X_MSG_DATA OUT NOCOPY VARCHAR2,
185 P_CALLING_FN IN VARCHAR2,
186 P_TRANS_REC IN FA_API_TYPES.TRANS_REC_TYPE,
187 P_PAYMENT_SCHEDULE_ID IN NUMBER) AS
188
189 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE_AMORTIZATION';
190 L_API_VERSION CONSTANT NUMBER := 1.0;
191 VALUE_ERROR_EXCEPTION EXCEPTION;
192
193 BEGIN
194
195 SAVEPOINT CREATE_AMORTIZATION;
196
197 if (not g_log_level_rec.initialized) then
198 if (NOT fa_util_pub.get_log_level_rec (
199 x_log_level_rec => g_log_level_rec
200 )) then
201 raise VALUE_ERROR_EXCEPTION;
202 end if;
203 end if;
204
205
206 ----------------------------------------------------
207 -- STANDARD CALL TO CHECK FOR CALL COMPATIBILITY.
208 ----------------------------------------------------
209
210 IF NOT FND_API.COMPATIBLE_API_CALL(L_API_VERSION, P_API_VERSION,L_API_NAME, G_PKG_NAME)
211 THEN
212 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
213 END IF;
214
215 -------------------------------------------------------------
216 -- INITIALIZE MESSAGE LIST IF P_INIT_MSG_LIST IS SET TO TRUE.
217 -------------------------------------------------------------
218
219 IF FND_API.TO_BOOLEAN(P_INIT_MSG_LIST) THEN
220 FA_SRVR_MSG.INIT_SERVER_MESSAGE;
221 FA_DEBUG_PKG.INITIALIZE;
222 END IF;
223
224 IF (g_log_level_rec.statement_level) THEN
225 FA_DEBUG_PKG.ADD('FA_LEASE_SCHEDULE_PUB', 'PAYMENT_SCHEDULE_ID', P_PAYMENT_SCHEDULE_ID
226 ,p_log_level_rec => g_log_level_rec);
227 END IF;
228
229
230 ----------------------------------------------------
231 -- AMORTIZE.
232 ----------------------------------------------------
233 IF NOT FA_LEASE_SCHEDULE_PVT.AMORTIZE(P_PAYMENT_SCHEDULE_ID,P_TRANS_REC,
234 p_log_level_rec => g_log_level_rec)
235 THEN
236 RAISE VALUE_ERROR_EXCEPTION;
237 END IF;
238
239 DELETE FROM FA_AMORT_SCHEDULES WHERE PAYMENT_SCHEDULE_ID=P_PAYMENT_SCHEDULE_ID;
240
241 IF NOT FA_LEASE_SCHEDULE_PVT.AMORTIZE(P_PAYMENT_SCHEDULE_ID,P_TRANS_REC,
242 p_log_level_rec => g_log_level_rec)
243 THEN
244 RAISE VALUE_ERROR_EXCEPTION;
245 END IF;
246
247 ----------------------------------------------------
248 -- CHECK FOR COMMIT
249 ----------------------------------------------------
250 IF FND_API.TO_BOOLEAN( P_COMMIT) THEN
251 COMMIT WORK;
252 END IF;
253
254 X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
255
256 EXCEPTION
257 WHEN VALUE_ERROR_EXCEPTION THEN
258 ROLLBACK TO CREATE_AMORTIZATION;
259 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
260 WHEN OTHERS THEN
261 ROLLBACK TO CREATE_AMORTIZATION;
262 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
263 X_MSG_DATA:=SQLERRM;
264 END CREATE_AMORTIZATION;
265
266 -- CREATE LEASE SCHEDULE API
267 PROCEDURE CREATE_LEASE_SCHEDULE (
268 -- STANDARD PARAMTERS --
269 P_API_VERSION IN NUMBER,
270 P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
271 P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
272 P_VALIDATION_LEVEL IN NUMBER:=FND_API.G_VALID_LEVEL_FULL,
273 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
274 X_MSG_COUNT OUT NOCOPY NUMBER,
275 X_MSG_DATA OUT NOCOPY VARCHAR2,
276 P_CALLING_FN IN VARCHAR2,
277 P_TRANS_REC IN FA_API_TYPES.TRANS_REC_TYPE,
278 PX_LEASE_SCHEDULES_REC IN OUT NOCOPY FA_API_TYPES.LEASE_SCHEDULES_REC_TYPE,
279 P_LEASE_PAYMENTS_TBL IN FA_API_TYPES.LEASE_PAYMENTS_TBL_TYPE) AS
280
281 VALUE_ERROR_EXCEPTION EXCEPTION;
282 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE_LEASE_SCHEDULE';
283 L_API_VERSION CONSTANT NUMBER := 1.0;
284 L_RETURN_STATUS VARCHAR2(1);
285 L_MESG_COUNT NUMBER := 0;
286 L_MESG_LEN NUMBER;
287 L_MESG VARCHAR2(4000);
288
289 BEGIN
290
291 SAVEPOINT CREATE_LEASE_SCHEDULE;
292
293 if (not g_log_level_rec.initialized) then
294 if (NOT fa_util_pub.get_log_level_rec (
295 x_log_level_rec => g_log_level_rec
296 )) then
297 raise VALUE_ERROR_EXCEPTION;
298 end if;
299 end if;
300
301
302 ----------------------------------------------------
303 -- STANDARD CALL TO CHECK FOR CALL COMPATIBILITY.
304 ----------------------------------------------------
305 IF NOT FND_API.COMPATIBLE_API_CALL(L_API_VERSION, P_API_VERSION,
306 L_API_NAME, G_PKG_NAME)
307 THEN
308 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
309 END IF;
310 -------------------------------------------------------------
311 -- INITIALIZE MESSAGE LIST IF P_INIT_MSG_LIST IS SET TO TRUE.
312 -------------------------------------------------------------
313
314 IF FND_API.TO_BOOLEAN(P_INIT_MSG_LIST) THEN
315 FA_SRVR_MSG.INIT_SERVER_MESSAGE;
316 FA_DEBUG_PKG.INITIALIZE;
317 END IF;
318
319 ----------------------------------------------------
320 -- CREATE PAYMENTS.
321 ----------------------------------------------------
322
323 FA_LEASE_SCHEDULE_PUB.CREATE_PAYMENTS
324 (P_API_VERSION => 1.0,
325 P_INIT_MSG_LIST => FND_API.G_FALSE,
326 P_COMMIT => FND_API.G_FALSE,
327 P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
328 X_RETURN_STATUS => L_RETURN_STATUS,
329 X_MSG_COUNT => L_MESG_COUNT,
330 X_MSG_DATA => L_MESG,
331 P_CALLING_FN =>'CREATE_LEASE_SCHEDULE',
332 P_TRANS_REC =>P_TRANS_REC,
333 PX_LEASE_SCHEDULES_REC =>PX_LEASE_SCHEDULES_REC,
334 P_LEASE_PAYMENTS_TBL =>P_LEASE_PAYMENTS_TBL);
335
336 IF (L_RETURN_STATUS <> FND_API.G_RET_STS_SUCCESS) THEN
337 X_RETURN_STATUS:=L_RETURN_STATUS;
338 X_MSG_COUNT:=L_MESG_COUNT;
339 X_MSG_DATA:=L_MESG;
340 ELSE
341 ----------------------------------------------------
342 -- IF CREATE PAYMENTS, SUCCESS, AMORTIZE
343 ----------------------------------------------------
344 FA_LEASE_SCHEDULE_PUB.CREATE_AMORTIZATION
345 (P_API_VERSION => 1.0,
346 P_INIT_MSG_LIST => FND_API.G_FALSE,
347 P_COMMIT => FND_API.G_FALSE,
348 P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
349 X_RETURN_STATUS => L_RETURN_STATUS,
350 X_MSG_COUNT => L_MESG_COUNT,
351 X_MSG_DATA => L_MESG,
352 P_CALLING_FN =>'CREATE_LEASE_SCHEDULE',
353 P_TRANS_REC =>P_TRANS_REC,
354 P_PAYMENT_SCHEDULE_ID =>PX_LEASE_SCHEDULES_REC.PAYMENT_SCHEDULE_ID);
355 IF (L_RETURN_STATUS <> FND_API.G_RET_STS_SUCCESS) THEN
356 X_RETURN_STATUS:=L_RETURN_STATUS;
357 X_MSG_COUNT:=L_MESG_COUNT;
358 X_MSG_DATA:=L_MESG;
359 ELSE
360 L_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
361 END IF;
362 END IF;
363
364 ----------------------------------------------------
365 -- CHECK FOR COMMIT
366 ----------------------------------------------------
367
368 IF FND_API.TO_BOOLEAN( P_COMMIT) THEN
369 COMMIT WORK;
370 END IF;
371
372 EXCEPTION
373 WHEN VALUE_ERROR_EXCEPTION THEN
374 ROLLBACK TO CREATE_LEASE_SCHEDULE;
375 X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
376 WHEN OTHERS THEN
377 ROLLBACK TO CREATE_LEASE_SCHEDULE;
378 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
379 X_MSG_DATA:=SQLERRM;
380 END CREATE_LEASE_SCHEDULE;
381
382 END FA_LEASE_SCHEDULE_PUB;