DBA Data[Home] [Help]

PACKAGE BODY: APPS.ONT_LINE_PAYMENT_DEF_UTIL

Source


1 PACKAGE BODY ONT_LINE_PAYMENT_Def_Util AS
2 /* $Header: OEXDFWKB.pls 115.0 30-MAR-09 23:23:31 appldev ship $ */
3  
4 --  
5 --  Copyright (c) 1996 Oracle Corporation, Redwood Shores, CA, USA
6 --  All rights reserved.
7 --  
8 --  FILENAME
9 --  
10 --      ONT_LINE_PAYMENT_Def_Util
11 --  
12 --  DESCRIPTION
13 --  
14 --      Body of package ONT_LINE_PAYMENT_Def_Util
15 --  
16 --  NOTES
17 --  
18 --  HISTORY
19 --  
20 --  30-MAR-09 Created
21 --  
22  
23 --  Global constant holding the package name
24 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'ONT_LINE_PAYMENT_Def_Util';
25  
26  
27   g_database_object_name varchar2(30) :='OE_AK_LINE_PAYMENTS_V';
28  
29   TYPE Condition_Rec_Type IS RECORD (
30   condition_id      NUMBER,
31   group_number      NUMBER,
32   attribute_code      VARCHAR2(30),
33   value_op            VARCHAR2(15),
34   value_string      VARCHAR2(255));
35  
36   TYPE Condition_Tbl_Type IS TABLE OF Condition_Rec_Type
37   INDEX BY BINARY_INTEGER;
38   g_conditions_tbl_cache         Condition_Tbl_Type;
39  
40   g_attr_condns_cache         ONT_DEF_UTIL.Attr_Condn_Tbl_Type;
41  
42  
43 FUNCTION Get_Attr_Val_Varchar2
44 (   p_attr_code                     IN  VARCHAR2
45 ,   p_record                        IN  OE_AK_LINE_PAYMENTS_V%ROWTYPE 
46 ) RETURN VARCHAR2
47 IS
48 BEGIN
49  
50 IF p_attr_code =('ATTRIBUTE1') THEN
51   IF NVL(p_record.ATTRIBUTE1, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
52   RETURN p_record.ATTRIBUTE1;
53   ELSE
54   RETURN NULL; 
55   END IF;
56 ELSIF p_attr_code =('ATTRIBUTE10') THEN
57   IF NVL(p_record.ATTRIBUTE10, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
58   RETURN p_record.ATTRIBUTE10;
59   ELSE
60   RETURN NULL; 
61   END IF;
62 ELSIF p_attr_code =('ATTRIBUTE11') THEN
63   IF NVL(p_record.ATTRIBUTE11, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
64   RETURN p_record.ATTRIBUTE11;
65   ELSE
66   RETURN NULL; 
67   END IF;
68 ELSIF p_attr_code =('ATTRIBUTE12') THEN
69   IF NVL(p_record.ATTRIBUTE12, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
70   RETURN p_record.ATTRIBUTE12;
71   ELSE
72   RETURN NULL; 
73   END IF;
74 ELSIF p_attr_code =('ATTRIBUTE13') THEN
75   IF NVL(p_record.ATTRIBUTE13, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
76   RETURN p_record.ATTRIBUTE13;
77   ELSE
78   RETURN NULL; 
79   END IF;
80 ELSIF p_attr_code =('ATTRIBUTE14') THEN
81   IF NVL(p_record.ATTRIBUTE14, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
82   RETURN p_record.ATTRIBUTE14;
83   ELSE
84   RETURN NULL; 
85   END IF;
86 ELSIF p_attr_code =('ATTRIBUTE15') THEN
87   IF NVL(p_record.ATTRIBUTE15, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
88   RETURN p_record.ATTRIBUTE15;
89   ELSE
90   RETURN NULL; 
91   END IF;
92 ELSIF p_attr_code =('ATTRIBUTE2') THEN
93   IF NVL(p_record.ATTRIBUTE2, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
94   RETURN p_record.ATTRIBUTE2;
95   ELSE
96   RETURN NULL; 
97   END IF;
98 ELSIF p_attr_code =('ATTRIBUTE3') THEN
99   IF NVL(p_record.ATTRIBUTE3, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
100   RETURN p_record.ATTRIBUTE3;
101   ELSE
102   RETURN NULL; 
103   END IF;
104 ELSIF p_attr_code =('ATTRIBUTE4') THEN
105   IF NVL(p_record.ATTRIBUTE4, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
106   RETURN p_record.ATTRIBUTE4;
107   ELSE
108   RETURN NULL; 
109   END IF;
110 ELSIF p_attr_code =('ATTRIBUTE5') THEN
111   IF NVL(p_record.ATTRIBUTE5, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
112   RETURN p_record.ATTRIBUTE5;
113   ELSE
114   RETURN NULL; 
115   END IF;
116 ELSIF p_attr_code =('ATTRIBUTE6') THEN
117   IF NVL(p_record.ATTRIBUTE6, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
118   RETURN p_record.ATTRIBUTE6;
119   ELSE
120   RETURN NULL; 
121   END IF;
122 ELSIF p_attr_code =('ATTRIBUTE7') THEN
123   IF NVL(p_record.ATTRIBUTE7, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
124   RETURN p_record.ATTRIBUTE7;
125   ELSE
126   RETURN NULL; 
127   END IF;
128 ELSIF p_attr_code =('ATTRIBUTE8') THEN
129   IF NVL(p_record.ATTRIBUTE8, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
130   RETURN p_record.ATTRIBUTE8;
131   ELSE
132   RETURN NULL; 
133   END IF;
134 ELSIF p_attr_code =('ATTRIBUTE9') THEN
135   IF NVL(p_record.ATTRIBUTE9, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
136   RETURN p_record.ATTRIBUTE9;
137   ELSE
138   RETURN NULL; 
139   END IF;
140 ELSIF p_attr_code =('CHECK_NUMBER') THEN
141   IF NVL(p_record.CHECK_NUMBER, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
142   RETURN p_record.CHECK_NUMBER;
143   ELSE
144   RETURN NULL; 
145   END IF;
146 ELSIF p_attr_code =('COMMITMENT_APPLIED_AMOUNT') THEN
147   IF NVL(p_record.COMMITMENT_APPLIED_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
148   RETURN p_record.COMMITMENT_APPLIED_AMOUNT;
149   ELSE
150   RETURN NULL; 
151   END IF;
152 ELSIF p_attr_code =('COMMITMENT_INTERFACED_AMOUNT') THEN
153   IF NVL(p_record.COMMITMENT_INTERFACED_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
154   RETURN p_record.COMMITMENT_INTERFACED_AMOUNT;
155   ELSE
156   RETURN NULL; 
157   END IF;
158 ELSIF p_attr_code =('CONTEXT') THEN
159   IF NVL(p_record.CONTEXT, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
160   RETURN p_record.CONTEXT;
161   ELSE
162   RETURN NULL; 
163   END IF;
164 ELSIF p_attr_code =('CREATED_BY') THEN
165   IF NVL(p_record.CREATED_BY, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
166   RETURN p_record.CREATED_BY;
167   ELSE
168   RETURN NULL; 
169   END IF;
170 ELSIF p_attr_code =('CREATION_DATE') THEN
171   IF NVL(p_record.CREATION_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
172   RETURN p_record.CREATION_DATE;
173   ELSE
174   RETURN NULL; 
175   END IF;
176 ELSIF p_attr_code =('CREDIT_CARD_APPROVAL_CODE') THEN
177   IF NVL(p_record.CREDIT_CARD_APPROVAL_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
178   RETURN p_record.CREDIT_CARD_APPROVAL_CODE;
179   ELSE
180   RETURN NULL; 
181   END IF;
182 ELSIF p_attr_code =('CREDIT_CARD_APPROVAL_DATE') THEN
183   IF NVL(p_record.CREDIT_CARD_APPROVAL_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
184   RETURN p_record.CREDIT_CARD_APPROVAL_DATE;
185   ELSE
186   RETURN NULL; 
187   END IF;
188 ELSIF p_attr_code =('CREDIT_CARD_CODE') THEN
189   IF NVL(p_record.CREDIT_CARD_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
190   RETURN p_record.CREDIT_CARD_CODE;
191   ELSE
192   RETURN NULL; 
193   END IF;
194 ELSIF p_attr_code =('CREDIT_CARD_EXPIRATION_DATE') THEN
195   IF NVL(p_record.CREDIT_CARD_EXPIRATION_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
196   RETURN p_record.CREDIT_CARD_EXPIRATION_DATE;
197   ELSE
198   RETURN NULL; 
199   END IF;
200 ELSIF p_attr_code =('CREDIT_CARD_HOLDER_NAME') THEN
201   IF NVL(p_record.CREDIT_CARD_HOLDER_NAME, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
202   RETURN p_record.CREDIT_CARD_HOLDER_NAME;
203   ELSE
204   RETURN NULL; 
205   END IF;
206 ELSIF p_attr_code =('CREDIT_CARD_NUMBER') THEN
207   IF NVL(p_record.CREDIT_CARD_NUMBER, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
208   RETURN p_record.CREDIT_CARD_NUMBER;
209   ELSE
210   RETURN NULL; 
211   END IF;
212 ELSIF p_attr_code =('DB_FLAG') THEN
213   IF NVL(p_record.DB_FLAG, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
214   RETURN p_record.DB_FLAG;
215   ELSE
216   RETURN NULL; 
217   END IF;
218 ELSIF p_attr_code =('HEADER_ID') THEN
219   IF NVL(p_record.HEADER_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
220   RETURN p_record.HEADER_ID;
221   ELSE
222   RETURN NULL; 
223   END IF;
224 ELSIF p_attr_code =('LAST_UPDATED_BY') THEN
225   IF NVL(p_record.LAST_UPDATED_BY, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
226   RETURN p_record.LAST_UPDATED_BY;
227   ELSE
228   RETURN NULL; 
229   END IF;
230 ELSIF p_attr_code =('LAST_UPDATE_DATE') THEN
231   IF NVL(p_record.LAST_UPDATE_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
232   RETURN p_record.LAST_UPDATE_DATE;
233   ELSE
234   RETURN NULL; 
235   END IF;
236 ELSIF p_attr_code =('LAST_UPDATE_LOGIN') THEN
237   IF NVL(p_record.LAST_UPDATE_LOGIN, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
238   RETURN p_record.LAST_UPDATE_LOGIN;
239   ELSE
240   RETURN NULL; 
241   END IF;
242 ELSIF p_attr_code =('LINE_ID') THEN
243   IF NVL(p_record.LINE_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
244   RETURN p_record.LINE_ID;
245   ELSE
246   RETURN NULL; 
247   END IF;
248 ELSIF p_attr_code =('OPERATION') THEN
249   IF NVL(p_record.OPERATION, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
250   RETURN p_record.OPERATION;
251   ELSE
252   RETURN NULL; 
253   END IF;
254 ELSIF p_attr_code =('PAYMENT_AMOUNT') THEN
255   IF NVL(p_record.PAYMENT_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
256   RETURN p_record.PAYMENT_AMOUNT;
257   ELSE
258   RETURN NULL; 
259   END IF;
260 ELSIF p_attr_code =('PAYMENT_COLLECTION_EVENT') THEN
261   IF NVL(p_record.PAYMENT_COLLECTION_EVENT, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
262   RETURN p_record.PAYMENT_COLLECTION_EVENT;
263   ELSE
264   RETURN NULL; 
265   END IF;
266 ELSIF p_attr_code =('PAYMENT_LEVEL_CODE') THEN
267   IF NVL(p_record.PAYMENT_LEVEL_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
268   RETURN p_record.PAYMENT_LEVEL_CODE;
269   ELSE
270   RETURN NULL; 
271   END IF;
272 ELSIF p_attr_code =('PAYMENT_NUMBER') THEN
273   IF NVL(p_record.PAYMENT_NUMBER, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
274   RETURN p_record.PAYMENT_NUMBER;
275   ELSE
276   RETURN NULL; 
277   END IF;
278 ELSIF p_attr_code =('PAYMENT_SET_ID') THEN
279   IF NVL(p_record.PAYMENT_SET_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
280   RETURN p_record.PAYMENT_SET_ID;
281   ELSE
282   RETURN NULL; 
283   END IF;
284 ELSIF p_attr_code =('PAYMENT_TRX_ID') THEN
285   IF NVL(p_record.PAYMENT_TRX_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
286   RETURN p_record.PAYMENT_TRX_ID;
287   ELSE
288   RETURN NULL; 
289   END IF;
290 ELSIF p_attr_code =('PAYMENT_TYPE_CODE') THEN
291   IF NVL(p_record.PAYMENT_TYPE_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
292   RETURN p_record.PAYMENT_TYPE_CODE;
293   ELSE
294   RETURN NULL; 
295   END IF;
296 ELSIF p_attr_code =('PREPAID_AMOUNT') THEN
297   IF NVL(p_record.PREPAID_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
298   RETURN p_record.PREPAID_AMOUNT;
299   ELSE
300   RETURN NULL; 
301   END IF;
302 ELSIF p_attr_code =('PROGRAM_APPLICATION_ID') THEN
303   IF NVL(p_record.PROGRAM_APPLICATION_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
304   RETURN p_record.PROGRAM_APPLICATION_ID;
305   ELSE
306   RETURN NULL; 
307   END IF;
308 ELSIF p_attr_code =('PROGRAM_ID') THEN
309   IF NVL(p_record.PROGRAM_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
310   RETURN p_record.PROGRAM_ID;
311   ELSE
312   RETURN NULL; 
313   END IF;
314 ELSIF p_attr_code =('PROGRAM_UPDATE_DATE') THEN
315   IF NVL(p_record.PROGRAM_UPDATE_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
316   RETURN p_record.PROGRAM_UPDATE_DATE;
317   ELSE
318   RETURN NULL; 
319   END IF;
320 ELSIF p_attr_code =('RECEIPT_METHOD_ID') THEN
321   IF NVL(p_record.RECEIPT_METHOD_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
322   RETURN p_record.RECEIPT_METHOD_ID;
323   ELSE
324   RETURN NULL; 
325   END IF;
326 ELSIF p_attr_code =('REQUEST_ID') THEN
327   IF NVL(p_record.REQUEST_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
328   RETURN p_record.REQUEST_ID;
329   ELSE
330   RETURN NULL; 
331   END IF;
332 ELSIF p_attr_code =('RETURN_STATUS') THEN
333   IF NVL(p_record.RETURN_STATUS, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
334   RETURN p_record.RETURN_STATUS;
335   ELSE
336   RETURN NULL; 
337   END IF;
338 ELSIF p_attr_code =('TANGIBLE_ID') THEN
339   IF NVL(p_record.TANGIBLE_ID, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
340   RETURN p_record.TANGIBLE_ID;
341   ELSE
342   RETURN NULL; 
343   END IF;
344 ELSE
345 RETURN NULL; 
346 END IF;
347 END  Get_Attr_Val_Varchar2;
348  
349  
350 FUNCTION Get_Attr_Val_Date
351 (   p_attr_code                     IN  VARCHAR2
352 ,   p_record                        IN  OE_AK_LINE_PAYMENTS_V%ROWTYPE 
353 ) RETURN DATE
354 IS
355 BEGIN
356  
357 IF p_attr_code =('CREATION_DATE') THEN
358     IF NVL(p_record.CREATION_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
359     RETURN p_record.CREATION_DATE;
360     ELSE
361     RETURN NULL; 
362     END IF;
363 ELSIF p_attr_code =('CREDIT_CARD_APPROVAL_DATE') THEN
364     IF NVL(p_record.CREDIT_CARD_APPROVAL_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
365     RETURN p_record.CREDIT_CARD_APPROVAL_DATE;
366     ELSE
367     RETURN NULL; 
368     END IF;
369 ELSIF p_attr_code =('CREDIT_CARD_EXPIRATION_DATE') THEN
370     IF NVL(p_record.CREDIT_CARD_EXPIRATION_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
371     RETURN p_record.CREDIT_CARD_EXPIRATION_DATE;
372     ELSE
373     RETURN NULL; 
374     END IF;
375 ELSIF p_attr_code =('LAST_UPDATE_DATE') THEN
376     IF NVL(p_record.LAST_UPDATE_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
377     RETURN p_record.LAST_UPDATE_DATE;
378     ELSE
379     RETURN NULL; 
380     END IF;
381 ELSIF p_attr_code =('PROGRAM_UPDATE_DATE') THEN
382     IF NVL(p_record.PROGRAM_UPDATE_DATE, FND_API.G_MISS_DATE) <> FND_API.G_MISS_DATE THEN
383     RETURN p_record.PROGRAM_UPDATE_DATE;
384     ELSE
385     RETURN NULL; 
386     END IF;
387 ELSIF p_attr_code =('ATTRIBUTE1') THEN
388     IF NVL(p_record.ATTRIBUTE1, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
389     RETURN to_date(p_record.ATTRIBUTE1,'RRRR/MM/DD HH24:MI:SS');
390     ELSE
391     RETURN NULL; 
392     END IF;
393 ELSIF p_attr_code =('ATTRIBUTE10') THEN
394     IF NVL(p_record.ATTRIBUTE10, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
395     RETURN to_date(p_record.ATTRIBUTE10,'RRRR/MM/DD HH24:MI:SS');
396     ELSE
397     RETURN NULL; 
398     END IF;
399 ELSIF p_attr_code =('ATTRIBUTE11') THEN
400     IF NVL(p_record.ATTRIBUTE11, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
401     RETURN to_date(p_record.ATTRIBUTE11,'RRRR/MM/DD HH24:MI:SS');
402     ELSE
403     RETURN NULL; 
404     END IF;
405 ELSIF p_attr_code =('ATTRIBUTE12') THEN
406     IF NVL(p_record.ATTRIBUTE12, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
407     RETURN to_date(p_record.ATTRIBUTE12,'RRRR/MM/DD HH24:MI:SS');
408     ELSE
409     RETURN NULL; 
410     END IF;
411 ELSIF p_attr_code =('ATTRIBUTE13') THEN
412     IF NVL(p_record.ATTRIBUTE13, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
413     RETURN to_date(p_record.ATTRIBUTE13,'RRRR/MM/DD HH24:MI:SS');
414     ELSE
415     RETURN NULL; 
416     END IF;
417 ELSIF p_attr_code =('ATTRIBUTE14') THEN
418     IF NVL(p_record.ATTRIBUTE14, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
419     RETURN to_date(p_record.ATTRIBUTE14,'RRRR/MM/DD HH24:MI:SS');
420     ELSE
421     RETURN NULL; 
422     END IF;
423 ELSIF p_attr_code =('ATTRIBUTE15') THEN
424     IF NVL(p_record.ATTRIBUTE15, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
425     RETURN to_date(p_record.ATTRIBUTE15,'RRRR/MM/DD HH24:MI:SS');
426     ELSE
427     RETURN NULL; 
428     END IF;
429 ELSIF p_attr_code =('ATTRIBUTE2') THEN
430     IF NVL(p_record.ATTRIBUTE2, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
431     RETURN to_date(p_record.ATTRIBUTE2,'RRRR/MM/DD HH24:MI:SS');
432     ELSE
433     RETURN NULL; 
434     END IF;
435 ELSIF p_attr_code =('ATTRIBUTE3') THEN
436     IF NVL(p_record.ATTRIBUTE3, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
437     RETURN to_date(p_record.ATTRIBUTE3,'RRRR/MM/DD HH24:MI:SS');
438     ELSE
439     RETURN NULL; 
440     END IF;
441 ELSIF p_attr_code =('ATTRIBUTE4') THEN
442     IF NVL(p_record.ATTRIBUTE4, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
443     RETURN to_date(p_record.ATTRIBUTE4,'RRRR/MM/DD HH24:MI:SS');
444     ELSE
445     RETURN NULL; 
446     END IF;
447 ELSIF p_attr_code =('ATTRIBUTE5') THEN
448     IF NVL(p_record.ATTRIBUTE5, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
449     RETURN to_date(p_record.ATTRIBUTE5,'RRRR/MM/DD HH24:MI:SS');
450     ELSE
451     RETURN NULL; 
452     END IF;
453 ELSIF p_attr_code =('ATTRIBUTE6') THEN
454     IF NVL(p_record.ATTRIBUTE6, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
455     RETURN to_date(p_record.ATTRIBUTE6,'RRRR/MM/DD HH24:MI:SS');
456     ELSE
457     RETURN NULL; 
458     END IF;
459 ELSIF p_attr_code =('ATTRIBUTE7') THEN
460     IF NVL(p_record.ATTRIBUTE7, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
461     RETURN to_date(p_record.ATTRIBUTE7,'RRRR/MM/DD HH24:MI:SS');
462     ELSE
463     RETURN NULL; 
464     END IF;
465 ELSIF p_attr_code =('ATTRIBUTE8') THEN
466     IF NVL(p_record.ATTRIBUTE8, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
467     RETURN to_date(p_record.ATTRIBUTE8,'RRRR/MM/DD HH24:MI:SS');
468     ELSE
469     RETURN NULL; 
470     END IF;
471 ELSIF p_attr_code =('ATTRIBUTE9') THEN
472     IF NVL(p_record.ATTRIBUTE9, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
473     RETURN to_date(p_record.ATTRIBUTE9,'RRRR/MM/DD HH24:MI:SS');
474     ELSE
475     RETURN NULL; 
476     END IF;
477 ELSIF p_attr_code =('CHECK_NUMBER') THEN
478     IF NVL(p_record.CHECK_NUMBER, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
479     RETURN to_date(p_record.CHECK_NUMBER,'RRRR/MM/DD HH24:MI:SS');
480     ELSE
481     RETURN NULL; 
482     END IF;
483 ELSIF p_attr_code =('COMMITMENT_APPLIED_AMOUNT') THEN
484     IF NVL(p_record.COMMITMENT_APPLIED_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
485     RETURN to_date(p_record.COMMITMENT_APPLIED_AMOUNT,'RRRR/MM/DD HH24:MI:SS');
486     ELSE
487     RETURN NULL; 
488     END IF;
489 ELSIF p_attr_code =('COMMITMENT_INTERFACED_AMOUNT') THEN
490     IF NVL(p_record.COMMITMENT_INTERFACED_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
491     RETURN to_date(p_record.COMMITMENT_INTERFACED_AMOUNT,'RRRR/MM/DD HH24:MI:SS');
492     ELSE
493     RETURN NULL; 
494     END IF;
495 ELSIF p_attr_code =('CONTEXT') THEN
496     IF NVL(p_record.CONTEXT, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
497     RETURN to_date(p_record.CONTEXT,'RRRR/MM/DD HH24:MI:SS');
498     ELSE
499     RETURN NULL; 
500     END IF;
501 ELSIF p_attr_code =('CREATED_BY') THEN
502     IF NVL(p_record.CREATED_BY, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
503     RETURN to_date(p_record.CREATED_BY,'RRRR/MM/DD HH24:MI:SS');
504     ELSE
505     RETURN NULL; 
506     END IF;
507 ELSIF p_attr_code =('CREDIT_CARD_APPROVAL_CODE') THEN
508     IF NVL(p_record.CREDIT_CARD_APPROVAL_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
509     RETURN to_date(p_record.CREDIT_CARD_APPROVAL_CODE,'RRRR/MM/DD HH24:MI:SS');
510     ELSE
511     RETURN NULL; 
512     END IF;
513 ELSIF p_attr_code =('CREDIT_CARD_CODE') THEN
514     IF NVL(p_record.CREDIT_CARD_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
515     RETURN to_date(p_record.CREDIT_CARD_CODE,'RRRR/MM/DD HH24:MI:SS');
516     ELSE
517     RETURN NULL; 
518     END IF;
519 ELSIF p_attr_code =('CREDIT_CARD_HOLDER_NAME') THEN
520     IF NVL(p_record.CREDIT_CARD_HOLDER_NAME, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
521     RETURN to_date(p_record.CREDIT_CARD_HOLDER_NAME,'RRRR/MM/DD HH24:MI:SS');
522     ELSE
523     RETURN NULL; 
524     END IF;
525 ELSIF p_attr_code =('CREDIT_CARD_NUMBER') THEN
526     IF NVL(p_record.CREDIT_CARD_NUMBER, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
527     RETURN to_date(p_record.CREDIT_CARD_NUMBER,'RRRR/MM/DD HH24:MI:SS');
528     ELSE
529     RETURN NULL; 
530     END IF;
531 ELSIF p_attr_code =('DB_FLAG') THEN
532     IF NVL(p_record.DB_FLAG, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
533     RETURN to_date(p_record.DB_FLAG,'RRRR/MM/DD HH24:MI:SS');
534     ELSE
535     RETURN NULL; 
536     END IF;
537 ELSIF p_attr_code =('HEADER_ID') THEN
538     IF NVL(p_record.HEADER_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
539     RETURN to_date(p_record.HEADER_ID,'RRRR/MM/DD HH24:MI:SS');
540     ELSE
541     RETURN NULL; 
542     END IF;
543 ELSIF p_attr_code =('LAST_UPDATED_BY') THEN
544     IF NVL(p_record.LAST_UPDATED_BY, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
545     RETURN to_date(p_record.LAST_UPDATED_BY,'RRRR/MM/DD HH24:MI:SS');
546     ELSE
547     RETURN NULL; 
548     END IF;
549 ELSIF p_attr_code =('LAST_UPDATE_LOGIN') THEN
550     IF NVL(p_record.LAST_UPDATE_LOGIN, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
551     RETURN to_date(p_record.LAST_UPDATE_LOGIN,'RRRR/MM/DD HH24:MI:SS');
552     ELSE
553     RETURN NULL; 
554     END IF;
555 ELSIF p_attr_code =('LINE_ID') THEN
556     IF NVL(p_record.LINE_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
557     RETURN to_date(p_record.LINE_ID,'RRRR/MM/DD HH24:MI:SS');
558     ELSE
559     RETURN NULL; 
560     END IF;
561 ELSIF p_attr_code =('OPERATION') THEN
562     IF NVL(p_record.OPERATION, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
563     RETURN to_date(p_record.OPERATION,'RRRR/MM/DD HH24:MI:SS');
564     ELSE
565     RETURN NULL; 
566     END IF;
567 ELSIF p_attr_code =('PAYMENT_AMOUNT') THEN
568     IF NVL(p_record.PAYMENT_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
569     RETURN to_date(p_record.PAYMENT_AMOUNT,'RRRR/MM/DD HH24:MI:SS');
570     ELSE
571     RETURN NULL; 
572     END IF;
573 ELSIF p_attr_code =('PAYMENT_COLLECTION_EVENT') THEN
574     IF NVL(p_record.PAYMENT_COLLECTION_EVENT, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
575     RETURN to_date(p_record.PAYMENT_COLLECTION_EVENT,'RRRR/MM/DD HH24:MI:SS');
576     ELSE
577     RETURN NULL; 
578     END IF;
579 ELSIF p_attr_code =('PAYMENT_LEVEL_CODE') THEN
580     IF NVL(p_record.PAYMENT_LEVEL_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
581     RETURN to_date(p_record.PAYMENT_LEVEL_CODE,'RRRR/MM/DD HH24:MI:SS');
582     ELSE
583     RETURN NULL; 
584     END IF;
585 ELSIF p_attr_code =('PAYMENT_NUMBER') THEN
586     IF NVL(p_record.PAYMENT_NUMBER, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
587     RETURN to_date(p_record.PAYMENT_NUMBER,'RRRR/MM/DD HH24:MI:SS');
588     ELSE
589     RETURN NULL; 
590     END IF;
591 ELSIF p_attr_code =('PAYMENT_SET_ID') THEN
592     IF NVL(p_record.PAYMENT_SET_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
593     RETURN to_date(p_record.PAYMENT_SET_ID,'RRRR/MM/DD HH24:MI:SS');
594     ELSE
595     RETURN NULL; 
596     END IF;
597 ELSIF p_attr_code =('PAYMENT_TRX_ID') THEN
598     IF NVL(p_record.PAYMENT_TRX_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
599     RETURN to_date(p_record.PAYMENT_TRX_ID,'RRRR/MM/DD HH24:MI:SS');
600     ELSE
601     RETURN NULL; 
602     END IF;
603 ELSIF p_attr_code =('PAYMENT_TYPE_CODE') THEN
604     IF NVL(p_record.PAYMENT_TYPE_CODE, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
605     RETURN to_date(p_record.PAYMENT_TYPE_CODE,'RRRR/MM/DD HH24:MI:SS');
606     ELSE
607     RETURN NULL; 
608     END IF;
609 ELSIF p_attr_code =('PREPAID_AMOUNT') THEN
610     IF NVL(p_record.PREPAID_AMOUNT, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
611     RETURN to_date(p_record.PREPAID_AMOUNT,'RRRR/MM/DD HH24:MI:SS');
612     ELSE
613     RETURN NULL; 
614     END IF;
615 ELSIF p_attr_code =('PROGRAM_APPLICATION_ID') THEN
616     IF NVL(p_record.PROGRAM_APPLICATION_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
617     RETURN to_date(p_record.PROGRAM_APPLICATION_ID,'RRRR/MM/DD HH24:MI:SS');
618     ELSE
619     RETURN NULL; 
620     END IF;
621 ELSIF p_attr_code =('PROGRAM_ID') THEN
622     IF NVL(p_record.PROGRAM_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
623     RETURN to_date(p_record.PROGRAM_ID,'RRRR/MM/DD HH24:MI:SS');
624     ELSE
625     RETURN NULL; 
626     END IF;
627 ELSIF p_attr_code =('RECEIPT_METHOD_ID') THEN
628     IF NVL(p_record.RECEIPT_METHOD_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
629     RETURN to_date(p_record.RECEIPT_METHOD_ID,'RRRR/MM/DD HH24:MI:SS');
630     ELSE
631     RETURN NULL; 
632     END IF;
633 ELSIF p_attr_code =('REQUEST_ID') THEN
634     IF NVL(p_record.REQUEST_ID, FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM THEN
635     RETURN to_date(p_record.REQUEST_ID,'RRRR/MM/DD HH24:MI:SS');
636     ELSE
637     RETURN NULL; 
638     END IF;
639 ELSIF p_attr_code =('RETURN_STATUS') THEN
640     IF NVL(p_record.RETURN_STATUS, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
641     RETURN to_date(p_record.RETURN_STATUS,'RRRR/MM/DD HH24:MI:SS');
642     ELSE
643     RETURN NULL; 
644     END IF;
645 ELSIF p_attr_code =('TANGIBLE_ID') THEN
646     IF NVL(p_record.TANGIBLE_ID, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
647     RETURN to_date(p_record.TANGIBLE_ID,'RRRR/MM/DD HH24:MI:SS');
648     ELSE
649     RETURN NULL; 
650     END IF;
651 ELSE
652 RETURN NULL; 
653 END IF;
654  
655 END  Get_Attr_Val_Date;
656  
657  
658   PROCEDURE Clear_LINE_PAYMENT_Cache
659   IS  
660   BEGIN  
661   g_cached_record.PAYMENT_NUMBER := null;
662   g_cached_record.LINE_ID := null;
663   g_cached_record.HEADER_ID := null;
664    END Clear_LINE_PAYMENT_Cache;
665  
666  
667 FUNCTION Sync_LINE_PAYMENT_Cache
668 (   p_PAYMENT_NUMBER                IN  NUMBER
669 ,   p_LINE_ID                       IN  NUMBER
670 ,   p_HEADER_ID                     IN  NUMBER
671  
672  
673 ) RETURN NUMBER
674 IS
675 CURSOR cache IS 
676   SELECT * FROM   OE_AK_LINE_PAYMENTS_V
677   WHERE PAYMENT_NUMBER  = p_PAYMENT_NUMBER
678   AND LINE_ID  = p_LINE_ID
679   AND HEADER_ID  = p_HEADER_ID
680   ;
681 BEGIN
682  
683 IF (NVL(p_PAYMENT_NUMBER,FND_API.G_MISS_NUM)  = FND_API.G_MISS_NUM) 
684 OR (NVL(p_LINE_ID,FND_API.G_MISS_NUM)  = FND_API.G_MISS_NUM) 
685 OR (NVL(p_HEADER_ID,FND_API.G_MISS_NUM)  = FND_API.G_MISS_NUM) 
686 THEN
687   RETURN 0 ;
688 ELSIF (NVL(g_cached_record.PAYMENT_NUMBER,FND_API.G_MISS_NUM)  <>  p_PAYMENT_NUMBER) 
689 OR (NVL(g_cached_record.LINE_ID,FND_API.G_MISS_NUM)  <>  p_LINE_ID) 
690 OR (NVL(g_cached_record.HEADER_ID,FND_API.G_MISS_NUM)  <>  p_HEADER_ID) 
691 THEN
692   Clear_LINE_PAYMENT_Cache;
693   Open cache;
694   FETCH cache into g_cached_record;
695   IF cache%NOTFOUND THEN
696     RETURN 0;
697   END IF;
698   Close cache;
699   RETURN 1 ;
700 END IF;
701  
702   RETURN 1 ;
703 EXCEPTION
704   WHEN OTHERS THEN 
705   RETURN 0 ;
706 END Sync_LINE_PAYMENT_Cache;
707  
708  
709 FUNCTION Get_Foreign_Attr_Val_Varchar2
710 (   p_foreign_attr_code             IN  VARCHAR2
711 ,   p_record                        IN  OE_AK_LINE_PAYMENTS_V%ROWTYPE 
712 ,   p_foreign_database_object_name  IN  VARCHAR2
713 ) RETURN VARCHAR2
714  
715 IS
716  
717 BEGIN
718  
719  IF (p_foreign_database_object_name = 'OE_AK_ORDER_HEADERS_V') THEN
720     IF NVL(p_record.HEADER_ID,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM THEN 
721       RETURN NULL;
722     END IF;
723     IF  ONT_HEADER_Def_Util.Sync_HEADER_Cache
724       (p_HEADER_ID => p_record.HEADER_ID) = 1  then 
725     RETURN ONT_HEADER_Def_Util.Get_Attr_Val_Varchar2
726       (p_foreign_attr_code,ONT_HEADER_Def_Util.g_cached_record); 
727   END IF;
728  
729  ELSIF (p_foreign_database_object_name = 'OE_AK_ORDER_LINES_V') THEN
730     IF NVL(p_record.LINE_ID,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM THEN 
731       RETURN NULL;
732     END IF;
733     IF  ONT_LINE_Def_Util.Sync_LINE_Cache
734       (p_LINE_ID => p_record.LINE_ID) = 1  then 
735     RETURN ONT_LINE_Def_Util.Get_Attr_Val_Varchar2
736       (p_foreign_attr_code,ONT_LINE_Def_Util.g_cached_record); 
737   END IF;
738 END IF;
739  
740      RETURN NULL;
741 END Get_Foreign_Attr_Val_Varchar2;
742  
743 FUNCTION Get_Foreign_Attr_Val_Date
744 (   p_foreign_attr_code             IN  VARCHAR2
745 ,   p_record                        IN  OE_AK_LINE_PAYMENTS_V%ROWTYPE 
746 ,   p_foreign_database_object_name  IN  VARCHAR2
747 ) RETURN DATE
748  
749 IS
750 BEGIN
751  
752  IF (p_foreign_database_object_name = 'OE_AK_ORDER_HEADERS_V') THEN
753     IF NVL(p_record.HEADER_ID,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM THEN 
754       RETURN NULL;
755     END IF;
756     IF  ONT_HEADER_Def_Util.Sync_HEADER_Cache
757       (p_HEADER_ID => p_record.HEADER_ID) = 1  then 
758     RETURN ONT_HEADER_Def_Util.Get_Attr_Val_Date(p_foreign_attr_code,ONT_HEADER_Def_Util.g_cached_record); 
759   END IF;
760  
761  ELSIF (p_foreign_database_object_name = 'OE_AK_ORDER_LINES_V') THEN
762     IF NVL(p_record.LINE_ID,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM THEN 
763       RETURN NULL;
764     END IF;
765     IF  ONT_LINE_Def_Util.Sync_LINE_Cache
766       (p_LINE_ID => p_record.LINE_ID) = 1  then 
767     RETURN ONT_LINE_Def_Util.Get_Attr_Val_Date(p_foreign_attr_code,ONT_LINE_Def_Util.g_cached_record); 
768   END IF;
769 END IF;
770  
771      RETURN NULL;
772 END Get_Foreign_Attr_Val_Date;
773  
774  
775 FUNCTION Get_Condition_Index_In_Cache
776 (   p_condition_id                  IN  NUMBER
777 ) RETURN NUMBER
778 IS  
779 BEGIN  
780  
781   FOR i in 0..g_conditions_tbl_cache.COUNT -1  LOOP  
782     if (g_conditions_tbl_cache(i).condition_id = p_condition_id ) then  
783       RETURN i; 
784     END IF;  
785   END LOOP;  
786   RETURN -1; 
787 END Get_Condition_Index_In_Cache;  
788 FUNCTION Validate_Defaulting_Condition
789 (   p_condition_id                  IN  NUMBER
790 ,   p_line_payment_rec              IN  OE_AK_LINE_PAYMENTS_V%ROWTYPE 
791 ) RETURN BOOLEAN
792 IS  
793   CURSOR CONDNS IS  
794   SELECT condition_id,group_number,attribute_code,
795     value_op,value_string
796   FROM OE_DEF_CONDN_ELEMS
797   WHERE condition_id = p_condition_id
798   ORDER BY group_number;
799  
800   I         NUMBER;  
801   l_column_value          VARCHAR2(255);  
802   l_start_index         NUMBER;  
803   l_stop_index         NUMBER ;  
804   l_curr_group         NUMBER;  
805   l_group_result         BOOLEAN;  
806   l_element_result         BOOLEAN;  
807 BEGIN  
808  
809   l_start_index := Get_Condition_Index_In_Cache(p_condition_id);
810 IF (l_start_index = -1) THEN  
811   l_stop_index := g_conditions_tbl_cache.COUNT;  
812   l_start_index := l_stop_index;
813   i := l_start_index;
814   FOR condns_rec IN CONDNS LOOP  
815     g_conditions_tbl_cache(i).condition_id := condns_rec.condition_id;
816     g_conditions_tbl_cache(i).group_number := condns_rec.group_number;
817     g_conditions_tbl_cache(i).attribute_code := condns_rec.attribute_code;
818     g_conditions_tbl_cache(i).value_op := condns_rec.value_op;
819     g_conditions_tbl_cache(i).value_string := condns_rec.value_string;
820   i := i+1;
821   END LOOP;  
822 IF (i = l_start_index) THEN  
823     Return FALSE;  
824   END IF;  
825   END IF;  
826  
827  
828   i := 0;
829   l_curr_group := g_conditions_tbl_cache(l_start_index).group_number;
830   l_group_result := TRUE;
831   l_element_result := FALSE;
832  
833  IF g_conditions_tbl_cache.COUNT <> 0 then  
834 FOR J in l_start_index ..g_conditions_tbl_cache.COUNT -1 LOOP  
835   IF (g_conditions_tbl_cache(j).condition_id <>  p_condition_id) THEN
836     EXIT;
837   END IF;
838  
839   IF (l_curr_group <>  g_conditions_tbl_cache(j).group_number) THEN
840     IF (l_group_result = TRUE) THEN
841       EXIT;
842     ELSE
843       l_group_result := TRUE;
844     END IF;
845   END IF;
846  
847   l_element_result := ONT_Def_Util.Validate_Value(g_conditions_tbl_cache(j).value_string,
848   g_conditions_tbl_cache(j).value_op,Get_Attr_Val_Varchar2(g_conditions_tbl_cache(j).attribute_code,p_line_payment_rec ));
849     l_group_result := l_group_result AND l_element_result;
850 END LOOP;
851 ELSE
852   l_group_result := FALSE;
853   END IF;
854   RETURN l_group_result;
855 END Validate_Defaulting_Condition;
856  
857  
858 PROCEDURE Update_Attr_Rules_Cache
859 	( p_condn_index		        IN NUMBER
860 	)
861 IS
862 l_index			NUMBER := 0;
863 l_start_index		NUMBER := 0;
864 l_attribute_code		VARCHAR2(30);
865 l_condition_id		NUMBER;
866     CURSOR DEFSRC IS SELECT
867     R.SEQUENCE_NO,
868     R.SRC_TYPE,
869     R.SRC_ATTRIBUTE_CODE,
870     R.SRC_DATABASE_OBJECT_NAME,
871     R.SRC_PARAMETER_NAME,
872     R.SRC_SYSTEM_VARIABLE_EXPR,
873     R.SRC_PROFILE_OPTION,
874     R.SRC_API_PKG||'.'||R.SRC_API_FN SRC_API_NAME,
875     R.SRC_CONSTANT_VALUE,
876     R.SRC_SEQUENCE_NAME
877     FROM OE_DEF_ATTR_DEF_RULES R, OE_DEF_ATTR_CONDNS C
878     WHERE R.database_object_name = g_database_object_name
879     AND R.attribute_code = l_attribute_code
880     AND C.database_object_name = g_database_object_name
881     AND C.attribute_code = l_attribute_code
882     AND R.attr_def_condition_id = C.attr_def_condition_id
883     AND C.CONDITION_ID = l_condition_id
884     AND C.ENABLED_FLAG = 'Y'
885     ORDER BY SEQUENCE_NO;
886 BEGIN
887  
888       l_attribute_code := g_attr_condns_cache(p_condn_index).attribute_code;
889       l_condition_id := g_attr_condns_cache(p_condn_index).condition_id;
890       l_start_index := g_attr_rules_cache.COUNT + 1;
891  
892     FOR DEFSRC_rec IN DEFSRC LOOP
893 	l_index := g_attr_rules_cache.COUNT + 1; 
894 	g_attr_rules_cache(l_index).SRC_TYPE 
895 			:= DEFSRC_rec.SRC_TYPE; 
896 	g_attr_rules_cache(l_index).SRC_ATTRIBUTE_CODE 
897 			:= DEFSRC_rec.SRC_ATTRIBUTE_CODE; 
898 	g_attr_rules_cache(l_index).SRC_DATABASE_OBJECT_NAME 
899 			:= DEFSRC_rec.SRC_DATABASE_OBJECT_NAME; 
900 	g_attr_rules_cache(l_index).SRC_PARAMETER_NAME 
901 			:= DEFSRC_rec.SRC_PARAMETER_NAME; 
902 	g_attr_rules_cache(l_index).SRC_SYSTEM_VARIABLE_EXPR 
903 			:= DEFSRC_rec.SRC_SYSTEM_VARIABLE_EXPR; 
904 	g_attr_rules_cache(l_index).SRC_PROFILE_OPTION
905 			:= DEFSRC_rec.SRC_PROFILE_OPTION; 
906 	g_attr_rules_cache(l_index).SRC_API_NAME
907 			:= DEFSRC_rec.SRC_API_NAME; 
908 	g_attr_rules_cache(l_index).SRC_CONSTANT_VALUE
909 			:= DEFSRC_rec.SRC_CONSTANT_VALUE; 
910 	g_attr_rules_cache(l_index).SRC_SEQUENCE_NAME
911 			:= DEFSRC_rec.SRC_SEQUENCE_NAME; 
912    END LOOP;
913  
914    IF l_index > 0 THEN
915 	g_attr_condns_cache(p_condn_index).rules_start_index := l_start_index;
916 	g_attr_condns_cache(p_condn_index).rules_stop_index := l_index;
917    ELSE
918 	g_attr_condns_cache(p_condn_index).rules_start_index := -1;
919    END IF;
920  
921 EXCEPTION
922 	WHEN OTHERS THEN
923         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
924         THEN
925             OE_MSG_PUB.Add_Exc_Msg
926             (   G_PKG_NAME          ,
927 		'Update_Attr_Rules_Cache: '||l_attribute_code
928             );
929         END IF;
930         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
931 END Update_Attr_Rules_Cache;
932  
933  
934 PROCEDURE Get_Valid_Defaulting_Rules
935 (   p_attr_code                     IN  VARCHAR2
936 ,   p_attr_id                       IN  NUMBER
937 ,   p_line_payment_rec              IN  OE_AK_LINE_PAYMENTS_V%ROWTYPE
938 ,   x_rules_start_index_tbl         OUT OE_GLOBALS.NUMBER_TBL_Type
939 ,   x_rules_stop_index_tbl          OUT OE_GLOBALS.NUMBER_TBL_Type
940 ) IS
941 l_condn_index     			NUMBER; 
942 l_index     				NUMBER := 0; 
943 l_valid_condn_index_tbl		OE_GLOBALS.Number_TBL_Type; 
944 condns_cached				BOOLEAN := FALSE;
945 num_attr_condns			NUMBER := 0;
946 CURSOR ATTRC IS    
947     SELECT condition_id  
948     FROM OE_DEF_ATTR_CONDNS    
949     WHERE attribute_code = p_attr_code  
950       AND database_object_name = g_database_object_name  
951       AND enabled_flag = 'Y'
952     ORDER BY precedence;
953 BEGIN  
954  
955   l_condn_index := p_attr_id * ONT_Def_Util.G_MAX_ATTR_CONDNS;
956  
957   -- Check in the cache
958   WHILE g_attr_condns_cache.EXISTS(l_condn_index) LOOP
959     condns_cached := TRUE;
960     IF g_attr_condns_cache(l_condn_index).conditions_defined = 'N' THEN
961       EXIT;
962     ELSE
963       IF (g_attr_condns_cache(l_condn_index).condition_id = 0 OR
964          Validate_Defaulting_Condition
965 	       (g_attr_condns_cache(l_condn_index).condition_id,p_line_payment_rec)= TRUE) THEN 
966 	     l_index := l_index + 1;
967 	     l_valid_condn_index_tbl(l_index) := l_condn_index;
968       END IF;
969     END IF;
970     l_condn_index := l_condn_index + 1;
971   END LOOP;
972  
973   -- If the conditions were cached for this attribute, 
974   -- then return rules for valid conditions
975   IF condns_cached THEN
976  
977       GOTO Return_Rules;
978  
979   -- If the conditions were NOT cached for this attribute,
980   -- then cache them AND get the conditions that are valid
981   -- for the current record
982   ELSE
983     FOR c_rec IN ATTRC LOOP  
984       -- Put it in the cache
985       g_attr_condns_cache(l_condn_index).attribute_code
986         := p_attr_code;
987       g_attr_condns_cache(l_condn_index).condition_id
988         := c_rec.condition_id;
989       g_attr_condns_cache(l_condn_index).conditions_defined
990         := 'Y';
991 	  IF (c_rec.condition_id = 0 OR
992 	         Validate_Defaulting_Condition
993 		  (c_rec.condition_id,p_line_payment_rec)= TRUE) THEN 
994 	     l_index := l_index + 1;
995 	     l_valid_condn_index_tbl(l_index) := l_condn_index;
996       END IF;
997       l_condn_index := l_condn_index + 1;
998       num_attr_condns := num_attr_condns + 1;
999     END LOOP;
1000  
1001     -- No defaulting conditions defined for this attribute,
1002     -- insert a new record in the cache with conditions_defined = 'N'
1003     IF num_attr_condns = 0 THEN
1004       g_attr_condns_cache(l_condn_index).attribute_code
1005         := p_attr_code;
1006       g_attr_condns_cache(l_condn_index).conditions_defined
1007         := 'N';
1008     END IF;
1009  
1010   END IF;
1011  
1012   <<Return_Rules>>
1013 FOR I IN 1..l_index LOOP
1014   IF g_attr_condns_cache(l_valid_condn_index_tbl(I)).rules_start_index IS NULL THEN
1015      Update_Attr_Rules_Cache(l_valid_condn_index_tbl(I));
1016   END IF;
1017   x_rules_start_index_tbl(I) := g_attr_condns_cache(l_valid_condn_index_tbl(I)).rules_start_index;
1018   x_rules_stop_index_tbl(I) := g_attr_condns_cache(l_valid_condn_index_tbl(I)).rules_stop_index;
1019 END LOOP;
1020  
1021 EXCEPTION
1022 	WHEN OTHERS THEN
1023         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1024         THEN
1025             OE_MSG_PUB.Add_Exc_Msg
1026             (   G_PKG_NAME          ,
1027 		'Get_Valid_Defaulting_Rules :'||p_attr_code
1028             );
1029         END IF;
1030         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1031 END Get_Valid_Defaulting_Rules;
1032  
1033  
1034 END ONT_LINE_PAYMENT_Def_Util;