DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_CONTACT_POINT_BO_PVT

Source


1 PACKAGE BODY hz_contact_point_bo_pvt AS
2 /*$Header: ARHBCPVB.pls 120.6 2006/05/18 22:23:48 acng noship $ */
3 
4   -- PROCEDURE save_contact_points
5   --
6   -- DESCRIPTION
7   --     Create or update contact points.
8   --
9   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10   --
11   -- ARGUMENTS
12   --   IN:
13   --     p_phone_objs         List of phone business objects.
14   --     p_telex_objs         List of telex business objects.
15   --     p_email_objs         List of email business objects.
16   --     p_web_objs           List of web business objects.
17   --     p_edi_objs           List of edi business objects.
18   --     p_eft_objs           List of eft business objects.
19   --     p_sms_objs           List of sms business objects.
20   --     p_owner_table_id     Owner table Id.
21   --     p_owner_table_os     Owner table original system.
22   --     p_owner_table_osr    Owner table original system reference.
23   --     p_parent_obj_type    Parent object type.
24   --     p_create_update_flag Create or update flag.
25   --   OUT:
26   --     x_return_status      Return status after the call. The status can
27   --                          be fnd_api.g_ret_sts_success (success),
28   --                          fnd_api.g_ret_sts_error (error),
29   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
30   --     x_msg_count          Number of messages in message stack.
31   --     x_msg_data           Message text if x_msg_count is 1.
32   --
33   -- NOTES
34   --
35   -- MODIFICATION HISTORY
36   --
37   --   14-DEC-2004    Arnold Ng          Created.
38   --
39 
40   PROCEDURE save_contact_points(
41     p_phone_objs                 IN OUT NOCOPY HZ_PHONE_CP_BO_TBL,
42     p_telex_objs                 IN OUT NOCOPY HZ_TELEX_CP_BO_TBL,
43     p_email_objs                 IN OUT NOCOPY HZ_EMAIL_CP_BO_TBL,
44     p_web_objs                   IN OUT NOCOPY HZ_WEB_CP_BO_TBL,
45     p_edi_objs                   IN OUT NOCOPY HZ_EDI_CP_BO_TBL,
46     p_eft_objs                   IN OUT NOCOPY HZ_EFT_CP_BO_TBL,
47     p_sms_objs                   IN OUT NOCOPY HZ_SMS_CP_BO_TBL,
48     p_owner_table_id             IN         NUMBER,
49     p_owner_table_os             IN         VARCHAR2,
50     p_owner_table_osr            IN         VARCHAR2,
51     p_parent_obj_type            IN         VARCHAR2,
52     p_create_update_flag         IN         VARCHAR2,
53     p_obj_source                 IN         VARCHAR2 := null,
54     x_return_status              OUT NOCOPY VARCHAR2,
55     x_msg_count                  OUT NOCOPY NUMBER,
56     x_msg_data                   OUT NOCOPY VARCHAR2
57   )IS
58     l_cp_id                      NUMBER;
59     l_cp_os                      VARCHAR2(30);
60     l_cp_osr                     VARCHAR2(255);
61     l_owner_table_id             NUMBER;
62     l_owner_table_os             VARCHAR2(30);
63     l_owner_table_osr            VARCHAR2(255);
64     l_parent_obj_type            VARCHAR2(30);
65     l_debug_prefix               VARCHAR2(30);
66     l_current_cp_type            VARCHAR2(30);
67     l_cbm                        VARCHAR2(30);
68   BEGIN
69     -- initialize API return status to success.
70     x_return_status := FND_API.G_RET_STS_SUCCESS;
71 
72     -- Debug info.
73     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
74         hz_utility_v2pub.debug(p_message=>'save_contact_points(+)',
75                                p_prefix=>l_debug_prefix,
76                                p_msg_level=>fnd_log.level_procedure);
77     END IF;
78 
79     l_owner_table_id  := p_owner_table_id;
80     l_owner_table_os  := p_owner_table_os;
81     l_owner_table_osr := p_owner_table_osr;
82     l_parent_obj_type := p_parent_obj_type;
83 
84     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
85 
86     IF(p_create_update_flag = 'C') THEN
87       -----------------------------
88       -- Create phone contact point
89       -----------------------------
90       IF((p_phone_objs IS NOT NULL) AND (p_phone_objs.COUNT > 0)) THEN
91         l_current_cp_type := 'PHONE';
92 
93         FOR i IN 1..p_phone_objs.COUNT LOOP
94           HZ_CONTACT_POINT_BO_PUB.do_create_contact_point(
95             p_init_msg_list                   => FND_API.G_FALSE,
96             p_validate_bo_flag                => FND_API.G_FALSE,
97             p_cp_id                           => p_phone_objs(i).phone_id,
98             p_cp_os                           => p_phone_objs(i).orig_system,
99             p_cp_osr                          => p_phone_objs(i).orig_system_reference,
100             p_phone_obj                       => p_phone_objs(i),
101             p_email_obj                       => NULL,
102             p_telex_obj                       => NULL,
103             p_web_obj                         => NULL,
104             p_edi_obj                         => NULL,
105             p_eft_obj                         => NULL,
106             p_sms_obj                         => NULL,
107             p_cp_pref_objs                    => p_phone_objs(i).contact_pref_objs,
108             p_cp_type                         => l_current_cp_type,
109             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
110             p_obj_source                      => p_obj_source,
111             x_return_status                   => x_return_status,
112             x_msg_count                       => x_msg_count,
113             x_msg_data                        => x_msg_data,
114             x_cp_id                           => l_cp_id,
115             x_cp_os                           => l_cp_os,
116             x_cp_osr                          => l_cp_osr,
117             px_parent_id                      => l_owner_table_id,
118             px_parent_os                      => l_owner_table_os,
119             px_parent_osr                     => l_owner_table_osr,
120             px_parent_obj_type                => l_parent_obj_type
121           );
122           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
123             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
124               hz_utility_v2pub.debug(p_message=>'Create PHONE - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
125                                      p_prefix=>l_debug_prefix,
126                                      p_msg_level=>fnd_log.level_procedure);
127             END IF;
128             RAISE FND_API.G_EXC_ERROR;
129           END IF;
130 
131           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
132           p_phone_objs(i).phone_id := l_cp_id;
133         END LOOP;
134       END IF;
135 
136       -----------------------------
137       -- Create telex contact point
138       -----------------------------
139       IF((p_telex_objs IS NOT NULL) AND (p_telex_objs.COUNT > 0)) THEN
140         l_current_cp_type := 'TLX';
141 
142         FOR i IN 1..p_telex_objs.COUNT LOOP
143           HZ_CONTACT_POINT_BO_PUB.do_create_contact_point(
144             p_init_msg_list                   => FND_API.G_FALSE,
145             p_validate_bo_flag                => FND_API.G_FALSE,
146             p_cp_id                           => p_telex_objs(i).telex_id,
147             p_cp_os                           => p_telex_objs(i).orig_system,
148             p_cp_osr                          => p_telex_objs(i).orig_system_reference,
149             p_phone_obj                       => NULL,
150             p_email_obj                       => NULL,
151             p_telex_obj                       => p_telex_objs(i),
152             p_web_obj                         => NULL,
153             p_edi_obj                         => NULL,
154             p_eft_obj                         => NULL,
155             p_sms_obj                         => NULL,
156             p_cp_pref_objs                    => p_telex_objs(i).contact_pref_objs,
157             p_cp_type                         => l_current_cp_type,
158             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
159             p_obj_source                      => p_obj_source,
160             x_return_status                   => x_return_status,
161             x_msg_count                       => x_msg_count,
162             x_msg_data                        => x_msg_data,
163             x_cp_id                           => l_cp_id,
164             x_cp_os                           => l_cp_os,
165             x_cp_osr                          => l_cp_osr,
166             px_parent_id                      => l_owner_table_id,
167             px_parent_os                      => l_owner_table_os,
168             px_parent_osr                     => l_owner_table_osr,
169             px_parent_obj_type                => l_parent_obj_type
170           );
171           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
172             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
173               hz_utility_v2pub.debug(p_message=>'Create TLX - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
174                                      p_prefix=>l_debug_prefix,
175                                      p_msg_level=>fnd_log.level_procedure);
176             END IF;
177             RAISE FND_API.G_EXC_ERROR;
178           END IF;
179 
180           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
181           p_telex_objs(i).telex_id := l_cp_id;
182         END LOOP;
183       END IF;
184 
185       -----------------------------
186       -- Create email contact point
187       -----------------------------
188       IF((p_email_objs IS NOT NULL) AND (p_email_objs.COUNT > 0)) THEN
189         l_current_cp_type := 'EMAIL';
190 
191         FOR i IN 1..p_email_objs.COUNT LOOP
192           HZ_CONTACT_POINT_BO_PUB.do_create_contact_point(
193             p_init_msg_list                   => FND_API.G_FALSE,
194             p_validate_bo_flag                => FND_API.G_FALSE,
195             p_cp_id                           => p_email_objs(i).email_id,
196             p_cp_os                           => p_email_objs(i).orig_system,
197             p_cp_osr                          => p_email_objs(i).orig_system_reference,
198             p_phone_obj                       => NULL,
199             p_email_obj                       => p_email_objs(i),
200             p_telex_obj                       => NULL,
201             p_web_obj                         => NULL,
202             p_edi_obj                         => NULL,
203             p_eft_obj                         => NULL,
204             p_sms_obj                         => NULL,
205             p_cp_pref_objs                    => p_email_objs(i).contact_pref_objs,
206             p_cp_type                         => l_current_cp_type,
207             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
208             p_obj_source                      => p_obj_source,
209             x_return_status                   => x_return_status,
210             x_msg_count                       => x_msg_count,
211             x_msg_data                        => x_msg_data,
212             x_cp_id                           => l_cp_id,
213             x_cp_os                           => l_cp_os,
214             x_cp_osr                          => l_cp_osr,
215             px_parent_id                      => l_owner_table_id,
216             px_parent_os                      => l_owner_table_os,
217             px_parent_osr                     => l_owner_table_osr,
218             px_parent_obj_type                => l_parent_obj_type
219           );
220           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
221             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
222               hz_utility_v2pub.debug(p_message=>'Create EMAIL - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
223                                      p_prefix=>l_debug_prefix,
224                                      p_msg_level=>fnd_log.level_procedure);
225             END IF;
226             RAISE FND_API.G_EXC_ERROR;
227           END IF;
228 
229           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
230           p_email_objs(i).email_id := l_cp_id;
231         END LOOP;
232       END IF;
233 
234       -----------------------------
235       -- Create web contact point
236       -----------------------------
237       IF((p_web_objs IS NOT NULL) AND (p_web_objs.COUNT > 0)) THEN
238         l_current_cp_type := 'WEB';
239 
240         FOR i IN 1..p_web_objs.COUNT LOOP
241           HZ_CONTACT_POINT_BO_PUB.do_create_contact_point(
242             p_init_msg_list                   => FND_API.G_FALSE,
243             p_validate_bo_flag                => FND_API.G_FALSE,
244             p_cp_id                           => p_web_objs(i).web_id,
245             p_cp_os                           => p_web_objs(i).orig_system,
246             p_cp_osr                          => p_web_objs(i).orig_system_reference,
247             p_phone_obj                       => NULL,
248             p_email_obj                       => NULL,
249             p_telex_obj                       => NULL,
250             p_web_obj                         => p_web_objs(i),
251             p_edi_obj                         => NULL,
252             p_eft_obj                         => NULL,
253             p_sms_obj                         => NULL,
254             p_cp_pref_objs                    => p_web_objs(i).contact_pref_objs,
255             p_cp_type                         => l_current_cp_type,
256             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
257             p_obj_source                      => p_obj_source,
258             x_return_status                   => x_return_status,
259             x_msg_count                       => x_msg_count,
260             x_msg_data                        => x_msg_data,
261             x_cp_id                           => l_cp_id,
262             x_cp_os                           => l_cp_os,
263             x_cp_osr                          => l_cp_osr,
264             px_parent_id                      => l_owner_table_id,
265             px_parent_os                      => l_owner_table_os,
266             px_parent_osr                     => l_owner_table_osr,
267             px_parent_obj_type                => l_parent_obj_type
268           );
269           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
270             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
271               hz_utility_v2pub.debug(p_message=>'Create WEB - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
272                                      p_prefix=>l_debug_prefix,
273                                      p_msg_level=>fnd_log.level_procedure);
274             END IF;
275             RAISE FND_API.G_EXC_ERROR;
276           END IF;
277 
278           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
279           p_web_objs(i).web_id := l_cp_id;
280         END LOOP;
281       END IF;
282 
283       -----------------------------
284       -- Create edi contact point
285       -----------------------------
286       IF((p_edi_objs IS NOT NULL) AND (p_edi_objs.COUNT > 0)) THEN
287         l_current_cp_type := 'EDI';
288 
289         FOR i IN 1..p_edi_objs.COUNT LOOP
290           HZ_CONTACT_POINT_BO_PUB.do_create_contact_point(
291             p_init_msg_list                   => FND_API.G_FALSE,
292             p_validate_bo_flag                => FND_API.G_FALSE,
293             p_cp_id                           => p_edi_objs(i).edi_id,
294             p_cp_os                           => p_edi_objs(i).orig_system,
295             p_cp_osr                          => p_edi_objs(i).orig_system_reference,
296             p_phone_obj                       => NULL,
297             p_email_obj                       => NULL,
298             p_telex_obj                       => NULL,
299             p_web_obj                         => NULL,
300             p_edi_obj                         => p_edi_objs(i),
301             p_eft_obj                         => NULL,
302             p_sms_obj                         => NULL,
303             p_cp_pref_objs                    => p_edi_objs(i).contact_pref_objs,
304             p_cp_type                         => l_current_cp_type,
305             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
306             p_obj_source                      => p_obj_source,
307             x_return_status                   => x_return_status,
308             x_msg_count                       => x_msg_count,
309             x_msg_data                        => x_msg_data,
310             x_cp_id                           => l_cp_id,
311             x_cp_os                           => l_cp_os,
312             x_cp_osr                          => l_cp_osr,
313             px_parent_id                      => l_owner_table_id,
314             px_parent_os                      => l_owner_table_os,
315             px_parent_osr                     => l_owner_table_osr,
316             px_parent_obj_type                => l_parent_obj_type
317           );
318           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
319             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
320               hz_utility_v2pub.debug(p_message=>'Create EDI - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
321                                      p_prefix=>l_debug_prefix,
322                                      p_msg_level=>fnd_log.level_procedure);
323             END IF;
324             RAISE FND_API.G_EXC_ERROR;
325           END IF;
326 
327           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
328           p_edi_objs(i).edi_id := l_cp_id;
329         END LOOP;
330       END IF;
331 
332       -----------------------------
333       -- Create eft contact point
334       -----------------------------
335       IF((p_eft_objs IS NOT NULL) AND (p_eft_objs.COUNT > 0)) THEN
336         l_current_cp_type := 'EFT';
337 
338         FOR i IN 1..p_eft_objs.COUNT LOOP
339           HZ_CONTACT_POINT_BO_PUB.do_create_contact_point(
340             p_init_msg_list                   => FND_API.G_FALSE,
341             p_validate_bo_flag                => FND_API.G_FALSE,
342             p_cp_id                           => p_eft_objs(i).eft_id,
343             p_cp_os                           => p_eft_objs(i).orig_system,
344             p_cp_osr                          => p_eft_objs(i).orig_system_reference,
345             p_phone_obj                       => NULL,
346             p_email_obj                       => NULL,
347             p_telex_obj                       => NULL,
348             p_web_obj                         => NULL,
349             p_edi_obj                         => NULL,
350             p_eft_obj                         => p_eft_objs(i),
351             p_sms_obj                         => NULL,
352             p_cp_pref_objs                    => p_eft_objs(i).contact_pref_objs,
353             p_cp_type                         => l_current_cp_type,
354             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
355             p_obj_source                      => p_obj_source,
356             x_return_status                   => x_return_status,
357             x_msg_count                       => x_msg_count,
358             x_msg_data                        => x_msg_data,
359             x_cp_id                           => l_cp_id,
360             x_cp_os                           => l_cp_os,
361             x_cp_osr                          => l_cp_osr,
362             px_parent_id                      => l_owner_table_id,
363             px_parent_os                      => l_owner_table_os,
364             px_parent_osr                     => l_owner_table_osr,
365             px_parent_obj_type                => l_parent_obj_type
366           );
367           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
368             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
369               hz_utility_v2pub.debug(p_message=>'Create EFT - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
370                                      p_prefix=>l_debug_prefix,
371                                      p_msg_level=>fnd_log.level_procedure);
372             END IF;
373             RAISE FND_API.G_EXC_ERROR;
374           END IF;
375 
376           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
377           p_eft_objs(i).eft_id := l_cp_id;
378         END LOOP;
379       END IF;
380 
381       -----------------------------
382       -- Create sms contact point
383       -----------------------------
384       IF((p_sms_objs IS NOT NULL) AND (p_sms_objs.COUNT > 0)) THEN
385         l_current_cp_type := 'SMS';
386 
387         FOR i IN 1..p_sms_objs.COUNT LOOP
388           HZ_CONTACT_POINT_BO_PUB.do_create_contact_point(
389             p_init_msg_list                   => FND_API.G_FALSE,
390             p_validate_bo_flag                => FND_API.G_FALSE,
391             p_cp_id                           => p_sms_objs(i).sms_id,
392             p_cp_os                           => p_sms_objs(i).orig_system,
393             p_cp_osr                          => p_sms_objs(i).orig_system_reference,
394             p_phone_obj                       => NULL,
395             p_email_obj                       => NULL,
396             p_telex_obj                       => NULL,
397             p_web_obj                         => NULL,
398             p_edi_obj                         => NULL,
399             p_eft_obj                         => NULL,
400             p_sms_obj                         => p_sms_objs(i),
401             p_cp_pref_objs                    => p_sms_objs(i).contact_pref_objs,
402             p_cp_type                         => l_current_cp_type,
403             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
404             p_obj_source                      => p_obj_source,
405             x_return_status                   => x_return_status,
406             x_msg_count                       => x_msg_count,
407             x_msg_data                        => x_msg_data,
408             x_cp_id                           => l_cp_id,
409             x_cp_os                           => l_cp_os,
410             x_cp_osr                          => l_cp_osr,
411             px_parent_id                      => l_owner_table_id,
412             px_parent_os                      => l_owner_table_os,
413             px_parent_osr                     => l_owner_table_osr,
414             px_parent_obj_type                => l_parent_obj_type
415           );
416           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
417             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
418               hz_utility_v2pub.debug(p_message=>'Create SMS - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
419                                      p_prefix=>l_debug_prefix,
420                                      p_msg_level=>fnd_log.level_procedure);
421             END IF;
422             RAISE FND_API.G_EXC_ERROR;
423           END IF;
424 
425           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
426           p_sms_objs(i).sms_id := l_cp_id;
427         END LOOP;
428       END IF;
429     ELSE
430       -----------------------------
431       -- Save phone contact point
432       -----------------------------
433       IF((p_phone_objs IS NOT NULL) AND (p_phone_objs.COUNT > 0)) THEN
434         l_current_cp_type := 'PHONE';
435 
436         FOR i IN 1..p_phone_objs.COUNT LOOP
437           HZ_CONTACT_POINT_BO_PUB.do_save_contact_point(
438             p_init_msg_list                   => FND_API.G_FALSE,
439             p_validate_bo_flag                => FND_API.G_FALSE,
440             p_cp_id                           => p_phone_objs(i).phone_id,
441             p_cp_os                           => p_phone_objs(i).orig_system,
442             p_cp_osr                          => p_phone_objs(i).orig_system_reference,
443             p_phone_obj                       => p_phone_objs(i),
444             p_email_obj                       => NULL,
445             p_telex_obj                       => NULL,
446             p_web_obj                         => NULL,
447             p_edi_obj                         => NULL,
448             p_eft_obj                         => NULL,
449             p_sms_obj                         => NULL,
450             p_cp_pref_objs                    => p_phone_objs(i).contact_pref_objs,
451             p_cp_type                         => l_current_cp_type,
452             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
453             p_obj_source                      => p_obj_source,
454             x_return_status                   => x_return_status,
455             x_msg_count                       => x_msg_count,
456             x_msg_data                        => x_msg_data,
457             x_cp_id                           => l_cp_id,
458             x_cp_os                           => l_cp_os,
459             x_cp_osr                          => l_cp_osr,
460             px_parent_id                      => l_owner_table_id,
461             px_parent_os                      => l_owner_table_os,
462             px_parent_osr                     => l_owner_table_osr,
463             px_parent_obj_type                => l_parent_obj_type
464           );
465           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
466             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
467               hz_utility_v2pub.debug(p_message=>'Save PHONE - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
468                                      p_prefix=>l_debug_prefix,
469                                      p_msg_level=>fnd_log.level_procedure);
470             END IF;
471             RAISE FND_API.G_EXC_ERROR;
472           END IF;
473 
474           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
475           p_phone_objs(i).phone_id := l_cp_id;
476         END LOOP;
477       END IF;
478 
479       -----------------------------
480       -- Save telex contact point
481       -----------------------------
482       IF((p_telex_objs IS NOT NULL) AND (p_telex_objs.COUNT > 0)) THEN
483         l_current_cp_type := 'TLX';
484 
485         FOR i IN 1..p_telex_objs.COUNT LOOP
486           HZ_CONTACT_POINT_BO_PUB.do_save_contact_point(
487             p_init_msg_list                   => FND_API.G_FALSE,
488             p_validate_bo_flag                => FND_API.G_FALSE,
489             p_cp_id                           => p_telex_objs(i).telex_id,
490             p_cp_os                           => p_telex_objs(i).orig_system,
491             p_cp_osr                          => p_telex_objs(i).orig_system_reference,
492             p_phone_obj                       => NULL,
493             p_email_obj                       => NULL,
494             p_telex_obj                       => p_telex_objs(i),
495             p_web_obj                         => NULL,
496             p_edi_obj                         => NULL,
497             p_eft_obj                         => NULL,
498             p_sms_obj                         => NULL,
499             p_cp_pref_objs                    => p_telex_objs(i).contact_pref_objs,
500             p_cp_type                         => l_current_cp_type,
501             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
502             p_obj_source                      => p_obj_source,
503             x_return_status                   => x_return_status,
504             x_msg_count                       => x_msg_count,
505             x_msg_data                        => x_msg_data,
506             x_cp_id                           => l_cp_id,
507             x_cp_os                           => l_cp_os,
508             x_cp_osr                          => l_cp_osr,
509             px_parent_id                      => l_owner_table_id,
510             px_parent_os                      => l_owner_table_os,
511             px_parent_osr                     => l_owner_table_osr,
512             px_parent_obj_type                => l_parent_obj_type
513           );
514           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
515             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
516               hz_utility_v2pub.debug(p_message=>'Save TLX - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
517                                      p_prefix=>l_debug_prefix,
518                                      p_msg_level=>fnd_log.level_procedure);
519             END IF;
520             RAISE FND_API.G_EXC_ERROR;
521           END IF;
522 
523           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
524           p_telex_objs(i).telex_id := l_cp_id;
525         END LOOP;
526       END IF;
527 
528       -----------------------------
529       -- Save email contact point
530       -----------------------------
531       IF((p_email_objs IS NOT NULL) AND (p_email_objs.COUNT > 0)) THEN
532         l_current_cp_type := 'EMAIL';
533 
534         FOR i IN 1..p_email_objs.COUNT LOOP
535           HZ_CONTACT_POINT_BO_PUB.do_save_contact_point(
536             p_init_msg_list                   => FND_API.G_FALSE,
537             p_validate_bo_flag                => FND_API.G_FALSE,
538             p_cp_id                           => p_email_objs(i).email_id,
539             p_cp_os                           => p_email_objs(i).orig_system,
540             p_cp_osr                          => p_email_objs(i).orig_system_reference,
541             p_phone_obj                       => NULL,
542             p_email_obj                       => p_email_objs(i),
543             p_telex_obj                       => NULL,
544             p_web_obj                         => NULL,
545             p_edi_obj                         => NULL,
546             p_eft_obj                         => NULL,
547             p_sms_obj                         => NULL,
548             p_cp_pref_objs                    => p_email_objs(i).contact_pref_objs,
549             p_cp_type                         => l_current_cp_type,
550             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
551             p_obj_source                      => p_obj_source,
552             x_return_status                   => x_return_status,
553             x_msg_count                       => x_msg_count,
554             x_msg_data                        => x_msg_data,
555             x_cp_id                           => l_cp_id,
556             x_cp_os                           => l_cp_os,
557             x_cp_osr                          => l_cp_osr,
558             px_parent_id                      => l_owner_table_id,
559             px_parent_os                      => l_owner_table_os,
560             px_parent_osr                     => l_owner_table_osr,
561             px_parent_obj_type                => l_parent_obj_type
562           );
563           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
564             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
565               hz_utility_v2pub.debug(p_message=>'Save EMAIL - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
566                                      p_prefix=>l_debug_prefix,
567                                      p_msg_level=>fnd_log.level_procedure);
568             END IF;
569             RAISE FND_API.G_EXC_ERROR;
570           END IF;
571 
572           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
573           p_email_objs(i).email_id := l_cp_id;
574         END LOOP;
575       END IF;
576 
577       -----------------------------
578       -- Save web contact point
579       -----------------------------
580       IF((p_web_objs IS NOT NULL) AND (p_web_objs.COUNT > 0)) THEN
581         l_current_cp_type := 'WEB';
582 
583         FOR i IN 1..p_web_objs.COUNT LOOP
584           HZ_CONTACT_POINT_BO_PUB.do_save_contact_point(
585             p_init_msg_list                   => FND_API.G_FALSE,
586             p_validate_bo_flag                => FND_API.G_FALSE,
587             p_cp_id                           => p_web_objs(i).web_id,
588             p_cp_os                           => p_web_objs(i).orig_system,
589             p_cp_osr                          => p_web_objs(i).orig_system_reference,
590             p_phone_obj                       => NULL,
591             p_email_obj                       => NULL,
592             p_telex_obj                       => NULL,
593             p_web_obj                         => p_web_objs(i),
594             p_edi_obj                         => NULL,
595             p_eft_obj                         => NULL,
596             p_sms_obj                         => NULL,
597             p_cp_pref_objs                    => p_web_objs(i).contact_pref_objs,
598             p_cp_type                         => l_current_cp_type,
599             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
600             p_obj_source                      => p_obj_source,
601             x_return_status                   => x_return_status,
602             x_msg_count                       => x_msg_count,
603             x_msg_data                        => x_msg_data,
604             x_cp_id                           => l_cp_id,
605             x_cp_os                           => l_cp_os,
606             x_cp_osr                          => l_cp_osr,
607             px_parent_id                      => l_owner_table_id,
608             px_parent_os                      => l_owner_table_os,
609             px_parent_osr                     => l_owner_table_osr,
610             px_parent_obj_type                => l_parent_obj_type
611           );
612           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
613             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
614               hz_utility_v2pub.debug(p_message=>'Save WEB - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
615                                      p_prefix=>l_debug_prefix,
616                                      p_msg_level=>fnd_log.level_procedure);
617             END IF;
618             RAISE FND_API.G_EXC_ERROR;
619           END IF;
620 
621           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
622           p_web_objs(i).web_id := l_cp_id;
623         END LOOP;
624       END IF;
625 
626       -----------------------------
627       -- Save edi contact point
628       -----------------------------
629       IF((p_edi_objs IS NOT NULL) AND (p_edi_objs.COUNT > 0)) THEN
630         l_current_cp_type := 'EDI';
631 
632         FOR i IN 1..p_edi_objs.COUNT LOOP
633           HZ_CONTACT_POINT_BO_PUB.do_save_contact_point(
634             p_init_msg_list                   => FND_API.G_FALSE,
635             p_validate_bo_flag                => FND_API.G_FALSE,
636             p_cp_id                           => p_edi_objs(i).edi_id,
637             p_cp_os                           => p_edi_objs(i).orig_system,
638             p_cp_osr                          => p_edi_objs(i).orig_system_reference,
639             p_phone_obj                       => NULL,
640             p_email_obj                       => NULL,
641             p_telex_obj                       => NULL,
642             p_web_obj                         => NULL,
643             p_edi_obj                         => p_edi_objs(i),
644             p_eft_obj                         => NULL,
645             p_sms_obj                         => NULL,
646             p_cp_pref_objs                    => p_edi_objs(i).contact_pref_objs,
647             p_cp_type                         => l_current_cp_type,
648             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
649             p_obj_source                      => p_obj_source,
650             x_return_status                   => x_return_status,
651             x_msg_count                       => x_msg_count,
652             x_msg_data                        => x_msg_data,
653             x_cp_id                           => l_cp_id,
654             x_cp_os                           => l_cp_os,
655             x_cp_osr                          => l_cp_osr,
656             px_parent_id                      => l_owner_table_id,
657             px_parent_os                      => l_owner_table_os,
658             px_parent_osr                     => l_owner_table_osr,
659             px_parent_obj_type                => l_parent_obj_type
660           );
661           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
662             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
663               hz_utility_v2pub.debug(p_message=>'Save EDI - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
664                                      p_prefix=>l_debug_prefix,
665                                      p_msg_level=>fnd_log.level_procedure);
666             END IF;
667             RAISE FND_API.G_EXC_ERROR;
668           END IF;
669 
670           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
671           p_edi_objs(i).edi_id := l_cp_id;
672         END LOOP;
673       END IF;
674 
675       -----------------------------
676       -- Save eft contact point
677       -----------------------------
678       IF((p_eft_objs IS NOT NULL) AND (p_eft_objs.COUNT > 0)) THEN
679         l_current_cp_type := 'EFT';
680 
681         FOR i IN 1..p_eft_objs.COUNT LOOP
682           HZ_CONTACT_POINT_BO_PUB.do_save_contact_point(
683             p_init_msg_list                   => FND_API.G_FALSE,
684             p_validate_bo_flag                => FND_API.G_FALSE,
685             p_cp_id                           => p_eft_objs(i).eft_id,
686             p_cp_os                           => p_eft_objs(i).orig_system,
687             p_cp_osr                          => p_eft_objs(i).orig_system_reference,
688             p_phone_obj                       => NULL,
689             p_email_obj                       => NULL,
690             p_telex_obj                       => NULL,
691             p_web_obj                         => NULL,
692             p_edi_obj                         => NULL,
693             p_eft_obj                         => p_eft_objs(i),
694             p_sms_obj                         => NULL,
695             p_cp_pref_objs                    => p_eft_objs(i).contact_pref_objs,
696             p_cp_type                         => l_current_cp_type,
697             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
698             p_obj_source                      => p_obj_source,
699             x_return_status                   => x_return_status,
700             x_msg_count                       => x_msg_count,
701             x_msg_data                        => x_msg_data,
702             x_cp_id                           => l_cp_id,
703             x_cp_os                           => l_cp_os,
704             x_cp_osr                          => l_cp_osr,
705             px_parent_id                      => l_owner_table_id,
706             px_parent_os                      => l_owner_table_os,
707             px_parent_osr                     => l_owner_table_osr,
708             px_parent_obj_type                => l_parent_obj_type
709           );
710           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
711             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
712               hz_utility_v2pub.debug(p_message=>'Save EFT - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
713                                      p_prefix=>l_debug_prefix,
714                                      p_msg_level=>fnd_log.level_procedure);
715             END IF;
716             RAISE FND_API.G_EXC_ERROR;
717           END IF;
718 
719           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
720           p_eft_objs(i).eft_id := l_cp_id;
721         END LOOP;
722       END IF;
723 
724       -----------------------------
725       -- Save sms contact point
726       -----------------------------
727       IF((p_sms_objs IS NOT NULL) AND (p_sms_objs.COUNT > 0)) THEN
728         l_current_cp_type := 'SMS';
729 
730         FOR i IN 1..p_sms_objs.COUNT LOOP
731           HZ_CONTACT_POINT_BO_PUB.do_save_contact_point(
732             p_init_msg_list                   => FND_API.G_FALSE,
733             p_validate_bo_flag                => FND_API.G_FALSE,
734             p_cp_id                           => p_sms_objs(i).sms_id,
735             p_cp_os                           => p_sms_objs(i).orig_system,
736             p_cp_osr                          => p_sms_objs(i).orig_system_reference,
737             p_phone_obj                       => NULL,
738             p_email_obj                       => NULL,
739             p_telex_obj                       => NULL,
740             p_web_obj                         => NULL,
741             p_edi_obj                         => NULL,
742             p_eft_obj                         => NULL,
743             p_sms_obj                         => p_sms_objs(i),
744             p_cp_pref_objs                    => p_sms_objs(i).contact_pref_objs,
745             p_cp_type                         => l_current_cp_type,
746             p_created_by_module               => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
747             p_obj_source                      => p_obj_source,
748             x_return_status                   => x_return_status,
749             x_msg_count                       => x_msg_count,
750             x_msg_data                        => x_msg_data,
751             x_cp_id                           => l_cp_id,
752             x_cp_os                           => l_cp_os,
753             x_cp_osr                          => l_cp_osr,
754             px_parent_id                      => l_owner_table_id,
755             px_parent_os                      => l_owner_table_os,
756             px_parent_osr                     => l_owner_table_osr,
757             px_parent_obj_type                => l_parent_obj_type
758           );
759           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
760             IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
761               hz_utility_v2pub.debug(p_message=>'Save SMS - Error occurred at hz_contact_point_bo_pvt.save_contact_points: '||l_cp_id||' '||l_cp_os||' '||l_cp_osr||', owner table: '||l_owner_table_id||' '||l_owner_table_os||' '||l_owner_table_osr,
762                                      p_prefix=>l_debug_prefix,
763                                      p_msg_level=>fnd_log.level_procedure);
764             END IF;
765             RAISE FND_API.G_EXC_ERROR;
766           END IF;
767 
768           HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
769           p_sms_objs(i).sms_id := l_cp_id;
770         END LOOP;
771       END IF;
772     END IF;
773 
774     -- Debug info.
775     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
776          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
777                                p_msg_data=>x_msg_data,
778                                p_msg_type=>'WARNING',
779                                p_msg_level=>fnd_log.level_exception);
780     END IF;
781     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
782         hz_utility_v2pub.debug(p_message=>'save_contact_points(-)',
783                                p_prefix=>l_debug_prefix,
784                                p_msg_level=>fnd_log.level_procedure);
785     END IF;
786   EXCEPTION
787     WHEN fnd_api.g_exc_error THEN
788       x_return_status := fnd_api.g_ret_sts_error;
789       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
790                                 p_count => x_msg_count,
791                                 p_data  => x_msg_data);
792 
793       -- Debug info.
794       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
795         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
796                                p_msg_data=>x_msg_data,
797                                p_msg_type=>'ERROR',
798                                p_msg_level=>fnd_log.level_error);
799       END IF;
800       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
801         hz_utility_v2pub.debug(p_message=>'save_contact_points(-)',
802                                p_prefix=>l_debug_prefix,
803                                p_msg_level=>fnd_log.level_procedure);
804       END IF;
805 
806     WHEN fnd_api.g_exc_unexpected_error THEN
807       x_return_status := fnd_api.g_ret_sts_unexp_error;
808 
809       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
810                                 p_count => x_msg_count,
811                                 p_data  => x_msg_data);
812 
813       -- Debug info.
814       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
815         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
816                                p_msg_data=>x_msg_data,
817                                p_msg_type=>'UNEXPECTED ERROR',
818                                p_msg_level=>fnd_log.level_error);
819       END IF;
820       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
821         hz_utility_v2pub.debug(p_message=>'save_contact_points(-)',
822                                p_prefix=>l_debug_prefix,
823                                p_msg_level=>fnd_log.level_procedure);
824       END IF;
825     WHEN OTHERS THEN
826       x_return_status := fnd_api.g_ret_sts_unexp_error;
827 
828       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
829       fnd_message.set_token('ERROR', SQLERRM);
830       fnd_msg_pub.add;
831 
832       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
833                                 p_count => x_msg_count,
834                                 p_data  => x_msg_data);
835 
836       -- Debug info.
837       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
838         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
839                                p_msg_data=>x_msg_data,
840                                p_msg_type=>'SQL ERROR',
841                                p_msg_level=>fnd_log.level_error);
842       END IF;
843       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
844         hz_utility_v2pub.debug(p_message=>'save_contact_points(-)',
845                                p_prefix=>l_debug_prefix,
846                                p_msg_level=>fnd_log.level_procedure);
847       END IF;
848   END save_contact_points;
849 
850 END hz_contact_point_bo_pvt;