DBA Data[Home] [Help]

PACKAGE BODY: APPS.POS_MERGE_SUPPLIER_PKG

Source


1 PACKAGE BODY POS_MERGE_SUPPLIER_PKG AS
2   /* $Header: POSMRGSUPB.pls 120.1.12020000.3 2012/07/23 20:30:32 yaoli ship $ */
3 
4   TYPE bank_dtls_rec_type IS RECORD(
5     instrument_type  iby_pmt_instr_uses_all.instrument_type%TYPE,
6     instrument_id    iby_pmt_instr_uses_all.instrument_id%TYPE,
7     payment_function iby_pmt_instr_uses_all.payment_function%TYPE);
8 
9   TYPE bank_dtls_tab_type IS TABLE OF bank_dtls_rec_type INDEX BY BINARY_INTEGER;
10 
11   TYPE uda_rec_tbl_type IS TABLE OF pos_supp_prof_ext_b%ROWTYPE INDEX BY BINARY_INTEGER;
12 
13   TYPE attributes_rec IS RECORD(
14     attr_name       ego_attrs_v.attr_name%TYPE,
15     database_column ego_attrs_v.database_column%TYPE);
16 
17   TYPE attributes_coll_tab IS TABLE OF attributes_rec INDEX BY BINARY_INTEGER;
18   attributes_coll attributes_coll_tab;
19 
20   PROCEDURE create_bus_attr
21   (
22     p_buss_class_rec    IN pos_bus_class_attr%ROWTYPE,
23     p_party_id          IN hz_parties.party_id%TYPE,
24     p_classification_id OUT NOCOPY NUMBER,
25     x_return_status     OUT NOCOPY VARCHAR2,
26     x_msg_count         OUT NOCOPY NUMBER,
27     x_msg_data          OUT NOCOPY VARCHAR2
28   ) IS
29     l_classification_id NUMBER;
30     l_status            VARCHAR2(100);
31     l_exception_msg     VARCHAR2(100);
32   BEGIN
33     x_return_status := fnd_api.g_ret_sts_success;
34 
35     fnd_file.put_line(fnd_file.log,
36                       'Inside POS_MERGE_SUPPLIER_PKG.create_bus_attr ');
37     BEGIN
38       pos_supp_classification_pkg.add_bus_class_attr(p_party_id,
39                                                      p_buss_class_rec.vendor_id,
40                                                      p_buss_class_rec.lookup_code,
41                                                      p_buss_class_rec.expiration_date,
42                                                      p_buss_class_rec.certificate_number,
43                                                      p_buss_class_rec.certifying_agency,
44                                                      p_buss_class_rec.ext_attr_1,
45                                                      p_buss_class_rec.class_status,
46                                                      '',
47                                                      p_classification_id,
48                                                      l_status,
49                                                      l_exception_msg);
50 
51       fnd_file.put_line(fnd_file.log,
52                         'l_exception_msg from pos_supp_classification_pkg.add_bus_class_attr : ' ||
53                         l_exception_msg || ' for party id : ' || p_party_id);
54 
55     END;
56 
57     BEGIN
58       pos_supp_classification_pkg.synchronize_class_tca_to_po(p_party_id,
59                                                               p_buss_class_rec.vendor_id);
60     END;
61   EXCEPTION
62     WHEN OTHERS THEN
63       x_return_status := fnd_api.g_ret_sts_unexp_error;
64 
65       fnd_msg_pub.count_and_get(p_count => x_msg_count,
66                                 p_data  => x_msg_data);
67   END create_bus_attr;
68 
69   PROCEDURE get_bus_attr_rec
70   (
71     p_party_id          IN hz_parties.party_id%TYPE,
72     p_classification_id IN pos_bus_class_attr.classification_id%TYPE,
73     x_buss_class_rec    OUT NOCOPY pos_bus_class_attr%ROWTYPE,
74     x_return_status     OUT NOCOPY VARCHAR2,
75     x_msg_count         OUT NOCOPY NUMBER,
76     x_msg_data          OUT NOCOPY VARCHAR2
77   ) IS
78 
79   BEGIN
80     x_return_status := fnd_api.g_ret_sts_success;
81     fnd_file.put_line(fnd_file.log,
82                       'Inside POS_MERGE_SUPPLIER_PKG.get_bus_attr_rec ' ||
83                       p_party_id);
84 
85     SELECT --classification_id,
86     --vendor_id,
87      lookup_type,
88      lookup_code,
89      start_date_active,
90      end_date_active,
91      status,
92      ext_attr_1,
93      expiration_date,
94      certificate_number,
95      certifying_agency,
96      class_status,
97      attribute1,
98      attribute2,
99      attribute3,
100      attribute4,
101      attribute5
102     INTO   --x_buss_class_rec.classification_id,
103            --x_buss_class_rec.vendor_id,
104             x_buss_class_rec.lookup_type,
105            x_buss_class_rec.lookup_code,
106            x_buss_class_rec.start_date_active,
107            x_buss_class_rec.end_date_active,
108            x_buss_class_rec.status,
109            x_buss_class_rec.ext_attr_1,
110            x_buss_class_rec.expiration_date,
111            x_buss_class_rec.certificate_number,
112            x_buss_class_rec.certifying_agency,
113            x_buss_class_rec.class_status,
114            x_buss_class_rec.attribute1,
115            x_buss_class_rec.attribute2,
116            x_buss_class_rec.attribute3,
117            x_buss_class_rec.attribute4,
118            x_buss_class_rec.attribute5
119     FROM   pos_bus_class_attr
120     WHERE  party_id = p_party_id
121     AND    classification_id = p_classification_id;
122 
123   EXCEPTION
124     WHEN OTHERS THEN
125       x_return_status := fnd_api.g_ret_sts_unexp_error;
126 
127       fnd_msg_pub.count_and_get(p_count => x_msg_count,
128                                 p_data  => x_msg_data);
129   END get_bus_attr_rec;
130 
131   PROCEDURE buss_class_merge
132   (
133     p_entity_name        IN VARCHAR2,
134     p_from_id            IN NUMBER,
135     x_to_id              IN OUT NOCOPY NUMBER,
136     p_from_fk_id         IN NUMBER,
137     p_to_fk_id           IN NUMBER,
138     p_parent_entity_name IN VARCHAR2,
139     p_batch_id           IN NUMBER,
140     p_batch_party_id     IN NUMBER,
141     x_return_status      OUT NOCOPY VARCHAR2
142   ) IS
143     l_msg_count NUMBER;
144     l_msg_data  VARCHAR2(100);
145 
146     l_count        NUMBER;
147     buss_class_rec pos_bus_class_attr%ROWTYPE;
148     l_to_vendor_id NUMBER;
149 
150   BEGIN
151     x_return_status := fnd_api.g_ret_sts_success;
152 
153     fnd_file.put_line(fnd_file.log,
154                       'Inside POS_MERGE_SUPPLIER_PKG.Buss_Class_Merge p_to_fk_id: ' ||
155                       p_to_fk_id || ' p_from_fk_id: ' || p_from_fk_id ||
156                       ' p_from_id: ' || p_from_id);
157 
158     /* Set the status to MERGED */
159     UPDATE pos_bus_class_attr
160     SET    status            = 'M',
161            last_update_date  = hz_utility_pub.last_update_date,
162            last_updated_by   = hz_utility_pub.user_id,
163            last_update_login = hz_utility_pub.last_update_login
164     WHERE  party_id = p_from_fk_id
165     AND    classification_id = p_from_id;
166 
167     fnd_file.put_line(fnd_file.log, 'Rowcount: ' || SQL%ROWCOUNT);
168 
169     SELECT vendor_id
170     INTO   l_to_vendor_id
171     FROM   ap_suppliers
172     WHERE  party_id = p_to_fk_id;
173 
174     fnd_file.put_line(fnd_file.log,
175                       'Inside POS_MERGE_SUPPLIER_PKG.Buss_Class_Merge l_to_vendor_id: ' ||
176                       l_to_vendor_id);
177 
178     DELETE FROM pos_supplier_mappings a
179     WHERE  a.party_id = p_to_fk_id
180     AND    a.vendor_id <> l_to_vendor_id
181     AND    EXISTS (SELECT 1
182             FROM   pos_supplier_mappings b
183             WHERE  b.party_id = p_to_fk_id
184             AND    vendor_id = l_to_vendor_id);
185 
186     UPDATE pos_supplier_mappings
187     SET    vendor_id         = l_to_vendor_id,
188            last_updated_by   = fnd_global.user_id,
189            last_update_date  = SYSDATE,
190            last_update_login = fnd_global.login_id
191     WHERE  mapping_id IN (SELECT mapping_id
192                           FROM   pos_supplier_mappings
193                           WHERE  party_id = p_to_fk_id);
194 
195     fnd_file.put_line(fnd_file.log, 'Rowcount1: ' || SQL%ROWCOUNT);
196 
197     /* Check for the duplicate business classification details */
198     SELECT COUNT(1)
199     INTO   l_count
200     FROM   pos_bus_class_attr attr_from,
201            pos_bus_class_attr attr_to
202     WHERE  attr_from.lookup_code = attr_to.lookup_code
203     AND    attr_from.lookup_type = attr_to.lookup_type
204           /*AND    nvl(attr_from.ext_attr_1, ' ') = nvl(attr_to.ext_attr_1, ' ')*/
205     AND    attr_from.party_id = p_from_fk_id
206     AND    attr_to.party_id = p_to_fk_id
207     AND    attr_from.classification_id = p_from_id;
208     /*AND    attr_from.classification_id = p_from_fk_id
209     AND    attr_to.classification_id = p_to_fk_id;*/
210 
211     fnd_file.put_line(fnd_file.log,
212                       'Inside POS_MERGE_SUPPLIER_PKG.Buss_Class_Merge l_count: ' ||
213                       l_count);
214 
215     IF (l_count = 0) THEN
216       BEGIN
217 
218         /* Get the details for the from party id */
219         get_bus_attr_rec(p_party_id          => p_from_fk_id,
220                          p_classification_id => p_from_id,
221                          x_buss_class_rec    => buss_class_rec,
222                          x_return_status     => x_return_status,
223                          x_msg_count         => l_msg_count,
224                          x_msg_data          => l_msg_data);
225 
226         IF x_return_status <> fnd_api.g_ret_sts_success THEN
227           fnd_message.set_name('AR', 'HZ_MERGE_SQL_ERROR');
228           fnd_message.set_token('ERROR',
229                                 'Cannot get classification ID : ' ||
230                                 p_from_id);
231           fnd_msg_pub.add;
232 
233           fnd_file.put_line(fnd_file.log,
234                             'No. of Messages: ' || l_msg_count ||
235                             ', Message: ' || l_msg_data ||
236                             ' From get_bus_attr_rec API.');
237           x_return_status := fnd_api.g_ret_sts_error;
238 
239           RETURN;
240         END IF;
241 
242         --buss_class_rec.party_id := p_to_fk_id;
243         buss_class_rec.vendor_id := l_to_vendor_id;
244 
245         /* Create the details for the to party id */
246         create_bus_attr(p_buss_class_rec    => buss_class_rec,
247                         p_party_id          => p_to_fk_id,
248                         p_classification_id => x_to_id,
249                         x_return_status     => x_return_status,
250                         x_msg_count         => l_msg_count,
251                         x_msg_data          => l_msg_data);
252 
253         IF x_return_status <> fnd_api.g_ret_sts_success THEN
254           fnd_message.set_name('AR', 'HZ_MERGE_SQL_ERROR');
255           fnd_message.set_token('ERROR',
256                                 'Cannot copy classification ID : ' ||
257                                 p_from_id);
258           fnd_msg_pub.add;
259 
260           fnd_file.put_line(fnd_file.log,
261                             'No. of Messages: ' || l_msg_count ||
262                             ', Message: ' || l_msg_data ||
263                             ' From create_bus_attr API.');
264           x_return_status := fnd_api.g_ret_sts_error;
265           RETURN;
266         END IF;
267       END;
268     END IF;
269 
270   EXCEPTION
271     WHEN OTHERS THEN
272       fnd_file.put_line(fnd_file.log, 'In others : ' || SQLERRM);
273       x_return_status := fnd_api.g_ret_sts_unexp_error;
274   END buss_class_merge;
275 
276   PROCEDURE create_prod_serv
277   (
278     p_vendor_prodsrv_rec IN pos_sup_products_services%ROWTYPE,
279     p_party_id           IN hz_parties.party_id%TYPE,
280     p_vendor_id          IN ap_suppliers.vendor_id%TYPE,
281     x_return_status      OUT NOCOPY VARCHAR2,
282     x_msg_count          OUT NOCOPY NUMBER,
283     x_msg_data           OUT NOCOPY VARCHAR2
284   ) IS
285     l_return_status VARCHAR2(2000);
286     l_msg_count     NUMBER;
287     l_msg_data      VARCHAR2(2000);
288 
289     l_status         VARCHAR(2000);
290     l_error_message  VARCHAR(4000);
291     l_segment_concat VARCHAR2(4000) := NULL;
292 
293     l_mapping_id NUMBER;
294     l_req_id     NUMBER := 0;
295 
296   BEGIN
297     x_return_status := fnd_api.g_ret_sts_success;
298 
299     -- Insert the data into the pos_product_service_requests table using the follwing API
300     pos_product_service_utl_pkg.add_new_ps_req(p_vendor_id          => p_vendor_prodsrv_rec.vendor_id,
301                                                p_segment1           => p_vendor_prodsrv_rec.segment1,
302                                                p_segment2           => p_vendor_prodsrv_rec.segment2,
303                                                p_segment3           => p_vendor_prodsrv_rec.segment3,
304                                                p_segment4           => p_vendor_prodsrv_rec.segment4,
305                                                p_segment5           => p_vendor_prodsrv_rec.segment5,
306                                                p_segment6           => p_vendor_prodsrv_rec.segment6,
307                                                p_segment7           => p_vendor_prodsrv_rec.segment7,
308                                                p_segment8           => p_vendor_prodsrv_rec.segment8,
309                                                p_segment9           => p_vendor_prodsrv_rec.segment9,
310                                                p_segment10          => p_vendor_prodsrv_rec.segment10,
311                                                p_segment11          => p_vendor_prodsrv_rec.segment11,
312                                                p_segment12          => p_vendor_prodsrv_rec.segment12,
313                                                p_segment13          => p_vendor_prodsrv_rec.segment13,
314                                                p_segment14          => p_vendor_prodsrv_rec.segment14,
315                                                p_segment15          => p_vendor_prodsrv_rec.segment15,
316                                                p_segment16          => p_vendor_prodsrv_rec.segment16,
317                                                p_segment17          => p_vendor_prodsrv_rec.segment17,
318                                                p_segment18          => p_vendor_prodsrv_rec.segment18,
319                                                p_segment19          => p_vendor_prodsrv_rec.segment19,
320                                                p_segment20          => p_vendor_prodsrv_rec.segment20,
321                                                p_segment_definition => p_vendor_prodsrv_rec.segment_definition,
322                                                x_return_status      => l_return_status,
323                                                x_msg_count          => l_msg_count,
324                                                x_msg_data           => l_msg_data);
325 
326     IF x_return_status <> fnd_api.g_ret_sts_success THEN
327       fnd_file.put_line(fnd_file.log,
328                         'No. of Messages: ' || l_msg_count || ', Message: ' ||
329                         l_msg_data ||
330                         ' From pos_product_service_utl_pkg.add_new_ps_req API.');
331       RETURN;
332     END IF;
333 
334     -- If the request_status is "APPROVED" then do the following
335     -- IF (p_vendor_prodsrv_rec.request_status = 'APPROVED') THEN
336 
337     -- Get the mapping_id using the following SQLL
338     SELECT mapping_id
339     INTO   l_mapping_id
340     FROM   pos_supplier_mappings
341     WHERE  vendor_id = p_vendor_prodsrv_rec.vendor_id
342     AND    party_id = p_party_id;
343 
344     pos_product_service_utl_pkg.initialize(x_status        => l_status,
345                                            x_error_message => l_error_message);
346 
347     SELECT rtrim(nvl2(p_vendor_prodsrv_rec.segment1,
348                       p_vendor_prodsrv_rec.segment1 || '.',
349                       p_vendor_prodsrv_rec.segment1) ||
350                  nvl2(p_vendor_prodsrv_rec.segment2,
351                       p_vendor_prodsrv_rec.segment2 || '.',
352                       p_vendor_prodsrv_rec.segment2) ||
353                  nvl2(p_vendor_prodsrv_rec.segment3,
354                       p_vendor_prodsrv_rec.segment3 || '.',
355                       p_vendor_prodsrv_rec.segment3) ||
356                  nvl2(p_vendor_prodsrv_rec.segment4,
357                       p_vendor_prodsrv_rec.segment4 || '.',
358                       p_vendor_prodsrv_rec.segment4) ||
359                  nvl2(p_vendor_prodsrv_rec.segment5,
360                       p_vendor_prodsrv_rec.segment5 || '.',
361                       p_vendor_prodsrv_rec.segment5) ||
362                  nvl2(p_vendor_prodsrv_rec.segment6,
363                       p_vendor_prodsrv_rec.segment6 || '.',
364                       p_vendor_prodsrv_rec.segment6) ||
365                  nvl2(p_vendor_prodsrv_rec.segment7,
366                       p_vendor_prodsrv_rec.segment7 || '.',
367                       p_vendor_prodsrv_rec.segment7) ||
368                  nvl2(p_vendor_prodsrv_rec.segment8,
369                       p_vendor_prodsrv_rec.segment8 || '.',
370                       p_vendor_prodsrv_rec.segment8) ||
371                  nvl2(p_vendor_prodsrv_rec.segment9,
372                       p_vendor_prodsrv_rec.segment9 || '.',
373                       p_vendor_prodsrv_rec.segment9) ||
374                  nvl2(p_vendor_prodsrv_rec.segment10,
375                       p_vendor_prodsrv_rec.segment10 || '.',
376                       p_vendor_prodsrv_rec.segment10) ||
377                  nvl2(p_vendor_prodsrv_rec.segment11,
378                       p_vendor_prodsrv_rec.segment11 || '.',
379                       p_vendor_prodsrv_rec.segment11) ||
380                  nvl2(p_vendor_prodsrv_rec.segment12,
381                       p_vendor_prodsrv_rec.segment12 || '.',
382                       p_vendor_prodsrv_rec.segment12) ||
383                  nvl2(p_vendor_prodsrv_rec.segment13,
384                       p_vendor_prodsrv_rec.segment13 || '.',
385                       p_vendor_prodsrv_rec.segment13) ||
386                  nvl2(p_vendor_prodsrv_rec.segment14,
387                       p_vendor_prodsrv_rec.segment14 || '.',
388                       p_vendor_prodsrv_rec.segment14) ||
389                  nvl2(p_vendor_prodsrv_rec.segment15,
390                       p_vendor_prodsrv_rec.segment15 || '.',
391                       p_vendor_prodsrv_rec.segment15) ||
392                  nvl2(p_vendor_prodsrv_rec.segment16,
393                       p_vendor_prodsrv_rec.segment16 || '.',
394                       p_vendor_prodsrv_rec.segment16) ||
395                  nvl2(p_vendor_prodsrv_rec.segment17,
396                       p_vendor_prodsrv_rec.segment17 || '.',
397                       p_vendor_prodsrv_rec.segment17) ||
398                  nvl2(p_vendor_prodsrv_rec.segment18,
399                       p_vendor_prodsrv_rec.segment18 || '.',
400                       p_vendor_prodsrv_rec.segment18) ||
401                  nvl2(p_vendor_prodsrv_rec.segment19,
402                       p_vendor_prodsrv_rec.segment19 || '.',
403                       p_vendor_prodsrv_rec.segment19) ||
404                  nvl2(p_vendor_prodsrv_rec.segment20,
405                       p_vendor_prodsrv_rec.segment20 || '.',
406                       p_vendor_prodsrv_rec.segment20),
407                  '.')
408     INTO   l_segment_concat
409     FROM   dual;
410 
411     l_req_id := pos_product_service_utl_pkg.get_requestid(x_segment_code => l_segment_concat,
412                                                           x_mapp_id      => l_mapping_id);
413 
414     -- Using the request_id make a call to the following  Api to approve the data and insert it into the
415     -- pos_sup_products_services table
416     pos_profile_change_request_pkg.approve_ps_req(p_request_id    => l_req_id,
417                                                   x_return_status => l_return_status,
418                                                   x_msg_count     => l_msg_count,
419                                                   x_msg_data      => l_msg_data);
420 
421     IF x_return_status <> fnd_api.g_ret_sts_success THEN
422       fnd_file.put_line(fnd_file.log,
423                         'No. of Messages: ' || l_msg_count || ', Message: ' ||
424                         l_msg_data ||
425                         ' From pos_profile_change_request_pkg.approve_ps_req API.');
426       RETURN;
427     END IF;
428     --END IF;
429 
430   EXCEPTION
431     WHEN OTHERS THEN
432       x_return_status := fnd_api.g_ret_sts_unexp_error;
433       fnd_msg_pub.count_and_get(p_count => x_msg_count,
434                                 p_data  => x_msg_data);
435   END create_prod_serv;
436 
437   FUNCTION get_prod_serv_rec
438   (
439     p_from_vendor_id    IN ap_suppliers.vendor_id%TYPE,
440     p_to_vendor_id      IN ap_suppliers.vendor_id%TYPE,
441     p_classification_id IN pos_bus_class_attr.classification_id%TYPE,
442     x_return_status     OUT NOCOPY VARCHAR2,
443     x_msg_count         OUT NOCOPY NUMBER,
444     x_msg_data          OUT NOCOPY VARCHAR2,
445     x_prod_services_rec OUT NOCOPY pos_sup_products_services%ROWTYPE
446   ) RETURN NUMBER IS
447   BEGIN
448     x_return_status := fnd_api.g_ret_sts_success;
449 
450     SELECT --classification_id,
451      p_to_vendor_id,
452      segment1,
453      segment2,
454      segment3,
455      segment4,
456      segment5,
457      segment6,
458      segment7,
459      segment8,
460      segment9,
461      segment10,
462      segment11,
463      segment12,
464      segment13,
465      segment14,
466      segment15,
467      segment16,
468      segment17,
469      segment18,
470      segment19,
471      segment20,
472      status,
473      segment_definition
474     INTO   --x_prod_services_rec . classification_id,
475            x_prod_services_rec.vendor_id,
476            x_prod_services_rec.segment1,
477            x_prod_services_rec.segment2,
478            x_prod_services_rec.segment3,
479            x_prod_services_rec.segment4,
480            x_prod_services_rec.segment5,
481            x_prod_services_rec.segment6,
482            x_prod_services_rec.segment7,
483            x_prod_services_rec.segment8,
484            x_prod_services_rec.segment9,
485            x_prod_services_rec.segment10,
486            x_prod_services_rec.segment11,
487            x_prod_services_rec.segment12,
488            x_prod_services_rec.segment13,
489            x_prod_services_rec.segment14,
490            x_prod_services_rec.segment15,
491            x_prod_services_rec.segment16,
492            x_prod_services_rec.segment17,
493            x_prod_services_rec.segment18,
494            x_prod_services_rec.segment19,
495            x_prod_services_rec.segment20,
496            x_prod_services_rec.status,
497            x_prod_services_rec.segment_definition
498     FROM   pos_sup_products_services
499     WHERE  vendor_id = p_from_vendor_id
500     AND    classification_id = p_classification_id
501           /* Picking the products and services that are not already
502           associated with the To Party*/
503     AND    (segment1, segment2, segment3, segment4, segment5, segment6,
504            segment7, segment8, segment9, segment10, segment11, segment12,
505            segment13, segment14, segment15, segment16, segment17,
506            segment18, segment19, segment20, segment_definition) NOT IN
507            (SELECT segment1,
508                     segment2,
509                     segment3,
510                     segment4,
511                     segment5,
512                     segment6,
513                     segment7,
514                     segment8,
515                     segment9,
516                     segment10,
517                     segment11,
518                     segment12,
519                     segment13,
520                     segment14,
521                     segment15,
522                     segment16,
523                     segment17,
524                     segment18,
525                     segment19,
526                     segment20,
527                     segment_definition
528              FROM   pos_sup_products_services
529              WHERE  vendor_id = p_to_vendor_id);
530 
531     RETURN 1;
532 
533   EXCEPTION
534     WHEN no_data_found THEN
535       RETURN 0;
536     WHEN OTHERS THEN
537       x_return_status := fnd_api.g_ret_sts_unexp_error;
538 
539       fnd_msg_pub.count_and_get(p_count => x_msg_count,
540                                 p_data  => x_msg_data);
541       RETURN 0;
542   END get_prod_serv_rec;
543 
544   PROCEDURE prod_service_merge
545   (
546     p_entity_name        IN VARCHAR2,
547     p_from_id            IN NUMBER,
548     x_to_id              IN OUT NOCOPY NUMBER,
549     p_from_fk_id         IN NUMBER,
550     p_to_fk_id           IN NUMBER,
551     p_parent_entity_name IN VARCHAR2,
552     p_batch_id           IN NUMBER,
553     p_batch_party_id     IN NUMBER,
554     x_return_status      OUT NOCOPY VARCHAR2
555   ) IS
556     l_prod_services_rec pos_sup_products_services%ROWTYPE;
557     l_from_vendor_id    NUMBER;
558     l_to_vendor_id      NUMBER;
559     l_msg_count         NUMBER;
560     l_msg_data          VARCHAR2(2000);
561     l_row_count         NUMBER := 0;
562   BEGIN
563     x_return_status := fnd_api.g_ret_sts_success;
564 
565     fnd_file.put_line(fnd_file.log,
566                       'Inside POS_MERGE_SUPPLIER_PKG.prod_service_merge p_to_fk_id: ' ||
567                       p_to_fk_id || ' p_from_fk_id: ' || p_from_fk_id ||
568                       ' p_from_id : ' || p_from_id);
569 
570     SELECT vendor_id
571     INTO   l_from_vendor_id
572     FROM   ap_suppliers
573     WHERE  party_id = p_from_fk_id;
574 
575     SELECT vendor_id
576     INTO   l_to_vendor_id
577     FROM   ap_suppliers
578     WHERE  party_id = p_to_fk_id;
579 
580     /* Set the status to MERGED */
581     UPDATE pos_sup_products_services
582     SET    status            = 'M',
583            last_update_date  = SYSDATE,
584            last_updated_by   = hz_utility_pub.user_id,
585            last_update_login = hz_utility_pub.last_update_login
586     WHERE  vendor_id = l_from_vendor_id
587     AND    classification_id = p_from_id;
588 
589     DELETE FROM pos_supplier_mappings a
590     WHERE  a.party_id = p_to_fk_id
591     AND    a.vendor_id <> l_to_vendor_id
592     AND    EXISTS (SELECT 1
593             FROM   pos_supplier_mappings b
594             WHERE  b.party_id = p_to_fk_id
595             AND    vendor_id = l_to_vendor_id);
596 
597     UPDATE pos_supplier_mappings
598     SET    vendor_id         = l_to_vendor_id,
599            last_updated_by   = fnd_global.user_id,
600            last_update_date  = SYSDATE,
601            last_update_login = fnd_global.login_id
602     WHERE  mapping_id IN (SELECT mapping_id
603                           FROM   pos_supplier_mappings
604                           WHERE  party_id = p_to_fk_id);
605 
606     /* Get the details for the from party id */
607 
608     l_row_count := get_prod_serv_rec(l_from_vendor_id,
609                                      l_to_vendor_id,
610                                      p_from_id,
611                                      x_return_status,
612                                      l_msg_count,
613                                      l_msg_data,
614                                      l_prod_services_rec);
615 
616     IF x_return_status <> fnd_api.g_ret_sts_success THEN
617       fnd_message.set_name('AR', 'HZ_MERGE_SQL_ERROR');
618       fnd_message.set_token('ERROR',
619                             'Cannot get classification ID : ' || p_from_id);
620       fnd_msg_pub.add;
621 
622       fnd_file.put_line(fnd_file.log,
623                         'No. of Messages: ' || l_msg_count || ', Message: ' ||
624                         l_msg_data || ' From get_prod_serv_rec API.');
625       x_return_status := fnd_api.g_ret_sts_error;
626 
627       RETURN;
628     END IF;
629 
630     IF (l_row_count <> 0) THEN
631       create_prod_serv(l_prod_services_rec,
632                        p_to_fk_id,
633                        l_to_vendor_id,
634                        x_return_status,
635                        l_msg_count,
636                        l_msg_data);
637 
638       IF x_return_status <> fnd_api.g_ret_sts_success THEN
639         fnd_message.set_name('AR', 'HZ_MERGE_SQL_ERROR');
640         fnd_message.set_token('ERROR',
641                               'Cannot copy classification ID : ' ||
642                               p_from_id);
643         fnd_msg_pub.add;
644 
645         fnd_file.put_line(fnd_file.log,
646                           'No. of Messages: ' || l_msg_count ||
647                           ', Message: ' || l_msg_data ||
648                           ' From create_prod_serv API.');
649         x_return_status := fnd_api.g_ret_sts_error;
650         RETURN;
651       END IF;
652     END IF;
653 
654   EXCEPTION
655     WHEN OTHERS THEN
656       x_return_status := fnd_api.g_ret_sts_unexp_error;
657   END prod_service_merge;
658 
659   PROCEDURE party_contact_merge
660   (
661     p_entity_name        IN VARCHAR2,
662     p_from_id            IN NUMBER,
663     x_to_id              IN OUT NOCOPY NUMBER,
664     p_from_fk_id         IN NUMBER,
665     p_to_fk_id           IN NUMBER,
666     p_parent_entity_name IN VARCHAR2,
667     p_batch_id           IN NUMBER,
668     p_batch_party_id     IN NUMBER,
669     x_return_status      OUT NOCOPY VARCHAR2
670   ) IS
671     l_msg_count                  NUMBER;
672     l_msg_data                   VARCHAR2(2000);
673     l_party_id                   NUMBER;
674     l_party_usg_rec              hz_party_usg_assignment_pvt.party_usg_assignment_rec_type;
675     l_party_usg_validation_level NUMBER;
676 
677   BEGIN
678     x_return_status := fnd_api.g_ret_sts_success;
679 
680     fnd_file.put_line(fnd_file.log,
681                       'Inside POS_MERGE_SUPPLIER_PKG.party_contact_merge p_to_fk_id: ' ||
682                       p_to_fk_id || ' p_from_fk_id: ' || p_from_fk_id ||
683                       ' p_from_id : ' || p_from_id);
684 
685     l_party_id := p_to_fk_id;
686 
687     l_party_usg_validation_level      := hz_party_usg_assignment_pvt.g_valid_level_none;
688     l_party_usg_rec.party_id          := l_party_id;
689     l_party_usg_rec.party_usage_code  := 'SUPPLIER_CONTACT';
690     l_party_usg_rec.created_by_module := 'AP_SUPPLIERS_MERGE';
691 
692     /* Enable party contact as supplier contact by
693     setting usage code as SUPPLIER_CONTACT */
694     hz_party_usg_assignment_pvt.assign_party_usage(p_validation_level         => l_party_usg_validation_level,
695                                                    p_party_usg_assignment_rec => l_party_usg_rec,
696                                                    x_return_status            => x_return_status,
697                                                    x_msg_count                => l_msg_count,
698                                                    x_msg_data                 => l_msg_data);
699 
700     IF x_return_status <> fnd_api.g_ret_sts_success THEN
701       fnd_file.put_line(fnd_file.log,
702                         'No. of Messages: ' || l_msg_count || ', Message: ' ||
703                         l_msg_data ||
704                         ' From hz_party_usg_assignment_pvt.assign_party_usage API.');
705     END IF;
706 
707   EXCEPTION
708     WHEN OTHERS THEN
709       x_return_status := fnd_api.g_ret_sts_unexp_error;
710   END party_contact_merge;
711 
712   PROCEDURE create_bank_dtls
713   (
714     p_init_msg_list      IN VARCHAR2 := fnd_api.g_false,
715     p_payee              IN iby_disbursement_setup_pub.payeecontext_rec_type,
716     p_assignment_attribs IN iby_fndcpt_setup_pub.pmtinstrassignment_rec_type,
717     x_return_status      OUT NOCOPY VARCHAR2,
718     x_msg_count          OUT NOCOPY NUMBER,
719     x_msg_data           OUT NOCOPY VARCHAR2
720   ) IS
721     l_assign_id NUMBER;
722     l_response  iby_fndcpt_common_pub.result_rec_type;
723   BEGIN
724     x_return_status := fnd_api.g_ret_sts_success;
725     BEGIN
726       iby_disbursement_setup_pub.set_payee_instr_assignment(p_api_version        => '1.0',
727                                                             x_return_status      => x_return_status,
728                                                             x_msg_count          => x_msg_count,
729                                                             x_msg_data           => x_msg_data,
730                                                             p_payee              => p_payee,
731                                                             p_assignment_attribs => p_assignment_attribs,
732                                                             x_assign_id          => l_assign_id,
733                                                             x_response           => l_response);
734 
735       IF x_return_status <> fnd_api.g_ret_sts_success THEN
736         fnd_file.put_line(fnd_file.log,
737                           'No. of Messages: ' || x_msg_count ||
738                           ', Message: ' || x_msg_data ||
739                           ' From iby_disbursement_setup_pub.set_payee_instr_assignment API.');
740       END IF;
741     END;
742 
743   EXCEPTION
744     WHEN OTHERS THEN
745       x_return_status := fnd_api.g_ret_sts_unexp_error;
746       fnd_msg_pub.count_and_get(p_count => x_msg_count,
747                                 p_data  => x_msg_data);
748   END create_bank_dtls;
749 
750   PROCEDURE get_bank_dtls_rec
751   (
752     p_init_msg_list     IN VARCHAR2 := fnd_api.g_false,
753     p_from_party        IN hz_parties.party_id%TYPE,
754     p_to_party          IN hz_parties.party_id%TYPE,
755     x_bank_dtls_rec_tbl OUT NOCOPY bank_dtls_tab_type,
756     x_return_status     OUT NOCOPY VARCHAR2,
757     x_msg_count         OUT NOCOPY NUMBER,
758     x_msg_data          OUT NOCOPY VARCHAR2
759   ) IS
760    -- Bug 14261475 - merge performance: full table scan on iby_pmt_instr_uses_all
761     CURSOR bank_cur IS
762       SELECT paymentinstrumentuseseo.instrument_type,
763              paymentinstrumentuseseo.instrument_id,
764              paymentinstrumentuseseo.payment_function
765       FROM   iby_pmt_instr_uses_all  paymentinstrumentuseseo
766              --iby_ext_bank_accounts_v ibyextbankaccts
767       WHERE  --paymentinstrumentuseseo.instrument_id = ibyextbankaccts.bank_account_id AND
768        paymentinstrumentuseseo.instrument_type = 'BANKACCOUNT'
769        --Enforce the IBY_PMT_INSTR_USES_ALL_N1 index PAYMENT_FLOW,EXT_PMT_PARTY_ID
770       AND    paymentinstrumentuseseo.payment_flow IN
771              (SELECT lookup_code FROM fnd_lookup_values
772               WHERE  lookup_type = 'IBY_PAYMENT_FLOW'
773               AND    language = userenv('LANG'))
774       AND    ext_pmt_party_id IN
775              (SELECT ext_payee_id
776                FROM   iby_external_payees_all
777                WHERE  payee_party_id = p_from_party
778                AND    org_id IS NULL
779                AND    party_site_id IS NULL
780                AND    supplier_site_id IS NULL)
781       AND    /* Excluding the accounts that are already associated*/
782              paymentinstrumentuseseo.instrument_id NOT IN
783              (SELECT instrument_id
784               FROM   iby_external_payees_all extpayee,
785                      iby_pmt_instr_uses_all  instr
786               WHERE  extpayee.payee_party_id = p_to_party
787               AND    extpayee.org_id IS NULL
788               AND    extpayee.party_site_id IS NULL
789               AND    extpayee.supplier_site_id IS NULL
790               AND    extpayee.ext_payee_id = ext_pmt_party_id
791               AND    instr.instrument_type = 'BANKACCOUNT');
792 
793   BEGIN
794     x_return_status := fnd_api.g_ret_sts_success;
795 
796     OPEN bank_cur;
797     FETCH bank_cur BULK COLLECT
798       INTO x_bank_dtls_rec_tbl;
799     CLOSE bank_cur;
800 
801   EXCEPTION
802     WHEN OTHERS THEN
803       x_return_status := fnd_api.g_ret_sts_unexp_error;
804       fnd_msg_pub.count_and_get(p_count => x_msg_count,
805                                 p_data  => x_msg_data);
806   END get_bank_dtls_rec;
807 
808   PROCEDURE bank_dtls_merge
809   (
810     p_entity_name        IN VARCHAR2,
811     p_from_id            IN NUMBER,
812     x_to_id              IN OUT NOCOPY NUMBER,
813     p_from_fk_id         IN NUMBER,
814     p_to_fk_id           IN NUMBER,
815     p_parent_entity_name IN VARCHAR2,
816     p_batch_id           IN NUMBER,
817     p_batch_party_id     IN NUMBER,
818     x_return_status      OUT NOCOPY VARCHAR2
819   ) IS
820     l_return_status VARCHAR2(100);
821     l_msg_count     NUMBER;
822     l_msg_data      VARCHAR2(100);
823 
824     l_bank_dtls_rec_tbl bank_dtls_tab_type;
825     l_rec               iby_disbursement_setup_pub.payeecontext_rec_type;
826     l_assign            iby_fndcpt_setup_pub.pmtinstrassignment_rec_type;
827   BEGIN
828     x_return_status := fnd_api.g_ret_sts_success;
829 
830     fnd_file.put_line(fnd_file.log,
831                       'Inside POS_MERGE_SUPPLIER_PKG.bank_dtls_merge p_to_fk_id: ' ||
832                       p_to_fk_id || ' p_to_fk_id: ' || p_from_fk_id);
833 
834     get_bank_dtls_rec(p_init_msg_list     => 'T',
835                       p_from_party        => p_from_fk_id,
836                       p_to_party          => p_to_fk_id,
837                       x_bank_dtls_rec_tbl => l_bank_dtls_rec_tbl,
838                       x_return_status     => x_return_status,
839                       x_msg_count         => l_msg_count,
840                       x_msg_data          => l_msg_data);
841 
842     IF x_return_status <> fnd_api.g_ret_sts_success THEN
843       fnd_message.set_name('AR', 'HZ_MERGE_SQL_ERROR');
844       fnd_message.set_token('ERROR',
845                             'Cannot get Bank Details : ' || p_from_id);
846       fnd_msg_pub.add;
847 
848       fnd_file.put_line(fnd_file.log,
849                         'No. of Messages: ' || l_msg_count || ', Message: ' ||
850                         l_msg_data || ' From get_bank_dtls_rec API.');
851       x_return_status := fnd_api.g_ret_sts_error;
852 
853       RETURN;
854     END IF;
855 
856     -- Add all the accounts in the collection
857 
858     FOR cntr IN 1 .. l_bank_dtls_rec_tbl.count LOOP
859 
860       l_rec.party_id         := p_to_fk_id;
861       l_rec.payment_function := l_bank_dtls_rec_tbl(cntr).payment_function;
862       l_rec.org_type         := NULL;
863       l_rec.org_id           := NULL;
864       l_rec.party_site_id    := NULL;
865       l_rec.supplier_site_id := NULL;
866 
867       l_assign.instrument.instrument_type := l_bank_dtls_rec_tbl(cntr)
868                                              .instrument_type;
869       l_assign.instrument.instrument_id   := l_bank_dtls_rec_tbl(cntr)
870                                              .instrument_id;
871 
872       create_bank_dtls(p_init_msg_list      => 'T',
873                        p_payee              => l_rec,
874                        p_assignment_attribs => l_assign,
875                        x_return_status      => x_return_status,
876                        x_msg_count          => l_msg_count,
877                        x_msg_data           => l_msg_data);
878 
879       IF x_return_status <> fnd_api.g_ret_sts_success THEN
880         fnd_message.set_name('AR', 'HZ_MERGE_SQL_ERROR');
881         fnd_message.set_token('ERROR',
882                               'Cannot copy Bank Details : ' || p_from_id);
883         fnd_msg_pub.add;
884 
885         fnd_file.put_line(fnd_file.log,
886                           'No. of Messages: ' || l_msg_count ||
887                           ', Message: ' || l_msg_data ||
888                           ' From create_bank_dtls API.');
889         x_return_status := fnd_api.g_ret_sts_error;
890         RETURN;
891       END IF;
892     END LOOP;
893 
894   EXCEPTION
895     WHEN OTHERS THEN
896       x_return_status := fnd_api.g_ret_sts_unexp_error;
897   END bank_dtls_merge;
898 
899   PROCEDURE get_batch_user_attr_data
900   (
901     p_to_party_id        IN NUMBER,
902     p_batch_id           IN NUMBER,
903     p_multirow_flag      IN VARCHAR2,
904     p_attribute_group_id IN NUMBER,
905     p_data_level_id      IN NUMBER,
906     x_uda_rec_tbl        OUT NOCOPY uda_rec_tbl_type,
907     x_return_status      OUT NOCOPY VARCHAR2,
908     x_msg_count          OUT NOCOPY NUMBER,
909     x_msg_data           OUT NOCOPY VARCHAR2
910   ) IS
911     CURSOR multirow_cur IS
912       SELECT *
913       FROM   pos_supp_prof_ext_b
914       WHERE  attr_group_id = p_attribute_group_id
915       AND    data_level_id = p_data_level_id
916       AND    party_id IN ( -- Only from parties
917                           SELECT from_party_id
918                           FROM   hz_merge_parties
919                           WHERE  batch_id = p_batch_id
920                                 --AND    merge_status = 'DONE'
921                           AND    merge_type <> 'SAME_PARTY_MERGE'
922                           AND    to_party_id = p_to_party_id)
923       ORDER  BY last_update_date;
924 
925     CURSOR singlerow_cur IS
926       SELECT *
927       FROM   (SELECT *
928               FROM   pos_supp_prof_ext_b
929               WHERE  attr_group_id = p_attribute_group_id
930               AND    data_level_id = p_data_level_id
931               AND    party_id IN
932                      (SELECT from_party_id
933                        FROM   hz_merge_parties
934                        WHERE  batch_id = p_batch_id
935                        AND    merge_type <> 'SAME_PARTY_MERGE'
936                        AND    to_party_id = p_to_party_id)
937               ORDER  BY last_update_date)
938       UNION ALL (SELECT *
939                  FROM   pos_supp_prof_ext_b
940                  WHERE  attr_group_id = p_attribute_group_id
941                  AND    data_level_id = p_data_level_id
942                  AND    party_id = p_to_party_id);
943   BEGIN
944     x_return_status := fnd_api.g_ret_sts_success;
945     /* If the attribute group is single row then we have to get the
946     data for the from as well as the to party.
947     For Multirow attribute we need to get the data only for the
948     from parties */
949 
950     IF (p_multirow_flag = 'Y') THEN
951 
952       /* Multirow processing */
953       /* Bulk collect the data into the collection defined as out
954       parameter*/
955       OPEN multirow_cur;
956       FETCH multirow_cur BULK COLLECT
957         INTO x_uda_rec_tbl;
958       CLOSE multirow_cur;
959     ELSE
960       /* single Row processing */
961       /* Bulk collect the data into the collection defined as out
962       parameter*/
963       OPEN singlerow_cur;
964       FETCH singlerow_cur BULK COLLECT
965         INTO x_uda_rec_tbl;
966       CLOSE singlerow_cur;
967 
968     END IF;
969 
970   EXCEPTION
971     WHEN OTHERS THEN
972       x_return_status := fnd_api.g_ret_sts_unexp_error;
973   END get_batch_user_attr_data;
974 
975   PROCEDURE get_party_site_attr_data
976   (
977     p_from_party_id      IN NUMBER,
978     p_to_party_id        IN NUMBER,
979     p_batch_id           IN NUMBER,
980     p_multirow_flag      IN VARCHAR2,
981     p_attribute_group_id IN NUMBER,
982     p_data_level_id      IN NUMBER,
983     x_uda_rec_tbl        OUT NOCOPY uda_rec_tbl_type,
984     x_return_status      OUT NOCOPY VARCHAR2,
985     x_msg_count          OUT NOCOPY NUMBER,
986     x_msg_data           OUT NOCOPY VARCHAR2
987   ) IS
988 
989     CURSOR multirow_cur IS
990       SELECT *
991       FROM   pos_supp_prof_ext_b
992       WHERE  attr_group_id = p_attribute_group_id
993       AND    data_level_id = p_data_level_id
994       AND    (party_id, pk1_value) IN
995              (SELECT fromparty.party_id,
996                       merge_from_entity_id
997                FROM   hz_merge_party_details site,
998                       hz_party_sites         fromparty,
999                       hz_party_sites         toparty,
1000                       hz_merge_parties       batch
1001                WHERE  fromparty.party_site_id = merge_from_entity_id
1002                AND    toparty.party_site_id = merge_to_entity_id
1003                AND    batch.batch_id = p_batch_id
1004                AND    batch.batch_party_id = site.batch_party_id
1005                AND    merge_to_entity_id IN
1006                       (SELECT merge_to_entity_id
1007                         FROM   hz_merge_party_details site2
1008                         WHERE  site2.batch_party_id = site.batch_party_id
1009                         AND    merge_from_entity_id = p_from_party_id))
1010       ORDER  BY last_update_date;
1011 
1012     CURSOR singlerow_cur IS
1013       SELECT *
1014       FROM   (SELECT *
1015               FROM   pos_supp_prof_ext_b
1016               WHERE  attr_group_id = p_attribute_group_id
1017               AND    data_level_id = p_data_level_id
1018               AND    (party_id, pk1_value) IN
1019                      (SELECT fromparty.party_id,
1020                               merge_from_entity_id
1021                        FROM   hz_merge_party_details site,
1022                               hz_party_sites         fromparty,
1023                               hz_party_sites         toparty,
1024                               hz_merge_parties       batch
1025                        WHERE  fromparty.party_site_id = merge_from_entity_id
1026                        AND    toparty.party_site_id = merge_to_entity_id
1027                        AND    batch.batch_id = p_batch_id
1028                        AND    batch.batch_party_id = site.batch_party_id
1029                        AND    merge_to_entity_id IN
1030                               (SELECT merge_to_entity_id
1031                                 FROM   hz_merge_party_details site2
1032                                 WHERE  site2.batch_party_id =
1033                                        site.batch_party_id
1034                                 AND    merge_from_entity_id = p_from_party_id))
1035               ORDER  BY last_update_date)
1036       UNION ALL
1037       SELECT *
1038       FROM   pos_supp_prof_ext_b
1039       WHERE  attr_group_id = p_attribute_group_id
1040       AND    data_level_id = p_data_level_id
1041       AND    pk1_value = p_to_party_id;
1042   BEGIN
1043     x_return_status := fnd_api.g_ret_sts_success;
1044 
1045     IF (p_multirow_flag = 'Y') THEN
1046       OPEN multirow_cur;
1047       FETCH multirow_cur BULK COLLECT
1048         INTO x_uda_rec_tbl;
1049       CLOSE multirow_cur;
1050     ELSE
1051       OPEN singlerow_cur;
1052       FETCH singlerow_cur BULK COLLECT
1053         INTO x_uda_rec_tbl;
1054       CLOSE singlerow_cur;
1055     END IF;
1056 
1057   EXCEPTION
1058     WHEN OTHERS THEN
1059       x_return_status := fnd_api.g_ret_sts_unexp_error;
1060   END get_party_site_attr_data;
1061 
1062   PROCEDURE get_supp_site_attr_data
1063   (
1064     p_from_party_id      IN NUMBER,
1065     p_to_party_id        IN NUMBER,
1066     p_multirow_flag      IN VARCHAR2,
1067     p_attribute_group_id IN NUMBER,
1068     p_data_level_id      IN NUMBER,
1069     x_uda_rec_tbl        OUT NOCOPY uda_rec_tbl_type,
1070     x_return_status      OUT NOCOPY VARCHAR2,
1071     x_msg_count          OUT NOCOPY NUMBER,
1072     x_msg_data           OUT NOCOPY VARCHAR2
1073   ) IS
1074 
1075     CURSOR multirow_cur IS
1076       SELECT *
1077       FROM   pos_supp_prof_ext_b
1078       WHERE  attr_group_id = p_attribute_group_id
1079       AND    data_level_id = p_data_level_id
1080       AND    pk2_value = p_from_party_id
1081       ORDER  BY last_update_date;
1082 
1083     CURSOR singlerow_cur IS
1084       SELECT *
1085       FROM   pos_supp_prof_ext_b
1086       WHERE  attr_group_id = p_attribute_group_id
1087       AND    data_level_id = p_data_level_id
1088       AND    pk2_value = p_from_party_id
1089       UNION ALL
1090       SELECT *
1091       FROM   pos_supp_prof_ext_b
1092       WHERE  attr_group_id = p_attribute_group_id
1093       AND    data_level_id = p_data_level_id
1094       AND    pk2_value = p_to_party_id;
1095   BEGIN
1096     x_return_status := fnd_api.g_ret_sts_success;
1097 
1098     IF (p_multirow_flag = 'Y') THEN
1099       OPEN multirow_cur;
1100       FETCH multirow_cur BULK COLLECT
1101         INTO x_uda_rec_tbl;
1102       CLOSE multirow_cur;
1103     ELSE
1104       OPEN singlerow_cur;
1105       FETCH singlerow_cur BULK COLLECT
1106         INTO x_uda_rec_tbl;
1107       CLOSE singlerow_cur;
1108     END IF;
1109 
1110   EXCEPTION
1111     WHEN OTHERS THEN
1112       x_return_status := fnd_api.g_ret_sts_unexp_error;
1113   END get_supp_site_attr_data;
1114 
1115   PROCEDURE build_uda_data_payload
1116   (
1117     p_attribute_group_id    IN NUMBER,
1118     p_attribute_group_type  IN VARCHAR2,
1119     p_attribute_group_name  IN VARCHAR2,
1120     p_row_identifier        IN NUMBER,
1121     p_uda_data_rec          IN pos_supp_prof_ext_b%ROWTYPE,
1122     x_attributes_data_table IN OUT NOCOPY ego_user_attr_data_table
1123   ) IS
1124 
1125     CURSOR get_attributes IS
1126       SELECT attr_name,
1127              database_column
1128       FROM   ego_attrs_v
1129       WHERE  application_id = 177
1130       AND    attr_group_name = p_attribute_group_name
1131       AND    attr_group_type = p_attribute_group_type;
1132 
1133   BEGIN
1134 
1135     /* Open the cursor and bulk collect the attributes information into
1136     a collection */
1137     OPEN get_attributes;
1138     FETCH get_attributes BULK COLLECT
1139       INTO attributes_coll;
1140     CLOSE get_attributes;
1141 
1142     /* Loop through the attributes collection and traverse the following case structure */
1143 
1144     FOR attrcntr IN 1 .. attributes_coll.count LOOP
1145       --x_attributes_data_table.extend;
1146       CASE attributes_coll(attrcntr).database_column
1147 
1148       /* Process Character attributes */
1149 
1150         WHEN 'C_EXT_ATTR1' THEN
1151           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1152                                                                       attributes_coll(attrcntr)
1153                                                                       .attr_name,
1154                                                                       p_uda_data_rec.c_ext_attr1 --ATTR_VALUE_STR
1155                                                                      ,
1156                                                                       NULL --ATTR_VALUE_NUM
1157                                                                      ,
1158                                                                       NULL --ATTR_VALUE_DATE
1159                                                                      ,
1160                                                                       NULL --ATTR_DISP_VALUE
1161                                                                      ,
1162                                                                       NULL --ATTR_UNIT_OF_MEASURE
1163                                                                      ,
1164                                                                       NULL);
1165         WHEN 'C_EXT_ATTR2' THEN
1166           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1167                                                                       attributes_coll(attrcntr)
1168                                                                       .attr_name,
1169                                                                       p_uda_data_rec.c_ext_attr2 --ATTR_VALUE_STR
1170                                                                      ,
1171                                                                       NULL --ATTR_VALUE_NUM
1172                                                                      ,
1173                                                                       NULL --ATTR_VALUE_DATE
1174                                                                      ,
1175                                                                       NULL --ATTR_DISP_VALUE
1176                                                                      ,
1177                                                                       NULL --ATTR_UNIT_OF_MEASURE
1178                                                                      ,
1179                                                                       NULL);
1180         WHEN 'C_EXT_ATTR3' THEN
1181           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1182                                                                       attributes_coll(attrcntr)
1183                                                                       .attr_name,
1184                                                                       p_uda_data_rec.c_ext_attr3 --ATTR_VALUE_STR
1185                                                                      ,
1186                                                                       NULL --ATTR_VALUE_NUM
1187                                                                      ,
1188                                                                       NULL --ATTR_VALUE_DATE
1189                                                                      ,
1190                                                                       NULL --ATTR_DISP_VALUE
1191                                                                      ,
1192                                                                       NULL --ATTR_UNIT_OF_MEASURE
1193                                                                      ,
1194                                                                       NULL);
1195         WHEN 'C_EXT_ATTR4' THEN
1196           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1197                                                                       attributes_coll(attrcntr)
1198                                                                       .attr_name,
1199                                                                       p_uda_data_rec.c_ext_attr4 --ATTR_VALUE_STR
1200                                                                      ,
1201                                                                       NULL --ATTR_VALUE_NUM
1202                                                                      ,
1203                                                                       NULL --ATTR_VALUE_DATE
1204                                                                      ,
1205                                                                       NULL --ATTR_DISP_VALUE
1206                                                                      ,
1207                                                                       NULL --ATTR_UNIT_OF_MEASURE
1208                                                                      ,
1209                                                                       NULL);
1210         WHEN 'C_EXT_ATTR5' THEN
1211           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1212                                                                       attributes_coll(attrcntr)
1213                                                                       .attr_name,
1214                                                                       p_uda_data_rec.c_ext_attr5 --ATTR_VALUE_STR
1215                                                                      ,
1216                                                                       NULL --ATTR_VALUE_NUM
1217                                                                      ,
1218                                                                       NULL --ATTR_VALUE_DATE
1219                                                                      ,
1220                                                                       NULL --ATTR_DISP_VALUE
1221                                                                      ,
1222                                                                       NULL --ATTR_UNIT_OF_MEASURE
1223                                                                      ,
1224                                                                       NULL);
1225         WHEN 'C_EXT_ATTR6' THEN
1226           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1227                                                                       attributes_coll(attrcntr)
1228                                                                       .attr_name,
1229                                                                       p_uda_data_rec.c_ext_attr6 --ATTR_VALUE_STR
1230                                                                      ,
1231                                                                       NULL --ATTR_VALUE_NUM
1232                                                                      ,
1233                                                                       NULL --ATTR_VALUE_DATE
1234                                                                      ,
1235                                                                       NULL --ATTR_DISP_VALUE
1236                                                                      ,
1237                                                                       NULL --ATTR_UNIT_OF_MEASURE
1238                                                                      ,
1239                                                                       NULL);
1240         WHEN 'C_EXT_ATTR7' THEN
1241           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1242                                                                       attributes_coll(attrcntr)
1243                                                                       .attr_name,
1244                                                                       p_uda_data_rec.c_ext_attr7 --ATTR_VALUE_STR
1245                                                                      ,
1246                                                                       NULL --ATTR_VALUE_NUM
1247                                                                      ,
1248                                                                       NULL --ATTR_VALUE_DATE
1249                                                                      ,
1250                                                                       NULL --ATTR_DISP_VALUE
1251                                                                      ,
1252                                                                       NULL --ATTR_UNIT_OF_MEASURE
1253                                                                      ,
1254                                                                       NULL);
1255         WHEN 'C_EXT_ATTR8' THEN
1256           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1257                                                                       attributes_coll(attrcntr)
1258                                                                       .attr_name,
1259                                                                       p_uda_data_rec.c_ext_attr8 --ATTR_VALUE_STR
1260                                                                      ,
1261                                                                       NULL --ATTR_VALUE_NUM
1262                                                                      ,
1263                                                                       NULL --ATTR_VALUE_DATE
1264                                                                      ,
1265                                                                       NULL --ATTR_DISP_VALUE
1266                                                                      ,
1267                                                                       NULL --ATTR_UNIT_OF_MEASURE
1268                                                                      ,
1269                                                                       NULL);
1270 
1271         WHEN 'C_EXT_ATTR9' THEN
1272           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1273                                                                       attributes_coll(attrcntr)
1274                                                                       .attr_name,
1275                                                                       p_uda_data_rec.c_ext_attr9 --ATTR_VALUE_STR
1276                                                                      ,
1277                                                                       NULL --ATTR_VALUE_NUM
1278                                                                      ,
1279                                                                       NULL --ATTR_VALUE_DATE
1280                                                                      ,
1281                                                                       NULL --ATTR_DISP_VALUE
1282                                                                      ,
1283                                                                       NULL --ATTR_UNIT_OF_MEASURE
1284                                                                      ,
1285                                                                       NULL);
1286         WHEN 'C_EXT_ATTR10' THEN
1287           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1288                                                                       attributes_coll(attrcntr)
1289                                                                       .attr_name,
1290                                                                       p_uda_data_rec.c_ext_attr10 --ATTR_VALUE_STR
1291                                                                      ,
1292                                                                       NULL --ATTR_VALUE_NUM
1293                                                                      ,
1294                                                                       NULL --ATTR_VALUE_DATE
1295                                                                      ,
1296                                                                       NULL --ATTR_DISP_VALUE
1297                                                                      ,
1298                                                                       NULL --ATTR_UNIT_OF_MEASURE
1299                                                                      ,
1300                                                                       NULL);
1301         WHEN 'C_EXT_ATTR11' THEN
1302           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1303                                                                       attributes_coll(attrcntr)
1304                                                                       .attr_name,
1305                                                                       p_uda_data_rec.c_ext_attr11 --ATTR_VALUE_STR
1306                                                                      ,
1307                                                                       NULL --ATTR_VALUE_NUM
1308                                                                      ,
1309                                                                       NULL --ATTR_VALUE_DATE
1310                                                                      ,
1311                                                                       NULL --ATTR_DISP_VALUE
1312                                                                      ,
1313                                                                       NULL --ATTR_UNIT_OF_MEASURE
1314                                                                      ,
1315                                                                       NULL);
1316         WHEN 'C_EXT_ATTR12' THEN
1317           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1318                                                                       attributes_coll(attrcntr)
1319                                                                       .attr_name,
1320                                                                       p_uda_data_rec.c_ext_attr12 --ATTR_VALUE_STR
1321                                                                      ,
1322                                                                       NULL --ATTR_VALUE_NUM
1323                                                                      ,
1324                                                                       NULL --ATTR_VALUE_DATE
1325                                                                      ,
1326                                                                       NULL --ATTR_DISP_VALUE
1327                                                                      ,
1328                                                                       NULL --ATTR_UNIT_OF_MEASURE
1329                                                                      ,
1330                                                                       NULL);
1331         WHEN 'C_EXT_ATTR13' THEN
1332           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1333                                                                       attributes_coll(attrcntr)
1334                                                                       .attr_name,
1335                                                                       p_uda_data_rec.c_ext_attr13 --ATTR_VALUE_STR
1336                                                                      ,
1337                                                                       NULL --ATTR_VALUE_NUM
1338                                                                      ,
1339                                                                       NULL --ATTR_VALUE_DATE
1340                                                                      ,
1341                                                                       NULL --ATTR_DISP_VALUE
1342                                                                      ,
1343                                                                       NULL --ATTR_UNIT_OF_MEASURE
1344                                                                      ,
1345                                                                       NULL);
1346         WHEN 'C_EXT_ATTR14' THEN
1347           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1348                                                                       attributes_coll(attrcntr)
1349                                                                       .attr_name,
1350                                                                       p_uda_data_rec.c_ext_attr14 --ATTR_VALUE_STR
1351                                                                      ,
1352                                                                       NULL --ATTR_VALUE_NUM
1353                                                                      ,
1354                                                                       NULL --ATTR_VALUE_DATE
1355                                                                      ,
1356                                                                       NULL --ATTR_DISP_VALUE
1357                                                                      ,
1358                                                                       NULL --ATTR_UNIT_OF_MEASURE
1359                                                                      ,
1360                                                                       NULL);
1361         WHEN 'C_EXT_ATTR15' THEN
1362           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1363                                                                       attributes_coll(attrcntr)
1364                                                                       .attr_name,
1365                                                                       p_uda_data_rec.c_ext_attr15 --ATTR_VALUE_STR
1366                                                                      ,
1367                                                                       NULL --ATTR_VALUE_NUM
1368                                                                      ,
1369                                                                       NULL --ATTR_VALUE_DATE
1370                                                                      ,
1371                                                                       NULL --ATTR_DISP_VALUE
1372                                                                      ,
1373                                                                       NULL --ATTR_UNIT_OF_MEASURE
1374                                                                      ,
1375                                                                       NULL);
1376         WHEN 'C_EXT_ATTR16' THEN
1377           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1378                                                                       attributes_coll(attrcntr)
1379                                                                       .attr_name,
1380                                                                       p_uda_data_rec.c_ext_attr16 --ATTR_VALUE_STR
1381                                                                      ,
1382                                                                       NULL --ATTR_VALUE_NUM
1383                                                                      ,
1384                                                                       NULL --ATTR_VALUE_DATE
1385                                                                      ,
1386                                                                       NULL --ATTR_DISP_VALUE
1387                                                                      ,
1388                                                                       NULL --ATTR_UNIT_OF_MEASURE
1389                                                                      ,
1390                                                                       NULL);
1391         WHEN 'C_EXT_ATTR17' THEN
1392           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1393                                                                       attributes_coll(attrcntr)
1394                                                                       .attr_name,
1395                                                                       p_uda_data_rec.c_ext_attr17 --ATTR_VALUE_STR
1396                                                                      ,
1397                                                                       NULL --ATTR_VALUE_NUM
1398                                                                      ,
1399                                                                       NULL --ATTR_VALUE_DATE
1400                                                                      ,
1401                                                                       NULL --ATTR_DISP_VALUE
1402                                                                      ,
1403                                                                       NULL --ATTR_UNIT_OF_MEASURE
1404                                                                      ,
1405                                                                       NULL);
1406         WHEN 'C_EXT_ATTR18' THEN
1407           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1408                                                                       attributes_coll(attrcntr)
1409                                                                       .attr_name,
1410                                                                       p_uda_data_rec.c_ext_attr18 --ATTR_VALUE_STR
1411                                                                      ,
1412                                                                       NULL --ATTR_VALUE_NUM
1413                                                                      ,
1414                                                                       NULL --ATTR_VALUE_DATE
1415                                                                      ,
1416                                                                       NULL --ATTR_DISP_VALUE
1417                                                                      ,
1418                                                                       NULL --ATTR_UNIT_OF_MEASURE
1419                                                                      ,
1420                                                                       NULL);
1421         WHEN 'C_EXT_ATTR19' THEN
1422           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1423                                                                       attributes_coll(attrcntr)
1424                                                                       .attr_name,
1425                                                                       p_uda_data_rec.c_ext_attr19 --ATTR_VALUE_STR
1426                                                                      ,
1427                                                                       NULL --ATTR_VALUE_NUM
1428                                                                      ,
1429                                                                       NULL --ATTR_VALUE_DATE
1430                                                                      ,
1431                                                                       NULL --ATTR_DISP_VALUE
1432                                                                      ,
1433                                                                       NULL --ATTR_UNIT_OF_MEASURE
1434                                                                      ,
1435                                                                       NULL);
1436 
1437         WHEN 'C_EXT_ATTR20' THEN
1438           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1439                                                                       attributes_coll(attrcntr)
1440                                                                       .attr_name,
1441                                                                       p_uda_data_rec.c_ext_attr20 --ATTR_VALUE_STR
1442                                                                      ,
1443                                                                       NULL --ATTR_VALUE_NUM
1444                                                                      ,
1445                                                                       NULL --ATTR_VALUE_DATE
1446                                                                      ,
1447                                                                       NULL --ATTR_DISP_VALUE
1448                                                                      ,
1449                                                                       NULL --ATTR_UNIT_OF_MEASURE
1450                                                                      ,
1451                                                                       NULL);
1452         WHEN 'C_EXT_ATTR21' THEN
1453           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1454                                                                       attributes_coll(attrcntr)
1455                                                                       .attr_name,
1456                                                                       p_uda_data_rec.c_ext_attr21 --ATTR_VALUE_STR
1457                                                                      ,
1458                                                                       NULL --ATTR_VALUE_NUM
1459                                                                      ,
1460                                                                       NULL --ATTR_VALUE_DATE
1461                                                                      ,
1462                                                                       NULL --ATTR_DISP_VALUE
1463                                                                      ,
1464                                                                       NULL --ATTR_UNIT_OF_MEASURE
1465                                                                      ,
1466                                                                       NULL);
1467         WHEN 'C_EXT_ATTR22' THEN
1468           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1469                                                                       attributes_coll(attrcntr)
1470                                                                       .attr_name,
1471                                                                       p_uda_data_rec.c_ext_attr22 --ATTR_VALUE_STR
1472                                                                      ,
1473                                                                       NULL --ATTR_VALUE_NUM
1474                                                                      ,
1475                                                                       NULL --ATTR_VALUE_DATE
1476                                                                      ,
1477                                                                       NULL --ATTR_DISP_VALUE
1478                                                                      ,
1479                                                                       NULL --ATTR_UNIT_OF_MEASURE
1480                                                                      ,
1481                                                                       NULL);
1482         WHEN 'C_EXT_ATTR23' THEN
1483           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1484                                                                       attributes_coll(attrcntr)
1485                                                                       .attr_name,
1486                                                                       p_uda_data_rec.c_ext_attr23 --ATTR_VALUE_STR
1487                                                                      ,
1488                                                                       NULL --ATTR_VALUE_NUM
1489                                                                      ,
1490                                                                       NULL --ATTR_VALUE_DATE
1491                                                                      ,
1492                                                                       NULL --ATTR_DISP_VALUE
1493                                                                      ,
1494                                                                       NULL --ATTR_UNIT_OF_MEASURE
1495                                                                      ,
1496                                                                       NULL);
1497         WHEN 'C_EXT_ATTR24' THEN
1498           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1499                                                                       attributes_coll(attrcntr)
1500                                                                       .attr_name,
1501                                                                       p_uda_data_rec.c_ext_attr24 --ATTR_VALUE_STR
1502                                                                      ,
1503                                                                       NULL --ATTR_VALUE_NUM
1504                                                                      ,
1505                                                                       NULL --ATTR_VALUE_DATE
1506                                                                      ,
1507                                                                       NULL --ATTR_DISP_VALUE
1508                                                                      ,
1509                                                                       NULL --ATTR_UNIT_OF_MEASURE
1510                                                                      ,
1511                                                                       NULL);
1512         WHEN 'C_EXT_ATTR25' THEN
1513           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1514                                                                       attributes_coll(attrcntr)
1515                                                                       .attr_name,
1516                                                                       p_uda_data_rec.c_ext_attr25 --ATTR_VALUE_STR
1517                                                                      ,
1518                                                                       NULL --ATTR_VALUE_NUM
1519                                                                      ,
1520                                                                       NULL --ATTR_VALUE_DATE
1521                                                                      ,
1522                                                                       NULL --ATTR_DISP_VALUE
1523                                                                      ,
1524                                                                       NULL --ATTR_UNIT_OF_MEASURE
1525                                                                      ,
1526                                                                       NULL);
1527         WHEN 'C_EXT_ATTR26' THEN
1528           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1529                                                                       attributes_coll(attrcntr)
1530                                                                       .attr_name,
1531                                                                       p_uda_data_rec.c_ext_attr26 --ATTR_VALUE_STR
1532                                                                      ,
1533                                                                       NULL --ATTR_VALUE_NUM
1534                                                                      ,
1535                                                                       NULL --ATTR_VALUE_DATE
1536                                                                      ,
1537                                                                       NULL --ATTR_DISP_VALUE
1538                                                                      ,
1539                                                                       NULL --ATTR_UNIT_OF_MEASURE
1540                                                                      ,
1541                                                                       NULL);
1542         WHEN 'C_EXT_ATTR27' THEN
1543           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1544                                                                       attributes_coll(attrcntr)
1545                                                                       .attr_name,
1546                                                                       p_uda_data_rec.c_ext_attr27 --ATTR_VALUE_STR
1547                                                                      ,
1548                                                                       NULL --ATTR_VALUE_NUM
1549                                                                      ,
1550                                                                       NULL --ATTR_VALUE_DATE
1551                                                                      ,
1552                                                                       NULL --ATTR_DISP_VALUE
1553                                                                      ,
1554                                                                       NULL --ATTR_UNIT_OF_MEASURE
1555                                                                      ,
1556                                                                       NULL);
1557         WHEN 'C_EXT_ATTR28' THEN
1558           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1559                                                                       attributes_coll(attrcntr)
1560                                                                       .attr_name,
1561                                                                       p_uda_data_rec.c_ext_attr28 --ATTR_VALUE_STR
1562                                                                      ,
1563                                                                       NULL --ATTR_VALUE_NUM
1564                                                                      ,
1565                                                                       NULL --ATTR_VALUE_DATE
1566                                                                      ,
1567                                                                       NULL --ATTR_DISP_VALUE
1568                                                                      ,
1569                                                                       NULL --ATTR_UNIT_OF_MEASURE
1570                                                                      ,
1571                                                                       NULL);
1572         WHEN 'C_EXT_ATTR29' THEN
1573           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1574                                                                       attributes_coll(attrcntr)
1575                                                                       .attr_name,
1576                                                                       p_uda_data_rec.c_ext_attr29 --ATTR_VALUE_STR
1577                                                                      ,
1578                                                                       NULL --ATTR_VALUE_NUM
1579                                                                      ,
1580                                                                       NULL --ATTR_VALUE_DATE
1581                                                                      ,
1582                                                                       NULL --ATTR_DISP_VALUE
1583                                                                      ,
1584                                                                       NULL --ATTR_UNIT_OF_MEASURE
1585                                                                      ,
1586                                                                       NULL);
1587         WHEN 'C_EXT_ATTR30' THEN
1588           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1589                                                                       attributes_coll(attrcntr)
1590                                                                       .attr_name,
1591                                                                       p_uda_data_rec.c_ext_attr30 --ATTR_VALUE_STR
1592                                                                      ,
1593                                                                       NULL --ATTR_VALUE_NUM
1594                                                                      ,
1595                                                                       NULL --ATTR_VALUE_DATE
1596                                                                      ,
1597                                                                       NULL --ATTR_DISP_VALUE
1598                                                                      ,
1599                                                                       NULL --ATTR_UNIT_OF_MEASURE
1600                                                                      ,
1601                                                                       NULL);
1602         WHEN 'C_EXT_ATTR31' THEN
1603           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1604                                                                       attributes_coll(attrcntr)
1605                                                                       .attr_name,
1606                                                                       p_uda_data_rec.c_ext_attr31 --ATTR_VALUE_STR
1607                                                                      ,
1608                                                                       NULL --ATTR_VALUE_NUM
1609                                                                      ,
1610                                                                       NULL --ATTR_VALUE_DATE
1611                                                                      ,
1612                                                                       NULL --ATTR_DISP_VALUE
1613                                                                      ,
1614                                                                       NULL --ATTR_UNIT_OF_MEASURE
1615                                                                      ,
1616                                                                       NULL);
1617         WHEN 'C_EXT_ATTR32' THEN
1618           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1619                                                                       attributes_coll(attrcntr)
1620                                                                       .attr_name,
1621                                                                       p_uda_data_rec.c_ext_attr32 --ATTR_VALUE_STR
1622                                                                      ,
1623                                                                       NULL --ATTR_VALUE_NUM
1624                                                                      ,
1625                                                                       NULL --ATTR_VALUE_DATE
1626                                                                      ,
1627                                                                       NULL --ATTR_DISP_VALUE
1628                                                                      ,
1629                                                                       NULL --ATTR_UNIT_OF_MEASURE
1630                                                                      ,
1631                                                                       NULL);
1632         WHEN 'C_EXT_ATTR33' THEN
1633           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1634                                                                       attributes_coll(attrcntr)
1635                                                                       .attr_name,
1636                                                                       p_uda_data_rec.c_ext_attr33 --ATTR_VALUE_STR
1637                                                                      ,
1638                                                                       NULL --ATTR_VALUE_NUM
1639                                                                      ,
1640                                                                       NULL --ATTR_VALUE_DATE
1641                                                                      ,
1642                                                                       NULL --ATTR_DISP_VALUE
1643                                                                      ,
1644                                                                       NULL --ATTR_UNIT_OF_MEASURE
1645                                                                      ,
1646                                                                       NULL);
1647         WHEN 'C_EXT_ATTR34' THEN
1648           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1649                                                                       attributes_coll(attrcntr)
1650                                                                       .attr_name,
1651                                                                       p_uda_data_rec.c_ext_attr34 --ATTR_VALUE_STR
1652                                                                      ,
1653                                                                       NULL --ATTR_VALUE_NUM
1654                                                                      ,
1655                                                                       NULL --ATTR_VALUE_DATE
1656                                                                      ,
1657                                                                       NULL --ATTR_DISP_VALUE
1658                                                                      ,
1659                                                                       NULL --ATTR_UNIT_OF_MEASURE
1660                                                                      ,
1661                                                                       NULL);
1662         WHEN 'C_EXT_ATTR35' THEN
1663           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1664                                                                       attributes_coll(attrcntr)
1665                                                                       .attr_name,
1666                                                                       p_uda_data_rec.c_ext_attr35 --ATTR_VALUE_STR
1667                                                                      ,
1668                                                                       NULL --ATTR_VALUE_NUM
1669                                                                      ,
1670                                                                       NULL --ATTR_VALUE_DATE
1671                                                                      ,
1672                                                                       NULL --ATTR_DISP_VALUE
1673                                                                      ,
1674                                                                       NULL --ATTR_UNIT_OF_MEASURE
1675                                                                      ,
1676                                                                       NULL);
1677         WHEN 'C_EXT_ATTR36' THEN
1678           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1679                                                                       attributes_coll(attrcntr)
1680                                                                       .attr_name,
1681                                                                       p_uda_data_rec.c_ext_attr36 --ATTR_VALUE_STR
1682                                                                      ,
1683                                                                       NULL --ATTR_VALUE_NUM
1684                                                                      ,
1685                                                                       NULL --ATTR_VALUE_DATE
1686                                                                      ,
1687                                                                       NULL --ATTR_DISP_VALUE
1688                                                                      ,
1689                                                                       NULL --ATTR_UNIT_OF_MEASURE
1690                                                                      ,
1691                                                                       NULL);
1692         WHEN 'C_EXT_ATTR37' THEN
1693           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1694                                                                       attributes_coll(attrcntr)
1695                                                                       .attr_name,
1696                                                                       p_uda_data_rec.c_ext_attr37 --ATTR_VALUE_STR
1697                                                                      ,
1698                                                                       NULL --ATTR_VALUE_NUM
1699                                                                      ,
1700                                                                       NULL --ATTR_VALUE_DATE
1701                                                                      ,
1702                                                                       NULL --ATTR_DISP_VALUE
1703                                                                      ,
1704                                                                       NULL --ATTR_UNIT_OF_MEASURE
1705                                                                      ,
1706                                                                       NULL);
1707         WHEN 'C_EXT_ATTR38' THEN
1708           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1709                                                                       attributes_coll(attrcntr)
1710                                                                       .attr_name,
1711                                                                       p_uda_data_rec.c_ext_attr38 --ATTR_VALUE_STR
1712                                                                      ,
1713                                                                       NULL --ATTR_VALUE_NUM
1714                                                                      ,
1715                                                                       NULL --ATTR_VALUE_DATE
1716                                                                      ,
1717                                                                       NULL --ATTR_DISP_VALUE
1718                                                                      ,
1719                                                                       NULL --ATTR_UNIT_OF_MEASURE
1720                                                                      ,
1721                                                                       NULL);
1722         WHEN 'C_EXT_ATTR39' THEN
1723           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1724                                                                       attributes_coll(attrcntr)
1725                                                                       .attr_name,
1726                                                                       p_uda_data_rec.c_ext_attr39 --ATTR_VALUE_STR
1727                                                                      ,
1728                                                                       NULL --ATTR_VALUE_NUM
1729                                                                      ,
1730                                                                       NULL --ATTR_VALUE_DATE
1731                                                                      ,
1732                                                                       NULL --ATTR_DISP_VALUE
1733                                                                      ,
1734                                                                       NULL --ATTR_UNIT_OF_MEASURE
1735                                                                      ,
1736                                                                       NULL);
1737         WHEN 'C_EXT_ATTR40' THEN
1738           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1739                                                                       attributes_coll(attrcntr)
1740                                                                       .attr_name,
1741                                                                       p_uda_data_rec.c_ext_attr40 --ATTR_VALUE_STR
1742                                                                      ,
1743                                                                       NULL --ATTR_VALUE_NUM
1744                                                                      ,
1745                                                                       NULL --ATTR_VALUE_DATE
1746                                                                      ,
1747                                                                       NULL --ATTR_DISP_VALUE
1748                                                                      ,
1749                                                                       NULL --ATTR_UNIT_OF_MEASURE
1750                                                                      ,
1751                                                                       NULL);
1752 
1753       /* Process Numeric attributes */
1754 
1755         WHEN 'N_EXT_ATTR1' THEN
1756           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1757                                                                       attributes_coll(attrcntr)
1758                                                                       .attr_name,
1759                                                                       NULL --ATTR_VALUE_STR
1760                                                                      ,
1761                                                                       p_uda_data_rec.n_ext_attr1 --ATTR_VALUE_NUM
1762                                                                      ,
1763                                                                       NULL --ATTR_VALUE_DATE
1764                                                                      ,
1765                                                                       NULL --ATTR_DISP_VALUE
1766                                                                      ,
1767                                                                       NULL --ATTR_UNIT_OF_MEASURE
1768                                                                      ,
1769                                                                       NULL);
1770         WHEN 'N_EXT_ATTR2' THEN
1771           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1772                                                                       attributes_coll(attrcntr)
1773                                                                       .attr_name,
1774                                                                       NULL --ATTR_VALUE_STR
1775                                                                      ,
1776                                                                       p_uda_data_rec.n_ext_attr2 --ATTR_VALUE_NUM
1777                                                                      ,
1778                                                                       NULL --ATTR_VALUE_DATE
1779                                                                      ,
1780                                                                       NULL --ATTR_DISP_VALUE
1781                                                                      ,
1782                                                                       NULL --ATTR_UNIT_OF_MEASURE
1783                                                                      ,
1784                                                                       NULL);
1785         WHEN 'N_EXT_ATTR3' THEN
1786           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1787                                                                       attributes_coll(attrcntr)
1788                                                                       .attr_name,
1789                                                                       NULL --ATTR_VALUE_STR
1790                                                                      ,
1791                                                                       p_uda_data_rec.n_ext_attr3 --ATTR_VALUE_NUM
1792                                                                      ,
1793                                                                       NULL --ATTR_VALUE_DATE
1794                                                                      ,
1795                                                                       NULL --ATTR_DISP_VALUE
1796                                                                      ,
1797                                                                       NULL --ATTR_UNIT_OF_MEASURE
1798                                                                      ,
1799                                                                       NULL);
1800         WHEN 'N_EXT_ATTR4' THEN
1801           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1802                                                                       attributes_coll(attrcntr)
1803                                                                       .attr_name,
1804                                                                       NULL --ATTR_VALUE_STR
1805                                                                      ,
1806                                                                       p_uda_data_rec.n_ext_attr4 --ATTR_VALUE_NUM
1807                                                                      ,
1808                                                                       NULL --ATTR_VALUE_DATE
1809                                                                      ,
1810                                                                       NULL --ATTR_DISP_VALUE
1811                                                                      ,
1812                                                                       NULL --ATTR_UNIT_OF_MEASURE
1813                                                                      ,
1814                                                                       NULL);
1815         WHEN 'N_EXT_ATTR5' THEN
1816           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1817                                                                       attributes_coll(attrcntr)
1818                                                                       .attr_name,
1819                                                                       NULL --ATTR_VALUE_STR
1820                                                                      ,
1821                                                                       p_uda_data_rec.n_ext_attr5 --ATTR_VALUE_NUM
1822                                                                      ,
1823                                                                       NULL --ATTR_VALUE_DATE
1824                                                                      ,
1825                                                                       NULL --ATTR_DISP_VALUE
1826                                                                      ,
1827                                                                       NULL --ATTR_UNIT_OF_MEASURE
1828                                                                      ,
1829                                                                       NULL);
1830         WHEN 'N_EXT_ATTR6' THEN
1831           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1832                                                                       attributes_coll(attrcntr)
1833                                                                       .attr_name,
1834                                                                       NULL --ATTR_VALUE_STR
1835                                                                      ,
1836                                                                       p_uda_data_rec.n_ext_attr6 --ATTR_VALUE_NUM
1837                                                                      ,
1838                                                                       NULL --ATTR_VALUE_DATE
1839                                                                      ,
1840                                                                       NULL --ATTR_DISP_VALUE
1841                                                                      ,
1842                                                                       NULL --ATTR_UNIT_OF_MEASURE
1843                                                                      ,
1844                                                                       NULL);
1845         WHEN 'N_EXT_ATTR7' THEN
1846           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1847                                                                       attributes_coll(attrcntr)
1848                                                                       .attr_name,
1849                                                                       NULL --ATTR_VALUE_STR
1850                                                                      ,
1851                                                                       p_uda_data_rec.n_ext_attr7 --ATTR_VALUE_NUM
1852                                                                      ,
1853                                                                       NULL --ATTR_VALUE_DATE
1854                                                                      ,
1855                                                                       NULL --ATTR_DISP_VALUE
1856                                                                      ,
1857                                                                       NULL --ATTR_UNIT_OF_MEASURE
1858                                                                      ,
1859                                                                       NULL);
1860         WHEN 'N_EXT_ATTR8' THEN
1861           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1862                                                                       attributes_coll(attrcntr)
1863                                                                       .attr_name,
1864                                                                       NULL --ATTR_VALUE_STR
1865                                                                      ,
1866                                                                       p_uda_data_rec.n_ext_attr8 --ATTR_VALUE_NUM
1867                                                                      ,
1868                                                                       NULL --ATTR_VALUE_DATE
1869                                                                      ,
1870                                                                       NULL --ATTR_DISP_VALUE
1871                                                                      ,
1872                                                                       NULL --ATTR_UNIT_OF_MEASURE
1873                                                                      ,
1874                                                                       NULL);
1875 
1876         WHEN 'N_EXT_ATTR9' THEN
1877           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1878                                                                       attributes_coll(attrcntr)
1879                                                                       .attr_name,
1880                                                                       NULL --ATTR_VALUE_STR
1881                                                                      ,
1882                                                                       p_uda_data_rec.n_ext_attr9 --ATTR_VALUE_NUM
1883                                                                      ,
1884                                                                       NULL --ATTR_VALUE_DATE
1885                                                                      ,
1886                                                                       NULL --ATTR_DISP_VALUE
1887                                                                      ,
1888                                                                       NULL --ATTR_UNIT_OF_MEASURE
1889                                                                      ,
1890                                                                       NULL);
1891         WHEN 'N_EXT_ATTR10' THEN
1892           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1893                                                                       attributes_coll(attrcntr)
1894                                                                       .attr_name,
1895                                                                       NULL --ATTR_VALUE_STR
1896                                                                      ,
1897                                                                       p_uda_data_rec.n_ext_attr10 --ATTR_VALUE_NUM
1898                                                                      ,
1899                                                                       NULL --ATTR_VALUE_DATE
1900                                                                      ,
1901                                                                       NULL --ATTR_DISP_VALUE
1902                                                                      ,
1903                                                                       NULL --ATTR_UNIT_OF_MEASURE
1904                                                                      ,
1905                                                                       NULL);
1906         WHEN 'N_EXT_ATTR11' THEN
1907           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1908                                                                       attributes_coll(attrcntr)
1909                                                                       .attr_name,
1910                                                                       NULL --ATTR_VALUE_STR
1911                                                                      ,
1912                                                                       p_uda_data_rec.n_ext_attr11 --ATTR_VALUE_NUM
1913                                                                      ,
1914                                                                       NULL --ATTR_VALUE_DATE
1915                                                                      ,
1916                                                                       NULL --ATTR_DISP_VALUE
1917                                                                      ,
1918                                                                       NULL --ATTR_UNIT_OF_MEASURE
1919                                                                      ,
1920                                                                       NULL);
1921         WHEN 'N_EXT_ATTR12' THEN
1922           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1923                                                                       attributes_coll(attrcntr)
1924                                                                       .attr_name,
1925                                                                       NULL --ATTR_VALUE_STR
1926                                                                      ,
1927                                                                       p_uda_data_rec.n_ext_attr12 --ATTR_VALUE_NUM
1928                                                                      ,
1929                                                                       NULL --ATTR_VALUE_DATE
1930                                                                      ,
1931                                                                       NULL --ATTR_DISP_VALUE
1932                                                                      ,
1933                                                                       NULL --ATTR_UNIT_OF_MEASURE
1934                                                                      ,
1935                                                                       NULL);
1936         WHEN 'N_EXT_ATTR13' THEN
1937           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1938                                                                       attributes_coll(attrcntr)
1939                                                                       .attr_name,
1940                                                                       NULL --ATTR_VALUE_STR
1941                                                                      ,
1942                                                                       p_uda_data_rec.n_ext_attr13 --ATTR_VALUE_NUM
1943                                                                      ,
1944                                                                       NULL --ATTR_VALUE_DATE
1945                                                                      ,
1946                                                                       NULL --ATTR_DISP_VALUE
1947                                                                      ,
1948                                                                       NULL --ATTR_UNIT_OF_MEASURE
1949                                                                      ,
1950                                                                       NULL);
1951         WHEN 'N_EXT_ATTR14' THEN
1952           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1953                                                                       attributes_coll(attrcntr)
1954                                                                       .attr_name,
1955                                                                       NULL --ATTR_VALUE_STR
1956                                                                      ,
1957                                                                       p_uda_data_rec.n_ext_attr14 --ATTR_VALUE_NUM
1958                                                                      ,
1959                                                                       NULL --ATTR_VALUE_DATE
1960                                                                      ,
1961                                                                       NULL --ATTR_DISP_VALUE
1962                                                                      ,
1963                                                                       NULL --ATTR_UNIT_OF_MEASURE
1964                                                                      ,
1965                                                                       NULL);
1966         WHEN 'N_EXT_ATTR15' THEN
1967           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1968                                                                       attributes_coll(attrcntr)
1969                                                                       .attr_name,
1970                                                                       NULL --ATTR_VALUE_STR
1971                                                                      ,
1972                                                                       p_uda_data_rec.n_ext_attr15 --ATTR_VALUE_NUM
1973                                                                      ,
1974                                                                       NULL --ATTR_VALUE_DATE
1975                                                                      ,
1976                                                                       NULL --ATTR_DISP_VALUE
1977                                                                      ,
1978                                                                       NULL --ATTR_UNIT_OF_MEASURE
1979                                                                      ,
1980                                                                       NULL);
1981         WHEN 'N_EXT_ATTR16' THEN
1982           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1983                                                                       attributes_coll(attrcntr)
1984                                                                       .attr_name,
1985                                                                       NULL --ATTR_VALUE_STR
1986                                                                      ,
1987                                                                       p_uda_data_rec.n_ext_attr16 --ATTR_VALUE_NUM
1988                                                                      ,
1989                                                                       NULL --ATTR_VALUE_DATE
1990                                                                      ,
1991                                                                       NULL --ATTR_DISP_VALUE
1992                                                                      ,
1993                                                                       NULL --ATTR_UNIT_OF_MEASURE
1994                                                                      ,
1995                                                                       NULL);
1996         WHEN 'N_EXT_ATTR17' THEN
1997           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
1998                                                                       attributes_coll(attrcntr)
1999                                                                       .attr_name,
2000                                                                       NULL --ATTR_VALUE_STR
2001                                                                      ,
2002                                                                       p_uda_data_rec.n_ext_attr17 --ATTR_VALUE_NUM
2003                                                                      ,
2004                                                                       NULL --ATTR_VALUE_DATE
2005                                                                      ,
2006                                                                       NULL --ATTR_DISP_VALUE
2007                                                                      ,
2008                                                                       NULL --ATTR_UNIT_OF_MEASURE
2009                                                                      ,
2010                                                                       NULL);
2011         WHEN 'N_EXT_ATTR18' THEN
2012           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2013                                                                       attributes_coll(attrcntr)
2014                                                                       .attr_name,
2015                                                                       NULL --ATTR_VALUE_STR
2016                                                                      ,
2017                                                                       p_uda_data_rec.n_ext_attr18 --ATTR_VALUE_NUM
2018                                                                      ,
2019                                                                       NULL --ATTR_VALUE_DATE
2020                                                                      ,
2021                                                                       NULL --ATTR_DISP_VALUE
2022                                                                      ,
2023                                                                       NULL --ATTR_UNIT_OF_MEASURE
2024                                                                      ,
2025                                                                       NULL);
2026         WHEN 'N_EXT_ATTR19' THEN
2027           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2028                                                                       attributes_coll(attrcntr)
2029                                                                       .attr_name,
2030                                                                       NULL --ATTR_VALUE_STR
2031                                                                      ,
2032                                                                       p_uda_data_rec.n_ext_attr19 --ATTR_VALUE_NUM
2033                                                                      ,
2034                                                                       NULL --ATTR_VALUE_DATE
2035                                                                      ,
2036                                                                       NULL --ATTR_DISP_VALUE
2037                                                                      ,
2038                                                                       NULL --ATTR_UNIT_OF_MEASURE
2039                                                                      ,
2040                                                                       NULL);
2041 
2042         WHEN 'N_EXT_ATTR20' THEN
2043           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2044                                                                       attributes_coll(attrcntr)
2045                                                                       .attr_name,
2046                                                                       NULL --ATTR_VALUE_STR
2047                                                                      ,
2048                                                                       p_uda_data_rec.n_ext_attr20 --ATTR_VALUE_NUM
2049                                                                      ,
2050                                                                       NULL --ATTR_VALUE_DATE
2051                                                                      ,
2052                                                                       NULL --ATTR_DISP_VALUE
2053                                                                      ,
2054                                                                       NULL --ATTR_UNIT_OF_MEASURE
2055                                                                      ,
2056                                                                       NULL);
2057 
2058       /* Process Date attributes */
2059 
2060         WHEN 'D_EXT_ATTR1' THEN
2061           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2062                                                                       attributes_coll(attrcntr)
2063                                                                       .attr_name,
2064                                                                       NULL --ATTR_VALUE_STR
2065                                                                      ,
2066                                                                       NULL --ATTR_VALUE_NUM
2067                                                                      ,
2068                                                                       p_uda_data_rec.d_ext_attr1 --ATTR_VALUE_DATE
2069                                                                      ,
2070                                                                       NULL --ATTR_DISP_VALUE
2071                                                                      ,
2072                                                                       NULL --ATTR_UNIT_OF_MEASURE
2073                                                                      ,
2074                                                                       NULL);
2075         WHEN 'D_EXT_ATTR2' THEN
2076           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2077                                                                       attributes_coll(attrcntr)
2078                                                                       .attr_name,
2079                                                                       NULL --ATTR_VALUE_STR
2080                                                                      ,
2081                                                                       NULL --ATTR_VALUE_NUM
2082                                                                      ,
2083                                                                       p_uda_data_rec.d_ext_attr2 --ATTR_VALUE_DATE
2084                                                                      ,
2085                                                                       NULL --ATTR_DISP_VALUE
2086                                                                      ,
2087                                                                       NULL --ATTR_UNIT_OF_MEASURE
2088                                                                      ,
2089                                                                       NULL);
2090         WHEN 'D_EXT_ATTR3' THEN
2091           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2092                                                                       attributes_coll(attrcntr)
2093                                                                       .attr_name,
2094                                                                       NULL --ATTR_VALUE_STR
2095                                                                      ,
2096                                                                       NULL --ATTR_VALUE_NUM
2097                                                                      ,
2098                                                                       p_uda_data_rec.d_ext_attr3 --ATTR_VALUE_DATE
2099                                                                      ,
2100                                                                       NULL --ATTR_DISP_VALUE
2101                                                                      ,
2102                                                                       NULL --ATTR_UNIT_OF_MEASURE
2103                                                                      ,
2104                                                                       NULL);
2105         WHEN 'D_EXT_ATTR4' THEN
2106           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2107                                                                       attributes_coll(attrcntr)
2108                                                                       .attr_name,
2109                                                                       NULL --ATTR_VALUE_STR
2110                                                                      ,
2111                                                                       NULL --ATTR_VALUE_NUM
2112                                                                      ,
2113                                                                       p_uda_data_rec.d_ext_attr4 --ATTR_VALUE_DATE
2114                                                                      ,
2115                                                                       NULL --ATTR_DISP_VALUE
2116                                                                      ,
2117                                                                       NULL --ATTR_UNIT_OF_MEASURE
2118                                                                      ,
2119                                                                       NULL);
2120         WHEN 'D_EXT_ATTR5' THEN
2121           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2122                                                                       attributes_coll(attrcntr)
2123                                                                       .attr_name,
2124                                                                       NULL --ATTR_VALUE_STR
2125                                                                      ,
2126                                                                       NULL --ATTR_VALUE_NUM
2127                                                                      ,
2128                                                                       p_uda_data_rec.d_ext_attr5 --ATTR_VALUE_DATE
2129                                                                      ,
2130                                                                       NULL --ATTR_DISP_VALUE
2131                                                                      ,
2132                                                                       NULL --ATTR_UNIT_OF_MEASURE
2133                                                                      ,
2134                                                                       NULL);
2135         WHEN 'D_EXT_ATTR6' THEN
2136           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2137                                                                       attributes_coll(attrcntr)
2138                                                                       .attr_name,
2139                                                                       NULL --ATTR_VALUE_STR
2140                                                                      ,
2141                                                                       NULL --ATTR_VALUE_NUM
2142                                                                      ,
2143                                                                       p_uda_data_rec.d_ext_attr6 --ATTR_VALUE_DATE
2144                                                                      ,
2145                                                                       NULL --ATTR_DISP_VALUE
2146                                                                      ,
2147                                                                       NULL --ATTR_UNIT_OF_MEASURE
2148                                                                      ,
2149                                                                       NULL);
2150         WHEN 'D_EXT_ATTR7' THEN
2151           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2152                                                                       attributes_coll(attrcntr)
2153                                                                       .attr_name,
2154                                                                       NULL --ATTR_VALUE_STR
2155                                                                      ,
2156                                                                       NULL --ATTR_VALUE_NUM
2157                                                                      ,
2158                                                                       p_uda_data_rec.d_ext_attr7 --ATTR_VALUE_DATE
2159                                                                      ,
2160                                                                       NULL --ATTR_DISP_VALUE
2161                                                                      ,
2162                                                                       NULL --ATTR_UNIT_OF_MEASURE
2163                                                                      ,
2164                                                                       NULL);
2165         WHEN 'D_EXT_ATTR8' THEN
2166           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2167                                                                       attributes_coll(attrcntr)
2168                                                                       .attr_name,
2169                                                                       NULL --ATTR_VALUE_STR
2170                                                                      ,
2171                                                                       NULL --ATTR_VALUE_NUM
2172                                                                      ,
2173                                                                       p_uda_data_rec.d_ext_attr8 --ATTR_VALUE_DATE
2174                                                                      ,
2175                                                                       NULL --ATTR_DISP_VALUE
2176                                                                      ,
2177                                                                       NULL --ATTR_UNIT_OF_MEASURE
2178                                                                      ,
2179                                                                       NULL);
2180 
2181         WHEN 'D_EXT_ATTR9' THEN
2182           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2183                                                                       attributes_coll(attrcntr)
2184                                                                       .attr_name,
2185                                                                       NULL --ATTR_VALUE_STR
2186                                                                      ,
2187                                                                       NULL --ATTR_VALUE_NUM
2188                                                                      ,
2189                                                                       p_uda_data_rec.d_ext_attr9 --ATTR_VALUE_DATE
2190                                                                      ,
2191                                                                       NULL --ATTR_DISP_VALUE
2192                                                                      ,
2193                                                                       NULL --ATTR_UNIT_OF_MEASURE
2194                                                                      ,
2195                                                                       NULL);
2196 
2197         WHEN 'D_EXT_ATTR10' THEN
2198           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2199                                                                       attributes_coll(attrcntr)
2200                                                                       .attr_name,
2201                                                                       NULL --ATTR_VALUE_STR
2202                                                                      ,
2203                                                                       NULL --ATTR_VALUE_NUM
2204                                                                      ,
2205                                                                       p_uda_data_rec.d_ext_attr10 --ATTR_VALUE_DATE
2206                                                                      ,
2207                                                                       NULL --ATTR_DISP_VALUE
2208                                                                      ,
2209                                                                       NULL --ATTR_UNIT_OF_MEASURE
2210                                                                      ,
2211                                                                       NULL);
2212 
2213       /* Process UOM attributes */
2214 
2215         WHEN 'UOM_EXT_ATTR1' THEN
2216           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2217                                                                       attributes_coll(attrcntr)
2218                                                                       .attr_name,
2219                                                                       NULL --ATTR_VALUE_STR
2220                                                                      ,
2221                                                                       NULL --ATTR_VALUE_NUM
2222                                                                      ,
2223                                                                       NULL --ATTR_VALUE_DATE
2224                                                                      ,
2225                                                                       NULL --ATTR_DISP_VALUE
2226                                                                      ,
2227                                                                       p_uda_data_rec.uom_ext_attr1,
2228                                                                       NULL);
2229         WHEN 'UOM_EXT_ATTR2' THEN
2230           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2231                                                                       attributes_coll(attrcntr)
2232                                                                       .attr_name,
2233                                                                       NULL --ATTR_VALUE_STR
2234                                                                      ,
2235                                                                       NULL --ATTR_VALUE_NUM
2236                                                                      ,
2237                                                                       NULL --ATTR_VALUE_DATE
2238                                                                      ,
2239                                                                       NULL --ATTR_DISP_VALUE
2240                                                                      ,
2241                                                                       p_uda_data_rec.uom_ext_attr2,
2242                                                                       NULL);
2243         WHEN 'UOM_EXT_ATTR3' THEN
2244           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2245                                                                       attributes_coll(attrcntr)
2246                                                                       .attr_name,
2247                                                                       NULL --ATTR_VALUE_STR
2248                                                                      ,
2249                                                                       NULL --ATTR_VALUE_NUM
2250                                                                      ,
2251                                                                       NULL --ATTR_VALUE_DATE
2252                                                                      ,
2253                                                                       NULL --ATTR_DISP_VALUE
2254                                                                      ,
2255                                                                       p_uda_data_rec.uom_ext_attr3,
2256                                                                       NULL);
2257         WHEN 'UOM_EXT_ATTR4' THEN
2258           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2259                                                                       attributes_coll(attrcntr)
2260                                                                       .attr_name,
2261                                                                       NULL --ATTR_VALUE_STR
2262                                                                      ,
2263                                                                       NULL --ATTR_VALUE_NUM
2264                                                                      ,
2265                                                                       NULL --ATTR_VALUE_DATE
2266                                                                      ,
2267                                                                       NULL --ATTR_DISP_VALUE
2268                                                                      ,
2269                                                                       p_uda_data_rec.uom_ext_attr4,
2270                                                                       NULL);
2271         WHEN 'UOM_EXT_ATTR5' THEN
2272           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2273                                                                       attributes_coll(attrcntr)
2274                                                                       .attr_name,
2275                                                                       NULL --ATTR_VALUE_STR
2276                                                                      ,
2277                                                                       NULL --ATTR_VALUE_NUM
2278                                                                      ,
2279                                                                       NULL --ATTR_VALUE_DATE
2280                                                                      ,
2281                                                                       NULL --ATTR_DISP_VALUE
2282                                                                      ,
2283                                                                       p_uda_data_rec.uom_ext_attr5,
2284                                                                       NULL);
2285         WHEN 'UOM_EXT_ATTR6' THEN
2286           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2287                                                                       attributes_coll(attrcntr)
2288                                                                       .attr_name,
2289                                                                       NULL --ATTR_VALUE_STR
2290                                                                      ,
2291                                                                       NULL --ATTR_VALUE_NUM
2292                                                                      ,
2293                                                                       NULL --ATTR_VALUE_DATE
2294                                                                      ,
2295                                                                       NULL --ATTR_DISP_VALUE
2296                                                                      ,
2297                                                                       p_uda_data_rec.uom_ext_attr6,
2298                                                                       NULL);
2299         WHEN 'UOM_EXT_ATTR7' THEN
2300           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2301                                                                       attributes_coll(attrcntr)
2302                                                                       .attr_name,
2303                                                                       NULL --ATTR_VALUE_STR
2304                                                                      ,
2305                                                                       NULL --ATTR_VALUE_NUM
2306                                                                      ,
2307                                                                       NULL --ATTR_VALUE_DATE
2308                                                                      ,
2309                                                                       NULL --ATTR_DISP_VALUE
2310                                                                      ,
2311                                                                       p_uda_data_rec.uom_ext_attr7,
2312                                                                       NULL);
2313         WHEN 'UOM_EXT_ATTR8' THEN
2314           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2315                                                                       attributes_coll(attrcntr)
2316                                                                       .attr_name,
2317                                                                       NULL --ATTR_VALUE_STR
2318                                                                      ,
2319                                                                       NULL --ATTR_VALUE_NUM
2320                                                                      ,
2321                                                                       NULL --ATTR_VALUE_DATE
2322                                                                      ,
2323                                                                       NULL --ATTR_DISP_VALUE
2324                                                                      ,
2325                                                                       p_uda_data_rec.uom_ext_attr8,
2326                                                                       NULL);
2327         WHEN 'UOM_EXT_ATTR9' THEN
2328           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2329                                                                       attributes_coll(attrcntr)
2330                                                                       .attr_name,
2331                                                                       NULL --ATTR_VALUE_STR
2332                                                                      ,
2333                                                                       NULL --ATTR_VALUE_NUM
2334                                                                      ,
2335                                                                       NULL --ATTR_VALUE_DATE
2336                                                                      ,
2337                                                                       NULL --ATTR_DISP_VALUE
2338                                                                      ,
2339                                                                       p_uda_data_rec.uom_ext_attr9,
2340                                                                       NULL);
2341 
2342         WHEN 'UOM_EXT_ATTR10' THEN
2343           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2344                                                                       attributes_coll(attrcntr)
2345                                                                       .attr_name,
2346                                                                       NULL --ATTR_VALUE_STR
2347                                                                      ,
2348                                                                       NULL --ATTR_VALUE_NUM
2349                                                                      ,
2350                                                                       NULL --ATTR_VALUE_DATE
2351                                                                      ,
2352                                                                       NULL --ATTR_DISP_VALUE
2353                                                                      ,
2354                                                                       p_uda_data_rec.uom_ext_attr10,
2355                                                                       NULL);
2356         WHEN 'UOM_EXT_ATTR11' THEN
2357           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2358                                                                       attributes_coll(attrcntr)
2359                                                                       .attr_name,
2360                                                                       NULL --ATTR_VALUE_STR
2361                                                                      ,
2362                                                                       NULL --ATTR_VALUE_NUM
2363                                                                      ,
2364                                                                       NULL --ATTR_VALUE_DATE
2365                                                                      ,
2366                                                                       NULL --ATTR_DISP_VALUE
2367                                                                      ,
2368                                                                       p_uda_data_rec.uom_ext_attr11,
2369                                                                       NULL);
2370         WHEN 'UOM_EXT_ATTR12' THEN
2371           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2372                                                                       attributes_coll(attrcntr)
2373                                                                       .attr_name,
2374                                                                       NULL --ATTR_VALUE_STR
2375                                                                      ,
2376                                                                       NULL --ATTR_VALUE_NUM
2377                                                                      ,
2378                                                                       NULL --ATTR_VALUE_DATE
2379                                                                      ,
2380                                                                       NULL --ATTR_DISP_VALUE
2381                                                                      ,
2382                                                                       p_uda_data_rec.uom_ext_attr12,
2383                                                                       NULL);
2384         WHEN 'UOM_EXT_ATTR13' THEN
2385           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2386                                                                       attributes_coll(attrcntr)
2387                                                                       .attr_name,
2388                                                                       NULL --ATTR_VALUE_STR
2389                                                                      ,
2390                                                                       NULL --ATTR_VALUE_NUM
2391                                                                      ,
2392                                                                       NULL --ATTR_VALUE_DATE
2393                                                                      ,
2394                                                                       NULL --ATTR_DISP_VALUE
2395                                                                      ,
2396                                                                       p_uda_data_rec.uom_ext_attr13,
2397                                                                       NULL);
2398         WHEN 'UOM_EXT_ATTR14' THEN
2399           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2400                                                                       attributes_coll(attrcntr)
2401                                                                       .attr_name,
2402                                                                       NULL --ATTR_VALUE_STR
2403                                                                      ,
2404                                                                       NULL --ATTR_VALUE_NUM
2405                                                                      ,
2406                                                                       NULL --ATTR_VALUE_DATE
2407                                                                      ,
2408                                                                       NULL --ATTR_DISP_VALUE
2409                                                                      ,
2410                                                                       p_uda_data_rec.uom_ext_attr14,
2411                                                                       NULL);
2412         WHEN 'UOM_EXT_ATTR15' THEN
2413           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2414                                                                       attributes_coll(attrcntr)
2415                                                                       .attr_name,
2416                                                                       NULL --ATTR_VALUE_STR
2417                                                                      ,
2418                                                                       NULL --ATTR_VALUE_NUM
2419                                                                      ,
2420                                                                       NULL --ATTR_VALUE_DATE
2421                                                                      ,
2422                                                                       NULL --ATTR_DISP_VALUE
2423                                                                      ,
2424                                                                       p_uda_data_rec.uom_ext_attr15,
2425                                                                       NULL);
2426         WHEN 'UOM_EXT_ATTR16' THEN
2427           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2428                                                                       attributes_coll(attrcntr)
2429                                                                       .attr_name,
2430                                                                       NULL --ATTR_VALUE_STR
2431                                                                      ,
2432                                                                       NULL --ATTR_VALUE_NUM
2433                                                                      ,
2434                                                                       NULL --ATTR_VALUE_DATE
2435                                                                      ,
2436                                                                       NULL --ATTR_DISP_VALUE
2437                                                                      ,
2438                                                                       p_uda_data_rec.uom_ext_attr16,
2439                                                                       NULL);
2440         WHEN 'UOM_EXT_ATTR17' THEN
2441           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2442                                                                       attributes_coll(attrcntr)
2443                                                                       .attr_name,
2444                                                                       NULL --ATTR_VALUE_STR
2445                                                                      ,
2446                                                                       NULL --ATTR_VALUE_NUM
2447                                                                      ,
2448                                                                       NULL --ATTR_VALUE_DATE
2449                                                                      ,
2450                                                                       NULL --ATTR_DISP_VALUE
2451                                                                      ,
2452                                                                       p_uda_data_rec.uom_ext_attr17,
2453                                                                       NULL);
2454         WHEN 'UOM_EXT_ATTR18' THEN
2455           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2456                                                                       attributes_coll(attrcntr)
2457                                                                       .attr_name,
2458                                                                       NULL --ATTR_VALUE_STR
2459                                                                      ,
2460                                                                       NULL --ATTR_VALUE_NUM
2461                                                                      ,
2462                                                                       NULL --ATTR_VALUE_DATE
2463                                                                      ,
2464                                                                       NULL --ATTR_DISP_VALUE
2465                                                                      ,
2466                                                                       p_uda_data_rec.uom_ext_attr18,
2467                                                                       NULL);
2468         WHEN 'UOM_EXT_ATTR19' THEN
2469           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2470                                                                       attributes_coll(attrcntr)
2471                                                                       .attr_name,
2472                                                                       NULL --ATTR_VALUE_STR
2473                                                                      ,
2474                                                                       NULL --ATTR_VALUE_NUM
2475                                                                      ,
2476                                                                       NULL --ATTR_VALUE_DATE
2477                                                                      ,
2478                                                                       NULL --ATTR_DISP_VALUE
2479                                                                      ,
2480                                                                       p_uda_data_rec.uom_ext_attr19,
2481                                                                       NULL);
2482         WHEN 'UOM_EXT_ATTR20' THEN
2483           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2484                                                                       attributes_coll(attrcntr)
2485                                                                       .attr_name,
2486                                                                       NULL --ATTR_VALUE_STR
2487                                                                      ,
2488                                                                       NULL --ATTR_VALUE_NUM
2489                                                                      ,
2490                                                                       NULL --ATTR_VALUE_DATE
2491                                                                      ,
2492                                                                       NULL --ATTR_DISP_VALUE
2493                                                                      ,
2494                                                                       p_uda_data_rec.uom_ext_attr20,
2495                                                                       NULL);
2496 
2497         ELSE
2498           x_attributes_data_table(attrcntr) := ego_user_attr_data_obj(p_row_identifier,
2499                                                                       attributes_coll(attrcntr)
2500                                                                       .attr_name,
2501                                                                       NULL --ATTR_VALUE_STR
2502                                                                      ,
2503                                                                       NULL --ATTR_VALUE_NUM
2504                                                                      ,
2505                                                                       NULL --ATTR_VALUE_DATE
2506                                                                      ,
2507                                                                       NULL --ATTR_DISP_VALUE
2508                                                                      ,
2509                                                                       NULL,
2510                                                                       NULL);
2511 
2512       END CASE;
2513       x_attributes_data_table.extend;
2514     END LOOP;
2515     x_attributes_data_table.trim;
2516 
2517     /*EXCEPTION
2518     WHEN OTHERS THEN
2519       x_return_status := fnd_api.g_ret_sts_unexp_error;*/
2520   END build_uda_data_payload;
2521 
2522   PROCEDURE do_single_row_uda_merge
2523   (
2524     p_uda_rec_tbl   IN OUT NOCOPY uda_rec_tbl_type,
2525     x_uda_rec       OUT NOCOPY pos_supp_prof_ext_b%ROWTYPE,
2526     x_return_status OUT NOCOPY VARCHAR2,
2527     x_msg_count     OUT NOCOPY NUMBER,
2528     x_msg_data      OUT NOCOPY VARCHAR2
2529   ) IS
2530 
2531   BEGIN
2532     x_return_status := fnd_api.g_ret_sts_success;
2533 
2534     /* The collection contains the UDA data in the ascending
2535     order of the creation date. The idea is to have the
2536     latest data in the final merged record. So we would
2537     start with the index 2 in the collection and merge it
2538     with the index 1 record and repeat the same until we
2539     reach the last record in the collection. We would use
2540     NVL on the attributes to ensure that if the any record has a NULL
2541     value for a n attribute it does not override the attribute
2542     containing the data even if for an older date*/
2543 
2544     FOR cntr IN 2 .. p_uda_rec_tbl.count LOOP
2545 
2546       /* Merge character extension attributes */
2547 
2548       p_uda_rec_tbl(1).c_ext_attr1 := nvl(p_uda_rec_tbl(cntr).c_ext_attr1,
2549                                           p_uda_rec_tbl(1).c_ext_attr1);
2550       p_uda_rec_tbl(1).c_ext_attr2 := nvl(p_uda_rec_tbl(cntr).c_ext_attr2,
2551                                           p_uda_rec_tbl(1).c_ext_attr2);
2552       p_uda_rec_tbl(1).c_ext_attr3 := nvl(p_uda_rec_tbl(cntr).c_ext_attr3,
2553                                           p_uda_rec_tbl(1).c_ext_attr3);
2554       p_uda_rec_tbl(1).c_ext_attr4 := nvl(p_uda_rec_tbl(cntr).c_ext_attr4,
2555                                           p_uda_rec_tbl(1).c_ext_attr4);
2556       p_uda_rec_tbl(1).c_ext_attr5 := nvl(p_uda_rec_tbl(cntr).c_ext_attr5,
2557                                           p_uda_rec_tbl(1).c_ext_attr5);
2558       p_uda_rec_tbl(1).c_ext_attr6 := nvl(p_uda_rec_tbl(cntr).c_ext_attr6,
2559                                           p_uda_rec_tbl(1).c_ext_attr6);
2560       p_uda_rec_tbl(1).c_ext_attr7 := nvl(p_uda_rec_tbl(cntr).c_ext_attr7,
2561                                           p_uda_rec_tbl(1).c_ext_attr7);
2562       p_uda_rec_tbl(1).c_ext_attr8 := nvl(p_uda_rec_tbl(cntr).c_ext_attr8,
2563                                           p_uda_rec_tbl(1).c_ext_attr8);
2564       p_uda_rec_tbl(1).c_ext_attr9 := nvl(p_uda_rec_tbl(cntr).c_ext_attr9,
2565                                           p_uda_rec_tbl(1).c_ext_attr9);
2566       p_uda_rec_tbl(1).c_ext_attr10 := nvl(p_uda_rec_tbl(cntr).c_ext_attr10,
2567                                            p_uda_rec_tbl(1).c_ext_attr10);
2568 
2569       p_uda_rec_tbl(1).c_ext_attr11 := nvl(p_uda_rec_tbl(cntr).c_ext_attr11,
2570                                            p_uda_rec_tbl(1).c_ext_attr11);
2571       p_uda_rec_tbl(1).c_ext_attr12 := nvl(p_uda_rec_tbl(cntr).c_ext_attr12,
2572                                            p_uda_rec_tbl(1).c_ext_attr12);
2573       p_uda_rec_tbl(1).c_ext_attr13 := nvl(p_uda_rec_tbl(cntr).c_ext_attr13,
2574                                            p_uda_rec_tbl(1).c_ext_attr13);
2575       p_uda_rec_tbl(1).c_ext_attr14 := nvl(p_uda_rec_tbl(cntr).c_ext_attr14,
2576                                            p_uda_rec_tbl(1).c_ext_attr14);
2577       p_uda_rec_tbl(1).c_ext_attr15 := nvl(p_uda_rec_tbl(cntr).c_ext_attr15,
2578                                            p_uda_rec_tbl(1).c_ext_attr15);
2579       p_uda_rec_tbl(1).c_ext_attr16 := nvl(p_uda_rec_tbl(cntr).c_ext_attr16,
2580                                            p_uda_rec_tbl(1).c_ext_attr16);
2581       p_uda_rec_tbl(1).c_ext_attr17 := nvl(p_uda_rec_tbl(cntr).c_ext_attr17,
2582                                            p_uda_rec_tbl(1).c_ext_attr17);
2583       p_uda_rec_tbl(1).c_ext_attr18 := nvl(p_uda_rec_tbl(cntr).c_ext_attr18,
2584                                            p_uda_rec_tbl(1).c_ext_attr18);
2585       p_uda_rec_tbl(1).c_ext_attr19 := nvl(p_uda_rec_tbl(cntr).c_ext_attr19,
2586                                            p_uda_rec_tbl(1).c_ext_attr19);
2587       p_uda_rec_tbl(1).c_ext_attr20 := nvl(p_uda_rec_tbl(cntr).c_ext_attr20,
2588                                            p_uda_rec_tbl(1).c_ext_attr20);
2589 
2590       p_uda_rec_tbl(1).c_ext_attr21 := nvl(p_uda_rec_tbl(cntr).c_ext_attr21,
2591                                            p_uda_rec_tbl(1).c_ext_attr21);
2592       p_uda_rec_tbl(1).c_ext_attr22 := nvl(p_uda_rec_tbl(cntr).c_ext_attr22,
2593                                            p_uda_rec_tbl(1).c_ext_attr22);
2594       p_uda_rec_tbl(1).c_ext_attr23 := nvl(p_uda_rec_tbl(cntr).c_ext_attr23,
2595                                            p_uda_rec_tbl(1).c_ext_attr23);
2596       p_uda_rec_tbl(1).c_ext_attr24 := nvl(p_uda_rec_tbl(cntr).c_ext_attr24,
2597                                            p_uda_rec_tbl(1).c_ext_attr24);
2598       p_uda_rec_tbl(1).c_ext_attr25 := nvl(p_uda_rec_tbl(cntr).c_ext_attr25,
2599                                            p_uda_rec_tbl(1).c_ext_attr25);
2600       p_uda_rec_tbl(1).c_ext_attr26 := nvl(p_uda_rec_tbl(cntr).c_ext_attr26,
2601                                            p_uda_rec_tbl(1).c_ext_attr26);
2602       p_uda_rec_tbl(1).c_ext_attr27 := nvl(p_uda_rec_tbl(cntr).c_ext_attr27,
2603                                            p_uda_rec_tbl(1).c_ext_attr27);
2604       p_uda_rec_tbl(1).c_ext_attr28 := nvl(p_uda_rec_tbl(cntr).c_ext_attr28,
2605                                            p_uda_rec_tbl(1).c_ext_attr28);
2606       p_uda_rec_tbl(1).c_ext_attr29 := nvl(p_uda_rec_tbl(cntr).c_ext_attr29,
2607                                            p_uda_rec_tbl(1).c_ext_attr29);
2608       p_uda_rec_tbl(1).c_ext_attr30 := nvl(p_uda_rec_tbl(cntr).c_ext_attr30,
2609                                            p_uda_rec_tbl(1).c_ext_attr30);
2610 
2611       p_uda_rec_tbl(1).c_ext_attr31 := nvl(p_uda_rec_tbl(cntr).c_ext_attr31,
2612                                            p_uda_rec_tbl(1).c_ext_attr31);
2613       p_uda_rec_tbl(1).c_ext_attr32 := nvl(p_uda_rec_tbl(cntr).c_ext_attr32,
2614                                            p_uda_rec_tbl(1).c_ext_attr32);
2615       p_uda_rec_tbl(1).c_ext_attr33 := nvl(p_uda_rec_tbl(cntr).c_ext_attr33,
2616                                            p_uda_rec_tbl(1).c_ext_attr33);
2617       p_uda_rec_tbl(1).c_ext_attr34 := nvl(p_uda_rec_tbl(cntr).c_ext_attr34,
2618                                            p_uda_rec_tbl(1).c_ext_attr34);
2619       p_uda_rec_tbl(1).c_ext_attr35 := nvl(p_uda_rec_tbl(cntr).c_ext_attr35,
2620                                            p_uda_rec_tbl(1).c_ext_attr35);
2621       p_uda_rec_tbl(1).c_ext_attr36 := nvl(p_uda_rec_tbl(cntr).c_ext_attr36,
2622                                            p_uda_rec_tbl(1).c_ext_attr36);
2623       p_uda_rec_tbl(1).c_ext_attr37 := nvl(p_uda_rec_tbl(cntr).c_ext_attr37,
2624                                            p_uda_rec_tbl(1).c_ext_attr37);
2625       p_uda_rec_tbl(1).c_ext_attr38 := nvl(p_uda_rec_tbl(cntr).c_ext_attr38,
2626                                            p_uda_rec_tbl(1).c_ext_attr38);
2627       p_uda_rec_tbl(1).c_ext_attr39 := nvl(p_uda_rec_tbl(cntr).c_ext_attr39,
2628                                            p_uda_rec_tbl(1).c_ext_attr39);
2629       p_uda_rec_tbl(1).c_ext_attr40 := nvl(p_uda_rec_tbl(cntr).c_ext_attr40,
2630                                            p_uda_rec_tbl(1).c_ext_attr40);
2631 
2632       /* Merge numeric extension attributes */
2633 
2634       p_uda_rec_tbl(1).n_ext_attr1 := nvl(p_uda_rec_tbl(cntr).n_ext_attr1,
2635                                           p_uda_rec_tbl(1).n_ext_attr1);
2636       p_uda_rec_tbl(1).n_ext_attr2 := nvl(p_uda_rec_tbl(cntr).n_ext_attr2,
2637                                           p_uda_rec_tbl(1).n_ext_attr2);
2638       p_uda_rec_tbl(1).n_ext_attr3 := nvl(p_uda_rec_tbl(cntr).n_ext_attr3,
2639                                           p_uda_rec_tbl(1).n_ext_attr3);
2640       p_uda_rec_tbl(1).n_ext_attr4 := nvl(p_uda_rec_tbl(cntr).n_ext_attr4,
2641                                           p_uda_rec_tbl(1).n_ext_attr4);
2642       p_uda_rec_tbl(1).n_ext_attr5 := nvl(p_uda_rec_tbl(cntr).n_ext_attr5,
2643                                           p_uda_rec_tbl(1).n_ext_attr5);
2644       p_uda_rec_tbl(1).n_ext_attr6 := nvl(p_uda_rec_tbl(cntr).n_ext_attr6,
2645                                           p_uda_rec_tbl(1).n_ext_attr6);
2646       p_uda_rec_tbl(1).n_ext_attr7 := nvl(p_uda_rec_tbl(cntr).n_ext_attr7,
2647                                           p_uda_rec_tbl(1).n_ext_attr7);
2648       p_uda_rec_tbl(1).n_ext_attr8 := nvl(p_uda_rec_tbl(cntr).n_ext_attr8,
2649                                           p_uda_rec_tbl(1).n_ext_attr8);
2650       p_uda_rec_tbl(1).n_ext_attr9 := nvl(p_uda_rec_tbl(cntr).n_ext_attr9,
2651                                           p_uda_rec_tbl(1).n_ext_attr9);
2652       p_uda_rec_tbl(1).n_ext_attr10 := nvl(p_uda_rec_tbl(cntr).n_ext_attr10,
2653                                            p_uda_rec_tbl(1).n_ext_attr10);
2654 
2655       p_uda_rec_tbl(1).n_ext_attr11 := nvl(p_uda_rec_tbl(cntr).n_ext_attr11,
2656                                            p_uda_rec_tbl(1).n_ext_attr11);
2657       p_uda_rec_tbl(1).n_ext_attr12 := nvl(p_uda_rec_tbl(cntr).n_ext_attr12,
2658                                            p_uda_rec_tbl(1).n_ext_attr12);
2659       p_uda_rec_tbl(1).n_ext_attr13 := nvl(p_uda_rec_tbl(cntr).n_ext_attr13,
2660                                            p_uda_rec_tbl(1).n_ext_attr13);
2661       p_uda_rec_tbl(1).n_ext_attr14 := nvl(p_uda_rec_tbl(cntr).n_ext_attr14,
2662                                            p_uda_rec_tbl(1).n_ext_attr14);
2663       p_uda_rec_tbl(1).n_ext_attr15 := nvl(p_uda_rec_tbl(cntr).n_ext_attr15,
2664                                            p_uda_rec_tbl(1).n_ext_attr15);
2665       p_uda_rec_tbl(1).n_ext_attr16 := nvl(p_uda_rec_tbl(cntr).n_ext_attr16,
2666                                            p_uda_rec_tbl(1).n_ext_attr16);
2667       p_uda_rec_tbl(1).n_ext_attr17 := nvl(p_uda_rec_tbl(cntr).n_ext_attr17,
2668                                            p_uda_rec_tbl(1).n_ext_attr17);
2669       p_uda_rec_tbl(1).n_ext_attr18 := nvl(p_uda_rec_tbl(cntr).n_ext_attr18,
2670                                            p_uda_rec_tbl(1).n_ext_attr18);
2671       p_uda_rec_tbl(1).n_ext_attr19 := nvl(p_uda_rec_tbl(cntr).n_ext_attr19,
2672                                            p_uda_rec_tbl(1).n_ext_attr19);
2673       p_uda_rec_tbl(1).n_ext_attr20 := nvl(p_uda_rec_tbl(cntr).n_ext_attr20,
2674                                            p_uda_rec_tbl(1).n_ext_attr20);
2675 
2676       /* Merge date extension attributes */
2677 
2678       p_uda_rec_tbl(1).d_ext_attr1 := nvl(p_uda_rec_tbl(cntr).d_ext_attr1,
2679                                           p_uda_rec_tbl(1).d_ext_attr1);
2680       p_uda_rec_tbl(1).d_ext_attr2 := nvl(p_uda_rec_tbl(cntr).d_ext_attr2,
2681                                           p_uda_rec_tbl(1).d_ext_attr2);
2682       p_uda_rec_tbl(1).d_ext_attr3 := nvl(p_uda_rec_tbl(cntr).d_ext_attr3,
2683                                           p_uda_rec_tbl(1).d_ext_attr3);
2684       p_uda_rec_tbl(1).d_ext_attr4 := nvl(p_uda_rec_tbl(cntr).d_ext_attr4,
2685                                           p_uda_rec_tbl(1).d_ext_attr4);
2686       p_uda_rec_tbl(1).d_ext_attr5 := nvl(p_uda_rec_tbl(cntr).d_ext_attr5,
2687                                           p_uda_rec_tbl(1).d_ext_attr5);
2688       p_uda_rec_tbl(1).d_ext_attr6 := nvl(p_uda_rec_tbl(cntr).d_ext_attr6,
2689                                           p_uda_rec_tbl(1).d_ext_attr6);
2690       p_uda_rec_tbl(1).d_ext_attr7 := nvl(p_uda_rec_tbl(cntr).d_ext_attr7,
2691                                           p_uda_rec_tbl(1).d_ext_attr7);
2692       p_uda_rec_tbl(1).d_ext_attr8 := nvl(p_uda_rec_tbl(cntr).d_ext_attr8,
2693                                           p_uda_rec_tbl(1).d_ext_attr8);
2694       p_uda_rec_tbl(1).d_ext_attr9 := nvl(p_uda_rec_tbl(cntr).d_ext_attr9,
2695                                           p_uda_rec_tbl(1).d_ext_attr9);
2696       p_uda_rec_tbl(1).d_ext_attr10 := nvl(p_uda_rec_tbl(cntr).d_ext_attr10,
2697                                            p_uda_rec_tbl(1).d_ext_attr10);
2698 
2699       /* Merge UOM extension attributes */
2700 
2701       p_uda_rec_tbl(1).uom_ext_attr1 := nvl(p_uda_rec_tbl(cntr)
2702                                             .uom_ext_attr1,
2703                                             p_uda_rec_tbl(1).uom_ext_attr1);
2704       p_uda_rec_tbl(1).uom_ext_attr2 := nvl(p_uda_rec_tbl(cntr)
2705                                             .uom_ext_attr2,
2706                                             p_uda_rec_tbl(1).uom_ext_attr2);
2707       p_uda_rec_tbl(1).uom_ext_attr3 := nvl(p_uda_rec_tbl(cntr)
2708                                             .uom_ext_attr3,
2709                                             p_uda_rec_tbl(1).uom_ext_attr3);
2710       p_uda_rec_tbl(1).uom_ext_attr4 := nvl(p_uda_rec_tbl(cntr)
2711                                             .uom_ext_attr4,
2712                                             p_uda_rec_tbl(1).uom_ext_attr4);
2713       p_uda_rec_tbl(1).uom_ext_attr5 := nvl(p_uda_rec_tbl(cntr)
2714                                             .uom_ext_attr5,
2715                                             p_uda_rec_tbl(1).uom_ext_attr5);
2716       p_uda_rec_tbl(1).uom_ext_attr6 := nvl(p_uda_rec_tbl(cntr)
2717                                             .uom_ext_attr6,
2718                                             p_uda_rec_tbl(1).uom_ext_attr6);
2719       p_uda_rec_tbl(1).uom_ext_attr7 := nvl(p_uda_rec_tbl(cntr)
2720                                             .uom_ext_attr7,
2721                                             p_uda_rec_tbl(1).uom_ext_attr7);
2722       p_uda_rec_tbl(1).uom_ext_attr8 := nvl(p_uda_rec_tbl(cntr)
2723                                             .uom_ext_attr8,
2724                                             p_uda_rec_tbl(1).uom_ext_attr8);
2725       p_uda_rec_tbl(1).uom_ext_attr9 := nvl(p_uda_rec_tbl(cntr)
2726                                             .uom_ext_attr9,
2727                                             p_uda_rec_tbl(1).uom_ext_attr9);
2728       p_uda_rec_tbl(1).uom_ext_attr10 := nvl(p_uda_rec_tbl(cntr)
2729                                              .uom_ext_attr10,
2730                                              p_uda_rec_tbl(1).uom_ext_attr10);
2731 
2732       p_uda_rec_tbl(1).uom_ext_attr11 := nvl(p_uda_rec_tbl(cntr)
2733                                              .uom_ext_attr11,
2734                                              p_uda_rec_tbl(1).uom_ext_attr11);
2735       p_uda_rec_tbl(1).uom_ext_attr12 := nvl(p_uda_rec_tbl(cntr)
2736                                              .uom_ext_attr12,
2737                                              p_uda_rec_tbl(1).uom_ext_attr12);
2738       p_uda_rec_tbl(1).uom_ext_attr13 := nvl(p_uda_rec_tbl(cntr)
2739                                              .uom_ext_attr13,
2740                                              p_uda_rec_tbl(1).uom_ext_attr13);
2741       p_uda_rec_tbl(1).uom_ext_attr14 := nvl(p_uda_rec_tbl(cntr)
2742                                              .uom_ext_attr14,
2743                                              p_uda_rec_tbl(1).uom_ext_attr14);
2744       p_uda_rec_tbl(1).uom_ext_attr15 := nvl(p_uda_rec_tbl(cntr)
2745                                              .uom_ext_attr15,
2746                                              p_uda_rec_tbl(1).uom_ext_attr15);
2747       p_uda_rec_tbl(1).uom_ext_attr16 := nvl(p_uda_rec_tbl(cntr)
2748                                              .uom_ext_attr16,
2749                                              p_uda_rec_tbl(1).uom_ext_attr16);
2750       p_uda_rec_tbl(1).uom_ext_attr17 := nvl(p_uda_rec_tbl(cntr)
2751                                              .uom_ext_attr17,
2752                                              p_uda_rec_tbl(1).uom_ext_attr17);
2753       p_uda_rec_tbl(1).uom_ext_attr18 := nvl(p_uda_rec_tbl(cntr)
2754                                              .uom_ext_attr18,
2755                                              p_uda_rec_tbl(1).uom_ext_attr18);
2756       p_uda_rec_tbl(1).uom_ext_attr19 := nvl(p_uda_rec_tbl(cntr)
2757                                              .uom_ext_attr19,
2758                                              p_uda_rec_tbl(1).uom_ext_attr19);
2759       p_uda_rec_tbl(1).uom_ext_attr20 := nvl(p_uda_rec_tbl(cntr)
2760                                              .uom_ext_attr20,
2761                                              p_uda_rec_tbl(1).uom_ext_attr20);
2762 
2763     END LOOP;
2764     x_uda_rec := p_uda_rec_tbl(1);
2765 
2766   EXCEPTION
2767     WHEN OTHERS THEN
2768       x_return_status := fnd_api.g_ret_sts_unexp_error;
2769   END do_single_row_uda_merge;
2770 
2771   PROCEDURE do_uda_row_dml
2772   (
2773     p_attribute_group_id   IN NUMBER,
2774     p_data_level_id        IN NUMBER,
2775     p_attribute_group_type IN VARCHAR2,
2776     p_attribute_group_name IN VARCHAR2,
2777     p_to_party_id          IN NUMBER,
2778     p_mode                 IN VARCHAR2,
2779     p_uda_rec_tbl          IN uda_rec_tbl_type,
2780     p_class_code           IN VARCHAR2,
2781     p_vendor_id            IN NUMBER DEFAULT NULL,
2782     x_return_status        OUT NOCOPY VARCHAR2,
2783     x_msg_count            OUT NOCOPY NUMBER,
2784     x_msg_data             OUT NOCOPY VARCHAR2
2785   ) IS
2786     l_request_table               ego_attr_group_request_table := ego_attr_group_request_table(NULL);
2787     l_pk_column_values            ego_col_name_value_pair_array;
2788     l_class_code_name_value_pairs ego_col_name_value_pair_array := ego_col_name_value_pair_array(NULL);
2789     l_party_id                    NUMBER;
2790     l_party_site_id               NUMBER;
2791 
2792     l_attributes_row_table      ego_user_attr_row_table := ego_user_attr_row_table(NULL);
2793     l_attributes_data_table     ego_user_attr_data_table := ego_user_attr_data_table(NULL);
2794     l_all_attributes_data_table ego_user_attr_data_table := ego_user_attr_data_table();
2795 
2796     l_attributes_row_table2      ego_user_attr_row_table := ego_user_attr_row_table(NULL);
2797     l_attributes_data_table2     ego_user_attr_data_table := ego_user_attr_data_table(NULL);
2798     l_all_attributes_data_table2 ego_user_attr_data_table := ego_user_attr_data_table();
2799 
2800     l_row_identifier NUMBER;
2801     l_uda_rec_tbl    uda_rec_tbl_type;
2802 
2803     l_uda_data_rec         pos_supp_prof_ext_b%ROWTYPE;
2804     l_failed_row_id_buffer VARCHAR2(1000);
2805 
2806     l_return_status VARCHAR2(2000);
2807     l_msg_count     NUMBER;
2808     l_msg_data      VARCHAR2(100);
2809     l_errorcode     NUMBER;
2810     l_error_msg_tbl error_handler.error_tbl_type;
2811     where_clause    VARCHAR2(5000);
2812 
2813     TYPE cursor_ref_type IS REF CURSOR;
2814     l_pscur cursor_ref_type;
2815     l_sql   VARCHAR2(4000) := NULL;
2816     l_ext1  NUMBER;
2817     l_count NUMBER;
2818 
2819     CURSOR attr_unique_key IS
2820       SELECT database_column
2821       FROM   ego_attrs_v
2822       WHERE  application_id = 177
2823       AND    attr_group_name = p_attribute_group_name
2824       AND    attr_group_type = p_attribute_group_type
2825       AND    unique_key_flag = 'Y';
2826 
2827     TYPE attr_unique_key_tab IS TABLE OF attr_unique_key%ROWTYPE INDEX BY BINARY_INTEGER;
2828     attr_unique_key_coll attr_unique_key_tab;
2829 
2830     key_vals_str VARCHAR2(2000);
2831     key_col_val  VARCHAR2(2000);
2832 
2833     TYPE key_cols_array_tab_typ IS TABLE OF VARCHAR2(1000) INDEX BY VARCHAR2(2000);
2834     key_cols_array_tab key_cols_array_tab_typ;
2835 
2836     key_combination_exists BOOLEAN := FALSE;
2837 
2838   BEGIN
2839     x_return_status  := fnd_api.g_ret_sts_success;
2840     l_row_identifier := 1020;
2841 
2842     /* Build the Primary key Name value pairs */
2843     IF (p_data_level_id = 17701) THEN
2844 
2845       l_pk_column_values := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('PARTY_ID',
2846                                                                                       to_char(p_to_party_id)));
2847     ELSIF (p_data_level_id = 17702) THEN
2848       BEGIN
2849         SELECT party_id
2850         INTO   l_party_id
2851         FROM   hz_party_sites
2852         WHERE  party_site_id = p_to_party_id;
2853 
2854       EXCEPTION
2855         WHEN no_data_found THEN
2856           fnd_file.put_line(fnd_file.log,
2857                             'No party id found for party site id : ' ||
2858                             p_to_party_id);
2859           x_return_status := fnd_api.g_ret_sts_error;
2860           RETURN;
2861       END;
2862       l_pk_column_values := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('PARTY_ID',
2863                                                                                       to_char(l_party_id)));
2864 
2865     ELSIF (p_data_level_id = 17703) THEN
2866       BEGIN
2867         SELECT party_id
2868         INTO   l_party_id
2869         FROM   ap_suppliers
2870         WHERE  vendor_id = p_vendor_id;
2871 
2872       EXCEPTION
2873         WHEN no_data_found THEN
2874           fnd_file.put_line(fnd_file.log,
2875                             'No party id found for vendor id : ' ||
2876                             p_vendor_id);
2877           x_return_status := fnd_api.g_ret_sts_error;
2878           RETURN;
2879       END;
2880 
2881       BEGIN
2882         SELECT party_site_id
2883         INTO   l_party_site_id
2884         FROM   ap_supplier_sites_all
2885         WHERE  vendor_site_id = p_to_party_id;
2886 
2887       EXCEPTION
2888         WHEN no_data_found THEN
2889           fnd_file.put_line(fnd_file.log,
2890                             'No party site id found for vendor site id : ' ||
2891                             p_to_party_id);
2892           x_return_status := fnd_api.g_ret_sts_error;
2893           RETURN;
2894       END;
2895       l_pk_column_values := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('PARTY_ID',
2896                                                                                       to_char(l_party_id)));
2897     END IF;
2898 
2899     /* Build the Attribute group Object */
2900     l_request_table(l_request_table.last) := ego_attr_group_request_obj(p_attribute_group_id,
2901                                                                         NULL, -- application id
2902                                                                         NULL, -- group type
2903                                                                         NULL, -- group name
2904                                                                         'SUPP_LEVEL', -- data level
2905                                                                         '''N''', -- DATA_LEVEL_1
2906                                                                         NULL, -- DATA_LEVEL_2
2907                                                                         NULL, -- DATA_LEVEL_3
2908                                                                         NULL, -- DATA_LEVEL_4
2909                                                                         NULL, -- DATA_LEVEL_5
2910                                                                         NULL -- ATTR_NAME_LIST
2911                                                                         );
2912     OPEN attr_unique_key;
2913     FETCH attr_unique_key BULK COLLECT
2914       INTO attr_unique_key_coll;
2915     CLOSE attr_unique_key;
2916 
2917     FOR datacntr IN 1 .. p_uda_rec_tbl.count LOOP
2918       FOR keycntr IN 1 .. attr_unique_key_coll.count LOOP
2919         where_clause := where_clause || ' AND  pos1.' || attr_unique_key_coll(keycntr)
2920                        .database_column || ' = pos2.' || attr_unique_key_coll(keycntr)
2921                        .database_column;
2922 
2923         CASE attr_unique_key_coll(keycntr).database_column
2924 
2925         /* Process Character attributes */
2926 
2927           WHEN 'C_EXT_ATTR1' THEN
2928             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr1;
2929 
2930           WHEN 'C_EXT_ATTR2' THEN
2931             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr2;
2932           WHEN 'C_EXT_ATTR3' THEN
2933             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr3;
2934           WHEN 'C_EXT_ATTR4' THEN
2935             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr4;
2936           WHEN 'C_EXT_ATTR5' THEN
2937             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr5;
2938           WHEN 'C_EXT_ATTR6' THEN
2939             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr6;
2940           WHEN 'C_EXT_ATTR7' THEN
2941             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr7;
2942           WHEN 'C_EXT_ATTR8' THEN
2943             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr8;
2944           WHEN 'C_EXT_ATTR9' THEN
2945             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr9;
2946           WHEN 'C_EXT_ATTR10' THEN
2947             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr10;
2948           WHEN 'C_EXT_ATTR11' THEN
2949             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr11;
2950           WHEN 'C_EXT_ATTR12' THEN
2951             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr12;
2952           WHEN 'C_EXT_ATTR13' THEN
2953             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr13;
2954           WHEN 'C_EXT_ATTR14' THEN
2955             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr14;
2956           WHEN 'C_EXT_ATTR15' THEN
2957             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr15;
2958           WHEN 'C_EXT_ATTR16' THEN
2959             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr16;
2960           WHEN 'C_EXT_ATTR17' THEN
2961             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr17;
2962           WHEN 'C_EXT_ATTR18' THEN
2963             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr18;
2964           WHEN 'C_EXT_ATTR19' THEN
2965             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr19;
2966           WHEN 'C_EXT_ATTR20' THEN
2967             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr20;
2968           WHEN 'C_EXT_ATTR21' THEN
2969             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr21;
2970           WHEN 'C_EXT_ATTR22' THEN
2971             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr22;
2972           WHEN 'C_EXT_ATTR23' THEN
2973             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr23;
2974           WHEN 'C_EXT_ATTR24' THEN
2975             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr24;
2976           WHEN 'C_EXT_ATTR25' THEN
2977             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr25;
2978           WHEN 'C_EXT_ATTR26' THEN
2979             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr26;
2980           WHEN 'C_EXT_ATTR27' THEN
2981             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr27;
2982           WHEN 'C_EXT_ATTR28' THEN
2983             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr28;
2984           WHEN 'C_EXT_ATTR29' THEN
2985             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr29;
2986           WHEN 'C_EXT_ATTR30' THEN
2987             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr30;
2988           WHEN 'C_EXT_ATTR31' THEN
2989             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr31;
2990           WHEN 'C_EXT_ATTR32' THEN
2991             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr32;
2992           WHEN 'C_EXT_ATTR33' THEN
2993             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr33;
2994           WHEN 'C_EXT_ATTR34' THEN
2995             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr34;
2996           WHEN 'C_EXT_ATTR35' THEN
2997             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr35;
2998           WHEN 'C_EXT_ATTR36' THEN
2999             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr36;
3000           WHEN 'C_EXT_ATTR37' THEN
3001             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr37;
3002           WHEN 'C_EXT_ATTR38' THEN
3003             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr38;
3004           WHEN 'C_EXT_ATTR39' THEN
3005             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr39;
3006           WHEN 'C_EXT_ATTR40' THEN
3007             key_col_val := p_uda_rec_tbl(datacntr).c_ext_attr40;
3008 
3009         /* Process Numeric attributes */
3010 
3011           WHEN 'N_EXT_ATTR1' THEN
3012             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr1;
3013           WHEN 'N_EXT_ATTR2' THEN
3014             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr2;
3015           WHEN 'N_EXT_ATTR3' THEN
3016             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr3;
3017           WHEN 'N_EXT_ATTR4' THEN
3018             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr4;
3019           WHEN 'N_EXT_ATTR5' THEN
3020             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr5;
3021           WHEN 'N_EXT_ATTR6' THEN
3022             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr6;
3023           WHEN 'N_EXT_ATTR7' THEN
3024             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr7;
3025           WHEN 'N_EXT_ATTR8' THEN
3026             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr8;
3027           WHEN 'N_EXT_ATTR9' THEN
3028             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr9;
3029           WHEN 'N_EXT_ATTR10' THEN
3030             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr10;
3031           WHEN 'N_EXT_ATTR11' THEN
3032             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr11;
3033           WHEN 'N_EXT_ATTR12' THEN
3034             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr12;
3035           WHEN 'N_EXT_ATTR13' THEN
3036             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr13;
3037           WHEN 'N_EXT_ATTR14' THEN
3038             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr14;
3039           WHEN 'N_EXT_ATTR15' THEN
3040             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr15;
3041           WHEN 'N_EXT_ATTR16' THEN
3042             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr16;
3043           WHEN 'N_EXT_ATTR17' THEN
3044             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr17;
3045           WHEN 'N_EXT_ATTR18' THEN
3046             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr18;
3047           WHEN 'N_EXT_ATTR19' THEN
3048             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr19;
3049           WHEN 'N_EXT_ATTR20' THEN
3050             key_col_val := p_uda_rec_tbl(datacntr).n_ext_attr20;
3051 
3052         /* Process Date attributes */
3053 
3054           WHEN 'D_EXT_ATTR1' THEN
3055             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr1;
3056           WHEN 'D_EXT_ATTR2' THEN
3057             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr2;
3058           WHEN 'D_EXT_ATTR3' THEN
3059             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr3;
3060           WHEN 'D_EXT_ATTR4' THEN
3061             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr4;
3062           WHEN 'D_EXT_ATTR5' THEN
3063             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr5;
3064           WHEN 'D_EXT_ATTR6' THEN
3065             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr6;
3066           WHEN 'D_EXT_ATTR7' THEN
3067             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr7;
3068           WHEN 'D_EXT_ATTR8' THEN
3069             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr8;
3070           WHEN 'D_EXT_ATTR9' THEN
3071             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr9;
3072           WHEN 'D_EXT_ATTR10' THEN
3073             key_col_val := p_uda_rec_tbl(datacntr).d_ext_attr10;
3074 
3075         /* Process UOM attributes */
3076 
3077           WHEN 'UOM_EXT_ATTR1' THEN
3078             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr1;
3079           WHEN 'UOM_EXT_ATTR2' THEN
3080             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr2;
3081           WHEN 'UOM_EXT_ATTR3' THEN
3082             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr3;
3083           WHEN 'UOM_EXT_ATTR4' THEN
3084             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr4;
3085           WHEN 'UOM_EXT_ATTR5' THEN
3086             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr5;
3087           WHEN 'UOM_EXT_ATTR6' THEN
3088             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr6;
3089           WHEN 'UOM_EXT_ATTR7' THEN
3090             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr7;
3091           WHEN 'UOM_EXT_ATTR8' THEN
3092             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr8;
3093           WHEN 'UOM_EXT_ATTR9' THEN
3094             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr9;
3095           WHEN 'UOM_EXT_ATTR10' THEN
3096             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr10;
3097           WHEN 'UOM_EXT_ATTR11' THEN
3098             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr11;
3099           WHEN 'UOM_EXT_ATTR12' THEN
3100             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr12;
3101           WHEN 'UOM_EXT_ATTR13' THEN
3102             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr13;
3103           WHEN 'UOM_EXT_ATTR14' THEN
3104             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr14;
3105           WHEN 'UOM_EXT_ATTR15' THEN
3106             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr15;
3107           WHEN 'UOM_EXT_ATTR16' THEN
3108             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr16;
3109           WHEN 'UOM_EXT_ATTR17' THEN
3110             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr17;
3111           WHEN 'UOM_EXT_ATTR18' THEN
3112             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr18;
3113           WHEN 'UOM_EXT_ATTR19' THEN
3114             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr19;
3115           WHEN 'UOM_EXT_ATTR20' THEN
3116             key_col_val := p_uda_rec_tbl(datacntr).uom_ext_attr20;
3117           ELSE
3118             key_col_val := NULL;
3119         END CASE;
3120 
3121         key_vals_str := key_col_val || '-' || key_vals_str;
3122       END LOOP;
3123 
3124       IF NOT key_cols_array_tab.exists(key_vals_str) THEN
3125         key_cols_array_tab(key_vals_str) := 1;
3126         key_combination_exists := FALSE;
3127       ELSE
3128         key_combination_exists := TRUE;
3129       END IF;
3130       key_vals_str := NULL;
3131       key_col_val  := NULL;
3132 
3133       IF (p_data_level_id = 17701) THEN
3134         l_sql := 'SELECT pos1.extension_id to_ext_id
3135       FROM   pos_supp_prof_ext_b pos1,
3136              pos_supp_prof_ext_b pos2
3137       WHERE  pos1.attr_group_id = ' || p_attribute_group_id ||
3138                  ' AND    pos1.data_level_id = ' || p_data_level_id ||
3139                  ' AND    pos1.attr_group_id = pos2.attr_group_id
3140       AND    pos1.data_level_id = pos2.data_level_id
3141       AND    pos2.party_id = ' || p_uda_rec_tbl(datacntr)
3142                 .party_id || ' AND  pos2.extension_id = ' || p_uda_rec_tbl(datacntr)
3143                 .extension_id || ' AND    pos1.party_id = ' ||
3144                  p_to_party_id || where_clause;
3145 
3146       ELSIF (p_data_level_id = 17702) THEN
3147         l_sql := 'SELECT pos1.extension_id to_ext_id
3148       FROM   pos_supp_prof_ext_b pos1,
3149              pos_supp_prof_ext_b pos2
3150       WHERE  pos1.attr_group_id = ' || p_attribute_group_id ||
3151                  ' AND    pos1.data_level_id = ' || p_data_level_id ||
3152                  ' AND    pos1.attr_group_id = pos2.attr_group_id
3153       AND    pos1.data_level_id = pos2.data_level_id
3154       AND    pos2.party_id = ' || p_uda_rec_tbl(datacntr)
3155                 .party_id || ' AND  pos2.extension_id = ' || p_uda_rec_tbl(datacntr)
3156                 .extension_id || ' AND pos2.pk1_value = ' || p_uda_rec_tbl(datacntr)
3157                 .pk1_value || ' AND pos1.pk1_value = ' || p_to_party_id ||
3158                  where_clause;
3159 
3160       ELSIF (p_data_level_id = 17703) THEN
3161         l_sql := 'SELECT pos1.extension_id to_ext_id
3162       FROM   pos_supp_prof_ext_b pos1,
3163              pos_supp_prof_ext_b pos2
3164       WHERE  pos1.attr_group_id = ' || p_attribute_group_id ||
3165                  ' AND    pos1.data_level_id = ' || p_data_level_id ||
3166                  ' AND    pos1.attr_group_id = pos2.attr_group_id
3167       AND    pos1.data_level_id = pos2.data_level_id
3168       AND    pos2.party_id = ' || p_uda_rec_tbl(datacntr)
3169                 .party_id || ' AND  pos2.extension_id = ' || p_uda_rec_tbl(datacntr)
3170                 .extension_id || ' AND pos2.pk2_value = ' || p_uda_rec_tbl(datacntr)
3171                 .pk2_value || ' AND pos1.pk2_value = ' || p_to_party_id ||
3172                  where_clause;
3173       END IF;
3174 
3175       l_ext1 := NULL;
3176 
3177       OPEN l_pscur FOR l_sql;
3178       FETCH l_pscur
3179         INTO l_ext1;
3180       CLOSE l_pscur;
3181 
3182       IF (l_ext1 IS NOT NULL) THEN
3183         IF key_combination_exists = FALSE THEN
3184           -- update multirow suchita
3185           IF (p_data_level_id = 17701) THEN
3186             l_sql := 'SELECT *
3187                        FROM   pos_supp_prof_ext_b
3188                        WHERE  party_id = ' || p_uda_rec_tbl(datacntr)
3189                     .party_id || ' AND extension_id = ' || p_uda_rec_tbl(datacntr)
3190                     .extension_id ||
3191                      ' UNION ALL
3192                      SELECT *
3193                        FROM   pos_supp_prof_ext_b
3194                        WHERE  party_id = ' ||
3195                      p_to_party_id || ' AND extension_id = ' || l_ext1;
3196 
3197           ELSIF (p_data_level_id = 17702) THEN
3198             l_sql := 'SELECT *
3199                        FROM   pos_supp_prof_ext_b
3200                        WHERE  pk1_value = ' || p_uda_rec_tbl(datacntr)
3201                     .pk1_value || ' AND extension_id = ' || p_uda_rec_tbl(datacntr)
3202                     .extension_id ||
3203                      ' UNION ALL
3204                      SELECT *
3205                        FROM   pos_supp_prof_ext_b
3206                        WHERE  pk1_value = ' ||
3207                      p_to_party_id || ' AND extension_id = ' || l_ext1;
3208 
3209           ELSIF (p_data_level_id = 17703) THEN
3210             l_sql := 'SELECT *
3211                        FROM   pos_supp_prof_ext_b
3212                        WHERE  pk2_value = ' || p_uda_rec_tbl(datacntr)
3213                     .pk2_value || ' AND extension_id = ' || p_uda_rec_tbl(datacntr)
3214                     .extension_id ||
3215                      ' UNION ALL
3216                      SELECT *
3217                        FROM   pos_supp_prof_ext_b
3218                        WHERE  pk2_value = ' ||
3219                      p_to_party_id || ' AND extension_id = ' || l_ext1;
3220           END IF;
3221         ELSE
3222           -- update multirow suchita
3223           IF (p_data_level_id = 17701) THEN
3224             l_sql := 'SELECT *
3225                    FROM   pos_supp_prof_ext_b
3226                    WHERE  party_id = ' || p_to_party_id ||
3227                      ' AND extension_id = ' || l_ext1 ||
3228                      'UNION ALL
3229                     SELECT *
3230                    FROM   pos_supp_prof_ext_b
3231                    WHERE  party_id = ' || p_uda_rec_tbl(datacntr)
3232                     .party_id || ' AND extension_id = ' || p_uda_rec_tbl(datacntr)
3233                     .extension_id;
3234 
3235           ELSIF (p_data_level_id = 17702) THEN
3236             l_sql := 'SELECT *
3237                    FROM   pos_supp_prof_ext_b
3238                    WHERE  pk1_value = ' ||
3239                      p_to_party_id || ' AND extension_id = ' || l_ext1 ||
3240                      ' UNION ALL
3241                    SELECT *
3242                    FROM   pos_supp_prof_ext_b
3243                    WHERE  pk1_value = ' || p_uda_rec_tbl(datacntr)
3244                     .pk1_value || ' AND extension_id = ' || p_uda_rec_tbl(datacntr)
3245                     .extension_id;
3246 
3247           ELSIF (p_data_level_id = 17703) THEN
3248             l_sql := 'SELECT *
3249                    FROM   pos_supp_prof_ext_b
3250                    WHERE  pk2_value = ' ||
3251                      p_to_party_id || ' AND extension_id = ' || l_ext1 ||
3252                      ' UNION ALL
3253                    SELECT *
3254                    FROM   pos_supp_prof_ext_b
3255                    WHERE  pk2_value = ' || p_uda_rec_tbl(datacntr)
3256                     .pk2_value || ' AND extension_id = ' || p_uda_rec_tbl(datacntr)
3257                     .extension_id;
3258           END IF;
3259 
3260         END IF;
3261 
3262         OPEN l_pscur FOR l_sql;
3263         FETCH l_pscur BULK COLLECT
3264           INTO l_uda_rec_tbl;
3265         CLOSE l_pscur;
3266 
3267         do_single_row_uda_merge(l_uda_rec_tbl,
3268                                 l_uda_data_rec,
3269                                 l_return_status,
3270                                 l_msg_count,
3271                                 l_msg_data);
3272 
3273         /* Build the Row Object */
3274         IF (p_data_level_id = 17701) THEN
3275           l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3276                                                                                        p_attribute_group_id,
3277                                                                                        177,
3278                                                                                        'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3279                                                                                        p_attribute_group_name, --p_attribute_group_name,
3280                                                                                        'SUPP_LEVEL', -- data level
3281                                                                                        'N',
3282                                                                                        NULL,
3283                                                                                        NULL,
3284                                                                                        NULL,
3285                                                                                        NULL,
3286                                                                                        ego_user_attrs_data_pvt.g_update_mode --TRANSACTION_TYPE
3287                                                                                        );
3288         ELSIF (p_data_level_id = 17702) THEN
3289           l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3290                                                                                        p_attribute_group_id,
3291                                                                                        177,
3292                                                                                        'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3293                                                                                        p_attribute_group_name, --p_attribute_group_name,
3294                                                                                        'SUPP_ADDR_LEVEL', -- data level
3295                                                                                        'N',
3296                                                                                        p_to_party_id,
3297                                                                                        NULL,
3298                                                                                        NULL,
3299                                                                                        NULL,
3300                                                                                        ego_user_attrs_data_pvt.g_update_mode --TRANSACTION_TYPE
3301                                                                                        );
3302         ELSIF (p_data_level_id = 17703) THEN
3303           l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3304                                                                                        p_attribute_group_id,
3305                                                                                        177,
3306                                                                                        'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3307                                                                                        p_attribute_group_name, --p_attribute_group_name,
3308                                                                                        'SUPP_ADDR_SITE_LEVEL', -- data level
3309                                                                                        'N',
3310                                                                                        l_party_site_id,
3311                                                                                        p_to_party_id,
3312                                                                                        NULL,
3313                                                                                        NULL,
3314                                                                                        ego_user_attrs_data_pvt.g_update_mode --TRANSACTION_TYPE
3315                                                                                        );
3316         END IF;
3317 
3318         /* Build the data payload object */
3319         l_attributes_data_table := ego_user_attr_data_table(NULL);
3320 
3321         build_uda_data_payload(p_attribute_group_id    => p_attribute_group_id,
3322                                p_attribute_group_name  => p_attribute_group_name,
3323                                p_attribute_group_type  => p_attribute_group_type,
3324                                p_row_identifier        => l_row_identifier,
3325                                p_uda_data_rec          => l_uda_data_rec,
3326                                x_attributes_data_table => l_attributes_data_table);
3327 
3328         /*l_all_attributes_data_table := l_all_attributes_data_table MULTISET
3329                                        UNION l_attributes_data_table;*/
3330 
3331         l_count := l_all_attributes_data_table.count;
3332 
3333         FOR i IN 1 .. l_attributes_data_table.count LOOP
3334           l_all_attributes_data_table.extend;
3335           l_all_attributes_data_table(l_count + i) := ego_user_attr_data_obj(l_attributes_data_table(i)
3336                                                                              .row_identifier,
3337                                                                              l_attributes_data_table(i)
3338                                                                              .attr_name,
3339                                                                              l_attributes_data_table(i)
3340                                                                              .attr_value_str,
3341                                                                              l_attributes_data_table(i)
3342                                                                              .attr_value_num,
3343                                                                              l_attributes_data_table(i)
3344                                                                              .attr_value_date,
3345                                                                              l_attributes_data_table(i)
3346                                                                              .attr_disp_value,
3347                                                                              l_attributes_data_table(i)
3348                                                                              .attr_unit_of_measure,
3349                                                                              l_attributes_data_table(i)
3350                                                                              .user_row_identifier);
3351         END LOOP;
3352 
3353       ELSE
3354         /* Build the Row Object */
3355         IF (p_data_level_id = 17701) THEN
3356           l_attributes_row_table2(l_attributes_row_table2.last) := ego_user_attr_row_obj(l_row_identifier,
3357                                                                                          p_attribute_group_id,
3358                                                                                          177,
3359                                                                                          'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3360                                                                                          p_attribute_group_name, --p_attribute_group_name,
3361                                                                                          'SUPP_LEVEL', -- data level
3362                                                                                          'N',
3363                                                                                          NULL,
3364                                                                                          NULL,
3365                                                                                          NULL,
3366                                                                                          NULL,
3367                                                                                          ego_user_attrs_data_pvt.g_create_mode --TRANSACTION_TYPE
3368                                                                                          );
3369         ELSIF (p_data_level_id = 17702) THEN
3370           l_attributes_row_table2(l_attributes_row_table2.last) := ego_user_attr_row_obj(l_row_identifier,
3371                                                                                          p_attribute_group_id,
3372                                                                                          177,
3373                                                                                          'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3374                                                                                          p_attribute_group_name, --p_attribute_group_name,
3375                                                                                          'SUPP_ADDR_LEVEL', -- data level
3376                                                                                          'N',
3377                                                                                          p_to_party_id,
3378                                                                                          NULL,
3379                                                                                          NULL,
3380                                                                                          NULL,
3381                                                                                          ego_user_attrs_data_pvt.g_create_mode --TRANSACTION_TYPE
3382                                                                                          );
3383         ELSIF (p_data_level_id = 17703) THEN
3384           l_attributes_row_table2(l_attributes_row_table2.last) := ego_user_attr_row_obj(l_row_identifier,
3385                                                                                          p_attribute_group_id,
3386                                                                                          177,
3387                                                                                          'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3388                                                                                          p_attribute_group_name, --p_attribute_group_name,
3389                                                                                          'SUPP_ADDR_SITE_LEVEL', -- data level
3390                                                                                          'N',
3391                                                                                          l_party_site_id,
3392                                                                                          p_to_party_id,
3393                                                                                          NULL,
3394                                                                                          NULL,
3395                                                                                          ego_user_attrs_data_pvt.g_create_mode --TRANSACTION_TYPE
3396                                                                                          );
3397         END IF;
3398 
3399         /* Build the Data Object */
3400         l_uda_data_rec           := p_uda_rec_tbl(datacntr);
3401         l_attributes_data_table2 := ego_user_attr_data_table(NULL);
3402 
3403         build_uda_data_payload(p_attribute_group_id    => p_attribute_group_id,
3404                                p_attribute_group_name  => p_attribute_group_name,
3405                                p_attribute_group_type  => p_attribute_group_type,
3406                                p_row_identifier        => l_row_identifier,
3407                                p_uda_data_rec          => l_uda_data_rec,
3408                                x_attributes_data_table => l_attributes_data_table2);
3409 
3410         /*l_all_attributes_data_table2 := l_all_attributes_data_table2
3411                                         MULTISET UNION
3412                                         l_attributes_data_table2;*/
3413 
3414         l_count := l_all_attributes_data_table2.count;
3415 
3416         FOR i IN 1 .. l_attributes_data_table2.count LOOP
3417           l_all_attributes_data_table2.extend;
3418           l_all_attributes_data_table2(l_count + i) := ego_user_attr_data_obj(l_attributes_data_table2(i)
3419                                                                               .row_identifier,
3420                                                                               l_attributes_data_table2(i)
3421                                                                               .attr_name,
3422                                                                               l_attributes_data_table2(i)
3423                                                                               .attr_value_str,
3424                                                                               l_attributes_data_table2(i)
3425                                                                               .attr_value_num,
3426                                                                               l_attributes_data_table2(i)
3427                                                                               .attr_value_date,
3428                                                                               l_attributes_data_table2(i)
3429                                                                               .attr_disp_value,
3430                                                                               l_attributes_data_table2(i)
3431                                                                               .attr_unit_of_measure,
3432                                                                               l_attributes_data_table2(i)
3433                                                                               .user_row_identifier);
3434         END LOOP;
3435 
3436         l_class_code_name_value_pairs := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('CLASSIFICATION_CODE',
3437                                                                                                    p_class_code));
3438 
3439         ego_user_attrs_data_pub.process_user_attrs_data(p_api_version                 => 1.0,
3440                                                         p_object_name                 => 'HZ_PARTIES',
3441                                                         p_attributes_row_table        => l_attributes_row_table2,
3442                                                         p_attributes_data_table       => l_all_attributes_data_table2,
3443                                                         p_pk_column_name_value_pairs  => l_pk_column_values,
3444                                                         p_class_code_name_value_pairs => l_class_code_name_value_pairs,
3445                                                         p_entity_id                   => NULL,
3446                                                         p_entity_index                => NULL,
3447                                                         p_entity_code                 => NULL,
3448                                                         p_debug_level                 => NULL, --p_debug_level,
3449                                                         p_commit                      => fnd_api.g_false,
3450                                                         p_init_error_handler          => 'T',
3451                                                         p_init_fnd_msg_list           => 'T',
3452                                                         x_failed_row_id_list          => l_failed_row_id_buffer,
3453                                                         x_return_status               => l_return_status,
3454                                                         x_errorcode                   => l_errorcode,
3455                                                         x_msg_count                   => l_msg_count,
3456                                                         x_msg_data                    => l_msg_data);
3457 
3458         IF l_return_status <> fnd_api.g_ret_sts_success THEN
3459           error_handler.get_message_list(l_error_msg_tbl);
3460           IF l_error_msg_tbl.first IS NOT NULL THEN
3461             l_msg_count := l_error_msg_tbl.first;
3462             WHILE l_msg_count IS NOT NULL LOOP
3463               fnd_file.put_line(fnd_file.log,
3464                                 'Error Message: ' || l_error_msg_tbl(l_msg_count)
3465                                 .message_text ||
3466                                  ' From ego_user_attrs_data_pub.process_user_attrs_data API.');
3467               l_msg_count := l_error_msg_tbl.next(l_msg_count);
3468             END LOOP;
3469           END IF;
3470         END IF;
3471         l_attributes_row_table2      := ego_user_attr_row_table(NULL);
3472         l_attributes_data_table2     := ego_user_attr_data_table(NULL);
3473         l_all_attributes_data_table2 := ego_user_attr_data_table();
3474         l_attributes_row_table.trim;
3475       END IF;
3476       /* Increment the row identifier */
3477       l_row_identifier := l_row_identifier + 1;
3478       l_attributes_row_table.extend;
3479     END LOOP;
3480 
3481     l_attributes_row_table.trim;
3482 
3483     l_class_code_name_value_pairs := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('CLASSIFICATION_CODE',
3484                                                                                                p_class_code));
3485 
3486     /* Call the EGO API to process the attributes based on the mode */
3487 
3488     ego_user_attrs_data_pub.process_user_attrs_data(p_api_version                 => 1.0,
3489                                                     p_object_name                 => 'HZ_PARTIES',
3490                                                     p_attributes_row_table        => l_attributes_row_table,
3491                                                     p_attributes_data_table       => l_all_attributes_data_table,
3492                                                     p_pk_column_name_value_pairs  => l_pk_column_values,
3493                                                     p_class_code_name_value_pairs => l_class_code_name_value_pairs,
3494                                                     p_entity_id                   => NULL,
3495                                                     p_entity_index                => NULL,
3496                                                     p_entity_code                 => NULL,
3497                                                     p_debug_level                 => NULL, --p_debug_level,
3498                                                     p_commit                      => fnd_api.g_false,
3499                                                     p_init_error_handler          => 'T',
3500                                                     p_init_fnd_msg_list           => 'T',
3501                                                     x_failed_row_id_list          => l_failed_row_id_buffer,
3502                                                     x_return_status               => l_return_status,
3503                                                     x_errorcode                   => l_errorcode,
3504                                                     x_msg_count                   => l_msg_count,
3505                                                     x_msg_data                    => l_msg_data);
3506 
3507     IF l_return_status <> fnd_api.g_ret_sts_success THEN
3508       error_handler.get_message_list(l_error_msg_tbl);
3509       IF l_error_msg_tbl.first IS NOT NULL THEN
3510         l_msg_count := l_error_msg_tbl.first;
3511         WHILE l_msg_count IS NOT NULL LOOP
3512           fnd_file.put_line(fnd_file.log,
3513                             'Error Message: ' || l_error_msg_tbl(l_msg_count)
3514                             .message_text ||
3515                              ' From ego_user_attrs_data_pub.process_user_attrs_data API.');
3516           l_msg_count := l_error_msg_tbl.next(l_msg_count);
3517         END LOOP;
3518       END IF;
3519     END IF;
3520 
3521   EXCEPTION
3522     WHEN OTHERS THEN
3523       x_return_status := fnd_api.g_ret_sts_unexp_error;
3524   END do_uda_row_dml;
3525 
3526   PROCEDURE do_uda_row_dml
3527   (
3528     p_attribute_group_id   IN NUMBER,
3529     p_data_level_id        IN NUMBER,
3530     p_attribute_group_type IN VARCHAR2,
3531     p_attribute_group_name IN VARCHAR2,
3532     p_to_party_id          IN NUMBER,
3533     p_mode                 IN VARCHAR2,
3534     p_uda_rec              IN pos_supp_prof_ext_b%ROWTYPE,
3535     p_class_code           IN VARCHAR2,
3536     p_vendor_id            IN NUMBER DEFAULT NULL,
3537     --p_uda_rec_tbl          IN uda_rec_tbl_type,
3538     x_return_status OUT NOCOPY VARCHAR2,
3539     x_msg_count     OUT NOCOPY NUMBER,
3540     x_msg_data      OUT NOCOPY VARCHAR2
3541   ) IS
3542     l_request_table    ego_attr_group_request_table := ego_attr_group_request_table(NULL);
3543     l_pk_column_values ego_col_name_value_pair_array;
3544 
3545     l_attributes_row_table  ego_user_attr_row_table := ego_user_attr_row_table(NULL);
3546     l_attributes_data_table ego_user_attr_data_table := ego_user_attr_data_table(NULL);
3547     l_row_identifier        NUMBER;
3548     l_failed_row_id_buffer  VARCHAR2(1000);
3549 
3550     l_return_status VARCHAR2(2000);
3551     l_msg_count     NUMBER;
3552     l_msg_data      VARCHAR2(100);
3553     l_errorcode     NUMBER;
3554     l_error_msg_tbl error_handler.error_tbl_type;
3555 
3556     l_class_code_name_value_pairs ego_col_name_value_pair_array := ego_col_name_value_pair_array(NULL);
3557     l_party_id                    NUMBER;
3558     l_party_site_id               NUMBER;
3559   BEGIN
3560     x_return_status  := fnd_api.g_ret_sts_success;
3561     l_row_identifier := 1030;
3562     /* This API works in 2 modes Insert and Update. If run in the update mode then
3563     it would update the UDA data for the to_party_id that is passed.
3564     If run in the insert mode, it would insert the data for the party */
3565 
3566     /* Build the Primary key Name value pairs */
3567     IF (p_data_level_id = 17701) THEN
3568 
3569       l_pk_column_values := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('PARTY_ID',
3570                                                                                       to_char(p_to_party_id)));
3571     ELSIF (p_data_level_id = 17702) THEN
3572 
3573       BEGIN
3574         SELECT party_id
3575         INTO   l_party_id
3576         FROM   hz_party_sites
3577         WHERE  party_site_id = p_to_party_id;
3578 
3579       EXCEPTION
3580         WHEN no_data_found THEN
3581           fnd_file.put_line(fnd_file.log,
3582                             'No party id found for party site id : ' ||
3583                             p_to_party_id);
3584           x_return_status := fnd_api.g_ret_sts_error;
3585           RETURN;
3586       END;
3587       l_pk_column_values := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('PARTY_ID',
3588                                                                                       to_char(l_party_id)));
3589 
3590     ELSIF (p_data_level_id = 17703) THEN
3591       BEGIN
3592         SELECT party_id
3593         INTO   l_party_id
3594         FROM   ap_suppliers
3595         WHERE  vendor_id = p_vendor_id;
3596 
3597       EXCEPTION
3598         WHEN no_data_found THEN
3599           fnd_file.put_line(fnd_file.log,
3600                             'No party id found for vendor id : ' ||
3601                             p_vendor_id);
3602           x_return_status := fnd_api.g_ret_sts_error;
3603           RETURN;
3604       END;
3605 
3606       BEGIN
3607         SELECT party_site_id
3608         INTO   l_party_site_id
3609         FROM   ap_supplier_sites_all
3610         WHERE  vendor_site_id = p_to_party_id;
3611 
3612       EXCEPTION
3613         WHEN no_data_found THEN
3614           fnd_file.put_line(fnd_file.log,
3615                             'No party site id found for vendor site id : ' ||
3616                             p_to_party_id);
3617           x_return_status := fnd_api.g_ret_sts_error;
3618           RETURN;
3619       END;
3620 
3621       l_pk_column_values := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('PARTY_ID',
3622                                                                                       to_char(l_party_id)));
3623     END IF;
3624 
3625     /* Build the Attribute group Object */
3626     l_request_table(l_request_table.last) := ego_attr_group_request_obj(p_attribute_group_id,
3627                                                                         NULL, -- application id
3628                                                                         NULL, -- group type
3629                                                                         NULL, -- group name
3630                                                                         'SUPP_LEVEL', -- data level
3631                                                                         '''N''', -- DATA_LEVEL_1
3632                                                                         NULL, -- DATA_LEVEL_2
3633                                                                         NULL, -- DATA_LEVEL_3
3634                                                                         NULL, -- DATA_LEVEL_4
3635                                                                         NULL, -- DATA_LEVEL_5
3636                                                                         NULL -- ATTR_NAME_LIST
3637                                                                         );
3638 
3639     /* Build the data payload object */
3640 
3641     IF (p_mode = 'UPDATE') THEN
3642 
3643       /* Build the Row Object */
3644       IF (p_data_level_id = 17701) THEN
3645         l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3646                                                                                      p_attribute_group_id,
3647                                                                                      177,
3648                                                                                      'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3649                                                                                      p_attribute_group_name, --p_attribute_group_name,
3650                                                                                      'SUPP_LEVEL', -- data level
3651                                                                                      'N',
3652                                                                                      NULL,
3653                                                                                      NULL,
3654                                                                                      NULL,
3655                                                                                      NULL,
3656                                                                                      ego_user_attrs_data_pvt.g_update_mode --TRANSACTION_TYPE
3657                                                                                      );
3658       ELSIF (p_data_level_id = 17702) THEN
3659         l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3660                                                                                      p_attribute_group_id,
3661                                                                                      177,
3662                                                                                      'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3663                                                                                      p_attribute_group_name, --p_attribute_group_name,
3664                                                                                      'SUPP_ADDR_LEVEL', -- data level
3665                                                                                      'N',
3666                                                                                      p_to_party_id,
3667                                                                                      NULL,
3668                                                                                      NULL,
3669                                                                                      NULL,
3670                                                                                      ego_user_attrs_data_pvt.g_update_mode --TRANSACTION_TYPE
3671                                                                                      );
3672       ELSIF (p_data_level_id = 17703) THEN
3673         l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3674                                                                                      p_attribute_group_id,
3675                                                                                      177,
3676                                                                                      'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3677                                                                                      p_attribute_group_name, --p_attribute_group_name,
3678                                                                                      'SUPP_ADDR_SITE_LEVEL', -- data level
3679                                                                                      'N',
3680                                                                                      l_party_site_id,
3681                                                                                      p_to_party_id,
3682                                                                                      NULL,
3683                                                                                      NULL,
3684                                                                                      ego_user_attrs_data_pvt.g_update_mode --TRANSACTION_TYPE
3685                                                                                      );
3686       END IF;
3687       /* Build the Data Object */
3688 
3689       build_uda_data_payload(p_attribute_group_id    => p_attribute_group_id,
3690                              p_attribute_group_name  => p_attribute_group_name,
3691                              p_attribute_group_type  => p_attribute_group_type,
3692                              p_row_identifier        => l_row_identifier,
3693                              p_uda_data_rec          => p_uda_rec,
3694                              x_attributes_data_table => l_attributes_data_table);
3695 
3696     ELSE
3697       /* Build the Row Object */
3698       IF (p_data_level_id = 17701) THEN
3699         l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3700                                                                                      p_attribute_group_id,
3701                                                                                      177,
3702                                                                                      'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3703                                                                                      p_attribute_group_name, --p_attribute_group_name,
3704                                                                                      'SUPP_LEVEL', -- data level
3705                                                                                      'N',
3706                                                                                      NULL,
3707                                                                                      NULL,
3708                                                                                      NULL,
3709                                                                                      NULL,
3710                                                                                      ego_user_attrs_data_pvt.g_create_mode --TRANSACTION_TYPE
3711                                                                                      );
3712       ELSIF (p_data_level_id = 17702) THEN
3713         l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3714                                                                                      p_attribute_group_id,
3715                                                                                      177,
3716                                                                                      'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3717                                                                                      p_attribute_group_name, --p_attribute_group_name,
3718                                                                                      'SUPP_ADDR_LEVEL', -- data level
3719                                                                                      'N',
3720                                                                                      p_to_party_id,
3721                                                                                      NULL,
3722                                                                                      NULL,
3723                                                                                      NULL,
3724                                                                                      ego_user_attrs_data_pvt.g_create_mode --TRANSACTION_TYPE
3725                                                                                      );
3726       ELSIF (p_data_level_id = 17703) THEN
3727         l_attributes_row_table(l_attributes_row_table.last) := ego_user_attr_row_obj(l_row_identifier,
3728                                                                                      p_attribute_group_id,
3729                                                                                      177,
3730                                                                                      'POS_SUPP_PROFMGMT_GROUP', --'SDH_SUPP_PROFMGMT_GROUP',
3731                                                                                      p_attribute_group_name, --p_attribute_group_name,
3732                                                                                      'SUPP_ADDR_SITE_LEVEL', -- data level
3733                                                                                      'N',
3734                                                                                      l_party_site_id,
3735                                                                                      p_to_party_id,
3736                                                                                      NULL,
3737                                                                                      NULL,
3738                                                                                      ego_user_attrs_data_pvt.g_create_mode --TRANSACTION_TYPE
3739                                                                                      );
3740       END IF;
3741 
3742       /* Build the Data Object */
3743       build_uda_data_payload(p_attribute_group_id    => p_attribute_group_id,
3744                              p_attribute_group_name  => p_attribute_group_name,
3745                              p_attribute_group_type  => p_attribute_group_type,
3746                              p_row_identifier        => l_row_identifier,
3747                              p_uda_data_rec          => p_uda_rec,
3748                              x_attributes_data_table => l_attributes_data_table);
3749     END IF;
3750 
3751     l_class_code_name_value_pairs := ego_col_name_value_pair_array(ego_col_name_value_pair_obj('CLASSIFICATION_CODE',
3752                                                                                                p_class_code));
3753 
3754     /* Call the EGO API to process the attributes based on the mode */
3755 
3756     ego_user_attrs_data_pub.process_user_attrs_data(p_api_version                 => 1.0,
3757                                                     p_object_name                 => 'HZ_PARTIES',
3758                                                     p_attributes_row_table        => l_attributes_row_table,
3759                                                     p_attributes_data_table       => l_attributes_data_table,
3760                                                     p_pk_column_name_value_pairs  => l_pk_column_values,
3761                                                     p_class_code_name_value_pairs => l_class_code_name_value_pairs,
3762                                                     p_entity_id                   => NULL,
3763                                                     p_entity_index                => NULL,
3764                                                     p_entity_code                 => NULL,
3765                                                     p_debug_level                 => NULL, --p_debug_level,
3766                                                     p_commit                      => fnd_api.g_false,
3767                                                     p_init_error_handler          => 'T',
3768                                                     p_init_fnd_msg_list           => 'T',
3769                                                     x_failed_row_id_list          => l_failed_row_id_buffer,
3770                                                     x_return_status               => l_return_status,
3771                                                     x_errorcode                   => l_errorcode,
3772                                                     x_msg_count                   => l_msg_count,
3773                                                     x_msg_data                    => l_msg_data);
3774 
3775     IF l_return_status <> fnd_api.g_ret_sts_success THEN
3776       error_handler.get_message_list(l_error_msg_tbl);
3777       IF l_error_msg_tbl.first IS NOT NULL THEN
3778         l_msg_count := l_error_msg_tbl.first;
3779         WHILE l_msg_count IS NOT NULL LOOP
3780           fnd_file.put_line(fnd_file.log,
3781                             'Error Message: ' || l_error_msg_tbl(l_msg_count)
3782                             .message_text ||
3783                              ' From ego_user_attrs_data_pub.process_user_attrs_data API.');
3784           l_msg_count := l_error_msg_tbl.next(l_msg_count);
3785         END LOOP;
3786       END IF;
3787     END IF;
3788 
3789   EXCEPTION
3790     WHEN OTHERS THEN
3791       x_return_status := fnd_api.g_ret_sts_unexp_error;
3792   END do_uda_row_dml;
3793 
3794   PROCEDURE supplier_uda_merge
3795   (
3796     p_entity_name        IN VARCHAR2,
3797     p_from_id            IN NUMBER,
3798     x_to_id              IN OUT NOCOPY NUMBER,
3799     p_from_fk_id         IN NUMBER,
3800     p_to_fk_id           IN NUMBER,
3801     p_parent_entity_name IN VARCHAR2,
3802     p_batch_id           IN NUMBER,
3803     p_batch_party_id     IN NUMBER,
3804     x_return_status      OUT NOCOPY VARCHAR2
3805   ) IS
3806     l_ret_status VARCHAR2(2000);
3807     l_msg_count  NUMBER;
3808     l_msg_data   VARCHAR2(2000);
3809 
3810     l_uda_rec_tbl   uda_rec_tbl_type;
3811     merged_uda_rec  pos_supp_prof_ext_b%ROWTYPE;
3812     l_party_count   NUMBER := 0;
3813     l_to_party_cntr NUMBER := 0;
3814 
3815     CURSOR get_supplier_attribute_groups IS
3816       SELECT ag.attr_group_id,
3817              ag.application_id,
3818              eas.data_level_id,
3819              ag.multi_row,
3820              eas.attr_group_type,
3821              ag.descriptive_flex_context_code,
3822              ag.descriptive_flexfield_name,
3823              eas.classification_code
3824       FROM   ego_fnd_dsc_flx_ctx_ext   ag,
3825              ego_obj_attr_grp_assocs_v eas
3826       WHERE  ag.application_id = 177
3827       AND    ag.attr_group_id = eas.attr_group_id
3828       AND    eas.application_id = ag.application_id
3829       AND    eas.data_level_int_name = 'SUPP_LEVEL';
3830 
3831     TYPE attributes_group_tab IS TABLE OF get_supplier_attribute_groups%ROWTYPE INDEX BY BINARY_INTEGER;
3832     attributes_group_coll attributes_group_tab;
3833 
3834   BEGIN
3835     x_return_status := fnd_api.g_ret_sts_success;
3836 
3837     SELECT COUNT(1)
3838     INTO   l_to_party_cntr
3839     FROM   pos_supplier_uda_merge_gtt
3840     WHERE  batch_id = p_batch_id
3841     AND    to_party_id = p_to_fk_id
3842     AND    rownum = 1;
3843 
3844     IF (l_to_party_cntr = 0) THEN
3845       INSERT INTO pos_supplier_uda_merge_gtt
3846         (batch_id, to_party_id)
3847       VALUES
3848         (p_batch_id, p_to_fk_id);
3849     ELSE
3850       RETURN;
3851     END IF;
3852 
3853     fnd_file.put_line(fnd_file.log,
3854                       'Inside POS_MERGE_SUPPLIER_PKG.supplier_uda_merge p_to_fk_id: ' ||
3855                       p_to_fk_id || ' p_to_fk_id: ' || p_from_fk_id);
3856 
3857     /* Update the status of all the records in the bath to
3858     PERFORM_UDA_MERGE*/
3859 
3860     /* Get the attribute group data from the cursor
3861     get_supplier_attribute_groups*/
3862 
3863     OPEN get_supplier_attribute_groups;
3864     FETCH get_supplier_attribute_groups BULK COLLECT
3865       INTO attributes_group_coll;
3866     CLOSE get_supplier_attribute_groups;
3867 
3868     /* Loop through the attribute group Ids */
3869     FOR cntr IN 1 .. attributes_group_coll.count LOOP
3870 
3871       /* check if the attribute group is a single row attribute or a
3872       multirow attribute*/
3873 
3874       /* If the attribute group is single row */
3875       IF (attributes_group_coll(cntr).multi_row = 'N') THEN
3876 
3877         /* Query the extension table for the to and from parties
3878         and get the rows in the ascending order of the creation
3879         date */
3880         fnd_file.put_line(fnd_file.log,
3881                           'supplier_uda_merge single row processing for attr group id : ' || attributes_group_coll(cntr)
3882                           .attr_group_id);
3883 
3884         get_batch_user_attr_data(p_to_fk_id,
3885                                  p_batch_id,
3886                                  attributes_group_coll(cntr).multi_row,
3887                                  attributes_group_coll(cntr).attr_group_id,
3888                                  attributes_group_coll(cntr).data_level_id,
3889                                  l_uda_rec_tbl,
3890                                  l_ret_status,
3891                                  l_msg_count,
3892                                  l_msg_data);
3893 
3894         /* Do the merging */
3895         IF (l_uda_rec_tbl.count <> 0) THEN
3896           do_single_row_uda_merge(l_uda_rec_tbl,
3897                                   merged_uda_rec,
3898                                   l_ret_status,
3899                                   l_msg_count,
3900                                   l_msg_data);
3901 
3902           SELECT COUNT(1)
3903           INTO   l_party_count
3904           FROM   pos_supp_prof_ext_b
3905           WHERE  attr_group_id = attributes_group_coll(cntr).attr_group_id
3906           AND    party_id = p_to_fk_id
3907           AND    rownum = 1;
3908 
3909           IF (l_party_count = 0) THEN
3910             /* Do the insert */
3911             do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
3912                                                      .attr_group_id,
3913                            p_data_level_id        => attributes_group_coll(cntr)
3914                                                      .data_level_id,
3915                            p_attribute_group_type => attributes_group_coll(cntr)
3916                                                      .attr_group_type,
3917                            p_attribute_group_name => attributes_group_coll(cntr)
3918                                                      .descriptive_flex_context_code,
3919                            p_to_party_id          => p_to_fk_id,
3920                            p_mode                 => 'INSERT',
3921                            p_uda_rec              => merged_uda_rec,
3922                            p_class_code           => attributes_group_coll(cntr)
3923                                                      .classification_code,
3924                            x_return_status        => l_ret_status,
3925                            x_msg_count            => l_msg_count,
3926                            x_msg_data             => l_msg_data);
3927 
3928           ELSE
3929             /* Do the update */
3930             do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
3931                                                      .attr_group_id,
3932                            p_data_level_id        => attributes_group_coll(cntr)
3933                                                      .data_level_id,
3934                            p_attribute_group_type => attributes_group_coll(cntr)
3935                                                      .attr_group_type,
3936                            p_attribute_group_name => attributes_group_coll(cntr)
3937                                                      .descriptive_flex_context_code,
3938                            p_to_party_id          => p_to_fk_id,
3939                            p_mode                 => 'UPDATE',
3940                            p_uda_rec              => merged_uda_rec,
3941                            p_class_code           => attributes_group_coll(cntr)
3942                                                      .classification_code,
3943                            x_return_status        => l_ret_status,
3944                            x_msg_count            => l_msg_count,
3945                            x_msg_data             => l_msg_data);
3946           END IF;
3947         END IF;
3948         -- End of single row processing
3949       ELSE
3950 
3951         /* If the attribute group is multi row */
3952         -- Multirow processing
3953         fnd_file.put_line(fnd_file.log,
3954                           'supplier_uda_merge multi row processing for attr group id : ' || attributes_group_coll(cntr)
3955                           .attr_group_id);
3956 
3957         get_batch_user_attr_data(p_to_fk_id,
3958                                  p_batch_id,
3959                                  attributes_group_coll(cntr).multi_row,
3960                                  attributes_group_coll(cntr).attr_group_id,
3961                                  attributes_group_coll(cntr).data_level_id,
3962                                  l_uda_rec_tbl,
3963                                  l_ret_status,
3964                                  l_msg_count,
3965                                  l_msg_data);
3966 
3967         /* Insert the rows obtained */
3968 
3969         do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
3970                                                  .attr_group_id,
3971                        p_data_level_id        => attributes_group_coll(cntr)
3972                                                  .data_level_id,
3973                        p_attribute_group_type => attributes_group_coll(cntr)
3974                                                  .attr_group_type,
3975                        p_attribute_group_name => attributes_group_coll(cntr)
3976                                                  .descriptive_flex_context_code,
3977                        p_to_party_id          => p_to_fk_id,
3978                        p_mode                 => 'INSERT',
3979                        p_uda_rec_tbl          => l_uda_rec_tbl,
3980                        p_class_code           => attributes_group_coll(cntr)
3981                                                  .classification_code,
3982                        x_return_status        => l_ret_status,
3983                        x_msg_count            => l_msg_count,
3984                        x_msg_data             => l_msg_data);
3985       END IF;
3986 
3987     --END LOOP; -- End of party loop
3988 
3989     END LOOP; -- end of attribute group loop
3990 
3991   EXCEPTION
3992     WHEN OTHERS THEN
3993       x_return_status := fnd_api.g_ret_sts_unexp_error;
3994   END supplier_uda_merge;
3995 
3996   PROCEDURE supplier_site_uda_merge
3997   (
3998     p_from_id       IN NUMBER,
3999     p_from_fk_id    IN NUMBER,
4000     p_to_fk_id      IN NUMBER,
4001     x_return_status OUT NOCOPY VARCHAR2
4002   ) IS
4003     l_ret_status VARCHAR2(2000);
4004     l_msg_count  NUMBER;
4005     l_msg_data   VARCHAR2(2000);
4006 
4007     l_uda_rec_tbl   uda_rec_tbl_type;
4008     merged_uda_rec  pos_supp_prof_ext_b%ROWTYPE;
4009     l_party_count   NUMBER := 0;
4010     l_to_party_cntr NUMBER := 0;
4011 
4012     CURSOR get_supplier_attribute_groups IS
4013       SELECT ag.attr_group_id,
4014              ag.application_id,
4015              eas.data_level_id,
4016              ag.multi_row,
4017              eas.attr_group_type,
4018              ag.descriptive_flex_context_code,
4019              ag.descriptive_flexfield_name,
4020              eas.classification_code
4021       FROM   ego_fnd_dsc_flx_ctx_ext   ag,
4022              ego_obj_attr_grp_assocs_v eas
4023       WHERE  ag.application_id = 177
4024       AND    ag.attr_group_id = eas.attr_group_id
4025       AND    eas.application_id = ag.application_id
4026       AND    eas.data_level_int_name = 'SUPP_ADDR_SITE_LEVEL';
4027 
4028     TYPE attributes_group_tab IS TABLE OF get_supplier_attribute_groups%ROWTYPE INDEX BY BINARY_INTEGER;
4029     attributes_group_coll attributes_group_tab;
4030 
4031   BEGIN
4032     x_return_status := fnd_api.g_ret_sts_success;
4033 
4034     fnd_file.put_line(fnd_file.log,
4035                       'Inside POS_MERGE_SUPPLIER_PKG.supplier_site_uda_merge p_to_fk_id: ' ||
4036                       p_to_fk_id || ' p_to_fk_id: ' || p_from_fk_id ||
4037                       ' p_from_id : ' || p_from_id);
4038 
4039     /* Update the status of all the records in the bath to
4040     PERFORM_UDA_MERGE*/
4041 
4042     /* Get the attribute group data from the cursor
4043     get_supplier_attribute_groups*/
4044 
4045     OPEN get_supplier_attribute_groups;
4046     FETCH get_supplier_attribute_groups BULK COLLECT
4047       INTO attributes_group_coll;
4048     CLOSE get_supplier_attribute_groups;
4049 
4050     /* Loop through the attribute group Ids */
4051     FOR cntr IN 1 .. attributes_group_coll.count LOOP
4052 
4053       /* check if the attribute group is a single row attribute or a
4054       multirow attribute*/
4055 
4056       /* If the attribute group is single row */
4057       IF (attributes_group_coll(cntr).multi_row = 'N') THEN
4058 
4059         /* Query the extension table for the to and from parties
4060         and get the rows in the ascending order of the creation
4061         date */
4062         fnd_file.put_line(fnd_file.log,
4063                           'supplier_site_uda_merge single row processing for attr group id : ' || attributes_group_coll(cntr)
4064                           .attr_group_id);
4065 
4066         get_supp_site_attr_data(p_from_fk_id,
4067                                 p_to_fk_id,
4068                                 attributes_group_coll(cntr).multi_row,
4069                                 attributes_group_coll(cntr).attr_group_id,
4070                                 attributes_group_coll(cntr).data_level_id,
4071                                 l_uda_rec_tbl,
4072                                 l_ret_status,
4073                                 l_msg_count,
4074                                 l_msg_data);
4075 
4076         /* Do the merging */
4077         IF (l_uda_rec_tbl.count <> 0) THEN
4078           do_single_row_uda_merge(l_uda_rec_tbl,
4079                                   merged_uda_rec,
4080                                   l_ret_status,
4081                                   l_msg_count,
4082                                   l_msg_data);
4083 
4084           SELECT COUNT(1)
4085           INTO   l_party_count
4086           FROM   pos_supp_prof_ext_b
4087           WHERE  attr_group_id = attributes_group_coll(cntr).attr_group_id
4088           AND    pk2_value = p_to_fk_id
4089           AND    rownum = 1;
4090 
4091           IF (l_party_count = 0) THEN
4092             /* Do the insert */
4093             do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
4094                                                      .attr_group_id,
4095                            p_data_level_id        => attributes_group_coll(cntr)
4096                                                      .data_level_id,
4097                            p_attribute_group_type => attributes_group_coll(cntr)
4098                                                      .attr_group_type,
4099                            p_attribute_group_name => attributes_group_coll(cntr)
4100                                                      .descriptive_flex_context_code,
4101                            p_to_party_id          => p_to_fk_id,
4102                            p_mode                 => 'INSERT',
4103                            p_uda_rec              => merged_uda_rec,
4104                            p_class_code           => attributes_group_coll(cntr)
4105                                                      .classification_code,
4106                            p_vendor_id            => p_from_id,
4107                            x_return_status        => l_ret_status,
4108                            x_msg_count            => l_msg_count,
4109                            x_msg_data             => l_msg_data);
4110 
4111           ELSE
4112             /* Do the update */
4113             do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
4114                                                      .attr_group_id,
4115                            p_data_level_id        => attributes_group_coll(cntr)
4116                                                      .data_level_id,
4117                            p_attribute_group_type => attributes_group_coll(cntr)
4118                                                      .attr_group_type,
4119                            p_attribute_group_name => attributes_group_coll(cntr)
4120                                                      .descriptive_flex_context_code,
4121                            p_to_party_id          => p_to_fk_id,
4122                            p_mode                 => 'UPDATE',
4123                            p_uda_rec              => merged_uda_rec,
4124                            p_class_code           => attributes_group_coll(cntr)
4125                                                      .classification_code,
4126                            p_vendor_id            => p_from_id,
4127                            x_return_status        => l_ret_status,
4128                            x_msg_count            => l_msg_count,
4129                            x_msg_data             => l_msg_data);
4130           END IF;
4131         END IF;
4132         -- End of single row processing
4133       ELSE
4134 
4135         /* If the attribute group is multi row */
4136         -- Multirow processing
4137         fnd_file.put_line(fnd_file.log,
4138                           'supplier_site_uda_merge multi row processing for attr group id : ' || attributes_group_coll(cntr)
4139                           .attr_group_id);
4140 
4141         get_supp_site_attr_data(p_from_fk_id,
4142                                 p_to_fk_id,
4143                                 attributes_group_coll(cntr).multi_row,
4144                                 attributes_group_coll(cntr).attr_group_id,
4145                                 attributes_group_coll(cntr).data_level_id,
4146                                 l_uda_rec_tbl,
4147                                 l_ret_status,
4148                                 l_msg_count,
4149                                 l_msg_data);
4150 
4151         /* Insert the rows obtained */
4152 
4153         do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
4154                                                  .attr_group_id,
4155                        p_data_level_id        => attributes_group_coll(cntr)
4156                                                  .data_level_id,
4157                        p_attribute_group_type => attributes_group_coll(cntr)
4158                                                  .attr_group_type,
4159                        p_attribute_group_name => attributes_group_coll(cntr)
4160                                                  .descriptive_flex_context_code,
4161                        p_to_party_id          => p_to_fk_id,
4162                        p_mode                 => 'INSERT',
4163                        p_uda_rec_tbl          => l_uda_rec_tbl,
4164                        p_class_code           => attributes_group_coll(cntr)
4165                                                  .classification_code,
4166                        p_vendor_id            => p_from_id,
4167                        x_return_status        => l_ret_status,
4168                        x_msg_count            => l_msg_count,
4169                        x_msg_data             => l_msg_data);
4170       END IF;
4171 
4172     --END LOOP; -- End of party loop
4173 
4174     END LOOP; -- end of attribute group loop
4175 
4176   EXCEPTION
4177     WHEN OTHERS THEN
4178       x_return_status := fnd_api.g_ret_sts_unexp_error;
4179   END supplier_site_uda_merge;
4180 
4181   PROCEDURE party_site_uda_merge
4182   (
4183     p_entity_name        IN VARCHAR2,
4184     p_from_id            IN NUMBER,
4185     x_to_id              IN OUT NOCOPY NUMBER,
4186     p_from_fk_id         IN NUMBER,
4187     p_to_fk_id           IN NUMBER,
4188     p_parent_entity_name IN VARCHAR2,
4189     p_batch_id           IN NUMBER,
4190     p_batch_party_id     IN NUMBER,
4191     x_return_status      OUT NOCOPY VARCHAR2
4192   ) IS
4193     l_ret_status VARCHAR2(2000);
4194     l_msg_count  NUMBER;
4195     l_msg_data   VARCHAR2(2000);
4196 
4197     l_uda_rec_tbl   uda_rec_tbl_type;
4198     merged_uda_rec  pos_supp_prof_ext_b%ROWTYPE;
4199     l_party_count   NUMBER := 0;
4200     l_to_party_cntr NUMBER := 0;
4201 
4202     CURSOR get_supplier_attribute_groups IS
4203       SELECT ag.attr_group_id,
4204              ag.application_id,
4205              eas.data_level_id,
4206              ag.multi_row,
4207              eas.attr_group_type,
4208              ag.descriptive_flex_context_code,
4209              ag.descriptive_flexfield_name,
4210              eas.classification_code,
4211              eas.data_level_int_name
4212       FROM   ego_fnd_dsc_flx_ctx_ext   ag,
4213              ego_obj_attr_grp_assocs_v eas
4214       WHERE  ag.application_id = 177
4215       AND    ag.attr_group_id = eas.attr_group_id
4216       AND    eas.application_id = ag.application_id
4217       AND    eas.data_level_int_name = 'SUPP_ADDR_LEVEL';
4218 
4219     TYPE attributes_group_tab IS TABLE OF get_supplier_attribute_groups%ROWTYPE INDEX BY BINARY_INTEGER;
4220     attributes_group_coll attributes_group_tab;
4221 
4222   BEGIN
4223     x_return_status := fnd_api.g_ret_sts_success;
4224 
4225     SELECT COUNT(1)
4226     INTO   l_to_party_cntr
4227     FROM   pos_supplier_uda_merge_gtt
4228     WHERE  batch_id = p_batch_id
4229     AND    to_party_id = p_to_fk_id
4230     AND    rownum = 1;
4231 
4232     IF (l_to_party_cntr = 0) THEN
4233       INSERT INTO pos_supplier_uda_merge_gtt
4234         (batch_id, to_party_id)
4235       VALUES
4236         (p_batch_id, p_to_fk_id);
4237     ELSE
4238       RETURN;
4239     END IF;
4240 
4241     fnd_file.put_line(fnd_file.log,
4242                       'Inside POS_MERGE_SUPPLIER_PKG.party_site_uda_merge p_to_fk_id: ' ||
4243                       p_to_fk_id || ' p_from_fk_id: ' || p_from_fk_id ||
4244                       ' p_from_id: ' || p_from_id || ' p_batch_id: ' ||
4245                       p_batch_id);
4246 
4247     /* Update the status of all the records in the bath to
4248     PERFORM_UDA_MERGE*/
4249 
4250     /* Get the attribute group data from the cursor
4251     get_supplier_attribute_groups*/
4252 
4253     OPEN get_supplier_attribute_groups;
4254     FETCH get_supplier_attribute_groups BULK COLLECT
4255       INTO attributes_group_coll;
4256     CLOSE get_supplier_attribute_groups;
4257 
4258     /* Loop through the attribute group Ids */
4259     FOR cntr IN 1 .. attributes_group_coll.count LOOP
4260 
4261       /* check if the attribute group is a single row attribute or a
4262       multirow attribute*/
4263 
4264       /* If the attribute group is single row */
4265       IF (attributes_group_coll(cntr).multi_row = 'N') THEN
4266 
4267         /* Query the extension table for the to and from parties
4268         and get the rows in the ascending order of the creation
4269         date */
4270         fnd_file.put_line(fnd_file.log,
4271                           'party_site_uda_merge single row processing for attr group id : ' || attributes_group_coll(cntr)
4272                           .attr_group_id);
4273 
4274         get_party_site_attr_data(p_from_fk_id,
4275                                  p_to_fk_id,
4276                                  p_batch_id,
4277                                  attributes_group_coll(cntr).multi_row,
4278                                  attributes_group_coll(cntr).attr_group_id,
4279                                  attributes_group_coll(cntr).data_level_id,
4280                                  l_uda_rec_tbl,
4281                                  l_ret_status,
4282                                  l_msg_count,
4283                                  l_msg_data);
4284 
4285         /* Do the merging */
4286         IF (l_uda_rec_tbl.count <> 0) THEN
4287           do_single_row_uda_merge(l_uda_rec_tbl,
4288                                   merged_uda_rec,
4289                                   l_ret_status,
4290                                   l_msg_count,
4291                                   l_msg_data);
4292 
4293           SELECT COUNT(1)
4294           INTO   l_party_count
4295           FROM   pos_supp_prof_ext_b
4296           WHERE  attr_group_id = attributes_group_coll(cntr).attr_group_id
4297           AND    pk1_value = p_to_fk_id
4298           AND    rownum = 1;
4299 
4300           IF (l_party_count = 0) THEN
4301             /* Do the insert */
4302             do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
4303                                                      .attr_group_id,
4304                            p_data_level_id        => attributes_group_coll(cntr)
4305                                                      .data_level_id,
4306                            p_attribute_group_type => attributes_group_coll(cntr)
4307                                                      .attr_group_type,
4308                            p_attribute_group_name => attributes_group_coll(cntr)
4309                                                      .descriptive_flex_context_code,
4310                            p_to_party_id          => p_to_fk_id,
4311                            p_mode                 => 'INSERT',
4312                            p_uda_rec              => merged_uda_rec,
4313                            p_class_code           => attributes_group_coll(cntr)
4314                                                      .classification_code,
4315                            x_return_status        => l_ret_status,
4316                            x_msg_count            => l_msg_count,
4317                            x_msg_data             => l_msg_data);
4318 
4319           ELSE
4320             /* Do the update */
4321             do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
4322                                                      .attr_group_id,
4323                            p_data_level_id        => attributes_group_coll(cntr)
4324                                                      .data_level_id,
4325                            p_attribute_group_type => attributes_group_coll(cntr)
4326                                                      .attr_group_type,
4327                            p_attribute_group_name => attributes_group_coll(cntr)
4328                                                      .descriptive_flex_context_code,
4329                            p_to_party_id          => p_to_fk_id,
4330                            p_mode                 => 'UPDATE',
4331                            p_uda_rec              => merged_uda_rec,
4332                            p_class_code           => attributes_group_coll(cntr)
4333                                                      .classification_code,
4334                            x_return_status        => l_ret_status,
4335                            x_msg_count            => l_msg_count,
4336                            x_msg_data             => l_msg_data);
4337           END IF;
4338         END IF;
4339         -- End of single row processing
4340       ELSE
4341 
4342         /* If the attribute group is multi row */
4343         -- Multirow processing
4344         fnd_file.put_line(fnd_file.log,
4345                           'party_site_uda_merge multi row processing for attr group id : ' || attributes_group_coll(cntr)
4346                           .attr_group_id);
4347 
4348         get_party_site_attr_data(p_from_fk_id,
4349                                  p_to_fk_id,
4350                                  p_batch_id,
4351                                  attributes_group_coll(cntr).multi_row,
4352                                  attributes_group_coll(cntr).attr_group_id,
4353                                  attributes_group_coll(cntr).data_level_id,
4354                                  l_uda_rec_tbl,
4355                                  l_ret_status,
4356                                  l_msg_count,
4357                                  l_msg_data);
4358 
4359         /* Insert the rows obtained */
4360 
4361         do_uda_row_dml(p_attribute_group_id   => attributes_group_coll(cntr)
4362                                                  .attr_group_id,
4363                        p_data_level_id        => attributes_group_coll(cntr)
4364                                                  .data_level_id,
4365                        p_attribute_group_type => attributes_group_coll(cntr)
4366                                                  .attr_group_type,
4367                        p_attribute_group_name => attributes_group_coll(cntr)
4368                                                  .descriptive_flex_context_code,
4369                        p_to_party_id          => p_to_fk_id,
4370                        p_mode                 => 'INSERT',
4371                        p_uda_rec_tbl          => l_uda_rec_tbl,
4372                        p_class_code           => attributes_group_coll(cntr)
4373                                                  .classification_code,
4374                        x_return_status        => l_ret_status,
4375                        x_msg_count            => l_msg_count,
4376                        x_msg_data             => l_msg_data);
4377       END IF;
4378 
4379     --END LOOP; -- End of party loop
4380 
4381     END LOOP; -- end of attribute group loop
4382 
4383   EXCEPTION
4384     WHEN OTHERS THEN
4385       x_return_status := fnd_api.g_ret_sts_unexp_error;
4386   END party_site_uda_merge;
4387 
4388   PROCEDURE enable_party_as_supplier
4389   (
4390     p_entity_name        IN VARCHAR2,
4391     p_from_id            IN NUMBER,
4392     x_to_id              IN OUT NOCOPY NUMBER,
4393     p_from_fk_id         IN NUMBER,
4394     p_to_fk_id           IN NUMBER,
4395     p_parent_entity_name IN VARCHAR2,
4396     p_batch_id           IN NUMBER,
4397     p_batch_party_id     IN NUMBER,
4398     x_return_status      OUT NOCOPY VARCHAR2
4399   ) IS
4400     l_msg_count    NUMBER;
4401     l_msg_data     VARCHAR2(100);
4402     l_to_vendor_id NUMBER;
4403 
4404     vendor_rec              ap_vendor_pub_pkg.r_vendor_rec_type;
4405     l_vendor_id             NUMBER;
4406     l_party_id              NUMBER; /*:= p_to_fk_id*/
4407     l_ven_num_code          financials_system_parameters.user_defined_vendor_num_code%TYPE;
4408     l_party_orig_system_ref VARCHAR2(500);
4409 
4410   BEGIN
4411     x_return_status := fnd_api.g_ret_sts_success;
4412 
4413     fnd_file.put_line(fnd_file.log,
4414                       'Inside POS_MERGE_SUPPLIER_PKG.enable_party_as_supplier p_to_fk_id: ' ||
4415                       p_to_fk_id || ' p_to_fk_id: ' || p_from_fk_id);
4416 
4417     UPDATE ap_suppliers
4418     SET    end_date_active = SYSDATE
4419     WHERE  party_id = p_from_fk_id;
4420 
4421     SELECT COUNT(vendor_id)
4422     INTO   l_to_vendor_id
4423     FROM   ap_suppliers
4424     WHERE  party_id = p_to_fk_id;
4425 
4426     fnd_file.put_line(fnd_file.log, 'l_to_vendor_id: ' || l_to_vendor_id);
4427 
4428     IF (l_to_vendor_id = 0) THEN
4429       l_ven_num_code := pos_batch_import_pkg.chk_vendor_num_nmbering_method();
4430 
4431       IF (l_ven_num_code = 'MANUAL') THEN
4432 
4433         SELECT orig_system_reference
4434         INTO   l_party_orig_system_ref
4435         FROM   hz_orig_sys_references hr
4436         WHERE  hr.owner_table_name = 'HZ_PARTIES'
4437         AND    owner_table_id = p_to_fk_id
4438         AND    party_id = p_to_fk_id
4439         AND    hr.status = 'A'
4440         AND    (hr.reason_code <> 'MERGED' OR hr.reason_code IS NULL)
4441         AND    nvl(hr.end_date_active, SYSDATE) >= SYSDATE;
4442 
4443         vendor_rec.segment1 := l_party_orig_system_ref;
4444       END IF;
4445 
4446       vendor_rec.party_id := p_to_fk_id;
4447 
4448       ap_vendor_pub_pkg.create_vendor(1.0,
4449                                       fnd_api.g_false,
4450                                       fnd_api.g_false,
4451                                       fnd_api.g_valid_level_full,
4452                                       x_return_status,
4453                                       l_msg_count,
4454                                       l_msg_data,
4455                                       vendor_rec,
4456                                       l_vendor_id,
4457                                       l_party_id);
4458 
4459       fnd_file.put_line(fnd_file.log,
4460                         'x_return_status from ap_vendor_pub_pkg.create_vendor: ' ||
4461                         x_return_status || ' l_vendor_id: ' || l_vendor_id);
4462 
4463       IF x_return_status <> fnd_api.g_ret_sts_success THEN
4464         fnd_file.put_line(fnd_file.log,
4465                           'No. of Messages: ' || l_msg_count ||
4466                           ', Message: ' || l_msg_data ||
4467                           ' From ap_vendor_pub_pkg.create_vendor API.');
4468         RETURN;
4469       ELSE
4470         x_to_id := l_vendor_id;
4471       END IF;
4472     END IF;
4473 
4474   EXCEPTION
4475     WHEN OTHERS THEN
4476       x_return_status := fnd_api.g_ret_sts_unexp_error;
4477   END enable_party_as_supplier;
4478 
4479 END pos_merge_supplier_pkg;