DBA Data[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;