DBA Data[Home] [Help]

PACKAGE BODY: APPS.ONT_HEADER_PAYMENT_DEF_UTIL

Source


1 PACKAGE BODY ONT_HEADER_PAYMENT_Def_Util AS
2 /* $Header: OEXDFWKB.pls 115.0 13-AUG-13 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_HEADER_PAYMENT_Def_Util
11 --  
12 --  DESCRIPTION
13 --  
14 --      Body of package ONT_HEADER_PAYMENT_Def_Util
15 --  
16 --  NOTES
17 --  
18 --  HISTORY
19 --  
20 --  13-AUG-13 Created
21 --  
22  
23 --  Global constant holding the package name
24 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'ONT_HEADER_PAYMENT_Def_Util';
25  
26  
27   g_database_object_name varchar2(30) :='OE_AK_HEADER_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_HEADER_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_HEADER_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_HEADER_PAYMENT_Cache
659   IS  
660   BEGIN  
661   g_cached_record.PAYMENT_NUMBER := null;
662   g_cached_record.HEADER_ID := null;
663   g_cached_record.LINE_ID := null;
664    END Clear_HEADER_PAYMENT_Cache;
665  
666  
667 FUNCTION Sync_HEADER_PAYMENT_Cache
668 (   p_PAYMENT_NUMBER                IN  NUMBER
669 ,   p_HEADER_ID                     IN  NUMBER
670 ,   p_LINE_ID                       IN  NUMBER
671  
672  
673 ) RETURN NUMBER
674 IS
675 CURSOR cache IS 
676   SELECT * FROM   OE_AK_HEADER_PAYMENTS_V
677   WHERE PAYMENT_NUMBER  = p_PAYMENT_NUMBER
678   AND HEADER_ID  = p_HEADER_ID
679   AND LINE_ID  = p_LINE_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_HEADER_ID,FND_API.G_MISS_NUM)  = FND_API.G_MISS_NUM) 
685 OR (NVL(p_LINE_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.HEADER_ID,FND_API.G_MISS_NUM)  <>  p_HEADER_ID) 
690 OR (NVL(g_cached_record.LINE_ID,FND_API.G_MISS_NUM)  <>  p_LINE_ID) 
691 THEN
692   Clear_HEADER_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_HEADER_PAYMENT_Cache;
707  
708  
709 FUNCTION Get_Foreign_Attr_Val_Varchar2
710 (   p_foreign_attr_code             IN  VARCHAR2
711 ,   p_record                        IN  OE_AK_HEADER_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 END IF;
729  
730      RETURN NULL;
731 END Get_Foreign_Attr_Val_Varchar2;
732  
733 FUNCTION Get_Foreign_Attr_Val_Date
734 (   p_foreign_attr_code             IN  VARCHAR2
735 ,   p_record                        IN  OE_AK_HEADER_PAYMENTS_V%ROWTYPE 
736 ,   p_foreign_database_object_name  IN  VARCHAR2
737 ) RETURN DATE
738  
739 IS
740 BEGIN
741  
742  IF (p_foreign_database_object_name = 'OE_AK_ORDER_HEADERS_V') THEN
743     IF NVL(p_record.HEADER_ID,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM THEN 
744       RETURN NULL;
745     END IF;
746     IF  ONT_HEADER_Def_Util.Sync_HEADER_Cache
747       (p_HEADER_ID => p_record.HEADER_ID) = 1  then 
748     RETURN ONT_HEADER_Def_Util.Get_Attr_Val_Date(p_foreign_attr_code,ONT_HEADER_Def_Util.g_cached_record); 
749   END IF;
750 END IF;
751  
752      RETURN NULL;
753 END Get_Foreign_Attr_Val_Date;
754  
755  
756 FUNCTION Get_Condition_Index_In_Cache
757 (   p_condition_id                  IN  NUMBER
758 ) RETURN NUMBER
759 IS  
760 BEGIN  
761  
762   FOR i in 0..g_conditions_tbl_cache.COUNT -1  LOOP  
763     if (g_conditions_tbl_cache(i).condition_id = p_condition_id ) then  
764       RETURN i; 
765     END IF;  
766   END LOOP;  
767   RETURN -1; 
768 END Get_Condition_Index_In_Cache;  
769 FUNCTION Validate_Defaulting_Condition
770 (   p_condition_id                  IN  NUMBER
771 ,   p_header_payment_rec            IN  OE_AK_HEADER_PAYMENTS_V%ROWTYPE 
772 ) RETURN BOOLEAN
773 IS  
774   CURSOR CONDNS IS  
775   SELECT condition_id,group_number,attribute_code,
776     value_op,value_string
777   FROM OE_DEF_CONDN_ELEMS
778   WHERE condition_id = p_condition_id
779   ORDER BY group_number;
780  
781   I         NUMBER;  
782   l_column_value          VARCHAR2(255);  
783   l_start_index         NUMBER;  
784   l_stop_index         NUMBER ;  
785   l_curr_group         NUMBER;  
786   l_group_result         BOOLEAN;  
787   l_element_result         BOOLEAN;  
788 BEGIN  
789  
790   l_start_index := Get_Condition_Index_In_Cache(p_condition_id);
791 IF (l_start_index = -1) THEN  
792   l_stop_index := g_conditions_tbl_cache.COUNT;  
793   l_start_index := l_stop_index;
794   i := l_start_index;
795   FOR condns_rec IN CONDNS LOOP  
796     g_conditions_tbl_cache(i).condition_id := condns_rec.condition_id;
797     g_conditions_tbl_cache(i).group_number := condns_rec.group_number;
798     g_conditions_tbl_cache(i).attribute_code := condns_rec.attribute_code;
799     g_conditions_tbl_cache(i).value_op := condns_rec.value_op;
800     g_conditions_tbl_cache(i).value_string := condns_rec.value_string;
801   i := i+1;
802   END LOOP;  
803 IF (i = l_start_index) THEN  
804     Return FALSE;  
805   END IF;  
806   END IF;  
807  
808  
809   i := 0;
810   l_curr_group := g_conditions_tbl_cache(l_start_index).group_number;
811   l_group_result := TRUE;
812   l_element_result := FALSE;
813  
814  IF g_conditions_tbl_cache.COUNT <> 0 then  
815 FOR J in l_start_index ..g_conditions_tbl_cache.COUNT -1 LOOP  
816   IF (g_conditions_tbl_cache(j).condition_id <>  p_condition_id) THEN
817     EXIT;
818   END IF;
819  
820   IF (l_curr_group <>  g_conditions_tbl_cache(j).group_number) THEN
821     IF (l_group_result = TRUE) THEN
822       EXIT;
823     ELSE
824       l_group_result := TRUE;
825     END IF;
826   END IF;
827  
828   l_element_result := ONT_Def_Util.Validate_Value(g_conditions_tbl_cache(j).value_string,
829   g_conditions_tbl_cache(j).value_op,Get_Attr_Val_Varchar2(g_conditions_tbl_cache(j).attribute_code,p_header_payment_rec ));
830     l_group_result := l_group_result AND l_element_result;
831 END LOOP;
832 ELSE
833   l_group_result := FALSE;
834   END IF;
835   RETURN l_group_result;
836 END Validate_Defaulting_Condition;
837  
838  
839 PROCEDURE Update_Attr_Rules_Cache
840 	( p_condn_index		        IN NUMBER
841 	)
842 IS
843 l_index			NUMBER := 0;
844 l_start_index		NUMBER := 0;
845 l_attribute_code		VARCHAR2(30);
846 l_condition_id		NUMBER;
847     CURSOR DEFSRC IS SELECT
848     R.SEQUENCE_NO,
849     R.SRC_TYPE,
850     R.SRC_ATTRIBUTE_CODE,
851     R.SRC_DATABASE_OBJECT_NAME,
852     R.SRC_PARAMETER_NAME,
853     R.SRC_SYSTEM_VARIABLE_EXPR,
854     R.SRC_PROFILE_OPTION,
855     R.SRC_API_PKG||'.'||R.SRC_API_FN SRC_API_NAME,
856     R.SRC_CONSTANT_VALUE,
857     R.SRC_SEQUENCE_NAME
858     FROM OE_DEF_ATTR_DEF_RULES R, OE_DEF_ATTR_CONDNS C
859     WHERE R.database_object_name = g_database_object_name
860     AND R.attribute_code = l_attribute_code
861     AND C.database_object_name = g_database_object_name
862     AND C.attribute_code = l_attribute_code
863     AND R.attr_def_condition_id = C.attr_def_condition_id
864     AND C.CONDITION_ID = l_condition_id
865     AND C.ENABLED_FLAG = 'Y'
866     ORDER BY SEQUENCE_NO;
867 BEGIN
868  
869       l_attribute_code := g_attr_condns_cache(p_condn_index).attribute_code;
870       l_condition_id := g_attr_condns_cache(p_condn_index).condition_id;
871       l_start_index := g_attr_rules_cache.COUNT + 1;
872  
873     FOR DEFSRC_rec IN DEFSRC LOOP
874 	l_index := g_attr_rules_cache.COUNT + 1; 
875 	g_attr_rules_cache(l_index).SRC_TYPE 
876 			:= DEFSRC_rec.SRC_TYPE; 
877 	g_attr_rules_cache(l_index).SRC_ATTRIBUTE_CODE 
878 			:= DEFSRC_rec.SRC_ATTRIBUTE_CODE; 
879 	g_attr_rules_cache(l_index).SRC_DATABASE_OBJECT_NAME 
880 			:= DEFSRC_rec.SRC_DATABASE_OBJECT_NAME; 
881 	g_attr_rules_cache(l_index).SRC_PARAMETER_NAME 
882 			:= DEFSRC_rec.SRC_PARAMETER_NAME; 
883 	g_attr_rules_cache(l_index).SRC_SYSTEM_VARIABLE_EXPR 
884 			:= DEFSRC_rec.SRC_SYSTEM_VARIABLE_EXPR; 
885 	g_attr_rules_cache(l_index).SRC_PROFILE_OPTION
886 			:= DEFSRC_rec.SRC_PROFILE_OPTION; 
887 	g_attr_rules_cache(l_index).SRC_API_NAME
888 			:= DEFSRC_rec.SRC_API_NAME; 
889 	g_attr_rules_cache(l_index).SRC_CONSTANT_VALUE
890 			:= DEFSRC_rec.SRC_CONSTANT_VALUE; 
891 	g_attr_rules_cache(l_index).SRC_SEQUENCE_NAME
892 			:= DEFSRC_rec.SRC_SEQUENCE_NAME; 
893    END LOOP;
894  
895    IF l_index > 0 THEN
896 	g_attr_condns_cache(p_condn_index).rules_start_index := l_start_index;
897 	g_attr_condns_cache(p_condn_index).rules_stop_index := l_index;
898    ELSE
899 	g_attr_condns_cache(p_condn_index).rules_start_index := -1;
900    END IF;
901  
902 EXCEPTION
903 	WHEN OTHERS THEN
904         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
905         THEN
906             OE_MSG_PUB.Add_Exc_Msg
907             (   G_PKG_NAME          ,
908 		'Update_Attr_Rules_Cache: '||l_attribute_code
909             );
910         END IF;
911         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
912 END Update_Attr_Rules_Cache;
913  
914  
915 PROCEDURE Get_Valid_Defaulting_Rules
916 (   p_attr_code                     IN  VARCHAR2
917 ,   p_attr_id                       IN  NUMBER
918 ,   p_header_payment_rec            IN  OE_AK_HEADER_PAYMENTS_V%ROWTYPE
919 ,   x_rules_start_index_tbl         OUT OE_GLOBALS.NUMBER_TBL_Type
920 ,   x_rules_stop_index_tbl          OUT OE_GLOBALS.NUMBER_TBL_Type
921 ) IS
922 l_condn_index     			NUMBER; 
923 l_index     				NUMBER := 0; 
924 l_valid_condn_index_tbl		OE_GLOBALS.Number_TBL_Type; 
925 condns_cached				BOOLEAN := FALSE;
926 num_attr_condns			NUMBER := 0;
927 CURSOR ATTRC IS    
928     SELECT condition_id  
929     FROM OE_DEF_ATTR_CONDNS    
930     WHERE attribute_code = p_attr_code  
931       AND database_object_name = g_database_object_name  
932       AND enabled_flag = 'Y'
933     ORDER BY precedence;
934 BEGIN  
935  
936   l_condn_index := p_attr_id * ONT_Def_Util.G_MAX_ATTR_CONDNS;
937  
938   -- Check in the cache
939   WHILE g_attr_condns_cache.EXISTS(l_condn_index) LOOP
940     condns_cached := TRUE;
941     IF g_attr_condns_cache(l_condn_index).conditions_defined = 'N' THEN
942       EXIT;
943     ELSE
944       IF (g_attr_condns_cache(l_condn_index).condition_id = 0 OR
945          Validate_Defaulting_Condition
946 	       (g_attr_condns_cache(l_condn_index).condition_id,p_header_payment_rec)= TRUE) THEN 
947 	     l_index := l_index + 1;
948 	     l_valid_condn_index_tbl(l_index) := l_condn_index;
949       END IF;
950     END IF;
951     l_condn_index := l_condn_index + 1;
952   END LOOP;
953  
954   -- If the conditions were cached for this attribute, 
955   -- then return rules for valid conditions
956   IF condns_cached THEN
957  
958       GOTO Return_Rules;
959  
960   -- If the conditions were NOT cached for this attribute,
961   -- then cache them AND get the conditions that are valid
962   -- for the current record
963   ELSE
964     FOR c_rec IN ATTRC LOOP  
965       -- Put it in the cache
966       g_attr_condns_cache(l_condn_index).attribute_code
967         := p_attr_code;
968       g_attr_condns_cache(l_condn_index).condition_id
969         := c_rec.condition_id;
970       g_attr_condns_cache(l_condn_index).conditions_defined
971         := 'Y';
972 	  IF (c_rec.condition_id = 0 OR
973 	         Validate_Defaulting_Condition
974 		  (c_rec.condition_id,p_header_payment_rec)= TRUE) THEN 
975 	     l_index := l_index + 1;
976 	     l_valid_condn_index_tbl(l_index) := l_condn_index;
977       END IF;
978       l_condn_index := l_condn_index + 1;
979       num_attr_condns := num_attr_condns + 1;
980     END LOOP;
981  
982     -- No defaulting conditions defined for this attribute,
983     -- insert a new record in the cache with conditions_defined = 'N'
984     IF num_attr_condns = 0 THEN
985       g_attr_condns_cache(l_condn_index).attribute_code
986         := p_attr_code;
987       g_attr_condns_cache(l_condn_index).conditions_defined
988         := 'N';
989     END IF;
990  
991   END IF;
992  
993   <<Return_Rules>>
994 FOR I IN 1..l_index LOOP
995   IF g_attr_condns_cache(l_valid_condn_index_tbl(I)).rules_start_index IS NULL THEN
996      Update_Attr_Rules_Cache(l_valid_condn_index_tbl(I));
997   END IF;
998   x_rules_start_index_tbl(I) := g_attr_condns_cache(l_valid_condn_index_tbl(I)).rules_start_index;
999   x_rules_stop_index_tbl(I) := g_attr_condns_cache(l_valid_condn_index_tbl(I)).rules_stop_index;
1000 END LOOP;
1001  
1002 EXCEPTION
1003 	WHEN OTHERS THEN
1004         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1005         THEN
1006             OE_MSG_PUB.Add_Exc_Msg
1007             (   G_PKG_NAME          ,
1008 		'Get_Valid_Defaulting_Rules :'||p_attr_code
1009             );
1010         END IF;
1011         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1012 END Get_Valid_Defaulting_Rules;
1013  
1014  
1015 END ONT_HEADER_PAYMENT_Def_Util;