[Home] [Help]
PACKAGE BODY: APPS.HZ_ORG_CONTACT_BO_PUB
Source
1 PACKAGE BODY hz_org_contact_bo_pub AS
2 /*$Header: ARHBOCBB.pls 120.19.12000000.2 2007/02/22 20:03:21 awu ship $ */
3
4 -- PRIVATE PROCEDURE assign_person_profile_rec
5 --
6 -- DESCRIPTION
7 -- Assign attribute value from person profile object to plsql record.
8 --
9 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10 --
11 -- ARGUMENTS
12 -- IN:
13 -- p_person_obj Contact information object.
14 -- p_person_os Person original system.
15 -- p_person_osr Person original system reference.
16 -- p_create_or_update Create or update flag.
17 -- IN OUT:
18 -- px_person_rec Person plsql record.
19 --
20 -- NOTES
21 --
22 -- MODIFICATION HISTORY
23 --
24 -- 14-DEC-2004 Arnold Ng Created.
25
26 PROCEDURE assign_person_profile_rec(
27 p_person_obj IN HZ_PERSON_PROFILE_OBJ,
28 p_person_id IN NUMBER,
29 p_person_os IN VARCHAR2,
30 p_person_osr IN VARCHAR2,
31 p_create_or_update IN VARCHAR2 := 'C',
32 px_person_rec IN OUT NOCOPY HZ_PARTY_V2PUB.PERSON_REC_TYPE
33 );
34
35 -- PRIVATE PROCEDURE assign_org_contact_rec
36 --
37 -- DESCRIPTION
38 -- Assign attribute value from org contact business object to plsql record.
39 --
40 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
41 --
42 -- ARGUMENTS
43 -- IN:
44 -- p_org_contact_obj Organization contact business object.
45 -- p_person_id Person Id.
46 -- p_related_org_id Related organization Id.
47 -- p_oc_id Org contact Id.
48 -- p_oc_os Org contact original system.
49 -- p_oc_osr Org contact original system reference.
50 -- p_create_or_update Create or update flag.
51 -- IN OUT:
52 -- px_org_contact_rec Org contact plsql record.
53 --
54 -- NOTES
55 --
56 -- MODIFICATION HISTORY
57 --
58 -- 14-DEC-2004 Arnold Ng Created.
59
60 PROCEDURE assign_org_contact_rec(
61 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
62 p_person_id IN NUMBER,
63 p_related_org_id IN NUMBER,
64 p_oc_id IN NUMBER,
65 p_oc_os IN VARCHAR2,
66 p_oc_osr IN VARCHAR2,
67 p_create_or_update IN VARCHAR2 := 'C',
68 px_org_contact_rec IN OUT NOCOPY HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_REC_TYPE
69 );
70
71 -- PRIVATE PROCEDURE assign_person_profile_rec
72 --
73 -- DESCRIPTION
74 -- Assign attribute value from person profile object to plsql record.
75 --
76 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
77 --
78 -- ARGUMENTS
79 -- IN:
80 -- p_person_obj Contact information object.
81 -- p_person_os Person original system.
82 -- p_person_osr Person original system reference.
83 -- p_create_or_update Create or update flag.
84 -- IN OUT:
85 -- px_person_rec Person plsql record.
86 --
87 -- NOTES
88 --
89 -- MODIFICATION HISTORY
90 --
91 -- 14-DEC-2004 Arnold Ng Created.
92
93 PROCEDURE assign_person_profile_rec(
94 p_person_obj IN HZ_PERSON_PROFILE_OBJ,
95 p_person_id IN NUMBER,
96 p_person_os IN VARCHAR2,
97 p_person_osr IN VARCHAR2,
98 p_create_or_update IN VARCHAR2 := 'C',
99 px_person_rec IN OUT NOCOPY HZ_PARTY_V2PUB.PERSON_REC_TYPE
100 ) IS
101 BEGIN
102 px_person_rec.person_pre_name_adjunct := p_person_obj.person_pre_name_adjunct;
103 px_person_rec.person_first_name := p_person_obj.person_first_name;
104 px_person_rec.person_middle_name := p_person_obj.person_middle_name;
105 px_person_rec.person_last_name := p_person_obj.person_last_name;
106 px_person_rec.person_name_suffix := p_person_obj.person_name_suffix;
107 px_person_rec.person_title := p_person_obj.person_title;
108 px_person_rec.person_academic_title := p_person_obj.person_academic_title;
109 px_person_rec.person_previous_last_name := p_person_obj.person_previous_last_name;
110 px_person_rec.person_initials := p_person_obj.person_initials;
111 px_person_rec.known_as := p_person_obj.known_as;
112 px_person_rec.known_as2 := p_person_obj.known_as2;
113 px_person_rec.known_as3 := p_person_obj.known_as3;
114 px_person_rec.known_as4 := p_person_obj.known_as4;
115 px_person_rec.known_as5 := p_person_obj.known_as5;
116 px_person_rec.person_name_phonetic := p_person_obj.person_name_phonetic;
117 px_person_rec.person_first_name_phonetic := p_person_obj.person_first_name_phonetic;
118 px_person_rec.person_last_name_phonetic := p_person_obj.person_last_name_phonetic;
119 px_person_rec.middle_name_phonetic := p_person_obj.middle_name_phonetic;
120 px_person_rec.tax_reference := p_person_obj.tax_reference;
121 px_person_rec.jgzz_fiscal_code := p_person_obj.jgzz_fiscal_code;
122 px_person_rec.person_iden_type := p_person_obj.person_iden_type;
123 px_person_rec.person_identifier := p_person_obj.person_identifier;
124 px_person_rec.date_of_birth := p_person_obj.date_of_birth;
125 px_person_rec.place_of_birth := p_person_obj.place_of_birth;
126 px_person_rec.date_of_death := p_person_obj.date_of_death;
127 IF(p_person_obj.deceased_flag in ('Y','N')) THEN
128 px_person_rec.deceased_flag := p_person_obj.deceased_flag;
129 END IF;
130 px_person_rec.gender := p_person_obj.gender;
131 px_person_rec.declared_ethnicity := p_person_obj.declared_ethnicity;
132 px_person_rec.marital_status := p_person_obj.marital_status;
133 px_person_rec.marital_status_effective_date := p_person_obj.marital_status_eff_date;
134 px_person_rec.personal_income := p_person_obj.personal_income;
135 IF(p_person_obj.head_of_household_flag in ('Y','N')) THEN
136 px_person_rec.head_of_household_flag := p_person_obj.head_of_household_flag;
137 END IF;
138 px_person_rec.household_income := p_person_obj.household_income;
139 px_person_rec.household_size := p_person_obj.household_size;
140 px_person_rec.rent_own_ind := p_person_obj.rent_own_ind;
141 px_person_rec.last_known_gps:= p_person_obj.last_known_gps;
142 px_person_rec.internal_flag:= p_person_obj.internal_flag;
143 IF(p_create_or_update = 'C') THEN
144 px_person_rec.party_rec.orig_system:= p_person_os;
145 px_person_rec.party_rec.orig_system_reference:= p_person_osr;
146 px_person_rec.created_by_module:= HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
147 END IF;
148 px_person_rec.actual_content_source:= p_person_obj.actual_content_source;
149 px_person_rec.party_rec.party_id:= p_person_id;
150 px_person_rec.party_rec.party_number:= p_person_obj.party_number;
151 px_person_rec.party_rec.validated_flag:= p_person_obj.validated_flag;
152 px_person_rec.party_rec.status:= p_person_obj.status;
153 px_person_rec.party_rec.category_code:= p_person_obj.category_code;
154 px_person_rec.party_rec.salutation:= p_person_obj.salutation;
155 px_person_rec.party_rec.attribute_category:= p_person_obj.attribute_category;
156 px_person_rec.party_rec.attribute1:= p_person_obj.attribute1;
157 px_person_rec.party_rec.attribute2:= p_person_obj.attribute2;
158 px_person_rec.party_rec.attribute3:= p_person_obj.attribute3;
159 px_person_rec.party_rec.attribute4:= p_person_obj.attribute4;
160 px_person_rec.party_rec.attribute5:= p_person_obj.attribute5;
161 px_person_rec.party_rec.attribute6:= p_person_obj.attribute6;
162 px_person_rec.party_rec.attribute7:= p_person_obj.attribute7;
163 px_person_rec.party_rec.attribute8:= p_person_obj.attribute8;
164 px_person_rec.party_rec.attribute9:= p_person_obj.attribute9;
165 px_person_rec.party_rec.attribute10:= p_person_obj.attribute10;
166 px_person_rec.party_rec.attribute11:= p_person_obj.attribute11;
167 px_person_rec.party_rec.attribute12:= p_person_obj.attribute12;
168 px_person_rec.party_rec.attribute13:= p_person_obj.attribute13;
169 px_person_rec.party_rec.attribute14:= p_person_obj.attribute14;
170 px_person_rec.party_rec.attribute15:= p_person_obj.attribute15;
171 px_person_rec.party_rec.attribute16:= p_person_obj.attribute16;
172 px_person_rec.party_rec.attribute17:= p_person_obj.attribute17;
173 px_person_rec.party_rec.attribute18:= p_person_obj.attribute18;
174 px_person_rec.party_rec.attribute19:= p_person_obj.attribute19;
175 px_person_rec.party_rec.attribute20:= p_person_obj.attribute20;
176 px_person_rec.party_rec.attribute21:= p_person_obj.attribute21;
177 px_person_rec.party_rec.attribute22:= p_person_obj.attribute22;
178 px_person_rec.party_rec.attribute23:= p_person_obj.attribute23;
179 px_person_rec.party_rec.attribute24:= p_person_obj.attribute24;
180 END assign_person_profile_rec;
181
182 -- PRIVATE PROCEDURE assign_org_contact_rec
183 --
184 -- DESCRIPTION
185 -- Assign attribute value from org contact business object to plsql record.
186 --
187 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
188 --
189 -- ARGUMENTS
190 -- IN:
191 -- p_org_contact_obj Organization contact business object.
192 -- p_person_id Person Id.
193 -- p_related_org_id Related organization Id.
194 -- p_oc_id Org contact Id.
195 -- p_oc_os Org contact original system.
196 -- p_oc_osr Org contact original system reference.
197 -- p_create_or_update Create or update flag.
198 -- IN OUT:
199 -- px_org_contact_rec Org contact plsql record.
200 --
201 -- NOTES
202 --
203 -- MODIFICATION HISTORY
204 --
205 -- 14-DEC-2004 Arnold Ng Created.
206
207 PROCEDURE assign_org_contact_rec(
208 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
209 p_person_id IN NUMBER,
210 p_related_org_id IN NUMBER,
211 p_oc_id IN NUMBER,
212 p_oc_os IN VARCHAR2,
213 p_oc_osr IN VARCHAR2,
214 p_create_or_update IN VARCHAR2 := 'C',
215 px_org_contact_rec IN OUT NOCOPY HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_REC_TYPE
216 ) IS
217 BEGIN
218 px_org_contact_rec.org_contact_id := p_oc_id;
219 px_org_contact_rec.comments := p_org_contact_obj.comments;
220 px_org_contact_rec.contact_number := p_org_contact_obj.contact_number;
221 px_org_contact_rec.department_code := p_org_contact_obj.department_code;
222 px_org_contact_rec.department := p_org_contact_obj.department;
223 px_org_contact_rec.title := p_org_contact_obj.title;
224 px_org_contact_rec.job_title := p_org_contact_obj.job_title;
225 IF(p_org_contact_obj.decision_maker_flag in ('Y','N')) THEN
226 px_org_contact_rec.decision_maker_flag := p_org_contact_obj.decision_maker_flag;
227 END IF;
228 px_org_contact_rec.job_title_code := p_org_contact_obj.job_title_code;
229 IF(p_org_contact_obj.reference_use_flag in ('Y','N')) THEN
230 px_org_contact_rec.reference_use_flag := p_org_contact_obj.reference_use_flag;
231 END IF;
232 px_org_contact_rec.rank := p_org_contact_obj.rank;
233 px_org_contact_rec.party_site_id := p_org_contact_obj.party_site_id;
234 px_org_contact_rec.attribute_category := p_org_contact_obj.attribute_category;
235 px_org_contact_rec.attribute1 := p_org_contact_obj.attribute1;
236 px_org_contact_rec.attribute2 := p_org_contact_obj.attribute2;
237 px_org_contact_rec.attribute3 := p_org_contact_obj.attribute3;
238 px_org_contact_rec.attribute4 := p_org_contact_obj.attribute4;
239 px_org_contact_rec.attribute5 := p_org_contact_obj.attribute5;
240 px_org_contact_rec.attribute6 := p_org_contact_obj.attribute6;
241 px_org_contact_rec.attribute7 := p_org_contact_obj.attribute7;
242 px_org_contact_rec.attribute8 := p_org_contact_obj.attribute8;
243 px_org_contact_rec.attribute9 := p_org_contact_obj.attribute9;
244 px_org_contact_rec.attribute10 := p_org_contact_obj.attribute10;
245 px_org_contact_rec.attribute11 := p_org_contact_obj.attribute11;
246 px_org_contact_rec.attribute12 := p_org_contact_obj.attribute12;
247 px_org_contact_rec.attribute13 := p_org_contact_obj.attribute13;
248 px_org_contact_rec.attribute14 := p_org_contact_obj.attribute14;
249 px_org_contact_rec.attribute15 := p_org_contact_obj.attribute15;
250 px_org_contact_rec.attribute16 := p_org_contact_obj.attribute16;
251 px_org_contact_rec.attribute17 := p_org_contact_obj.attribute17;
252 px_org_contact_rec.attribute18 := p_org_contact_obj.attribute18;
253 px_org_contact_rec.attribute19 := p_org_contact_obj.attribute19;
254 px_org_contact_rec.attribute20 := p_org_contact_obj.attribute20;
255 px_org_contact_rec.attribute21 := p_org_contact_obj.attribute21;
256 px_org_contact_rec.attribute22 := p_org_contact_obj.attribute22;
257 px_org_contact_rec.attribute23 := p_org_contact_obj.attribute23;
258 px_org_contact_rec.attribute24 := p_org_contact_obj.attribute24;
259 IF(p_create_or_update = 'C') THEN
260 px_org_contact_rec.orig_system := p_oc_os;
261 px_org_contact_rec.orig_system_reference := p_oc_osr;
262 px_org_contact_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
263 END IF;
264 px_org_contact_rec.party_rel_rec.subject_id := p_person_id;
265 px_org_contact_rec.party_rel_rec.subject_type := 'PERSON';
266 px_org_contact_rec.party_rel_rec.subject_table_name := 'HZ_PARTIES';
267 px_org_contact_rec.party_rel_rec.object_id := p_related_org_id;
268 px_org_contact_rec.party_rel_rec.object_type := 'ORGANIZATION';
269 px_org_contact_rec.party_rel_rec.object_table_name := 'HZ_PARTIES';
270 px_org_contact_rec.party_rel_rec.relationship_code := p_org_contact_obj.relationship_code;
271 px_org_contact_rec.party_rel_rec.relationship_type := p_org_contact_obj.relationship_type;
272 px_org_contact_rec.party_rel_rec.comments := p_org_contact_obj.relationship_comments;
273 px_org_contact_rec.party_rel_rec.start_date := p_org_contact_obj.start_date;
274 px_org_contact_rec.party_rel_rec.end_date := p_org_contact_obj.end_date;
275 px_org_contact_rec.party_rel_rec.status := p_org_contact_obj.status;
276 IF(p_create_or_update = 'C') THEN
277 px_org_contact_rec.party_rel_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
278 END IF;
279 END assign_org_contact_rec;
280
281 -- PROCEDURE do_create_org_contact_bo
282 --
283 -- DESCRIPTION
284 -- Creates org contact business object.
285 PROCEDURE do_create_org_contact_bo(
286 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
287 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
288 p_org_contact_obj IN OUT NOCOPY HZ_ORG_CONTACT_BO,
289 p_created_by_module IN VARCHAR2,
290 p_obj_source IN VARCHAR2 := null,
291 x_return_status OUT NOCOPY VARCHAR2,
292 x_msg_count OUT NOCOPY NUMBER,
293 x_msg_data OUT NOCOPY VARCHAR2,
294 x_org_contact_id OUT NOCOPY NUMBER,
295 x_org_contact_os OUT NOCOPY VARCHAR2,
296 x_org_contact_osr OUT NOCOPY VARCHAR2,
297 px_parent_org_id IN OUT NOCOPY NUMBER,
298 px_parent_org_os IN OUT NOCOPY VARCHAR2,
299 px_parent_org_osr IN OUT NOCOPY VARCHAR2
300 ) IS
301 l_debug_prefix VARCHAR2(30);
302 l_org_contact_rec HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_REC_TYPE;
303 l_org_contact_role_rec HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_ROLE_REC_TYPE;
304 l_party_rel_id NUMBER;
305 l_party_id NUMBER; -- party_id of the relationship for org contact
306 l_party_os VARCHAR2(30);
307 l_party_osr VARCHAR2(255);
308 l_party_number VARCHAR2(30);
309 l_per_party_id NUMBER; -- party_id of the person when create org contact
310 l_per_party_os VARCHAR2(30);
311 l_per_party_osr VARCHAR2(255);
312 l_per_party_num VARCHAR2(30);
313 l_parent_os VARCHAR2(30);
314 l_valid_obj BOOLEAN;
315 l_person_rec HZ_PARTY_V2PUB.PERSON_REC_TYPE;
316 l_profile_id NUMBER;
317 l_valid_per VARCHAR2(1);
318 l_bus_object HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
319 l_errorcode NUMBER;
320 l_cbm VARCHAR2(30);
321 l_edi_objs HZ_EDI_CP_BO_TBL;
322 l_eft_objs HZ_EFT_CP_BO_TBL;
323
324 CURSOR get_per_id(l_os VARCHAR2, l_osr VARCHAR2) IS
325 SELECT per.party_id
326 FROM HZ_PARTIES per, HZ_ORIG_SYS_REFERENCES ref
327 WHERE ref.owner_table_id = per.party_id
328 AND ref.owner_table_name = 'HZ_PARTIES'
329 AND ref.orig_system = l_os
330 AND ref.orig_system_reference = l_osr
331 AND ref.status = 'A'
332 AND rownum = 1;
333
334 CURSOR validate_per_id(l_per_id NUMBER) IS
335 SELECT 'X'
336 FROM HZ_PARTIES
337 WHERE party_id = l_per_id
338 AND party_type = 'PERSON'
339 AND status in ('A','I');
340 BEGIN
341 -- Standard start of API savepoint
342 SAVEPOINT do_create_org_contact_bo_pub;
343
344 -- initialize API return status to success.
345 x_return_status := FND_API.G_RET_STS_SUCCESS;
346
347 -- Initialize message list if p_init_msg_list is set to TRUE.
348 IF FND_API.to_Boolean(p_init_msg_list) THEN
349 FND_MSG_PUB.initialize;
350 END IF;
351
352 -- initialize Global variable
353 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
354 IF(p_created_by_module IS NULL) THEN
355 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
356 ELSE
357 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
358 END IF;
359
360 -- Debug info.
361 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
362 hz_utility_v2pub.debug(p_message=>'do_create_org_contact_bo(+)',
363 p_prefix=>l_debug_prefix,
364 p_msg_level=>fnd_log.level_procedure);
365 END IF;
366
367 -- Base on p_validate_bo_flag check completeness of business object
368 IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
369 HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
370 p_bus_object_code => 'ORG_CONTACT',
371 x_bus_object => l_bus_object
372 );
373 l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_oc_bo_comp(
374 p_oc_objs => HZ_ORG_CONTACT_BO_TBL(p_org_contact_obj),
375 p_bus_object => l_bus_object
376 );
377 IF NOT(l_valid_obj) THEN
378 RAISE fnd_api.g_exc_error;
379 END IF;
380 END IF;
381
382 -- check pass in parent_id and parent_os+osr
383 -- parent of org contact is always ORGANIZATION
384 hz_registry_validate_bo_pvt.validate_parent_id(
385 px_parent_id => px_parent_org_id,
386 px_parent_os => px_parent_org_os,
387 px_parent_osr => px_parent_org_osr,
388 p_parent_obj_type => 'ORG',
389 x_return_status => x_return_status,
390 x_msg_count => x_msg_count,
391 x_msg_data => x_msg_data);
392
393 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
394 RAISE FND_API.G_EXC_ERROR;
395 END IF;
396
397 x_org_contact_id := p_org_contact_obj.org_contact_id;
398 x_org_contact_os := p_org_contact_obj.orig_system;
399 x_org_contact_osr := p_org_contact_obj.orig_system_reference;
400
401 -- check if pass in org_contact_id and os+osr
402 hz_registry_validate_bo_pvt.validate_ssm_id(
403 px_id => x_org_contact_id,
404 px_os => x_org_contact_os,
405 px_osr => x_org_contact_osr,
406 p_obj_type => 'HZ_ORG_CONTACTS',
407 p_create_or_update => 'C',
408 x_return_status => x_return_status,
409 x_msg_count => x_msg_count,
410 x_msg_data => x_msg_data);
411
412 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
413 RAISE FND_API.G_EXC_ERROR;
414 END IF;
415
416 IF(p_org_contact_obj.person_profile_obj IS NULL) THEN
417 fnd_message.set_name('AR', 'HZ_API_MISSING_MANDATORY_ENT');
418 fnd_message.set_token('ENTITY' ,'PERSON_CONTACT');
419 fnd_msg_pub.add;
420 RAISE FND_API.G_EXC_ERROR;
421 END IF;
422
423 l_per_party_id := p_org_contact_obj.person_profile_obj.person_id;
424 l_per_party_os := p_org_contact_obj.person_profile_obj.orig_system;
425 l_per_party_osr := p_org_contact_obj.person_profile_obj.orig_system_reference;
426
427 IF(l_per_party_id IS NULL) THEN
428 OPEN get_per_id(l_per_party_os, l_per_party_osr);
429 FETCH get_per_id INTO l_per_party_id;
430 CLOSE get_per_id;
431 ELSE
432 OPEN validate_per_id(l_per_party_id);
433 FETCH validate_per_id INTO l_valid_per;
434 CLOSE validate_per_id;
435 IF(l_valid_per IS NULL) THEN
436 FND_MESSAGE.SET_NAME('AR','HZ_API_CANNOT_PASS_PK');
437 FND_MSG_PUB.ADD;
438 RAISE FND_API.G_EXC_ERROR;
439 END IF;
440 END IF;
441
442 -- IF l_per_party_id does not exist, can create person
443 -- IF l_per_party_id exist, use per_party_id when create org contact
444 IF(l_per_party_id IS NULL) THEN
445 ------------------------
446 -- Call person bo_pub api
447 ------------------------
448 assign_person_profile_rec(
449 p_person_obj => p_org_contact_obj.person_profile_obj,
450 p_person_id => l_per_party_id,
451 p_person_os => l_per_party_os,
452 p_person_osr => l_per_party_osr,
453 px_person_rec => l_person_rec
454 );
455
456 HZ_PARTY_V2PUB.create_person(
457 p_person_rec => l_person_rec,
458 x_party_id => l_per_party_id,
459 x_party_number => l_per_party_num,
460 x_profile_id => l_profile_id,
461 x_return_status => x_return_status,
462 x_msg_count => x_msg_count,
463 x_msg_data => x_msg_data
464 );
465
466 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
467 RAISE FND_API.G_EXC_ERROR;
468 END IF;
469
470 -- assign person_id
471 p_org_contact_obj.person_profile_obj.person_id := l_per_party_id;
472 --------------------------
473 -- Create Person Ext Attrs
474 --------------------------
475 IF((p_org_contact_obj.person_profile_obj.ext_attributes_objs IS NOT NULL) AND
476 (p_org_contact_obj.person_profile_obj.ext_attributes_objs.COUNT > 0)) THEN
477 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
478 p_ext_attr_objs => p_org_contact_obj.person_profile_obj.ext_attributes_objs,
479 p_parent_obj_id => l_per_party_id,
480 p_parent_obj_type => 'PERSON',
481 p_create_or_update => 'C',
482 x_return_status => x_return_status,
483 x_errorcode => l_errorcode,
484 x_msg_count => x_msg_count,
485 x_msg_data => x_msg_data
486 );
487
488 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
489 RAISE FND_API.G_EXC_ERROR;
490 END IF;
491 END IF;
492 END IF;
493
494 ----------------------------
495 -- Assign org contact record
496 ----------------------------
497 assign_org_contact_rec(
498 p_org_contact_obj => p_org_contact_obj,
499 p_person_id => l_per_party_id,
500 p_related_org_id => px_parent_org_id,
501 p_oc_id => x_org_contact_id,
502 p_oc_os => x_org_contact_os,
503 p_oc_osr => x_org_contact_osr,
504 px_org_contact_rec => l_org_contact_rec
505 );
506
507 HZ_PARTY_CONTACT_V2PUB.create_org_contact(
508 p_org_contact_rec => l_org_contact_rec,
509 x_org_contact_id => x_org_contact_id,
510 x_party_rel_id => l_party_rel_id,
511 x_party_id => l_party_id,
512 x_party_number => l_party_number,
513 x_return_status => x_return_status,
514 x_msg_count => x_msg_count,
515 x_msg_data => x_msg_data
516 );
517
518 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
519 RAISE FND_API.G_EXC_ERROR;
520 END IF;
521
522 -- assign org_contact_id
523 p_org_contact_obj.org_contact_id := x_org_contact_id;
524 ---------------------------
525 -- Create org contact roles
526 ---------------------------
527 IF((p_org_contact_obj.org_contact_role_objs IS NOT NULL) AND
528 (p_org_contact_obj.org_contact_role_objs.COUNT > 0)) THEN
529 HZ_ORG_CONTACT_BO_PVT.create_org_contact_roles(
530 p_ocr_objs => p_org_contact_obj.org_contact_role_objs,
531 p_oc_id => x_org_contact_id,
532 x_return_status => x_return_status,
533 x_msg_count => x_msg_count,
534 x_msg_data => x_msg_data
535 );
536
537 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
538 RAISE FND_API.G_EXC_ERROR;
539 END IF;
540 END IF;
541
542 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
543
544 ---------------------
545 -- Create party sites
546 ---------------------
547 IF((p_org_contact_obj.party_site_objs IS NOT NULL) AND
548 (p_org_contact_obj.party_site_objs.COUNT > 0)) THEN
549 HZ_PARTY_SITE_BO_PVT.save_party_sites(
550 p_ps_objs => p_org_contact_obj.party_site_objs,
551 p_create_update_flag => 'C',
552 p_obj_source => p_obj_source,
553 x_return_status => x_return_status,
554 x_msg_count => x_msg_count,
555 x_msg_data => x_msg_data,
556 p_parent_id => l_party_id,
557 p_parent_os => l_party_os,
558 p_parent_osr => l_party_osr,
559 p_parent_obj_type => 'ORG_CONTACT'
560 );
561
562 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
563 RAISE FND_API.G_EXC_ERROR;
564 END IF;
565 END IF;
566
567 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
568
569 ----------------------------------------------------------
570 -- Create all contact points - phone, telex, email and web
571 ----------------------------------------------------------
572 IF(((p_org_contact_obj.phone_objs IS NOT NULL) AND (p_org_contact_obj.phone_objs.COUNT > 0)) OR
573 ((p_org_contact_obj.telex_objs IS NOT NULL) AND (p_org_contact_obj.telex_objs.COUNT > 0)) OR
574 ((p_org_contact_obj.email_objs IS NOT NULL) AND (p_org_contact_obj.email_objs.COUNT > 0)) OR
575 ((p_org_contact_obj.web_objs IS NOT NULL) AND (p_org_contact_obj.web_objs.COUNT > 0)) OR
576 ((p_org_contact_obj.sms_objs IS NOT NULL) AND (p_org_contact_obj.sms_objs.COUNT > 0))) THEN
577 HZ_CONTACT_POINT_BO_PVT.save_contact_points(
578 p_phone_objs => p_org_contact_obj.phone_objs,
579 p_telex_objs => p_org_contact_obj.telex_objs,
580 p_email_objs => p_org_contact_obj.email_objs,
581 p_web_objs => p_org_contact_obj.web_objs,
582 p_edi_objs => l_edi_objs,
583 p_eft_objs => l_eft_objs,
584 p_sms_objs => p_org_contact_obj.sms_objs,
585 p_owner_table_id => l_party_id,
586 p_owner_table_os => l_party_os,
587 p_owner_table_osr => l_party_osr,
588 p_parent_obj_type => 'ORG_CONTACT',
589 p_create_update_flag => 'C',
590 p_obj_source => p_obj_source,
591 x_return_status => x_return_status,
592 x_msg_count => x_msg_count,
593 x_msg_data => x_msg_data
594 );
595
596 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
597 RAISE FND_API.G_EXC_ERROR;
598 END IF;
599 END IF;
600
601 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
602
603 ----------------------------
604 -- Create contact preference
605 ----------------------------
606 IF((p_org_contact_obj.contact_pref_objs IS NOT NULL) AND
607 (p_org_contact_obj.contact_pref_objs.COUNT > 0)) THEN
608 HZ_CONTACT_PREFERENCE_BO_PVT.create_contact_preferences(
609 p_cp_pref_objs => p_org_contact_obj.contact_pref_objs,
610 p_contact_level_table_id => l_party_id,
611 p_contact_level_table => 'HZ_PARTIES',
612 x_return_status => x_return_status,
613 x_msg_count => x_msg_count,
614 x_msg_data => x_msg_data
615 );
616
617 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
618 RAISE FND_API.G_EXC_ERROR;
619 END IF;
620 END IF;
621
622 -- reset Global variable
623 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
624 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
625
626 -- Debug info.
627 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
628 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
629 p_msg_data=>x_msg_data,
630 p_msg_type=>'WARNING',
631 p_msg_level=>fnd_log.level_exception);
632 END IF;
633 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
634 hz_utility_v2pub.debug(p_message=>'do_create_org_contact_bo(-)',
635 p_prefix=>l_debug_prefix,
636 p_msg_level=>fnd_log.level_procedure);
637 END IF;
638
639 EXCEPTION
640 WHEN fnd_api.g_exc_error THEN
641 ROLLBACK TO do_create_org_contact_bo_pub;
642
643 -- reset Global variable
644 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
645 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
646
647 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
648 FND_MESSAGE.SET_TOKEN('OBJECT', 'ORG_CONTACT');
649 FND_MSG_PUB.ADD;
650
651 x_return_status := fnd_api.g_ret_sts_error;
652
653 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
654 p_count => x_msg_count,
655 p_data => x_msg_data);
656
657 -- Debug info.
658 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
659 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
660 p_msg_data=>x_msg_data,
661 p_msg_type=>'ERROR',
662 p_msg_level=>fnd_log.level_error);
663 END IF;
664 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
665 hz_utility_v2pub.debug(p_message=>'do_create_org_contact_bo(-)',
666 p_prefix=>l_debug_prefix,
667 p_msg_level=>fnd_log.level_procedure);
668 END IF;
669
670 WHEN fnd_api.g_exc_unexpected_error THEN
671 ROLLBACK TO do_create_org_contact_bo_pub;
672
673 -- reset Global variable
674 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
675 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
676
677 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
678 FND_MESSAGE.SET_TOKEN('OBJECT', 'ORG_CONTACT');
679 FND_MSG_PUB.ADD;
680
681 x_return_status := fnd_api.g_ret_sts_unexp_error;
682
683 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
684 p_count => x_msg_count,
685 p_data => x_msg_data);
686
687 -- Debug info.
688 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
689 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
690 p_msg_data=>x_msg_data,
691 p_msg_type=>'UNEXPECTED ERROR',
692 p_msg_level=>fnd_log.level_error);
693 END IF;
694 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
695 hz_utility_v2pub.debug(p_message=>'do_create_org_contact_bo(-)',
696 p_prefix=>l_debug_prefix,
697 p_msg_level=>fnd_log.level_procedure);
698 END IF;
699
700 WHEN OTHERS THEN
701 ROLLBACK TO do_create_org_contact_bo_pub;
702
703 -- reset Global variable
704 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
705 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
706
707 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
708 FND_MESSAGE.SET_TOKEN('OBJECT', 'ORG_CONTACT');
709 FND_MSG_PUB.ADD;
710
711 x_return_status := fnd_api.g_ret_sts_unexp_error;
712
713 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
714 fnd_message.set_token('ERROR' ,SQLERRM);
715 fnd_msg_pub.add;
716
717 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
718 p_count => x_msg_count,
719 p_data => x_msg_data);
720
721 -- Debug info.
722 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
723 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
724 p_msg_data=>x_msg_data,
725 p_msg_type=>'SQL ERROR',
726 p_msg_level=>fnd_log.level_error);
727 END IF;
728 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
729 hz_utility_v2pub.debug(p_message=>'do_create_org_contact_bo(-)',
730 p_prefix=>l_debug_prefix,
731 p_msg_level=>fnd_log.level_procedure);
732 END IF;
733 END do_create_org_contact_bo;
734
735 PROCEDURE create_org_contact_bo(
736 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
737 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
738 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
739 p_created_by_module IN VARCHAR2,
740 x_return_status OUT NOCOPY VARCHAR2,
741 x_msg_count OUT NOCOPY NUMBER,
742 x_msg_data OUT NOCOPY VARCHAR2,
743 x_org_contact_id OUT NOCOPY NUMBER,
744 x_org_contact_os OUT NOCOPY VARCHAR2,
745 x_org_contact_osr OUT NOCOPY VARCHAR2,
746 px_parent_org_id IN OUT NOCOPY NUMBER,
747 px_parent_org_os IN OUT NOCOPY VARCHAR2,
748 px_parent_org_osr IN OUT NOCOPY VARCHAR2
749 ) IS
750 l_oc_obj HZ_ORG_CONTACT_BO;
751 BEGIN
752 l_oc_obj := p_org_contact_obj;
753 do_create_org_contact_bo(
754 p_init_msg_list => p_init_msg_list,
755 p_validate_bo_flag => p_validate_bo_flag,
756 p_org_contact_obj => l_oc_obj,
757 p_created_by_module => p_created_by_module,
758 p_obj_source => null,
759 x_return_status => x_return_status,
760 x_msg_count => x_msg_count,
761 x_msg_data => x_msg_data,
762 x_org_contact_id => x_org_contact_id,
763 x_org_contact_os => x_org_contact_os,
764 x_org_contact_osr => x_org_contact_osr,
765 px_parent_org_id => px_parent_org_id,
766 px_parent_org_os => px_parent_org_os,
767 px_parent_org_osr => px_parent_org_osr
768 );
769 END create_org_contact_bo;
770
771 PROCEDURE create_org_contact_bo(
772 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
773 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
774 p_created_by_module IN VARCHAR2,
775 p_obj_source IN VARCHAR2 := null,
776 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
777 x_return_status OUT NOCOPY VARCHAR2,
778 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
779 x_return_obj OUT NOCOPY HZ_ORG_CONTACT_BO,
780 x_org_contact_id OUT NOCOPY NUMBER,
781 x_org_contact_os OUT NOCOPY VARCHAR2,
782 x_org_contact_osr OUT NOCOPY VARCHAR2,
783 px_parent_org_id IN OUT NOCOPY NUMBER,
784 px_parent_org_os IN OUT NOCOPY VARCHAR2,
785 px_parent_org_osr IN OUT NOCOPY VARCHAR2
786 ) IS
787 l_msg_data VARCHAR2(2000);
788 l_msg_count NUMBER;
789 l_oc_obj HZ_ORG_CONTACT_BO;
790 BEGIN
791 l_oc_obj := p_org_contact_obj;
792 do_create_org_contact_bo(
793 p_init_msg_list => fnd_api.g_true,
794 p_validate_bo_flag => p_validate_bo_flag,
795 p_org_contact_obj => l_oc_obj,
796 p_created_by_module => p_created_by_module,
797 p_obj_source => p_obj_source,
798 x_return_status => x_return_status,
799 x_msg_count => l_msg_count,
800 x_msg_data => l_msg_data,
801 x_org_contact_id => x_org_contact_id,
802 x_org_contact_os => x_org_contact_os,
803 x_org_contact_osr => x_org_contact_osr,
804 px_parent_org_id => px_parent_org_id,
805 px_parent_org_os => px_parent_org_os,
806 px_parent_org_osr => px_parent_org_osr
807 );
808 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
809 x_return_status => x_return_status,
810 x_msg_count => l_msg_count,
811 x_msg_data => l_msg_data);
812 IF FND_API.to_Boolean(p_return_obj_flag) THEN
813 x_return_obj := l_oc_obj;
814 END IF;
815 END create_org_contact_bo;
816
817 -- PROCEDURE update_org_contact_bo
818 --
819 -- DESCRIPTION
820 -- Update org contact business object.
821 PROCEDURE update_org_contact_bo(
822 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
823 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
824 p_created_by_module IN VARCHAR2,
825 x_return_status OUT NOCOPY VARCHAR2,
826 x_msg_count OUT NOCOPY NUMBER,
827 x_msg_data OUT NOCOPY VARCHAR2,
828 x_org_contact_id OUT NOCOPY NUMBER,
829 x_org_contact_os OUT NOCOPY VARCHAR2,
830 x_org_contact_osr OUT NOCOPY VARCHAR2
831 )IS
832 l_oc_obj HZ_ORG_CONTACT_BO;
833 BEGIN
834 l_oc_obj := p_org_contact_obj;
835 do_update_org_contact_bo(
836 p_init_msg_list => p_init_msg_list,
837 p_org_contact_obj => l_oc_obj,
838 p_created_by_module => p_created_by_module,
839 p_obj_source => null,
840 x_return_status => x_return_status,
841 x_msg_count => x_msg_count,
842 x_msg_data => x_msg_data,
843 x_org_contact_id => x_org_contact_id,
844 x_org_contact_os => x_org_contact_os,
845 x_org_contact_osr => x_org_contact_osr,
846 p_parent_os => NULL
847 );
848 END update_org_contact_bo;
849
850 PROCEDURE update_org_contact_bo(
851 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
852 p_created_by_module IN VARCHAR2,
853 p_obj_source IN VARCHAR2 := null,
854 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
855 x_return_status OUT NOCOPY VARCHAR2,
856 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
857 x_return_obj OUT NOCOPY HZ_ORG_CONTACT_BO,
858 x_org_contact_id OUT NOCOPY NUMBER,
859 x_org_contact_os OUT NOCOPY VARCHAR2,
860 x_org_contact_osr OUT NOCOPY VARCHAR2
861 )IS
862 l_msg_data VARCHAR2(2000);
863 l_msg_count NUMBER;
864 l_oc_obj HZ_ORG_CONTACT_BO;
865 BEGIN
866 l_oc_obj := p_org_contact_obj;
867 do_update_org_contact_bo(
868 p_init_msg_list => fnd_api.g_true,
869 p_org_contact_obj => l_oc_obj,
870 p_created_by_module => p_created_by_module,
871 x_return_status => x_return_status,
872 x_msg_count => l_msg_count,
873 x_msg_data => l_msg_data,
874 x_org_contact_id => x_org_contact_id,
875 x_org_contact_os => x_org_contact_os,
876 x_org_contact_osr => x_org_contact_osr,
877 p_parent_os => NULL
878 );
879 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
880 x_return_status => x_return_status,
881 x_msg_count => l_msg_count,
882 x_msg_data => l_msg_data);
883 IF FND_API.to_Boolean(p_return_obj_flag) THEN
884 x_return_obj := l_oc_obj;
885 END IF;
886 END update_org_contact_bo;
887
888 -- PRIVATE PROCEDURE do_update_org_contact_bo
889 --
890 -- DESCRIPTION
891 -- Update org contact business object.
892 PROCEDURE do_update_org_contact_bo(
893 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
894 p_org_contact_obj IN OUT NOCOPY HZ_ORG_CONTACT_BO,
895 p_created_by_module IN VARCHAR2,
896 p_obj_source IN VARCHAR2 := null,
897 x_return_status OUT NOCOPY VARCHAR2,
898 x_msg_count OUT NOCOPY NUMBER,
899 x_msg_data OUT NOCOPY VARCHAR2,
900 x_org_contact_id OUT NOCOPY NUMBER,
901 x_org_contact_os OUT NOCOPY VARCHAR2,
902 x_org_contact_osr OUT NOCOPY VARCHAR2,
903 p_parent_os IN VARCHAR2
904 )IS
905 l_debug_prefix VARCHAR2(30);
906 l_org_contact_rec HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_REC_TYPE;
907 l_oc_id NUMBER;
908 l_oc_ovn NUMBER;
909 l_rel_ovn NUMBER;
910 l_pty_ovn NUMBER;
911 l_create_update_flag VARCHAR2(1);
912 l_person_id NUMBER;
913 l_person_os VARCHAR2(30);
914 l_person_osr VARCHAR2(255);
915 l_oc_party_id NUMBER;
916 l_oc_party_os VARCHAR2(30);
917 l_oc_party_osr VARCHAR2(255);
918 l_parent_os VARCHAR2(30);
919 l_person_rec HZ_PARTY_V2PUB.PERSON_REC_TYPE;
920 l_profile_id NUMBER;
921 l_per_ovn NUMBER;
922 l_related_org_id NUMBER;
923 l_errorcode NUMBER;
924 l_cbm VARCHAR2(30);
925 l_edi_objs HZ_EDI_CP_BO_TBL;
926 l_eft_objs HZ_EFT_CP_BO_TBL;
927
928 CURSOR get_ovn(l_oc_id NUMBER) IS
929 SELECT oc.object_version_number, rel.object_version_number, p.object_version_number,
930 p.party_id, rel.object_id, rel.subject_id
931 FROM HZ_ORG_CONTACTS oc, HZ_RELATIONSHIPS rel, HZ_PARTIES p
932 WHERE oc.org_contact_id = l_oc_id
933 AND oc.party_relationship_id = rel.relationship_id
934 AND rel.party_id = p.party_id
935 AND rel.subject_type = 'PERSON'
936 AND rel.object_type = 'ORGANIZATION'
937 AND rel.status in ('A','I')
938 AND p.status in ('A','I');
939
940 CURSOR get_per_ovn(l_per_id NUMBER) IS
941 SELECT object_version_number
942 FROM HZ_PARTIES
943 WHERE party_id = l_per_id
944 AND status in ('A','I');
945
946 BEGIN
947 -- Standard start of API savepoint
948 SAVEPOINT do_update_org_contact_bo_pub;
949
950 -- initialize API return status to success.
951 x_return_status := FND_API.G_RET_STS_SUCCESS;
952
953 -- Initialize message list if p_init_msg_list is set to TRUE.
954 IF FND_API.to_Boolean(p_init_msg_list) THEN
955 FND_MSG_PUB.initialize;
956 END IF;
957
958 -- initialize Global variable
959 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
960 IF(p_created_by_module IS NULL) THEN
961 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
962 ELSE
963 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
964 END IF;
965
966 -- Debug info.
967 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
968 hz_utility_v2pub.debug(p_message=>'do_update_org_contact_bo(+)',
969 p_prefix=>l_debug_prefix,
970 p_msg_level=>fnd_log.level_procedure);
971 END IF;
972
973 x_org_contact_id := p_org_contact_obj.org_contact_id;
974 x_org_contact_os := p_org_contact_obj.orig_system;
975 x_org_contact_osr := p_org_contact_obj.orig_system_reference;
976
977 -- check if pass in org_contact_id and ssm is
978 -- valid for update
979 hz_registry_validate_bo_pvt.validate_ssm_id(
980 px_id => x_org_contact_id,
981 px_os => x_org_contact_os,
982 px_osr => x_org_contact_osr,
983 p_obj_type => 'HZ_ORG_CONTACTS',
984 p_create_or_update => 'U',
985 x_return_status => x_return_status,
986 x_msg_count => x_msg_count,
987 x_msg_data => x_msg_data);
988
989 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
990 RAISE FND_API.G_EXC_ERROR;
991 END IF;
992
993 OPEN get_ovn(x_org_contact_id);
994 FETCH get_ovn INTO l_oc_ovn, l_rel_ovn, l_pty_ovn, l_oc_party_id, l_related_org_id, l_person_id;
995 CLOSE get_ovn;
996
997 -------------
998 -- For Person
999 -------------
1000 IF(p_org_contact_obj.person_profile_obj IS NOT NULL) THEN
1001 -- check if pass in person_id and ssm is valid for update
1002 --l_person_id := p_org_contact_obj.person_profile_obj.person_id;
1003 l_person_os := p_org_contact_obj.person_profile_obj.orig_system;
1004 l_person_osr := p_org_contact_obj.person_profile_obj.orig_system_reference;
1005
1006 IF(l_person_id IS NOT NULL OR
1007 (l_person_os IS NOT NULL AND l_person_osr IS NOT NULL)) THEN
1008 hz_registry_validate_bo_pvt.validate_ssm_id(
1009 px_id => l_person_id,
1010 px_os => l_person_os,
1011 px_osr => l_person_osr,
1012 p_obj_type => 'PERSON',
1013 p_create_or_update => 'U',
1014 x_return_status => x_return_status,
1015 x_msg_count => x_msg_count,
1016 x_msg_data => x_msg_data);
1017
1018 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1019 RAISE FND_API.G_EXC_ERROR;
1020 END IF;
1021
1022 -- call v2api to update
1023 assign_person_profile_rec(
1024 p_person_obj => p_org_contact_obj.person_profile_obj,
1025 p_person_id => l_person_id,
1026 p_person_os => l_person_os,
1027 p_person_osr => l_person_osr,
1028 p_create_or_update => 'U',
1029 px_person_rec => l_person_rec
1030 );
1031
1032 OPEN get_per_ovn(l_person_id);
1033 FETCH get_per_ovn INTO l_per_ovn;
1034 CLOSE get_per_ovn;
1035
1036 HZ_PARTY_V2PUB.update_person(
1037 p_person_rec => l_person_rec,
1038 p_party_object_version_number => l_per_ovn,
1039 x_profile_id => l_profile_id,
1040 x_return_status => x_return_status,
1041 x_msg_count => x_msg_count,
1042 x_msg_data => x_msg_data
1043 );
1044
1045 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1046 RAISE FND_API.G_EXC_ERROR;
1047 END IF;
1048
1049 -----------------------
1050 -- For Person Ext Attrs
1051 -----------------------
1052 IF((p_org_contact_obj.person_profile_obj.ext_attributes_objs IS NOT NULL) AND
1053 (p_org_contact_obj.person_profile_obj.ext_attributes_objs.COUNT > 0)) THEN
1054 HZ_EXT_ATTRIBUTE_BO_PVT.save_ext_attributes(
1055 p_ext_attr_objs => p_org_contact_obj.person_profile_obj.ext_attributes_objs,
1056 p_parent_obj_id => l_person_id,
1057 p_parent_obj_type => 'PERSON',
1058 p_create_or_update => 'U',
1059 x_return_status => x_return_status,
1060 x_errorcode => l_errorcode,
1061 x_msg_count => x_msg_count,
1062 x_msg_data => x_msg_data
1063 );
1064
1065 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1066 RAISE FND_API.G_EXC_ERROR;
1067 END IF;
1068 END IF;
1069 END IF;
1070 END IF;
1071
1072 -------------------------
1073 -- For Update Org Contact
1074 -------------------------
1075 -- Assign org contact record
1076 assign_org_contact_rec(
1077 p_org_contact_obj => p_org_contact_obj,
1078 p_person_id => l_person_id,
1079 p_related_org_id => l_related_org_id,
1080 p_oc_id => x_org_contact_id,
1081 p_oc_os => x_org_contact_os,
1082 p_oc_osr => x_org_contact_osr,
1083 p_create_or_update => 'U',
1084 px_org_contact_rec => l_org_contact_rec
1085 );
1086
1087 HZ_PARTY_CONTACT_V2PUB.update_org_contact(
1088 p_org_contact_rec => l_org_contact_rec,
1089 p_cont_object_version_number => l_oc_ovn,
1090 p_rel_object_version_number => l_rel_ovn,
1091 p_party_object_version_number => l_pty_ovn,
1092 x_return_status => x_return_status,
1093 x_msg_count => x_msg_count,
1094 x_msg_data => x_msg_data
1095 );
1096
1097 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1098 RAISE FND_API.G_EXC_ERROR;
1099 END IF;
1100
1101 -- assign org_contact_id
1102 p_org_contact_obj.org_contact_id := x_org_contact_id;
1103 ------------------------
1104 -- For Org Contact Roles
1105 ------------------------
1106 IF((p_org_contact_obj.org_contact_role_objs IS NOT NULL) AND
1107 (p_org_contact_obj.org_contact_role_objs.COUNT > 0)) THEN
1108 HZ_ORG_CONTACT_BO_PVT.save_org_contact_roles(
1109 p_ocr_objs => p_org_contact_obj.org_contact_role_objs,
1110 p_oc_id => x_org_contact_id,
1111 x_return_status => x_return_status,
1112 x_msg_count => x_msg_count,
1113 x_msg_data => x_msg_data
1114 );
1115
1116 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1117 RAISE FND_API.G_EXC_ERROR;
1118 END IF;
1119 END IF;
1120
1121 l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1122
1123 ---------------------
1124 -- Update party sites
1125 ---------------------
1126 IF((p_org_contact_obj.party_site_objs IS NOT NULL) AND
1127 (p_org_contact_obj.party_site_objs.COUNT > 0)) THEN
1128 HZ_PARTY_SITE_BO_PVT.save_party_sites(
1129 p_ps_objs => p_org_contact_obj.party_site_objs,
1130 p_create_update_flag => 'U',
1131 p_obj_source => p_obj_source,
1132 x_return_status => x_return_status,
1133 x_msg_count => x_msg_count,
1134 x_msg_data => x_msg_data,
1135 p_parent_id => l_oc_party_id,
1136 p_parent_os => NULL,
1137 p_parent_osr => NULL,
1138 p_parent_obj_type => 'ORG_CONTACT'
1139 );
1140
1141 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1142 RAISE FND_API.G_EXC_ERROR;
1143 END IF;
1144 END IF;
1145
1146 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1147
1148 -- Owner table id of contact point should be the party of the relationship for org contact
1149 -- Therefore, should pass in party_id as p_owner_table_id
1150 -- Same situation apply to p_owner_table_os, p_owner_table_osr
1151 ---------------------
1152 -- For Contact Points
1153 ---------------------
1154 IF(((p_org_contact_obj.phone_objs IS NOT NULL) AND (p_org_contact_obj.phone_objs.COUNT > 0)) OR
1155 ((p_org_contact_obj.telex_objs IS NOT NULL) AND (p_org_contact_obj.telex_objs.COUNT > 0)) OR
1156 ((p_org_contact_obj.email_objs IS NOT NULL) AND (p_org_contact_obj.email_objs.COUNT > 0)) OR
1157 ((p_org_contact_obj.web_objs IS NOT NULL) AND (p_org_contact_obj.web_objs.COUNT > 0)) OR
1158 ((p_org_contact_obj.sms_objs IS NOT NULL) AND (p_org_contact_obj.sms_objs.COUNT > 0))) THEN
1159 HZ_CONTACT_POINT_BO_PVT.save_contact_points(
1160 p_phone_objs => p_org_contact_obj.phone_objs,
1161 p_telex_objs => p_org_contact_obj.telex_objs,
1162 p_email_objs => p_org_contact_obj.email_objs,
1163 p_web_objs => p_org_contact_obj.web_objs,
1164 p_edi_objs => l_edi_objs,
1165 p_eft_objs => l_eft_objs,
1166 p_sms_objs => p_org_contact_obj.sms_objs,
1167 p_owner_table_id => l_oc_party_id,
1168 p_owner_table_os => NULL,
1169 p_owner_table_osr => NULL,
1170 p_parent_obj_type => 'ORG_CONTACT',
1171 p_create_update_flag => 'U',
1172 p_obj_source => p_obj_source,
1173 x_return_status => x_return_status,
1174 x_msg_count => x_msg_count,
1175 x_msg_data => x_msg_data
1176 );
1177
1178 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1179 RAISE FND_API.G_EXC_ERROR;
1180 END IF;
1181 END IF;
1182
1183 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1184
1185 -------------------------
1186 -- For Contact Preference
1187 -------------------------
1188 IF((p_org_contact_obj.contact_pref_objs IS NOT NULL) AND
1189 (p_org_contact_obj.contact_pref_objs.COUNT > 0)) THEN
1190 HZ_CONTACT_PREFERENCE_BO_PVT.save_contact_preferences(
1191 p_cp_pref_objs => p_org_contact_obj.contact_pref_objs,
1192 p_contact_level_table_id => l_oc_party_id,
1193 p_contact_level_table => 'HZ_PARTIES',
1194 x_return_status => x_return_status,
1195 x_msg_count => x_msg_count,
1196 x_msg_data => x_msg_data
1197 );
1198
1199 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1200 RAISE FND_API.G_EXC_ERROR;
1201 END IF;
1202 END IF;
1203
1204 -- reset Global variable
1205 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1206 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1207
1208 -- Debug info.
1209 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1210 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1211 p_msg_data=>x_msg_data,
1212 p_msg_type=>'WARNING',
1213 p_msg_level=>fnd_log.level_exception);
1214 END IF;
1215 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1216 hz_utility_v2pub.debug(p_message=>'do_update_org_contact_bo(-)',
1217 p_prefix=>l_debug_prefix,
1218 p_msg_level=>fnd_log.level_procedure);
1219 END IF;
1220 EXCEPTION
1221 WHEN fnd_api.g_exc_error THEN
1222 ROLLBACK TO do_update_org_contact_bo_pub;
1223
1224 -- reset Global variable
1225 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1226 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1227
1228 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1229 FND_MESSAGE.SET_TOKEN('OBJECT', 'ORG_CONTACT');
1230 FND_MSG_PUB.ADD;
1231
1232 x_return_status := fnd_api.g_ret_sts_error;
1233
1234 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1235 p_count => x_msg_count,
1236 p_data => x_msg_data);
1237
1238 -- Debug info.
1239 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1240 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1241 p_msg_data=>x_msg_data,
1242 p_msg_type=>'ERROR',
1243 p_msg_level=>fnd_log.level_error);
1244 END IF;
1245 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1246 hz_utility_v2pub.debug(p_message=>'do_update_org_contact_bo(-)',
1247 p_prefix=>l_debug_prefix,
1248 p_msg_level=>fnd_log.level_procedure);
1249 END IF;
1250
1251 WHEN fnd_api.g_exc_unexpected_error THEN
1252 ROLLBACK TO do_update_org_contact_bo_pub;
1253
1254 -- reset Global variable
1255 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1256 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1257
1258 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1259 FND_MESSAGE.SET_TOKEN('OBJECT', 'ORG_CONTACT');
1260 FND_MSG_PUB.ADD;
1261
1262 x_return_status := fnd_api.g_ret_sts_unexp_error;
1263
1264 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1265 p_count => x_msg_count,
1266 p_data => x_msg_data);
1267
1268 -- Debug info.
1269 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1270 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1271 p_msg_data=>x_msg_data,
1272 p_msg_type=>'UNEXPECTED ERROR',
1273 p_msg_level=>fnd_log.level_error);
1274 END IF;
1275 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1276 hz_utility_v2pub.debug(p_message=>'do_update_org_contact_bo(-)',
1277 p_prefix=>l_debug_prefix,
1278 p_msg_level=>fnd_log.level_procedure);
1279 END IF;
1280
1281 WHEN OTHERS THEN
1282 ROLLBACK TO do_update_org_contact_bo_pub;
1283
1284 -- reset Global variable
1285 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1286 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1287
1288 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1289 FND_MESSAGE.SET_TOKEN('OBJECT', 'ORG_CONTACT');
1290 FND_MSG_PUB.ADD;
1291
1292 x_return_status := fnd_api.g_ret_sts_unexp_error;
1293
1294 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1295 fnd_message.set_token('ERROR' ,SQLERRM);
1296 fnd_msg_pub.add;
1297
1298 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1299 p_count => x_msg_count,
1300 p_data => x_msg_data);
1301
1302 -- Debug info.
1303 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1304 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1305 p_msg_data=>x_msg_data,
1306 p_msg_type=>'SQL ERROR',
1307 p_msg_level=>fnd_log.level_error);
1308 END IF;
1309 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1310 hz_utility_v2pub.debug(p_message=>'do_update_org_contact_bo(-)',
1311 p_prefix=>l_debug_prefix,
1312 p_msg_level=>fnd_log.level_procedure);
1313 END IF;
1314 END do_update_org_contact_bo;
1315
1316 -- PROCEDURE do_save_org_contact_bo
1317 --
1318 -- DESCRIPTION
1319 -- Creates or update org contact business object.
1320 PROCEDURE do_save_org_contact_bo(
1321 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1322 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1323 p_org_contact_obj IN OUT NOCOPY HZ_ORG_CONTACT_BO,
1324 p_created_by_module IN VARCHAR2,
1325 p_obj_source IN VARCHAR2 := null,
1326 x_return_status OUT NOCOPY VARCHAR2,
1327 x_msg_count OUT NOCOPY NUMBER,
1328 x_msg_data OUT NOCOPY VARCHAR2,
1329 x_org_contact_id OUT NOCOPY NUMBER,
1330 x_org_contact_os OUT NOCOPY VARCHAR2,
1331 x_org_contact_osr OUT NOCOPY VARCHAR2,
1332 px_parent_org_id IN OUT NOCOPY NUMBER,
1333 px_parent_org_os IN OUT NOCOPY VARCHAR2,
1334 px_parent_org_osr IN OUT NOCOPY VARCHAR2
1335 ) IS
1336 l_return_status VARCHAR2(30);
1337 l_msg_count NUMBER;
1338 l_msg_data VARCHAR2(2000);
1339 l_create_update_flag VARCHAR2(1);
1340 l_debug_prefix VARCHAR2(30);
1341 BEGIN
1342 -- initialize API return status to success.
1343 x_return_status := FND_API.G_RET_STS_SUCCESS;
1344
1345 -- Initialize message list if p_init_msg_list is set to TRUE.
1346 IF FND_API.to_Boolean(p_init_msg_list) THEN
1347 FND_MSG_PUB.initialize;
1348 END IF;
1349
1350 -- Debug info.
1351 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1352 hz_utility_v2pub.debug(p_message=>'do_save_org_contact_bo(+)',
1353 p_prefix=>l_debug_prefix,
1354 p_msg_level=>fnd_log.level_procedure);
1355 END IF;
1356
1357 x_org_contact_id := p_org_contact_obj.org_contact_id;
1358 x_org_contact_os := p_org_contact_obj.orig_system;
1359 x_org_contact_osr := p_org_contact_obj.orig_system_reference;
1360
1361 -- check root business object to determine that it should be
1362 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
1363 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
1364 p_entity_id => x_org_contact_id,
1365 p_entity_os => x_org_contact_os,
1366 p_entity_osr => x_org_contact_osr,
1367 p_entity_type => 'HZ_ORG_CONTACTS',
1368 p_parent_id => px_parent_org_id,
1369 p_parent_obj_type => 'ORG'
1370 );
1371
1372 IF(l_create_update_flag = 'E') THEN
1373 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1374 FND_MESSAGE.SET_TOKEN('OBJECT', 'ORG_CONTACT');
1375 FND_MSG_PUB.ADD;
1376 RAISE FND_API.G_EXC_ERROR;
1377 END IF;
1378
1379 IF(l_create_update_flag = 'C') THEN
1380 do_create_org_contact_bo(
1381 p_init_msg_list => fnd_api.g_false,
1382 p_validate_bo_flag => p_validate_bo_flag,
1383 p_org_contact_obj => p_org_contact_obj,
1384 p_created_by_module => p_created_by_module,
1385 p_obj_source => p_obj_source,
1386 x_return_status => x_return_status,
1387 x_msg_count => x_msg_count,
1388 x_msg_data => x_msg_data,
1389 x_org_contact_id => x_org_contact_id,
1390 x_org_contact_os => x_org_contact_os,
1391 x_org_contact_osr => x_org_contact_osr,
1392 px_parent_org_id => px_parent_org_id,
1393 px_parent_org_os => px_parent_org_os,
1394 px_parent_org_osr => px_parent_org_osr
1395 );
1396 ELSIF(l_create_update_flag = 'U') THEN
1397 do_update_org_contact_bo(
1398 p_init_msg_list => fnd_api.g_false,
1399 p_org_contact_obj => p_org_contact_obj,
1400 p_created_by_module => p_created_by_module,
1401 p_obj_source => p_obj_source,
1402 x_return_status => x_return_status,
1403 x_msg_count => x_msg_count,
1404 x_msg_data => x_msg_data,
1405 x_org_contact_id => x_org_contact_id,
1406 x_org_contact_os => x_org_contact_os,
1407 x_org_contact_osr => x_org_contact_osr,
1408 p_parent_os => px_parent_org_os );
1409 ELSE
1410 RAISE FND_API.G_EXC_ERROR;
1411 END IF;
1412
1413 -- Debug info.
1414 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1415 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1416 p_msg_data=>x_msg_data,
1417 p_msg_type=>'WARNING',
1418 p_msg_level=>fnd_log.level_exception);
1419 END IF;
1420 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1421 hz_utility_v2pub.debug(p_message=>'do_save_org_contact_bo(-)',
1422 p_prefix=>l_debug_prefix,
1423 p_msg_level=>fnd_log.level_procedure);
1424 END IF;
1425
1426 EXCEPTION
1427 WHEN fnd_api.g_exc_error THEN
1428 x_return_status := fnd_api.g_ret_sts_error;
1429
1430 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1431 p_count => x_msg_count,
1432 p_data => x_msg_data);
1433
1434 -- Debug info.
1435 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1436 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1437 p_msg_data=>x_msg_data,
1438 p_msg_type=>'ERROR',
1439 p_msg_level=>fnd_log.level_error);
1440 END IF;
1441 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1442 hz_utility_v2pub.debug(p_message=>'do_save_org_contact_bo(-)',
1443 p_prefix=>l_debug_prefix,
1444 p_msg_level=>fnd_log.level_procedure);
1445 END IF;
1446 WHEN fnd_api.g_exc_unexpected_error THEN
1447 x_return_status := fnd_api.g_ret_sts_unexp_error;
1448
1449 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1450 p_count => x_msg_count,
1451 p_data => x_msg_data);
1452
1453 -- Debug info.
1454 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1455 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1456 p_msg_data=>x_msg_data,
1457 p_msg_type=>'UNEXPECTED ERROR',
1458 p_msg_level=>fnd_log.level_error);
1459 END IF;
1460 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1461 hz_utility_v2pub.debug(p_message=>'do_save_org_contact_bo(-)',
1462 p_prefix=>l_debug_prefix,
1463 p_msg_level=>fnd_log.level_procedure);
1464 END IF;
1465 WHEN OTHERS THEN
1466 x_return_status := fnd_api.g_ret_sts_unexp_error;
1467
1468 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1469 fnd_message.set_token('ERROR' ,SQLERRM);
1470 fnd_msg_pub.add;
1471
1472 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1473 p_count => x_msg_count,
1474 p_data => x_msg_data);
1475
1476 -- Debug info.
1477 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1478 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1479 p_msg_data=>x_msg_data,
1480 p_msg_type=>'SQL ERROR',
1481 p_msg_level=>fnd_log.level_error);
1482 END IF;
1483 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1484 hz_utility_v2pub.debug(p_message=>'do_save_org_contact_bo(-)',
1485 p_prefix=>l_debug_prefix,
1486 p_msg_level=>fnd_log.level_procedure);
1487 END IF;
1488 END do_save_org_contact_bo;
1489
1490 PROCEDURE save_org_contact_bo(
1491 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1492 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1493 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
1494 p_created_by_module IN VARCHAR2,
1495 x_return_status OUT NOCOPY VARCHAR2,
1496 x_msg_count OUT NOCOPY NUMBER,
1497 x_msg_data OUT NOCOPY VARCHAR2,
1498 x_org_contact_id OUT NOCOPY NUMBER,
1499 x_org_contact_os OUT NOCOPY VARCHAR2,
1500 x_org_contact_osr OUT NOCOPY VARCHAR2,
1501 px_parent_org_id IN OUT NOCOPY NUMBER,
1502 px_parent_org_os IN OUT NOCOPY VARCHAR2,
1503 px_parent_org_osr IN OUT NOCOPY VARCHAR2
1504 ) IS
1505 l_oc_obj HZ_ORG_CONTACT_BO;
1506 BEGIN
1507 l_oc_obj := p_org_contact_obj;
1508 do_save_org_contact_bo(
1509 p_init_msg_list => p_init_msg_list,
1510 p_validate_bo_flag => p_validate_bo_flag,
1511 p_org_contact_obj => l_oc_obj,
1512 p_created_by_module => p_created_by_module,
1513 p_obj_source => null,
1514 x_return_status => x_return_status,
1515 x_msg_count => x_msg_count,
1516 x_msg_data => x_msg_data,
1517 x_org_contact_id => x_org_contact_id,
1518 x_org_contact_os => x_org_contact_os,
1519 x_org_contact_osr => x_org_contact_osr,
1520 px_parent_org_id => px_parent_org_id,
1521 px_parent_org_os => px_parent_org_os,
1522 px_parent_org_osr => px_parent_org_osr
1523 );
1524 END save_org_contact_bo;
1525
1526 PROCEDURE save_org_contact_bo(
1527 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1528 p_org_contact_obj IN HZ_ORG_CONTACT_BO,
1529 p_created_by_module IN VARCHAR2,
1530 p_obj_source IN VARCHAR2 := null,
1531 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
1532 x_return_status OUT NOCOPY VARCHAR2,
1533 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
1534 x_return_obj OUT NOCOPY HZ_ORG_CONTACT_BO,
1535 x_org_contact_id OUT NOCOPY NUMBER,
1536 x_org_contact_os OUT NOCOPY VARCHAR2,
1537 x_org_contact_osr OUT NOCOPY VARCHAR2,
1538 px_parent_org_id IN OUT NOCOPY NUMBER,
1539 px_parent_org_os IN OUT NOCOPY VARCHAR2,
1540 px_parent_org_osr IN OUT NOCOPY VARCHAR2
1541 ) IS
1542 l_msg_data VARCHAR2(2000);
1543 l_msg_count NUMBER;
1544 l_oc_obj HZ_ORG_CONTACT_BO;
1545 BEGIN
1546 l_oc_obj := p_org_contact_obj;
1547 do_save_org_contact_bo(
1548 p_init_msg_list => fnd_api.g_true,
1549 p_validate_bo_flag => p_validate_bo_flag,
1550 p_org_contact_obj => l_oc_obj,
1551 p_created_by_module => p_created_by_module,
1552 p_obj_source => p_obj_source,
1553 x_return_status => x_return_status,
1554 x_msg_count => l_msg_count,
1555 x_msg_data => l_msg_data,
1556 x_org_contact_id => x_org_contact_id,
1557 x_org_contact_os => x_org_contact_os,
1558 x_org_contact_osr => x_org_contact_osr,
1559 px_parent_org_id => px_parent_org_id,
1560 px_parent_org_os => px_parent_org_os,
1561 px_parent_org_osr => px_parent_org_osr);
1562 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1563 x_return_status => x_return_status,
1564 x_msg_count => l_msg_count,
1565 x_msg_data => l_msg_data);
1566 IF FND_API.to_Boolean(p_return_obj_flag) THEN
1567 x_return_obj := l_oc_obj;
1568 END IF;
1569 END save_org_contact_bo;
1570
1571 --------------------------------------
1572 --
1573 -- PROCEDURE get_org_contact_bos
1574 --
1575 -- DESCRIPTION
1576 -- Get org contact information.
1577 --
1578 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1579 --
1580 -- ARGUMENTS
1581 -- IN:
1582 -- p_init_msg_list Initialize message stack if it is set to FND_API.G_TRUE. Default is FND_API.G_FALSE.
1583 -- p_org_contact_id Org Contact id.
1584 -- p_org_contact_os Org contact orig system.
1585 -- p_org_contact_osr Org contact orig system reference.
1586 --
1587 -- OUT:
1588 -- x_org contact_objs Table of org contact objects.
1589 -- x_return_status Return status after the call. The status can
1590 -- be fnd_api.g_ret_sts_success (success),
1591 -- fnd_api.g_ret_sts_error (error),
1592 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1593 -- x_msg_count Number of messages in message stack.
1594 -- x_msg_data Message text if x_msg_count is 1.
1595 --
1596 -- NOTES
1597 --
1598 -- MODIFICATION HISTORY
1599 --
1600 --
1601 -- 15-June-2005 AWU Created.
1602 --
1603
1604
1605
1606 PROCEDURE get_org_contact_bo(
1607 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1608 p_org_contact_id IN NUMBER,
1609 p_org_contact_os IN VARCHAR2,
1610 p_org_contact_osr IN VARCHAR2,
1611 x_org_contact_obj OUT NOCOPY HZ_ORG_CONTACT_BO,
1612 x_return_status OUT NOCOPY VARCHAR2,
1613 x_msg_count OUT NOCOPY NUMBER,
1614 x_msg_data OUT NOCOPY VARCHAR2
1615 ) is
1616 l_debug_prefix VARCHAR2(30) := '';
1617
1618 l_org_contact_id number;
1619 l_org_contact_os varchar2(30);
1620 l_org_contact_osr varchar2(255);
1621 l_org_contact_objs HZ_ORG_CONTACT_BO_TBL;
1622 BEGIN
1623
1624 -- initialize API return status to success.
1625 x_return_status := FND_API.G_RET_STS_SUCCESS;
1626
1627 -- Initialize message list if p_init_msg_list is set to TRUE
1628 IF FND_API.to_Boolean(p_init_msg_list) THEN
1629 FND_MSG_PUB.initialize;
1630 END IF;
1631
1632
1633 -- Debug info.
1634 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1635 hz_utility_v2pub.debug(p_message=>'hz_org_contact_bo_pub.get_org_contact_bo(+)',
1636 p_prefix=>l_debug_prefix,
1637 p_msg_level=>fnd_log.level_procedure);
1638 END IF;
1639
1640 -- check if pass in contact_point_id and/or os+osr
1641 -- extraction validation logic is same as update
1642
1643 l_org_contact_id := p_org_contact_id;
1644 l_org_contact_os := p_org_contact_os;
1645 l_org_contact_osr := p_org_contact_osr;
1646
1647 HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
1648 px_id => l_org_contact_id,
1649 px_os => l_org_contact_os,
1650 px_osr => l_org_contact_osr,
1651 p_obj_type => 'HZ_ORG_CONTACTS',
1652 x_return_status => x_return_status,
1653 x_msg_count => x_msg_count,
1654 x_msg_data => x_msg_data);
1655
1656 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1657 RAISE fnd_api.g_exc_error;
1658 END IF;
1659
1660 HZ_EXTRACT_ORG_CONT_BO_PVT.get_org_contact_bos
1661 (p_init_msg_list => fnd_api.g_false,
1662 p_organization_id => NULL,
1663 p_org_contact_id => l_org_contact_id,
1664 p_action_type => NULL,
1665 x_org_contact_objs => l_org_contact_objs,
1666 x_return_status => x_return_status,
1667 x_msg_count => x_msg_count,
1668 x_msg_data => x_msg_data);
1669
1670 x_org_contact_obj := l_org_contact_objs(1);
1671 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1672 RAISE FND_API.G_EXC_ERROR;
1673 END IF;
1674
1675
1676 -- Debug info.
1677 IF fnd_log.level_exception>=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=>'WARNING',
1681 p_msg_level=>fnd_log.level_exception);
1682 END IF;
1683
1684 -- Debug info.
1685 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1686 hz_utility_v2pub.debug(p_message=>'hz_org_contact_bo_pub.get_org_contact_bo (-)',
1687 p_prefix=>l_debug_prefix,
1688 p_msg_level=>fnd_log.level_procedure);
1689 END IF;
1690
1691
1692 EXCEPTION
1693
1694 WHEN fnd_api.g_exc_error THEN
1695 x_return_status := fnd_api.g_ret_sts_error;
1696
1697 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1698 p_count => x_msg_count,
1699 p_data => x_msg_data);
1700
1701 -- Debug info.
1702 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1703 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1704 p_msg_data=>x_msg_data,
1705 p_msg_type=>'ERROR',
1706 p_msg_level=>fnd_log.level_error);
1707 END IF;
1708 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1709 hz_utility_v2pub.debug(p_message=>'hz_org_contact_bo_pub.get_org_contact_bo (-)',
1710 p_prefix=>l_debug_prefix,
1711 p_msg_level=>fnd_log.level_procedure);
1712 END IF;
1713 WHEN fnd_api.g_exc_unexpected_error THEN
1714 x_return_status := fnd_api.g_ret_sts_unexp_error;
1715
1716 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1717 p_count => x_msg_count,
1718 p_data => x_msg_data);
1719
1720 -- Debug info.
1721 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1722 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1723 p_msg_data=>x_msg_data,
1724 p_msg_type=>'UNEXPECTED ERROR',
1725 p_msg_level=>fnd_log.level_error);
1726 END IF;
1727 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1728 hz_utility_v2pub.debug(p_message=>'hz_org_contact_bo_pub.get_org_contact_bo (-)',
1729 p_prefix=>l_debug_prefix,
1730 p_msg_level=>fnd_log.level_procedure);
1731 END IF;
1732 WHEN OTHERS THEN
1733 x_return_status := fnd_api.g_ret_sts_unexp_error;
1734
1735 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1736 fnd_message.set_token('ERROR' ,SQLERRM);
1737 fnd_msg_pub.add;
1738
1739 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1740 p_count => x_msg_count,
1741 p_data => x_msg_data);
1742
1743 -- Debug info.
1744 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1745 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1746 p_msg_data=>x_msg_data,
1747 p_msg_type=>'SQL ERROR',
1748 p_msg_level=>fnd_log.level_error);
1749 END IF;
1750 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1751 hz_utility_v2pub.debug(p_message=>'hz_org_contact_bo_pub.get_org_contact_bo (-)',
1752 p_prefix=>l_debug_prefix,
1753 p_msg_level=>fnd_log.level_procedure);
1754 END IF;
1755
1756 end;
1757
1758 PROCEDURE get_org_contact_bo(
1759 p_org_contact_id IN NUMBER,
1760 p_org_contact_os IN VARCHAR2,
1761 p_org_contact_osr IN VARCHAR2,
1762 x_org_contact_obj OUT NOCOPY HZ_ORG_CONTACT_BO,
1763 x_return_status OUT NOCOPY VARCHAR2,
1764 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
1765 ) IS
1766 l_msg_data VARCHAR2(2000);
1767 l_msg_count NUMBER;
1768 BEGIN
1769 get_org_contact_bo(
1770 p_init_msg_list => fnd_api.g_true,
1771 p_org_contact_id => p_org_contact_id,
1772 p_org_contact_os => p_org_contact_os,
1773 p_org_contact_osr => p_org_contact_osr,
1774 x_org_contact_obj => x_org_contact_obj,
1775 x_return_status => x_return_status,
1776 x_msg_count => l_msg_count,
1777 x_msg_data => l_msg_data);
1778 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1779 x_return_status => x_return_status,
1780 x_msg_count => l_msg_count,
1781 x_msg_data => l_msg_data);
1782 END get_org_contact_bo;
1783
1784 END hz_org_contact_bo_pub;