DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_MERGE_PKG

Source


1 PACKAGE BODY HZ_MERGE_PKG AS
2  /*$Header: ARHMPKGB.pls 120.64.12020000.3 2013/03/27 07:25:38 vsegu ship $ */
3 --4307667
4 PROCEDURE do_party_usage_merge(
5         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
6         x_to_id         IN OUT NOCOPY  NUMBER,
7         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
8         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
9         x_return_status IN OUT NOCOPY          VARCHAR2
10 
11 );
12 
13 PROCEDURE do_party_merge(
14         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
15         x_to_id         IN OUT NOCOPY  NUMBER,
16         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
17         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
18         p_batch_party_id IN	NUMBER,
19         x_return_status IN OUT NOCOPY          VARCHAR2
20 );
21 
22 PROCEDURE do_party_site_merge(
23         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
24         x_to_id    	IN OUT NOCOPY  NUMBER,
25         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
26         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
27         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
28         x_return_status IN OUT NOCOPY  	VARCHAR2
29 );
30 
31 PROCEDURE do_cust_account_transfer(
32         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
33         x_to_id         IN OUT NOCOPY  NUMBER,
34         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
35         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
36 	x_return_status IN OUT NOCOPY          VARCHAR2
37 );
38 
39 PROCEDURE do_cust_account_role_transfer(
40         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
41         x_to_id         IN OUT NOCOPY  NUMBER,
42         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
43         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
44 	x_return_status IN OUT NOCOPY          VARCHAR2
45 );
46 
47 PROCEDURE do_cust_account_site_transfer(
48         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
49         x_to_id         IN OUT NOCOPY  NUMBER,
50         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
51         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
52 	x_return_status IN OUT NOCOPY          VARCHAR2
53 );
54 
55 PROCEDURE do_fin_profile_transfer(
56         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
57         x_to_id         IN OUT NOCOPY  NUMBER,
58         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
59         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
60 	x_return_status IN OUT NOCOPY          VARCHAR2
61 );
62 
63 PROCEDURE do_contact_point_transfer(
64         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
65         x_to_id         IN OUT NOCOPY  NUMBER,
66         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
67         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
68 	x_return_status IN OUT NOCOPY          VARCHAR2
69 );
70 
71 PROCEDURE do_contact_point_transfer2(
72         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
73         x_to_id         IN OUT NOCOPY  NUMBER,
74         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
75         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
76 	x_return_status IN OUT NOCOPY          VARCHAR2
77 );
78 
79 PROCEDURE do_contact_pref_transfer(
80         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
81         x_to_id         IN OUT NOCOPY  NUMBER,
82         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
83         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
84         x_return_status IN OUT NOCOPY          VARCHAR2
85 );
86 
87 PROCEDURE do_references_transfer(
88         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
89         x_to_id         IN OUT NOCOPY  NUMBER,
90         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
91         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
92 	x_return_status IN OUT NOCOPY          VARCHAR2
93 );
94 
95 PROCEDURE do_certification_transfer(
96         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
97         x_to_id         IN OUT NOCOPY  NUMBER,
98         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
99         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
100 	x_return_status IN OUT NOCOPY          VARCHAR2
101 );
102 
103 PROCEDURE do_credit_ratings_transfer(
104         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
105         x_to_id         IN OUT NOCOPY  NUMBER,
106         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
107         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
108         x_return_status IN OUT NOCOPY          VARCHAR2
109 );
110 
111 PROCEDURE do_security_issued_transfer(
112         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
113         x_to_id         IN OUT NOCOPY  NUMBER,
114         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
115         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
116 	x_return_status IN OUT NOCOPY          VARCHAR2
117 );
118 
119 PROCEDURE do_financial_reports_transfer(
120         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
121         x_to_id         IN OUT NOCOPY  NUMBER,
122         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
123         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
124 	x_return_status IN OUT NOCOPY          VARCHAR2
125 );
126 
127 PROCEDURE do_org_indicators_transfer(
128         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
129         x_to_id         IN OUT NOCOPY  NUMBER,
130         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
131         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
132 	x_return_status IN OUT NOCOPY          VARCHAR2
133 );
134 
135 PROCEDURE do_ind_reference_transfer(
136         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
137         x_to_id         IN OUT NOCOPY  NUMBER,
138         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
139         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
140 	x_return_status IN OUT NOCOPY          VARCHAR2
141 );
142 
143 PROCEDURE do_per_interest_transfer(
144         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
145         x_to_id         IN OUT NOCOPY  NUMBER,
146         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
147         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
148 	x_return_status IN OUT NOCOPY          VARCHAR2
149 );
150 
151 PROCEDURE do_citizenship_transfer(
152         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
153         x_to_id         IN OUT NOCOPY  NUMBER,
154         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
155         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
156 	x_return_status IN OUT NOCOPY          VARCHAR2
157 );
158 
159 PROCEDURE do_education_transfer(
160         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
161         x_to_id         IN OUT NOCOPY  NUMBER,
162         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
163         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
164 	x_return_status IN OUT NOCOPY          VARCHAR2
165 );
166 
167 PROCEDURE do_education_school_transfer(
168         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
169         x_to_id         IN OUT NOCOPY  NUMBER,
170         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
171         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
172 	x_return_status IN OUT NOCOPY          VARCHAR2
173 );
174 
175 PROCEDURE do_emp_history_transfer(
176         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
177         x_to_id         IN OUT NOCOPY  NUMBER,
178         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
179         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
180 	x_return_status IN OUT NOCOPY          VARCHAR2
181 );
182 
183 PROCEDURE do_employed_transfer(
184         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
185         x_to_id         IN OUT NOCOPY  NUMBER,
186         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
187         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
188 	x_return_status IN OUT NOCOPY          VARCHAR2
189 );
190 
191 PROCEDURE do_work_class_transfer(
192         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
193         x_to_id         IN OUT NOCOPY  NUMBER,
194         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
195         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
196 	x_return_status IN OUT NOCOPY          VARCHAR2
197 );
198 
199 PROCEDURE do_financial_number_transfer(
200         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
201         x_to_id         IN OUT NOCOPY  NUMBER,
202         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
203         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
204 	x_return_status IN OUT NOCOPY          VARCHAR2
205 );
206 
207 PROCEDURE do_org_contact_role_transfer(
208         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
209         x_to_id         IN OUT NOCOPY  NUMBER,
210         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
211         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
212 	x_return_status IN OUT NOCOPY          VARCHAR2
213 );
214 
215 PROCEDURE do_code_assignment_transfer2(
216         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
217         x_to_id         IN OUT NOCOPY  NUMBER,
218         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
219         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
220 	x_return_status IN OUT NOCOPY          VARCHAR2
221 );
222 
223 PROCEDURE do_code_assignment_transfer(
224         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
225         x_to_id         IN OUT NOCOPY  NUMBER,
226         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
227         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
228 	x_return_status IN OUT NOCOPY          VARCHAR2
229 );
230 
231 PROCEDURE do_per_languages_transfer(
232         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
233         x_to_id         IN OUT NOCOPY  NUMBER,
234         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
235         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
236 	x_return_status IN OUT NOCOPY          VARCHAR2
237 );
238 
239 PROCEDURE do_party_site_use_transfer(
240         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
241         x_to_id         IN OUT NOCOPY  NUMBER,
242         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
243         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
244 	x_return_status IN OUT NOCOPY          VARCHAR2
245 );
246 
247 PROCEDURE do_org_contact_transfer(
248         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
249         x_to_id         IN OUT NOCOPY  NUMBER,
250         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
251         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
252 	x_return_status IN OUT NOCOPY          VARCHAR2
253 );
254 
255 PROCEDURE do_org_contact_transfer2(
256         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
257         x_to_id         IN OUT NOCOPY  NUMBER,
258         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
259         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
260 	x_return_status IN OUT NOCOPY          VARCHAR2
261 );
262 
263 PROCEDURE do_party_reln_subj_merge(
264         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
265         x_to_id         IN OUT NOCOPY  NUMBER,
266         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
267         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
268         x_return_status IN OUT NOCOPY          VARCHAR2
269 
270 );
271 
272 PROCEDURE do_party_reln_obj_merge(
273         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
274         x_to_id         IN OUT NOCOPY  NUMBER,
275         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
276         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
277         x_return_status IN OUT NOCOPY          VARCHAR2
278 
279 );
280 
281 PROCEDURE do_party_relationship_merge(
282         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
283         x_to_id         IN OUT NOCOPY  NUMBER,
284         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
285         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
286         x_return_status IN OUT NOCOPY          VARCHAR2
287 );
288 PROCEDURE do_hierarchy_nodes_merge(
289         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
290         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
291         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
292         x_return_status IN OUT NOCOPY          VARCHAR2,
293 	p_action	IN	VARCHAR2,
294 	p_sub_obj_merge IN	VARCHAR2:=FND_API.G_MISS_CHAR
295 );
296 
297 PROCEDURE do_org_profile_merge(
298         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
299         x_to_id         IN OUT NOCOPY  NUMBER,
300         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
301         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
302         x_return_status IN OUT NOCOPY          VARCHAR2
303 );
304 
305 PROCEDURE do_per_profile_merge(
306         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
307         x_to_id         IN OUT NOCOPY  NUMBER,
308         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
309         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
310         x_return_status IN OUT NOCOPY          VARCHAR2
311 );
312 
313 PROCEDURE do_displayed_duns_merge(
314         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
315         x_to_id         IN OUT NOCOPY  NUMBER,
316         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
317         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
318         x_return_status IN OUT NOCOPY          VARCHAR2
319 );
320 /*
321 PROCEDURE check_params(
322         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
323         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
324         p_to_id         IN      NUMBER:=FND_API.G_MISS_NUM,
325         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
326         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
327         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
328         p_proc_name       IN    VARCHAR2,
329         p_exp_ent_name  IN      VARCHAR2:=FND_API.G_MISS_CHAR,
330         p_exp_par_ent_name IN   VARCHAR2:=FND_API.G_MISS_CHAR,
331         p_pk_column     IN      VARCHAR2:=FND_API.G_MISS_CHAR,
332         p_par_pk_column IN      VARCHAR2:=FND_API.G_MISS_CHAR,
333 	x_return_status IN OUT NOCOPY          VARCHAR2
334 );
335 */
336 
337 PROCEDURE insert_request_log(
338         p_source_party_id       IN      NUMBER,
339         p_destination_party_id  IN      NUMBER
340 );
341 
342 ----BugNo:1695595.Added private procedure to update denormalized columns in hz_parties.
343 
344 PROCEDURE do_denormalize_contact_point (
345     p_party_id                         IN     NUMBER,
346     p_contact_point_type               IN     VARCHAR2,
347     p_url                              IN     VARCHAR2,
348     p_email_address		       IN     VARCHAR2,
349     p_phone_contact_pt_id	       IN     NUMBER,
350     p_phone_purpose		       IN     VARCHAR2,
351     p_phone_line_type		       IN     VARCHAR2,
352     p_phone_country_code	       IN     VARCHAR2,
353     p_phone_area_code		       IN     VARCHAR2,
354     p_phone_number		       IN     VARCHAR2,
355     p_phone_extension		       IN     VARCHAR2
356 );
357 
358 
359 
360 
361 /*===========================================================================+
362  | PROCEDURE                                                                 |
363  |              party_merge                                                  |
364  |                                                                           |
365  | DESCRIPTION                                                               |
366  |   Merges the parties with party_ids p_from_id to the party x_to_id        |
367  |                                                                           |
368  | SCOPE - PRIVATE                                                           |
369  |                                                                           |
370  | EXTERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
371  |                                                                           |
372  | ARGUMENTS  : IN:                                                          |
373  |		  p_entity_name                                              |
374  |		  p_from_id                                                  |
375  |		  p_from_fk_id                                               |
376  |		  p_to_fk_id                                                 |
377  |		  p_merge_operation                                          |
378  |		  p_par_entity_name                                          |
379  |              OUT:                                                         |
380  |		  x_return_status                                            |
381  |          IN/ OUT:                                                         |
382  |		  x_to_id                                                    |
383  | RETURNS    : NONE                                                         |
384  |                                                                           |
385  | NOTES                                                                     |
386  |                                                                           |
387  | MODIFICATION HISTORY                                                      |
388  |    Srinivasa Rangan   21-Aug-00  Created                                  |
389  |                                                                           |
390  +===========================================================================*/
391 PROCEDURE party_merge(
392         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
393         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
394         x_to_id         IN OUT NOCOPY	NUMBER,
395         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
396         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
397         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
398         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
399         p_batch_party_id IN	NUMBER:=FND_API.G_MISS_NUM,
400 	x_return_status OUT NOCOPY          VARCHAR2
401 ) IS
402 
403 l_to_id 	NUMBER;
404 
405 BEGIN
406    IF (x_to_id IS NULL) THEN
407      l_to_id := FND_API.G_MISS_NUM;
408    ELSE
409      l_to_id := x_to_id;
410    END IF;
411    x_return_status := FND_API.G_RET_STS_SUCCESS;
412 
413    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
414                 p_to_fk_id, p_par_entity_name,
415                 'HZ_MERGE_PKG.party_merge',
416                 'HZ_PARTIES',NULL,
417                 'PARTY_ID',NULL,x_return_status);
418 
419    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
420       do_party_merge(p_from_id, l_to_id,p_from_fk_id, p_to_fk_id,
421            p_batch_party_id, x_return_status);
422    END IF;
423 
424    x_to_id := l_to_id;
425 EXCEPTION
426   WHEN OTHERS THEN
427     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
428     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
429     FND_MSG_PUB.ADD;
430     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
431 END party_merge;
432 
433 PROCEDURE org_profile_merge(
434         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
435         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
436         x_to_id         IN OUT NOCOPY	NUMBER,
437         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
438         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
439         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
440         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
441         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
442 	x_return_status OUT NOCOPY          VARCHAR2
443 ) IS
444 
445 l_to_id 	NUMBER;
446 
447 BEGIN
448    IF (x_to_id IS NULL) THEN
449      l_to_id := FND_API.G_MISS_NUM;
450    ELSE
451      l_to_id := x_to_id;
452    END IF;
453    x_return_status := FND_API.G_RET_STS_SUCCESS;
454 
455    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
456                 p_to_fk_id, p_par_entity_name,
457                 'HZ_MERGE_PKG.org_profile_merge',
458                 'HZ_ORGANIZATION_PROFILES','HZ_PARTIES',
459                 'ORGANIZATION_PROFILE_ID', 'PARTY_ID',x_return_status);
460 
461    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
462       do_org_profile_merge(p_from_id, l_to_id,p_from_fk_id, p_to_fk_id,
463                            x_return_status);
464    END IF;
465 
466    x_to_id := l_to_id;
467 EXCEPTION
468   WHEN OTHERS THEN
469     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
470     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
471     FND_MSG_PUB.ADD;
472     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
473 END org_profile_merge;
474 
475 PROCEDURE party_relationship_merge(
476         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
477         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
478         x_to_id         IN OUT NOCOPY	NUMBER,
479         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
480         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
481         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
482         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
483         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
484 	x_return_status OUT NOCOPY          VARCHAR2
485 ) IS
486 
487 l_to_id 	NUMBER;
488 
489 BEGIN
490    IF (x_to_id IS NULL) THEN
491      l_to_id := FND_API.G_MISS_NUM;
492    ELSE
493      l_to_id := x_to_id;
494    END IF;
495    x_return_status := FND_API.G_RET_STS_SUCCESS;
496 
497    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
498                 p_to_fk_id, p_par_entity_name,
499                 'HZ_MERGE_PKG.party_relationship_merge',
500                 'HZ_PARTY_RELATIONSHIPS','HZ_PARTIES',
501                 'PARTY_RELATIONSHIP_ID', 'PARTY_ID',x_return_status);
502 
503    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
504       do_party_relationship_merge(p_from_id, l_to_id,p_from_fk_id,p_to_fk_id,
505                                   x_return_status);
506    END IF;
507 
508    x_to_id := l_to_id;
509 EXCEPTION
510   WHEN OTHERS THEN
511     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
512     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
513     FND_MSG_PUB.ADD;
514     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
515 END party_relationship_merge;
516 
517 PROCEDURE per_profile_merge(
518         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
519         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
520         x_to_id         IN OUT NOCOPY	NUMBER,
521         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
522         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
523         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
524         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
525         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
526 	x_return_status OUT NOCOPY          VARCHAR2
527 ) IS
528 
529 l_to_id 	NUMBER;
530 
531 BEGIN
532    IF (x_to_id IS NULL) THEN
533      l_to_id := FND_API.G_MISS_NUM;
534    ELSE
535      l_to_id := x_to_id;
536    END IF;
537    x_return_status := FND_API.G_RET_STS_SUCCESS;
538 
539    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
540                 p_to_fk_id, p_par_entity_name,
541                 'HZ_MERGE_PKG.per_profile_merge',
542                 'HZ_PERSON_PROFILES','HZ_PARTIES',
543                 'PERSON_PROFILE_ID', 'PARTY_ID',x_return_status);
544 
545    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
546       do_per_profile_merge(p_from_id, l_to_id,p_from_fk_id,p_to_fk_id,
547                            x_return_status);
548    END IF;
549 
550    x_to_id := l_to_id;
551 EXCEPTION
552   WHEN OTHERS THEN
553     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
554     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
555     FND_MSG_PUB.ADD;
556     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
557 END per_profile_merge;
558 
559 --4307667
560 PROCEDURE party_usage_merge(
561         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
562         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
563         x_to_id         IN OUT NOCOPY  NUMBER,
564         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
565         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
566         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
567         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
568         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
569         x_return_status OUT NOCOPY          VARCHAR2
570 ) IS
571 l_to_id         NUMBER;
572 l_dummy_id NUMBER;
573 
574 BEGIN
575 
576    IF (x_to_id IS NULL) THEN
577      l_to_id := FND_API.G_MISS_NUM;
578    ELSE
579      l_to_id := x_to_id;
580    END IF;
581    x_return_status := FND_API.G_RET_STS_SUCCESS;
582 
583    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
584                 p_to_fk_id, p_par_entity_name,
585                 'HZ_MERGE_PKG.party_usage_merge',
586                 'HZ_PARTY_USG_ASSIGNMENTS','HZ_PARTIES',
587                 'PARTY_USG_ASSIGNMENT_ID', 'PARTY_ID',x_return_status);
588 
589    IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
590      do_party_usage_merge(p_from_id,l_to_id, p_from_fk_id,
591                   p_to_fk_id, x_return_status);
592    END IF;
593 
594    x_to_id := l_to_id;
595 EXCEPTION
596   WHEN  OTHERS THEN
597     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
598     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
599     FND_MSG_PUB.ADD;
600     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
601 END party_usage_merge;
602 
603 
604 PROCEDURE party_reln_subject_merge(
605         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
606         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
607         x_to_id         IN OUT NOCOPY  NUMBER,
608         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
609         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
610         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
611         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
612         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
613 	x_return_status OUT NOCOPY          VARCHAR2
614 ) IS
615 l_to_id         NUMBER;
616 l_dummy_id NUMBER;
617 
618 BEGIN
619    IF (x_to_id IS NULL) THEN
620      l_to_id := FND_API.G_MISS_NUM;
621    ELSE
622      l_to_id := x_to_id;
623    END IF;
624    x_return_status := FND_API.G_RET_STS_SUCCESS;
625 
626    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
627                 p_to_fk_id, p_par_entity_name,
628                 'HZ_MERGE_PKG.party_reln_subject_merge',
629                 'HZ_PARTY_RELATIONSHIPS','HZ_PARTIES',
630                 'PARTY_RELATIONSHIP_ID', 'PARTY_ID',x_return_status);
631 
632    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
633      do_party_reln_subj_merge(p_from_id,l_to_id, p_from_fk_id,
634                   p_to_fk_id, x_return_status);
635    END IF;
636 
637    IF (l_to_id IS NULL OR l_to_id = FND_API.G_MISS_NUM OR
638            l_to_id = p_from_id) THEN
639      FOR ORG_CT IN (
640        SELECT oc.ORG_CONTACT_ID
641        FROM HZ_ORG_CONTACTS oc, HZ_STAGED_CONTACTS soc
642        WHERE oc.PARTY_RELATIONSHIP_ID = p_from_id
643        AND SOC.ORG_CONTACT_ID=oc.ORG_CONTACT_ID) LOOP
644       HZ_DQM_SYNC.stage_contact_merge(
645         'HZ_STAGED_CONTACTS',
646         ORG_CT.ORG_CONTACT_ID,l_dummy_id,
647         ORG_CT.ORG_CONTACT_ID,ORG_CT.ORG_CONTACT_ID,
648         'HZ_ORG_CONTACTS',
649         p_batch_id,p_batch_party_id,x_return_status);
650      END LOOP;
651    END IF;
652 
653    x_to_id := l_to_id;
654 EXCEPTION
655   WHEN OTHERS THEN
656     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
657     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
658     FND_MSG_PUB.ADD;
659     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
660 END party_reln_subject_merge;
661 
662 PROCEDURE party_reln_object_merge(
663         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
664         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
665         x_to_id         IN OUT NOCOPY  NUMBER,
666         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
667         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
668         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
669         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
670         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
671 	x_return_status OUT NOCOPY          VARCHAR2
672 ) IS
673 
674 l_to_id         NUMBER;
675 l_dummy_id NUMBER;
676 
677 BEGIN
678    IF (x_to_id IS NULL) THEN
679      l_to_id := FND_API.G_MISS_NUM;
680    ELSE
681      l_to_id := x_to_id;
682    END IF;
683    x_return_status := FND_API.G_RET_STS_SUCCESS;
684 
685    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
686                 p_to_fk_id, p_par_entity_name,
687                 'HZ_MERGE_PKG.party_reln_object_merge',
688                 'HZ_PARTY_RELATIONSHIPS','HZ_PARTIES',
689                 'PARTY_RELATIONSHIP_ID', 'PARTY_ID',x_return_status);
690 
691    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
692      do_party_reln_obj_merge(p_from_id,l_to_id, p_from_fk_id,
693                   p_to_fk_id, x_return_status);
694    END IF;
695 
696    IF (l_to_id IS NULL OR l_to_id = FND_API.G_MISS_NUM OR
697            l_to_id = p_from_id) THEN
698      FOR ORG_CT IN (
699        SELECT oc.ORG_CONTACT_ID
700        FROM HZ_ORG_CONTACTS oc, HZ_STAGED_CONTACTS soc
701        WHERE oc.PARTY_RELATIONSHIP_ID = p_from_id
702        AND SOC.ORG_CONTACT_ID=oc.ORG_CONTACT_ID) LOOP
703       HZ_DQM_SYNC.stage_contact_merge(
704         'HZ_STAGED_CONTACTS',
705         ORG_CT.ORG_CONTACT_ID,l_dummy_id,
706         ORG_CT.ORG_CONTACT_ID,ORG_CT.ORG_CONTACT_ID,
707         'HZ_ORG_CONTACTS',
708         p_batch_id,p_batch_party_id,x_return_status);
709      END LOOP;
710    END IF;
711 
712    x_to_id := l_to_id;
713 EXCEPTION
714   WHEN OTHERS THEN
715     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
716     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
717     FND_MSG_PUB.ADD;
718     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
719 END party_reln_object_merge;
720 
721 PROCEDURE org_contact_merge(
722         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
723         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
724         x_to_id         IN OUT NOCOPY  NUMBER,
725         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
726         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
727         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
728         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
729         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
730 	x_return_status OUT NOCOPY          VARCHAR2
731 ) IS
732 l_to_id NUMBER;
733 
734 BEGIN
735    IF (x_to_id IS NULL) THEN
736      l_to_id := FND_API.G_MISS_NUM;
737    ELSE
738      l_to_id := x_to_id;
739    END IF;
740    x_return_status := FND_API.G_RET_STS_SUCCESS;
741 
742    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
743                 p_to_fk_id, p_par_entity_name,
744                 'HZ_MERGE_PKG.org_contact_merge',
745                 'HZ_ORG_CONTACTS','HZ_PARTY_SITES',
746                 'ORG_CONTACT_ID', 'PARTY_SITE_ID',x_return_status);
747 
748    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
749      do_org_contact_transfer(p_from_id,l_to_id, p_from_fk_id,
750                   p_to_fk_id, x_return_status);
751    END IF;
752 
753    x_to_id := l_to_id;
754 EXCEPTION
755   WHEN OTHERS THEN
756     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
757     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
758     FND_MSG_PUB.ADD;
759     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
760 END org_contact_merge;
761 
762 PROCEDURE org_contact_merge2(
763         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
764         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
765         x_to_id         IN OUT NOCOPY  NUMBER,
766         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
767         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
768         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
769         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
770         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
771 	x_return_status OUT NOCOPY          VARCHAR2
772 ) IS
773 l_to_id NUMBER;
774 l_dummy_id NUMBER;
775 
776 BEGIN
777    IF (x_to_id IS NULL) THEN
778      l_to_id := FND_API.G_MISS_NUM;
779    ELSE
780      l_to_id := x_to_id;
781    END IF;
782    x_return_status := FND_API.G_RET_STS_SUCCESS;
783 
784    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
785                 p_to_fk_id, p_par_entity_name,
786                 'HZ_MERGE_PKG.org_contact_merge2',
787                 'HZ_ORG_CONTACTS','HZ_PARTY_RELATIONSHIPS',
788                 'ORG_CONTACT_ID', 'PARTY_RELATIONSHIP_ID',x_return_status);
789 
790    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
791      do_org_contact_transfer2(p_from_id,l_to_id, p_from_fk_id,
792                   p_to_fk_id, x_return_status);
793    END IF;
794 
795    IF (l_to_id IS NULL OR l_to_id = FND_API.G_MISS_NUM OR
796            l_to_id = p_from_id) THEN
797      FOR ORG_CT IN (
798        SELECT soc.ORG_CONTACT_ID
799        FROM HZ_STAGED_CONTACTS soc
800        WHERE SOC.ORG_CONTACT_ID= p_from_id) LOOP
801       HZ_DQM_SYNC.stage_contact_merge(
802         'HZ_STAGED_CONTACTS',
803         ORG_CT.ORG_CONTACT_ID,l_dummy_id,
804         ORG_CT.ORG_CONTACT_ID,ORG_CT.ORG_CONTACT_ID,
805         'HZ_ORG_CONTACTS',
806         p_batch_id,p_batch_party_id,x_return_status);
807      END LOOP;
808    END IF;
809 
810    x_to_id := l_to_id;
811 EXCEPTION
812   WHEN OTHERS THEN
813     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
814     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
815     FND_MSG_PUB.ADD;
816     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
817 END org_contact_merge2;
818 
819 /*===========================================================================+
820  | PROCEDURE                                                                 |
821  |              party_site_merge                                             |
822  |                                                                           |
823  | DESCRIPTION                                                               |
824  |   Merges the party_sites with party_site_ids p_from_id to the party site  |
825  |   x_to_id                                                                 |
826  |                                                                           |
827  |   The merge operations allowed are MERGE and COPY                         |
828  |                                                                           |
829  | SCOPE - PRIVATE                                                           |
830  |                                                                           |
831  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
832  |                                                                           |
833  | ARGUMENTS  : IN:                                                          |
834  |		  p_entity_name                                              |
835  |		  p_from_id                                                  |
836  |		  p_from_fk_id                                               |
837  |		  p_to_fk_id                                                 |
838  |		  p_merge_operation                                          |
839  |		  p_par_entity_name                                          |
840  |              OUT:                                                         |
841  |		  x_return_status                                            |
842  |          IN/ OUT:                                                         |
843  |		  x_to_id                                                    |
844  | RETURNS    : NONE                                                         |
845  |                                                                           |
846  | NOTES                                                                     |
847  |                                                                           |
848  | MODIFICATION HISTORY                                                      |
849  |    Srinivasa Rangan   21-Aug-00  Created                                  |
850  |                                                                           |
851  +===========================================================================*/
852 PROCEDURE party_site_merge(
853         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
854         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
855         x_to_id         IN OUT NOCOPY	NUMBER,
856         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
857         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
858         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
859         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
860         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
861 	x_return_status OUT NOCOPY          VARCHAR2
862 ) IS
863 l_to_id 	NUMBER;
864 
865 BEGIN
866    IF (x_to_id IS NULL) THEN
867      l_to_id := FND_API.G_MISS_NUM;
868    ELSE
869      l_to_id := x_to_id;
870    END IF;
871 
872    x_return_status := FND_API.G_RET_STS_SUCCESS;
873 
874    IF p_from_fk_id <> FND_API.G_MISS_NUM THEN
875      check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
876                 p_to_fk_id, p_par_entity_name,
877                 'HZ_MERGE_PKG.party_site_merge',
878                 'HZ_PARTY_SITES','HZ_PARTIES',
879                 'PARTY_SITE_ID', 'PARTY_ID',x_return_status);
880    ELSE
881      check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
882                 p_to_fk_id, p_par_entity_name,
883                 'HZ_MERGE_PKG.party_site_merge',
884                 'HZ_PARTY_SITES',NULL, 'PARTY_SITE_ID',
885                 NULL,x_return_status);
886    END IF;
887 
888    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
889      do_party_site_merge(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
890                          p_batch_id,x_return_status);
891    END IF;
892 
893    x_to_id := l_to_id;
894 EXCEPTION
895   WHEN OTHERS THEN
896     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
897     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
898     FND_MSG_PUB.ADD;
899     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
900 END party_site_merge;
901 
902 /*===========================================================================+
903  | PROCEDURE                                                                 |
904  |              cust_account_merge                                           |
905  |                                                                           |
906  | DESCRIPTION                                                               |
907  |                                                                           |
908  | SCOPE - PRIVATE                                                           |
909  |                                                                           |
910  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
911  |                                                                           |
912  | ARGUMENTS  : IN:                                                          |
913  |		  p_entity_name                                              |
914  |		  p_from_id                                                  |
915  |		  p_from_fk_id                                               |
916  |		  p_to_fk_id                                                 |
917  |		  p_merge_operation                                          |
918  |		  p_par_entity_name                                          |
919  |              OUT:                                                         |
920  |		  x_return_status                                            |
921  |          IN/ OUT:                                                         |
922  |		  x_to_id                                                    |
923  | RETURNS    : NONE                                                         |
924  |                                                                           |
925  | NOTES                                                                     |
926  |                                                                           |
927  | MODIFICATION HISTORY                                                      |
928  |    Srinivasa Rangan   21-Aug-00  Created                                  |
929  |                                                                           |
930  +===========================================================================*/
931 PROCEDURE cust_account_merge(
932         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
933         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
934         x_to_id         IN OUT NOCOPY	NUMBER,
935         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
936         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
937         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
938         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
939         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
940 	x_return_status OUT NOCOPY          VARCHAR2
941 ) IS
942 l_to_id 	NUMBER;
943 l_dup_exists    VARCHAR2(20);
944 
945 BEGIN
946    IF (x_to_id IS NULL) THEN
947      l_to_id := FND_API.G_MISS_NUM;
948    ELSE
949      l_to_id := x_to_id;
950    END IF;
951 
952    x_return_status := FND_API.G_RET_STS_SUCCESS;
953 
954    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
955                 p_to_fk_id, p_par_entity_name,
956                 'HZ_MERGE_PKG.cust_account_merge',
957                 'HZ_CUST_ACCOUNTS','HZ_PARTIES',
958                 'CUST_ACCOUNT_ID', 'PARTY_ID',x_return_status);
959    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
960      l_dup_exists := HZ_MERGE_DUP_CHECK.check_cust_account_dup(
961                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
962                         x_return_status);
963    END IF;
964 
965    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
966      do_cust_account_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
967                        x_return_status);
968    END IF;
969 
970    x_to_id := l_to_id;
971 EXCEPTION
972   WHEN OTHERS THEN
973     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
974     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
975     FND_MSG_PUB.ADD;
976     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
977 END cust_account_merge;
978 
979 PROCEDURE cust_account_selling_merge(
980         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
981         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
982         x_to_id         IN OUT NOCOPY  NUMBER,
983         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
984         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
985         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
986         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
987         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
988         x_return_status OUT NOCOPY          VARCHAR2
989 ) IS
990 l_to_id         NUMBER;
991 l_dup_exists    VARCHAR2(20);
992 
993 BEGIN
994    IF (x_to_id IS NULL) THEN
995      l_to_id := FND_API.G_MISS_NUM;
996    ELSE
997      l_to_id := x_to_id;
998    END IF;
999 
1000    x_return_status := FND_API.G_RET_STS_SUCCESS;
1001 
1002    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1003                 p_to_fk_id, p_par_entity_name,
1004                 'HZ_MERGE_PKG.cust_account_merge',
1005                 'HZ_CUST_ACCOUNTS','HZ_PARTIES',
1006                 'CUST_ACCOUNT_ID', 'SELLING_PARTY_ID',x_return_status);
1007 
1008    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1009       UPDATE HZ_CUST_ACCOUNTS
1010       SET
1011         selling_party_id = p_to_fk_id,
1012         last_update_date = hz_utility_pub.last_update_date,
1013         last_updated_by = hz_utility_pub.user_id,
1014         last_update_login = hz_utility_pub.last_update_login,
1015         request_id =  hz_utility_pub.request_id,
1016         program_application_id = hz_utility_pub.program_application_id,
1017         program_id = hz_utility_pub.program_id,
1018         program_update_date = sysdate
1019       WHERE cust_account_id = p_from_id;
1020    END IF;
1021 
1022    x_to_id := l_to_id;
1023 EXCEPTION
1024   WHEN OTHERS THEN
1025     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1026     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1027     FND_MSG_PUB.ADD;
1028     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1029 END cust_account_selling_merge;
1030 
1031 PROCEDURE cust_account_role_merge(
1032         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1033         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1034         x_to_id         IN OUT NOCOPY	NUMBER,
1035         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1036         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1037         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1038         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1039         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1040 	x_return_status OUT NOCOPY          VARCHAR2
1041 ) IS
1042 l_to_id 	NUMBER;
1043 l_dup_exists    VARCHAR2(20);
1044 
1045 BEGIN
1046    IF (x_to_id IS NULL) THEN
1047      l_to_id := FND_API.G_MISS_NUM;
1048    ELSE
1049      l_to_id := x_to_id;
1050    END IF;
1051 
1052    x_return_status := FND_API.G_RET_STS_SUCCESS;
1053 
1054    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1055                 p_to_fk_id, p_par_entity_name,
1056                 'HZ_MERGE_PKG.cust_account_role_merge',
1057                 'HZ_CUST_ACCOUNT_ROLES','HZ_PARTIES',
1058                 'CUST_ACCOUNT_ROLE_ID', 'PARTY_ID',x_return_status);
1059    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1060      l_dup_exists := HZ_MERGE_DUP_CHECK.check_cust_account_role_dup(
1061                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1062                         x_return_status);
1063    END IF;
1064    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1065      do_cust_account_role_transfer(p_from_id, l_to_id, p_from_fk_id,
1066                          p_to_fk_id, x_return_status);
1067    END IF;
1068 
1069    x_to_id := l_to_id;
1070 EXCEPTION
1071   WHEN OTHERS THEN
1072     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1073     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1074     FND_MSG_PUB.ADD;
1075     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1076 END cust_account_role_merge;
1077 
1078 PROCEDURE cust_account_site_merge(
1079         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1080         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1081         x_to_id         IN OUT NOCOPY	NUMBER,
1082         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1083         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1084         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1085         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1086         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1087 	x_return_status OUT NOCOPY          VARCHAR2
1088 ) IS
1089 l_to_id 	NUMBER;
1090 l_dup_exists    VARCHAR2(20);
1091 
1092 BEGIN
1093    IF (x_to_id IS NULL) THEN
1094      l_to_id := FND_API.G_MISS_NUM;
1095    ELSE
1096      l_to_id := x_to_id;
1097    END IF;
1098 
1099    x_return_status := FND_API.G_RET_STS_SUCCESS;
1100 
1101    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1102                 p_to_fk_id, p_par_entity_name,
1103                 'HZ_MERGE_PKG.cust_account_site_merge',
1104                 'HZ_CUST_ACCT_SITES_ALL','HZ_PARTY_SITES',
1105                 'CUST_ACCT_SITE_ID', 'PARTY_SITE_ID',x_return_status);
1106 
1107    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1108      l_dup_exists := HZ_MERGE_DUP_CHECK.check_cust_account_site_dup(
1109                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1110                         x_return_status);
1111    END IF;
1112 
1113    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1114        do_cust_account_site_transfer(p_from_id,l_to_id, p_from_fk_id,
1115                          p_to_fk_id, x_return_status);
1116    END IF;
1117 
1118    x_to_id := l_to_id;
1119 EXCEPTION
1120   WHEN OTHERS THEN
1121     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1122     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1123     FND_MSG_PUB.ADD;
1124     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1125 END cust_account_site_merge;
1126 
1127 /*===========================================================================+
1128  | PROCEDURE                                                                 |
1129  |              financial_profile_merge                                      |
1130  |                                                                           |
1131  | DESCRIPTION                                                               |
1132  |                                                                           |
1133  | SCOPE - PRIVATE                                                           |
1134  |                                                                           |
1135  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
1136  |                                                                           |
1137  | ARGUMENTS  : IN:                                                          |
1138  |		  p_entity_name                                              |
1139  |		  p_from_id                                                  |
1140  |		  p_from_fk_id                                               |
1141  |		  p_to_fk_id                                                 |
1142  |		  p_merge_operation                                          |
1143  |		  p_par_entity_name                                          |
1144  |              OUT:                                                         |
1145  |		  x_return_status                                            |
1146  |          IN/ OUT:                                                         |
1147  |		  x_to_id                                                    |
1148  | RETURNS    : NONE                                                         |
1149  |                                                                           |
1150  | NOTES                                                                     |
1151  |                                                                           |
1152  | MODIFICATION HISTORY                                                      |
1153  |    Srinivasa Rangan   21-Aug-00  Created                                  |
1154  |                                                                           |
1155  +===========================================================================*/
1156 PROCEDURE financial_profile_merge(
1157         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1158         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1159         x_to_id         IN OUT NOCOPY	NUMBER,
1160         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1161         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1162         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1163         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1164         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1165 	x_return_status OUT NOCOPY          VARCHAR2
1166 ) IS
1167 l_to_id 	NUMBER;
1168 l_dup_exists    VARCHAR2(20);
1169 
1170 BEGIN
1171    IF (x_to_id IS NULL) THEN
1172      l_to_id := FND_API.G_MISS_NUM;
1173    ELSE
1174      l_to_id := x_to_id;
1175    END IF;
1176 
1177    x_return_status := FND_API.G_RET_STS_SUCCESS;
1178 
1179    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1180                 p_to_fk_id, p_par_entity_name,
1181                 'HZ_MERGE_PKG.financial_profile_merge',
1182                 'HZ_FINANCIAL_PROFILE','HZ_PARTIES',
1183                 'FINANCIAL_PROFILE_ID', 'PARTY_ID',x_return_status);
1184 
1185    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1186      l_dup_exists := HZ_MERGE_DUP_CHECK.check_financial_profile_dup(
1187                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1188                         x_return_status);
1189    END IF;
1190 
1191    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1192         do_fin_profile_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1193                          x_return_status);
1194    END IF;
1195 
1196    x_to_id := l_to_id;
1197 EXCEPTION
1198   WHEN OTHERS THEN
1199     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1200     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1201     FND_MSG_PUB.ADD;
1202     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1203 END financial_profile_merge;
1204 
1205 /*===========================================================================+
1206  | PROCEDURE                                                                 |
1207  |              contact_point_merge                                          |
1208  |                                                                           |
1209  | DESCRIPTION                                                               |
1210  |                                                                           |
1211  | SCOPE - PRIVATE                                                           |
1212  |                                                                           |
1213  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
1214  |                                                                           |
1215  | ARGUMENTS  : IN:                                                          |
1216  |		  p_entity_name                                              |
1217  |		  p_from_id                                                  |
1218  |		  p_from_fk_id                                               |
1219  |		  p_to_fk_id                                                 |
1220  |		  p_merge_operation                                          |
1221  |		  p_par_entity_name                                          |
1222  |              OUT:                                                         |
1223  |		  x_return_status                                            |
1224  |          IN/ OUT:                                                         |
1225  |		  x_to_id                                                    |
1226  | RETURNS    : NONE                                                         |
1227  |                                                                           |
1228  | NOTES                                                                     |
1229  |                                                                           |
1230  | MODIFICATION HISTORY                                                      |
1231  |    Srinivasa Rangan   21-Aug-00  Created                                  |
1232  |                                                                           |
1233  +===========================================================================*/
1234 PROCEDURE contact_point_merge(
1235         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1236         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1237         x_to_id         IN OUT NOCOPY	NUMBER,
1238         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1239         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1240         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1241         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1242         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1243 	x_return_status OUT NOCOPY          VARCHAR2
1244 ) IS
1245 l_to_id 	NUMBER;
1246 l_dup_exists    VARCHAR2(20);
1247 l_dummy_id NUMBER;
1248 
1249 BEGIN
1250    IF (x_to_id IS NULL) THEN
1251      l_to_id := FND_API.G_MISS_NUM;
1252    ELSE
1253      l_to_id := x_to_id;
1254    END IF;
1255 
1256    x_return_status := FND_API.G_RET_STS_SUCCESS;
1257 
1258    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1259                 p_to_fk_id, p_par_entity_name,
1260                 'HZ_MERGE_PKG.contact_point_merge',
1261                 'HZ_CONTACT_POINTS','HZ_PARTIES',
1262                 'CONTACT_POINT_ID', 'PARTY_ID',x_return_status);
1263 
1264    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1265      l_dup_exists := HZ_MERGE_DUP_CHECK.check_contact_point_dup(
1266                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1267                         'HZ_PARTIES',x_return_status);
1268    END IF;
1269 
1270    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1271         do_contact_point_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1272                          x_return_status);
1273    END IF;
1274 
1275    IF (l_to_id IS NULL OR l_to_id = FND_API.G_MISS_NUM OR
1276            l_to_id = p_from_id) THEN
1277      FOR CPT IN (
1278       SELECT CONTACT_POINT_ID FROM HZ_STAGED_CONTACT_POINTS
1279       WHERE CONTACT_POINT_ID=p_from_id) LOOP
1280 
1281         HZ_DQM_SYNC.stage_contact_point_merge(
1282           'HZ_STAGED_CONTACT_POINTS',
1283           p_from_id,l_dummy_id,p_from_id,p_from_id,
1284           'HZ_CONTACT_POINTS',
1285           p_batch_id,p_batch_party_id,x_return_status);
1286      END LOOP;
1287    END IF;
1288 
1289    x_to_id := l_to_id;
1290 EXCEPTION
1291   WHEN OTHERS THEN
1292     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1293     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1294     FND_MSG_PUB.ADD;
1295     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1296 END contact_point_merge;
1297 
1298 /*===========================================================================+
1299  | PROCEDURE                                                                 |
1300  |              references_merge                                             |
1301  |                                                                           |
1302  | DESCRIPTION                                                               |
1303  |   Merges the parties with party_ids p_from_id to the party x_to_id        |
1304  |                                                                           |
1305  | SCOPE - PRIVATE                                                           |
1306  |                                                                           |
1307  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
1308  |                                                                           |
1309  | ARGUMENTS  : IN:                                                          |
1310  |		  p_entity_name                                              |
1311  |		  p_from_id                                                  |
1312  |		  p_from_fk_id                                               |
1313  |		  p_to_fk_id                                                 |
1314  |		  p_merge_operation                                          |
1315  |		  p_par_entity_name                                          |
1316  |              OUT:                                                         |
1317  |		  x_return_status                                            |
1318  |          IN/ OUT:                                                         |
1319  |		  x_to_id                                                    |
1320  | RETURNS    : NONE                                                         |
1321  |                                                                           |
1322  | NOTES                                                                     |
1323  |                                                                           |
1324  | MODIFICATION HISTORY                                                      |
1325  |    Srinivasa Rangan   21-Aug-00  Created                                  |
1326  |                                                                           |
1327  +===========================================================================*/
1328 PROCEDURE references_merge(
1329         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1330         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1331         x_to_id         IN OUT NOCOPY	NUMBER,
1332         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1333         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1334         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1335         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1336         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1337 	x_return_status OUT NOCOPY          VARCHAR2
1338 ) IS
1339 l_to_id 	NUMBER;
1340 l_dup_exists    VARCHAR2(20);
1341 
1342 BEGIN
1343    IF (x_to_id IS NULL) THEN
1344      l_to_id := FND_API.G_MISS_NUM;
1345    ELSE
1346      l_to_id := x_to_id;
1347    END IF;
1348 
1349    x_return_status := FND_API.G_RET_STS_SUCCESS;
1350 
1351    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1352                 p_to_fk_id, p_par_entity_name,
1353                 'HZ_MERGE_PKG.references_merge',
1354                 'HZ_REFERENCES','HZ_PARTIES',
1355                 'REFERENCE_ID', 'PARTY_ID',x_return_status);
1356 
1357    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1358      l_dup_exists := HZ_MERGE_DUP_CHECK.check_references_dup(
1359                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1360                         x_return_status);
1361    END IF;
1362 
1363    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1364         do_references_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1365                          x_return_status);
1366    END IF;
1367 
1368    x_to_id := l_to_id;
1369 EXCEPTION
1370   WHEN OTHERS THEN
1371     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1372     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1373     FND_MSG_PUB.ADD;
1374     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1375 END references_merge;
1376 
1377 
1378 /*===========================================================================+
1379  | PROCEDURE                                                                 |
1380  |              certification_merge                                          |
1381  |                                                                           |
1382  | DESCRIPTION                                                               |
1383  |   Merges the parties with party_ids p_from_id to the party x_to_id        |
1384  |                                                                           |
1385  | SCOPE - PRIVATE                                                           |
1386  |                                                                           |
1387  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
1388  |                                                                           |
1389  | ARGUMENTS  : IN:                                                          |
1390  |		  p_entity_name                                              |
1391  |		  p_from_id                                                  |
1392  |		  p_from_fk_id                                               |
1393  |		  p_to_fk_id                                                 |
1394  |		  p_merge_operation                                          |
1395  |		  p_par_entity_name                                          |
1396  |              OUT:                                                         |
1397  |		  x_return_status                                            |
1398  |          IN/ OUT:                                                         |
1399  |		  x_to_id                                                    |
1400  | RETURNS    : NONE                                                         |
1401  |                                                                           |
1402  | NOTES                                                                     |
1403  |                                                                           |
1404  | MODIFICATION HISTORY                                                      |
1405  |    Srinivasa Rangan   21-Aug-00  Created                                  |
1406  |                                                                           |
1407  +===========================================================================*/
1408 PROCEDURE certification_merge(
1409         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1410         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1411         x_to_id         IN OUT NOCOPY	NUMBER,
1412         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1413         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1414         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1415         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1416         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1417 	x_return_status OUT NOCOPY          VARCHAR2
1418 ) IS
1419 l_to_id 	NUMBER;
1420 l_dup_exists    VARCHAR2(20);
1421 
1422 BEGIN
1423    IF (x_to_id IS NULL) THEN
1424      l_to_id := FND_API.G_MISS_NUM;
1425    ELSE
1426      l_to_id := x_to_id;
1427    END IF;
1428 
1429    x_return_status := FND_API.G_RET_STS_SUCCESS;
1430 
1431    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1432                 p_to_fk_id, p_par_entity_name,
1433                 'HZ_MERGE_PKG.certification_merge',
1434                 'HZ_CERTIFICATIONS','HZ_PARTIES',
1435                 'CERTIFICATION_ID', 'PARTY_ID',x_return_status);
1436 
1437    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1438      l_dup_exists := HZ_MERGE_DUP_CHECK.check_certification_dup(
1439                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1440                         x_return_status);
1441    END IF;
1442 
1443    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1444         do_certification_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1445                          x_return_status);
1446    END IF;
1447 
1448    x_to_id := l_to_id;
1449 EXCEPTION
1450   WHEN OTHERS THEN
1451     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1452     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1453     FND_MSG_PUB.ADD;
1454     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1455 END certification_merge;
1456 
1457 PROCEDURE credit_ratings_merge(
1458         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1459         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1460         x_to_id         IN OUT NOCOPY	NUMBER,
1461         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1462         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1463         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1464         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1465         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1466 	x_return_status OUT NOCOPY          VARCHAR2
1467 ) IS
1468 l_to_id 	NUMBER;
1469 l_dup_exists    VARCHAR2(20);
1470 
1471 BEGIN
1472    IF (x_to_id IS NULL) THEN
1473      l_to_id := FND_API.G_MISS_NUM;
1474    ELSE
1475      l_to_id := x_to_id;
1476    END IF;
1477 
1478    x_return_status := FND_API.G_RET_STS_SUCCESS;
1479 
1480    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1481                 p_to_fk_id, p_par_entity_name,
1482                 'HZ_MERGE_PKG.credit_ratings_merge',
1483                 'HZ_CREDIT_RATINGS','HZ_PARTIES',
1484                 'CREDIT_RATING_ID', 'PARTY_ID',x_return_status);
1485 
1486    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1487      l_dup_exists := HZ_MERGE_DUP_CHECK.check_credit_ratings_dup(
1488                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1489                         x_return_status);
1490    END IF;
1491 
1492    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1493         do_credit_ratings_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1494                          x_return_status);
1495    END IF;
1496 
1497    x_to_id := l_to_id;
1498 EXCEPTION
1499   WHEN OTHERS THEN
1500     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1501     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1502     FND_MSG_PUB.ADD;
1503     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1504 END credit_ratings_merge;
1505 
1506 
1507 PROCEDURE security_issued_merge(
1508         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1509         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1510         x_to_id         IN OUT NOCOPY	NUMBER,
1511         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1512         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1513         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1514         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1515         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1516 	x_return_status OUT NOCOPY          VARCHAR2
1517 ) IS
1518 l_to_id 	NUMBER;
1519 l_dup_exists    VARCHAR2(20);
1520 
1521 BEGIN
1522    IF (x_to_id IS NULL) THEN
1523      l_to_id := FND_API.G_MISS_NUM;
1524    ELSE
1525      l_to_id := x_to_id;
1526    END IF;
1527 
1528    x_return_status := FND_API.G_RET_STS_SUCCESS;
1529 
1530    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1531                 p_to_fk_id, p_par_entity_name,
1532                 'HZ_MERGE_PKG.security_issued_merge',
1533                 'HZ_SECURITY_ISSUED','HZ_PARTIES',
1534                 'SECURITY_ISSUED_ID', 'PARTY_ID',x_return_status);
1535 
1536    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1537 
1538      l_dup_exists := HZ_MERGE_DUP_CHECK.check_security_issued_dup(
1539                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1540                         x_return_status);
1541    END IF;
1542 
1543    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1544         do_security_issued_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1545                          x_return_status);
1546    END IF;
1547 
1548    x_to_id := l_to_id;
1549 EXCEPTION
1550   WHEN OTHERS THEN
1551     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1552     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1553     FND_MSG_PUB.ADD;
1554     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1555 END security_issued_merge;
1556 
1557 PROCEDURE financial_reports_merge(
1558         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1559         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1560         x_to_id         IN OUT NOCOPY	NUMBER,
1561         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1562         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1563         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1564         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1565         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1566 	x_return_status OUT NOCOPY          VARCHAR2
1567 ) IS
1568 l_to_id 	NUMBER;
1569 l_dup_exists    VARCHAR2(20);
1570 
1571 BEGIN
1572    IF (x_to_id IS NULL) THEN
1573      l_to_id := FND_API.G_MISS_NUM;
1574    ELSE
1575      l_to_id := x_to_id;
1576    END IF;
1577 
1578    x_return_status := FND_API.G_RET_STS_SUCCESS;
1579 
1580    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1581                 p_to_fk_id, p_par_entity_name,
1582                 'HZ_MERGE_PKG.financial_reports_merge',
1583                 'HZ_FINANCIAL_REPORTS','HZ_PARTIES',
1584                 'FINANCIAL_REPORT_ID', 'PARTY_ID',x_return_status);
1585 
1586    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1587      l_dup_exists := HZ_MERGE_DUP_CHECK.check_financial_reports_dup(
1588                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1589                         x_return_status);
1590    END IF;
1591 
1592    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1593         do_financial_reports_transfer(p_from_id, l_to_id, p_from_fk_id,
1594                          p_to_fk_id,x_return_status);
1595    END IF;
1596 
1597    x_to_id := l_to_id;
1598 EXCEPTION
1599   WHEN OTHERS THEN
1600     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1601     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1602     FND_MSG_PUB.ADD;
1603     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1604 END financial_reports_merge;
1605 
1606 
1607 PROCEDURE org_indicators_merge(
1608         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1609         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1610         x_to_id         IN OUT NOCOPY	NUMBER,
1611         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1612         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1613         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1614         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1615         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1616 	x_return_status OUT NOCOPY          VARCHAR2
1617 ) IS
1618 l_to_id 	NUMBER;
1619 l_dup_exists    VARCHAR2(20);
1620 
1621 BEGIN
1622    IF (x_to_id IS NULL) THEN
1623      l_to_id := FND_API.G_MISS_NUM;
1624    ELSE
1625      l_to_id := x_to_id;
1626    END IF;
1627 
1628    x_return_status := FND_API.G_RET_STS_SUCCESS;
1629 
1630    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1631                 p_to_fk_id, p_par_entity_name,
1632                 'HZ_MERGE_PKG.org_indicators_merge',
1633                 'HZ_ORGANIZATION_INDICATORS','HZ_PARTIES',
1634                 'ORGANIZATION_INDICATOR_ID', 'PARTY_ID',x_return_status);
1635 
1636    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1637      l_dup_exists := HZ_MERGE_DUP_CHECK.check_org_indicators_dup(
1638                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1639                         x_return_status);
1640    END IF;
1641 
1642    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1643         do_org_indicators_transfer(p_from_id, l_to_id, p_from_fk_id, p_to_fk_id,
1644                          x_return_status);
1645    END IF;
1646 
1647    x_to_id := l_to_id;
1648 EXCEPTION
1649   WHEN OTHERS THEN
1650     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1651     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1652     FND_MSG_PUB.ADD;
1653     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1654 END org_indicators_merge;
1655 
1656 PROCEDURE org_ind_reference_merge(
1657         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1658         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1659         x_to_id         IN OUT NOCOPY	NUMBER,
1660         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1661         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1662         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1663         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1664         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1665 	x_return_status OUT NOCOPY          VARCHAR2
1666 ) IS
1667 l_to_id 	NUMBER;
1668 l_dup_exists    VARCHAR2(20);
1669 
1670 BEGIN
1671    IF (x_to_id IS NULL) THEN
1672      l_to_id := FND_API.G_MISS_NUM;
1673    ELSE
1674      l_to_id := x_to_id;
1675    END IF;
1676 
1677    x_return_status := FND_API.G_RET_STS_SUCCESS;
1678 
1679    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1680                 p_to_fk_id, p_par_entity_name,
1681                 'HZ_MERGE_PKG.org_ind_reference_merge',
1682                 'HZ_INDUSTRIAL_REFERENCE','HZ_PARTIES',
1683                 'INDUSTRY_REFERENCE_ID', 'PARTY_ID',x_return_status);
1684 
1685    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1686      l_dup_exists := HZ_MERGE_DUP_CHECK.check_ind_reference_dup(
1687                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1688                         x_return_status);
1689    END IF;
1690 
1691    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1692         do_ind_reference_transfer(p_from_id, l_to_id, p_from_fk_id, p_to_fk_id,
1693                          x_return_status);
1694    END IF;
1695 
1696    x_to_id := l_to_id;
1697 EXCEPTION
1698   WHEN OTHERS THEN
1699     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1700     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1701     FND_MSG_PUB.ADD;
1702     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1703 END org_ind_reference_merge;
1704 
1705 
1706 PROCEDURE per_interest_merge(
1707         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1708         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1709         x_to_id         IN OUT NOCOPY	NUMBER,
1710         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1711         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1712         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1713         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1714         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1715 	x_return_status OUT NOCOPY          VARCHAR2
1716 ) IS
1717 l_to_id 	NUMBER;
1718 l_dup_exists    VARCHAR2(20);
1719 
1720 BEGIN
1721    IF (x_to_id IS NULL) THEN
1722      l_to_id := FND_API.G_MISS_NUM;
1723    ELSE
1724      l_to_id := x_to_id;
1725    END IF;
1726 
1727    x_return_status := FND_API.G_RET_STS_SUCCESS;
1728 
1729    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1730                 p_to_fk_id, p_par_entity_name,
1731                 'HZ_MERGE_PKG.per_interest_merge',
1732                 'HZ_PERSON_INTEREST','HZ_PARTIES',
1733                 'PERSON_INTEREST_ID', 'PARTY_ID',x_return_status);
1734 
1735    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1736      l_dup_exists := HZ_MERGE_DUP_CHECK.check_per_interest_dup(
1737                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1738                         x_return_status);
1739    END IF;
1740 
1741    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1742         do_per_interest_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1743                          x_return_status);
1744    END IF;
1745 
1746    x_to_id := l_to_id;
1747 EXCEPTION
1748   WHEN OTHERS THEN
1749     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1750     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1751     FND_MSG_PUB.ADD;
1752     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1753 END per_interest_merge;
1754 
1755 PROCEDURE citizenship_merge(
1756         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1757         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1758         x_to_id         IN OUT NOCOPY	NUMBER,
1759         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1760         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1761         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1762         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1763         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1764 	x_return_status OUT NOCOPY          VARCHAR2
1765 ) IS
1766 l_to_id 	NUMBER;
1767 l_dup_exists    VARCHAR2(20);
1768 
1769 BEGIN
1770    IF (x_to_id IS NULL) THEN
1771      l_to_id := FND_API.G_MISS_NUM;
1772    ELSE
1773      l_to_id := x_to_id;
1774    END IF;
1775 
1776    x_return_status := FND_API.G_RET_STS_SUCCESS;
1777 
1778    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1779                 p_to_fk_id, p_par_entity_name,
1780                 'HZ_MERGE_PKG.citizenship_merge',
1781                 'HZ_CITIZENSHIP','HZ_PARTIES',
1782                 'CITIZENSHIP_ID', 'PARTY_ID',x_return_status);
1783 
1784    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1785      l_dup_exists := HZ_MERGE_DUP_CHECK.check_citizenship_dup(
1786                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1787                         x_return_status);
1788    END IF;
1789 
1790    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1791         do_citizenship_transfer(p_from_id,l_to_id,p_from_fk_id, p_to_fk_id,
1792                            x_return_status);
1793    END IF;
1794 
1795    x_to_id := l_to_id;
1796 EXCEPTION
1797   WHEN OTHERS THEN
1798     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1799     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1800     FND_MSG_PUB.ADD;
1801     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1802 END citizenship_merge;
1803 
1804 PROCEDURE education_merge(
1805         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1806         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1807         x_to_id         IN OUT NOCOPY	NUMBER,
1808         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1809         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1810         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1811         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1812         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1813 	x_return_status OUT NOCOPY          VARCHAR2
1814 ) IS
1815 l_to_id 	NUMBER;
1816 l_dup_exists    VARCHAR2(20);
1817 
1818 BEGIN
1819    IF (x_to_id IS NULL) THEN
1820      l_to_id := FND_API.G_MISS_NUM;
1821    ELSE
1822      l_to_id := x_to_id;
1823    END IF;
1824 
1825    x_return_status := FND_API.G_RET_STS_SUCCESS;
1826 
1827    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1828                 p_to_fk_id, p_par_entity_name,
1829                 'HZ_MERGE_PKG.education_merge',
1830                 'HZ_EDUCATION','HZ_PARTIES',
1831                 'EDUCATION_ID', 'PARTY_ID',x_return_status);
1832 
1833    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1834      l_dup_exists := HZ_MERGE_DUP_CHECK.check_education_dup(
1835                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1836                         x_return_status);
1837    END IF;
1838 
1839    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1840        do_education_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1841                          x_return_status);
1842    END IF;
1843 
1844    x_to_id := l_to_id;
1845 EXCEPTION
1846   WHEN OTHERS THEN
1847     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1848     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1849     FND_MSG_PUB.ADD;
1850     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1851 END education_merge;
1852 
1853 PROCEDURE education_school_merge(
1854         p_entity_name   	IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1855         p_from_id       	IN      NUMBER:=FND_API.G_MISS_NUM,
1856         x_to_id         	IN  OUT NOCOPY	NUMBER,
1857         p_from_fk_id    	IN      NUMBER:=FND_API.G_MISS_NUM,
1858         p_to_fk_id      	IN      NUMBER:=FND_API.G_MISS_NUM,
1859         p_par_entity_name 	IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1860         p_batch_id		IN	NUMBER:=FND_API.G_MISS_NUM,
1861         p_batch_party_id 	IN      NUMBER:=FND_API.G_MISS_NUM,
1862 	x_return_status 	OUT NOCOPY      VARCHAR2
1863 ) IS
1864 l_to_id 	NUMBER;
1865 l_dup_exists    VARCHAR2(20);
1866 
1867 BEGIN
1868    IF (x_to_id IS NULL) THEN
1869      l_to_id := FND_API.G_MISS_NUM;
1870    ELSE
1871      l_to_id := x_to_id;
1872    END IF;
1873 
1874    x_return_status := FND_API.G_RET_STS_SUCCESS;
1875 
1876    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1877                 p_to_fk_id, p_par_entity_name,
1878                 'HZ_MERGE_PKG.education_school_merge',
1879                 'HZ_EDUCATION','HZ_PARTIES',
1880                 'EDUCATION_ID', 'SCHOOL_PARTY_ID',x_return_status);
1881 
1882    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1883      l_dup_exists := HZ_MERGE_DUP_CHECK.check_education_dup(
1884                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1885                         x_return_status);
1886    END IF;
1887 
1888    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1889         do_education_school_transfer(p_from_id,l_to_id,p_from_fk_id, p_to_fk_id,
1890                            x_return_status);
1891    END IF;
1892 
1893    x_to_id := l_to_id;
1894 EXCEPTION
1895   WHEN OTHERS THEN
1896     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1897     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1898     FND_MSG_PUB.ADD;
1899     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1900 END education_school_merge;
1901 
1902 PROCEDURE emp_history_merge(
1903         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1904         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
1905         x_to_id         IN OUT NOCOPY	NUMBER,
1906         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
1907         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
1908         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
1909         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
1910         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
1911 	x_return_status OUT NOCOPY          VARCHAR2
1912 ) IS
1913 l_to_id 	NUMBER;
1914 l_dup_exists    VARCHAR2(20);
1915 
1916 BEGIN
1917    IF (x_to_id IS NULL) THEN
1918      l_to_id := FND_API.G_MISS_NUM;
1919    ELSE
1920      l_to_id := x_to_id;
1921    END IF;
1922 
1923    x_return_status := FND_API.G_RET_STS_SUCCESS;
1924 
1925    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1926                 p_to_fk_id, p_par_entity_name,
1927                 'HZ_MERGE_PKG.emp_history_merge',
1928                 'HZ_EMPLOYMENT_HISTORY','HZ_PARTIES',
1929                 'EMPLOYMENT_HISTORY_ID', 'PARTY_ID',x_return_status);
1930 
1931    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1932      l_dup_exists := HZ_MERGE_DUP_CHECK.check_emp_history_dup(
1933                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1934                         x_return_status);
1935    END IF;
1936 
1937    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1938         do_emp_history_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1939                          x_return_status);
1940    END IF;
1941 
1942    x_to_id := l_to_id;
1943 EXCEPTION
1944   WHEN OTHERS THEN
1945     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1946     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1947     FND_MSG_PUB.ADD;
1948     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1949 END emp_history_merge;
1950 
1951 PROCEDURE emp_history_employed_merge(
1952         p_entity_name   	IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1953         p_from_id       	IN      NUMBER:=FND_API.G_MISS_NUM,
1954         x_to_id         	IN OUT NOCOPY	NUMBER,
1955         p_from_fk_id    	IN      NUMBER:=FND_API.G_MISS_NUM,
1956         p_to_fk_id      	IN      NUMBER:=FND_API.G_MISS_NUM,
1957         p_par_entity_name 	IN      VARCHAR2:=FND_API.G_MISS_CHAR,
1958         p_batch_id		IN	NUMBER:=FND_API.G_MISS_NUM,
1959         p_batch_party_id	IN      NUMBER:=FND_API.G_MISS_NUM,
1960 	x_return_status 	OUT    NOCOPY   VARCHAR2
1961 ) IS
1962 l_to_id 	NUMBER;
1963 l_dup_exists    VARCHAR2(20);
1964 
1965 BEGIN
1966    IF (x_to_id IS NULL) THEN
1967      l_to_id := FND_API.G_MISS_NUM;
1968    ELSE
1969      l_to_id := x_to_id;
1970    END IF;
1971 
1972    x_return_status := FND_API.G_RET_STS_SUCCESS;
1973 
1974    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
1975                 p_to_fk_id, p_par_entity_name,
1976                 'HZ_MERGE_PKG.emp_history_employed_merge',
1977                 'HZ_EMPLOYMENT_HISTORY','HZ_PARTIES',
1978                 'EMPLOYMENT_HISTORY_ID','EMPLOYED_BY_PARTY_ID',x_return_status);
1979 
1980    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
1981      l_dup_exists := HZ_MERGE_DUP_CHECK.check_emp_history_dup(
1982                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1983                         x_return_status);
1984    END IF;
1985 
1986    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
1987         do_employed_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
1988                          x_return_status);
1989    END IF;
1990 
1991    x_to_id := l_to_id;
1992 EXCEPTION
1993   WHEN OTHERS THEN
1994     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1995     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1996     FND_MSG_PUB.ADD;
1997     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1998 END emp_history_employed_merge;
1999 
2000 PROCEDURE work_class_merge(
2001         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2002         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2003         x_to_id         IN OUT NOCOPY	NUMBER,
2004         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2005         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2006         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2007         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
2008         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2009 	x_return_status OUT NOCOPY          VARCHAR2
2010 ) IS
2011 l_to_id 	NUMBER;
2012 l_dup_exists    VARCHAR2(20);
2013 
2014 BEGIN
2015    IF (x_to_id IS NULL) THEN
2016      l_to_id := FND_API.G_MISS_NUM;
2017    ELSE
2018      l_to_id := x_to_id;
2019    END IF;
2020 
2021    x_return_status := FND_API.G_RET_STS_SUCCESS;
2022 
2023    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2024                 p_to_fk_id, p_par_entity_name,
2025                 'HZ_MERGE_PKG.work_class_merge',
2026                 'HZ_WORK_CLASS', 'HZ_EMPLOYMENT_HISTORY',
2027                 'WORK_CLASS_ID', 'EMPLOYMENT_HISTORY_ID', x_return_status);
2028 
2029    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2030      l_dup_exists := HZ_MERGE_DUP_CHECK.check_work_class_dup(
2031                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2032                         x_return_status);
2033    END IF;
2034 
2035    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2036         do_work_class_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2037                          x_return_status);
2038    END IF;
2039 
2040    x_to_id := l_to_id;
2041 EXCEPTION
2042   WHEN OTHERS THEN
2043     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2044     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2045     FND_MSG_PUB.ADD;
2046     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2047 END work_class_merge;
2048 
2049 PROCEDURE code_assignment_merge(
2050         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2051         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2052         x_to_id         IN OUT NOCOPY  NUMBER,
2053         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2054         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2055         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2056         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2057         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2058         x_return_status OUT NOCOPY          VARCHAR2
2059 ) IS
2060 l_to_id         NUMBER;
2061 l_dup_exists    VARCHAR2(20);
2062 
2063 BEGIN
2064    IF (x_to_id IS NULL) THEN
2065      l_to_id := FND_API.G_MISS_NUM;
2066    ELSE
2067      l_to_id := x_to_id;
2068    END IF;
2069 
2070    x_return_status := FND_API.G_RET_STS_SUCCESS;
2071 
2072    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2073                 p_to_fk_id, p_par_entity_name,
2074                 'HZ_MERGE_PKG.code_assignment_merge',
2075                 'HZ_CODE_ASSIGNMENTS','HZ_PARTIES',
2076                 'CODE_ASSIGNMENT_ID', 'PARTY_ID',x_return_status);
2077 
2078    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2079      l_dup_exists := HZ_MERGE_DUP_CHECK.check_code_assignment_dup(
2080                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2081                         'HZ_PARTIES', x_return_status);
2082    END IF;
2083 
2084    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2085         do_code_assignment_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2086                          x_return_status);
2087    END IF;
2088 
2089    x_to_id := l_to_id;
2090 EXCEPTION
2091   WHEN OTHERS THEN
2092     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2093     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2094     FND_MSG_PUB.ADD;
2095     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2096 END code_assignment_merge;
2097 
2098 PROCEDURE code_assignment_merge2(
2099         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2100         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2101         x_to_id         IN OUT NOCOPY  NUMBER,
2102         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2103         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2104         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2105         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2106         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2107         x_return_status OUT NOCOPY          VARCHAR2
2108 ) IS
2109 l_to_id         NUMBER;
2110 l_dup_exists    VARCHAR2(20);
2111 
2112 BEGIN
2113    IF (x_to_id IS NULL) THEN
2114      l_to_id := FND_API.G_MISS_NUM;
2115    ELSE
2116      l_to_id := x_to_id;
2117    END IF;
2118 
2119    x_return_status := FND_API.G_RET_STS_SUCCESS;
2120 
2121    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2122                 p_to_fk_id, p_par_entity_name,
2123                 'HZ_MERGE_PKG.code_assignment_merge',
2124                 'HZ_CODE_ASSIGNMENTS','HZ_PARTY_SITES',
2125                 'CODE_ASSIGNMENT_ID', 'PARTY_SITE_ID',x_return_status);
2126 
2127    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2128      l_dup_exists := HZ_MERGE_DUP_CHECK.check_code_assignment_dup(
2129                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2130                         'HZ_PARTY_SITES', x_return_status);
2131    END IF;
2132 
2133    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2134         do_code_assignment_transfer2(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2135                          x_return_status);
2136    END IF;
2137 
2138    x_to_id := l_to_id;
2139 EXCEPTION
2140   WHEN OTHERS THEN
2141     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2142     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2143     FND_MSG_PUB.ADD;
2144     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2145 END code_assignment_merge2;
2146 
2147 PROCEDURE org_contact_role_merge(
2148         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2149         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2150         x_to_id         IN OUT NOCOPY	NUMBER,
2151         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2152         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2153         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2154         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
2155         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2156 	x_return_status OUT NOCOPY          VARCHAR2
2157 ) IS
2158 l_to_id 	NUMBER;
2159 l_dup_exists    VARCHAR2(20);
2160 
2161 BEGIN
2162    IF (x_to_id IS NULL) THEN
2163      l_to_id := FND_API.G_MISS_NUM;
2164    ELSE
2165      l_to_id := x_to_id;
2166    END IF;
2167 
2168    x_return_status := FND_API.G_RET_STS_SUCCESS;
2169 
2170    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2171                 p_to_fk_id, p_par_entity_name,
2172                 'HZ_MERGE_PKG.org_contact_role_merge',
2173                 'HZ_ORG_CONTACT_ROLES','HZ_ORG_CONTACTS',
2174                 'ORG_CONTACT_ROLE_ID', 'ORG_CONTACT_ID',x_return_status);
2175 
2176    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2177      l_dup_exists := HZ_MERGE_DUP_CHECK.check_org_contact_role_dup(
2178                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2179                         x_return_status);
2180    END IF;
2181 
2182    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2183         do_org_contact_role_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2184                          x_return_status);
2185    END IF;
2186 
2187    x_to_id := l_to_id;
2188 EXCEPTION
2189   WHEN OTHERS THEN
2190     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2191     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2192     FND_MSG_PUB.ADD;
2193     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2194 END org_contact_role_merge;
2195 
2196 PROCEDURE financial_number_merge(
2197         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2198         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2199         x_to_id         IN OUT NOCOPY  NUMBER,
2200         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2201         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2202         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2203         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2204         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2205         x_return_status OUT NOCOPY          VARCHAR2
2206 ) IS
2207 l_to_id         NUMBER;
2208 l_dup_exists    VARCHAR2(20);
2209 
2210 BEGIN
2211    IF (x_to_id IS NULL) THEN
2212      l_to_id := FND_API.G_MISS_NUM;
2213    ELSE
2214      l_to_id := x_to_id;
2215    END IF;
2216 
2217    x_return_status := FND_API.G_RET_STS_SUCCESS;
2218 
2219    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2220                 p_to_fk_id, p_par_entity_name,
2221                 'HZ_MERGE_PKG.financial_number_merge',
2222                 'HZ_FINANCIAL_NUMBERS','HZ_FINANCIAL_REPORTS',
2223                 'FINANCIAL_NUMBER_ID', 'FINANCIAL_REPORT_ID',x_return_status);
2224 
2225    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2226      l_dup_exists := HZ_MERGE_DUP_CHECK.check_financial_number_dup(
2227                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2228                         x_return_status);
2229    END IF;
2230 
2231    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2232         do_financial_number_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2233                          x_return_status);
2234    END IF;
2235 
2236    x_to_id := l_to_id;
2237 EXCEPTION
2238   WHEN OTHERS THEN
2239     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2240     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2241     FND_MSG_PUB.ADD;
2242     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2243 END financial_number_merge;
2244 
2245 PROCEDURE per_languages_merge(
2246         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2247         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2248         x_to_id         IN OUT NOCOPY	NUMBER,
2249         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2250         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2251         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2252         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
2253         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2254 	x_return_status OUT NOCOPY          VARCHAR2
2255 ) IS
2256 l_to_id 	NUMBER;
2257 l_dup_exists    VARCHAR2(20);
2258 
2259 BEGIN
2260    IF (x_to_id IS NULL) THEN
2261      l_to_id := FND_API.G_MISS_NUM;
2262    ELSE
2263      l_to_id := x_to_id;
2264    END IF;
2265 
2266    x_return_status := FND_API.G_RET_STS_SUCCESS;
2267 
2268    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2269                 p_to_fk_id, p_par_entity_name,
2270                 'HZ_MERGE_PKG.per_languages_merge',
2271                 'HZ_PERSON_LANGUAGE','HZ_PARTIES',
2272                 'LANGUAGE_USE_REFERENCE_ID', 'PARTY_ID',x_return_status);
2273 
2274    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2275      l_dup_exists := HZ_MERGE_DUP_CHECK.check_languages_dup(
2276                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2277                         x_return_status);
2278    END IF;
2279 
2280    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2281         do_per_languages_transfer(p_from_id, l_to_id, p_from_fk_id, p_to_fk_id,
2282                          x_return_status);
2283    END IF;
2284 
2285    x_to_id := l_to_id;
2286 EXCEPTION
2287   WHEN OTHERS THEN
2288     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2289     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2290     FND_MSG_PUB.ADD;
2291     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2292 END per_languages_merge;
2293 
2294 PROCEDURE party_site_use_merge(
2295         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2296         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2297         x_to_id         IN OUT NOCOPY	NUMBER,
2298         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2299         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2300         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2301         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
2302         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2303 	x_return_status OUT NOCOPY          VARCHAR2
2304 ) IS
2305 l_to_id 	NUMBER;
2306 l_dup_exists    VARCHAR2(20);
2307 
2308 BEGIN
2309    IF (x_to_id IS NULL) THEN
2310      l_to_id := FND_API.G_MISS_NUM;
2311    ELSE
2312      l_to_id := x_to_id;
2313    END IF;
2314 
2315    x_return_status := FND_API.G_RET_STS_SUCCESS;
2316 
2317    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2318                 p_to_fk_id, p_par_entity_name,
2319                 'HZ_MERGE_PKG.party_site_use_merge',
2320                 'HZ_PARTY_SITE_USES','HZ_PARTY_SITES',
2321                 'PARTY_SITE_USE_ID', 'PARTY_SITE_ID',x_return_status);
2322 
2323    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2324      l_dup_exists := HZ_MERGE_DUP_CHECK.check_party_site_use_dup(
2325                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2326                         x_return_status);
2327    END IF;
2328 
2329    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2330         do_party_site_use_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2331                          x_return_status);
2332    END IF;
2333 
2334    x_to_id := l_to_id;
2335 EXCEPTION
2336   WHEN OTHERS THEN
2337     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2338     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2339     FND_MSG_PUB.ADD;
2340     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2341 END party_site_use_merge;
2342 
2343 PROCEDURE contact_point_merge2(
2344         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2345         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2346         x_to_id         IN OUT NOCOPY	NUMBER,
2347         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2348         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2349         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2350         p_batch_id	IN	NUMBER:=FND_API.G_MISS_NUM,
2351         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2352 	x_return_status OUT NOCOPY          VARCHAR2
2353 ) IS
2354 l_to_id 	NUMBER;
2355 l_dup_exists    VARCHAR2(20);
2356 l_dummy_id NUMBER;
2357 
2358 BEGIN
2359    IF (x_to_id IS NULL) THEN
2360      l_to_id := FND_API.G_MISS_NUM;
2361    ELSE
2362      l_to_id := x_to_id;
2363    END IF;
2364 
2365    x_return_status := FND_API.G_RET_STS_SUCCESS;
2366 
2367 
2368    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2369                 p_to_fk_id, p_par_entity_name,
2370                 'HZ_MERGE_PKG.contact_point_merge2',
2371                 'HZ_CONTACT_POINTS','HZ_PARTY_SITES',
2372                 'CONTACT_POINT_ID', 'PARTY_SITE_ID',x_return_status);
2373 
2374    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2375      l_dup_exists := HZ_MERGE_DUP_CHECK.check_contact_point_dup(
2376                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2377                         'HZ_PARTY_SITES', x_return_status);
2378    END IF;
2379 
2380    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2381         do_contact_point_transfer2(p_from_id, l_to_id, p_from_fk_id, p_to_fk_id,
2382                          x_return_status);
2383    END IF;
2384 
2385    IF (l_to_id IS NULL OR l_to_id = FND_API.G_MISS_NUM OR
2386            l_to_id = p_from_id) THEN
2387      FOR CPT IN (
2388       SELECT CONTACT_POINT_ID FROM HZ_STAGED_CONTACT_POINTS
2389       WHERE CONTACT_POINT_ID=p_from_id) LOOP
2390 
2391         HZ_DQM_SYNC.stage_contact_point_merge(
2392           'HZ_STAGED_CONTACT_POINTS',
2393           p_from_id,l_dummy_id,p_from_id,p_from_id,
2394           'HZ_CONTACT_POINTS',
2395           p_batch_id,p_batch_party_id,x_return_status);
2396      END LOOP;
2397    END IF;
2398 
2399    x_to_id := l_to_id;
2400 EXCEPTION
2401   WHEN OTHERS THEN
2402     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2403     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2404     FND_MSG_PUB.ADD;
2405     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2406 END contact_point_merge2;
2407 
2408 /*===========================================================================+
2409  | PROCEDURE                                                                 |
2410  |              contact_preference_merge                                     |
2411  |                                                                           |
2412  | DESCRIPTION                                                               |
2413  |                                                                           |
2414  | SCOPE - PRIVATE                                                           |
2415  |                                                                           |
2416  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
2417  |                                                                           |
2418  | ARGUMENTS  : IN:                                                          |
2419  |                p_entity_name                                              |
2420  |                p_from_id                                                  |
2421  |                p_from_fk_id                                               |
2422  |                p_to_fk_id                                                 |
2423  |                p_merge_operation                                          |
2424  |                p_par_entity_name                                          |
2425  |              OUT:                                                         |
2426  |                x_return_status                                            |
2427  |          IN/ OUT:                                                         |
2428  |                x_to_id                                                    |
2429  | RETURNS    : NONE                                                         |
2430  |                                                                           |
2431  | NOTES                                                                     |
2432  |                                                                           |
2433  | MODIFICATION HISTORY                                                      |
2434  |    Kate Shan          21-Aug-00  Created                                  |
2435  |                                                                           |
2436  +===========================================================================*/
2437 PROCEDURE contact_preference_merge(
2438         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2439         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2440         x_to_id         IN OUT NOCOPY  NUMBER,
2441         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2442         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2443         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2444         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2445         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2446         x_return_status OUT NOCOPY          VARCHAR2
2447 ) IS
2448 l_to_id         NUMBER;
2449 l_dup_exists    VARCHAR2(20);
2450 
2451 BEGIN
2452    IF (x_to_id IS NULL) THEN
2453      l_to_id := FND_API.G_MISS_NUM;
2454    ELSE
2455      l_to_id := x_to_id;
2456    END IF;
2457 
2458    x_return_status := FND_API.G_RET_STS_SUCCESS;
2459 
2460    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2461                 p_to_fk_id, p_par_entity_name,
2462                 'HZ_MERGE_PKG.contact_preference_merge',
2463                 'HZ_CONTACT_PREFERENCES','HZ_PARTIES',
2464                 'CONTACT_PREFERENCE_ID', 'PARTY_ID',x_return_status);
2465 
2466    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2467      l_dup_exists := HZ_MERGE_DUP_CHECK.check_contact_preference_dup(
2468                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2469                         'HZ_PARTIES',x_return_status);
2470    END IF;
2471 
2472    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2473        do_contact_pref_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2474                          x_return_status);
2475    END IF;
2476 
2477    x_to_id := l_to_id;
2478 EXCEPTION
2479   WHEN OTHERS THEN
2480     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2481     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2482     FND_MSG_PUB.ADD;
2483     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2484 END contact_preference_merge;
2485 
2486 /*===========================================================================+
2487  | PROCEDURE                                                                 |
2488  |              contact_preference_merge2                                    |
2489  |                                                                           |
2490  | DESCRIPTION                                                               |
2491  |                                                                           |
2492  | SCOPE - PRIVATE                                                           |
2493  |                                                                           |
2494  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
2495  |                                                                           |
2496  | ARGUMENTS  : IN:                                                          |
2497  |                p_entity_name                                              |
2498  |                p_from_id                                                  |
2499  |                p_from_fk_id                                               |
2500  |                p_to_fk_id                                                 |
2501  |                p_merge_operation                                          |
2502  |                p_par_entity_name                                          |
2503  |              OUT:                                                         |
2504  |                x_return_status                                            |
2505  |          IN/ OUT:                                                         |
2506  |                x_to_id                                                    |
2507  | RETURNS    : NONE                                                         |
2508  |                                                                           |
2509  | NOTES                                                                     |
2510  |                                                                           |
2511  | MODIFICATION HISTORY                                                      |
2512  |    Kate               21-Aug-00  Created                                  |
2513  |                                                                           |
2514  +===========================================================================*/
2515 PROCEDURE contact_preference_merge2(
2516         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2517         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2518         x_to_id         IN OUT NOCOPY  NUMBER,
2519         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2520         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2521         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2522         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2523         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2524         x_return_status OUT NOCOPY          VARCHAR2
2525 ) IS
2526 l_to_id         NUMBER;
2527 l_dup_exists    VARCHAR2(20);
2528 
2529 BEGIN
2530    IF (x_to_id IS NULL) THEN
2531      l_to_id := FND_API.G_MISS_NUM;
2532    ELSE
2533      l_to_id := x_to_id;
2534    END IF;
2535 
2536    x_return_status := FND_API.G_RET_STS_SUCCESS;
2537 
2538    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2539                 p_to_fk_id, p_par_entity_name,
2540                 'HZ_MERGE_PKG.contact_preference_merge2',
2541                 'HZ_CONTACT_PREFERENCES','HZ_PARTY_SITES',
2542                 'CONTACT_PREFERENCE_ID', 'PARTY_SITE_ID',x_return_status);
2543 
2544    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2545      l_dup_exists := HZ_MERGE_DUP_CHECK.check_contact_preference_dup(
2546                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2547                         'HZ_PARTY_SITES',x_return_status);
2548    END IF;
2549 
2550    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2551        do_contact_pref_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2552                          x_return_status);
2553    END IF;
2554 
2555    x_to_id := l_to_id;
2556 EXCEPTION
2557   WHEN OTHERS THEN
2558     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2559     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2560     FND_MSG_PUB.ADD;
2561     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2562 END contact_preference_merge2;
2563 
2564 
2565 /*===========================================================================+
2566  | PROCEDURE                                                                 |
2567  |              contact_preference_merge3                                    |
2568  |                                                                           |
2569  | DESCRIPTION                                                               |
2570  |                                                                           |
2571  | SCOPE - PRIVATE                                                           |
2572  |                                                                           |
2573  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
2574  |                                                                           |
2575  | ARGUMENTS  : IN:                                                          |
2576  |                p_entity_name                                              |
2577  |                p_from_id                                                  |
2578  |                p_from_fk_id                                               |
2579  |                p_to_fk_id                                                 |
2580  |                p_merge_operation                                          |
2581  |                p_par_entity_name                                          |
2582  |              OUT:                                                         |
2583  |                x_return_status                                            |
2584  |          IN/ OUT:                                                         |
2585  |                x_to_id                                                    |
2586  | RETURNS    : NONE                                                         |
2587  |                                                                           |
2588  | NOTES                                                                     |
2589  |                                                                           |
2590  | MODIFICATION HISTORY                                                      |
2591  |    Kate Shan          21-Aug-00  Created                                  |
2592  |                                                                           |
2593  +===========================================================================*/
2594 PROCEDURE contact_preference_merge3(
2595         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2596         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2597         x_to_id         IN OUT NOCOPY  NUMBER,
2598         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2599         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2600         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2601         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2602         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2603         x_return_status OUT NOCOPY          VARCHAR2
2604 ) IS
2605 l_to_id         NUMBER;
2606 l_dup_exists    VARCHAR2(20);
2607 
2608 BEGIN
2609    IF (x_to_id IS NULL) THEN
2610      l_to_id := FND_API.G_MISS_NUM;
2611    ELSE
2612      l_to_id := x_to_id;
2613    END IF;
2614 
2615    x_return_status := FND_API.G_RET_STS_SUCCESS;
2616 
2617    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2618                 p_to_fk_id, p_par_entity_name,
2619                 'HZ_MERGE_PKG.contact_preference_merge3',
2620                 'HZ_CONTACT_PREFERENCES','HZ_CONTACT_POINTS',
2621                 'CONTACT_PREFERENCE_ID', 'CONTACT_POINT_ID',x_return_status);
2622 
2623    IF (x_return_status = FND_API.G_RET_STS_SUCCESS AND l_to_id = FND_API.G_MISS_NUM) THEN
2624      l_dup_exists := HZ_MERGE_DUP_CHECK.check_contact_preference_dup(
2625                         p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2626                         'HZ_CONTACT_POINTS',x_return_status);
2627    END IF;
2628 
2629    IF (x_return_status =FND_API.G_RET_STS_SUCCESS) THEN
2630        do_contact_pref_transfer(p_from_id,l_to_id, p_from_fk_id, p_to_fk_id,
2631                          x_return_status);
2632    END IF;
2633 
2634    x_to_id := l_to_id;
2635 EXCEPTION
2636   WHEN OTHERS THEN
2637     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2638     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2639     FND_MSG_PUB.ADD;
2640     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2641 END contact_preference_merge3;
2642 
2643 
2644 PROCEDURE displayed_duns_merge(
2645         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2646         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2647         x_to_id         IN OUT NOCOPY  NUMBER,
2648         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2649         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2650         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2651         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2652         p_batch_party_id IN     NUMBER:=FND_API.G_MISS_NUM,
2653         x_return_status   OUT NOCOPY  VARCHAR2
2654 ) IS
2655 
2656 l_to_id         NUMBER;
2657 
2658 BEGIN
2659    IF (x_to_id IS NULL) THEN
2660      l_to_id := FND_API.G_MISS_NUM;
2661    ELSE
2662      l_to_id := x_to_id;
2663    END IF;
2664 
2665    x_return_status := FND_API.G_RET_STS_SUCCESS;
2666 
2667    check_params(p_entity_name, p_from_id, l_to_id, p_from_fk_id,
2668                 p_to_fk_id, p_par_entity_name,
2669                 'HZ_MERGE_PKG.displayed_duns_merge',
2670                 'HZ_ORGANIZATION_PROFILES','HZ_PARTIES',
2671                 'ORGANIZATION_PROFILE_ID', 'PARTY_ID',x_return_status);
2672 
2673    do_displayed_duns_merge(p_from_id, l_to_id, p_from_fk_id, p_to_fk_id,
2674                          x_return_status);
2675 EXCEPTION
2676   WHEN OTHERS THEN
2677     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2678     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2679     FND_MSG_PUB.ADD;
2680     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2681 END displayed_duns_merge;
2682 
2683 
2684 PROCEDURE check_params(
2685         p_entity_name   IN      VARCHAR2:=FND_API.G_MISS_CHAR,
2686         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2687         p_to_id         IN	NUMBER:=FND_API.G_MISS_NUM,
2688         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2689         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2690         p_par_entity_name IN    VARCHAR2:=FND_API.G_MISS_CHAR,
2691 	p_proc_name	  IN	VARCHAR2,
2692 	p_exp_ent_name	IN	VARCHAR2:=FND_API.G_MISS_CHAR,
2693         p_exp_par_ent_name IN   VARCHAR2:=FND_API.G_MISS_CHAR,
2694         p_pk_column	IN	VARCHAR2:=FND_API.G_MISS_CHAR,
2695 	p_par_pk_column	IN	VARCHAR2:=FND_API.G_MISS_CHAR,
2696 	x_return_status IN OUT NOCOPY          VARCHAR2
2697 ) IS
2698 
2699 BEGIN
2700    IF (p_entity_name <> p_exp_ent_name OR
2701        p_par_entity_name <> p_exp_par_ent_name) THEN
2702      FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MERGE_ENTITIES');
2703      FND_MESSAGE.SET_TOKEN('ENTITY' ,p_entity_name);
2704      FND_MESSAGE.SET_TOKEN('PENTITY' ,p_par_entity_name);
2705      FND_MESSAGE.SET_TOKEN('MPROC' ,p_proc_name);
2706      FND_MSG_PUB.ADD;
2707      x_return_status := FND_API.G_RET_STS_ERROR;
2708    END IF;
2709 
2710    IF (p_from_id = FND_API.G_MISS_NUM) THEN
2711      FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MERGE_FROM_REC');
2712      FND_MESSAGE.SET_TOKEN('MPROC' ,p_proc_name);
2713      FND_MESSAGE.SET_TOKEN('ENTITY',p_entity_name);
2714      FND_MESSAGE.SET_TOKEN('PKCOL',p_pk_column);
2715      FND_MESSAGE.SET_TOKEN('PKVALUE',p_to_id);
2716      FND_MSG_PUB.ADD;
2717      x_return_status := FND_API.G_RET_STS_ERROR;
2718    END IF;
2719 
2720    IF (p_exp_par_ent_name <> FND_API.G_MISS_CHAR AND
2721        p_to_fk_id = FND_API.G_MISS_NUM ) THEN
2722      FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MERGE_FROM_PAR_REC');
2723      FND_MESSAGE.SET_TOKEN('MPROC' ,p_proc_name);
2724      FND_MESSAGE.SET_TOKEN('ENTITY',p_par_entity_name);
2725      FND_MESSAGE.SET_TOKEN('PKCOL',p_pk_column);
2726      FND_MESSAGE.SET_TOKEN('PKVALUE',p_to_id);
2727      FND_MSG_PUB.ADD;
2728      x_return_status := FND_API.G_RET_STS_ERROR;
2729    END IF;
2730 EXCEPTION
2731   WHEN OTHERS THEN
2732     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2733     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2734     FND_MSG_PUB.ADD;
2735     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2736 END check_params;
2737 
2738 /***** Private Procedure *****/
2739 
2740 PROCEDURE do_cust_account_transfer(
2741         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2742         x_to_id         IN OUT NOCOPY  NUMBER,
2743         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2744         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2745 	x_return_status IN OUT NOCOPY          VARCHAR2
2746 ) IS
2747 l_msg_data                     VARCHAR2(2000);
2748 l_msg_count                    NUMBER := 0;
2749 BEGIN
2750 
2751   IF (x_to_id <> FND_API.G_MISS_NUM AND
2752       x_to_id <> p_from_id) THEN
2753     UPDATE HZ_CUST_ACCOUNTS
2754     SET
2755       STATUS = 'M',
2756       last_update_date = hz_utility_pub.last_update_date,
2757       last_updated_by = hz_utility_pub.user_id,
2758       last_update_login = hz_utility_pub.last_update_login,
2759       request_id =  hz_utility_pub.request_id,
2760       program_application_id = hz_utility_pub.program_application_id,
2761       program_id = hz_utility_pub.program_id,
2762       program_update_date = sysdate
2763     WHERE cust_account_id = p_from_id;
2764        HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
2765                     p_init_msg_list => FND_API.G_FALSE,
2766                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
2767                     p_old_owner_table_id   => p_from_id,
2768 	            p_new_owner_table_id   => x_to_id,
2769                     p_owner_table_name  =>'HZ_CUST_ACCOUNTS',
2770                     p_orig_system => null,
2771                     p_orig_system_reference => null,
2772                     p_reason_code => 'MERGED',
2773                     x_return_status => x_return_status,
2774                     x_msg_count =>l_msg_count,
2775                     x_msg_data  =>l_msg_data);
2776       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2777 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2778 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
2779 	FND_MSG_PUB.ADD;
2780 	x_return_status := FND_API.G_RET_STS_ERROR;
2781 	RETURN;
2782       END IF;
2783   ELSE
2784     -- Update and set party_id = p_to_fk_id where pk = from_id
2785     UPDATE HZ_CUST_ACCOUNTS
2786     SET
2787       party_id = p_to_fk_id,
2788       last_update_date = hz_utility_pub.last_update_date,
2789       last_updated_by = hz_utility_pub.user_id,
2790       last_update_login = hz_utility_pub.last_update_login,
2791       request_id =  hz_utility_pub.request_id,
2792       program_application_id = hz_utility_pub.program_application_id,
2793       program_id = hz_utility_pub.program_id,
2794       program_update_date = sysdate
2795     WHERE cust_account_id = p_from_id;
2796   END IF;
2797 
2798 EXCEPTION
2799   WHEN OTHERS THEN
2800     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2801     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2802     FND_MSG_PUB.ADD;
2803     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2804 END do_cust_account_transfer;
2805 
2806 PROCEDURE do_cust_account_role_transfer(
2807         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2808 	x_to_id		IN OUT NOCOPY	NUMBER,
2809         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2810         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2811 	x_return_status IN OUT NOCOPY          VARCHAR2
2812 ) IS
2813 
2814 l_msg_data                     VARCHAR2(2000);
2815 l_msg_count                    NUMBER := 0;
2816 
2817 --Start of Bug No : 3373079
2818 l_g_miss_num NUMBER;
2819 CURSOR c_from_acct_role_det IS
2820 SELECT cust_account_id,cust_acct_site_id
2821 FROM   HZ_CUST_ACCOUNT_ROLES
2822 WHERE  cust_account_role_id = p_from_id
2823 --AND    party_id = p_from_fk_id
2824 AND    NVL(STATUS,'A') = 'A';
2825 
2826 CURSOR c_to_acct_role_det(p_acct_id NUMBER,p_acct_site_id NUMBER) IS
2827 SELECT count(1)
2828 FROM   HZ_CUST_ACCOUNT_ROLES
2829 WHERE  party_id = p_to_fk_id
2830 AND    cust_account_id = p_acct_id
2831 AND    NVL(cust_acct_site_id,l_g_miss_num) = NVL(p_acct_site_id,l_g_miss_num)
2832 AND    NVL(STATUS,'A') = 'A';
2833 
2834 l_cust_account_id    NUMBER(15);
2835 l_cust_acct_site_id  NUMBER(15);
2836 l_status             VARCHAR2(1);
2837 l_count              NUMBER;
2838 --End of Bug No : 3373079
2839 BEGIN
2840   l_g_miss_num := FND_API.G_MISS_NUM;
2841 
2842   IF (x_to_id <> FND_API.G_MISS_NUM AND
2843       x_to_id <> p_from_id) THEN
2844     UPDATE HZ_CUST_ACCOUNT_ROLES
2845     SET
2846       STATUS = 'M',
2847       last_update_date = hz_utility_pub.last_update_date,
2848       last_updated_by = hz_utility_pub.user_id,
2849       last_update_login = hz_utility_pub.last_update_login,
2850       request_id =  hz_utility_pub.request_id,
2851       program_application_id = hz_utility_pub.program_application_id,
2852       program_id = hz_utility_pub.program_id,
2853       program_update_date = sysdate
2854     WHERE cust_account_role_id = p_from_id;
2855 
2856       HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
2857                     p_init_msg_list => FND_API.G_FALSE,
2858                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
2859                     p_old_owner_table_id   => p_from_id,
2860 	            p_new_owner_table_id   => x_to_id,
2861                     p_owner_table_name  =>'HZ_CUST_ACCOUNT_ROLES',
2862                     p_orig_system => null,
2863                     p_orig_system_reference => null,
2864                     p_reason_code => 'MERGED',
2865                     x_return_status => x_return_status,
2866                     x_msg_count =>l_msg_count,
2867                     x_msg_data  =>l_msg_data);
2868      IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2869 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2870 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
2871 	FND_MSG_PUB.ADD;
2872 	x_return_status := FND_API.G_RET_STS_ERROR;
2873 	RETURN;
2874      END IF;
2875   ELSE
2876    --Start of Bug No : 3373079. Duplicate account roles should not be created through the party merge.
2877    --If the account roles are duplicate, inactivate the duplicate account role.
2878     l_status := 'A';
2879     IF(p_from_fk_id <> p_to_fk_id) THEN
2880      --Get the from role account id and site id
2881       OPEN  c_from_acct_role_det;
2882       FETCH c_from_acct_role_det INTO l_cust_account_id,l_cust_acct_site_id;
2883       CLOSE c_from_acct_role_det;
2884       IF(l_cust_account_id IS NOT NULL) THEN
2885        --Set the status of duplicate account role to 'I'
2886        OPEN c_to_acct_role_det(l_cust_account_id,l_cust_acct_site_id);
2887        FETCH c_to_acct_role_det INTO l_count;
2888        CLOSE c_to_acct_role_det;
2889        IF(l_count >0)THEN
2890          l_status :='I';
2891        END IF;
2892       END IF;
2893     END IF;
2894    --End of Bug No : 3373079
2895     -- Update and set party_id = p_to_fk_id where pk = from_id
2896     UPDATE HZ_CUST_ACCOUNT_ROLES
2897     SET
2898       party_id = p_to_fk_id,
2899       status   = l_status,
2900       last_update_date = hz_utility_pub.last_update_date,
2901       last_updated_by = hz_utility_pub.user_id,
2902       last_update_login = hz_utility_pub.last_update_login,
2903       request_id =  hz_utility_pub.request_id,
2904       program_application_id = hz_utility_pub.program_application_id,
2905       program_id = hz_utility_pub.program_id,
2906       program_update_date = sysdate
2907     WHERE cust_account_role_id = p_from_id;
2908 
2909   END IF;
2910 
2911 EXCEPTION
2912   WHEN OTHERS THEN
2913     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2914     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2915     FND_MSG_PUB.ADD;
2916     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2917 END do_cust_account_role_transfer;
2918 
2919 PROCEDURE do_fin_profile_transfer(
2920         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2921         x_to_id         IN OUT NOCOPY  NUMBER,
2922         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2923         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2924 	x_return_status IN OUT NOCOPY          VARCHAR2
2925 ) IS
2926 
2927 BEGIN
2928 
2929   IF (x_to_id <> FND_API.G_MISS_NUM AND
2930       x_to_id <> p_from_id) THEN
2931     UPDATE HZ_FINANCIAL_PROFILE
2932     SET
2933       STATUS = 'M',
2934       last_update_date = hz_utility_pub.last_update_date,
2935       last_updated_by = hz_utility_pub.user_id,
2936       last_update_login = hz_utility_pub.last_update_login,
2937       request_id =  hz_utility_pub.request_id,
2938       program_application_id = hz_utility_pub.program_application_id,
2939       program_id = hz_utility_pub.program_id,
2940       program_update_date = sysdate
2941     WHERE financial_profile_id = p_from_id;
2942   ELSE
2943     -- Update and set party_id = p_to_fk_id where pk = from_id
2944     UPDATE HZ_FINANCIAL_PROFILE
2945     SET
2946       party_id = p_to_fk_id,
2947       last_update_date = hz_utility_pub.last_update_date,
2948       last_updated_by = hz_utility_pub.user_id,
2949       last_update_login = hz_utility_pub.last_update_login,
2950       request_id =  hz_utility_pub.request_id,
2951       program_application_id = hz_utility_pub.program_application_id,
2952       program_id = hz_utility_pub.program_id,
2953       program_update_date = sysdate
2954     WHERE financial_profile_id = p_from_id;
2955 
2956   END IF;
2957 
2958 EXCEPTION
2959   WHEN OTHERS THEN
2960     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
2961     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2962     FND_MSG_PUB.ADD;
2963     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2964 END do_fin_profile_transfer;
2965 
2966 PROCEDURE do_contact_point_transfer(
2967         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
2968         x_to_id         IN OUT NOCOPY  NUMBER,
2969         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
2970         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
2971 	x_return_status IN OUT NOCOPY          VARCHAR2
2972 ) IS
2973 
2974 l_exists VARCHAR2(10);
2975 l_primary_flag VARCHAR2(1):='N';
2976 l_msg_data                     VARCHAR2(2000);
2977 l_msg_count                    NUMBER := 0;
2978 
2979 ---BugNo:1695595.Added local variables and cursors----
2980 
2981 l_contact_point_type	 VARCHAR2(30);
2982 l_fp_primary_flag	 VARCHAR2(1);
2983 l_pri_purpose_flag       VARCHAR2(1) := 'N';
2984 l_fp_pri_pur_flag        VARCHAR2(1);
2985 l_url			 VARCHAR2(2000);
2986 l_email_address		 VARCHAR2(2000);
2987 l_contact_point_purpose	 VARCHAR2(30);
2988 l_phone_line_type	 VARCHAR2(30);
2989 l_phone_country_code	 VARCHAR2(10);
2990 l_phone_area_code	 VARCHAR2(10);
2991 l_phone_number		 VARCHAR2(40);
2992 l_phone_extension	 VARCHAR2(20);
2993 
2994 
2995 
2996 CURSOR c_fp_cpt_details IS
2997 SELECT contact_point_type,primary_flag, url, email_address,
2998        contact_point_purpose,phone_line_type, phone_country_code,
2999        phone_area_code,phone_number,phone_extension ,primary_by_purpose
3000 FROM HZ_CONTACT_POINTS
3001 WHERE owner_table_name = 'HZ_PARTIES'
3002       AND contact_point_id = p_from_id
3003       AND rownum=1;
3004 
3005 ----------------
3006 BEGIN
3007 
3008   IF (x_to_id <> FND_API.G_MISS_NUM AND
3009       x_to_id <> p_from_id) THEN
3010     UPDATE HZ_CONTACT_POINTS
3011     SET
3012       STATUS = 'M',
3013       last_update_date = hz_utility_pub.last_update_date,
3014       last_updated_by = hz_utility_pub.user_id,
3015       last_update_login = hz_utility_pub.last_update_login,
3016       request_id =  hz_utility_pub.request_id,
3017       program_application_id = hz_utility_pub.program_application_id,
3018       program_id = hz_utility_pub.program_id,
3019       program_update_date = sysdate
3020     WHERE contact_point_id = p_from_id;
3021 
3022     DELETE FROM HZ_DQM_SYNC_INTERFACE WHERE STAGED_FLAG='N'
3023     AND RECORD_ID=p_from_id AND ENTITY='CONTACT_POINTS'
3024     AND OPERATION <> 'D';
3025 
3026            HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
3027                     p_init_msg_list => FND_API.G_FALSE,
3028                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
3029                     p_old_owner_table_id   => p_from_id,
3030 	            p_new_owner_table_id   => x_to_id,
3031                     p_owner_table_name  =>'HZ_CONTACT_POINTS',
3032                     p_orig_system => null,
3033                     p_orig_system_reference => null,
3034                     p_reason_code => 'MERGED',
3035                     x_return_status => x_return_status,
3036                     x_msg_count =>l_msg_count,
3037                     x_msg_data  =>l_msg_data);
3038       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3039 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3040 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
3041 	FND_MSG_PUB.ADD;
3042 	x_return_status := FND_API.G_RET_STS_ERROR;
3043 	RETURN;
3044       END IF;
3045 
3046   ELSE
3047       --- Transfer ---
3048 
3049     /* BugNo:1695595. Added the condition CONTACT_POINT_TYPE=l_contact_point_type
3050        to get the primary flag associated to from party contact point type.
3051     */
3052     OPEN c_fp_cpt_details;
3053     FETCH c_fp_cpt_details into l_contact_point_type,l_fp_primary_flag,
3054                                 l_url,l_email_address,l_contact_point_purpose,
3055                                 l_phone_line_type,l_phone_country_code,
3056                                 l_phone_area_code,l_phone_number,l_phone_extension,
3057                                 l_fp_pri_pur_flag ;
3058     CLOSE c_fp_cpt_details;
3059 
3060     IF l_fp_pri_pur_flag   = 'Y' THEN
3061     BEGIN
3062         SELECT 'Exists'
3063         INTO    l_exists
3064         FROM    HZ_CONTACT_POINTS
3065         WHERE   PRIMARY_BY_PURPOSE    = 'Y'
3066         AND     CONTACT_POINT_PURPOSE = l_contact_point_purpose
3067         AND     OWNER_TABLE_NAME      = 'HZ_PARTIES'
3068         AND     CONTACT_POINT_TYPE    = l_contact_point_type
3069         AND     OWNER_TABLE_ID        = p_to_fk_id
3070         AND     ROWNUM = 1;
3071     EXCEPTION
3072     WHEN NO_DATA_FOUND THEN
3073         l_pri_purpose_flag := 'Y';
3074     END;
3075     END IF;
3076 
3077     IF l_fp_primary_flag  = 'Y' THEN
3078     BEGIN
3079         SELECT 'Exists'
3080         INTO    l_exists
3081         FROM    HZ_CONTACT_POINTS
3082         WHERE   primary_flag      = 'Y'
3083         AND     OWNER_TABLE_NAME  = 'HZ_PARTIES'
3084         AND     CONTACT_POINT_TYPE= l_contact_point_type
3085         AND     OWNER_TABLE_ID    = p_to_fk_id
3086         AND     ROWNUM = 1;
3087     EXCEPTION
3088     WHEN NO_DATA_FOUND THEN
3089       --BugNo:1695595.Changed l_primary_flag value from 'Y' to from contact point
3090       --primary flag value.
3091        l_primary_flag   :=l_fp_primary_flag;
3092    END;
3093    END IF;
3094 
3095 
3096     --BugNo:1695595.Added code to update denormalized columns.------
3097     IF (l_primary_flag='Y' AND l_contact_point_type IN ('WEB','EMAIL','PHONE')) THEN
3098      do_denormalize_contact_point(p_to_fk_id,
3099 				  l_contact_point_type,
3100 				  l_url,
3101 				  l_email_address,
3102 				  p_from_id,
3103 				  l_contact_point_purpose,
3104 				  l_phone_line_type,
3105 				  l_phone_country_code,
3106 				  l_phone_area_code,
3107 				  l_phone_number,
3108 				  l_phone_extension);
3109     END IF;
3110 
3111     -----------------------
3112     -- Update and set party_id = p_to_fk_id where pk = from_id
3113     UPDATE HZ_CONTACT_POINTS
3114     SET
3115       owner_table_id = p_to_fk_id,
3116       primary_flag = l_primary_flag,
3117       primary_by_purpose = l_pri_purpose_flag,
3118       last_update_date = hz_utility_pub.last_update_date,
3119       last_updated_by = hz_utility_pub.user_id,
3120       last_update_login = hz_utility_pub.last_update_login,
3121       request_id =  hz_utility_pub.request_id,
3122       program_application_id = hz_utility_pub.program_application_id,
3123       program_id = hz_utility_pub.program_id,
3124       program_update_date = sysdate
3125     WHERE contact_point_id = p_from_id;
3126 
3127   END IF;
3128 
3129 EXCEPTION
3130   WHEN OTHERS THEN
3131     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3132     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3133     FND_MSG_PUB.ADD;
3134     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3135 END do_contact_point_transfer;
3136 
3137 PROCEDURE do_contact_point_transfer2(
3138         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3139         x_to_id         IN OUT NOCOPY  NUMBER,
3140         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3141         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3142 	x_return_status IN OUT NOCOPY          VARCHAR2
3143 ) IS
3144 
3145 l_msg_data                     VARCHAR2(2000);
3146 l_msg_count                    NUMBER := 0;
3147 l_exists VARCHAR2(10);
3148 l_fp_primary_flag VARCHAR2(1);
3149 l_fp_pri_purpose_flag VARCHAR2(1);
3150 l_primary_flag VARCHAR2(1):='N';
3151 l_pri_purpose_flag VARCHAR2(1):='N';
3152 l_contact_point_type     VARCHAR2(30);
3153 l_contact_point_purpose  HZ_CONTACT_POINTS.CONTACT_POINT_PURPOSE%TYPE;
3154 
3155 CURSOR c_fp_cpt_details IS
3156 SELECT contact_point_type, contact_point_purpose,primary_flag,primary_by_purpose
3157 FROM HZ_CONTACT_POINTS
3158 WHERE owner_table_name = 'HZ_PARTY_SITES'
3159       AND contact_point_id = p_from_id
3160       AND rownum=1;
3161 
3162 
3163 BEGIN
3164 
3165   IF (x_to_id <> FND_API.G_MISS_NUM AND
3166       x_to_id <> p_from_id) THEN
3167     -- Update  and set status to merged
3168     UPDATE HZ_CONTACT_POINTS
3169     SET
3170       STATUS = 'M',
3171       last_update_date = hz_utility_pub.last_update_date,
3172       last_updated_by = hz_utility_pub.user_id,
3173       last_update_login = hz_utility_pub.last_update_login,
3174       request_id =  hz_utility_pub.request_id,
3175       program_application_id = hz_utility_pub.program_application_id,
3176       program_id = hz_utility_pub.program_id,
3177       program_update_date = sysdate
3178     WHERE contact_point_id = p_from_id;
3179 
3180     DELETE FROM HZ_DQM_SYNC_INTERFACE WHERE STAGED_FLAG='N'
3181     AND RECORD_ID=p_from_id AND ENTITY='CONTACT_POINTS'
3182     AND OPERATION <> 'D';
3183 
3184      HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
3185                     p_init_msg_list => FND_API.G_FALSE,
3186                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
3187                     p_old_owner_table_id   => p_from_id,
3188 	            p_new_owner_table_id   => x_to_id,
3189                     p_owner_table_name  =>'HZ_CONTACT_POINTS',
3190                     p_orig_system => null,
3191                     p_orig_system_reference => null,
3192                     p_reason_code => 'MERGED',
3193                     x_return_status => x_return_status,
3194                     x_msg_count =>l_msg_count,
3195                     x_msg_data  =>l_msg_data);
3196       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3197 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3198 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
3199 	FND_MSG_PUB.ADD;
3200 	x_return_status := FND_API.G_RET_STS_ERROR;
3201 	RETURN;
3202       END IF;
3203   ELSE
3204     --- Transfer ---
3205     OPEN c_fp_cpt_details;
3206     FETCH c_fp_cpt_details into l_contact_point_type, l_contact_point_purpose,
3207                                 l_fp_primary_flag, l_fp_pri_purpose_flag;
3208     CLOSE c_fp_cpt_details;
3209 
3210     IF l_fp_pri_purpose_flag = 'Y' THEN
3211     BEGIN
3212         SELECT 'Exists'
3213         INTO l_exists
3214         FROM HZ_CONTACT_POINTS
3215         WHERE PRIMARY_BY_PURPOSE    = 'Y'
3216         AND   CONTACT_POINT_PURPOSE = l_contact_point_purpose
3217         AND   OWNER_TABLE_NAME      = 'HZ_PARTY_SITES'
3218         AND   CONTACT_POINT_TYPE    = l_contact_point_type
3219         AND   OWNER_TABLE_ID        = p_to_fk_id
3220         AND   ROWNUM = 1;
3221 
3222     EXCEPTION
3223     WHEN NO_DATA_FOUND THEN
3224         l_pri_purpose_flag := 'Y';
3225     END;
3226     END IF;
3227 
3228     IF l_fp_primary_flag  = 'Y' THEN
3229     BEGIN
3230         SELECT 'Exists'
3231           INTO l_exists
3232           FROM HZ_CONTACT_POINTS
3233          WHERE PRIMARY_FLAG        = 'Y'
3234            AND OWNER_TABLE_NAME    = 'HZ_PARTY_SITES'
3235            AND OWNER_TABLE_ID      = p_to_fk_id
3236            AND CONTACT_POINT_TYPE  = l_contact_point_type
3237            AND ROWNUM = 1;
3238     EXCEPTION
3239     WHEN NO_DATA_FOUND THEN
3240       l_primary_flag := 'Y';
3241     END;
3242     END IF;
3243 
3244     -- Update and set party_id = p_to_fk_id where pk = from_id
3245     UPDATE HZ_CONTACT_POINTS
3246     SET
3247       owner_table_id = p_to_fk_id,
3248       primary_flag = l_primary_flag,
3249       primary_by_purpose = l_pri_purpose_flag,
3250       last_update_date = hz_utility_pub.last_update_date,
3251       last_updated_by = hz_utility_pub.user_id,
3252       last_update_login = hz_utility_pub.last_update_login,
3253       request_id =  hz_utility_pub.request_id,
3254       program_application_id = hz_utility_pub.program_application_id,
3255       program_id = hz_utility_pub.program_id,
3256       program_update_date = sysdate
3257     WHERE contact_point_id = p_from_id;
3258 
3259   END IF;
3260 
3261 EXCEPTION
3262   WHEN OTHERS THEN
3263     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3264     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3265     FND_MSG_PUB.ADD;
3266     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3267 END do_contact_point_transfer2;
3268 
3269 PROCEDURE do_contact_pref_transfer(
3270         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3271         x_to_id         IN OUT NOCOPY  NUMBER,
3272         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3273         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3274         x_return_status IN OUT NOCOPY          VARCHAR2
3275 ) IS
3276 
3277 BEGIN
3278   IF (x_to_id <> FND_API.G_MISS_NUM AND
3279       x_to_id <> p_from_id) THEN
3280     UPDATE HZ_CONTACT_PREFERENCES
3281     SET
3282       status = 'M',
3283       last_update_date = hz_utility_pub.last_update_date,
3284       last_updated_by = hz_utility_pub.user_id,
3285       last_update_login = hz_utility_pub.last_update_login,
3286       request_id =  hz_utility_pub.request_id,
3287       program_application_id = hz_utility_pub.program_application_id,
3288       program_id = hz_utility_pub.program_id,
3289       program_update_date = sysdate
3290     WHERE contact_preference_id = p_from_id;
3291   ELSE
3292     -- Update and set contact_level_table_id = p_to_fk_id where pk = from_id
3293     UPDATE HZ_CONTACT_PREFERENCES
3294     SET
3295       contact_level_table_id = p_to_fk_id,
3296       last_update_date = hz_utility_pub.last_update_date,
3297       last_updated_by = hz_utility_pub.user_id,
3298       last_update_login = hz_utility_pub.last_update_login,
3299       request_id =  hz_utility_pub.request_id,
3300       program_application_id = hz_utility_pub.program_application_id,
3301       program_id = hz_utility_pub.program_id,
3302       program_update_date = sysdate
3303     WHERE contact_preference_id = p_from_id;
3304 
3305   END IF;
3306 
3307 EXCEPTION
3308   WHEN OTHERS THEN
3309     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3310     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3311     FND_MSG_PUB.ADD;
3312     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3313 END do_contact_pref_transfer;
3314 
3315 PROCEDURE do_references_transfer(
3316         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3317         x_to_id         IN OUT NOCOPY  NUMBER,
3318         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3319         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3320 	x_return_status IN OUT NOCOPY          VARCHAR2
3321 ) IS
3322 
3323 BEGIN
3324 
3325   IF (x_to_id <> FND_API.G_MISS_NUM AND
3326       x_to_id <> p_from_id) THEN
3327     UPDATE HZ_REFERENCES
3328     SET
3329       status = 'M',
3330       last_update_date = hz_utility_pub.last_update_date,
3331       last_updated_by = hz_utility_pub.user_id,
3332       last_update_login = hz_utility_pub.last_update_login,
3333       request_id =  hz_utility_pub.request_id,
3334       program_application_id = hz_utility_pub.program_application_id,
3335       program_id = hz_utility_pub.program_id,
3336       program_update_date = sysdate
3337     WHERE reference_id = p_from_id;
3338   ELSE
3339     -- Update and set party_id = p_to_fk_id where pk = from_id
3340     UPDATE HZ_REFERENCES
3341     SET
3342       referenced_party_id = p_to_fk_id,
3343       last_update_date = hz_utility_pub.last_update_date,
3344       last_updated_by = hz_utility_pub.user_id,
3345       last_update_login = hz_utility_pub.last_update_login,
3346       request_id =  hz_utility_pub.request_id,
3347       program_application_id = hz_utility_pub.program_application_id,
3348       program_id = hz_utility_pub.program_id,
3349       program_update_date = sysdate
3350     WHERE reference_id = p_from_id;
3351 
3352   END IF;
3353 
3354 EXCEPTION
3355   WHEN OTHERS THEN
3356     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3357     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3358     FND_MSG_PUB.ADD;
3359     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3360 END do_references_transfer;
3361 
3362 PROCEDURE do_certification_transfer(
3363         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3364         x_to_id         IN OUT NOCOPY  NUMBER,
3365         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3366         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3367 	x_return_status IN OUT NOCOPY          VARCHAR2
3368 ) IS
3369 
3370 BEGIN
3371 
3372   IF (x_to_id <> FND_API.G_MISS_NUM AND
3373       x_to_id <> p_from_id) THEN
3374     UPDATE HZ_CERTIFICATIONS
3375     SET
3376       STATUS = 'M',
3377       last_update_date = hz_utility_pub.last_update_date,
3378       last_updated_by = hz_utility_pub.user_id,
3379       last_update_login = hz_utility_pub.last_update_login,
3380       request_id =  hz_utility_pub.request_id,
3381       program_application_id = hz_utility_pub.program_application_id,
3382       program_id = hz_utility_pub.program_id,
3383       program_update_date = sysdate
3384     WHERE certification_id = p_from_id;
3385   ELSE
3386     -- Update and set party_id = p_to_fk_id where pk = from_id
3387     UPDATE HZ_CERTIFICATIONS
3388     SET
3389       party_id = p_to_fk_id,
3390       last_update_date = hz_utility_pub.last_update_date,
3391       last_updated_by = hz_utility_pub.user_id,
3392       last_update_login = hz_utility_pub.last_update_login,
3393       request_id =  hz_utility_pub.request_id,
3394       program_application_id = hz_utility_pub.program_application_id,
3395       program_id = hz_utility_pub.program_id,
3396       program_update_date = sysdate
3397     WHERE certification_id = p_from_id;
3398 
3399   END IF;
3400 
3401 EXCEPTION
3402   WHEN OTHERS THEN
3403     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3404     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3405     FND_MSG_PUB.ADD;
3406     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3407 END do_certification_transfer;
3408 
3409 PROCEDURE do_credit_ratings_transfer(
3410         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3411         x_to_id         IN OUT NOCOPY  NUMBER,
3412         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3413         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3414 	x_return_status IN OUT NOCOPY          VARCHAR2
3415 ) IS
3416 
3417 BEGIN
3418 
3419   IF (x_to_id <> FND_API.G_MISS_NUM AND
3420       x_to_id <> p_from_id) THEN
3421     UPDATE HZ_CREDIT_RATINGS
3422     SET
3423       STATUS = 'M',
3424       last_update_date = hz_utility_pub.last_update_date,
3425       last_updated_by = hz_utility_pub.user_id,
3426       last_update_login = hz_utility_pub.last_update_login,
3427       request_id =  hz_utility_pub.request_id,
3428       program_application_id = hz_utility_pub.program_application_id,
3429       program_id = hz_utility_pub.program_id,
3430       program_update_date = sysdate
3431     WHERE credit_rating_id = p_from_id;
3432   ELSE
3433     -- Update and set party_id = p_to_fk_id where pk = from_id
3434     UPDATE HZ_CREDIT_RATINGS
3435     SET
3436       party_id = p_to_fk_id,
3437       last_update_date = hz_utility_pub.last_update_date,
3438       last_updated_by = hz_utility_pub.user_id,
3439       last_update_login = hz_utility_pub.last_update_login,
3440       request_id =  hz_utility_pub.request_id,
3441       program_application_id = hz_utility_pub.program_application_id,
3442       program_id = hz_utility_pub.program_id,
3443       program_update_date = sysdate
3444     WHERE credit_rating_id = p_from_id;
3445 
3446   END IF;
3447 
3448 EXCEPTION
3449   WHEN OTHERS THEN
3450     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3451     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3452     FND_MSG_PUB.ADD;
3453     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3454 END do_credit_ratings_transfer;
3455 
3456 PROCEDURE do_security_issued_transfer(
3457         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3458         x_to_id         IN OUT NOCOPY  NUMBER,
3459         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3460         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3461 	x_return_status IN OUT NOCOPY          VARCHAR2
3462 ) IS
3463 
3464 BEGIN
3465 
3466   IF (x_to_id <> FND_API.G_MISS_NUM AND
3467       x_to_id <> p_from_id) THEN
3468     UPDATE HZ_SECURITY_ISSUED
3469     SET
3470       STATUS = 'M',
3471       last_update_date = hz_utility_pub.last_update_date,
3472       last_updated_by = hz_utility_pub.user_id,
3473       last_update_login = hz_utility_pub.last_update_login,
3474       request_id =  hz_utility_pub.request_id,
3475       program_application_id = hz_utility_pub.program_application_id,
3476       program_id = hz_utility_pub.program_id,
3477       program_update_date = sysdate
3478     WHERE security_issued_id = p_from_id;
3479   ELSE
3480     -- Update and set party_id = p_to_fk_id where pk = from_id
3481     UPDATE HZ_SECURITY_ISSUED
3482     SET
3483       party_id = p_to_fk_id,
3484       last_update_date = hz_utility_pub.last_update_date,
3485       last_updated_by = hz_utility_pub.user_id,
3486       last_update_login = hz_utility_pub.last_update_login,
3487       request_id =  hz_utility_pub.request_id,
3488       program_application_id = hz_utility_pub.program_application_id,
3489       program_id = hz_utility_pub.program_id,
3490       program_update_date = sysdate
3491     WHERE security_issued_id = p_from_id;
3492 
3493   END IF;
3494 
3495 EXCEPTION
3496   WHEN OTHERS THEN
3497     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3498     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3499     FND_MSG_PUB.ADD;
3500     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3501 END do_security_issued_transfer;
3502 
3503 PROCEDURE do_financial_reports_transfer(
3504         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3505         x_to_id         IN OUT NOCOPY  NUMBER,
3506         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3507         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3508 	x_return_status IN OUT NOCOPY          VARCHAR2
3509 ) IS
3510 
3511 BEGIN
3512 
3513   IF (x_to_id <> FND_API.G_MISS_NUM AND
3514       x_to_id <> p_from_id) THEN
3515     UPDATE HZ_FINANCIAL_REPORTS
3516     SET
3517       STATUS = 'M',
3518       last_update_date = hz_utility_pub.last_update_date,
3519       last_updated_by = hz_utility_pub.user_id,
3520       last_update_login = hz_utility_pub.last_update_login,
3521       request_id =  hz_utility_pub.request_id,
3522       program_application_id = hz_utility_pub.program_application_id,
3523       program_id = hz_utility_pub.program_id,
3524       program_update_date = sysdate
3525     WHERE financial_report_id = p_from_id;
3526   ELSE
3527     -- Update and set party_id = p_to_fk_id where pk = from_id
3528     UPDATE HZ_FINANCIAL_REPORTS
3529     SET
3530       party_id = p_to_fk_id,
3531       last_update_date = hz_utility_pub.last_update_date,
3532       last_updated_by = hz_utility_pub.user_id,
3533       last_update_login = hz_utility_pub.last_update_login,
3534       request_id =  hz_utility_pub.request_id,
3535       program_application_id = hz_utility_pub.program_application_id,
3536       program_id = hz_utility_pub.program_id,
3537       program_update_date = sysdate
3538     WHERE financial_report_id = p_from_id;
3539 
3540   END IF;
3541 
3542 EXCEPTION
3543   WHEN OTHERS THEN
3544     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3545     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3546     FND_MSG_PUB.ADD;
3547     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3548 END do_financial_reports_transfer;
3549 
3550 PROCEDURE do_org_indicators_transfer(
3551         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3552         x_to_id         IN OUT NOCOPY  NUMBER,
3553         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3554         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3555 	x_return_status IN OUT NOCOPY          VARCHAR2
3556 ) IS
3557 
3558 BEGIN
3559 
3560   IF (x_to_id <> FND_API.G_MISS_NUM AND
3561       x_to_id <> p_from_id) THEN
3562     UPDATE HZ_ORGANIZATION_INDICATORS
3563     SET
3564       STATUS = 'M',
3565       last_update_date = hz_utility_pub.last_update_date,
3566       last_updated_by = hz_utility_pub.user_id,
3567       last_update_login = hz_utility_pub.last_update_login,
3568       request_id =  hz_utility_pub.request_id,
3569       program_application_id = hz_utility_pub.program_application_id,
3570       program_id = hz_utility_pub.program_id,
3571       program_update_date = sysdate
3572     WHERE organization_indicator_id = p_from_id;
3573   ELSE
3574     -- Update and set party_id = p_to_fk_id where pk = from_id
3575     UPDATE HZ_ORGANIZATION_INDICATORS
3576     SET
3577       party_id = p_to_fk_id,
3578       last_update_date = hz_utility_pub.last_update_date,
3579       last_updated_by = hz_utility_pub.user_id,
3580       last_update_login = hz_utility_pub.last_update_login,
3581       request_id =  hz_utility_pub.request_id,
3582       program_application_id = hz_utility_pub.program_application_id,
3583       program_id = hz_utility_pub.program_id,
3584       program_update_date = sysdate
3585     WHERE organization_indicator_id = p_from_id;
3586 
3587   END IF;
3588 
3589 EXCEPTION
3590   WHEN OTHERS THEN
3591     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3592     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3593     FND_MSG_PUB.ADD;
3594     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3595 END do_org_indicators_transfer;
3596 
3597 PROCEDURE do_ind_reference_transfer(
3598         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3599         x_to_id         IN OUT NOCOPY  NUMBER,
3600         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3601         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3602 	x_return_status IN OUT NOCOPY          VARCHAR2
3603 ) IS
3604 
3605 BEGIN
3606 
3607   IF (x_to_id <> FND_API.G_MISS_NUM AND
3608       x_to_id <> p_from_id) THEN
3609     UPDATE HZ_INDUSTRIAL_REFERENCE
3610     SET
3611       STATUS = 'M',
3612       last_update_date = hz_utility_pub.last_update_date,
3613       last_updated_by = hz_utility_pub.user_id,
3614       last_update_login = hz_utility_pub.last_update_login,
3615       request_id =  hz_utility_pub.request_id,
3616       program_application_id = hz_utility_pub.program_application_id,
3617       program_id = hz_utility_pub.program_id,
3618       program_update_date = sysdate
3619     WHERE industry_reference_id = p_from_id;
3620   ELSE
3621     -- Update and set party_id = p_to_fk_id where pk = from_id
3622     UPDATE HZ_INDUSTRIAL_REFERENCE
3623     SET
3624       party_id = p_to_fk_id,
3625       last_update_date = hz_utility_pub.last_update_date,
3626       last_updated_by = hz_utility_pub.user_id,
3627       last_update_login = hz_utility_pub.last_update_login,
3628       request_id =  hz_utility_pub.request_id,
3629       program_application_id = hz_utility_pub.program_application_id,
3630       program_id = hz_utility_pub.program_id,
3631       program_update_date = sysdate
3632     WHERE industry_reference_id = p_from_id;
3633 
3634   END IF;
3635 
3636 EXCEPTION
3637   WHEN OTHERS THEN
3638     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3639     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3640     FND_MSG_PUB.ADD;
3641     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3642 END do_ind_reference_transfer;
3643 
3644 PROCEDURE do_per_interest_transfer(
3645         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3646         x_to_id         IN OUT NOCOPY  NUMBER,
3647         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3648         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3649 	x_return_status IN OUT NOCOPY          VARCHAR2
3650 ) IS
3651 
3652 BEGIN
3653 
3654   IF (x_to_id <> FND_API.G_MISS_NUM AND
3655       x_to_id <> p_from_id) THEN
3656     UPDATE HZ_PERSON_INTEREST
3657     SET
3658       STATUS = 'M',
3659       last_update_date = hz_utility_pub.last_update_date,
3660       last_updated_by = hz_utility_pub.user_id,
3661       last_update_login = hz_utility_pub.last_update_login,
3662       request_id =  hz_utility_pub.request_id,
3663       program_application_id = hz_utility_pub.program_application_id,
3664       program_id = hz_utility_pub.program_id,
3665       program_update_date = sysdate
3666     WHERE person_interest_id = p_from_id;
3667   ELSE
3668     -- Update and set party_id = p_to_fk_id where pk = from_id
3669     UPDATE HZ_PERSON_INTEREST
3670     SET
3671       party_id = p_to_fk_id,
3672       last_update_date = hz_utility_pub.last_update_date,
3673       last_updated_by = hz_utility_pub.user_id,
3674       last_update_login = hz_utility_pub.last_update_login,
3675       request_id =  hz_utility_pub.request_id,
3676       program_application_id = hz_utility_pub.program_application_id,
3677       program_id = hz_utility_pub.program_id,
3678       program_update_date = sysdate
3679     WHERE person_interest_id = p_from_id;
3680 
3681   END IF;
3682 
3683 EXCEPTION
3684   WHEN OTHERS THEN
3685     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3686     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3687     FND_MSG_PUB.ADD;
3688     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3689 END do_per_interest_transfer;
3690 
3691 PROCEDURE do_citizenship_transfer(
3692         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3693         x_to_id         IN OUT NOCOPY  NUMBER,
3694         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3695         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3696 	x_return_status IN OUT NOCOPY          VARCHAR2
3697 ) IS
3698 
3699 BEGIN
3700 
3701   IF (x_to_id <> FND_API.G_MISS_NUM AND
3702       x_to_id <> p_from_id) THEN
3703     UPDATE HZ_CITIZENSHIP
3704     SET
3705       STATUS = 'M',
3706       last_update_date = hz_utility_pub.last_update_date,
3707       last_updated_by = hz_utility_pub.user_id,
3708       last_update_login = hz_utility_pub.last_update_login,
3709       request_id =  hz_utility_pub.request_id,
3710       program_application_id = hz_utility_pub.program_application_id,
3711       program_id = hz_utility_pub.program_id,
3712       program_update_date = sysdate
3713     WHERE citizenship_id = p_from_id;
3714   ELSE
3715     -- Update and set party_id = p_to_fk_id where pk = from_id
3716     UPDATE HZ_CITIZENSHIP
3717     SET
3718       party_id = p_to_fk_id,
3719       last_update_date = hz_utility_pub.last_update_date,
3720       last_updated_by = hz_utility_pub.user_id,
3721       last_update_login = hz_utility_pub.last_update_login,
3722       request_id =  hz_utility_pub.request_id,
3723       program_application_id = hz_utility_pub.program_application_id,
3724       program_id = hz_utility_pub.program_id,
3725       program_update_date = sysdate
3726     WHERE citizenship_id = p_from_id;
3727 
3728   END IF;
3729 
3730 EXCEPTION
3731   WHEN OTHERS THEN
3732     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3733     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3734     FND_MSG_PUB.ADD;
3735     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3736 END do_citizenship_transfer;
3737 
3738 PROCEDURE do_education_transfer(
3739         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3740         x_to_id         IN OUT NOCOPY  NUMBER,
3741         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3742         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3743 	x_return_status IN OUT NOCOPY          VARCHAR2
3744 ) IS
3745 
3746 BEGIN
3747 
3748   IF (x_to_id <> FND_API.G_MISS_NUM AND
3749       x_to_id <> p_from_id) THEN
3750     UPDATE HZ_EDUCATION
3751     SET
3752       STATUS = 'M',
3753       last_update_date = hz_utility_pub.last_update_date,
3754       last_updated_by = hz_utility_pub.user_id,
3755       last_update_login = hz_utility_pub.last_update_login,
3756       request_id =  hz_utility_pub.request_id,
3757       program_application_id = hz_utility_pub.program_application_id,
3758       program_id = hz_utility_pub.program_id,
3759       program_update_date = sysdate
3760     WHERE education_id = p_from_id;
3761   ELSE
3762     -- Update and set party_id = p_to_fk_id where pk = from_id
3763     UPDATE HZ_EDUCATION
3764     SET
3765       party_id = p_to_fk_id,
3766       last_update_date = hz_utility_pub.last_update_date,
3767       last_updated_by = hz_utility_pub.user_id,
3768       last_update_login = hz_utility_pub.last_update_login,
3769       request_id =  hz_utility_pub.request_id,
3770       program_application_id = hz_utility_pub.program_application_id,
3771       program_id = hz_utility_pub.program_id,
3772       program_update_date = sysdate
3773     WHERE education_id = p_from_id;
3774 
3775   END IF;
3776 
3777 EXCEPTION
3778   WHEN OTHERS THEN
3779     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3780     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3781     FND_MSG_PUB.ADD;
3782     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3783 END do_education_transfer;
3784 
3785 PROCEDURE do_education_school_transfer(
3786         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3787         x_to_id         IN OUT NOCOPY  NUMBER,
3788         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3789         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3790 	x_return_status IN OUT NOCOPY          VARCHAR2
3791 ) IS
3792 
3793 BEGIN
3794 
3795   IF (x_to_id <> FND_API.G_MISS_NUM AND
3796       x_to_id <> p_from_id) THEN
3797     UPDATE HZ_EDUCATION
3798     SET
3799       STATUS = 'M',
3800       last_update_date = hz_utility_pub.last_update_date,
3801       last_updated_by = hz_utility_pub.user_id,
3802       last_update_login = hz_utility_pub.last_update_login,
3803       request_id =  hz_utility_pub.request_id,
3804       program_application_id = hz_utility_pub.program_application_id,
3805       program_id = hz_utility_pub.program_id,
3806       program_update_date = sysdate
3807     WHERE education_id = p_from_id;
3808   ELSE
3809     -- Update and set party_id = p_to_fk_id where pk = from_id
3810     UPDATE HZ_EDUCATION
3811     SET
3812       school_party_id = p_to_fk_id,
3813       last_update_date = hz_utility_pub.last_update_date,
3814       last_updated_by = hz_utility_pub.user_id,
3815       last_update_login = hz_utility_pub.last_update_login,
3816       request_id =  hz_utility_pub.request_id,
3817       program_application_id = hz_utility_pub.program_application_id,
3818       program_id = hz_utility_pub.program_id,
3819       program_update_date = sysdate
3820     WHERE education_id = p_from_id;
3821 
3822   END IF;
3823 
3824 EXCEPTION
3825   WHEN OTHERS THEN
3826     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3827     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3828     FND_MSG_PUB.ADD;
3829     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3830 END do_education_school_transfer;
3831 
3832 
3833 PROCEDURE do_emp_history_transfer(
3834         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3835         x_to_id         IN OUT NOCOPY  NUMBER,
3836         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3837         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3838         x_return_status IN OUT NOCOPY          VARCHAR2
3839 ) IS
3840 
3841 BEGIN
3842 
3843   IF (x_to_id <> FND_API.G_MISS_NUM AND
3844       x_to_id <> p_from_id) THEN
3845     UPDATE HZ_EMPLOYMENT_HISTORY
3846     SET
3847       STATUS = 'M',
3848       last_update_date = hz_utility_pub.last_update_date,
3849       last_updated_by = hz_utility_pub.user_id,
3850       last_update_login = hz_utility_pub.last_update_login,
3851       request_id =  hz_utility_pub.request_id,
3852       program_application_id = hz_utility_pub.program_application_id,
3853       program_id = hz_utility_pub.program_id,
3854       program_update_date = sysdate
3855     WHERE employment_history_id = p_from_id;
3856   ELSE
3857     -- Update and set party_id = p_to_fk_id where pk = from_id
3858     UPDATE HZ_EMPLOYMENT_HISTORY
3859     SET
3860       party_id = p_to_fk_id,
3861       last_update_date = hz_utility_pub.last_update_date,
3862       last_updated_by = hz_utility_pub.user_id,
3863       last_update_login = hz_utility_pub.last_update_login,
3864       request_id =  hz_utility_pub.request_id,
3865       program_application_id = hz_utility_pub.program_application_id,
3866       program_id = hz_utility_pub.program_id,
3867       program_update_date = sysdate
3868     WHERE employment_history_id = p_from_id;
3869 
3870   END IF;
3871 
3872 EXCEPTION
3873   WHEN OTHERS THEN
3874     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3875     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3876     FND_MSG_PUB.ADD;
3877     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3878 END do_emp_history_transfer;
3879 
3880 PROCEDURE do_employed_transfer(
3881         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3882         x_to_id         IN OUT NOCOPY  NUMBER,
3883         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3884         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3885         x_return_status IN OUT NOCOPY          VARCHAR2
3886 ) IS
3887 
3888 BEGIN
3889 
3890   IF (x_to_id <> FND_API.G_MISS_NUM AND
3891       x_to_id <> p_from_id) THEN
3892     UPDATE HZ_EMPLOYMENT_HISTORY
3893     SET
3894       STATUS = 'M',
3895       last_update_date = hz_utility_pub.last_update_date,
3896       last_updated_by = hz_utility_pub.user_id,
3897       last_update_login = hz_utility_pub.last_update_login,
3898       request_id =  hz_utility_pub.request_id,
3899       program_application_id = hz_utility_pub.program_application_id,
3900       program_id = hz_utility_pub.program_id,
3901       program_update_date = sysdate
3902     WHERE employment_history_id = p_from_id;
3903   ELSE
3904     -- Update and set party_id = p_to_fk_id where pk = from_id
3905     UPDATE HZ_EMPLOYMENT_HISTORY
3906     SET
3907       employed_by_party_id = p_to_fk_id,
3908       last_update_date = hz_utility_pub.last_update_date,
3909       last_updated_by = hz_utility_pub.user_id,
3910       last_update_login = hz_utility_pub.last_update_login,
3911       request_id =  hz_utility_pub.request_id,
3912       program_application_id = hz_utility_pub.program_application_id,
3913       program_id = hz_utility_pub.program_id,
3914       program_update_date = sysdate
3915     WHERE employment_history_id = p_from_id;
3916 
3917   END IF;
3918 
3919 EXCEPTION
3920   WHEN OTHERS THEN
3921     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3922     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3923     FND_MSG_PUB.ADD;
3924     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3925 END do_employed_transfer;
3926 
3927 
3928 PROCEDURE do_work_class_transfer(
3929         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3930         x_to_id         IN OUT NOCOPY  NUMBER,
3931         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3932         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3933         x_return_status IN OUT NOCOPY          VARCHAR2
3934 ) IS
3935 
3936 BEGIN
3937 
3938   IF (x_to_id <> FND_API.G_MISS_NUM AND
3939       x_to_id <> p_from_id) THEN
3940     UPDATE HZ_WORK_CLASS
3941     SET
3942       STATUS = 'M',
3943       last_update_date = hz_utility_pub.last_update_date,
3944       last_updated_by = hz_utility_pub.user_id,
3945       last_update_login = hz_utility_pub.last_update_login,
3946       request_id =  hz_utility_pub.request_id,
3947       program_application_id = hz_utility_pub.program_application_id,
3948       program_id = hz_utility_pub.program_id,
3949       program_update_date = sysdate
3950     WHERE work_class_id = p_from_id;
3951   ELSE
3952     -- Update and set employment_history_id = p_to_fk_id where pk = from_id
3953     UPDATE HZ_WORK_CLASS
3954     SET
3955       employment_history_id = p_to_fk_id,
3956       last_update_date = hz_utility_pub.last_update_date,
3957       last_updated_by = hz_utility_pub.user_id,
3958       last_update_login = hz_utility_pub.last_update_login,
3959       request_id =  hz_utility_pub.request_id,
3960       program_application_id = hz_utility_pub.program_application_id,
3961       program_id = hz_utility_pub.program_id,
3962       program_update_date = sysdate
3963     WHERE work_class_id = p_from_id;
3964 
3965   END IF;
3966 
3967 EXCEPTION
3968   WHEN OTHERS THEN
3969     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
3970     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3971     FND_MSG_PUB.ADD;
3972     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3973 END do_work_class_transfer;
3974 
3975 PROCEDURE do_org_contact_role_transfer(
3976         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
3977         x_to_id         IN OUT NOCOPY  NUMBER,
3978         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
3979         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
3980 	x_return_status IN OUT NOCOPY          VARCHAR2
3981 ) IS
3982 l_msg_data                     VARCHAR2(2000);
3983 l_msg_count                    NUMBER := 0;
3984 l_primary_flag                 VARCHAR2(1) := 'N';
3985 l_fp_primary_flag              VARCHAR2(1) ;
3986 l_fp_primary_role_flag         VARCHAR2(1) ;
3987 l_primary_role_flag            VARCHAR2(1) := 'N';
3988 l_role_type                    HZ_ORG_CONTACT_ROLES.ROLE_TYPE%TYPE;
3989 l_exists                       VARCHAR2(10);
3990 CURSOR from_contact_role IS
3991      SELECT role_type,primary_flag,primary_contact_per_role_type
3992        FROM HZ_ORG_CONTACT_ROLES
3993       WHERE ORG_CONTACT_ROLE_ID = p_from_id;
3994 BEGIN
3995 
3996     IF (x_to_id <> FND_API.G_MISS_NUM AND
3997       x_to_id <> p_from_id) THEN
3998     UPDATE HZ_ORG_CONTACT_ROLES
3999     SET
4000       STATUS = 'M',
4001       last_update_date = hz_utility_pub.last_update_date,
4002       last_updated_by = hz_utility_pub.user_id,
4003       last_update_login = hz_utility_pub.last_update_login,
4004       request_id =  hz_utility_pub.request_id,
4005       program_application_id = hz_utility_pub.program_application_id,
4006       program_id = hz_utility_pub.program_id,
4007       program_update_date = sysdate
4008     WHERE org_contact_role_id = p_from_id;
4009 
4010        HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
4011                     p_init_msg_list => FND_API.G_FALSE,
4012                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
4013                     p_old_owner_table_id   => p_from_id,
4014                     p_new_owner_table_id   => x_to_id,
4015                     p_owner_table_name  =>'HZ_ORG_CONTACT_ROLES',
4016                     p_orig_system => null,
4017                     p_orig_system_reference => null,
4018                     p_reason_code => 'MERGED',
4019                     x_return_status => x_return_status,
4020                     x_msg_count =>l_msg_count,
4021                     x_msg_data  =>l_msg_data);
4022       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4023         FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4024         FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
4025         FND_MSG_PUB.ADD;
4026         x_return_status := FND_API.G_RET_STS_ERROR;
4027         RETURN;
4028       END IF;
4029 
4030    ELSE
4031      --- Transfer ---
4032 
4033      OPEN  from_contact_role;
4034      FETCH from_contact_role into l_role_type,l_fp_primary_flag,l_fp_primary_role_flag;
4035      CLOSE from_contact_role;
4036 
4037      IF l_fp_primary_flag = 'Y' THEN
4038      BEGIN
4039         SELECT 'Exists'
4040         INTO l_exists
4041         FROM HZ_ORG_CONTACT_ROLES
4042         WHERE PRIMARY_FLAG    = 'Y'
4043         AND   ORG_CONTACT_ID  = p_to_fk_id
4044         AND   ROWNUM = 1;
4045     EXCEPTION
4046     WHEN NO_DATA_FOUND THEN
4047         l_primary_flag := 'Y';
4048     END;
4049     END IF;
4050 
4051     IF l_fp_primary_role_flag = 'Y' THEN
4052     BEGIN
4053         SELECT 'Exists'
4054         INTO    l_exists
4055         FROM         HZ_RELATIONSHIPS PR,
4056                      HZ_ORG_CONTACTS OC,
4057                      HZ_ORG_CONTACT_ROLES OCR,
4058                      HZ_RELATIONSHIPS PR2,
4059                      HZ_ORG_CONTACTS OC2
4060               WHERE  OCR.PRIMARY_CONTACT_PER_ROLE_TYPE = 'Y'
4061               AND    OCR.ROLE_TYPE            = l_role_type
4062               AND    OCR.ORG_CONTACT_ID       = OC.ORG_CONTACT_ID
4063               AND    OC.PARTY_RELATIONSHIP_ID = PR.RELATIONSHIP_ID
4064               AND    PR.OBJECT_ID             = PR2.OBJECT_ID
4065               AND    PR2.RELATIONSHIP_ID      = OC2.PARTY_RELATIONSHIP_ID
4066               AND    OC2.ORG_CONTACT_ID       = p_to_fk_id
4067               AND    PR.SUBJECT_TABLE_NAME    = 'HZ_PARTIES'
4068               AND    PR.OBJECT_TABLE_NAME     = 'HZ_PARTIES'
4069               AND    PR.DIRECTIONAL_FLAG      = 'F'
4070               AND    PR2.SUBJECT_TABLE_NAME   = 'HZ_PARTIES'
4071               AND    PR2.OBJECT_TABLE_NAME    = 'HZ_PARTIES'
4072               AND    PR2.DIRECTIONAL_FLAG     = 'F'
4073               AND    ROWNUM = 1;
4074     EXCEPTION
4075     WHEN NO_DATA_FOUND THEN
4076         l_primary_role_flag := 'Y';
4077     END;
4078     END IF;
4079 
4080     -- Update and set party_id = p_to_fk_id where pk = from_id
4081     UPDATE HZ_ORG_CONTACT_ROLES
4082     SET
4083       org_contact_id = p_to_fk_id,
4084       primary_flag   = l_primary_flag,
4085       primary_contact_per_role_type  = l_primary_role_flag,
4086       last_update_date = hz_utility_pub.last_update_date,
4087       last_updated_by = hz_utility_pub.user_id,
4088       last_update_login = hz_utility_pub.last_update_login,
4089       request_id =  hz_utility_pub.request_id,
4090       program_application_id = hz_utility_pub.program_application_id,
4091       program_id = hz_utility_pub.program_id,
4092       program_update_date = sysdate
4093     WHERE org_contact_role_id = p_from_id;
4094   END IF;
4095 
4096 EXCEPTION
4097   WHEN OTHERS THEN
4098     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4099     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4100     FND_MSG_PUB.ADD;
4101     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4102 END do_org_contact_role_transfer;
4103 
4104 PROCEDURE do_financial_number_transfer(
4105         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4106         x_to_id         IN OUT NOCOPY  NUMBER,
4107         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4108         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4109         x_return_status IN OUT NOCOPY          VARCHAR2
4110 ) IS
4111 
4112 BEGIN
4113 
4114   IF (x_to_id <> FND_API.G_MISS_NUM AND
4115       x_to_id <> p_from_id) THEN
4116     UPDATE HZ_FINANCIAL_NUMBERS
4117     SET
4118       STATUS = 'M',
4119       last_update_date = hz_utility_pub.last_update_date,
4120       last_updated_by = hz_utility_pub.user_id,
4121       last_update_login = hz_utility_pub.last_update_login,
4122       request_id =  hz_utility_pub.request_id,
4123       program_application_id = hz_utility_pub.program_application_id,
4124       program_id = hz_utility_pub.program_id,
4125       program_update_date = sysdate
4126     WHERE financial_number_id = p_from_id;
4127   ELSE
4128     -- Update and set party_id = p_to_fk_id where pk = from_id
4129     UPDATE HZ_FINANCIAL_NUMBERS
4130     SET
4131       financial_report_id = p_to_fk_id,
4132       last_update_date = hz_utility_pub.last_update_date,
4133       last_updated_by = hz_utility_pub.user_id,
4134       last_update_login = hz_utility_pub.last_update_login,
4135       request_id =  hz_utility_pub.request_id,
4136       program_application_id = hz_utility_pub.program_application_id,
4137       program_id = hz_utility_pub.program_id,
4138       program_update_date = sysdate
4139     WHERE financial_number_id = p_from_id;
4140   END IF;
4141 
4142 EXCEPTION
4143   WHEN OTHERS THEN
4144     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4145     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4146     FND_MSG_PUB.ADD;
4147     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4148 END do_financial_number_transfer;
4149 
4150 PROCEDURE do_code_assignment_transfer(
4151         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4152         x_to_id         IN OUT NOCOPY  NUMBER,
4153         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4154         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4155         x_return_status IN OUT NOCOPY          VARCHAR2
4156 ) IS
4157 
4158 l_exists VARCHAR2(10);
4159 l_cont_src VARCHAR2(255);
4160 l_primary_flag VARCHAR2(1):='N';
4161 l_fp_primary_flag VARCHAR2(1);
4162 l_class_category HZ_CODE_ASSIGNMENTS.CLASS_CATEGORY%TYPE;
4163 l_code_exists VARCHAR2(1);
4164 l_class_code HZ_CODE_ASSIGNMENTS.CLASS_CODE%TYPE; --bug 4582789
4165 
4166 CURSOR c_cont_source IS
4167   SELECT CONTENT_SOURCE_TYPE,CLASS_CATEGORY,PRIMARY_FLAG,CLASS_CODE
4168   FROM HZ_CODE_ASSIGNMENTS
4169   WHERE code_assignment_id = p_from_id;
4170 
4171 CURSOR check_multiple_assignments IS
4172 SELECT 'Y'
4173 FROM hz_class_categories cc, hz_code_assignments ca
4174 WHERE ca.owner_table_id = p_to_fk_id
4175 AND cc.class_category = ca.class_category
4176 AND cc.allow_multi_assign_flag = 'N'
4177 AND ca.class_category = l_class_category;
4178 
4179 BEGIN
4180 --bug4086873
4181 OPEN c_cont_source;
4182 FETCH c_cont_source INTO l_cont_src,l_class_category,l_fp_primary_flag,l_class_code;
4183 CLOSE c_cont_source;
4184 
4185 
4186 OPEN check_multiple_assignments;
4187 FETCH check_multiple_assignments INTO l_code_exists;
4188 CLOSE check_multiple_assignments;
4189 
4190 
4191   IF (x_to_id <> FND_API.G_MISS_NUM AND  x_to_id <> p_from_id)
4192      OR (NVL(l_code_exists,'N') = 'Y') THEN
4193     UPDATE HZ_CODE_ASSIGNMENTS
4194     SET
4195       STATUS = 'M',
4196       last_update_date = hz_utility_pub.last_update_date,
4197       last_updated_by = hz_utility_pub.user_id,
4198       last_update_login = hz_utility_pub.last_update_login
4199 --      request_id =  hz_utility_pub.request_id,
4200 --      program_application_id = hz_utility_pub.program_application_id,
4201 --      program_id = hz_utility_pub.program_id,
4202 --      program_update_date = sysdate
4203     WHERE code_assignment_id = p_from_id;
4204 
4205   ELSE
4206    --- Transfer ---
4207 /*    OPEN c_cont_source;
4208     FETCH c_cont_source INTO l_cont_src,l_class_category,l_fp_primary_flag;
4209     CLOSE c_cont_source;*/
4210 
4211     IF l_fp_primary_flag = 'Y' THEN
4212     BEGIN
4213         SELECT 'Exists'
4214           INTO l_exists
4215           FROM HZ_CODE_ASSIGNMENTS
4216          WHERE primary_flag         = 'Y'
4217            AND OWNER_TABLE_NAME     = 'HZ_PARTIES'
4218            AND OWNER_TABLE_ID       = p_to_fk_id
4219            AND CLASS_CATEGORY       = l_class_category
4220            AND CONTENT_SOURCE_TYPE  = l_cont_src
4221            AND ROWNUM = 1;
4222     EXCEPTION
4223        WHEN NO_DATA_FOUND THEN
4224             l_primary_flag := 'Y';
4225     END;
4226     END IF;
4227 
4228     -- Update and set party_id = p_to_fk_id where pk = from_id
4229     UPDATE HZ_CODE_ASSIGNMENTS
4230     SET
4231       owner_table_id = p_to_fk_id,
4232       primary_flag =   l_primary_flag,
4233       last_update_date = hz_utility_pub.last_update_date,
4234       last_updated_by = hz_utility_pub.user_id,
4235       last_update_login = hz_utility_pub.last_update_login
4236 --      request_id =  hz_utility_pub.request_id,
4237 --      program_application_id = hz_utility_pub.program_application_id,
4238 --      program_id = hz_utility_pub.program_id,
4239 --      program_update_date = sysdate
4240     WHERE code_assignment_id = p_from_id;
4241 
4242 --bug 4582789
4243 
4244    IF l_primary_flag = 'Y' AND l_class_category = 'CUSTOMER_CATEGORY' THEN
4245 	UPDATE hz_parties
4246 	SET category_code = l_class_code,
4247 	    last_update_date = hz_utility_pub.last_update_date,
4248             last_updated_by = hz_utility_pub.user_id,
4249             last_update_login = hz_utility_pub.last_update_login
4250         WHERE party_id = p_to_fk_id;
4251    END IF;
4252 ---bug 4582789
4253   END IF;
4254 
4255 EXCEPTION
4256   WHEN OTHERS THEN
4257     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4258     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4259     FND_MSG_PUB.ADD;
4260     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4261 END do_code_assignment_transfer;
4262 
4263 PROCEDURE do_code_assignment_transfer2(
4264         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4265         x_to_id         IN OUT NOCOPY  NUMBER,
4266         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4267         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4268         x_return_status IN OUT NOCOPY          VARCHAR2
4269 ) IS
4270 
4271 l_exists VARCHAR2(10);
4272 l_primary_flag VARCHAR2(1):='N';
4273 l_fp_primary_flag VARCHAR2(1);
4274 l_cont_src VARCHAR2(255);
4275 l_class_category HZ_CODE_ASSIGNMENTS.CLASS_CATEGORY%TYPE;
4276 l_code_exists VARCHAR2(1);
4277 
4278 CURSOR c_cont_source IS
4279   SELECT CONTENT_SOURCE_TYPE,CLASS_CATEGORY,PRIMARY_FLAG
4280   FROM HZ_CODE_ASSIGNMENTS
4281   WHERE code_assignment_id = p_from_id;
4282 
4283 CURSOR check_multiple_assignments IS
4284 SELECT 'Y'
4285 FROM hz_class_categories cc, hz_code_assignments ca
4286 WHERE ca.owner_table_id = p_to_fk_id
4287 AND cc.class_category = ca.class_category
4288 AND cc.allow_multi_assign_flag = 'N'
4289 AND ca.class_category = l_class_category;
4290 
4291 BEGIN
4292 --bug4086873
4293 OPEN c_cont_source;
4294 FETCH c_cont_source INTO l_cont_src,l_class_category,l_fp_primary_flag;
4295 CLOSE c_cont_source;
4296 
4297 
4298 OPEN check_multiple_assignments;
4299 FETCH check_multiple_assignments INTO l_code_exists;
4300 CLOSE check_multiple_assignments;
4301 
4302   IF (x_to_id <> FND_API.G_MISS_NUM AND
4303       x_to_id <> p_from_id) OR (NVL(l_code_exists,'N') = 'Y') THEN
4304     UPDATE HZ_CODE_ASSIGNMENTS
4305     SET
4306       STATUS = 'M',
4307       last_update_date = hz_utility_pub.last_update_date,
4308       last_updated_by = hz_utility_pub.user_id,
4309       last_update_login = hz_utility_pub.last_update_login
4310 --      request_id =  hz_utility_pub.request_id,
4311 --      program_application_id = hz_utility_pub.program_application_id,
4312 --      program_id = hz_utility_pub.program_id,
4313 --      program_update_date = sysdate
4314     WHERE code_assignment_id = p_from_id;
4315   ELSE
4316     --- Transfer ---
4317 /*    OPEN c_cont_source;
4318     FETCH c_cont_source INTO l_cont_src,l_class_category,l_fp_primary_flag;
4319     CLOSE c_cont_source; */
4320    IF l_fp_primary_flag = 'Y' THEN
4321    BEGIN
4322     SELECT 'Exists'
4323     INTO l_exists
4324     FROM HZ_CODE_ASSIGNMENTS
4325     WHERE PRIMARY_FLAG       = 'Y'
4326     AND OWNER_TABLE_NAME     = 'HZ_PARTY_SITES'
4327     AND OWNER_TABLE_ID       = p_to_fk_id
4328     AND CLASS_CATEGORY       = l_class_category
4329     AND CONTENT_SOURCE_TYPE  = l_cont_src
4330     AND ROWNUM = 1;
4331 
4332   EXCEPTION
4333     WHEN NO_DATA_FOUND THEN
4334       l_primary_flag := 'Y';
4335   END;
4336   END IF;
4337 
4338     -- Update and set party_id = p_to_fk_id where pk = from_id
4339     UPDATE HZ_CODE_ASSIGNMENTS
4340     SET
4341       owner_table_id = p_to_fk_id,
4342       primary_flag = l_primary_flag,
4343       last_update_date = hz_utility_pub.last_update_date,
4344       last_updated_by = hz_utility_pub.user_id,
4345       last_update_login = hz_utility_pub.last_update_login
4346 --      request_id =  hz_utility_pub.request_id,
4347 --      program_application_id = hz_utility_pub.program_application_id,
4348 --      program_id = hz_utility_pub.program_id,
4349 --      program_update_date = sysdate
4350     WHERE code_assignment_id = p_from_id;
4351   END IF;
4352 
4353 EXCEPTION
4354   WHEN OTHERS THEN
4355     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4356     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4357     FND_MSG_PUB.ADD;
4358     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4359 END do_code_assignment_transfer2;
4360 
4361 PROCEDURE do_per_languages_transfer(
4362         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4363         x_to_id         IN OUT NOCOPY  NUMBER,
4364         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4365         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4366 	x_return_status IN OUT NOCOPY          VARCHAR2
4367 ) IS
4368 l_count   NUMBER;
4369 l_primary_nav_flag  VARCHAR2(1):= 'N';
4370 l_primary_lang_flag VARCHAR2(1):= 'N';
4371 l_exists  VARCHAR2(10);
4372 l_fp_pri_ind_flag VARCHAR2(1);
4373 l_fp_nav_flag VARCHAR2(1);
4374 
4375 Cursor C_From_Lang IS
4376    SELECT   primary_language_indicator,native_language
4377      FROM   HZ_PERSON_LANGUAGE
4378     WHERE   LANGUAGE_USE_REFERENCE_ID  = p_from_id;
4379 
4380 BEGIN
4381   IF (x_to_id <> FND_API.G_MISS_NUM AND
4382       x_to_id <> p_from_id) THEN
4383     UPDATE HZ_PERSON_LANGUAGE
4384     SET
4385       STATUS = 'M',
4386       last_update_date = hz_utility_pub.last_update_date,
4387       last_updated_by = hz_utility_pub.user_id,
4388       last_update_login = hz_utility_pub.last_update_login,
4389       request_id =  hz_utility_pub.request_id,
4390       program_application_id = hz_utility_pub.program_application_id,
4391       program_id = hz_utility_pub.program_id,
4392       program_update_date = sysdate
4393     WHERE language_use_reference_id = p_from_id;
4394   ELSE
4395     --- Transfer ---
4396   OPEN C_From_Lang;
4397   FETCH C_From_Lang INTO l_fp_pri_ind_flag,l_fp_nav_flag;
4398   CLOSE C_From_Lang;
4399   IF l_fp_pri_ind_flag = 'Y' THEN
4400   BEGIN
4401     SELECT 'Exists'
4402     INTO    l_exists
4403     FROM    HZ_PERSON_LANGUAGE
4404     WHERE   PRIMARY_LANGUAGE_INDICATOR = 'Y'
4405     AND     PARTY_ID = p_to_fk_id
4406     AND     ROWNUM = 1;
4407   EXCEPTION
4408     WHEN NO_DATA_FOUND THEN
4409       l_primary_lang_flag := 'Y';
4410   END;
4411   END IF;
4412 
4413   IF l_fp_nav_flag = 'Y' THEN
4414   BEGIN
4415     SELECT 'Exists'
4416     INTO    l_exists
4417     FROM    HZ_PERSON_LANGUAGE
4418     WHERE   NATIVE_LANGUAGE = 'Y'
4419     AND     PARTY_ID = p_to_fk_id
4420     AND     ROWNUM = 1;
4421   EXCEPTION
4422     WHEN NO_DATA_FOUND THEN
4423       l_primary_nav_flag := 'Y';
4424   END;
4425   END IF;
4426 
4427 /*
4428   OPEN C_Lang1;
4429   FETCH C_Lang1 INTO l_count;
4430   IF C_Lang1%FOUND THEN
4431      OPEN C_Lang2;
4432      FETCH C_Lang2 INTO l_count;
4433      IF C_Lang2%NOTFOUND THEN
4434         -- Update
4435         l_native_language := 'Y';
4436      END IF;
4437      CLOSE C_Lang2;
4438   END IF;
4439   CLOSE C_Lang1;
4440 
4441 */
4442     -- Update and set party_id = p_to_fk_id where pk = from_id
4443     UPDATE HZ_PERSON_LANGUAGE
4444     SET
4445       party_id = p_to_fk_id,
4446       primary_language_indicator = l_primary_lang_flag,
4447       native_language  = l_primary_nav_flag,
4448       last_update_date = hz_utility_pub.last_update_date,
4449       last_updated_by = hz_utility_pub.user_id,
4450       last_update_login = hz_utility_pub.last_update_login,
4451       request_id =  hz_utility_pub.request_id,
4452       program_application_id = hz_utility_pub.program_application_id,
4453       program_id = hz_utility_pub.program_id,
4454       program_update_date = sysdate
4455     WHERE language_use_reference_id = p_from_id;
4456 
4457   END IF;
4458 
4459 EXCEPTION
4460   WHEN OTHERS THEN
4461     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4462     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4463     FND_MSG_PUB.ADD;
4464     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4465 END do_per_languages_transfer;
4466 
4467 PROCEDURE do_party_site_use_transfer(
4468         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4469         x_to_id         IN OUT NOCOPY  NUMBER,
4470         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4471         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4472 	x_return_status IN OUT NOCOPY          VARCHAR2
4473 ) IS
4474 
4475 party_site_use_rec                 HZ_PARTY_SITE_V2PUB.PARTY_SITE_USE_REC_TYPE;
4476 l_msg_data                     VARCHAR2(2000);
4477 l_msg_count                    NUMBER := 0;
4478 
4479 ----Start of Bug No: 3560167-------------------
4480 CURSOR c_party_id(p_party_site_id NUMBER) IS
4481                 SELECT PARTY_ID FROM HZ_PARTY_SITES
4482 		WHERE  PARTY_SITE_ID = p_party_site_id
4483 		AND ROWNUM =1;
4484 
4485 CURSOR c_prim_site_uses(p_party_id NUMBER,p_party_site_id NUMBER,p_site_use_type VARCHAR2,p_request_id NUMBER)
4486                        IS SELECT 1, request_id FROM HZ_PARTY_SITE_USES SU
4487 			   WHERE  SU.PARTY_SITE_ID IN (
4488 			      SELECT PS.PARTY_SITE_ID
4489 			      FROM   HZ_PARTY_SITES PS
4490 			      WHERE  PARTY_ID = p_party_id )
4491 			   AND    SU.PARTY_SITE_ID <> p_party_site_id
4492 			   AND    SU.PARTY_SITE_ID <> p_from_fk_id
4493 			   AND    SU.SITE_USE_TYPE = p_site_use_type
4494 			   AND    SU.PRIMARY_PER_TYPE = 'Y'
4495 			  -- AND    SU.REQUEST_ID =p_request_id
4496 			   AND    ROWNUM = 1;
4497 l_prim_use_exists NUMBER := 0;
4498 l_party_id        NUMBER;
4499 l_request_id      NUMBER := 0;
4500 
4501 ----End of Bug No: 3560167-------------------
4502 
4503 BEGIN
4504 
4505   IF (x_to_id <> FND_API.G_MISS_NUM AND
4506       x_to_id <> p_from_id) THEN
4507     UPDATE HZ_PARTY_SITE_USES
4508     SET
4509       ----Bug: 2619948 added setting status to 'M' here too
4510       STATUS = 'M',
4511       last_update_date = hz_utility_pub.last_update_date,
4512       last_updated_by = hz_utility_pub.user_id,
4513       last_update_login = hz_utility_pub.last_update_login,
4514       request_id =  hz_utility_pub.request_id,
4515       program_application_id = hz_utility_pub.program_application_id,
4516       program_id = hz_utility_pub.program_id,
4517       program_update_date = sysdate
4518     WHERE party_site_use_id = p_from_id;
4519   ELSE
4520 
4521     hz_cust_account_merge_v2pvt.get_party_site_use_rec (
4522          p_init_msg_list => 'T',
4523          p_party_site_use_id => p_from_id,
4524          x_party_site_use_rec => party_site_use_rec,
4525          x_return_status => x_return_status,
4526          x_msg_count => l_msg_count,
4527          x_msg_data => l_msg_data );
4528 
4529     IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4530       FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4531       FND_MESSAGE.SET_TOKEN('ERROR','Cannot get party site use ID : ' || p_from_id);
4532       FND_MSG_PUB.ADD;
4533       x_return_status := FND_API.G_RET_STS_ERROR;
4534 
4535       RETURN;
4536     END IF;
4537 
4538     party_site_use_rec.party_site_use_id := FND_API.G_MISS_NUM;
4539     party_site_use_rec.party_site_id := p_to_fk_id;
4540 
4541     ----Start of Bug No: 3560167-------------------
4542     IF party_site_use_rec.primary_per_type  = 'Y' THEN
4543       OPEN c_party_id(p_to_fk_id);
4544       FETCH c_party_id INTO l_party_id;
4545       CLOSE c_party_id;
4546 
4547       OPEN  c_prim_site_uses(l_party_id,p_to_fk_id,party_site_use_rec.site_use_type,hz_utility_pub.request_id);
4548       FETCH c_prim_site_uses INTO l_prim_use_exists, l_request_id;
4549       CLOSE c_prim_site_uses;
4550       IF l_prim_use_exists <>  0 THEN
4551 	IF l_request_id is null OR l_request_id <> hz_utility_pub.request_id THEN
4552          party_site_use_rec.primary_per_type := 'N';
4553 	END IF;
4554       END IF;
4555     END IF;
4556     ----End of Bug No: 3560167-------------------
4557 
4558     --Create new party site.
4559     hz_cust_account_merge_v2pvt.create_party_site_use(
4560          p_init_msg_list => 'T',
4561          p_party_site_use_rec => party_site_use_rec,
4562          x_party_site_use_id => x_to_id,
4563          x_return_status => x_return_status,
4564          x_msg_count => l_msg_count,
4565          x_msg_data => l_msg_data );
4566 
4567     IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4568       FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4569       FND_MESSAGE.SET_TOKEN('ERROR','Cannot copy party site use for ID : ' || p_from_id);
4570       FND_MSG_PUB.ADD;
4571       x_return_status := FND_API.G_RET_STS_ERROR;
4572       RETURN;
4573     END IF;
4574 
4575     -- Update and set party_id = p_to_fk_id where pk = from_id
4576     UPDATE HZ_PARTY_SITE_USES
4577     SET
4578       STATUS = 'M',
4579       last_update_date = hz_utility_pub.last_update_date,
4580       last_updated_by = hz_utility_pub.user_id,
4581       last_update_login = hz_utility_pub.last_update_login,
4582       request_id =  hz_utility_pub.request_id,
4583       program_application_id = hz_utility_pub.program_application_id,
4584       program_id = hz_utility_pub.program_id,
4585       program_update_date = sysdate
4586     WHERE party_site_use_id = p_from_id;
4587 
4588     x_return_status := 'N';
4589 
4590   END IF;
4591 
4592 EXCEPTION
4593   WHEN OTHERS THEN
4594     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4595     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4596     FND_MSG_PUB.ADD;
4597     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4598 END do_party_site_use_transfer;
4599 
4600 PROCEDURE do_cust_account_site_transfer(
4601         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4602         x_to_id         IN OUT NOCOPY  NUMBER,
4603         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4604         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4605 	x_return_status IN OUT NOCOPY          VARCHAR2
4606 ) IS
4607 l_msg_data                     VARCHAR2(2000);
4608 l_msg_count                    NUMBER := 0;
4609 BEGIN
4610 
4611   IF (x_to_id <> FND_API.G_MISS_NUM AND
4612       x_to_id <> p_from_id) THEN
4613     UPDATE HZ_CUST_ACCT_SITES_ALL
4614     SET
4615       STATUS = 'M',
4616       last_update_date = hz_utility_pub.last_update_date,
4617       last_updated_by = hz_utility_pub.user_id,
4618       last_update_login = hz_utility_pub.last_update_login,
4619       request_id =  hz_utility_pub.request_id,
4620       program_application_id = hz_utility_pub.program_application_id,
4621       program_id = hz_utility_pub.program_id,
4622       program_update_date = sysdate
4623     WHERE cust_acct_site_id = p_from_id;
4624 
4625        HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
4626                     p_init_msg_list => FND_API.G_FALSE,
4627                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
4628                     p_old_owner_table_id   => p_from_id,
4629 	            p_new_owner_table_id   => x_to_id,
4630                     p_owner_table_name  =>'HZ_CUST_ACCT_SITES_ALL',
4631                     p_orig_system => null,
4632                     p_orig_system_reference => null,
4633                     p_reason_code => 'MERGED',
4634                     x_return_status => x_return_status,
4635                     x_msg_count =>l_msg_count,
4636                     x_msg_data  =>l_msg_data);
4637       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4638 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4639 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
4640 	FND_MSG_PUB.ADD;
4641 	x_return_status := FND_API.G_RET_STS_ERROR;
4642 	RETURN;
4643       END IF;
4644 
4645   ELSE
4646     UPDATE HZ_CUST_ACCT_SITES_ALL
4647     SET
4648       party_site_id = p_to_fk_id,
4649       last_update_date = hz_utility_pub.last_update_date,
4650       last_updated_by = hz_utility_pub.user_id,
4651       last_update_login = hz_utility_pub.last_update_login,
4652       request_id =  hz_utility_pub.request_id,
4653       program_application_id = hz_utility_pub.program_application_id,
4654       program_id = hz_utility_pub.program_id,
4655       program_update_date = sysdate
4656     WHERE cust_acct_site_id = p_from_id;
4657 
4658   END IF;
4659 
4660 EXCEPTION
4661   WHEN OTHERS THEN
4662     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4663     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4664     FND_MSG_PUB.ADD;
4665     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4666 END do_cust_account_site_transfer;
4667 
4668 PROCEDURE do_org_contact_transfer(
4669         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4670         x_to_id         IN OUT NOCOPY  NUMBER,
4671         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4672         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4673 	x_return_status IN OUT NOCOPY          VARCHAR2
4674 ) IS
4675 l_msg_data                     VARCHAR2(2000);
4676 l_msg_count                    NUMBER := 0;
4677 BEGIN
4678 
4679   IF (x_to_id <> FND_API.G_MISS_NUM AND
4680       x_to_id <> p_from_id) THEN
4681     UPDATE HZ_ORG_CONTACTS
4682     SET
4683       STATUS = 'M',
4684       last_update_date = hz_utility_pub.last_update_date,
4685       last_updated_by = hz_utility_pub.user_id,
4686       last_update_login = hz_utility_pub.last_update_login,
4687       request_id =  hz_utility_pub.request_id,
4688       program_application_id = hz_utility_pub.program_application_id,
4689       program_id = hz_utility_pub.program_id,
4690       program_update_date = sysdate
4691     WHERE org_contact_id = p_from_id;
4692 
4693     DELETE FROM HZ_DQM_SYNC_INTERFACE WHERE STAGED_FLAG='N' AND ENTITY='CONTACTS'
4694     AND RECORD_ID=p_from_id AND OPERATION <> 'D';
4695 
4696      HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
4697                     p_init_msg_list => FND_API.G_FALSE,
4698                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
4699                     p_old_owner_table_id   => p_from_id,
4700 	            p_new_owner_table_id   => x_to_id,
4701                     p_owner_table_name  =>'HZ_ORG_CONTACTS',
4702                     p_orig_system => null,
4703                     p_orig_system_reference => null,
4704                     p_reason_code => 'MERGED',
4705                     x_return_status => x_return_status,
4706                     x_msg_count =>l_msg_count,
4707                     x_msg_data  =>l_msg_data);
4708       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4709 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4710 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
4711 	FND_MSG_PUB.ADD;
4712 	x_return_status := FND_API.G_RET_STS_ERROR;
4713 	RETURN;
4714       END IF;
4715 
4716   ELSE
4717     UPDATE HZ_ORG_CONTACTS
4718     SET
4719       party_site_id = p_to_fk_id,
4720       last_update_date = hz_utility_pub.last_update_date,
4721       last_updated_by = hz_utility_pub.user_id,
4722       last_update_login = hz_utility_pub.last_update_login,
4723       request_id =  hz_utility_pub.request_id,
4724       program_application_id = hz_utility_pub.program_application_id,
4725       program_id = hz_utility_pub.program_id,
4726       program_update_date = sysdate
4727     WHERE org_contact_id = p_from_id;
4728 
4729   END IF;
4730 
4731 EXCEPTION
4732   WHEN OTHERS THEN
4733     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4734     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4735     FND_MSG_PUB.ADD;
4736     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4737 END do_org_contact_transfer;
4738 
4739 PROCEDURE do_org_contact_transfer2(
4740         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4741         x_to_id         IN OUT NOCOPY  NUMBER,
4742         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4743         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4744 	x_return_status IN OUT NOCOPY          VARCHAR2
4745 ) IS
4746 
4747 CURSOR c_merge_to_org_contact IS
4748   SELECT org_contact_id
4749   FROM HZ_ORG_CONTACTS
4750   WHERE party_relationship_id = p_to_fk_id;
4751 
4752 CURSOR c_org_cont_attributes(cp_org_cnt_id number) is
4753 	select
4754 	   DEPARTMENT_CODE
4755 	, DEPARTMENT
4756 	, TITLE
4757 	, JOB_TITLE
4758 	, MAIL_STOP
4759 	, CONTACT_KEY
4760 	, DECISION_MAKER_FLAG
4761 	, JOB_TITLE_CODE
4762 	, MANAGED_BY
4763 	, REFERENCE_USE_FLAG
4764 	, RANK
4765 	, NATIVE_LANGUAGE
4766 	, OTHER_LANGUAGE_1
4767 	, OTHER_LANGUAGE_2
4768 	from hz_org_contacts
4769 	where org_contact_id = cp_org_cnt_id;
4770 
4771 l_to_orgcontact_id NUMBER;
4772 l_msg_data                     VARCHAR2(2000);
4773 l_msg_count                    NUMBER := 0;
4774 
4775 L_FROM_DEPARTMENT_CODE  HZ_ORG_CONTACTS.DEPARTMENT_CODE%TYPE;
4776 L_FROM_DEPARTMENT  HZ_ORG_CONTACTS.DEPARTMENT%TYPE;
4777 L_FROM_TITLE    HZ_ORG_CONTACTS.TITLE%TYPE;
4778 L_FROM_JOB_TITLE   HZ_ORG_CONTACTS.JOB_TITLE%TYPE;
4779 L_FROM_MAIL_STOP  HZ_ORG_CONTACTS.MAIL_STOP%TYPE;
4780 L_FROM_CONTACT_KEY  HZ_ORG_CONTACTS.CONTACT_KEY%TYPE;
4781 L_FROM_DECISION_MAKER_FLAG HZ_ORG_CONTACTS.DECISION_MAKER_FLAG%TYPE;
4782 L_FROM_JOB_TITLE_CODE  HZ_ORG_CONTACTS.JOB_TITLE_CODE%TYPE;
4783 L_FROM_MANAGED_BY     HZ_ORG_CONTACTS.MANAGED_BY%TYPE;
4784 L_FROM_REFERENCE_USE_FLAG   HZ_ORG_CONTACTS.REFERENCE_USE_FLAG%TYPE;
4785 L_FROM_RANK   HZ_ORG_CONTACTS.RANK%TYPE;
4786 L_FROM_NATIVE_LANGUAGE  HZ_ORG_CONTACTS.NATIVE_LANGUAGE%TYPE;
4787 L_FROM_OTHER_LANGUAGE_1 HZ_ORG_CONTACTS.OTHER_LANGUAGE_1%TYPE;
4788 L_FROM_OTHER_LANGUAGE_2 HZ_ORG_CONTACTS.OTHER_LANGUAGE_2%TYPE;
4789 
4790 BEGIN
4791 
4792   IF (p_from_fk_id = p_to_fk_id) THEN
4793     RETURN;
4794   END IF;
4795 
4796   OPEN c_merge_to_org_contact;
4797   FETCH c_merge_to_org_contact INTO l_to_orgcontact_id;
4798   IF c_merge_to_org_contact%NOTFOUND THEN
4799     CLOSE c_merge_to_org_contact;
4800     UPDATE HZ_ORG_CONTACTS
4801     SET
4802       party_relationship_id = p_to_fk_id,
4803       last_update_date = hz_utility_pub.last_update_date,
4804       last_updated_by = hz_utility_pub.user_id,
4805       last_update_login = hz_utility_pub.last_update_login,
4806       request_id =  hz_utility_pub.request_id,
4807       program_application_id = hz_utility_pub.program_application_id,
4808       program_id = hz_utility_pub.program_id,
4809       program_update_date = sysdate
4810     WHERE org_contact_id = p_from_id;
4811   ELSE
4812     CLOSE c_merge_to_org_contact;
4813 
4814 -- bug 5100644: carry over not null org contact attributes
4815 
4816    open c_org_cont_attributes(p_from_id);
4817     fetch c_org_cont_attributes into
4818 		L_FROM_DEPARTMENT_CODE,
4819 		L_FROM_DEPARTMENT,
4820 		L_FROM_TITLE,
4821 		L_FROM_JOB_TITLE,
4822 		L_FROM_MAIL_STOP,
4823 		L_FROM_CONTACT_KEY,
4824 		L_FROM_DECISION_MAKER_FLAG,
4825 		L_FROM_JOB_TITLE_CODE,
4826 		L_FROM_MANAGED_BY,
4827 		L_FROM_REFERENCE_USE_FLAG,
4828 		L_FROM_RANK,
4829 		L_FROM_NATIVE_LANGUAGE,
4830 		L_FROM_OTHER_LANGUAGE_1,
4831 		L_FROM_OTHER_LANGUAGE_2;
4832     close c_org_cont_attributes;
4833 
4834     UPDATE HZ_ORG_CONTACTS
4835     SET
4836 	DEPARTMENT_CODE = DECODE(DEPARTMENT_CODE, NULL, L_FROM_DEPARTMENT_CODE,DEPARTMENT_CODE),
4837 	DEPARTMENT = DECODE(DEPARTMENT, NULL, L_FROM_DEPARTMENT,DEPARTMENT ),
4838 	TITLE = DECODE(TITLE, NULL, L_FROM_TITLE,TITLE),
4839 	JOB_TITLE = DECODE(JOB_TITLE, NULL, L_FROM_JOB_TITLE,JOB_TITLE),
4840 	MAIL_STOP = DECODE(MAIL_STOP, NULL, L_FROM_MAIL_STOP,MAIL_STOP),
4841 	CONTACT_KEY = DECODE(CONTACT_KEY, NULL, L_FROM_CONTACT_KEY,CONTACT_KEY),
4842 	DECISION_MAKER_FLAG = DECODE(DECISION_MAKER_FLAG, NULL, L_FROM_DECISION_MAKER_FLAG,DECISION_MAKER_FLAG),
4843 	JOB_TITLE_CODE = DECODE(JOB_TITLE_CODE, NULL, L_FROM_JOB_TITLE_CODE,JOB_TITLE_CODE),
4844 	MANAGED_BY = DECODE(MANAGED_BY, NULL, L_FROM_MANAGED_BY,MANAGED_BY),
4845 	REFERENCE_USE_FLAG = DECODE(REFERENCE_USE_FLAG, NULL, L_FROM_REFERENCE_USE_FLAG,REFERENCE_USE_FLAG),
4846 	RANK = DECODE(RANK, NULL, L_FROM_RANK,RANK),
4847 	NATIVE_LANGUAGE = DECODE(NATIVE_LANGUAGE, NULL, L_FROM_NATIVE_LANGUAGE,NATIVE_LANGUAGE),
4848 	OTHER_LANGUAGE_1 = DECODE(OTHER_LANGUAGE_1, NULL, L_FROM_OTHER_LANGUAGE_1,OTHER_LANGUAGE_1),
4849 	OTHER_LANGUAGE_2 = DECODE(OTHER_LANGUAGE_2, NULL, L_FROM_OTHER_LANGUAGE_2,OTHER_LANGUAGE_2)
4850 
4851     WHERE ORG_CONTACT_ID = l_to_orgcontact_id;
4852 
4853 
4854     UPDATE HZ_ORG_CONTACTS
4855     SET
4856       STATUS = 'M',
4857       last_update_date = hz_utility_pub.last_update_date,
4858       last_updated_by = hz_utility_pub.user_id,
4859       last_update_login = hz_utility_pub.last_update_login,
4860       request_id =  hz_utility_pub.request_id,
4861       program_application_id = hz_utility_pub.program_application_id,
4862       program_id = hz_utility_pub.program_id,
4863       program_update_date = sysdate
4864     WHERE org_contact_id = p_from_id;
4865 
4866     DELETE FROM HZ_DQM_SYNC_INTERFACE WHERE STAGED_FLAG='N' AND ENTITY='CONTACTS'
4867     AND RECORD_ID=p_from_id AND OPERATION <> 'D';
4868 
4869     HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
4870                     p_init_msg_list => FND_API.G_FALSE,
4871                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
4872                     p_old_owner_table_id   => p_from_id,
4873 	            p_new_owner_table_id   => l_to_orgcontact_id,
4874                     p_owner_table_name  =>'HZ_ORG_CONTACTS',
4875                     p_orig_system => null,
4876                     p_orig_system_reference => null,
4877                     p_reason_code => 'MERGED',
4878                     x_return_status => x_return_status,
4879                     x_msg_count =>l_msg_count,
4880                     x_msg_data  =>l_msg_data);
4881       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4882 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4883 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
4884 	FND_MSG_PUB.ADD;
4885 	x_return_status := FND_API.G_RET_STS_ERROR;
4886 	RETURN;
4887       END IF;
4888 
4889     ---for NOCOPY fix
4890     x_to_id := l_to_orgcontact_id;
4891   END IF;
4892 
4893 EXCEPTION
4894   WHEN OTHERS THEN
4895     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
4896     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4897     FND_MSG_PUB.ADD;
4898     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4899 END do_org_contact_transfer2;
4900 
4901 
4902 
4903 --4307667
4904 PROCEDURE do_party_usage_merge(
4905         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
4906         x_to_id         IN OUT NOCOPY  NUMBER,
4907         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
4908         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
4909         x_return_status IN OUT NOCOPY          VARCHAR2
4910 
4911 ) IS
4912 x_msg_count VARCHAR2(2000);
4913 x_msg_data  VARCHAR2(4000);
4914 p_init_msg_list VARCHAR2(32767);
4915 l_from_usage_code VARCHAR2(32767);
4916 p_party_usg_assignment_rec    HZ_PARTY_USG_ASSIGNMENT_PVT.party_usg_assignment_rec_type;
4917 BEGIN
4918 p_init_msg_list := 'T';
4919 
4920   begin
4921 	SELECT PARTY_USAGE_CODE INTO l_from_usage_code
4922 	FROM hz_party_usg_assignments
4923 	where party_usg_assignment_id = p_from_id;
4924   EXCEPTION
4925           WHEN NO_DATA_FOUND THEN RETURN;
4926   end;
4927 /*
4928 IF l_from_usage_code = 'DEFAULT' THEN
4929         UPDATE hz_party_usg_assignments
4930         SET status_flag = 'M',
4931         effective_end_date = TRUNC(sysdate)
4932         WHERE party_usg_assignment_id = p_from_id;
4933 ELSE
4934 */ -- bug 5007937
4935 --check for duplicate usage
4936         HZ_PARTY_USG_ASSIGNMENT_PVT.find_duplicates(p_from_id,p_to_fk_id,x_to_id);
4937         IF x_to_id IS NOT NULL THEN
4938         --duplicate usage exists
4939                 UPDATE hz_party_usg_assignments
4940                 SET status_flag = 'M',
4941                 effective_end_date = sysdate
4942                 WHERE party_usg_assignment_id = p_from_id;
4943 
4944         ELSE
4945         --usage doesnot exist create a new usage for merge-to party
4946         --to handle transition rule new usage is created using API with 0 validation level, instead of updating merge-from party assignment
4947                 p_party_usg_assignment_rec.party_id := p_to_fk_id;
4948 
4949                 SELECT
4950                  party_usage_code,
4951                  effective_start_date,
4952                  effective_end_date,
4953                  comments,
4954                  owner_table_name,
4955                  owner_table_id,
4956                  created_by_module,
4957                  attribute_category,
4958                  attribute1,
4959                  attribute2,
4960                  attribute3,
4961                  attribute4,
4962                  attribute5,
4963                  attribute6,
4964                  attribute7,
4965                  attribute8,
4966                  attribute9,
4967                  attribute10,
4968                  attribute11,
4969                  attribute12,
4970                  attribute13,
4971                  attribute14,
4972                  attribute15,
4973                  attribute16,
4974                  attribute17,
4975                  attribute18,
4976                  attribute19,
4977                  attribute20
4978                 INTO
4979                  p_party_usg_assignment_rec.party_usage_code,
4980                  p_party_usg_assignment_rec.effective_start_date,
4981                  p_party_usg_assignment_rec.effective_end_date,
4982                  p_party_usg_assignment_rec.comments,
4983                  p_party_usg_assignment_rec.owner_table_name,
4984                  p_party_usg_assignment_rec.owner_table_id,
4985                  p_party_usg_assignment_rec.created_by_module,
4986                  p_party_usg_assignment_rec.attribute_category,
4987                  p_party_usg_assignment_rec.attribute1,
4988                  p_party_usg_assignment_rec.attribute2,
4989                  p_party_usg_assignment_rec.attribute3,
4990                  p_party_usg_assignment_rec.attribute4,
4991                  p_party_usg_assignment_rec.attribute5,
4992                  p_party_usg_assignment_rec.attribute6,
4993                  p_party_usg_assignment_rec.attribute7,
4994                  p_party_usg_assignment_rec.attribute8,
4995                  p_party_usg_assignment_rec.attribute9,
4996                  p_party_usg_assignment_rec.attribute10,
4997                  p_party_usg_assignment_rec.attribute11,
4998                  p_party_usg_assignment_rec.attribute12,
4999                  p_party_usg_assignment_rec.attribute13,
5000                  p_party_usg_assignment_rec.attribute14,
5001                  p_party_usg_assignment_rec.attribute15,
5002                  p_party_usg_assignment_rec.attribute16,
5003                  p_party_usg_assignment_rec.attribute17,
5004                  p_party_usg_assignment_rec.attribute18,
5005                  p_party_usg_assignment_rec.attribute19,
5006                  p_party_usg_assignment_rec.attribute20
5007              FROM hz_party_usg_assignments
5008              WHERE party_usg_assignment_id = p_from_id;
5009 
5010              HZ_PARTY_USG_ASSIGNMENT_PVT.assign_party_usage
5011              (p_init_msg_list,0,p_party_usg_assignment_rec,x_return_status,x_msg_count,x_msg_data);
5012 
5013              IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
5014 
5015                  DELETE FROM hz_party_usg_assignments
5016                  WHERE party_usg_assignment_id = p_from_id;
5017 
5018               /* bug 5007937
5019 		 DELETE FROM hz_party_usg_assignments
5020                  WHERE party_id = p_to_fk_id
5021                  AND   party_usage_code = 'DEFAULT';
5022 	      */
5023 
5024              END IF;
5025 
5026         END IF; --x_to_assignment_id
5027 -- END IF; --l_from_usage_code
5028 
5029 EXCEPTION
5030   WHEN OTHERS THEN
5031     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
5032     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5033     FND_MSG_PUB.ADD;
5034     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5035 END do_party_usage_merge;
5036 
5037 
5038 PROCEDURE do_party_reln_obj_merge(
5039         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
5040         x_to_id         IN OUT NOCOPY  NUMBER,
5041         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
5042         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
5043         x_return_status IN OUT NOCOPY          VARCHAR2
5044 
5045 ) IS
5046 
5047 CURSOR c_party(cp_party_reln_id NUMBER) IS
5048   SELECT party_id
5049   FROM HZ_RELATIONSHIPS
5050   WHERE  relationship_id = cp_party_reln_id
5051   AND DIRECTIONAL_FLAG = 'F'
5052   and status in ('A','I'); -- bug 5094383
5053 
5054 CURSOR c_to_party_reln IS
5055   SELECT relationship_id
5056   FROM   HZ_RELATIONSHIPS
5057   WHERE  relationship_id = x_to_id
5058   FOR UPDATE NOWAIT;
5059 
5060 cursor c_start_end_date is
5061  SELECT start_date, nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')), actual_content_source, --5404244
5062          nvl(request_id , -1), NVL(status, 'A')
5063          FROM   HZ_RELATIONSHIPS
5064          WHERE  relationship_id = p_from_id
5065          AND DIRECTIONAL_FLAG='F';
5066 
5067 CURSOR c_check_valid_merge(from_start_date date, from_end_date date, from_cont_source_type VARCHAR2, from_cont_source VARCHAR2) IS
5068   SELECT relationship_id, nvl(request_id,-1), NVL(status, 'A')
5069   FROM   HZ_RELATIONSHIPS
5070   WHERE  object_id = p_to_fk_id
5071   AND actual_content_source = DECODE(from_cont_source_type, 'PURCHASED', from_cont_source, actual_content_source) --5404244
5072   AND actual_content_source <> 'DNB'
5073   AND subject_id = (
5074          SELECT SUBJECT_ID
5075          FROM   HZ_RELATIONSHIPS
5076          WHERE  relationship_id = p_from_id
5077          AND DIRECTIONAL_FLAG='F')
5078   AND subject_id NOT IN
5079   ((SELECT from_party_id FROM hz_merge_parties WHERE to_party_id = p_to_fk_id AND merge_status='PENDING' )) --bug 4867151
5080   AND subject_id NOT IN
5081   ((SELECT to_party_id FROM hz_merge_parties WHERE to_party_id = p_to_fk_id AND merge_status='PENDING' )) --bug 4867151
5082   AND relationship_type||relationship_code  = (
5083          SELECT relationship_type||relationship_code -- Bug No: 4571969
5084          FROM   HZ_RELATIONSHIPS
5085          WHERE  relationship_id = p_from_id
5086          AND DIRECTIONAL_FLAG='F')
5087   AND DIRECTIONAL_FLAG = 'F'
5088   AND ((start_date between from_start_date and from_end_date)
5089           or (nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')) between from_start_date and from_end_date)
5090           or(start_date<from_start_date and nvl(end_date,to_date('12/31/4712','MM/DD/YYYY'))>from_end_date))
5091   AND status IN ('A','I'); --bug 5260367
5092 
5093 l_party_rel_id NUMBER;
5094 l_from_party_id	NUMBER;
5095 l_to_party_id	NUMBER;
5096 l_dup_reln_id   NUMBER;
5097 l_request_id    NUMBER;
5098 l_from_last_upd_date DATE;
5099 l_to_last_upd_date DATE;
5100 l_from_party_reln_type VARCHAR2(255);
5101 l_merge_to_id NUMBER;
5102 l_temp NUMBER;
5103 from_start_date date;
5104 from_end_date date;
5105 
5106 --Bug 2619913 Do not allow self relationships creation unless
5107 --defined in the relationship type table
5108 
5109 l_subject_id NUMBER;
5110 l_rel_type HZ_RELATIONSHIPS.RELATIONSHIP_TYPE%TYPE;
5111 l_rel_code HZ_RELATIONSHIPS.RELATIONSHIP_CODE%TYPE;
5112 l_subject_type HZ_RELATIONSHIPS.SUBJECT_TYPE%TYPE;
5113 l_object_type HZ_RELATIONSHIPS.OBJECT_TYPE%TYPE;
5114 l_self_rel_flag VARCHAR2(1);
5115 
5116 l_rel_party_id        HZ_RELATIONSHIPS.PARTY_ID%TYPE;
5117 l_new_obj_party_name HZ_PARTIES.PARTY_NAME%TYPE;
5118 l_subject_name         HZ_PARTIES.PARTY_NAME%TYPE;
5119 l_rel_party_number    HZ_PARTIES.PARTY_NUMBER%TYPE;
5120 from_cont_source    HZ_RELATIONSHIPS.ACTUAL_CONTENT_SOURCE%TYPE; --5404244
5121 from_cont_source_type HZ_ORIG_SYSTEMS_B.ORIG_SYSTEM_TYPE%TYPE;
5122 
5123 --6696774 Start
5124 l_par_exists VARCHAR2(1);
5125 l_direction_code HZ_RELATIONSHIPS.DIRECTION_CODE%TYPE;
5126 --6696774 end
5127 l_from_request_id     NUMBER;
5128 l_to_rel_status   VARCHAR2(1);
5129 l_from_rel_status VARCHAR2(1);
5130 
5131 BEGIN
5132 
5133   IF (x_to_id <> FND_API.G_MISS_NUM AND x_to_id <> p_from_id) THEN
5134     OPEN c_party(p_from_id);
5135     FETCH c_party INTO l_from_party_id;
5136     IF c_party%NOTFOUND THEN
5137       l_from_party_id := NULL;
5138     END IF;
5139     CLOSE c_party;
5140 
5141     OPEN c_party(x_to_id);
5142     FETCH c_party INTO l_to_party_id;
5143     IF c_party%NOTFOUND THEN
5144       l_to_party_id := NULL;
5145     END IF;
5146     CLOSE c_party;
5147 
5148     IF l_to_party_id IS NOT NULL AND l_from_party_id IS NOT NULL
5149        AND l_from_party_id <> l_to_party_id THEN
5150       FND_MESSAGE.SET_NAME('AR', 'HZ_RELN_MERGE_NOT_ALLOWED');
5151       FND_MESSAGE.SET_TOKEN('FROMID',p_from_id);
5152       FND_MESSAGE.SET_TOKEN('TOID',x_to_id);
5153       FND_MSG_PUB.ADD;
5154       x_return_status := FND_API.G_RET_STS_ERROR;
5155       RETURN;
5156     END IF;
5157 
5158     IF l_from_party_id IS NOT NULL THEN
5159       OPEN c_to_party_reln;
5160       UPDATE HZ_RELATIONSHIPS
5161       SET
5162         party_id = l_from_party_id,
5163         last_update_date = hz_utility_pub.last_update_date,
5164         last_updated_by = hz_utility_pub.user_id,
5165         last_update_login = hz_utility_pub.last_update_login,
5166         request_id =  hz_utility_pub.request_id,
5167         program_application_id = hz_utility_pub.program_application_id,
5168         program_id = hz_utility_pub.program_id,
5169         program_update_date = sysdate
5170       WHERE relationship_id = x_to_id;
5171       CLOSE c_to_party_reln;
5172     END IF;
5173 
5174     UPDATE HZ_RELATIONSHIPS
5175     SET
5176       STATUS = 'M',
5177       end_date =  sysdate,
5178       last_update_date = hz_utility_pub.last_update_date,
5179       last_updated_by = hz_utility_pub.user_id,
5180       last_update_login = hz_utility_pub.last_update_login,
5181       request_id =  hz_utility_pub.request_id,
5182       program_application_id = hz_utility_pub.program_application_id,
5183       program_id = hz_utility_pub.program_id,
5184       program_update_date = sysdate
5185     WHERE relationship_id = p_from_id;
5186 
5187 --4307667 merge usages with owner_table_name 'HZ_RELATIONSHIPS'
5188     UPDATE hz_party_usg_assignments
5189     SET status_flag = 'M',
5190         effective_end_date = trunc(sysdate)
5191     WHERE owner_table_id = p_from_id
5192     AND   owner_table_name = 'HZ_RELATIONSHIPS'
5193     AND   party_id = p_from_fk_id;
5194 
5195     ----Start of DlProject Phase2--------------------
5196      do_hierarchy_nodes_merge(p_from_id => p_from_id,
5197 			      p_from_fk_id => p_from_fk_id,
5198 			      p_to_fk_id => p_to_fk_id,
5199 			      x_return_status =>x_return_status,
5200 			      p_action => 'M',
5201 			      p_sub_obj_merge =>'OBJ'
5202 			      );
5203     ----End of DlProject Phase2--------------------
5204   ELSE
5205 
5206     open c_start_end_date;
5207      fetch c_start_end_date into from_start_date,from_end_date,from_cont_source,l_from_request_id, l_from_rel_status;
5208     close c_start_end_date;
5209 
5210    IF (l_from_request_id <> hz_utility_pub.request_id) THEN
5211 
5212     SELECT orig_system_type INTO from_cont_source_type --5404244
5213     FROM HZ_ORIG_SYSTEMS_B
5214     WHERE orig_system = from_cont_source;
5215     OPEN c_check_valid_merge(from_start_date, from_end_date, from_cont_source_type,from_cont_source);
5216     FETCH c_check_valid_merge INTO l_dup_reln_id, l_request_id, l_to_rel_status;
5217     IF ((c_check_valid_merge%FOUND) AND
5218        (l_request_id <> hz_utility_pub.request_id) AND
5219        (l_to_rel_status = 'A' OR (l_to_rel_status = 'I' AND l_from_rel_status = 'I'))
5220        AND (HZ_PARTY_MERGE.g_automerge_flag = 'N') ) THEN
5221       CLOSE c_check_valid_merge;
5222      FND_MESSAGE.SET_NAME('AR', 'HZ_RELN_TRANSFER_NOT_ALLOWED');
5223       FND_MESSAGE.SET_TOKEN('FROMID',p_from_id);
5224       FND_MSG_PUB.ADD;
5225       x_return_status := FND_API.G_RET_STS_ERROR;
5226       CLOSE c_check_valid_merge;
5227       RETURN;
5228 
5229     ELSIF c_check_valid_merge%FOUND AND HZ_PARTY_MERGE.g_automerge_flag = 'Y' AND l_to_rel_status = 'A' THEN
5230 
5231     --bug 6996390
5232     ----Start of DlProject Phase2--------------------
5233      do_hierarchy_nodes_merge(p_from_id => p_from_id,
5234 			      p_from_fk_id => p_from_fk_id,
5235 			      p_to_fk_id => p_to_fk_id,
5236 			      x_return_status =>x_return_status,
5237 			      p_action => 'I',
5238 			      p_sub_obj_merge =>'OBJ'
5239 			      );
5240     ----End of DlProject Phase2--------------------
5241 
5242     UPDATE HZ_RELATIONSHIPS
5243     SET
5244       object_id = p_to_fk_id,
5245       status    = 'I',
5246       end_date = sysdate,
5247       last_update_date = hz_utility_pub.last_update_date,
5248       last_updated_by = hz_utility_pub.user_id,
5249       last_update_login = hz_utility_pub.last_update_login,
5250       request_id =  hz_utility_pub.request_id,
5251       program_application_id = hz_utility_pub.program_application_id,
5252       program_id = hz_utility_pub.program_id,
5253       program_update_date = sysdate
5254     WHERE relationship_id = p_from_id
5255     AND DIRECTIONAL_FLAG = 'F'
5256     RETURNING  subject_id, relationship_type, relationship_code,
5257                subject_type, object_type, party_id
5258     into l_subject_id, l_rel_type, l_rel_code,
5259          l_subject_type , l_object_type , l_rel_party_id;
5260 
5261     UPDATE HZ_RELATIONSHIPS
5262     SET
5263       subject_id = p_to_fk_id,
5264       status    = 'I',
5265       end_date = sysdate,
5266       last_update_date = hz_utility_pub.last_update_date,
5267       last_updated_by = hz_utility_pub.user_id,
5268       last_update_login = hz_utility_pub.last_update_login,
5269       request_id =  hz_utility_pub.request_id,
5270       program_application_id = hz_utility_pub.program_application_id,
5271       program_id = hz_utility_pub.program_id,
5272       program_update_date = sysdate
5273     WHERE relationship_id = p_from_id
5274     AND DIRECTIONAL_FLAG = 'B';
5275 
5276       ---Bug# 2688231 After transferring the reln,the name
5277       --- of the relationship party should also be changed
5278 
5279    if l_rel_party_id is not null then
5280 
5281       select sub.party_name , obj.party_name , rel.party_number
5282       into l_subject_name , l_new_obj_party_name , l_rel_party_number
5283       from hz_parties sub , hz_parties obj , hz_parties rel
5284       where sub.party_id = l_subject_id
5285       and   obj.party_id = p_to_fk_id
5286       and   rel.party_id = l_rel_party_id;
5287 
5288       UPDATE HZ_PARTIES
5289       SET PARTY_NAME = 	SUBSTRB(l_subject_name || '-' ||
5290                                 l_new_obj_party_name  || '-' ||
5291                                 l_rel_party_number, 1, 360)
5292       WHERE party_id = l_rel_party_id;
5293 
5294    end if;
5295 
5296    CLOSE c_check_valid_merge;
5297    RETURN;
5298 
5299    END IF;
5300    CLOSE c_check_valid_merge;
5301     END IF; --l_from_request_id
5302 
5303     --6696774 Start
5304     SELECT subject_id, relationship_type, relationship_code,subject_type,object_type,direction_code into l_subject_id, l_rel_type, l_rel_code,
5305            l_subject_type, l_object_type, l_direction_code
5306     FROM HZ_RELATIONSHIPS
5307     WHERE relationship_id = p_from_id
5308     AND   directional_flag = 'F';
5309 
5310     SELECT allow_relate_to_self_flag
5311     INTO   l_self_rel_flag
5312     FROM   HZ_RELATIONSHIP_TYPES
5313     WHERE RELATIONSHIP_TYPE = l_rel_type
5314     AND FORWARD_REL_CODE = l_rel_code
5315     AND SUBJECT_TYPE = l_subject_type
5316     AND OBJECT_TYPE =  l_object_type;
5317 
5318     l_par_exists := 'N';
5319 
5320     BEGIN
5321 
5322         SELECT 'Y' into l_par_exists
5323         FROM hz_hierarchy_nodes
5324         WHERE child_id = l_subject_id
5325         AND   parent_id = p_to_fk_id
5326         AND   l_direction_code = 'P'
5327         AND rownum = 1;
5328 
5329     EXCEPTION
5330         WHEN NO_DATA_FOUND THEN
5331            null;
5332     END;
5333 
5334     IF (l_subject_id <> p_to_fk_id OR l_self_rel_flag = 'Y') AND l_par_exists = 'N' THEN
5335 --6696774 END;
5336 
5337      ----Start of DlProject Phase2--------------------
5338      do_hierarchy_nodes_merge(p_from_id => p_from_id,
5339 			      p_from_fk_id => p_from_fk_id,
5340 			      p_to_fk_id => p_to_fk_id,
5341 			      x_return_status =>x_return_status,
5342 			      p_action => 'T',
5343 			      p_sub_obj_merge =>'OBJ'
5344 			      );
5345     ----End of DlProject Phase2--------------------
5346     UPDATE HZ_RELATIONSHIPS
5347     SET
5348       object_id = p_to_fk_id,
5349       last_update_date = hz_utility_pub.last_update_date,
5350       last_updated_by = hz_utility_pub.user_id,
5351       last_update_login = hz_utility_pub.last_update_login,
5352       request_id =  hz_utility_pub.request_id,
5353       program_application_id = hz_utility_pub.program_application_id,
5354       program_id = hz_utility_pub.program_id,
5355       program_update_date = sysdate
5356     WHERE relationship_id = p_from_id
5357     AND DIRECTIONAL_FLAG = 'F'
5358     RETURNING  subject_id, relationship_type, relationship_code,
5359                subject_type, object_type, party_id
5360     into l_subject_id, l_rel_type, l_rel_code,
5361          l_subject_type , l_object_type , l_rel_party_id;
5362 
5363     UPDATE HZ_RELATIONSHIPS
5364     SET
5365       subject_id = p_to_fk_id,
5366       last_update_date = hz_utility_pub.last_update_date,
5367       last_updated_by = hz_utility_pub.user_id,
5368       last_update_login = hz_utility_pub.last_update_login,
5369       request_id =  hz_utility_pub.request_id,
5370       program_application_id = hz_utility_pub.program_application_id,
5371       program_id = hz_utility_pub.program_id,
5372       program_update_date = sysdate
5373     WHERE relationship_id = p_from_id
5374     AND DIRECTIONAL_FLAG = 'B';
5375 
5376       ---Bug# 2688231 After transferring the reln,the name
5377       --- of the relationship party should also be changed
5378 
5379    if l_rel_party_id is not null then
5380 
5381       select sub.party_name , obj.party_name , rel.party_number
5382       into l_subject_name , l_new_obj_party_name , l_rel_party_number
5383       from hz_parties sub , hz_parties obj , hz_parties rel
5384       where sub.party_id = l_subject_id
5385       and   obj.party_id = p_to_fk_id
5386       and   rel.party_id = l_rel_party_id;
5387 
5388       UPDATE HZ_PARTIES
5389       SET PARTY_NAME = 	SUBSTRB(l_subject_name || '-' ||
5390                                 l_new_obj_party_name  || '-' ||
5391                                 l_rel_party_number, 1, 360)
5392       WHERE party_id = l_rel_party_id;
5393 
5394    end if;
5395 
5396     --Check if the object_id and subject_id are same and the
5397     ELSIF (l_subject_id = p_to_fk_id AND l_self_rel_flag = 'N') OR l_par_exists = 'Y' THEN --bug 6696774
5398 
5399        IF  l_self_rel_flag = 'N' THEN
5400          --Inactivate the relationships BOTH FORWARD AND BACKWARD
5401          UPDATE HZ_RELATIONSHIPS
5402          SET
5403          STATUS = 'I',
5404          END_DATE = sysdate,
5405          last_update_date = hz_utility_pub.last_update_date,
5406          last_updated_by = hz_utility_pub.user_id,
5407          last_update_login = hz_utility_pub.last_update_login,
5408          request_id =  hz_utility_pub.request_id,
5409          program_application_id = hz_utility_pub.program_application_id,
5410          program_id = hz_utility_pub.program_id,
5411          program_update_date = sysdate
5412          WHERE relationship_id = p_from_id;
5413 	  ---Start of Bug:3880218----
5414 	 IF l_rel_party_id is not null THEN
5415 		 UPDATE HZ_PARTIES
5416 		 SET STATUS = 'I',
5417 		     last_update_date = hz_utility_pub.last_update_date,
5418 		     last_updated_by = hz_utility_pub.user_id,
5419 		     last_update_login = hz_utility_pub.last_update_login,
5420 		     request_id =  hz_utility_pub.request_id,
5421 		     program_application_id = hz_utility_pub.program_application_id,
5422 		     program_id = hz_utility_pub.program_id,
5423 		     program_update_date = sysdate
5424 		 WHERE PARTY_ID = l_rel_party_id;
5425 	 END IF;
5426 	 ----End of Bug:3880218----
5427 	 ----Start of DlProject Phase2--------------------
5428          do_hierarchy_nodes_merge(p_from_id => p_from_id,
5429 			      p_from_fk_id => p_from_fk_id,
5430 			      p_to_fk_id => p_to_fk_id,
5431 			      x_return_status =>x_return_status,
5432 			      p_action => 'I',
5433             p_sub_obj_merge =>'OBJ'
5434 			      );
5435          ----End of DlProject Phase2--------------------
5436        ELSE
5437 --bug 4867151--start
5438 	      IF l_rel_party_id is not null THEN
5439 		      UPDATE HZ_PARTIES
5440 		      SET STATUS = 'M',
5441 		          last_update_date = hz_utility_pub.last_update_date,
5442 		          last_updated_by = hz_utility_pub.user_id,
5443 		          last_update_login = hz_utility_pub.last_update_login,
5444 		          request_id =  hz_utility_pub.request_id,
5445 		          program_application_id = hz_utility_pub.program_application_id,
5446 		          program_id = hz_utility_pub.program_id,
5447 		          program_update_date = sysdate
5448 		      WHERE PARTY_ID in (select party_id from hz_relationships where subject_id=p_to_fk_id
5449 	      and object_id=p_to_fk_id and relationship_id <>p_from_id and status='A'
5450         AND ((start_date between from_start_date and from_end_date)
5451         or (nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')) between from_start_date and from_end_date)
5452         or(start_date<from_start_date and nvl(end_date,to_date('12/31/4712','MM/DD/YYYY'))>from_end_date)));
5453 	      END IF;
5454 
5455       	 UPDATE HZ_RELATIONSHIPS
5456          SET
5457          STATUS = 'M',
5458          END_DATE = sysdate,
5459          last_update_date = hz_utility_pub.last_update_date,
5460          last_updated_by = hz_utility_pub.user_id,
5461          last_update_login = hz_utility_pub.last_update_login,
5462          request_id =  hz_utility_pub.request_id,
5463          program_application_id = hz_utility_pub.program_application_id,
5464          program_id = hz_utility_pub.program_id,
5465          program_update_date = sysdate
5466          WHERE relationship_id in (select relationship_id from hz_relationships where subject_id=p_to_fk_id
5467 	      and object_id=p_to_fk_id and relationship_id <>p_from_id and status='A'
5468         AND ((start_date between from_start_date and from_end_date)
5469         or (nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')) between from_start_date and from_end_date)
5470         or(start_date<from_start_date and nvl(end_date,to_date('12/31/4712','MM/DD/YYYY'))>from_end_date)));
5471 
5472 
5473          do_hierarchy_nodes_merge(p_from_id => p_from_id,
5474 			      p_from_fk_id => p_from_fk_id,
5475 			      p_to_fk_id => p_to_fk_id,
5476 			      x_return_status =>x_return_status,
5477 			      p_action => 'M'
5478 			      );
5479 
5480 --bug 4867151--end
5481       END IF;  --l_self_rel_flag
5482 
5483       END IF;    --l_subject_id = p_to_fk_id
5484 
5485   END IF;
5486 
5487 EXCEPTION
5488   WHEN OTHERS THEN
5489     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
5490     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5491     FND_MSG_PUB.ADD;
5492     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5493 END do_party_reln_obj_merge;
5494 
5495 PROCEDURE do_party_reln_subj_merge(
5496         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
5497         x_to_id         IN OUT NOCOPY  NUMBER,
5498         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
5499         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
5500         x_return_status IN OUT NOCOPY          VARCHAR2
5501 
5502 ) IS
5503 
5504 CURSOR c_party(cp_party_reln_id NUMBER) IS
5505   SELECT party_id
5506   FROM HZ_RELATIONSHIPS
5507   WHERE  relationship_id = cp_party_reln_id
5508   AND DIRECTIONAL_FLAG = 'F'
5509   and status in ('A','I'); -- bug 5094383
5510 
5511 CURSOR c_to_party_reln IS
5512   SELECT relationship_id
5513   FROM   HZ_RELATIONSHIPS
5514   WHERE  relationship_id = x_to_id
5515   FOR UPDATE NOWAIT;
5516 
5517 cursor c_start_end_date is
5518  SELECT start_date, nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')), actual_content_source, --5404244
5519         nvl(request_id,-1),
5520         NVL(status, 'A')
5521          FROM   HZ_RELATIONSHIPS
5522          WHERE  relationship_id = p_from_id
5523          AND DIRECTIONAL_FLAG='F';
5524 
5525 CURSOR c_check_valid_merge(from_start_date date, from_end_date date, from_cont_source_type VARCHAR2, from_cont_source VARCHAR2) IS
5526   SELECT relationship_id, nvl(request_id,-1), NVL(status, 'A')
5527   FROM   HZ_RELATIONSHIPS
5528   WHERE  subject_id = p_to_fk_id
5529   AND actual_content_source = DECODE(from_cont_source_type, 'PURCHASED', from_cont_source, actual_content_source) --5404244
5530   AND actual_content_source <> 'DNB'
5531   AND object_id = (
5532          SELECT OBJECT_ID
5533          FROM   HZ_RELATIONSHIPS
5534          WHERE  relationship_id = p_from_id
5535          AND DIRECTIONAL_FLAG='F')
5536   AND  object_id NOT IN
5537   ((SELECT from_party_id FROM hz_merge_parties WHERE to_party_id = p_to_fk_id AND merge_status='PENDING' )) --bug 4867151
5538   AND object_id NOT IN
5539   ((SELECT to_party_id FROM hz_merge_parties WHERE to_party_id = p_to_fk_id AND merge_status='PENDING' )) --bug 4867151
5540   AND relationship_type||relationship_code  = (
5541          SELECT relationship_type||relationship_code  -- Bug No: 4571969
5542          FROM   HZ_RELATIONSHIPS
5543          WHERE  relationship_id = p_from_id
5544          AND DIRECTIONAL_FLAG='F')
5545   AND DIRECTIONAL_FLAG = 'F'
5546   AND ((start_date between from_start_date and from_end_date)
5547           or (nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')) between from_start_date and from_end_date)
5548           or(start_date<from_start_date and nvl(end_date,to_date('12/31/4712','MM/DD/YYYY'))>from_end_date))
5549   AND status IN ('A','I'); --bug 5260367
5550 
5551 l_party_rel_id NUMBER;
5552 l_from_party_id NUMBER;
5553 l_to_party_id   NUMBER;
5554 l_dup_reln_id   NUMBER;
5555 l_request_id    NUMBER;
5556 l_from_last_upd_date DATE;
5557 l_to_last_upd_date DATE;
5558 l_from_party_reln_type VARCHAR2(255);
5559 l_merge_to_id NUMBER;
5560 l_temp NUMBER;
5561 from_start_date date;
5562 from_end_date date;
5563 --Bug 2619913 Do not allow self relationships creation unless
5564 --defined in the relationship type table
5565 
5566 l_object_id NUMBER;
5567 l_rel_type HZ_RELATIONSHIPS.RELATIONSHIP_TYPE%TYPE;
5568 l_rel_code HZ_RELATIONSHIPS.RELATIONSHIP_CODE%TYPE;
5569 l_subject_type HZ_RELATIONSHIPS.SUBJECT_TYPE%TYPE;
5570 l_object_type HZ_RELATIONSHIPS.OBJECT_TYPE%TYPE;
5571 l_self_rel_flag VARCHAR2(1);
5572 
5573 l_rel_party_id        HZ_RELATIONSHIPS.PARTY_ID%TYPE;
5574 l_new_subj_party_name HZ_PARTIES.PARTY_NAME%TYPE;
5575 l_object_name         HZ_PARTIES.PARTY_NAME%TYPE;
5576 l_rel_party_number    HZ_PARTIES.PARTY_NUMBER%TYPE;
5577 from_cont_source    HZ_RELATIONSHIPS.ACTUAL_CONTENT_SOURCE%TYPE; --5404244
5578 from_cont_source_type HZ_ORIG_SYSTEMS_B.ORIG_SYSTEM_TYPE%TYPE;
5579 
5580 --6696774 start
5581 l_par_exists          VARCHAR2(1);
5582 l_direction_code      HZ_RELATIONSHIPS.DIRECTION_CODE%TYPE;
5583 --6696774 start END
5584 l_from_request_id     NUMBER;
5585 l_to_rel_status   VARCHAR2(1);
5586 l_from_rel_status VARCHAR2(1);
5587 
5588 BEGIN
5589 
5590   IF (x_to_id <> FND_API.G_MISS_NUM AND x_to_id <> p_from_id) THEN
5591 
5592     OPEN c_party(p_from_id);
5593     FETCH c_party INTO l_from_party_id;
5594     IF c_party%NOTFOUND THEN
5595       l_from_party_id := NULL;
5596     END IF;
5597     CLOSE c_party;
5598 
5599     OPEN c_party(x_to_id);
5600     FETCH c_party INTO l_from_party_id;
5601     IF c_party%NOTFOUND THEN
5602       l_to_party_id := NULL;
5603     END IF;
5604     CLOSE c_party;
5605 
5606 
5607     IF l_to_party_id IS NOT NULL AND l_from_party_id IS NOT NULL
5608        AND l_from_party_id <> l_to_party_id THEN
5609       FND_MESSAGE.SET_NAME('AR', 'HZ_RELN_MERGE_NOT_ALLOWED');
5610       FND_MESSAGE.SET_TOKEN('FROMID',p_from_id);
5611       FND_MESSAGE.SET_TOKEN('TOID',x_to_id);
5612       FND_MSG_PUB.ADD;
5613       x_return_status := FND_API.G_RET_STS_ERROR;
5614       RETURN;
5615     END IF;
5616 
5617     IF l_from_party_id IS NOT NULL THEN
5618       OPEN c_to_party_reln;
5619       UPDATE HZ_RELATIONSHIPS
5620       SET
5621         party_id = l_from_party_id,
5622         last_update_date = hz_utility_pub.last_update_date,
5623         last_updated_by = hz_utility_pub.user_id,
5624         last_update_login = hz_utility_pub.last_update_login,
5625         request_id =  hz_utility_pub.request_id,
5626         program_application_id = hz_utility_pub.program_application_id,
5627         program_id = hz_utility_pub.program_id,
5628         program_update_date = sysdate
5629       WHERE relationship_id = x_to_id;
5630       CLOSE c_to_party_reln;
5631     END IF;
5632 
5633     UPDATE HZ_RELATIONSHIPS
5634     SET
5635       STATUS = 'M',
5636       end_date = sysdate,
5637       last_update_date = hz_utility_pub.last_update_date,
5638       last_updated_by = hz_utility_pub.user_id,
5639       last_update_login = hz_utility_pub.last_update_login,
5640       request_id =  hz_utility_pub.request_id,
5641       program_application_id = hz_utility_pub.program_application_id,
5642       program_id = hz_utility_pub.program_id,
5643       program_update_date = sysdate
5644     WHERE relationship_id = p_from_id;
5645 
5646 
5647 --4307667 merge usages with owner_table_name 'HZ_RELATIONSHIPS'
5648     UPDATE hz_party_usg_assignments
5649     SET status_flag = 'M',
5650         effective_end_date = trunc(sysdate)
5651     WHERE owner_table_id = p_from_id
5652     AND   owner_table_name = 'HZ_RELATIONSHIPS'
5653     AND   party_id = p_from_fk_id;
5654 
5655     ----Start of DlProject Phase2--------------------
5656      do_hierarchy_nodes_merge(p_from_id => p_from_id,
5657 			      p_from_fk_id => p_from_fk_id,
5658 			      p_to_fk_id => p_to_fk_id,
5659 			      x_return_status =>x_return_status,
5660 			      p_action => 'M',
5661 			      p_sub_obj_merge =>'SUB'
5662 			      );
5663     ----End of DlProject Phase2--------------------
5664 
5665   ELSE
5666     open c_start_end_date;
5667      fetch c_start_end_date into from_start_date,from_end_date,from_cont_source, l_from_request_id, l_from_rel_status;
5668     close c_start_end_date;
5669 
5670    IF (l_from_request_id <> hz_utility_pub.request_id) THEN
5671 
5672     SELECT orig_system_type INTO from_cont_source_type --5404244
5673     FROM HZ_ORIG_SYSTEMS_B
5674     WHERE orig_system = from_cont_source;
5675 
5676     OPEN c_check_valid_merge(from_start_date,from_end_date,from_cont_source_type,from_cont_source);
5677 
5678     FETCH c_check_valid_merge INTO l_dup_reln_id, l_request_id,  l_to_rel_status;
5679     IF ((c_check_valid_merge%FOUND) AND
5680        (l_request_id <> hz_utility_pub.request_id) AND
5681        (l_to_rel_status = 'A' OR (l_to_rel_status = 'I' AND l_from_rel_status = 'I'))
5682        AND (HZ_PARTY_MERGE.g_automerge_flag = 'N')) THEN
5683 
5684       FND_MESSAGE.SET_NAME('AR', 'HZ_RELN_TRANSFER_NOT_ALLOWED');
5685       FND_MESSAGE.SET_TOKEN('FROMID',p_from_id);
5686       FND_MSG_PUB.ADD;
5687       x_return_status := FND_API.G_RET_STS_ERROR;
5688       CLOSE c_check_valid_merge;
5689       RETURN;
5690 
5691     ELSIF c_check_valid_merge%FOUND AND HZ_PARTY_MERGE.g_automerge_flag = 'Y' AND l_to_rel_status = 'A' THEN
5692 
5693      --bug 6996390
5694      ----Start of DlProject Phase2--------------------
5695      do_hierarchy_nodes_merge(p_from_id => p_from_id,
5696 			      p_from_fk_id => p_from_fk_id,
5697 			      p_to_fk_id => p_to_fk_id,
5698 			      x_return_status =>x_return_status,
5699 			      p_action => 'I',
5700 			      p_sub_obj_merge =>'SUB'
5701 			      );
5702     ----End of DlProject Phase2--------------------
5703 
5704     UPDATE HZ_RELATIONSHIPS
5705     SET
5706       subject_id = p_to_fk_id,
5707       status = 'I',
5708       end_date = sysdate,
5709       last_update_date = hz_utility_pub.last_update_date,
5710       last_updated_by = hz_utility_pub.user_id,
5711       last_update_login = hz_utility_pub.last_update_login,
5712       request_id =  hz_utility_pub.request_id,
5713       program_application_id = hz_utility_pub.program_application_id,
5714       program_id = hz_utility_pub.program_id,
5715       program_update_date = sysdate
5716     WHERE relationship_id = p_from_id
5717     AND DIRECTIONAL_FLAG = 'F'
5718     RETURNING  object_id, relationship_type, relationship_code ,
5719                subject_type, object_type, party_id
5720     into l_object_id, l_rel_type, l_rel_code,
5721          l_subject_type , l_object_type, l_rel_party_id;
5722 
5723     UPDATE HZ_RELATIONSHIPS
5724     SET
5725       object_id = p_to_fk_id,
5726       status = 'I',
5727       end_date = sysdate,
5728       last_update_date = hz_utility_pub.last_update_date,
5729       last_updated_by = hz_utility_pub.user_id,
5730       last_update_login = hz_utility_pub.last_update_login,
5731       request_id =  hz_utility_pub.request_id,
5732       program_application_id = hz_utility_pub.program_application_id,
5733       program_id = hz_utility_pub.program_id,
5734       program_update_date = sysdate
5735     WHERE relationship_id = p_from_id
5736     AND DIRECTIONAL_FLAG = 'B';
5737 
5738       ---Bug# 2688231 After transferring the reln,the name
5739       --- of the relationship party should also be changed
5740 
5741      if l_rel_party_id is not null then
5742 
5743       select sub.party_name , obj.party_name , rel.party_number
5744       into l_new_subj_party_name , l_object_name , l_rel_party_number
5745       from hz_parties sub , hz_parties obj , hz_parties rel
5746       where sub.party_id = p_to_fk_id
5747       and   obj.party_id = l_object_id
5748       and   rel.party_id = l_rel_party_id;
5749 
5750       UPDATE HZ_PARTIES
5751       SET PARTY_NAME = 	SUBSTRB(l_new_subj_party_name || '-' ||
5752                                 l_object_name  || '-' ||
5753                                 l_rel_party_number, 1, 360)
5754       WHERE party_id = l_rel_party_id;
5755 
5756     end if;
5757     CLOSE c_check_valid_merge;
5758     RETURN;
5759 
5760     END IF;
5761     CLOSE c_check_valid_merge;
5762     END IF; --l_from_request_id
5763 
5764 --6696774 Start
5765     SELECT object_id, relationship_type, relationship_code,subject_type,object_type,direction_code into l_object_id, l_rel_type, l_rel_code,
5766           l_subject_type, l_object_type, l_direction_code
5767     FROM HZ_RELATIONSHIPS
5768     WHERE relationship_id = p_from_id
5769     AND   directional_flag = 'F';
5770 
5771     l_par_exists := 'N';
5772 
5773     BEGIN
5774           SELECT 'Y' into l_par_exists
5775           FROM hz_hierarchy_nodes
5776           WHERE child_id = l_object_id
5777           AND   parent_id = p_to_fk_id
5778           AND   l_direction_code = 'C'
5779           AND rownum = 1;
5780     EXCEPTION
5781           WHEN NO_DATA_FOUND THEN
5782               null;
5783     END;
5784 
5785     SELECT allow_relate_to_self_flag
5786     INTO   l_self_rel_flag
5787     FROM   HZ_RELATIONSHIP_TYPES
5788     WHERE RELATIONSHIP_TYPE = l_rel_type
5789     AND FORWARD_REL_CODE = l_rel_code
5790     AND SUBJECT_TYPE = l_subject_type
5791     AND OBJECT_TYPE =  l_object_type;
5792 
5793 IF (l_object_id <> p_to_fk_id OR l_self_rel_flag = 'Y') AND l_par_exists = 'N' THEN
5794 --6696774 End
5795     ----Start of DlProject Phase2--------------------
5796      do_hierarchy_nodes_merge(p_from_id => p_from_id,
5797 			      p_from_fk_id => p_from_fk_id,
5798 			      p_to_fk_id => p_to_fk_id,
5799 			      x_return_status =>x_return_status,
5800 			      p_action => 'T',
5801 			      p_sub_obj_merge =>'SUB'
5802 			      );
5803     ----End of DlProject Phase2--------------------
5804 
5805     UPDATE HZ_RELATIONSHIPS
5806     SET
5807       subject_id = p_to_fk_id,
5808       last_update_date = hz_utility_pub.last_update_date,
5809       last_updated_by = hz_utility_pub.user_id,
5810       last_update_login = hz_utility_pub.last_update_login,
5811       request_id =  hz_utility_pub.request_id,
5812       program_application_id = hz_utility_pub.program_application_id,
5813       program_id = hz_utility_pub.program_id,
5814       program_update_date = sysdate
5815     WHERE relationship_id = p_from_id
5816     AND DIRECTIONAL_FLAG = 'F'
5817     RETURNING  object_id, relationship_type, relationship_code ,
5818                subject_type, object_type, party_id
5819     into l_object_id, l_rel_type, l_rel_code,
5820          l_subject_type , l_object_type, l_rel_party_id;
5821 
5822     UPDATE HZ_RELATIONSHIPS
5823     SET
5824       object_id = p_to_fk_id,
5825       last_update_date = hz_utility_pub.last_update_date,
5826       last_updated_by = hz_utility_pub.user_id,
5827       last_update_login = hz_utility_pub.last_update_login,
5828       request_id =  hz_utility_pub.request_id,
5829       program_application_id = hz_utility_pub.program_application_id,
5830       program_id = hz_utility_pub.program_id,
5831       program_update_date = sysdate
5832     WHERE relationship_id = p_from_id
5833     AND DIRECTIONAL_FLAG = 'B';
5834 
5835       ---Bug# 2688231 After transferring the reln,the name
5836       --- of the relationship party should also be changed
5837 
5838      if l_rel_party_id is not null then
5839 
5840       select sub.party_name , obj.party_name , rel.party_number
5841       into l_new_subj_party_name , l_object_name , l_rel_party_number
5842       from hz_parties sub , hz_parties obj , hz_parties rel
5843       where sub.party_id = p_to_fk_id
5844       and   obj.party_id = l_object_id
5845       and   rel.party_id = l_rel_party_id;
5846 
5847       UPDATE HZ_PARTIES
5848       SET PARTY_NAME = 	SUBSTRB(l_new_subj_party_name || '-' ||
5849                                 l_object_name  || '-' ||
5850                                 l_rel_party_number, 1, 360)
5851       WHERE party_id = l_rel_party_id;
5852 
5853     end if;
5854      --Check if the object_id and subject_id are same and the
5855     --6696774 start
5856      ELSIF (l_object_id = p_to_fk_id AND l_self_rel_flag = 'N') OR l_par_exists = 'Y' THEN  --5591581
5857 
5858        IF    l_self_rel_flag = 'N' THEN
5859          --Inactivate the relationships both forward and backward
5860          UPDATE HZ_RELATIONSHIPS
5861          SET
5862          STATUS = 'I',
5863          END_DATE = sysdate,
5864          last_update_date = hz_utility_pub.last_update_date,
5865          last_updated_by = hz_utility_pub.user_id,
5866          last_update_login = hz_utility_pub.last_update_login,
5867          request_id =  hz_utility_pub.request_id,
5868          program_application_id = hz_utility_pub.program_application_id,
5869          program_id = hz_utility_pub.program_id,
5870          program_update_date = sysdate
5871          WHERE relationship_id = p_from_id;
5872 
5873 	      ---Start of Bug:3880218----
5874 	      IF l_rel_party_id is not null THEN
5875 		      UPDATE HZ_PARTIES
5876 		      SET STATUS = 'I',
5877 		          last_update_date = hz_utility_pub.last_update_date,
5878 		          last_updated_by = hz_utility_pub.user_id,
5879 		          last_update_login = hz_utility_pub.last_update_login,
5880 		          request_id =  hz_utility_pub.request_id,
5881 		          program_application_id = hz_utility_pub.program_application_id,
5882 		          program_id = hz_utility_pub.program_id,
5883 		          program_update_date = sysdate
5884 		      WHERE PARTY_ID = l_rel_party_id;
5885 	      END IF;
5886 	      ----End of Bug:3880218----
5887 	 ----Start of DlProject Phase2--------------------
5888          do_hierarchy_nodes_merge(p_from_id => p_from_id,
5889 			      p_from_fk_id => p_from_fk_id,
5890 			      p_to_fk_id => p_to_fk_id,
5891 			      x_return_status =>x_return_status,
5892 			      p_action => 'I',
5893             p_sub_obj_merge =>'SUB'
5894 			      );
5895          ----End of DlProject Phase2--------------------
5896 ---bug 4867151 start
5897        ELSE
5898 	        IF l_rel_party_id is not null THEN
5899 		        UPDATE HZ_PARTIES
5900 		        SET STATUS = 'M',
5901 		            last_update_date = hz_utility_pub.last_update_date,
5902 		            last_updated_by = hz_utility_pub.user_id,
5903 		            last_update_login = hz_utility_pub.last_update_login,
5904 		            request_id =  hz_utility_pub.request_id,
5905 		            program_application_id = hz_utility_pub.program_application_id,
5906 		            program_id = hz_utility_pub.program_id,
5907 		            program_update_date = sysdate
5908 		        WHERE PARTY_ID IN (select party_id from hz_relationships where subject_id=p_to_fk_id
5909 	              and object_id=p_to_fk_id and relationship_id <>p_from_id and status='A'
5910                 AND ((start_date between from_start_date and from_end_date)
5911           or (nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')) between from_start_date and from_end_date)
5912           or(start_date<from_start_date and nvl(end_date,to_date('12/31/4712','MM/DD/YYYY'))>from_end_date)));
5913 
5914 	        UPDATE HZ_RELATIONSHIPS
5915                 SET
5916                 STATUS = 'M',
5917                 END_DATE = sysdate,
5918                 last_update_date = hz_utility_pub.last_update_date,
5919                 last_updated_by = hz_utility_pub.user_id,
5920                 last_update_login = hz_utility_pub.last_update_login,
5921                 request_id =  hz_utility_pub.request_id,
5922                 program_application_id = hz_utility_pub.program_application_id,
5923                 program_id = hz_utility_pub.program_id,
5924                 program_update_date = sysdate
5925                 WHERE relationship_id in (select relationship_id from hz_relationships where subject_id=p_to_fk_id
5926 	              and object_id=p_to_fk_id and relationship_id <>p_from_id and status='A'
5927                 AND ((start_date between from_start_date and from_end_date)
5928                 or (nvl(end_date,to_date('12/31/4712','MM/DD/YYYY')) between from_start_date and from_end_date)
5929                 or(start_date<from_start_date and nvl(end_date,to_date('12/31/4712','MM/DD/YYYY'))>from_end_date)));
5930 
5931 	        END IF;
5932           do_hierarchy_nodes_merge(p_from_id => p_from_id,
5933 			      p_from_fk_id => p_from_fk_id,
5934 			      p_to_fk_id => p_to_fk_id,
5935 			      x_return_status =>x_return_status,
5936 			      p_action => 'M'
5937 			      );
5938 ---bug 4867151 end
5939       END IF;  --l_self_rel_flag
5940 
5941     END IF;    --l_object_id = p_to_fk_id
5942 
5943   END IF;
5944 
5945 EXCEPTION
5946   WHEN OTHERS THEN
5947     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
5948     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5949     FND_MSG_PUB.ADD;
5950     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5951 END do_party_reln_subj_merge;
5952 
5953 PROCEDURE do_party_relationship_merge(
5954         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
5955         x_to_id         IN OUT NOCOPY  NUMBER,
5956         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
5957         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
5958         x_return_status IN OUT NOCOPY          VARCHAR2
5959 ) IS
5960 
5961 CURSOR c_merge_to_party_reln IS
5962   SELECT relationship_id
5963   FROM HZ_RELATIONSHIPS --4500011
5964   WHERE party_id = p_to_fk_id
5965   AND subject_table_name = 'HZ_PARTIES'
5966   AND object_table_name = 'HZ_PARTIES'
5967   AND directional_flag = 'F';
5968 
5969 l_to_preln_id NUMBER;
5970 
5971 
5972 BEGIN
5973 
5974   OPEN c_merge_to_party_reln;
5975   FETCH c_merge_to_party_reln INTO l_to_preln_id;
5976   IF c_merge_to_party_reln%NOTFOUND THEN
5977     CLOSE c_merge_to_party_reln;
5978     FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MERGE_TO_PRELN');
5979     FND_MESSAGE.SET_TOKEN('TOPARTYID',p_to_fk_id);
5980     FND_MSG_PUB.ADD;
5981     x_return_status := FND_API.G_RET_STS_ERROR;
5982   ELSE
5983     CLOSE c_merge_to_party_reln;
5984 
5985     UPDATE HZ_RELATIONSHIPS
5986     SET
5987       STATUS = 'M',
5988       end_date = sysdate,
5989       last_update_date = hz_utility_pub.last_update_date,
5990       last_updated_by = hz_utility_pub.user_id,
5991       last_update_login = hz_utility_pub.last_update_login,
5992       request_id =  hz_utility_pub.request_id,
5993       program_application_id = hz_utility_pub.program_application_id,
5994       program_id = hz_utility_pub.program_id,
5995       program_update_date = sysdate
5996     WHERE relationship_id = p_from_id;
5997     ----Start of DlProject Phase2--------------------
5998      do_hierarchy_nodes_merge(p_from_id => p_from_id,
5999 			      p_from_fk_id => p_from_fk_id,
6000 			      p_to_fk_id => p_to_fk_id,
6001 			      x_return_status =>x_return_status,
6002 			      p_action => 'M'
6003 			      );
6004     ----End of DlProject Phase2--------------------
6005 
6006 
6007     --For NOCOPY fix
6008     x_to_id := l_to_preln_id;
6009   END IF;
6010 EXCEPTION
6011   WHEN OTHERS THEN
6012     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6013     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6014     FND_MSG_PUB.ADD;
6015     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6016 END do_party_relationship_merge;
6017 
6018 PROCEDURE do_org_profile_merge(
6019         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
6020         x_to_id         IN OUT NOCOPY  NUMBER,
6021         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
6022         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
6023         x_return_status IN OUT NOCOPY          VARCHAR2
6024 ) IS
6025 
6026 CURSOR c_merge_to_org_prof(cp_cont_source VARCHAR2) IS
6027   SELECT organization_profile_id, last_update_date, duns_number_c
6028   FROM HZ_ORGANIZATION_PROFILES
6029   WHERE party_id = p_to_fk_id
6030   AND effective_end_date is null
6031   AND ACTUAL_CONTENT_SOURCE = cp_cont_source;
6032 
6033 CURSOR c_cont_source IS
6034   SELECT ACTUAL_CONTENT_SOURCE, last_update_date, duns_number_c
6035   FROM HZ_ORGANIZATION_PROFILES
6036   WHERE organization_profile_id = p_from_id;
6037 
6038 l_cont_source VARCHAR2(50);
6039 l_to_orgpro_id NUMBER;
6040 l_merge_to_id NUMBER := FND_API.G_MISS_NUM;
6041 l_from_last_upd_date DATE;
6042 l_to_last_upd_date DATE;
6043 l_from_duns_number VARCHAR2(255);
6044 l_to_duns_number VARCHAR2(255);
6045 l_from_branch_flag VARCHAR2(1);
6046 l_to_branch_flag VARCHAR2(1);
6047 l_temp NUMBER;
6048 
6049 l_msg_data VARCHAR2(2000);
6050 l_msg_count NUMBER;
6051 l_return_status VARCHAR2(255);
6052 
6053 
6054 l_temp_party_id NUMBER;
6055 l_temp_party_number VARCHAR2(255);
6056 
6057 l_organization_rec HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE;
6058 BEGIN
6059 
6060   OPEN c_cont_source;
6061   FETCH c_cont_source INTO l_cont_source, l_from_last_upd_date, l_from_duns_number;
6062   CLOSE c_cont_source;
6063 
6064   IF l_cont_source = 'USER_ENTERED' THEN
6065     open c_merge_to_org_prof('USER_ENTERED');
6066     FETCH c_merge_to_org_prof INTO x_to_id, l_to_last_upd_date, l_to_duns_number;
6067     IF c_merge_to_org_prof%NOTFOUND THEN
6068       CLOSE c_merge_to_org_prof;
6069       OPEN c_merge_to_org_prof('SST');
6070       FETCH c_merge_to_org_prof INTO x_to_id, l_to_last_upd_date, l_to_duns_number;
6071       IF c_merge_to_org_prof%NOTFOUND THEN
6072         CLOSE c_merge_to_org_prof;
6073         FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MERGE_TO_ORGPRO');
6074         FND_MESSAGE.SET_TOKEN('ToId',p_to_fk_id);
6075         FND_MSG_PUB.ADD;
6076         x_return_status := FND_API.G_RET_STS_ERROR;
6077         RETURN;
6078       END IF;
6079       CLOSE c_merge_to_org_prof;
6080     ELSE
6081       CLOSE c_merge_to_org_prof;
6082     END IF;
6083 
6084   ELSIF l_cont_source = 'SST' THEN
6085     open c_merge_to_org_prof('SST');
6086     FETCH c_merge_to_org_prof INTO x_to_id, l_to_last_upd_date, l_to_duns_number;
6087     IF c_merge_to_org_prof%NOTFOUND THEN
6088       CLOSE c_merge_to_org_prof;
6089       OPEN c_merge_to_org_prof('USER_ENTERED');
6090       FETCH c_merge_to_org_prof INTO x_to_id, l_to_last_upd_date, l_to_duns_number;
6091       IF c_merge_to_org_prof%NOTFOUND THEN
6092         CLOSE c_merge_to_org_prof;
6093         FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MERGE_TO_ORGPRO');
6094         FND_MESSAGE.SET_TOKEN('ToId',p_to_fk_id);
6095         FND_MSG_PUB.ADD;
6096         x_return_status := FND_API.G_RET_STS_ERROR;
6097         RETURN;
6098       END IF;
6099       CLOSE c_merge_to_org_prof;
6100     ELSE
6101       CLOSE c_merge_to_org_prof;
6102     END IF;
6103 
6104   ELSIF l_cont_source NOT IN ('SST','USER_ENTERED')AND l_cont_source IS NOT NULL THEN --Bug No:4114254
6105     IF x_to_id IS NULL OR x_to_id = FND_API.G_MISS_NUM THEN
6106       HZ_PARTY_V2PUB.get_organization_rec(
6107         FND_API.G_FALSE,
6108         p_from_fk_id,
6109         l_cont_source,
6110         l_organization_rec,
6111         l_return_status,
6112         l_msg_count,
6113         l_msg_data);
6114 
6115       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6116         RETURN;
6117       END IF;
6118 
6119       l_organization_rec.party_rec.party_id := p_to_fk_id;
6120       HZ_PARTY_V2PUB.create_organization(
6121         FND_API.G_FALSE,
6122         l_organization_rec,
6123         l_return_status,
6124         l_msg_count,
6125         l_msg_data,
6126         l_temp_party_id,
6127         l_temp_party_number,
6128         x_to_id);
6129 
6130       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6131         RETURN;
6132       END IF;
6133     END IF;
6134   END IF;
6135 
6136   UPDATE HZ_ORGANIZATION_PROFILES
6137   SET
6138       STATUS = 'M',
6139       effective_end_date = trunc(SYSDATE-1),
6140       last_update_date = hz_utility_pub.last_update_date,
6141       last_updated_by = hz_utility_pub.user_id,
6142       last_update_login = hz_utility_pub.last_update_login,
6143       request_id =  hz_utility_pub.request_id,
6144       program_application_id = hz_utility_pub.program_application_id,
6145       program_id = hz_utility_pub.program_id,
6146       program_update_date = sysdate
6147   WHERE organization_profile_id = p_from_id;
6148 
6149 EXCEPTION
6150   WHEN OTHERS THEN
6151     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6152     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6153     FND_MSG_PUB.ADD;
6154     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6155 END do_org_profile_merge;
6156 
6157 PROCEDURE do_per_profile_merge(
6158         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
6159         x_to_id         IN OUT NOCOPY  NUMBER,
6160         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
6161         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
6162         x_return_status IN OUT NOCOPY          VARCHAR2
6163 ) IS
6164 
6165 CURSOR c_merge_to_per_prof(cp_cont_source VARCHAR2) IS
6166   SELECT person_profile_id
6167   FROM HZ_PERSON_PROFILES
6168   WHERE party_id = p_to_fk_id
6169   AND effective_end_date is null
6170   AND content_source_type = cp_cont_source;
6171 
6172 CURSOR c_cont_source IS
6173   SELECT CONTENT_SOURCE_TYPE
6174   FROM HZ_PERSON_PROFILES
6175   WHERE person_profile_id = p_from_id;
6176 
6177 l_cont_source VARCHAR2(50);
6178 l_to_perpro_id NUMBER;
6179 
6180 BEGIN
6181 
6182   OPEN c_cont_source;
6183   FETCH c_cont_source INTO l_cont_source;
6184   CLOSE c_cont_source;
6185 
6186   OPEN c_merge_to_per_prof(l_cont_source);
6187   FETCH c_merge_to_per_prof INTO l_to_perpro_id;
6188   IF c_merge_to_per_prof%NOTFOUND THEN
6189     CLOSE c_merge_to_per_prof;
6190     IF l_cont_source = 'USER_ENTERED' THEN
6191       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MERGE_TO_PERPRO');
6192       FND_MESSAGE.SET_TOKEN('ToId',p_to_fk_id);
6193       FND_MSG_PUB.ADD;
6194       x_return_status := FND_API.G_RET_STS_ERROR;
6195     ELSE
6196       UPDATE HZ_PERSON_PROFILES
6197       SET
6198         party_id  = p_to_fk_id,
6199         last_update_date = hz_utility_pub.last_update_date,
6200         last_updated_by = hz_utility_pub.user_id,
6201         last_update_login = hz_utility_pub.last_update_login,
6202         request_id =  hz_utility_pub.request_id,
6203         program_application_id = hz_utility_pub.program_application_id,
6204         program_id = hz_utility_pub.program_id,
6205         program_update_date = sysdate
6206       WHERE person_profile_id = p_from_id;
6207     END IF;
6208   ELSE
6209     CLOSE c_merge_to_per_prof;
6210 
6211     UPDATE HZ_PERSON_PROFILES
6212     SET
6213       STATUS = 'M',
6214       effective_end_date = trunc(SYSDATE-1),
6215       last_update_date = hz_utility_pub.last_update_date,
6216       last_updated_by = hz_utility_pub.user_id,
6217       last_update_login = hz_utility_pub.last_update_login,
6218       request_id =  hz_utility_pub.request_id,
6219       program_application_id = hz_utility_pub.program_application_id,
6220       program_id = hz_utility_pub.program_id,
6221       program_update_date = sysdate
6222     WHERE person_profile_id = p_from_id;
6223 
6224     --For NOCOPY fix
6225     x_to_id := l_to_perpro_id;
6226   END IF;
6227 EXCEPTION
6228   WHEN OTHERS THEN
6229     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6230     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6231     FND_MSG_PUB.ADD;
6232     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6233 END do_per_profile_merge;
6234 
6235 PROCEDURE do_party_site_merge(
6236         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
6237         x_to_id         IN OUT NOCOPY  NUMBER,
6238         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
6239         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
6240         p_batch_id      IN      NUMBER:=FND_API.G_MISS_NUM,
6241         x_return_status IN OUT NOCOPY          VARCHAR2
6242 ) IS
6243 
6244 CURSOR c_cont_source IS
6245   SELECT l.CONTENT_SOURCE_TYPE, l.last_update_date, ps.party_id,
6246          ps.identifying_address_flag, ps.party_site_number
6247   FROM HZ_LOCATIONS l, HZ_PARTY_SITES ps
6248   WHERE ps.party_site_id = p_from_id
6249   AND ps.location_id = l.location_id;
6250 
6251 CURSOR c_merge_to IS
6252   SELECT ps.party_id, loc.content_source_type,loc.country,
6253          loc.address1, loc.address2, loc.address3, loc.address4,
6254 	 loc.city, loc.postal_code, loc.state, loc.province,
6255 	 loc.county,loc.location_id
6256   FROM HZ_LOCATIONS loc, HZ_PARTY_SITES ps
6257   WHERE ps.party_site_id = x_to_id
6258   AND   ps.location_id   = loc.location_id;
6259 --bug 4569674
6260 /*CURSOR c_loc_assignments IS
6261    SELECT la.loc_id, la.org_id
6262    FROM   HZ_LOC_ASSIGNMENTS la, HZ_PARTY_SITES ps
6263    WHERE  ps.party_site_id = p_from_id
6264    AND  la.location_id = ps.location_id
6265    AND  la.org_id NOT IN ( SELECT DISTINCT la1.org_id
6266                            FROM  HZ_LOC_ASSIGNMENTS la1, HZ_PARTY_SITES ps1
6267                            WHERE ps1.party_site_id = x_to_id
6268                            AND la1.location_id = ps1.location_id
6269                          );
6270 */
6271 CURSOR c_locations(x_party_site_id NUMBER) IS
6272  SELECT loc.location_id
6273    FROM HZ_PARTY_SITES ps,
6274         HZ_LOCATIONS   loc
6275   WHERE ps.location_id   = loc.location_id
6276    AND  ps.party_site_id = x_party_site_id;
6277 
6278 CURSOR c_from_party_type IS
6279  SELECT party_type
6280   FROM  HZ_PARTY_SITES ps,
6281         HZ_PARTIES  p
6282   WHERE ps.party_id      = p.party_id
6283    AND  ps.party_site_id = p_from_id;
6284 
6285 l_from_last_upd_date DATE;
6286 l_to_last_upd_date DATE;
6287 l_cont_source HZ_LOCATIONS.CONTENT_SOURCE_TYPE%TYPE;
6288 l_cont_source_to HZ_LOCATIONS.CONTENT_SOURCE_TYPE%TYPE;
6289 l_location_id HZ_LOCATIONS.LOCATION_ID%TYPE;
6290 l_address1 HZ_LOCATIONS.ADDRESS1%TYPE;
6291 l_address2 HZ_LOCATIONS.ADDRESS2%TYPE;
6292 l_address3 HZ_LOCATIONS.ADDRESS3%TYPE;
6293 l_address4 HZ_LOCATIONS.ADDRESS4%TYPE;
6294 l_country  HZ_LOCATIONS.COUNTRY%TYPE;
6295 l_city     HZ_LOCATIONS.CITY%TYPE;
6296 l_state    HZ_LOCATIONS.STATE%TYPE;
6297 l_county   HZ_LOCATIONS.COUNTY%TYPE;
6298 l_province HZ_LOCATIONS.PROVINCE%TYPE;
6299 l_postal   HZ_LOCATIONS.POSTAL_CODE%TYPE;
6300 l_from_party_id HZ_PARTY_SITES.PARTY_ID%TYPE;
6301 l_to_party_id   HZ_PARTY_SITES.PARTY_ID%TYPE;
6302 l_ident_flag    HZ_PARTY_SITES.IDENTIFYING_ADDRESS_FLAG%TYPE;
6303 l_merge_to_id NUMBER;
6304 l_merge_to_loc_id NUMBER;
6305 l_temp NUMBER;
6306 l_temp1 NUMBER;
6307 
6308 l_dup_exists    VARCHAR2(20);
6309 l_to_id 	NUMBER;
6310 
6311 l_discard VARCHAR2(1) := 'N';
6312 
6313 party_site_rec                 HZ_PARTY_SITE_V2PUB.party_site_rec_type;
6314 l_party_site_number            VARCHAR2(30);
6315 l_msg_data                     VARCHAR2(2000);
6316 l_msg_count                    NUMBER := 0;
6317 l_profile_option               VARCHAR2(1) := 'Y';
6318 
6319 l_ps_number HZ_PARTY_SITES.PARTY_SITE_NUMBER%TYPE;
6320 l_actual_cont_source VARCHAR2(30);
6321 --l_loc_id HZ_LOC_ASSIGNMENTS.LOC_ID%TYPE;   bug 4569674
6322 --l_org_id HZ_LOC_ASSIGNMENTS.ORG_ID%TYPE;
6323 l_from_location_id HZ_LOCATIONS.LOCATION_ID%TYPE;
6324 l_to_location_id   HZ_LOCATIONS.LOCATION_ID%TYPE;
6325 l_from_party_type  HZ_PARTIES.PARTY_TYPE%TYPE;
6326 to_party_loc_id    HZ_LOCATIONS.LOCATION_ID%TYPE;
6327 map_ps_id          HZ_PARTY_SITES.PARTY_SITE_ID%TYPE;
6328 BEGIN
6329 
6330 
6331   OPEN c_cont_source;
6332   FETCH c_cont_source INTO l_cont_source, l_from_last_upd_date, l_from_party_id,
6333                            l_ident_flag, l_ps_number;
6334   CLOSE c_cont_source;
6335 
6336   /* From Location_Id */
6337   OPEN  c_locations(p_from_id);
6338   FETCH c_locations INTO l_from_location_id;
6339   CLOSE c_locations;
6340 
6341   /* From Party_Type */
6342   OPEN  c_from_party_type;
6343   FETCH c_from_party_type INTO l_from_party_type;
6344   CLOSE c_from_party_type;
6345 
6346   IF l_from_party_type = 'PARTY_RELATIONSHIP' AND
6347      (x_to_id = FND_API.G_MISS_NUM OR x_to_id IS NULL OR p_from_id = x_to_id)
6348   THEN
6349    BEGIN
6350 
6351        /* Check if there is a ps in the merge batch that has the same loc */
6352        SELECT ps2.location_id INTO to_party_loc_id
6353         FROM  HZ_MERGE_PARTY_DETAILS mpd,
6354               HZ_PARTY_SITES         ps1,
6355               HZ_PARTY_SITES         ps2
6356        WHERE  ps1.party_site_id         =  mpd.merge_from_entity_id
6357          AND  ps2.party_site_id         =  mpd.merge_to_entity_id
6358          AND  mpd.merge_from_entity_id  <> nvl(mpd.merge_to_entity_id, -1)
6359          AND  ps1.location_id           =  l_from_location_id
6360          AND  merge_from_entity_id      <> p_from_id
6361          AND  mpd.batch_party_id        IN ( SELECT  batch_party_id
6362                                                FROM  hz_merge_parties mp,
6363                                                      hz_relationships r
6364                                                WHERE r.party_id       = p_from_fk_id
6365                                                 AND  mp.from_party_id = r.object_id
6366                                                 AND  mp.batch_id      = p_batch_id)
6367          AND  rownum                    =  1;
6368 
6369       BEGIN
6370           /* Check if to_party already has a ps which has the same loc */
6371           SELECT  party_site_id INTO map_ps_id
6372             FROM  HZ_PARTY_SITES
6373            WHERE  party_id    = p_to_fk_id
6374              AND  location_id = to_party_loc_id
6375              AND  rownum      = 1;
6376 
6377           /* Merge */
6378           x_to_id  := map_ps_id;
6379       EXCEPTION
6380           WHEN NO_DATA_FOUND THEN
6381                /* Transfer */
6382                UPDATE HZ_PARTY_SITES
6383                   SET LOCATION_ID   = to_party_loc_id
6384                 WHERE PARTY_SITE_ID = p_from_id ;
6385       END;
6386    EXCEPTION
6387     WHEN NO_DATA_FOUND THEN
6388          --NULL;
6389          -- Start changes for Bug 4577535
6390 
6391          l_dup_exists := HZ_MERGE_DUP_CHECK.check_address_dup(
6392 	 	 	 l_from_location_id,l_to_id, p_from_fk_id, p_to_fk_id,
6393 	 	         x_return_status);
6394 	 /* Merge */
6395 	 IF l_dup_exists = FND_API.G_TRUE THEN
6396 	    x_to_id  := l_to_id;
6397 	 END IF;
6398 
6399 	 WHEN OTHERS THEN
6400 	      FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6401 	      FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6402 	      FND_MSG_PUB.ADD;
6403 	      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6404 
6405 	 -- End changes for Bug 4577535
6406    END;
6407   END IF;
6408 
6409  IF x_to_id <> FND_API.G_MISS_NUM AND x_to_id IS NOT NULL
6410  THEN
6411 
6412     IF l_from_party_type <> 'PARTY_RELATIONSHIP' THEN
6413        /* To Location_Id */
6414        OPEN  c_locations(x_to_id);
6415        FETCH c_locations INTO l_to_location_id;
6416        CLOSE c_locations;
6417 
6418        UPDATE HZ_PARTY_SITES
6419          SET  location_id = l_to_location_id
6420         WHERE party_site_id IN (
6421               SELECT psr.party_site_id
6422                 FROM hz_parties       p,
6423                      hz_party_sites   psr,
6424                      hz_party_sites   pso,
6425                      hz_relationships r
6426               WHERE  pso.party_site_id = p_from_id
6427                 AND  r.object_id       = pso.party_id
6428                 AND  r.party_id        = p.party_id
6429                 AND  p.party_id        = psr.party_id
6430                 AND  psr.location_id   = l_from_location_id);
6431    END IF;
6432 
6433 
6434 /* Bug 2295088: Unset identifying_address_flag of the from site
6435    if 2 sites of the same party are being merged. */
6436 
6437   OPEN c_merge_to;
6438   FETCH c_merge_to INTO l_to_party_id, l_cont_source_to, l_country, l_address1,
6439         l_address2, l_address3, l_address4, l_city, l_postal, l_state,
6440         l_province, l_county,l_location_id;
6441   CLOSE c_merge_to;
6442 
6443   IF (l_from_party_id = l_to_party_id )THEN
6444       IF(l_ident_flag = 'Y') THEN
6445         IF l_cont_source_to = 'USER_ENTERED' THEN
6446            UPDATE hz_parties
6447            SET    country     = l_country,
6448                   address1    = l_address1,
6449                   address2    = l_address2,
6450                   address3    = l_address3,
6451                   address4    = l_address4,
6452                   city        = l_city,
6453                   postal_code = l_postal,
6454                   state       = l_state,
6455                   province    = l_province,
6456                   county      = l_county
6457            WHERE party_id     = l_to_party_id;
6458 
6459         END IF;
6460 
6461 		UPDATE HZ_PARTY_SITES
6462 		SET
6463 	   	identifying_address_flag = 'Y'
6464 		WHERE party_site_id = x_to_id;
6465 
6466 		UPDATE HZ_PARTY_SITES
6467 		SET
6468 	   	identifying_address_flag = 'N'
6469 		WHERE party_site_id = p_from_id;
6470 
6471    	END IF;
6472         UPDATE hz_parties
6473            SET    country     = l_country,
6474                   address1    = l_address1,
6475                   address2    = l_address2,
6476                   address3    = l_address3,
6477                   address4    = l_address4,
6478                   city        = l_city,
6479                   postal_code = l_postal,
6480                   state       = l_state,
6481                   province    = l_province,
6482                   county      = l_county
6483            WHERE party_id in
6484 		   			   (select ps.party_id from hz_party_sites ps,hz_relationships pr
6485                         where ps.location_id = l_to_location_id
6486 						and ps.identifying_address_flag(+)='Y'
6487 						and ps.party_id = pr.party_id
6488                         and pr.object_id=l_to_party_id);
6489   END IF;
6490 --bug 4569674 commenting code that creates missing Loc Assignments
6491   /* Bug Fix : 2506620. Create Missing Loc Assignments */
6492 /*  Open c_loc_assignments;
6493   Loop
6494   fetch c_loc_assignments into l_loc_id,l_org_id ;
6495   IF c_loc_assignments%NOTFOUND THEN
6496      EXIT;
6497   END IF;
6498   HZ_LOC_ASSIGNMENTS_PKG.Insert_Row (
6499                 X_LOCATION_ID                           => l_location_id,
6500                 X_LOC_ID                                => l_loc_id,
6501                 X_ORG_ID                                => l_org_id,
6502                 X_OBJECT_VERSION_NUMBER                 => 1,
6503                 X_CREATED_BY_MODULE                     => 'PARTY_MERGE',
6504                 X_APPLICATION_ID                        => 222
6505             );
6506 
6507    end loop;
6508    Close c_loc_assignments; */
6509    END IF; /*  x_to_id  */
6510 
6511    IF ((x_to_id <> FND_API.G_MISS_NUM AND
6512       x_to_id <> p_from_id) OR l_discard = 'Y') THEN
6513 
6514     UPDATE HZ_PARTY_SITES
6515     SET
6516       STATUS = 'M',
6517       last_update_date = hz_utility_pub.last_update_date,
6518       last_updated_by = hz_utility_pub.user_id,
6519       last_update_login = hz_utility_pub.last_update_login,
6520       request_id =  hz_utility_pub.request_id,
6521       program_application_id = hz_utility_pub.program_application_id,
6522       program_id = hz_utility_pub.program_id,
6523       program_update_date = sysdate
6524     WHERE party_site_id = p_from_id;
6525     /* Bug 3892399
6526     UPDATE HZ_ORIG_SYS_REFERENCES
6527     SET
6528       STATUS = 'I',
6529       last_update_date = hz_utility_pub.last_update_date,
6530       last_updated_by = hz_utility_pub.user_id,
6531       last_update_login = hz_utility_pub.last_update_login
6532     WHERE owner_table_id = p_from_id and owner_table_name='HZ_PARTY_SITES';
6533     */
6534       HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
6535                     p_init_msg_list => FND_API.G_FALSE,
6536                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
6537                     p_old_owner_table_id   => p_from_id,
6538 	            p_new_owner_table_id   => x_to_id,
6539                     p_owner_table_name  =>'HZ_PARTY_SITES',
6540                     p_orig_system => null,
6541                     p_orig_system_reference => null,
6542                     p_reason_code => 'MERGED',
6543                     x_return_status => x_return_status,
6544                     x_msg_count =>l_msg_count,
6545                     x_msg_data  =>l_msg_data);
6546       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6547 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6548 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
6549 	FND_MSG_PUB.ADD;
6550 	x_return_status := FND_API.G_RET_STS_ERROR;
6551 	RETURN;
6552       END IF;
6553 
6554 
6555    --For NOCOPY fix
6556    IF l_discard = 'Y' THEN
6557       x_to_id := 0;
6558    END IF;
6559 
6560 
6561   ELSE
6562 
6563     hz_cust_account_merge_v2pvt.get_party_site_rec (
6564          p_init_msg_list => 'T',
6565          p_party_site_id => p_from_id,
6566          x_party_site_rec => party_site_rec,
6567          x_actual_cont_source => l_actual_cont_source,
6568          x_return_status => x_return_status,
6569          x_msg_count => l_msg_count,
6570          x_msg_data => l_msg_data );
6571 
6572     IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6573       FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6574       FND_MESSAGE.SET_TOKEN('ERROR','Cannot get party site ID : ' || p_from_id);
6575       FND_MSG_PUB.ADD;
6576       x_return_status := FND_API.G_RET_STS_ERROR;
6577 
6578       RETURN;
6579     END IF;
6580 --bug 4603928
6581 --    l_party_site_number := l_ps_number||'-MERGED';
6582     IF length(l_ps_number) >= 29 THEN
6583     l_party_site_number := substr(l_ps_number,1,28)||'-M';
6584     ELSE
6585     l_party_site_number := l_ps_number||'-M';
6586     END IF;
6587 --bug 4603928
6588 
6589     FOR I IN 1..100 LOOP
6590       BEGIN
6591         -- Update and set party_id = p_to_fk_id where pk = from_id
6592         UPDATE HZ_PARTY_SITES
6593         SET
6594           STATUS = 'M',
6595           party_site_number = l_party_site_number,
6596           last_update_date = hz_utility_pub.last_update_date,
6597           last_updated_by = hz_utility_pub.user_id,
6598           last_update_login = hz_utility_pub.last_update_login,
6599           request_id =  hz_utility_pub.request_id,
6600           program_application_id = hz_utility_pub.program_application_id,
6601           program_id = hz_utility_pub.program_id,
6602           program_update_date = sysdate
6603         WHERE party_site_id = p_from_id;
6604       EXCEPTION
6605         WHEN DUP_VAL_ON_INDEX THEN
6606 --bug 4603928
6607 --          l_party_site_number := l_party_site_number || I;
6608 	IF (length(l_party_site_number)+length(I) > 30 ) THEN
6609 	   l_party_site_number := substr(l_party_site_number,1,length(l_party_site_number)-length(I))|| I;
6610 	ELSE
6611 	   l_party_site_number := l_party_site_number || I;
6612 	END IF;
6613 --bug 4603928
6614       END;
6615     END LOOP;
6616     /*HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
6617                     p_init_msg_list => FND_API.G_FALSE,
6618                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
6619                     p_old_owner_table_id   => p_from_id,
6620 	            p_new_owner_table_id   => x_to_id,
6621                     p_owner_table_name  =>'HZ_PARTY_SITES',
6622                     p_orig_system => null,
6623                     p_orig_system_reference => null,
6624                     p_reason_code => 'MERGED',
6625                     x_return_status => x_return_status,
6626                     x_msg_count =>l_msg_count,
6627                     x_msg_data  =>l_msg_data);
6628       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6629 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6630 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
6631 	FND_MSG_PUB.ADD;
6632 	x_return_status := FND_API.G_RET_STS_ERROR;
6633 	RETURN;
6634       END IF;*/
6635 
6636     l_party_site_number := null;
6637     party_site_rec.party_site_id := FND_API.G_MISS_NUM;
6638     party_site_rec.party_id := p_to_fk_id;
6639     party_site_rec.party_site_number := l_ps_number;
6640 
6641     --We should not set primary flag in customer merge context
6642     party_site_rec.identifying_address_flag := FND_API.G_MISS_CHAR;
6643 
6644     --Create new party site.
6645     hz_cust_account_merge_v2pvt.create_party_site(
6646            p_init_msg_list => 'T',
6647            p_party_site_rec => party_site_rec,
6648            p_actual_cont_source => l_actual_cont_source,
6649            x_party_site_id => x_to_id,
6650            x_party_site_number => l_party_site_number,
6651            x_return_status => x_return_status,
6652            x_msg_count => l_msg_count,
6653            x_msg_data => l_msg_data );
6654 
6655 
6656     IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6657       FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6658       FND_MESSAGE.SET_TOKEN('ERROR','Cannot copy party site for ID : ' || p_from_id);
6659       FND_MSG_PUB.ADD;
6660       x_return_status := FND_API.G_RET_STS_ERROR;
6661       RETURN;
6662     END IF;
6663 
6664     HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
6665                     p_init_msg_list => FND_API.G_FALSE,
6666                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
6667                     p_old_owner_table_id   => p_from_id,
6668 	                p_new_owner_table_id   => x_to_id,
6669                     p_owner_table_name  =>'HZ_PARTY_SITES',
6670                     p_orig_system => null,
6671                     p_orig_system_reference => null,
6672                     p_reason_code => 'MERGED',
6673                     x_return_status => x_return_status,
6674                     x_msg_count =>l_msg_count,
6675                     x_msg_data  =>l_msg_data);
6676       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6677 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6678 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
6679 	FND_MSG_PUB.ADD;
6680 	x_return_status := FND_API.G_RET_STS_ERROR;
6681 	RETURN;
6682       END IF;
6683 
6684     UPDATE hz_merge_party_details
6685     SET merge_to_entity_id = x_to_id
6686     WHERE batch_party_id IN (select batch_party_id from hz_merge_parties
6687                              where batch_id = p_batch_id)
6688     AND merge_to_entity_id = p_from_id
6689     AND entity_name = 'HZ_PARTY_SITES';
6690 
6691     SAVEPOINT party_site_sync;
6692     BEGIN
6693       hz_dqm_sync.sync_party_site(x_to_id,'C'); --Bug 13810656
6694     EXCEPTION
6695       WHEN OTHERS THEN
6696         ROLLBACK TO party_site_sync;
6697     END;
6698 
6699     x_return_status := 'N';
6700 
6701   END IF;
6702 
6703   DELETE FROM HZ_DQM_SYNC_INTERFACE WHERE record_id = p_from_id
6704   AND ENTITY = 'PARTY_SITES' AND STAGED_FLAG='N' AND OPERATION <> 'D';
6705 
6706 EXCEPTION
6707   WHEN OTHERS THEN
6708     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6709     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6710     FND_MSG_PUB.ADD;
6711     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6712 END do_party_site_merge;
6713 
6714 
6715 PROCEDURE do_party_merge(
6716         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
6717         x_to_id    	IN OUT NOCOPY  NUMBER,
6718         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
6719         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
6720         p_batch_party_id IN	NUMBER,
6721         x_return_status IN OUT NOCOPY  	VARCHAR2
6722 ) IS
6723 
6724 CURSOR c_party_type(cp_party_id NUMBER) IS
6725   SELECT party_type
6726   FROM HZ_PARTIES
6727   WHERE party_id = cp_party_id;
6728 
6729 CURSOR c_duns IS
6730   SELECT duns_number_c, last_update_date, organization_profile_id
6731   FROM HZ_ORGANIZATION_PROFILES
6732   WHERE party_id = p_from_id
6733   AND   EFFECTIVE_END_DATE IS NULL
6734   AND   actual_content_source = 'DNB'
6735   AND   nvl(status, 'A') = 'A';
6736 
6737 CURSOR c_duns1 IS
6738   SELECT duns_number_c , last_update_date, organization_profile_id
6739   FROM HZ_ORGANIZATION_PROFILES
6740   WHERE party_id = x_to_id
6741   AND   EFFECTIVE_END_DATE IS NULL
6742   AND   actual_content_source = 'DNB'
6743   AND   nvl(status, 'A') = 'A';
6744 
6745 CURSOR c_branch IS
6746    SELECT 1
6747    FROM HZ_RELATIONSHIPS   --4500011
6748    WHERE content_source_type = 'DNB'
6749    AND subject_id = p_from_id
6750    AND object_id = x_to_id
6751    AND RELATIONSHIP_CODE = 'HEADQUARTERS_OF'
6752    AND subject_table_name = 'HZ_PARTIES'
6753    AND object_table_name = 'HZ_PARTIES'
6754    AND directional_flag = 'F';
6755 
6756 l_from_party_type HZ_PARTIES.PARTY_TYPE%TYPE;
6757 l_to_party_type HZ_PARTIES.PARTY_TYPE%TYPE;
6758 l_from_duns_number VARCHAR2(255);
6759 l_to_duns_number VARCHAR2(255);
6760 l_temp NUMBER;
6761 
6762 l_to_is_branch VARCHAR2(1) := 'N';
6763 
6764 case1 BOOLEAN := FALSE;
6765 case2 BOOLEAN := FALSE;
6766 case3 BOOLEAN := FALSE;
6767 
6768 l_from NUMBER;
6769 l_to NUMBER;
6770 l_to_loc_id NUMBER;
6771 l_to_subj_id NUMBER;
6772 
6773 l_to_profile_id NUMBER;
6774 l_from_profile_id NUMBER;
6775 l_from_last_upd_date DATE;
6776 l_to_last_upd_date DATE;
6777 
6778 l_msg_data VARCHAR2(2000);
6779 l_msg_count NUMBER;
6780 l_return_status VARCHAR2(255);
6781 l_obj_version_number NUMBER;
6782 
6783 l_organization_rec HZ_PARTY_V2PUB.ORGANIZATION_REC_TYPE;
6784 
6785 BEGIN
6786 
6787   -- Select record for update
6788   OPEN c_party_type(p_from_id);
6789   FETCH c_party_type INTO l_from_party_type;
6790   CLOSE c_party_type;
6791 
6792   OPEN c_party_type(x_to_id);
6793   FETCH c_party_type INTO l_to_party_type;
6794   CLOSE c_party_type;
6795 
6796   IF l_from_party_type IS NULL OR l_to_party_type IS NULL OR
6797      l_to_party_type <> l_from_party_type THEN
6798     FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MERGE_PARTIES');
6799     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6800     FND_MSG_PUB.ADD;
6801     x_return_status := FND_API.G_RET_STS_ERROR;
6802     RETURN;
6803   END IF;
6804 
6805   -- Update  and set status to merged
6806   UPDATE HZ_PARTIES
6807   SET
6808     STATUS = 'M',
6809     last_update_date = hz_utility_pub.last_update_date,
6810     last_updated_by = hz_utility_pub.user_id,
6811     last_update_login = hz_utility_pub.last_update_login,
6812     request_id =  hz_utility_pub.request_id,
6813     program_application_id = hz_utility_pub.program_application_id,
6814     program_id = hz_utility_pub.program_id,
6815     program_update_date = sysdate
6816   WHERE party_id = p_from_id;
6817 
6818   UPDATE HZ_DQM_SYNC_INTERFACE
6819   SET party_id = x_to_id WHERE STAGED_FLAG='N'
6820   AND PARTY_ID = p_from_id AND ENTITY<>'PARTY';
6821 
6822    HZ_ORIG_SYSTEM_REF_PVT.remap_internal_identifier(
6823                     p_init_msg_list => FND_API.G_FALSE,
6824                     p_validation_level     => FND_API.G_VALID_LEVEL_NONE,
6825                     p_old_owner_table_id   => p_from_id,
6826 	            p_new_owner_table_id   => x_to_id,
6827                     p_owner_table_name  =>'HZ_PARTIES',
6828                     p_orig_system => null,
6829                     p_orig_system_reference => null,
6830                     p_reason_code => 'MERGED',
6831                     x_return_status => x_return_status,
6832                     x_msg_count =>l_msg_count,
6833                     x_msg_data  =>l_msg_data);
6834       IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6835 	FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6836 	FND_MESSAGE.SET_TOKEN('ERROR','MOSR: cannot remap internal ID');
6837 	FND_MSG_PUB.ADD;
6838 	x_return_status := FND_API.G_RET_STS_ERROR;
6839 	RETURN;
6840       END IF;
6841 
6842 EXCEPTION
6843   WHEN OTHERS THEN
6844     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6845     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6846     FND_MSG_PUB.ADD;
6847     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6848 
6849 END do_party_merge;
6850 
6851 PROCEDURE do_displayed_duns_merge(
6852         p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
6853         x_to_id         IN OUT NOCOPY  NUMBER,
6854         p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
6855         p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
6856         x_return_status IN OUT NOCOPY          VARCHAR2
6857 ) IS
6858 
6859 BEGIN
6860 
6861   UPDATE HZ_ORGANIZATION_PROFILES
6862   SET
6863     displayed_duns_party_id = p_to_fk_id,
6864     last_update_date = hz_utility_pub.last_update_date,
6865     last_updated_by = hz_utility_pub.user_id,
6866     last_update_login = hz_utility_pub.last_update_login,
6867     request_id =  hz_utility_pub.request_id,
6868     program_application_id = hz_utility_pub.program_application_id,
6869     program_id = hz_utility_pub.program_id,
6870     program_update_date = sysdate
6871   WHERE organization_profile_id = p_from_id;
6872 
6873 
6874 EXCEPTION
6875   WHEN OTHERS THEN
6876     FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
6877     FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6878     FND_MSG_PUB.ADD;
6879     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6880 END do_displayed_duns_merge;
6881 
6882 
6883 PROCEDURE insert_request_log(
6884         p_source_party_id       IN      NUMBER,
6885         p_destination_party_id  IN      NUMBER
6886 ) IS
6887 
6888         l_requested_product     VARCHAR2(100);
6889         l_duns_number           NUMBER;
6890 
6891 BEGIN
6892 
6893 --Insert a row in HZ_DNB_REQUEST_LOG table.
6894     SELECT requested_product, duns_number
6895     INTO   l_requested_product, l_duns_number
6896     FROM   hz_dnb_request_log
6897     WHERE  party_id = p_source_party_id
6898     AND    request_id = (
6899                SELECT MAX(request_id)
6900                FROM   hz_dnb_request_log
6901                WHERE  party_id = p_source_party_id
6902                AND    status = 'S' );
6903 
6904     INSERT INTO hz_dnb_request_log(
6905        REQUEST_ID,
6906        PARTY_ID,
6907        REQUESTED_PRODUCT,
6908        DUNS_NUMBER,
6909        STATUS,
6910        CREATED_BY,
6911        CREATION_DATE,
6912        LAST_UPDATED_BY,
6913        LAST_UPDATE_DATE,
6914        LAST_UPDATE_LOGIN,
6915        COPIED_FROM_PARTY_ID )
6916     VALUES(
6917        HZ_DNB_REQUEST_LOG_S.nextval,
6918        p_destination_party_id,
6919        l_requested_product,
6920        l_duns_number,
6921        'S',
6922        hz_utility_pub.CREATED_BY,
6923        hz_utility_pub.CREATION_DATE,
6924        hz_utility_pub.LAST_UPDATED_BY,
6925        hz_utility_pub.LAST_UPDATE_DATE,
6926        hz_utility_pub.LAST_UPDATE_LOGIN,
6927        p_source_party_id );
6928 EXCEPTION
6929   WHEN NO_DATA_FOUND THEN
6930     null;
6931 END insert_request_log;
6932 
6933  --
6934   -- PRIVATE PROCEDURE do_denormalize_contact_point
6935   --
6936   -- DESCRIPTION
6937   --   Private procedure to denormalize some type of contact point to hz_parties.
6938   --
6939   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6940   --
6941   -- ARGUMENTS
6942   --   IN:
6943   --     p_party_id                     Party ID.
6944   --     p_contact_point_type           Contact point type.
6945   --     p_url                          URL.
6946   --     p_email_address                Email address.
6947   --     p_phone_contact_pt_id		Contact point id.
6948   --     p_phone_purpose		Contact Point Purpose.
6949   --     p_phone_line_type		Phone line type.
6950   --     p_phone_country_code		Phone country code.
6951   --     p_phone_area_code		Phone area code.
6952   --     p_phone_number			Phone Number.
6953   --     p_phone_extension		Phone extension.
6954   -- NOTES
6955   --
6956   -- MODIFICATION HISTORY
6957   --
6958   --   08-19-2003    Ramesh.Ch           o Created.
6959   --
6960   --
6961 
6962   PROCEDURE do_denormalize_contact_point (
6963     p_party_id				    IN     NUMBER,
6964     p_contact_point_type		    IN     VARCHAR2,
6965     p_url				    IN     VARCHAR2,
6966     p_email_address			    IN     VARCHAR2,
6967     p_phone_contact_pt_id		    IN     NUMBER,
6968     p_phone_purpose			    IN     VARCHAR2,
6969     p_phone_line_type			    IN     VARCHAR2,
6970     p_phone_country_code		    IN     VARCHAR2,
6971     p_phone_area_code			    IN     VARCHAR2,
6972     p_phone_number			    IN     VARCHAR2,
6973     p_phone_extension			    IN     VARCHAR2
6974   ) IS
6975   BEGIN
6976 
6977     IF p_contact_point_type = 'WEB' THEN
6978       UPDATE hz_parties
6979       SET    url		       = p_url,
6980              last_update_date          = hz_utility_v2pub.last_update_date,
6981 	     last_updated_by           = hz_utility_v2pub.last_updated_by,
6982 	     last_update_login         = hz_utility_v2pub.last_update_login,
6983 	     request_id                = hz_utility_v2pub.request_id,
6984 	     program_application_id    = hz_utility_v2pub.program_application_id,
6985 	     program_id                = hz_utility_v2pub.program_id,
6986 	     program_update_date       = sysdate
6987       WHERE  party_id = p_party_id;
6988     ELSIF p_contact_point_type = 'EMAIL' THEN
6989       UPDATE hz_parties
6990       SET    email_address	       = p_email_address,
6991              last_update_date          = hz_utility_v2pub.last_update_date,
6992 	     last_updated_by           = hz_utility_v2pub.last_updated_by,
6993 	     last_update_login         = hz_utility_v2pub.last_update_login,
6994 	     request_id                = hz_utility_v2pub.request_id,
6995 	     program_application_id    = hz_utility_v2pub.program_application_id,
6996 	     program_id                = hz_utility_v2pub.program_id,
6997 	     program_update_date       = sysdate
6998       WHERE  party_id = p_party_id;
6999     ELSIF p_contact_point_type = 'PHONE' THEN
7000       UPDATE hz_parties
7001       SET    primary_phone_contact_pt_id       = p_phone_contact_pt_id,
7002              primary_phone_purpose             = p_phone_purpose,
7003 	     primary_phone_line_type           = p_phone_line_type,
7004 	     primary_phone_country_code        = p_phone_country_code,
7005 	     primary_phone_area_code           = p_phone_area_code,
7006 	     primary_phone_number              = p_phone_number,
7007 	     primary_phone_extension           = p_phone_extension,
7008              last_update_date          = hz_utility_v2pub.last_update_date,
7009 	     last_updated_by           = hz_utility_v2pub.last_updated_by,
7010 	     last_update_login         = hz_utility_v2pub.last_update_login,
7011 	     request_id                = hz_utility_v2pub.request_id,
7012 	     program_application_id    = hz_utility_v2pub.program_application_id,
7013 	     program_id                = hz_utility_v2pub.program_id,
7014 	     program_update_date       = sysdate
7015       WHERE  party_id = p_party_id;
7016     END IF;
7017 
7018 
7019   END do_denormalize_contact_point;
7020 
7021   PROCEDURE do_hierarchy_nodes_merge(p_from_id       IN      NUMBER:=FND_API.G_MISS_NUM,
7022 				     p_from_fk_id    IN      NUMBER:=FND_API.G_MISS_NUM,
7023 				     p_to_fk_id      IN      NUMBER:=FND_API.G_MISS_NUM,
7024 				     x_return_status IN  OUT NOCOPY          VARCHAR2,
7025 				     p_action	     IN	     VARCHAR2,
7026 				     p_sub_obj_merge IN	     VARCHAR2 :=FND_API.G_MISS_CHAR
7027 				    )
7028   IS
7029 CURSOR c_hier_flag(cp_rel_type VARCHAR2) IS
7030   SELECT HIERARCHICAL_FLAG, MULTIPLE_PARENT_ALLOWED --5547536
7031   FROM   HZ_RELATIONSHIP_TYPES
7032   WHERE  RELATIONSHIP_TYPE = cp_rel_type
7033   AND    ROWNUM = 1;
7034 
7035 CURSOR c_relship_det(cp_relship_id NUMBER) IS
7036   SELECT relationship_type,subject_id,subject_table_name,subject_type,
7037          object_id,object_table_name,object_type,start_date,
7038 	 direction_code,status,end_date
7039   FROM HZ_RELATIONSHIPS
7040   WHERE  relationship_id = cp_relship_id
7041   AND DIRECTIONAL_FLAG = 'F';
7042 
7043 --5547536
7044 
7045 CURSOR check_parent_exists(cp_rel_type VARCHAR2, cp_child_id NUMBER, cp_table_name VARCHAR2, cp_object_type VARCHAR2) IS
7046    SELECT parent_id
7047    FROM hz_hierarchy_nodes
7048    WHERE child_id = cp_child_id
7049    AND   child_table_name = cp_table_name
7050    AND   child_object_type = cp_object_type
7051    AND   hierarchy_type = cp_rel_type
7052    AND   effective_end_date > sysdate --bug 6696774
7053    AND level_number = 1;
7054 
7055 l_hierarchical_flag       VARCHAR2(1);
7056 l_hierarchy_rec           HZ_HIERARCHY_PUB.HIERARCHY_NODE_REC_TYPE;
7057 l_subject_id		  NUMBER;
7058 l_object_id              NUMBER;
7059 l_subject_table_name      VARCHAR2(30);
7060 l_object_table_name       VARCHAR2(30);
7061 l_start_date              DATE;
7062 l_direction_code          VARCHAR2(30);
7063 l_msg_count               NUMBER;
7064 l_msg_data                VARCHAR2(2000);
7065 l_return_status		  VARCHAR2(10);
7066 l_status		  VARCHAR2(1);
7067 l_rel_type		 HZ_RELATIONSHIPS.RELATIONSHIP_TYPE%TYPE;
7068 l_rel_code		 HZ_RELATIONSHIPS.RELATIONSHIP_CODE%TYPE;
7069 l_subject_type		 HZ_RELATIONSHIPS.SUBJECT_TYPE%TYPE;
7070 l_object_type		 HZ_RELATIONSHIPS.OBJECT_TYPE%TYPE;
7071 from_end_date		date;
7072 --5547536
7073 l_multiple_parent_flag  VARCHAR2(1);
7074 l_from_par_id           NUMBER;
7075 l_to_par_id             NUMBER;
7076 l_allow_child_merge     varchar2(1);
7077 l_hier_exists           varchar2(1);
7078 
7079 
7080   BEGIN
7081 
7082     IF HZ_PARTY_MERGE.g_merge_reason_code =  'DUPLICATE_RELN_PARTY' THEN
7083 	    x_return_status := 'S';
7084 	    return;
7085     END IF;
7086 
7087     OPEN  c_relship_det(p_from_id);
7088     FETCH c_relship_det INTO l_rel_type,l_subject_id,l_subject_table_name,l_subject_type,
7089 			     l_object_id,l_object_table_name,l_object_type,l_start_date,
7090 			     l_direction_code,l_status,from_end_date;
7091     CLOSE c_relship_det;
7092     OPEN  c_hier_flag(l_rel_type);
7093     FETCH c_hier_flag INTO l_hierarchical_flag, l_multiple_parent_flag;
7094     CLOSE c_hier_flag;
7095 
7096     BEGIN
7097 
7098     SELECT 'Y' INTO l_hier_exists
7099     FROM  hz_hierarchy_nodes
7100     WHERE (parent_id = l_object_id
7101     OR child_id = l_object_id)
7102     AND  hierarchy_type = l_rel_type
7103     AND   effective_end_date > SYSDATE
7104     AND   l_hierarchical_flag = 'Y'
7105     AND ROWNUM = 1;
7106 
7107     EXCEPTION
7108 
7109         WHEN NO_DATA_FOUND THEN
7110              l_hier_exists := 'N';
7111 
7112         WHEN OTHERS THEN
7113              l_hier_exists := 'N';
7114     END;
7115 
7116     IF l_hier_exists = 'Y' THEN
7117 
7118 --5471816
7119     IF l_hierarchical_flag = 'Y' AND NVL(l_multiple_parent_flag, 'N')='N' AND p_action = 'T' AND l_status = 'A' THEN
7120 
7121         IF p_sub_obj_merge = 'OBJ' and l_direction_code = 'P' THEN
7122 
7123 	  OPEN check_parent_exists(l_rel_type,p_from_fk_id,l_object_table_name,l_object_type);
7124           FETCH check_parent_exists INTO l_from_par_id;
7125           CLOSE check_parent_exists;
7126 
7127 
7128 	  OPEN check_parent_exists(l_rel_type,p_to_fk_id,l_object_table_name,l_object_type);
7129           FETCH check_parent_exists INTO l_to_par_id;
7130           CLOSE check_parent_exists;
7131 
7132         IF l_from_par_id IS NOT NULL AND l_to_par_id IS NOT NULL AND l_from_par_id <> l_to_par_id
7133              AND l_from_par_id = l_subject_id THEN
7134 	  l_allow_child_merge := 'N';
7135 
7136 	  BEGIN
7137 
7138 	  SELECT 'Y' INTO l_allow_child_merge
7139           FROM hz_merge_parties
7140           WHERE ((from_party_id = l_from_par_id AND to_party_id = l_to_par_id)
7141 	  	  OR (from_party_id = l_to_par_id AND to_party_id = l_from_par_id))
7142           AND rownum = 1;
7143 
7144   	  EXCEPTION
7145 		WHEN others THEN
7146                     l_allow_child_merge := 'N';
7147 	  END;
7148 
7149           IF l_allow_child_merge = 'N' AND p_action = 'T' THEN
7150               FND_MESSAGE.SET_NAME('AR', 'HZ_HIER_MERGE_ERROR');
7151               FND_MESSAGE.SET_TOKEN('PARTIES',p_from_fk_id||', '||p_to_fk_id);
7152 	      FND_MSG_PUB.ADD;
7153       	      x_return_status := FND_API.G_RET_STS_ERROR;
7154 	      return;
7155 	  END IF;
7156          END IF;
7157 
7158         ELSIF p_sub_obj_merge = 'SUB' AND l_direction_code = 'C' THEN
7159 
7160 	  OPEN check_parent_exists(l_rel_type,p_from_fk_id,l_subject_table_name,l_subject_type);
7161           FETCH check_parent_exists INTO l_from_par_id;
7162           CLOSE check_parent_exists;
7163 
7164           OPEN check_parent_exists(l_rel_type,p_to_fk_id,l_subject_table_name,l_subject_type);
7165           FETCH check_parent_exists INTO l_to_par_id;
7166           CLOSE check_parent_exists;
7167 
7168           IF l_from_par_id IS NOT NULL AND l_to_par_id IS NOT NULL AND l_from_par_id <> l_to_par_id
7169               AND l_from_par_id = l_object_id THEN
7170 	  l_allow_child_merge := 'N';
7171 
7172 	  BEGIN
7173 
7174 	  SELECT 'Y' INTO l_allow_child_merge
7175           FROM hz_merge_parties
7176           WHERE ((from_party_id = l_from_par_id AND to_party_id = l_to_par_id)
7177 	 	  OR (from_party_id = l_to_par_id AND to_party_id = l_from_par_id))
7178 	  AND rownum = 1;
7179 
7180   	  EXCEPTION
7181 		WHEN others THEN
7182                     l_allow_child_merge := 'N';
7183 	  END;
7184 
7185           IF l_allow_child_merge = 'N' AND p_action = 'T' THEN
7186 
7187               FND_MESSAGE.SET_NAME('AR', 'HZ_HIER_MERGE_ERROR');
7188               FND_MESSAGE.SET_TOKEN('PARTIES',p_from_fk_id||', '||p_to_fk_id);
7189               FND_MSG_PUB.ADD;
7190               x_return_status := FND_API.G_RET_STS_ERROR;
7191               return;
7192 	 END IF;
7193          END IF;
7194 
7195         END IF;
7196 
7197     END IF;
7198 --end 5471816
7199     IF l_hierarchical_flag = 'Y'  THEN
7200         l_hierarchy_rec.hierarchy_type := l_rel_type;
7201         l_hierarchy_rec.effective_end_date :=sysdate;
7202         l_hierarchy_rec.relationship_id := p_from_id;
7203 	IF(p_action = 'M') THEN
7204           l_hierarchy_rec.status := 'M';
7205         ELSE
7206 	  l_hierarchy_rec.status := 'I';
7207 	END IF;
7208 	-- check if relationship type is parent one
7209         IF l_direction_code = 'P' THEN
7210               -- assign the subject to parent for hierarchy
7211               l_hierarchy_rec.parent_id := l_subject_id;
7212               l_hierarchy_rec.parent_table_name := l_subject_table_name;
7213               l_hierarchy_rec.parent_object_type := l_subject_type;
7214               l_hierarchy_rec.child_id := l_object_id;
7215               l_hierarchy_rec.child_table_name := l_object_table_name;
7216               l_hierarchy_rec.child_object_type := l_object_type;
7217         ELSIF l_direction_code = 'C' THEN
7218               -- assign the object to parent
7219               l_hierarchy_rec.parent_id := l_object_id;
7220               l_hierarchy_rec.parent_table_name := l_object_table_name;
7221               l_hierarchy_rec.parent_object_type := l_object_type;
7222               l_hierarchy_rec.child_id := l_subject_id;
7223               l_hierarchy_rec.child_table_name := l_subject_table_name;
7224               l_hierarchy_rec.child_object_type := l_subject_type;
7225 
7226         END IF;
7227 
7228 	HZ_HIERARCHY_PUB.update_link(
7229 		    p_init_msg_list           => FND_API.G_FALSE,
7230 		    p_hierarchy_node_rec      => l_hierarchy_rec,
7231 		    x_return_status           => x_return_status,
7232 		    x_msg_count               => l_msg_count,
7233 		    x_msg_data                => l_msg_data
7234 		   );
7235 --Bug 9464314
7236 	IF  x_return_status = 'U' AND INSTR(l_msg_data,'1403') > 0 THEN
7237             x_return_status := FND_API.G_RET_STS_SUCCESS;
7238 	    l_msg_data := NULL;
7239         END IF;
7240 
7241        END IF;
7242       END IF; --l_hier_exists
7243 
7244        IF l_hierarchical_flag = 'Y' THEN
7245 
7246         IF (p_action = 'T') THEN
7247 
7248 	  l_hierarchy_rec.hierarchy_type         := l_rel_type;
7249           l_hierarchy_rec.effective_start_date   := sysdate;
7250 	  l_hierarchy_rec.effective_end_date     := from_end_date;
7251 	  l_hierarchy_rec.status	         := l_status;
7252 	  l_hierarchy_rec.relationship_id        := p_from_id;
7253           IF l_direction_code = 'P' THEN
7254               l_hierarchy_rec.parent_table_name  := l_subject_table_name;
7255               l_hierarchy_rec.parent_object_type := l_subject_type;
7256               l_hierarchy_rec.child_table_name   := l_object_table_name;
7257               l_hierarchy_rec.child_object_type  := l_object_type;
7258           ELSIF l_direction_code = 'C' THEN
7259 	      l_hierarchy_rec.parent_table_name  := l_object_table_name;
7260               l_hierarchy_rec.parent_object_type := l_object_type ;
7261               l_hierarchy_rec.child_table_name   := l_subject_table_name;
7262               l_hierarchy_rec.child_object_type  := l_subject_type;
7263 	  END IF;
7264 
7265 	  IF(p_sub_obj_merge = 'SUB') THEN
7266 	    IF l_direction_code = 'P' THEN
7267 	      l_hierarchy_rec.parent_id := p_to_fk_id;
7268 	      l_hierarchy_rec.child_id  := l_object_id;
7269 	    ELSIF l_direction_code = 'C' THEN
7270 	      l_hierarchy_rec.parent_id := l_object_id;
7271 	      l_hierarchy_rec.child_id  := p_to_fk_id;
7272 	    END IF;
7273 	  ELSIF(p_sub_obj_merge = 'OBJ') THEN
7274 	    IF l_direction_code = 'P' THEN
7275 	      l_hierarchy_rec.parent_id := l_subject_id;
7276 	      l_hierarchy_rec.child_id  := p_to_fk_id;
7277 	    ELSIF l_direction_code = 'C' THEN
7278 	      l_hierarchy_rec.parent_id := p_to_fk_id;
7279 	      l_hierarchy_rec.child_id  := l_subject_id;
7280 	    END IF;
7281 	  END IF;
7282 	  HZ_HIERARCHY_PUB.create_link(
7283 		    p_init_msg_list           => FND_API.G_FALSE,
7284 		    p_hierarchy_node_rec      => l_hierarchy_rec,
7285 		    x_return_status           => l_return_status,
7286 		    x_msg_count               => l_msg_count,
7287 		    x_msg_data                => l_msg_data
7288 	   );
7289 
7290         END IF;
7291 
7292     END IF;
7293 
7294   END;
7295 
7296 END HZ_MERGE_PKG;