DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_UDA_DEFAULTING_PKG

Source


1 PACKAGE BODY po_uda_defaulting_pkg AS
2 /* $Header: PO_UDA_DEFAULTING_PKG.plb 120.25.12020000.2 2013/02/11 01:55:11 vegajula ship $ */
3 
4 
5  --------------------------------------------------------------------------------------------------------------------
6 --Start of Comments
7 --Name: IS_VALID_AG_LIST
8 --Function:
9 --  This function returns true or false depending on the pk values, template id and attribute group table
10 --  wether the attribute groups are populated in the extention table or not
11 --Parameters:
12 --IN:
13 -- 1.	p_pk1_value, p_pk2_value, p_pk3_value, p_pk4_value, p_pk5_value
14 --      The Primary Key values for the UDA Attributes
15 -- 2.	p_template_id
16 --      This variable would contain the template id for which the actions are to be executed
17 -- 3.   p_attr_grp_ids_list
18 --      This variable would contain the list attribute groups to find out if they are populated in the
19 --      Ext. table via. UI
20 --RETURN
21 -- BOOLEAN
22 --End of Comments
23 --------------------------------------------------------------------------------------------------------------------
24 g_debug_stmt  CONSTANT BOOLEAN := PO_DEBUG.is_debug_stmt_on;
25 g_debug_unexp CONSTANT BOOLEAN := PO_DEBUG.is_debug_unexp_on;
26 
27 FUNCTION IS_VALID_AG_LIST
28     (
29         p_pk1_value                    IN  NUMBER
30        ,p_pk2_value                    IN  NUMBER
31        ,p_pk3_value                    IN  NUMBER
32        ,p_pk4_value                    IN  NUMBER
33        ,p_pk5_value                    IN  NUMBER
34        ,p_template_id                  IN  NUMBER
35        ,p_attr_grp_ids_list            IN  PO_TBL_NUMBER
36     )
37      RETURN BOOLEAN IS
38 
39         d_progress      NUMBER;
40         l_return_status BOOLEAN;
41         l_err_txt       VARCHAR2(2000);
42 
43     BEGIN
44         /* We need to loop through all the AG's in the list
45         for checking if ag_list is valid. Even if one AG for
46         a usage is having rows populated return false so that
47         defaulting doesn't happen again*/
48 
49         d_progress := 10;
50         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.IS_VALID_AG_LIST with parameters' , d_progress);
51         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk1_value :' || p_pk1_value, d_progress);
52         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk2_value :' || p_pk1_value, d_progress);
53         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk3_value :' || p_pk1_value, d_progress);
54         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk4_value :' || p_pk1_value, d_progress);
55         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk5_value :' || p_pk1_value, d_progress);
56         PO_UDA_DEFAULTING_PKG.DEBUG('p_template_id :' || p_template_id, d_progress);
57         PO_UDA_DEFAULTING_PKG.DEBUG(p_attr_grp_ids_list, d_progress);
58         d_progress := 20;
59 
60         IF  p_attr_grp_ids_list.Count > 0 THEN
61             PO_UDA_DEFAULTING_PKG.DEBUG('Count of p_attr_grp_ids_list is :  > 0' , d_progress);
62             d_progress := 30;
63             FOR i IN 1.. p_attr_grp_ids_list.last LOOP
64                 d_progress := 40;
65                 l_return_status := IS_VALID_AG (p_pk1_value     => p_pk1_value
66                                                ,p_pk2_value     => p_pk2_value
67                                                ,p_pk3_value     => p_pk3_value
68                                                ,p_pk4_value     => p_pk4_value
69                                                ,p_pk5_value     => p_pk5_value
70                                                ,p_template_id   => p_template_id
71                                                ,p_attr_grp_id   => p_attr_grp_ids_list(i)
72                                                );
73                 d_progress := 50;
74                 IF (l_return_status = FALSE) THEN
75                     d_progress := 60;
76                     PO_UDA_DEFAULTING_PKG.DEBUG('IS_VALID_AG_LIST is returning with FALSE' , d_progress);
77                     RETURN FALSE;
78                 END IF;
79             END LOOP;
80        ELSE
81             d_progress := 70;
82             PO_UDA_DEFAULTING_PKG.DEBUG('Count of p_attr_grp_ids_list is :  NOT > 0' , d_progress);
83        END IF;
84        d_progress := 80;
85        PO_UDA_DEFAULTING_PKG.DEBUG('IS_VALID_AG_LIST is returning with TRUE' , d_progress);
86        RETURN TRUE;
87 
88     EXCEPTION
89       WHEN OTHERS THEN
90            l_err_txt := 'Exception in IS_VALID_AG_LIST with ERROR : ' || SQLERRM;
91            PO_MESSAGE_S.add_exc_msg
92            (
93                 p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
94                 p_procedure_name => 'IS_VALID_AG_LIST' || '.' || d_progress,
95                 p_error_text => l_err_txt
96            );
97            PO_UDA_DEFAULTING_PKG.DEBUG(l_err_txt, d_progress);
98            RETURN FALSE;
99     END IS_VALID_AG_LIST;
100 
101 --------------------------------------------------------------------------------------------------------------------
102 --Start of Comments
103 --Name: IS_VALID_AG
104 --Function:
105 --  This function returns true or false depending on the pk values, template id and attribute group
106 --  wether the attribute group is populated in the extention table or not
107 --Parameters:
108 --IN:
109 -- 1.	p_pk1_value, p_pk2_value, p_pk3_value, p_pk4_value, p_pk5_value
110 --      The Primary Key values for the UDA Attributes
111 -- 2.	p_template_id
112 --      This variable would contain the template id for which the actions are to be executed
113 -- 3.   p_attr_grp_id
114 --      This variable would contain the attribute group to find out if they are populated in the
115 --      Ext. table via. UI
116 --RETURN
117 -- BOOLEAN
118 --End of Comments
119 --------------------------------------------------------------------------------------------------------------------
120 
121     FUNCTION IS_VALID_AG
122     (
123         p_pk1_value                    IN  NUMBER
124        ,p_pk2_value                    IN  NUMBER
125        ,p_pk3_value                    IN  NUMBER
126        ,p_pk4_value                    IN  NUMBER
127        ,p_pk5_value                    IN  NUMBER
128        ,p_template_id                  IN  NUMBER
129        ,p_attr_grp_id                  IN  NUMBER
130     )
131     RETURN BOOLEAN IS
132 
133         l_entity_code   VARCHAR2(200);
134         l_base_table    VARCHAR2(200);
135         l_idc_type      VARCHAR2(200);
136         l_attr_category po_uda_ag_template_usages.ATTRIBUTE_CATEGORY%TYPE;
137 
138         l_contract_type VARCHAR2(200);
139         d_progress      NUMBER;
140         l_context       EGO_COL_NAME_VALUE_PAIR_ARRAY;
141 
142         l_ext_table        VARCHAR2(200);
143         l_sql_query        VARCHAR2(4000);
144 	l_mod_add_query    VARCHAR2(2000);
145         l_pk1_column_name  VARCHAR2(200);
146         l_pk2_column_name  VARCHAR2(200);
147         l_pk3_column_name  VARCHAR2(200);
148         l_pk4_column_name  VARCHAR2(200);
149         l_pk5_column_name  VARCHAR2(200);
150         v_query_hdl        NUMBER;
151         l_check            NUMBER;
152         l_rows_processed   NUMBER;
153         l_err_txt       VARCHAR2(2000);
154 
155     BEGIN
156 
157         d_progress := 10;
158         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.IS_VALID_AG with parameters' , d_progress);
159         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk1_value :' || p_pk1_value, d_progress);
160         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk2_value :' || p_pk1_value, d_progress);
161         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk3_value :' || p_pk1_value, d_progress);
162         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk4_value :' || p_pk1_value, d_progress);
163         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk5_value :' || p_pk1_value, d_progress);
164         PO_UDA_DEFAULTING_PKG.DEBUG('p_template_id :' || p_template_id, d_progress);
165         PO_UDA_DEFAULTING_PKG.DEBUG('p_attr_grp_id :' || p_attr_grp_id, d_progress);
166         d_progress := 20;
167 
168         BEGIN
169             d_progress := 30;
170             SELECT ENTITY_CODE
171             INTO   l_entity_code
172             FROM   PO_UDA_AG_TEMPLATES
173             WHERE  TEMPLATE_ID = p_template_id;
174             d_progress := 40;
175 
176             PO_UDA_DEFAULTING_PKG.DEBUG('l_entity_code :' || l_entity_code, d_progress);
177         EXCEPTION
178         WHEN OTHERS THEN
179             d_progress := 50;
180             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the ENTITY CODE', d_progress);
181             RAISE;
182         END;
183         d_progress := 60;
184         l_ext_table := PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_ext_b_table;
185         PO_UDA_DEFAULTING_PKG.DEBUG('l_ext_table :' || l_ext_table, d_progress);
186 
187         BEGIN
188             d_progress := 70;
189             select o.pk1_column_name,
190                    o.pk2_column_name,
191                    o.pk3_column_name,
192                    o.pk4_column_name,
193                    o.pk5_column_name
194             into   l_pk1_column_name,
195                    l_pk2_column_name,
196                    l_pk3_column_name,
197                    l_pk4_column_name,
198                    l_pk5_column_name
199             from   fnd_objects_vl o
200             where  o.obj_name = PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name;
201 
202             d_progress := 80;
203             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk1_column_name :' || l_pk1_column_name, d_progress);
204             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk2_column_name :' || l_pk2_column_name, d_progress);
205             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk3_column_name :' || l_pk3_column_name, d_progress);
206             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk4_column_name :' || l_pk4_column_name, d_progress);
207             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk5_column_name :' || l_pk5_column_name, d_progress);
208         EXCEPTION
209         WHEN OTHERS THEN
210             d_progress := 90;
211             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the PK values', d_progress);
212             RAISE;
213         END;
214 
215         --bug11872637 Start : Determine Attribute Category
216         SELECT     DISTINCT(ATTRIBUTE_CATEGORY)
217         INTO       l_attr_category
218         FROM       po_uda_ag_template_usages
219         WHERE      template_id = p_template_id
220         AND        attribute_group_id = p_attr_grp_id;
221         --bug11872637 End
222 
223 
224         --Using the bind vriables to avoid the maximum cursors opened issue.
225         d_progress := 100;
226         l_sql_query := 'SELECT 1 FROM ' || l_ext_table;
227         l_sql_query := l_sql_query || ' WHERE ATTR_GROUP_ID = :p_attr_grp_id ';
228 
229         d_progress := 110;
230         IF p_pk1_value IS NOT NULL THEN
231             l_sql_query := l_sql_query || ' AND ' || l_pk1_column_name || ' = :p_pk1_value ';
232         END IF;
233         IF p_pk2_value IS NOT NULL THEN
234             l_sql_query := l_sql_query || ' AND ' || l_pk2_column_name || ' = :p_pk2_value ';
235         END IF;
236         IF p_pk3_value IS NOT NULL THEN
237             l_sql_query := l_sql_query || ' AND ' || l_pk3_column_name || ' = :p_pk3_value ';
238         END IF;
239         IF p_pk4_value IS NOT NULL THEN
240              l_sql_query := l_sql_query || ' AND ' || l_pk4_column_name || ' = :p_pk4_value ';
241         END IF;
242         IF p_pk5_value IS NOT NULL THEN
243              l_sql_query := l_sql_query || ' AND ' || l_pk5_column_name || ' = :p_pk5_value ';
244         END IF;
245 
246         --bug11872637 Start : Add Condition for Mod Specific Lookup Codes of Type 'PO_MOD_UDA_ADDRESS_TYPES'
247         IF(l_attr_category = 'ADDRESS' AND l_entity_code = 'PO_HEADER_EXT_ATTRS') THEN
248           IF (l_pk2_column_name = 'DRAFT_ID' AND p_pk2_value <> -1 ) THEN  --This is a Modification
249             l_mod_add_query := ' AND C_EXT_ATTR40 = '|| '''PO_MOD_UDA_ADDRESS_TYPES''' ||
250                                ' AND C_EXT_ATTR39 IN (' || '''MOD_ADMIN_OFFICE''' ||',' || '''MOD_ISSUING_OFFICE''' || ')';
251             l_sql_query := l_sql_query || l_mod_add_query;
252           END IF;
253         END IF;
254         --bug11872637 End
255 
256         d_progress := 120;
257         PO_UDA_DEFAULTING_PKG.DEBUG('l_sql_query :' || l_sql_query, d_progress);
258 
259         BEGIN
260             d_progress := 130;
261             v_query_hdl  := DBMS_SQL.open_cursor;
262             DBMS_SQL.parse(v_query_hdl, l_sql_query, DBMS_SQL.native);
263 
264             DBMS_SQL.bind_variable(v_query_hdl,':p_attr_grp_id',p_attr_grp_id );
265             IF p_pk1_value IS NOT NULL THEN
266               DBMS_SQL.bind_variable(v_query_hdl,':p_pk1_value',p_pk1_value );
267             END IF ;
268             IF p_pk2_value IS NOT NULL THEN
269               DBMS_SQL.bind_variable(v_query_hdl,':p_pk2_value',p_pk2_value);
270             END IF ;
271             IF p_pk3_value IS NOT NULL THEN
272               DBMS_SQL.bind_variable(v_query_hdl,':p_pk3_value',p_pk3_value);
273             END IF ;
274             IF p_pk4_value IS NOT NULL THEN
275               DBMS_SQL.bind_variable(v_query_hdl,':p_pk4_value',p_pk4_value);
276             END IF ;
277             IF p_pk5_value IS NOT NULL THEN
278               DBMS_SQL.bind_variable(v_query_hdl,':p_pk5_value',p_pk5_value);
279             END IF ;
280 
281             DBMS_SQL.define_column(v_query_hdl, 1, l_check);
282             l_rows_processed  := DBMS_SQL.EXECUTE(v_query_hdl);
283 
284             d_progress := 140;
285             IF DBMS_SQL.fetch_rows(v_query_hdl) <= 0 THEN
286                 d_progress := 150;
287                 PO_UDA_DEFAULTING_PKG.DEBUG('Returning IS_VALID_AG with TRUE', d_progress);
288 	        IF DBMS_SQL.is_open(v_query_hdl) THEN
289 	                DBMS_SQL.close_cursor(v_query_hdl);
290 	        END IF ;
291                 RETURN TRUE;
292             END IF;
293 
294             IF DBMS_SQL.is_open(v_query_hdl) THEN
295                 DBMS_SQL.close_cursor(v_query_hdl);
296             END IF ;
297 
298 
299         EXCEPTION
300         WHEN OTHERS THEN
301             d_progress := 150;
302 
303             IF DBMS_SQL.is_open(v_query_hdl) THEN
304                 DBMS_SQL.close_cursor(v_query_hdl);
305             END IF ;
306 
307             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to run a sql :' || l_sql_query, d_progress);
308             RAISE;
309         END;
310       d_progress := 160;
311       PO_UDA_DEFAULTING_PKG.DEBUG('Returning IS_VALID_AG with FALSE', d_progress);
312       RETURN FALSE;
313 
314     EXCEPTION
315       WHEN OTHERS THEN
316            l_err_txt := 'Exception in IS_VALID_AG with ERROR : ' || SQLERRM;
317            PO_MESSAGE_S.add_exc_msg
318            (
319                 p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
320                 p_procedure_name => 'IS_VALID_AG_LIST' || '.' || d_progress,
321                 p_error_text => l_err_txt
322            );
323            PO_UDA_DEFAULTING_PKG.DEBUG(l_err_txt, d_progress);
324            RETURN FALSE;
325     END IS_VALID_AG;
326 
327 --------------------------------------------------------------------------------------------------------------------
328 --Start of Comments
329 --Name: CONSTRUCT_USAGE_OBJECT_ARRAY
330 --Procedure:
331 --  This procedure would construct the PO_UDA_USAGE_OBJECT_ARRAY with the usages for which the attribute groups
332 --  are not populated in the extention table throught the UI.
333 --Parameters:
334 --IN:
335 -- 1.	p_pk1_value, p_pk2_value, p_pk3_value, p_pk4_value, p_pk5_value
336 --      The Primary Key values for the UDA Attributes
337 -- 2.	p_template_id
338 --      This variable would contain the template id for which the actions are to be executed
339 --OUT:
340 -- 1.   x_po_uda_usage_object_array
341 --      This variable of type PO_UDA_USAGE_OBJECT_ARRAY contains data of hhe usages.
342 -- 2.	x_return_status   -  Generic Out parameter having return status
343 -- 3.   x_errorcode       -  Generic Out parameter having error code
344 -- 4.	x_msg_count       -  Generic Out parameter having return msg Count
345 -- 5.	x_msg_data        -  Generic Out parameter having return msg
346 --
347 --End of Comments
348 --------------------------------------------------------------------------------------------------------------------
349     PROCEDURE CONSTRUCT_USAGE_OBJECT_ARRAY
350     (
351         p_pk1_value                    IN  NUMBER
352        ,p_pk2_value                    IN  NUMBER
353        ,p_pk3_value                    IN  NUMBER
354        ,p_pk4_value                    IN  NUMBER
355        ,p_pk5_value                    IN  NUMBER
356        ,p_template_id                  IN  NUMBER
357        ,x_po_uda_usage_object_array    OUT NOCOPY PO_UDA_USAGE_OBJECT_ARRAY
358        ,x_return_status                OUT NOCOPY VARCHAR2
359        ,x_errorcode                    OUT NOCOPY NUMBER
360        ,x_msg_count                    OUT NOCOPY NUMBER
361        ,x_msg_data                     OUT NOCOPY VARCHAR2
362     )
363     IS
364 
365         CURSOR c_get_usages(p_template_id NUMBER) IS
366         SELECT     DISTINCT(ATTRIBUTE_CATEGORY)
367         FROM       po_uda_ag_template_usages
368         WHERE template_id = p_template_id;
369 
370         CURSOR c_get_usage_context1(p_line_id NUMBER, p_draft_id NUMBER) IS
371         SELECT     CLM_IDC_TYPE, CONTRACT_TYPE
372         FROM       po_lines_merge_v
373         WHERE      PO_LINE_ID = p_line_id
374         AND        DRAFT_ID = p_draft_id;
375 
376         CURSOR c_get_usage_context2(p_header_id NUMBER, p_draft_id NUMBER) IS
377         SELECT     CLM_STANDARD_FORM
378         FROM       po_headers_merge_v
379         WHERE      po_header_id = p_header_id
380         AND        DRAFT_ID = p_draft_id;
381 
382         -- CURSORS FOR ALL CONTEXTS should be added later if needed
383 
384         l_entity_code               VARCHAR2(200);
385         l_context_array             EGO_COL_NAME_VALUE_PAIR_ARRAY;
386         l_po_uda_usage_object       PO_UDA_USAGE_OBJECT;
387         l_po_uda_usage_object_array PO_UDA_USAGE_OBJECT_ARRAY;
388         l_attr_grp_ids_list         PO_TBL_NUMBER;
389         l_idc_type                  VARCHAR2(200);
390         l_std_form                  VARCHAR2(200);
391         l_contract_type             VARCHAR2(200);
392         l_doc_type                  VARCHAR2(200);
393         l_issuing_off               VARCHAR2(200);
394 
395         l_context                   EGO_COL_NAME_VALUE_PAIR_OBJ;
396 
397         d_progress                  NUMBER := 0;
398         l_err_txt       VARCHAR2(2000);
399 
400 
401     BEGIN
402 
403         x_return_status := FND_API.G_RET_STS_SUCCESS;
404 
405         d_progress := 10;
406         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.CONSTRUCT_USAGE_OBJECT_ARRAY with parameters' , d_progress);
407         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk1_value :' || p_pk1_value, d_progress);
408         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk2_value :' || p_pk2_value, d_progress);
409         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk3_value :' || p_pk3_value, d_progress);
410         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk4_value :' || p_pk4_value, d_progress);
411         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk5_value :' || p_pk5_value, d_progress);
412         PO_UDA_DEFAULTING_PKG.DEBUG('p_template_id :' || p_template_id, d_progress);
413 
414         BEGIN
415             d_progress := 20;
416             SELECT ENTITY_CODE
417             INTO   l_entity_code
418             FROM   PO_UDA_AG_TEMPLATES
419             WHERE  TEMPLATE_ID = p_template_id;
420 
421             d_progress := 30;
422             PO_UDA_DEFAULTING_PKG.DEBUG('l_entity_code :' || l_entity_code, d_progress);
423         EXCEPTION
424         WHEN OTHERS THEN
425             d_progress := 40;
426             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the ENTITY CODE', d_progress);
427             RAISE;
428         END;
429 
430         d_progress := 50;
431         l_po_uda_usage_object := PO_UDA_USAGE_OBJECT();
432         l_po_uda_usage_object_array := PO_UDA_USAGE_OBJECT_ARRAY();
433 
434         d_progress := 60;
435         PO_UDA_DEFAULTING_PKG.DEBUG('Initialized objects l_po_uda_usage_object, l_po_uda_usage_object_array', d_progress);
436 
437         FOR c_get_usages_rec IN c_get_usages(p_template_id) LOOP
438            l_context_array := EGO_COL_NAME_VALUE_PAIR_ARRAY();
439            PO_UDA_DEFAULTING_PKG.DEBUG('Initialized objects l_context_array', d_progress);
440 
441            d_progress := 70;
442            if(c_get_usages_rec.attribute_category = 'PRICING') AND l_entity_code = 'PO_LINE_EXT_ATTRS' then
443 
444                d_progress := 80;
445                OPEN c_get_usage_context1(p_pk1_value, p_pk2_value);
446                 FETCH c_get_usage_context1 INTO l_idc_type, l_contract_type;
447                CLOSE c_get_usage_context1;
448 
449                d_progress := 90;
450                l_context :=  EGO_COL_NAME_VALUE_PAIR_OBJ( 'IDC_TYPE', l_idc_type);
451                l_context_array.EXTEND(1);
452                l_context_array(l_context_array.COUNT) := l_context;
453                l_context :=  EGO_COL_NAME_VALUE_PAIR_OBJ( 'CONTRACT_LINE_TYPE', l_contract_type);
454                l_context_array.EXTEND(1);
455                l_context_array(l_context_array.COUNT) := l_context;
456 
457                d_progress := 100;
458            end if;
459            d_progress := 110;
460            if(c_get_usages_rec.attribute_category = 'FORMS') AND l_entity_code = 'PO_HEADER_EXT_ATTRS' then
461 
462                d_progress := 120;
463                OPEN c_get_usage_context2(p_pk1_value, p_pk2_value);
464                 FETCH c_get_usage_context2 INTO l_std_form;
465                CLOSE c_get_usage_context2;
466 
467                d_progress := 130;
468                l_context :=  EGO_COL_NAME_VALUE_PAIR_OBJ( 'FORM_TYPE', l_std_form);
469                l_context_array.EXTEND(1);
470                l_context_array(l_context_array.COUNT) := l_context;
471                d_progress := 140;
472            end if;
473            d_progress := 150;
474            -- IF CASES FOR ALL USAGES which have a context
475            -- FOR ALL CONTEXTS should be added later if needed
476 
477            l_po_uda_usage_object :=  po_uda_usage_object.new_instance(p_template_id, c_get_usages_rec.attribute_category, l_context_array);
478            l_attr_grp_ids_list := l_po_uda_usage_object.Attr_group_Id;
479 
480            d_progress := 160;
481            PO_UDA_DEFAULTING_PKG.DEBUG('Before is_valid_ag_list' , d_progress);
482 
483            IF is_valid_ag_list (p_pk1_value, p_pk2_value, p_pk3_value, p_pk4_value, p_pk5_value, p_template_id, l_attr_grp_ids_list)
484            THEN
485                 d_progress := 170;
486                 PO_UDA_DEFAULTING_PKG.DEBUG('The Usage Object is valid' , d_progress);
487                 l_po_uda_usage_object_array.EXTEND(1);
488                 l_po_uda_usage_object_array(l_po_uda_usage_object_array.COUNT) := l_po_uda_usage_object;
489                 PO_UDA_DEFAULTING_PKG.DEBUG('Added usage object' , d_progress);
490                 d_progress := 180;
491            ELSE
492                 d_progress := 190;
493                 PO_UDA_DEFAULTING_PKG.DEBUG('The Usage Object is not valid' , d_progress);
494            END IF;
495            d_progress := 200;
496        END LOOP;
497 
498        d_progress := 210;
499        PO_UDA_DEFAULTING_PKG.DEBUG('The Usage Object array constructed is as follows' , d_progress);
500        PO_UDA_DEFAULTING_PKG.DEBUG(l_po_uda_usage_object_array, d_progress);
501        x_po_uda_usage_object_array := l_po_uda_usage_object_array;
502        d_progress := 220;
503 
504     EXCEPTION
505      WHEN OTHERS THEN
506             l_err_txt := 'Exception in CONSTRUCT_USAGE_OBJECT_ARRAY with ERROR : ' || SQLERRM;
507             PO_MESSAGE_S.add_exc_msg
508             (
509                 p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
510                 p_procedure_name => 'CONSTRUCT_USAGE_OBJECT_ARRAY' || '.' || d_progress,
511                 p_error_text => l_err_txt
512             );
513             PO_UDA_DEFAULTING_PKG.DEBUG(l_err_txt, d_progress);
514             x_return_status := 'U';
515     END CONSTRUCT_USAGE_OBJECT_ARRAY;
516 
517 --------------------------------------------------------------------------------------------------------------------
518 --Start of Comments
519 --Name: UDA_SUBMISSION_CHECK
520 --Procedure:
521 --  This procedure would execute ego_user_attrs_data_pub.Get_User_Attrs_Data to get the
522 --  EGO_USER_ATTR_ROW_TABLE and EGO_USER_ATTR_DATA_TABLE to execute all the XSC Uda functions
523 --Parameters:
524 --IN:
525 -- 1.	p_pk1_value, p_pk2_value, p_pk3_value, p_pk4_value, p_pk5_value
526 --      The Primary Key values for the UDA Attributes
527 -- 2.	p_template_id
528 --      This variable would contain the template id for which the actions are to be executed
529 --IN/OUT:
530 -- 1.	x_external_attr_value_pairs
531 --      This variable would contain an array of attribute value pairs (EGO_COL_NAME_VALUE_PAIR_TABLE)
532 --OUT:
533 -- 1.	x_return_status   -  Generic Out parameter having return status
534 -- 2.   x_errorcode       -  Generic Out parameter having error code
535 -- 3.	x_msg_count       -  Generic Out parameter having return msg Count
536 -- 4.	x_msg_data        -  Generic Out parameter having return msg
537 --
538 --End of Comments
539 --------------------------------------------------------------------------------------------------------------------
540     PROCEDURE UDA_SUBMISSION_CHECK
541     (
542         p_pk1_value                    IN  NUMBER
543        ,p_pk2_value                    IN  NUMBER  DEFAULT NULL
544        ,p_pk3_value                    IN  NUMBER  DEFAULT NULL
545        ,p_pk4_value                    IN  NUMBER  DEFAULT NULL
546        ,p_pk5_value                    IN  NUMBER  DEFAULT NULL
547        ,p_template_id                  IN  NUMBER
548        ,p_address_lookup_type          IN  VARCHAR2 DEFAULT NULL
549        ,x_external_attr_value_pairs    IN OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_TABLE
550        ,x_return_status                OUT NOCOPY VARCHAR2
551        ,x_errorcode                    OUT NOCOPY NUMBER
552        ,x_msg_count                    OUT NOCOPY NUMBER
553        ,x_msg_data                     OUT NOCOPY VARCHAR2
554     )
555     IS
556         d_progress  NUMBER := 0;
557 
558         CURSOR c_po_header_ext(p_header_id NUMBER, p_draft_id NUMBER) IS
559         SELECT  DISTINCT ATTR_GROUP_ID
560         FROM    PO_HEADERS_ALL_EXT_B
561         WHERE   PO_HEADER_ID = p_header_id
562         AND     DRAFT_ID = p_draft_id;
563 
564         CURSOR c_po_line_ext(p_line_id NUMBER, p_draft_id NUMBER) IS
565         SELECT  DISTINCT ATTR_GROUP_ID
566         FROM    PO_LINES_ALL_EXT_B
567         WHERE   PO_LINE_ID = p_line_id
568         AND     DRAFT_ID = p_draft_id;
569 
570         CURSOR c_po_location_ext(p_location_id NUMBER, p_draft_id NUMBER) IS
571         SELECT  DISTINCT ATTR_GROUP_ID
572         FROM    PO_LINE_LOCATIONS_ALL_EXT_B
573         WHERE   LINE_LOCATION_ID = p_location_id
574         AND     DRAFT_ID = p_draft_id;
575 
576         CURSOR c_po_attr_list(p_ag_type VARCHAR2, p_ag_name VARCHAR2) IS
577         SELECT  END_USER_COLUMN_NAME
578         FROM    FND_DESCR_FLEX_COLUMN_USAGES
579         WHERE   DESCRIPTIVE_FLEXFIELD_NAME = p_ag_type
580         AND     DESCRIPTIVE_FLEX_CONTEXT_CODE = p_ag_name;
581 
582         is_valid_entity_ag  BOOLEAN := FALSE;
583 
584         l_pk_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY;
585         l_entity_code      VARCHAR2(200);
586         l_ag_type          VARCHAR2(200);
587         l_ag_name          VARCHAR2(200);
588         l_attr_list        VARCHAR2(2000);
589         l_data_level       VARCHAR2(200);
590         l_pk1_column_name  VARCHAR2(200);
591         l_pk2_column_name  VARCHAR2(200);
592         l_pk3_column_name  VARCHAR2(200);
593         l_pk4_column_name  VARCHAR2(200);
594         l_pk5_column_name  VARCHAR2(200);
595 
596         l_attr_group_request_table   EGO_ATTR_GROUP_REQUEST_TABLE;
597 
598         l_attributes_row_table  EGO_USER_ATTR_ROW_TABLE;
599         l_attr_name_value_pairs EGO_USER_ATTR_DATA_TABLE;
600         l_class_code_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
601 
602         l_pk_col_name_value_pairs_ind NUMBER;
603         l_attr_name_value_pairs_ind NUMBER;
604         l_attributes_row_table_ind NUMBER;
605         l_attr_group_request_table_ind NUMBER;
606 
607         l_pk_column_name_value EGO_COL_NAME_VALUE_PAIR_OBJ;
608         l_attr_name_value EGO_USER_ATTR_DATA_OBJ;
609         l_attributes_row ego_user_attr_row_obj;
610         l_attr_group_request ego_attr_group_request_obj;
611 
612         l_err_txt       VARCHAR2(2000);
613 
614     BEGIN
615 
616          PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.UDA_SUBMISSION_CHECK with parameters' , d_progress);
617          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk1_value :' || p_pk1_value, d_progress);
618          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk2_value :' || p_pk2_value, d_progress);
619          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk3_value :' || p_pk3_value, d_progress);
620          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk4_value :' || p_pk4_value, d_progress);
621          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk5_value :' || p_pk5_value, d_progress);
622          PO_UDA_DEFAULTING_PKG.DEBUG('p_template_id :' || p_template_id, d_progress);
623          PO_UDA_DEFAULTING_PKG.DEBUG('p_address_lookup_type :' || p_address_lookup_type, d_progress);
624          PO_UDA_DEFAULTING_PKG.DEBUG('x_external_attr_value_pairs are as Follows', d_progress);
625          PO_UDA_DEFAULTING_PKG.DEBUG(x_external_attr_value_pairs, d_progress);
626          d_progress := 10;
627 
628          x_return_status := FND_API.G_RET_STS_SUCCESS;
629 
630          IF p_template_id IS NULL THEN
631             d_progress := 20;
632             x_return_status := 'E';
633             RETURN;
634          END IF;
635 
636          d_progress := 30;
637          l_attr_group_request_table :=  EGO_ATTR_GROUP_REQUEST_TABLE();
638          PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_attr_group_request_table', d_progress);
639          d_progress := 40;
640 
641          BEGIN
642             d_progress := 50;
643             SELECT ENTITY_CODE
644             INTO   l_entity_code
645             FROM   PO_UDA_AG_TEMPLATES
646             WHERE  TEMPLATE_ID = p_template_id;
647 
648             d_progress := 60;
649             PO_UDA_DEFAULTING_PKG.DEBUG('l_entity_code :' || l_entity_code, d_progress);
650          EXCEPTION
651          WHEN OTHERS THEN
652             d_progress := 70;
653             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the ENTITY CODE', d_progress);
654             RAISE;
655          END;
656 
657          d_progress := 80;
658 
659          IF l_entity_code = 'PO_HEADER_EXT_ATTRS' THEN
660             d_progress := 90;
661             FOR c_po_header_ext_rec IN c_po_header_ext(p_pk1_value, p_pk2_value) LOOP
662 
663                 d_progress := 100;
664                 BEGIN
665                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID :' || c_po_header_ext_rec.ATTR_GROUP_ID, d_progress);
666                     SELECT  DESCRIPTIVE_FLEXFIELD_NAME, DESCRIPTIVE_FLEX_CONTEXT_CODE
667                     INTO    l_ag_type, l_ag_name
668                     FROM    EGO_FND_DSC_FLX_CTX_EXT
669                     WHERE   ATTR_GROUP_ID = c_po_header_ext_rec.ATTR_GROUP_ID;
670 
671                     d_progress := 110;
672                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_type :' || l_ag_type, d_progress);
673                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_name :' || l_ag_name, d_progress);
674                 EXCEPTION
675                 WHEN OTHERS THEN
676                     d_progress := 120;
677                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the AG TYPE and AG NAME', d_progress);
678                     RAISE;
679                 END;
680 
681                 d_progress := 130;
682                 l_attr_list := '';
683                 PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_attr_list', d_progress);
684 
685                 d_progress := 140;
686                 FOR c_po_attr_list_rec IN c_po_attr_list(l_ag_type, l_ag_name) LOOP
687                     d_progress := 150;
688                     IF l_attr_list IS NULL OR l_attr_list = '' THEN
689                         d_progress := 160;
690                         l_attr_list := c_po_attr_list_rec.END_USER_COLUMN_NAME;
691                     ELSE
692                         d_progress := 170;
693                         l_attr_list := l_attr_list || ',' || c_po_attr_list_rec.END_USER_COLUMN_NAME;
694                     END IF;
695                     d_progress := 180;
696                 END LOOP;
697                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_list :' || l_attr_list, d_progress);
698 
699                 l_data_level := 'PO_HEADER';
700 
701                 d_progress := 190;
702 
703                 IF l_attr_list IS NOT NULL THEN
704                     d_progress := 200;
705                     is_valid_entity_ag := TRUE;
706                     l_attr_group_request_table.EXTEND(1);
707                     l_attr_group_request_table(l_attr_group_request_table.COUNT) := ego_attr_group_request_obj
708                                                                                        (
709                                                                                             c_po_header_ext_rec.ATTR_GROUP_ID
710                                                                                            ,201
711                                                                                            ,l_ag_type
712                                                                                            ,l_ag_name
713                                                                                            ,l_data_level
714                                                                                            ,NULL
715                                                                                            ,NULL
716                                                                                            ,NULL
717                                                                                            ,NULL
718                                                                                            ,NULL
719                                                                                            ,l_attr_list
720                                                                                        );
721                     d_progress := 210;
722                 END IF;
723                 d_progress := 220;
724             END LOOP;
725             d_progress := 230;
726             PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows', d_progress);
727             PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
728          END IF;
729 
730          d_progress := 240;
731          IF l_entity_code = 'PO_LINE_EXT_ATTRS' THEN
732              d_progress := 250;
733              FOR c_po_line_ext_rec IN c_po_line_ext(p_pk1_value, p_pk2_value) LOOP
734                 d_progress := 260;
735                 BEGIN
736                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID :' || c_po_line_ext_rec.ATTR_GROUP_ID, d_progress);
737                     d_progress := 270;
738                     SELECT  DESCRIPTIVE_FLEXFIELD_NAME, DESCRIPTIVE_FLEX_CONTEXT_CODE
739                     INTO    l_ag_type, l_ag_name
740                     FROM    EGO_FND_DSC_FLX_CTX_EXT
741                     WHERE   ATTR_GROUP_ID = c_po_line_ext_rec.ATTR_GROUP_ID;
742 
743                     d_progress := 280;
744                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_type :' || l_ag_type, d_progress);
745                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_name :' || l_ag_name, d_progress);
746                 EXCEPTION
747                 WHEN OTHERS THEN
748                     d_progress := 290;
749                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the AG TYPE and AG NAME', d_progress);
750                     RAISE;
751                 END;
752 
753                 d_progress := 300;
754                 l_attr_list := '';
755                 PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_attr_list', d_progress);
756 
757                 d_progress := 310;
758                 FOR c_po_attr_list_rec IN c_po_attr_list(l_ag_type, l_ag_name) LOOP
759                     d_progress := 320;
760                     IF l_attr_list IS NULL OR l_attr_list = '' THEN
761                         d_progress := 330;
762                         l_attr_list := c_po_attr_list_rec.END_USER_COLUMN_NAME;
763                     ELSE
764                         d_progress := 340;
765                         l_attr_list := l_attr_list || ',' || c_po_attr_list_rec.END_USER_COLUMN_NAME;
766                     END IF;
767                     d_progress := 350;
768                 END LOOP;
769                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_list :' || l_attr_list, d_progress);
770 
771                 l_data_level := 'PO_LINE';
772                 d_progress := 360;
773 
774                IF l_attr_list IS NOT NULL THEN
775                     d_progress := 370;
776                     is_valid_entity_ag := TRUE;
777                     l_attr_group_request_table.EXTEND(1);
778                     l_attr_group_request_table(l_attr_group_request_table.COUNT) := ego_attr_group_request_obj
779                                                                                        (
780                                                                                             c_po_line_ext_rec.ATTR_GROUP_ID
781                                                                                            ,201
782                                                                                            ,l_ag_type
783                                                                                            ,l_ag_name
784                                                                                            ,l_data_level
785                                                                                            ,NULL
786                                                                                            ,NULL
787                                                                                            ,NULL
788                                                                                            ,NULL
789                                                                                            ,NULL
790                                                                                            ,l_attr_list
791                                                                                        );
792                     d_progress := 380;
793                 END IF;
794             END LOOP;
795             d_progress := 390;
796             PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows', d_progress);
797             PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
798          END IF;
799          d_progress := 400;
800          IF l_entity_code = 'PO_SHIPMENTS_EXT_ATTRS' THEN
801             d_progress := 410;
802             FOR c_po_location_ext_rec IN c_po_location_ext(p_pk1_value, p_pk2_value) LOOP
803                 d_progress := 420;
804 
805                 BEGIN
806                     d_progress := 430;
807                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID :' || c_po_location_ext_rec.ATTR_GROUP_ID, d_progress);
808 
809                     SELECT  DESCRIPTIVE_FLEXFIELD_NAME, DESCRIPTIVE_FLEX_CONTEXT_CODE
810                     INTO    l_ag_type, l_ag_name
811                     FROM    EGO_FND_DSC_FLX_CTX_EXT
812                     WHERE   ATTR_GROUP_ID = c_po_location_ext_rec.ATTR_GROUP_ID;
813 
814                     d_progress := 440;
815                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_type :' || l_ag_type, d_progress);
816                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_name :' || l_ag_name, d_progress);
817                 EXCEPTION
818                 WHEN OTHERS THEN
819                     d_progress := 450;
820                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the AG TYPE and AG NAME', d_progress);
821                     RAISE;
822                 END;
823 
824                 d_progress := 460;
825                 l_attr_list := '';
826                 PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_attr_list', d_progress);
827 
828                 d_progress := 470;
829                 FOR c_po_attr_list_rec IN c_po_attr_list(l_ag_type, l_ag_name) LOOP
830                     d_progress := 480;
831                     IF l_attr_list IS NULL OR l_attr_list = '' THEN
832                         d_progress := 490;
833                         l_attr_list := c_po_attr_list_rec.END_USER_COLUMN_NAME;
834                     ELSE
835                         d_progress := 500;
836                         l_attr_list := l_attr_list || ',' || c_po_attr_list_rec.END_USER_COLUMN_NAME;
837                     END IF;
838                     d_progress := 510;
839                 END LOOP;
840                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_list :' || l_attr_list, d_progress);
841 
842                 l_data_level := 'PO_SHIPMENT';
843                 d_progress := 520;
844 
845                 IF l_attr_list IS NOT NULL THEN
846                     d_progress := 530;
847                     is_valid_entity_ag := TRUE;
848                     l_attr_group_request_table.EXTEND(1);
849                     l_attr_group_request_table(l_attr_group_request_table.COUNT) := ego_attr_group_request_obj
850                                                                                        (
851                                                                                             c_po_location_ext_rec.ATTR_GROUP_ID
852                                                                                            ,201
853                                                                                            ,l_ag_type
854                                                                                            ,l_ag_name
855                                                                                            ,l_data_level
856                                                                                            ,NULL
857                                                                                            ,NULL
858                                                                                            ,NULL
859                                                                                            ,NULL
860                                                                                            ,NULL
861                                                                                            ,l_attr_list
862                                                                                        );
863                     d_progress := 540;
864                 END IF;
865             END LOOP;
866             d_progress := 550;
867             PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows', d_progress);
868             PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
869         END IF;
870 
871         d_progress := 560;
872 
873         IF is_valid_entity_ag THEN
874             d_progress := 560;
875             PO_UDA_DEFAULTING_PKG.DEBUG('is_valid_entity_ag : TRUE', d_progress);
876             PO_UDA_DEFAULTING_PKG.DEBUG('Before PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT' , d_progress);
877 
878             PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT(
879                  PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name
880                 ,p_pk1_value
881                 ,p_pk2_value
882                 ,p_pk3_value
883                 ,p_pk4_value
884                 ,p_pk5_value
885                 ,l_pk_column_name_value_pairs
886             );
887             d_progress := 570;
888             PO_UDA_DEFAULTING_PKG.DEBUG('After PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT' , d_progress);
889             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows :', d_progress);
890             PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
891 
892             l_attributes_row_table := EGO_USER_ATTR_ROW_TABLE();
893             l_attr_name_value_pairs := EGO_USER_ATTR_DATA_TABLE();
894             d_progress := 580;
895             PO_UDA_DEFAULTING_PKG.DEBUG('Initialized objects l_attributes_row_table, l_attr_name_value_pairs' , d_progress);
896 
897             PO_UDA_DEFAULTING_PKG.DEBUG('x_return_status : ' || x_return_status , d_progress);
898             IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
899 
900                 d_progress := 590;
901                 PO_UDA_DEFAULTING_PKG.DEBUG('Before ego_user_attrs_data_pub.Get_User_Attrs_Data', d_progress);
902                 PO_UDA_DEFAULTING_PKG.DEBUG('p_object_name : ' || PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name, d_progress);
903                 PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows ', d_progress);
904                 PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
905                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows ', d_progress);
906                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
907                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table is as follows ', d_progress);
908                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attributes_row_table, d_progress);
909                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_name_value_pairs is as follows ', d_progress);
910                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_name_value_pairs, d_progress);
911 
912                 ego_user_attrs_data_pub.Get_User_Attrs_Data
913                 (
914                     p_api_version                   => 1.0
915                    ,p_object_name                   => PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name
916                    ,p_pk_column_name_value_pairs    => l_pk_column_name_value_pairs
917                    ,p_attr_group_request_table      => l_attr_group_request_table
918                    ,x_attributes_row_table          => l_attributes_row_table
919                    ,x_attributes_data_table         => l_attr_name_value_pairs
920                    ,x_return_status                 => x_return_status
921                    ,x_errorcode                     => x_errorcode
922                    ,x_msg_count                     => x_msg_count
923                    ,x_msg_data                      => x_msg_data
924                 );
925                 d_progress := 600;
926                 PO_UDA_DEFAULTING_PKG.DEBUG('After ego_user_attrs_data_pub.Get_User_Attrs_Data', d_progress);
927                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table is as follows ', d_progress);
928                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attributes_row_table, d_progress);
929                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_name_value_pairs is as follows ', d_progress);
930                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_name_value_pairs, d_progress);
931                 PO_UDA_DEFAULTING_PKG.DEBUG('x_return_status :' || x_return_status, d_progress);
932                 PO_UDA_DEFAULTING_PKG.DEBUG('x_errorcode :' || x_errorcode, d_progress);
933                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_count :' || x_msg_count, d_progress);
934                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_data :' || x_msg_data, d_progress);
935 
936              END IF;
937 
938              d_progress := 610;
939 
940              IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
941                 d_progress := 620;
942                 PO_UDA_DEFAULTING_PKG.DEBUG('Before EXECUTE_IMPORT_UDA_FUNCTION (XSC) ' || x_return_status, d_progress);
943                 PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION
944                 (
945                     p_template_id                  => p_template_id || ''
946                    ,p_event                        => 'XSC'
947                    ,x_external_attr_value_pairs    => x_external_attr_value_pairs
948                    ,x_pk_column_name_value_pairs   => l_pk_column_name_value_pairs
949                    ,x_attr_name_value_pairs        => l_attr_name_value_pairs
950                    ,x_attributes_row_table         => l_attributes_row_table
951                    ,x_return_status                => x_return_status
952                    ,x_errorcode                    => x_errorcode
953                    ,x_msg_count                    => x_msg_count
954                    ,x_msg_data                     => x_msg_data
955                 );
956                 PO_UDA_DEFAULTING_PKG.DEBUG('After EXECUTE_IMPORT_UDA_FUNCTION (XSC) ' || x_return_status, d_progress);
957                 d_progress := 630;
958              END IF;
959          END IF;
960 
961     EXCEPTION
962       WHEN OTHERS THEN
963         l_err_txt := 'Exception in IS_VALID_AG_LIST with ERROR : ' || SQLERRM;
964         PO_MESSAGE_S.add_exc_msg
965         (
966             p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
967             p_procedure_name => 'UDA_SUBMISSION_CHECK' || '.' || d_progress,
968             p_error_text => l_err_txt
969         );
970         PO_UDA_DEFAULTING_PKG.DEBUG(l_err_txt, d_progress);
971         x_return_status := 'U';
972     END UDA_SUBMISSION_CHECK;
973 
974 
975 -------------------------------------------------------------------------------------------------------------------
976 --Start of Comments
977 --Name: PO_UDA_SUBMISSION_CHECK
978 --Procedure:
979 --  This procedure would submit all the attribute groups which are not rendered on the UI
980 --  For the header , lines and shipment which ever appropriate
981 --Parameters:
982 --IN:
983 -- 1.	p_po_header_id
984 --      The po_header_id for which the defaulting should take place
985 -- 2.	p_draft_id
986 --      The draft_id for which the defaulting should take place
987 -- 3.   p_address_lookup_type
988 --      This variable would contain the address lookup type to get the address type
989 --OUT:
990 -- 1.	x_external_attr_value_pairs
991 --      This variable would contain an array of attribute value pairs (EGO_COL_NAME_VALUE_PAIR_TABLE)
992 -- 2.	x_return_status   -  Generic Out parameter having return status
993 --
994 --End of Comments
995 --------------------------------------------------------------------------------------------------------------------
996     PROCEDURE PO_UDA_SUBMISSION_CHECK
997     (
998         p_po_header_id                 IN NUMBER
999        ,p_draft_id                     IN NUMBER
1000        ,x_external_attr_value_pairs    OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_TABLE
1001        ,x_return_status                OUT NOCOPY VARCHAR2
1002        ,x_msg_count                    OUT NOCOPY NUMBER
1003     )
1004     IS
1005         d_progress              NUMBER := 0;
1006 
1007         l_template_id           NUMBER;
1008         l_line_template_id      NUMBER;
1009         l_shipment_template_id  NUMBER;
1010 
1011         l_address_lookup_type   VARCHAR2(200);
1012 
1013         l_msg_count             NUMBER;
1014         l_errorcode             NUMBER;
1015         l_msg_data              VARCHAR2(100);
1016 
1017         CURSOR c_get_lines
1018         (
1019              p_po_header_id  NUMBER
1020             ,p_draft_id      NUMBER
1021         )IS
1022         SELECT  PO_LINE_ID, ITEM_ID, LINE_TYPE_ID
1023         FROM    po_lines_merge_v pll
1024         WHERE   PO_HEADER_ID = p_po_header_id
1025           AND   DRAFT_ID = p_draft_id
1026           AND   EXISTS ( SELECT 1 FROM  EGO_ACTION_DISPLAYS_B actdisp , ego_actions_b act , po_uda_ag_template_usages pousage
1027                                         WHERE   act.action_id = actdisp.action_id
1028                                            AND  pousage.template_id = pll.uda_template_id
1029                                            AND  pousage.attribute_group_id =  act.attr_group_id
1030                                            AND  To_Char(pousage.template_id) = act.classification_code
1031                                            AND  actdisp.execution_method = 'XSC');
1032         CURSOR c_get_shipments
1033         (
1034              p_po_header_id  NUMBER
1035             ,p_line_id      NUMBER
1036             ,p_draft_id      NUMBER
1037         )IS
1038         SELECT  LINE_LOCATION_ID, SHIP_TO_LOCATION_ID
1039         FROM    po_line_locations_merge_v pll
1040         WHERE   PO_HEADER_ID = p_po_header_id
1041           AND   PO_LINE_ID = p_line_id
1042           AND   DRAFT_ID = p_draft_id
1043           AND   EXISTS ( SELECT 1 FROM  EGO_ACTION_DISPLAYS_B actdisp , ego_actions_b act , po_uda_ag_template_usages pousage
1044                                         WHERE   act.action_id = actdisp.action_id
1045                                            AND  pousage.template_id = pll.uda_template_id
1046                                            AND  pousage.attribute_group_id =  act.attr_group_id
1047                                            AND  To_Char(pousage.template_id) = act.classification_code
1048                                            AND  actdisp.execution_method = 'XSC');
1049 
1050         l_vendor_id             NUMBER;
1051         l_vendor_site_id        NUMBER;
1052         l_vendor_contact_id     NUMBER;
1053 
1054         g_xsc_return_status     VARCHAR2(3) := FND_API.G_RET_STS_SUCCESS;
1055         ext_name_val_obj            EGO_COL_NAME_VALUE_PAIR_OBJ;
1056 
1057         l_err_txt       VARCHAR2(2000);
1058 
1059     BEGIN
1060 
1061         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.PO_UDA_SUBMISSION_CHECK with parameters' , d_progress);
1062         PO_UDA_DEFAULTING_PKG.DEBUG(' p_po_header_id :' || p_po_header_id, d_progress);
1063         PO_UDA_DEFAULTING_PKG.DEBUG(' p_draft_id :' || p_draft_id, d_progress);
1064         PO_UDA_DEFAULTING_PKG.DEBUG('x_external_attr_value_pairs is as follows ', d_progress);
1065         PO_UDA_DEFAULTING_PKG.DEBUG(x_external_attr_value_pairs, d_progress);
1066         d_progress := 10;
1067 
1068         x_return_status := FND_API.G_RET_STS_SUCCESS;
1069         BEGIN
1070             d_progress := 20;
1071             SELECT  VENDOR_ID, VENDOR_SITE_ID, VENDOR_CONTACT_ID
1072             INTO    l_vendor_id, l_vendor_site_id, l_vendor_contact_id
1073             FROM    po_headers_merge_v
1074             WHERE   PO_HEADER_ID = p_po_header_id
1075             AND     DRAFT_ID = p_draft_id;
1076 
1077             d_progress := 30;
1078             PO_UDA_DEFAULTING_PKG.DEBUG('l_vendor_id :' || l_vendor_id , d_progress);
1079             PO_UDA_DEFAULTING_PKG.DEBUG('l_vendor_site_id :' || l_vendor_site_id , d_progress);
1080             PO_UDA_DEFAULTING_PKG.DEBUG('l_vendor_contact_id :' || l_vendor_contact_id , d_progress);
1081         EXCEPTION
1082         WHEN OTHERS THEN
1083             d_progress := 40;
1084             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the vendor details', d_progress);
1085             RAISE;
1086         END;
1087         d_progress := 50;
1088 
1089         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', FND_API.G_RET_STS_SUCCESS, x_external_attr_value_pairs);
1090         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_errorcode', '0', x_external_attr_value_pairs);
1091         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_count', '0', x_external_attr_value_pairs);
1092         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_data', 'SUCCESS', x_external_attr_value_pairs);
1093         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_CONTACT_ID', l_vendor_contact_id || '', x_external_attr_value_pairs);
1094         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_SITE_ID', l_vendor_site_id || '', x_external_attr_value_pairs);
1095         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_ID', l_vendor_id || '', x_external_attr_value_pairs);
1096 
1097         d_progress := 60;
1098         BEGIN
1099             PO_UDA_DEFAULTING_PKG.DEBUG('Header ID is'|| p_po_header_id, d_progress);
1100             PO_UDA_DEFAULTING_PKG.DEBUG('Draft Id is '|| p_draft_id, d_progress);
1101             d_progress := 70;
1102             SELECT  UDA_TEMPLATE_ID
1103             INTO    l_template_id
1104             FROM    po_headers_merge_v
1105             WHERE   PO_HEADER_ID = p_po_header_id
1106             AND     DRAFT_ID = p_draft_id;
1107 
1108             d_progress := 80;
1109             PO_UDA_DEFAULTING_PKG.DEBUG('l_template_id :' || l_template_id , d_progress);
1110         EXCEPTION
1111         WHEN OTHERS THEN
1112             d_progress := 90;
1113             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Template ID', d_progress);
1114             RAISE;
1115         END;
1116         d_progress := 100;
1117 
1118         IF p_draft_id = -1 THEN
1119             d_progress := 110;
1120             l_address_lookup_type := 'PO_UDA_ADDRESS_TYPES';
1121         ELSE
1122             d_progress := 120;
1123             l_address_lookup_type := 'PO_MOD_UDA_ADDRESS_TYPES';
1124         END IF;
1125 
1126         PO_UDA_DEFAULTING_PKG.DEBUG('l_address_lookup_type  :' || l_address_lookup_type, d_progress);
1127         PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_SUBMISSION_CHECK for header : ' || x_return_status, d_progress);
1128         d_progress := 130;
1129         PO_UDA_DEFAULTING_PKG.UDA_SUBMISSION_CHECK
1130         (
1131             p_pk1_value                    => p_po_header_id
1132            ,p_pk2_value                    => p_draft_id
1133            ,p_template_id                  => l_template_id
1134            ,p_address_lookup_type          => l_address_lookup_type
1135            ,x_external_attr_value_pairs    => x_external_attr_value_pairs
1136            ,x_return_status                => x_return_status
1137            ,x_errorcode                    => l_errorcode
1138            ,x_msg_count                    => l_msg_count
1139            ,x_msg_data                     => l_msg_data
1140         );
1141         d_progress := 140;
1142         PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_SUBMISSION_CHECK for header : ' || x_return_status, d_progress);
1143         PO_UDA_DEFAULTING_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', x_external_attr_value_pairs, ext_name_val_obj);
1144         g_xsc_return_status :=   ext_name_val_obj.VALUE ;
1145 
1146         d_progress := 150;
1147         PO_UDA_DEFAULTING_PKG.DEBUG('Looping for Submission Check for lines', d_progress);
1148         IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN  -- LOOP FOR ALL THE LINES DEFUALTING
1149             d_progress := 160;
1150             FOR  c_get_lines_rec IN c_get_lines(p_po_header_id, p_draft_id) LOOP
1151                 d_progress := 170;
1152                 PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('ITEM_ID',  c_get_lines_rec.ITEM_ID || '', x_external_attr_value_pairs);
1153                 PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('LINE_TYPE_ID', c_get_lines_rec.LINE_TYPE_ID || '', x_external_attr_value_pairs);
1154                 d_progress := 180;
1155                 BEGIN
1156                     d_progress := 190;
1157                     PO_UDA_DEFAULTING_PKG.DEBUG('Line ID is'|| c_get_lines_rec.PO_LINE_ID, d_progress);
1158                     PO_UDA_DEFAULTING_PKG.DEBUG('Draft Id is '|| p_draft_id, d_progress);
1159 
1160                     SELECT  UDA_TEMPLATE_ID
1161                     INTO    l_line_template_id
1162                     FROM    po_lines_draft_all
1163                     WHERE   PO_LINE_ID = c_get_lines_rec.PO_LINE_ID
1164                     AND     DRAFT_ID = p_draft_id;
1165 
1166                     d_progress := 200;
1167                     PO_UDA_DEFAULTING_PKG.DEBUG('l_line_template_id :' || l_line_template_id , d_progress);
1168                 EXCEPTION
1169                 WHEN OTHERS THEN
1170                     d_progress := 210;
1171                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Line Template ID ', d_progress);
1172                     RAISE;
1173                 END;
1174                 d_progress := 220;
1175 
1176                 PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_SUBMISSION_CHECK for line : ' || x_return_status, d_progress);
1177                 d_progress := 230;
1178                 PO_UDA_DEFAULTING_PKG.UDA_SUBMISSION_CHECK
1179                  (
1180                     p_pk1_value                    => c_get_lines_rec.PO_LINE_ID
1181                    ,p_pk2_value                    => p_draft_id
1182                    ,p_template_id                  => l_line_template_id
1183                    ,x_external_attr_value_pairs    => x_external_attr_value_pairs
1184                    ,x_return_status                => x_return_status
1185                    ,x_errorcode                    => l_errorcode
1186                    ,x_msg_count                    => l_msg_count
1187                    ,x_msg_data                     => l_msg_data
1188                  );
1189                  d_progress := 240;
1190                 PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_SUBMISSION_CHECK for line : ' || x_return_status, d_progress);
1191                 PO_UDA_DEFAULTING_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', x_external_attr_value_pairs, ext_name_val_obj);
1192                 IF g_xsc_return_status = FND_API.G_RET_STS_SUCCESS THEN
1193                     d_progress := 250;
1194                     g_xsc_return_status :=   ext_name_val_obj.VALUE ;
1195                 END IF;
1196 
1197                 d_progress := 260;
1198                 PO_UDA_DEFAULTING_PKG.DEBUG('Looping for Submission Check for Shipments', d_progress);
1199                 IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN  -- LOOP FOR ALL THE SHIPMENTS DEFUALTING
1200                     d_progress := 270;
1201                     FOR  c_get_shipments_rec IN c_get_shipments(p_po_header_id, c_get_lines_rec.PO_LINE_ID, p_draft_id) LOOP
1202                         d_progress := 280;
1203                         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('SHIP_TO_LOC_ID',  c_get_lines_rec.ITEM_ID || '', x_external_attr_value_pairs);
1204 
1205                         BEGIN
1206                             d_progress := 290;
1207                             PO_UDA_DEFAULTING_PKG.DEBUG('Shipment ID is'|| c_get_shipments_rec.LINE_LOCATION_ID, d_progress);
1208                             PO_UDA_DEFAULTING_PKG.DEBUG('Draft Id is '|| p_draft_id, d_progress);
1209 
1210                             SELECT  UDA_TEMPLATE_ID
1211                             INTO    l_shipment_template_id
1212                             FROM    PO_LINE_LOCATIONS_draft_all
1213                             WHERE   LINE_LOCATION_ID = c_get_shipments_rec.LINE_LOCATION_ID
1214                             AND     DRAFT_ID = p_draft_id;
1215 
1216                             d_progress := 300;
1217                             PO_UDA_DEFAULTING_PKG.DEBUG('Template Id for Shipment '|| l_shipment_template_id, d_progress);
1218                         EXCEPTION
1219                         WHEN OTHERS THEN
1220                             d_progress := 310;
1221                             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Shipment Template ID', d_progress);
1222                             RAISE;
1223                         END;
1224                         d_progress := 320;
1225                         PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_SUBMISSION_CHECK for shipment : ' || x_return_status, d_progress);
1226                         d_progress := 330;
1227                         PO_UDA_DEFAULTING_PKG.UDA_SUBMISSION_CHECK
1228                          (
1229                             p_pk1_value                    => c_get_shipments_rec.LINE_LOCATION_ID
1230                            ,p_pk2_value                    => p_draft_id
1231                            ,p_template_id                  => l_shipment_template_id
1232                            ,x_external_attr_value_pairs    => x_external_attr_value_pairs
1233                            ,x_return_status                => x_return_status
1234                            ,x_errorcode                    => l_errorcode
1235                            ,x_msg_count                    => l_msg_count
1236                            ,x_msg_data                     => l_msg_data
1237                          );
1238                          d_progress := 340;
1239                          PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_SUBMISSION_CHECK for shipment : ' || x_return_status, d_progress);
1240                          PO_UDA_DEFAULTING_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', x_external_attr_value_pairs, ext_name_val_obj);
1241                          IF g_xsc_return_status = FND_API.G_RET_STS_SUCCESS THEN
1242                               d_progress := 350;
1243                               g_xsc_return_status :=   ext_name_val_obj.VALUE ;
1244                          END IF;
1245 
1246                         d_progress := 360;
1247                     END LOOP;
1248                 END IF;
1249             END LOOP;
1250         END IF;
1251         d_progress := 370;
1252         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', g_xsc_return_status, x_external_attr_value_pairs);
1253         d_progress := 380;
1254         PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_SUBMISSION_CHECK fully done : ' || x_return_status, d_progress);
1255     EXCEPTION
1256       WHEN OTHERS THEN
1257         l_err_txt := 'Exception in PO_UDA_SUBMISSION_CHECK with ERROR : ' || SQLERRM;
1258         PO_MESSAGE_S.add_exc_msg
1259         (
1260             p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
1261             p_procedure_name => 'PO_UDA_SUBMISSION_CHECK' || '.' || d_progress,
1262             p_error_text => l_err_txt
1263         );
1264         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, d_progress);
1265         x_return_status := 'U';
1266     END PO_UDA_SUBMISSION_CHECK;
1267 
1268 
1269 -------------------------------------------------------------------------------------------------------------------
1270 --Start of Comments
1271 --Name: DEFAULTING_NON_RENDERERED_AGS
1272 --Procedure:
1273 --  This procedure would default all the attribute groups which are not rendered on the UI
1274 --  For the header/draft, lines and shipmets which ever appropriate
1275 --Parameters:
1276 --IN:
1277 -- 1.	p_po_header_id
1278 --      The po_header_id for which the defaulting should take place
1279 -- 2.	p_draft_id
1280 --      The draft_id for which the defaulting should take place
1281 -- 3.   p_address_lookup_type
1282 --      This variable would contain the address lookup type to get the address type
1283 --OUT:
1284 -- 1.	x_external_attr_value_pairs
1285 --      This variable would contain an array of attribute value pairs (EGO_COL_NAME_VALUE_PAIR_TABLE)
1286 -- 2.	x_return_status   -  Generic Out parameter having return status
1287 --
1288 --End of Comments
1289 --------------------------------------------------------------------------------------------------------------------
1290     PROCEDURE DEFAULTING_NON_RENDERERED_AGS
1291     (
1292         p_po_header_id                 IN NUMBER
1293        ,p_draft_id                     IN NUMBER
1294        ,p_doc_type                     IN VARCHAR2 DEFAULT 'MOD'
1295        ,x_external_attr_value_pairs    OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_TABLE
1296        ,x_return_status                OUT NOCOPY VARCHAR2
1297     )
1298     IS
1299         d_progress              NUMBER := 0;
1300 
1301         l_template_id           NUMBER;
1302         l_line_template_id      NUMBER;
1303         l_shipment_template_id  NUMBER;
1304         l_agent_id              NUMBER;
1305         l_org_id                NUMBER;
1306 
1307         l_address_lookup_type   VARCHAR2(200);
1308 
1309         l_msg_count             NUMBER;
1310         l_errorcode             NUMBER;
1311         l_msg_data              VARCHAR2(100);
1312 
1313         CURSOR c_get_lines
1314         (
1315              p_po_header_id  NUMBER
1316             ,p_draft_id      NUMBER
1317         )IS
1318         SELECT  PO_LINE_ID, ITEM_ID, LINE_TYPE_ID, CONTRACT_TYPE, CATEGORY_ID
1319         FROM    PO_LINES_DRAFT_ALL
1320         WHERE   PO_HEADER_ID = p_po_header_id
1321         AND     DRAFT_ID = p_draft_id;
1322 
1323         CURSOR c_get_shipments
1324         (
1325              p_po_header_id  NUMBER
1326             ,p_line_id      NUMBER
1327             ,p_draft_id      NUMBER
1328         )IS
1329         SELECT  LINE_LOCATION_ID, SHIP_TO_LOCATION_ID
1330         FROM    PO_LINE_LOCATIONS_DRAFT_ALL
1331         WHERE   PO_HEADER_ID = p_po_header_id
1332         AND     PO_LINE_ID = p_line_id
1333         AND     DRAFT_ID = p_draft_id;
1334 
1335 
1336         l_vendor_id             NUMBER;
1337         l_vendor_site_id        NUMBER;
1338         l_vendor_contact_id     NUMBER;
1339         l_draft_id              NUMBER;
1340         l_header_dirty_flag     VARCHAR2(1) := 'Y';
1341 
1342         l_err_txt       VARCHAR2(2000);
1343         l_present       NUMBER := 0;
1344 
1345     BEGIN
1346         d_progress := 10;
1347         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.DEFAULTING_NON_RENDERERED_AGS with parameters' , d_progress);
1348         PO_UDA_DEFAULTING_PKG.DEBUG(' p_po_header_id :' || p_po_header_id, d_progress);
1349         PO_UDA_DEFAULTING_PKG.DEBUG(' p_draft_id :' || p_draft_id, d_progress);
1350         PO_UDA_DEFAULTING_PKG.DEBUG(' p_doc_type :' || p_doc_type, d_progress);
1351         x_return_status := FND_API.G_RET_STS_SUCCESS;
1352 
1353         d_progress := 20;
1354         BEGIN
1355             d_progress := 30;
1356             IF p_doc_type = 'PO' THEN
1357                 BEGIN
1358                     d_progress := 40;
1359                     SELECT  VENDOR_ID, VENDOR_SITE_ID, VENDOR_CONTACT_ID, ORG_ID, AGENT_ID, UDA_TEMPLATE_ID
1360                     INTO    l_vendor_id, l_vendor_site_id, l_vendor_contact_id, l_org_id, l_agent_id, l_template_id
1361                     FROM    PO_HEADERS_MERGE_V
1362                     WHERE   PO_HEADER_ID = p_po_header_id
1363                     AND     DRAFT_ID = p_draft_id;
1364 
1365                     d_progress := 50;
1366                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_id :' || l_vendor_id, d_progress);
1367                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_site_id :' || l_vendor_site_id, d_progress);
1368                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_contact_id :' || l_vendor_contact_id, d_progress);
1369                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_org_id :' || l_org_id, d_progress);
1370                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_agent_id :' || l_agent_id, d_progress);
1371                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_template_id :' || l_template_id, d_progress);
1372                 EXCEPTION
1373                 WHEN No_Data_Found THEN -- the case where header is no longer dirty, some line is dirty
1374                     d_progress := 60;
1375 
1376                     l_header_dirty_flag := 'N';
1377                     SELECT  VENDOR_ID, VENDOR_SITE_ID, VENDOR_CONTACT_ID, ORG_ID, AGENT_ID, UDA_TEMPLATE_ID
1378                     INTO    l_vendor_id, l_vendor_site_id, l_vendor_contact_id, l_org_id, l_agent_id, l_template_id
1379                     FROM    PO_HEADERS_MERGE_V
1380                     WHERE   PO_HEADER_ID = p_po_header_id
1381                     AND     DRAFT_ID = -1;
1382 
1383                     d_progress := 70;
1384                     PO_UDA_DEFAULTING_PKG.DEBUG('Header is Not dirty', d_progress);
1385                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_id :' || l_vendor_id, d_progress);
1386                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_site_id :' || l_vendor_site_id, d_progress);
1387                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_contact_id :' || l_vendor_contact_id, d_progress);
1388                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_org_id :' || l_org_id, d_progress);
1389                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_agent_id :' || l_agent_id, d_progress);
1390                     PO_UDA_DEFAULTING_PKG.DEBUG(' l_template_id :' || l_template_id, d_progress);
1391                END ;
1392             ELSE -- mod case. mod is not supposed to throw a NDF with +ve draft id, dirty or not dirty
1393                 d_progress := 80;
1394                 SELECT  VENDOR_ID, VENDOR_SITE_ID, VENDOR_CONTACT_ID, ORG_ID, AGENT_ID, UDA_TEMPLATE_ID
1395                 INTO    l_vendor_id, l_vendor_site_id, l_vendor_contact_id, l_org_id, l_agent_id, l_template_id
1396                 FROM    PO_HEADERS_MERGE_V
1397                 WHERE   PO_HEADER_ID = p_po_header_id
1398                 AND     DRAFT_ID = p_draft_id;
1399 
1400                 d_progress := 90;
1401                 PO_UDA_DEFAULTING_PKG.DEBUG('Mod Case', d_progress);
1402                 PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_id :' || l_vendor_id, d_progress);
1403                 PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_site_id :' || l_vendor_site_id, d_progress);
1404                 PO_UDA_DEFAULTING_PKG.DEBUG(' l_vendor_contact_id :' || l_vendor_contact_id, d_progress);
1405                 PO_UDA_DEFAULTING_PKG.DEBUG(' l_org_id :' || l_org_id, d_progress);
1406                 PO_UDA_DEFAULTING_PKG.DEBUG(' l_agent_id :' || l_agent_id, d_progress);
1407                 PO_UDA_DEFAULTING_PKG.DEBUG(' l_template_id :' || l_template_id, d_progress);
1408             END IF;
1409             d_progress := 100;
1410             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_CONTACT_ID', l_vendor_contact_id || '', x_external_attr_value_pairs);
1411             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_SITE_ID', l_vendor_site_id || '', x_external_attr_value_pairs);
1412             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_ID', l_vendor_id || '', x_external_attr_value_pairs);
1413             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('ORG_ID', l_org_id || '', x_external_attr_value_pairs);
1414             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('AGENT_ID', l_agent_id || '', x_external_attr_value_pairs);
1415             d_progress := 110;
1416 
1417             IF p_doc_type = 'PO' THEN
1418               d_progress := 120;
1419               l_draft_id := -1;
1420               l_address_lookup_type := 'PO_UDA_ADDRESS_TYPES';
1421             --<PAR Project Start>
1422             ELSIF p_doc_type = 'MOD' THEN
1423               d_progress := 130;
1424               l_draft_id := p_draft_id;
1425               l_address_lookup_type := 'PO_MOD_UDA_ADDRESS_TYPES';
1426             ELSE
1427               d_progress := 135;
1428               l_draft_id := p_draft_id;
1429               l_address_lookup_type := 'PO_UDA_ADDRESS_TYPES';
1430             END IF;
1431             --<PAR Project End>
1432             PO_UDA_DEFAULTING_PKG.DEBUG('l_address_lookup_type :' || l_address_lookup_type, d_progress);
1433             d_progress := 140;
1434             -- Setting the draft ID here which will be used in Post DML Functions.
1435             -- as the data is still in draft table and we can't pass that draft
1436             -- in defaulting function so PO Case.
1437             PO_FED_FIELD_FUNCTIONS.XPD_DRAFT_ID := p_draft_id ;
1438 
1439             IF l_header_dirty_flag = 'Y' THEN
1440                 d_progress := 150;
1441                 PO_UDA_DEFAULTING_PKG.DEBUG('Header is dirty so calling PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS', d_progress);
1442                 PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS
1443                 (
1444                      p_pk1_value                    => p_po_header_id
1445                     ,p_pk2_value                    => l_draft_id
1446                     ,p_template_id                  => l_template_id
1447                     ,p_address_lookup_type          => l_address_lookup_type
1448                     ,x_external_attr_value_pairs    => x_external_attr_value_pairs
1449                     ,x_return_status                => x_return_status
1450                     ,x_errorcode                    => l_errorcode
1451                     ,x_msg_count                    => l_msg_count
1452                     ,x_msg_data                     => l_msg_data
1453                 );
1454                 d_progress := 160;
1455                 PO_UDA_DEFAULTING_PKG.DEBUG('After PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS', d_progress);
1456                 d_progress := 165;
1457             ELSE
1458                 d_progress := 170;
1459                 PO_UDA_DEFAULTING_PKG.DEBUG('Header is NOT dirty so NOT calling PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS', d_progress);
1460             END IF;
1461             --Bug 11894977
1462             PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_EXECUTE_ACTIONS for line : ' || x_return_status, d_progress);
1463             PO_UDA_DEFAULTING_PKG.UDA_EXECUTE_ACTIONS
1464             (
1465                   p_pk1_value                     => p_po_header_id
1466                 ,p_pk2_value                    => l_draft_id
1467                 ,p_template_id                  => l_template_id
1468                 ,p_event_type		                 => 'XPD'
1469                 ,p_write_to		                  => 'FALSE'
1470                 ,x_return_status                => x_return_status
1471                 ,x_errorcode                    => l_errorcode
1472                 ,x_msg_count                    => l_msg_count
1473                 ,x_msg_data                     => l_msg_data
1474             );
1475             PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_EXECUTE_ACTIONS for header : ' || x_return_status, d_progress);
1476             --Bug 11894977
1477             d_progress := 180;
1478             d_progress := 50;
1479 
1480         EXCEPTION
1481             WHEN NO_DATA_FOUND THEN
1482                 -- initialize the external attributes with nulls.
1483                 -- this is required for the lines code to work corectly
1484             d_progress := 190;
1485             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_CONTACT_ID', l_vendor_contact_id || '', x_external_attr_value_pairs);
1486             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_SITE_ID', l_vendor_site_id || '', x_external_attr_value_pairs);
1487             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('VENDOR_ID', l_vendor_id || '', x_external_attr_value_pairs);
1488             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('ORG_ID', l_org_id || '', x_external_attr_value_pairs);
1489             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('AGENT_ID', l_agent_id || '', x_external_attr_value_pairs);
1490         END;
1491         d_progress := 200;
1492         PO_UDA_DEFAULTING_PKG.DEBUG('Before Looping for Lines', d_progress);
1493         IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN  -- LOOP FOR ALL THE LINES DEFUALTING
1494             d_progress := 210;
1495             FOR  c_get_lines_rec IN c_get_lines(p_po_header_id, p_draft_id) LOOP
1496                 d_progress := 220;
1497                 PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('ITEM_ID', c_get_lines_rec.ITEM_ID || '', x_external_attr_value_pairs);
1498                 PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('LINE_TYPE_ID', c_get_lines_rec.LINE_TYPE_ID || '', x_external_attr_value_pairs);
1499                 PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('CONTRACT_TYPE', c_get_lines_rec.CONTRACT_TYPE || '', x_external_attr_value_pairs);
1500                 PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('CATEGORY_ID', c_get_lines_rec.CATEGORY_ID || '', x_external_attr_value_pairs);
1501 
1502                 BEGIN
1503                     d_progress := 230;
1504                     BEGIN
1505                         PO_UDA_DEFAULTING_PKG.DEBUG('Line ID is'|| c_get_lines_rec.PO_LINE_ID, d_progress);
1506                         PO_UDA_DEFAULTING_PKG.DEBUG('Draft Id is '|| p_draft_id, d_progress);
1507                         d_progress := 240;
1508                         SELECT  UDA_TEMPLATE_ID
1509                         INTO    l_line_template_id
1510                         FROM    PO_LINES_DRAFT_ALL
1511                         WHERE   PO_LINE_ID = c_get_lines_rec.PO_LINE_ID
1512                         AND     DRAFT_ID = p_draft_id;
1513 
1514                         d_progress := 250;
1515                         PO_UDA_DEFAULTING_PKG.DEBUG('l_line_template_id :' || l_line_template_id , d_progress);
1516                     EXCEPTION
1517                     WHEN OTHERS THEN
1518                         d_progress := 260;
1519                         PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Line Template ID', d_progress);
1520                         RAISE;
1521                     END;
1522                     d_progress := 270;
1523 
1524                     IF p_doc_type = 'PO' THEN
1525                       l_draft_id := -1;
1526                     ELSE
1527                       l_draft_id := p_draft_id;
1528                     END IF;
1529                     d_progress := 280;
1530 
1531 
1532                     BEGIN
1533                         select 1
1534                         into   l_present
1535                         from   po_Lines_all_ext_b
1536                         where  po_line_id = c_get_lines_rec.PO_LINE_ID
1537                           and  draft_id = l_draft_id
1538                           AND  ROWNUM < 2;
1539                     EXCEPTION
1540                         WHEN NO_DATA_FOUND THEN
1541                           l_present := 0;
1542                     END;
1543 
1544                     d_progress := 290;
1545 
1546                     IF (l_present = 0) THEN
1547                     -- If no ext record was found we need to fire defaulting functions.
1548                     PO_UDA_DEFAULTING_PKG.DEBUG('Before PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS for lines', d_progress);
1549                     PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS
1550                     (
1551                         p_pk1_value                    => c_get_lines_rec.PO_LINE_ID
1552                        ,p_pk2_value                    => l_draft_id
1553                        ,p_template_id                  => l_line_template_id
1554                        ,x_external_attr_value_pairs    => x_external_attr_value_pairs
1555                        ,x_return_status                => x_return_status
1556                        ,x_errorcode                    => l_errorcode
1557                        ,x_msg_count                    => l_msg_count
1558                        ,x_msg_data                     => l_msg_data
1559                     );
1560                     d_progress := 300;
1561                     PO_UDA_DEFAULTING_PKG.DEBUG('After PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS for lines', d_progress);
1562                     ELSE
1563                     -- If the record is there then just fire POST DML actions.
1564                     PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_EXECUTE_ACTIONS for line : ' || x_return_status, d_progress);
1565                     PO_UDA_DEFAULTING_PKG.UDA_EXECUTE_ACTIONS
1566                     (
1567                         p_pk1_value                    => c_get_lines_rec.PO_LINE_ID
1568                        ,p_pk2_value                    => l_draft_id
1569                        ,p_template_id                  => l_line_template_id
1570                        ,p_event_type		               => 'XPD'
1571                        ,p_write_to		                 => 'FALSE'
1572                        ,x_return_status                => x_return_status
1573                        ,x_errorcode                    => l_errorcode
1574                        ,x_msg_count                    => l_msg_count
1575                        ,x_msg_data                     => l_msg_data
1576                      );
1577                     PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_EXECUTE_ACTIONS for line : ' || x_return_status, d_progress);
1578                     d_progress := 310;
1579                     END IF;
1580                 EXCEPTION
1581                     WHEN NO_DATA_FOUND THEN
1582                         d_progress := 320;
1583                         NULL; -- (In case Line is not dirty)
1584                 END;
1585                 PO_UDA_DEFAULTING_PKG.DEBUG('Before Looping for Shipments', d_progress);
1586                 d_progress := 330;
1587                 IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN  -- LOOP FOR ALL THE SHIPMENTS DEFUALTING
1588                     d_progress := 340;
1589                     FOR  c_get_shipments_rec IN c_get_shipments(p_po_header_id, c_get_lines_rec.PO_LINE_ID, p_draft_id) LOOP
1590                         d_progress := 350;
1591                         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('SHIP_TO_LOC_ID', c_get_shipments_rec.SHIP_TO_LOCATION_ID || '', x_external_attr_value_pairs);
1592 
1593                         BEGIN
1594                             d_progress := 360;
1595                             BEGIN
1596                                 d_progress := 370;
1597                                 PO_UDA_DEFAULTING_PKG.DEBUG('LINE_LOCATION_ID is'|| c_get_shipments_rec.LINE_LOCATION_ID, d_progress);
1598                                 PO_UDA_DEFAULTING_PKG.DEBUG('Draft Id is '|| p_draft_id, d_progress);
1599 
1600                                 SELECT  UDA_TEMPLATE_ID
1601                                 INTO    l_shipment_template_id
1602                                 FROM    PO_LINE_LOCATIONS_DRAFT_ALL
1603                                 WHERE   LINE_LOCATION_ID = c_get_shipments_rec.LINE_LOCATION_ID
1604                                 AND     DRAFT_ID = p_draft_id;
1605                                 d_progress := 380;
1606                                 PO_UDA_DEFAULTING_PKG.DEBUG('l_line_template_id :' || l_shipment_template_id , d_progress);
1607                             EXCEPTION
1608                             WHEN OTHERS THEN
1609                                 d_progress := 390;
1610                                 PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Shipment Template ID', d_progress);
1611                                 RAISE;
1612                             END;
1613                             d_progress := 400;
1614 
1615                             IF p_doc_type = 'PO' THEN
1616                                 d_progress := 410;
1617                               l_draft_id := -1;
1618                             ELSE
1619                                 d_progress := 420;
1620                               l_draft_id := p_draft_id;
1621                             END IF;
1622 
1623                             BEGIN
1624                                 SELECT 1
1625                                 INTO   l_present
1626                                 FROM   po_Line_locations_all_ext_b
1627                                 WHERE  line_location_id = c_get_shipments_rec.LINE_LOCATION_ID
1628                                   AND  draft_id = l_draft_id
1629                                   AND  ROWNUM < 2;
1630                             EXCEPTION
1631                               WHEN NO_DATA_FOUND THEN
1632                                   l_present := 0;
1633                             END;
1634 
1635                             d_progress := 430;
1636 
1637                             IF ( l_present = 0) THEN
1638                                 PO_UDA_DEFAULTING_PKG.DEBUG('Before PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS for shipments', d_progress);
1639                                 PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS
1640                                 (
1641                                     p_pk1_value                    => c_get_shipments_rec.LINE_LOCATION_ID
1642                                    ,p_pk2_value                    => l_draft_id
1643                                    ,p_template_id                  => l_shipment_template_id
1644                                    ,x_external_attr_value_pairs    => x_external_attr_value_pairs
1645                                    ,x_return_status                => x_return_status
1646                                    ,x_errorcode                    => l_errorcode
1647                                    ,x_msg_count                    => l_msg_count
1648                                    ,x_msg_data                     => l_msg_data
1649                                 );
1650                                 d_progress := 440;
1651                                 PO_UDA_DEFAULTING_PKG.DEBUG('After PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS for shipments', d_progress);
1652                             ELSE
1653                                 PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_EXECUTE_ACTIONS for shipment : ' || x_return_status, d_progress);
1654                                 PO_UDA_DEFAULTING_PKG.UDA_EXECUTE_ACTIONS
1655                                 (
1656                                     p_pk1_value                    => c_get_shipments_rec.LINE_LOCATION_ID
1657                                    ,p_pk2_value                    => -1
1658                                    ,p_template_id                  => l_shipment_template_id
1659                                    ,p_event_type		               => 'XPD'
1660                                    ,p_write_to		                 => 'FALSE'
1661                                    ,x_return_status                => x_return_status
1662                                    ,x_errorcode                    => l_errorcode
1663                                    ,x_msg_count                    => l_msg_count
1664                                    ,x_msg_data                     => l_msg_data
1665                                 );
1666                                 PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_EXECUTE_ACTIONS for shipment : ' || x_return_status, d_progress);
1667                                 d_progress := 450;
1668                             END IF;
1669 
1670                         EXCEPTION
1671                             WHEN NO_DATA_FOUND THEN
1672                                 d_progress := 460;
1673                                 NULL; -- (In case Shipment is not dirty)
1674                         END;
1675                     END LOOP;  -- For shipments
1676                 END IF;
1677             END LOOP;  -- For Lines
1678         END IF;
1679         d_progress := 470;
1680         PO_UDA_DEFAULTING_PKG.DEBUG('Looping for Lines is done', d_progress);
1681 
1682     EXCEPTION
1683       WHEN OTHERS THEN
1684         l_err_txt := 'Exception in DEFAULTING_NON_RENDERERED_AGS with ERROR : ' || SQLERRM;
1685         PO_MESSAGE_S.add_exc_msg
1686         (
1687             p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
1688             p_procedure_name => 'DEFAULTING_NON_RENDERERED_AGS' || '.' || d_progress,
1689             p_error_text => l_err_txt
1690         );
1691         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, d_progress);
1692         x_return_status := 'U';
1693     END DEFAULTING_NON_RENDERERED_AGS;
1694 
1695 
1696 --------------------------------------------------------------------------------------------------------------------
1697 --Start of Comments
1698 --Name: DEFAULTING_ATTRIBUTE_GROUPS
1699 --Procedure:
1700 --  This procedure would execute CONSTRUCT_USAGE_OBJECT_ARRAY procedure and then get the usage objects for which the
1701 --  defaulting should be done with all the validations.
1702 --  Then it executes the DEFAULT_AGS_FROM_USAGE_OBJECT procexdure whcih actually defaults the AGs and its
1703 --  corresponding Attributes.
1704 --Parameters:
1705 --IN:
1706 -- 1.	p_pk1_value, p_pk2_value, p_pk3_value, p_pk4_value, p_pk5_value
1707 --      The Primary Key values for the UDA Attributes
1708 -- 2.	p_template_id
1709 --      This variable would contain the template id for which the actions are to be executed
1710 -- 3.   p_address_lookup_type
1711 --      This variable would contain the address lookup type to get the address type
1712 --IN/OUT:
1713 -- 1.	x_external_attr_value_pairs
1714 --      This variable would contain an array of attribute value pairs (EGO_COL_NAME_VALUE_PAIR_TABLE)
1715 --OUT:
1716 -- 1.	x_return_status   -  Generic Out parameter having return status
1717 -- 2.   x_errorcode       -  Generic Out parameter having error code
1718 -- 3.	x_msg_count       -  Generic Out parameter having return msg Count
1719 -- 4.	x_msg_data        -  Generic Out parameter having return msg
1720 --
1721 --End of Comments
1722 --------------------------------------------------------------------------------------------------------------------
1723     PROCEDURE DEFAULTING_ATTRIBUTE_GROUPS
1724     (
1725         p_pk1_value                    IN  NUMBER
1726        ,p_pk2_value                    IN  NUMBER  DEFAULT NULL
1727        ,p_pk3_value                    IN  NUMBER  DEFAULT NULL
1728        ,p_pk4_value                    IN  NUMBER  DEFAULT NULL
1729        ,p_pk5_value                    IN  NUMBER  DEFAULT NULL
1730        ,p_template_id                  IN  NUMBER
1731        ,p_address_lookup_type          IN  VARCHAR2 DEFAULT NULL
1732        ,x_external_attr_value_pairs    IN OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_TABLE
1733        ,x_return_status                OUT NOCOPY VARCHAR2
1734        ,x_errorcode                    OUT NOCOPY NUMBER
1735        ,x_msg_count                    OUT NOCOPY NUMBER
1736        ,x_msg_data                     OUT NOCOPY VARCHAR2
1737     )
1738     IS
1739         d_progress  NUMBER := 0;
1740         l_po_uda_usage_object_array PO_UDA_USAGE_OBJECT_ARRAY;
1741 
1742         l_attr_name_value_pairs        EGO_USER_ATTR_DATA_TABLE;
1743         l_attributes_row_table         EGO_USER_ATTR_ROW_TABLE;
1744 
1745         l_pk_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY;
1746 
1747         l_pk1_column_name   VARCHAR2(200);
1748         l_pk2_column_name   VARCHAR2(200);
1749         l_pk3_column_name   VARCHAR2(200);
1750         l_pk4_column_name   VARCHAR2(200);
1751         l_pk5_column_name   VARCHAR2(200);
1752 
1753         l_base_object_name  VARCHAR2(200);
1754 
1755         l_failed_row_id_list           VARCHAR2(2000);
1756         l_entity_code                  VARCHAR2(200);
1757 
1758         l_err_txt       VARCHAR2(2000);
1759 
1760     BEGIN
1761 
1762         d_progress := 10;
1763         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.DEFAULTING_ATTRIBUTE_GROUPS with parameters' , d_progress);
1764         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk1_value : ' || p_pk1_value, d_progress);
1765         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk2_value : ' || p_pk2_value, d_progress);
1766         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk3_value : ' || p_pk3_value, d_progress);
1767         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk4_value : ' || p_pk4_value, d_progress);
1768         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk5_value : ' || p_pk5_value, d_progress);
1769         PO_UDA_DEFAULTING_PKG.DEBUG('p_template_id : ' || p_template_id, d_progress);
1770         PO_UDA_DEFAULTING_PKG.DEBUG('p_address_lookup_type : ' || p_address_lookup_type, d_progress);
1771         PO_UDA_DEFAULTING_PKG.DEBUG('x_external_attr_value_pairs is as follows :', d_progress);
1772         PO_UDA_DEFAULTING_PKG.DEBUG(x_external_attr_value_pairs, d_progress);
1773 
1774         x_return_status := FND_API.G_RET_STS_SUCCESS;
1775         d_progress := 20;
1776         IF p_template_id IS NULL THEN
1777             d_progress := 30;
1778             x_return_status := 'E';
1779             RETURN;
1780         END IF;
1781 
1782         d_progress := 40;
1783         PO_UDA_DEFAULTING_PKG.DEBUG('Before CONSTRUCT_USAGE_OBJECT_ARRAY ' || x_return_status, d_progress);
1784         PO_UDA_DEFAULTING_PKG.CONSTRUCT_USAGE_OBJECT_ARRAY
1785         (
1786             p_pk1_value                    => p_pk1_value
1787            ,p_pk2_value                    => p_pk2_value
1788            ,p_pk3_value                    => p_pk3_value
1789            ,p_pk4_value                    => p_pk4_value
1790            ,p_pk5_value                    => p_pk5_value
1791            ,p_template_id                  => p_template_id
1792            ,x_po_uda_usage_object_array    => l_po_uda_usage_object_array
1793            ,x_return_status                => x_return_status
1794            ,x_errorcode                    => x_errorcode
1795            ,x_msg_count                    => x_msg_count
1796            ,x_msg_data                     => x_msg_data
1797         );
1798         d_progress := 50;
1799         PO_UDA_DEFAULTING_PKG.DEBUG('After CONSTRUCT_USAGE_OBJECT_ARRAY ' || x_return_status, d_progress);
1800 
1801         IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
1802             d_progress := 60;
1803             PO_UDA_DEFAULTING_PKG.DEBUG('Before DEFAULT_AGS_FROM_USAGE_OBJECT ' || x_return_status, d_progress);
1804             PO_UDA_DEFAULTING_PKG.DEFAULT_AGS_FROM_USAGE_OBJECT
1805             (
1806                 p_pk1_value                    => p_pk1_value
1807                ,p_pk2_value                    => p_pk2_value
1808                ,p_pk3_value                    => p_pk3_value
1809                ,p_pk4_value                    => p_pk4_value
1810                ,p_pk5_value                    => p_pk5_value
1811                ,p_template_id                  => p_template_id
1812                ,p_address_lookup_type          => p_address_lookup_type
1813                ,x_external_attr_value_pairs    => x_external_attr_value_pairs
1814                ,x_po_uda_usage_object_array    => l_po_uda_usage_object_array
1815                ,x_return_status                => x_return_status
1816                ,x_errorcode                    => x_errorcode
1817                ,x_msg_count                    => x_msg_count
1818                ,x_msg_data                     => x_msg_data
1819             );
1820             d_progress := 70;
1821             PO_UDA_DEFAULTING_PKG.DEBUG('After DEFAULT_AGS_FROM_USAGE_OBJECT ' || x_return_status, d_progress);
1822         END IF;
1823         d_progress := 80;
1824 
1825     EXCEPTION
1826       WHEN OTHERS THEN
1827         l_err_txt := 'Exception in DEFAULTING_ATTRIBUTE_GROUPS with ERROR : ' || SQLERRM;
1828         PO_MESSAGE_S.add_exc_msg
1829         (
1830             p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
1831             p_procedure_name => 'DEFAULTING_ATTRIBUTE_GROUPS' || '.' || d_progress,
1832             p_error_text => l_err_txt
1833         );
1834         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, d_progress);
1835         x_return_status := 'U';
1836     END DEFAULTING_ATTRIBUTE_GROUPS;
1837 
1838 --------------------------------------------------------------------------------------------------------------------
1839 --Start of Comments
1840 --Name: DEFAULT_AGS_FROM_USAGE_OBJECT
1841 --Procedure:
1842 --  This procedure would execute for each object in the x_po_uda_usage_object_array array
1843 --  It executes the PO_UDA_IMPORT_PKG.POPULATE_EMPTY_AGS, PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION(XD),
1844 --  EGO_USER_ATTRS_DATA_PVT.Process_User_Attrs_Data(EGO Validations),
1845 --  PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION(XV),EGO_USER_ATTRS_DATA_PVT.Process_User_Attrs_Data(Populates the data),
1846 --  PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION(XPD).
1847 --Parameters:
1848 --IN:
1849 -- 1.	p_pk1_value, p_pk2_value, p_pk3_value, p_pk4_value, p_pk5_value
1850 --      The Primary Key values for the UDA Attributes
1851 -- 2.	p_template_id
1852 --      This variable would contain the template id for which the actions are to be executed
1853 --IN/OUT:
1854 -- 1.	x_external_attr_value_pairs
1855 --      This variable would contain an array of attribute value pairs (EGO_COL_NAME_VALUE_PAIR_TABLE)
1856 -- 2.   x_po_uda_usage_object_array
1857 --      This variable of type PO_UDA_USAGE_OBJECT_ARRAY contains data of the usages.
1858 -- 3.   p_address_lookup_type
1859 --      This variable would contain the address lookup type to get the address type
1860 --OUT:
1861 -- 1.	x_return_status   -  Generic Out parameter having return status
1862 -- 2.   x_errorcode       -  Generic Out parameter having error code
1863 -- 3.	x_msg_count       -  Generic Out parameter having return msg Count
1864 -- 4.	x_msg_data        -  Generic Out parameter having return msg
1865 --
1866 --End of Comments
1867 --------------------------------------------------------------------------------------------------------------------
1868     PROCEDURE DEFAULT_AGS_FROM_USAGE_OBJECT
1869     (
1870         p_pk1_value                    IN  NUMBER
1871        ,p_pk2_value                    IN  NUMBER  DEFAULT NULL
1872        ,p_pk3_value                    IN  NUMBER  DEFAULT NULL
1873        ,p_pk4_value                    IN  NUMBER  DEFAULT NULL
1874        ,p_pk5_value                    IN  NUMBER  DEFAULT NULL
1875        ,p_template_id                  IN  NUMBER
1876        ,p_address_lookup_type          IN  VARCHAR2 DEFAULT NULL
1877        ,x_external_attr_value_pairs    IN OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_TABLE
1878        ,x_po_uda_usage_object_array    IN OUT NOCOPY PO_UDA_USAGE_OBJECT_ARRAY
1879        ,x_return_status                OUT NOCOPY VARCHAR2
1880        ,x_errorcode                    OUT NOCOPY NUMBER
1881        ,x_msg_count                    OUT NOCOPY NUMBER
1882        ,x_msg_data                     OUT NOCOPY VARCHAR2
1883     )IS
1884 
1885         d_progress  NUMBER := 0;
1886 
1887         l_attr_name_value_pairs        EGO_USER_ATTR_DATA_TABLE;
1888         l_attributes_row_table         EGO_USER_ATTR_ROW_TABLE;
1889 
1890         l_pk_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY;
1891 
1892         l_pk1_column_name   VARCHAR2(200);
1893         l_pk2_column_name   VARCHAR2(200);
1894         l_pk3_column_name   VARCHAR2(200);
1895         l_pk4_column_name   VARCHAR2(200);
1896         l_pk5_column_name   VARCHAR2(200);
1897 
1898         l_base_object_name  VARCHAR2(200);
1899 
1900         l_class_code_name_value_pairs  EGO_COL_NAME_VALUE_PAIR_ARRAY;
1901 
1902         l_failed_row_id_list           VARCHAR2(2000);
1903         l_entity_code                  VARCHAR2(200);
1904         ext_name_val_obj               EGO_COL_NAME_VALUE_PAIR_OBJ;
1905 
1906         l_err_txt       VARCHAR2(2000);
1907 
1908     BEGIN
1909         d_progress := 10;
1910         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.DEFAULT_AGS_FROM_USAGE_OBJECT with parameters' , d_progress);
1911         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk1_value : ' || p_pk1_value, d_progress);
1912         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk2_value : ' || p_pk2_value, d_progress);
1913         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk3_value : ' || p_pk3_value, d_progress);
1914         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk4_value : ' || p_pk4_value, d_progress);
1915         PO_UDA_DEFAULTING_PKG.DEBUG('p_pk_value : ' || p_pk5_value, d_progress);
1916         PO_UDA_DEFAULTING_PKG.DEBUG('p_template_id : ' || p_template_id, d_progress);
1917         PO_UDA_DEFAULTING_PKG.DEBUG('p_address_lookup_type : ' || p_address_lookup_type, d_progress);
1918         PO_UDA_DEFAULTING_PKG.DEBUG('x_external_attr_value_pairs is as follows :', d_progress);
1919         PO_UDA_DEFAULTING_PKG.DEBUG(x_external_attr_value_pairs, d_progress);
1920         PO_UDA_DEFAULTING_PKG.DEBUG('x_po_uda_usage_object_array is as follows :', d_progress);
1921         PO_UDA_DEFAULTING_PKG.DEBUG(x_po_uda_usage_object_array, d_progress);
1922 
1923         x_return_status := FND_API.G_RET_STS_SUCCESS;
1924         BEGIN
1925             d_progress := 20;
1926             SELECT ENTITY_CODE
1927             INTO   l_entity_code
1928             FROM   PO_UDA_AG_TEMPLATES
1929             WHERE  TEMPLATE_ID = p_template_id;
1930             d_progress := 30;
1931             PO_UDA_DEFAULTING_PKG.DEBUG('l_entity_code :' || l_entity_code, d_progress);
1932         EXCEPTION
1933         WHEN OTHERS THEN
1934             d_progress := 40;
1935             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the ENTITY CODE', d_progress);
1936             RAISE;
1937         END;
1938         d_progress := 50;
1939         PO_UDA_DEFAULTING_PKG.DEBUG('Before PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT' , d_progress);
1940         PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT(
1941              PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name
1942             ,p_pk1_value
1943             ,p_pk2_value
1944             ,p_pk3_value
1945             ,p_pk4_value
1946             ,p_pk5_value
1947             ,l_pk_column_name_value_pairs
1948         );
1949         d_progress := 60;
1950         PO_UDA_DEFAULTING_PKG.DEBUG('After PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT' , d_progress);
1951         PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows :', d_progress);
1952         PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
1953 
1954         d_progress := 70;
1955         l_attributes_row_table := EGO_USER_ATTR_ROW_TABLE();
1956         l_attr_name_value_pairs := EGO_USER_ATTR_DATA_TABLE();
1957         PO_UDA_DEFAULTING_PKG.DEBUG('Initialized objects l_attributes_row_table, l_attr_name_value_pairs', d_progress);
1958         d_progress := 80;
1959         l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
1960                                              (
1961                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
1962                                                 (
1963                                                    'UDA_TEMPLATE_ID'
1964                                                   ,p_template_id || ''
1965                                                 )
1966                                              );
1967         d_progress := 90;
1968         PO_UDA_DEFAULTING_PKG.DEBUG('l_class_code_name_value_pairs is constructed with template id :' || p_template_id , d_progress);
1969 
1970         l_base_object_name := PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name;
1971         PO_UDA_DEFAULTING_PKG.DEBUG('l_base_object_name is :  ' || l_base_object_name, d_progress);
1972         d_progress := 100;
1973 
1974         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', FND_API.G_RET_STS_SUCCESS, x_external_attr_value_pairs);
1975         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_errorcode', '0', x_external_attr_value_pairs);
1976         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_count', '0', x_external_attr_value_pairs);
1977         PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_data', 'SUCCESS', x_external_attr_value_pairs);
1978         d_progress := 110;
1979 
1980         IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
1981             d_progress := 120;
1982             PO_UDA_DEFAULTING_PKG.DEBUG('Before POPULATE_EMPTY_AGS ' || x_return_status, d_progress);
1983             PO_UDA_IMPORT_PKG.POPULATE_EMPTY_AGS
1984             (
1985                 p_template_id                  => l_class_code_name_value_pairs(l_class_code_name_value_pairs.FIRST).VALUE
1986                ,p_pk_column_name_value_pairs   => l_pk_column_name_value_pairs
1987                ,p_external_attr_value_pairs    => x_external_attr_value_pairs
1988                ,p_address_lookup_type          => p_address_lookup_type
1989                ,x_po_uda_usage_object_array    => x_po_uda_usage_object_array
1990                ,x_attr_name_value_pairs        => l_attr_name_value_pairs
1991                ,x_attributes_row_table         => l_attributes_row_table
1992                ,x_return_status                => x_return_status
1993                ,x_errorcode                    => x_errorcode
1994                ,x_msg_count                    => x_msg_count
1995                ,x_msg_data                     => x_msg_data
1996             );
1997             d_progress := 130;
1998             PO_UDA_DEFAULTING_PKG.DEBUG('After POPULATE_EMPTY_AGS ' || x_return_status, d_progress);
1999         END IF;
2000         d_progress := 140;
2001         IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
2002             d_progress := 150;
2003             PO_UDA_DEFAULTING_PKG.DEBUG('Before EXECUTE_IMPORT_UDA_FUNCTION (XD) ' || x_return_status, d_progress);
2004             PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION
2005             (
2006                 p_template_id                  => l_class_code_name_value_pairs(l_class_code_name_value_pairs.FIRST).VALUE
2007                ,p_event                        => 'XD'
2008                ,x_external_attr_value_pairs    => x_external_attr_value_pairs
2009                ,x_pk_column_name_value_pairs   => l_pk_column_name_value_pairs
2010                ,x_attr_name_value_pairs        => l_attr_name_value_pairs
2011                ,x_attributes_row_table         => l_attributes_row_table
2012                ,x_return_status                => x_return_status
2013                ,x_errorcode                    => x_errorcode
2014                ,x_msg_count                    => x_msg_count
2015                ,x_msg_data                     => x_msg_data
2016             );
2017             d_progress := 160;
2018             PO_UDA_DEFAULTING_PKG.DEBUG('After EXECUTE_IMPORT_UDA_FUNCTION (XD) ' || x_return_status, d_progress);
2019         END IF;
2020         d_progress := 170;
2021         IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
2022             d_progress := 180;
2023             PO_UDA_DEFAULTING_PKG.DEBUG('Before VALIDATE_ROW ' || x_return_status, d_progress);
2024             PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table.COUNT ' || l_attributes_row_table.COUNT, d_progress);
2025             IF l_attributes_row_table.COUNT > 0 THEN
2026                 d_progress := 190;
2027                 PO_UDA_DEFAULTING_PKG.DEBUG('Before EGO_USER_ATTRS_DATA_PVT.Process_User_Attrs_Data with parameters ' || x_return_status, d_progress);
2028                 PO_UDA_DEFAULTING_PKG.DEBUG('l_base_object_name : ' || l_base_object_name, d_progress);
2029                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table is as follows : ', d_progress);
2030                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attributes_row_table, d_progress);
2031                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_data_table is as follows : ', d_progress);
2032                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_name_value_pairs, d_progress);
2033                 PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows : ', d_progress);
2034                 PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
2035                 PO_UDA_DEFAULTING_PKG.DEBUG('l_class_code_name_value_pairs is as follows : ', d_progress);
2036                 PO_UDA_DEFAULTING_PKG.DEBUG(l_class_code_name_value_pairs, d_progress);
2037                 d_progress := 200;
2038                 EGO_USER_ATTRS_DATA_PVT.Process_User_Attrs_Data
2039                 (
2040                       p_api_version                   => 1.0
2041                      ,p_object_name                   => l_base_object_name
2042                      ,p_attributes_row_table          => l_attributes_row_table
2043                      ,p_attributes_data_table         => l_attr_name_value_pairs
2044                      ,p_pk_column_name_value_pairs    => l_pk_column_name_value_pairs
2045                      ,p_class_code_name_value_pairs   => l_class_code_name_value_pairs
2046                      ,p_validate_only                 => FND_API.G_TRUE
2047                      ,x_failed_row_id_list            => l_failed_row_id_list
2048                      ,x_return_status                 => x_return_status
2049                      ,x_errorcode                     => x_errorcode
2050                      ,x_msg_count                     => x_msg_count
2051                      ,x_msg_data                      => x_msg_data
2052                 );
2053                 d_progress := 210;
2054                 PO_UDA_DEFAULTING_PKG.DEBUG('After EGO_USER_ATTRS_DATA_PVT.Process_User_Attrs_Data :' || x_return_status, d_progress);
2055                 PO_UDA_DEFAULTING_PKG.DEBUG('l_failed_row_id_list is : ' || l_failed_row_id_list, d_progress);
2056                 PO_UDA_DEFAULTING_PKG.DEBUG('x_errorcode :' || x_errorcode, d_progress);
2057                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_count :' || x_msg_count, d_progress);
2058                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_data :' || x_msg_data, d_progress);
2059             ELSE
2060                 d_progress := 220;
2061                 PO_UDA_DEFAULTING_PKG.DEBUG('Not calling VALIDATE_ROW as l_attributes_row_table.COUNT <=0', d_progress);
2062             END IF;
2063             d_progress := 230;
2064             PO_UDA_DEFAULTING_PKG.DEBUG('After VALIDATE_ROW ' || x_return_status, d_progress);
2065         END IF;
2066 
2067         IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
2068             d_progress := 240;
2069             PO_UDA_DEFAULTING_PKG.DEBUG('Before EXECUTE_IMPORT_UDA_FUNCTION (XV) ' || x_return_status, d_progress);
2070             PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table.COUNT ' || l_attributes_row_table.COUNT, d_progress);
2071             IF l_attributes_row_table.COUNT > 0 THEN
2072                 d_progress := 250;
2073                 PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION
2074                 (
2075                     p_template_id                  => l_class_code_name_value_pairs(l_class_code_name_value_pairs.FIRST).VALUE
2076                    ,p_event                        => 'XV'
2077                    ,x_external_attr_value_pairs    => x_external_attr_value_pairs
2078                    ,x_pk_column_name_value_pairs   => l_pk_column_name_value_pairs
2079                    ,x_attr_name_value_pairs        => l_attr_name_value_pairs
2080                    ,x_attributes_row_table         => l_attributes_row_table
2081                    ,x_return_status                => x_return_status
2082                    ,x_errorcode                    => x_errorcode
2083                    ,x_msg_count                    => x_msg_count
2084                    ,x_msg_data                     => x_msg_data
2085                 );
2086                 d_progress := 260;
2087             ELSE
2088                 d_progress := 270;
2089                 PO_UDA_DEFAULTING_PKG.DEBUG('Not calling PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION as l_attributes_row_table.COUNT <=0', d_progress);
2090             END IF;
2091             PO_UDA_DEFAULTING_PKG.DEBUG('After EXECUTE_IMPORT_UDA_FUNCTION (XV) ' || x_return_status, d_progress);
2092             d_progress := 280;
2093         END IF;
2094         d_progress := 290;
2095 
2096         PO_UDA_DEFAULTING_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', x_external_attr_value_pairs, ext_name_val_obj);
2097         IF x_return_status = FND_API.G_RET_STS_SUCCESS AND ext_name_val_obj.VALUE = FND_API.G_RET_STS_SUCCESS THEN
2098             d_progress := 300;
2099             PO_UDA_DEFAULTING_PKG.DEBUG('Before Process_User_Attrs_Data ' || x_return_status, d_progress);
2100             PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table.COUNT ' || l_attributes_row_table.COUNT, d_progress);
2101             IF l_attributes_row_table.COUNT > 0 THEN
2102                 d_progress := 310;
2103                 PO_UDA_DEFAULTING_PKG.DEBUG('Before EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data with parameters ' || x_return_status, d_progress);
2104                 PO_UDA_DEFAULTING_PKG.DEBUG('l_base_object_name : ' || l_base_object_name, d_progress);
2105                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table is as follows : ', d_progress);
2106                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attributes_row_table, d_progress);
2107                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_data_table is as follows : ', d_progress);
2108                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_name_value_pairs, d_progress);
2109                 PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows : ', d_progress);
2110                 PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
2111                 PO_UDA_DEFAULTING_PKG.DEBUG('l_class_code_name_value_pairs is as follows : ', d_progress);
2112                 PO_UDA_DEFAULTING_PKG.DEBUG(l_class_code_name_value_pairs, d_progress);
2113                 d_progress := 320;
2114                 EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data
2115                 (
2116                     p_api_version                   => 1.0
2117                    ,p_object_name                   => l_base_object_name
2118                    ,p_attributes_row_table          => l_attributes_row_table
2119                    ,p_attributes_data_table         => l_attr_name_value_pairs
2120                    ,p_pk_column_name_value_pairs    => l_pk_column_name_value_pairs
2121                    ,p_class_code_name_value_pairs   => l_class_code_name_value_pairs
2122                    ,x_failed_row_id_list            => l_failed_row_id_list
2123                    ,x_return_status                 => x_return_status
2124                    ,x_errorcode                     => x_errorcode
2125                    ,x_msg_count                     => x_msg_count
2126                    ,x_msg_data                      => x_msg_data
2127                 );
2128                 d_progress := 330;
2129                 PO_UDA_DEFAULTING_PKG.DEBUG('After EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data :' || x_return_status, d_progress);
2130                 PO_UDA_DEFAULTING_PKG.DEBUG('l_failed_row_id_list is : ' || l_failed_row_id_list, d_progress);
2131                 PO_UDA_DEFAULTING_PKG.DEBUG('x_errorcode :' || x_errorcode, d_progress);
2132                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_count :' || x_msg_count, d_progress);
2133                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_data :' || x_msg_data, d_progress);
2134             ELSE
2135                 d_progress := 340;
2136                 PO_UDA_DEFAULTING_PKG.DEBUG('Not calling EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data as l_attributes_row_table.COUNT <=0', d_progress);
2137             END IF;
2138        END IF;
2139         d_progress := 350;
2140        IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
2141             d_progress := 360;
2142             PO_UDA_DEFAULTING_PKG.DEBUG('Before EXECUTE_IMPORT_UDA_FUNCTION (XPD) ' || x_return_status, d_progress);
2143             PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table.COUNT ' || l_attributes_row_table.COUNT, d_progress);
2144             IF l_attributes_row_table.COUNT > 0 THEN
2145                 d_progress := 370;
2146                 PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION
2147                 (
2148                     p_template_id                  => l_class_code_name_value_pairs(l_class_code_name_value_pairs.FIRST).VALUE
2149                    ,p_event                        => 'XPD'
2150                    ,x_external_attr_value_pairs    => x_external_attr_value_pairs
2151                    ,x_pk_column_name_value_pairs   => l_pk_column_name_value_pairs
2152                    ,x_attr_name_value_pairs        => l_attr_name_value_pairs
2153                    ,x_attributes_row_table         => l_attributes_row_table
2154                    ,x_return_status                => x_return_status
2155                    ,x_errorcode                    => x_errorcode
2156                    ,x_msg_count                    => x_msg_count
2157                    ,x_msg_data                     => x_msg_data
2158                 );
2159                 d_progress := 380;
2160             ELSE
2161                 d_progress := 390;
2162                 PO_UDA_DEFAULTING_PKG.DEBUG('Not calling PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION as l_attributes_row_table.COUNT <=0', d_progress);
2163             END IF;
2164             PO_UDA_DEFAULTING_PKG.DEBUG('After EXECUTE_IMPORT_UDA_FUNCTION (XPD) ' || x_return_status, d_progress);
2165        END IF;
2166        d_progress := 400;
2167     EXCEPTION
2168       WHEN OTHERS THEN
2169         l_err_txt := 'Exception in DEFAULT_AGS_FROM_USAGE_OBJECT with ERROR : ' || SQLERRM;
2170         PO_MESSAGE_S.add_exc_msg
2171         (
2172             p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
2173             p_procedure_name => 'DEFAULT_AGS_FROM_USAGE_OBJECT' || '.' || d_progress,
2174             p_error_text => l_err_txt
2175         );
2176         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, d_progress);
2177         x_return_status := 'U';
2178     END DEFAULT_AGS_FROM_USAGE_OBJECT;
2179 
2180 
2181     PROCEDURE UDA_EXECUTE_ACTIONS(
2182         p_pk1_value                    IN  NUMBER
2183        ,p_pk2_value                    IN  NUMBER  DEFAULT NULL
2184        ,p_pk3_value                    IN  NUMBER  DEFAULT NULL
2185        ,p_pk4_value                    IN  NUMBER  DEFAULT NULL
2186        ,p_pk5_value                    IN  NUMBER  DEFAULT NULL
2187        ,p_template_id                  IN  NUMBER
2188        ,p_event_type		               IN  VARCHAR2
2189        ,p_write_to		                 IN  VARCHAR2
2190        ,x_return_status                OUT NOCOPY VARCHAR2
2191        ,x_errorcode                    OUT NOCOPY NUMBER
2192        ,x_msg_count                    OUT NOCOPY NUMBER
2193        ,x_msg_data                     OUT NOCOPY VARCHAR2
2194     )
2195     IS
2196         d_progress  NUMBER := 0;
2197 
2198         CURSOR c_po_header_ext(p_header_id NUMBER) IS
2199         SELECT  DISTINCT ATTR_GROUP_ID
2200         FROM    PO_HEADERS_ALL_EXT_B
2201         WHERE   PO_HEADER_ID = p_header_id;
2202 
2203         CURSOR c_po_line_ext(p_line_id NUMBER) IS
2204         SELECT  DISTINCT ATTR_GROUP_ID
2205         FROM    PO_LINES_ALL_EXT_B
2206         WHERE   PO_LINE_ID = p_line_id;
2207 
2208         CURSOR c_po_location_ext(p_location_id NUMBER) IS
2209         SELECT  DISTINCT ATTR_GROUP_ID
2210         FROM    PO_LINE_LOCATIONS_ALL_EXT_B
2211         WHERE   LINE_LOCATION_ID = p_location_id;
2212 
2213         CURSOR c_po_attr_list(p_ag_type VARCHAR2, p_ag_name VARCHAR2) IS
2214         SELECT  END_USER_COLUMN_NAME
2215         FROM    FND_DESCR_FLEX_COLUMN_USAGES
2216         WHERE   DESCRIPTIVE_FLEXFIELD_NAME = p_ag_type
2217         AND     DESCRIPTIVE_FLEX_CONTEXT_CODE = p_ag_name;
2218 
2219         is_valid_entity_ag  BOOLEAN := FALSE;
2220 
2221         l_pk_column_name_value_pairs   EGO_COL_NAME_VALUE_PAIR_ARRAY;
2222         l_entity_code      VARCHAR2(200);
2223         l_ag_type          VARCHAR2(200);
2224         l_ag_name          VARCHAR2(200);
2225         l_attr_list        VARCHAR2(2000);
2226         l_data_level       VARCHAR2(200);
2227         l_pk1_column_name  VARCHAR2(200);
2228         l_pk2_column_name  VARCHAR2(200);
2229         l_pk3_column_name  VARCHAR2(200);
2230         l_pk4_column_name  VARCHAR2(200);
2231         l_pk5_column_name  VARCHAR2(200);
2232 
2233         l_attr_group_request_table   EGO_ATTR_GROUP_REQUEST_TABLE;
2234 
2235         l_attributes_row_table  EGO_USER_ATTR_ROW_TABLE;
2236         l_attr_name_value_pairs EGO_USER_ATTR_DATA_TABLE;
2237         l_class_code_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
2238 
2239         l_pk_col_name_value_pairs_ind NUMBER;
2240         l_attr_name_value_pairs_ind NUMBER;
2241         l_attributes_row_table_ind NUMBER;
2242         l_attr_group_request_table_ind NUMBER;
2243 
2244         l_pk_column_name_value EGO_COL_NAME_VALUE_PAIR_OBJ;
2245         l_attr_name_value EGO_USER_ATTR_DATA_OBJ;
2246         l_attributes_row ego_user_attr_row_obj;
2247         l_attr_group_request ego_attr_group_request_obj;
2248         l_external_attr_value_pairs  EGO_COL_NAME_VALUE_PAIR_TABLE;
2249         ext_name_val_obj               EGO_COL_NAME_VALUE_PAIR_OBJ;
2250 
2251         l_base_object_name  VARCHAR2(200);
2252         l_failed_row_id_list           VARCHAR2(2000);
2253 
2254     BEGIN
2255 
2256          PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.UDA_EXECUTE_ACTIONS with parameters' , d_progress);
2257          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk1_value :' || p_pk1_value, d_progress);
2258          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk2_value :' || p_pk2_value, d_progress);
2259          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk3_value :' || p_pk3_value, d_progress);
2260          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk4_value :' || p_pk4_value, d_progress);
2261          PO_UDA_DEFAULTING_PKG.DEBUG('p_pk5_value :' || p_pk5_value, d_progress);
2262          PO_UDA_DEFAULTING_PKG.DEBUG('p_template_id :' || p_template_id, d_progress);
2263          PO_UDA_DEFAULTING_PKG.DEBUG('p_event_type :' || p_event_type, d_progress);
2264 
2265          d_progress := 10;
2266 
2267          x_return_status := FND_API.G_RET_STS_SUCCESS;
2268          l_pk_column_name_value_pairs :=  EGO_COL_NAME_VALUE_PAIR_ARRAY();
2269          l_attr_group_request_table :=  EGO_ATTR_GROUP_REQUEST_TABLE();
2270 
2271 	       PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_pk_column_name_value_pairs, l_attr_group_request_table', d_progress);
2272 
2273          d_progress := 20;
2274 
2275          BEGIN
2276             SELECT ENTITY_CODE
2277             INTO   l_entity_code
2278             FROM   PO_UDA_AG_TEMPLATES
2279             WHERE  TEMPLATE_ID = p_template_id;
2280 
2281             PO_UDA_DEFAULTING_PKG.DEBUG('l_entity_code :' || l_entity_code, d_progress);
2282          EXCEPTION
2283          WHEN OTHERS THEN
2284             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the ENTITY CODE', d_progress);
2285             RAISE;
2286          END;
2287 
2288          d_progress := 30;
2289 
2290          IF l_entity_code = 'PO_HEADER_EXT_ATTRS' THEN
2291             FOR c_po_header_ext_rec IN c_po_header_ext(p_pk1_value) LOOP
2292 
2293                 d_progress := 40;
2294 
2295                 BEGIN
2296                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID :' || c_po_header_ext_rec.ATTR_GROUP_ID, d_progress);
2297 
2298                     SELECT  DESCRIPTIVE_FLEXFIELD_NAME, DESCRIPTIVE_FLEX_CONTEXT_CODE
2299                     INTO    l_ag_type, l_ag_name
2300                     FROM    EGO_FND_DSC_FLX_CTX_EXT
2301                     WHERE   ATTR_GROUP_ID = c_po_header_ext_rec.ATTR_GROUP_ID;
2302 
2303                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_type :' || l_ag_type, d_progress);
2304                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_name :' || l_ag_name, d_progress);
2305                 EXCEPTION
2306                 WHEN OTHERS THEN
2307                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the AG TYPE and AG NAME', d_progress);
2308                     RAISE;
2309                 END;
2310 
2311                 d_progress := 50;
2312 
2313                 l_attr_list := '';
2314                 PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_attr_list', d_progress);
2315 
2316                 FOR c_po_attr_list_rec IN c_po_attr_list(l_ag_type, l_ag_name) LOOP
2317                     IF l_attr_list IS NULL OR l_attr_list = '' THEN
2318                         l_attr_list := c_po_attr_list_rec.END_USER_COLUMN_NAME;
2319                     ELSE
2320                         l_attr_list := l_attr_list || ',' || c_po_attr_list_rec.END_USER_COLUMN_NAME;
2321                     END IF;
2322                     d_progress := 60;
2323                 END LOOP;
2324                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_list :' || l_attr_list, d_progress);
2325 
2326                 l_data_level := 'PO_HEADER';
2327 
2328                 d_progress := 70;
2329 
2330                 IF l_attr_list IS NOT NULL THEN
2331                     is_valid_entity_ag := TRUE;
2332                     l_attr_group_request_table.EXTEND(1);
2333                     l_attr_group_request_table(l_attr_group_request_table.COUNT) := ego_attr_group_request_obj
2334                                                                                        (
2335                                                                                             c_po_header_ext_rec.ATTR_GROUP_ID
2336                                                                                            ,201
2337                                                                                            ,l_ag_type
2338                                                                                            ,l_ag_name
2339                                                                                            ,l_data_level
2340                                                                                            ,NULL
2341                                                                                            ,NULL
2342                                                                                            ,NULL
2343                                                                                            ,NULL
2344                                                                                            ,NULL
2345                                                                                            ,l_attr_list
2346                                                                                        );
2347                     d_progress := 80;
2348                 END IF;
2349 
2350             END LOOP;
2351             PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows', d_progress);
2352             PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
2353          END IF;
2354 
2355          d_progress := 90;
2356 
2357 	       IF l_entity_code = 'PO_LINE_EXT_ATTRS' THEN
2358              FOR c_po_line_ext_rec IN c_po_line_ext(p_pk1_value) LOOP
2359 
2360                 d_progress := 40;
2361 
2362                 BEGIN
2363                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID :' || c_po_line_ext_rec.ATTR_GROUP_ID, d_progress);
2364 
2365                     SELECT  DESCRIPTIVE_FLEXFIELD_NAME, DESCRIPTIVE_FLEX_CONTEXT_CODE
2366                     INTO    l_ag_type, l_ag_name
2367                     FROM    EGO_FND_DSC_FLX_CTX_EXT
2368                     WHERE   ATTR_GROUP_ID = c_po_line_ext_rec.ATTR_GROUP_ID;
2369 
2370                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_type :' || l_ag_type, d_progress);
2371                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_name :' || l_ag_name, d_progress);
2372                 EXCEPTION
2373                 WHEN OTHERS THEN
2374                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the AG TYPE and AG NAME', d_progress);
2375                     RAISE;
2376                 END;
2377 
2378                 d_progress := 50;
2379 
2380                 l_attr_list := '';
2381                 PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_attr_list', d_progress);
2382 
2383                 FOR c_po_attr_list_rec IN c_po_attr_list(l_ag_type, l_ag_name) LOOP
2384                     IF l_attr_list IS NULL OR l_attr_list = '' THEN
2385                         l_attr_list := c_po_attr_list_rec.END_USER_COLUMN_NAME;
2386                     ELSE
2387                         l_attr_list := l_attr_list || ',' || c_po_attr_list_rec.END_USER_COLUMN_NAME;
2388                     END IF;
2389                     d_progress := 60;
2390                 END LOOP;
2391                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_list :' || l_attr_list, d_progress);
2392 
2393 
2394                 l_data_level := 'PO_LINE';
2395 
2396                 d_progress := 70;
2397 
2398                IF l_attr_list IS NOT NULL THEN
2399                     is_valid_entity_ag := TRUE;
2400                     l_attr_group_request_table.EXTEND(1);
2401                     l_attr_group_request_table(l_attr_group_request_table.COUNT) := ego_attr_group_request_obj
2402                                                                                        (
2403                                                                                             c_po_line_ext_rec.ATTR_GROUP_ID
2404                                                                                            ,201
2405                                                                                            ,l_ag_type
2406                                                                                            ,l_ag_name
2407                                                                                            ,l_data_level
2408                                                                                            ,NULL
2409                                                                                            ,NULL
2410                                                                                            ,NULL
2411                                                                                            ,NULL
2412                                                                                            ,NULL
2413                                                                                            ,l_attr_list
2414                                                                                        );
2415                     d_progress := 80;
2416                 END IF;
2417             END LOOP;
2418             PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows', d_progress);
2419             PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
2420          END IF;
2421 
2422          IF l_entity_code = 'PO_SHIPMENTS_EXT_ATTRS' THEN
2423             FOR c_po_location_ext_rec IN c_po_location_ext(p_pk1_value) LOOP
2424 
2425                 d_progress := 40;
2426 
2427                 BEGIN
2428                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID :' || c_po_location_ext_rec.ATTR_GROUP_ID, d_progress);
2429 
2430                     SELECT  DESCRIPTIVE_FLEXFIELD_NAME, DESCRIPTIVE_FLEX_CONTEXT_CODE
2431                     INTO    l_ag_type, l_ag_name
2432                     FROM    EGO_FND_DSC_FLX_CTX_EXT
2433                     WHERE   ATTR_GROUP_ID = c_po_location_ext_rec.ATTR_GROUP_ID;
2434 
2435                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_type :' || l_ag_type, d_progress);
2436                     PO_UDA_DEFAULTING_PKG.DEBUG('l_ag_name :' || l_ag_name, d_progress);
2437                 EXCEPTION
2438                 WHEN OTHERS THEN
2439                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the AG TYPE and AG NAME', d_progress);
2440                     RAISE;
2441                 END;
2442 
2443                 d_progress := 50;
2444 
2445                 l_attr_list := '';
2446                 PO_UDA_DEFAULTING_PKG.DEBUG('Initialized l_attr_list', d_progress);
2447 
2448                 FOR c_po_attr_list_rec IN c_po_attr_list(l_ag_type, l_ag_name) LOOP
2449                     IF l_attr_list IS NULL OR l_attr_list = '' THEN
2450                         l_attr_list := c_po_attr_list_rec.END_USER_COLUMN_NAME;
2451                     ELSE
2452                         l_attr_list := l_attr_list || ',' || c_po_attr_list_rec.END_USER_COLUMN_NAME;
2453                     END IF;
2454                     d_progress := 60;
2455                 END LOOP;
2456                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_list :' || l_attr_list, d_progress);
2457 
2458                 l_data_level := 'PO_SHIPMENT';
2459 
2460                 d_progress := 70;
2461 
2462                 IF l_attr_list IS NOT NULL THEN
2463                     is_valid_entity_ag := TRUE;
2464                     l_attr_group_request_table.EXTEND(1);
2465                     l_attr_group_request_table(l_attr_group_request_table.COUNT) := ego_attr_group_request_obj
2466                                                                                        (
2467                                                                                             c_po_location_ext_rec.ATTR_GROUP_ID
2468                                                                                            ,201
2469                                                                                            ,l_ag_type
2470                                                                                            ,l_ag_name
2471                                                                                            ,l_data_level
2472                                                                                            ,NULL
2473                                                                                            ,NULL
2474                                                                                            ,NULL
2475                                                                                            ,NULL
2476                                                                                            ,NULL
2477                                                                                            ,l_attr_list
2478                                                                                        );
2479                     d_progress := 80;
2480                 END IF;
2481             END LOOP;
2482             PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows', d_progress);
2483             PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
2484         END IF;
2485 
2486         d_progress := 90;
2487         IF is_valid_entity_ag THEN
2488             PO_UDA_DEFAULTING_PKG.DEBUG('is_valid_entity_ag : TRUE', d_progress);
2489 
2490             PO_UDA_DEFAULTING_PKG.DEBUG('Before PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT' , d_progress);
2491             PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT(
2492                  PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name
2493                 ,p_pk1_value
2494                 ,p_pk2_value
2495                 ,p_pk3_value
2496                 ,p_pk4_value
2497                 ,p_pk5_value
2498                 ,l_pk_column_name_value_pairs
2499             );
2500             PO_UDA_DEFAULTING_PKG.DEBUG('Before PO_UDA_DEFAULTING_PKG.CONSTRUCT_PK_OBJECT' , d_progress);
2501             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows :', d_progress);
2502             PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
2503 
2504             l_attributes_row_table := EGO_USER_ATTR_ROW_TABLE();
2505             l_attr_name_value_pairs := EGO_USER_ATTR_DATA_TABLE();
2506             PO_UDA_DEFAULTING_PKG.DEBUG('Initialized objects l_attributes_row_table, l_attr_name_value_pairs' , d_progress);
2507 
2508             l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
2509                                                  (
2510                                                     EGO_COL_NAME_VALUE_PAIR_OBJ
2511                                                     (
2512                                                        'UDA_TEMPLATE_ID'
2513                                                       ,p_template_id || ''
2514                                                     )
2515                                                  );
2516 
2517             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', FND_API.G_RET_STS_SUCCESS, l_external_attr_value_pairs);
2518             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_errorcode', '0', l_external_attr_value_pairs);
2519             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_count', '0', l_external_attr_value_pairs);
2520             PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR('x_msg_data', 'SUCCESS', l_external_attr_value_pairs);
2521 
2522             d_progress := 110;
2523             PO_UDA_DEFAULTING_PKG.DEBUG('l_class_code_name_value_pairs is as follows  ' , d_progress);
2524             PO_UDA_DEFAULTING_PKG.DEBUG(l_class_code_name_value_pairs, d_progress);
2525 
2526             PO_UDA_DEFAULTING_PKG.DEBUG('x_return_status : ' || x_return_status , d_progress);
2527 
2528             l_base_object_name := PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name;
2529             PO_UDA_DEFAULTING_PKG.DEBUG('l_base_object_name is :  ' || l_base_object_name, d_progress);
2530 
2531             IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
2532 
2533                 PO_UDA_DEFAULTING_PKG.DEBUG('Before ego_user_attrs_data_pub.Get_User_Attrs_Data', d_progress);
2534                 PO_UDA_DEFAULTING_PKG.DEBUG('p_object_name : ' || PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name, d_progress);
2535                 PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows ', d_progress);
2536                 PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
2537                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_group_request_table is as follows ', d_progress);
2538                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_group_request_table, d_progress);
2539                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table is as follows ', d_progress);
2540                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attributes_row_table, d_progress);
2541                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_name_value_pairs is as follows ', d_progress);
2542                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_name_value_pairs, d_progress);
2543 
2544                 ego_user_attrs_data_pub.Get_User_Attrs_Data
2545                 (
2546                     p_api_version                   => 1.0
2547                    ,p_object_name                   => PO_UDA_DATA_UTIL.g_object_dff_tl(l_entity_code).l_object_name
2548                    ,p_pk_column_name_value_pairs    => l_pk_column_name_value_pairs
2549                    ,p_attr_group_request_table      => l_attr_group_request_table
2550                    ,x_attributes_row_table          => l_attributes_row_table
2551                    ,x_attributes_data_table         => l_attr_name_value_pairs
2552                    ,x_return_status                 => x_return_status
2553                    ,x_errorcode                     => x_errorcode
2554                    ,x_msg_count                     => x_msg_count
2555                    ,x_msg_data                      => x_msg_data
2556                 );
2557                 PO_UDA_DEFAULTING_PKG.DEBUG('After ego_user_attrs_data_pub.Get_User_Attrs_Data', d_progress);
2558                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table is as follows ', d_progress);
2559                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attributes_row_table, d_progress);
2560                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attr_name_value_pairs is as follows ', d_progress);
2561                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_name_value_pairs, d_progress);
2562                 PO_UDA_DEFAULTING_PKG.DEBUG('x_return_status :' || x_return_status, d_progress);
2563                 PO_UDA_DEFAULTING_PKG.DEBUG('x_errorcode :' || x_errorcode, d_progress);
2564                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_count :' || x_msg_count, d_progress);
2565                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_data :' || x_msg_data, d_progress);
2566 
2567              END IF;
2568 
2569              d_progress := 120;
2570 
2571              IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN
2572                 PO_UDA_DEFAULTING_PKG.DEBUG('Before EXECUTE_IMPORT_UDA_FUNCTION '||p_event_type||' ' || x_return_status, d_progress);
2573                 PO_UDA_IMPORT_PKG.EXECUTE_IMPORT_UDA_FUNCTION
2574                 (
2575                     p_template_id                  => l_class_code_name_value_pairs(l_class_code_name_value_pairs.FIRST).VALUE
2576                    ,p_event                        => p_event_type
2577                    ,x_external_attr_value_pairs    => l_external_attr_value_pairs
2578                    ,x_pk_column_name_value_pairs   => l_pk_column_name_value_pairs
2579                    ,x_attr_name_value_pairs        => l_attr_name_value_pairs
2580                    ,x_attributes_row_table         => l_attributes_row_table
2581                    ,x_return_status                => x_return_status
2582                    ,x_errorcode                    => x_errorcode
2583                    ,x_msg_count                    => x_msg_count
2584                    ,x_msg_data                     => x_msg_data
2585                 );
2586                 PO_UDA_DEFAULTING_PKG.DEBUG('After EXECUTE_IMPORT_UDA_FUNCTION '||p_event_type||' ' || x_return_status, d_progress);
2587                 d_progress := 140;
2588              END IF;
2589 
2590           PO_UDA_DEFAULTING_PKG.GET_EXT_ATTR_NAME_VALUE_PAIR('x_return_status', l_external_attr_value_pairs, ext_name_val_obj);
2591           IF x_return_status = FND_API.G_RET_STS_SUCCESS AND ext_name_val_obj.VALUE = FND_API.G_RET_STS_SUCCESS AND p_write_to = 'TRUE' THEN
2592             d_progress := 300;
2593             PO_UDA_DEFAULTING_PKG.DEBUG('Before Process_User_Attrs_Data ' || x_return_status, d_progress);
2594             PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table.COUNT ' || l_attributes_row_table.COUNT, d_progress);
2595             IF l_attributes_row_table.COUNT > 0 THEN
2596                 d_progress := 310;
2597                 PO_UDA_DEFAULTING_PKG.DEBUG('Before EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data with parameters ' || x_return_status, d_progress);
2598                 PO_UDA_DEFAULTING_PKG.DEBUG('l_base_object_name : ' || l_base_object_name, d_progress);
2599                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_row_table is as follows : ', d_progress);
2600                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attributes_row_table, d_progress);
2601                 PO_UDA_DEFAULTING_PKG.DEBUG('l_attributes_data_table is as follows : ', d_progress);
2602                 PO_UDA_DEFAULTING_PKG.DEBUG(l_attr_name_value_pairs, d_progress);
2603                 PO_UDA_DEFAULTING_PKG.DEBUG('l_pk_column_name_value_pairs is as follows : ', d_progress);
2604                 PO_UDA_DEFAULTING_PKG.DEBUG(l_pk_column_name_value_pairs, d_progress);
2605                 PO_UDA_DEFAULTING_PKG.DEBUG('l_class_code_name_value_pairs is as follows : ', d_progress);
2606                 PO_UDA_DEFAULTING_PKG.DEBUG(l_class_code_name_value_pairs, d_progress);
2607                 d_progress := 320;
2608                 EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data
2609                 (
2610                     p_api_version                   => 1.0
2611                    ,p_object_name                   => l_base_object_name
2612                    ,p_attributes_row_table          => l_attributes_row_table
2613                    ,p_attributes_data_table         => l_attr_name_value_pairs
2614                    ,p_pk_column_name_value_pairs    => l_pk_column_name_value_pairs
2615                    ,p_class_code_name_value_pairs   => l_class_code_name_value_pairs
2616                    ,x_failed_row_id_list            => l_failed_row_id_list
2617                    ,x_return_status                 => x_return_status
2618                    ,x_errorcode                     => x_errorcode
2619                    ,x_msg_count                     => x_msg_count
2620                    ,x_msg_data                      => x_msg_data
2621                 );
2622                 d_progress := 330;
2623                 PO_UDA_DEFAULTING_PKG.DEBUG('After EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data :' || x_return_status, d_progress);
2624                 PO_UDA_DEFAULTING_PKG.DEBUG('l_failed_row_id_list is : ' || l_failed_row_id_list, d_progress);
2625                 PO_UDA_DEFAULTING_PKG.DEBUG('x_errorcode :' || x_errorcode, d_progress);
2626                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_count :' || x_msg_count, d_progress);
2627                 PO_UDA_DEFAULTING_PKG.DEBUG('x_msg_data :' || x_msg_data, d_progress);
2628             ELSE
2629                 d_progress := 340;
2630                 PO_UDA_DEFAULTING_PKG.DEBUG('Not calling EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data as l_attributes_row_table.COUNT <=0', d_progress);
2631             END IF;
2632         END IF;
2633        END IF;
2634 
2635   EXCEPTION
2636       WHEN OTHERS THEN
2637         PO_MESSAGE_S.add_exc_msg
2638         (
2639             p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
2640             p_procedure_name => 'UDA_EXECUTE_ACTIONS' || '.' || d_progress
2641         );
2642         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, d_progress);
2643         PO_UDA_DEFAULTING_PKG.DEBUG('Exception in UDA_EXECUTE_ACTIONS after progress number : ' , d_progress);
2644             x_return_status := 'U';
2645     END UDA_EXECUTE_ACTIONS;
2646 
2647     PROCEDURE PO_UDA_EXECUTE_ACTIONS
2648     (
2649         p_po_header_id                 IN NUMBER
2650        ,p_event_type		               IN VARCHAR2
2651        ,p_write_to		                 IN VARCHAR2
2652        ,x_return_status                OUT NOCOPY VARCHAR2
2653        ,x_msg_count                    OUT NOCOPY NUMBER
2654     )
2655     IS
2656         d_progress              NUMBER := 0;
2657 
2658         l_template_id           NUMBER;
2659         l_line_template_id      NUMBER;
2660         l_shipment_template_id  NUMBER;
2661 
2662         l_address_lookup_type   VARCHAR2(200);
2663 
2664         l_msg_count             NUMBER;
2665         l_errorcode             NUMBER;
2666         l_msg_data              VARCHAR2(100);
2667 
2668         CURSOR c_get_lines(p_po_header_id  NUMBER) IS
2669           SELECT  PO_LINE_ID
2670           FROM    po_lines_all pll
2671           WHERE   PO_HEADER_ID = p_po_header_id
2672            AND  EXISTS ( SELECT 1 FROM  EGO_ACTION_DISPLAYS_B actdisp , ego_actions_b act , po_uda_ag_template_usages pousage
2673                          WHERE   act.action_id = actdisp.action_id
2674                             AND  pousage.template_id = pll.uda_template_id
2675                             AND  pousage.attribute_group_id =  act.attr_group_id
2676                             AND  To_Char(pousage.template_id) = act.classification_code
2677                             AND  actdisp.execution_method = p_event_type);
2678 
2679         CURSOR c_get_shipments
2680           (
2681               p_po_header_id  NUMBER
2682              ,p_line_id      NUMBER
2683           )IS
2684           SELECT  LINE_LOCATION_ID
2685           FROM    PO_LINE_LOCATIONS_all pll
2686           WHERE   PO_HEADER_ID = p_po_header_id
2687             AND   PO_LINE_ID = p_line_id
2688             AND   EXISTS ( SELECT 1 FROM  EGO_ACTION_DISPLAYS_B actdisp , ego_actions_b act , po_uda_ag_template_usages pousage
2689                            WHERE   act.action_id = actdisp.action_id
2690                               AND  pousage.template_id = pll.uda_template_id
2691                               AND  pousage.attribute_group_id =  act.attr_group_id
2692                               AND  To_Char(pousage.template_id) = act.classification_code
2693                               AND  actdisp.execution_method = p_event_type);
2694 
2695     BEGIN
2696 
2697         PO_UDA_DEFAULTING_PKG.DEBUG('Starting PO_UDA_DEFAULTING_PKG.PO_UDA_EXECUTE_ACTIONS with parameters' , d_progress);
2698         PO_UDA_DEFAULTING_PKG.DEBUG(' p_po_header_id :' || p_po_header_id, d_progress);
2699 
2700         x_return_status := FND_API.G_RET_STS_SUCCESS;
2701 	      BEGIN
2702             SELECT  UDA_TEMPLATE_ID
2703             INTO    l_template_id
2704             FROM    po_headers_all
2705             WHERE   PO_HEADER_ID = p_po_header_id;
2706 
2707             PO_UDA_DEFAULTING_PKG.DEBUG('l_template_id :' || l_template_id , d_progress);
2708         EXCEPTION
2709         WHEN OTHERS THEN
2710             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Template ID', d_progress);
2711             RAISE;
2712         END;
2713         d_progress := 30;
2714 
2715         PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_EXECUTE_ACTIONS for header : ' || x_return_status, d_progress);
2716         PO_UDA_DEFAULTING_PKG.UDA_EXECUTE_ACTIONS
2717         (
2718             p_pk1_value                    => p_po_header_id
2719            ,p_pk2_value                    => -1
2720            ,p_template_id                  => l_template_id
2721            ,p_event_type		               => p_event_type
2722            ,p_write_to		                 => p_write_to
2723            ,x_return_status                => x_return_status
2724            ,x_errorcode                    => l_errorcode
2725            ,x_msg_count                    => l_msg_count
2726            ,x_msg_data                     => l_msg_data
2727         );
2728         PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_EXECUTE_ACTIONS for header : ' || x_return_status, d_progress);
2729 
2730         d_progress := 50;
2731 
2732         PO_UDA_DEFAULTING_PKG.DEBUG('Looping for executing actions for lines', d_progress);
2733 	      IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN  -- LOOP FOR ALL THE LINES DEFUALTING
2734             FOR  c_get_lines_rec IN c_get_lines(p_po_header_id) LOOP
2735 
2736                 BEGIN
2737                     SELECT  UDA_TEMPLATE_ID
2738                     INTO    l_line_template_id
2739                     FROM    po_lines_all
2740                     WHERE   PO_LINE_ID = c_get_lines_rec.PO_LINE_ID;
2741 
2742                     PO_UDA_DEFAULTING_PKG.DEBUG('Line ID is'|| c_get_lines_rec.PO_LINE_ID, d_progress);
2743                     PO_UDA_DEFAULTING_PKG.DEBUG('l_line_template_id :' || l_line_template_id , d_progress);
2744                 EXCEPTION
2745                 WHEN OTHERS THEN
2746                     PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Line Template ID', d_progress);
2747                     RAISE;
2748                 END;
2749                 d_progress := 60;
2750 
2751                 PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_EXECUTE_ACTIONS for line : ' || x_return_status, d_progress);
2752                 PO_UDA_DEFAULTING_PKG.UDA_EXECUTE_ACTIONS
2753                  (
2754                     p_pk1_value                    => c_get_lines_rec.PO_LINE_ID
2755                    ,p_pk2_value                    => -1
2756                    ,p_template_id                  => l_line_template_id
2757                    ,p_event_type		               => p_event_type
2758                    ,p_write_to		                 => p_write_to
2759                    ,x_return_status                => x_return_status
2760                    ,x_errorcode                    => l_errorcode
2761                    ,x_msg_count                    => l_msg_count
2762                    ,x_msg_data                     => l_msg_data
2763                  );
2764                 PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_EXECUTE_ACTIONS for line : ' || x_return_status, d_progress);
2765                 d_progress := 70;
2766 
2767                 PO_UDA_DEFAULTING_PKG.DEBUG('Looping for executing actions for Shipments', d_progress);
2768                 IF x_return_status = FND_API.G_RET_STS_SUCCESS  THEN  -- LOOP FOR ALL THE SHIPMENTS DEFUALTING
2769 
2770 		                FOR  c_get_shipments_rec IN c_get_shipments(p_po_header_id, c_get_lines_rec.PO_LINE_ID) LOOP
2771 
2772                         BEGIN
2773                             SELECT  UDA_TEMPLATE_ID
2774                             INTO    l_shipment_template_id
2775                             FROM    PO_LINE_LOCATIONS_all
2776                             WHERE   LINE_LOCATION_ID = c_get_shipments_rec.LINE_LOCATION_ID;
2777 
2778                             PO_UDA_DEFAULTING_PKG.DEBUG('Shipment ID is'|| c_get_shipments_rec.LINE_LOCATION_ID, d_progress);
2779                             PO_UDA_DEFAULTING_PKG.DEBUG('Template Id for Shipment '|| l_shipment_template_id, d_progress);
2780                         EXCEPTION
2781                         WHEN OTHERS THEN
2782                             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the Shipment Template ID', d_progress);
2783                             RAISE;
2784                         END;
2785                         d_progress := 80;
2786                         PO_UDA_DEFAULTING_PKG.DEBUG('Before UDA_EXECUTE_ACTIONS for shipment : ' || x_return_status, d_progress);
2787                         PO_UDA_DEFAULTING_PKG.UDA_EXECUTE_ACTIONS
2788                          (
2789                             p_pk1_value                    => c_get_shipments_rec.LINE_LOCATION_ID
2790                            ,p_pk2_value                    => -1
2791                            ,p_template_id                  => l_shipment_template_id
2792                            ,p_event_type		               => p_event_type
2793                            ,p_write_to		                 => p_write_to
2794                            ,x_return_status                => x_return_status
2795                            ,x_errorcode                    => l_errorcode
2796                            ,x_msg_count                    => l_msg_count
2797                            ,x_msg_data                     => l_msg_data
2798                          );
2799                          PO_UDA_DEFAULTING_PKG.DEBUG('After UDA_EXECUTE_ACTIONS for shipment : ' || x_return_status, d_progress);
2800                         d_progress := 90;
2801 
2802                     END LOOP;
2803                 END IF;
2804             END LOOP;
2805         END IF;
2806         d_progress := 100;
2807         PO_UDA_DEFAULTING_PKG.DEBUG('After PO_UDA_EXECUTE_ACTIONS fully done : ' || x_return_status, d_progress);
2808     EXCEPTION
2809       WHEN OTHERS THEN
2810         PO_MESSAGE_S.add_exc_msg
2811         (
2812             p_pkg_name => 'PO_UDA_DEFAULTING_PKG',
2813             p_procedure_name => 'PO_UDA_EXECUTE_ACTIONS' || '.' || d_progress
2814         );
2815         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, d_progress);
2816         PO_UDA_DEFAULTING_PKG.DEBUG('Exception in PO_UDA_EXECUTE_ACTIONS after progress number : ' , d_progress);
2817             x_return_status := 'U';
2818     END PO_UDA_EXECUTE_ACTIONS;
2819 
2820     PROCEDURE CONSTRUCT_PK_OBJECT
2821     (
2822          p_obj_name      IN VARCHAR2
2823         ,p_pk1_value     IN NUMBER
2824         ,p_pk2_value     IN NUMBER  DEFAULT NULL
2825         ,p_pk3_value     IN NUMBER  DEFAULT NULL
2826         ,p_pk4_value     IN NUMBER  DEFAULT NULL
2827         ,p_pk5_value     IN NUMBER  DEFAULT NULL
2828         ,x_pk_column_name_value_pairs   IN OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_ARRAY
2829     )
2830     IS
2831         l_pk1_column_name   VARCHAR2(200);
2832         l_pk2_column_name   VARCHAR2(200);
2833         l_pk3_column_name   VARCHAR2(200);
2834         l_pk4_column_name   VARCHAR2(200);
2835         l_pk5_column_name   VARCHAR2(200);
2836     BEGIN
2837 
2838         x_pk_column_name_value_pairs :=  EGO_COL_NAME_VALUE_PAIR_ARRAY();
2839         BEGIN
2840             select o.pk1_column_name,
2841                    o.pk2_column_name,
2842                    o.pk3_column_name,
2843                    o.pk4_column_name,
2844                    o.pk5_column_name
2845             into   l_pk1_column_name,
2846                    l_pk2_column_name,
2847                    l_pk3_column_name,
2848                    l_pk4_column_name,
2849                    l_pk5_column_name
2850             from   fnd_objects_vl o
2851             where  o.obj_name = p_obj_name;
2852 
2853             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk1_column_name :' || l_pk1_column_name, 0);
2854             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk2_column_name :' || l_pk2_column_name, 0);
2855             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk3_column_name :' || l_pk3_column_name, 0);
2856             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk4_column_name :' || l_pk4_column_name, 0);
2857             PO_UDA_DEFAULTING_PKG.DEBUG('l_pk5_column_name :' || l_pk5_column_name, 0);
2858         EXCEPTION
2859         WHEN OTHERS THEN
2860             PO_UDA_DEFAULTING_PKG.DEBUG('Exception while trying to get the PK values', 0);
2861             RAISE;
2862         END;
2863 
2864         IF p_pk1_value IS NOT NULL THEN
2865             x_pk_column_name_value_pairs.EXTEND(1);
2866             x_pk_column_name_value_pairs(x_pk_column_name_value_pairs.COUNT) := EGO_COL_NAME_VALUE_PAIR_OBJ
2867                                                                                  (
2868                                                                                      l_pk1_column_name, p_pk1_value
2869                                                                                  );
2870         END IF;
2871         IF p_pk2_value IS NOT NULL THEN
2872             x_pk_column_name_value_pairs.EXTEND(1);
2873             x_pk_column_name_value_pairs(x_pk_column_name_value_pairs.COUNT) := EGO_COL_NAME_VALUE_PAIR_OBJ
2874                                                                                  (
2875                                                                                      l_pk2_column_name, p_pk2_value
2876                                                                                  );
2877         END IF;
2878         IF p_pk3_value IS NOT NULL THEN
2879             x_pk_column_name_value_pairs.EXTEND(1);
2880             x_pk_column_name_value_pairs(x_pk_column_name_value_pairs.COUNT) := EGO_COL_NAME_VALUE_PAIR_OBJ
2881                                                                                  (
2882                                                                                      l_pk3_column_name, p_pk3_value
2883                                                                                  );
2884         END IF;
2885         IF p_pk4_value IS NOT NULL THEN
2886             x_pk_column_name_value_pairs.EXTEND(1);
2887             x_pk_column_name_value_pairs(x_pk_column_name_value_pairs.COUNT) := EGO_COL_NAME_VALUE_PAIR_OBJ
2888                                                                                  (
2889                                                                                      l_pk4_column_name, p_pk4_value
2890                                                                                  );
2891         END IF;
2892         IF p_pk5_value IS NOT NULL THEN
2893             x_pk_column_name_value_pairs.EXTEND(1);
2894             x_pk_column_name_value_pairs(x_pk_column_name_value_pairs.COUNT) := EGO_COL_NAME_VALUE_PAIR_OBJ
2895                                                                                  (
2896                                                                                      l_pk5_column_name, p_pk5_value
2897                                                                                  );
2898         END IF;
2899 
2900     EXCEPTION
2901     WHEN OTHERS THEN
2902         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, 0);
2903         RAISE;
2904     END;
2905 
2906     PROCEDURE SET_EXT_ATTR_NAME_VALUE_PAIR
2907     (
2908          p_ext_attr_name                IN VARCHAR2
2909         ,p_ext_attr_value               IN VARCHAR2
2910         ,x_external_attr_value_pairs    IN OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_TABLE
2911     )
2912     IS
2913         MSG_DATA_IND                NUMBER   := 1;
2914         MSG_COUNT_IND               NUMBER   := 2;
2915         ERRORCODE_IND               NUMBER   := 3;
2916         RETURN_STATUS_IND           NUMBER   := 4;
2917         VENDOR_CONTACT_ID_IND       NUMBER   := 5;
2918         VENDOR_SITE_ID_IND          NUMBER   := 6;
2919         VENDOR_ID_IND               NUMBER   := 7;
2920         ITEM_ID_IND                 NUMBER   := 8;
2921         LINE_TYPE_ID_IND            NUMBER   := 9;
2922         SHIP_TO_LOC_ID_IND          NUMBER   := 10;
2923         ORG_ID_IND                  NUMBER   := 11;
2924         AGENT_ID_IND                NUMBER   := 12;
2925         CONTRACT_TYPE_IND           NUMBER   := 13;
2926         CATEGORY_ID_IND             NUMBER   := 14;
2927         PREPARER_ID_IND             NUMBER   := 15;
2928         BASE_AUCTION_HEADER_ID_IND  NUMBER   := 16;
2929         DELIMITER_IND               NUMBER   := 17;
2930         SOURCE_DOC_NUMBER_IND       NUMBER   := 18;
2931 
2932         l_index           NUMBER;
2933 
2934     BEGIN
2935         PO_UDA_DEFAULTING_PKG.DEBUG(' Starting SET_EXT_ATTR_NAME_VALUE_PAIR with values ', 0);
2936         PO_UDA_DEFAULTING_PKG.DEBUG(' p_ext_attr_name ' || p_ext_attr_name, 0);
2937         PO_UDA_DEFAULTING_PKG.DEBUG(' p_ext_attr_value ' || p_ext_attr_value, 0);
2938 
2939         IF x_external_attr_value_pairs IS NULL THEN
2940             x_external_attr_value_pairs := EGO_COL_NAME_VALUE_PAIR_TABLE(
2941                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2942                                                 (
2943                                                    'x_msg_data'
2944                                                   ,NULL
2945                                                 ),
2946                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2947                                                 (
2948                                                    'x_msg_count'
2949                                                   ,NULL
2950                                                 ),
2951                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2952                                                 (
2953                                                    'x_errorcode'
2954                                                   ,NULL
2955                                                 ),
2956                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2957                                                 (
2958                                                    'x_return_status'
2959                                                   ,NULL
2960                                                 ),
2961                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2962                                                 (
2963                                                    'VENDOR_CONTACT_ID'
2964                                                   ,NULL
2965                                                 ),
2966                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2967                                                 (
2968                                                    'VENDOR_SITE_ID'
2969                                                   ,NULL
2970                                                 ),
2971                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2972                                                 (
2973                                                    'VENDOR_ID'
2974                                                   ,NULL
2975                                                 ),
2976                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2977                                                 (
2978                                                    'ITEM_ID'
2979                                                   ,NULL
2980                                                 ),
2981                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2982                                                 (
2983                                                    'LINE_TYPE_ID'
2984                                                   ,NULL
2985                                                 ),
2986                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2987                                                 (
2988                                                    'SHIP_TO_LOC_ID'
2989                                                   ,NULL
2990                                                 ),
2991                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2992                                                 (
2993                                                    'ORG_ID'
2994                                                   ,NULL
2995                                                 ),
2996                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
2997                                                 (
2998                                                    'AGENT_ID'
2999                                                   ,NULL
3000                                                 ),
3001                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
3002                                                 (
3003                                                    'CONTRACT_TYPE'
3004                                                   ,NULL
3005                                                 ),
3006                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
3007                                                 (
3008                                                    'CATEGORY_ID'
3009                                                   ,NULL
3010                                                 ),
3011                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
3012                                                 (
3013                                                    'PREPARER_ID'
3014                                                   ,NULL
3015                                                 ),
3016                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
3017                                                 (
3018                                                    'BASE_AUCTION_HEADER_ID'
3019                                                   ,NULL
3020                                                 ),
3021                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
3022                                                 (
3023                                                    'DELIMITER'
3024                                                   ,NULL
3025                                                 ),
3026                                                 EGO_COL_NAME_VALUE_PAIR_OBJ
3027                                                 (
3028                                                    'p_source_doc_number'
3029                                                   ,NULL
3030                                                 )
3031                                              );
3032         END IF;
3033 
3034         IF p_ext_attr_name = 'x_msg_data' THEN
3035             l_index := MSG_DATA_IND;
3036         ELSIF p_ext_attr_name = 'x_msg_count' THEN
3037             l_index := MSG_COUNT_IND;
3038         ELSIF p_ext_attr_name = 'x_errorcode' THEN
3039             l_index := ERRORCODE_IND;
3040         ELSIF p_ext_attr_name = 'x_return_status' THEN
3041             l_index := RETURN_STATUS_IND;
3042         ELSIF p_ext_attr_name = 'VENDOR_CONTACT_ID' THEN
3043             l_index := VENDOR_CONTACT_ID_IND;
3044         ELSIF p_ext_attr_name = 'VENDOR_SITE_ID' THEN
3045             l_index := VENDOR_SITE_ID_IND;
3046         ELSIF p_ext_attr_name = 'VENDOR_ID' THEN
3047             l_index := VENDOR_ID_IND;
3048         ELSIF p_ext_attr_name = 'ITEM_ID' THEN
3049             l_index := ITEM_ID_IND;
3050         ELSIF p_ext_attr_name = 'LINE_TYPE_ID' THEN
3051             l_index := LINE_TYPE_ID_IND;
3052         ELSIF p_ext_attr_name = 'SHIP_TO_LOC_ID' THEN
3053             l_index := SHIP_TO_LOC_ID_IND;
3054         ELSIF p_ext_attr_name = 'ORG_ID' THEN
3055             l_index := ORG_ID_IND;
3056         ELSIF p_ext_attr_name = 'AGENT_ID' THEN
3057             l_index := AGENT_ID_IND;
3058         ELSIF p_ext_attr_name = 'CONTRACT_TYPE' THEN
3059             l_index := CONTRACT_TYPE_IND;
3060         ELSIF p_ext_attr_name = 'CATEGORY_ID' THEN
3061             l_index := CATEGORY_ID_IND;
3062         ELSIF p_ext_attr_name = 'PREPARER_ID' THEN
3063             l_index := PREPARER_ID_IND;
3064         ELSIF p_ext_attr_name = 'BASE_AUCTION_HEADER_ID' THEN
3065             l_index := BASE_AUCTION_HEADER_ID_IND;
3066         ELSIF p_ext_attr_name = 'DELIMITER' THEN
3067             l_index := DELIMITER_IND;
3068         ELSIF p_ext_attr_name = 'p_source_doc_number' THEN
3069             l_index := SOURCE_DOC_NUMBER_IND;
3070         ELSE
3071             PO_UDA_DEFAULTING_PKG.DEBUG('The Name Value Pair does not have an index defined (Check PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR)', 0);
3072             RETURN;
3073         END IF;
3074 
3075         x_external_attr_value_pairs(l_index) := EGO_COL_NAME_VALUE_PAIR_OBJ(p_ext_attr_name, p_ext_attr_value);
3076     EXCEPTION
3077     WHEN OTHERS THEN
3078         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, 0);
3079         RAISE;
3080     END;
3081 
3082     PROCEDURE GET_EXT_ATTR_NAME_VALUE_PAIR
3083     (
3084          p_ext_attr_name                IN VARCHAR2
3085         ,x_external_attr_value_pairs    IN OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_TABLE
3086         ,x_ext_name_val_obj             OUT NOCOPY EGO_COL_NAME_VALUE_PAIR_OBJ
3087     )
3088     IS
3089         MSG_DATA_IND                NUMBER   := 1;
3090         MSG_COUNT_IND               NUMBER   := 2;
3091         ERRORCODE_IND               NUMBER   := 3;
3092         RETURN_STATUS_IND           NUMBER   := 4;
3093         VENDOR_CONTACT_ID_IND       NUMBER   := 5;
3094         VENDOR_SITE_ID_IND          NUMBER   := 6;
3095         VENDOR_ID_IND               NUMBER   := 7;
3096         ITEM_ID_IND                 NUMBER   := 8;
3097         LINE_TYPE_ID_IND            NUMBER   := 9;
3098         SHIP_TO_LOC_ID_IND          NUMBER   := 10;
3099         ORG_ID_IND                  NUMBER   := 11;
3100         AGENT_ID_IND                NUMBER   := 12;
3101         CONTRACT_TYPE_IND           NUMBER   := 13;
3102         CATEGORY_ID_IND             NUMBER   := 14;
3103         PREPARER_ID_IND             NUMBER   := 15;
3104         BASE_AUCTION_HEADER_ID_IND  NUMBER   := 16;
3105         DELIMITER_IND               NUMBER   := 17;
3106         SOURCE_DOC_NUMBER_IND       NUMBER   := 18;
3107 
3108         l_index           NUMBER;
3109 
3110     BEGIN
3111 
3112         IF p_ext_attr_name = 'x_msg_data' THEN
3113             x_ext_name_val_obj := x_external_attr_value_pairs(MSG_DATA_IND);
3114         ELSIF p_ext_attr_name = 'x_msg_count' THEN
3115             x_ext_name_val_obj := x_external_attr_value_pairs(MSG_COUNT_IND);
3116         ELSIF p_ext_attr_name = 'x_errorcode' THEN
3117             x_ext_name_val_obj := x_external_attr_value_pairs(ERRORCODE_IND);
3118         ELSIF p_ext_attr_name = 'x_return_status' THEN
3119             x_ext_name_val_obj := x_external_attr_value_pairs(RETURN_STATUS_IND);
3120         ELSIF p_ext_attr_name = 'VENDOR_CONTACT_ID' THEN
3121             x_ext_name_val_obj := x_external_attr_value_pairs(VENDOR_CONTACT_ID_IND);
3122         ELSIF p_ext_attr_name = 'VENDOR_SITE_ID' THEN
3123             x_ext_name_val_obj := x_external_attr_value_pairs(VENDOR_SITE_ID_IND);
3124         ELSIF p_ext_attr_name = 'VENDOR_ID' THEN
3125             x_ext_name_val_obj := x_external_attr_value_pairs(VENDOR_ID_IND);
3126         ELSIF p_ext_attr_name = 'ITEM_ID' THEN
3127             x_ext_name_val_obj := x_external_attr_value_pairs(ITEM_ID_IND);
3128         ELSIF p_ext_attr_name = 'LINE_TYPE_ID' THEN
3129             x_ext_name_val_obj := x_external_attr_value_pairs(LINE_TYPE_ID_IND);
3130         ELSIF p_ext_attr_name = 'SHIP_TO_LOC_ID' THEN
3131             x_ext_name_val_obj := x_external_attr_value_pairs(SHIP_TO_LOC_ID_IND);
3132         ELSIF p_ext_attr_name = 'ORG_ID' THEN
3133             x_ext_name_val_obj := x_external_attr_value_pairs(ORG_ID_IND);
3134         ELSIF p_ext_attr_name = 'AGENT_ID' THEN
3135             x_ext_name_val_obj := x_external_attr_value_pairs(AGENT_ID_IND);
3136         ELSIF p_ext_attr_name = 'CONTRACT_TYPE' THEN
3137             x_ext_name_val_obj := x_external_attr_value_pairs(CONTRACT_TYPE_IND);
3138         ELSIF p_ext_attr_name = 'CATEGORY_ID' THEN
3139             x_ext_name_val_obj := x_external_attr_value_pairs(CATEGORY_ID_IND);
3140         ELSIF p_ext_attr_name = 'PREPARER_ID' THEN
3141             x_ext_name_val_obj := x_external_attr_value_pairs(PREPARER_ID_IND);
3142         ELSIF p_ext_attr_name = 'BASE_AUCTION_HEADER_ID' THEN
3143             x_ext_name_val_obj := x_external_attr_value_pairs(BASE_AUCTION_HEADER_ID_IND);
3144         ELSIF p_ext_attr_name = 'DELIMITER' THEN
3145             x_ext_name_val_obj := x_external_attr_value_pairs(DELIMITER_IND);
3146         ELSIF p_ext_attr_name = 'p_source_doc_number' THEN
3147             x_ext_name_val_obj := x_external_attr_value_pairs(SOURCE_DOC_NUMBER_IND);
3148         ELSE
3149             x_ext_name_val_obj := NULL;
3150             PO_UDA_DEFAULTING_PKG.DEBUG('The Name Value Pair does not have an index defined (Check PO_UDA_DEFAULTING_PKG.SET_EXT_ATTR_NAME_VALUE_PAIR)', 0);
3151         END IF;
3152 
3153     EXCEPTION
3154     WHEN OTHERS THEN
3155         PO_UDA_DEFAULTING_PKG.DEBUG(SQLERRM, 0);
3156         RAISE;
3157     END;
3158 
3159     --bug 12611018 The performance was very poor
3160     -- the debug procedures didnt have the check to see if logging
3161     -- was enabled, hence added that check.
3162     PROCEDURE DEBUG
3163     (
3164         p_structure_array   IN  EGO_COL_NAME_VALUE_PAIR_ARRAY
3165        ,p_progress          IN  NUMBER
3166     )
3167     IS
3168         l_structure_ind     NUMBER;
3169         l_structure         EGO_COL_NAME_VALUE_PAIR_OBJ;
3170     BEGIN
3171     IF PO_LOG.d_stmt then     --bug 12611018
3172         IF p_structure_array IS NOT NULL THEN
3173             l_structure_ind := p_structure_array.FIRST;
3174             WHILE (l_structure_ind IS NOT NULL AND l_structure_ind <= p_structure_array.LAST)
3175             LOOP
3176                 l_structure := p_structure_array(l_structure_ind);
3177                 IF l_structure IS NOT NULL THEN
3178                     PO_UDA_DEFAULTING_PKG.DEBUG('NAME at index : ' || l_structure_ind || ' is : ' || l_structure.NAME, 0);
3179                     PO_UDA_DEFAULTING_PKG.DEBUG('VALUE at index : ' || l_structure_ind || ' is : ' || l_structure.VALUE, 0);
3180                 ELSE
3181                     PO_UDA_DEFAULTING_PKG.DEBUG('NO VALUE AT THIS INDEX', 0);
3182                 END IF;
3183                 l_structure_ind := p_structure_array.NEXT(l_structure_ind);
3184             END LOOP;
3185          ELSE
3186             PO_UDA_DEFAULTING_PKG.DEBUG('Structure is NULL', 0);
3187          END IF; --bug 12611018
3188       END IF;
3189     END DEBUG;
3190 
3191     PROCEDURE DEBUG
3192     (
3193         p_structure_array   IN  EGO_COL_NAME_VALUE_PAIR_TABLE
3194        ,p_progress          IN  NUMBER
3195     )
3196     IS
3197         l_structure_ind     NUMBER;
3198         l_structure         EGO_COL_NAME_VALUE_PAIR_OBJ;
3199     BEGIN
3200     IF PO_LOG.d_stmt THEN   --bug 12611018
3201 
3202         IF p_structure_array IS NOT NULL THEN
3203             l_structure_ind := p_structure_array.FIRST;
3204             WHILE (l_structure_ind IS NOT NULL AND l_structure_ind <= p_structure_array.LAST)
3205             LOOP
3206                 l_structure := p_structure_array(l_structure_ind);
3207                 IF l_structure IS NOT NULL THEN
3208                     PO_UDA_DEFAULTING_PKG.DEBUG('NAME at index : ' || l_structure_ind || ' is : ' || l_structure.NAME, 0);
3209                     PO_UDA_DEFAULTING_PKG.DEBUG('VALUE at index : ' || l_structure_ind || ' is : ' || l_structure.VALUE, 0);
3210                 ELSE
3211                     PO_UDA_DEFAULTING_PKG.DEBUG('NO VALUE AT THIS INDEX', 0);
3212                 END IF;
3213                 l_structure_ind := p_structure_array.NEXT(l_structure_ind);
3214             END LOOP;
3215         ELSE
3216             PO_UDA_DEFAULTING_PKG.DEBUG('Structure is NULL', 0);
3217         END IF;
3218 
3219       END IF; --bug 12611018
3220        END DEBUG;
3221 
3222     PROCEDURE DEBUG
3223     (
3224         p_structure_array   IN  EGO_USER_ATTR_DATA_TABLE
3225        ,p_progress          IN  NUMBER
3226     )
3227     IS
3228         l_structure_ind     NUMBER;
3229         l_structure         EGO_USER_ATTR_DATA_OBJ;
3230     BEGIN
3231     IF PO_LOG.d_stmt THEN --bug 12611018
3232 
3233         IF p_structure_array IS NOT NULL THEN
3234             l_structure_ind := p_structure_array.FIRST;
3235             WHILE (l_structure_ind IS NOT NULL AND l_structure_ind <= p_structure_array.LAST)
3236             LOOP
3237                 l_structure := p_structure_array(l_structure_ind);
3238                 IF l_structure IS NOT NULL THEN
3239                     PO_UDA_DEFAULTING_PKG.DEBUG('ROW_IDENTIFIER at index : ' || l_structure_ind || ' is : ' || l_structure.ROW_IDENTIFIER, 0);
3240                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_NAME at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_NAME, 0);
3241                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_VALUE_STR at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_VALUE_STR, 0);
3242                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_VALUE_NUM at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_VALUE_NUM, 0);
3243                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_VALUE_DATE at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_VALUE_DATE, 0);
3244                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_DISP_VALUE at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_DISP_VALUE, 0);
3245                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_UNIT_OF_MEASURE at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_UNIT_OF_MEASURE, 0);
3246                     PO_UDA_DEFAULTING_PKG.DEBUG('USER_ROW_IDENTIFIER at index : ' || l_structure_ind || ' is : ' || l_structure.USER_ROW_IDENTIFIER, 0);
3247                 ELSE
3248                     PO_UDA_DEFAULTING_PKG.DEBUG('NO VALUE AT THIS INDEX', 0);
3249                 END IF;
3250                 l_structure_ind := p_structure_array.NEXT(l_structure_ind);
3251             END LOOP;
3252         ELSE
3253             PO_UDA_DEFAULTING_PKG.DEBUG('Structure is NULL', 0);
3254         END IF;
3255     END IF; --bug 12611018
3256 
3257     END DEBUG;
3258 
3259     PROCEDURE DEBUG
3260     (
3261         p_structure_array    IN  EGO_USER_ATTR_ROW_TABLE
3262        ,p_progress           IN  NUMBER
3263     )
3264     IS
3265         l_structure_ind     NUMBER;
3266         l_structure         EGO_USER_ATTR_ROW_OBJ;
3267     BEGIN
3268     IF PO_LOG.d_stmt THEN   --bug 12611018
3269 
3270         IF p_structure_array IS NOT NULL THEN
3271             l_structure_ind := p_structure_array.FIRST;
3272             WHILE (l_structure_ind IS NOT NULL AND l_structure_ind <= p_structure_array.LAST)
3273             LOOP
3274                 l_structure := p_structure_array(l_structure_ind);
3275                 IF l_structure IS NOT NULL THEN
3276                     PO_UDA_DEFAULTING_PKG.DEBUG('ROW_IDENTIFIER at index : ' || l_structure_ind || ' is : ' || l_structure.ROW_IDENTIFIER, 0);
3277                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_GROUP_ID, 0);
3278                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_APP_ID at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_GROUP_APP_ID, 0);
3279                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_TYPE at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_GROUP_TYPE, 0);
3280                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_NAME at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_GROUP_NAME, 0);
3281                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL, 0);
3282                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL1 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_1, 0);
3283                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL2 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_2, 0);
3284                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL3 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_3, 0);
3285                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL4 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_4, 0);
3286                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL5 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_5, 0);
3287                     PO_UDA_DEFAULTING_PKG.DEBUG('TRANSACTION_TYPE at index : ' || l_structure_ind || ' is : ' || l_structure.TRANSACTION_TYPE, 0);
3288                 ELSE
3289                     PO_UDA_DEFAULTING_PKG.DEBUG('NO VALUE AT THIS INDEX', 0);
3290                 END IF;
3291                 l_structure_ind := p_structure_array.NEXT(l_structure_ind);
3292             END LOOP;
3293         ELSE
3294             PO_UDA_DEFAULTING_PKG.DEBUG('Structure is NULL', 0);
3295         END IF;
3296 
3297       END IF; --bug 12611018
3298     END DEBUG;
3299 
3300     PROCEDURE DEBUG
3301     (
3302         p_structure_array    IN  PO_UDA_USAGE_OBJECT_ARRAY
3303        ,p_progress           IN  NUMBER
3304     )
3305     IS
3306         l_structure_ind  NUMBER;
3307         l_structure      PO_UDA_USAGE_OBJECT;
3308     BEGIN
3309     IF PO_LOG.d_stmt THEN  --bug 12611018
3310 
3311         IF p_structure_array IS NOT NULL THEN
3312             l_structure_ind := p_structure_array.FIRST;
3313             WHILE (l_structure_ind IS NOT NULL AND l_structure_ind <= p_structure_array.LAST)
3314             LOOP
3315                 l_structure := p_structure_array(l_structure_ind);
3316                 IF l_structure IS NOT NULL THEN
3317                     PO_UDA_DEFAULTING_PKG.DEBUG('TEMPLATE_ID at index : ' || l_structure_ind || ' is : ' || l_structure.TEMPLATE_ID, 0);
3318                     PO_UDA_DEFAULTING_PKG.DEBUG('USAGE_TYPE at index : ' || l_structure_ind || ' is : ' || l_structure.USAGE_TYPE, 0);
3319                     PO_UDA_DEFAULTING_PKG.DEBUG('Context Object in Usage Object is as follows', 0);
3320                     PO_UDA_DEFAULTING_PKG.DEBUG(l_structure.Context, 0);
3321                     PO_UDA_DEFAULTING_PKG.DEBUG('End of Context Object in the Usage Object', 0);
3322                     PO_UDA_DEFAULTING_PKG.DEBUG('Attr Group IDs in Usage Object is as follows', 0);
3323                     PO_UDA_DEFAULTING_PKG.DEBUG(l_structure.Attr_group_Id, 0);
3324                     PO_UDA_DEFAULTING_PKG.DEBUG('End of Attr Group IDs in the Usage Object', 0);
3325                 ELSE
3326                     PO_UDA_DEFAULTING_PKG.DEBUG('NO VALUE AT THIS INDEX', 0);
3327                 END IF;
3328                 l_structure_ind := p_structure_array.NEXT(l_structure_ind);
3329             END LOOP;
3330         ELSE
3331             PO_UDA_DEFAULTING_PKG.DEBUG('Structure is NULL', 0);
3332         END IF;
3333 
3334       END IF;--bug 12611018
3335     END DEBUG;
3336 
3337     PROCEDURE DEBUG
3338     (
3339         p_structure_array    IN  PO_TBL_NUMBER
3340        ,p_progress           IN  NUMBER
3341     )
3342     IS
3343         l_structure_ind  NUMBER;
3344         l_structure      NUMBER;
3345     BEGIN
3346     IF PO_LOG.d_stmt then--bug 12611018
3347         IF p_structure_array IS NOT NULL THEN
3348             l_structure_ind := p_structure_array.FIRST;
3349             WHILE (l_structure_ind IS NOT NULL AND l_structure_ind <= p_structure_array.LAST)
3350             LOOP
3351                 l_structure := p_structure_array(l_structure_ind);
3352                 IF l_structure IS NOT NULL THEN
3353                     PO_UDA_DEFAULTING_PKG.DEBUG('PO_TBL_NUMBER Table at index : ' || l_structure_ind || ' is : ' || l_structure, 0);
3354                 ELSE
3355                     PO_UDA_DEFAULTING_PKG.DEBUG('NO VALUE AT THIS INDEX', 0);
3356                 END IF;
3357                 l_structure_ind := p_structure_array.NEXT(l_structure_ind);
3358             END LOOP;
3359         ELSE
3360             PO_UDA_DEFAULTING_PKG.DEBUG('Structure is NULL', 0);
3361         END IF;
3362       END IF;--bug 12611018
3363     END DEBUG;
3364 
3365     PROCEDURE DEBUG
3366     (
3367         p_structure_array    IN  EGO_ATTR_GROUP_REQUEST_TABLE
3368        ,p_progress           IN  NUMBER
3369     )
3370     IS
3371         l_structure_ind     NUMBER;
3372         l_structure         EGO_ATTR_GROUP_REQUEST_OBJ;
3373     BEGIN
3374     IF PO_LOG.d_stmt THEN   --bug 12611018
3375 
3376         IF p_structure_array IS NOT NULL THEN
3377             l_structure_ind := p_structure_array.FIRST;
3378             WHILE (l_structure_ind IS NOT NULL AND l_structure_ind <= p_structure_array.LAST)
3379             LOOP
3380                 l_structure := p_structure_array(l_structure_ind);
3381 
3382                 IF l_structure IS NOT NULL THEN
3383                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_ID at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_GROUP_ID, 0);
3384                     PO_UDA_DEFAULTING_PKG.DEBUG('APPLICATION_ID at index : ' || l_structure_ind || ' is : ' || l_structure.APPLICATION_ID, 0);
3385                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_TYPE at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_GROUP_TYPE, 0);
3386                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_GROUP_NAME at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_GROUP_NAME, 0);
3387                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL, 0);
3388                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL1 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_1, 0);
3389                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL2 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_2, 0);
3390                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL3 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_3, 0);
3391                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL4 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_4, 0);
3392                     PO_UDA_DEFAULTING_PKG.DEBUG('DATA_LEVEL5 at index : ' || l_structure_ind || ' is : ' || l_structure.DATA_LEVEL_5, 0);
3393                     PO_UDA_DEFAULTING_PKG.DEBUG('ATTR_NAME_LIST at index : ' || l_structure_ind || ' is : ' || l_structure.ATTR_NAME_LIST, 0);
3394                 ELSE
3395                     PO_UDA_DEFAULTING_PKG.DEBUG('NO VALUE AT THIS INDEX', 0);
3396                 END IF;
3397                 l_structure_ind := p_structure_array.NEXT(l_structure_ind);
3398             END LOOP;
3399         ELSE
3400             PO_UDA_DEFAULTING_PKG.DEBUG('Structure is NULL', 0);
3401         END IF;
3402 
3403       END IF; --bug 12611018
3404     END DEBUG;
3405 
3406     PROCEDURE DEBUG
3407     (
3408          p_msg                      IN  VARCHAR2
3409         ,p_progress                 IN  NUMBER
3410     )
3411     IS
3412     BEGIN
3413         IF PO_LOG.d_stmt THEN
3414             PO_LOG.stmt('PO_UDA_DEFAULTING_PKG', p_progress, 'Message: ', p_msg);
3415         END IF;
3416     END DEBUG;
3417 
3418 END PO_UDA_DEFAULTING_PKG;