[Home] [Help]
PACKAGE BODY: APPS.HZ_CUST_ACCT_CONTACT_BO_PUB
Source
1 PACKAGE BODY hz_cust_acct_contact_bo_pub AS
2 /*$Header: ARHBCRBB.pls 120.17 2008/02/20 19:27:26 awu ship $ */
3
4 -- PRIVATE PROCEDURE assign_cust_acct_role_rec
5 --
6 -- DESCRIPTION
7 -- Assign attribute value from customer account contact object to plsql record.
8 --
9 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10 --
11 -- ARGUMENTS
12 -- IN:
13 -- p_cust_acct_role_obj Customer account contact object.
14 -- p_party_id Party Id.
15 -- p_cust_acct_id Customer account Id.
16 -- p_cust_acct_site_id Customer account site Id.
17 -- p_cust_acct_contact_id Customer account contact Id.
18 -- p_cust_acct_contact_os Customer account contact original system.
19 -- p_cust_acct_contact_osr Customer account contact original system reference.
20 -- p_create_or_update Create or update flag.
21 -- IN/OUT:
22 -- px_cust_acct_role_rec Customer Account Contact plsql record.
23 --
24 -- NOTES
25 --
26 -- MODIFICATION HISTORY
27 --
28 -- 14-DEC-2004 Arnold Ng Created.
29 --
30
31 PROCEDURE assign_cust_acct_role_rec(
32 p_cust_acct_role_obj IN HZ_CUST_ACCT_CONTACT_BO,
33 p_party_id IN NUMBER,
34 p_cust_acct_id IN NUMBER,
35 p_cust_acct_site_id IN NUMBER,
36 p_cust_acct_contact_id IN NUMBER,
37 p_cust_acct_contact_os IN VARCHAR2,
38 p_cust_acct_contact_osr IN VARCHAR2,
39 p_create_or_update IN VARCHAR2 := 'C',
40 px_cust_account_role_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_ROLE_V2PUB.CUST_ACCOUNT_ROLE_REC_TYPE
41 );
42
43 -- PRIVATE PROCEDURE assign_cust_acct_role_rec
44 --
45 -- DESCRIPTION
46 -- Assign attribute value from customer account contact object to plsql record.
47 --
48 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
49 --
50 -- ARGUMENTS
51 -- IN:
52 -- p_cust_acct_role_obj Customer account contact object.
53 -- p_party_id Party Id.
54 -- p_cust_acct_id Customer account Id.
55 -- p_cust_acct_site_id Customer account site Id.
56 -- p_cust_acct_contact_id Customer account contact Id.
57 -- p_cust_acct_contact_os Customer account contact original system.
58 -- p_cust_acct_contact_osr Customer account contact original system reference.
59 -- p_create_or_update Create or update flag.
60 -- IN/OUT:
61 -- px_cust_acct_role_rec Customer Account Contact plsql record.
62 --
63 -- NOTES
64 --
65 -- MODIFICATION HISTORY
66 --
67 -- 14-DEC-2004 Arnold Ng Created.
68 --
69
70 PROCEDURE assign_cust_acct_role_rec(
71 p_cust_acct_role_obj IN HZ_CUST_ACCT_CONTACT_BO,
72 p_party_id IN NUMBER,
73 p_cust_acct_id IN NUMBER,
74 p_cust_acct_site_id IN NUMBER,
75 p_cust_acct_contact_id IN NUMBER,
76 p_cust_acct_contact_os IN VARCHAR2,
77 p_cust_acct_contact_osr IN VARCHAR2,
78 p_create_or_update IN VARCHAR2 := 'C',
79 px_cust_account_role_rec IN OUT NOCOPY HZ_CUST_ACCOUNT_ROLE_V2PUB.CUST_ACCOUNT_ROLE_REC_TYPE
80 ) IS
81 BEGIN
82 px_cust_account_role_rec.cust_account_role_id := p_cust_acct_contact_id;
83 px_cust_account_role_rec.party_id := p_party_id;
84 px_cust_account_role_rec.cust_account_id := p_cust_acct_id;
85 px_cust_account_role_rec.cust_acct_site_id := p_cust_acct_site_id;
86 IF(p_cust_acct_role_obj.primary_flag in ('Y','N')) THEN
87 px_cust_account_role_rec.primary_flag := p_cust_acct_role_obj.primary_flag;
88 END IF;
89 px_cust_account_role_rec.role_type := p_cust_acct_role_obj.role_type;
90 px_cust_account_role_rec.source_code := p_cust_acct_role_obj.source_code;
91 px_cust_account_role_rec.attribute_category := p_cust_acct_role_obj.attribute_category;
92 px_cust_account_role_rec.attribute1 := p_cust_acct_role_obj.attribute1;
93 px_cust_account_role_rec.attribute2 := p_cust_acct_role_obj.attribute2;
94 px_cust_account_role_rec.attribute3 := p_cust_acct_role_obj.attribute3;
95 px_cust_account_role_rec.attribute4 := p_cust_acct_role_obj.attribute4;
96 px_cust_account_role_rec.attribute5 := p_cust_acct_role_obj.attribute5;
97 px_cust_account_role_rec.attribute6 := p_cust_acct_role_obj.attribute6;
98 px_cust_account_role_rec.attribute7 := p_cust_acct_role_obj.attribute7;
99 px_cust_account_role_rec.attribute8 := p_cust_acct_role_obj.attribute8;
100 px_cust_account_role_rec.attribute9 := p_cust_acct_role_obj.attribute9;
101 px_cust_account_role_rec.attribute10 := p_cust_acct_role_obj.attribute10;
102 px_cust_account_role_rec.attribute11 := p_cust_acct_role_obj.attribute11;
103 px_cust_account_role_rec.attribute12 := p_cust_acct_role_obj.attribute12;
104 px_cust_account_role_rec.attribute13 := p_cust_acct_role_obj.attribute13;
105 px_cust_account_role_rec.attribute14 := p_cust_acct_role_obj.attribute14;
106 px_cust_account_role_rec.attribute15 := p_cust_acct_role_obj.attribute15;
107 px_cust_account_role_rec.attribute16 := p_cust_acct_role_obj.attribute16;
108 px_cust_account_role_rec.attribute17 := p_cust_acct_role_obj.attribute17;
109 px_cust_account_role_rec.attribute18 := p_cust_acct_role_obj.attribute18;
110 px_cust_account_role_rec.attribute19 := p_cust_acct_role_obj.attribute19;
111 px_cust_account_role_rec.attribute20 := p_cust_acct_role_obj.attribute20;
112 px_cust_account_role_rec.attribute21 := p_cust_acct_role_obj.attribute21;
113 px_cust_account_role_rec.attribute22 := p_cust_acct_role_obj.attribute22;
114 px_cust_account_role_rec.attribute23 := p_cust_acct_role_obj.attribute23;
115 px_cust_account_role_rec.attribute24 := p_cust_acct_role_obj.attribute24;
116 px_cust_account_role_rec.attribute25 := p_cust_acct_role_obj.attribute25;
117 IF(p_cust_acct_role_obj.status in ('A','I')) THEN
118 px_cust_account_role_rec.status := p_cust_acct_role_obj.status;
119 END IF;
120 IF(p_create_or_update = 'C') THEN
121 px_cust_account_role_rec.orig_system := p_cust_acct_contact_os;
122 px_cust_account_role_rec.orig_system_reference := p_cust_acct_contact_osr;
123 px_cust_account_role_rec.created_by_module := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
124 END IF;
125 END assign_cust_acct_role_rec;
126
127 -- PROCEDURE do_create_cac_bo
128 --
129 -- DESCRIPTION
130 -- Create customer account contact business object.
131 PROCEDURE do_create_cac_bo(
132 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
133 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
134 p_cust_acct_contact_obj IN OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
135 p_created_by_module IN VARCHAR2,
136 p_obj_source IN VARCHAR2 := null,
137 x_return_status OUT NOCOPY VARCHAR2,
138 x_msg_count OUT NOCOPY NUMBER,
139 x_msg_data OUT NOCOPY VARCHAR2,
140 x_cust_acct_contact_id OUT NOCOPY NUMBER,
141 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
142 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2,
143 px_parent_id IN OUT NOCOPY NUMBER,
144 px_parent_os IN OUT NOCOPY VARCHAR2,
145 px_parent_osr IN OUT NOCOPY VARCHAR2,
146 px_parent_obj_type IN OUT NOCOPY VARCHAR2
147 ) IS
148 l_debug_prefix VARCHAR2(30) := '';
149 l_cust_acct_role_rec HZ_CUST_ACCOUNT_ROLE_V2PUB.CUST_ACCOUNT_ROLE_REC_TYPE;
150 l_role_responsibility_rec HZ_CUST_ACCOUNT_ROLE_V2PUB.ROLE_RESPONSIBILITY_REC_TYPE;
151 l_oc_id NUMBER;
152 l_oc_os VARCHAR2(30);
153 l_oc_osr VARCHAR2(255);
154 l_per_id NUMBER;
155 l_obj_party_id NUMBER;
156 l_party_type VARCHAR2(30);
157 l_ca_id NUMBER;
158 l_cas_id NUMBER;
159 l_rel_party_id NUMBER;
160 l_rel_ovn NUMBER;
161 l_valid_obj BOOLEAN;
162 l_bus_object HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
163 l_rel_obj HZ_RELATIONSHIP_OBJ_TBL;
164 l_valid_per VARCHAR2(1);
165
166 CURSOR get_cas_party_id(l_cas_id NUMBER) IS
167 SELECT ca.cust_account_id, cas.cust_acct_site_id, ca.party_id, p.party_type
168 FROM HZ_CUST_ACCT_SITES cas, HZ_CUST_ACCOUNTS ca, HZ_PARTIES p
169 WHERE cas.cust_acct_site_id = l_cas_id
170 AND cas.cust_account_id = ca.cust_account_id
171 AND ca.party_id = p.party_id
172 AND p.status in ('A','I')
173 AND rownum = 1;
174
175 CURSOR get_ca_party_id(l_ca_id NUMBER) IS
176 SELECT ca.cust_account_id, ca.party_id, p.party_type
177 FROM HZ_CUST_ACCOUNTS ca, HZ_PARTIES p
178 WHERE ca.cust_account_id = l_ca_id
179 AND ca.party_id = p.party_id
180 AND p.status in ('A','I')
181 AND rownum = 1;
182
183 CURSOR get_contact_rel_noid(l_per_id NUMBER, l_obj_id NUMBER, l_rel_code VARCHAR2, l_rel_type VARCHAR2) IS
184 SELECT r.party_id
185 FROM HZ_RELATIONSHIPS r
186 WHERE r.subject_id = l_per_id
187 AND r.subject_type = 'PERSON'
188 AND r.object_id = l_obj_id
189 AND r.relationship_type = l_rel_type
190 AND r.relationship_code = l_rel_code
191 AND sysdate between r.start_date and nvl(r.end_date, sysdate);
192
193 CURSOR get_contact_rel(l_per_id NUMBER, l_obj_id NUMBER, l_rel_id NUMBER) IS
194 SELECT r.party_id
195 FROM HZ_RELATIONSHIPS r
196 WHERE r.relationship_id = l_rel_id
197 AND r.subject_id = l_per_id
198 AND r.subject_type = 'PERSON'
199 AND r.object_id = l_obj_id
200 AND sysdate between r.start_date and nvl(r.end_date, sysdate);
201 BEGIN
202 -- Standard start of API savepoint
203 SAVEPOINT do_create_cac_bo_pub;
204
205 -- initialize API return status to success.
206 x_return_status := FND_API.G_RET_STS_SUCCESS;
207
208 -- Initialize message list if p_init_msg_list is set to TRUE.
209 IF FND_API.to_Boolean(p_init_msg_list) THEN
210 FND_MSG_PUB.initialize;
211 END IF;
212
213 -- initialize Global variable
214 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
215 IF(p_created_by_module IS NULL) THEN
216 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
217 ELSE
218 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
219 END IF;
220
221 -- Debug info.
222 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
223 hz_utility_v2pub.debug(p_message=>'do_create_cac_bo(+)',
224 p_prefix=>l_debug_prefix,
225 p_msg_level=>fnd_log.level_procedure);
226 END IF;
227
228 -- Base on p_validate_bo_flag, check the completeness of business objects
229 IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
230 HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
231 p_bus_object_code => 'CUST_ACCT_CONTACT',
232 x_bus_object => l_bus_object
233 );
234 l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_cac_bo_comp(
235 p_cac_objs => HZ_CUST_ACCT_CONTACT_BO_TBL(p_cust_acct_contact_obj),
236 p_bus_object => l_bus_object
237 );
238 IF NOT(l_valid_obj) THEN
239 RAISE fnd_api.g_exc_error;
240 END IF;
241 END IF;
242
243 -- check pass in parent_id and parent_os+osr
244 hz_registry_validate_bo_pvt.validate_parent_id(
245 px_parent_id => px_parent_id,
246 px_parent_os => px_parent_os,
247 px_parent_osr => px_parent_osr,
248 p_parent_obj_type => px_parent_obj_type,
249 x_return_status => x_return_status,
250 x_msg_count => x_msg_count,
251 x_msg_data => x_msg_data);
252
253 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
254 RAISE FND_API.G_EXC_ERROR;
255 END IF;
256
257 x_cust_acct_contact_id := p_cust_acct_contact_obj.cust_acct_contact_id;
258 x_cust_acct_contact_os := p_cust_acct_contact_obj.orig_system;
259 x_cust_acct_contact_osr := p_cust_acct_contact_obj.orig_system_reference;
260 l_cas_id := p_cust_acct_contact_obj.cust_acct_site_id;
261
262 -- check if pass in cust_account_role_id and os+osr
263 hz_registry_validate_bo_pvt.validate_ssm_id(
264 px_id => x_cust_acct_contact_id,
265 px_os => x_cust_acct_contact_os,
266 px_osr => x_cust_acct_contact_osr,
267 p_obj_type => 'HZ_CUST_ACCOUNT_ROLES',
268 p_create_or_update => 'C',
269 x_return_status => x_return_status,
270 x_msg_count => x_msg_count,
271 x_msg_data => x_msg_data);
272
273 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
274 RAISE FND_API.G_EXC_ERROR;
275 END IF;
276
277 -- From px_parent_id, get parent party_id
278
279 OPEN get_ca_party_id(px_parent_id);
280 FETCH get_ca_party_id INTO l_ca_id, l_obj_party_id, l_party_type;
281 CLOSE get_ca_party_id;
282
283
284 -- check if the relationship already exist
285 l_per_id := p_cust_acct_contact_obj.contact_person_id;
286 IF(l_per_id IS NULL) THEN
287 l_per_id := HZ_REGISTRY_VALIDATE_BO_PVT.get_id_from_ososr(
288 p_os => p_cust_acct_contact_obj.contact_person_os,
289 p_osr => p_cust_acct_contact_obj.contact_person_osr,
290 p_owner_table_name => 'HZ_PARTIES'
291 );
292 END IF;
293
294 IF(p_cust_acct_contact_obj.relationship_id IS NOT NULL) THEN
295 OPEN get_contact_rel(l_per_id, l_obj_party_id,
296 p_cust_acct_contact_obj.relationship_id);
297 FETCH get_contact_rel INTO l_rel_party_id;
298 CLOSE get_contact_rel;
299 ELSE
300 OPEN get_contact_rel_noid(l_per_id, l_obj_party_id,
304 CLOSE get_contact_rel_noid;
301 p_cust_acct_contact_obj.relationship_code,
302 p_cust_acct_contact_obj.relationship_type);
303 FETCH get_contact_rel_noid INTO l_rel_party_id;
305 END IF;
306
307 IF(l_rel_party_id IS NULL) THEN
308 FND_MESSAGE.SET_NAME('AR','HZ_API_INVALID_FK');
309 FND_MESSAGE.SET_TOKEN('FK','RELATIONSHIP');
310 FND_MESSAGE.SET_TOKEN('COLUMN','RELATIONSHIIP_ID, RELATIONSHIP_CODE, RELATIONSHIP_TYPE');
311 FND_MESSAGE.SET_TOKEN('TABLE','HZ_RELATIONSHIPS');
312 FND_MSG_PUB.ADD();
313 RAISE FND_API.G_EXC_ERROR;
314 END IF;
315
316 ----------------------------------
317 -- Assign cust account role record
318 ----------------------------------
319 -- party_id is the party_id of the org contact relationship --
320
321 assign_cust_acct_role_rec(
322 p_cust_acct_role_obj => p_cust_acct_contact_obj,
323 p_party_id => l_rel_party_id,
324 p_cust_acct_id => l_ca_id,
325 p_cust_acct_site_id => l_cas_id,
326 p_cust_acct_contact_id => x_cust_acct_contact_id,
327 p_cust_acct_contact_os => x_cust_acct_contact_os,
328 p_cust_acct_contact_osr => x_cust_acct_contact_osr,
329 px_cust_account_role_rec => l_cust_acct_role_rec
330 );
331
332 HZ_CUST_ACCOUNT_ROLE_V2PUB.create_cust_account_role (
333 p_cust_account_role_rec => l_cust_acct_role_rec,
334 x_cust_account_role_id => x_cust_acct_contact_id,
335 x_return_status => x_return_status,
336 x_msg_count => x_msg_count,
337 x_msg_data => x_msg_data
338 );
339
340 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
341 RAISE FND_API.G_EXC_ERROR;
342 END IF;
343
344 -- assign cust_acct_contact_id
345 p_cust_acct_contact_obj.cust_acct_contact_id := x_cust_acct_contact_id;
346 -------------------------------------
347 -- Call role responsibility v2pub api
348 -------------------------------------
349 IF((p_cust_acct_contact_obj.contact_role_objs IS NOT NULL) AND
350 (p_cust_acct_contact_obj.contact_role_objs.COUNT > 0)) THEN
351 HZ_CUST_ACCT_CONTACT_BO_PVT.create_role_responsibilities(
352 p_rr_objs => p_cust_acct_contact_obj.contact_role_objs,
353 p_cac_id => x_cust_acct_contact_id,
354 x_return_status => x_return_status,
355 x_msg_count => x_msg_count,
356 x_msg_data => x_msg_data
357 );
358
359 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
360 RAISE FND_API.G_EXC_ERROR;
361 END IF;
362 END IF;
363
364 -- reset Global variable
365 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
366 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
367
368 -- Debug info.
369 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
370 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
371 p_msg_data=>x_msg_data,
372 p_msg_type=>'WARNING',
373 p_msg_level=>fnd_log.level_exception);
374 END IF;
375 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
376 hz_utility_v2pub.debug(p_message=>'do_create_cac_bo(-)',
377 p_prefix=>l_debug_prefix,
378 p_msg_level=>fnd_log.level_procedure);
379 END IF;
380
381 EXCEPTION
382 WHEN fnd_api.g_exc_error THEN
383 ROLLBACK TO do_create_cac_bo_pub;
384
385 -- reset Global variable
386 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
387 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
388
389 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
390 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_CONTACT');
391 FND_MSG_PUB.ADD;
392
393 x_return_status := fnd_api.g_ret_sts_error;
394
395 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
396 p_count => x_msg_count,
397 p_data => x_msg_data);
398
399 -- Debug info.
400 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
401 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
402 p_msg_data=>x_msg_data,
403 p_msg_type=>'ERROR',
404 p_msg_level=>fnd_log.level_error);
405 END IF;
406 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
407 hz_utility_v2pub.debug(p_message=>'do_create_cac_bo(-)',
408 p_prefix=>l_debug_prefix,
409 p_msg_level=>fnd_log.level_procedure);
410 END IF;
411
412 WHEN fnd_api.g_exc_unexpected_error THEN
413 ROLLBACK TO do_create_cac_bo_pub;
414
415 -- reset Global variable
416 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
417 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
418
419 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
420 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_CONTACT');
421 FND_MSG_PUB.ADD;
422
423 x_return_status := fnd_api.g_ret_sts_unexp_error;
424
425 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
426 p_count => x_msg_count,
427 p_data => x_msg_data);
428
429 -- Debug info.
430 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
431 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
435 END IF;
432 p_msg_data=>x_msg_data,
433 p_msg_type=>'UNEXPECTED ERROR',
434 p_msg_level=>fnd_log.level_error);
436 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
437 hz_utility_v2pub.debug(p_message=>'do_create_cac_bo(-)',
438 p_prefix=>l_debug_prefix,
439 p_msg_level=>fnd_log.level_procedure);
440 END IF;
441
442 WHEN OTHERS THEN
443 ROLLBACK TO do_create_cac_bo_pub;
444
445 -- reset Global variable
446 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
447 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
448
449 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
450 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_CONTACT');
451 FND_MSG_PUB.ADD;
452
453 x_return_status := fnd_api.g_ret_sts_unexp_error;
454
455 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
456 fnd_message.set_token('ERROR' ,SQLERRM);
457 fnd_msg_pub.add;
458
459 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
460 p_count => x_msg_count,
461 p_data => x_msg_data);
462
463 -- Debug info.
464 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
465 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
466 p_msg_data=>x_msg_data,
467 p_msg_type=>'SQL ERROR',
468 p_msg_level=>fnd_log.level_error);
469 END IF;
470 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
471 hz_utility_v2pub.debug(p_message=>'do_create_cac_bo(-)',
472 p_prefix=>l_debug_prefix,
473 p_msg_level=>fnd_log.level_procedure);
474 END IF;
475 END do_create_cac_bo;
476
477 PROCEDURE create_cust_acct_contact_bo(
478 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
479 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
480 p_cust_acct_contact_obj IN HZ_CUST_ACCT_CONTACT_BO,
481 p_created_by_module IN VARCHAR2,
482 x_return_status OUT NOCOPY VARCHAR2,
483 x_msg_count OUT NOCOPY NUMBER,
484 x_msg_data OUT NOCOPY VARCHAR2,
485 x_cust_acct_contact_id OUT NOCOPY NUMBER,
486 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
487 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2,
488 px_parent_id IN OUT NOCOPY NUMBER,
489 px_parent_os IN OUT NOCOPY VARCHAR2,
490 px_parent_osr IN OUT NOCOPY VARCHAR2,
491 px_parent_obj_type IN OUT NOCOPY VARCHAR2
492 ) IS
493 l_cac_obj HZ_CUST_ACCT_CONTACT_BO;
494 BEGIN
495 l_cac_obj := p_cust_acct_contact_obj;
496 do_create_cac_bo(
497 p_init_msg_list => p_init_msg_list,
498 p_validate_bo_flag => p_validate_bo_flag,
499 p_cust_acct_contact_obj => l_cac_obj,
500 p_created_by_module => p_created_by_module,
501 p_obj_source => null,
502 x_return_status => x_return_status,
503 x_msg_count => x_msg_count,
504 x_msg_data => x_msg_data,
505 x_cust_acct_contact_id => x_cust_acct_contact_id,
506 x_cust_acct_contact_os => x_cust_acct_contact_os,
507 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
508 px_parent_id => px_parent_id,
509 px_parent_os => px_parent_os,
510 px_parent_osr => px_parent_osr,
511 px_parent_obj_type => px_parent_obj_type
512 );
513 END create_cust_acct_contact_bo;
514
515 PROCEDURE create_cust_acct_contact_bo(
516 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
517 p_cust_acct_contact_obj IN HZ_CUST_ACCT_CONTACT_BO,
518 p_created_by_module IN VARCHAR2,
519 p_obj_source IN VARCHAR2 := null,
520 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
521 x_return_status OUT NOCOPY VARCHAR2,
522 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
523 x_return_obj OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
524 x_cust_acct_contact_id OUT NOCOPY NUMBER,
525 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
526 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2,
527 px_parent_id IN OUT NOCOPY NUMBER,
528 px_parent_os IN OUT NOCOPY VARCHAR2,
529 px_parent_osr IN OUT NOCOPY VARCHAR2,
530 px_parent_obj_type IN OUT NOCOPY VARCHAR2
531 ) IS
532 l_msg_data VARCHAR2(2000);
533 l_msg_count NUMBER;
534 l_cac_obj HZ_CUST_ACCT_CONTACT_BO;
535 BEGIN
536 l_cac_obj := p_cust_acct_contact_obj;
537 do_create_cac_bo(
538 p_init_msg_list => fnd_api.g_true,
539 p_validate_bo_flag => p_validate_bo_flag,
540 p_cust_acct_contact_obj => l_cac_obj,
541 p_created_by_module => p_created_by_module,
542 p_obj_source => null,
543 x_return_status => x_return_status,
544 x_msg_count => l_msg_count,
545 x_msg_data => l_msg_data,
546 x_cust_acct_contact_id => x_cust_acct_contact_id,
547 x_cust_acct_contact_os => x_cust_acct_contact_os,
548 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
549 px_parent_id => px_parent_id,
550 px_parent_os => px_parent_os,
554 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
551 px_parent_osr => px_parent_osr,
552 px_parent_obj_type => px_parent_obj_type
553 );
555 x_return_status => x_return_status,
556 x_msg_count => l_msg_count,
557 x_msg_data => l_msg_data);
558 IF FND_API.to_Boolean(p_return_obj_flag) THEN
559 x_return_obj := l_cac_obj;
560 END IF;
561 END create_cust_acct_contact_bo;
562
563 -- PROCEDURE update_cust_acct_contact_bo
564 --
565 -- DESCRIPTION
566 -- Update customer account contact business object.
567 PROCEDURE update_cust_acct_contact_bo(
568 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
569 p_cust_acct_contact_obj IN HZ_CUST_ACCT_CONTACT_BO,
570 p_created_by_module IN VARCHAR2,
571 x_return_status OUT NOCOPY VARCHAR2,
572 x_msg_count OUT NOCOPY NUMBER,
573 x_msg_data OUT NOCOPY VARCHAR2,
574 x_cust_acct_contact_id OUT NOCOPY NUMBER,
575 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
576 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2
577 )IS
578 l_cac_obj HZ_CUST_ACCT_CONTACT_BO;
579 BEGIN
580 l_cac_obj := p_cust_acct_contact_obj;
581 do_update_cac_bo(
582 p_init_msg_list => p_init_msg_list,
583 p_cust_acct_contact_obj => l_cac_obj,
584 p_created_by_module => p_created_by_module,
585 p_obj_source => null,
586 x_return_status => x_return_status,
587 x_msg_count => x_msg_count,
588 x_msg_data => x_msg_data,
589 x_cust_acct_contact_id => x_cust_acct_contact_id,
590 x_cust_acct_contact_os => x_cust_acct_contact_os,
591 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
592 p_parent_os => NULL
593 );
594 END update_cust_acct_contact_bo;
595
596 PROCEDURE update_cust_acct_contact_bo(
597 p_cust_acct_contact_obj IN HZ_CUST_ACCT_CONTACT_BO,
598 p_created_by_module IN VARCHAR2,
599 p_obj_source IN VARCHAR2 := null,
600 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
601 x_return_status OUT NOCOPY VARCHAR2,
602 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
603 x_return_obj OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
604 x_cust_acct_contact_id OUT NOCOPY NUMBER,
605 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
606 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2
607 )IS
608 l_msg_data VARCHAR2(2000);
609 l_msg_count NUMBER;
610 l_cac_obj HZ_CUST_ACCT_CONTACT_BO;
611 BEGIN
612 l_cac_obj := p_cust_acct_contact_obj;
613 do_update_cac_bo(
614 p_init_msg_list => fnd_api.g_true,
615 p_cust_acct_contact_obj => l_cac_obj,
616 p_created_by_module => p_created_by_module,
617 p_obj_source => p_obj_source,
618 x_return_status => x_return_status,
619 x_msg_count => l_msg_count,
620 x_msg_data => l_msg_data,
621 x_cust_acct_contact_id => x_cust_acct_contact_id,
622 x_cust_acct_contact_os => x_cust_acct_contact_os,
623 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
624 p_parent_os => NULL
625 );
626 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
627 x_return_status => x_return_status,
628 x_msg_count => l_msg_count,
629 x_msg_data => l_msg_data);
630 IF FND_API.to_Boolean(p_return_obj_flag) THEN
631 x_return_obj := l_cac_obj;
632 END IF;
633 END update_cust_acct_contact_bo;
634
635 PROCEDURE do_update_cac_bo(
636 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
637 p_cust_acct_contact_obj IN OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
638 p_created_by_module IN VARCHAR2,
639 p_obj_source IN VARCHAR2 := null,
640 x_return_status OUT NOCOPY VARCHAR2,
641 x_msg_count OUT NOCOPY NUMBER,
642 x_msg_data OUT NOCOPY VARCHAR2,
643 x_cust_acct_contact_id OUT NOCOPY NUMBER,
644 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
645 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2,
646 p_parent_os IN VARCHAR2
647 )IS
648 l_debug_prefix VARCHAR2(30) := '';
649 l_cust_acct_role_rec HZ_CUST_ACCOUNT_ROLE_V2PUB.CUST_ACCOUNT_ROLE_REC_TYPE;
650 l_role_responsibility_rec HZ_CUST_ACCOUNT_ROLE_V2PUB.ROLE_RESPONSIBILITY_REC_TYPE;
651 l_car_ovn NUMBER;
652 l_create_update_flag VARCHAR2(1);
653 l_parent_os VARCHAR2(30);
654 l_org_contact_id NUMBER;
655 l_org_contact_os VARCHAR2(30);
656 l_org_contact_osr VARCHAR2(255);
657
658 l_party_id NUMBER;
659 l_ca_id NUMBER;
660 l_cas_id NUMBER;
661
662 CURSOR get_ovn(l_car_id NUMBER) IS
663 SELECT r.object_version_number, r.party_id, r.cust_account_id, r.cust_acct_site_id
664 FROM HZ_CUST_ACCOUNT_ROLES r
665 WHERE r.cust_account_role_id = l_car_id;
666 BEGIN
667 -- Standard start of API savepoint
668 -- SAVEPOINT update_logical_cac_pub;
669 SAVEPOINT do_update_cac_bo_pub;
670
671 -- initialize API return status to success.
672 x_return_status := FND_API.G_RET_STS_SUCCESS;
673
674 -- Initialize message list if p_init_msg_list is set to TRUE.
678
675 IF FND_API.to_Boolean(p_init_msg_list) THEN
676 FND_MSG_PUB.initialize;
677 END IF;
679 -- initialize Global variable
680 HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
681 IF(p_created_by_module IS NULL) THEN
682 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
683 ELSE
684 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
685 END IF;
686
687 -- Debug info.
688 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
689 hz_utility_v2pub.debug(p_message=>'do_update_cac_bo(+)',
690 p_prefix=>l_debug_prefix,
691 p_msg_level=>fnd_log.level_procedure);
692 END IF;
693
694 x_cust_acct_contact_id := p_cust_acct_contact_obj.cust_acct_contact_id;
695 x_cust_acct_contact_os := p_cust_acct_contact_obj.orig_system;
696 x_cust_acct_contact_osr := p_cust_acct_contact_obj.orig_system_reference;
697
698 -- check if pass in org_contact_id and ssm is valid for update
699 hz_registry_validate_bo_pvt.validate_ssm_id(
700 px_id => x_cust_acct_contact_id,
701 px_os => x_cust_acct_contact_os,
702 px_osr => x_cust_acct_contact_osr,
703 p_obj_type => 'HZ_CUST_ACCOUNT_ROLES',
704 p_create_or_update => 'U',
705 x_return_status => x_return_status,
706 x_msg_count => x_msg_count,
707 x_msg_data => x_msg_data);
708
709 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
710 RAISE FND_API.G_EXC_ERROR;
711 END IF;
712
713 OPEN get_ovn(x_cust_acct_contact_id);
714 FETCH get_ovn INTO l_car_ovn, l_party_id, l_ca_id, l_cas_id;
715 CLOSE get_ovn;
716
717 -------------------------------
718 -- For Update Cust Account Role
719 -------------------------------
720 assign_cust_acct_role_rec(
721 p_cust_acct_role_obj => p_cust_acct_contact_obj,
722 p_party_id => l_party_id,
723 p_cust_acct_id => l_ca_id,
724 p_cust_acct_site_id => l_cas_id,
725 p_cust_acct_contact_id => x_cust_acct_contact_id,
726 p_cust_acct_contact_os => x_cust_acct_contact_os,
727 p_cust_acct_contact_osr => x_cust_acct_contact_osr,
728 p_create_or_update => 'U',
729 px_cust_account_role_rec => l_cust_acct_role_rec
730 );
731
732 HZ_CUST_ACCOUNT_ROLE_V2PUB.update_cust_account_role(
733 p_cust_account_role_rec => l_cust_acct_role_rec,
734 p_object_version_number => l_car_ovn,
735 x_return_status => x_return_status,
736 x_msg_count => x_msg_count,
737 x_msg_data => x_msg_data
738 );
739
740 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
741 RAISE FND_API.G_EXC_ERROR;
742 END IF;
743
744 -- assign cust_acct_contact_id
745 p_cust_acct_contact_obj.cust_acct_contact_id := x_cust_acct_contact_id;
746 ----------------------------
747 -- For Role Responsibilities
748 ----------------------------
749 IF((p_cust_acct_contact_obj.contact_role_objs IS NOT NULL) AND
750 (p_cust_acct_contact_obj.contact_role_objs.COUNT > 0)) THEN
751 HZ_CUST_ACCT_CONTACT_BO_PVT.save_role_responsibilities(
752 p_rr_objs => p_cust_acct_contact_obj.contact_role_objs,
753 p_cac_id => x_cust_acct_contact_id,
754 x_return_status => x_return_status,
755 x_msg_count => x_msg_count,
756 x_msg_data => x_msg_data
757 );
758
759 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
760 RAISE FND_API.G_EXC_ERROR;
761 END IF;
762 END IF;
763
764 -- reset Global variable
765 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
766 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
767
768 -- Debug info.
769 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
770 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
771 p_msg_data=>x_msg_data,
772 p_msg_type=>'WARNING',
773 p_msg_level=>fnd_log.level_exception);
774 END IF;
775 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
776 hz_utility_v2pub.debug(p_message=>'do_update_cac_bo(-)',
777 p_prefix=>l_debug_prefix,
778 p_msg_level=>fnd_log.level_procedure);
779 END IF;
780 EXCEPTION
781 WHEN fnd_api.g_exc_error THEN
782 ROLLBACK TO do_update_cac_bo_pub;
783
784 -- reset Global variable
785 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
786 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
787
788 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
789 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_CONTACT');
790 FND_MSG_PUB.ADD;
791
792 x_return_status := fnd_api.g_ret_sts_error;
793
794 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
795 p_count => x_msg_count,
796 p_data => x_msg_data);
797
798 -- Debug info.
799 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
800 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
801 p_msg_data=>x_msg_data,
802 p_msg_type=>'ERROR',
803 p_msg_level=>fnd_log.level_error);
804 END IF;
805 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
806 hz_utility_v2pub.debug(p_message=>'do_update_cac_bo(-)',
810
807 p_prefix=>l_debug_prefix,
808 p_msg_level=>fnd_log.level_procedure);
809 END IF;
811 WHEN fnd_api.g_exc_unexpected_error THEN
812 ROLLBACK TO do_update_cac_bo_pub;
813
814 -- reset Global variable
815 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
816 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
817
818 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
819 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_CONTACT');
820 FND_MSG_PUB.ADD;
821
822 x_return_status := fnd_api.g_ret_sts_unexp_error;
823
824 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
825 p_count => x_msg_count,
826 p_data => x_msg_data);
827
828 -- Debug info.
829 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
830 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
831 p_msg_data=>x_msg_data,
832 p_msg_type=>'UNEXPECTED ERROR',
833 p_msg_level=>fnd_log.level_error);
834 END IF;
835 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
836 hz_utility_v2pub.debug(p_message=>'do_update_cac_bo(-)',
837 p_prefix=>l_debug_prefix,
838 p_msg_level=>fnd_log.level_procedure);
839 END IF;
840
841 WHEN OTHERS THEN
842 ROLLBACK TO do_update_cac_bo_pub;
843
844 -- reset Global variable
845 HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
846 HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
847
848 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
849 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_CONTACT');
850 FND_MSG_PUB.ADD;
851
852 x_return_status := fnd_api.g_ret_sts_unexp_error;
853
854 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
855 fnd_message.set_token('ERROR' ,SQLERRM);
856 fnd_msg_pub.add;
857
858 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
859 p_count => x_msg_count,
860 p_data => x_msg_data);
861
862 -- Debug info.
863 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
864 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
865 p_msg_data=>x_msg_data,
866 p_msg_type=>'SQL ERROR',
867 p_msg_level=>fnd_log.level_error);
868 END IF;
869 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
870 hz_utility_v2pub.debug(p_message=>'do_update_cac_bo(-)',
871 p_prefix=>l_debug_prefix,
872 p_msg_level=>fnd_log.level_procedure);
873 END IF;
874 END do_update_cac_bo;
875
876 -- PROCEDURE do_save_cac_bo
877 --
878 -- DESCRIPTION
879 -- Create or update customer account contact business object.
880 PROCEDURE do_save_cac_bo(
881 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
882 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
883 p_cust_acct_contact_obj IN OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
884 p_created_by_module IN VARCHAR2,
885 p_obj_source IN VARCHAR2 := null,
886 x_return_status OUT NOCOPY VARCHAR2,
887 x_msg_count OUT NOCOPY NUMBER,
888 x_msg_data OUT NOCOPY VARCHAR2,
889 x_cust_acct_contact_id OUT NOCOPY NUMBER,
890 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
891 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2,
892 px_parent_id IN OUT NOCOPY NUMBER,
893 px_parent_os IN OUT NOCOPY VARCHAR2,
894 px_parent_osr IN OUT NOCOPY VARCHAR2,
895 px_parent_obj_type IN OUT NOCOPY VARCHAR2
896 ) IS
897 l_return_status VARCHAR2(30);
898 l_msg_count NUMBER;
899 l_msg_data VARCHAR2(2000);
900 l_create_update_flag VARCHAR2(1);
901 l_debug_prefix VARCHAR2(30) := '';
902 BEGIN
903 -- initialize API return status to success.
904 x_return_status := FND_API.G_RET_STS_SUCCESS;
905
906 -- Initialize message list if p_init_msg_list is set to TRUE.
907 IF FND_API.to_Boolean(p_init_msg_list) THEN
908 FND_MSG_PUB.initialize;
909 END IF;
910
911 -- Debug info.
912 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
913 hz_utility_v2pub.debug(p_message=>'do_save_cac_bo(+)',
914 p_prefix=>l_debug_prefix,
915 p_msg_level=>fnd_log.level_procedure);
916 END IF;
917
918 x_cust_acct_contact_id := p_cust_acct_contact_obj.cust_acct_contact_id;
919 x_cust_acct_contact_os := p_cust_acct_contact_obj.orig_system;
920 x_cust_acct_contact_osr := p_cust_acct_contact_obj.orig_system_reference;
921
922 -- check root business object to determine that it should be
923 -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
924 l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
925 p_entity_id => x_cust_acct_contact_id,
926 p_entity_os => x_cust_acct_contact_os,
927 p_entity_osr => x_cust_acct_contact_osr,
928 p_entity_type => 'HZ_CUST_ACCOUNT_ROLES',
929 p_parent_id => px_parent_id,
930 p_parent_obj_type => px_parent_obj_type
934 FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
931 );
932
933 IF(l_create_update_flag = 'E') THEN
935 FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_CONTACT');
936 FND_MSG_PUB.ADD;
937 RAISE FND_API.G_EXC_ERROR;
938 END IF;
939
940 IF(l_create_update_flag = 'C') THEN
941 do_create_cac_bo(
942 p_init_msg_list => fnd_api.g_false,
943 p_validate_bo_flag => p_validate_bo_flag,
944 p_cust_acct_contact_obj => p_cust_acct_contact_obj,
945 p_created_by_module => p_created_by_module,
946 p_obj_source => p_obj_source,
947 x_return_status => x_return_status,
948 x_msg_count => x_msg_count,
949 x_msg_data => x_msg_data,
950 x_cust_acct_contact_id => x_cust_acct_contact_id,
951 x_cust_acct_contact_os => x_cust_acct_contact_os,
952 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
953 px_parent_id => px_parent_id,
954 px_parent_os => px_parent_os,
955 px_parent_osr => px_parent_osr,
956 px_parent_obj_type => px_parent_obj_type
957 );
958 ELSIF(l_create_update_flag = 'U') THEN
959 do_update_cac_bo(
960 p_init_msg_list => fnd_api.g_false,
961 p_cust_acct_contact_obj => p_cust_acct_contact_obj,
962 p_created_by_module => p_created_by_module,
963 p_obj_source => p_obj_source,
964 x_return_status => x_return_status,
965 x_msg_count => x_msg_count,
966 x_msg_data => x_msg_data,
967 x_cust_acct_contact_id => x_cust_acct_contact_id,
968 x_cust_acct_contact_os => x_cust_acct_contact_os,
969 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
970 p_parent_os => px_parent_os
971 );
972 ELSE
973 RAISE FND_API.G_EXC_ERROR;
974 END IF;
975
976 -- Debug info.
977 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
978 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
979 p_msg_data=>x_msg_data,
980 p_msg_type=>'WARNING',
981 p_msg_level=>fnd_log.level_exception);
982 END IF;
983 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
984 hz_utility_v2pub.debug(p_message=>'do_save_cac_bo(-)',
985 p_prefix=>l_debug_prefix,
986 p_msg_level=>fnd_log.level_procedure);
987 END IF;
988
989 EXCEPTION
990 WHEN fnd_api.g_exc_error THEN
991 x_return_status := fnd_api.g_ret_sts_error;
992
993 FND_MESSAGE.SET_NAME('AR', 'HZ_SAVE_API_ERROR');
994 FND_MSG_PUB.ADD;
995 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
996 p_count => x_msg_count,
997 p_data => x_msg_data);
998
999 -- Debug info.
1000 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1001 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1002 p_msg_data=>x_msg_data,
1003 p_msg_type=>'ERROR',
1004 p_msg_level=>fnd_log.level_error);
1005 END IF;
1006 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1007 hz_utility_v2pub.debug(p_message=>'do_save_cac_bo(-)',
1008 p_prefix=>l_debug_prefix,
1009 p_msg_level=>fnd_log.level_procedure);
1010 END IF;
1011 WHEN fnd_api.g_exc_unexpected_error THEN
1012 x_return_status := fnd_api.g_ret_sts_unexp_error;
1013
1014 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1015 p_count => x_msg_count,
1016 p_data => x_msg_data);
1017
1018 -- Debug info.
1019 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1020 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1021 p_msg_data=>x_msg_data,
1022 p_msg_type=>'UNEXPECTED ERROR',
1023 p_msg_level=>fnd_log.level_error);
1024 END IF;
1025 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1026 hz_utility_v2pub.debug(p_message=>'do_save_cac_bo(-)',
1027 p_prefix=>l_debug_prefix,
1028 p_msg_level=>fnd_log.level_procedure);
1029 END IF;
1030 WHEN OTHERS THEN
1031 x_return_status := fnd_api.g_ret_sts_unexp_error;
1032
1033 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1034 fnd_message.set_token('ERROR' ,SQLERRM);
1035 fnd_msg_pub.add;
1036
1037 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1038 p_count => x_msg_count,
1039 p_data => x_msg_data);
1040
1041 -- Debug info.
1042 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1043 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1044 p_msg_data=>x_msg_data,
1045 p_msg_type=>'SQL ERROR',
1046 p_msg_level=>fnd_log.level_error);
1047 END IF;
1048 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1049 hz_utility_v2pub.debug(p_message=>'do_save_cac_bo(-)',
1050 p_prefix=>l_debug_prefix,
1051 p_msg_level=>fnd_log.level_procedure);
1052 END IF;
1056 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
1053 END do_save_cac_bo;
1054
1055 PROCEDURE save_cust_acct_contact_bo(
1057 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1058 p_cust_acct_contact_obj IN HZ_CUST_ACCT_CONTACT_BO,
1059 p_created_by_module IN VARCHAR2,
1060 x_return_status OUT NOCOPY VARCHAR2,
1061 x_msg_count OUT NOCOPY NUMBER,
1062 x_msg_data OUT NOCOPY VARCHAR2,
1063 x_cust_acct_contact_id OUT NOCOPY NUMBER,
1064 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
1065 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2,
1066 px_parent_id IN OUT NOCOPY NUMBER,
1067 px_parent_os IN OUT NOCOPY VARCHAR2,
1068 px_parent_osr IN OUT NOCOPY VARCHAR2,
1069 px_parent_obj_type IN OUT NOCOPY VARCHAR2
1070 ) IS
1071 l_cac_obj HZ_CUST_ACCT_CONTACT_BO;
1072 BEGIN
1073 l_cac_obj := p_cust_acct_contact_obj;
1074 do_save_cac_bo(
1075 p_init_msg_list => p_init_msg_list,
1076 p_validate_bo_flag => p_validate_bo_flag,
1077 p_cust_acct_contact_obj => l_cac_obj,
1078 p_created_by_module => p_created_by_module,
1079 x_return_status => x_return_status,
1080 x_msg_count => x_msg_count,
1081 x_msg_data => x_msg_data,
1082 x_cust_acct_contact_id => x_cust_acct_contact_id,
1083 x_cust_acct_contact_os => x_cust_acct_contact_os,
1084 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
1085 px_parent_id => px_parent_id,
1086 px_parent_os => px_parent_os,
1087 px_parent_osr => px_parent_osr,
1088 px_parent_obj_type => px_parent_obj_type
1089 );
1090 END save_cust_acct_contact_bo;
1091
1092 PROCEDURE save_cust_acct_contact_bo(
1093 p_validate_bo_flag IN VARCHAR2 := fnd_api.g_true,
1094 p_cust_acct_contact_obj IN HZ_CUST_ACCT_CONTACT_BO,
1095 p_created_by_module IN VARCHAR2,
1096 p_obj_source IN VARCHAR2 := null,
1097 p_return_obj_flag IN VARCHAR2 := fnd_api.g_true,
1098 x_return_status OUT NOCOPY VARCHAR2,
1099 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL,
1100 x_return_obj OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
1101 x_cust_acct_contact_id OUT NOCOPY NUMBER,
1102 x_cust_acct_contact_os OUT NOCOPY VARCHAR2,
1103 x_cust_acct_contact_osr OUT NOCOPY VARCHAR2,
1104 px_parent_id IN OUT NOCOPY NUMBER,
1105 px_parent_os IN OUT NOCOPY VARCHAR2,
1106 px_parent_osr IN OUT NOCOPY VARCHAR2,
1107 px_parent_obj_type IN OUT NOCOPY VARCHAR2
1108 ) IS
1109 l_msg_data VARCHAR2(2000);
1110 l_msg_count NUMBER;
1111 l_cac_obj HZ_CUST_ACCT_CONTACT_BO;
1112 BEGIN
1113 l_cac_obj := p_cust_acct_contact_obj;
1114 do_save_cac_bo(
1115 p_init_msg_list => fnd_api.g_true,
1116 p_validate_bo_flag => p_validate_bo_flag,
1117 p_cust_acct_contact_obj => l_cac_obj,
1118 p_created_by_module => p_created_by_module,
1119 x_return_status => x_return_status,
1120 x_msg_count => l_msg_count,
1121 x_msg_data => l_msg_data,
1122 x_cust_acct_contact_id => x_cust_acct_contact_id,
1123 x_cust_acct_contact_os => x_cust_acct_contact_os,
1124 x_cust_acct_contact_osr => x_cust_acct_contact_osr,
1125 px_parent_id => px_parent_id,
1126 px_parent_os => px_parent_os,
1127 px_parent_osr => px_parent_osr,
1128 px_parent_obj_type => px_parent_obj_type
1129 );
1130 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1131 x_return_status => x_return_status,
1132 x_msg_count => l_msg_count,
1133 x_msg_data => l_msg_data);
1134 IF FND_API.to_Boolean(p_return_obj_flag) THEN
1135 x_return_obj := l_cac_obj;
1136 END IF;
1137 END save_cust_acct_contact_bo;
1138
1139 --------------------------------------
1140 --
1141 -- PROCEDURE get_cust_acct_contact_bos
1142 --
1143 -- DESCRIPTION
1144 -- Get logical customer account contacts.
1145 --
1146 -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1147 --
1148 -- ARGUMENTS
1149 -- IN:
1150 -- p_init_msg_list Initialize message stack if it is set to
1151 -- p_parent_id parent id.
1152 -- p_cust_acct_contact_id customer account contact ID.
1153 -- FND_API.G_TRUE. Default is FND_API.G_FALSE.
1154 -- OUT:
1155 -- x_cust_acct_contact_objs Logical customer account contact records.
1156 -- x_return_status Return status after the call. The status can
1157 -- be fnd_api.g_ret_sts_success (success),
1158 -- fnd_api.g_ret_sts_error (error),
1159 -- FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1160 -- x_msg_count Number of messages in message stack.
1161 -- x_msg_data Message text if x_msg_count is 1.
1162 --
1163 -- NOTES
1164 --
1165 -- MODIFICATION HISTORY
1166 --
1167 --
1168 -- 8-JUN-2005 AWU Created.
1169 --
1170
1171 /*
1172
1173 The Get customer account contact API Procedure is a retrieval service that returns a full customer account contact business object.
1174 The user identifies a particular Organization Contact business object using the TCA identifier and/or the object's Source System
1178
1175 information. Upon proper validation of the object, the full Organization Contact business object is returned.
1176 The object consists of all data included within the Organization Contact business object, at all embedded levels. This includes the
1177 set of all data stored in the TCA tables for each embedded entity.
1179
1180 Embedded BO Mandatory Multiple Logical API Procedure Comments
1181
1182 Org Contact Y N get_org_contact_bo
1183
1184
1185 To retrieve the appropriate embedded entities within the 'Customer Account Contact' business object, the Get procedure returns all
1186 records for the particular contact from these TCA entity tables.
1187
1188 Embedded TCA Entity Mandatory Multiple TCA Table Entities
1189
1190 Customer Account Role N N HZ_CUST_ACCOUNT_ROLES
1191 Role Responsibility N Y HZ_ROLE_RESPONSIBILITY
1192
1193 */
1194
1195
1196 PROCEDURE get_cust_acct_contact_bo (
1197 p_init_msg_list IN VARCHAR2:=FND_API.G_FALSE,
1198 p_cust_acct_contact_id IN NUMBER,
1199 p_cust_acct_contact_os IN VARCHAR2,
1200 p_cust_acct_contact_osr IN VARCHAR2,
1201 x_cust_acct_contact_obj OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
1202 x_return_status OUT NOCOPY VARCHAR2,
1203 x_msg_count OUT NOCOPY NUMBER,
1204 x_msg_data OUT NOCOPY VARCHAR2
1205 ) is
1206 l_debug_prefix VARCHAR2(30) := '';
1207
1208 l_cust_acct_contact_id number;
1209 l_cust_acct_contact_os varchar2(30);
1210 l_cust_acct_contact_osr varchar2(255);
1211 l_cust_acct_contact_objs HZ_CUST_ACCT_CONTACT_BO_TBL;
1212 BEGIN
1213
1214 -- initialize API return status to success.
1215 x_return_status := FND_API.G_RET_STS_SUCCESS;
1216
1217 -- Initialize message list if p_init_msg_list is set to TRUE
1218 IF FND_API.to_Boolean(p_init_msg_list) THEN
1219 FND_MSG_PUB.initialize;
1220 END IF;
1221
1222
1223 -- Debug info.
1224 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1225 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_contact_bo_pub.get_cust_acct_contact_bo(+)',
1226 p_prefix=>l_debug_prefix,
1227 p_msg_level=>fnd_log.level_procedure);
1228 END IF;
1229
1230 -- check if pass in contact_point_id and/or os+osr
1231 -- extraction validation logic is same as update
1232
1233 l_cust_acct_contact_id := p_cust_acct_contact_id;
1234 l_cust_acct_contact_os := p_cust_acct_contact_os;
1235 l_cust_acct_contact_osr := p_cust_acct_contact_osr;
1236
1237 HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
1238 px_id => l_cust_acct_contact_id,
1239 px_os => l_cust_acct_contact_os,
1240 px_osr => l_cust_acct_contact_osr,
1241 p_obj_type => 'HZ_CUST_ACCOUNT_ROLES',
1242 x_return_status => x_return_status,
1243 x_msg_count => x_msg_count,
1244 x_msg_data => x_msg_data);
1245
1246 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1247 RAISE fnd_api.g_exc_error;
1248 END IF;
1249
1250 HZ_EXTRACT_ACCT_CONT_BO_PVT.get_cust_acct_contact_bos
1251 (p_init_msg_list => fnd_api.g_false,
1252 p_parent_id => NULL,
1253 p_cust_acct_contact_id => l_cust_acct_contact_id,
1254 p_action_type => NULL,
1255 x_cust_acct_contact_objs => l_cust_acct_contact_objs,
1256 x_return_status => x_return_status,
1257 x_msg_count => x_msg_count,
1258 x_msg_data => x_msg_data);
1259
1260 x_cust_acct_contact_obj := l_cust_acct_contact_objs(1);
1261
1262 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1263 RAISE FND_API.G_EXC_ERROR;
1264 END IF;
1265
1266
1267 -- Debug info.
1268 IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1269 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1270 p_msg_data=>x_msg_data,
1271 p_msg_type=>'WARNING',
1272 p_msg_level=>fnd_log.level_exception);
1273 END IF;
1274
1275 -- Debug info.
1276 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1277 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_contact_bo_pub.get_cust_acct_contact_bo (-)',
1278 p_prefix=>l_debug_prefix,
1279 p_msg_level=>fnd_log.level_procedure);
1280 END IF;
1281
1282
1283 EXCEPTION
1284
1285 WHEN fnd_api.g_exc_error THEN
1286 x_return_status := fnd_api.g_ret_sts_error;
1287
1288 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1289 p_count => x_msg_count,
1290 p_data => x_msg_data);
1291
1292 -- Debug info.
1293 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1294 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1295 p_msg_data=>x_msg_data,
1296 p_msg_type=>'ERROR',
1297 p_msg_level=>fnd_log.level_error);
1298 END IF;
1299 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1300 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_contact_bo_pub.get_cust_acct_contact_bo (-)',
1301 p_prefix=>l_debug_prefix,
1302 p_msg_level=>fnd_log.level_procedure);
1303 END IF;
1304 WHEN fnd_api.g_exc_unexpected_error THEN
1305 x_return_status := fnd_api.g_ret_sts_unexp_error;
1306
1307 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1308 p_count => x_msg_count,
1309 p_data => x_msg_data);
1310
1311 -- Debug info.
1312 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1313 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1314 p_msg_data=>x_msg_data,
1315 p_msg_type=>'UNEXPECTED ERROR',
1316 p_msg_level=>fnd_log.level_error);
1317 END IF;
1318 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1319 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_contact_bo_pub.get_cust_acct_contact_bo (-)',
1320 p_prefix=>l_debug_prefix,
1321 p_msg_level=>fnd_log.level_procedure);
1322 END IF;
1323 WHEN OTHERS THEN
1324 x_return_status := fnd_api.g_ret_sts_unexp_error;
1325
1326 fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1327 fnd_message.set_token('ERROR' ,SQLERRM);
1328 fnd_msg_pub.add;
1329
1330 fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1331 p_count => x_msg_count,
1332 p_data => x_msg_data);
1333
1334 -- Debug info.
1335 IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1336 hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1337 p_msg_data=>x_msg_data,
1338 p_msg_type=>'SQL ERROR',
1339 p_msg_level=>fnd_log.level_error);
1340 END IF;
1341 IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1342 hz_utility_v2pub.debug(p_message=>'hz_cust_acct_contact_bo_pub.get_cust_acct_contact_bo (-)',
1343 p_prefix=>l_debug_prefix,
1344 p_msg_level=>fnd_log.level_procedure);
1345 END IF;
1346
1347 end;
1348
1349 PROCEDURE get_cust_acct_contact_bo (
1350 p_cust_acct_contact_id IN NUMBER,
1351 p_cust_acct_contact_os IN VARCHAR2,
1352 p_cust_acct_contact_osr IN VARCHAR2,
1353 x_cust_acct_contact_obj OUT NOCOPY HZ_CUST_ACCT_CONTACT_BO,
1354 x_return_status OUT NOCOPY VARCHAR2,
1355 x_messages OUT NOCOPY HZ_MESSAGE_OBJ_TBL
1356 ) IS
1357 l_msg_data VARCHAR2(2000);
1358 l_msg_count NUMBER;
1359 BEGIN
1360 get_cust_acct_contact_bo (
1361 p_init_msg_list => FND_API.G_TRUE,
1362 p_cust_acct_contact_id => p_cust_acct_contact_id,
1363 p_cust_acct_contact_os => p_cust_acct_contact_os,
1364 p_cust_acct_contact_osr => p_cust_acct_contact_osr,
1365 x_cust_acct_contact_obj => x_cust_acct_contact_obj,
1366 x_return_status => x_return_status,
1367 x_msg_count => l_msg_count,
1368 x_msg_data => l_msg_data
1369 );
1370 x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1371 x_return_status => x_return_status,
1372 x_msg_count => l_msg_count,
1373 x_msg_data => l_msg_data);
1374 END get_cust_acct_contact_bo;
1375
1376 END hz_cust_acct_contact_bo_pub;