DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_ORG_CONTACT_BO_PVT

Source


1 PACKAGE BODY hz_org_contact_bo_pvt AS
2 /*$Header: ARHBOCVB.pls 120.7.12000000.2 2007/02/22 23:35:33 awu ship $ */
3 
4   -- PRIVATE PROCEDURE assign_org_contact_role_rec
5   --
6   -- DESCRIPTION
7   --     Assign attribute value from org contact role object to plsql record.
8   --
9   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10   --
11   -- ARGUMENTS
12   --   IN:
13   --     p_ocr_obj            Org contact role object.
14   --     p_oc_id              Org contact Id.
15   --     p_ocr_os             Org contact original system.
16   --     p_ocr_osr            Org contact original system reference.
17   --   IN/OUT:
18   --     px_org_contact_role_rec   Org contact role plsql record.
19   --
20   -- NOTES
21   --
22   -- MODIFICATION HISTORY
23   --
24   --   14-DEC-2004    Arnold Ng          Created.
25 
26   PROCEDURE assign_org_contact_role_rec(
27     p_ocr_obj                    IN            HZ_ORG_CONTACT_ROLE_OBJ,
28     p_oc_id                      IN            NUMBER,
29     p_ocr_os                     IN            VARCHAR2,
30     p_ocr_osr                    IN            VARCHAR2,
31     px_org_contact_role_rec      IN OUT NOCOPY HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_ROLE_REC_TYPE
32   );
33 
34   -- PRIVATE PROCEDURE assign_org_contact_role_rec
35   --
36   -- DESCRIPTION
37   --     Assign attribute value from org contact role object to plsql record.
38   --
39   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
40   --
41   -- ARGUMENTS
42   --   IN:
43   --     p_ocr_obj            Org contact role object.
44   --     p_oc_id              Org contact Id.
45   --     p_ocr_os             Org contact original system.
46   --     p_ocr_osr            Org contact original system reference.
47   --   IN/OUT:
48   --     px_org_contact_role_rec   Org contact role plsql record.
49   --
50   -- NOTES
51   --
52   -- MODIFICATION HISTORY
53   --
54   --   14-DEC-2004    Arnold Ng          Created.
55 
56   PROCEDURE assign_org_contact_role_rec(
57     p_ocr_obj                    IN            HZ_ORG_CONTACT_ROLE_OBJ,
58     p_oc_id                      IN            NUMBER,
59     p_ocr_os                     IN            VARCHAR2,
60     p_ocr_osr                    IN            VARCHAR2,
61     px_org_contact_role_rec      IN OUT NOCOPY HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_ROLE_REC_TYPE
62   ) IS
63   BEGIN
64     px_org_contact_role_rec.org_contact_role_id           := p_ocr_obj.org_contact_role_id;
65     px_org_contact_role_rec.role_type                     := p_ocr_obj.role_type;
66     IF(p_ocr_obj.primary_flag in ('Y','N')) THEN
67       px_org_contact_role_rec.primary_flag                  := p_ocr_obj.primary_flag;
68     END IF;
69     px_org_contact_role_rec.org_contact_id                := p_oc_id;
70     px_org_contact_role_rec.orig_system                   := p_ocr_os;
71     px_org_contact_role_rec.orig_system_reference         := p_ocr_osr;
72     px_org_contact_role_rec.role_level                    := p_ocr_obj.role_level;
73     px_org_contact_role_rec.primary_contact_per_role_type := p_ocr_obj.primary_contact_per_role_type;
74     IF(p_ocr_obj.status in ('A','I')) THEN
75       px_org_contact_role_rec.status                        := p_ocr_obj.status;
76     END IF;
77     px_org_contact_role_rec.created_by_module             := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
78   END assign_org_contact_role_rec;
79 
80   -- PROCEDURE create_org_contact_roles
81   --
82   -- DESCRIPTION
83   --     Create org contact roles.
84   --
85   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
86   --
87   -- ARGUMENTS
88   --   IN:
89   --     p_ocr_objs           List of org contact role objects.
90   --     p_oc_id              Org contact Id.
91   --   OUT:
92   --     x_return_status      Return status after the call. The status can
93   --                          be fnd_api.g_ret_sts_success (success),
94   --                          fnd_api.g_ret_sts_error (error),
95   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
96   --     x_msg_count          Number of messages in message stack.
97   --     x_msg_data           Message text if x_msg_count is 1.
98   --
99   -- NOTES
100   --
101   -- MODIFICATION HISTORY
102   --
103   --   14-DEC-2004    Arnold Ng          Created.
104 
105   PROCEDURE create_org_contact_roles(
106     p_ocr_objs              IN OUT NOCOPY HZ_ORG_CONTACT_ROLE_OBJ_TBL,
107     p_oc_id                 IN            NUMBER,
108     x_return_status         OUT NOCOPY    VARCHAR2,
109     x_msg_count             OUT NOCOPY    NUMBER,
110     x_msg_data              OUT NOCOPY    VARCHAR2
111   ) IS
112     l_debug_prefix        VARCHAR2(30);
113     l_ocr_id              NUMBER;
114     l_ocr_rec             HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_ROLE_REC_TYPE;
115   BEGIN
116     -- Standard start of API savepoint
117     SAVEPOINT create_org_contact_roles_pvt;
118 
119     -- initialize API return status to success.
120     x_return_status := FND_API.G_RET_STS_SUCCESS;
121 
122     -- Debug info.
123     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
124         hz_utility_v2pub.debug(p_message=>'create_org_contact_roles(+)',
125                                p_prefix=>l_debug_prefix,
126                                p_msg_level=>fnd_log.level_procedure);
127     END IF;
128 
129     -- Create contact preferences
130     IF(p_ocr_objs IS NOT NULL) THEN
131       FOR i IN 1..p_ocr_objs.COUNT LOOP
132         assign_org_contact_role_rec(
133           p_ocr_obj                => p_ocr_objs(i),
134           p_oc_id                  => p_oc_id,
135           p_ocr_os                 => p_ocr_objs(i).orig_system,
136           p_ocr_osr                => p_ocr_objs(i).orig_system_reference,
137           px_org_contact_role_rec  => l_ocr_rec
138         );
139 
140         HZ_PARTY_CONTACT_V2PUB.create_org_contact_role(
141           p_org_contact_role_rec      => l_ocr_rec,
142           x_org_contact_role_id       => l_ocr_id,
143           x_return_status             => x_return_status,
144           x_msg_count                 => x_msg_count,
145           x_msg_data                  => x_msg_data
146         );
147 
148         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
149           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
150             hz_utility_v2pub.debug(p_message=>'Error occurred at hz_org_contact_bo_pvt.create_org_contact_roles, org contact id: '||p_oc_id,
151                                    p_prefix=>l_debug_prefix,
152                                    p_msg_level=>fnd_log.level_procedure);
153           END IF;
154           RAISE fnd_api.g_exc_error;
155         END IF;
156 
157         -- assign org_contact_role_id
158         p_ocr_objs(i).org_contact_role_id := l_ocr_id;
159       END LOOP;
160     END IF;
161 
162     -- Debug info.
163     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
164          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
165                                p_msg_data=>x_msg_data,
166                                p_msg_type=>'WARNING',
167                                p_msg_level=>fnd_log.level_exception);
168     END IF;
169     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
170         hz_utility_v2pub.debug(p_message=>'create_org_contact_roles(-)',
171                                p_prefix=>l_debug_prefix,
172                                p_msg_level=>fnd_log.level_procedure);
173     END IF;
174   EXCEPTION
175     WHEN fnd_api.g_exc_error THEN
176       ROLLBACK TO create_org_contact_roles_pvt;
177       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
178       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_ORG_CONTACT_ROLES');
179       FND_MSG_PUB.ADD;
180 
181       x_return_status := fnd_api.g_ret_sts_error;
182 
183       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
184                                 p_count => x_msg_count,
185                                 p_data  => x_msg_data);
186 
187       -- Debug info.
188       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
189         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
190                                p_msg_data=>x_msg_data,
191                                p_msg_type=>'ERROR',
192                                p_msg_level=>fnd_log.level_error);
193       END IF;
194       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
195         hz_utility_v2pub.debug(p_message=>'create_org_contact_roles(-)',
196                                p_prefix=>l_debug_prefix,
197                                p_msg_level=>fnd_log.level_procedure);
198       END IF;
199     WHEN fnd_api.g_exc_unexpected_error THEN
200       ROLLBACK TO create_org_contact_roles_pvt;
201       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
202       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_ORG_CONTACT_ROLES');
203       FND_MSG_PUB.ADD;
204 
205       x_return_status := fnd_api.g_ret_sts_unexp_error;
206 
207       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
208                                 p_count => x_msg_count,
209                                 p_data  => x_msg_data);
210 
211       -- Debug info.
212       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
213         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
214                                p_msg_data=>x_msg_data,
215                                p_msg_type=>'UNEXPECTED ERROR',
216                                p_msg_level=>fnd_log.level_error);
217       END IF;
218       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
219         hz_utility_v2pub.debug(p_message=>'create_org_contact_roles(-)',
220                                p_prefix=>l_debug_prefix,
221                                p_msg_level=>fnd_log.level_procedure);
222       END IF;
223     WHEN OTHERS THEN
224       ROLLBACK TO create_org_contact_roles_pvt;
225       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
226       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_ORG_CONTACT_ROLES');
227       FND_MSG_PUB.ADD;
228 
229       x_return_status := fnd_api.g_ret_sts_unexp_error;
230 
231       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
232       fnd_message.set_token('ERROR' ,SQLERRM);
233       fnd_msg_pub.add;
234 
235       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
236                                 p_count => x_msg_count,
237                                 p_data  => x_msg_data);
238 
239       -- Debug info.
240       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
241         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
242                                p_msg_data=>x_msg_data,
243                                p_msg_type=>'SQL ERROR',
244                                p_msg_level=>fnd_log.level_error);
245       END IF;
246       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
247         hz_utility_v2pub.debug(p_message=>'create_org_contact_roles(-)',
248                                p_prefix=>l_debug_prefix,
249                                p_msg_level=>fnd_log.level_procedure);
250       END IF;
251   END create_org_contact_roles;
252 
253   -- PROCEDURE save_org_contact_roles
254   --
255   -- DESCRIPTION
256   --     Create or update org contact roles.
257   PROCEDURE save_org_contact_roles(
258     p_ocr_objs                   IN OUT NOCOPY HZ_ORG_CONTACT_ROLE_OBJ_TBL,
259     p_oc_id                      IN         NUMBER,
260     x_return_status              OUT NOCOPY VARCHAR2,
261     x_msg_count                  OUT NOCOPY NUMBER,
262     x_msg_data                   OUT NOCOPY VARCHAR2
263   ) IS
264     l_debug_prefix        VARCHAR2(30);
265     l_ocr_id              NUMBER;
266     l_ocr_rec             HZ_PARTY_CONTACT_V2PUB.ORG_CONTACT_ROLE_REC_TYPE;
267     l_ovn                 NUMBER := NULL;
268   BEGIN
269     -- Standard start of API savepoint
270     SAVEPOINT save_org_contact_roles_pvt;
271 
272     -- initialize API return status to success.
273     x_return_status := FND_API.G_RET_STS_SUCCESS;
274 
275     -- Debug info.
276     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
277         hz_utility_v2pub.debug(p_message=>'save_org_contact_roles(+)',
278                                p_prefix=>l_debug_prefix,
279                                p_msg_level=>fnd_log.level_procedure);
280     END IF;
281 
282     -- Create/Update org contact roles
283     IF(p_ocr_objs IS NOT NULL) THEN
284       FOR i IN 1..p_ocr_objs.COUNT LOOP
285         assign_org_contact_role_rec(
286           p_ocr_obj               => p_ocr_objs(i),
287           p_oc_id                 => p_oc_id,
288           p_ocr_os                => p_ocr_objs(i).orig_system,
289           p_ocr_osr               => p_ocr_objs(i).orig_system_reference,
290           px_org_contact_role_rec => l_ocr_rec
291         );
292 
293         -- check if the contact pref record is create or update
294         hz_registry_validate_bo_pvt.check_org_contact_role_op(
295           p_org_contact_id       => p_oc_id,
296           px_org_contact_role_id => l_ocr_rec.org_contact_role_id,
297           p_role_type            => l_ocr_rec.role_type,
298           x_object_version_number => l_ovn
299         );
300 
301         IF(l_ovn = -1) THEN
302           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
303             hz_utility_v2pub.debug(p_message=>'Error occurred at hz_org_contact_bo_pvt.check_org_contact_role_op, org contact id: '||p_oc_id,
304                                    p_prefix=>l_debug_prefix,
305                                    p_msg_level=>fnd_log.level_procedure);
306           END IF;
307           FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
308           FND_MSG_PUB.ADD;
309           FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
310           FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_ORG_CONTACT_ROLES');
311           FND_MSG_PUB.ADD;
312           RAISE FND_API.G_EXC_ERROR;
313         END IF;
314 
315         IF(l_ocr_rec.org_contact_role_id IS NULL) THEN
316           HZ_PARTY_CONTACT_V2PUB.create_org_contact_role(
320             x_msg_count                 => x_msg_count,
317             p_org_contact_role_rec      => l_ocr_rec,
318             x_org_contact_role_id       => l_ocr_id,
319             x_return_status             => x_return_status,
321             x_msg_data                  => x_msg_data
322           );
323 
324           -- assign org_contact_role_id
325           p_ocr_objs(i).org_contact_role_id := l_ocr_id;
326         ELSE
327           -- clean up created_by_module for update
328           l_ocr_rec.created_by_module := NULL;
329           HZ_PARTY_CONTACT_V2PUB.update_org_contact_role(
330             p_org_contact_role_rec      => l_ocr_rec,
331             p_object_version_number     => l_ovn,
332             x_return_status             => x_return_status,
333             x_msg_count                 => x_msg_count,
334             x_msg_data                  => x_msg_data
335           );
336 
337           -- assign org_contact_role_id
338           p_ocr_objs(i).org_contact_role_id := l_ocr_rec.org_contact_role_id;
339         END IF;
340         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
341           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
342             hz_utility_v2pub.debug(p_message=>'Error occurred at hz_org_contact_bo_pvt.save_org_contact_roles, org contact id: '||p_oc_id,
343                                    p_prefix=>l_debug_prefix,
344                                    p_msg_level=>fnd_log.level_procedure);
345           END IF;
346           RAISE fnd_api.g_exc_error;
347         END IF;
348       END LOOP;
349     END IF;
350 
351     -- Debug info.
352     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
353          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
354                                p_msg_data=>x_msg_data,
355                                p_msg_type=>'WARNING',
356                                p_msg_level=>fnd_log.level_exception);
357     END IF;
358     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
359         hz_utility_v2pub.debug(p_message=>'save_org_contact_roles(-)',
360                                p_prefix=>l_debug_prefix,
361                                p_msg_level=>fnd_log.level_procedure);
362     END IF;
363   EXCEPTION
364     WHEN fnd_api.g_exc_error THEN
365       ROLLBACK TO save_org_contact_roles_pvt;
366       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
367       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_ORG_CONTACT_ROLES');
368       FND_MSG_PUB.ADD;
369 
370       x_return_status := fnd_api.g_ret_sts_error;
371 
372       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
373                                 p_count => x_msg_count,
374                                 p_data  => x_msg_data);
375 
376       -- Debug info.
377       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
378         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
379                                p_msg_data=>x_msg_data,
380                                p_msg_type=>'ERROR',
381                                p_msg_level=>fnd_log.level_error);
382       END IF;
383       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
384         hz_utility_v2pub.debug(p_message=>'save_org_contact_roles(-)',
385                                p_prefix=>l_debug_prefix,
386                                p_msg_level=>fnd_log.level_procedure);
387       END IF;
388     WHEN fnd_api.g_exc_unexpected_error THEN
389       ROLLBACK TO save_org_contact_roles_pvt;
390       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
391       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_ORG_CONTACT_ROLES');
392       FND_MSG_PUB.ADD;
393 
394       x_return_status := fnd_api.g_ret_sts_unexp_error;
395 
396       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
397                                 p_count => x_msg_count,
398                                 p_data  => x_msg_data);
399 
400       -- Debug info.
401       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
402         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
403                                p_msg_data=>x_msg_data,
404                                p_msg_type=>'UNEXPECTED ERROR',
405                                p_msg_level=>fnd_log.level_error);
406       END IF;
407       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
408         hz_utility_v2pub.debug(p_message=>'save_org_contact_roles(-)',
409                                p_prefix=>l_debug_prefix,
410                                p_msg_level=>fnd_log.level_procedure);
411       END IF;
412     WHEN OTHERS THEN
413       ROLLBACK TO save_org_contact_roles_pvt;
414       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_ENTITY_ERROR');
415       FND_MESSAGE.SET_TOKEN('ENTITY', 'HZ_ORG_CONTACT_ROLES');
416       FND_MSG_PUB.ADD;
417 
418       x_return_status := fnd_api.g_ret_sts_unexp_error;
419 
420       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
421       fnd_message.set_token('ERROR' ,SQLERRM);
422       fnd_msg_pub.add;
423 
424       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
425                                 p_count => x_msg_count,
426                                 p_data  => x_msg_data);
427 
428       -- Debug info.
429       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
430         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
431                                p_msg_data=>x_msg_data,
432                                p_msg_type=>'SQL ERROR',
433                                p_msg_level=>fnd_log.level_error);
434       END IF;
435       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
436         hz_utility_v2pub.debug(p_message=>'save_org_contact_roles(-)',
437                                p_prefix=>l_debug_prefix,
441 
438                                p_msg_level=>fnd_log.level_procedure);
439       END IF;
440   END save_org_contact_roles;
442   -- PROCEDURE save_org_contacts
443   --
444   -- DESCRIPTION
445   --     Create or update org contacts.
446   --
447   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
448   --
449   -- ARGUMENTS
450   --   IN:
451   --     p_oc_objs            List of org contact business objects.
452   --     p_create_update_flag Create or update flag.
453   --     p_parent_org_id      Parent organization Id.
454   --     p_parent_org_os      Parent organization original system.
455   --     p_parent_org_osr     Parent organization original system reference.
456   --   OUT:
457   --     x_return_status      Return status after the call. The status can
458   --                          be fnd_api.g_ret_sts_success (success),
459   --                          fnd_api.g_ret_sts_error (error),
460   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
461   --     x_msg_count          Number of messages in message stack.
462   --     x_msg_data           Message text if x_msg_count is 1.
463   --
464   -- NOTES
465   --
466   -- MODIFICATION HISTORY
467   --
468   --   14-DEC-2004    Arnold Ng          Created.
469 
470   PROCEDURE save_org_contacts(
471     p_oc_objs             IN OUT NOCOPY HZ_ORG_CONTACT_BO_TBL,
472     p_create_update_flag  IN            VARCHAR2,
473     p_obj_source          IN            VARCHAR2 := null,
474     x_return_status       OUT NOCOPY    VARCHAR2,
475     x_msg_count           OUT NOCOPY    NUMBER,
476     x_msg_data            OUT NOCOPY    VARCHAR2,
477     p_parent_org_id       IN OUT NOCOPY NUMBER,
478     p_parent_org_os       IN OUT NOCOPY VARCHAR2,
479     p_parent_org_osr      IN OUT NOCOPY VARCHAR2
480   ) IS
481     l_debug_prefix        VARCHAR2(30);
482     l_oc_id               NUMBER;
483     l_oc_os               VARCHAR2(30);
484     l_oc_osr              VARCHAR2(255);
485     l_parent_org_id       NUMBER;
486     l_parent_org_os       VARCHAR2(30);
487     l_parent_org_osr      VARCHAR2(255);
488     l_cbm                 VARCHAR2(30);
489   BEGIN
490     -- initialize API return status to success.
491     x_return_status := FND_API.G_RET_STS_SUCCESS;
492 
493     -- Debug info.
494     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
495         hz_utility_v2pub.debug(p_message=>'save_org_contacts(+)',
496                                p_prefix=>l_debug_prefix,
497                                p_msg_level=>fnd_log.level_procedure);
498     END IF;
499 
500     l_parent_org_id := p_parent_org_id;
501     l_parent_org_os := p_parent_org_os;
502     l_parent_org_osr:= p_parent_org_osr;
503 
504     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
505 
506     IF(p_create_update_flag = 'C') THEN
507       -----------------------------
508       -- Create logical org contact
509       -----------------------------
510       FOR i IN 1..p_oc_objs.COUNT LOOP
511         HZ_ORG_CONTACT_BO_PUB.do_create_org_contact_bo(
512           p_init_msg_list      => fnd_api.g_false,
513           p_validate_bo_flag   => fnd_api.g_false,
514           p_org_contact_obj    => p_oc_objs(i),
515           p_created_by_module  => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
516           p_obj_source         => p_obj_source,
517           x_return_status      => x_return_status,
518           x_msg_count          => x_msg_count,
519           x_msg_data           => x_msg_data,
520           x_org_contact_id     => l_oc_id,
521           x_org_contact_os     => l_oc_os,
522           x_org_contact_osr    => l_oc_osr,
523           px_parent_org_id     => l_parent_org_id,
524           px_parent_org_os     => l_parent_org_os,
525           px_parent_org_osr    => l_parent_org_osr
526         );
527 
528         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
529           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
530             hz_utility_v2pub.debug(p_message=>'Error occurred at hz_org_contact_bo_pvt.save_org_contacts, parent id: '||l_parent_org_id||' '||l_parent_org_os||'-'||l_parent_org_osr,
531                                    p_prefix=>l_debug_prefix,
532                                    p_msg_level=>fnd_log.level_procedure);
533           END IF;
534           RAISE fnd_api.g_exc_error;
535         END IF;
536 
537         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
538       END LOOP;
539     ELSE
540       ------------------------------------
541       -- Create/Update logical org contact
542       ------------------------------------
543       FOR i IN 1..p_oc_objs.COUNT LOOP
544         HZ_ORG_CONTACT_BO_PUB.do_save_org_contact_bo(
545           p_init_msg_list      => fnd_api.g_false,
546           p_validate_bo_flag   => fnd_api.g_false,
547           p_org_contact_obj    => p_oc_objs(i),
548           p_created_by_module  => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
549           p_obj_source         => p_obj_source,
550           x_return_status      => x_return_status,
551           x_msg_count          => x_msg_count,
552           x_msg_data           => x_msg_data,
553           x_org_contact_id     => l_oc_id,
554           x_org_contact_os     => l_oc_os,
555           x_org_contact_osr    => l_oc_osr,
556           px_parent_org_id     => l_parent_org_id,
557           px_parent_org_os     => l_parent_org_os,
558           px_parent_org_osr    => l_parent_org_osr
559         );
560 
561         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
562           IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
563             hz_utility_v2pub.debug(p_message=>'Error occurred at hz_org_contact_bo_pvt.save_org_contacts, parent id: '||l_parent_org_id||' '||l_parent_org_os||'-'||l_parent_org_osr,
564                                    p_prefix=>l_debug_prefix,
565                                    p_msg_level=>fnd_log.level_procedure);
566           END IF;
567           RAISE fnd_api.g_exc_error;
568         END IF;
569 
570         HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
571       END LOOP;
572     END IF;
573 
574     -- Debug info.
575     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
576          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
577                                p_msg_data=>x_msg_data,
578                                p_msg_type=>'WARNING',
579                                p_msg_level=>fnd_log.level_exception);
580     END IF;
581     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
582         hz_utility_v2pub.debug(p_message=>'save_org_contacts(-)',
583                                p_prefix=>l_debug_prefix,
584                                p_msg_level=>fnd_log.level_procedure);
585     END IF;
586 
587   EXCEPTION
588     WHEN fnd_api.g_exc_error THEN
589       x_return_status := fnd_api.g_ret_sts_error;
590 
591       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
592                                 p_count => x_msg_count,
593                                 p_data  => x_msg_data);
594 
595       -- Debug info.
596       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
597         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
598                                p_msg_data=>x_msg_data,
599                                p_msg_type=>'ERROR',
600                                p_msg_level=>fnd_log.level_error);
601       END IF;
602       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
603         hz_utility_v2pub.debug(p_message=>'save_org_contacts(-)',
604                                p_prefix=>l_debug_prefix,
605                                p_msg_level=>fnd_log.level_procedure);
606       END IF;
607     WHEN fnd_api.g_exc_unexpected_error THEN
608       x_return_status := fnd_api.g_ret_sts_unexp_error;
609 
610       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
611                                 p_count => x_msg_count,
612                                 p_data  => x_msg_data);
613 
614       -- Debug info.
615       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
616         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
617                                p_msg_data=>x_msg_data,
618                                p_msg_type=>'UNEXPECTED ERROR',
619                                p_msg_level=>fnd_log.level_error);
620       END IF;
621       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
622         hz_utility_v2pub.debug(p_message=>'save_org_contacts(-)',
623                                p_prefix=>l_debug_prefix,
624                                p_msg_level=>fnd_log.level_procedure);
625       END IF;
626     WHEN OTHERS THEN
627       x_return_status := fnd_api.g_ret_sts_unexp_error;
628 
629       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
630       fnd_message.set_token('ERROR' ,SQLERRM);
631       fnd_msg_pub.add;
632 
633       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
634                                 p_count => x_msg_count,
635                                 p_data  => x_msg_data);
636 
637       -- Debug info.
638       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
639         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
640                                p_msg_data=>x_msg_data,
641                                p_msg_type=>'SQL ERROR',
642                                p_msg_level=>fnd_log.level_error);
643       END IF;
644       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
645         hz_utility_v2pub.debug(p_message=>'save_org_contacts(-)',
646                                p_prefix=>l_debug_prefix,
647                                p_msg_level=>fnd_log.level_procedure);
648       END IF;
649   END save_org_contacts;
650 
651 END hz_org_contact_bo_pvt;