[Home] [Help]
PACKAGE BODY: APPS.HZ_PERSON_BO_PUB
Source
1 PACKAGE BODY hz_person_bo_pub AS
2 /*$Header: ARHBPPBB.pls 120.25.12010000.8 2009/10/28 18:03:20 awu ship $ */
3
4 -- PRIVATE PROCEDURE assign_person_rec
5 --
6 -- DESCRIPTION
7 -- Assign attribute value from person business object to plsql record.
8 --
9 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10 --
11 -- ARGUMENTS
12 -- IN:
13 -- p_person_obj Person business object.
14 -- p_person_id Person ID.
15 -- p_person_os Person orig system.
16 -- p_person_osr Person orig system reference.
17 -- p_create_or_update Create or update flag.
18 -- IN/OUT:
19 -- px_person_rec Person plsql record.
20 --
21 -- NOTES
22 --
23 -- MODIFICATION HISTORY
24 --
25 -- 14-DEC-2004 Arnold Ng Created.
26 --
27
28 PROCEDURE assign_person_rec(
29 p_person_obj IN HZ_PERSON_BO,
30 p_person_id IN NUMBER,
31 p_person_os IN VARCHAR2,
32 p_person_osr IN VARCHAR2,
33 p_create_or_update IN VARCHAR2 := 'C',
34 px_person_rec IN OUT NOCOPY HZ_PARTY_V2PUB.PERSON_REC_TYPE
35 );
36
37 -- PRIVATE PROCEDURE assign_person_lang_rec
38 --
39 -- DESCRIPTION
40 -- Assign attribute value from person language object to plsql record.
41 --
42 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
43 --
44 -- ARGUMENTS
45 -- IN:
46 -- p_person_lang_obj Person language object.
47 -- p_party_id Party ID.
48 -- IN/OUT:
49 -- px_person_lang_rec Person language plsql record.
50 --
51 -- NOTES
52 --
53 -- MODIFICATION HISTORY
54 --
55 -- 14-DEC-2004 Arnold Ng Created.
56 --
57
58 PROCEDURE assign_person_lang_rec(
59 p_person_lang_obj IN HZ_PERSON_LANG_OBJ,
60 p_party_id IN NUMBER,
61 px_person_lang_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE
62 );
63
64 -- PRIVATE PROCEDURE assign_education_rec
65 --
66 -- DESCRIPTION
67 -- Assign attribute value from education object to plsql record.
68 --
69 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
70 --
71 -- ARGUMENTS
72 -- IN:
73 -- p_education_obj Education object.
74 -- p_party_id Party ID.
75 -- IN/OUT:
76 -- px_education_rec Education plsql record.
77 --
78 -- NOTES
79 --
80 -- MODIFICATION HISTORY
81 --
82 -- 14-DEC-2004 Arnold Ng Created.
83 --
84
85 PROCEDURE assign_education_rec(
86 p_education_obj IN HZ_EDUCATION_OBJ,
87 p_party_id IN NUMBER,
88 px_education_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE
89 );
90
91 -- PRIVATE PROCEDURE assign_citizenship_rec
92 --
93 -- DESCRIPTION
94 -- Assign attribute value from citizenship object to plsql record.
95 --
96 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
97 --
98 -- ARGUMENTS
99 -- IN:
100 -- p_citizenship_obj Citizenship object.
101 -- p_party_id Party ID.
102 -- IN/OUT:
103 -- px_citizenship_rec Citizenship plsql record.
104 --
105 -- NOTES
106 --
107 -- MODIFICATION HISTORY
108 --
109 -- 14-DEC-2004 Arnold Ng Created.
110 --
111
112 PROCEDURE assign_citizenship_rec(
113 p_citizenship_obj IN HZ_CITIZENSHIP_OBJ,
114 p_party_id IN NUMBER,
115 px_citizenship_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE
116 );
117
118 -- PRIVATE PROCEDURE assign_employ_hist_rec
119 --
120 -- DESCRIPTION
121 -- Assign attribute value from employment history object to plsql record.
122 --
123 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
124 --
125 -- ARGUMENTS
126 -- IN:
127 -- p_employ_hist_obj Employment history object.
128 -- p_party_id Party ID.
129 -- IN/OUT:
130 -- px_employ_hist_rec Employment history plsql record.
131 --
132 -- NOTES
133 --
134 -- MODIFICATION HISTORY
135 --
136 -- 14-DEC-2004 Arnold Ng Created.
137 --
138
139 PROCEDURE assign_employ_hist_rec(
140 p_employ_hist_obj IN HZ_EMPLOY_HIST_BO,
141 p_party_id IN NUMBER,
142 px_employ_hist_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE
143 );
144
145 -- PRIVATE PROCEDURE assign_work_class_rec
146 --
147 -- DESCRIPTION
148 -- Assign attribute value from work class object to plsql record.
149 --
150 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
151 --
152 -- ARGUMENTS
153 -- IN:
154 -- p_work_class_obj Work class object.
155 -- p_employ_hist_id Employment history ID.
156 -- IN/OUT:
157 -- px_work_class_rec Work class plsql record.
158 --
159 -- NOTES
160 --
161 -- MODIFICATION HISTORY
162 --
163 -- 14-DEC-2004 Arnold Ng Created.
164 --
165
166 PROCEDURE assign_work_class_rec(
167 p_work_class_obj IN HZ_WORK_CLASS_OBJ,
168 p_employ_hist_id IN NUMBER,
169 px_work_class_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE
170 );
171
172 -- PRIVATE PROCEDURE assign_interest_rec
173 --
174 -- DESCRIPTION
175 -- Assign attribute value from person interest object to plsql record.
176 --
177 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
178 --
179 -- ARGUMENTS
180 -- IN:
181 -- p_work_class_obj Person interest object.
182 -- p_party_id Party ID.
183 -- IN/OUT:
184 -- px_person_interest_rec Person interest plsql record.
185 --
186 -- NOTES
187 --
188 -- MODIFICATION HISTORY
189 --
190 -- 14-DEC-2004 Arnold Ng Created.
191 --
192
193 PROCEDURE assign_interest_rec(
194 p_person_interest_obj IN HZ_PERSON_INTEREST_OBJ,
195 p_party_id IN NUMBER,
196 px_person_interest_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.PERSON_INTEREST_REC_TYPE
197 );
198
199 -- PRIVATE PROCEDURE create_person_info
200 --
201 -- DESCRIPTION
202 -- Create person information, such as language, education, citizenship,
203 -- employment history and interest
204 --
205 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
206 --
207 -- ARGUMENTS
208 -- IN:
209 -- p_language_obj Person language object.
210 -- p_education_obj Education object.
211 -- p_citizenship_obj Citizenship object.
212 -- p_employ_hist_obj Employment history object.
213 -- p_interest_obj Person interest object.
214 -- p_party_id Party ID.
215 -- OUT:
216 -- x_return_status Return status after the call. The status can
217 -- be fnd_api.g_ret_sts_success (success),
218 -- fnd_api.g_ret_sts_error (error),
219 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
220 -- x_msg_count Number of messages in message stack.
221 -- x_msg_data Message text if x_msg_count is 1.
222 --
223 -- NOTES
224 --
225 -- MODIFICATION HISTORY
226 --
227 -- 14-DEC-2004 Arnold Ng Created.
228 --
229
230 PROCEDURE create_person_info(
231 p_language_obj IN OUT NOCOPY HZ_PERSON_LANG_OBJ_TBL,
232 p_education_obj IN OUT NOCOPY HZ_EDUCATION_OBJ_TBL,
233 p_citizenship_obj IN OUT NOCOPY HZ_CITIZENSHIP_OBJ_TBL,
234 p_employ_hist_obj IN OUT NOCOPY HZ_EMPLOY_HIST_BO_TBL,
235 p_interest_obj IN OUT NOCOPY HZ_PERSON_INTEREST_OBJ_TBL,
236 p_person_id IN NUMBER,
237 x_return_status OUT NOCOPY VARCHAR2,
238 x_msg_count OUT NOCOPY NUMBER,
239 x_msg_data OUT NOCOPY VARCHAR2
240 );
241
242 -- PRIVATE PROCEDURE save_person_info
243 --
244 -- DESCRIPTION
245 -- Create or update person information, such as language, education, citizenship,
246 -- employment history and interest
247 --
248 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
249 --
250 -- ARGUMENTS
251 -- IN:
252 -- p_language_obj Person language object.
253 -- p_education_obj Education object.
254 -- p_citizenship_obj Citizenship object.
255 -- p_employ_hist_obj Employment history object.
256 -- p_interest_obj Person interest object.
257 -- p_party_id Party ID.
258 -- OUT:
259 -- x_return_status Return status after the call. The status can
260 -- be fnd_api.g_ret_sts_success (success),
261 -- fnd_api.g_ret_sts_error (error),
262 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
263 -- x_msg_count Number of messages in message stack.
264 -- x_msg_data Message text if x_msg_count is 1.
265 --
266 -- NOTES
267 --
268 -- MODIFICATION HISTORY
269 --
270 -- 14-DEC-2004 Arnold Ng Created.
271 --
272
273 PROCEDURE save_person_info(
274 p_language_obj IN OUT NOCOPY HZ_PERSON_LANG_OBJ_TBL,
275 p_education_obj IN OUT NOCOPY HZ_EDUCATION_OBJ_TBL,
276 p_citizenship_obj IN OUT NOCOPY HZ_CITIZENSHIP_OBJ_TBL,
277 p_employ_hist_obj IN OUT NOCOPY HZ_EMPLOY_HIST_BO_TBL,
278 p_interest_obj IN OUT NOCOPY HZ_PERSON_INTEREST_OBJ_TBL,
279 p_person_id IN NUMBER,
280 x_return_status OUT NOCOPY VARCHAR2,
281 x_msg_count OUT NOCOPY NUMBER,
282 x_msg_data OUT NOCOPY VARCHAR2
283 );
284
285 -- PRIVATE PROCEDURE assign_person_rec
286 --
287 -- DESCRIPTION
288 -- Assign attribute value from person business object to plsql record.
289 --
290 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
291 --
292 -- ARGUMENTS
293 -- IN:
294 -- p_person_obj Person business object.
295 -- p_person_id Person ID.
296 -- p_person_os Person orig system.
297 -- p_person_osr Person orig system reference.
298 -- p_create_or_update Create or update flag.
299 -- IN/OUT:
300 -- px_person_rec Person plsql record.
301 --
302 -- NOTES
303 --
304 -- MODIFICATION HISTORY
305 --
306 -- 14-DEC-2004 Arnold Ng Created.
307
308 PROCEDURE assign_person_rec(
309 p_person_obj IN HZ_PERSON_BO,
310 p_person_id IN NUMBER,
311 p_person_os IN VARCHAR2,
312 p_person_osr IN VARCHAR2,
313 p_create_or_update IN VARCHAR2 := 'C',
314 px_person_rec IN OUT NOCOPY HZ_PARTY_V2PUB.PERSON_REC_TYPE
315 ) IS
316 BEGIN
317 px_person_rec.person_pre_name_adjunct := p_person_obj.person_pre_name_adjunct;
318 px_person_rec.person_first_name := p_person_obj.person_first_name;
319 px_person_rec.person_middle_name := p_person_obj.person_middle_name;
320 px_person_rec.person_last_name := p_person_obj.person_last_name;
321 px_person_rec.person_name_suffix := p_person_obj.person_name_suffix;
322 px_person_rec.person_title := p_person_obj.person_title;
323 px_person_rec.person_academic_title := p_person_obj.person_academic_title;
324 px_person_rec.person_previous_last_name := p_person_obj.person_previous_last_name;
325 px_person_rec.person_initials := p_person_obj.person_initials;
326 px_person_rec.known_as := p_person_obj.known_as;
327 px_person_rec.known_as2 := p_person_obj.known_as2;
328 px_person_rec.known_as3 := p_person_obj.known_as3;
329 px_person_rec.known_as4 := p_person_obj.known_as4;
330 px_person_rec.known_as5 := p_person_obj.known_as5;
331 px_person_rec.person_name_phonetic := p_person_obj.person_name_phonetic;
332 px_person_rec.person_first_name_phonetic := p_person_obj.person_first_name_phonetic;
333 px_person_rec.person_last_name_phonetic := p_person_obj.person_last_name_phonetic;
334 px_person_rec.middle_name_phonetic := p_person_obj.middle_name_phonetic;
335 px_person_rec.tax_reference := p_person_obj.tax_reference;
336 px_person_rec.jgzz_fiscal_code := p_person_obj.jgzz_fiscal_code;
337 px_person_rec.person_iden_type := p_person_obj.person_iden_type;
338 px_person_rec.person_identifier := p_person_obj.person_identifier;
339 px_person_rec.date_of_birth := p_person_obj.date_of_birth;
340 px_person_rec.place_of_birth := p_person_obj.place_of_birth;
341 px_person_rec.date_of_death := p_person_obj.date_of_death;
342 IF(p_person_obj.deceased_flag in ('Y','N')) THEN
343 px_person_rec.deceased_flag := p_person_obj.deceased_flag;
344 END IF;
345 px_person_rec.gender := p_person_obj.gender;
346 px_person_rec.declared_ethnicity := p_person_obj.declared_ethnicity;
347 px_person_rec.marital_status := p_person_obj.marital_status;
348 px_person_rec.marital_status_effective_date := p_person_obj.marital_status_eff_date;
349 px_person_rec.personal_income := p_person_obj.personal_income;
350 IF(p_person_obj.head_of_household_flag in ('Y','N')) THEN
351 px_person_rec.head_of_household_flag := p_person_obj.head_of_household_flag;
352 END IF;
353 px_person_rec.household_income := p_person_obj.household_income;
354 px_person_rec.household_size := p_person_obj.household_size;
355 px_person_rec.rent_own_ind := p_person_obj.rent_own_ind;
356 px_person_rec.last_known_gps:= p_person_obj.last_known_gps;
357 px_person_rec.internal_flag:= p_person_obj.internal_flag;
358 IF(p_create_or_update = 'C') THEN
359 px_person_rec.party_rec.orig_system:= p_person_os;
360 px_person_rec.party_rec.orig_system_reference:= p_person_osr;
361 px_person_rec.created_by_module:= HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
362 END IF;
363 px_person_rec.actual_content_source:= p_person_obj.actual_content_source;
364 px_person_rec.party_rec.party_id:= p_person_id;
365 px_person_rec.party_rec.party_number:= p_person_obj.party_number;
366 px_person_rec.party_rec.validated_flag:= p_person_obj.validated_flag;
367 IF(p_person_obj.status in ('A','I')) THEN
368 px_person_rec.party_rec.status:= p_person_obj.status;
369 END IF;
370 px_person_rec.party_rec.category_code:= p_person_obj.category_code;
371 px_person_rec.party_rec.salutation:= p_person_obj.salutation;
372 px_person_rec.party_rec.attribute_category:= p_person_obj.attribute_category;
373 px_person_rec.party_rec.attribute1:= p_person_obj.attribute1;
374 px_person_rec.party_rec.attribute2:= p_person_obj.attribute2;
375 px_person_rec.party_rec.attribute3:= p_person_obj.attribute3;
376 px_person_rec.party_rec.attribute4:= p_person_obj.attribute4;
377 px_person_rec.party_rec.attribute5:= p_person_obj.attribute5;
378 px_person_rec.party_rec.attribute6:= p_person_obj.attribute6;
379 px_person_rec.party_rec.attribute7:= p_person_obj.attribute7;
380 px_person_rec.party_rec.attribute8:= p_person_obj.attribute8;
381 px_person_rec.party_rec.attribute9:= p_person_obj.attribute9;
382 px_person_rec.party_rec.attribute10:= p_person_obj.attribute10;
383 px_person_rec.party_rec.attribute11:= p_person_obj.attribute11;
384 px_person_rec.party_rec.attribute12:= p_person_obj.attribute12;
385 px_person_rec.party_rec.attribute13:= p_person_obj.attribute13;
386 px_person_rec.party_rec.attribute14:= p_person_obj.attribute14;
387 px_person_rec.party_rec.attribute15:= p_person_obj.attribute15;
388 px_person_rec.party_rec.attribute16:= p_person_obj.attribute16;
389 px_person_rec.party_rec.attribute17:= p_person_obj.attribute17;
390 px_person_rec.party_rec.attribute18:= p_person_obj.attribute18;
391 px_person_rec.party_rec.attribute19:= p_person_obj.attribute19;
392 px_person_rec.party_rec.attribute20:= p_person_obj.attribute20;
393 px_person_rec.party_rec.attribute21:= p_person_obj.attribute21;
394 px_person_rec.party_rec.attribute22:= p_person_obj.attribute22;
395 px_person_rec.party_rec.attribute23:= p_person_obj.attribute23;
396 px_person_rec.party_rec.attribute24:= p_person_obj.attribute24;
397 END assign_person_rec;
398
399 -- PRIVATE PROCEDURE assign_person_lang_rec
400 --
401 -- DESCRIPTION
402 -- Assign attribute value from person language object to plsql record.
403 --
404 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
405 --
406 -- ARGUMENTS
407 -- IN:
408 -- p_person_lang_obj Person language object.
409 -- p_party_id Party ID.
410 -- IN/OUT:
411 -- px_person_lang_rec Person language plsql record.
412 --
413 -- NOTES
414 --
415 -- MODIFICATION HISTORY
416 --
417 -- 14-DEC-2004 Arnold Ng Created.
418 --
419
420 PROCEDURE assign_person_lang_rec(
421 p_person_lang_obj IN HZ_PERSON_LANG_OBJ,
422 p_party_id IN NUMBER,
423 px_person_lang_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE
424 )IS
425 BEGIN
426 px_person_lang_rec.language_use_reference_id := p_person_lang_obj.language_use_reference_id;
427 px_person_lang_rec.language_name := p_person_lang_obj.language_name;
428 px_person_lang_rec.party_id := p_party_id;
429 IF(p_person_lang_obj.native_language in ('Y','N')) THEN
430 px_person_lang_rec.native_language := p_person_lang_obj.native_language;
431 END IF;
432 IF(p_person_lang_obj.primary_language_indicator in ('Y','N')) THEN
433 px_person_lang_rec.primary_language_indicator:= p_person_lang_obj.primary_language_indicator;
434 END IF;
435 px_person_lang_rec.reads_level := p_person_lang_obj.reads_level;
436 px_person_lang_rec.speaks_level := p_person_lang_obj.speaks_level;
437 px_person_lang_rec.writes_level := p_person_lang_obj.writes_level;
438 px_person_lang_rec.spoken_comprehension_level:= p_person_lang_obj.spoken_comprehension_level;
439 IF(p_person_lang_obj.status in ('A','I')) THEN
440 px_person_lang_rec.status := p_person_lang_obj.status;
441 END IF;
442 px_person_lang_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
443 END assign_person_lang_rec;
444
445 -- PRIVATE PROCEDURE assign_education_rec
446 --
447 -- DESCRIPTION
448 -- Assign attribute value from education object to plsql record.
449 --
450 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
451 --
452 -- ARGUMENTS
453 -- IN:
454 -- p_education_obj Education object.
455 -- p_party_id Party ID.
456 -- IN/OUT:
457 -- px_education_rec Education plsql record.
458 --
459 -- NOTES
460 --
461 -- MODIFICATION HISTORY
462 --
463 -- 14-DEC-2004 Arnold Ng Created.
464 --
465
466 PROCEDURE assign_education_rec(
467 p_education_obj IN HZ_EDUCATION_OBJ,
468 p_party_id IN NUMBER,
469 px_education_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE
470 )IS
471 BEGIN
472 px_education_rec.education_id:= p_education_obj.education_id;
473 px_education_rec.party_id:= p_party_id;
474 px_education_rec.course_major:= p_education_obj.course_major;
475 px_education_rec.degree_received:= p_education_obj.degree_received;
476 px_education_rec.start_date_attended:= p_education_obj.start_date_attended;
477 px_education_rec.last_date_attended:= p_education_obj.last_date_attended;
478 px_education_rec.school_attended_name:= p_education_obj.school_attended_name;
479 px_education_rec.school_party_id:= p_education_obj.school_party_id;
480 px_education_rec.type_of_school:= p_education_obj.type_of_school;
481 IF(p_education_obj.status in ('A','I')) THEN
482 px_education_rec.status:= p_education_obj.status;
483 END IF;
484 px_education_rec.created_by_module:= HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
485 END assign_education_rec;
486
487 -- PRIVATE PROCEDURE assign_citizenship_rec
488 --
489 -- DESCRIPTION
490 -- Assign attribute value from citizenship object to plsql record.
491 --
492 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
493 --
494 -- ARGUMENTS
495 -- IN:
496 -- p_citizenship_obj Citizenship object.
497 -- p_party_id Party ID.
498 -- IN/OUT:
499 -- px_citizenship_rec Citizenship plsql record.
500 --
501 -- NOTES
502 --
503 -- MODIFICATION HISTORY
504 --
505 -- 14-DEC-2004 Arnold Ng Created.
506 --
507
508 PROCEDURE assign_citizenship_rec(
509 p_citizenship_obj IN HZ_CITIZENSHIP_OBJ,
510 p_party_id IN NUMBER,
511 px_citizenship_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE
512 )IS
513 BEGIN
514 px_citizenship_rec.citizenship_id := p_citizenship_obj.citizenship_id;
515 px_citizenship_rec.party_id := p_party_id;
516 px_citizenship_rec.birth_or_selected := p_citizenship_obj.birth_or_selected;
517 px_citizenship_rec.country_code := p_citizenship_obj.country_code;
518 px_citizenship_rec.date_recognized := p_citizenship_obj.date_recognized;
519 px_citizenship_rec.date_disowned := p_citizenship_obj.date_disowned;
520 px_citizenship_rec.end_date := p_citizenship_obj.end_date;
521 px_citizenship_rec.document_type := p_citizenship_obj.document_type;
522 px_citizenship_rec.document_reference := p_citizenship_obj.document_reference;
523 IF(p_citizenship_obj.status in ('A','I')) THEN
524 px_citizenship_rec.status := p_citizenship_obj.status;
525 END IF;
526 px_citizenship_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
527 END assign_citizenship_rec;
528
529 -- PRIVATE PROCEDURE assign_employ_hist_rec
530 --
531 -- DESCRIPTION
532 -- Assign attribute value from employment history object to plsql record.
533 --
534 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
535 --
536 -- ARGUMENTS
537 -- IN:
538 -- p_employ_hist_obj Employment history object.
539 -- p_party_id Party ID.
540 -- IN/OUT:
541 -- px_employ_hist_rec Employment history plsql record.
542 --
543 -- NOTES
544 --
545 -- MODIFICATION HISTORY
546 --
547 -- 14-DEC-2004 Arnold Ng Created.
548 --
549
550 PROCEDURE assign_employ_hist_rec(
551 p_employ_hist_obj IN HZ_EMPLOY_HIST_BO,
552 p_party_id IN NUMBER,
553 px_employ_hist_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE
554 )IS
555 BEGIN
556 px_employ_hist_rec.employment_history_id := p_employ_hist_obj.employment_history_id;
557 px_employ_hist_rec.party_id := p_party_id;
558 px_employ_hist_rec.begin_date := p_employ_hist_obj.begin_date;
559 px_employ_hist_rec.end_date := p_employ_hist_obj.end_date;
560 px_employ_hist_rec.employment_type_code := p_employ_hist_obj.employment_type_code;
561 px_employ_hist_rec.employed_as_title_code := p_employ_hist_obj.employed_as_title_code;
562 px_employ_hist_rec.employed_as_title := p_employ_hist_obj.employed_as_title;
563 px_employ_hist_rec.employed_by_name_company := p_employ_hist_obj.employed_by_name_company;
564 px_employ_hist_rec.employed_by_party_id := p_employ_hist_obj.employed_by_party_id;
565 px_employ_hist_rec.employed_by_division_name := p_employ_hist_obj.employed_by_division_name;
566 px_employ_hist_rec.supervisor_name := p_employ_hist_obj.supervisor_name;
567 px_employ_hist_rec.branch := p_employ_hist_obj.branch;
568 px_employ_hist_rec.military_rank := p_employ_hist_obj.military_rank;
569 px_employ_hist_rec.served := p_employ_hist_obj.served;
570 px_employ_hist_rec.station := p_employ_hist_obj.station;
571 px_employ_hist_rec.responsibility := p_employ_hist_obj.responsibility;
572 px_employ_hist_rec.weekly_work_hours := p_employ_hist_obj.weekly_work_hours;
573 px_employ_hist_rec.reason_for_leaving := p_employ_hist_obj.reason_for_leaving;
574 px_employ_hist_rec.faculty_position_flag := p_employ_hist_obj.faculty_position_flag;
575 px_employ_hist_rec.tenure_code := p_employ_hist_obj.tenure_code;
576 px_employ_hist_rec.fraction_of_tenure := p_employ_hist_obj.fraction_of_tenure;
577 px_employ_hist_rec.comments := p_employ_hist_obj.comments;
578 IF(p_employ_hist_obj.status in ('A','I')) THEN
579 px_employ_hist_rec.status := p_employ_hist_obj.status;
580 END IF;
581 px_employ_hist_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
582 END assign_employ_hist_rec;
583
584 -- PRIVATE PROCEDURE assign_work_class_rec
585 --
586 -- DESCRIPTION
587 -- Assign attribute value from work class object to plsql record.
588 --
589 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
590 --
591 -- ARGUMENTS
592 -- IN:
593 -- p_work_class_obj Work class object.
594 -- p_employ_hist_id Employment history ID.
595 -- IN/OUT:
596 -- px_work_class_rec Work class plsql record.
597 --
598 -- NOTES
599 --
600 -- MODIFICATION HISTORY
601 --
602 -- 14-DEC-2004 Arnold Ng Created.
603 --
604
605 PROCEDURE assign_work_class_rec(
606 p_work_class_obj IN HZ_WORK_CLASS_OBJ,
607 p_employ_hist_id IN NUMBER,
608 px_work_class_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE
609 )IS
610 BEGIN
611 px_work_class_rec.work_class_id := p_work_class_obj.work_class_id;
612 px_work_class_rec.level_of_experience := p_work_class_obj.level_of_experience;
613 px_work_class_rec.work_class_name := p_work_class_obj.work_class_name;
614 px_work_class_rec.employment_history_id := p_employ_hist_id;
615 IF(p_work_class_obj.status in ('A','I')) THEN
616 px_work_class_rec.status := p_work_class_obj.status;
617 END IF;
618 px_work_class_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
619 END assign_work_class_rec;
620
621 -- PRIVATE PROCEDURE assign_interest_rec
622 --
623 -- DESCRIPTION
624 -- Assign attribute value from person interest object to plsql record.
625 --
626 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
627 --
628 -- ARGUMENTS
629 -- IN:
630 -- p_work_class_obj Person interest object.
631 -- p_party_id Party ID.
632 -- IN/OUT:
633 -- px_person_interest_rec Person interest plsql record.
634 --
635 -- NOTES
636 --
637 -- MODIFICATION HISTORY
638 --
639 -- 14-DEC-2004 Arnold Ng Created.
640 --
641
642 PROCEDURE assign_interest_rec(
643 p_person_interest_obj IN HZ_PERSON_INTEREST_OBJ,
644 p_party_id IN NUMBER,
645 px_person_interest_rec IN OUT NOCOPY HZ_PERSON_INFO_V2PUB.PERSON_INTEREST_REC_TYPE
646 )IS
647 BEGIN
648 px_person_interest_rec.person_interest_id := p_person_interest_obj.person_interest_id;
649 px_person_interest_rec.level_of_interest := p_person_interest_obj.level_of_interest;
650 px_person_interest_rec.party_id := p_party_id;
651 px_person_interest_rec.level_of_participation := p_person_interest_obj.level_of_participation;
652 px_person_interest_rec.interest_type_code := p_person_interest_obj.interest_type_code;
653 px_person_interest_rec.comments := p_person_interest_obj.comments;
654 IF(p_person_interest_obj.sport_indicator in ('Y','N')) THEN
655 px_person_interest_rec.sport_indicator := p_person_interest_obj.sport_indicator;
656 END IF;
657 px_person_interest_rec.sub_interest_type_code := p_person_interest_obj.sub_interest_type_code;
658 px_person_interest_rec.interest_name := p_person_interest_obj.interest_name;
659 px_person_interest_rec.team := p_person_interest_obj.team;
660 px_person_interest_rec.since := p_person_interest_obj.since;
661 IF(p_person_interest_obj.status in ('A','I')) THEN
662 px_person_interest_rec.status := p_person_interest_obj.status;
663 END IF;
664 px_person_interest_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
665 END assign_interest_rec;
666
667 -- PROCEDURE do_create_person_bo
668 --
669 -- DESCRIPTION
670 -- Create a person business object.
671 PROCEDURE do_create_person_bo(
672 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
673 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
674 p_person_obj IN OUT NOCOPY HZ_PERSON_BO,
675 p_created_by_module IN VARCHAR2,
676 p_obj_source IN VARCHAR2 := null,
677 x_return_status OUT NOCOPY VARCHAR2,
678 x_msg_count OUT NOCOPY NUMBER,
679 x_msg_data OUT NOCOPY VARCHAR2,
680 x_person_id OUT NOCOPY NUMBER,
681 x_person_os OUT NOCOPY VARCHAR2,
682 x_person_osr OUT NOCOPY VARCHAR2
683 ) IS
684 l_debug_prefix VARCHAR2(30);
685 l_person_rec HZ_PARTY_V2PUB.PERSON_REC_TYPE;
686 l_profile_id NUMBER;
687 l_party_number VARCHAR2(30);
688 l_dummy_id NUMBER;
689 l_valid_obj BOOLEAN;
690 l_bus_object HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
691 l_errorcode NUMBER;
692 l_raise_event BOOLEAN := FALSE;
693 l_cbm VARCHAR2(30);
694 l_event_id NUMBER;
695 l_telex_objs HZ_TELEX_CP_BO_TBL;
696 l_edi_objs HZ_EDI_CP_BO_TBL;
697 l_eft_objs HZ_EFT_CP_BO_TBL;
698 l_party_search_rec HZ_PARTY_SEARCH.PARTY_SEARCH_REC_TYPE;
699 l_party_site_list HZ_PARTY_SEARCH.PARTY_SITE_LIST;
700 l_contact_list HZ_PARTY_SEARCH.CONTACT_LIST;
701 l_contact_point_list HZ_PARTY_SEARCH.CONTACT_POINT_LIST;
702 l_match_rule_id number;
703 l_search_ctx_id NUMBER;
704 l_num_matches NUMBER;
705 l_party_id NUMBER;
706 l_match_score NUMBER;
707 l_tmp_score NUMBER;
708 l_match_threshold NUMBER;
709 l_automerge_threshold NUMBER;
710 l_dup_batch_id NUMBER;
711 l_dup_set_id NUMBER;
712 l_request_id NUMBER;
713 l_dup_batch_rec HZ_DUP_PVT.DUP_BATCH_REC_TYPE;
714 l_dup_set_rec HZ_DUP_PVT.DUP_SET_REC_TYPE;
715 l_dup_party_tbl HZ_DUP_PVT.DUP_PARTY_TBL_TYPE;
716 l_party_name varchar2(360);
717 l_overlap_merge_req_id NUMBER;
718 l_object_version_number NUMBER;
719 l_batch_id NUMBER;
720 l_cpt_count NUMBER;
721
722 cursor get_obj_version_csr(cp_dup_set_id number) is
723 SELECT object_version_number
724 FROM hz_dup_sets
725 WHERE dup_set_id = cp_dup_set_id;
726
727 BEGIN
728 -- Standard start of API savepoint
729 SAVEPOINT do_create_person_bo_pub;
730
731 -- initialize API return status to success.
732 x_return_status := FND_API.G_RET_STS_SUCCESS;
733
734 -- Initialize message list if p_init_msg_list is set to TRUE.
735 IF FND_API.to_Boolean(p_init_msg_list) THEN
736 FND_MSG_PUB.initialize;
737 END IF;
738
739 -- initialize Global variable
740 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
741 IF(p_created_by_module IS NULL) THEN
742 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
743 ELSE
744 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
745 END IF;
746
747 -- Debug info.
748 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
749 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(+)',
750 p_prefix=>l_debug_prefix,
751 p_msg_level=>fnd_log.level_procedure);
752 END IF;
753
754 -- Base on p_validate_bo_flag, check the completeness of business objects
755 IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
756 HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
757 p_bus_object_code => 'PERSON',
758 x_bus_object => l_bus_object
759 );
760
761 l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_person_bo_comp(
762 p_person_obj => p_person_obj,
763 p_bus_object => l_bus_object
764 );
765 IF NOT(l_valid_obj) THEN
766 RAISE fnd_api.g_exc_error;
767 END IF;
768
769 -- find out if raise event at the end
770 l_raise_event := HZ_PARTY_BO_PVT.is_raising_create_event(
771 p_obj_complete_flag => l_valid_obj);
772
773 IF(l_raise_event) THEN
774 -- get event_id and set global variable to event_id for
775 -- BOT populate function
776 SELECT HZ_BUS_OBJ_TRACKING_S.nextval
777 INTO l_event_id
778 FROM DUAL;
779 END IF;
780 ELSE
781 l_raise_event := FALSE;
782 END IF;
783
784 x_person_id := p_person_obj.person_id;
785 x_person_os := p_person_obj.orig_system;
786 x_person_osr:= p_person_obj.orig_system_reference;
787
788 -- check input person party id and os+osr
789 hz_registry_validate_bo_pvt.validate_ssm_id(
790 px_id => x_person_id,
791 px_os => x_person_os,
792 px_osr => x_person_osr,
793 p_obj_type => 'PERSON',
794 p_create_or_update => 'C',
795 x_return_status => x_return_status,
796 x_msg_count => x_msg_count,
797 x_msg_data => x_msg_data);
798
799 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
800 RAISE FND_API.G_EXC_ERROR;
801 END IF;
802
803 ---------------------------------
804 -- Assign person and party record
805 ---------------------------------
806 assign_person_rec(
807 p_person_obj => p_person_obj,
808 p_person_id => x_person_id,
809 p_person_os => x_person_os,
810 p_person_osr => x_person_osr,
811 px_person_rec => l_person_rec
812 );
813
814 HZ_PARTY_V2PUB.create_person(
815 p_person_rec => l_person_rec,
816 x_party_id => x_person_id,
817 x_party_number => l_party_number,
818 x_profile_id => l_profile_id,
819 x_return_status => x_return_status,
820 x_msg_count => x_msg_count,
821 x_msg_data => x_msg_data
822 );
823
824 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
825 RAISE FND_API.G_EXC_ERROR;
826 END IF;
827
828 -- assign person party_id
829 p_person_obj.person_id := x_person_id;
830 p_person_obj.party_number := l_party_number;
831 --------------------------
832 -- Create Person Ext Attrs
833 --------------------------
834 IF((p_person_obj.ext_attributes_objs IS NOT NULL) AND
835 (p_person_obj.ext_attributes_objs.COUNT > 0)) THEN
836 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
837 p_ext_attr_objs => p_person_obj.ext_attributes_objs,
838 p_parent_obj_id => l_profile_id,
839 p_parent_obj_type => 'PERSON',
840 p_create_or_update => 'C',
841 x_return_status => x_return_status,
842 x_errorcode => l_errorcode,
843 x_msg_count => x_msg_count,
844 x_msg_data => x_msg_data
845 );
846
847 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
848 RAISE FND_API.G_EXC_ERROR;
849 END IF;
850 END IF;
851
852 ----------------------------
853 -- Call party info v2pub api
854 ----------------------------
855 IF(((p_person_obj.language_objs IS NOT NULL) AND (p_person_obj.language_objs.COUNT > 0)) OR
856 ((p_person_obj.education_objs IS NOT NULL) AND (p_person_obj.education_objs.COUNT > 0)) OR
857 ((p_person_obj.citizenship_objs IS NOT NULL) AND (p_person_obj.citizenship_objs.COUNT > 0)) OR
858 ((p_person_obj.employ_hist_objs IS NOT NULL) AND (p_person_obj.employ_hist_objs.COUNT > 0)) OR
859 ((p_person_obj.interest_objs IS NOT NULL) AND (p_person_obj.interest_objs.COUNT > 0))) THEN
860 create_person_info(
861 p_language_obj => p_person_obj.language_objs,
862 p_education_obj => p_person_obj.education_objs,
863 p_citizenship_obj => p_person_obj.citizenship_objs,
864 p_employ_hist_obj => p_person_obj.employ_hist_objs,
865 p_interest_obj => p_person_obj.interest_objs,
866 p_person_id => x_person_id,
867 x_return_status => x_return_status,
868 x_msg_count => x_msg_count,
869 x_msg_data => x_msg_data
870 );
871
872 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
873 RAISE FND_API.G_EXC_ERROR;
874 END IF;
875 END IF;
876
877 ----------------------------
878 -- Party Preferences
879 ----------------------------
880 IF((p_person_obj.preference_objs IS NOT NULL) AND
881 (p_person_obj.preference_objs.COUNT > 0)) THEN
882 HZ_PARTY_BO_PVT.save_party_preferences(
883 p_party_pref_objs => p_person_obj.preference_objs,
884 p_party_id => x_person_id,
885 x_return_status => x_return_status,
886 x_msg_count => x_msg_count,
887 x_msg_data => x_msg_data
888 );
889
890 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
891 RAISE FND_API.G_EXC_ERROR;
892 END IF;
893 END IF;
894
895 ----------------------------
896 -- Contact Preferences
897 ----------------------------
898 IF((p_person_obj.contact_pref_objs IS NOT NULL) AND
899 (p_person_obj.contact_pref_objs.COUNT > 0)) THEN
900 HZ_CONTACT_PREFERENCE_BO_PVT.create_contact_preferences(
901 p_cp_pref_objs => p_person_obj.contact_pref_objs,
902 p_contact_level_table_id => x_person_id,
903 p_contact_level_table => 'HZ_PARTIES',
904 x_return_status => x_return_status,
905 x_msg_count => x_msg_count,
906 x_msg_data => x_msg_data
907 );
908
909 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
910 RAISE FND_API.G_EXC_ERROR;
911 END IF;
912 END IF;
913
914 ----------------------------
915 -- Relationship api
916 ----------------------------
917 IF((p_person_obj.relationship_objs IS NOT NULL) AND
918 (p_person_obj.relationship_objs.COUNT > 0)) THEN
919 HZ_PARTY_BO_PVT.create_relationships(
920 p_rel_objs => p_person_obj.relationship_objs,
921 p_subject_id => x_person_id,
922 p_subject_type => 'PERSON',
923 x_return_status => x_return_status,
924 x_msg_count => x_msg_count,
925 x_msg_data => x_msg_data
926 );
927
928 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
929 RAISE FND_API.G_EXC_ERROR;
930 END IF;
931 END IF;
932
933 ----------------------------
934 -- Classification api
935 ----------------------------
936 IF((p_person_obj.class_objs IS NOT NULL) AND
937 (p_person_obj.class_objs.COUNT > 0)) THEN
938 HZ_PARTY_BO_PVT.create_classifications(
939 p_code_assign_objs => p_person_obj.class_objs,
940 p_owner_table_name => 'HZ_PARTIES',
941 p_owner_table_id => x_person_id,
942 x_return_status => x_return_status,
943 x_msg_count => x_msg_count,
944 x_msg_data => x_msg_data
945 );
946
947 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
948 RAISE FND_API.G_EXC_ERROR;
949 END IF;
950 END IF;
951
952 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
953
954 ----------------------------
955 -- Create logical party site
956 ----------------------------
957 IF((p_person_obj.party_site_objs IS NOT NULL) AND
958 (p_person_obj.party_site_objs.COUNT > 0)) THEN
959 HZ_PARTY_SITE_BO_PVT.save_party_sites(
960 p_ps_objs => p_person_obj.party_site_objs,
961 p_create_update_flag => 'C',
962 p_obj_source => p_obj_source,
963 x_return_status => x_return_status,
964 x_msg_count => x_msg_count,
965 x_msg_data => x_msg_data,
966 p_parent_id => x_person_id,
967 p_parent_os => x_person_os,
968 p_parent_osr => x_person_osr,
969 p_parent_obj_type => 'PERSON'
970 );
971
972 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
973 RAISE FND_API.G_EXC_ERROR;
974 END IF;
975 END IF;
976
977 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
978
979 ------------------------
980 -- Create contact points
981 ------------------------
982 IF(((p_person_obj.phone_objs IS NOT NULL) AND (p_person_obj.phone_objs.COUNT > 0)) OR
983 ((p_person_obj.email_objs IS NOT NULL) AND (p_person_obj.email_objs.COUNT > 0)) OR
984 ((p_person_obj.web_objs IS NOT NULL) AND (p_person_obj.web_objs.COUNT > 0)) OR
985 ((p_person_obj.sms_objs IS NOT NULL) AND (p_person_obj.sms_objs.COUNT > 0))) THEN
986 HZ_CONTACT_POINT_BO_PVT.save_contact_points(
987 p_phone_objs => p_person_obj.phone_objs,
988 p_telex_objs => l_telex_objs,
989 p_email_objs => p_person_obj.email_objs,
990 p_web_objs => p_person_obj.web_objs,
991 p_edi_objs => l_edi_objs,
992 p_eft_objs => l_eft_objs,
993 p_sms_objs => p_person_obj.sms_objs,
994 p_owner_table_id => x_person_id,
995 p_owner_table_os => x_person_os,
996 p_owner_table_osr => x_person_osr,
997 p_parent_obj_type => 'PERSON',
998 p_create_update_flag => 'C',
999 p_obj_source => p_obj_source,
1000 x_return_status => x_return_status,
1001 x_msg_count => x_msg_count,
1002 x_msg_data => x_msg_data
1003 );
1004
1005 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1006 RAISE FND_API.G_EXC_ERROR;
1007 END IF;
1008 END IF;
1009
1010 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1011
1012 ----------------------------
1013 -- Certifications
1014 ----------------------------
1015 IF((p_person_obj.certification_objs IS NOT NULL) AND
1016 (p_person_obj.certification_objs.COUNT > 0)) THEN
1017 HZ_PARTY_BO_PVT.create_certifications(
1018 p_cert_objs => p_person_obj.certification_objs,
1019 p_party_id => x_person_id,
1020 x_return_status => x_return_status,
1021 x_msg_count => x_msg_count,
1022 x_msg_data => x_msg_data
1023 );
1024
1025 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1026 RAISE FND_API.G_EXC_ERROR;
1027 END IF;
1028 END IF;
1029
1030 ----------------------------
1031 -- Financial Profiles
1032 ----------------------------
1033 IF((p_person_obj.financial_prof_objs IS NOT NULL) AND
1034 (p_person_obj.financial_prof_objs.COUNT > 0)) THEN
1035 HZ_PARTY_BO_PVT.create_financial_profiles(
1036 p_fin_prof_objs => p_person_obj.financial_prof_objs,
1037 p_party_id => x_person_id,
1038 x_return_status => x_return_status,
1039 x_msg_count => x_msg_count,
1040 x_msg_data => x_msg_data
1041 );
1042
1043 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1044 RAISE FND_API.G_EXC_ERROR;
1045 END IF;
1046 END IF;
1047
1048 ----------------------------------
1049 -- Party Usages -------
1050 ----------------------------------
1051 IF ((p_person_obj.party_usage_objs IS NOT NULL) AND
1052 (p_person_obj.party_usage_objs.COUNT > 0 )) THEN
1053 HZ_PARTY_BO_PVT.create_party_usage_assgmnt(
1054 p_party_usg_objs => p_person_obj.party_usage_objs,
1055 p_party_id => x_person_id,
1056 x_return_status => x_return_status,
1057 x_msg_count => x_msg_count,
1058 x_msg_data => x_msg_data
1059 );
1060 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1061 RAISE FND_API.G_EXC_ERROR;
1062 END IF;
1063 END IF;
1064
1065
1066 -- raise event
1067 IF(l_raise_event) THEN
1068 HZ_PARTY_BO_PVT.call_bes(
1069 p_party_id => x_person_id,
1070 p_bo_code => 'PERSON',
1071 p_create_or_update => 'C',
1072 p_obj_source => p_obj_source,
1073 p_event_id => l_event_id
1074 );
1075 END IF;
1076
1077 -- Enh: check if DQM is enabled
1078 if nvl(fnd_profile.value('HZ_BO_ENABLE_DQ'),'N') = 'Y'
1079 then
1080 -- call DQM search API
1081
1082 l_match_rule_id := nvl(fnd_profile.value('HZ_BO_PERSON_MATCH_RULE'), 240); -- 240: new person match rule
1083
1084 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1085 hz_utility_v2pub.debug(p_message=>'Enable DQ on Integration Services: START ',p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1086 hz_utility_v2pub.debug(p_message=>'Match Rule ID '||l_match_rule_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1087 hz_utility_v2pub.debug(p_message=>'Newly Created Party Id: '||x_person_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1088 END IF;
1089
1090 l_party_search_rec.JGZZ_FISCAL_CODE := l_person_rec.JGZZ_FISCAL_CODE;
1091 l_party_search_rec.PARTY_ALL_NAMES := hz_format_pub.format_name(x_person_id)|| ' ' ||
1092 l_person_rec.KNOWN_AS|| ' ' ||
1093 l_person_rec.KNOWN_AS2|| ' ' ||
1094 l_person_rec.KNOWN_AS3|| ' ' ||
1095 l_person_rec.KNOWN_AS4|| ' ' ||
1096 l_person_rec.KNOWN_AS5;
1097 l_party_search_rec.KNOWN_AS := l_person_rec.KNOWN_AS;
1098 l_party_search_rec.KNOWN_AS2 := l_person_rec.KNOWN_AS2;
1099 l_party_search_rec.KNOWN_AS3 := l_person_rec.KNOWN_AS3;
1100 l_party_search_rec.KNOWN_AS4 := l_person_rec.KNOWN_AS4;
1101 l_party_search_rec.KNOWN_AS5 := l_person_rec.KNOWN_AS5;
1102 l_party_search_rec.TAX_REFERENCE := l_person_rec.TAX_REFERENCE;
1103 l_party_search_rec.CATEGORY_CODE := p_person_obj.CATEGORY_CODE;
1104 l_party_search_rec.PARTY_NAME := hz_format_pub.format_name(x_person_id);
1105 l_party_search_rec.PARTY_NUMBER := p_person_obj.PARTY_NUMBER;
1106 l_party_search_rec.PARTY_TYPE := 'PERSON';
1107 l_party_search_rec.STATUS := p_person_obj.STATUS;
1108 l_party_search_rec.DATE_OF_BIRTH := l_person_rec.DATE_OF_BIRTH;
1109 l_party_search_rec.DATE_OF_DEATH := l_person_rec.DATE_OF_DEATH;
1110 l_party_search_rec.DECLARED_ETHNICITY := l_person_rec.DECLARED_ETHNICITY;
1111 l_party_search_rec.GENDER := l_person_rec.GENDER;
1112 l_party_search_rec.HEAD_OF_HOUSEHOLD_FLAG := l_person_rec.HEAD_OF_HOUSEHOLD_FLAG;
1113 l_party_search_rec.HOUSEHOLD_INCOME := l_person_rec.HOUSEHOLD_INCOME;
1114 l_party_search_rec.HOUSEHOLD_SIZE := l_person_rec.HOUSEHOLD_SIZE;
1115 l_party_search_rec.LAST_KNOWN_GPS := l_person_rec.LAST_KNOWN_GPS;
1116 l_party_search_rec.MARITAL_STATUS := l_person_rec.MARITAL_STATUS;
1117 l_party_search_rec.MARITAL_STATUS_EFFECTIVE_DATE := l_person_rec.MARITAL_STATUS_EFFECTIVE_DATE;
1118 l_party_search_rec.MIDDLE_NAME_PHONETIC := l_person_rec.MIDDLE_NAME_PHONETIC;
1119 l_party_search_rec.PERSONAL_INCOME := l_person_rec.PERSONAL_INCOME;
1120 l_party_search_rec.PERSON_ACADEMIC_TITLE := l_person_rec.PERSON_ACADEMIC_TITLE;
1121 l_party_search_rec.PERSON_FIRST_NAME := l_person_rec.PERSON_FIRST_NAME;
1122 l_party_search_rec.PERSON_FIRST_NAME_PHONETIC := l_person_rec.PERSON_FIRST_NAME_PHONETIC;
1123 l_party_search_rec.PERSON_IDENTIFIER := l_person_rec.PERSON_IDENTIFIER;
1124 l_party_search_rec.PERSON_IDEN_TYPE := l_person_rec.PERSON_IDEN_TYPE;
1125 l_party_search_rec.PERSON_INITIALS := l_person_rec.PERSON_INITIALS;
1126 l_party_search_rec.PERSON_LAST_NAME := l_person_rec.PERSON_LAST_NAME;
1127 l_party_search_rec.PERSON_LAST_NAME_PHONETIC := l_person_rec.PERSON_LAST_NAME_PHONETIC;
1128 l_party_search_rec.PERSON_MIDDLE_NAME := l_person_rec.PERSON_MIDDLE_NAME;
1129 l_party_search_rec.PERSON_NAME := l_party_search_rec.PARTY_NAME;
1130 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1131 hz_utility_v2pub.debug(p_message=>'l_party_search_rec.PARTY_NAME(formatted): '||l_party_search_rec.PARTY_NAME,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1132
1133 END IF;
1134
1135 l_party_search_rec.PERSON_NAME_PHONETIC := l_person_rec.PERSON_NAME_PHONETIC;
1136 l_party_search_rec.PERSON_NAME_SUFFIX := l_person_rec.PERSON_NAME_SUFFIX;
1137 l_party_search_rec.PERSON_PREVIOUS_LAST_NAME := l_person_rec.PERSON_PREVIOUS_LAST_NAME;
1138 l_party_search_rec.PERSON_PRE_NAME_ADJUNCT := l_person_rec.PERSON_PRE_NAME_ADJUNCT;
1139 l_party_search_rec.PERSON_TITLE := l_person_rec.PERSON_TITLE;
1140 l_party_search_rec.PLACE_OF_BIRTH := l_person_rec.PLACE_OF_BIRTH;
1141 l_party_search_rec.PARTY_SOURCE_SYSTEM_REF := p_person_obj.orig_system|| ' ' ||p_person_obj.orig_system_reference||' ';
1142
1143 IF((p_person_obj.party_site_objs IS NOT NULL) AND (p_person_obj.party_site_objs.COUNT > 0)) THEN
1144
1145 for i in 1..p_person_obj.party_site_objs.COUNT loop
1146 l_party_site_list(i).ADDR_SOURCE_SYSTEM_REF := p_person_obj.party_site_objs(i).orig_system|| ' ' ||p_person_obj.party_site_objs(i).orig_system_reference||' ';
1147 l_party_site_list(i).address := p_person_obj.party_site_objs(i).location_obj.ADDRESS1|| ' ' ||
1148 p_person_obj.party_site_objs(i).location_obj.ADDRESS2|| ' ' ||
1149 p_person_obj.party_site_objs(i).location_obj.ADDRESS3|| ' ' ||
1150 p_person_obj.party_site_objs(i).location_obj.ADDRESS4;
1151
1152 l_party_site_list(i).ADDRESS1 := p_person_obj.party_site_objs(i).location_obj.ADDRESS1;
1153 l_party_site_list(i).ADDRESS2 := p_person_obj.party_site_objs(i).location_obj.ADDRESS2;
1154 l_party_site_list(i).ADDRESS3 := p_person_obj.party_site_objs(i).location_obj.ADDRESS3;
1155 l_party_site_list(i).ADDRESS4 := p_person_obj.party_site_objs(i).location_obj.ADDRESS4;
1156 l_party_site_list(i).ADDRESS_EFFECTIVE_DATE := p_person_obj.party_site_objs(i).location_obj.ADDRESS_EFFECTIVE_DATE;
1157 l_party_site_list(i).ADDRESS_EXPIRATION_DATE := p_person_obj.party_site_objs(i).location_obj.ADDRESS_EXPIRATION_DATE;
1158 l_party_site_list(i).ADDRESS_LINES_PHONETIC := p_person_obj.party_site_objs(i).location_obj.ADDRESS_LINES_PHONETIC;
1159 l_party_site_list(i).CITY := p_person_obj.party_site_objs(i).location_obj.CITY;
1160 l_party_site_list(i).CLLI_CODE := p_person_obj.party_site_objs(i).location_obj.CLLI_CODE;
1161 l_party_site_list(i).COUNTRY := p_person_obj.party_site_objs(i).location_obj.COUNTRY;
1162 l_party_site_list(i).COUNTY := p_person_obj.party_site_objs(i).location_obj.COUNTY;
1163 l_party_site_list(i).LANGUAGE := p_person_obj.party_site_objs(i).LANGUAGE;
1164 l_party_site_list(i).POSITION := p_person_obj.party_site_objs(i).location_obj.POSITION;
1165 l_party_site_list(i).POSTAL_CODE := p_person_obj.party_site_objs(i).location_obj.POSTAL_CODE;
1166 l_party_site_list(i).POSTAL_PLUS4_CODE := p_person_obj.party_site_objs(i).location_obj.POSTAL_PLUS4_CODE;
1167 l_party_site_list(i).PROVINCE := p_person_obj.party_site_objs(i).location_obj.PROVINCE;
1168
1169 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1170 hz_utility_v2pub.debug(p_message=>'l_party_site_list('||i||').address: '||l_party_site_list(i).ADDRESS,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1171 hz_utility_v2pub.debug(p_message=>'l_party_site_list('||i||').postal_code: '||l_party_site_list(i).POSTAL_CODE,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1172 END IF;
1173 l_party_site_list(i).SALES_TAX_GEOCODE := p_person_obj.party_site_objs(i).location_obj.SALES_TAX_GEOCODE;
1174 l_party_site_list(i).SALES_TAX_INSIDE_CITY_LIMITS := p_person_obj.party_site_objs(i).location_obj.SALES_TAX_INSIDE_CITY_LIMITS;
1175 l_party_site_list(i).STATE := p_person_obj.party_site_objs(i).location_obj.STATE;
1176 l_party_site_list(i).IDENTIFYING_ADDRESS_FLAG := p_person_obj.party_site_objs(i).IDENTIFYING_ADDRESS_FLAG;
1177 l_party_site_list(i).MAILSTOP := p_person_obj.party_site_objs(i).MAILSTOP;
1178 l_party_site_list(i).PARTY_SITE_NAME := p_person_obj.party_site_objs(i).PARTY_SITE_NAME;
1179 l_party_site_list(i).PARTY_SITE_NUMBER := p_person_obj.party_site_objs(i).PARTY_SITE_NUMBER;
1180 l_party_site_list(i).STATUS := p_person_obj.party_site_objs(i).STATUS;
1181 end loop;
1182 end if;
1183
1184
1185
1186 IF((p_person_obj.phone_objs IS NOT NULL) AND (p_person_obj.phone_objs.COUNT > 0))
1187 then
1188 for i in 1..p_person_obj.phone_objs.COUNT loop
1189 l_contact_point_list(i).CPT_SOURCE_SYSTEM_REF := p_person_obj.phone_objs(i).orig_system|| ' ' ||p_person_obj.phone_objs(i).orig_system_reference||' ';
1190 l_contact_point_list(i).CONTACT_POINT_TYPE := 'PHONE';
1191 l_contact_point_list(i).PRIMARY_FLAG := p_person_obj.phone_objs(i).PRIMARY_FLAG;
1192 l_contact_point_list(i).STATUS := p_person_obj.phone_objs(i).STATUS;
1193 l_contact_point_list(i).CONTACT_POINT_PURPOSE := p_person_obj.phone_objs(i).CONTACT_POINT_PURPOSE;
1194 l_contact_point_list(i).LAST_CONTACT_DT_TIME := p_person_obj.phone_objs(i).LAST_CONTACT_DT_TIME;
1195 l_contact_point_list(i).PHONE_AREA_CODE := p_person_obj.phone_objs(i).PHONE_AREA_CODE;
1196 l_contact_point_list(i).PHONE_CALLING_CALENDAR := p_person_obj.phone_objs(i).PHONE_CALLING_CALENDAR;
1197 l_contact_point_list(i).PHONE_COUNTRY_CODE := p_person_obj.phone_objs(i).PHONE_COUNTRY_CODE;
1198 l_contact_point_list(i).PHONE_EXTENSION := p_person_obj.phone_objs(i).PHONE_EXTENSION;
1199 l_contact_point_list(i).PHONE_LINE_TYPE := p_person_obj.phone_objs(i).PHONE_LINE_TYPE;
1200 l_contact_point_list(i).PHONE_NUMBER := p_person_obj.phone_objs(i).PHONE_NUMBER;
1201 l_contact_point_list(i).PRIMARY_FLAG := p_person_obj.phone_objs(i).PRIMARY_FLAG;
1202 l_contact_point_list(i).RAW_PHONE_NUMBER := p_person_obj.phone_objs(i).RAW_PHONE_NUMBER;
1203 l_contact_point_list(i).TELEPHONE_TYPE := p_person_obj.phone_objs(i).PHONE_LINE_TYPE;
1204 l_contact_point_list(i).TIME_ZONE := p_person_obj.phone_objs(i).TIMEZONE_ID;
1205 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1206 hz_utility_v2pub.debug(p_message=>'l_contact_point_list('||i||')'||'.phone_number'||l_contact_point_list(i).PHONE_NUMBER,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1207 end if;
1208 -- Per DQM, flex_formatted_phone_number is the concate of country code, area code and phone number
1209 if p_person_obj.phone_objs(i).PHONE_NUMBER is not null
1210 then
1211 l_contact_point_list(i).FLEX_FORMAT_PHONE_NUMBER := p_person_obj.phone_objs(i).PHONE_COUNTRY_CODE ||p_person_obj.phone_objs(i).PHONE_AREA_CODE||p_person_obj.phone_objs(i).PHONE_NUMBER;
1212
1213 elsif l_contact_point_list(i).RAW_PHONE_NUMBER is not null
1214 then
1215 hz_contact_point_v2pub.phone_format (
1216 p_raw_phone_number => p_person_obj.phone_objs(i).RAW_PHONE_NUMBER,
1217 p_territory_code => p_person_obj.phone_objs(i).PHONE_COUNTRY_CODE,
1218 x_formatted_phone_number => l_contact_point_list(i).FLEX_FORMAT_PHONE_NUMBER,
1219 x_phone_country_code => l_contact_point_list(i).PHONE_COUNTRY_CODE,
1220 x_phone_area_code => l_contact_point_list(i).PHONE_AREA_CODE,
1221 x_phone_number => l_contact_point_list(i).PHONE_NUMBER,
1222 x_return_status => x_return_status,
1223 x_msg_count => x_msg_count,
1224 x_msg_data => x_msg_data);
1225 l_contact_point_list(i).FLEX_FORMAT_PHONE_NUMBER := l_contact_point_list(i).PHONE_COUNTRY_CODE ||l_contact_point_list(i).PHONE_AREA_CODE||l_contact_point_list(i).PHONE_NUMBER;
1226
1227 end if;
1228 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1229 hz_utility_v2pub.debug(p_message=>'l_contact_point_list('||to_char(i)||').flex_format_phone_number: '||l_contact_point_list(i).FLEX_FORMAT_PHONE_NUMBER,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1230 hz_utility_v2pub.debug(p_message=>'l_contact_point_list('||i||').phone_number(parsed): '||l_contact_point_list(i).PHONE_NUMBER,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1231 END IF;
1232 end loop;
1233 end if;
1234
1235 l_cpt_count := l_contact_point_list.COUNT;
1236
1237 IF((p_person_obj.email_objs IS NOT NULL) AND (p_person_obj.email_objs.COUNT > 0))
1238 then
1239 for i in 1..p_person_obj.email_objs.COUNT loop
1240 l_contact_point_list(l_cpt_count+i).CPT_SOURCE_SYSTEM_REF := p_person_obj.email_objs(i).orig_system|| ' ' ||p_person_obj.email_objs(i).orig_system_reference||' ';
1241 l_contact_point_list(l_cpt_count+i).CONTACT_POINT_TYPE := 'EMAIL';
1242 l_contact_point_list(l_cpt_count+i).PRIMARY_FLAG := p_person_obj.email_objs(i).PRIMARY_FLAG;
1243 l_contact_point_list(l_cpt_count+i).STATUS := p_person_obj.email_objs(i).STATUS;
1244 l_contact_point_list(l_cpt_count+i).CONTACT_POINT_PURPOSE := p_person_obj.email_objs(i).CONTACT_POINT_PURPOSE;
1245 l_contact_point_list(l_cpt_count+i).EMAIL_ADDRESS := p_person_obj.email_objs(i).EMAIL_ADDRESS;
1246 l_contact_point_list(l_cpt_count+i).EMAIL_FORMAT := p_person_obj.email_objs(i).EMAIL_FORMAT;
1247 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1248 hz_utility_v2pub.debug(p_message=>'l_contact_point_list('||to_char(l_cpt_count+i)||')'||'.email_address'||l_contact_point_list(l_cpt_count+i).EMAIL_ADDRESS,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1249 end if;
1250 end loop;
1251 end if;
1252
1253 l_cpt_count := l_contact_point_list.COUNT;
1254
1255 IF((p_person_obj.web_objs IS NOT NULL) AND (p_person_obj.web_objs.COUNT > 0))
1256 then
1257 for i in 1..p_person_obj.web_objs.COUNT loop
1258 l_contact_point_list(l_cpt_count+i).CPT_SOURCE_SYSTEM_REF := p_person_obj.web_objs(i).orig_system|| ' ' ||p_person_obj.web_objs(i).orig_system_reference||' ';
1259 l_contact_point_list(l_cpt_count+i).CONTACT_POINT_TYPE := 'WEB';
1260 l_contact_point_list(l_cpt_count+i).PRIMARY_FLAG := p_person_obj.web_objs(i).PRIMARY_FLAG;
1261 l_contact_point_list(l_cpt_count+i).STATUS := p_person_obj.web_objs(i).STATUS;
1262 l_contact_point_list(l_cpt_count+i).CONTACT_POINT_PURPOSE := p_person_obj.web_objs(i).CONTACT_POINT_PURPOSE;
1263 l_contact_point_list(l_cpt_count+i).URL := p_person_obj.web_objs(i).URL ;
1264 l_contact_point_list(l_cpt_count+i).WEB_TYPE := p_person_obj.web_objs(i).WEB_TYPE;
1265
1266 end loop;
1267 end if;
1268
1269 l_cpt_count := l_contact_point_list.COUNT;
1270
1271 IF((p_person_obj.sms_objs IS NOT NULL) AND (p_person_obj.sms_objs.COUNT > 0))
1272 then
1273 for i in 1..p_person_obj.sms_objs.COUNT loop
1274 l_contact_point_list(l_cpt_count+i).CPT_SOURCE_SYSTEM_REF := p_person_obj.sms_objs(i).orig_system|| ' ' ||p_person_obj.sms_objs(i).orig_system_reference||' ';
1275 l_contact_point_list(l_cpt_count+i).CONTACT_POINT_TYPE := 'SMS';
1276 l_contact_point_list(l_cpt_count+i).PRIMARY_FLAG := p_person_obj.sms_objs(i).PRIMARY_FLAG;
1277 l_contact_point_list(l_cpt_count+i).STATUS := p_person_obj.sms_objs(i).STATUS;
1278 l_contact_point_list(l_cpt_count+i).CONTACT_POINT_PURPOSE := p_person_obj.sms_objs(i).CONTACT_POINT_PURPOSE;
1279 end loop;
1280 end if;
1281
1282 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1283 hz_utility_v2pub.debug(p_message=>'Calling DQM API HZ_PARTY_SEARCH.find_persons ',p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1284 hz_utility_v2pub.debug(p_message=>'HZ_PARTY_SEARCH.find_persons Start time: '||TO_CHAR(SYSDATE, 'MM-DD-YY HH24:MI:SS'),p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1285 END IF;
1286
1287 HZ_PARTY_SEARCH.find_persons (
1288 p_rule_id => l_match_rule_id,
1289 p_party_search_rec => l_party_search_rec,
1290 p_party_site_list => l_party_site_list,
1291 p_contact_list => l_contact_list,
1292 p_contact_point_list=> l_contact_point_list,
1293 p_restrict_sql => null,
1294 p_match_type => null,
1295 x_search_ctx_id => l_search_ctx_id,
1296 x_num_matches => l_num_matches,
1297 x_return_status => x_return_status,
1298 x_msg_count => x_msg_count,
1299 x_msg_data => x_msg_data
1300
1301 );
1302
1303 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1304 hz_utility_v2pub.debug(p_message=>'HZ_PARTY_SEARCH.find_persons end time: '||TO_CHAR(SYSDATE, 'MM-DD-YY HH24:MI:SS'),p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1305 -- hz_utility_v2pub.debug(p_message=>'# of Matches: '||l_num_matches,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1306 hz_utility_v2pub.debug(p_message=>'return status of find_persons: '||x_return_status,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1307 hz_utility_v2pub.debug(p_message=>'search_ctx_id: '||l_search_ctx_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1308 if l_num_matches = 0
1309 then
1310 hz_utility_v2pub.debug(p_message=>'# of Matches: '||l_num_matches,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1311 end if;
1312 END IF;
1313
1314 if l_num_matches > 0 then
1315
1316 hz_dup_pvt.get_most_matching_party(p_search_ctx_id => l_search_ctx_id,
1317 p_new_party_id => x_person_id,
1318 x_party_id => l_party_id,
1319 x_match_score => l_match_score,
1320 x_party_name => l_party_name);
1321 if l_party_id is null
1322 then
1323 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1324 hz_utility_v2pub.debug(p_message=>'# of Matches: 0 ',p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1325 end if;
1326 else
1327 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1328 hz_utility_v2pub.debug(p_message=>'# of Matches: '||l_num_matches,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1329 hz_utility_v2pub.debug(p_message=>'Most matching Party Id: '||l_party_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1330 hz_utility_v2pub.debug(p_message=>'Most matching Party Name: '||l_party_name,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1331 hz_utility_v2pub.debug(p_message=>'Match score: '||l_match_score,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1332 END IF;
1333
1334 hz_dup_pvt.get_match_rule_thresholds(p_match_rule_id => l_match_rule_id,
1335 x_match_threshold => l_match_threshold,
1336 x_automerge_threshold => l_automerge_threshold);
1337
1338 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1339 hz_utility_v2pub.debug(p_message=>'Match Threshold: '||l_match_threshold,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1340 hz_utility_v2pub.debug(p_message=>'Automerge Threshold: '||l_automerge_threshold,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1341
1342 END IF;
1343
1344 if l_match_score >= l_match_threshold
1345 then
1346 hz_dup_pvt.validate_master_party_id(px_party_id => l_party_id,
1347 x_overlap_merge_req_id => l_overlap_merge_req_id);
1348
1349 hz_utility_v2pub.debug(p_message=>'xx: Winner Party ID is changed. Overlapping Merge Req ID: '||l_overlap_merge_req_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1350 hz_utility_v2pub.debug(p_message=>'xx: Winner Party ID is changed. Party ID: '||l_party_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1351 if l_overlap_merge_req_id is not null
1352 then
1353 l_tmp_score := l_match_score;
1354 begin
1355 SELECT score, party_name into l_match_score, l_party_name
1356 FROM hz_matched_parties_gt mpg, hz_parties p
1357 WHERE mpg.party_id = p.party_id
1358 and mpg.party_id = l_party_id
1359 and mpg.search_context_id = l_search_ctx_id
1360 and rownum = 1;
1361 EXCEPTION
1362 WHEN NO_DATA_FOUND THEN
1363 l_match_score := 0;
1364 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1365 hz_utility_v2pub.debug(p_message=>'The changed party is not a duplicate with the newly created party' ,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1366 end if;
1367
1368 END;
1369
1370 IF l_match_score > 0 and fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1371 hz_utility_v2pub.debug(p_message=>'Winner Party ID is changed. Overlapping Merge Req ID: '||l_overlap_merge_req_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1372
1373 hz_utility_v2pub.debug(p_message=>'Winner Party Id: '||l_party_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1374 hz_utility_v2pub.debug(p_message=>'Winner Party Id match score: '||l_match_score,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1375 end if;
1376 END IF;
1377 if l_match_score >= l_match_threshold
1378 then -- match score might get reset due to overlapping req, need to check this again.
1379 l_dup_batch_rec.dup_batch_name := l_party_name||'-'|| to_char(sysdate);
1380 l_dup_batch_rec.match_rule_id := l_match_rule_id;
1381 l_dup_batch_rec.application_id := 222;
1382 l_dup_batch_rec.request_type := 'USER_ENTERED';
1383 l_dup_batch_id := NULL;
1384 l_dup_set_rec.winner_party_id := l_party_id;
1385 l_dup_set_rec.status := 'SYSBATCH';
1386 l_dup_set_rec.assigned_to_user_id := fnd_global.user_id;
1387 l_dup_set_rec.merge_type := 'PARTY_MERGE';
1388
1389 l_dup_party_tbl(1).party_id := l_party_id;
1390 l_dup_party_tbl(1).score := l_match_score;
1391 l_dup_party_tbl(1).merge_flag := 'Y';
1392
1393 l_dup_party_tbl(2).party_id := x_person_id; -- newly created person id
1394 l_dup_party_tbl(2).score := 0;
1395 l_dup_party_tbl(2).merge_flag := 'Y';
1396
1397 HZ_DUP_PVT.create_dup_batch(
1398 p_dup_batch_rec => l_dup_batch_rec
1399 ,p_dup_set_rec => l_dup_set_rec
1400 ,p_dup_party_tbl => l_dup_party_tbl
1401 ,x_dup_batch_id => l_dup_batch_id
1402 ,x_dup_set_id => l_dup_set_id
1403 ,x_return_status => x_return_status
1404 ,x_msg_count => x_msg_count
1405 ,x_msg_data => x_msg_data );
1406
1407
1408 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1409 RAISE FND_API.G_EXC_ERROR;
1410 END IF;
1411
1412 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1413 hz_utility_v2pub.debug(p_message=>'Created dup batch: dup_set_id: '||l_dup_set_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1414
1415 END IF;
1416
1417
1418 if l_dup_set_id is not null
1419 then
1420 if l_match_score < l_automerge_threshold -- create merge request
1421 then
1422 hz_dup_pvt.submit_dup (
1423 p_dup_set_id => l_dup_set_id
1424 ,x_request_id => l_request_id
1425 ,x_return_status => x_return_status
1426 ,x_msg_count => x_msg_count
1427 ,x_msg_data => x_msg_data);
1428
1429 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1430 hz_utility_v2pub.debug(p_message=>'Merge Request Created with merge request id: '||l_dup_set_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1431 hz_utility_v2pub.debug(p_message=>'Create Merge Request conc request id: '||l_request_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1432
1433 end if;
1434 end if; --if l_match_score < l_automerge_threshold
1435 end if; --if l_match_score >= l_match_threshold then
1436
1437 if l_match_score >= l_automerge_threshold
1438 then
1439 open get_obj_version_csr(l_dup_set_id);
1440 fetch get_obj_version_csr into l_object_version_number;
1441 close get_obj_version_csr;
1442
1443 hz_merge_dup_pvt.Create_Merge_Batch( -- need to create merge in real time.
1444 p_dup_set_id => l_dup_set_id,
1445 p_default_mapping => 'Y',
1446 p_object_version_number => l_object_version_number,
1447 x_merge_batch_id => l_batch_id,
1448 x_return_status => x_return_status,
1449 x_msg_count => x_msg_count,
1450 x_msg_data => x_msg_data);
1451
1452
1453 --submit Party Merge concurrent program
1454 hz_merge_dup_pvt.submit_batch(
1455 p_batch_id => l_dup_set_id,
1456 p_preview => 'N',
1457 x_request_id => l_request_id,
1458 x_return_status => x_return_status,
1459 x_msg_count => x_msg_count,
1460 x_msg_data => x_msg_data);
1461 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1462 hz_utility_v2pub.debug(p_message=>'Party Merge request status: '||x_return_status,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1463 hz_utility_v2pub.debug(p_message=>'Party Merge request submitted with conc request_id: '||l_request_id,p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1464 end if;
1465
1466 end if; -- if l_match_score >= l_automerge_threshold
1467 end if; --if l_dup_set_id is not null
1468 end if; -- if l_match_score >= l_match_threshold
1469 end if; -- if l_party_id = x_person_id
1470 end if; -- if l_num_matches > 0 then
1471 IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1472 hz_utility_v2pub.debug(p_message=>'Enable DQ on Integration Services: End ',p_prefix=>'DEBUG: ',p_msg_level=>fnd_log.level_statement, p_module=>'HZ_Module.enableDQ');
1473 end if;
1474 end if; -- if nvl(fnd_profile.value('HZ_BO_ENABLE_DQ'),'N') = 'Y'
1475
1476
1477 -- reset Global variable
1478 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1479 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1480
1481 -- Debug info.
1482 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1483 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1484 p_msg_data=>x_msg_data,
1485 p_msg_type=>'WARNING',
1486 p_msg_level=>fnd_log.level_exception);
1487 END IF;
1488 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1489 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1490 p_prefix=>l_debug_prefix,
1491 p_msg_level=>fnd_log.level_procedure);
1492 END IF;
1493
1494 EXCEPTION
1495 WHEN fnd_api.g_exc_error THEN
1496 ROLLBACK TO do_create_person_bo_pub;
1497
1498 -- reset Global variable
1499 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1500 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1501
1502 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1503 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1504 FND_MSG_PUB.ADD;
1505
1506 x_return_status := fnd_api.g_ret_sts_error;
1507
1508 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1509 p_count => x_msg_count,
1510 p_data => x_msg_data);
1511
1512 -- Debug info.
1513 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1514 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1515 p_msg_data=>x_msg_data,
1516 p_msg_type=>'ERROR',
1517 p_msg_level=>fnd_log.level_error);
1518 END IF;
1519 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1520 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1521 p_prefix=>l_debug_prefix,
1522 p_msg_level=>fnd_log.level_procedure);
1523 END IF;
1524
1525 WHEN fnd_api.g_exc_unexpected_error THEN
1526 ROLLBACK TO do_create_person_bo_pub;
1527
1528 -- reset Global variable
1529 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1530 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1531
1532 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1533 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1534 FND_MSG_PUB.ADD;
1535
1536 x_return_status := fnd_api.g_ret_sts_unexp_error;
1537
1538 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1539 p_count => x_msg_count,
1540 p_data => x_msg_data);
1541
1542 -- Debug info.
1543 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1544 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1545 p_msg_data=>x_msg_data,
1546 p_msg_type=>'UNEXPECTED ERROR',
1547 p_msg_level=>fnd_log.level_error);
1548 END IF;
1549 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1550 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1551 p_prefix=>l_debug_prefix,
1552 p_msg_level=>fnd_log.level_procedure);
1553 END IF;
1554
1555 WHEN OTHERS THEN
1556 ROLLBACK TO do_create_person_bo_pub;
1557
1558 -- reset Global variable
1559 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1560 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1561
1562 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1563 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1564 FND_MSG_PUB.ADD;
1565
1566 x_return_status := fnd_api.g_ret_sts_unexp_error;
1567
1568 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1569 fnd_message.set_token('ERROR' ,SQLERRM);
1570 fnd_msg_pub.add;
1571
1572 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1573 p_count => x_msg_count,
1574 p_data => x_msg_data);
1575
1576 -- Debug info.
1577 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1578 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1579 p_msg_data=>x_msg_data,
1580 p_msg_type=>'SQL ERROR',
1581 p_msg_level=>fnd_log.level_error);
1582 END IF;
1583 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1584 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1585 p_prefix=>l_debug_prefix,
1586 p_msg_level=>fnd_log.level_procedure);
1587 END IF;
1588 END do_create_person_bo;
1589
1590 PROCEDURE create_person_bo(
1591 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1592 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1593 p_person_obj IN HZ_PERSON_BO,
1594 p_created_by_module IN VARCHAR2,
1595 x_return_status OUT NOCOPY VARCHAR2,
1596 x_msg_count OUT NOCOPY NUMBER,
1597 x_msg_data OUT NOCOPY VARCHAR2,
1598 x_person_id OUT NOCOPY NUMBER,
1599 x_person_os OUT NOCOPY VARCHAR2,
1600 x_person_osr OUT NOCOPY VARCHAR2
1601 ) IS
1602 l_per_obj HZ_PERSON_BO;
1603 BEGIN
1604 l_per_obj := p_person_obj;
1605 do_create_person_bo(
1606 p_init_msg_list => p_init_msg_list,
1607 p_validate_bo_flag => p_validate_bo_flag,
1608 p_person_obj => l_per_obj,
1609 p_created_by_module => p_created_by_module,
1610 p_obj_source => null,
1611 x_return_status => x_return_status,
1612 x_msg_count => x_msg_count,
1613 x_msg_data => x_msg_data,
1614 x_person_id => x_person_id,
1615 x_person_os => x_person_os,
1616 x_person_osr => x_person_osr
1617 );
1618 END create_person_bo;
1619
1620 PROCEDURE create_person_bo(
1621 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1622 p_person_obj IN HZ_PERSON_BO,
1623 p_created_by_module IN VARCHAR2,
1624 p_obj_source IN VARCHAR2 := NULL,
1625 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
1626 x_return_status OUT NOCOPY VARCHAR2,
1627 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
1628 x_return_obj OUT NOCOPY HZ_PERSON_BO,
1629 x_person_id OUT NOCOPY NUMBER,
1630 x_person_os OUT NOCOPY VARCHAR2,
1631 x_person_osr OUT NOCOPY VARCHAR2
1632 ) IS
1633 l_msg_count NUMBER;
1634 l_msg_data VARCHAR2(2000);
1635 l_per_obj HZ_PERSON_BO;
1636 BEGIN
1637 l_per_obj := p_person_obj;
1638 do_create_person_bo(
1639 p_init_msg_list => FND_API.G_TRUE,
1640 p_validate_bo_flag => p_validate_bo_flag,
1641 p_person_obj => l_per_obj,
1642 p_created_by_module => p_created_by_module,
1643 p_obj_source => p_obj_source,
1644 x_return_status => x_return_status,
1645 x_msg_count => l_msg_count,
1646 x_msg_data => l_msg_data,
1647 x_person_id => x_person_id,
1648 x_person_os => x_person_os,
1649 x_person_osr => x_person_osr
1650 );
1651 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1652 x_return_status => x_return_status,
1653 x_msg_count => l_msg_count,
1654 x_msg_data => l_msg_data);
1655 IF FND_API.to_Boolean(p_return_obj_flag) THEN
1656 x_return_obj := l_per_obj;
1657 END IF;
1658 END create_person_bo;
1659
1660 -- PROCEDURE do_update_person_bo
1661 --
1662 -- DESCRIPTION
1663 -- Update a person business object.
1664 PROCEDURE do_update_person_bo(
1665 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1666 p_person_obj IN OUT NOCOPY HZ_PERSON_BO,
1667 p_created_by_module IN VARCHAR2,
1668 p_obj_source IN VARCHAR2 := NULL,
1669 x_return_status OUT NOCOPY VARCHAR2,
1670 x_msg_count OUT NOCOPY NUMBER,
1671 x_msg_data OUT NOCOPY VARCHAR2,
1672 x_person_id OUT NOCOPY NUMBER,
1673 x_person_os OUT NOCOPY VARCHAR2,
1674 x_person_osr OUT NOCOPY VARCHAR2
1675 )IS
1676 l_debug_prefix VARCHAR2(30);
1677 l_person_rec HZ_PARTY_V2PUB.PERSON_REC_TYPE;
1678 l_create_update_flag VARCHAR2(1);
1679 l_ovn NUMBER;
1680 l_dummy_id NUMBER;
1681 l_profile_id NUMBER;
1682 l_errorcode NUMBER;
1683 l_per_raise_event BOOLEAN := FALSE;
1684 l_pc_raise_event BOOLEAN := FALSE;
1685 l_cbm VARCHAR2(30);
1686 l_per_event_id NUMBER;
1687 l_pc_event_id NUMBER;
1688 l_telex_objs HZ_TELEX_CP_BO_TBL;
1689 l_edi_objs HZ_EDI_CP_BO_TBL;
1690 l_eft_objs HZ_EFT_CP_BO_TBL;
1691 l_party_number VARCHAR2(30);
1692
1693 CURSOR get_ovn(l_party_id NUMBER) IS
1694 SELECT p.object_version_number, p.party_number
1695 FROM HZ_PARTIES p
1696 WHERE p.party_id = l_party_id
1697 AND p.party_type = 'PERSON'
1698 AND p.status in ('A','I');
1699
1700 BEGIN
1701 -- Standard start of API savepoint
1702 SAVEPOINT do_update_person_bo_pub;
1703
1704 -- initialize API return status to success.
1705 x_return_status := FND_API.G_RET_STS_SUCCESS;
1706
1707 -- Initialize message list if p_init_msg_list is set to TRUE.
1708 IF FND_API.to_Boolean(p_init_msg_list) THEN
1709 FND_MSG_PUB.initialize;
1710 END IF;
1711
1712 -- initialize Global variable
1713 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
1714 IF(p_created_by_module IS NULL) THEN
1715 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
1716 ELSE
1717 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
1718 END IF;
1719
1720 -- Debug info.
1721 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1722 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(+)',
1723 p_prefix=>l_debug_prefix,
1724 p_msg_level=>fnd_log.level_procedure);
1725 END IF;
1726
1727 x_person_id := p_person_obj.person_id;
1728 x_person_os := p_person_obj.orig_system;
1729 x_person_osr:= p_person_obj.orig_system_reference;
1730
1731 -- check input party_id and os+osr
1732 hz_registry_validate_bo_pvt.validate_ssm_id(
1733 px_id => x_person_id,
1734 px_os => x_person_os,
1735 px_osr => x_person_osr,
1736 p_obj_type => 'PERSON',
1737 p_create_or_update => 'U',
1738 x_return_status => x_return_status,
1739 x_msg_count => x_msg_count,
1740 x_msg_data => x_msg_data);
1741
1742 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1743 RAISE FND_API.G_EXC_ERROR;
1744 END IF;
1745
1746 -- must check after calling validate_ssm_id because
1747 -- if user pass os+osr and no id, validate_ssm_id will
1748 -- populate x_person_id based on os+osr
1749 -- find out if raise event at the end
1750
1751 -- if this procedure is called from person cust bo, set l_raise_event to false
1752 -- otherwise, call is_raising_update_event
1753 IF(HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO IS NOT NULL) THEN
1754 l_per_raise_event := FALSE;
1755 l_pc_raise_event := FALSE;
1756 ELSE
1757 l_per_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
1758 p_party_id => x_person_id,
1759 p_bo_code => 'PERSON'
1760 );
1761
1762 l_pc_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
1763 p_party_id => x_person_id,
1764 p_bo_code => 'PERSON_CUST'
1765 );
1766
1767 IF(l_per_raise_event) THEN
1768 -- Get event_id for person
1769 SELECT HZ_BUS_OBJ_TRACKING_S.nextval
1770 INTO l_per_event_id
1771 FROM DUAL;
1772 END IF;
1773
1774 IF(l_pc_raise_event) THEN
1775 -- Get event_id for person customer
1776 SELECT HZ_BUS_OBJ_TRACKING_S.nextval
1777 INTO l_pc_event_id
1778 FROM DUAL;
1779 END IF;
1780 END IF;
1781
1782 OPEN get_ovn(x_person_id);
1783 FETCH get_ovn INTO l_ovn, l_party_number;
1784 CLOSE get_ovn;
1785
1786 --------------------
1787 -- For Update Person
1788 --------------------
1789 -- Assign person record
1790 assign_person_rec(
1791 p_person_obj => p_person_obj,
1792 p_person_id => x_person_id,
1793 p_person_os => x_person_os,
1794 p_person_osr => x_person_osr,
1795 p_create_or_update => 'U',
1796 px_person_rec => l_person_rec
1797 );
1798
1799 HZ_PARTY_V2PUB.update_person(
1800 p_person_rec => l_person_rec,
1801 p_party_object_version_number => l_ovn,
1802 x_profile_id => l_profile_id,
1803 x_return_status => x_return_status,
1804 x_msg_count => x_msg_count,
1805 x_msg_data => x_msg_data
1806 );
1807
1808 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1809 RAISE FND_API.G_EXC_ERROR;
1810 END IF;
1811
1812 -- assign person party_id
1813 p_person_obj.person_id := x_person_id;
1814 p_person_obj.party_number := l_party_number;
1815 --------------------------
1816 -- Create Person Ext Attrs
1817 --------------------------
1818 IF((p_person_obj.ext_attributes_objs IS NOT NULL) AND
1819 (p_person_obj.ext_attributes_objs.COUNT > 0)) THEN
1820 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
1821 p_ext_attr_objs => p_person_obj.ext_attributes_objs,
1822 p_parent_obj_id => l_profile_id,
1823 p_parent_obj_type => 'PERSON',
1824 p_create_or_update => 'U',
1825 x_return_status => x_return_status,
1826 x_errorcode => l_errorcode,
1827 x_msg_count => x_msg_count,
1828 x_msg_data => x_msg_data
1829 );
1830
1831 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1832 RAISE FND_API.G_EXC_ERROR;
1833 END IF;
1834 END IF;
1835
1836 ------------------
1837 -- For Person Info
1838 ------------------
1839 IF(((p_person_obj.language_objs IS NOT NULL) AND (p_person_obj.language_objs.COUNT > 0)) OR
1840 ((p_person_obj.education_objs IS NOT NULL) AND (p_person_obj.education_objs.COUNT > 0)) OR
1841 ((p_person_obj.citizenship_objs IS NOT NULL) AND (p_person_obj.citizenship_objs.COUNT > 0)) OR
1842 ((p_person_obj.employ_hist_objs IS NOT NULL) AND (p_person_obj.employ_hist_objs.COUNT > 0)) OR
1843 ((p_person_obj.interest_objs IS NOT NULL) AND (p_person_obj.interest_objs.COUNT > 0))) THEN
1844 save_person_info(
1845 p_language_obj => p_person_obj.language_objs,
1846 p_education_obj => p_person_obj.education_objs,
1847 p_citizenship_obj => p_person_obj.citizenship_objs,
1848 p_employ_hist_obj => p_person_obj.employ_hist_objs,
1849 p_interest_obj => p_person_obj.interest_objs,
1850 p_person_id => x_person_id,
1851 x_return_status => x_return_status,
1852 x_msg_count => x_msg_count,
1853 x_msg_data => x_msg_data
1854 );
1855
1856 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1857 RAISE FND_API.G_EXC_ERROR;
1858 END IF;
1859 END IF;
1860
1861 ----------------------------
1862 -- Party Preferences
1863 ----------------------------
1864 IF((p_person_obj.preference_objs IS NOT NULL) AND
1865 (p_person_obj.preference_objs.COUNT > 0)) THEN
1866 HZ_PARTY_BO_PVT.save_party_preferences(
1867 p_party_pref_objs => p_person_obj.preference_objs,
1868 p_party_id => x_person_id,
1869 x_return_status => x_return_status,
1870 x_msg_count => x_msg_count,
1871 x_msg_data => x_msg_data
1872 );
1873
1874 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1875 RAISE FND_API.G_EXC_ERROR;
1876 END IF;
1877 END IF;
1878
1879 ----------------------------
1880 -- Contact Preferences
1881 ----------------------------
1882 IF((p_person_obj.contact_pref_objs IS NOT NULL) AND
1883 (p_person_obj.contact_pref_objs.COUNT > 0)) THEN
1884 HZ_CONTACT_PREFERENCE_BO_PVT.save_contact_preferences(
1885 p_cp_pref_objs => p_person_obj.contact_pref_objs,
1886 p_contact_level_table_id => x_person_id,
1887 p_contact_level_table => 'HZ_PARTIES',
1888 x_return_status => x_return_status,
1889 x_msg_count => x_msg_count,
1890 x_msg_data => x_msg_data
1891 );
1892
1893 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1894 RAISE FND_API.G_EXC_ERROR;
1895 END IF;
1896 END IF;
1897
1898 ----------------------------
1899 -- Relationship api
1900 ----------------------------
1901 IF((p_person_obj.relationship_objs IS NOT NULL) AND
1902 (p_person_obj.relationship_objs.COUNT > 0)) THEN
1903 HZ_PARTY_BO_PVT.save_relationships(
1904 p_rel_objs => p_person_obj.relationship_objs,
1905 p_subject_id => x_person_id,
1906 p_subject_type => 'PERSON',
1907 x_return_status => x_return_status,
1908 x_msg_count => x_msg_count,
1909 x_msg_data => x_msg_data
1910 );
1911
1912 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1913 RAISE FND_API.G_EXC_ERROR;
1914 END IF;
1915 END IF;
1916
1917 ----------------------------
1918 -- Classification api
1919 ----------------------------
1920 IF((p_person_obj.class_objs IS NOT NULL) AND
1921 (p_person_obj.class_objs.COUNT > 0)) THEN
1922 HZ_PARTY_BO_PVT.save_classifications(
1923 p_code_assign_objs => p_person_obj.class_objs,
1924 p_owner_table_name => 'HZ_PARTIES',
1925 p_owner_table_id => x_person_id,
1926 x_return_status => x_return_status,
1927 x_msg_count => x_msg_count,
1928 x_msg_data => x_msg_data
1929 );
1930
1931 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1932 RAISE FND_API.G_EXC_ERROR;
1933 END IF;
1934 END IF;
1935
1936 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1937
1938 -----------------
1939 -- For Party Site
1940 -----------------
1941 IF((p_person_obj.party_site_objs IS NOT NULL) AND
1942 (p_person_obj.party_site_objs.COUNT > 0)) THEN
1943 HZ_PARTY_SITE_BO_PVT.save_party_sites(
1944 p_ps_objs => p_person_obj.party_site_objs,
1945 p_create_update_flag => 'U',
1946 p_obj_source => p_obj_source,
1947 x_return_status => x_return_status,
1948 x_msg_count => x_msg_count,
1949 x_msg_data => x_msg_data,
1950 p_parent_id => x_person_id,
1951 p_parent_os => x_person_os,
1952 p_parent_osr => x_person_osr,
1953 p_parent_obj_type => 'PERSON'
1954 );
1955
1956 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1957 RAISE FND_API.G_EXC_ERROR;
1958 END IF;
1959 END IF;
1960
1961 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1962
1963 ---------------------
1964 -- For Contact Points
1965 ---------------------
1966 IF(((p_person_obj.phone_objs IS NOT NULL) AND (p_person_obj.phone_objs.COUNT > 0)) OR
1967 ((p_person_obj.email_objs IS NOT NULL) AND (p_person_obj.email_objs.COUNT > 0)) OR
1968 ((p_person_obj.web_objs IS NOT NULL) AND (p_person_obj.web_objs.COUNT > 0)) OR
1969 ((p_person_obj.sms_objs IS NOT NULL) AND (p_person_obj.sms_objs.COUNT > 0))) THEN
1970 HZ_CONTACT_POINT_BO_PVT.save_contact_points(
1971 p_phone_objs => p_person_obj.phone_objs,
1972 p_telex_objs => l_telex_objs,
1973 p_email_objs => p_person_obj.email_objs,
1974 p_web_objs => p_person_obj.web_objs,
1975 p_edi_objs => l_edi_objs,
1976 p_eft_objs => l_eft_objs,
1977 p_sms_objs => p_person_obj.sms_objs,
1978 p_owner_table_id => x_person_id,
1979 p_owner_table_os => x_person_os,
1980 p_owner_table_osr => x_person_osr,
1981 p_parent_obj_type => 'PERSON',
1982 p_create_update_flag => 'U',
1983 p_obj_source => p_obj_source,
1984 x_return_status => x_return_status,
1985 x_msg_count => x_msg_count,
1986 x_msg_data => x_msg_data
1987 );
1988
1989 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1990 RAISE FND_API.G_EXC_ERROR;
1991 END IF;
1992 END IF;
1993
1994 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1995
1996 ---------------------
1997 -- Certifications
1998 ---------------------
1999 IF((p_person_obj.certification_objs IS NOT NULL) AND
2000 (p_person_obj.certification_objs.COUNT > 0)) THEN
2001 HZ_PARTY_BO_PVT.save_certifications(
2002 p_cert_objs => p_person_obj.certification_objs,
2003 p_party_id => x_person_id,
2004 x_return_status => x_return_status,
2005 x_msg_count => x_msg_count,
2006 x_msg_data => x_msg_data
2007 );
2008
2009 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2010 RAISE FND_API.G_EXC_ERROR;
2011 END IF;
2012 END IF;
2013
2014 ---------------------
2015 -- Financial Profiles
2016 ---------------------
2017 IF((p_person_obj.financial_prof_objs IS NOT NULL) AND
2018 (p_person_obj.financial_prof_objs.COUNT > 0)) THEN
2019 HZ_PARTY_BO_PVT.save_financial_profiles(
2020 p_fin_prof_objs => p_person_obj.financial_prof_objs,
2021 p_party_id => x_person_id,
2022 x_return_status => x_return_status,
2023 x_msg_count => x_msg_count,
2024 x_msg_data => x_msg_data
2025 );
2026
2027 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2028 RAISE FND_API.G_EXC_ERROR;
2029 END IF;
2030 END IF;
2031
2032 ----------------------------------
2033 -- Party Usages -------
2034 ----------------------------------
2035 IF ((p_person_obj.party_usage_objs IS NOT NULL) AND
2036 (p_person_obj.party_usage_objs.COUNT > 0 )) THEN
2037 HZ_PARTY_BO_PVT.save_party_usage_assgmnt(
2038 p_party_usg_objs => p_person_obj.party_usage_objs,
2039 p_party_id => x_person_id,
2040 x_return_status => x_return_status,
2041 x_msg_count => x_msg_count,
2042 x_msg_data => x_msg_data
2043 );
2044 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2045 RAISE FND_API.G_EXC_ERROR;
2046 END IF;
2047 END IF;
2048
2049
2050 -- raise update person event
2051 IF(l_per_raise_event) THEN
2052 HZ_PARTY_BO_PVT.call_bes(
2053 p_party_id => x_person_id,
2054 p_bo_code => 'PERSON',
2055 p_create_or_update => 'U',
2056 p_obj_source => p_obj_source,
2057 p_event_id => l_per_event_id
2058 );
2059 END IF;
2060
2061 IF(l_pc_raise_event) THEN
2062 HZ_PARTY_BO_PVT.call_bes(
2063 p_party_id => x_person_id,
2064 p_bo_code => 'PERSON_CUST',
2065 p_create_or_update => 'U',
2066 p_obj_source => p_obj_source,
2067 p_event_id => l_pc_event_id
2068 );
2069 END IF;
2070
2071 -- reset Global variable
2072 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2073 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2074
2075 -- Debug info.
2076 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2077 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2078 p_msg_data=>x_msg_data,
2079 p_msg_type=>'WARNING',
2080 p_msg_level=>fnd_log.level_exception);
2081 END IF;
2082 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2083 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
2084 p_prefix=>l_debug_prefix,
2085 p_msg_level=>fnd_log.level_procedure);
2086 END IF;
2087 EXCEPTION
2088 WHEN fnd_api.g_exc_error THEN
2089 ROLLBACK TO do_update_person_bo_pub;
2090
2091 -- reset Global variable
2092 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2093 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2094
2095 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2096 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
2097 FND_MSG_PUB.ADD;
2098
2099 x_return_status := fnd_api.g_ret_sts_error;
2100
2101 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2102 p_count => x_msg_count,
2103 p_data => x_msg_data);
2104
2105 -- Debug info.
2106 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2107 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2108 p_msg_data=>x_msg_data,
2109 p_msg_type=>'ERROR',
2110 p_msg_level=>fnd_log.level_error);
2111 END IF;
2112 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2113 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
2114 p_prefix=>l_debug_prefix,
2115 p_msg_level=>fnd_log.level_procedure);
2116 END IF;
2117
2118
2119 WHEN fnd_api.g_exc_unexpected_error THEN
2120 ROLLBACK TO do_update_person_bo_pub;
2121
2122 -- reset Global variable
2123 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2124 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2125
2126 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2127 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
2128 FND_MSG_PUB.ADD;
2129
2130 x_return_status := fnd_api.g_ret_sts_unexp_error;
2131
2132 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2133 p_count => x_msg_count,
2134 p_data => x_msg_data);
2135
2136 -- Debug info.
2137 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2138 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2139 p_msg_data=>x_msg_data,
2140 p_msg_type=>'UNEXPECTED ERROR',
2141 p_msg_level=>fnd_log.level_error);
2142 END IF;
2143 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2144 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
2145 p_prefix=>l_debug_prefix,
2146 p_msg_level=>fnd_log.level_procedure);
2147 END IF;
2148 WHEN OTHERS THEN
2149 ROLLBACK TO do_update_person_bo_pub;
2150
2151 -- reset Global variable
2152 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2153 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2154
2155 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2156 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
2157 FND_MSG_PUB.ADD;
2158
2159 x_return_status := fnd_api.g_ret_sts_unexp_error;
2160
2161 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2162 fnd_message.set_token('ERROR' ,SQLERRM);
2163 fnd_msg_pub.add;
2164
2165 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2166 p_count => x_msg_count,
2167 p_data => x_msg_data);
2168
2169 -- Debug info.
2170 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2171 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2172 p_msg_data=>x_msg_data,
2173 p_msg_type=>'SQL ERROR',
2174 p_msg_level=>fnd_log.level_error);
2175 END IF;
2176 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2177 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
2178 p_prefix=>l_debug_prefix,
2179 p_msg_level=>fnd_log.level_procedure);
2180 END IF;
2181 END do_update_person_bo;
2182
2183 PROCEDURE update_person_bo(
2184 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
2185 p_person_obj IN HZ_PERSON_BO,
2186 p_created_by_module IN VARCHAR2,
2187 x_return_status OUT NOCOPY VARCHAR2,
2188 x_msg_count OUT NOCOPY NUMBER,
2189 x_msg_data OUT NOCOPY VARCHAR2,
2190 x_person_id OUT NOCOPY NUMBER,
2191 x_person_os OUT NOCOPY VARCHAR2,
2192 x_person_osr OUT NOCOPY VARCHAR2
2193 ) IS
2194 l_per_obj HZ_PERSON_BO;
2195 BEGIN
2196 l_per_obj := p_person_obj;
2197 do_update_person_bo(
2198 p_init_msg_list => p_init_msg_list,
2199 p_person_obj => l_per_obj,
2200 p_created_by_module => p_created_by_module,
2201 p_obj_source => NULL,
2202 x_return_status => x_return_status,
2203 x_msg_count => x_msg_count,
2204 x_msg_data => x_msg_data,
2205 x_person_id => x_person_id,
2206 x_person_os => x_person_os,
2207 x_person_osr => x_person_osr
2208 );
2209 END update_person_bo;
2210
2211 PROCEDURE update_person_bo(
2212 p_person_obj IN HZ_PERSON_BO,
2213 p_created_by_module IN VARCHAR2,
2214 p_obj_source IN VARCHAR2 := null,
2215 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
2216 x_return_status OUT NOCOPY VARCHAR2,
2217 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
2218 x_return_obj OUT NOCOPY HZ_PERSON_BO,
2219 x_person_id OUT NOCOPY NUMBER,
2220 x_person_os OUT NOCOPY VARCHAR2,
2221 x_person_osr OUT NOCOPY VARCHAR2
2222 )IS
2223 l_msg_count NUMBER;
2224 l_msg_data VARCHAR2(2000);
2225 l_per_obj HZ_PERSON_BO;
2226 BEGIN
2227 l_per_obj := p_person_obj;
2228 do_update_person_bo(
2229 p_init_msg_list => FND_API.G_TRUE,
2230 p_person_obj => l_per_obj,
2231 p_created_by_module => p_created_by_module,
2232 p_obj_source => p_obj_source,
2233 x_return_status => x_return_status,
2234 x_msg_count => l_msg_count,
2235 x_msg_data => l_msg_data,
2236 x_person_id => x_person_id,
2237 x_person_os => x_person_os,
2238 x_person_osr => x_person_osr
2239 );
2240 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2241 x_return_status => x_return_status,
2242 x_msg_count => l_msg_count,
2243 x_msg_data => l_msg_data);
2244 IF FND_API.to_Boolean(p_return_obj_flag) THEN
2245 x_return_obj := l_per_obj;
2246 END IF;
2247 END update_person_bo;
2248
2249 -- PROCEDURE do_save_person_bo
2250 --
2251 -- DESCRIPTION
2252 -- Create or update a person business object.
2253 PROCEDURE do_save_person_bo(
2254 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
2255 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
2256 p_person_obj IN OUT NOCOPY HZ_PERSON_BO,
2257 p_created_by_module IN VARCHAR2,
2258 p_obj_source IN VARCHAR2 := null,
2259 x_return_status OUT NOCOPY VARCHAR2,
2260 x_msg_count OUT NOCOPY NUMBER,
2261 x_msg_data OUT NOCOPY VARCHAR2,
2262 x_person_id OUT NOCOPY NUMBER,
2263 x_person_os OUT NOCOPY VARCHAR2,
2264 x_person_osr OUT NOCOPY VARCHAR2
2265 ) IS
2266 l_return_status VARCHAR2(30);
2267 l_msg_count NUMBER;
2268 l_msg_data VARCHAR2(2000);
2269 l_create_update_flag VARCHAR2(1);
2270 l_debug_prefix VARCHAR2(30);
2271 BEGIN
2272 -- initialize API return status to success.
2273 x_return_status := FND_API.G_RET_STS_SUCCESS;
2274
2275 -- Initialize message list if p_init_msg_list is set to TRUE.
2276 IF FND_API.to_Boolean(p_init_msg_list) THEN
2277 FND_MSG_PUB.initialize;
2278 END IF;
2279
2280 -- Debug info.
2281 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2282 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(+)',
2283 p_prefix=>l_debug_prefix,
2284 p_msg_level=>fnd_log.level_procedure);
2285 END IF;
2286
2287 x_person_id := p_person_obj.person_id;
2288 x_person_os := p_person_obj.orig_system;
2289 x_person_osr:= p_person_obj.orig_system_reference;
2290
2291 -- check root business object to determine that it should be
2292 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
2293 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
2294 p_entity_id => x_person_id,
2295 p_entity_os => x_person_os,
2296 p_entity_osr => x_person_osr,
2297 p_entity_type => 'HZ_PARTIES',
2298 p_parent_id => NULL,
2299 p_parent_obj_type=> NULL);
2300
2301 IF(l_create_update_flag = 'E') THEN
2302 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2303 FND_MSG_PUB.ADD;
2304 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2305 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
2306 FND_MSG_PUB.ADD;
2307 RAISE FND_API.G_EXC_ERROR;
2308 END IF;
2309
2310 IF(l_create_update_flag = 'C') THEN
2311 do_create_person_bo(
2312 p_init_msg_list => fnd_api.g_false,
2313 p_validate_bo_flag => p_validate_bo_flag,
2314 p_person_obj => p_person_obj,
2315 p_created_by_module => p_created_by_module,
2316 p_obj_source => p_obj_source,
2317 x_return_status => x_return_status,
2318 x_msg_count => x_msg_count,
2319 x_msg_data => x_msg_data,
2320 x_person_id => x_person_id,
2321 x_person_os => x_person_os,
2322 x_person_osr => x_person_osr
2323 );
2324 ELSIF(l_create_update_flag = 'U') THEN
2325 do_update_person_bo(
2326 p_init_msg_list => fnd_api.g_false,
2327 p_person_obj => p_person_obj,
2328 p_created_by_module => p_created_by_module,
2329 p_obj_source => p_obj_source,
2330 x_return_status => x_return_status,
2331 x_msg_count => x_msg_count,
2332 x_msg_data => x_msg_data,
2333 x_person_id => x_person_id,
2334 x_person_os => x_person_os,
2335 x_person_osr => x_person_osr
2336 );
2337 ELSE
2338 RAISE FND_API.G_EXC_ERROR;
2339 END IF;
2340
2341 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2342 RAISE FND_API.G_EXC_ERROR;
2343 END IF;
2344
2345 -- Debug info.
2346 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2347 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2348 p_msg_data=>x_msg_data,
2349 p_msg_type=>'WARNING',
2350 p_msg_level=>fnd_log.level_exception);
2351 END IF;
2352 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2353 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
2354 p_prefix=>l_debug_prefix,
2355 p_msg_level=>fnd_log.level_procedure);
2356 END IF;
2357 EXCEPTION
2358 WHEN fnd_api.g_exc_error THEN
2359 x_return_status := fnd_api.g_ret_sts_error;
2360
2361 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2362 p_count => x_msg_count,
2363 p_data => x_msg_data);
2364
2365 -- Debug info.
2366 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2367 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2368 p_msg_data=>x_msg_data,
2369 p_msg_type=>'ERROR',
2370 p_msg_level=>fnd_log.level_error);
2371 END IF;
2372 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2373 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
2374 p_prefix=>l_debug_prefix,
2375 p_msg_level=>fnd_log.level_procedure);
2376 END IF;
2377
2378 WHEN fnd_api.g_exc_unexpected_error THEN
2379 x_return_status := fnd_api.g_ret_sts_unexp_error;
2380
2381 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2382 p_count => x_msg_count,
2383 p_data => x_msg_data);
2384
2385 -- Debug info.
2386 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2387 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2388 p_msg_data=>x_msg_data,
2389 p_msg_type=>'UNEXPECTED ERROR',
2390 p_msg_level=>fnd_log.level_error);
2391 END IF;
2392 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2393 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
2394 p_prefix=>l_debug_prefix,
2395 p_msg_level=>fnd_log.level_procedure);
2396 END IF;
2397 WHEN OTHERS THEN
2398 x_return_status := fnd_api.g_ret_sts_unexp_error;
2399
2400 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2401 fnd_message.set_token('ERROR' ,SQLERRM);
2402 fnd_msg_pub.add;
2403
2404 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2405 p_count => x_msg_count,
2406 p_data => x_msg_data);
2407
2408 -- Debug info.
2409 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2410 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2411 p_msg_data=>x_msg_data,
2412 p_msg_type=>'SQL ERROR',
2413 p_msg_level=>fnd_log.level_error);
2414 END IF;
2415 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2416 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
2417 p_prefix=>l_debug_prefix,
2418 p_msg_level=>fnd_log.level_procedure);
2419 END IF;
2420 END do_save_person_bo;
2421
2422 PROCEDURE save_person_bo(
2423 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
2424 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
2425 p_person_obj IN HZ_PERSON_BO,
2426 p_created_by_module IN VARCHAR2,
2427 x_return_status OUT NOCOPY VARCHAR2,
2428 x_msg_count OUT NOCOPY NUMBER,
2429 x_msg_data OUT NOCOPY VARCHAR2,
2430 x_person_id OUT NOCOPY NUMBER,
2431 x_person_os OUT NOCOPY VARCHAR2,
2432 x_person_osr OUT NOCOPY VARCHAR2
2433 ) IS
2434 l_per_obj HZ_PERSON_BO;
2435 BEGIN
2436 l_per_obj := p_person_obj;
2437 do_save_person_bo(
2438 p_init_msg_list => p_init_msg_list,
2439 p_validate_bo_flag => p_validate_bo_flag,
2440 p_person_obj => l_per_obj,
2441 p_created_by_module => p_created_by_module,
2442 p_obj_source => NULL,
2443 x_return_status => x_return_status,
2444 x_msg_count => x_msg_count,
2445 x_msg_data => x_msg_data,
2446 x_person_id => x_person_id,
2447 x_person_os => x_person_os,
2448 x_person_osr => x_person_osr
2449 );
2450 END save_person_bo;
2451
2452 PROCEDURE save_person_bo(
2453 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
2454 p_person_obj IN HZ_PERSON_BO,
2455 p_created_by_module IN VARCHAR2,
2456 p_obj_source IN VARCHAR2 := NULL,
2457 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
2458 x_return_status OUT NOCOPY VARCHAR2,
2459 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
2460 x_return_obj OUT NOCOPY HZ_PERSON_BO,
2461 x_person_id OUT NOCOPY NUMBER,
2462 x_person_os OUT NOCOPY VARCHAR2,
2463 x_person_osr OUT NOCOPY VARCHAR2
2464 ) IS
2465 l_msg_count NUMBER;
2466 l_msg_data VARCHAR2(2000);
2467 l_per_obj HZ_PERSON_BO;
2468 BEGIN
2469 l_per_obj := p_person_obj;
2470 do_save_person_bo(
2471 p_init_msg_list => FND_API.G_TRUE,
2472 p_validate_bo_flag => p_validate_bo_flag,
2473 p_person_obj => l_per_obj,
2474 p_created_by_module => p_created_by_module,
2475 p_obj_source => p_obj_source,
2476 x_return_status => x_return_status,
2477 x_msg_count => l_msg_count,
2478 x_msg_data => l_msg_data,
2479 x_person_id => x_person_id,
2480 x_person_os => x_person_os,
2481 x_person_osr => x_person_osr
2482 );
2483 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2484 x_return_status => x_return_status,
2485 x_msg_count => l_msg_count,
2486 x_msg_data => l_msg_data);
2487 IF FND_API.to_Boolean(p_return_obj_flag) THEN
2488 x_return_obj := l_per_obj;
2489 END IF;
2490 END save_person_bo;
2491
2492 -- PRIVATE PROCEDURE create_person_info
2493 --
2494 -- DESCRIPTION
2495 -- Create person information, such as language, education, citizenship,
2496 -- employment history and interest
2497 --
2498 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2499 --
2500 -- ARGUMENTS
2501 -- IN:
2502 -- p_language_obj Person language object.
2503 -- p_education_obj Education object.
2504 -- p_citizenship_obj Citizenship object.
2505 -- p_employ_hist_obj Employment history object.
2506 -- p_interest_obj Person interest object.
2507 -- p_party_id Party ID.
2508 -- OUT:
2509 -- x_return_status Return status after the call. The status can
2510 -- be fnd_api.g_ret_sts_success (success),
2511 -- fnd_api.g_ret_sts_error (error),
2512 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2513 -- x_msg_count Number of messages in message stack.
2514 -- x_msg_data Message text if x_msg_count is 1.
2515 --
2516 -- NOTES
2517 --
2518 -- MODIFICATION HISTORY
2519 --
2520 -- 14-DEC-2004 Arnold Ng Created.
2521 --
2522
2523 PROCEDURE create_person_info(
2524 p_language_obj IN OUT NOCOPY HZ_PERSON_LANG_OBJ_TBL,
2525 p_education_obj IN OUT NOCOPY HZ_EDUCATION_OBJ_TBL,
2526 p_citizenship_obj IN OUT NOCOPY HZ_CITIZENSHIP_OBJ_TBL,
2527 p_employ_hist_obj IN OUT NOCOPY HZ_EMPLOY_HIST_BO_TBL,
2528 p_interest_obj IN OUT NOCOPY HZ_PERSON_INTEREST_OBJ_TBL,
2529 p_person_id IN NUMBER,
2530 x_return_status OUT NOCOPY VARCHAR2,
2531 x_msg_count OUT NOCOPY NUMBER,
2532 x_msg_data OUT NOCOPY VARCHAR2
2533 )IS
2534 l_debug_prefix VARCHAR2(30);
2535 l_person_lang_rec HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE;
2536 l_education_rec HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE;
2537 l_citizenship_rec HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE;
2538 l_employ_hist_rec HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE;
2539 l_work_class_rec HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE;
2540 l_interest_rec HZ_PERSON_INFO_V2PUB.PERSON_INTEREST_REC_TYPE;
2541 l_dummy_id NUMBER;
2542 BEGIN
2543 -- Standard start of API savepoint
2544 SAVEPOINT create_person_info_pub;
2545
2546 -- initialize API return status to success.
2547 x_return_status := FND_API.G_RET_STS_SUCCESS;
2548
2549 -- Debug info.
2550 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2551 hz_utility_v2pub.debug(p_message=>'create_person_info(+)',
2552 p_prefix=>l_debug_prefix,
2553 p_msg_level=>fnd_log.level_procedure);
2554 END IF;
2555
2556 --------------------------------
2557 -- Assign person language record
2558 --------------------------------
2559 IF(p_language_obj IS NOT NULL) THEN
2560 FOR i IN 1..p_language_obj.COUNT LOOP
2561 assign_person_lang_rec(
2562 p_person_lang_obj => p_language_obj(i),
2563 p_party_id => p_person_id,
2564 px_person_lang_rec => l_person_lang_rec
2565 );
2566
2567 HZ_PERSON_INFO_V2PUB.create_person_language(
2568 p_person_language_rec => l_person_lang_rec,
2569 x_language_use_reference_id => l_dummy_id,
2570 x_return_status => x_return_status,
2571 x_msg_count => x_msg_count,
2572 x_msg_data => x_msg_data
2573 );
2574
2575 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2576 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2577 hz_utility_v2pub.debug(p_message=>'Create Person Language - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2578 p_prefix=>l_debug_prefix,
2579 p_msg_level=>fnd_log.level_procedure);
2580 END IF;
2581 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2582 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_LANGUAGE');
2583 FND_MSG_PUB.ADD;
2584 RAISE FND_API.G_EXC_ERROR;
2585 END IF;
2586
2587 -- assign person language_use_reference_id
2588 p_language_obj(i).language_use_reference_id := l_dummy_id;
2589 END LOOP;
2590 END IF;
2591
2592 --------------------------
2593 -- Assign education record
2594 --------------------------
2595 IF(p_education_obj IS NOT NULL) THEN
2596 FOR i IN 1..p_education_obj.COUNT LOOP
2597 assign_education_rec(
2598 p_education_obj => p_education_obj(i),
2599 p_party_id => p_person_id,
2600 px_education_rec => l_education_rec
2601 );
2602
2603 HZ_PERSON_INFO_V2PUB.create_education(
2604 p_education_rec => l_education_rec,
2605 x_education_id => l_dummy_id,
2606 x_return_status => x_return_status,
2607 x_msg_count => x_msg_count,
2608 x_msg_data => x_msg_data
2609 );
2610
2611 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2612 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2613 hz_utility_v2pub.debug(p_message=>'Create Education - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2614 p_prefix=>l_debug_prefix,
2615 p_msg_level=>fnd_log.level_procedure);
2616 END IF;
2617 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2618 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_EDUCATION');
2619 FND_MSG_PUB.ADD;
2620 RAISE FND_API.G_EXC_ERROR;
2621 END IF;
2622
2623 -- assign education_id
2624 p_education_obj(i).education_id := l_dummy_id;
2625 END LOOP;
2626 END IF;
2627
2628 ----------------------------
2629 -- Assign citizenship record
2630 ----------------------------
2631 IF(p_citizenship_obj IS NOT NULL) THEN
2632 FOR i IN 1..p_citizenship_obj.COUNT LOOP
2633 assign_citizenship_rec(
2634 p_citizenship_obj => p_citizenship_obj(i),
2635 p_party_id => p_person_id,
2636 px_citizenship_rec => l_citizenship_rec
2637 );
2638
2639 HZ_PERSON_INFO_V2PUB.create_citizenship(
2640 p_citizenship_rec => l_citizenship_rec,
2641 x_citizenship_id => l_dummy_id,
2642 x_return_status => x_return_status,
2643 x_msg_count => x_msg_count,
2644 x_msg_data => x_msg_data
2645 );
2646
2647 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2648 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2649 hz_utility_v2pub.debug(p_message=>'Create Citizenship - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2650 p_prefix=>l_debug_prefix,
2651 p_msg_level=>fnd_log.level_procedure);
2652 END IF;
2653 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2654 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CITIZENSHIP');
2655 FND_MSG_PUB.ADD;
2656 RAISE FND_API.G_EXC_ERROR;
2657 END IF;
2658
2659 -- assign citizenship_id
2660 p_citizenship_obj(i).citizenship_id := l_dummy_id;
2661 END LOOP;
2662 END IF;
2663
2664 -----------------------------------
2665 -- Assign employment history record
2666 -----------------------------------
2667 IF(p_employ_hist_obj IS NOT NULL) THEN
2668 FOR i IN 1..p_employ_hist_obj.COUNT LOOP
2669 assign_employ_hist_rec(
2670 p_employ_hist_obj => p_employ_hist_obj(i),
2671 p_party_id => p_person_id,
2672 px_employ_hist_rec => l_employ_hist_rec
2673 );
2674
2675 HZ_PERSON_INFO_V2PUB.create_employment_history(
2676 p_employment_history_rec => l_employ_hist_rec,
2677 x_employment_history_id => l_dummy_id,
2678 x_return_status => x_return_status,
2679 x_msg_count => x_msg_count,
2680 x_msg_data => x_msg_data
2681 );
2682
2683 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2684 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2685 hz_utility_v2pub.debug(p_message=>'Create Employment History - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2686 p_prefix=>l_debug_prefix,
2687 p_msg_level=>fnd_log.level_procedure);
2688 END IF;
2689 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
2690 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_EMPLOYMENT_HISTORY');
2691 FND_MSG_PUB.ADD;
2692 RAISE FND_API.G_EXC_ERROR;
2693 ELSE
2694
2695 -- assign employment_history_id
2696 p_employ_hist_obj(i).employment_history_id := l_dummy_id;
2697
2698 -- Call work class v2api if employment history record is created successfully
2699 -------------------------------------------------
2700 -- Assign work class of employment history record
2701 -------------------------------------------------
2702 IF(p_employ_hist_obj(i).work_class_objs IS NOT NULL) THEN
2703 FOR j IN 1..p_employ_hist_obj(i).work_class_objs.COUNT LOOP
2704 assign_work_class_rec(
2705 p_work_class_obj => p_employ_hist_obj(i).work_class_objs(j),
2706 p_employ_hist_id => l_dummy_id,
2707 px_work_class_rec => l_work_class_rec
2708 );
2709
2710 HZ_PERSON_INFO_V2PUB.create_work_class(
2711 p_work_class_rec => l_work_class_rec,
2712 x_work_class_id => l_dummy_id,
2713 x_return_status => x_return_status,
2714 x_msg_count => x_msg_count,
2715 x_msg_data => x_msg_data
2716 );
2717
2718 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2719 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2720 hz_utility_v2pub.debug(p_message=>'Create Work Class - Error occurred at hz_person_bo_pub.create_person_info, employ_hist_id: '||l_dummy_id,
2721 p_prefix=>l_debug_prefix,
2722 p_msg_level=>fnd_log.level_procedure);
2723 END IF;
2724 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2725 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_WORK_CLASS');
2726 FND_MSG_PUB.ADD;
2727 RAISE FND_API.G_EXC_ERROR;
2728 END IF;
2729
2730 -- assign work_class_id
2731 p_employ_hist_obj(i).work_class_objs(j).work_class_id := l_dummy_id;
2732 END LOOP;
2733 END IF;
2734 END IF;
2735 END LOOP;
2736 END IF;
2737
2738 --------------------------------
2739 -- Assign person interest record
2740 --------------------------------
2741 IF(p_interest_obj IS NOT NULL) THEN
2742 FOR i IN 1..p_interest_obj.COUNT LOOP
2743 assign_interest_rec(
2744 p_person_interest_obj => p_interest_obj(i),
2745 p_party_id => p_person_id,
2746 px_person_interest_rec => l_interest_rec
2747 );
2748
2749 HZ_PERSON_INFO_V2PUB.create_person_interest(
2750 p_person_interest_rec => l_interest_rec,
2751 x_person_interest_id => l_dummy_id,
2752 x_return_status => x_return_status,
2753 x_msg_count => x_msg_count,
2754 x_msg_data => x_msg_data
2755 );
2756
2757 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2758 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2759 hz_utility_v2pub.debug(p_message=>'Create Person Interest - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2760 p_prefix=>l_debug_prefix,
2761 p_msg_level=>fnd_log.level_procedure);
2762 END IF;
2763 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2764 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_INTEREST');
2765 FND_MSG_PUB.ADD;
2766 RAISE FND_API.G_EXC_ERROR;
2767 END IF;
2768
2769 -- assign person_interest_id
2770 p_interest_obj(i).person_interest_id := l_dummy_id;
2771 END LOOP;
2772 END IF;
2773
2774 -- Debug info.
2775 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2776 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2777 p_msg_data=>x_msg_data,
2778 p_msg_type=>'WARNING',
2779 p_msg_level=>fnd_log.level_exception);
2780 END IF;
2781 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2782 hz_utility_v2pub.debug(p_message=>'create_person_info(-)',
2783 p_prefix=>l_debug_prefix,
2784 p_msg_level=>fnd_log.level_procedure);
2785 END IF;
2786 EXCEPTION
2787 WHEN fnd_api.g_exc_error THEN
2788 ROLLBACK TO create_person_info_pub;
2789 x_return_status := fnd_api.g_ret_sts_error;
2790
2791 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2792 p_count => x_msg_count,
2793 p_data => x_msg_data);
2794
2795 -- Debug info.
2796 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2797 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2798 p_msg_data=>x_msg_data,
2799 p_msg_type=>'ERROR',
2800 p_msg_level=>fnd_log.level_error);
2801 END IF;
2802 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2803 hz_utility_v2pub.debug(p_message=>'create_person_info(-)',
2804 p_prefix=>l_debug_prefix,
2805 p_msg_level=>fnd_log.level_procedure);
2806 END IF;
2807 WHEN fnd_api.g_exc_unexpected_error THEN
2808 ROLLBACK TO create_person_info_pub;
2809 x_return_status := fnd_api.g_ret_sts_unexp_error;
2810
2811 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2812 p_count => x_msg_count,
2813 p_data => x_msg_data);
2814
2815 -- Debug info.
2816 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2817 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2818 p_msg_data=>x_msg_data,
2819 p_msg_type=>'UNEXPECTED ERROR',
2820 p_msg_level=>fnd_log.level_error);
2821 END IF;
2822 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2823 hz_utility_v2pub.debug(p_message=>'create_person_info(-)',
2824 p_prefix=>l_debug_prefix,
2825 p_msg_level=>fnd_log.level_procedure);
2826 END IF;
2827
2828 WHEN OTHERS THEN
2829 ROLLBACK TO create_person_info_pub;
2830 x_return_status := fnd_api.g_ret_sts_unexp_error;
2831
2832 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2833 fnd_message.set_token('ERROR' ,SQLERRM);
2834 fnd_msg_pub.add;
2835
2836 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2837 p_count => x_msg_count,
2838 p_data => x_msg_data);
2839
2840 -- Debug info.
2841 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2842 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2843 p_msg_data=>x_msg_data,
2844 p_msg_type=>'SQL ERROR',
2845 p_msg_level=>fnd_log.level_error);
2846 END IF;
2847 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2848 hz_utility_v2pub.debug(p_message=>'create_person_info(-)',
2849 p_prefix=>l_debug_prefix,
2850 p_msg_level=>fnd_log.level_procedure);
2851 END IF;
2852 END create_person_info;
2853
2854 -- PRIVATE PROCEDURE save_person_info
2855 --
2856 -- DESCRIPTION
2857 -- Create or update person information, such as language, education, citizenship,
2858 -- employment history and interest
2859 --
2860 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2861 --
2862 -- ARGUMENTS
2863 -- IN:
2864 -- p_language_obj Person language object.
2865 -- p_education_obj Education object.
2866 -- p_citizenship_obj Citizenship object.
2867 -- p_employ_hist_obj Employment history object.
2868 -- p_interest_obj Person interest object.
2869 -- p_party_id Party ID.
2870 -- OUT:
2871 -- x_return_status Return status after the call. The status can
2872 -- be fnd_api.g_ret_sts_success (success),
2873 -- fnd_api.g_ret_sts_error (error),
2874 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2875 -- x_msg_count Number of messages in message stack.
2876 -- x_msg_data Message text if x_msg_count is 1.
2877 --
2878 -- NOTES
2879 --
2880 -- MODIFICATION HISTORY
2881 --
2882 -- 14-DEC-2004 Arnold Ng Created.
2883 --
2884
2885 PROCEDURE save_person_info(
2886 p_language_obj IN OUT NOCOPY HZ_PERSON_LANG_OBJ_TBL,
2887 p_education_obj IN OUT NOCOPY HZ_EDUCATION_OBJ_TBL,
2888 p_citizenship_obj IN OUT NOCOPY HZ_CITIZENSHIP_OBJ_TBL,
2889 p_employ_hist_obj IN OUT NOCOPY HZ_EMPLOY_HIST_BO_TBL,
2890 p_interest_obj IN OUT NOCOPY HZ_PERSON_INTEREST_OBJ_TBL,
2891 p_person_id IN NUMBER,
2892 x_return_status OUT NOCOPY VARCHAR2,
2893 x_msg_count OUT NOCOPY NUMBER,
2894 x_msg_data OUT NOCOPY VARCHAR2
2895 )IS
2896 l_debug_prefix VARCHAR2(30);
2897 l_person_lang_rec HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE;
2898 l_education_rec HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE;
2899 l_citizenship_rec HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE;
2900 l_employ_hist_rec HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE;
2901 l_work_class_rec HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE;
2902 l_interest_rec HZ_PERSON_INFO_V2PUB.PERSON_INTEREST_REC_TYPE;
2903 l_dummy_id NUMBER;
2904 l_ovn NUMBER := NULL;
2905 BEGIN
2906 -- Standard start of API savepoint
2907 SAVEPOINT save_person_info_pub;
2908
2909 -- initialize API return status to success.
2910 x_return_status := FND_API.G_RET_STS_SUCCESS;
2911
2912 -- Debug info.
2913 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2914 hz_utility_v2pub.debug(p_message=>'save_person_info(+)',
2915 p_prefix=>l_debug_prefix,
2916 p_msg_level=>fnd_log.level_procedure);
2917 END IF;
2918
2919 --------------------------------
2920 -- Create/Update person language
2921 --------------------------------
2922 IF(p_language_obj IS NOT NULL) THEN
2923 FOR i IN 1..p_language_obj.COUNT LOOP
2924 assign_person_lang_rec(
2925 p_person_lang_obj => p_language_obj(i),
2926 p_party_id => p_person_id,
2927 px_person_lang_rec => l_person_lang_rec
2928 );
2929
2930 hz_registry_validate_bo_pvt.check_language_op(
2931 p_party_id => p_person_id,
2932 px_language_use_ref_id => l_person_lang_rec.language_use_reference_id,
2933 p_language_name => l_person_lang_rec.language_name,
2934 x_object_version_number => l_ovn
2935 );
2936
2937 IF(l_ovn = -1) THEN
2938 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2939 hz_utility_v2pub.debug(p_message=>'Save Person Language - Error occurred at hz_person_bo_pub.check_language_op, person id: '||p_person_id||' '||' ovn:'||l_ovn,
2940 p_prefix=>l_debug_prefix,
2941 p_msg_level=>fnd_log.level_procedure);
2942 END IF;
2943 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2944 FND_MSG_PUB.ADD;
2945 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2946 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_LANGUAGE');
2947 FND_MSG_PUB.ADD;
2948 RAISE FND_API.G_EXC_ERROR;
2949 END IF;
2950
2951 IF(l_ovn IS NULL) THEN
2952 HZ_PERSON_INFO_V2PUB.create_person_language(
2953 p_person_language_rec => l_person_lang_rec,
2954 x_language_use_reference_id => l_dummy_id,
2955 x_return_status => x_return_status,
2956 x_msg_count => x_msg_count,
2957 x_msg_data => x_msg_data
2958 );
2959
2960 -- assign person language_use_reference_id
2961 p_language_obj(i).language_use_reference_id := l_dummy_id;
2962 ELSE
2963 -- clean up created_by_module for update
2964 l_person_lang_rec.created_by_module := NULL;
2965 HZ_PERSON_INFO_V2PUB.update_person_language(
2966 p_person_language_rec => l_person_lang_rec,
2967 p_object_version_number => l_ovn,
2968 x_return_status => x_return_status,
2969 x_msg_count => x_msg_count,
2970 x_msg_data => x_msg_data
2971 );
2972
2973 -- assign person language_use_reference_id
2974 p_language_obj(i).language_use_reference_id := l_person_lang_rec.language_use_reference_id;
2975 END IF;
2976 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2977 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2978 hz_utility_v2pub.debug(p_message=>'Save Person Language - Error occurred at hz_person_bo_pub.save_person_info, person id: '||p_person_id||' '||' ovn:'||l_ovn,
2979 p_prefix=>l_debug_prefix,
2980 p_msg_level=>fnd_log.level_procedure);
2981 END IF;
2982 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2983 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_LANGUAGE');
2984 FND_MSG_PUB.ADD;
2985 RAISE FND_API.G_EXC_ERROR;
2986 END IF;
2987 END LOOP;
2988 END IF;
2989
2990 --------------------------
2991 -- Create/Update education
2992 --------------------------
2993 IF(p_education_obj IS NOT NULL) THEN
2994 FOR i IN 1..p_education_obj.COUNT LOOP
2995 assign_education_rec(
2996 p_education_obj => p_education_obj(i),
2997 p_party_id => p_person_id,
2998 px_education_rec => l_education_rec
2999 );
3000
3001 hz_registry_validate_bo_pvt.check_education_op(
3002 p_party_id => p_person_id,
3003 px_education_id => l_education_rec.education_id,
3004 p_course_major => l_education_rec.course_major,
3005 p_school_attended_name => l_education_rec.school_attended_name,
3006 p_degree_received => l_education_rec.degree_received,
3007 x_object_version_number => l_ovn
3008 );
3009
3010 IF(l_ovn = -1) THEN
3011 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3012 hz_utility_v2pub.debug(p_message=>'Save Education - Error occurred at hz_person_bo_pub.check_education_op, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3013 p_prefix=>l_debug_prefix,
3014 p_msg_level=>fnd_log.level_procedure);
3015 END IF;
3016 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
3017 FND_MSG_PUB.ADD;
3018 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3019 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_EDUCATION');
3020 FND_MSG_PUB.ADD;
3021 RAISE FND_API.G_EXC_ERROR;
3022 END IF;
3023
3024 IF(l_ovn IS NULL) THEN
3025 HZ_PERSON_INFO_V2PUB.create_education(
3026 p_education_rec => l_education_rec,
3027 x_education_id => l_dummy_id,
3028 x_return_status => x_return_status,
3029 x_msg_count => x_msg_count,
3030 x_msg_data => x_msg_data
3031 );
3032
3033 -- assign education_id
3034 p_education_obj(i).education_id := l_dummy_id;
3035 ELSE
3036 -- clean up created_by_module for update
3037 l_education_rec.created_by_module := NULL;
3038 HZ_PERSON_INFO_V2PUB.update_education(
3039 p_education_rec => l_education_rec,
3040 p_object_version_number => l_ovn,
3041 x_return_status => x_return_status,
3042 x_msg_count => x_msg_count,
3043 x_msg_data => x_msg_data
3044 );
3045
3046 -- assign education_id
3047 p_education_obj(i).education_id := l_education_rec.education_id;
3048 END IF;
3049 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3050 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3051 hz_utility_v2pub.debug(p_message=>'Save Education - Error occurred at hz_person_bo_pub.save_person_info, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3052 p_prefix=>l_debug_prefix,
3053 p_msg_level=>fnd_log.level_procedure);
3054 END IF;
3055 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3056 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_EDUCATION');
3057 FND_MSG_PUB.ADD;
3058 RAISE FND_API.G_EXC_ERROR;
3059 END IF;
3060 END LOOP;
3061 END IF;
3062
3063 ----------------------------
3064 -- Create/Update citizenship
3065 ----------------------------
3066 IF(p_citizenship_obj IS NOT NULL) THEN
3067 FOR i IN 1..p_citizenship_obj.COUNT LOOP
3068 assign_citizenship_rec(
3069 p_citizenship_obj => p_citizenship_obj(i),
3070 p_party_id => p_person_id,
3071 px_citizenship_rec => l_citizenship_rec
3072 );
3073
3074 hz_registry_validate_bo_pvt.check_citizenship_op(
3075 p_party_id => p_person_id,
3076 px_citizenship_id => l_citizenship_rec.citizenship_id,
3077 p_country_code => l_citizenship_rec.country_code,
3078 x_object_version_number => l_ovn
3079 );
3080
3081 IF(l_ovn = -1) THEN
3082 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3083 hz_utility_v2pub.debug(p_message=>'Save Citizenship - Error occurred at hz_person_bo_pub.check_citizenship_op, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3084 p_prefix=>l_debug_prefix,
3085 p_msg_level=>fnd_log.level_procedure);
3086 END IF;
3087 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
3088 FND_MSG_PUB.ADD;
3089 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3090 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CITIZENSHIP');
3091 FND_MSG_PUB.ADD;
3092 RAISE FND_API.G_EXC_ERROR;
3093 END IF;
3094
3095 IF(l_ovn IS NULL) THEN
3096 HZ_PERSON_INFO_V2PUB.create_citizenship(
3097 p_citizenship_rec => l_citizenship_rec,
3098 x_citizenship_id => l_dummy_id,
3099 x_return_status => x_return_status,
3100 x_msg_count => x_msg_count,
3101 x_msg_data => x_msg_data
3102 );
3103
3104 -- assign citizenship_id
3105 p_citizenship_obj(i).citizenship_id := l_dummy_id;
3106 ELSE
3107 -- clean up created_by_module for update
3108 l_citizenship_rec.created_by_module := NULL;
3109 HZ_PERSON_INFO_V2PUB.update_citizenship(
3110 p_citizenship_rec => l_citizenship_rec,
3111 p_object_version_number => l_ovn,
3112 x_return_status => x_return_status,
3113 x_msg_count => x_msg_count,
3114 x_msg_data => x_msg_data
3115 );
3116
3117 -- assign citizenship_id
3118 p_citizenship_obj(i).citizenship_id := l_citizenship_rec.citizenship_id;
3119 END IF;
3120 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3121 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3122 hz_utility_v2pub.debug(p_message=>'Save Citizenship - Error occurred at hz_person_bo_pub.save_person_info, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3123 p_prefix=>l_debug_prefix,
3124 p_msg_level=>fnd_log.level_procedure);
3125 END IF;
3126 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3127 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CITIZENSHIP');
3128 FND_MSG_PUB.ADD;
3129 RAISE FND_API.G_EXC_ERROR;
3130 END IF;
3131 END LOOP;
3132 END IF;
3133
3134 -----------------------------------
3135 -- Create/Update employment history
3136 -----------------------------------
3137 IF(p_employ_hist_obj IS NOT NULL) THEN
3138 FOR i IN 1..p_employ_hist_obj.COUNT LOOP
3139 assign_employ_hist_rec(
3140 p_employ_hist_obj => p_employ_hist_obj(i),
3141 p_party_id => p_person_id,
3142 px_employ_hist_rec => l_employ_hist_rec
3143 );
3144
3145 hz_registry_validate_bo_pvt.check_employ_hist_op(
3146 p_party_id => p_person_id,
3147 px_emp_hist_id => l_employ_hist_rec.employment_history_id,
3148 p_employed_by_name_company => l_employ_hist_rec.employed_by_name_company,
3149 p_employed_as_title => l_employ_hist_rec.employed_as_title,
3150 p_begin_date => l_employ_hist_rec.begin_date,
3151 x_object_version_number => l_ovn
3152 );
3153
3154 IF(l_ovn = -1) THEN
3155 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3156 hz_utility_v2pub.debug(p_message=>'Save Employment History - Error occurred at hz_person_bo_pub.check_employ_hist_op, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3157 p_prefix=>l_debug_prefix,
3158 p_msg_level=>fnd_log.level_procedure);
3159 END IF;
3160 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
3161 FND_MSG_PUB.ADD;
3162 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
3163 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_EMPLOYMENT_HISTORY');
3164 FND_MSG_PUB.ADD;
3165 RAISE FND_API.G_EXC_ERROR;
3166 END IF;
3167
3168 IF(l_ovn IS NULL) THEN
3169 HZ_PERSON_INFO_V2PUB.create_employment_history(
3170 p_employment_history_rec => l_employ_hist_rec,
3171 x_employment_history_id => l_dummy_id,
3172 x_return_status => x_return_status,
3173 x_msg_count => x_msg_count,
3174 x_msg_data => x_msg_data
3175 );
3176
3177 -- assign employment_history_id
3178 p_employ_hist_obj(i).employment_history_id := l_dummy_id;
3179 ELSE
3180 -- clean up created_by_module for update
3181 l_employ_hist_rec.created_by_module := NULL;
3182 HZ_PERSON_INFO_V2PUB.update_employment_history(
3183 p_employment_history_rec => l_employ_hist_rec,
3184 p_object_version_number => l_ovn,
3185 x_return_status => x_return_status,
3186 x_msg_count => x_msg_count,
3187 x_msg_data => x_msg_data
3188 );
3189 l_dummy_id := l_employ_hist_rec.employment_history_id;
3190
3191 -- assign employment_history_id
3192 p_employ_hist_obj(i).employment_history_id := l_dummy_id;
3193 END IF;
3194 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3195 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3196 hz_utility_v2pub.debug(p_message=>'Save Employment History - Error occurred at hz_person_bo_pub.save_person_info, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3197 p_prefix=>l_debug_prefix,
3198 p_msg_level=>fnd_log.level_procedure);
3199 END IF;
3200 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
3201 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_EMPLOYMENT_HISTORY');
3202 FND_MSG_PUB.ADD;
3203 RAISE FND_API.G_EXC_ERROR;
3204 ELSE
3205 ---------------------------
3206 -- Create/Update work class
3207 ---------------------------
3208 IF(p_employ_hist_obj(i).work_class_objs IS NOT NULL) THEN
3209 FOR j IN 1..p_employ_hist_obj(i).work_class_objs.COUNT LOOP
3210 assign_work_class_rec(
3211 p_work_class_obj => p_employ_hist_obj(i).work_class_objs(j),
3212 p_employ_hist_id => l_dummy_id,
3213 px_work_class_rec => l_work_class_rec
3214 );
3215
3216 hz_registry_validate_bo_pvt.check_work_class_op(
3217 p_employ_hist_id => l_dummy_id,
3218 px_work_class_id => l_work_class_rec.work_class_id,
3219 p_work_class_name => l_work_class_rec.work_class_name,
3220 x_object_version_number => l_ovn
3221 );
3222
3223 IF(l_ovn = -1) THEN
3224 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3225 hz_utility_v2pub.debug(p_message=>'Save Work Class - Error occurred at hz_person_bo_pub.check_work_class_op, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3226 p_prefix=>l_debug_prefix,
3227 p_msg_level=>fnd_log.level_procedure);
3228 END IF;
3229 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
3230 FND_MSG_PUB.ADD;
3231 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3232 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_WORK_CLASS');
3233 FND_MSG_PUB.ADD;
3234 RAISE FND_API.G_EXC_ERROR;
3235 END IF;
3236
3237 IF(l_ovn IS NULL) THEN
3238 HZ_PERSON_INFO_V2PUB.create_work_class(
3239 p_work_class_rec => l_work_class_rec,
3240 x_work_class_id => l_dummy_id,
3241 x_return_status => x_return_status,
3242 x_msg_count => x_msg_count,
3243 x_msg_data => x_msg_data
3244 );
3245
3246 -- assign work_class_id
3247 p_employ_hist_obj(i).work_class_objs(j).work_class_id := l_dummy_id;
3248 ELSE
3249 -- clean up created_by_module for update
3250 l_work_class_rec.created_by_module := NULL;
3251 HZ_PERSON_INFO_V2PUB.update_work_class(
3252 p_work_class_rec => l_work_class_rec,
3253 p_object_version_number => l_ovn,
3254 x_return_status => x_return_status,
3255 x_msg_count => x_msg_count,
3256 x_msg_data => x_msg_data
3257 );
3258
3259 -- assign work_class_id
3260 p_employ_hist_obj(i).work_class_objs(j).work_class_id := l_work_class_rec.work_class_id;
3261 END IF;
3262 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3263 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3264 hz_utility_v2pub.debug(p_message=>'Save Work Class - Error occurred at hz_person_bo_pub.save_person_info, employ_hist_id: '||l_dummy_id||' '||' ovn:'||l_ovn,
3265 p_prefix=>l_debug_prefix,
3266 p_msg_level=>fnd_log.level_procedure);
3267 END IF;
3268 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3269 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_WORK_CLASS');
3270 FND_MSG_PUB.ADD;
3271 RAISE FND_API.G_EXC_ERROR;
3272 END IF;
3273 END LOOP;
3274 END IF;
3275 END IF;
3276 END LOOP;
3277 END IF;
3278
3279 -------------------------
3280 -- Create/Update interest
3281 -------------------------
3282 IF(p_interest_obj IS NOT NULL) THEN
3283 FOR i IN 1..p_interest_obj.COUNT LOOP
3284 assign_interest_rec(
3285 p_person_interest_obj => p_interest_obj(i),
3286 p_party_id => p_person_id,
3287 px_person_interest_rec => l_interest_rec
3288 );
3289
3290 hz_registry_validate_bo_pvt.check_interest_op(
3291 p_party_id => p_person_id,
3292 px_interest_id => l_interest_rec.person_interest_id,
3293 p_interest_type_code => l_interest_rec.interest_type_code,
3294 p_sub_interest_type_code => l_interest_rec.sub_interest_type_code,
3295 p_interest_name => l_interest_rec.interest_name,
3296 x_object_version_number => l_ovn
3297 );
3298
3299 IF(l_ovn = -1) THEN
3300 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3301 hz_utility_v2pub.debug(p_message=>'Save Person Interest - Error occurred at hz_person_bo_pub.check_interest_op, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3302 p_prefix=>l_debug_prefix,
3303 p_msg_level=>fnd_log.level_procedure);
3304 END IF;
3305 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
3306 FND_MSG_PUB.ADD;
3307 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3308 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_INTEREST');
3309 FND_MSG_PUB.ADD;
3310 RAISE FND_API.G_EXC_ERROR;
3311 END IF;
3312
3313 IF(l_ovn IS NULL) THEN
3314 HZ_PERSON_INFO_V2PUB.create_person_interest(
3315 p_person_interest_rec => l_interest_rec,
3316 x_person_interest_id => l_dummy_id,
3317 x_return_status => x_return_status,
3318 x_msg_count => x_msg_count,
3319 x_msg_data => x_msg_data
3320 );
3321
3322 -- assign person_interest_id
3323 p_interest_obj(i).person_interest_id := l_dummy_id;
3324 ELSE
3325 -- clean up created_by_module for update
3326 l_interest_rec.created_by_module := NULL;
3327 HZ_PERSON_INFO_V2PUB.update_person_interest(
3328 p_person_interest_rec => l_interest_rec,
3329 p_object_version_number => l_ovn,
3330 x_return_status => x_return_status,
3331 x_msg_count => x_msg_count,
3332 x_msg_data => x_msg_data
3333 );
3334
3335 -- assign person_interest_id
3336 p_interest_obj(i).person_interest_id := l_interest_rec.person_interest_id;
3337 END IF;
3338 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3339 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3340 hz_utility_v2pub.debug(p_message=>'Save Person Interest - Error occurred at hz_person_bo_pub.save_person_info, person id: '||p_person_id||' '||' ovn:'||l_ovn,
3341 p_prefix=>l_debug_prefix,
3342 p_msg_level=>fnd_log.level_procedure);
3343 END IF;
3344 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
3345 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_INTEREST');
3346 FND_MSG_PUB.ADD;
3347 RAISE FND_API.G_EXC_ERROR;
3348 END IF;
3349 END LOOP;
3350 END IF;
3351
3352 -- Debug info.
3353 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3354 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3355 p_msg_data=>x_msg_data,
3356 p_msg_type=>'WARNING',
3357 p_msg_level=>fnd_log.level_exception);
3358 END IF;
3359 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3360 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
3361 p_prefix=>l_debug_prefix,
3362 p_msg_level=>fnd_log.level_procedure);
3363 END IF;
3364 EXCEPTION
3365 WHEN fnd_api.g_exc_error THEN
3366 ROLLBACK TO save_person_info_pub;
3367 x_return_status := fnd_api.g_ret_sts_error;
3368
3369 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3370 p_count => x_msg_count,
3371 p_data => x_msg_data);
3372
3373 -- Debug info.
3374 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3375 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3376 p_msg_data=>x_msg_data,
3377 p_msg_type=>'ERROR',
3378 p_msg_level=>fnd_log.level_error);
3379 END IF;
3380 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3381 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
3382 p_prefix=>l_debug_prefix,
3383 p_msg_level=>fnd_log.level_procedure);
3384 END IF;
3385 WHEN fnd_api.g_exc_unexpected_error THEN
3386 ROLLBACK TO save_person_info_pub;
3387 x_return_status := fnd_api.g_ret_sts_unexp_error;
3388
3389 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3390 p_count => x_msg_count,
3391 p_data => x_msg_data);
3392
3393 -- Debug info.
3394 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3395 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3396 p_msg_data=>x_msg_data,
3397 p_msg_type=>'UNEXPECTED ERROR',
3398 p_msg_level=>fnd_log.level_error);
3399 END IF;
3400 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3401 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
3402 p_prefix=>l_debug_prefix,
3403 p_msg_level=>fnd_log.level_procedure);
3404 END IF;
3405
3406 WHEN OTHERS THEN
3407 ROLLBACK TO save_person_info_pub;
3408 x_return_status := fnd_api.g_ret_sts_unexp_error;
3409
3410 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3411 fnd_message.set_token('ERROR' ,SQLERRM);
3412 fnd_msg_pub.add;
3413
3414 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3415 p_count => x_msg_count,
3416 p_data => x_msg_data);
3417
3418 -- Debug info.
3419 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3420 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3421 p_msg_data=>x_msg_data,
3422 p_msg_type=>'SQL ERROR',
3423 p_msg_level=>fnd_log.level_error);
3424 END IF;
3425 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3426 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
3427 p_prefix=>l_debug_prefix,
3428 p_msg_level=>fnd_log.level_procedure);
3429 END IF;
3430 END save_person_info;
3431
3432 --------------------------------------
3433 --
3434 -- PROCEDURE get_person_bo
3435 --
3436 -- DESCRIPTION
3437 -- Get a logical person.
3438 --
3439 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3440 --
3441 -- ARGUMENTS
3442 -- IN:
3443 -- p_init_msg_list Initialize message stack if it is set to FND_API.G_TRUE. Default is FND_API.G_FALSE.
3444 -- p_person_id Person ID.
3445 -- p_person_os Person orig system.
3446 -- p_person_osr Person orig system reference.
3447 -- OUT:
3448 -- x_person_obj Logical person record.
3449 -- x_return_status Return status after the call. The status can
3450 -- be fnd_api.g_ret_sts_success (success),
3451 -- fnd_api.g_ret_sts_error (error),
3452 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3453 -- x_msg_count Number of messages in message stack.
3454 -- x_msg_data Message text if x_msg_count is 1.
3455 --
3456 -- NOTES
3457 --
3458 -- MODIFICATION HISTORY
3459 --
3460 --
3461 -- 10-JUN-2005 AWU Created.
3462 --
3463
3464 /*
3465 The Get Person API Procedure is a retrieval service that returns a full Person business object.
3466 The user identifies a particular Person business object using the TCA identifier and/or
3467 the object Source System information. Upon proper validation of the object,
3468 the full Person business object is returned. The object consists of all data included within
3469 the Person business object, at all embedded levels. This includes the set of all data stored
3470 in the TCA tables for each embedded entity.
3471
3472 To retrieve the appropriate embedded business objects within the Person business object,
3473 the Get procedure calls the equivalent procedure for the following embedded objects:
3474
3475 Embedded BO Mandatory Multiple Logical API Procedure Comments
3476 Party Site N Y get_party_site_bo
3477 Phone N Y get_phone_bo
3478 Email N Y get_email_bo
3479 Web N Y get_web_bo
3480 SMS N Y get_sms_bo
3481 Employment History N Y Business Structure. Included entities:HZ_EMPLOYMENT_HISTORY, HZ_WORK_CLASS
3482
3483
3484 To retrieve the appropriate embedded entities within the Person business object,
3485 the Get procedure returns all records for the particular person from these TCA entity tables:
3486
3487 Embedded TCA Entity Mandatory Multiple TCA Table Entities
3488
3489 Party,Person Profile Y N HZ_PARTIES, HZ_PERSON_PROFILES
3490 Person Preference N Y HZ_PARTY_PREFERENCES
3491 Relationship N Y HZ_RELATIONSHIPS
3492 Classification N Y HZ_CODE_ASSIGNMENTS
3493 Language N Y HZ_PERSON_LANGUAGE
3494 Education N Y HZ_EDUCATION
3495 Citizenship N Y HZ_CITIZENSHIP
3496 Interest N Y HZ_PERSON_INTEREST
3497 Certification N Y HZ_CERTIFICATIONS
3498 Financial Profile N Y HZ_FINANCIAL_PROFILE
3499 */
3500
3501 PROCEDURE get_person_bo (
3502 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3503 p_person_id IN NUMBER,
3504 p_person_os IN VARCHAR2,
3505 p_person_osr IN VARCHAR2,
3506 x_person_obj OUT NOCOPY HZ_PERSON_BO,
3507 x_return_status OUT NOCOPY VARCHAR2,
3508 x_msg_count OUT NOCOPY NUMBER,
3509 x_msg_data OUT NOCOPY VARCHAR2
3510 ) is
3511 l_debug_prefix VARCHAR2(30) := '';
3512
3513 l_person_id number;
3514 l_person_os varchar2(30);
3515 l_person_osr varchar2(255);
3516 BEGIN
3517
3518 -- initialize API return status to success.
3519 x_return_status := FND_API.G_RET_STS_SUCCESS;
3520
3521 -- Initialize message list if p_init_msg_list is set to TRUE
3522 IF FND_API.to_Boolean(p_init_msg_list) THEN
3523 FND_MSG_PUB.initialize;
3524 END IF;
3525
3526
3527 -- Debug info.
3528 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3529 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo(+)',
3530 p_prefix=>l_debug_prefix,
3531 p_msg_level=>fnd_log.level_procedure);
3532 END IF;
3533
3534 -- check if pass in contact_point_id and/or os+osr
3535 -- extraction validation logic is same as update
3536
3537 l_person_id := p_person_id;
3538 l_person_os := p_person_os;
3539 l_person_osr := p_person_osr;
3540
3541 HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
3542 px_id => l_person_id,
3543 px_os => l_person_os,
3544 px_osr => l_person_osr,
3545 p_obj_type => 'PERSON',
3546 x_return_status => x_return_status,
3547 x_msg_count => x_msg_count,
3548 x_msg_data => x_msg_data);
3549
3550 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3551 RAISE fnd_api.g_exc_error;
3552 END IF;
3553
3554 HZ_EXTRACT_PERSON_BO_PVT.get_person_bo(
3555 p_init_msg_list => fnd_api.g_false,
3556 p_person_id => l_person_id,
3557 p_action_type => NULL,
3558 x_person_obj => x_person_obj,
3559 x_return_status => x_return_status,
3560 x_msg_count => x_msg_count,
3561 x_msg_data => x_msg_data);
3562
3563 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3564 RAISE FND_API.G_EXC_ERROR;
3565 END IF;
3566
3567
3568 -- Debug info.
3569 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3570 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3571 p_msg_data=>x_msg_data,
3572 p_msg_type=>'WARNING',
3573 p_msg_level=>fnd_log.level_exception);
3574 END IF;
3575
3576 -- Debug info.
3577 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3578 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3579 p_prefix=>l_debug_prefix,
3580 p_msg_level=>fnd_log.level_procedure);
3581 END IF;
3582
3583
3584 EXCEPTION
3585
3586 WHEN fnd_api.g_exc_error THEN
3587 x_return_status := fnd_api.g_ret_sts_error;
3588
3589 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3590 p_count => x_msg_count,
3591 p_data => x_msg_data);
3592
3593 -- Debug info.
3594 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3595 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3596 p_msg_data=>x_msg_data,
3597 p_msg_type=>'ERROR',
3598 p_msg_level=>fnd_log.level_error);
3599 END IF;
3600 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3601 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3602 p_prefix=>l_debug_prefix,
3603 p_msg_level=>fnd_log.level_procedure);
3604 END IF;
3605 WHEN fnd_api.g_exc_unexpected_error THEN
3606 x_return_status := fnd_api.g_ret_sts_unexp_error;
3607
3608 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3609 p_count => x_msg_count,
3610 p_data => x_msg_data);
3611
3612 -- Debug info.
3613 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3614 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3615 p_msg_data=>x_msg_data,
3616 p_msg_type=>'UNEXPECTED ERROR',
3617 p_msg_level=>fnd_log.level_error);
3618 END IF;
3619 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3620 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3621 p_prefix=>l_debug_prefix,
3622 p_msg_level=>fnd_log.level_procedure);
3623 END IF;
3624 WHEN OTHERS THEN
3625 x_return_status := fnd_api.g_ret_sts_unexp_error;
3626
3627 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3628 fnd_message.set_token('ERROR' ,SQLERRM);
3629 fnd_msg_pub.add;
3630
3631 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3632 p_count => x_msg_count,
3633 p_data => x_msg_data);
3634
3635 -- Debug info.
3636 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3637 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3638 p_msg_data=>x_msg_data,
3639 p_msg_type=>'SQL ERROR',
3640 p_msg_level=>fnd_log.level_error);
3641 END IF;
3642 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3643 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3644 p_prefix=>l_debug_prefix,
3645 p_msg_level=>fnd_log.level_procedure);
3646 END IF;
3647
3648 end;
3649
3650 PROCEDURE get_person_bo (
3651 p_person_id IN NUMBER,
3652 p_person_os IN VARCHAR2,
3653 p_person_osr IN VARCHAR2,
3654 x_person_obj OUT NOCOPY HZ_PERSON_BO,
3655 x_return_status OUT NOCOPY VARCHAR2,
3656 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
3657 ) is
3658 l_msg_count NUMBER;
3659 l_msg_data VARCHAR2(2000);
3660 BEGIN
3661 get_person_bo(
3662 p_init_msg_list => FND_API.G_TRUE,
3663 p_person_id => p_person_id,
3664 p_person_os => p_person_os,
3665 p_person_osr => p_person_osr,
3666 x_person_obj => x_person_obj,
3667 x_return_status => x_return_status,
3668 x_msg_count => l_msg_count,
3669 x_msg_data => l_msg_data
3670 );
3671 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3672 x_return_status => x_return_status,
3673 x_msg_count => l_msg_count,
3674 x_msg_data => l_msg_data);
3675 END get_person_bo;
3676
3677 --------------------------------------
3678 --
3679 -- PROCEDURE get_persons_created
3680 --
3681 -- DESCRIPTION
3682 --The caller provides an identifier for the Persons created business event and
3683 --the procedure returns database objects of the type HZ_PERSON_BO for all of
3684 --the Person business objects from the business event.
3685
3686 --
3687 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3688 --
3689 -- ARGUMENTS
3690 -- IN:
3691 -- p_init_msg_list Initialize message stack if it is set to
3692 -- p_event_id BES Event identifier.
3693 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
3694 -- OUT:
3695 -- x_person_obj One or more created logical person.
3696 -- x_return_status Return status after the call. The status can
3697 -- be fnd_api.g_ret_sts_success (success),
3698 -- fnd_api.g_ret_sts_error (error),
3699 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3700 -- x_msg_count Number of messages in message stack.
3701 -- x_msg_data Message text if x_msg_count is 1.
3702 --
3703 -- NOTES
3704 --
3705 -- MODIFICATION HISTORY
3706 --
3707 -- 10-JUN-2005 AWU Created.
3708 --
3709
3710
3711
3712 /*
3713 The Get Persons Created procedure is a service to retrieve all of the Person business objects
3714 whose creations have been captured by a logical business event. Each Persons Created
3715 business event signifies that one or more Person business objects have been created.
3716 The caller provides an identifier for the Persons Created business event and the procedure
3717 returns all of the Person business objects from the business event. For each business object
3718 creation captured in the business event, the procedure calls the generic Get operation:
3719 HZ_PERSON_BO_PVT.get_person_bo
3720
3721 Gathering all of the returned business objects from those API calls, the procedure packages
3722 them in a table structure and returns them to the caller.
3723 */
3724
3725
3726 PROCEDURE get_persons_created(
3727 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3728 p_event_id IN NUMBER,
3729 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
3730 x_return_status OUT NOCOPY VARCHAR2,
3731 x_msg_count OUT NOCOPY NUMBER,
3732 x_msg_data OUT NOCOPY VARCHAR2
3733 ) is
3734 l_debug_prefix VARCHAR2(30) := '';
3735 begin
3736
3737 -- initialize API return status to success.
3738 x_return_status := FND_API.G_RET_STS_SUCCESS;
3739
3740 -- Initialize message list if p_init_msg_list is set to TRUE
3741 IF FND_API.to_Boolean(p_init_msg_list) THEN
3742 FND_MSG_PUB.initialize;
3743 END IF;
3744
3745
3746 -- Debug info.
3747 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3748 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created(+)',
3749 p_prefix=>l_debug_prefix,
3750 p_msg_level=>fnd_log.level_procedure);
3751 END IF;
3752
3753
3754 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3755 p_party_id => null,
3756 p_event_type => 'C',
3757 p_bo_code => 'PERSON',
3758 x_return_status => x_return_status);
3759
3760 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3761 RAISE FND_API.G_EXC_ERROR;
3762 END IF;
3763
3764 HZ_EXTRACT_PERSON_BO_PVT.get_persons_created(
3765 p_init_msg_list => fnd_api.g_false,
3766 p_event_id => p_event_id,
3767 x_person_objs => x_person_objs,
3768 x_return_status => x_return_status,
3769 x_msg_count => x_msg_count,
3770 x_msg_data => x_msg_data);
3771
3772 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3773 RAISE FND_API.G_EXC_ERROR;
3774 END IF;
3775
3776
3777
3778 -- Debug info.
3779 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3780 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3781 p_msg_data=>x_msg_data,
3782 p_msg_type=>'WARNING',
3783 p_msg_level=>fnd_log.level_exception);
3784 END IF;
3785
3786 -- Debug info.
3787 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3788 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created (-)',
3789 p_prefix=>l_debug_prefix,
3790 p_msg_level=>fnd_log.level_procedure);
3791 END IF;
3792
3793
3794 EXCEPTION
3795
3796 WHEN fnd_api.g_exc_error THEN
3797 x_return_status := fnd_api.g_ret_sts_error;
3798
3799 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3800 p_count => x_msg_count,
3801 p_data => x_msg_data);
3802
3803 -- Debug info.
3804 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3805 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3806 p_msg_data=>x_msg_data,
3807 p_msg_type=>'ERROR',
3808 p_msg_level=>fnd_log.level_error);
3809 END IF;
3810 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3811 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created(-)',
3812 p_prefix=>l_debug_prefix,
3813 p_msg_level=>fnd_log.level_procedure);
3814 END IF;
3815 WHEN fnd_api.g_exc_unexpected_error THEN
3816 x_return_status := fnd_api.g_ret_sts_unexp_error;
3817
3818 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3819 p_count => x_msg_count,
3820 p_data => x_msg_data);
3821
3822 -- Debug info.
3823 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3824 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3825 p_msg_data=>x_msg_data,
3826 p_msg_type=>'UNEXPECTED ERROR',
3827 p_msg_level=>fnd_log.level_error);
3828 END IF;
3829 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3830 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created(-)',
3831 p_prefix=>l_debug_prefix,
3832 p_msg_level=>fnd_log.level_procedure);
3833 END IF;
3834 WHEN OTHERS THEN
3835 x_return_status := fnd_api.g_ret_sts_unexp_error;
3836
3837 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3838 fnd_message.set_token('ERROR' ,SQLERRM);
3839 fnd_msg_pub.add;
3840
3841 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3842 p_count => x_msg_count,
3843 p_data => x_msg_data);
3844
3845 -- Debug info.
3846 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3847 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3848 p_msg_data=>x_msg_data,
3849 p_msg_type=>'SQL ERROR',
3850 p_msg_level=>fnd_log.level_error);
3851 END IF;
3852 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3853 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created(-)',
3854 p_prefix=>l_debug_prefix,
3855 p_msg_level=>fnd_log.level_procedure);
3856 END IF;
3857
3858 end;
3859
3860 PROCEDURE get_persons_created(
3861 p_event_id IN NUMBER,
3862 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
3863 x_return_status OUT NOCOPY VARCHAR2,
3864 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
3865 ) IS
3866 l_msg_count NUMBER;
3867 l_msg_data VARCHAR2(2000);
3868 BEGIN
3869 get_persons_created(
3870 p_init_msg_list => FND_API.G_TRUE,
3871 p_event_id => p_event_id,
3872 x_person_objs => x_person_objs,
3873 x_return_status => x_return_status,
3874 x_msg_count => l_msg_count,
3875 x_msg_data => l_msg_data
3876 );
3877 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3878 x_return_status => x_return_status,
3879 x_msg_count => l_msg_count,
3880 x_msg_data => l_msg_data);
3881 END get_persons_created;
3882
3883 --------------------------------------
3884 --
3885 -- PROCEDURE get_persons_updated
3886 --
3887 -- DESCRIPTION
3888 --The caller provides an identifier for the Persons update business event and
3889 --the procedure returns database objects of the type HZ_PERSON_BO for all of
3890 --the Person business objects from the business event.
3891
3892 --
3893 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3894 --
3895 -- ARGUMENTS
3896 -- IN:
3897 -- p_init_msg_list Initialize message stack if it is set to
3898 -- p_event_id BES Event identifier.
3899 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
3900 -- OUT:
3901 -- x_person_objs One or more created logical person.
3902 -- x_return_status Return status after the call. The status can
3903 -- be fnd_api.g_ret_sts_success (success),
3904 -- fnd_api.g_ret_sts_error (error),
3905 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3906 -- x_msg_count Number of messages in message stack.
3907 -- x_msg_data Message text if x_msg_count is 1.
3908 --
3909 -- NOTES
3910 --
3911 -- MODIFICATION HISTORY
3912 --
3913 -- 10-JUN-2005 AWU Created.
3914 --
3915
3916
3917
3918 /*
3919 The Get Persons Updated procedure is a service to retrieve all of the Person business objects whose updates have been
3920 captured by the logical business event. Each Persons Updated business event signifies that one or more Person business
3921 objects have been updated.
3922 The caller provides an identifier for the Persons Update business event and the procedure returns database objects of the
3923 type HZ_PERSON_BO for all of the Person business objects from the business event.
3924 Gathering all of the returned database objects from those API calls, the procedure packages them in a table structure and
3925 returns them to the caller.
3926 */
3927
3928 PROCEDURE get_persons_updated(
3929 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3930 p_event_id IN NUMBER,
3931 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
3932 x_return_status OUT NOCOPY VARCHAR2,
3933 x_msg_count OUT NOCOPY NUMBER,
3934 x_msg_data OUT NOCOPY VARCHAR2
3935 ) is
3936
3937 l_debug_prefix VARCHAR2(30) := '';
3938 begin
3939
3940 -- initialize API return status to success.
3941 x_return_status := FND_API.G_RET_STS_SUCCESS;
3942
3943 -- Initialize message list if p_init_msg_list is set to TRUE
3944 IF FND_API.to_Boolean(p_init_msg_list) THEN
3945 FND_MSG_PUB.initialize;
3946 END IF;
3947
3948
3949 -- Debug info.
3950 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3951 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(+)',
3952 p_prefix=>l_debug_prefix,
3953 p_msg_level=>fnd_log.level_procedure);
3954 END IF;
3955
3956 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3957 p_party_id => null,
3958 p_event_type => 'U',
3959 p_bo_code => 'PERSON',
3960 x_return_status => x_return_status);
3961
3962 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3963 RAISE FND_API.G_EXC_ERROR;
3964 END IF;
3965
3966 HZ_EXTRACT_PERSON_BO_PVT.get_persons_updated(
3967 p_init_msg_list => fnd_api.g_false,
3968 p_event_id => p_event_id,
3969 x_person_objs => x_person_objs,
3970 x_return_status => x_return_status,
3971 x_msg_count => x_msg_count,
3972 x_msg_data => x_msg_data);
3973
3974 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3975 RAISE FND_API.G_EXC_ERROR;
3976 END IF;
3977
3978
3979
3980 -- Debug info.
3981 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3982 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3983 p_msg_data=>x_msg_data,
3984 p_msg_type=>'WARNING',
3985 p_msg_level=>fnd_log.level_exception);
3986 END IF;
3987
3988 -- Debug info.
3989 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3990 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated (-)',
3991 p_prefix=>l_debug_prefix,
3992 p_msg_level=>fnd_log.level_procedure);
3993 END IF;
3994
3995
3996 EXCEPTION
3997
3998 WHEN fnd_api.g_exc_error THEN
3999 x_return_status := fnd_api.g_ret_sts_error;
4000
4001 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4002 p_count => x_msg_count,
4003 p_data => x_msg_data);
4004
4005 -- Debug info.
4006 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4007 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4008 p_msg_data=>x_msg_data,
4009 p_msg_type=>'ERROR',
4010 p_msg_level=>fnd_log.level_error);
4011 END IF;
4012 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4013 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(-)',
4014 p_prefix=>l_debug_prefix,
4015 p_msg_level=>fnd_log.level_procedure);
4016 END IF;
4017 WHEN fnd_api.g_exc_unexpected_error THEN
4018 x_return_status := fnd_api.g_ret_sts_unexp_error;
4019
4020 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4021 p_count => x_msg_count,
4022 p_data => x_msg_data);
4023
4024 -- Debug info.
4025 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4026 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4027 p_msg_data=>x_msg_data,
4028 p_msg_type=>'UNEXPECTED ERROR',
4029 p_msg_level=>fnd_log.level_error);
4030 END IF;
4031 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4032 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(-)',
4033 p_prefix=>l_debug_prefix,
4034 p_msg_level=>fnd_log.level_procedure);
4035 END IF;
4036 WHEN OTHERS THEN
4037 x_return_status := fnd_api.g_ret_sts_unexp_error;
4038
4039 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4040 fnd_message.set_token('ERROR' ,SQLERRM);
4041 fnd_msg_pub.add;
4042
4043 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4044 p_count => x_msg_count,
4045 p_data => x_msg_data);
4046
4047 -- Debug info.
4048 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4049 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4050 p_msg_data=>x_msg_data,
4051 p_msg_type=>'SQL ERROR',
4052 p_msg_level=>fnd_log.level_error);
4053 END IF;
4054 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4055 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(-)',
4056 p_prefix=>l_debug_prefix,
4057 p_msg_level=>fnd_log.level_procedure);
4058 END IF;
4059
4060 end;
4061
4062 PROCEDURE get_persons_updated(
4063 p_event_id IN NUMBER,
4064 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
4065 x_return_status OUT NOCOPY VARCHAR2,
4066 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
4067 ) IS
4068 l_msg_count NUMBER;
4069 l_msg_data VARCHAR2(2000);
4070 BEGIN
4071 get_persons_updated(
4072 p_init_msg_list => FND_API.G_TRUE,
4073 p_event_id => p_event_id,
4074 x_person_objs => x_person_objs,
4075 x_return_status => x_return_status,
4076 x_msg_count => l_msg_count,
4077 x_msg_data => l_msg_data
4078 );
4079 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
4080 x_return_status => x_return_status,
4081 x_msg_count => l_msg_count,
4082 x_msg_data => l_msg_data);
4083 END get_persons_updated;
4084
4085 --------------------------------------
4086 --
4087 -- PROCEDURE get_person_updated
4088 --
4089 -- DESCRIPTION
4090 --The caller provides an identifier for the Persons update business event and person_id
4091 --the procedure returns one database object of the type HZ_PERSON_BO
4092
4093 --
4094 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4095 --
4096 -- ARGUMENTS
4097 -- IN:
4098 -- p_init_msg_list Initialize message stack if it is set to
4099 -- p_event_id BES Event identifier.
4100 -- p_person_id Person identifier.
4101 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
4102 -- OUT:
4103 -- x_person_objs One or more created logical person.
4104 -- x_return_status Return status after the call. The status can
4105 -- be fnd_api.g_ret_sts_success (success),
4106 -- fnd_api.g_ret_sts_error (error),
4107 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4108 -- x_msg_count Number of messages in message stack.
4109 -- x_msg_data Message text if x_msg_count is 1.
4110 --
4111 -- NOTES
4112 --
4113 -- MODIFICATION HISTORY
4114 --
4115 -- 10-JUN-2005 AWU Created.
4116 --
4117
4118
4119
4120 -- Get only one person object based on p_person_id and event_id
4121
4122 PROCEDURE get_person_updated(
4123 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
4124 p_event_id IN NUMBER,
4125 p_person_id IN NUMBER,
4126 x_person_obj OUT NOCOPY HZ_PERSON_BO,
4127 x_return_status OUT NOCOPY VARCHAR2,
4128 x_msg_count OUT NOCOPY NUMBER,
4129 x_msg_data OUT NOCOPY VARCHAR2
4130 ) is
4131 l_debug_prefix VARCHAR2(30) := '';
4132 begin
4133
4134 -- initialize API return status to success.
4135 x_return_status := FND_API.G_RET_STS_SUCCESS;
4136
4137 -- Initialize message list if p_init_msg_list is set to TRUE
4138 IF FND_API.to_Boolean(p_init_msg_list) THEN
4139 FND_MSG_PUB.initialize;
4140 END IF;
4141
4142
4143 -- Debug info.
4144 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4145 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(+)',
4146 p_prefix=>l_debug_prefix,
4147 p_msg_level=>fnd_log.level_procedure);
4148 END IF;
4149
4150 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
4151 p_party_id => p_person_id,
4152 p_event_type => 'U',
4153 p_bo_code => 'PERSON',
4154 x_return_status => x_return_status);
4155
4156 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4157 RAISE FND_API.G_EXC_ERROR;
4158 END IF;
4159
4160
4161 HZ_EXTRACT_PERSON_BO_PVT.get_person_updated(
4162 p_init_msg_list => fnd_api.g_false,
4163 p_event_id => p_event_id,
4164 p_person_id => p_person_id,
4165 x_person_obj => x_person_obj,
4166 x_return_status => x_return_status,
4167 x_msg_count => x_msg_count,
4168 x_msg_data => x_msg_data);
4169
4170 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4171 RAISE FND_API.G_EXC_ERROR;
4172 END IF;
4173
4174
4175
4176 -- Debug info.
4177 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4178 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4179 p_msg_data=>x_msg_data,
4180 p_msg_type=>'WARNING',
4181 p_msg_level=>fnd_log.level_exception);
4182 END IF;
4183
4184 -- Debug info.
4185 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4186 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated (-)',
4187 p_prefix=>l_debug_prefix,
4188 p_msg_level=>fnd_log.level_procedure);
4189 END IF;
4190
4191
4192 EXCEPTION
4193
4194 WHEN fnd_api.g_exc_error THEN
4195 x_return_status := fnd_api.g_ret_sts_error;
4196
4197 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4198 p_count => x_msg_count,
4199 p_data => x_msg_data);
4200
4201 -- Debug info.
4202 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4203 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4204 p_msg_data=>x_msg_data,
4205 p_msg_type=>'ERROR',
4206 p_msg_level=>fnd_log.level_error);
4207 END IF;
4208 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4209 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(-)',
4210 p_prefix=>l_debug_prefix,
4211 p_msg_level=>fnd_log.level_procedure);
4212 END IF;
4213 WHEN fnd_api.g_exc_unexpected_error THEN
4214 x_return_status := fnd_api.g_ret_sts_unexp_error;
4215
4216 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4217 p_count => x_msg_count,
4218 p_data => x_msg_data);
4219
4220 -- Debug info.
4221 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4222 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4223 p_msg_data=>x_msg_data,
4224 p_msg_type=>'UNEXPECTED ERROR',
4225 p_msg_level=>fnd_log.level_error);
4226 END IF;
4227 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4228 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(-)',
4229 p_prefix=>l_debug_prefix,
4230 p_msg_level=>fnd_log.level_procedure);
4231 END IF;
4232 WHEN OTHERS THEN
4233 x_return_status := fnd_api.g_ret_sts_unexp_error;
4234
4235 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4236 fnd_message.set_token('ERROR' ,SQLERRM);
4237 fnd_msg_pub.add;
4238
4239 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4240 p_count => x_msg_count,
4241 p_data => x_msg_data);
4242
4243 -- Debug info.
4244 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4245 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4246 p_msg_data=>x_msg_data,
4247 p_msg_type=>'SQL ERROR',
4248 p_msg_level=>fnd_log.level_error);
4249 END IF;
4250 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4251 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(-)',
4252 p_prefix=>l_debug_prefix,
4253 p_msg_level=>fnd_log.level_procedure);
4254 END IF;
4255
4256 end;
4257
4258 PROCEDURE get_person_updated(
4259 p_event_id IN NUMBER,
4260 p_person_id IN NUMBER,
4261 x_person_obj OUT NOCOPY HZ_PERSON_BO,
4262 x_return_status OUT NOCOPY VARCHAR2,
4263 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
4264 ) IS
4265 l_msg_count NUMBER;
4266 l_msg_data VARCHAR2(2000);
4267 BEGIN
4268 get_person_updated(
4269 p_init_msg_list => FND_API.G_TRUE,
4270 p_event_id => p_event_id,
4271 p_person_id => p_person_id,
4272 x_person_obj => x_person_obj,
4273 x_return_status => x_return_status,
4274 x_msg_count => l_msg_count,
4275 x_msg_data => l_msg_data
4276 );
4277 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
4278 x_return_status => x_return_status,
4279 x_msg_count => l_msg_count,
4280 x_msg_data => l_msg_data);
4281 END get_person_updated;
4282
4283 -- get TCA identifiers for create event
4284 PROCEDURE get_ids_persons_created (
4285 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
4286 p_event_id IN NUMBER,
4287 x_person_ids OUT NOCOPY HZ_EXTRACT_BO_UTIL_PVT.BO_ID_TBL,
4288 x_return_status OUT NOCOPY VARCHAR2,
4289 x_msg_count OUT NOCOPY NUMBER,
4290 x_msg_data OUT NOCOPY VARCHAR2
4291
4292 ) is
4293 l_debug_prefix VARCHAR2(30) := '';
4294
4295 begin
4296 -- initialize API return status to success.
4297 x_return_status := FND_API.G_RET_STS_SUCCESS;
4298
4299 -- Initialize message list if p_init_msg_list is set to TRUE
4300 IF FND_API.to_Boolean(p_init_msg_list) THEN
4301 FND_MSG_PUB.initialize;
4302 END IF;
4303
4304
4305 -- Debug info.
4306 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4307 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(+)',
4308 p_prefix=>l_debug_prefix,
4309 p_msg_level=>fnd_log.level_procedure);
4310 END IF;
4311
4312
4313 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
4314 p_party_id => null,
4315 p_event_type => 'C',
4316 p_bo_code => 'PERSON',
4317 x_return_status => x_return_status);
4318
4319 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4320 RAISE FND_API.G_EXC_ERROR;
4321 END IF;
4322
4323 HZ_EXTRACT_BO_UTIL_PVT.get_bo_root_ids(
4324 p_init_msg_list => fnd_api.g_false,
4325 p_event_id => p_event_id,
4326 x_obj_root_ids => x_person_ids,
4327 x_return_status => x_return_status,
4328 x_msg_count => x_msg_count,
4329 x_msg_data => x_msg_data);
4330
4331 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4332 RAISE FND_API.G_EXC_ERROR;
4333 END IF;
4334
4335
4336 -- Debug info.
4337 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4338 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4339 p_msg_data=>x_msg_data,
4340 p_msg_type=>'WARNING',
4341 p_msg_level=>fnd_log.level_exception);
4342 END IF;
4343
4344 -- Debug info.
4345 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4346 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created (-)',
4347 p_prefix=>l_debug_prefix,
4348 p_msg_level=>fnd_log.level_procedure);
4349 END IF;
4350
4351
4352 EXCEPTION
4353
4354 WHEN fnd_api.g_exc_error THEN
4355 x_return_status := fnd_api.g_ret_sts_error;
4356
4357 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4358 p_count => x_msg_count,
4359 p_data => x_msg_data);
4360
4361 -- Debug info.
4362 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4363 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4364 p_msg_data=>x_msg_data,
4365 p_msg_type=>'ERROR',
4366 p_msg_level=>fnd_log.level_error);
4367 END IF;
4368 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4369 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(-)',
4370 p_prefix=>l_debug_prefix,
4371 p_msg_level=>fnd_log.level_procedure);
4372 END IF;
4373 WHEN fnd_api.g_exc_unexpected_error THEN
4374 x_return_status := fnd_api.g_ret_sts_unexp_error;
4375
4376 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4377 p_count => x_msg_count,
4378 p_data => x_msg_data);
4379
4380 -- Debug info.
4381 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4382 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4383 p_msg_data=>x_msg_data,
4384 p_msg_type=>'UNEXPECTED ERROR',
4385 p_msg_level=>fnd_log.level_error);
4386 END IF;
4387 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4388 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(-)',
4389 p_prefix=>l_debug_prefix,
4390 p_msg_level=>fnd_log.level_procedure);
4391 END IF;
4392 WHEN OTHERS THEN
4393 x_return_status := fnd_api.g_ret_sts_unexp_error;
4394
4395 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4396 fnd_message.set_token('ERROR' ,SQLERRM);
4397 fnd_msg_pub.add;
4398
4399 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4400 p_count => x_msg_count,
4401 p_data => x_msg_data);
4402
4403 -- Debug info.
4404 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4405 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4406 p_msg_data=>x_msg_data,
4407 p_msg_type=>'SQL ERROR',
4408 p_msg_level=>fnd_log.level_error);
4409 END IF;
4410 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4411 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(-)',
4412 p_prefix=>l_debug_prefix,
4413 p_msg_level=>fnd_log.level_procedure);
4414 END IF;
4415
4416 end;
4417
4418
4419 -- get TCA identifiers for update event
4420 PROCEDURE get_ids_persons_updated (
4421 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
4422 p_event_id IN NUMBER,
4423 x_person_ids OUT NOCOPY HZ_EXTRACT_BO_UTIL_PVT.BO_ID_TBL,
4424 x_return_status OUT NOCOPY VARCHAR2,
4425 x_msg_count OUT NOCOPY NUMBER,
4426 x_msg_data OUT NOCOPY VARCHAR2
4427 ) is
4428 l_debug_prefix VARCHAR2(30) := '';
4429
4430 begin
4431 -- initialize API return status to success.
4432 x_return_status := FND_API.G_RET_STS_SUCCESS;
4433
4434 -- Initialize message list if p_init_msg_list is set to TRUE
4435 IF FND_API.to_Boolean(p_init_msg_list) THEN
4436 FND_MSG_PUB.initialize;
4437 END IF;
4438
4439
4440 -- Debug info.
4441 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4442 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(+)',
4443 p_prefix=>l_debug_prefix,
4444 p_msg_level=>fnd_log.level_procedure);
4445 END IF;
4446
4447 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
4448 p_party_id => null,
4449 p_event_type => 'U',
4450 p_bo_code => 'PERSON',
4451 x_return_status => x_return_status);
4452
4453 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4454 RAISE FND_API.G_EXC_ERROR;
4455 END IF;
4456
4457 HZ_EXTRACT_BO_UTIL_PVT.get_bo_root_ids(
4458 p_init_msg_list => fnd_api.g_false,
4459 p_event_id => p_event_id,
4460 x_obj_root_ids => x_person_ids,
4461 x_return_status => x_return_status,
4462 x_msg_count => x_msg_count,
4463 x_msg_data => x_msg_data);
4464
4465 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4466 RAISE FND_API.G_EXC_ERROR;
4467 END IF;
4468
4469
4470 -- Debug info.
4471 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4472 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4473 p_msg_data=>x_msg_data,
4474 p_msg_type=>'WARNING',
4475 p_msg_level=>fnd_log.level_exception);
4476 END IF;
4477
4478 -- Debug info.
4479 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4480 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated (-)',
4481 p_prefix=>l_debug_prefix,
4482 p_msg_level=>fnd_log.level_procedure);
4483 END IF;
4484
4485
4486 EXCEPTION
4487
4488 WHEN fnd_api.g_exc_error THEN
4489 x_return_status := fnd_api.g_ret_sts_error;
4490
4491 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4492 p_count => x_msg_count,
4493 p_data => x_msg_data);
4494
4495 -- Debug info.
4496 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4497 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4498 p_msg_data=>x_msg_data,
4499 p_msg_type=>'ERROR',
4500 p_msg_level=>fnd_log.level_error);
4501 END IF;
4502 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4503 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(-)',
4504 p_prefix=>l_debug_prefix,
4505 p_msg_level=>fnd_log.level_procedure);
4506 END IF;
4507 WHEN fnd_api.g_exc_unexpected_error THEN
4508 x_return_status := fnd_api.g_ret_sts_unexp_error;
4509
4510 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4511 p_count => x_msg_count,
4512 p_data => x_msg_data);
4513
4514 -- Debug info.
4515 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4516 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4517 p_msg_data=>x_msg_data,
4518 p_msg_type=>'UNEXPECTED ERROR',
4519 p_msg_level=>fnd_log.level_error);
4520 END IF;
4521 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4522 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(-)',
4523 p_prefix=>l_debug_prefix,
4524 p_msg_level=>fnd_log.level_procedure);
4525 END IF;
4526 WHEN OTHERS THEN
4527 x_return_status := fnd_api.g_ret_sts_unexp_error;
4528
4529 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4530 fnd_message.set_token('ERROR' ,SQLERRM);
4531 fnd_msg_pub.add;
4532
4533 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4534 p_count => x_msg_count,
4535 p_data => x_msg_data);
4536
4537 -- Debug info.
4538 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4539 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4540 p_msg_data=>x_msg_data,
4541 p_msg_type=>'SQL ERROR',
4542 p_msg_level=>fnd_log.level_error);
4543 END IF;
4544 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4545 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(-)',
4546 p_prefix=>l_debug_prefix,
4547 p_msg_level=>fnd_log.level_procedure);
4548 END IF;
4549
4550 end;
4551
4552 END hz_person_bo_pub;