DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_LEASE_PVT

Source


1 PACKAGE BODY FA_LEASE_PVT AS
2 /* $Header: FAVLEAB.pls 120.5 2009/05/08 21:14:44 glchen ship $ */
3 
4 -----------------------------------------------
5 -- CHECK FOR LESSOR_ID
6 -----------------------------------------------
7 FUNCTION CHECK_LESSOR_ID  (
8 	P_VENDOR_ID 			IN     PO_VENDORS.VENDOR_ID%TYPE
9 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
10 	) RETURN BOOLEAN AS
11 
12 	   CURSOR C_VENDOR_ID IS
13 	   SELECT VENDOR_ID
14 	   FROM PO_VENDORS
15 	   WHERE VENDOR_ID= P_VENDOR_ID;
16 
17 	   L_VENDOR_ID NUMBER:=NULL;
18 
19 BEGIN
20 
21 	FOR C_VENDOR_ID_REC IN C_VENDOR_ID
22 	LOOP
23 	 L_VENDOR_ID := C_VENDOR_ID_REC.VENDOR_ID;
24 	END LOOP;
25 
26 	IF L_VENDOR_ID IS NULL THEN
27 	    FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_LESSOR_ID');
28 	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LESSOR_ID');
29 	    FND_MSG_PUB.ADD;
30 	    RETURN (FALSE);
31 	ELSE
32 	    RETURN (TRUE);
33 	END IF;
34 
35 EXCEPTION
36  WHEN OTHERS THEN
37        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_LESSOR_ID', p_log_level_rec => p_log_level_rec);
38        RETURN (FALSE);
39 END CHECK_LESSOR_ID ;
40 
41 ---------------------------------------------------------
42 -- CHECK FOR LESSOR_NAME
43 ---------------------------------------------------------
44 FUNCTION CHECK_LESSOR_NAME  (
45 	  P_VENDOR_NAME			IN     PO_VENDORS.VENDOR_NAME%TYPE,
46 	  X_VENDOR_ID			OUT NOCOPY PO_VENDORS.VENDOR_ID%TYPE,
47 p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
48 ) RETURN BOOLEAN AS
49 
50 	   CURSOR C_VENDOR_NAME IS
51 	   SELECT VENDOR_ID
52 	   FROM PO_VENDORS
53 	   WHERE VENDOR_NAME= P_VENDOR_NAME;
54 
55 	   L_VENDOR_ID NUMBER:=NULL;
56 
57 BEGIN
58 
59 	FOR C_VENDOR_NAME_REC IN C_VENDOR_NAME
60 	LOOP
61 	 L_VENDOR_ID := C_VENDOR_NAME_REC.VENDOR_ID;
62 	END LOOP;
63 
64 	IF L_VENDOR_ID IS NULL THEN
65 	    FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_LESSOR_ID');
66 	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LESSOR_NAME');
67 	    FND_MSG_PUB.ADD;
68     	    RETURN (FALSE);
69 	ELSE
70 	    X_VENDOR_ID:=L_VENDOR_ID;
71 	    RETURN (TRUE);
72 	END IF;
73 
74 EXCEPTION
75  WHEN OTHERS THEN
76        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_LESSOR_NAME', p_log_level_rec => p_log_level_rec);
77        RETURN (FALSE);
78 END CHECK_LESSOR_NAME ;
79 
80 ---------------------------------------
81 -- CHECK FOR PAYMENT SCHEDULE ID
82 ---------------------------------------
83 FUNCTION CHECK_PAYMENT_SCHEDULE_ID (
84    P_PAYMENT_SCHEDULE_ID 	IN FA_LEASE_SCHEDULES.PAYMENT_SCHEDULE_ID%TYPE
85 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
86 
87 ) RETURN BOOLEAN AS
88 
89 	CURSOR C_PAYMENT_SCHEDULE_ID IS
90 	SELECT PAYMENT_SCHEDULE_ID
91 	FROM FA_LEASE_SCHEDULES
92 	WHERE PAYMENT_SCHEDULE_ID = P_PAYMENT_SCHEDULE_ID;
93 
94 	L_PAYMENT_SCHEDULE_ID FA_LEASE_PAYMENTS.PAYMENT_SCHEDULE_ID%TYPE:=NULL;
95 
96 BEGIN
97 
98 	FOR C_PAYMENT_SCHEDULE_ID_REC IN C_PAYMENT_SCHEDULE_ID
99 	LOOP
100 	 L_PAYMENT_SCHEDULE_ID := C_PAYMENT_SCHEDULE_ID_REC.PAYMENT_SCHEDULE_ID ;
101 	END LOOP;
102 
103 	IF L_PAYMENT_SCHEDULE_ID IS NULL THEN
104 	    FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_SCHEDULE_NOT_FOUND');
105 	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_PAYMENT_SCHEDULE_ID');
106 	    FND_MSG_PUB.ADD;
107 	    RETURN (FALSE);
108 	ELSE
109 	   RETURN (TRUE);
110 	END IF;
111 
112 EXCEPTION
113  WHEN OTHERS THEN
114        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_PAYMENT_SCHEDULE_ID', p_log_level_rec => p_log_level_rec);
115        RETURN (FALSE);
116 END CHECK_PAYMENT_SCHEDULE_ID;
117 
118 ----------------------------------------
119 -- CHECK FOR PAYMENT SCHEDULE NAME
120 ----------------------------------------
121 FUNCTION CHECK_PAYMENT_SCHEDULE_NAME (
122  P_PAYMENT_SCHEDULE_NAME		IN     FA_LEASE_SCHEDULES.PAYMENT_SCHEDULE_NAME%TYPE,
123  X_PAYMENT_SCHEDULE_ID			OUT NOCOPY FA_LEASE_SCHEDULES.PAYMENT_SCHEDULE_ID%TYPE
124 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
125 ) RETURN BOOLEAN AS
126 
127 	   CURSOR C_PAYMENT_SCHEDULE_NAME IS
128 	   SELECT PAYMENT_SCHEDULE_ID
129 	   FROM FA_LEASE_SCHEDULES
130 	   WHERE PAYMENT_SCHEDULE_NAME = P_PAYMENT_SCHEDULE_NAME;
131 
132 	   L_PAYMENT_SCHEDULE_ID NUMBER:=NULL;
133 
134 BEGIN
135 
136 	FOR C_PAYMENT_SCHEDULE_NAME_REC IN C_PAYMENT_SCHEDULE_NAME
137 	LOOP
138 	 L_PAYMENT_SCHEDULE_ID := C_PAYMENT_SCHEDULE_NAME_REC.PAYMENT_SCHEDULE_ID ;
139 	END LOOP;
140 
141 	IF L_PAYMENT_SCHEDULE_ID IS NULL THEN
142 	    FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_SCHEDULE_NOT_FOUND');
143  	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_PAYMENT_SCHEDULE_NAME');
144 	    FND_MSG_PUB.ADD;
145 	    RETURN (FALSE);
146 	ELSE
147 	   X_PAYMENT_SCHEDULE_ID :=L_PAYMENT_SCHEDULE_ID ;
148 	   RETURN (TRUE);
149 	END IF;
150 
151 EXCEPTION
152  WHEN OTHERS THEN
153        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_PAYMENT_SCHEDULE_NAME', p_log_level_rec => p_log_level_rec);
154        RETURN (FALSE);
155 END CHECK_PAYMENT_SCHEDULE_NAME;
156 
157 --------------------------------
158 -- CHECK FOR CHECK TERMS
159 --------------------------------
160 FUNCTION CHECK_TERMS_ID (
161  P_TERMS_ID 		IN 	 AP_TERMS.TERM_ID%TYPE
162 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
163 ) RETURN BOOLEAN AS
164 
165 	  CURSOR C_CHECK_TERMS_ID IS
166 	  SELECT TERM_ID FROM
167 	  AP_TERMS_BAT_PAY_TERMS_V
168 	  WHERE TERM_ID = P_TERMS_ID;
169 
170 	  L_TERMS_ID NUMBER:=NULL;
171 
172 BEGIN
173 
174 	FOR C_CHECK_TERMS_ID_REC IN C_CHECK_TERMS_ID
175 	LOOP
176 	 L_TERMS_ID := C_CHECK_TERMS_ID_REC.TERM_ID ;
177 	END LOOP;
178 
179 	IF L_TERMS_ID IS NULL THEN
180 	    FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_PAYMENT_TERM');
181 	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_TERMS_ID');
182 	    FND_MSG_PUB.ADD;
183 	    RETURN(FALSE);
184 	ELSE
185 	   RETURN(TRUE);
186 	END IF;
187 
188 EXCEPTION
189  WHEN OTHERS THEN
190        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_TERMS_ID', p_log_level_rec => p_log_level_rec);
191        RETURN (FALSE);
192 END CHECK_TERMS_ID ;
193 
194 ---------------------------------------
195 -- CHECK FOR CHECK PAYMENT TERMS
196 ---------------------------------------
197 FUNCTION CHECK_PAYMENT_TERMS(
198 P_PAYMENT_TERMS		IN     AP_TERMS.NAME%TYPE,
199 X_TERMS_ID 		OUT NOCOPY AP_TERMS.TERM_ID%TYPE
200 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
201 ) RETURN BOOLEAN AS
202 
203 	  CURSOR C_CHECK_PAYMENT_TERMS IS
204 	  SELECT TERM_ID FROM
205 	  AP_TERMS_BAT_PAY_TERMS_V
206 	  WHERE TERMS = P_PAYMENT_TERMS;
207 
208 	  L_TERMS_ID NUMBER:=NULL;
209 
210 BEGIN
211 
212 	FOR C_CHECK_PAYMENT_TERMS_REC IN C_CHECK_PAYMENT_TERMS
213 	LOOP
214 	 L_TERMS_ID := C_CHECK_PAYMENT_TERMS_REC.TERM_ID ;
215 	END LOOP;
216 
217 	IF L_TERMS_ID IS NULL THEN
218 	    FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_PAYMENT_TERM');
219 	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_PAYMENT_TERMS');
220 	    FND_MSG_PUB.ADD;
221 	    RETURN (FALSE);
222 	ELSE
223 	   X_TERMS_ID := L_TERMS_ID ;
224 	   RETURN (TRUE);
225 	END IF;
226 
227 EXCEPTION
228  WHEN OTHERS THEN
229        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_PAYMENT_TERMS', p_log_level_rec => p_log_level_rec);
230        RETURN (FALSE);
231 END CHECK_PAYMENT_TERMS;
232 
233 -------------------------------------------
234 -- CHECK FOR CHECK LESSOR SITE
235 -------------------------------------------
236 FUNCTION CHECK_LESSOR_SITE_ID (
237  P_VENDOR_SITE_ID		IN 	 PO_VENDOR_SITES_ALL.VENDOR_SITE_ID%TYPE,
238  P_VENDOR_ID      		IN	 PO_VENDOR_SITES_ALL.VENDOR_ID%TYPE,
239  X_CHART_OF_ACCOUNTS_ID 	OUT NOCOPY GL_SETS_OF_BOOKS.CHART_OF_ACCOUNTS_ID%TYPE,
240  X_LESSOR_SITE_ORG_ID		OUT NOCOPY  NUMBER
241 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
242 ) RETURN BOOLEAN AS
243 
244 	CURSOR C_LESSOR_SITE_ID IS
245       	SELECT
246 	PVS.VENDOR_SITE_ID
247 	,SOB.CHART_OF_ACCOUNTS_ID COA_ID
248         ,PVS.ORG_ID LESSOR_SITE_ORG_ID
249 	FROM GL_SETS_OF_BOOKS SOB
250 	,HR_ALL_ORGANIZATION_UNITS HAO
251 	,PO_VENDOR_SITES_ALL PVS
252 	,AP_SYSTEM_PARAMETERS_ALL AP
253 	WHERE PVS.VENDOR_ID = P_VENDOR_ID
254         AND PVS.VENDOR_SITE_ID = P_VENDOR_SITE_ID
255 	AND PVS.ORG_ID IS NOT NULL
256 	AND AP.ORG_ID = PVS.ORG_ID
257 	AND SOB.SET_OF_BOOKS_ID = AP.SET_OF_BOOKS_ID
258 	AND HAO.ORGANIZATION_ID = PVS.ORG_ID
259 	UNION
260 	SELECT PVS.VENDOR_SITE_ID
261 	,SOB.CHART_OF_ACCOUNTS_ID COA_ID
262         ,PVS.ORG_ID LESSOR_SITE_ORG_ID
263 	FROM GL_SETS_OF_BOOKS SOB
264 	,AP_SYSTEM_PARAMETERS_ALL AP
265 	,PO_VENDOR_SITES_ALL PVS
266 	WHERE PVS.VENDOR_ID = P_VENDOR_ID
267   	AND PVS.VENDOR_SITE_ID = P_VENDOR_SITE_ID
268 	AND PVS.ORG_ID IS NULL
269 	AND AP.ORG_ID IS NULL
270 	AND SOB.SET_OF_BOOKS_ID = AP.SET_OF_BOOKS_ID;
271 
272 	L_VENDOR_SITE_ID NUMBER:=NULL;
273 	L_CHART_OF_ACCOUNTS_ID   NUMBER:=NULL;
274 	L_LESSOR_SITE_ORG_ID NUMBER:=NULL;
275 
276 BEGIN
277 
278 	FOR C_LESSOR_SITE_ID_REC IN C_LESSOR_SITE_ID
279 	LOOP
280 	 L_VENDOR_SITE_ID := C_LESSOR_SITE_ID_REC.VENDOR_SITE_ID;
281 	 L_CHART_OF_ACCOUNTS_ID   := C_LESSOR_SITE_ID_REC.COA_ID;
282 	 L_LESSOR_SITE_ORG_ID := C_LESSOR_SITE_ID_REC.LESSOR_SITE_ORG_ID;
283 	END LOOP;
284 
285 	IF L_VENDOR_SITE_ID IS NULL OR L_CHART_OF_ACCOUNTS_ID IS NULL THEN
286 	   FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_PO_VENDOR_SITE');
287 	   FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LESSOR_SITE_ID');
288 	   FND_MSG_PUB.ADD;
289 	   RETURN (FALSE);
290 	ELSE
291  	  X_CHART_OF_ACCOUNTS_ID:=L_CHART_OF_ACCOUNTS_ID;
292 	   X_LESSOR_SITE_ORG_ID :=L_LESSOR_SITE_ORG_ID ;
293 	   RETURN (TRUE);
294 	END IF;
295 
296 EXCEPTION
297      WHEN OTHERS THEN
298        FA_SRVR_MSG.ADD_SQL_ERROR('cHECK_LESSOR_SITE_ID', p_log_level_rec => p_log_level_rec);
299        RETURN (FALSE);
300 END CHECK_LESSOR_SITE_ID ;
301 
302 ------------------------------------------
303 -- CHECK FOR CHECK LESSOR SITE CODE
304 ------------------------------------------
305 FUNCTION CHECK_LESSOR_SITE_CODE (
306  P_VENDOR_SITE_CODE		IN 	 PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE%TYPE,
307  P_VENDOR_ID      		IN	 PO_VENDOR_SITES_ALL.VENDOR_ID%TYPE,
308  P_VENDOR_SITE_ORG_ID		IN     	PO_VENDOR_SITES_ALL.ORG_ID%TYPE,
309  X_VENDOR_SITE_ID		OUT NOCOPY PO_VENDOR_SITES_ALL.VENDOR_SITE_ID%TYPE,
310  X_CHART_OF_ACCOUNTS_ID 	OUT NOCOPY GL_SETS_OF_BOOKS.CHART_OF_ACCOUNTS_ID%TYPE
311 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
312  ) RETURN BOOLEAN AS
313 
314 	CURSOR C_LESSOR_SITE_CODE IS
315       	SELECT
316 	PVS.VENDOR_SITE_ID
317 	,SOB.CHART_OF_ACCOUNTS_ID COA_ID
318 	FROM GL_SETS_OF_BOOKS SOB
319 	,HR_ALL_ORGANIZATION_UNITS HAO
320 	,PO_VENDOR_SITES_ALL PVS
321 	,AP_SYSTEM_PARAMETERS_ALL AP
322 	WHERE PVS.VENDOR_ID = P_VENDOR_ID
323       	AND PVS.VENDOR_SITE_CODE = P_VENDOR_SITE_CODE
324 	AND PVS.ORG_ID IS NOT NULL
325 	AND AP.ORG_ID = PVS.ORG_ID
326 	AND SOB.SET_OF_BOOKS_ID = AP.SET_OF_BOOKS_ID
327 	AND HAO.ORGANIZATION_ID = PVS.ORG_ID
328       	AND PVS.ORG_ID = P_VENDOR_SITE_ORG_ID
329 	UNION
330 	SELECT PVS.VENDOR_SITE_ID
331 	,SOB.CHART_OF_ACCOUNTS_ID COA_ID
332 	FROM GL_SETS_OF_BOOKS SOB
333 	,AP_SYSTEM_PARAMETERS_ALL AP
334 	,PO_VENDOR_SITES_ALL PVS
335 	WHERE PVS.VENDOR_ID = P_VENDOR_ID
336   	AND PVS.VENDOR_SITE_CODE = P_VENDOR_SITE_CODE
337 	AND PVS.ORG_ID IS NULL
338 	AND AP.ORG_ID IS NULL
339 	AND SOB.SET_OF_BOOKS_ID = AP.SET_OF_BOOKS_ID;
340 
341 	L_VENDOR_SITE_ID NUMBER:=NULL;
342 	L_CHART_OF_ACCOUNTS_ID   NUMBER:=NULL;
343 
344 BEGIN
345 
346 	FOR C_LESSOR_SITE_CODE_REC IN C_LESSOR_SITE_CODE
347 	LOOP
348 	 L_VENDOR_SITE_ID := C_LESSOR_SITE_CODE_REC.VENDOR_SITE_ID;
349 	 L_CHART_OF_ACCOUNTS_ID   := C_LESSOR_SITE_CODE_REC.COA_ID;
350 END LOOP;
351 
352 	IF L_VENDOR_SITE_ID IS NULL OR L_CHART_OF_ACCOUNTS_ID IS NULL THEN
353 	   FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_PO_VENDOR_SITE');
354 	   FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LESSOR_SITE_CODE');
355 	   FND_MSG_PUB.ADD;
356 	   RETURN (FALSE);
357 	ELSE
358 	   X_CHART_OF_ACCOUNTS_ID:=L_CHART_OF_ACCOUNTS_ID;
359 	   X_VENDOR_SITE_ID:=L_VENDOR_SITE_ID;
360 	   RETURN (TRUE);
361 	END IF;
362 
363 EXCEPTION
364      WHEN OTHERS THEN
365        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_LESSOR_SITE_CODE', p_log_level_rec => p_log_level_rec);
366        RETURN (FALSE);
367 END CHECK_LESSOR_SITE_CODE ;
368 
369 ----------------------------------------------
370 -- CHECK FOR CHECK DISTRIBUTION CODE ID
371 ----------------------------------------------
372 
373 FUNCTION CHECK_DIST_CODE_COMBINATION_ID(
374 	 P_DIST_CODE_COMBINATION_ID 		IN GL_CODE_COMBINATIONS.CODE_COMBINATION_ID%TYPE,
375 	 P_COA_ID 			    	IN GL_CODE_COMBINATIONS.CHART_OF_ACCOUNTS_ID%TYPE
376 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
377 )  RETURN BOOLEAN AS
378 
379 	CURSOR C_CODE_COMBINATION_ID IS
380       	SELECT
381 	CODE_COMBINATION_ID
382 	FROM GL_CODE_COMBINATIONS_V
383 	WHERE CODE_COMBINATION_ID = P_DIST_CODE_COMBINATION_ID
384       	AND CHART_OF_ACCOUNTS_ID = P_COA_ID
385       	AND ENABLED_FLAG = 'Y';
386 
387 	L_CODE_COMBINATION_ID NUMBER:=NULL;
388 
389 BEGIN
390 	FOR C_CODE_COMBINATION_ID_REC IN C_CODE_COMBINATION_ID
391 	LOOP
392 	 L_CODE_COMBINATION_ID := C_CODE_COMBINATION_ID_REC.CODE_COMBINATION_ID;
393 	END LOOP;
394 
395 	IF L_CODE_COMBINATION_ID IS NULL THEN
396 	   FND_MESSAGE.SET_NAME ('OFA','FA_INV_CODE_COMBINATION');
397 	   FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_DIST_CODE_COMBINATION_ID');
398 	   FND_MSG_PUB.ADD;
399 	   RETURN (FALSE);
400 	ELSE
401 	   RETURN (TRUE);
402 	END IF;
403 EXCEPTION
404  	WHEN OTHERS THEN
405        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_DIST_CODE_COMBINATION_ID', p_log_level_rec => p_log_level_rec);
406        RETURN (FALSE);
407 END CHECK_DIST_CODE_COMBINATION_ID;
408 
409 -------------------------------------------------------
410 -- CHECK FOR CHECK DISTRIBUTION CODE COMBINATION
411 -------------------------------------------------------
412 FUNCTION CHECK_CODE_COMBINATION
413 (P_CON_CODE_COMBINATION IN VARCHAR2,
414  P_COA_ID IN GL_CODE_COMBINATIONS.CHART_OF_ACCOUNTS_ID%TYPE,
415  X_CODE_COMBINATION_ID OUT NOCOPY GL_CODE_COMBINATIONS.CODE_COMBINATION_ID%TYPE
416 ,p_log_level_rec       IN     fa_api_types.log_level_rec_type default null
417 )  RETURN BOOLEAN AS
418 
419 	L_CODE_COMBINATION_ID  NUMBER:=NULL;
420 
421 BEGIN
422 
423 	L_CODE_COMBINATION_ID  := FND_FLEX_EXT.GET_CCID ('SQLGL', 'GL#',P_COA_ID,SYSDATE,P_CON_CODE_COMBINATION);
424 
425 	IF L_CODE_COMBINATION_ID = 0 THEN
426 	   FND_MESSAGE.SET_NAME ('OFA','FA_INV_CODE_COMBINATION');
427 	   FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_CODE_COMBINATION');
428 	   FND_MSG_PUB.ADD;
429 	   RETURN (FALSE);
430 	ELSE
431 	   X_CODE_COMBINATION_ID :=L_CODE_COMBINATION_ID;
432 	   RETURN (TRUE);
433 	END IF;
434 EXCEPTION
435      WHEN OTHERS THEN
436        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_CODE_COMBINATION', p_log_level_rec => p_log_level_rec);
437        RETURN (FALSE);
438 END CHECK_CODE_COMBINATION;
439 
440 ---------------------------------------------------
441 -- CHECK FOR CHECK LEASE LESSOR COMBINATION
442 ---------------------------------------------------
443 FUNCTION CHECK_LEASE_LESSOR_COMBINATION (
444 P_LESSOR_ID 	IN NUMBER,
445 P_LEASE_NUMBER 	IN VARCHAR2
446 , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type)  RETURN BOOLEAN AS
447 
448 	 CURSOR C_LEASE_LESSOR IS
449 	      SELECT  LEASE_ID
450 	      FROM    FA_LEASES
451 	      WHERE   LEASE_NUMBER = P_LEASE_NUMBER
452 	      AND     LESSOR_ID = P_LESSOR_ID;
453 
454 	L_LEASE_ID NUMBER:=NULL;
455 	DUP_FOUND EXCEPTION;
456 
457 BEGIN
458 
459 	OPEN C_LEASE_LESSOR ;
460 	    FETCH C_LEASE_LESSOR
461 	    INTO L_LEASE_ID;
462 	    IF C_LEASE_LESSOR%FOUND THEN
463 	         RAISE DUP_FOUND;
464 	    END IF;
465 	    CLOSE C_LEASE_LESSOR;
466 
467 	RETURN (TRUE);
468 
469 EXCEPTION
470     WHEN DUP_FOUND THEN
471       CLOSE C_LEASE_LESSOR;
472       FND_MESSAGE.SET_NAME ('OFA','FA_DUPLICATE_LEASE');
473       FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LEASE_LESSOR_COMBINATION');
474       FND_MSG_PUB.ADD;
475       RETURN (FALSE);
476      WHEN OTHERS THEN
477 	CLOSE C_LEASE_LESSOR;
478        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_LEASE_LESSOR_COMBINATION', p_log_level_rec => p_log_level_rec);
479        RETURN (FALSE);
480 END CHECK_LEASE_LESSOR_COMBINATION ;
481 
482 ----------------------------------------
483 -- CHECK FOR CHECK CURRENCY CODE
484 ----------------------------------------
485 FUNCTION CHECK_CURRENCY_CODE (
486 P_CURRENCY_CODE VARCHAR2,
487 P_PAYMENT_SCHEDULE_ID NUMBER
488 , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type)  RETURN BOOLEAN AS
489 
490 	CURSOR C_CURRENCY_CODE IS
491        	SELECT CURRENCY_CODE
492        	FROM FA_LEASE_SCHEDULES
493        	WHERE PAYMENT_SCHEDULE_ID = P_PAYMENT_SCHEDULE_ID;
494 
495 	L_CURRENCY_CODE VARCHAR2(5):=NULL;
496 
497 BEGIN
498 
499 	OPEN C_CURRENCY_CODE ;
500 	FETCH C_CURRENCY_CODE  INTO L_CURRENCY_CODE;
501 
502 	IF (C_CURRENCY_CODE %NOTFOUND) THEN
503 	    CLOSE C_CURRENCY_CODE;
504 	    FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_SCHEDULE_NOT_FOUND');
505       	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_CURRENCY_CODE');
506 	    FND_MSG_PUB.ADD;
507 	    RETURN (FALSE);
508 	END IF;
509 
510 	CLOSE C_CURRENCY_CODE ;
511 
512 	IF P_CURRENCY_CODE <> L_CURRENCY_CODE THEN
513 	    FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_CURRENCY_NOT_MATCH');
514       	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_CURRENCY_CODE');
515 	    FND_MSG_PUB.ADD;
516 	    RETURN (FALSE);
517 	ELSE
518 	    RETURN (TRUE);
519 	END IF;
520 
521 EXCEPTION
522      WHEN OTHERS THEN
523       FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_CURRENCY_CODE', p_log_level_rec => p_log_level_rec);
524        RETURN (FALSE);
525 END CHECK_CURRENCY_CODE ;
526 
527 -----------------------------------
528 -- CHECK FOR CHECK LEASE TYPE
529 -----------------------------------
530 FUNCTION CHECK_LEASE_TYPE(
531 P_LEASE_TYPE VARCHAR2
532 , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN AS
533 
534 	CURSOR C_LEASE_TYPE IS
535 	SELECT LOOKUP_CODE
536 	FROM FA_LOOKUPS WHERE
537 	LOOKUP_TYPE='LEASE TYPES'
538 	AND LOOKUP_CODE = UPPER(P_LEASE_TYPE)
539 	AND ENABLED_FLAG = 'Y'
540 	AND SYSDATE BETWEEN NVL(START_DATE_ACTIVE,SYSDATE) AND NVL(END_DATE_ACTIVE,SYSDATE);
541 
542 	L_LEASE_TYPE VARCHAR2(15):=NULL;
543 
544 BEGIN
545 
546 	FOR C_LEASE_TYPE_REC IN C_LEASE_TYPE
547 	LOOP
548 	 L_LEASE_TYPE := C_LEASE_TYPE_REC.LOOKUP_CODE;
549 	END LOOP;
550 
551 	IF L_LEASE_TYPE IS NULL THEN
552 	   FND_MESSAGE.SET_NAME ('OFA','FA_INV_LEASE_TYPE');
553       	   FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LEASE_TYPE');
554 	   FND_MSG_PUB.ADD;
555 	   RETURN (FALSE);
556 	ELSE
557 	   RETURN (TRUE);
558 	END IF;
559 
560 EXCEPTION
561      WHEN OTHERS THEN
562        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_LEASE_TYPE', p_log_level_rec => p_log_level_rec);
563        RETURN (FALSE);
564 END CHECK_LEASE_TYPE;
565 
566 -------------------------------------
567 -- VALIDATE LESSOR
568 -------------------------------------
569 FUNCTION VALIDATE_LESSOR
570 (P_VENDOR_ID IN NUMBER,
571  P_VENDOR_NAME IN VARCHAR2,
572  X_VENDOR_ID OUT NOCOPY NUMBER
573  , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN AS
574 
575 	   CURSOR C_VENDOR_NAME IS
576 	   SELECT VENDOR_ID
577 	   FROM PO_VENDORS
578 	   WHERE VENDOR_NAME= P_VENDOR_NAME ;
579 
580 	   CURSOR C_VENDOR_ID IS
581 	   SELECT VENDOR_ID
582 	   FROM PO_VENDORS
583 	   WHERE VENDOR_ID= P_VENDOR_ID ;
584 
585 	   L_VENDOR_ID NUMBER:=NULL;
586 
587 BEGIN
588 
589 	IF P_VENDOR_ID IS NOT NULL THEN
590 	  FOR C_VENDOR_ID_REC IN C_VENDOR_ID
591 	  LOOP
592 	   L_VENDOR_ID := C_VENDOR_ID_REC.VENDOR_ID;
593 	  END LOOP;
594 	ELSIF P_VENDOR_NAME IS NOT NULL THEN
595 	 FOR C_VENDOR_NAME_REC IN C_VENDOR_NAME
596 	 LOOP
597 	  L_VENDOR_ID := C_VENDOR_NAME_REC.VENDOR_ID;
598 	 END LOOP;
599 	ELSE
600 	   FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_PO_VENDOR_NAME');
601 	   FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATE_LESSOR');
602 	   FND_MSG_PUB.ADD;
603    	   RETURN (FALSE);
604 	END IF;
605 
606 	IF L_VENDOR_ID IS NOT NULL THEN
607 	  X_VENDOR_ID:=L_VENDOR_ID;
608 	  RETURN (TRUE);
609 	ELSE
610 	 FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_PO_VENDOR_NAME');
611 	 FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATE_LESSOR');
612 	 FND_MSG_PUB.ADD;
613 	 RETURN (FALSE);
614 	END IF;
615 
616 EXCEPTION
617      WHEN OTHERS THEN
618        FA_SRVR_MSG.ADD_SQL_ERROR('VALIDATE_LESSOR', p_log_level_rec => p_log_level_rec);
619        RETURN (FALSE);
620 END VALIDATE_LESSOR;
621 
622 ------------------------------------
623 -- GET LEASE ID
624 ------------------------------------
625 FUNCTION GET_LEASE_ID
626 (P_LESSOR_ID IN NUMBER,
627  P_LEASE_NUMBER IN VARCHAR2,
628  X_LEASE_ID OUT NOCOPY NUMBER
629 , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN AS
630 
631 	CURSOR C_LEASE_LESSOR IS
632       	SELECT  LEASE_ID
633       	FROM    FA_LEASES
634       	WHERE   LEASE_NUMBER = P_LEASE_NUMBER
635 	AND     LESSOR_ID = P_LESSOR_ID;
636 
637 	L_LEASE_ID NUMBER:=NULL;
638 	COMB_NOT_FOUND EXCEPTION;
639 
640 BEGIN
641 
642 	OPEN C_LEASE_LESSOR ;
643 	    FETCH C_LEASE_LESSOR
644 	    INTO L_LEASE_ID;
645 	    IF C_LEASE_LESSOR%NOTFOUND THEN
646         	 RAISE COMB_NOT_FOUND;
647 	    END IF;
648 	    CLOSE C_LEASE_LESSOR;
649 
650 	X_LEASE_ID:=L_LEASE_ID;
651 	RETURN (TRUE);
652 
653 EXCEPTION
654     WHEN COMB_NOT_FOUND THEN
655       CLOSE C_LEASE_LESSOR;
656       FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_INCORRECT_LEASE_ID');
657       FND_MESSAGE.SET_TOKEN ('CALLING_FN','GET_LEASE_ID');
658       FND_MSG_PUB.ADD;
659       RETURN (FALSE);
660     WHEN OTHERS THEN
661 	CLOSE C_LEASE_LESSOR;
662        FA_SRVR_MSG.ADD_SQL_ERROR('GET_LEASE_ID', p_log_level_rec => p_log_level_rec);
663        RETURN (FALSE);
664 END GET_LEASE_ID;
665 
666 ------------------------------
667 -- VALIDATE LEASE
668 ------------------------------
669 FUNCTION VALIDATE_LEASE_ID
670 (P_LEASE_ID IN NUMBER
671 , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN AS
672 
673 	L_LEASE_ID NUMBER:=NULL;
674 
675 BEGIN
676 
677 	SELECT LEASE_ID INTO L_LEASE_ID
678 	FROM FA_LEASES
679 	WHERE LEASE_ID = P_LEASE_ID;
680 
681 	RETURN (TRUE);
682 
683 EXCEPTION
684     WHEN NO_DATA_FOUND THEN
685       FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_INCORRECT_LEASE_ID');
686       FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATE_LEASE_ID');
687       FND_MSG_PUB.ADD;
688       RETURN (FALSE);
689     WHEN OTHERS THEN
690        FA_SRVR_MSG.ADD_SQL_ERROR('VALIDATE_LEASE_ID', p_log_level_rec => p_log_level_rec);
691        RETURN (FALSE);
692 END VALIDATE_LEASE_ID;
693 
694 -----------------------------------
695 -- CHECK LEASE UPDATE
696 -----------------------------------
697 FUNCTION CHECK_LEASE_UPDATE
698 (P_LEASE_ID IN NUMBER, p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type)
699 RETURN VARCHAR2 AS
700 
701 	L_COUNT NUMBER:=0;
702 
703 BEGIN
704 
705 	SELECT COUNT(*) INTO L_COUNT
706 	FROM FA_ADDITIONS_B
707 	WHERE LEASE_ID = P_LEASE_ID;
708 
709 	IF L_COUNT > 0 THEN
710 	  RETURN ('N');
711 	ELSE
712 	  RETURN('Y');
713 	END IF;
714 
715 EXCEPTION
716     WHEN NO_DATA_FOUND THEN
717       FND_MESSAGE.SET_NAME ('OFA','FA_DUPLICATE_LEASE');
718       FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LEASE_UPDATE');
719       FND_MSG_PUB.ADD;
720       RETURN ('N');
721     WHEN OTHERS THEN
722        FA_SRVR_MSG.ADD_SQL_ERROR('CHECK_LEASE_UPDATE', p_log_level_rec => p_log_level_rec);
723        RETURN ('N');
724 END CHECK_LEASE_UPDATE;
725 
726 -----------------------------------------
727 -- CHECK VALIDATE LEASE LESSOR
728 -----------------------------------------
729 FUNCTION VALIDATE_LEASE_LESSOR
730 (P_LEASE_ID 		IN NUMBER
731 ,P_LESSOR_ID 		IN NUMBER
732 ,P_LESSOR_SITE_ID 	IN NUMBER
733 ,P_LESSOR_SITE_ORG_ID 	IN NUMBER
734 , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN AS
735 
736 	L_LEASE_NUMBER VARCHAR2(15):=NULL;
737 	L_LESSOR_ID NUMBER:=NULL;
738 	L_LESSOR_SITE_ID NUMBER:=NULL;
739 	L_LESSOR_SITE_ORG_ID NUMBER:=NULL;
740 
741 BEGIN
742 
743 	   SELECT
744 	    LEASE_NUMBER,
745 	    LESSOR_ID,
746 	    LESSOR_SITE_ID,
747 	    B.ORG_ID LESSOR_SITE_ORG_ID
748 	   INTO
749 	    L_LEASE_NUMBER,
750 	    L_LESSOR_ID,
751 	    L_LESSOR_SITE_ID,
752 	    L_LESSOR_SITE_ORG_ID
753 	   FROM FA_LEASES A,
754 	   PO_VENDOR_SITES_ALL B
755 	   WHERE A.LEASE_ID = P_LEASE_ID
756 	   AND A.LESSOR_SITE_ID = B.VENDOR_SITE_ID;
757 
758 	IF P_LESSOR_SITE_ORG_ID = L_LESSOR_SITE_ORG_ID THEN
759 	 IF L_LESSOR_ID = P_LESSOR_ID  AND
760 	   L_LESSOR_SITE_ID =P_LESSOR_SITE_ID THEN
761 	   RETURN(FALSE);
762 	 ELSIF CHECK_LEASE_LESSOR_COMBINATION
763                   (P_LESSOR_ID,L_LEASE_NUMBER,p_log_level_rec) THEN
764 	    RETURN(TRUE);
765 	 ELSE
766 	    RETURN(FALSE);
767 	 END IF;
768 	ELSE
769 	   RETURN(FALSE);
770 	END IF;
771 
772 EXCEPTION
773     WHEN OTHERS THEN
774      RETURN (FALSE);
775 END VALIDATE_LEASE_LESSOR;
776 
777 --------------------------------------
778 -- VALIDATE CREATE LEASE PARAMETERS
779 --------------------------------------
780 FUNCTION VALIDATION_CREATE_LEASE  (
781    PX_LEASE_DETAILS_REC	      IN OUT  NOCOPY FA_API_TYPES.LEASE_DETAILS_REC_TYPE
782  , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN AS
783 
784    	   VALUE_ERROR_EXCEPTION  	      	EXCEPTION;
785 	   L_LESSOR_ID 			NUMBER:=NULL;
786 	   L_PAYMENT_SCHEDULE_ID 	NUMBER:=NULL;
787 	   L_TERMS_ID 			NUMBER:=NULL;
788 	   L_LESSOR_SITE_ID 		NUMBER:=NULL;
789 	   L_COA_ID 			NUMBER:=NULL;
790 	   L_DIST_CODE_COMBINATION_ID NUMBER:=NULL;
791 	   L_LEASE_NUMBER 		VARCHAR2(15):=NULL;
792 	   L_FAIR_VALUE 		NUMBER:=NULL;
793 	   L_CURRENCY_CODE              VARCHAR2(5):=NULL;
794 	   L_DESCRIPTION		VARCHAR2(30):=NULL;
795 	   L_BARGAIN_PURCHASE_OPTION    VARCHAR2(1):=NULL;
796 	   L_TRANSFER_OWNERSHIP 	VARCHAR2(1):=NULL;
797 	   L_ASSET_LIFE			NUMBER:=NULL;
798 	   L_LEASE_TERM			NUMBER:=NULL;
799 	   L_LEASE_TYPE 		VARCHAR2(15):=NULL;
800 	   L_ROWID			VARCHAR2(100):=NULL;
801 	   L_LEASE_ID			NUMBER:=NULL;
802 	   L_PRESENT_VALUE 		NUMBER:=NULL;
803 	   L_ECONOMIC_TEST 		VARCHAR2(1):=NULL;
804 	   L_PRESENT_TEST 		VARCHAR2(1):=NULL;
805 	   L_FASB_LEASE_TYPE 		VARCHAR2(15):=NULL;
806 	   L_COST_CAPITALIZED		NUMBER:=NULL;
807 	   L_LESSOR_SITE_ORG_ID		NUMBER:=NULL;
808 
809 	   CURSOR C_PRESENT_VALUE IS
810 	   SELECT PRESENT_VALUE
811 	   FROM FA_LEASE_SCHEDULES
812 	   WHERE PAYMENT_SCHEDULE_ID= L_PAYMENT_SCHEDULE_ID;
813 
814 	   PRESENT_VALUE_NOT_FOUND EXCEPTION;
815 
816 BEGIN
817 
818 	---------------------------------------
819 	-- CHECK FOR LESSOR INFORMATION
820 	---------------------------------------
821 	 IF PX_LEASE_DETAILS_REC.LESSOR_ID IS NULL THEN
822 	    IF 	PX_LEASE_DETAILS_REC.LESSOR_NAME IS NULL THEN
823  		FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_LESSOR_ID');
824 		FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
825 		FND_MSG_PUB.ADD;
826 		RAISE VALUE_ERROR_EXCEPTION;
827 	    ELSE
828 		 IF CHECK_LESSOR_NAME(PX_LEASE_DETAILS_REC.LESSOR_NAME,L_LESSOR_ID) THEN
829 	        	PX_LEASE_DETAILS_REC.LESSOR_ID:=L_LESSOR_ID;
830 	     	 ELSE
831 	        	RAISE VALUE_ERROR_EXCEPTION;
832 	     	 END IF;
833 	    END IF;
834 	  ELSE
835 	     IF NOT CHECK_LESSOR_ID(PX_LEASE_DETAILS_REC.LESSOR_ID) THEN
836 	        RAISE VALUE_ERROR_EXCEPTION;
837 	     END IF;
838 	  END IF;
839 
840 	---------------------------------------
841 	-- CHECK FOR LESSOR SITE INFORMATION
842 	---------------------------------------
843 
844 	 IF PX_LEASE_DETAILS_REC.LESSOR_SITE_ID IS NULL THEN
845 	    IF PX_LEASE_DETAILS_REC.LESSOR_SITE IS NULL OR
846 	       PX_LEASE_DETAILS_REC.LESSOR_SITE_ORG_ID IS NULL THEN
847  		FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_PO_VENDOR_SITE');
848 		FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
849 		FND_MSG_PUB.ADD;
850 		RAISE VALUE_ERROR_EXCEPTION;
851 	    ELSE
852 		 IF CHECK_LESSOR_SITE_CODE (PX_LEASE_DETAILS_REC.LESSOR_SITE,PX_LEASE_DETAILS_REC.LESSOR_ID,PX_LEASE_DETAILS_REC.LESSOR_SITE_ORG_ID ,L_LESSOR_SITE_ID,L_COA_ID) THEN
853 	        	PX_LEASE_DETAILS_REC.LESSOR_SITE_ID:=L_LESSOR_SITE_ID;
854 	     	 ELSE
855 	        	RAISE VALUE_ERROR_EXCEPTION;
856 	     	 END IF;
857 	    END IF;
858 	  ELSE
859 	     IF NOT CHECK_LESSOR_SITE_ID (PX_LEASE_DETAILS_REC.LESSOR_SITE_ID,PX_LEASE_DETAILS_REC.LESSOR_ID,L_COA_ID,L_LESSOR_SITE_ORG_ID) THEN
860 	        RAISE VALUE_ERROR_EXCEPTION;
861 	     END IF;
862 	  END IF;
863 
864 	-----------------------------------
865 	-- CHECK FOR PAYMENT SCHDULE
866 	-----------------------------------
867 
868 	 IF PX_LEASE_DETAILS_REC.PAYMENT_SCHEDULE_ID IS NULL THEN
869 	    IF 	PX_LEASE_DETAILS_REC.PAYMENT_SCHEDULE_NAME IS NULL THEN
870  		FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_SCHEDULE_NOT_FOUND');
871 		FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
872 		FND_MSG_PUB.ADD;
873 		RAISE VALUE_ERROR_EXCEPTION;
874 	    ELSE
875 		 IF CHECK_PAYMENT_SCHEDULE_NAME(PX_LEASE_DETAILS_REC.PAYMENT_SCHEDULE_NAME ,L_PAYMENT_SCHEDULE_ID)  THEN
876 	        	PX_LEASE_DETAILS_REC.PAYMENT_SCHEDULE_ID:=L_PAYMENT_SCHEDULE_ID;
877 	     	 ELSE
878 	        	RAISE VALUE_ERROR_EXCEPTION;
879 	     	 END IF;
880 	    END IF;
881 	  ELSE
882 	     IF NOT CHECK_PAYMENT_SCHEDULE_ID (PX_LEASE_DETAILS_REC.PAYMENT_SCHEDULE_ID) THEN
883 	        RAISE VALUE_ERROR_EXCEPTION;
884 	     END IF;
885 	  END IF;
886 
887 	-----------------------------------
888 	-- CHECK FOR PAYMENT TERMS
889 	-----------------------------------
890 	 IF PX_LEASE_DETAILS_REC.TERMS_ID IS NULL THEN
891 	    IF 	PX_LEASE_DETAILS_REC.PAYMENT_TERMS IS NULL THEN
892  		NULL;
893 	    ELSE
894 		 IF CHECK_PAYMENT_TERMS(PX_LEASE_DETAILS_REC.PAYMENT_TERMS,L_TERMS_ID)  THEN
895 	        	PX_LEASE_DETAILS_REC.TERMS_ID:=L_TERMS_ID;
896 	     	 ELSE
897 	        	RAISE VALUE_ERROR_EXCEPTION;
898 	     	 END IF;
899 	    END IF;
900 	  ELSE
901 	     IF NOT CHECK_TERMS_ID (PX_LEASE_DETAILS_REC.TERMS_ID) THEN
902 	        RAISE VALUE_ERROR_EXCEPTION;
903 	     END IF;
904 	  END IF;
905 
906 
907 	--------------------------------------------------------------------------------------------------
908 	-- CHECK FOR CODE COMBINATION, IF DYNAMIC INSERT IS ON AND IF CODE COMBINATION DOES NOT EXISTS, IT
909 	-- WILL INSERT A NEW CODE COMBINATION
910 	--------------------------------------------------------------------------------------------------
911 
912 	 IF PX_LEASE_DETAILS_REC.DIST_CODE_COMBINATION_ID IS NULL THEN
913 	    IF  PX_LEASE_DETAILS_REC.CON_DIST_CODE_COMBINATION IS NULL THEN
914  		FND_MESSAGE.SET_NAME ('OFA','FA_INV_CODE_COMBINATION');
915 		FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
916 		FND_MSG_PUB.ADD;
917 		RAISE VALUE_ERROR_EXCEPTION;
918 	    ELSE
919 		 IF CHECK_CODE_COMBINATION (PX_LEASE_DETAILS_REC.CON_DIST_CODE_COMBINATION,L_COA_ID,L_DIST_CODE_COMBINATION_ID) THEN
920 	        	PX_LEASE_DETAILS_REC.DIST_CODE_COMBINATION_ID:=L_DIST_CODE_COMBINATION_ID;
921 	     	 ELSE
922 	        	RAISE VALUE_ERROR_EXCEPTION;
923 	     	 END IF;
924 	    END IF;
925 	  ELSE
926 	     IF NOT CHECK_DIST_CODE_COMBINATION_ID( PX_LEASE_DETAILS_REC.DIST_CODE_COMBINATION_ID,L_COA_ID)  THEN
927 	        RAISE VALUE_ERROR_EXCEPTION;
928 	     END IF;
929 	  END IF;
930 
931 	-----------------------------------------------------------------------
932 	-- CHECK IF LEASE NUMBER AND LESSOR SHOULD HAVE A UNIQUE COMBINATION
933 	-----------------------------------------------------------------------
934 
935         IF PX_LEASE_DETAILS_REC.LEASE_NUMBER IS NULL THEN
936   		FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_LEASE_NUMBER');
937 	      FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
938 	      FND_MSG_PUB.ADD;
939 	      RAISE VALUE_ERROR_EXCEPTION;
940 	  END IF;
941 
942 	 IF NOT CHECK_LEASE_LESSOR_COMBINATION (PX_LEASE_DETAILS_REC.LESSOR_ID,PX_LEASE_DETAILS_REC.LEASE_NUMBER,p_log_level_rec) THEN
943  	     RAISE VALUE_ERROR_EXCEPTION;
944 	 END IF;
945 
946 	-----------------------------------------------------------------------
947 	-- CHECK IF FAIR VALUE >= 0
948 	-----------------------------------------------------------------------
949 
950 	 IF PX_LEASE_DETAILS_REC.FAIR_VALUE IS NULL THEN
951  	      FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_FAIR_VALUE');
952 	      FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
953 	      FND_MSG_PUB.ADD;
954 	      RAISE VALUE_ERROR_EXCEPTION;
955 	 END IF;
956 
957 	 IF PX_LEASE_DETAILS_REC.FAIR_VALUE < 1 THEN
958 	      FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_FAIR_VALUE');
959 	      FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
960 	      FND_MSG_PUB.ADD;
961 	      RAISE VALUE_ERROR_EXCEPTION;
962 	 END IF;
963 
964 	---------------------------------
965 	-- CHECK FOR CURRENCY CODE
966 	---------------------------------
967 
968  	IF PX_LEASE_DETAILS_REC.CURRENCY_CODE IS NULL THEN
969 		FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_CURRENCY_NOT_MATCH');
970 		FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
971 	  	FND_MSG_PUB.ADD;
972 	  	RAISE VALUE_ERROR_EXCEPTION;
973 	ELSE
974 	  IF NOT CHECK_CURRENCY_CODE (PX_LEASE_DETAILS_REC.CURRENCY_CODE,PX_LEASE_DETAILS_REC.PAYMENT_SCHEDULE_ID,p_log_level_rec) THEN
975 	     RAISE VALUE_ERROR_EXCEPTION;
976 	  END IF;
977 	 END IF;
978 
979 	-------------------------------------------------
980 	-- CHECK FOR DESCRIPTION SHOULD NOT BE NULL
981 	-------------------------------------------------
982 
983  	IF PX_LEASE_DETAILS_REC.DESCRIPTION IS NULL THEN
984             	FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_DESCRIPTION_NULL');
985 		FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
986 	  	FND_MSG_PUB.ADD;
987 	  	RAISE VALUE_ERROR_EXCEPTION;
988 	 END IF;
989 
990 	--------------------------------------------------------
991 	-- CHECK FOR TRANSFER OWNERSHIP CAN BE NULL,Y OR N
992 	--------------------------------------------------------
993 
994 	 IF (PX_LEASE_DETAILS_REC.TRANSFER_OWNERSHIP IS NULL OR
995 	    PX_LEASE_DETAILS_REC.TRANSFER_OWNERSHIP = 'Y' OR
996 	    PX_LEASE_DETAILS_REC.TRANSFER_OWNERSHIP = 'N' ) THEN
997 	    L_TRANSFER_OWNERSHIP:= NVL(PX_LEASE_DETAILS_REC.TRANSFER_OWNERSHIP,'N') ;
998 	    PX_LEASE_DETAILS_REC.TRANSFER_OWNERSHIP:=L_TRANSFER_OWNERSHIP;
999 	 ELSE
1000 	  FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_TRANSFER_OWNER');
1001 	  FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
1002 	  FND_MSG_PUB.ADD;
1003 	  RAISE VALUE_ERROR_EXCEPTION;
1004 	 END IF;
1005 
1006 	----------------------------------------------------------
1007 	-- CHECK FOR BARGAIN PURCHASE OPTION CAN BE NULL,Y OR N
1008 	----------------------------------------------------------
1009 
1010 	 IF (PX_LEASE_DETAILS_REC.BARGAIN_PURCHASE_OPTION IS NULL OR
1011 	    PX_LEASE_DETAILS_REC.BARGAIN_PURCHASE_OPTION = 'Y' OR
1012 	    PX_LEASE_DETAILS_REC.BARGAIN_PURCHASE_OPTION = 'N' ) THEN
1013 	    L_BARGAIN_PURCHASE_OPTION:= NVL(PX_LEASE_DETAILS_REC.BARGAIN_PURCHASE_OPTION,'N') ;
1014  	    PX_LEASE_DETAILS_REC.BARGAIN_PURCHASE_OPTION:=L_BARGAIN_PURCHASE_OPTION;
1015 	 ELSE
1016 	  FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_BARGAIN_PURCHASE');
1017 	  FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
1018 	  FND_MSG_PUB.ADD;
1019 	  RAISE VALUE_ERROR_EXCEPTION;
1020 	 END IF;
1021 
1022 	----------------------------------------------------------
1023 	-- CHECK FOR IF ASSET_LIFE IS NOT NULL, IT CAN BE => 0
1024 	----------------------------------------------------------
1025 
1026 
1027  	IF PX_LEASE_DETAILS_REC.ASSET_LIFE IS NULL THEN
1028 		PX_LEASE_DETAILS_REC.ASSET_LIFE:=NULL;
1029 	ELSE
1030 	    IF PX_LEASE_DETAILS_REC.ASSET_LIFE < 0 THEN
1031 	       FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_ASSET_LIFE');
1032 	       FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
1033 	       FND_MSG_PUB.ADD;
1034 	       RAISE VALUE_ERROR_EXCEPTION;
1035 	    END IF;
1036 	END IF;
1037 
1038 	-------------------------------------------------------------
1039 	-- CHECK FOR IF LEASE_TERM IS NOT NULL, IT CAN BE => 0
1040 	-------------------------------------------------------------
1041 
1042 	IF PX_LEASE_DETAILS_REC.LEASE_TERM IS NULL THEN
1043 		PX_LEASE_DETAILS_REC.LEASE_TERM:=NULL;
1044 	ELSE
1045 	    IF PX_LEASE_DETAILS_REC.LEASE_TERM < 0 THEN
1046 	       FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_LEASE_TERM');
1047 	       FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
1048 	       FND_MSG_PUB.ADD;
1049 	       RAISE VALUE_ERROR_EXCEPTION;
1050 	    END IF;
1051 	END IF;
1052 
1053 	-------------------------------------------------------------------------
1054 	-- CHECK FOR IF LEASE_TERM IS IS PROVIDED MAKE SURE THAT ASSET LIFE IS
1055 	--   ALSO PROVIDED
1056 	-------------------------------------------------------------------------
1057 
1058 	 IF PX_LEASE_DETAILS_REC.ASSET_LIFE IS NOT NULL AND
1059 	     PX_LEASE_DETAILS_REC.LEASE_TERM IS NOT NULL THEN
1060 	     NULL;
1061 	 ELSIF PX_LEASE_DETAILS_REC.ASSET_LIFE IS NULL AND
1062 	     PX_LEASE_DETAILS_REC.LEASE_TERM IS NULL THEN
1063 	     NULL;
1064 	 ELSE
1065  	    FND_MESSAGE.SET_NAME ('OFA','FA_INCORRECT_ALIFE_LEASE_TERM');
1066 	    FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
1067  	    FND_MSG_PUB.ADD;
1068  	    RAISE VALUE_ERROR_EXCEPTION;
1069 	 END IF;
1070 
1071 	--------------------------------------
1072 	-- CHECK FOR LEASE TYPE
1073 	--------------------------------------
1074 
1075 	IF PX_LEASE_DETAILS_REC.LEASE_TYPE IS NULL THEN
1076 	   FND_MESSAGE.SET_NAME ('OFA','FA_INV_LEASE_TYPE');
1077       	   FND_MESSAGE.SET_TOKEN ('CALLING_FN','CHECK_LEASE_TYPE');
1078 	   FND_MSG_PUB.ADD;
1079         ELSE
1080 	 IF NOT CHECK_LEASE_TYPE(PX_LEASE_DETAILS_REC.LEASE_TYPE,p_log_level_rec) THEN
1081 	    RAISE VALUE_ERROR_EXCEPTION;
1082 	 END IF;
1083 	END IF;
1084 
1085 	RETURN(TRUE);
1086 
1087 EXCEPTION
1088       WHEN PRESENT_VALUE_NOT_FOUND  THEN
1089   	  ROLLBACK TO CREATE_LEASE;
1090 	  FND_MESSAGE.SET_NAME ('OFA','FA_PRESENT_VALUE_NOT_FOUND');
1091       	  FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_CREATE_LEASE');
1092     	  FND_MSG_PUB.ADD;
1093           RETURN(FALSE);
1094       WHEN VALUE_ERROR_EXCEPTION THEN
1095           RETURN(FALSE);
1096       WHEN OTHERS THEN
1097        FA_SRVR_MSG.ADD_SQL_ERROR('VALIDATION_CREATE_LEASE', p_log_level_rec => p_log_level_rec);
1098        RETURN (FALSE);
1099 END VALIDATION_CREATE_LEASE;
1100 
1101 -----------------------------------------
1102 -- VALIDATE UPDATE LEASE API PARAMETERS
1103 -----------------------------------------
1104 FUNCTION VALIDATION_UPDATE_LEASE  (
1105    PX_LEASE_DETAILS_REC_NEW	      	IN  OUT NOCOPY FA_API_TYPES.LEASE_DETAILS_REC_TYPE,
1106    X_OK_TO_UPDATE_FLAG			OUT NOCOPY VARCHAR2
1107   , p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type) RETURN BOOLEAN AS
1108 
1109 	VALUE_ERROR_EXCEPTION               	EXCEPTION;
1110 	L_LEASE_ID				NUMBER:=NULL;
1111 	L_LESSOR_ID				NUMBER:=NULL;
1112 	L_UPDATE_FLAG 				VARCHAR2(1):=NULL;
1113 	L_LESSOR_SITE_ID   			NUMBER:=NULL;
1114 	L_COA_ID 		   		NUMBER:=NULL;
1115 	L_UPDATE_STATEMET			VARCHAR2(3000):=NULL;
1116 	L_OK_TO_UPDATE_LESSOR			VARCHAR2(1):=NULL;
1117 	L_LESSOR_SITE_ORG_ID			NUMBER:=NULL;
1118 	L_ATLEAST_ONE_UPDATE			NUMBER:=0;
1119 
1120 BEGIN
1121 
1122 	--------------------------------
1123 	-- VALIDATE LESSOR INFORMATION
1124 	---------------------------------
1125 	IF PX_LEASE_DETAILS_REC_NEW.LESSOR_ID IS NULL THEN
1126 	    IF PX_LEASE_DETAILS_REC_NEW.LESSOR_NAME IS NULL THEN
1127 		 NULL;
1128 	    ELSE
1129 		IF VALIDATE_LESSOR(NULL,PX_LEASE_DETAILS_REC_NEW.LESSOR_NAME,L_LESSOR_ID,p_log_level_rec) THEN
1130 		   PX_LEASE_DETAILS_REC_NEW.LESSOR_ID:=L_LESSOR_ID;
1131 		ELSE
1132 		   RAISE VALUE_ERROR_EXCEPTION;
1133 		END IF;
1134 	     END IF;
1135 	ELSE
1136 	  	IF VALIDATE_LESSOR(PX_LEASE_DETAILS_REC_NEW.LESSOR_ID,NULL,L_LESSOR_ID,p_log_level_rec) THEN
1137 		   PX_LEASE_DETAILS_REC_NEW.LESSOR_ID:=L_LESSOR_ID;
1138 		ELSE
1139 		   RAISE VALUE_ERROR_EXCEPTION;
1140 		END IF;
1141 	END IF;
1142 
1143 	--------------------------
1144 	-- VALIDATE LEASE ID
1145 	--------------------------
1146 	IF PX_LEASE_DETAILS_REC_NEW.LEASE_ID IS NULL THEN
1147 	    IF PX_LEASE_DETAILS_REC_NEW.LEASE_NUMBER IS NULL THEN
1148      			FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_INCORRECT_LEASE_ID');
1149       	  		FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_UPDATE_LEASE');
1150 	     		FND_MSG_PUB.ADD;
1151 	     		RAISE VALUE_ERROR_EXCEPTION;
1152 	    ELSE
1153 		IF GET_LEASE_ID(L_LESSOR_ID,PX_LEASE_DETAILS_REC_NEW.LEASE_NUMBER,L_LEASE_ID,p_log_level_rec) THEN
1154 	        	PX_LEASE_DETAILS_REC_NEW.LEASE_ID:=L_LEASE_ID;
1155 		ELSE
1156 	        	RAISE VALUE_ERROR_EXCEPTION;
1157 	      END IF;
1158 	    END IF;
1159 	ELSE
1160 	  IF VALIDATE_LEASE_ID(PX_LEASE_DETAILS_REC_NEW.LEASE_ID,p_log_level_rec) THEN
1161 	     L_LEASE_ID:=PX_LEASE_DETAILS_REC_NEW.LEASE_ID;
1162 	  ELSE
1163 	     RAISE VALUE_ERROR_EXCEPTION;
1164 	  END IF;
1165 	END IF;
1166 
1167 	-----------------------------
1168 	-- VALIDATE LESSOR SITE
1169 	-----------------------------
1170 
1171 	IF  PX_LEASE_DETAILS_REC_NEW.LESSOR_SITE_ID IS NULL THEN
1172 	    IF PX_LEASE_DETAILS_REC_NEW.LESSOR_SITE IS NULL THEN
1173   		 NULL;
1174 	    ELSE
1175 		 IF CHECK_LESSOR_SITE_CODE (PX_LEASE_DETAILS_REC_NEW.LESSOR_SITE,L_LESSOR_ID,PX_LEASE_DETAILS_REC_NEW.LESSOR_SITE_ORG_ID ,L_LESSOR_SITE_ID,L_COA_ID,p_log_level_rec) THEN
1176 	        	L_LESSOR_SITE_ORG_ID:=PX_LEASE_DETAILS_REC_NEW.LESSOR_SITE_ORG_ID ;
1177 			PX_LEASE_DETAILS_REC_NEW.LESSOR_site_ID:=L_LESSOR_SITE_ID;
1178  	    	 ELSE
1179  	       	RAISE VALUE_ERROR_EXCEPTION;
1180 	       END IF;
1181 	    END IF;
1182 	ELSE
1183 	  IF CHECK_LESSOR_SITE_ID (PX_LEASE_DETAILS_REC_NEW.LESSOR_SITE_ID,L_LESSOR_ID,L_COA_ID,L_LESSOR_SITE_ORG_ID,p_log_level_rec) THEN
1184 		 L_LESSOR_SITE_ID := PX_LEASE_DETAILS_REC_NEW.LESSOR_SITE_ID;
1185 	     ELSE
1186 	       RAISE VALUE_ERROR_EXCEPTION;
1187 	  END IF;
1188 	END IF;
1189 
1190 	---------------------------------------
1191 	-- CHECK IF LEASE CAN BE UPDATED
1192 	---------------------------------------
1193 
1194 	L_UPDATE_FLAG :=CHECK_LEASE_UPDATE(PX_LEASE_DETAILS_REC_NEW.LEASE_ID
1195                                           ,p_log_level_rec);
1196 
1197 	----------------------------------------------------------------------------------------------
1198 	-- CHECK IF LESSOR AND SITE IS SAME AS IN THE DATABASE DO NOT BOTHER TO UPDATE, IF NOT MAKE
1199 	-- SURE THAT THEY ARE IN THE SAME OPERATING UNIT AS PREVIOUS LESSOR AND  LESSOR SITE
1200 	----------------------------------------------------------------------------------------------
1201 	L_OK_TO_UPDATE_LESSOR :='N';
1202 
1203 	IF L_LESSOR_ID IS NOT NULL
1204 	   AND L_LESSOR_SITE_ID IS NOT NULL THEN
1205 	   IF  L_UPDATE_FLAG = 'Y' THEN
1206 	   	IF VALIDATE_LEASE_LESSOR(L_LEASE_ID,L_LESSOR_ID,L_LESSOR_SITE_ID,L_LESSOR_SITE_ORG_ID,p_log_level_rec)  THEN
1207 	       L_OK_TO_UPDATE_LESSOR :='Y';
1208 		ELSE
1209 	       FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_CANNOT_BE_UPDATED');
1210       	 FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_UPDATE_LEASE');
1211 	       FND_MSG_PUB.ADD;
1212 		 RAISE VALUE_ERROR_EXCEPTION;
1213 	    	END IF;
1214 	    ELSE
1215 		 FND_MESSAGE.SET_NAME ('OFA','FA_LEASE_CANNOT_BE_UPDATED');
1216       	 FND_MESSAGE.SET_TOKEN ('CALLING_FN','VALIDATION_UPDATE_LEASE');
1217 	       FND_MSG_PUB.ADD;
1218 		 RAISE VALUE_ERROR_EXCEPTION;
1219 	    END IF;
1220 	END IF;
1221 
1222 	X_OK_TO_UPDATE_FLAG:=L_OK_TO_UPDATE_LESSOR;
1223 
1224 	RETURN(TRUE);
1225 
1226 EXCEPTION
1227 	WHEN VALUE_ERROR_EXCEPTION THEN
1228         RETURN(FALSE);
1229        WHEN OTHERS THEN
1230        RETURN(FALSE);
1231 END VALIDATION_UPDATE_LEASE;
1232 
1233 PROCEDURE UPDATE_ROW (
1234 	X_ROWID                         IN 		VARCHAR2 DEFAULT NULL,
1235       	X_LEASE_ID                      IN            	NUMBER,
1236 	X_LESSOR_ID                     IN            	NUMBER,
1237 	X_LESSOR_SITE_ID                IN              NUMBER,
1238 	X_DESCRIPTION                   IN            	VARCHAR2,
1239 	X_LAST_UPDATE_DATE              IN            	DATE,
1240 	X_LAST_UPDATED_BY               IN            	NUMBER,
1241 	X_ATTRIBUTE1                    IN              VARCHAR2,
1242 	X_ATTRIBUTE2                    IN              VARCHAR2,
1243 	X_ATTRIBUTE3                    IN              VARCHAR2,
1244 	X_ATTRIBUTE4                    IN              VARCHAR2,
1245 	X_ATTRIBUTE5                    IN              VARCHAR2,
1246 	X_ATTRIBUTE6                    IN              VARCHAR2,
1247 	X_ATTRIBUTE7                    IN              VARCHAR2,
1248 	X_ATTRIBUTE8                    IN              VARCHAR2,
1249 	X_ATTRIBUTE9                    IN              VARCHAR2,
1250 	X_ATTRIBUTE10                   IN              VARCHAR2,
1251 	X_ATTRIBUTE11                   IN              VARCHAR2,
1252 	X_ATTRIBUTE12                   IN              VARCHAR2,
1253 	X_ATTRIBUTE13                   IN              VARCHAR2,
1254 	X_ATTRIBUTE14                   IN              VARCHAR2,
1255 	X_ATTRIBUTE15                   IN              VARCHAR2,
1256 	X_ATTRIBUTE_CATEGORY_CODE       IN              VARCHAR2, p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type)
1257  IS
1258   BEGIN
1259     IF X_ROWID IS NOT NULL THEN
1260      UPDATE FA_LEASES
1261      	SET
1262 	LESSOR_ID                         = NVL(X_LESSOR_ID,LESSOR_ID),
1263 	DESCRIPTION                    	  = NVL(X_DESCRIPTION,DESCRIPTION),
1264 	LAST_UPDATE_DATE               	  = DECODE(X_LAST_UPDATE_DATE,NULL,LAST_UPDATE_DATE,X_LAST_UPDATE_DATE),
1265 	LAST_UPDATED_BY                	  = DECODE(X_LAST_UPDATED_BY,NULL,LAST_UPDATED_BY,FND_API.G_MISS_NUM,NULL,X_LAST_UPDATED_BY),
1266 	ATTRIBUTE1                     	  = DECODE(X_ATTRIBUTE1,NULL,ATTRIBUTE1,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE1),
1267 	ATTRIBUTE2                     	  = DECODE(X_ATTRIBUTE2,NULL,ATTRIBUTE2,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE2),
1268 	ATTRIBUTE3                     	  = DECODE(X_ATTRIBUTE3,NULL,ATTRIBUTE3,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE3),
1269 	ATTRIBUTE4                     	  = DECODE(X_ATTRIBUTE4,NULL,ATTRIBUTE4,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE4),
1270 	ATTRIBUTE5                     	  = DECODE(X_ATTRIBUTE5,NULL,ATTRIBUTE5,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE5),
1271 	ATTRIBUTE6                     	  = DECODE(X_ATTRIBUTE6,NULL,ATTRIBUTE6,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE6),
1272 	ATTRIBUTE7                     	  = DECODE(X_ATTRIBUTE7,NULL,ATTRIBUTE7,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE7),
1273 	ATTRIBUTE8                     	  = DECODE(X_ATTRIBUTE8,NULL,ATTRIBUTE8,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE8),
1274 	ATTRIBUTE9                     	  = DECODE(X_ATTRIBUTE9,NULL,ATTRIBUTE9,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE9),
1275 	ATTRIBUTE10                    	  = DECODE(X_ATTRIBUTE10,NULL,ATTRIBUTE10,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE10),
1276 	ATTRIBUTE11                    	  = DECODE(X_ATTRIBUTE11,NULL,ATTRIBUTE11,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE11),
1277 	ATTRIBUTE12                    	  = DECODE(X_ATTRIBUTE12,NULL,ATTRIBUTE12,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE12),
1278 	ATTRIBUTE13                    	  = DECODE(X_ATTRIBUTE13,NULL,ATTRIBUTE13,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE13),
1279 	ATTRIBUTE14                    	  = DECODE(X_ATTRIBUTE14,NULL,ATTRIBUTE14,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE14),
1280 	ATTRIBUTE15                    	  = DECODE(X_ATTRIBUTE15,NULL,ATTRIBUTE15,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE15),
1281 	ATTRIBUTE_CATEGORY_CODE        	  = DECODE(X_ATTRIBUTE_CATEGORY_CODE,NULL,ATTRIBUTE_CATEGORY_CODE,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE_CATEGORY_CODE),
1282 	LESSOR_SITE_ID                 	  = NVL(X_LESSOR_SITE_ID,LESSOR_SITE_ID)
1283 	WHERE ROWID = X_ROWID;
1284     ELSE
1285       UPDATE FA_LEASES
1286      	SET
1287 	LESSOR_ID                         = NVL(X_LESSOR_ID,LESSOR_ID),
1288 	DESCRIPTION                    	  = NVL(X_DESCRIPTION,DESCRIPTION),
1289 	LAST_UPDATE_DATE               	  = DECODE(X_LAST_UPDATE_DATE,NULL,LAST_UPDATE_DATE,X_LAST_UPDATE_DATE),
1290 	LAST_UPDATED_BY                	  = DECODE(X_LAST_UPDATED_BY,NULL,LAST_UPDATED_BY,FND_API.G_MISS_NUM,NULL,X_LAST_UPDATED_BY),
1291 	ATTRIBUTE1                     	  = DECODE(X_ATTRIBUTE1,NULL,ATTRIBUTE1,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE1),
1292 	ATTRIBUTE2                     	  = DECODE(X_ATTRIBUTE2,NULL,ATTRIBUTE2,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE2),
1293 	ATTRIBUTE3                     	  = DECODE(X_ATTRIBUTE3,NULL,ATTRIBUTE3,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE3),
1294 	ATTRIBUTE4                     	  = DECODE(X_ATTRIBUTE4,NULL,ATTRIBUTE4,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE4),
1295 	ATTRIBUTE5                     	  = DECODE(X_ATTRIBUTE5,NULL,ATTRIBUTE5,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE5),
1296 	ATTRIBUTE6                     	  = DECODE(X_ATTRIBUTE6,NULL,ATTRIBUTE6,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE6),
1297 	ATTRIBUTE7                     	  = DECODE(X_ATTRIBUTE7,NULL,ATTRIBUTE7,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE7),
1298 	ATTRIBUTE8                     	  = DECODE(X_ATTRIBUTE8,NULL,ATTRIBUTE8,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE8),
1299 	ATTRIBUTE9                     	  = DECODE(X_ATTRIBUTE9,NULL,ATTRIBUTE9,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE9),
1300 	ATTRIBUTE10                    	  = DECODE(X_ATTRIBUTE10,NULL,ATTRIBUTE10,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE10),
1301 	ATTRIBUTE11                    	  = DECODE(X_ATTRIBUTE11,NULL,ATTRIBUTE11,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE11),
1302 	ATTRIBUTE12                    	  = DECODE(X_ATTRIBUTE12,NULL,ATTRIBUTE12,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE12),
1303 	ATTRIBUTE13                    	  = DECODE(X_ATTRIBUTE13,NULL,ATTRIBUTE13,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE13),
1304 	ATTRIBUTE14                    	  = DECODE(X_ATTRIBUTE14,NULL,ATTRIBUTE14,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE14),
1305 	ATTRIBUTE15                    	  = DECODE(X_ATTRIBUTE15,NULL,ATTRIBUTE15,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE15),
1306 	ATTRIBUTE_CATEGORY_CODE        	  = DECODE(X_ATTRIBUTE_CATEGORY_CODE,NULL,ATTRIBUTE_CATEGORY_CODE,FND_API.G_MISS_CHAR,NULL,X_ATTRIBUTE_CATEGORY_CODE),
1307 	LESSOR_SITE_ID                 	  = NVL(X_LESSOR_SITE_ID,LESSOR_SITE_ID)
1308 	WHERE LEASE_ID = X_LEASE_ID;
1309     END IF;
1310     --
1311     IF (SQL%NOTFOUND) THEN
1312       RAISE NO_DATA_FOUND;
1313     END IF;
1314 
1315   EXCEPTION
1316     WHEN OTHERS THEN
1317 	FA_SRVR_MSG.ADD_SQL_ERROR(
1318 		CALLING_FN => 'FA_LEASE_PVT.UPDATE_ROW',  p_log_level_rec => p_log_level_rec);
1319 	RAISE;
1320 END UPDATE_ROW;
1321 
1322 END FA_LEASE_PVT;