[Home] [Help]
PACKAGE BODY: APPS.HZ_PERSON_BO_PUB
Source
1 PACKAGE BODY hz_person_bo_pub AS
2 /*$Header: ARHBPPBB.pls 120.25 2006/07/22 00:20:35 acng noship $ */
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 BEGIN
699 -- Standard start of API savepoint
700 SAVEPOINT do_create_person_bo_pub;
701
702 -- initialize API return status to success.
703 x_return_status := FND_API.G_RET_STS_SUCCESS;
704
705 -- Initialize message list if p_init_msg_list is set to TRUE.
706 IF FND_API.to_Boolean(p_init_msg_list) THEN
707 FND_MSG_PUB.initialize;
708 END IF;
709
710 -- initialize Global variable
711 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
712 IF(p_created_by_module IS NULL) THEN
713 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
714 ELSE
715 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
716 END IF;
717
718 -- Debug info.
719 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
720 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(+)',
721 p_prefix=>l_debug_prefix,
722 p_msg_level=>fnd_log.level_procedure);
723 END IF;
724
725 -- Base on p_validate_bo_flag, check the completeness of business objects
726 IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
727 HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
728 p_bus_object_code => 'PERSON',
729 x_bus_object => l_bus_object
730 );
731
732 l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_person_bo_comp(
733 p_person_obj => p_person_obj,
734 p_bus_object => l_bus_object
735 );
736 IF NOT(l_valid_obj) THEN
737 RAISE fnd_api.g_exc_error;
738 END IF;
739
740 -- find out if raise event at the end
741 l_raise_event := HZ_PARTY_BO_PVT.is_raising_create_event(
742 p_obj_complete_flag => l_valid_obj);
743
744 IF(l_raise_event) THEN
745 -- get event_id and set global variable to event_id for
746 -- BOT populate function
747 SELECT HZ_BUS_OBJ_TRACKING_S.nextval
748 INTO l_event_id
749 FROM DUAL;
750 END IF;
751 ELSE
752 l_raise_event := FALSE;
753 END IF;
754
755 x_person_id := p_person_obj.person_id;
756 x_person_os := p_person_obj.orig_system;
757 x_person_osr:= p_person_obj.orig_system_reference;
758
759 -- check input person party id and os+osr
760 hz_registry_validate_bo_pvt.validate_ssm_id(
761 px_id => x_person_id,
762 px_os => x_person_os,
763 px_osr => x_person_osr,
764 p_obj_type => 'PERSON',
765 p_create_or_update => 'C',
766 x_return_status => x_return_status,
767 x_msg_count => x_msg_count,
768 x_msg_data => x_msg_data);
769
770 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
771 RAISE FND_API.G_EXC_ERROR;
772 END IF;
773
774 ---------------------------------
775 -- Assign person and party record
776 ---------------------------------
777 assign_person_rec(
778 p_person_obj => p_person_obj,
779 p_person_id => x_person_id,
780 p_person_os => x_person_os,
781 p_person_osr => x_person_osr,
782 px_person_rec => l_person_rec
783 );
784
785 HZ_PARTY_V2PUB.create_person(
786 p_person_rec => l_person_rec,
787 x_party_id => x_person_id,
788 x_party_number => l_party_number,
789 x_profile_id => l_profile_id,
790 x_return_status => x_return_status,
791 x_msg_count => x_msg_count,
792 x_msg_data => x_msg_data
793 );
794
795 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
796 RAISE FND_API.G_EXC_ERROR;
797 END IF;
798
799 -- assign person party_id
800 p_person_obj.person_id := x_person_id;
801 p_person_obj.party_number := l_party_number;
802 --------------------------
803 -- Create Person Ext Attrs
804 --------------------------
805 IF((p_person_obj.ext_attributes_objs IS NOT NULL) AND
806 (p_person_obj.ext_attributes_objs.COUNT > 0)) THEN
807 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
808 p_ext_attr_objs => p_person_obj.ext_attributes_objs,
809 p_parent_obj_id => l_profile_id,
810 p_parent_obj_type => 'PERSON',
811 p_create_or_update => 'C',
812 x_return_status => x_return_status,
813 x_errorcode => l_errorcode,
814 x_msg_count => x_msg_count,
815 x_msg_data => x_msg_data
816 );
817
818 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
819 RAISE FND_API.G_EXC_ERROR;
820 END IF;
821 END IF;
822
823 ----------------------------
824 -- Call party info v2pub api
825 ----------------------------
826 IF(((p_person_obj.language_objs IS NOT NULL) AND (p_person_obj.language_objs.COUNT > 0)) OR
827 ((p_person_obj.education_objs IS NOT NULL) AND (p_person_obj.education_objs.COUNT > 0)) OR
828 ((p_person_obj.citizenship_objs IS NOT NULL) AND (p_person_obj.citizenship_objs.COUNT > 0)) OR
829 ((p_person_obj.employ_hist_objs IS NOT NULL) AND (p_person_obj.employ_hist_objs.COUNT > 0)) OR
830 ((p_person_obj.interest_objs IS NOT NULL) AND (p_person_obj.interest_objs.COUNT > 0))) THEN
831 create_person_info(
832 p_language_obj => p_person_obj.language_objs,
833 p_education_obj => p_person_obj.education_objs,
834 p_citizenship_obj => p_person_obj.citizenship_objs,
835 p_employ_hist_obj => p_person_obj.employ_hist_objs,
836 p_interest_obj => p_person_obj.interest_objs,
837 p_person_id => x_person_id,
838 x_return_status => x_return_status,
839 x_msg_count => x_msg_count,
840 x_msg_data => x_msg_data
841 );
842
843 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
844 RAISE FND_API.G_EXC_ERROR;
845 END IF;
846 END IF;
847
848 ----------------------------
849 -- Party Preferences
850 ----------------------------
851 IF((p_person_obj.preference_objs IS NOT NULL) AND
852 (p_person_obj.preference_objs.COUNT > 0)) THEN
853 HZ_PARTY_BO_PVT.save_party_preferences(
854 p_party_pref_objs => p_person_obj.preference_objs,
855 p_party_id => x_person_id,
856 x_return_status => x_return_status,
857 x_msg_count => x_msg_count,
858 x_msg_data => x_msg_data
859 );
860
861 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
862 RAISE FND_API.G_EXC_ERROR;
863 END IF;
864 END IF;
865
866 ----------------------------
867 -- Contact Preferences
868 ----------------------------
869 IF((p_person_obj.contact_pref_objs IS NOT NULL) AND
870 (p_person_obj.contact_pref_objs.COUNT > 0)) THEN
871 HZ_CONTACT_PREFERENCE_BO_PVT.create_contact_preferences(
872 p_cp_pref_objs => p_person_obj.contact_pref_objs,
873 p_contact_level_table_id => x_person_id,
874 p_contact_level_table => 'HZ_PARTIES',
875 x_return_status => x_return_status,
876 x_msg_count => x_msg_count,
877 x_msg_data => x_msg_data
878 );
879
880 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
881 RAISE FND_API.G_EXC_ERROR;
882 END IF;
883 END IF;
884
885 ----------------------------
886 -- Relationship api
887 ----------------------------
888 IF((p_person_obj.relationship_objs IS NOT NULL) AND
889 (p_person_obj.relationship_objs.COUNT > 0)) THEN
890 HZ_PARTY_BO_PVT.create_relationships(
891 p_rel_objs => p_person_obj.relationship_objs,
892 p_subject_id => x_person_id,
893 p_subject_type => 'PERSON',
894 x_return_status => x_return_status,
895 x_msg_count => x_msg_count,
896 x_msg_data => x_msg_data
897 );
898
899 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
900 RAISE FND_API.G_EXC_ERROR;
901 END IF;
902 END IF;
903
904 ----------------------------
905 -- Classification api
906 ----------------------------
907 IF((p_person_obj.class_objs IS NOT NULL) AND
908 (p_person_obj.class_objs.COUNT > 0)) THEN
909 HZ_PARTY_BO_PVT.create_classifications(
910 p_code_assign_objs => p_person_obj.class_objs,
911 p_owner_table_name => 'HZ_PARTIES',
912 p_owner_table_id => x_person_id,
913 x_return_status => x_return_status,
914 x_msg_count => x_msg_count,
915 x_msg_data => x_msg_data
916 );
917
918 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
919 RAISE FND_API.G_EXC_ERROR;
920 END IF;
921 END IF;
922
923 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
924
925 ----------------------------
926 -- Create logical party site
927 ----------------------------
928 IF((p_person_obj.party_site_objs IS NOT NULL) AND
929 (p_person_obj.party_site_objs.COUNT > 0)) THEN
930 HZ_PARTY_SITE_BO_PVT.save_party_sites(
931 p_ps_objs => p_person_obj.party_site_objs,
932 p_create_update_flag => 'C',
933 p_obj_source => p_obj_source,
934 x_return_status => x_return_status,
935 x_msg_count => x_msg_count,
936 x_msg_data => x_msg_data,
937 p_parent_id => x_person_id,
938 p_parent_os => x_person_os,
939 p_parent_osr => x_person_osr,
940 p_parent_obj_type => 'PERSON'
941 );
942
943 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
944 RAISE FND_API.G_EXC_ERROR;
945 END IF;
946 END IF;
947
948 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
949
950 ------------------------
951 -- Create contact points
952 ------------------------
953 IF(((p_person_obj.phone_objs IS NOT NULL) AND (p_person_obj.phone_objs.COUNT > 0)) OR
954 ((p_person_obj.email_objs IS NOT NULL) AND (p_person_obj.email_objs.COUNT > 0)) OR
955 ((p_person_obj.web_objs IS NOT NULL) AND (p_person_obj.web_objs.COUNT > 0)) OR
956 ((p_person_obj.sms_objs IS NOT NULL) AND (p_person_obj.sms_objs.COUNT > 0))) THEN
957 HZ_CONTACT_POINT_BO_PVT.save_contact_points(
958 p_phone_objs => p_person_obj.phone_objs,
959 p_telex_objs => l_telex_objs,
960 p_email_objs => p_person_obj.email_objs,
961 p_web_objs => p_person_obj.web_objs,
962 p_edi_objs => l_edi_objs,
963 p_eft_objs => l_eft_objs,
964 p_sms_objs => p_person_obj.sms_objs,
965 p_owner_table_id => x_person_id,
966 p_owner_table_os => x_person_os,
967 p_owner_table_osr => x_person_osr,
968 p_parent_obj_type => 'PERSON',
969 p_create_update_flag => 'C',
970 p_obj_source => p_obj_source,
971 x_return_status => x_return_status,
972 x_msg_count => x_msg_count,
973 x_msg_data => x_msg_data
974 );
975
976 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
977 RAISE FND_API.G_EXC_ERROR;
978 END IF;
979 END IF;
980
981 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
982
983 ----------------------------
984 -- Certifications
985 ----------------------------
986 IF((p_person_obj.certification_objs IS NOT NULL) AND
987 (p_person_obj.certification_objs.COUNT > 0)) THEN
988 HZ_PARTY_BO_PVT.create_certifications(
989 p_cert_objs => p_person_obj.certification_objs,
990 p_party_id => x_person_id,
991 x_return_status => x_return_status,
992 x_msg_count => x_msg_count,
993 x_msg_data => x_msg_data
994 );
995
996 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
997 RAISE FND_API.G_EXC_ERROR;
998 END IF;
999 END IF;
1000
1001 ----------------------------
1002 -- Financial Profiles
1003 ----------------------------
1004 IF((p_person_obj.financial_prof_objs IS NOT NULL) AND
1005 (p_person_obj.financial_prof_objs.COUNT > 0)) THEN
1006 HZ_PARTY_BO_PVT.create_financial_profiles(
1007 p_fin_prof_objs => p_person_obj.financial_prof_objs,
1008 p_party_id => x_person_id,
1009 x_return_status => x_return_status,
1010 x_msg_count => x_msg_count,
1011 x_msg_data => x_msg_data
1012 );
1013
1014 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1015 RAISE FND_API.G_EXC_ERROR;
1016 END IF;
1017 END IF;
1018
1019 ----------------------------------
1020 -- Party Usages -------
1021 ----------------------------------
1022 IF ((p_person_obj.party_usage_objs IS NOT NULL) AND
1023 (p_person_obj.party_usage_objs.COUNT > 0 )) THEN
1024 HZ_PARTY_BO_PVT.create_party_usage_assgmnt(
1025 p_party_usg_objs => p_person_obj.party_usage_objs,
1026 p_party_id => x_person_id,
1027 x_return_status => x_return_status,
1028 x_msg_count => x_msg_count,
1029 x_msg_data => x_msg_data
1030 );
1031 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1032 RAISE FND_API.G_EXC_ERROR;
1033 END IF;
1034 END IF;
1035
1036
1037 -- raise event
1038 IF(l_raise_event) THEN
1039 HZ_PARTY_BO_PVT.call_bes(
1040 p_party_id => x_person_id,
1041 p_bo_code => 'PERSON',
1042 p_create_or_update => 'C',
1043 p_obj_source => p_obj_source,
1044 p_event_id => l_event_id
1045 );
1046 END IF;
1047
1048 -- reset Global variable
1049 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1050 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1051
1052 -- Debug info.
1053 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1054 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1055 p_msg_data=>x_msg_data,
1056 p_msg_type=>'WARNING',
1057 p_msg_level=>fnd_log.level_exception);
1058 END IF;
1059 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1060 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1061 p_prefix=>l_debug_prefix,
1062 p_msg_level=>fnd_log.level_procedure);
1063 END IF;
1064
1065 EXCEPTION
1066 WHEN fnd_api.g_exc_error THEN
1067 ROLLBACK TO do_create_person_bo_pub;
1068
1069 -- reset Global variable
1070 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1071 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1072
1073 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1074 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1075 FND_MSG_PUB.ADD;
1076
1077 x_return_status := fnd_api.g_ret_sts_error;
1078
1079 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1080 p_count => x_msg_count,
1081 p_data => x_msg_data);
1082
1083 -- Debug info.
1084 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1085 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1086 p_msg_data=>x_msg_data,
1087 p_msg_type=>'ERROR',
1088 p_msg_level=>fnd_log.level_error);
1089 END IF;
1090 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1091 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1092 p_prefix=>l_debug_prefix,
1093 p_msg_level=>fnd_log.level_procedure);
1094 END IF;
1095
1096 WHEN fnd_api.g_exc_unexpected_error THEN
1097 ROLLBACK TO do_create_person_bo_pub;
1098
1099 -- reset Global variable
1100 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1101 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1102
1103 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1104 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1105 FND_MSG_PUB.ADD;
1106
1107 x_return_status := fnd_api.g_ret_sts_unexp_error;
1108
1109 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1110 p_count => x_msg_count,
1111 p_data => x_msg_data);
1112
1113 -- Debug info.
1114 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1115 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1116 p_msg_data=>x_msg_data,
1117 p_msg_type=>'UNEXPECTED ERROR',
1118 p_msg_level=>fnd_log.level_error);
1119 END IF;
1120 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1121 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1122 p_prefix=>l_debug_prefix,
1123 p_msg_level=>fnd_log.level_procedure);
1124 END IF;
1125
1126 WHEN OTHERS THEN
1127 ROLLBACK TO do_create_person_bo_pub;
1128
1129 -- reset Global variable
1130 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1131 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1132
1133 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1134 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1135 FND_MSG_PUB.ADD;
1136
1137 x_return_status := fnd_api.g_ret_sts_unexp_error;
1138
1139 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1140 fnd_message.set_token('ERROR' ,SQLERRM);
1141 fnd_msg_pub.add;
1142
1143 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1144 p_count => x_msg_count,
1145 p_data => x_msg_data);
1146
1147 -- Debug info.
1148 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1149 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1150 p_msg_data=>x_msg_data,
1151 p_msg_type=>'SQL ERROR',
1152 p_msg_level=>fnd_log.level_error);
1153 END IF;
1154 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1155 hz_utility_v2pub.debug(p_message=>'do_create_person_bo(-)',
1156 p_prefix=>l_debug_prefix,
1157 p_msg_level=>fnd_log.level_procedure);
1158 END IF;
1159 END do_create_person_bo;
1160
1161 PROCEDURE create_person_bo(
1162 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1163 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1164 p_person_obj IN HZ_PERSON_BO,
1165 p_created_by_module IN VARCHAR2,
1166 x_return_status OUT NOCOPY VARCHAR2,
1167 x_msg_count OUT NOCOPY NUMBER,
1168 x_msg_data OUT NOCOPY VARCHAR2,
1169 x_person_id OUT NOCOPY NUMBER,
1170 x_person_os OUT NOCOPY VARCHAR2,
1171 x_person_osr OUT NOCOPY VARCHAR2
1172 ) IS
1173 l_per_obj HZ_PERSON_BO;
1174 BEGIN
1175 l_per_obj := p_person_obj;
1176 do_create_person_bo(
1177 p_init_msg_list => p_init_msg_list,
1178 p_validate_bo_flag => p_validate_bo_flag,
1179 p_person_obj => l_per_obj,
1180 p_created_by_module => p_created_by_module,
1181 p_obj_source => null,
1182 x_return_status => x_return_status,
1183 x_msg_count => x_msg_count,
1184 x_msg_data => x_msg_data,
1185 x_person_id => x_person_id,
1186 x_person_os => x_person_os,
1187 x_person_osr => x_person_osr
1188 );
1189 END create_person_bo;
1190
1191 PROCEDURE create_person_bo(
1192 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1193 p_person_obj IN HZ_PERSON_BO,
1194 p_created_by_module IN VARCHAR2,
1195 p_obj_source IN VARCHAR2 := NULL,
1196 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
1197 x_return_status OUT NOCOPY VARCHAR2,
1198 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
1199 x_return_obj OUT NOCOPY HZ_PERSON_BO,
1200 x_person_id OUT NOCOPY NUMBER,
1201 x_person_os OUT NOCOPY VARCHAR2,
1202 x_person_osr OUT NOCOPY VARCHAR2
1203 ) IS
1204 l_msg_count NUMBER;
1205 l_msg_data VARCHAR2(2000);
1206 l_per_obj HZ_PERSON_BO;
1207 BEGIN
1208 l_per_obj := p_person_obj;
1209 do_create_person_bo(
1210 p_init_msg_list => FND_API.G_TRUE,
1211 p_validate_bo_flag => p_validate_bo_flag,
1212 p_person_obj => l_per_obj,
1213 p_created_by_module => p_created_by_module,
1214 p_obj_source => p_obj_source,
1215 x_return_status => x_return_status,
1216 x_msg_count => l_msg_count,
1217 x_msg_data => l_msg_data,
1218 x_person_id => x_person_id,
1219 x_person_os => x_person_os,
1220 x_person_osr => x_person_osr
1221 );
1222 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1223 x_return_status => x_return_status,
1224 x_msg_count => l_msg_count,
1225 x_msg_data => l_msg_data);
1226 IF FND_API.to_Boolean(p_return_obj_flag) THEN
1227 x_return_obj := l_per_obj;
1228 END IF;
1229 END create_person_bo;
1230
1231 -- PROCEDURE do_update_person_bo
1232 --
1233 -- DESCRIPTION
1234 -- Update a person business object.
1235 PROCEDURE do_update_person_bo(
1236 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1237 p_person_obj IN OUT NOCOPY HZ_PERSON_BO,
1238 p_created_by_module IN VARCHAR2,
1239 p_obj_source IN VARCHAR2 := NULL,
1240 x_return_status OUT NOCOPY VARCHAR2,
1241 x_msg_count OUT NOCOPY NUMBER,
1242 x_msg_data OUT NOCOPY VARCHAR2,
1243 x_person_id OUT NOCOPY NUMBER,
1244 x_person_os OUT NOCOPY VARCHAR2,
1245 x_person_osr OUT NOCOPY VARCHAR2
1246 )IS
1247 l_debug_prefix VARCHAR2(30);
1248 l_person_rec HZ_PARTY_V2PUB.PERSON_REC_TYPE;
1249 l_create_update_flag VARCHAR2(1);
1250 l_ovn NUMBER;
1251 l_dummy_id NUMBER;
1252 l_profile_id NUMBER;
1253 l_errorcode NUMBER;
1254 l_per_raise_event BOOLEAN := FALSE;
1255 l_pc_raise_event BOOLEAN := FALSE;
1256 l_cbm VARCHAR2(30);
1257 l_per_event_id NUMBER;
1258 l_pc_event_id NUMBER;
1259 l_telex_objs HZ_TELEX_CP_BO_TBL;
1260 l_edi_objs HZ_EDI_CP_BO_TBL;
1261 l_eft_objs HZ_EFT_CP_BO_TBL;
1262 l_party_number VARCHAR2(30);
1263
1264 CURSOR get_ovn(l_party_id NUMBER) IS
1265 SELECT p.object_version_number, p.party_number
1266 FROM HZ_PARTIES p
1267 WHERE p.party_id = l_party_id
1268 AND p.party_type = 'PERSON'
1269 AND p.status in ('A','I');
1270
1271 BEGIN
1272 -- Standard start of API savepoint
1273 SAVEPOINT do_update_person_bo_pub;
1274
1275 -- initialize API return status to success.
1276 x_return_status := FND_API.G_RET_STS_SUCCESS;
1277
1278 -- Initialize message list if p_init_msg_list is set to TRUE.
1279 IF FND_API.to_Boolean(p_init_msg_list) THEN
1280 FND_MSG_PUB.initialize;
1281 END IF;
1282
1283 -- initialize Global variable
1284 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
1285 IF(p_created_by_module IS NULL) THEN
1286 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
1287 ELSE
1288 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
1289 END IF;
1290
1291 -- Debug info.
1292 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1293 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(+)',
1294 p_prefix=>l_debug_prefix,
1295 p_msg_level=>fnd_log.level_procedure);
1296 END IF;
1297
1298 x_person_id := p_person_obj.person_id;
1299 x_person_os := p_person_obj.orig_system;
1300 x_person_osr:= p_person_obj.orig_system_reference;
1301
1302 -- check input party_id and os+osr
1303 hz_registry_validate_bo_pvt.validate_ssm_id(
1304 px_id => x_person_id,
1305 px_os => x_person_os,
1306 px_osr => x_person_osr,
1307 p_obj_type => 'PERSON',
1308 p_create_or_update => 'U',
1309 x_return_status => x_return_status,
1310 x_msg_count => x_msg_count,
1311 x_msg_data => x_msg_data);
1312
1313 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1314 RAISE FND_API.G_EXC_ERROR;
1315 END IF;
1316
1317 -- must check after calling validate_ssm_id because
1318 -- if user pass os+osr and no id, validate_ssm_id will
1319 -- populate x_person_id based on os+osr
1320 -- find out if raise event at the end
1321
1322 -- if this procedure is called from person cust bo, set l_raise_event to false
1323 -- otherwise, call is_raising_update_event
1324 IF(HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO IS NOT NULL) THEN
1325 l_per_raise_event := FALSE;
1326 l_pc_raise_event := FALSE;
1327 ELSE
1328 l_per_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
1329 p_party_id => x_person_id,
1330 p_bo_code => 'PERSON'
1331 );
1332
1333 l_pc_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
1334 p_party_id => x_person_id,
1335 p_bo_code => 'PERSON_CUST'
1336 );
1337
1338 IF(l_per_raise_event) THEN
1339 -- Get event_id for person
1340 SELECT HZ_BUS_OBJ_TRACKING_S.nextval
1341 INTO l_per_event_id
1342 FROM DUAL;
1343 END IF;
1344
1345 IF(l_pc_raise_event) THEN
1346 -- Get event_id for person customer
1347 SELECT HZ_BUS_OBJ_TRACKING_S.nextval
1348 INTO l_pc_event_id
1349 FROM DUAL;
1350 END IF;
1351 END IF;
1352
1353 OPEN get_ovn(x_person_id);
1354 FETCH get_ovn INTO l_ovn, l_party_number;
1355 CLOSE get_ovn;
1356
1357 --------------------
1358 -- For Update Person
1359 --------------------
1360 -- Assign person record
1361 assign_person_rec(
1362 p_person_obj => p_person_obj,
1363 p_person_id => x_person_id,
1364 p_person_os => x_person_os,
1365 p_person_osr => x_person_osr,
1366 p_create_or_update => 'U',
1367 px_person_rec => l_person_rec
1368 );
1369
1370 HZ_PARTY_V2PUB.update_person(
1371 p_person_rec => l_person_rec,
1372 p_party_object_version_number => l_ovn,
1373 x_profile_id => l_profile_id,
1374 x_return_status => x_return_status,
1375 x_msg_count => x_msg_count,
1376 x_msg_data => x_msg_data
1377 );
1378
1379 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1380 RAISE FND_API.G_EXC_ERROR;
1381 END IF;
1382
1383 -- assign person party_id
1384 p_person_obj.person_id := x_person_id;
1385 p_person_obj.party_number := l_party_number;
1386 --------------------------
1387 -- Create Person Ext Attrs
1388 --------------------------
1389 IF((p_person_obj.ext_attributes_objs IS NOT NULL) AND
1390 (p_person_obj.ext_attributes_objs.COUNT > 0)) THEN
1391 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
1392 p_ext_attr_objs => p_person_obj.ext_attributes_objs,
1393 p_parent_obj_id => l_profile_id,
1394 p_parent_obj_type => 'PERSON',
1395 p_create_or_update => 'U',
1396 x_return_status => x_return_status,
1397 x_errorcode => l_errorcode,
1398 x_msg_count => x_msg_count,
1399 x_msg_data => x_msg_data
1400 );
1401
1402 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1403 RAISE FND_API.G_EXC_ERROR;
1404 END IF;
1405 END IF;
1406
1407 ------------------
1408 -- For Person Info
1409 ------------------
1410 IF(((p_person_obj.language_objs IS NOT NULL) AND (p_person_obj.language_objs.COUNT > 0)) OR
1411 ((p_person_obj.education_objs IS NOT NULL) AND (p_person_obj.education_objs.COUNT > 0)) OR
1412 ((p_person_obj.citizenship_objs IS NOT NULL) AND (p_person_obj.citizenship_objs.COUNT > 0)) OR
1413 ((p_person_obj.employ_hist_objs IS NOT NULL) AND (p_person_obj.employ_hist_objs.COUNT > 0)) OR
1414 ((p_person_obj.interest_objs IS NOT NULL) AND (p_person_obj.interest_objs.COUNT > 0))) THEN
1415 save_person_info(
1416 p_language_obj => p_person_obj.language_objs,
1417 p_education_obj => p_person_obj.education_objs,
1418 p_citizenship_obj => p_person_obj.citizenship_objs,
1419 p_employ_hist_obj => p_person_obj.employ_hist_objs,
1420 p_interest_obj => p_person_obj.interest_objs,
1421 p_person_id => x_person_id,
1422 x_return_status => x_return_status,
1423 x_msg_count => x_msg_count,
1424 x_msg_data => x_msg_data
1425 );
1426
1427 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1428 RAISE FND_API.G_EXC_ERROR;
1429 END IF;
1430 END IF;
1431
1432 ----------------------------
1433 -- Party Preferences
1434 ----------------------------
1435 IF((p_person_obj.preference_objs IS NOT NULL) AND
1436 (p_person_obj.preference_objs.COUNT > 0)) THEN
1437 HZ_PARTY_BO_PVT.save_party_preferences(
1438 p_party_pref_objs => p_person_obj.preference_objs,
1439 p_party_id => x_person_id,
1440 x_return_status => x_return_status,
1441 x_msg_count => x_msg_count,
1442 x_msg_data => x_msg_data
1443 );
1444
1445 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1446 RAISE FND_API.G_EXC_ERROR;
1447 END IF;
1448 END IF;
1449
1450 ----------------------------
1451 -- Contact Preferences
1452 ----------------------------
1453 IF((p_person_obj.contact_pref_objs IS NOT NULL) AND
1454 (p_person_obj.contact_pref_objs.COUNT > 0)) THEN
1455 HZ_CONTACT_PREFERENCE_BO_PVT.save_contact_preferences(
1456 p_cp_pref_objs => p_person_obj.contact_pref_objs,
1457 p_contact_level_table_id => x_person_id,
1458 p_contact_level_table => 'HZ_PARTIES',
1459 x_return_status => x_return_status,
1460 x_msg_count => x_msg_count,
1461 x_msg_data => x_msg_data
1462 );
1463
1464 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1465 RAISE FND_API.G_EXC_ERROR;
1466 END IF;
1467 END IF;
1468
1469 ----------------------------
1470 -- Relationship api
1471 ----------------------------
1472 IF((p_person_obj.relationship_objs IS NOT NULL) AND
1473 (p_person_obj.relationship_objs.COUNT > 0)) THEN
1474 HZ_PARTY_BO_PVT.save_relationships(
1475 p_rel_objs => p_person_obj.relationship_objs,
1476 p_subject_id => x_person_id,
1477 p_subject_type => 'PERSON',
1478 x_return_status => x_return_status,
1479 x_msg_count => x_msg_count,
1480 x_msg_data => x_msg_data
1481 );
1482
1483 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1484 RAISE FND_API.G_EXC_ERROR;
1485 END IF;
1486 END IF;
1487
1488 ----------------------------
1489 -- Classification api
1490 ----------------------------
1491 IF((p_person_obj.class_objs IS NOT NULL) AND
1492 (p_person_obj.class_objs.COUNT > 0)) THEN
1493 HZ_PARTY_BO_PVT.save_classifications(
1494 p_code_assign_objs => p_person_obj.class_objs,
1495 p_owner_table_name => 'HZ_PARTIES',
1496 p_owner_table_id => x_person_id,
1497 x_return_status => x_return_status,
1498 x_msg_count => x_msg_count,
1499 x_msg_data => x_msg_data
1500 );
1501
1502 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1503 RAISE FND_API.G_EXC_ERROR;
1504 END IF;
1505 END IF;
1506
1507 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1508
1509 -----------------
1510 -- For Party Site
1511 -----------------
1512 IF((p_person_obj.party_site_objs IS NOT NULL) AND
1513 (p_person_obj.party_site_objs.COUNT > 0)) THEN
1514 HZ_PARTY_SITE_BO_PVT.save_party_sites(
1515 p_ps_objs => p_person_obj.party_site_objs,
1516 p_create_update_flag => 'U',
1517 p_obj_source => p_obj_source,
1518 x_return_status => x_return_status,
1519 x_msg_count => x_msg_count,
1520 x_msg_data => x_msg_data,
1521 p_parent_id => x_person_id,
1522 p_parent_os => x_person_os,
1523 p_parent_osr => x_person_osr,
1524 p_parent_obj_type => 'PERSON'
1525 );
1526
1527 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1528 RAISE FND_API.G_EXC_ERROR;
1529 END IF;
1530 END IF;
1531
1532 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1533
1534 ---------------------
1535 -- For Contact Points
1536 ---------------------
1537 IF(((p_person_obj.phone_objs IS NOT NULL) AND (p_person_obj.phone_objs.COUNT > 0)) OR
1538 ((p_person_obj.email_objs IS NOT NULL) AND (p_person_obj.email_objs.COUNT > 0)) OR
1539 ((p_person_obj.web_objs IS NOT NULL) AND (p_person_obj.web_objs.COUNT > 0)) OR
1540 ((p_person_obj.sms_objs IS NOT NULL) AND (p_person_obj.sms_objs.COUNT > 0))) THEN
1541 HZ_CONTACT_POINT_BO_PVT.save_contact_points(
1542 p_phone_objs => p_person_obj.phone_objs,
1543 p_telex_objs => l_telex_objs,
1544 p_email_objs => p_person_obj.email_objs,
1545 p_web_objs => p_person_obj.web_objs,
1546 p_edi_objs => l_edi_objs,
1547 p_eft_objs => l_eft_objs,
1548 p_sms_objs => p_person_obj.sms_objs,
1549 p_owner_table_id => x_person_id,
1550 p_owner_table_os => x_person_os,
1551 p_owner_table_osr => x_person_osr,
1552 p_parent_obj_type => 'PERSON',
1553 p_create_update_flag => 'U',
1554 p_obj_source => p_obj_source,
1555 x_return_status => x_return_status,
1556 x_msg_count => x_msg_count,
1557 x_msg_data => x_msg_data
1558 );
1559
1560 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1561 RAISE FND_API.G_EXC_ERROR;
1562 END IF;
1563 END IF;
1564
1565 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1566
1567 ---------------------
1568 -- Certifications
1569 ---------------------
1570 IF((p_person_obj.certification_objs IS NOT NULL) AND
1571 (p_person_obj.certification_objs.COUNT > 0)) THEN
1572 HZ_PARTY_BO_PVT.save_certifications(
1573 p_cert_objs => p_person_obj.certification_objs,
1574 p_party_id => x_person_id,
1575 x_return_status => x_return_status,
1576 x_msg_count => x_msg_count,
1577 x_msg_data => x_msg_data
1578 );
1579
1580 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1581 RAISE FND_API.G_EXC_ERROR;
1582 END IF;
1583 END IF;
1584
1585 ---------------------
1586 -- Financial Profiles
1587 ---------------------
1588 IF((p_person_obj.financial_prof_objs IS NOT NULL) AND
1589 (p_person_obj.financial_prof_objs.COUNT > 0)) THEN
1590 HZ_PARTY_BO_PVT.save_financial_profiles(
1591 p_fin_prof_objs => p_person_obj.financial_prof_objs,
1592 p_party_id => x_person_id,
1593 x_return_status => x_return_status,
1594 x_msg_count => x_msg_count,
1595 x_msg_data => x_msg_data
1596 );
1597
1598 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1599 RAISE FND_API.G_EXC_ERROR;
1600 END IF;
1601 END IF;
1602
1603 ----------------------------------
1604 -- Party Usages -------
1605 ----------------------------------
1606 IF ((p_person_obj.party_usage_objs IS NOT NULL) AND
1607 (p_person_obj.party_usage_objs.COUNT > 0 )) THEN
1608 HZ_PARTY_BO_PVT.save_party_usage_assgmnt(
1609 p_party_usg_objs => p_person_obj.party_usage_objs,
1610 p_party_id => x_person_id,
1611 x_return_status => x_return_status,
1612 x_msg_count => x_msg_count,
1613 x_msg_data => x_msg_data
1614 );
1615 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1616 RAISE FND_API.G_EXC_ERROR;
1617 END IF;
1618 END IF;
1619
1620
1621 -- raise update person event
1622 IF(l_per_raise_event) THEN
1623 HZ_PARTY_BO_PVT.call_bes(
1624 p_party_id => x_person_id,
1625 p_bo_code => 'PERSON',
1626 p_create_or_update => 'U',
1627 p_obj_source => p_obj_source,
1628 p_event_id => l_per_event_id
1629 );
1630 END IF;
1631
1632 IF(l_pc_raise_event) THEN
1633 HZ_PARTY_BO_PVT.call_bes(
1634 p_party_id => x_person_id,
1635 p_bo_code => 'PERSON_CUST',
1636 p_create_or_update => 'U',
1637 p_obj_source => p_obj_source,
1638 p_event_id => l_pc_event_id
1639 );
1640 END IF;
1641
1642 -- reset Global variable
1643 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1644 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1645
1646 -- Debug info.
1647 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1648 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1649 p_msg_data=>x_msg_data,
1650 p_msg_type=>'WARNING',
1651 p_msg_level=>fnd_log.level_exception);
1652 END IF;
1653 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1654 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
1655 p_prefix=>l_debug_prefix,
1656 p_msg_level=>fnd_log.level_procedure);
1657 END IF;
1658 EXCEPTION
1659 WHEN fnd_api.g_exc_error THEN
1660 ROLLBACK TO do_update_person_bo_pub;
1661
1662 -- reset Global variable
1663 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1664 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1665
1666 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1667 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1668 FND_MSG_PUB.ADD;
1669
1670 x_return_status := fnd_api.g_ret_sts_error;
1671
1672 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1673 p_count => x_msg_count,
1674 p_data => x_msg_data);
1675
1676 -- Debug info.
1677 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1678 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1679 p_msg_data=>x_msg_data,
1680 p_msg_type=>'ERROR',
1681 p_msg_level=>fnd_log.level_error);
1682 END IF;
1683 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1684 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
1685 p_prefix=>l_debug_prefix,
1686 p_msg_level=>fnd_log.level_procedure);
1687 END IF;
1688
1689
1690 WHEN fnd_api.g_exc_unexpected_error THEN
1691 ROLLBACK TO do_update_person_bo_pub;
1692
1693 -- reset Global variable
1694 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1695 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1696
1697 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1698 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1699 FND_MSG_PUB.ADD;
1700
1701 x_return_status := fnd_api.g_ret_sts_unexp_error;
1702
1703 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1704 p_count => x_msg_count,
1705 p_data => x_msg_data);
1706
1707 -- Debug info.
1708 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1709 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1710 p_msg_data=>x_msg_data,
1711 p_msg_type=>'UNEXPECTED ERROR',
1712 p_msg_level=>fnd_log.level_error);
1713 END IF;
1714 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1715 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
1716 p_prefix=>l_debug_prefix,
1717 p_msg_level=>fnd_log.level_procedure);
1718 END IF;
1719 WHEN OTHERS THEN
1720 ROLLBACK TO do_update_person_bo_pub;
1721
1722 -- reset Global variable
1723 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1724 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1725
1726 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1727 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1728 FND_MSG_PUB.ADD;
1729
1730 x_return_status := fnd_api.g_ret_sts_unexp_error;
1731
1732 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1733 fnd_message.set_token('ERROR' ,SQLERRM);
1734 fnd_msg_pub.add;
1735
1736 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1737 p_count => x_msg_count,
1738 p_data => x_msg_data);
1739
1740 -- Debug info.
1741 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1742 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1743 p_msg_data=>x_msg_data,
1744 p_msg_type=>'SQL ERROR',
1745 p_msg_level=>fnd_log.level_error);
1746 END IF;
1747 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1748 hz_utility_v2pub.debug(p_message=>'do_update_person_bo(-)',
1749 p_prefix=>l_debug_prefix,
1750 p_msg_level=>fnd_log.level_procedure);
1751 END IF;
1752 END do_update_person_bo;
1753
1754 PROCEDURE update_person_bo(
1755 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1756 p_person_obj IN HZ_PERSON_BO,
1757 p_created_by_module IN VARCHAR2,
1758 x_return_status OUT NOCOPY VARCHAR2,
1759 x_msg_count OUT NOCOPY NUMBER,
1760 x_msg_data OUT NOCOPY VARCHAR2,
1761 x_person_id OUT NOCOPY NUMBER,
1762 x_person_os OUT NOCOPY VARCHAR2,
1763 x_person_osr OUT NOCOPY VARCHAR2
1764 ) IS
1765 l_per_obj HZ_PERSON_BO;
1766 BEGIN
1767 l_per_obj := p_person_obj;
1768 do_update_person_bo(
1769 p_init_msg_list => p_init_msg_list,
1770 p_person_obj => l_per_obj,
1771 p_created_by_module => p_created_by_module,
1772 p_obj_source => NULL,
1773 x_return_status => x_return_status,
1774 x_msg_count => x_msg_count,
1775 x_msg_data => x_msg_data,
1776 x_person_id => x_person_id,
1777 x_person_os => x_person_os,
1778 x_person_osr => x_person_osr
1779 );
1780 END update_person_bo;
1781
1782 PROCEDURE update_person_bo(
1783 p_person_obj IN HZ_PERSON_BO,
1784 p_created_by_module IN VARCHAR2,
1785 p_obj_source IN VARCHAR2 := null,
1786 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
1787 x_return_status OUT NOCOPY VARCHAR2,
1788 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
1789 x_return_obj OUT NOCOPY HZ_PERSON_BO,
1790 x_person_id OUT NOCOPY NUMBER,
1791 x_person_os OUT NOCOPY VARCHAR2,
1792 x_person_osr OUT NOCOPY VARCHAR2
1793 )IS
1794 l_msg_count NUMBER;
1795 l_msg_data VARCHAR2(2000);
1796 l_per_obj HZ_PERSON_BO;
1797 BEGIN
1798 l_per_obj := p_person_obj;
1799 do_update_person_bo(
1800 p_init_msg_list => FND_API.G_TRUE,
1801 p_person_obj => l_per_obj,
1802 p_created_by_module => p_created_by_module,
1803 p_obj_source => p_obj_source,
1804 x_return_status => x_return_status,
1805 x_msg_count => l_msg_count,
1806 x_msg_data => l_msg_data,
1807 x_person_id => x_person_id,
1808 x_person_os => x_person_os,
1809 x_person_osr => x_person_osr
1810 );
1811 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1812 x_return_status => x_return_status,
1813 x_msg_count => l_msg_count,
1814 x_msg_data => l_msg_data);
1815 IF FND_API.to_Boolean(p_return_obj_flag) THEN
1816 x_return_obj := l_per_obj;
1817 END IF;
1818 END update_person_bo;
1819
1820 -- PROCEDURE do_save_person_bo
1821 --
1822 -- DESCRIPTION
1823 -- Create or update a person business object.
1824 PROCEDURE do_save_person_bo(
1825 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1826 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1827 p_person_obj IN OUT NOCOPY HZ_PERSON_BO,
1828 p_created_by_module IN VARCHAR2,
1829 p_obj_source IN VARCHAR2 := null,
1830 x_return_status OUT NOCOPY VARCHAR2,
1831 x_msg_count OUT NOCOPY NUMBER,
1832 x_msg_data OUT NOCOPY VARCHAR2,
1833 x_person_id OUT NOCOPY NUMBER,
1834 x_person_os OUT NOCOPY VARCHAR2,
1835 x_person_osr OUT NOCOPY VARCHAR2
1836 ) IS
1837 l_return_status VARCHAR2(30);
1838 l_msg_count NUMBER;
1839 l_msg_data VARCHAR2(2000);
1840 l_create_update_flag VARCHAR2(1);
1841 l_debug_prefix VARCHAR2(30);
1842 BEGIN
1843 -- initialize API return status to success.
1844 x_return_status := FND_API.G_RET_STS_SUCCESS;
1845
1846 -- Initialize message list if p_init_msg_list is set to TRUE.
1847 IF FND_API.to_Boolean(p_init_msg_list) THEN
1848 FND_MSG_PUB.initialize;
1849 END IF;
1850
1851 -- Debug info.
1852 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1853 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(+)',
1854 p_prefix=>l_debug_prefix,
1855 p_msg_level=>fnd_log.level_procedure);
1856 END IF;
1857
1858 x_person_id := p_person_obj.person_id;
1859 x_person_os := p_person_obj.orig_system;
1860 x_person_osr:= p_person_obj.orig_system_reference;
1861
1862 -- check root business object to determine that it should be
1863 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
1864 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
1865 p_entity_id => x_person_id,
1866 p_entity_os => x_person_os,
1867 p_entity_osr => x_person_osr,
1868 p_entity_type => 'HZ_PARTIES',
1869 p_parent_id => NULL,
1870 p_parent_obj_type=> NULL);
1871
1872 IF(l_create_update_flag = 'E') THEN
1873 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
1874 FND_MSG_PUB.ADD;
1875 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1876 FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON');
1877 FND_MSG_PUB.ADD;
1878 RAISE FND_API.G_EXC_ERROR;
1879 END IF;
1880
1881 IF(l_create_update_flag = 'C') THEN
1882 do_create_person_bo(
1883 p_init_msg_list => fnd_api.g_false,
1884 p_validate_bo_flag => p_validate_bo_flag,
1885 p_person_obj => p_person_obj,
1886 p_created_by_module => p_created_by_module,
1887 p_obj_source => p_obj_source,
1888 x_return_status => x_return_status,
1889 x_msg_count => x_msg_count,
1890 x_msg_data => x_msg_data,
1891 x_person_id => x_person_id,
1892 x_person_os => x_person_os,
1893 x_person_osr => x_person_osr
1894 );
1895 ELSIF(l_create_update_flag = 'U') THEN
1896 do_update_person_bo(
1897 p_init_msg_list => fnd_api.g_false,
1898 p_person_obj => p_person_obj,
1899 p_created_by_module => p_created_by_module,
1900 p_obj_source => p_obj_source,
1901 x_return_status => x_return_status,
1902 x_msg_count => x_msg_count,
1903 x_msg_data => x_msg_data,
1904 x_person_id => x_person_id,
1905 x_person_os => x_person_os,
1906 x_person_osr => x_person_osr
1907 );
1908 ELSE
1909 RAISE FND_API.G_EXC_ERROR;
1910 END IF;
1911
1912 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1913 RAISE FND_API.G_EXC_ERROR;
1914 END IF;
1915
1916 -- Debug info.
1917 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1918 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1919 p_msg_data=>x_msg_data,
1920 p_msg_type=>'WARNING',
1921 p_msg_level=>fnd_log.level_exception);
1922 END IF;
1923 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1924 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
1925 p_prefix=>l_debug_prefix,
1926 p_msg_level=>fnd_log.level_procedure);
1927 END IF;
1928 EXCEPTION
1929 WHEN fnd_api.g_exc_error THEN
1930 x_return_status := fnd_api.g_ret_sts_error;
1931
1932 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1933 p_count => x_msg_count,
1934 p_data => x_msg_data);
1935
1936 -- Debug info.
1937 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1938 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1939 p_msg_data=>x_msg_data,
1940 p_msg_type=>'ERROR',
1941 p_msg_level=>fnd_log.level_error);
1942 END IF;
1943 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1944 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
1945 p_prefix=>l_debug_prefix,
1946 p_msg_level=>fnd_log.level_procedure);
1947 END IF;
1948
1949 WHEN fnd_api.g_exc_unexpected_error THEN
1950 x_return_status := fnd_api.g_ret_sts_unexp_error;
1951
1952 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1953 p_count => x_msg_count,
1954 p_data => x_msg_data);
1955
1956 -- Debug info.
1957 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1958 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1959 p_msg_data=>x_msg_data,
1960 p_msg_type=>'UNEXPECTED ERROR',
1961 p_msg_level=>fnd_log.level_error);
1962 END IF;
1963 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1964 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
1965 p_prefix=>l_debug_prefix,
1966 p_msg_level=>fnd_log.level_procedure);
1967 END IF;
1968 WHEN OTHERS THEN
1969 x_return_status := fnd_api.g_ret_sts_unexp_error;
1970
1971 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1972 fnd_message.set_token('ERROR' ,SQLERRM);
1973 fnd_msg_pub.add;
1974
1975 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1976 p_count => x_msg_count,
1977 p_data => x_msg_data);
1978
1979 -- Debug info.
1980 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1981 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1982 p_msg_data=>x_msg_data,
1983 p_msg_type=>'SQL ERROR',
1984 p_msg_level=>fnd_log.level_error);
1985 END IF;
1986 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1987 hz_utility_v2pub.debug(p_message=>'do_save_person_bo(-)',
1988 p_prefix=>l_debug_prefix,
1989 p_msg_level=>fnd_log.level_procedure);
1990 END IF;
1991 END do_save_person_bo;
1992
1993 PROCEDURE save_person_bo(
1994 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1995 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1996 p_person_obj IN HZ_PERSON_BO,
1997 p_created_by_module IN VARCHAR2,
1998 x_return_status OUT NOCOPY VARCHAR2,
1999 x_msg_count OUT NOCOPY NUMBER,
2000 x_msg_data OUT NOCOPY VARCHAR2,
2001 x_person_id OUT NOCOPY NUMBER,
2002 x_person_os OUT NOCOPY VARCHAR2,
2003 x_person_osr OUT NOCOPY VARCHAR2
2004 ) IS
2005 l_per_obj HZ_PERSON_BO;
2006 BEGIN
2007 l_per_obj := p_person_obj;
2008 do_save_person_bo(
2009 p_init_msg_list => p_init_msg_list,
2010 p_validate_bo_flag => p_validate_bo_flag,
2011 p_person_obj => l_per_obj,
2012 p_created_by_module => p_created_by_module,
2013 p_obj_source => NULL,
2014 x_return_status => x_return_status,
2015 x_msg_count => x_msg_count,
2016 x_msg_data => x_msg_data,
2017 x_person_id => x_person_id,
2018 x_person_os => x_person_os,
2019 x_person_osr => x_person_osr
2020 );
2021 END save_person_bo;
2022
2023 PROCEDURE save_person_bo(
2024 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
2025 p_person_obj IN HZ_PERSON_BO,
2026 p_created_by_module IN VARCHAR2,
2027 p_obj_source IN VARCHAR2 := NULL,
2028 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
2029 x_return_status OUT NOCOPY VARCHAR2,
2030 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
2031 x_return_obj OUT NOCOPY HZ_PERSON_BO,
2032 x_person_id OUT NOCOPY NUMBER,
2033 x_person_os OUT NOCOPY VARCHAR2,
2034 x_person_osr OUT NOCOPY VARCHAR2
2035 ) IS
2036 l_msg_count NUMBER;
2037 l_msg_data VARCHAR2(2000);
2038 l_per_obj HZ_PERSON_BO;
2039 BEGIN
2040 l_per_obj := p_person_obj;
2041 do_save_person_bo(
2042 p_init_msg_list => FND_API.G_TRUE,
2043 p_validate_bo_flag => p_validate_bo_flag,
2044 p_person_obj => l_per_obj,
2045 p_created_by_module => p_created_by_module,
2046 p_obj_source => p_obj_source,
2047 x_return_status => x_return_status,
2048 x_msg_count => l_msg_count,
2049 x_msg_data => l_msg_data,
2050 x_person_id => x_person_id,
2051 x_person_os => x_person_os,
2052 x_person_osr => x_person_osr
2053 );
2054 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2055 x_return_status => x_return_status,
2056 x_msg_count => l_msg_count,
2057 x_msg_data => l_msg_data);
2058 IF FND_API.to_Boolean(p_return_obj_flag) THEN
2059 x_return_obj := l_per_obj;
2060 END IF;
2061 END save_person_bo;
2062
2063 -- PRIVATE PROCEDURE create_person_info
2064 --
2065 -- DESCRIPTION
2066 -- Create person information, such as language, education, citizenship,
2067 -- employment history and interest
2068 --
2069 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2070 --
2071 -- ARGUMENTS
2072 -- IN:
2073 -- p_language_obj Person language object.
2074 -- p_education_obj Education object.
2075 -- p_citizenship_obj Citizenship object.
2076 -- p_employ_hist_obj Employment history object.
2077 -- p_interest_obj Person interest object.
2078 -- p_party_id Party ID.
2079 -- OUT:
2080 -- x_return_status Return status after the call. The status can
2081 -- be fnd_api.g_ret_sts_success (success),
2082 -- fnd_api.g_ret_sts_error (error),
2083 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2084 -- x_msg_count Number of messages in message stack.
2085 -- x_msg_data Message text if x_msg_count is 1.
2086 --
2087 -- NOTES
2088 --
2089 -- MODIFICATION HISTORY
2090 --
2091 -- 14-DEC-2004 Arnold Ng Created.
2092 --
2093
2094 PROCEDURE create_person_info(
2095 p_language_obj IN OUT NOCOPY HZ_PERSON_LANG_OBJ_TBL,
2096 p_education_obj IN OUT NOCOPY HZ_EDUCATION_OBJ_TBL,
2097 p_citizenship_obj IN OUT NOCOPY HZ_CITIZENSHIP_OBJ_TBL,
2098 p_employ_hist_obj IN OUT NOCOPY HZ_EMPLOY_HIST_BO_TBL,
2099 p_interest_obj IN OUT NOCOPY HZ_PERSON_INTEREST_OBJ_TBL,
2100 p_person_id IN NUMBER,
2101 x_return_status OUT NOCOPY VARCHAR2,
2102 x_msg_count OUT NOCOPY NUMBER,
2103 x_msg_data OUT NOCOPY VARCHAR2
2104 )IS
2105 l_debug_prefix VARCHAR2(30);
2106 l_person_lang_rec HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE;
2107 l_education_rec HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE;
2108 l_citizenship_rec HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE;
2109 l_employ_hist_rec HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE;
2110 l_work_class_rec HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE;
2111 l_interest_rec HZ_PERSON_INFO_V2PUB.PERSON_INTEREST_REC_TYPE;
2112 l_dummy_id NUMBER;
2113 BEGIN
2114 -- Standard start of API savepoint
2115 SAVEPOINT create_person_info_pub;
2116
2117 -- initialize API return status to success.
2118 x_return_status := FND_API.G_RET_STS_SUCCESS;
2119
2120 -- Debug info.
2121 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2122 hz_utility_v2pub.debug(p_message=>'create_person_info(+)',
2123 p_prefix=>l_debug_prefix,
2124 p_msg_level=>fnd_log.level_procedure);
2125 END IF;
2126
2127 --------------------------------
2128 -- Assign person language record
2129 --------------------------------
2130 IF(p_language_obj IS NOT NULL) THEN
2131 FOR i IN 1..p_language_obj.COUNT LOOP
2132 assign_person_lang_rec(
2133 p_person_lang_obj => p_language_obj(i),
2134 p_party_id => p_person_id,
2135 px_person_lang_rec => l_person_lang_rec
2136 );
2137
2138 HZ_PERSON_INFO_V2PUB.create_person_language(
2139 p_person_language_rec => l_person_lang_rec,
2140 x_language_use_reference_id => l_dummy_id,
2141 x_return_status => x_return_status,
2142 x_msg_count => x_msg_count,
2143 x_msg_data => x_msg_data
2144 );
2145
2146 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2147 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2148 hz_utility_v2pub.debug(p_message=>'Create Person Language - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2149 p_prefix=>l_debug_prefix,
2150 p_msg_level=>fnd_log.level_procedure);
2151 END IF;
2152 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2153 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_LANGUAGE');
2154 FND_MSG_PUB.ADD;
2155 RAISE FND_API.G_EXC_ERROR;
2156 END IF;
2157
2158 -- assign person language_use_reference_id
2159 p_language_obj(i).language_use_reference_id := l_dummy_id;
2160 END LOOP;
2161 END IF;
2162
2163 --------------------------
2164 -- Assign education record
2165 --------------------------
2166 IF(p_education_obj IS NOT NULL) THEN
2167 FOR i IN 1..p_education_obj.COUNT LOOP
2168 assign_education_rec(
2169 p_education_obj => p_education_obj(i),
2170 p_party_id => p_person_id,
2171 px_education_rec => l_education_rec
2172 );
2173
2174 HZ_PERSON_INFO_V2PUB.create_education(
2175 p_education_rec => l_education_rec,
2176 x_education_id => l_dummy_id,
2177 x_return_status => x_return_status,
2178 x_msg_count => x_msg_count,
2179 x_msg_data => x_msg_data
2180 );
2181
2182 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2183 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2184 hz_utility_v2pub.debug(p_message=>'Create Education - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2185 p_prefix=>l_debug_prefix,
2186 p_msg_level=>fnd_log.level_procedure);
2187 END IF;
2188 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2189 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_EDUCATION');
2190 FND_MSG_PUB.ADD;
2191 RAISE FND_API.G_EXC_ERROR;
2192 END IF;
2193
2194 -- assign education_id
2195 p_education_obj(i).education_id := l_dummy_id;
2196 END LOOP;
2197 END IF;
2198
2199 ----------------------------
2200 -- Assign citizenship record
2201 ----------------------------
2202 IF(p_citizenship_obj IS NOT NULL) THEN
2203 FOR i IN 1..p_citizenship_obj.COUNT LOOP
2204 assign_citizenship_rec(
2205 p_citizenship_obj => p_citizenship_obj(i),
2206 p_party_id => p_person_id,
2207 px_citizenship_rec => l_citizenship_rec
2208 );
2209
2210 HZ_PERSON_INFO_V2PUB.create_citizenship(
2211 p_citizenship_rec => l_citizenship_rec,
2212 x_citizenship_id => l_dummy_id,
2213 x_return_status => x_return_status,
2214 x_msg_count => x_msg_count,
2215 x_msg_data => x_msg_data
2216 );
2217
2218 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2219 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2220 hz_utility_v2pub.debug(p_message=>'Create Citizenship - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2221 p_prefix=>l_debug_prefix,
2222 p_msg_level=>fnd_log.level_procedure);
2223 END IF;
2224 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2225 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CITIZENSHIP');
2226 FND_MSG_PUB.ADD;
2227 RAISE FND_API.G_EXC_ERROR;
2228 END IF;
2229
2230 -- assign citizenship_id
2231 p_citizenship_obj(i).citizenship_id := l_dummy_id;
2232 END LOOP;
2233 END IF;
2234
2235 -----------------------------------
2236 -- Assign employment history record
2237 -----------------------------------
2238 IF(p_employ_hist_obj IS NOT NULL) THEN
2239 FOR i IN 1..p_employ_hist_obj.COUNT LOOP
2240 assign_employ_hist_rec(
2241 p_employ_hist_obj => p_employ_hist_obj(i),
2242 p_party_id => p_person_id,
2243 px_employ_hist_rec => l_employ_hist_rec
2244 );
2245
2246 HZ_PERSON_INFO_V2PUB.create_employment_history(
2247 p_employment_history_rec => l_employ_hist_rec,
2248 x_employment_history_id => l_dummy_id,
2249 x_return_status => x_return_status,
2250 x_msg_count => x_msg_count,
2251 x_msg_data => x_msg_data
2252 );
2253
2254 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2255 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2256 hz_utility_v2pub.debug(p_message=>'Create Employment History - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2257 p_prefix=>l_debug_prefix,
2258 p_msg_level=>fnd_log.level_procedure);
2259 END IF;
2260 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
2261 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_EMPLOYMENT_HISTORY');
2262 FND_MSG_PUB.ADD;
2263 RAISE FND_API.G_EXC_ERROR;
2264 ELSE
2265
2266 -- assign employment_history_id
2267 p_employ_hist_obj(i).employment_history_id := l_dummy_id;
2268
2269 -- Call work class v2api if employment history record is created successfully
2270 -------------------------------------------------
2271 -- Assign work class of employment history record
2272 -------------------------------------------------
2273 IF(p_employ_hist_obj(i).work_class_objs IS NOT NULL) THEN
2274 FOR j IN 1..p_employ_hist_obj(i).work_class_objs.COUNT LOOP
2275 assign_work_class_rec(
2276 p_work_class_obj => p_employ_hist_obj(i).work_class_objs(j),
2277 p_employ_hist_id => l_dummy_id,
2278 px_work_class_rec => l_work_class_rec
2279 );
2280
2281 HZ_PERSON_INFO_V2PUB.create_work_class(
2282 p_work_class_rec => l_work_class_rec,
2283 x_work_class_id => l_dummy_id,
2284 x_return_status => x_return_status,
2285 x_msg_count => x_msg_count,
2286 x_msg_data => x_msg_data
2287 );
2288
2289 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2290 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2291 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,
2292 p_prefix=>l_debug_prefix,
2293 p_msg_level=>fnd_log.level_procedure);
2294 END IF;
2295 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2296 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_WORK_CLASS');
2297 FND_MSG_PUB.ADD;
2298 RAISE FND_API.G_EXC_ERROR;
2299 END IF;
2300
2301 -- assign work_class_id
2302 p_employ_hist_obj(i).work_class_objs(j).work_class_id := l_dummy_id;
2303 END LOOP;
2304 END IF;
2305 END IF;
2306 END LOOP;
2307 END IF;
2308
2309 --------------------------------
2310 -- Assign person interest record
2311 --------------------------------
2312 IF(p_interest_obj IS NOT NULL) THEN
2313 FOR i IN 1..p_interest_obj.COUNT LOOP
2314 assign_interest_rec(
2315 p_person_interest_obj => p_interest_obj(i),
2316 p_party_id => p_person_id,
2317 px_person_interest_rec => l_interest_rec
2318 );
2319
2320 HZ_PERSON_INFO_V2PUB.create_person_interest(
2321 p_person_interest_rec => l_interest_rec,
2322 x_person_interest_id => l_dummy_id,
2323 x_return_status => x_return_status,
2324 x_msg_count => x_msg_count,
2325 x_msg_data => x_msg_data
2326 );
2327
2328 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2329 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2330 hz_utility_v2pub.debug(p_message=>'Create Person Interest - Error occurred at hz_person_bo_pub.create_person_info, person id: '||p_person_id,
2331 p_prefix=>l_debug_prefix,
2332 p_msg_level=>fnd_log.level_procedure);
2333 END IF;
2334 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2335 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_INTEREST');
2336 FND_MSG_PUB.ADD;
2337 RAISE FND_API.G_EXC_ERROR;
2338 END IF;
2339
2340 -- assign person_interest_id
2341 p_interest_obj(i).person_interest_id := l_dummy_id;
2342 END LOOP;
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=>'create_person_info(-)',
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 ROLLBACK TO create_person_info_pub;
2360 x_return_status := fnd_api.g_ret_sts_error;
2361
2362 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2363 p_count => x_msg_count,
2364 p_data => x_msg_data);
2365
2366 -- Debug info.
2367 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2368 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2369 p_msg_data=>x_msg_data,
2370 p_msg_type=>'ERROR',
2371 p_msg_level=>fnd_log.level_error);
2372 END IF;
2373 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2374 hz_utility_v2pub.debug(p_message=>'create_person_info(-)',
2375 p_prefix=>l_debug_prefix,
2376 p_msg_level=>fnd_log.level_procedure);
2377 END IF;
2378 WHEN fnd_api.g_exc_unexpected_error THEN
2379 ROLLBACK TO create_person_info_pub;
2380 x_return_status := fnd_api.g_ret_sts_unexp_error;
2381
2382 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2383 p_count => x_msg_count,
2384 p_data => x_msg_data);
2385
2386 -- Debug info.
2387 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2388 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2389 p_msg_data=>x_msg_data,
2390 p_msg_type=>'UNEXPECTED ERROR',
2391 p_msg_level=>fnd_log.level_error);
2392 END IF;
2393 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2394 hz_utility_v2pub.debug(p_message=>'create_person_info(-)',
2395 p_prefix=>l_debug_prefix,
2396 p_msg_level=>fnd_log.level_procedure);
2397 END IF;
2398
2399 WHEN OTHERS THEN
2400 ROLLBACK TO create_person_info_pub;
2401 x_return_status := fnd_api.g_ret_sts_unexp_error;
2402
2403 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2404 fnd_message.set_token('ERROR' ,SQLERRM);
2405 fnd_msg_pub.add;
2406
2407 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2408 p_count => x_msg_count,
2409 p_data => x_msg_data);
2410
2411 -- Debug info.
2412 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2413 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2414 p_msg_data=>x_msg_data,
2415 p_msg_type=>'SQL ERROR',
2416 p_msg_level=>fnd_log.level_error);
2417 END IF;
2418 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2419 hz_utility_v2pub.debug(p_message=>'create_person_info(-)',
2420 p_prefix=>l_debug_prefix,
2421 p_msg_level=>fnd_log.level_procedure);
2422 END IF;
2423 END create_person_info;
2424
2425 -- PRIVATE PROCEDURE save_person_info
2426 --
2427 -- DESCRIPTION
2428 -- Create or update person information, such as language, education, citizenship,
2429 -- employment history and interest
2430 --
2431 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2432 --
2433 -- ARGUMENTS
2434 -- IN:
2435 -- p_language_obj Person language object.
2436 -- p_education_obj Education object.
2437 -- p_citizenship_obj Citizenship object.
2438 -- p_employ_hist_obj Employment history object.
2439 -- p_interest_obj Person interest object.
2440 -- p_party_id Party ID.
2441 -- OUT:
2442 -- x_return_status Return status after the call. The status can
2443 -- be fnd_api.g_ret_sts_success (success),
2444 -- fnd_api.g_ret_sts_error (error),
2445 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2446 -- x_msg_count Number of messages in message stack.
2447 -- x_msg_data Message text if x_msg_count is 1.
2448 --
2449 -- NOTES
2450 --
2451 -- MODIFICATION HISTORY
2452 --
2453 -- 14-DEC-2004 Arnold Ng Created.
2454 --
2455
2456 PROCEDURE save_person_info(
2457 p_language_obj IN OUT NOCOPY HZ_PERSON_LANG_OBJ_TBL,
2458 p_education_obj IN OUT NOCOPY HZ_EDUCATION_OBJ_TBL,
2459 p_citizenship_obj IN OUT NOCOPY HZ_CITIZENSHIP_OBJ_TBL,
2460 p_employ_hist_obj IN OUT NOCOPY HZ_EMPLOY_HIST_BO_TBL,
2461 p_interest_obj IN OUT NOCOPY HZ_PERSON_INTEREST_OBJ_TBL,
2462 p_person_id IN NUMBER,
2463 x_return_status OUT NOCOPY VARCHAR2,
2464 x_msg_count OUT NOCOPY NUMBER,
2465 x_msg_data OUT NOCOPY VARCHAR2
2466 )IS
2467 l_debug_prefix VARCHAR2(30);
2468 l_person_lang_rec HZ_PERSON_INFO_V2PUB.PERSON_LANGUAGE_REC_TYPE;
2469 l_education_rec HZ_PERSON_INFO_V2PUB.EDUCATION_REC_TYPE;
2470 l_citizenship_rec HZ_PERSON_INFO_V2PUB.CITIZENSHIP_REC_TYPE;
2471 l_employ_hist_rec HZ_PERSON_INFO_V2PUB.EMPLOYMENT_HISTORY_REC_TYPE;
2472 l_work_class_rec HZ_PERSON_INFO_V2PUB.WORK_CLASS_REC_TYPE;
2473 l_interest_rec HZ_PERSON_INFO_V2PUB.PERSON_INTEREST_REC_TYPE;
2474 l_dummy_id NUMBER;
2475 l_ovn NUMBER := NULL;
2476 BEGIN
2477 -- Standard start of API savepoint
2478 SAVEPOINT save_person_info_pub;
2479
2480 -- initialize API return status to success.
2481 x_return_status := FND_API.G_RET_STS_SUCCESS;
2482
2483 -- Debug info.
2484 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2485 hz_utility_v2pub.debug(p_message=>'save_person_info(+)',
2486 p_prefix=>l_debug_prefix,
2487 p_msg_level=>fnd_log.level_procedure);
2488 END IF;
2489
2490 --------------------------------
2491 -- Create/Update person language
2492 --------------------------------
2493 IF(p_language_obj IS NOT NULL) THEN
2494 FOR i IN 1..p_language_obj.COUNT LOOP
2495 assign_person_lang_rec(
2496 p_person_lang_obj => p_language_obj(i),
2497 p_party_id => p_person_id,
2498 px_person_lang_rec => l_person_lang_rec
2499 );
2500
2501 hz_registry_validate_bo_pvt.check_language_op(
2502 p_party_id => p_person_id,
2503 px_language_use_ref_id => l_person_lang_rec.language_use_reference_id,
2504 p_language_name => l_person_lang_rec.language_name,
2505 x_object_version_number => l_ovn
2506 );
2507
2508 IF(l_ovn = -1) THEN
2509 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2510 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,
2511 p_prefix=>l_debug_prefix,
2512 p_msg_level=>fnd_log.level_procedure);
2513 END IF;
2514 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2515 FND_MSG_PUB.ADD;
2516 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2517 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_LANGUAGE');
2518 FND_MSG_PUB.ADD;
2519 RAISE FND_API.G_EXC_ERROR;
2520 END IF;
2521
2522 IF(l_ovn IS NULL) THEN
2523 HZ_PERSON_INFO_V2PUB.create_person_language(
2524 p_person_language_rec => l_person_lang_rec,
2525 x_language_use_reference_id => l_dummy_id,
2526 x_return_status => x_return_status,
2527 x_msg_count => x_msg_count,
2528 x_msg_data => x_msg_data
2529 );
2530
2531 -- assign person language_use_reference_id
2532 p_language_obj(i).language_use_reference_id := l_dummy_id;
2533 ELSE
2534 -- clean up created_by_module for update
2535 l_person_lang_rec.created_by_module := NULL;
2536 HZ_PERSON_INFO_V2PUB.update_person_language(
2537 p_person_language_rec => l_person_lang_rec,
2538 p_object_version_number => l_ovn,
2539 x_return_status => x_return_status,
2540 x_msg_count => x_msg_count,
2541 x_msg_data => x_msg_data
2542 );
2543
2544 -- assign person language_use_reference_id
2545 p_language_obj(i).language_use_reference_id := l_person_lang_rec.language_use_reference_id;
2546 END IF;
2547 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2548 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2549 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,
2550 p_prefix=>l_debug_prefix,
2551 p_msg_level=>fnd_log.level_procedure);
2552 END IF;
2553 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2554 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_LANGUAGE');
2555 FND_MSG_PUB.ADD;
2556 RAISE FND_API.G_EXC_ERROR;
2557 END IF;
2558 END LOOP;
2559 END IF;
2560
2561 --------------------------
2562 -- Create/Update education
2563 --------------------------
2564 IF(p_education_obj IS NOT NULL) THEN
2565 FOR i IN 1..p_education_obj.COUNT LOOP
2566 assign_education_rec(
2567 p_education_obj => p_education_obj(i),
2568 p_party_id => p_person_id,
2569 px_education_rec => l_education_rec
2570 );
2571
2572 hz_registry_validate_bo_pvt.check_education_op(
2573 p_party_id => p_person_id,
2574 px_education_id => l_education_rec.education_id,
2575 p_course_major => l_education_rec.course_major,
2576 p_school_attended_name => l_education_rec.school_attended_name,
2577 p_degree_received => l_education_rec.degree_received,
2578 x_object_version_number => l_ovn
2579 );
2580
2581 IF(l_ovn = -1) THEN
2582 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2583 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,
2584 p_prefix=>l_debug_prefix,
2585 p_msg_level=>fnd_log.level_procedure);
2586 END IF;
2587 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2588 FND_MSG_PUB.ADD;
2589 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2590 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_EDUCATION');
2591 FND_MSG_PUB.ADD;
2592 RAISE FND_API.G_EXC_ERROR;
2593 END IF;
2594
2595 IF(l_ovn IS NULL) THEN
2596 HZ_PERSON_INFO_V2PUB.create_education(
2597 p_education_rec => l_education_rec,
2598 x_education_id => l_dummy_id,
2599 x_return_status => x_return_status,
2600 x_msg_count => x_msg_count,
2601 x_msg_data => x_msg_data
2602 );
2603
2604 -- assign education_id
2605 p_education_obj(i).education_id := l_dummy_id;
2606 ELSE
2607 -- clean up created_by_module for update
2608 l_education_rec.created_by_module := NULL;
2609 HZ_PERSON_INFO_V2PUB.update_education(
2610 p_education_rec => l_education_rec,
2611 p_object_version_number => l_ovn,
2612 x_return_status => x_return_status,
2613 x_msg_count => x_msg_count,
2614 x_msg_data => x_msg_data
2615 );
2616
2617 -- assign education_id
2618 p_education_obj(i).education_id := l_education_rec.education_id;
2619 END IF;
2620 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2621 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2622 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,
2623 p_prefix=>l_debug_prefix,
2624 p_msg_level=>fnd_log.level_procedure);
2625 END IF;
2626 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2627 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_EDUCATION');
2628 FND_MSG_PUB.ADD;
2629 RAISE FND_API.G_EXC_ERROR;
2630 END IF;
2631 END LOOP;
2632 END IF;
2633
2634 ----------------------------
2635 -- Create/Update citizenship
2636 ----------------------------
2637 IF(p_citizenship_obj IS NOT NULL) THEN
2638 FOR i IN 1..p_citizenship_obj.COUNT LOOP
2639 assign_citizenship_rec(
2640 p_citizenship_obj => p_citizenship_obj(i),
2641 p_party_id => p_person_id,
2642 px_citizenship_rec => l_citizenship_rec
2643 );
2644
2645 hz_registry_validate_bo_pvt.check_citizenship_op(
2646 p_party_id => p_person_id,
2647 px_citizenship_id => l_citizenship_rec.citizenship_id,
2648 p_country_code => l_citizenship_rec.country_code,
2649 x_object_version_number => l_ovn
2650 );
2651
2652 IF(l_ovn = -1) THEN
2653 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2654 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,
2655 p_prefix=>l_debug_prefix,
2656 p_msg_level=>fnd_log.level_procedure);
2657 END IF;
2658 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2659 FND_MSG_PUB.ADD;
2660 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2661 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CITIZENSHIP');
2662 FND_MSG_PUB.ADD;
2663 RAISE FND_API.G_EXC_ERROR;
2664 END IF;
2665
2666 IF(l_ovn IS NULL) THEN
2667 HZ_PERSON_INFO_V2PUB.create_citizenship(
2668 p_citizenship_rec => l_citizenship_rec,
2669 x_citizenship_id => l_dummy_id,
2670 x_return_status => x_return_status,
2671 x_msg_count => x_msg_count,
2672 x_msg_data => x_msg_data
2673 );
2674
2675 -- assign citizenship_id
2676 p_citizenship_obj(i).citizenship_id := l_dummy_id;
2677 ELSE
2678 -- clean up created_by_module for update
2679 l_citizenship_rec.created_by_module := NULL;
2680 HZ_PERSON_INFO_V2PUB.update_citizenship(
2681 p_citizenship_rec => l_citizenship_rec,
2682 p_object_version_number => l_ovn,
2683 x_return_status => x_return_status,
2684 x_msg_count => x_msg_count,
2685 x_msg_data => x_msg_data
2686 );
2687
2688 -- assign citizenship_id
2689 p_citizenship_obj(i).citizenship_id := l_citizenship_rec.citizenship_id;
2690 END IF;
2691 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2692 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2693 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,
2694 p_prefix=>l_debug_prefix,
2695 p_msg_level=>fnd_log.level_procedure);
2696 END IF;
2697 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2698 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_CITIZENSHIP');
2699 FND_MSG_PUB.ADD;
2700 RAISE FND_API.G_EXC_ERROR;
2701 END IF;
2702 END LOOP;
2703 END IF;
2704
2705 -----------------------------------
2706 -- Create/Update employment history
2707 -----------------------------------
2708 IF(p_employ_hist_obj IS NOT NULL) THEN
2709 FOR i IN 1..p_employ_hist_obj.COUNT LOOP
2710 assign_employ_hist_rec(
2711 p_employ_hist_obj => p_employ_hist_obj(i),
2712 p_party_id => p_person_id,
2713 px_employ_hist_rec => l_employ_hist_rec
2714 );
2715
2716 hz_registry_validate_bo_pvt.check_employ_hist_op(
2717 p_party_id => p_person_id,
2718 px_emp_hist_id => l_employ_hist_rec.employment_history_id,
2719 p_employed_by_name_company => l_employ_hist_rec.employed_by_name_company,
2720 p_employed_as_title => l_employ_hist_rec.employed_as_title,
2721 p_begin_date => l_employ_hist_rec.begin_date,
2722 x_object_version_number => l_ovn
2723 );
2724
2725 IF(l_ovn = -1) THEN
2726 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2727 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,
2728 p_prefix=>l_debug_prefix,
2729 p_msg_level=>fnd_log.level_procedure);
2730 END IF;
2731 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2732 FND_MSG_PUB.ADD;
2733 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
2734 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_EMPLOYMENT_HISTORY');
2735 FND_MSG_PUB.ADD;
2736 RAISE FND_API.G_EXC_ERROR;
2737 END IF;
2738
2739 IF(l_ovn IS NULL) THEN
2740 HZ_PERSON_INFO_V2PUB.create_employment_history(
2741 p_employment_history_rec => l_employ_hist_rec,
2742 x_employment_history_id => l_dummy_id,
2743 x_return_status => x_return_status,
2744 x_msg_count => x_msg_count,
2745 x_msg_data => x_msg_data
2746 );
2747
2748 -- assign employment_history_id
2749 p_employ_hist_obj(i).employment_history_id := l_dummy_id;
2750 ELSE
2751 -- clean up created_by_module for update
2752 l_employ_hist_rec.created_by_module := NULL;
2753 HZ_PERSON_INFO_V2PUB.update_employment_history(
2754 p_employment_history_rec => l_employ_hist_rec,
2755 p_object_version_number => l_ovn,
2756 x_return_status => x_return_status,
2757 x_msg_count => x_msg_count,
2758 x_msg_data => x_msg_data
2759 );
2760 l_dummy_id := l_employ_hist_rec.employment_history_id;
2761
2762 -- assign employment_history_id
2763 p_employ_hist_obj(i).employment_history_id := l_dummy_id;
2764 END IF;
2765 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2766 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2767 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,
2768 p_prefix=>l_debug_prefix,
2769 p_msg_level=>fnd_log.level_procedure);
2770 END IF;
2771 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_STRUCT_ERROR');
2772 FND_MESSAGE.SET_TOKEN('STRUCTURE', 'HZ_EMPLOYMENT_HISTORY');
2773 FND_MSG_PUB.ADD;
2774 RAISE FND_API.G_EXC_ERROR;
2775 ELSE
2776 ---------------------------
2777 -- Create/Update work class
2778 ---------------------------
2779 IF(p_employ_hist_obj(i).work_class_objs IS NOT NULL) THEN
2780 FOR j IN 1..p_employ_hist_obj(i).work_class_objs.COUNT LOOP
2781 assign_work_class_rec(
2782 p_work_class_obj => p_employ_hist_obj(i).work_class_objs(j),
2783 p_employ_hist_id => l_dummy_id,
2784 px_work_class_rec => l_work_class_rec
2785 );
2786
2787 hz_registry_validate_bo_pvt.check_work_class_op(
2788 p_employ_hist_id => l_dummy_id,
2789 px_work_class_id => l_work_class_rec.work_class_id,
2790 p_work_class_name => l_work_class_rec.work_class_name,
2791 x_object_version_number => l_ovn
2792 );
2793
2794 IF(l_ovn = -1) THEN
2795 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2796 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,
2797 p_prefix=>l_debug_prefix,
2798 p_msg_level=>fnd_log.level_procedure);
2799 END IF;
2800 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2801 FND_MSG_PUB.ADD;
2802 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2803 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_WORK_CLASS');
2804 FND_MSG_PUB.ADD;
2805 RAISE FND_API.G_EXC_ERROR;
2806 END IF;
2807
2808 IF(l_ovn IS NULL) THEN
2809 HZ_PERSON_INFO_V2PUB.create_work_class(
2810 p_work_class_rec => l_work_class_rec,
2811 x_work_class_id => l_dummy_id,
2812 x_return_status => x_return_status,
2813 x_msg_count => x_msg_count,
2814 x_msg_data => x_msg_data
2815 );
2816
2817 -- assign work_class_id
2818 p_employ_hist_obj(i).work_class_objs(j).work_class_id := l_dummy_id;
2819 ELSE
2820 -- clean up created_by_module for update
2821 l_work_class_rec.created_by_module := NULL;
2822 HZ_PERSON_INFO_V2PUB.update_work_class(
2823 p_work_class_rec => l_work_class_rec,
2824 p_object_version_number => l_ovn,
2825 x_return_status => x_return_status,
2826 x_msg_count => x_msg_count,
2827 x_msg_data => x_msg_data
2828 );
2829
2830 -- assign work_class_id
2831 p_employ_hist_obj(i).work_class_objs(j).work_class_id := l_work_class_rec.work_class_id;
2832 END IF;
2833 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2834 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2835 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,
2836 p_prefix=>l_debug_prefix,
2837 p_msg_level=>fnd_log.level_procedure);
2838 END IF;
2839 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2840 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_WORK_CLASS');
2841 FND_MSG_PUB.ADD;
2842 RAISE FND_API.G_EXC_ERROR;
2843 END IF;
2844 END LOOP;
2845 END IF;
2846 END IF;
2847 END LOOP;
2848 END IF;
2849
2850 -------------------------
2851 -- Create/Update interest
2852 -------------------------
2853 IF(p_interest_obj IS NOT NULL) THEN
2854 FOR i IN 1..p_interest_obj.COUNT LOOP
2855 assign_interest_rec(
2856 p_person_interest_obj => p_interest_obj(i),
2857 p_party_id => p_person_id,
2858 px_person_interest_rec => l_interest_rec
2859 );
2860
2861 hz_registry_validate_bo_pvt.check_interest_op(
2862 p_party_id => p_person_id,
2863 px_interest_id => l_interest_rec.person_interest_id,
2864 p_interest_type_code => l_interest_rec.interest_type_code,
2865 p_sub_interest_type_code => l_interest_rec.sub_interest_type_code,
2866 p_interest_name => l_interest_rec.interest_name,
2867 x_object_version_number => l_ovn
2868 );
2869
2870 IF(l_ovn = -1) THEN
2871 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2872 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,
2873 p_prefix=>l_debug_prefix,
2874 p_msg_level=>fnd_log.level_procedure);
2875 END IF;
2876 FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2877 FND_MSG_PUB.ADD;
2878 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2879 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_INTEREST');
2880 FND_MSG_PUB.ADD;
2881 RAISE FND_API.G_EXC_ERROR;
2882 END IF;
2883
2884 IF(l_ovn IS NULL) THEN
2885 HZ_PERSON_INFO_V2PUB.create_person_interest(
2886 p_person_interest_rec => l_interest_rec,
2887 x_person_interest_id => l_dummy_id,
2888 x_return_status => x_return_status,
2889 x_msg_count => x_msg_count,
2890 x_msg_data => x_msg_data
2891 );
2892
2893 -- assign person_interest_id
2894 p_interest_obj(i).person_interest_id := l_dummy_id;
2895 ELSE
2896 -- clean up created_by_module for update
2897 l_interest_rec.created_by_module := NULL;
2898 HZ_PERSON_INFO_V2PUB.update_person_interest(
2899 p_person_interest_rec => l_interest_rec,
2900 p_object_version_number => l_ovn,
2901 x_return_status => x_return_status,
2902 x_msg_count => x_msg_count,
2903 x_msg_data => x_msg_data
2904 );
2905
2906 -- assign person_interest_id
2907 p_interest_obj(i).person_interest_id := l_interest_rec.person_interest_id;
2908 END IF;
2909 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2910 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2911 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,
2912 p_prefix=>l_debug_prefix,
2913 p_msg_level=>fnd_log.level_procedure);
2914 END IF;
2915 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
2916 FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_PERSON_INTEREST');
2917 FND_MSG_PUB.ADD;
2918 RAISE FND_API.G_EXC_ERROR;
2919 END IF;
2920 END LOOP;
2921 END IF;
2922
2923 -- Debug info.
2924 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2925 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2926 p_msg_data=>x_msg_data,
2927 p_msg_type=>'WARNING',
2928 p_msg_level=>fnd_log.level_exception);
2929 END IF;
2930 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2931 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
2932 p_prefix=>l_debug_prefix,
2933 p_msg_level=>fnd_log.level_procedure);
2934 END IF;
2935 EXCEPTION
2936 WHEN fnd_api.g_exc_error THEN
2937 ROLLBACK TO save_person_info_pub;
2938 x_return_status := fnd_api.g_ret_sts_error;
2939
2940 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2941 p_count => x_msg_count,
2942 p_data => x_msg_data);
2943
2944 -- Debug info.
2945 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2946 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2947 p_msg_data=>x_msg_data,
2948 p_msg_type=>'ERROR',
2949 p_msg_level=>fnd_log.level_error);
2950 END IF;
2951 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2952 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
2953 p_prefix=>l_debug_prefix,
2954 p_msg_level=>fnd_log.level_procedure);
2955 END IF;
2956 WHEN fnd_api.g_exc_unexpected_error THEN
2957 ROLLBACK TO save_person_info_pub;
2958 x_return_status := fnd_api.g_ret_sts_unexp_error;
2959
2960 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2961 p_count => x_msg_count,
2962 p_data => x_msg_data);
2963
2964 -- Debug info.
2965 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2966 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2967 p_msg_data=>x_msg_data,
2968 p_msg_type=>'UNEXPECTED ERROR',
2969 p_msg_level=>fnd_log.level_error);
2970 END IF;
2971 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2972 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
2973 p_prefix=>l_debug_prefix,
2974 p_msg_level=>fnd_log.level_procedure);
2975 END IF;
2976
2977 WHEN OTHERS THEN
2978 ROLLBACK TO save_person_info_pub;
2979 x_return_status := fnd_api.g_ret_sts_unexp_error;
2980
2981 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2982 fnd_message.set_token('ERROR' ,SQLERRM);
2983 fnd_msg_pub.add;
2984
2985 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2986 p_count => x_msg_count,
2987 p_data => x_msg_data);
2988
2989 -- Debug info.
2990 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2991 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2992 p_msg_data=>x_msg_data,
2993 p_msg_type=>'SQL ERROR',
2994 p_msg_level=>fnd_log.level_error);
2995 END IF;
2996 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2997 hz_utility_v2pub.debug(p_message=>'save_person_info(-)',
2998 p_prefix=>l_debug_prefix,
2999 p_msg_level=>fnd_log.level_procedure);
3000 END IF;
3001 END save_person_info;
3002
3003 --------------------------------------
3004 --
3005 -- PROCEDURE get_person_bo
3006 --
3007 -- DESCRIPTION
3008 -- Get a logical person.
3009 --
3010 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3011 --
3012 -- ARGUMENTS
3013 -- IN:
3014 -- p_init_msg_list Initialize message stack if it is set to FND_API.G_TRUE. Default is FND_API.G_FALSE.
3015 -- p_person_id Person ID.
3016 -- p_person_os Person orig system.
3017 -- p_person_osr Person orig system reference.
3018 -- OUT:
3019 -- x_person_obj Logical person record.
3020 -- x_return_status Return status after the call. The status can
3021 -- be fnd_api.g_ret_sts_success (success),
3022 -- fnd_api.g_ret_sts_error (error),
3023 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3024 -- x_msg_count Number of messages in message stack.
3025 -- x_msg_data Message text if x_msg_count is 1.
3026 --
3027 -- NOTES
3028 --
3029 -- MODIFICATION HISTORY
3030 --
3031 --
3032 -- 10-JUN-2005 AWU Created.
3033 --
3034
3035 /*
3036 The Get Person API Procedure is a retrieval service that returns a full Person business object.
3037 The user identifies a particular Person business object using the TCA identifier and/or
3038 the object Source System information. Upon proper validation of the object,
3039 the full Person business object is returned. The object consists of all data included within
3040 the Person business object, at all embedded levels. This includes the set of all data stored
3041 in the TCA tables for each embedded entity.
3042
3043 To retrieve the appropriate embedded business objects within the Person business object,
3044 the Get procedure calls the equivalent procedure for the following embedded objects:
3045
3046 Embedded BO Mandatory Multiple Logical API Procedure Comments
3047 Party Site N Y get_party_site_bo
3048 Phone N Y get_phone_bo
3049 Email N Y get_email_bo
3050 Web N Y get_web_bo
3051 SMS N Y get_sms_bo
3052 Employment History N Y Business Structure. Included entities:HZ_EMPLOYMENT_HISTORY, HZ_WORK_CLASS
3053
3054
3055 To retrieve the appropriate embedded entities within the Person business object,
3056 the Get procedure returns all records for the particular person from these TCA entity tables:
3057
3058 Embedded TCA Entity Mandatory Multiple TCA Table Entities
3059
3060 Party,Person Profile Y N HZ_PARTIES, HZ_PERSON_PROFILES
3061 Person Preference N Y HZ_PARTY_PREFERENCES
3062 Relationship N Y HZ_RELATIONSHIPS
3063 Classification N Y HZ_CODE_ASSIGNMENTS
3064 Language N Y HZ_PERSON_LANGUAGE
3065 Education N Y HZ_EDUCATION
3066 Citizenship N Y HZ_CITIZENSHIP
3067 Interest N Y HZ_PERSON_INTEREST
3068 Certification N Y HZ_CERTIFICATIONS
3069 Financial Profile N Y HZ_FINANCIAL_PROFILE
3070 */
3071
3072 PROCEDURE get_person_bo (
3073 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3074 p_person_id IN NUMBER,
3075 p_person_os IN VARCHAR2,
3076 p_person_osr IN VARCHAR2,
3077 x_person_obj OUT NOCOPY HZ_PERSON_BO,
3078 x_return_status OUT NOCOPY VARCHAR2,
3079 x_msg_count OUT NOCOPY NUMBER,
3080 x_msg_data OUT NOCOPY VARCHAR2
3081 ) is
3082 l_debug_prefix VARCHAR2(30) := '';
3083
3084 l_person_id number;
3085 l_person_os varchar2(30);
3086 l_person_osr varchar2(255);
3087 BEGIN
3088
3089 -- initialize API return status to success.
3090 x_return_status := FND_API.G_RET_STS_SUCCESS;
3091
3092 -- Initialize message list if p_init_msg_list is set to TRUE
3093 IF FND_API.to_Boolean(p_init_msg_list) THEN
3094 FND_MSG_PUB.initialize;
3095 END IF;
3096
3097
3098 -- Debug info.
3099 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3100 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo(+)',
3101 p_prefix=>l_debug_prefix,
3102 p_msg_level=>fnd_log.level_procedure);
3103 END IF;
3104
3105 -- check if pass in contact_point_id and/or os+osr
3106 -- extraction validation logic is same as update
3107
3108 l_person_id := p_person_id;
3109 l_person_os := p_person_os;
3110 l_person_osr := p_person_osr;
3111
3112 HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
3113 px_id => l_person_id,
3114 px_os => l_person_os,
3115 px_osr => l_person_osr,
3116 p_obj_type => 'PERSON',
3117 x_return_status => x_return_status,
3118 x_msg_count => x_msg_count,
3119 x_msg_data => x_msg_data);
3120
3121 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3122 RAISE fnd_api.g_exc_error;
3123 END IF;
3124
3125 HZ_EXTRACT_PERSON_BO_PVT.get_person_bo(
3126 p_init_msg_list => fnd_api.g_false,
3127 p_person_id => l_person_id,
3128 p_action_type => NULL,
3129 x_person_obj => x_person_obj,
3130 x_return_status => x_return_status,
3131 x_msg_count => x_msg_count,
3132 x_msg_data => x_msg_data);
3133
3134 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3135 RAISE FND_API.G_EXC_ERROR;
3136 END IF;
3137
3138
3139 -- Debug info.
3140 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3141 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3142 p_msg_data=>x_msg_data,
3143 p_msg_type=>'WARNING',
3144 p_msg_level=>fnd_log.level_exception);
3145 END IF;
3146
3147 -- Debug info.
3148 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3149 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3150 p_prefix=>l_debug_prefix,
3151 p_msg_level=>fnd_log.level_procedure);
3152 END IF;
3153
3154
3155 EXCEPTION
3156
3157 WHEN fnd_api.g_exc_error THEN
3158 x_return_status := fnd_api.g_ret_sts_error;
3159
3160 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3161 p_count => x_msg_count,
3162 p_data => x_msg_data);
3163
3164 -- Debug info.
3165 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3166 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3167 p_msg_data=>x_msg_data,
3168 p_msg_type=>'ERROR',
3169 p_msg_level=>fnd_log.level_error);
3170 END IF;
3171 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3172 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3173 p_prefix=>l_debug_prefix,
3174 p_msg_level=>fnd_log.level_procedure);
3175 END IF;
3176 WHEN fnd_api.g_exc_unexpected_error THEN
3177 x_return_status := fnd_api.g_ret_sts_unexp_error;
3178
3179 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3180 p_count => x_msg_count,
3181 p_data => x_msg_data);
3182
3183 -- Debug info.
3184 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3185 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3186 p_msg_data=>x_msg_data,
3187 p_msg_type=>'UNEXPECTED ERROR',
3188 p_msg_level=>fnd_log.level_error);
3189 END IF;
3190 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3191 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3192 p_prefix=>l_debug_prefix,
3193 p_msg_level=>fnd_log.level_procedure);
3194 END IF;
3195 WHEN OTHERS THEN
3196 x_return_status := fnd_api.g_ret_sts_unexp_error;
3197
3198 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3199 fnd_message.set_token('ERROR' ,SQLERRM);
3200 fnd_msg_pub.add;
3201
3202 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3203 p_count => x_msg_count,
3204 p_data => x_msg_data);
3205
3206 -- Debug info.
3207 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3208 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3209 p_msg_data=>x_msg_data,
3210 p_msg_type=>'SQL ERROR',
3211 p_msg_level=>fnd_log.level_error);
3212 END IF;
3213 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3214 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_bo (-)',
3215 p_prefix=>l_debug_prefix,
3216 p_msg_level=>fnd_log.level_procedure);
3217 END IF;
3218
3219 end;
3220
3221 PROCEDURE get_person_bo (
3222 p_person_id IN NUMBER,
3223 p_person_os IN VARCHAR2,
3224 p_person_osr IN VARCHAR2,
3225 x_person_obj OUT NOCOPY HZ_PERSON_BO,
3226 x_return_status OUT NOCOPY VARCHAR2,
3227 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
3228 ) is
3229 l_msg_count NUMBER;
3230 l_msg_data VARCHAR2(2000);
3231 BEGIN
3232 get_person_bo(
3233 p_init_msg_list => FND_API.G_TRUE,
3234 p_person_id => p_person_id,
3235 p_person_os => p_person_os,
3236 p_person_osr => p_person_osr,
3237 x_person_obj => x_person_obj,
3238 x_return_status => x_return_status,
3239 x_msg_count => l_msg_count,
3240 x_msg_data => l_msg_data
3241 );
3242 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3243 x_return_status => x_return_status,
3244 x_msg_count => l_msg_count,
3245 x_msg_data => l_msg_data);
3246 END get_person_bo;
3247
3248 --------------------------------------
3249 --
3250 -- PROCEDURE get_persons_created
3251 --
3252 -- DESCRIPTION
3253 --The caller provides an identifier for the Persons created business event and
3254 --the procedure returns database objects of the type HZ_PERSON_BO for all of
3255 --the Person business objects from the business event.
3256
3257 --
3258 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3259 --
3260 -- ARGUMENTS
3261 -- IN:
3262 -- p_init_msg_list Initialize message stack if it is set to
3263 -- p_event_id BES Event identifier.
3264 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
3265 -- OUT:
3266 -- x_person_obj One or more created logical person.
3267 -- x_return_status Return status after the call. The status can
3268 -- be fnd_api.g_ret_sts_success (success),
3269 -- fnd_api.g_ret_sts_error (error),
3270 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3271 -- x_msg_count Number of messages in message stack.
3272 -- x_msg_data Message text if x_msg_count is 1.
3273 --
3274 -- NOTES
3275 --
3276 -- MODIFICATION HISTORY
3277 --
3278 -- 10-JUN-2005 AWU Created.
3279 --
3280
3281
3282
3283 /*
3284 The Get Persons Created procedure is a service to retrieve all of the Person business objects
3285 whose creations have been captured by a logical business event. Each Persons Created
3286 business event signifies that one or more Person business objects have been created.
3287 The caller provides an identifier for the Persons Created business event and the procedure
3288 returns all of the Person business objects from the business event. For each business object
3289 creation captured in the business event, the procedure calls the generic Get operation:
3290 HZ_PERSON_BO_PVT.get_person_bo
3291
3292 Gathering all of the returned business objects from those API calls, the procedure packages
3293 them in a table structure and returns them to the caller.
3294 */
3295
3296
3297 PROCEDURE get_persons_created(
3298 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3299 p_event_id IN NUMBER,
3300 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
3301 x_return_status OUT NOCOPY VARCHAR2,
3302 x_msg_count OUT NOCOPY NUMBER,
3303 x_msg_data OUT NOCOPY VARCHAR2
3304 ) is
3305 l_debug_prefix VARCHAR2(30) := '';
3306 begin
3307
3308 -- initialize API return status to success.
3309 x_return_status := FND_API.G_RET_STS_SUCCESS;
3310
3311 -- Initialize message list if p_init_msg_list is set to TRUE
3312 IF FND_API.to_Boolean(p_init_msg_list) THEN
3313 FND_MSG_PUB.initialize;
3314 END IF;
3315
3316
3317 -- Debug info.
3318 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3319 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created(+)',
3320 p_prefix=>l_debug_prefix,
3321 p_msg_level=>fnd_log.level_procedure);
3322 END IF;
3323
3324
3325 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3326 p_party_id => null,
3327 p_event_type => 'C',
3328 p_bo_code => 'PERSON',
3329 x_return_status => x_return_status);
3330
3331 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3332 RAISE FND_API.G_EXC_ERROR;
3333 END IF;
3334
3335 HZ_EXTRACT_PERSON_BO_PVT.get_persons_created(
3336 p_init_msg_list => fnd_api.g_false,
3337 p_event_id => p_event_id,
3338 x_person_objs => x_person_objs,
3339 x_return_status => x_return_status,
3340 x_msg_count => x_msg_count,
3341 x_msg_data => x_msg_data);
3342
3343 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3344 RAISE FND_API.G_EXC_ERROR;
3345 END IF;
3346
3347
3348
3349 -- Debug info.
3350 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3351 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3352 p_msg_data=>x_msg_data,
3353 p_msg_type=>'WARNING',
3354 p_msg_level=>fnd_log.level_exception);
3355 END IF;
3356
3357 -- Debug info.
3358 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3359 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created (-)',
3360 p_prefix=>l_debug_prefix,
3361 p_msg_level=>fnd_log.level_procedure);
3362 END IF;
3363
3364
3365 EXCEPTION
3366
3367 WHEN fnd_api.g_exc_error THEN
3368 x_return_status := fnd_api.g_ret_sts_error;
3369
3370 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3371 p_count => x_msg_count,
3372 p_data => x_msg_data);
3373
3374 -- Debug info.
3375 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3376 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3377 p_msg_data=>x_msg_data,
3378 p_msg_type=>'ERROR',
3379 p_msg_level=>fnd_log.level_error);
3380 END IF;
3381 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3382 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created(-)',
3383 p_prefix=>l_debug_prefix,
3384 p_msg_level=>fnd_log.level_procedure);
3385 END IF;
3386 WHEN fnd_api.g_exc_unexpected_error THEN
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=>'hz_person_bo_pub.get_persons_created(-)',
3402 p_prefix=>l_debug_prefix,
3403 p_msg_level=>fnd_log.level_procedure);
3404 END IF;
3405 WHEN OTHERS THEN
3406 x_return_status := fnd_api.g_ret_sts_unexp_error;
3407
3408 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3409 fnd_message.set_token('ERROR' ,SQLERRM);
3410 fnd_msg_pub.add;
3411
3412 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3413 p_count => x_msg_count,
3414 p_data => x_msg_data);
3415
3416 -- Debug info.
3417 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3418 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3419 p_msg_data=>x_msg_data,
3420 p_msg_type=>'SQL ERROR',
3421 p_msg_level=>fnd_log.level_error);
3422 END IF;
3423 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3424 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_created(-)',
3425 p_prefix=>l_debug_prefix,
3426 p_msg_level=>fnd_log.level_procedure);
3427 END IF;
3428
3429 end;
3430
3431 PROCEDURE get_persons_created(
3432 p_event_id IN NUMBER,
3433 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
3434 x_return_status OUT NOCOPY VARCHAR2,
3435 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
3436 ) IS
3437 l_msg_count NUMBER;
3438 l_msg_data VARCHAR2(2000);
3439 BEGIN
3440 get_persons_created(
3441 p_init_msg_list => FND_API.G_TRUE,
3442 p_event_id => p_event_id,
3443 x_person_objs => x_person_objs,
3444 x_return_status => x_return_status,
3445 x_msg_count => l_msg_count,
3446 x_msg_data => l_msg_data
3447 );
3448 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3449 x_return_status => x_return_status,
3450 x_msg_count => l_msg_count,
3451 x_msg_data => l_msg_data);
3452 END get_persons_created;
3453
3454 --------------------------------------
3455 --
3456 -- PROCEDURE get_persons_updated
3457 --
3458 -- DESCRIPTION
3459 --The caller provides an identifier for the Persons update business event and
3460 --the procedure returns database objects of the type HZ_PERSON_BO for all of
3461 --the Person business objects from the business event.
3462
3463 --
3464 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3465 --
3466 -- ARGUMENTS
3467 -- IN:
3468 -- p_init_msg_list Initialize message stack if it is set to
3469 -- p_event_id BES Event identifier.
3470 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
3471 -- OUT:
3472 -- x_person_objs One or more created logical person.
3473 -- x_return_status Return status after the call. The status can
3474 -- be fnd_api.g_ret_sts_success (success),
3475 -- fnd_api.g_ret_sts_error (error),
3476 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3477 -- x_msg_count Number of messages in message stack.
3478 -- x_msg_data Message text if x_msg_count is 1.
3479 --
3480 -- NOTES
3481 --
3482 -- MODIFICATION HISTORY
3483 --
3484 -- 10-JUN-2005 AWU Created.
3485 --
3486
3487
3488
3489 /*
3490 The Get Persons Updated procedure is a service to retrieve all of the Person business objects whose updates have been
3491 captured by the logical business event. Each Persons Updated business event signifies that one or more Person business
3492 objects have been updated.
3493 The caller provides an identifier for the Persons Update business event and the procedure returns database objects of the
3494 type HZ_PERSON_BO for all of the Person business objects from the business event.
3495 Gathering all of the returned database objects from those API calls, the procedure packages them in a table structure and
3496 returns them to the caller.
3497 */
3498
3499 PROCEDURE get_persons_updated(
3500 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3501 p_event_id IN NUMBER,
3502 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
3503 x_return_status OUT NOCOPY VARCHAR2,
3504 x_msg_count OUT NOCOPY NUMBER,
3505 x_msg_data OUT NOCOPY VARCHAR2
3506 ) is
3507
3508 l_debug_prefix VARCHAR2(30) := '';
3509 begin
3510
3511 -- initialize API return status to success.
3512 x_return_status := FND_API.G_RET_STS_SUCCESS;
3513
3514 -- Initialize message list if p_init_msg_list is set to TRUE
3515 IF FND_API.to_Boolean(p_init_msg_list) THEN
3516 FND_MSG_PUB.initialize;
3517 END IF;
3518
3519
3520 -- Debug info.
3521 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3522 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(+)',
3523 p_prefix=>l_debug_prefix,
3524 p_msg_level=>fnd_log.level_procedure);
3525 END IF;
3526
3527 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3528 p_party_id => null,
3529 p_event_type => 'U',
3530 p_bo_code => 'PERSON',
3531 x_return_status => x_return_status);
3532
3533 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3534 RAISE FND_API.G_EXC_ERROR;
3535 END IF;
3536
3537 HZ_EXTRACT_PERSON_BO_PVT.get_persons_updated(
3538 p_init_msg_list => fnd_api.g_false,
3539 p_event_id => p_event_id,
3540 x_person_objs => x_person_objs,
3541 x_return_status => x_return_status,
3542 x_msg_count => x_msg_count,
3543 x_msg_data => x_msg_data);
3544
3545 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3546 RAISE FND_API.G_EXC_ERROR;
3547 END IF;
3548
3549
3550
3551 -- Debug info.
3552 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3553 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3554 p_msg_data=>x_msg_data,
3555 p_msg_type=>'WARNING',
3556 p_msg_level=>fnd_log.level_exception);
3557 END IF;
3558
3559 -- Debug info.
3560 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3561 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated (-)',
3562 p_prefix=>l_debug_prefix,
3563 p_msg_level=>fnd_log.level_procedure);
3564 END IF;
3565
3566
3567 EXCEPTION
3568
3569 WHEN fnd_api.g_exc_error THEN
3570 x_return_status := fnd_api.g_ret_sts_error;
3571
3572 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3573 p_count => x_msg_count,
3574 p_data => x_msg_data);
3575
3576 -- Debug info.
3577 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3578 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3579 p_msg_data=>x_msg_data,
3580 p_msg_type=>'ERROR',
3581 p_msg_level=>fnd_log.level_error);
3582 END IF;
3583 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3584 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(-)',
3585 p_prefix=>l_debug_prefix,
3586 p_msg_level=>fnd_log.level_procedure);
3587 END IF;
3588 WHEN fnd_api.g_exc_unexpected_error THEN
3589 x_return_status := fnd_api.g_ret_sts_unexp_error;
3590
3591 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3592 p_count => x_msg_count,
3593 p_data => x_msg_data);
3594
3595 -- Debug info.
3596 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3597 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3598 p_msg_data=>x_msg_data,
3599 p_msg_type=>'UNEXPECTED ERROR',
3600 p_msg_level=>fnd_log.level_error);
3601 END IF;
3602 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3603 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(-)',
3604 p_prefix=>l_debug_prefix,
3605 p_msg_level=>fnd_log.level_procedure);
3606 END IF;
3607 WHEN OTHERS THEN
3608 x_return_status := fnd_api.g_ret_sts_unexp_error;
3609
3610 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3611 fnd_message.set_token('ERROR' ,SQLERRM);
3612 fnd_msg_pub.add;
3613
3614 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3615 p_count => x_msg_count,
3616 p_data => x_msg_data);
3617
3618 -- Debug info.
3619 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3620 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3621 p_msg_data=>x_msg_data,
3622 p_msg_type=>'SQL ERROR',
3623 p_msg_level=>fnd_log.level_error);
3624 END IF;
3625 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3626 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_persons_updated(-)',
3627 p_prefix=>l_debug_prefix,
3628 p_msg_level=>fnd_log.level_procedure);
3629 END IF;
3630
3631 end;
3632
3633 PROCEDURE get_persons_updated(
3634 p_event_id IN NUMBER,
3635 x_person_objs OUT NOCOPY HZ_PERSON_BO_TBL,
3636 x_return_status OUT NOCOPY VARCHAR2,
3637 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
3638 ) IS
3639 l_msg_count NUMBER;
3640 l_msg_data VARCHAR2(2000);
3641 BEGIN
3642 get_persons_updated(
3643 p_init_msg_list => FND_API.G_TRUE,
3644 p_event_id => p_event_id,
3645 x_person_objs => x_person_objs,
3646 x_return_status => x_return_status,
3647 x_msg_count => l_msg_count,
3648 x_msg_data => l_msg_data
3649 );
3650 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3651 x_return_status => x_return_status,
3652 x_msg_count => l_msg_count,
3653 x_msg_data => l_msg_data);
3654 END get_persons_updated;
3655
3656 --------------------------------------
3657 --
3658 -- PROCEDURE get_person_updated
3659 --
3660 -- DESCRIPTION
3661 --The caller provides an identifier for the Persons update business event and person_id
3662 --the procedure returns one database object of the type HZ_PERSON_BO
3663
3664 --
3665 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3666 --
3667 -- ARGUMENTS
3668 -- IN:
3669 -- p_init_msg_list Initialize message stack if it is set to
3670 -- p_event_id BES Event identifier.
3671 -- p_person_id Person identifier.
3672 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
3673 -- OUT:
3674 -- x_person_objs One or more created logical person.
3675 -- x_return_status Return status after the call. The status can
3676 -- be fnd_api.g_ret_sts_success (success),
3677 -- fnd_api.g_ret_sts_error (error),
3678 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3679 -- x_msg_count Number of messages in message stack.
3680 -- x_msg_data Message text if x_msg_count is 1.
3681 --
3682 -- NOTES
3683 --
3684 -- MODIFICATION HISTORY
3685 --
3686 -- 10-JUN-2005 AWU Created.
3687 --
3688
3689
3690
3691 -- Get only one person object based on p_person_id and event_id
3692
3693 PROCEDURE get_person_updated(
3694 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3695 p_event_id IN NUMBER,
3696 p_person_id IN NUMBER,
3697 x_person_obj OUT NOCOPY HZ_PERSON_BO,
3698 x_return_status OUT NOCOPY VARCHAR2,
3699 x_msg_count OUT NOCOPY NUMBER,
3700 x_msg_data OUT NOCOPY VARCHAR2
3701 ) is
3702 l_debug_prefix VARCHAR2(30) := '';
3703 begin
3704
3705 -- initialize API return status to success.
3706 x_return_status := FND_API.G_RET_STS_SUCCESS;
3707
3708 -- Initialize message list if p_init_msg_list is set to TRUE
3709 IF FND_API.to_Boolean(p_init_msg_list) THEN
3710 FND_MSG_PUB.initialize;
3711 END IF;
3712
3713
3714 -- Debug info.
3715 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3716 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(+)',
3717 p_prefix=>l_debug_prefix,
3718 p_msg_level=>fnd_log.level_procedure);
3719 END IF;
3720
3721 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3722 p_party_id => p_person_id,
3723 p_event_type => 'U',
3724 p_bo_code => 'PERSON',
3725 x_return_status => x_return_status);
3726
3727 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3728 RAISE FND_API.G_EXC_ERROR;
3729 END IF;
3730
3731
3732 HZ_EXTRACT_PERSON_BO_PVT.get_person_updated(
3733 p_init_msg_list => fnd_api.g_false,
3734 p_event_id => p_event_id,
3735 p_person_id => p_person_id,
3736 x_person_obj => x_person_obj,
3737 x_return_status => x_return_status,
3738 x_msg_count => x_msg_count,
3739 x_msg_data => x_msg_data);
3740
3741 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3742 RAISE FND_API.G_EXC_ERROR;
3743 END IF;
3744
3745
3746
3747 -- Debug info.
3748 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3749 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3750 p_msg_data=>x_msg_data,
3751 p_msg_type=>'WARNING',
3752 p_msg_level=>fnd_log.level_exception);
3753 END IF;
3754
3755 -- Debug info.
3756 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3757 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated (-)',
3758 p_prefix=>l_debug_prefix,
3759 p_msg_level=>fnd_log.level_procedure);
3760 END IF;
3761
3762
3763 EXCEPTION
3764
3765 WHEN fnd_api.g_exc_error THEN
3766 x_return_status := fnd_api.g_ret_sts_error;
3767
3768 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3769 p_count => x_msg_count,
3770 p_data => x_msg_data);
3771
3772 -- Debug info.
3773 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3774 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3775 p_msg_data=>x_msg_data,
3776 p_msg_type=>'ERROR',
3777 p_msg_level=>fnd_log.level_error);
3778 END IF;
3779 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3780 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(-)',
3781 p_prefix=>l_debug_prefix,
3782 p_msg_level=>fnd_log.level_procedure);
3783 END IF;
3784 WHEN fnd_api.g_exc_unexpected_error THEN
3785 x_return_status := fnd_api.g_ret_sts_unexp_error;
3786
3787 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3788 p_count => x_msg_count,
3789 p_data => x_msg_data);
3790
3791 -- Debug info.
3792 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3793 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3794 p_msg_data=>x_msg_data,
3795 p_msg_type=>'UNEXPECTED ERROR',
3796 p_msg_level=>fnd_log.level_error);
3797 END IF;
3798 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3799 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(-)',
3800 p_prefix=>l_debug_prefix,
3801 p_msg_level=>fnd_log.level_procedure);
3802 END IF;
3803 WHEN OTHERS THEN
3804 x_return_status := fnd_api.g_ret_sts_unexp_error;
3805
3806 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3807 fnd_message.set_token('ERROR' ,SQLERRM);
3808 fnd_msg_pub.add;
3809
3810 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3811 p_count => x_msg_count,
3812 p_data => x_msg_data);
3813
3814 -- Debug info.
3815 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3816 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3817 p_msg_data=>x_msg_data,
3818 p_msg_type=>'SQL ERROR',
3819 p_msg_level=>fnd_log.level_error);
3820 END IF;
3821 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3822 hz_utility_v2pub.debug(p_message=>'hz_person_bo_pub.get_person_updated(-)',
3823 p_prefix=>l_debug_prefix,
3824 p_msg_level=>fnd_log.level_procedure);
3825 END IF;
3826
3827 end;
3828
3829 PROCEDURE get_person_updated(
3830 p_event_id IN NUMBER,
3831 p_person_id IN NUMBER,
3832 x_person_obj OUT NOCOPY HZ_PERSON_BO,
3833 x_return_status OUT NOCOPY VARCHAR2,
3834 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
3835 ) IS
3836 l_msg_count NUMBER;
3837 l_msg_data VARCHAR2(2000);
3838 BEGIN
3839 get_person_updated(
3840 p_init_msg_list => FND_API.G_TRUE,
3841 p_event_id => p_event_id,
3842 p_person_id => p_person_id,
3843 x_person_obj => x_person_obj,
3844 x_return_status => x_return_status,
3845 x_msg_count => l_msg_count,
3846 x_msg_data => l_msg_data
3847 );
3848 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3849 x_return_status => x_return_status,
3850 x_msg_count => l_msg_count,
3851 x_msg_data => l_msg_data);
3852 END get_person_updated;
3853
3854 -- get TCA identifiers for create event
3855 PROCEDURE get_ids_persons_created (
3856 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3857 p_event_id IN NUMBER,
3858 x_person_ids OUT NOCOPY HZ_EXTRACT_BO_UTIL_PVT.BO_ID_TBL,
3859 x_return_status OUT NOCOPY VARCHAR2,
3860 x_msg_count OUT NOCOPY NUMBER,
3861 x_msg_data OUT NOCOPY VARCHAR2
3862
3863 ) is
3864 l_debug_prefix VARCHAR2(30) := '';
3865
3866 begin
3867 -- initialize API return status to success.
3868 x_return_status := FND_API.G_RET_STS_SUCCESS;
3869
3870 -- Initialize message list if p_init_msg_list is set to TRUE
3871 IF FND_API.to_Boolean(p_init_msg_list) THEN
3872 FND_MSG_PUB.initialize;
3873 END IF;
3874
3875
3876 -- Debug info.
3877 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3878 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(+)',
3879 p_prefix=>l_debug_prefix,
3880 p_msg_level=>fnd_log.level_procedure);
3881 END IF;
3882
3883
3884 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3885 p_party_id => null,
3886 p_event_type => 'C',
3887 p_bo_code => 'PERSON',
3888 x_return_status => x_return_status);
3889
3890 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3891 RAISE FND_API.G_EXC_ERROR;
3892 END IF;
3893
3894 HZ_EXTRACT_BO_UTIL_PVT.get_bo_root_ids(
3895 p_init_msg_list => fnd_api.g_false,
3896 p_event_id => p_event_id,
3897 x_obj_root_ids => x_person_ids,
3898 x_return_status => x_return_status,
3899 x_msg_count => x_msg_count,
3900 x_msg_data => x_msg_data);
3901
3902 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3903 RAISE FND_API.G_EXC_ERROR;
3904 END IF;
3905
3906
3907 -- Debug info.
3908 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3909 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3910 p_msg_data=>x_msg_data,
3911 p_msg_type=>'WARNING',
3912 p_msg_level=>fnd_log.level_exception);
3913 END IF;
3914
3915 -- Debug info.
3916 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3917 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created (-)',
3918 p_prefix=>l_debug_prefix,
3919 p_msg_level=>fnd_log.level_procedure);
3920 END IF;
3921
3922
3923 EXCEPTION
3924
3925 WHEN fnd_api.g_exc_error THEN
3926 x_return_status := fnd_api.g_ret_sts_error;
3927
3928 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3929 p_count => x_msg_count,
3930 p_data => x_msg_data);
3931
3932 -- Debug info.
3933 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3934 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3935 p_msg_data=>x_msg_data,
3936 p_msg_type=>'ERROR',
3937 p_msg_level=>fnd_log.level_error);
3938 END IF;
3939 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3940 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(-)',
3941 p_prefix=>l_debug_prefix,
3942 p_msg_level=>fnd_log.level_procedure);
3943 END IF;
3944 WHEN fnd_api.g_exc_unexpected_error THEN
3945 x_return_status := fnd_api.g_ret_sts_unexp_error;
3946
3947 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3948 p_count => x_msg_count,
3949 p_data => x_msg_data);
3950
3951 -- Debug info.
3952 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3953 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3954 p_msg_data=>x_msg_data,
3955 p_msg_type=>'UNEXPECTED ERROR',
3956 p_msg_level=>fnd_log.level_error);
3957 END IF;
3958 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3959 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(-)',
3960 p_prefix=>l_debug_prefix,
3961 p_msg_level=>fnd_log.level_procedure);
3962 END IF;
3963 WHEN OTHERS THEN
3964 x_return_status := fnd_api.g_ret_sts_unexp_error;
3965
3966 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3967 fnd_message.set_token('ERROR' ,SQLERRM);
3968 fnd_msg_pub.add;
3969
3970 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3971 p_count => x_msg_count,
3972 p_data => x_msg_data);
3973
3974 -- Debug info.
3975 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3976 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3977 p_msg_data=>x_msg_data,
3978 p_msg_type=>'SQL ERROR',
3979 p_msg_level=>fnd_log.level_error);
3980 END IF;
3981 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3982 hz_utility_v2pub.debug(p_message=>'get_ids_persons_created(-)',
3983 p_prefix=>l_debug_prefix,
3984 p_msg_level=>fnd_log.level_procedure);
3985 END IF;
3986
3987 end;
3988
3989
3990 -- get TCA identifiers for update event
3991 PROCEDURE get_ids_persons_updated (
3992 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
3993 p_event_id IN NUMBER,
3994 x_person_ids OUT NOCOPY HZ_EXTRACT_BO_UTIL_PVT.BO_ID_TBL,
3995 x_return_status OUT NOCOPY VARCHAR2,
3996 x_msg_count OUT NOCOPY NUMBER,
3997 x_msg_data OUT NOCOPY VARCHAR2
3998 ) is
3999 l_debug_prefix VARCHAR2(30) := '';
4000
4001 begin
4002 -- initialize API return status to success.
4003 x_return_status := FND_API.G_RET_STS_SUCCESS;
4004
4005 -- Initialize message list if p_init_msg_list is set to TRUE
4006 IF FND_API.to_Boolean(p_init_msg_list) THEN
4007 FND_MSG_PUB.initialize;
4008 END IF;
4009
4010
4011 -- Debug info.
4012 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4013 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(+)',
4014 p_prefix=>l_debug_prefix,
4015 p_msg_level=>fnd_log.level_procedure);
4016 END IF;
4017
4018 HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
4019 p_party_id => null,
4020 p_event_type => 'U',
4021 p_bo_code => 'PERSON',
4022 x_return_status => x_return_status);
4023
4024 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4025 RAISE FND_API.G_EXC_ERROR;
4026 END IF;
4027
4028 HZ_EXTRACT_BO_UTIL_PVT.get_bo_root_ids(
4029 p_init_msg_list => fnd_api.g_false,
4030 p_event_id => p_event_id,
4031 x_obj_root_ids => x_person_ids,
4032 x_return_status => x_return_status,
4033 x_msg_count => x_msg_count,
4034 x_msg_data => x_msg_data);
4035
4036 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4037 RAISE FND_API.G_EXC_ERROR;
4038 END IF;
4039
4040
4041 -- Debug info.
4042 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4043 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4044 p_msg_data=>x_msg_data,
4045 p_msg_type=>'WARNING',
4046 p_msg_level=>fnd_log.level_exception);
4047 END IF;
4048
4049 -- Debug info.
4050 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4051 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated (-)',
4052 p_prefix=>l_debug_prefix,
4053 p_msg_level=>fnd_log.level_procedure);
4054 END IF;
4055
4056
4057 EXCEPTION
4058
4059 WHEN fnd_api.g_exc_error THEN
4060 x_return_status := fnd_api.g_ret_sts_error;
4061
4062 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4063 p_count => x_msg_count,
4064 p_data => x_msg_data);
4065
4066 -- Debug info.
4067 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4068 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4069 p_msg_data=>x_msg_data,
4070 p_msg_type=>'ERROR',
4071 p_msg_level=>fnd_log.level_error);
4072 END IF;
4073 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4074 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(-)',
4075 p_prefix=>l_debug_prefix,
4076 p_msg_level=>fnd_log.level_procedure);
4077 END IF;
4078 WHEN fnd_api.g_exc_unexpected_error THEN
4079 x_return_status := fnd_api.g_ret_sts_unexp_error;
4080
4081 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4082 p_count => x_msg_count,
4083 p_data => x_msg_data);
4084
4085 -- Debug info.
4086 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4087 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4088 p_msg_data=>x_msg_data,
4089 p_msg_type=>'UNEXPECTED ERROR',
4090 p_msg_level=>fnd_log.level_error);
4091 END IF;
4092 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4093 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(-)',
4094 p_prefix=>l_debug_prefix,
4095 p_msg_level=>fnd_log.level_procedure);
4096 END IF;
4097 WHEN OTHERS THEN
4098 x_return_status := fnd_api.g_ret_sts_unexp_error;
4099
4100 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4101 fnd_message.set_token('ERROR' ,SQLERRM);
4102 fnd_msg_pub.add;
4103
4104 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4105 p_count => x_msg_count,
4106 p_data => x_msg_data);
4107
4108 -- Debug info.
4109 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4110 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4111 p_msg_data=>x_msg_data,
4112 p_msg_type=>'SQL ERROR',
4113 p_msg_level=>fnd_log.level_error);
4114 END IF;
4115 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4116 hz_utility_v2pub.debug(p_message=>'get_ids_persons_updated(-)',
4117 p_prefix=>l_debug_prefix,
4118 p_msg_level=>fnd_log.level_procedure);
4119 END IF;
4120
4121 end;
4122
4123 END hz_person_bo_pub;