[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;