DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_CONTACT_POINT_V2PUB

Source


1 PACKAGE BODY hz_contact_point_v2pub AS
2 /*$Header: ARH2CPSB.pls 120.41.12020000.5 2012/10/19 08:38:48 rgokavar ship $ */
3 
4   --------------------------------------
5   -- declaration of private global varibles
6   --------------------------------------
7 
8   g_debug_count                        NUMBER := 0;
9   --g_debug                              BOOLEAN := FALSE;
10 
11   -- Bug 2197181: added for mix-n-match project.
12 
13   g_cpt_mixnmatch_enabled              VARCHAR2(1);
14   g_cpt_selected_datasources           VARCHAR2(255);
15   g_cpt_is_datasource_selected         VARCHAR2(1) := 'N';
16   g_cpt_entity_attr_id                 NUMBER;
17 
18   --------------------------------------
19   -- declaration of private procedures and functions
20   --------------------------------------
21 
22   /*PROCEDURE enable_debug;
23 
24   PROCEDURE disable_debug;
25   */
26 
27 
28   PROCEDURE do_create_contact_point (
29     p_contact_point_rec                IN OUT NOCOPY contact_point_rec_type,
30     p_edi_rec                          IN OUT NOCOPY edi_rec_type,
31     p_eft_rec                          IN OUT NOCOPY eft_rec_type,
32     p_email_rec                        IN OUT NOCOPY email_rec_type,
33     p_phone_rec                        IN OUT NOCOPY phone_rec_type,
34     p_telex_rec                        IN OUT NOCOPY telex_rec_type,
35     p_web_rec                          IN OUT NOCOPY web_rec_type,
36     x_contact_point_id                 OUT NOCOPY    NUMBER,
37     x_return_status                    IN OUT NOCOPY VARCHAR2
38   );
39 
40   PROCEDURE do_update_contact_point (
41     p_contact_point_rec                IN OUT NOCOPY contact_point_rec_type,
42     p_edi_rec                          IN OUT NOCOPY edi_rec_type,
43     p_eft_rec                          IN OUT NOCOPY eft_rec_type,
44     p_email_rec                        IN OUT NOCOPY email_rec_type,
45     p_phone_rec                        IN OUT NOCOPY phone_rec_type,
46     p_telex_rec                        IN OUT NOCOPY telex_rec_type,
47     p_web_rec                          IN OUT NOCOPY web_rec_type,
48     p_object_version_number            IN OUT NOCOPY NUMBER,
49     x_return_status                    IN OUT NOCOPY VARCHAR2
50   );
51 
52 
53   PROCEDURE do_denormalize_contact_point (
54     p_party_id                         IN     NUMBER,
55     p_contact_point_type               IN     VARCHAR2,
56     p_url                              IN     VARCHAR2,
57     p_email_address                    IN     VARCHAR2,
58     p_phone_contact_pt_id              IN     NUMBER,
59     p_phone_purpose                    IN     VARCHAR2,
60     p_phone_line_type                  IN     VARCHAR2,
61     p_phone_country_code               IN     VARCHAR2,
62     p_phone_area_code                  IN     VARCHAR2,
63     p_phone_number                     IN     VARCHAR2,
64     p_phone_extension                  IN     VARCHAR2
65   );
66 
67   PROCEDURE do_unset_prim_contact_point (
68     p_owner_table_name                 IN     VARCHAR2,
69     p_owner_table_id                   IN     NUMBER,
70     p_contact_point_type               IN     VARCHAR2,
71     p_contact_point_id                 IN     NUMBER,
72     p_mode                             IN     VARCHAR2 := NULL
73   );
74 
75   PROCEDURE do_unset_primary_by_purpose (
76     p_owner_table_name                 IN     VARCHAR2,
77     p_owner_table_id                   IN     NUMBER,
78     p_contact_point_type               IN     VARCHAR2,
79     p_contact_point_purpose            IN     VARCHAR2,
80     p_contact_point_id                 IN     NUMBER
81   );
82 
83   FUNCTION filter_phone_number (
84     p_phone_number                     IN     VARCHAR2,
85     p_isformat                         IN     NUMBER := 0
86   ) RETURN VARCHAR2;
87 
88   PROCEDURE get_phone_format (
89     p_raw_phone_number                 IN     VARCHAR2 := fnd_api.g_miss_char,
90     p_territory_code                   IN     VARCHAR2 := fnd_api.g_miss_char,
91     p_area_code                        IN     VARCHAR2,
92     x_phone_country_code               OUT NOCOPY    VARCHAR2,
93     x_phone_format_style               OUT NOCOPY    VARCHAR2,
94     x_area_code_size                   OUT NOCOPY    VARCHAR2,
95     x_include_country_code             OUT NOCOPY    BOOLEAN,
96     x_msg                              OUT NOCOPY    VARCHAR2
97   );
98 
99   PROCEDURE translate_raw_phone_number (
100     p_raw_phone_number                 IN     VARCHAR2 := fnd_api.g_miss_char,
101     p_phone_format_style               IN     VARCHAR2 := fnd_api.g_miss_char,
102     p_area_code_size                   IN     NUMBER := 0,
103     x_formatted_phone_number           OUT NOCOPY    VARCHAR2,
104     x_phone_area_code                  OUT NOCOPY    VARCHAR2,
105     x_phone_number                     OUT NOCOPY    VARCHAR2
106   );
107 
108   PROCEDURE update_contact_point_search(
109        p_cp_rec        IN HZ_CONTACT_POINT_V2PUB.CONTACT_POINT_REC_TYPE,
110        p_old_phone_rec IN HZ_CONTACT_POINT_V2PUB.phone_rec_type,
111        p_new_phone_rec IN HZ_CONTACT_POINT_V2PUB.phone_rec_type,
112        p_old_email_rec IN HZ_CONTACT_POINT_V2PUB.email_rec_type,
113        p_new_email_rec IN HZ_CONTACT_POINT_V2PUB.email_rec_type
114    );
115   FUNCTION isModified(p_old_value IN VARCHAR2,
116                       p_new_value IN VARCHAR2
117                       ) RETURN BOOLEAN;
118 
119   FUNCTION get_protocol_prefixed_url (p_web_rec IN HZ_CONTACT_POINT_V2PUB.web_rec_type)
120            RETURN HZ_CONTACT_POINT_V2PUB.web_rec_type;
121 
122   --------------------------------------
123   -- private procedures and functions
124   --------------------------------------
125 
126   --
127   -- PRIVATE PROCEDURE enable_debug
128   --
129   -- DESCRIPTION
130   --     Turn on debug mode.
131   --
132   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
133   --     HZ_UTILITY_V2PUB.enable_debug
134   --
135   -- MODIFICATION HISTORY
136   --
137   --   07-23-2001    Jianying Huang      o Created.
138   --
139   --
140 
141   /*PROCEDURE enable_debug IS
142   BEGIN
143     g_debug_count := g_debug_count + 1;
144 
145     IF g_debug_count = 1 THEN
146       IF fnd_profile.value('HZ_API_FILE_DEBUG_ON') = 'Y' OR
147          fnd_profile.value('HZ_API_DBMS_DEBUG_ON') = 'Y'
148       THEN
149         hz_utility_v2pub.enable_debug;
150         g_debug := TRUE;
151       END IF;
152     END IF;
153   END enable_debug;
154   */
155 
156   --
157   -- PRIVATE PROCEDURE disable_debug
158   --
159   -- DESCRIPTION
160   --     Turn off debug mode.
161   --
162   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
163   --     HZ_UTILITY_V2PUB.disable_debug
164   --
165   -- MODIFICATION HISTORY
166   --
167   --   07-23-2001    Jianying Huang      o Created.
168   --
169   --
170 
171   /*PROCEDURE disable_debug IS
172   BEGIN
173     IF g_debug THEN
174       g_debug_count := g_debug_count - 1;
175 
176       IF g_debug_count = 0 THEN
177         hz_utility_v2pub.disable_debug;
178         g_debug := FALSE;
179       END IF;
180     END IF;
181   END disable_debug;
182   */
183 
184   --
185   -- PRIVATE FUNCTION get_protocol_prefixed_url
186   --
187   -- DESCRIPTION
188   --     To append 'http://' if it is not present in URL for web type (protocol)
189   --     HTTP. Otherwise it will simply return back passed in URL.
190   --     This can be extended in future for ther protocols also.
191   --
192   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
193   --     None
194   --
195   -- MODIFICATION HISTORY
196   --
197   --   02-MAY-2006    Nishant Singhai   o Created for Bug 4960793 (for HTTP)
198   --   16-NOV-2011    Sudhir Gokavarapu o Bug13363490
199   --                                      considering 'https://' also before
200   --                                      appending 'http://' to the URL
201   --
202   --
203 
204   FUNCTION get_protocol_prefixed_url (p_web_rec IN HZ_CONTACT_POINT_V2PUB.web_rec_type)
205   RETURN HZ_CONTACT_POINT_V2PUB.web_rec_type IS
206     l_web_type      VARCHAR2(60);
207     l_url           VARCHAR2(2000);
208     l_http_position NUMBER;
209     l_web_rec       HZ_CONTACT_POINT_V2PUB.web_rec_type;
210   BEGIN
211     l_web_type := p_web_rec.web_type;
212     l_url      := LTRIM(RTRIM(p_web_rec.url));
213 
214     -- If webtype is HTTP, prefix 'http://' if not present in the beginning
215     IF (l_web_type = 'HTTP') THEN
216       IF (l_url IS NOT NULL) THEN
217         l_http_position := INSTR(l_url,'http://');
218         IF (l_http_position = 0) THEN
219 		    l_http_position := INSTR(l_url,'https://');
220 			   --Bug13363490
221 			   IF (l_http_position = 0) THEN
222 				  -- append http:// in front of URL
223 				  l_url := 'http://'||l_url;
224 			   ELSIF (l_http_position > 1) THEN
225 				  -- remove from other location and append it in front
226 				  l_url := 'https://'||REPLACE(l_url,'https://','');
227 			   END IF;
228         ELSIF (l_http_position > 1) THEN
229           -- remove from other location and append it in front
230           l_url := 'http://'||REPLACE(l_url,'http://','');
231         END IF;
232       END IF;
233     END IF;
234 
235     l_web_rec.web_type := l_web_type;
236     l_web_rec.url      := l_url;
237     RETURN l_web_rec;
238   END get_protocol_prefixed_url;
239 
240   --
241   -- PRIVATE PROCEDURE do_create_contact_point
242   --
243   -- DESCRIPTION
244   --     Private procedure to create contact point.
245   --
246   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
247   --     hz_registry_validate_v2pub.validate_contact_point
248   --     hz_registry_validate_v2pub.validate_edi_contact_point
249   --     hz_registry_validate_v2pub.validate_eft_contact_point
250   --     hz_registry_validate_v2pub.validate_web_contact_point
251   --     hz_registry_validate_v2pub.validate_phone_contact_point
252   --     hz_registry_validate_v2pub.validate_telex_contact_point
253   --     hz_registry_validate_v2pub.validate_email_contact_point
254   --     hz_contact_points_pkg.insert_row
255   --     hz_phone_number_pkg.transpose
256   --
257   -- ARGUMENTS
258   --   IN/OUT:
259   --     p_contact_point_rec  Contact point record.
260   --     p_edi_rec            EDI record.
261   --     p_email_rec          Email record.
262   --     p_phone_rec          Phone record.
263   --     p_telex_rec          Telex record.
264   --     p_web_rec            Web record.
265   --     x_return_status      Return status after the call. The status can
266   --                          be FND_API.G_RET_STS_SUCCESS (success),
267   --                          FND_API.G_RET_STS_ERROR (error),
268   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
269   --   OUT:
270   --     x_contact_point_id   Contact point ID.
271   --
272   -- NOTES
273   --
274   -- MODIFICATION HISTORY
275   --
276   --   07-23-2001    Jianying Huang      o Created.
277   --   15-NOV-2001   Joe del Callar      Bug 2116225: Modified for consolidated
278   --                                     bank support (EFT record support).
279   --   05-DEC-2001   Joe del Callar      Bug 2136283: Modified to use new
280   --                                     validation procedures.
281   --   06-JUL-2004   Rajib Ranjan Borah  Bug 3520843.raw_phone_number will not be
282   --                                     re-created if passed initially.
283   --   01-03-2005    Rajib Ranjan Borah  SSM SST Integration and Extension.
284   --                                     For non-profile entities, the concept of
285   --                                     select/de-select data-sources is obsoleted.
286 
287   PROCEDURE do_create_contact_point (
288     p_contact_point_rec         IN OUT NOCOPY contact_point_rec_type,
289     p_edi_rec                   IN OUT NOCOPY edi_rec_type,
290     p_eft_rec                   IN OUT NOCOPY eft_rec_type,
291     p_email_rec                 IN OUT NOCOPY email_rec_type,
292     p_phone_rec                 IN OUT NOCOPY phone_rec_type,
293     p_telex_rec                 IN OUT NOCOPY telex_rec_type,
294     p_web_rec                   IN OUT NOCOPY web_rec_type,
295     x_contact_point_id          OUT NOCOPY    NUMBER,
296     x_return_status             IN OUT NOCOPY VARCHAR2
297   ) IS
298     l_debug_prefix              VARCHAR2(30) := ''; -- do_create_contact_point
299 
300     l_dummy                     VARCHAR2(1);
301     l_return_status             VARCHAR2(1);
302     l_message_count             NUMBER;
303     l_msg_count                 NUMBER;
304     l_msg_data                  VARCHAR2(2000);
305 
306     l_formatted_phone_number    VARCHAR2(100);
307     l_country_code              hz_locations.country%TYPE;
308     l_transposed_phone_number   hz_contact_points.transposed_phone_number%TYPE;
309 
310     l_edi_rec                   edi_rec_type;
311     l_email_rec                 email_rec_type;
312     l_phone_rec                 phone_rec_type;
316     l_orig_sys_reference_rec  HZ_ORIG_SYSTEM_REF_PUB.ORIG_SYS_REFERENCE_REC_TYPE;
313     l_telex_rec                 telex_rec_type;
314     l_web_rec                   web_rec_type;
315     l_eft_rec                   eft_rec_type;
317 
318     l_phone_line_type           VARCHAR2(30);
319     l_phone_country_code        VARCHAR2(10);
320     l_phone_area_code           VARCHAR2(10);
321     l_phone_number              VARCHAR2(40);
322     l_phone_extension           VARCHAR2(20);
323     l_contact_point_purpose     VARCHAR2(30);
324 
325     -- Bug 2117973: added following cursors for retrofit to conform to
326     -- Applications PL/SQL standards.
327 
328     CURSOR c_country (p_site_id IN NUMBER) IS
329       SELECT country
330       FROM   hz_locations
331       WHERE  location_id = (SELECT location_id
332                             FROM   hz_party_sites
333                             WHERE  party_site_id = p_site_id);
334 
335     -- Bug 2197181: added for mix-n-match project: the contact point
336     -- must be visible.
337 
338     -- SSM SST Integration and Extension
339     -- For non-profile entities, the concept of select/de-select data-sources is obsoleted.
340     -- There is no need to check if the data-source is selected.
341 
342     CURSOR c_cp (p_owner_table_name   IN VARCHAR2,
343                  p_owner_table_id     IN NUMBER,
344                  p_contact_point_type IN VARCHAR2) IS
345       SELECT 'Y'
346       FROM   hz_contact_points
347       WHERE  owner_table_name = p_owner_table_name
348       AND owner_table_id = p_owner_table_id
349       AND contact_point_type = p_contact_point_type
350 /*      AND HZ_MIXNM_UTILITY.isDataSourceSelected (
351             g_cpt_selected_datasources, actual_content_source ) = 'Y'*/
352       AND status = 'A'
353       AND rownum = 1;
354 
355   BEGIN
356     -- Debug info.
357     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
358         hz_utility_v2pub.debug(p_message=>'do_create_contact_point (+)',
359                                p_prefix=>l_debug_prefix,
360                                p_msg_level=>fnd_log.level_procedure);
361     END IF;
362 
363     IF p_contact_point_rec.contact_point_type = 'EDI' THEN
364       l_edi_rec := p_edi_rec;
365 
366       -- Validate the contact point record
367       hz_registry_validate_v2pub.validate_edi_contact_point (
368         p_create_update_flag    => 'C',
369         p_contact_point_rec     => p_contact_point_rec,
370         p_edi_rec               => l_edi_rec,
371         p_rowid                 => NULL,
372         x_return_status         => x_return_status);
373     ELSIF p_contact_point_rec.contact_point_type = 'EFT' THEN
374       l_eft_rec := p_eft_rec;
375 
376       -- Validate the contact point record
377       hz_registry_validate_v2pub.validate_eft_contact_point (
378         p_create_update_flag    => 'C',
379         p_contact_point_rec     => p_contact_point_rec,
380         p_eft_rec               => l_eft_rec,
381         p_rowid                 => NULL,
382         x_return_status         => x_return_status);
383     ELSIF p_contact_point_rec.contact_point_type = 'EMAIL' THEN
384       l_email_rec := p_email_rec;
385 
386       -- Validate the contact point record
387       hz_registry_validate_v2pub.validate_email_contact_point (
388         p_create_update_flag    => 'C',
389         p_contact_point_rec     => p_contact_point_rec,
390         p_email_rec             => l_email_rec,
391         p_rowid                 => NULL,
392         x_return_status         => x_return_status);
393     ELSIF p_contact_point_rec.contact_point_type = 'PHONE' THEN
394       l_phone_rec := p_phone_rec;
395 
396       -- Validate the contact point record
397       hz_registry_validate_v2pub.validate_phone_contact_point (
398         p_create_update_flag    => 'C',
399         p_contact_point_rec     => p_contact_point_rec,
400         p_phone_rec             => l_phone_rec,
401         p_rowid                 => NULL,
402         x_return_status         => x_return_status);
403     ELSIF p_contact_point_rec.contact_point_type = 'TLX' THEN
404       l_telex_rec := p_telex_rec;
405 
406       -- Validate the contact point record
407       hz_registry_validate_v2pub.validate_telex_contact_point (
408         p_create_update_flag    => 'C',
409         p_contact_point_rec     => p_contact_point_rec,
410         p_telex_rec             => l_telex_rec,
411         p_rowid                 => NULL,
412         x_return_status         => x_return_status);
413     ELSIF p_contact_point_rec.contact_point_type = 'WEB' THEN
414       --l_web_rec := p_web_rec;
415 
416       -- modify URL to prefix protocol (Bug 4960793 Nishant 02-May-2006)
417       l_web_rec := get_protocol_prefixed_url(p_web_rec);
418 
419       -- Validate the contact point record
420       hz_registry_validate_v2pub.validate_web_contact_point (
421         p_create_update_flag    => 'C',
422         p_contact_point_rec     => p_contact_point_rec,
423         p_web_rec               => l_web_rec,
424         p_rowid                 => NULL,
425         x_return_status         => x_return_status);
426     ELSE
427       l_edi_rec := p_edi_rec;
428       l_email_rec := p_email_rec;
429       l_phone_rec := p_phone_rec;
430       l_telex_rec := p_telex_rec;
431       l_web_rec := p_web_rec;
432       l_eft_rec := p_eft_rec;
433 
434       -- Validate the contact point record - call the old routine and the
435       -- EFT validation routine.
436       hz_registry_validate_v2pub.validate_contact_point (
437         p_create_update_flag    => 'C',
438         p_contact_point_rec     => p_contact_point_rec,
439         p_edi_rec               => l_edi_rec,
440         p_email_rec             => l_email_rec,
441         p_phone_rec             => l_phone_rec,
445         x_return_status         => x_return_status);
442         p_telex_rec             => l_telex_rec,
443         p_web_rec               => l_web_rec,
444         p_rowid                 => NULL,
446 
447       IF x_return_status <> fnd_api.g_ret_sts_success THEN
448         RAISE fnd_api.g_exc_error;
449       END IF;
450 
451       hz_registry_validate_v2pub.validate_eft_contact_point (
452         p_create_update_flag    => 'C',
453         p_contact_point_rec     => p_contact_point_rec,
454         p_eft_rec               => l_eft_rec,
455         p_rowid                 => NULL,
456         x_return_status         => x_return_status);
457     END IF;
458 
459     -- Raise an error if any of the validations failed.
460     IF x_return_status <> fnd_api.g_ret_sts_success THEN
461       RAISE fnd_api.g_exc_error;
462     END IF;
463 
464     -- If raw_phone_number is passed in, call procedure phone_format.
465     -- either raw_phone_number or phone_number should be passed in
466     -- but can not be both. If raw_phone_number does not have a value,
467     -- it will be set by phone_number and phone_area_code.
468 
469     -- Debug info.
470     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
471            hz_utility_v2pub.debug(p_message=>'contact_point_type = ' || p_contact_point_rec.contact_point_type,
472                                   p_prefix =>l_debug_prefix,
473                                   p_msg_level=>fnd_log.level_statement);
474     END IF;
475 
476     --To get territory code to pass to phone_format, first check if country code
477     --was passed in else get it from hz_locations for owner_table_name HZ_PARTY_SITES
478 
479     IF p_contact_point_rec.contact_point_type = 'PHONE' THEN
480       IF l_phone_rec.raw_phone_number IS NOT NULL AND
481          l_phone_rec.raw_phone_number <> fnd_api.g_miss_char
482       THEN
483          IF l_phone_rec.phone_country_code is not null AND
484             l_phone_rec.phone_country_code <> fnd_api.g_miss_char
485          THEN
486             BEGIN
487               select territory_code into l_country_code
488               from hz_phone_country_codes
489               where phone_country_code = l_phone_rec.phone_country_code
490               and rownum = 1;
491             EXCEPTION
492               WHEN NO_DATA_FOUND THEN
493                NULL;
494             END;
495          ELSIF p_contact_point_rec.owner_table_name = 'HZ_PARTY_SITES' AND
496            (l_phone_rec.phone_country_code IS NULL OR
497             l_phone_rec.phone_country_code = fnd_api.g_miss_char)
498          THEN
499            -- Bug 2117973: modified to conform to Applications PL/SQL standards.
500            OPEN c_country(p_contact_point_rec.owner_table_id);
501            FETCH c_country INTO l_country_code;
502            IF c_country%NOTFOUND THEN
503              CLOSE c_country;
504              RAISE NO_DATA_FOUND;
505            END IF;
506            CLOSE c_country;
507          ELSE
508            l_country_code := NULL;
509          END IF;
510 
511          l_message_count := fnd_msg_pub.count_msg();
512 
513          -- Since phone_format cannot format raw_phone_number and phone_number
514          -- at same time, the input value of phone_number and phone_area_code
515          -- should be NULL or G_MISS before the call.
516 
517          phone_format (
518            p_raw_phone_number                => l_phone_rec.raw_phone_number,
519            p_territory_code                  => l_country_code,
520            x_formatted_phone_number          => l_formatted_phone_number,
521            x_phone_country_code              => l_phone_rec.phone_country_code,
522            x_phone_area_code                 => l_phone_rec.phone_area_code,
523            x_phone_number                    => l_phone_rec.phone_number,
524            x_return_status                   => x_return_status,
525            x_msg_count                       => l_msg_count,
526            x_msg_data                        => l_msg_data);
527 
528          -- Raise exception only if content_source_type = G_MISS_CONTENT_SOURCE_TYPE.
529          -- For other sources, we do not want to error out, but simply store the
530          -- Raw Phone Number.
531 
532          -- Bug 2197181 : content_source_type is obsolete and replaced by
533          -- actual_content_source
534 
535          IF x_return_status <> fnd_api.g_ret_sts_success THEN
536            IF p_contact_point_rec.actual_content_source = g_miss_content_source_type
537            THEN
538              IF x_return_status = fnd_api.g_ret_sts_error THEN
539                RAISE fnd_api.g_exc_error;
540              ELSE
541                RAISE fnd_api.g_exc_unexpected_error;
542              END IF;
543            ELSE
544              FOR i IN 1..(l_msg_count - l_message_count) LOOP
545                fnd_msg_pub.delete_msg(l_msg_count - l_message_count + 1 - i);
546              END LOOP;
547              x_return_status := fnd_api.g_ret_sts_success;
548            END IF;
549          END IF;
550 
551     --  END IF; Bug 3520843
552        ELSE
553           -- raw_phone_number must always have value.
554           IF l_phone_rec.phone_area_code IS NULL OR
555              l_phone_rec.phone_area_code = fnd_api.g_miss_char
556           THEN
557              l_phone_rec.raw_phone_number := l_phone_rec.phone_number;
558           ELSE
559              l_phone_rec.raw_phone_number := l_phone_rec.phone_area_code || '-' ||
560                                         l_phone_rec.phone_number;
561           END IF;
562        END IF;
563 
564       -- Debug info.
565       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
566            hz_utility_v2pub.debug(p_message=>'phone_number = ' || l_phone_rec.phone_number || ' ' ||
570      END IF;
567           'raw_phone_number = ' || l_phone_rec.raw_phone_number,
568                                   p_prefix =>l_debug_prefix,
569                                   p_msg_level=>fnd_log.level_statement);
571 
572       -- Populate transposed_phone_number
573       IF l_phone_rec.phone_country_code IS NOT NULL AND
574          l_phone_rec.phone_country_code <> fnd_api.g_miss_char
575       THEN
576         l_transposed_phone_number := l_phone_rec.phone_country_code;
577       END IF;
578 
579       IF l_phone_rec.phone_area_code IS NOT NULL AND
580          l_phone_rec.phone_area_code <> fnd_api.g_miss_char
581       THEN
582         l_transposed_phone_number := l_transposed_phone_number ||
583                                      l_phone_rec.phone_area_code;
584       END IF;
585 
586       -- phone_number is mandatory
587       l_transposed_phone_number := hz_phone_number_pkg.transpose(
588         l_transposed_phone_number || l_phone_rec.phone_number);
589 
590       -- Debug info.
591       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
592            hz_utility_v2pub.debug(p_message=>'transposed_phone_number = ' || l_transposed_phone_number,
593                                   p_prefix =>l_debug_prefix,
594                                   p_msg_level=>fnd_log.level_statement);
595       END IF;
596     END IF;
597 
598     -- If this is the first active contact point for the combination of
599     -- owner_table_name, owner_table_id, contact_point_type, we need to
600     -- mark it as primary no matter the value of primary_flag,
601     -- If primary_flag = 'Y', we need to unmark the previous primary.
602     -- Please note, if status is NULL or MISSING, we treat it as 'A'
603     -- and in validation part, we already checked that primary_flag = 'Y'
604     -- and status = 'I' can not both be set.
605 
606     -- Bug 2197181: added for mix-n-match project: the primary flag
607     -- can be set to 'Y' only if the contact point will be visible. If
608     -- it is not visible, the flag must be reset to 'N'.
609 
610     -- SSM SST Integration and Extension
611     -- For non-profile entities, the concept of select/de-select data sources is obsoleted.
612     -- There is no need to check if the data-source is selected.
613 
614     IF p_contact_point_rec.status IS NULL OR
615        p_contact_point_rec.status = fnd_api.g_miss_char OR
616        p_contact_point_rec.status = 'A'
617     THEN
618       IF p_contact_point_rec.primary_flag = 'Y' THEN
619         -- Bug 2197181: added for mix-n-match project
620      -- IF g_cpt_is_datasource_selected = 'Y' THEN
621           -- Unmark previous primary contact point.
622           do_unset_prim_contact_point (p_contact_point_rec.owner_table_name,
623                                        p_contact_point_rec.owner_table_id,
624                                        p_contact_point_rec.contact_point_type,
625                                        p_contact_point_rec.contact_point_id, 'I');
626      -- ELSE
627      --   p_contact_point_rec.primary_flag := 'N';
628      -- END IF;
629       ELSE
630         -- Bug 2117973: modified to conform to Applications PL/SQL standards.
631         OPEN c_cp (p_contact_point_rec.owner_table_name,
632                     p_contact_point_rec.owner_table_id,
633                     p_contact_point_rec.contact_point_type);
634         FETCH c_cp INTO l_dummy;
635 
636         -- SSM SST Integration and Extension
637 	-- For non-profile entities, the concept of select/de-select data-sources is obsoleted.
638 	-- There is no need to check if the data-source is selected.
639 
640         IF c_cp%NOTFOUND /*AND
641            -- Bug 2197181: added for mix-n-match project
642            g_cpt_is_datasource_selected = 'Y'*/
643         THEN
644           -- First active and visible contact point per type for this entity
645           p_contact_point_rec.primary_flag := 'Y';
646         ELSE
647           p_contact_point_rec.primary_flag := 'N';
648         END IF;
649         CLOSE c_cp;
650       END IF;
651 
652 
653     END IF;
654 
655     -- There is only one primary per purpose contact point exist for
656     -- the combination of owner_table_name, owner_table_id, contact_point_type
657     -- and contact_point_purpose. If primary_by_purpose is set to 'Y',
658     -- we need to unset the previous primary per purpose contact point to
659     -- non-primary. Since setting primary_by_purpose is only making
660     -- sense when contact_point_purpose has some value, we ignore
661     -- the primary_by_purpose (setting it to 'N') if contact_point_purpose
662     -- is NULL.
663 
664     -- Bug 2197181: added for mix-n-match project: the primary by purpose
665     -- flag can be set to 'Y' only if the contact point will be visible.
666     -- If it is not visible, the flag must be reset to 'N'.
667 
668     -- SSM SST Integration and Extension
669     -- For non-profile entities, the concept of select/de-select data sources is obsoleted.
670     -- There is no need to check if the data-source is selected.
671 
672     IF p_contact_point_rec.contact_point_purpose IS NOT NULL AND
673        p_contact_point_rec.contact_point_purpose <> fnd_api.g_miss_char
674     THEN
675       IF p_contact_point_rec.primary_by_purpose = 'Y' THEN
676         -- Bug 2197181: added for mix-n-match project
677      -- IF g_cpt_is_datasource_selected = 'Y' THEN
678           do_unset_primary_by_purpose (p_contact_point_rec.owner_table_name,
679                                        p_contact_point_rec.owner_table_id,
680                                        p_contact_point_rec.contact_point_type,
681                                        p_contact_point_rec.contact_point_purpose,
682                                        p_contact_point_rec.contact_point_id);
683      -- ELSE
684      --     p_contact_point_rec.primary_by_purpose := 'N';
685      -- END IF;
689     END IF;
686       END IF;
687     ELSE
688       p_contact_point_rec.primary_by_purpose := 'N';
690 
691     if l_phone_rec.timezone_id is null or
692            l_phone_rec.timezone_id = fnd_api.g_miss_num
693     then
694 
695         if l_phone_rec.phone_country_code IS NOT NULL AND
696         l_phone_rec.phone_country_code <> fnd_api.g_miss_char
697         then
698                 l_message_count := fnd_msg_pub.count_msg();
699                 hz_timezone_pub.get_phone_timezone_id(
700                         p_api_version => 1.0,
701                         p_init_msg_list => FND_API.G_FALSE,
702                         p_phone_country_code => l_phone_rec.phone_country_code,
703                         p_area_code => l_phone_rec.phone_area_code,
704                         p_phone_prefix => null,
705                         p_country_code => null,-- don't need to pass in this
706                         x_timezone_id => l_phone_rec.timezone_id,
707                         x_return_status => l_return_status ,
708                         x_msg_count =>l_msg_count ,
709                         x_msg_data => l_msg_data);
710                         if l_return_status <> fnd_api.g_ret_sts_success
711                         then  -- we don't raise error
712                                 l_phone_rec.timezone_id := null;
713                                 FOR i IN 1..(l_msg_count - l_message_count) LOOP
714                                     fnd_msg_pub.delete_msg(l_msg_count - l_message_count + 1 - i);
715                                 END LOOP;
716                                 l_return_status := FND_API.G_RET_STS_SUCCESS;
717                         end if;
718         end if;
719     end if;
720 
721 
722     -- Debug info.
723     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
724         hz_utility_v2pub.debug(p_message=>'HZ_CONTACT_POINTS_PKG.Insert_Row (+)',
725                                p_prefix=>l_debug_prefix,
726                                p_msg_level=>fnd_log.level_procedure);
727     END IF;
728 
729     -- Call table-handler.
730     hz_contact_points_pkg.insert_row (
731       x_contact_point_id                => p_contact_point_rec.contact_point_id,
732       x_contact_point_type              => p_contact_point_rec.contact_point_type,
733       x_status                          => p_contact_point_rec.status,
734       x_owner_table_name                => p_contact_point_rec.owner_table_name,
735       x_owner_table_id                  => p_contact_point_rec.owner_table_id,
736       x_primary_flag                    => p_contact_point_rec.primary_flag,
737       x_orig_system_reference           => p_contact_point_rec.orig_system_reference,
738       x_attribute_category              => p_contact_point_rec.attribute_category,
739       x_attribute1                      => p_contact_point_rec.attribute1,
740       x_attribute2                      => p_contact_point_rec.attribute2,
741       x_attribute3                      => p_contact_point_rec.attribute3,
742       x_attribute4                      => p_contact_point_rec.attribute4,
743       x_attribute5                      => p_contact_point_rec.attribute5,
744       x_attribute6                      => p_contact_point_rec.attribute6,
745       x_attribute7                      => p_contact_point_rec.attribute7,
746       x_attribute8                      => p_contact_point_rec.attribute8,
747       x_attribute9                      => p_contact_point_rec.attribute9,
748       x_attribute10                     => p_contact_point_rec.attribute10,
749       x_attribute11                     => p_contact_point_rec.attribute11,
750       x_attribute12                     => p_contact_point_rec.attribute12,
751       x_attribute13                     => p_contact_point_rec.attribute13,
752       x_attribute14                     => p_contact_point_rec.attribute14,
753       x_attribute15                     => p_contact_point_rec.attribute15,
754       x_attribute16                     => p_contact_point_rec.attribute16,
755       x_attribute17                     => p_contact_point_rec.attribute17,
756       x_attribute18                     => p_contact_point_rec.attribute18,
757       x_attribute19                     => p_contact_point_rec.attribute19,
758       x_attribute20                     => p_contact_point_rec.attribute20,
759       x_edi_transaction_handling        => l_edi_rec.edi_transaction_handling,
760       x_edi_id_number                   => l_edi_rec.edi_id_number,
761       x_edi_payment_method              => l_edi_rec.edi_payment_method,
762       x_edi_payment_format              => l_edi_rec.edi_payment_format,
763       x_edi_remittance_method           => l_edi_rec.edi_remittance_method,
764       x_edi_remittance_instruction      => l_edi_rec.edi_remittance_instruction,
765       x_edi_tp_header_id                => l_edi_rec.edi_tp_header_id,
766       x_edi_ece_tp_location_code        => l_edi_rec.edi_ece_tp_location_code,
767       x_eft_transmission_program_id     => l_eft_rec.eft_transmission_program_id,
768       x_eft_printing_program_id         => l_eft_rec.eft_printing_program_id,
769       x_eft_user_number                 => l_eft_rec.eft_user_number,
770       x_eft_swift_code                  => l_eft_rec.eft_swift_code,
771       x_email_format                    => l_email_rec.email_format,
772       x_email_address                   => l_email_rec.email_address,
773       x_phone_calling_calendar          => l_phone_rec.phone_calling_calendar,
774       x_last_contact_dt_time            => l_phone_rec.last_contact_dt_time,
775       x_timezone_id                     => l_phone_rec.timezone_id,
776       x_phone_area_code                 => l_phone_rec.phone_area_code,
777       x_phone_country_code              => l_phone_rec.phone_country_code,
778       x_phone_number                    => l_phone_rec.phone_number,
779       x_phone_extension                 => l_phone_rec.phone_extension,
780       x_phone_line_type                 => l_phone_rec.phone_line_type,
781       x_telex_number                    => l_telex_rec.telex_number,
785       x_raw_phone_number                => l_phone_rec.raw_phone_number,
782       x_web_type                        => l_web_rec.web_type,
783       x_url                             => l_web_rec.url,
784       x_content_source_type             => p_contact_point_rec.content_source_type,
786       x_object_version_number           => 1,
787       x_contact_point_purpose           => p_contact_point_rec.contact_point_purpose,
788       x_primary_by_purpose              => p_contact_point_rec.primary_by_purpose,
789       x_created_by_module               => p_contact_point_rec.created_by_module,
790       x_application_id                  => p_contact_point_rec.application_id,
791       x_transposed_phone_number         => l_transposed_phone_number,
792       x_actual_content_source           => p_contact_point_rec.actual_content_source
793    );
794 
795     x_contact_point_id := p_contact_point_rec.contact_point_id;
796 
797 ---Bug No: 3131865
798      -- De-normalize primary contact point to HZ_PARTIES.
799       -- url is mandatory if contact_point_type = 'WEB'.
800       -- email_address is mandatory if contact_point_type = 'EMAIL'.
801 
802       -- Debug info.
803       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
804            hz_utility_v2pub.debug(p_message=>'primary_flag = ' || p_contact_point_rec.primary_flag || ' ' ||
805                                           'owner_table_name = '||p_contact_point_rec.owner_table_name||' '||
806                                           'contact_point_type = '||p_contact_point_rec.contact_point_type||' '||
807                                           'actual_content_source = ' || p_contact_point_rec.actual_content_source,
808                                   p_prefix =>l_debug_prefix,
809                                   p_msg_level=>fnd_log.level_statement);
810       END IF;
811 
812       -- Bug 2197181: commented out NOCOPY the data source checking. We will denormalize
813       -- to hz_parties as long as it's a primary contact point regardless of data
814       -- source.
815     IF p_contact_point_rec.status IS NULL OR
816        p_contact_point_rec.status = fnd_api.g_miss_char OR
817        p_contact_point_rec.status = 'A'
818     THEN
819       IF p_contact_point_rec.primary_flag = 'Y' AND
820          p_contact_point_rec.owner_table_name = 'HZ_PARTIES' AND
821          (p_contact_point_rec.contact_point_type IN ('WEB','EMAIL','PHONE'))
822          /* AND
823          (p_contact_point_rec.content_source_type IS NULL OR
824            p_contact_point_rec.content_source_type = fnd_api.g_miss_char OR
825            p_contact_point_rec.content_source_type =
826              hz_party_v2pub.g_miss_content_source_type)
827          */
828       THEN
829         IF l_phone_rec.phone_line_type = fnd_api.g_miss_char then
830            l_phone_line_type := NULL;
831         ELSE
832            l_phone_line_type := l_phone_rec.phone_line_type;
833         END IF;
834         IF l_phone_rec.phone_country_code = fnd_api.g_miss_char then
835            l_phone_country_code := NULL;
836         ELSE
837            l_phone_country_code := l_phone_rec.phone_country_code;
838         END IF;
839         IF l_phone_rec.phone_area_code = fnd_api.g_miss_char then
840            l_phone_area_code := NULL;
841         ELSE
842            l_phone_area_code := l_phone_rec.phone_area_code;
843         END IF;
844         IF l_phone_rec.phone_number = fnd_api.g_miss_char then
845            l_phone_number := NULL;
846         ELSE
847            l_phone_number := l_phone_rec.phone_number;
848         END IF;
849         IF l_phone_rec.phone_extension = fnd_api.g_miss_char then
850            l_phone_extension := NULL;
851         ELSE
852            l_phone_extension := l_phone_rec.phone_extension;
853         END IF;
854         IF p_contact_point_rec.contact_point_purpose = fnd_api.g_miss_char then
855            l_contact_point_purpose := NULL;
856         ELSE
857            l_contact_point_purpose := p_contact_point_rec.contact_point_purpose;
858         END IF;
859 
860 
861         do_denormalize_contact_point (p_contact_point_rec.owner_table_id,
862                                       p_contact_point_rec.contact_point_type,
863                                       l_web_rec.url,
864                                       l_email_rec.email_address,
865                                       p_contact_point_rec.contact_point_id,
866                                       l_contact_point_purpose,
867                                       l_phone_line_type,
868                                       l_phone_country_code,
869                                       l_phone_area_code,
870                                       l_phone_number,
871                                       l_phone_extension
872                                       );
873       END IF;
874     END IF;
875 --End of Bug No: 3131865.
876 
877     -- Debug info.
878     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
879         hz_utility_v2pub.debug(p_message=>'HZ_CONTACT_POINTS_PKG.Insert_Row (-) ' ||
880         'x_contact_point_id = ' ||p_contact_point_rec.contact_point_id,
881                                p_prefix=>l_debug_prefix,
882                                p_msg_level=>fnd_log.level_procedure);
883     END IF;
884     --Bug13117445
885            --Added DQM Sync call
886  	     hz_dqm_sync.sync_contact_point(x_contact_point_id, 'C');
887 
888      if p_contact_point_rec.orig_system is not null
889          and p_contact_point_rec.orig_system <>fnd_api.g_miss_char
890       then
891                 l_orig_sys_reference_rec.orig_system := p_contact_point_rec.orig_system;
892                 l_orig_sys_reference_rec.orig_system_reference := p_contact_point_rec.orig_system_reference;
893                 l_orig_sys_reference_rec.owner_table_name := 'HZ_CONTACT_POINTS';
894                 l_orig_sys_reference_rec.owner_table_id := p_contact_point_rec.contact_point_id;
898                         FND_API.G_FALSE,
895                 l_orig_sys_reference_rec.created_by_module := p_contact_point_rec.created_by_module;
896 
897                 hz_orig_system_ref_pub.create_orig_system_reference(
899                         l_orig_sys_reference_rec,
900                         x_return_status,
901                         l_msg_count,
902                         l_msg_data);
903                  IF x_return_status <> fnd_api.g_ret_sts_success THEN
904                         RAISE FND_API.G_EXC_ERROR;
905                 END IF;
906       end if;
907 
908 
909     -- Debug info.
910     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
911         hz_utility_v2pub.debug(p_message=>'do_create_contact_point (-)',
912                                p_prefix=>l_debug_prefix,
913                                p_msg_level=>fnd_log.level_procedure);
914     END IF;
915 
916   END do_create_contact_point;
917 
918   --
919   -- PRIVATE PROCEDURE do_update_contact_point
920   --
921   -- DESCRIPTION
922   --     Private procedure to update contact point.
923   --
924   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
925   --     hz_registry_validate_v2pub.validate_contact_point
926   --     hz_registry_validate_v2pub.validate_edi_contact_point
927   --     hz_registry_validate_v2pub.validate_eft_contact_point
928   --     hz_registry_validate_v2pub.validate_web_contact_point
929   --     hz_registry_validate_v2pub.validate_phone_contact_point
930   --     hz_registry_validate_v2pub.validate_telex_contact_point
931   --     hz_registry_validate_v2pub.validate_email_contact_point
932   --     hz_contact_points_pkg.update_row
933   --     hz_phone_number_pkg.transpose
934   --
935   -- ARGUMENTS
936   --   IN/OUT:
937   --     p_contact_point_rec      Contact point record.
938   --     p_edi_rec                EDI record.
939   --     p_eft_rec                Electronic File Transfer record.
940   --     p_email_rec              Email record.
941   --     p_phone_rec              Phone record.
942   --     p_telex_rec              Telex record.
943   --     p_web_rec                Web record.
944   --     p_object_version_number  Used for locking the being updated record.
945   --     x_return_status          Return status after the call. The status can
946   --                              be fnd_api.g_ret_sts_success (success),
947   --                              fnd_api.g_ret_sts_error (error),
948   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
949   --
950   -- NOTES
951   --
952   -- MODIFICATION HISTORY
953   --
954   --   07-23-2001    Jianying Huang      o Created.
955   --   15-NOV-2001   Joe del Callar      Bug 2116225: Modified for consolidated
956   --                                     bank support (EFT record support).
957   --   05-DEC-2001   Joe del Callar      Bug 2136283: Modified to use new
958   --                                     validation procedures.
959   --   06-JUL-2004   Rajib Ranjan Borah  Bug 3711740. If phone_format returns
960   --                                     NULL for phone_area_code,phone_country_code
961   --                                     and/or phone_number, then set these to
962   --                                     FND_API.G_MISS_CHAR as otherwise, the old
963   --                                     value will be retained.
964   --  01-03-2005  Rajib Ranjan Borah   o SSM SST Integration and Extension.
965   --                                     For non-profile entities, the concept of
966   --                                     select/de-select data-sources is obsoleted.
967   --   01-FEB-2008   Neeraj Shinde       Bug 6755308: Modified the condition to call the
968   --                                     do_unset_primary_by_purpose procedure
969 
970 
971   PROCEDURE do_update_contact_point (
972     p_contact_point_rec                   IN OUT NOCOPY contact_point_rec_type,
973     p_edi_rec                             IN OUT NOCOPY edi_rec_type,
974     p_eft_rec                             IN OUT NOCOPY eft_rec_type,
975     p_email_rec                           IN OUT NOCOPY email_rec_type,
976     p_phone_rec                           IN OUT NOCOPY phone_rec_type,
977     p_telex_rec                           IN OUT NOCOPY telex_rec_type,
978     p_web_rec                             IN OUT NOCOPY web_rec_type,
979     p_object_version_number               IN OUT NOCOPY NUMBER,
980     x_return_status                       IN OUT NOCOPY VARCHAR2
981   ) IS
982 
983     l_debug_prefix              VARCHAR2(30) := ''; -- do_update_contact_point
984 
985     l_rowid                     ROWID := NULL;
986     l_contact_point_rowid       ROWID := NULL;
987     l_dummy                     VARCHAR2(1);
988     l_object_version_number     NUMBER;
989     l_message_count             NUMBER;
990     l_msg_count                 NUMBER;
991     l_msg_data                  VARCHAR2(2000);
992 
993     l_formatted_phone_number    VARCHAR2(100);
994     l_country_code              hz_locations.country%TYPE;
995     l_owner_table_name          hz_contact_points.owner_table_name%TYPE;
996     l_owner_table_id            NUMBER;
997     l_contact_point_type        hz_contact_points.contact_point_type%TYPE :=
998                                   p_contact_point_rec.contact_point_type;
999     l_primary_flag              hz_contact_points.primary_flag%TYPE;
1000     l_status                    hz_contact_points.status%TYPE;
1001     l_phone_area_code           hz_contact_points.phone_area_code%TYPE;
1002     l_phone_number              hz_contact_points.phone_number%TYPE;
1003     l_phone_country_code        hz_contact_points.phone_country_code%TYPE;
1004     l_url                       hz_contact_points.url%TYPE;
1005     l_email_address             hz_contact_points.email_address%TYPE;
1006     l_contact_point_purpose     hz_contact_points.contact_point_purpose%TYPE;
1010     --BugNo:1695595.Added local variables to hold denormalized column values----
1007     l_primary_by_purpose        hz_contact_points.primary_by_purpose%TYPE;
1008     l_transposed_phone_number   hz_contact_points.transposed_phone_number%TYPE;
1009 
1011     l_contact_point_id          hz_contact_points.contact_point_id%TYPE;
1012     l_phone_line_type           hz_contact_points.phone_line_type%TYPE;
1013     l_phone_extension           hz_contact_points.phone_extension%TYPE;
1014     -----------------------------------------------------------------
1015     l_edi_rec                   edi_rec_type;
1016     l_eft_rec                   eft_rec_type;
1017     l_email_rec                 email_rec_type;
1018     l_phone_rec                 phone_rec_type;
1019     l_telex_rec                 telex_rec_type;
1020     l_web_rec                   web_rec_type;
1021 
1022     -- Bug 2197181: added for mix-n-match project.
1023     db_actual_content_source    hz_contact_points.actual_content_source%TYPE;
1024 --  Bug 4693719 : Added for local assignment
1025     l_acs    hz_contact_points.actual_content_source%TYPE;
1026 
1027     -- Bug 2117973: defined the following cursors for PL/SQL coding standards
1028     -- compliance.
1029     CURSOR c_country (p_owner_table_id IN NUMBER) IS
1030       SELECT country
1031       FROM   hz_locations
1032       WHERE  location_id = (SELECT location_id
1033                             FROM   hz_party_sites
1034                             WHERE  party_site_id = p_owner_table_id);
1035 
1036     -- Bug 2197181: added for mix-n-match project: the contact point
1037     -- must be visible.
1038 
1039     -- SSM SST Integration and Extension
1040     -- Modified the cursors c_setpf and c_chkdenorm
1041     -- For non-profile entities, the concept of select/de-select data-sources is obsoleted.
1042     -- There is no need to check if the data-source is selected.
1043 
1044 
1045     CURSOR c_setpf (
1046       p_owner_table_name   IN VARCHAR2,
1047       p_owner_table_id     IN NUMBER,
1048       p_contact_point_type IN VARCHAR2
1049     ) IS
1050       SELECT 'Y'
1051       FROM   hz_contact_points
1052       WHERE  owner_table_name = p_owner_table_name
1053       AND owner_table_id = p_owner_table_id
1054       AND contact_point_type = p_contact_point_type
1055       AND contact_point_id <> p_contact_point_rec.contact_point_id
1056    /*   AND HZ_MIXNM_UTILITY.isDataSourceSelected (
1057             g_cpt_selected_datasources, actual_content_source ) = 'Y'*/
1058       AND status = 'A'
1059       AND rownum = 1;
1060 
1061     -- Bug 2197181: added for mix-n-match project: the contact point
1062     -- must be visible.
1063 
1064     CURSOR c_chkdenorm (
1065       p_owner_table_name   IN VARCHAR2,
1066       p_owner_table_id     IN NUMBER,
1067       p_contact_point_type IN VARCHAR2,
1068       p_contact_point_id   IN NUMBER
1069     ) IS
1070       SELECT rowid, url, email_address,contact_point_id,contact_point_purpose,
1071              phone_line_type,phone_area_code,phone_country_code,phone_number,phone_extension
1072       FROM   hz_contact_points
1073       WHERE  contact_point_id = (
1074                SELECT MIN(contact_point_id)
1075                FROM   hz_contact_points
1076                WHERE  owner_table_name = p_owner_table_name
1077                       AND owner_table_id = p_owner_table_id
1078                       AND contact_point_type = p_contact_point_type
1079                     /*  AND HZ_MIXNM_UTILITY.isDataSourceSelected (
1080                             g_cpt_selected_datasources, actual_content_source ) = 'Y'*/
1081                       AND status = 'A'
1082                       AND contact_point_id <> p_contact_point_id);
1083 
1084   BEGIN
1085     -- Debug info.
1086     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1087         hz_utility_v2pub.debug(p_message=>'do_update_contact_point (+)',
1088                                p_prefix=>l_debug_prefix,
1089                                p_msg_level=>fnd_log.level_procedure);
1090     END IF;
1091 
1092 
1093     -- Lock record.
1094 
1095     -- Bug 2197181: selecting actual_content_source for  mix-n-match project.
1096 
1097     BEGIN
1098     --Bug 1695595 added phone_line_type,phone_extension columns to the select caluse.
1099 
1100 
1101       SELECT rowid, object_version_number,
1102              owner_table_name, owner_table_id,
1103              contact_point_type, phone_line_type,phone_country_code, phone_area_code,
1104              phone_number,phone_extension,primary_flag, status, contact_point_purpose,
1105              url, email_address, primary_by_purpose, actual_content_source
1106       INTO   l_rowid, l_object_version_number,
1107              l_owner_table_name, l_owner_table_id,
1108              l_contact_point_type,l_phone_line_type,
1109              l_phone_country_code, l_phone_area_code, l_phone_number,l_phone_extension,
1110              l_primary_flag, l_status, l_contact_point_purpose,
1111              l_url, l_email_address, l_primary_by_purpose, db_actual_content_source
1112       FROM   hz_contact_points
1113       WHERE  contact_point_id = p_contact_point_rec.contact_point_id
1114       FOR UPDATE NOWAIT;
1115 
1116       IF NOT ((p_object_version_number IS NULL AND
1117                 l_object_version_number IS NULL) OR
1118               (p_object_version_number IS NOT NULL AND
1119                 l_object_version_number IS NOT NULL AND
1120                 p_object_version_number = l_object_version_number))
1121       THEN
1122         fnd_message.set_name('AR', 'HZ_API_RECORD_CHANGED');
1123         fnd_message.set_token('TABLE', 'hz_contact_points');
1124         fnd_msg_pub.add;
1125         RAISE fnd_api.g_exc_error;
1126       END IF;
1127 
1128       p_object_version_number := NVL(l_object_version_number, 1) + 1;
1129 
1130     EXCEPTION
1131       WHEN NO_DATA_FOUND THEN
1135           NVL(TO_CHAR(p_contact_point_rec.contact_point_id), 'null'));
1132         fnd_message.set_name('AR', 'HZ_API_NO_RECORD');
1133         fnd_message.set_token('RECORD', 'contact point');
1134         fnd_message.set_token('VALUE',
1136         fnd_msg_pub.add;
1137         RAISE fnd_api.g_exc_error;
1138     END;
1139 
1140     -- Debug info.
1141     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1142            hz_utility_v2pub.debug(p_message=>'l_contact_point_type = ' || l_contact_point_type,
1143                                   p_prefix =>l_debug_prefix,
1144                                   p_msg_level=>fnd_log.level_statement);
1145     END IF;
1146 
1147 
1148     IF l_contact_point_type = 'EDI' THEN
1149       l_edi_rec := p_edi_rec;
1150 
1151       -- Validate the contact point record
1152       hz_registry_validate_v2pub.validate_edi_contact_point (
1153         p_create_update_flag    => 'U',
1154         p_contact_point_rec     => p_contact_point_rec,
1155         p_edi_rec               => l_edi_rec,
1156         p_rowid                 => l_rowid,
1157         x_return_status         => x_return_status);
1158     ELSIF l_contact_point_type = 'EFT' THEN
1159       l_eft_rec := p_eft_rec;
1160 
1161       -- Validate the contact point record
1162       hz_registry_validate_v2pub.validate_eft_contact_point (
1163         p_create_update_flag    => 'U',
1164         p_contact_point_rec     => p_contact_point_rec,
1165         p_eft_rec               => l_eft_rec,
1166         p_rowid                 => l_rowid,
1167         x_return_status         => x_return_status);
1168     ELSIF l_contact_point_type = 'EMAIL' THEN
1169       l_email_rec := p_email_rec;
1170 
1171       -- Validate the contact point record
1172       hz_registry_validate_v2pub.validate_email_contact_point (
1173         p_create_update_flag    => 'U',
1174         p_contact_point_rec     => p_contact_point_rec,
1175         p_email_rec             => l_email_rec,
1176         p_rowid                 => l_rowid,
1177         x_return_status         => x_return_status);
1178     ELSIF l_contact_point_type = 'PHONE' THEN
1179       l_phone_rec := p_phone_rec;
1180 
1181       -- Validate the contact point record
1182       hz_registry_validate_v2pub.validate_phone_contact_point (
1183         p_create_update_flag    => 'U',
1184         p_contact_point_rec     => p_contact_point_rec,
1185         p_phone_rec             => l_phone_rec,
1186         p_rowid                 => l_rowid,
1187         x_return_status         => x_return_status);
1188     ELSIF l_contact_point_type = 'TLX' THEN
1189       l_telex_rec := p_telex_rec;
1190 
1191       -- Validate the contact point record
1192       hz_registry_validate_v2pub.validate_telex_contact_point (
1193         p_create_update_flag    => 'U',
1194         p_contact_point_rec     => p_contact_point_rec,
1195         p_telex_rec             => l_telex_rec,
1196         p_rowid                 => l_rowid,
1197         x_return_status         => x_return_status);
1198     ELSIF l_contact_point_type = 'WEB' THEN
1199       -- l_web_rec := p_web_rec;
1200       -- modify URL to prefix protocol (Bug 4960793 Nishant 02-May-2006)
1201       l_web_rec := get_protocol_prefixed_url(p_web_rec);
1202 
1203       -- Validate the contact point record
1204       hz_registry_validate_v2pub.validate_web_contact_point (
1205         p_create_update_flag    => 'U',
1206         p_contact_point_rec     => p_contact_point_rec,
1207         p_web_rec               => l_web_rec,
1208         p_rowid                 => l_rowid,
1209         x_return_status         => x_return_status);
1210     ELSE
1211       l_edi_rec := p_edi_rec;
1212       l_email_rec := p_email_rec;
1213       l_phone_rec := p_phone_rec;
1214       l_telex_rec := p_telex_rec;
1215       l_web_rec := p_web_rec;
1216 
1217       -- Validate the contact point record - call the old routine and the
1218       -- EFT validation routine.
1219       hz_registry_validate_v2pub.validate_contact_point (
1220         p_create_update_flag    => 'U',
1221         p_contact_point_rec     => p_contact_point_rec,
1222         p_edi_rec               => l_edi_rec,
1223         p_email_rec             => l_email_rec,
1224         p_phone_rec             => l_phone_rec,
1225         p_telex_rec             => l_telex_rec,
1226         p_web_rec               => l_web_rec,
1227         p_rowid                 => l_rowid,
1228         x_return_status         => x_return_status);
1229 
1230       IF x_return_status <> fnd_api.g_ret_sts_success THEN
1231         RAISE fnd_api.g_exc_error;
1232       END IF;
1233 
1234       hz_registry_validate_v2pub.validate_eft_contact_point (
1235         p_create_update_flag    => 'U',
1236         p_contact_point_rec     => p_contact_point_rec,
1237         p_eft_rec               => l_eft_rec,
1238         p_rowid                 => l_rowid,
1239         x_return_status         => x_return_status);
1240     END IF;
1241 
1242     IF x_return_status <> fnd_api.g_ret_sts_success THEN
1243       RAISE fnd_api.g_exc_error;
1244     END IF;
1245 
1246     -- If raw_phone_number is passed in, call procedure phone_format.
1247     -- either raw_phone_number or phone_number should be passed in
1248     -- but can not be both. If raw_phone_number does not have a value,
1249     -- it will be set by phone_number and phone_area_code.
1250     -- We cannot re-format raw_phone_number if only phone_country_code
1251     -- is changed because raw_phone_number might not have been formatted
1252     -- and created by concat phone_area_code and phone_number.
1253 
1254     -- contact_point_type, owner_table_name, owner_table_id,
1255     -- actual_content_source are non-updateable columns.
1256 
1257     IF l_contact_point_type = 'PHONE' THEN
1258       IF l_phone_rec.phone_country_code IS NOT NULL THEN
1259         IF l_phone_rec.phone_country_code = fnd_api.g_miss_char THEN
1263         END IF;
1260           l_phone_country_code := NULL;
1261         ELSE
1262           l_phone_country_code := l_phone_rec.phone_country_code;
1264       END IF;
1265 
1266       IF l_phone_rec.phone_area_code IS NOT NULL THEN
1267         IF l_phone_rec.phone_area_code = fnd_api.g_miss_char THEN
1268           l_phone_area_code := NULL;
1269         ELSE
1270           l_phone_area_code := l_phone_rec.phone_area_code;
1271         END IF;
1272       END IF;
1273 
1274       IF l_phone_rec.phone_number IS NOT NULL THEN
1275         IF l_phone_rec.phone_number = fnd_api.g_miss_char THEN
1276           l_phone_number := NULL;
1277         ELSE
1278           l_phone_number := l_phone_rec.phone_number;
1279         END IF;
1280       END IF;
1281 
1282       IF l_phone_rec.raw_phone_number IS NOT NULL AND
1283          l_phone_rec.raw_phone_number <> fnd_api.g_miss_char THEN
1284 
1285          IF l_phone_rec.phone_country_code is not null AND
1286             l_phone_rec.phone_country_code <> fnd_api.g_miss_char
1287          THEN
1288             BEGIN
1289               select territory_code into l_country_code
1290               from hz_phone_country_codes
1291               where phone_country_code = l_phone_rec.phone_country_code
1292               and rownum = 1;
1293             EXCEPTION
1294               WHEN NO_DATA_FOUND THEN
1295                NULL;
1296             END;
1297          ELSIF l_owner_table_name = 'HZ_PARTY_SITES' AND
1298                l_phone_country_code IS NULL THEN
1299                OPEN c_country (l_owner_table_id);
1300                FETCH c_country INTO l_country_code;
1301 
1302                IF c_country%NOTFOUND THEN
1303                  CLOSE c_country;
1304                  RAISE NO_DATA_FOUND;
1305                ELSE
1306                  CLOSE c_country;
1307                END IF;
1308          ELSE
1309            l_country_code := NULL;
1310          END IF;
1311 
1312          -- Since phone_format cannot format raw_phone_number and phone_number
1313          -- at same time, the input value of phone_number and phone_area_code
1314          -- shoule be NULL or G_MISS before the call.
1315 
1316          l_message_count := fnd_msg_pub.count_msg();
1317 
1318          phone_format (
1319            p_raw_phone_number                  => l_phone_rec.raw_phone_number,
1320            p_territory_code                    => l_country_code,
1321            x_formatted_phone_number            => l_formatted_phone_number,
1322            x_phone_country_code                => l_phone_country_code,
1323            x_phone_area_code                   => l_phone_rec.phone_area_code,
1324            x_phone_number                      => l_phone_rec.phone_number,
1325            x_return_status                     => x_return_status,
1326            x_msg_count                         => l_msg_count,
1327            x_msg_data                          => l_msg_data);
1328 
1329          -- Raise exception only if content_source_type = G_MISS_CONTENT_SOURCE_TYPE.
1330          -- For other sources, we do not want to error out, but simply store the
1331          -- Raw Phone Number.
1332 
1333          /* Bug 3711740 */
1334          IF l_phone_rec.phone_area_code IS NULL THEN
1335              l_phone_rec.phone_area_code := fnd_api.g_miss_char;
1336          END IF;
1337 
1338          IF l_phone_rec.phone_number IS NULL THEN
1339              l_phone_rec.phone_number := fnd_api.g_miss_char;
1340          END IF;
1341 
1342          -- Bug 2197181 : content_source_type is obsolete and replaced by
1343          -- actual_content_source
1344 
1345          IF x_return_status <> fnd_api.g_ret_sts_success THEN
1346            IF db_actual_content_source = g_miss_content_source_type
1347            THEN
1348              IF x_return_status = fnd_api.g_ret_sts_error THEN
1349                RAISE fnd_api.g_exc_error;
1350              ELSE
1351                RAISE fnd_api.g_exc_unexpected_error;
1352              END IF;
1353            ELSE
1354              FOR i IN 1..(l_msg_count - l_message_count) LOOP
1355                fnd_msg_pub.delete_msg(l_msg_count - l_message_count + 1 - i);
1356              END LOOP;
1357              x_return_status := fnd_api.g_ret_sts_success;
1358            END IF;
1359          ELSE
1360            l_phone_number := l_phone_rec.phone_number;
1361            l_phone_area_code := l_phone_rec.phone_area_code;
1362 
1363            IF l_phone_country_code IS NOT NULL THEN
1364              l_phone_rec.phone_country_code := l_phone_country_code;
1365            ELSE
1366              l_phone_rec.phone_country_code := FND_API.G_MISS_CHAR; /*Bug 3711740*/
1367            END IF;
1368          END IF;
1369       ELSE
1370         -- raw_phone_number must always have value.
1371 
1372         IF l_phone_area_code IS NULL THEN
1373           l_phone_rec.raw_phone_number := l_phone_number;
1374         ELSE
1375           l_phone_rec.raw_phone_number :=
1376             l_phone_area_code || '-' || l_phone_number;
1377         END IF;
1378       END IF;
1379 
1380       -- Debug info.
1381       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1382            hz_utility_v2pub.debug(p_message=>'phone_number = ' || l_phone_rec.phone_number || ' ' ||
1383           'raw_phone_number = ' || l_phone_rec.raw_phone_number,
1384                                   p_prefix =>l_debug_prefix,
1385                                   p_msg_level=>fnd_log.level_statement);
1386       END IF;
1387 
1388 
1389       -- Populate transposed_phone_number
1390       IF l_phone_country_code IS NOT NULL THEN
1391         l_transposed_phone_number := l_phone_country_code;
1392       END IF;
1393 
1394       IF l_phone_area_code IS NOT NULL THEN
1395         l_transposed_phone_number := l_transposed_phone_number ||
1399       IF l_phone_number IS NOT NULL THEN
1396                                      l_phone_area_code;
1397       END IF;
1398 
1400         l_transposed_phone_number := l_transposed_phone_number ||
1401                                      l_phone_number;
1402       END IF;
1403 
1404       IF l_transposed_phone_number IS NOT NULL THEN
1405         l_transposed_phone_number :=
1406           hz_phone_number_pkg.transpose(l_transposed_phone_number);
1407       END IF;
1408 
1409       -- Debug info.
1410       IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1411            hz_utility_v2pub.debug(p_message=>'transposed_phone_number = ' || l_transposed_phone_number,
1412                                   p_prefix =>l_debug_prefix,
1413                                   p_msg_level=>fnd_log.level_statement);
1414     END IF;
1415 
1416     END IF;
1417 
1418     -- Cannot set an inactive contact point as primary. This validation
1419     -- has been checked in validate_contact_point procedure.
1420 
1421     -- Ignore the value of primary contact flag if the flag has been set
1422     -- to 'N' or fnd_api.g_miss_char by setting primary flag to NULL.
1423     -- User can not unset primary flag by passing value. To unset a
1424     -- primary contact, he/she needs to select another contact as priamry
1425     -- or set the current one to Inactive.
1426 
1427     IF p_contact_point_rec.primary_flag = 'N' OR
1428        p_contact_point_rec.primary_flag = fnd_api.g_miss_char
1429     THEN
1430       p_contact_point_rec.primary_flag := NULL;
1431     END IF;
1432 
1433     -- Bug 2197181: added for mix-n-match project: the primary flag
1434     -- can be set to 'Y' only if the contact point will be visible. If
1435     -- it is not visible, the flag must be reset to 'N'.
1436 
1437     -- Set the first, visible, active contact point as primary.
1438 
1439     -- SSM SST Integration and Extension
1440     -- For non-profile entities, the concept of select/de-select data-sources is obsoleted.
1441     -- There is no need to check if the data-source is selected.
1442 
1443     IF (p_contact_point_rec.status IS NULL AND
1444         l_status = 'A') OR
1445         p_contact_point_rec.status = 'A'
1446     THEN
1447       IF p_contact_point_rec.primary_flag = 'Y' AND
1448          l_primary_flag <> 'Y'
1449       THEN
1450         -- Bug 2197181: added for mix-n-match project
1451      -- IF g_cpt_is_datasource_selected = 'Y' THEN
1452           -- Unmark previous primary contact point.
1453           do_unset_prim_contact_point (
1454             l_owner_table_name,
1455             l_owner_table_id,
1456             l_contact_point_type,
1457             p_contact_point_rec.contact_point_id, 'U');
1458      -- ELSE
1459      --   p_contact_point_rec.primary_flag := 'N';
1460      -- END IF;
1461       ELSIF l_primary_flag <> 'Y' THEN
1462         -- Bug 2117973: changed to use a cursor instead of select...into.
1463         OPEN c_setpf(l_owner_table_name,
1464                      l_owner_table_id,
1465                      l_contact_point_type);
1466         FETCH c_setpf INTO l_dummy;
1467 
1468         -- SSM SST Integration and Extension
1469 	-- For non-profile entities, the concept of select/de-select data-sources is obsoleted.
1470 	-- There is no need to check if the data-source is selected.
1471 
1472         IF c_setpf%NOTFOUND /*AND
1473            -- Bug 2197181: added for mix-n-match project
1474            g_cpt_is_datasource_selected = 'Y'*/
1475         THEN
1476           -- First visible, active contact point per type for this entity
1477           p_contact_point_rec.primary_flag := 'Y';
1478         ELSE
1479           p_contact_point_rec.primary_flag := 'N';
1480         END IF;
1481 
1482         CLOSE c_setpf;
1483       END IF;
1484 
1485       -- De-normalize primary contact point to HZ_PARTIES.
1486       -- url is mandatory if contact_point_type = 'WEB'.
1487       -- email_address is mandatory if contact_point_type = 'EMAIL'.
1488 
1489       -- Bug 2197181: commented out NOCOPY the data source checking. We will
1490       -- denormalize to hz_parties as long as it's a primary contact
1491       -- point regardless of data source.
1492 
1493       IF (p_contact_point_rec.primary_flag = 'Y' OR
1494           l_primary_flag = 'Y') AND
1495          l_owner_table_name = 'HZ_PARTIES' AND
1496          (l_contact_point_type IN ('WEB','EMAIL','PHONE'))
1497          /*  AND
1498          l_content_source_type = hz_party_v2pub.g_miss_content_source_type
1499          */
1500       THEN
1501         IF l_web_rec.url IS NOT NULL THEN
1502           l_url := l_web_rec.url;
1503         END IF;
1504 
1505         IF l_email_rec.email_address IS NOT NULL THEN
1506           l_email_address := l_email_rec.email_address;
1507         END IF;
1508 
1509         --BugNo:1695595.Initialized the local variables with the passed values after validations--
1510 
1511         l_contact_point_id:=p_contact_point_rec.contact_point_id;
1512 
1513         IF p_contact_point_rec.contact_point_purpose=FND_API.G_MISS_CHAR THEN
1514           l_contact_point_purpose := NULL;
1515         ELSIF p_contact_point_rec.contact_point_purpose IS NOT NULL THEN
1516           l_contact_point_purpose := p_contact_point_rec.contact_point_purpose;
1517         END IF;
1518 
1519         IF l_phone_rec.phone_line_type=FND_API.G_MISS_CHAR THEN
1520           l_phone_line_type :=NULL;
1521         ELSIF l_phone_rec.phone_line_type IS NOT NULL THEN
1522           l_phone_line_type := l_phone_rec.phone_line_type;
1523         END IF;
1524 
1525         IF l_phone_rec.phone_country_code=FND_API.G_MISS_CHAR THEN
1526           l_phone_country_code :=NULL;
1527         ELSIF l_phone_rec.phone_country_code IS NOT NULL THEN
1528           l_phone_country_code := l_phone_rec.phone_country_code;
1529         END IF;
1530 
1534           l_phone_area_code := l_phone_rec.phone_area_code;
1531         IF l_phone_rec.phone_area_code=FND_API.G_MISS_CHAR THEN
1532           l_phone_area_code :=NULL;
1533         ELSIF l_phone_rec.phone_area_code IS NOT NULL THEN
1535         END IF;
1536 
1537         IF l_phone_rec.phone_number=FND_API.G_MISS_CHAR THEN
1538           l_phone_number := NULL;
1539         ELSIF l_phone_rec.phone_number IS NOT NULL THEN
1540           l_phone_number := l_phone_rec.phone_number;
1541         END IF;
1542 
1543         IF l_phone_rec.phone_extension=FND_API.G_MISS_CHAR THEN
1544           l_phone_extension :=NULL;
1545         ELSIF l_phone_rec.phone_extension IS NOT NULL THEN
1546           l_phone_extension := l_phone_rec.phone_extension;
1547         END IF;
1548 
1549         ----------------------------------------------------------
1550         do_denormalize_contact_point(l_owner_table_id,
1551                                      l_contact_point_type,
1552                                      l_url,
1553                                      l_email_address,
1554                                      l_contact_point_id,
1555                                      l_contact_point_purpose,
1556                                      l_phone_line_type,
1557                                      l_phone_country_code,
1558                                      l_phone_area_code,
1559                                      l_phone_number,
1560                                      l_phone_extension
1561                                     );
1562       END IF;
1563     ELSE
1564       -- If a primary contact is being marked as inactive then
1565       -- set the current one as non-primary and mark the next
1566       -- active contact as primary
1567 
1568       IF l_status = 'A' AND
1569          p_contact_point_rec.status = 'I' AND
1570          l_primary_flag = 'Y'
1571       THEN
1572 
1573         -- set the current one as non-primary
1574         p_contact_point_rec.primary_flag := 'N';
1575 
1576         -- Bug 2117973: changed to use cursor instead of select...into.
1577         OPEN c_chkdenorm(l_owner_table_name,
1578                          l_owner_table_id,
1579                          l_contact_point_type,
1580                          p_contact_point_rec.contact_point_id);
1581         FETCH c_chkdenorm INTO l_contact_point_rowid, l_url, l_email_address,l_contact_point_id,
1582                                l_contact_point_purpose,l_phone_line_type,l_phone_area_code,
1583                                l_phone_country_code,l_phone_number,l_phone_extension;
1584 
1585         IF c_chkdenorm%NOTFOUND THEN
1586           -- no active contact point of this type left.
1587           -- clear denormalized field in hz_parties.
1588 
1589           IF l_owner_table_name = 'HZ_PARTIES' AND
1590              (l_contact_point_type IN('WEB','EMAIL','PHONE'))
1591              /*AND
1592              l_content_source_type = hz_party_v2pub.g_miss_content_source_type */
1593           THEN
1594             l_url                   :=NULL;
1595             l_email_address         :=NULL;
1596             --Bugno:1695595. Updated the denormalized columns to NULL.
1597             l_contact_point_id      :=NULL;
1598             l_contact_point_purpose :=NULL;
1599             l_phone_line_type       :=NULL;
1600             l_phone_country_code    :=NULL;
1601             l_phone_area_code       :=NULL;
1602             l_phone_number          :=NULL;
1603             l_phone_extension       :=NULL;
1604 
1605 
1606             do_denormalize_contact_point(l_owner_table_id,
1607                                          l_contact_point_type,
1608                                          l_url,
1609                                          l_email_address,
1610                                          l_contact_point_id,
1611                                          l_contact_point_purpose,
1612                                          l_phone_line_type,
1613                                          l_phone_country_code,
1614                                          l_phone_area_code,
1615                                          l_phone_number,
1616                                          l_phone_extension
1617                                         );
1618           END IF;
1619         ELSE
1620           UPDATE hz_contact_points
1621           SET    primary_flag = 'Y'
1622           WHERE  rowid = l_contact_point_rowid;
1623 
1624           -- De-normalize primary contact point to HZ_PARTIES.
1625 
1626           IF l_owner_table_name = 'HZ_PARTIES' AND
1627              (l_contact_point_type IN ('WEB','EMAIL','PHONE'))
1628              /*
1629              l_content_source_type = hz_party_v2pub.g_miss_content_source_type */
1630           THEN
1631             do_denormalize_contact_point(l_owner_table_id,
1632                                          l_contact_point_type,
1633                                          l_url,
1634                                          l_email_address,
1635                                          l_contact_point_id,
1636                                          l_contact_point_purpose,
1637                                          l_phone_line_type,
1638                                          l_phone_country_code,
1639                                          l_phone_area_code,
1640                                          l_phone_number,
1641                                          l_phone_extension
1642                                         );
1643           END IF;
1644         END IF;
1645         CLOSE c_chkdenorm;
1646       END IF;
1647     END IF;
1648 
1649     -- There is only one primary per purpose contact point exist for
1650     -- the combination of owner_table_name, owner_table_id, contact_point_type
1651     -- and contact_point_purpose. If primary_by_purpose is set to 'Y',
1652     -- we need to unset the previous primary per purpose contact point to
1656     -- is NULL.
1653     -- non-primary. Since setting primary_by_purpose is only making
1654     -- sense when contact_point_purpose has some value, we ignore
1655     -- the primary_by_purpose (setting it to 'N') if contact_point_purpose
1657 
1658     -- Bug 2197181: added for mix-n-match project: the primary by purpose
1659     -- flag can be set to 'Y' only if the contact point will be visible.
1660     -- If it is not visible, the flag must be reset to 'N'.
1661 
1662     -- SSM SST Integration and Extension
1663     -- For non-profile entities, the concept of select/de-select data-sources is obsoleted.
1664     -- There is no need to check if the data-source is selected.
1665 
1666     IF (p_contact_point_rec.contact_point_purpose IS NOT NULL AND
1667          p_contact_point_rec.contact_point_purpose <> fnd_api.g_miss_char) OR
1668        (p_contact_point_rec.contact_point_purpose IS NULL AND
1669          l_contact_point_purpose IS NOT NULL)
1670     THEN
1671       IF p_contact_point_rec.contact_point_purpose IS NOT NULL AND
1672          p_contact_point_rec.contact_point_purpose <> fnd_api.g_miss_char
1673       THEN
1674          l_contact_point_purpose := p_contact_point_rec.contact_point_purpose;
1675       END IF;
1676 
1677       --Bug 6755308 Change Start
1678       IF (p_contact_point_rec.primary_by_purpose = 'Y')
1679           /*AND
1680           NVL(l_primary_by_purpose,'N') = 'N') AND
1681           -- Bug 2197181: added for mix-n-match project
1682           g_cpt_is_datasource_selected = 'Y') *//*OR
1683          (p_contact_point_rec.primary_by_purpose IS NULL AND
1684           l_primary_by_purpose = 'Y')*/
1685       --Bug 6755308 Change End
1686       THEN
1687         do_unset_primary_by_purpose(l_owner_table_name,
1688                                      l_owner_table_id,
1689                                      l_contact_point_type,
1690                                      l_contact_point_purpose,
1691                                      p_contact_point_rec.contact_point_id);
1692       --Bug#12584582
1693       ELSIF (p_contact_point_rec.primary_by_purpose = 'N' AND
1694              NVL(l_primary_by_purpose,'N') = 'Y') THEN
1695            p_contact_point_rec.primary_by_purpose := 'N';
1696 	  --End of Bug#12584582 changes.
1697       ELSIF NVL(l_primary_by_purpose,'N') = 'N' THEN
1698         p_contact_point_rec.primary_by_purpose := 'N';
1699       ELSE
1700         p_contact_point_rec.primary_by_purpose := NULL;
1701       END IF;
1702     ELSE
1703       p_contact_point_rec.primary_by_purpose := 'N';
1704     END IF;
1705 
1706      if (p_contact_point_rec.orig_system is not null
1707          and p_contact_point_rec.orig_system <>fnd_api.g_miss_char)
1708         and (p_contact_point_rec.orig_system_reference is not null
1709          and p_contact_point_rec.orig_system_reference <>fnd_api.g_miss_char)
1710       then
1711                 p_contact_point_rec.orig_system_reference := null;
1712                 -- In mosr, we have bypassed osr nonupdateable validation
1713                 -- but we should not update existing osr, set it to null
1714       end if;
1715 
1716     -- Debug info.
1717     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1718         hz_utility_v2pub.debug(p_message=>'hz_contact_points_pkg.update_row (+) ',
1719                                p_prefix=>l_debug_prefix,
1720                                p_msg_level=>fnd_log.level_procedure);
1721     END IF;
1722 
1723 --  Bug 4693719 : pass NULL if the secure data is not updated
1724     IF HZ_UTILITY_V2PUB.G_UPDATE_ACS = 'Y' THEN
1725        l_acs := nvl(p_contact_point_rec.actual_content_source, 'USER_ENTERED');
1726     ELSE
1727        l_acs := NULL;
1728     END IF;
1729     -- Call table-handler.
1730     hz_contact_points_pkg.update_row (
1731       x_rowid                           => l_rowid,
1732       x_contact_point_id                => p_contact_point_rec.contact_point_id,
1733       x_contact_point_type              => p_contact_point_rec.contact_point_type,
1734       x_status                          => p_contact_point_rec.status,
1735       x_owner_table_name                => p_contact_point_rec.owner_table_name,
1736       x_owner_table_id                  => p_contact_point_rec.owner_table_id,
1737       x_primary_flag                    => p_contact_point_rec.primary_flag,
1738       x_orig_system_reference           => p_contact_point_rec.orig_system_reference,
1739       x_attribute_category              => p_contact_point_rec.attribute_category,
1740       x_attribute1                      => p_contact_point_rec.attribute1,
1741       x_attribute2                      => p_contact_point_rec.attribute2,
1742       x_attribute3                      => p_contact_point_rec.attribute3,
1743       x_attribute4                      => p_contact_point_rec.attribute4,
1744       x_attribute5                      => p_contact_point_rec.attribute5,
1745       x_attribute6                      => p_contact_point_rec.attribute6,
1746       x_attribute7                      => p_contact_point_rec.attribute7,
1747       x_attribute8                      => p_contact_point_rec.attribute8,
1748       x_attribute9                      => p_contact_point_rec.attribute9,
1749       x_attribute10                     => p_contact_point_rec.attribute10,
1750       x_attribute11                     => p_contact_point_rec.attribute11,
1751       x_attribute12                     => p_contact_point_rec.attribute12,
1752       x_attribute13                     => p_contact_point_rec.attribute13,
1753       x_attribute14                     => p_contact_point_rec.attribute14,
1754       x_attribute15                     => p_contact_point_rec.attribute15,
1755       x_attribute16                     => p_contact_point_rec.attribute16,
1756       x_attribute17                     => p_contact_point_rec.attribute17,
1757       x_attribute18                     => p_contact_point_rec.attribute18,
1758       x_attribute19                     => p_contact_point_rec.attribute19,
1759       x_attribute20                     => p_contact_point_rec.attribute20,
1763       x_edi_payment_format              => l_edi_rec.edi_payment_format,
1760       x_edi_transaction_handling        => l_edi_rec.edi_transaction_handling,
1761       x_edi_id_number                   => l_edi_rec.edi_id_number,
1762       x_edi_payment_method              => l_edi_rec.edi_payment_method,
1764       x_edi_remittance_method           => l_edi_rec.edi_remittance_method,
1765       x_edi_remittance_instruction      => l_edi_rec.edi_remittance_instruction,
1766       x_edi_tp_header_id                => l_edi_rec.edi_tp_header_id,
1767       x_edi_ece_tp_location_code        => l_edi_rec.edi_ece_tp_location_code,
1768       x_eft_transmission_program_id     => l_eft_rec.eft_transmission_program_id,
1769       x_eft_printing_program_id         => l_eft_rec.eft_printing_program_id,
1770       x_eft_user_number                 => l_eft_rec.eft_user_number,
1771       x_eft_swift_code                  => l_eft_rec.eft_swift_code,
1772       x_email_format                    => l_email_rec.email_format,
1773       x_email_address                   => l_email_rec.email_address,
1774       x_phone_calling_calendar          => l_phone_rec.phone_calling_calendar,
1775       x_last_contact_dt_time            => l_phone_rec.last_contact_dt_time,
1776       x_timezone_id                     => l_phone_rec.timezone_id,
1777       x_phone_area_code                 => l_phone_rec.phone_area_code,
1778       x_phone_country_code              => l_phone_rec.phone_country_code,
1779       x_phone_number                    => l_phone_rec.phone_number,
1780       x_phone_extension                 => l_phone_rec.phone_extension,
1781       x_phone_line_type                 => l_phone_rec.phone_line_type,
1782       x_telex_number                    => l_telex_rec.telex_number,
1783       x_web_type                        => l_web_rec.web_type,
1784       x_url                             => l_web_rec.url,
1785       -- Bug 2197181 : content_source_type is obsolete and it is non-updateable.
1786       x_content_source_type             => NULL,
1787       x_raw_phone_number                => l_phone_rec.raw_phone_number,
1788       x_object_version_number           => p_object_version_number,
1789       x_contact_point_purpose           => p_contact_point_rec.contact_point_purpose,
1790       x_primary_by_purpose              => p_contact_point_rec.primary_by_purpose,
1791       x_created_by_module               => p_contact_point_rec.created_by_module,
1792       x_application_id                  => p_contact_point_rec.application_id,
1793       x_transposed_phone_number         => l_transposed_phone_number,
1794    --  Bug 4693719 : Pass correct value for ACS
1795       x_actual_content_source           => l_acs
1796     );
1797 
1798     -- Debug info.
1799     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1800         hz_utility_v2pub.debug(p_message=>'hz_contact_points_PKG.Update_Row (-) ',
1801                                p_prefix=>l_debug_prefix,
1802                                p_msg_level=>fnd_log.level_procedure);
1803         hz_utility_v2pub.debug(p_message=>'do_update_contact_point (-)',
1804                                p_prefix=>l_debug_prefix,
1805                                p_msg_level=>fnd_log.level_procedure);
1806     END IF;
1807 
1808   END do_update_contact_point;
1809 
1810   --
1811   -- PRIVATE PROCEDURE do_unset_prim_contact_point
1812   --
1813   -- DESCRIPTION
1814   --     Private procedure to unset previous primary flag.
1815   --
1816   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1817   --
1818   -- ARGUMENTS
1819   --   IN:
1820   --     p_owner_table_name             Owner table name.
1821   --     p_owner_table_id               Owner table ID.
1822   --     p_contact_point_type           Contact point type.
1823   --     p_contact_point_id             Contact point id.
1824   --     p_mode                         Mode of Operation.
1825   --
1826   -- NOTES
1827   --
1828   -- MODIFICATION HISTORY
1829   --
1830   --   07-23-2001    Jianying Huang      o Created.
1831   --   09-30-2003    Rajib Ranjan Borah  o Bug 2914238.Updated the who columns
1832   --                                       while updating the HZ_CONTACT_POINT record.
1833   --  28-OCT-2003   Ramesh Ch           Bug#2914238.Removed  created_by and creation_date
1834   --                                    columns during update.
1835   --  11-JUL-2006   avjha               Bug 5203798: Populate BOT incase of direct update.
1836   --  18-OCT-2012   Sudhir G            Bug14698590: Removed c_contact_point and raising
1837   --                                    Events for all Contact Point Ids, which are in update statement.
1838   PROCEDURE do_unset_prim_contact_point (
1839     p_owner_table_name                      IN     VARCHAR2,
1840     p_owner_table_id                        IN     NUMBER,
1841     p_contact_point_type                    IN     VARCHAR2,
1842     p_contact_point_id                      IN     NUMBER,
1843     p_mode			                    IN     VARCHAR2
1844   ) IS
1845 /*
1846 --bug #5203798
1847     CURSOR c_contact_point IS
1848       SELECT contact_point_id
1849       FROM   hz_contact_points CP
1850       WHERE CP.owner_table_name = p_owner_table_name
1851    	  AND	CP.owner_table_id = p_owner_table_id
1852 	  AND 	CP.contact_point_type = p_contact_point_type
1853 	  AND 	CP.contact_point_id <> p_contact_point_id
1854       AND   CP.primary_flag = 'Y'
1855       AND   ROWNUM = 1
1856       FOR UPDATE NOWAIT;
1857 */
1858 
1859     l_contact_point_id                      NUMBER;
1860     l_debug_prefix                         VARCHAR2(30) := '';
1861     l_unset_prim_contact_point_id           NUMBER;
1862 
1863 	l_contact_point_rec                     contact_point_rec_type;
1864     l_edi_rec                   edi_rec_type ;
1865     l_email_rec                 email_rec_type ;
1866     l_phone_rec                 phone_rec_type ;
1867     l_telex_rec                 telex_rec_type ;
1868     l_web_rec                   web_rec_type ;
1869     l_eft_rec                   eft_rec_type ;
1870 
1874     l_old_phone_rec             phone_rec_type;
1871     l_old_contact_point_rec     contact_point_rec_type;
1872     l_old_edi_rec               edi_rec_type;
1873     l_old_email_rec             email_rec_type;
1875     l_old_telex_rec             telex_rec_type;
1876     l_old_web_rec               web_rec_type;
1877     l_old_eft_rec               eft_rec_type;
1878 
1879 	TYPE contactpointidtab IS TABLE OF hz_contact_points.contact_point_id%TYPE;
1880     l_contactpointidtab contactpointidtab;
1881 	I NUMBER;
1882 
1883   BEGIN
1884 
1885     -- Debug info.
1886     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1887         hz_utility_v2pub.debug(p_message=>'do_unset_prim_contact_point (+)',
1888                                p_prefix=>l_debug_prefix,
1889                                p_msg_level=>fnd_log.level_procedure);
1890     END IF;
1891 
1892   /*  BEGIN
1893       OPEN c_contact_point;
1894       FETCH c_contact_point INTO l_unset_prim_contact_point_id;
1895       CLOSE c_contact_point;
1896     END;
1897   */
1898     -- Check during insert.
1899     IF p_contact_point_id IS NULL THEN
1900       l_contact_point_id := fnd_api.g_miss_num;
1901     ELSE
1902       l_contact_point_id := p_contact_point_id;
1903     END IF;
1904 
1905 	UPDATE hz_contact_points
1906     SET    primary_flag         = 'N',
1907 	 --Bug number 2914238 .Updated the who columns.
1908            last_update_date     = hz_utility_v2pub.last_update_date,
1909            last_updated_by      = hz_utility_v2pub.last_updated_by,
1910            last_update_login    = hz_utility_v2pub.last_update_login,
1911            request_id           = hz_utility_v2pub.request_id,
1912            program_id           = hz_utility_v2pub.program_id,
1913            program_application_id = hz_utility_v2pub.program_application_id,
1914            program_update_date  = hz_utility_v2pub.program_update_date
1915     WHERE  owner_table_name = p_owner_table_name
1916     AND owner_table_id = p_owner_table_id
1917     AND contact_point_type = p_contact_point_type
1918     AND contact_point_id <> l_contact_point_id
1919 	  -- AND content_source_type = hz_party_v2pub.g_miss_content_source_type
1920     AND primary_flag = 'Y'
1921 	RETURNING
1922     contact_point_id
1923     BULK COLLECT INTO l_contactpointidtab;
1924 
1925 --Bug14698590
1926 --Direct Update is missing Business event call, added event call.
1927 
1928   I := 1;
1929 	IF l_contactpointidtab.COUNT > 0 AND
1930 	(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
1931     LOOP
1932 
1933 	l_contact_point_rec.contact_point_id := l_contactpointidtab(i);
1934 
1935 		-- Debug info.
1936 		IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1937 			hz_utility_v2pub.debug(p_message=>'Raising Business Event for Contact Point Id : '||l_contact_point_rec.contact_point_id,
1938 								   p_prefix=>l_debug_prefix,
1939 								   p_msg_level=>fnd_log.level_procedure);
1940 		END IF;
1941 
1942          hz_business_event_v2pvt.update_contact_point_event (
1943           l_contact_point_rec,
1944           l_old_contact_point_rec,
1945           l_edi_rec,
1946           l_old_edi_rec,
1947           l_eft_rec,
1948           l_old_eft_rec,
1949           l_email_rec,
1950           l_old_email_rec,
1951           l_phone_rec,
1952           l_old_phone_rec,
1953           l_telex_rec,
1954           l_old_telex_rec,
1955           l_web_rec,
1956           l_old_web_rec);
1957 
1958       --bug #5203798
1959       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
1960         -- populate function for integration service
1961         HZ_POPULATE_BOT_PKG.pop_hz_contact_points(
1962           p_operation     => p_mode,
1963           p_contact_point_id => l_contactpointidtab(i));
1964       END IF;
1965 
1966 		 IF I = l_contactpointidtab.COUNT THEN
1967             EXIT;
1968          END IF;
1969 	i := i + 1;
1970 	END LOOP;
1971     END IF;
1972 
1973 
1974 
1975 
1976     -- Debug info.
1977     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1978         hz_utility_v2pub.debug(p_message=>'do_unset_prim_contact_point (-)',
1979                                p_prefix=>l_debug_prefix,
1980                                p_msg_level=>fnd_log.level_procedure);
1981     END IF;
1982 
1983   END do_unset_prim_contact_point;
1984 
1985   --
1986   -- PRIVATE PROCEDURE do_denormalize_contact_point
1987   --
1988   -- DESCRIPTION
1989   --   Private procedure to denormalize some type of contact point to hz_parties.
1990   --
1991   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1992   --
1993   -- ARGUMENTS
1994   --   IN:
1995   --     p_party_id                     Party ID.
1996   --     p_contact_point_type           Contact point type.
1997   --     p_url                          URL.
1998   --     p_email_address                Email address.
1999   --   BugNo:1695595
2000   --     p_phone_contact_pt_id          Contact point id.
2001   --     p_phone_purpose                Contact Point Purpose.
2002   --     p_phone_line_type              Phone line type.
2003   --     p_phone_country_code           Phone country code.
2004   --     p_phone_area_code              Phone area code.
2005   --     p_phone_number                 Phone Number.
2006   --     p_phone_extension              Phone extension.
2007   -- NOTES
2008   --
2009   -- MODIFICATION HISTORY
2010   --
2011   --   07-23-2001    Jianying Huang      o Created.
2012   --   08-19-2003    Ramesh.Ch           o Modified the
2013   --                                       Signature and logic.
2014   --   05-05-2006    Praveen Kasturi     o Bug No 4355133 :  Truncated the value in p_email_address
2018     p_party_id                              IN     NUMBER,
2015   --					   before updating the table to support RFC standards.
2016 
2017   PROCEDURE do_denormalize_contact_point (
2019     p_contact_point_type                    IN     VARCHAR2,
2020     p_url                                   IN     VARCHAR2,
2021     p_email_address                         IN     VARCHAR2,
2022     p_phone_contact_pt_id                   IN     NUMBER,
2023     p_phone_purpose                         IN     VARCHAR2,
2024     p_phone_line_type                       IN     VARCHAR2,
2025     p_phone_country_code                    IN     VARCHAR2,
2026     p_phone_area_code                       IN     VARCHAR2,
2027     p_phone_number                          IN     VARCHAR2,
2028     p_phone_extension                       IN     VARCHAR2
2029   ) IS
2030   l_debug_prefix                       VARCHAR2(30) := '';
2031   BEGIN
2032     -- Debug info.
2033     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2034         hz_utility_v2pub.debug(p_message=>'do_denormalize_contact_point (+)',
2035                                p_prefix=>l_debug_prefix,
2036                                p_msg_level=>fnd_log.level_procedure);
2037     END IF;
2038     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2039            hz_utility_v2pub.debug(p_message=>'party_id = ' || p_party_id || ' ' ||
2040                                         'contact_point_type = ' || p_contact_point_type || ' ' ||
2041                                         'url = ' || p_url || ' ' ||
2042                                         'email_address = ' || p_email_address||
2043                                         'primary_phone_contact_pt_id = ' || p_phone_contact_pt_id || ' ' ||
2044                                         'primary_phone_purpose = ' || p_phone_purpose || ' ' ||
2045                                         'primary_phone_line_type = ' || p_phone_line_type || ' ' ||
2046                                         'primary_phone_country_code = ' || p_phone_country_code || ' ' ||
2047                                         'primary_phone_area_code = ' || p_phone_area_code || ' ' ||
2048                                         'primary_phone_number = ' || p_phone_number || ' ' ||
2049                                         'primary_phone_extension = ' || p_phone_extension  ,
2050                                   p_prefix =>l_debug_prefix,
2051                                   p_msg_level=>fnd_log.level_statement);
2052     END IF;
2053 
2054 
2055     IF p_contact_point_type = 'WEB' THEN
2056       UPDATE hz_parties
2057       SET    url                       = p_url,
2058              last_update_date          = hz_utility_v2pub.last_update_date,
2059              last_updated_by           = hz_utility_v2pub.last_updated_by,
2060              last_update_login         = hz_utility_v2pub.last_update_login,
2061              request_id                = hz_utility_v2pub.request_id,
2062              program_application_id    = hz_utility_v2pub.program_application_id,
2063              program_id                = hz_utility_v2pub.program_id,
2064              program_update_date       = sysdate
2065       WHERE  party_id = p_party_id;
2066     ELSIF p_contact_point_type = 'EMAIL' THEN
2067       UPDATE hz_parties
2068 					/* Bug No : 4355133*/
2069       SET    email_address             = SUBSTRB(p_email_address,1,320),
2070              last_update_date          = hz_utility_v2pub.last_update_date,
2071              last_updated_by           = hz_utility_v2pub.last_updated_by,
2072              last_update_login         = hz_utility_v2pub.last_update_login,
2073              request_id                = hz_utility_v2pub.request_id,
2074              program_application_id    = hz_utility_v2pub.program_application_id,
2075              program_id                = hz_utility_v2pub.program_id,
2076              program_update_date       = sysdate
2077       WHERE  party_id = p_party_id;
2078     ELSIF p_contact_point_type = 'PHONE' THEN
2079       UPDATE hz_parties
2080       SET    primary_phone_contact_pt_id       = p_phone_contact_pt_id,
2081              primary_phone_purpose             = p_phone_purpose,
2082              primary_phone_line_type           = p_phone_line_type,
2083              primary_phone_country_code        = p_phone_country_code,
2084              primary_phone_area_code           = p_phone_area_code,
2085              primary_phone_number              = p_phone_number,
2086              primary_phone_extension           = p_phone_extension,
2087              last_update_date          = hz_utility_v2pub.last_update_date,
2088              last_updated_by           = hz_utility_v2pub.last_updated_by,
2089              last_update_login         = hz_utility_v2pub.last_update_login,
2090              request_id                = hz_utility_v2pub.request_id,
2091              program_application_id    = hz_utility_v2pub.program_application_id,
2092              program_id                = hz_utility_v2pub.program_id,
2093              program_update_date       = sysdate
2094       WHERE  party_id = p_party_id;
2095     END IF;
2096 
2097     -- Debug info.
2098     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2099         hz_utility_v2pub.debug(p_message=>'do_denormalize_contact_point (-)',
2100                                p_prefix=>l_debug_prefix,
2101                                p_msg_level=>fnd_log.level_procedure);
2102     END IF;
2103 
2104   END do_denormalize_contact_point;
2105 
2106   --
2107   -- PRIVATE PROCEDURE do_unset_primary_by_purpose
2108   --
2109   -- DESCRIPTION
2110   --     Private procedure to unset previous primary by purpose flag.
2111   --
2112   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2113   --
2114   -- ARGUMENTS
2115   --   IN:
2116   --     p_owner_table_name             Owner table name.
2117   --     p_owner_table_id               Owner table ID.
2118   --     p_contact_point_type           Contact point type.
2119   --     p_contact_point_purpose        Contact point purpose.
2123   --
2120   --     p_contact_point_id             Contact point id.
2121   --
2122   -- NOTES
2124   -- MODIFICATION HISTORY
2125   --
2126   --   07-23-2001    Jianying Huang      o Created.
2127   --   28-OCT-2003   Ramesh Ch           Bug#2914238. Updated the who columns in
2128   --                                     do_unset_primary_by_purpose
2129   --  18-OCT-2012   Sudhir G            Bug14698590: Raising  Events for all Contact Point Ids,
2130   --                                    which are in update statement.
2131   --
2132   --
2133 
2134   PROCEDURE do_unset_primary_by_purpose (
2135     p_owner_table_name                      IN     VARCHAR2,
2136     p_owner_table_id                        IN     NUMBER,
2137     p_contact_point_type                    IN     VARCHAR2,
2138     p_contact_point_purpose                 IN     VARCHAR2,
2139     p_contact_point_id                      IN     NUMBER
2140   ) IS
2141 
2142     l_contact_point_id                      NUMBER;
2143     l_debug_prefix                     VARCHAR2(30) := '';
2144 
2145 	l_contact_point_rec         contact_point_rec_type;
2146     l_edi_rec                   edi_rec_type ;
2147     l_email_rec                 email_rec_type ;
2148     l_phone_rec                 phone_rec_type ;
2149     l_telex_rec                 telex_rec_type ;
2150     l_web_rec                   web_rec_type ;
2151     l_eft_rec                   eft_rec_type ;
2152 
2153     l_old_contact_point_rec     contact_point_rec_type;
2154     l_old_edi_rec               edi_rec_type;
2155     l_old_email_rec             email_rec_type;
2156     l_old_phone_rec             phone_rec_type;
2157     l_old_telex_rec             telex_rec_type;
2158     l_old_web_rec               web_rec_type;
2159     l_old_eft_rec               eft_rec_type;
2160 
2161 	TYPE contactpointidtab IS TABLE OF hz_contact_points.contact_point_id%TYPE;
2162     l_contactpointidtab contactpointidtab;
2163 	I NUMBER;
2164   BEGIN
2165 
2166     -- Debug info.
2167     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2168         hz_utility_v2pub.debug(p_message=>'do_unset_primary_by_purpose (+)',
2169                                p_prefix=>l_debug_prefix,
2170                                p_msg_level=>fnd_log.level_procedure);
2171     END IF;
2172 
2173     -- Check during insert.
2174     IF p_contact_point_id IS NULL THEN
2175       l_contact_point_id := FND_API.G_MISS_NUM;
2176     ELSE
2177       l_contact_point_id := p_contact_point_id;
2178     END IF;
2179 
2180 
2181     UPDATE hz_contact_points
2182     SET   primary_by_purpose = 'N',
2183           last_update_date     = hz_utility_v2pub.last_update_date,
2184           last_updated_by      = hz_utility_v2pub.last_updated_by,
2185           last_update_login    = hz_utility_v2pub.last_update_login,
2186           request_id           = hz_utility_v2pub.request_id,
2187           program_id           = hz_utility_v2pub.program_id,
2188           program_application_id = hz_utility_v2pub.program_application_id,
2189           program_update_date  = hz_utility_v2pub.program_update_date
2190     WHERE  owner_table_name = p_owner_table_name
2191     AND owner_table_id = p_owner_table_id
2192     AND contact_point_type = p_contact_point_type
2193     AND contact_point_purpose = p_contact_point_purpose
2194     AND contact_point_id <> l_contact_point_id
2195     -- AND content_source_type = hz_party_v2pub.g_miss_content_source_type
2196     AND primary_by_purpose = 'Y'
2197 	RETURNING
2198     contact_point_id
2199     BULK COLLECT INTO l_contactpointidtab;
2200 
2201 --Bug14698590
2202 --Direct Update is missing Business event call, added event call.
2203 
2204     I := 1;
2205 	IF l_contactpointidtab.COUNT > 0 AND
2206 	(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
2207     LOOP
2208 
2209 	l_contact_point_rec.contact_point_id := l_contactpointidtab(i);
2210 
2211 		-- Debug info.
2212 		IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2213 			hz_utility_v2pub.debug(p_message=>'Raising Business Event for Contact Point Id : '||l_contact_point_rec.contact_point_id,
2214 								   p_prefix=>l_debug_prefix,
2215 								   p_msg_level=>fnd_log.level_procedure);
2216 		END IF;
2217 
2218          hz_business_event_v2pvt.update_contact_point_event (
2219           l_contact_point_rec,
2220           l_old_contact_point_rec,
2221           l_edi_rec,
2222           l_old_edi_rec,
2223           l_eft_rec,
2224           l_old_eft_rec,
2225           l_email_rec,
2226           l_old_email_rec,
2227           l_phone_rec,
2228           l_old_phone_rec,
2229           l_telex_rec,
2230           l_old_telex_rec,
2231           l_web_rec,
2232           l_old_web_rec);
2233 
2234 		 IF I = l_contactpointidtab.COUNT THEN
2235             EXIT;
2236          END IF;
2237 	i := i + 1;
2238 	END LOOP;
2239     END IF;
2240 
2241     -- Debug info.
2242     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2243         hz_utility_v2pub.debug(p_message=>'do_unset_primary_by_purpose (-)',
2244                                p_prefix=>l_debug_prefix,
2245                                p_msg_level=>fnd_log.level_procedure);
2246     END IF;
2247 
2248   END do_unset_primary_by_purpose;
2249 
2250   --
2251   -- PRIVATE FUNCTION filter_phone_number
2252   --
2253   -- DESCRIPTION
2254   --     Private funcation to filter phone number. It returns filtered phone number
2255   --     based on some translation rule.
2256   --
2257   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2258   --
2259   -- ARGUMENTS
2260   --   IN:
2261   --     p_phone_number                 Phone number.
2262   --     p_isformat                     Use different translation rule.
2263   --
2264   -- NOTES
2268   --   07-23-2001    Jianying Huang      o Created.
2265   --
2266   -- MODIFICATION HISTORY
2267   --
2269   --
2270   --
2271 
2272   FUNCTION filter_phone_number (
2273     p_phone_number                          IN     VARCHAR2,
2274     p_isformat                              IN     NUMBER := 0
2275   ) RETURN VARCHAR2 IS
2276 
2277     l_filtered_number                       VARCHAR2(100);
2278     l_debug_prefix                         VARCHAR2(30) := '';
2279 
2280   BEGIN
2281 
2282     -- Debug info.
2283     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2284         hz_utility_v2pub.debug(p_message=>'filter_phone_number (+)',
2285                                p_prefix=>l_debug_prefix,
2286                                p_msg_level=>fnd_log.level_procedure);
2287     END IF;
2288 
2289     IF p_isformat = 0 THEN
2290       l_filtered_number := TRANSLATE (
2291         p_phone_number,
2292         '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()- .+''~`\/@#$%^&*_,|}{[]?<>=";:',
2293         '0123456789');
2294     ELSE
2295       l_filtered_number := TRANSLATE (
2296         p_phone_number,
2297         '9012345678ABCDEFGHIJKLMNOPQRSTUVWXYZ()- .+''~`\/@#$%^&*_,|}{[]?<>=";:',
2298         '9');
2299     END IF;
2300 
2301     -- Debug info.
2302     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2303         hz_utility_v2pub.debug(p_message=>'filter_phone_number (-)',
2304                                p_prefix=>l_debug_prefix,
2305                                p_msg_level=>fnd_log.level_procedure);
2306     END IF;
2307 
2308     RETURN l_filtered_number;
2309 
2310   END filter_phone_number;
2311 
2312   --
2313   -- PRIVATE PROCEDURE get_phone_format
2314   --
2315   -- DESCRIPTION
2316   --     Private procedure to get phone format.
2317   --
2318   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2319   --
2320   -- ARGUMENTS
2321   --   IN:
2322   --     p_phone_number                 Phone number.
2323   --     p_isformat                     Use different translation rule.
2324   --
2325   -- NOTES
2326   --
2327   -- MODIFICATION HISTORY
2328   --
2329   --   07-23-2001    Jianying Huang      o Created.
2330   --
2331   --
2332 
2333   PROCEDURE get_phone_format (
2334     p_raw_phone_number          IN     VARCHAR2 := fnd_api.g_miss_char,
2335     p_territory_code            IN     VARCHAR2 := fnd_api.g_miss_char,
2336     p_area_code                 IN     VARCHAR2,
2337     x_phone_country_code        OUT NOCOPY    VARCHAR2,
2338     x_phone_format_style        OUT NOCOPY    VARCHAR2,
2339     x_area_code_size            OUT NOCOPY    VARCHAR2,
2340     x_include_country_code      OUT NOCOPY    BOOLEAN,
2341     x_msg                       OUT NOCOPY    VARCHAR2
2342   ) IS
2343 
2344     l_defaut_prefix             VARCHAR2(30) := ''; -- get_phone_format
2345 
2346     l_empty                     BOOLEAN;
2347 
2348     -- Query all the format styles along with other flags
2349     CURSOR c_formats IS
2350       SELECT pf.phone_format_style, pf.country_code_display_flag,
2351              pf.area_code_size, pcc.phone_country_code
2352       FROM   hz_phone_country_codes pcc, hz_phone_formats pf
2353       WHERE  pcc.territory_code = p_territory_code
2354              AND pcc.territory_code = pf.territory_code;
2355 
2356     l_phone_format_style        hz_phone_formats.phone_format_style%TYPE;
2357     l_area_code_size            NUMBER;
2358     l_phone_country_code        hz_phone_country_codes.phone_country_code%TYPE;
2359     l_country_code_display_flag hz_phone_formats.country_code_display_flag%TYPE;
2360     l_debug_prefix                     VARCHAR2(30) := '';
2361 
2362   BEGIN
2363 
2364     -- Debug info.
2365     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2366         hz_utility_v2pub.debug(p_message=>'get_phone_format (+)',
2367                                p_prefix=>l_debug_prefix,
2368                                p_msg_level=>fnd_log.level_procedure);
2369     END IF;
2370 
2371     -- Initialize return variables
2372     x_phone_format_style := fnd_api.g_miss_char;
2373     x_phone_country_code := fnd_api.g_miss_char;
2374     x_include_country_code := FALSE;
2375 
2376     -- No territory code passed
2377     IF p_territory_code = fnd_api.g_miss_char THEN
2378       x_msg := 'HZ_COUNTRY_CODE_NOT_DEFINED';
2379       RETURN;
2380     END IF;
2381 
2382     -- Open the cursor and check if format styles exist
2383     l_empty := TRUE;
2384 
2385     OPEN c_formats;
2386     LOOP
2387       FETCH c_formats
2388       INTO  l_phone_format_style, l_country_code_display_flag,
2389             l_area_code_size, l_phone_country_code;
2390       IF c_formats%NOTFOUND THEN
2391         IF l_empty THEN
2392           x_msg := 'HZ_COUNTRY_CODE_NOT_DEFINED';
2393           CLOSE c_formats;
2394           RETURN;
2395         ELSE
2396           EXIT;
2397         END IF;
2398       END IF;
2399 
2400       -- Loop through format styles and select the correct one based on
2401       -- the length of the raw phone number
2402 
2403       IF l_empty THEN
2404         l_empty := FALSE;
2405       END IF;
2406 
2407       IF LENGTHB(filter_phone_number(l_phone_format_style, 1)) =
2408          LENGTHB(p_raw_phone_number)
2409       THEN
2410         IF p_area_code IS NULL OR
2411            (p_area_code IS NOT NULL AND
2412              LENGTHB(p_area_code) = l_area_code_size)
2413         THEN
2414           x_phone_format_style := l_phone_format_style;
2415           IF l_country_code_display_flag = 'Y' THEN
2416             x_include_country_code := TRUE;
2417           END IF;
2418 
2419           x_area_code_size := l_area_code_size;
2423         END IF;
2420           x_phone_country_code := l_phone_country_code;
2421           EXIT;
2422 
2424       END IF;
2425 
2426     END LOOP;
2427     CLOSE c_formats;
2428 
2429     -- No appropriate format mask found
2430     IF x_phone_format_style = fnd_api.g_miss_char THEN
2431       x_msg := 'HZ_PHONE_FORMAT_NOT_DEFINED';
2432     END IF;
2433 
2434     -- Debug info.
2435     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2436         hz_utility_v2pub.debug(p_message=>'get_phone_format (-)',
2437                                p_prefix=>l_debug_prefix,
2438                                p_msg_level=>fnd_log.level_procedure);
2439     END IF;
2440 
2441   EXCEPTION
2442     WHEN OTHERS THEN
2443       RAISE fnd_api.g_exc_unexpected_error;
2444 
2445   END get_phone_format;
2446 
2447   --
2448   -- PRIVATE PROCEDURE translate_raw_phone_number
2449   --
2450   -- DESCRIPTION
2451   --     Private procedure to translate raw phone number.
2452   --
2453   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2454   --
2455   -- ARGUMENTS
2456   --   IN:
2457   --     p_raw_phone_number             Raw phone number.
2458   --     p_phone_format_style           Phone format style.
2459   --     p_area_code_size               Phone area code size.
2460   --   OUT:
2461   --     x_formatted_phone_number       Formatted phone number.
2462   --     x_phone_area_code              Phone area code.
2463   --     x_phone_number                 Phone number.
2464   --
2465   -- NOTES
2466   --
2467   -- MODIFICATION HISTORY
2468   --
2469   --   07-23-2001    Jianying Huang      o Created.
2470   --
2471   --
2472 
2473   PROCEDURE translate_raw_phone_number (
2474     p_raw_phone_number        IN     VARCHAR2 := fnd_api.g_miss_char,
2475     p_phone_format_style      IN     VARCHAR2 := fnd_api.g_miss_char,
2476     p_area_code_size          IN     NUMBER := 0,
2477     x_formatted_phone_number  OUT NOCOPY    VARCHAR2,
2478     x_phone_area_code         OUT NOCOPY    VARCHAR2,
2479     x_phone_number            OUT NOCOPY    VARCHAR2
2480   ) IS
2481 
2482     l_debug_prefix            VARCHAR2(30) := ''; -- translate_raw_phone_number
2483 
2484     l_phone_counter           NUMBER := 1;
2485     l_format_length           NUMBER;
2486     l_format_char             VARCHAR2(1);
2487 
2488   BEGIN
2489 
2490     -- Debug info.
2491     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2492         hz_utility_v2pub.debug(p_message=>'translate_raw_phone_number (+)',
2493                                p_prefix=>l_debug_prefix,
2494                                p_msg_level=>fnd_log.level_procedure);
2495     END IF;
2496 
2497     l_format_length := LENGTHB(p_phone_format_style);
2498     x_formatted_phone_number := '';
2499 
2500     -- Loop through each character of the phone format string
2501     -- and construct the formatted phone number
2502 
2503     FOR i IN 1..l_format_length LOOP
2504       l_format_char := SUBSTRB(p_phone_format_style, i, 1);
2505 
2506       IF l_format_char = '9' THEN
2507         x_formatted_phone_number := x_formatted_phone_number ||
2508                                     SUBSTRB(p_raw_phone_number,
2509                                             l_phone_counter, 1);
2510         l_phone_counter := l_phone_counter + 1;
2511       ELSE
2512         x_formatted_phone_number := x_formatted_phone_number || l_format_char;
2513       END IF;
2514     END LOOP;
2515 
2516     -- Parse out NOCOPY the area code and phone number components
2517     x_phone_area_code := SUBSTRB(p_raw_phone_number, 1, p_area_code_size);
2518     x_phone_number := SUBSTRB(p_raw_phone_number, p_area_code_size + 1);
2519 
2520     -- Debug info.
2521     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2522         hz_utility_v2pub.debug(p_message=>'translate_raw_phone_number (-)',
2523                                p_prefix=>l_debug_prefix,
2524                                p_msg_level=>fnd_log.level_procedure);
2525     END IF;
2526 
2527   END translate_raw_phone_number;
2528 
2529   --
2530   -- PROCEDURE get_contact_point_main
2531   --
2532   -- DESCRIPTION
2533   --     Cets contact point record.
2534   --
2535   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2536   --     hz_contact_points_PKG.Select_Row
2537   --
2538   -- ARGUMENTS
2539   --   IN:
2540   --     p_init_msg_list      Initialize message stack if it is set to
2541   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
2542   --     p_contact_point_id   Contact point ID.
2543   --   IN/OUT:
2544   --   OUT:
2545   --     x_contact_point_rec  Returned contact point record.
2546   --     x_edi_rec            Returned EDI record.
2547   --     x_eft_rec            Returned EFT record.
2548   --     x_email_rec          Returned email record.
2549   --     x_phone_rec          Returned phone record.
2550   --     x_telex_rec          Returned telex record.
2551   --     x_web_rec            Returned web record.
2552   --     x_return_status      Return status after the call. The status can
2553   --                          be fnd_api.g_ret_sts_success (success),
2554   --                          fnd_api.g_ret_sts_error (error),
2555   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
2556   --     x_msg_count          Number of messages in message stack.
2557   --     x_msg_data           Message text if x_msg_count is 1.
2558   --
2559   -- NOTES
2560   --
2561   -- MODIFICATION HISTORY
2562   --
2563   --   07-23-2001    Jianying Huang      o Created.
2564   --   19-NOV-2001   Joe del Callar      Bug 2116225: Added support for
2565   --                                     Bank Consolidation.
2569 
2566   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
2567   --                                     enhanced backward compatibility.
2568   --
2570   PROCEDURE get_contact_point_main (
2571     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
2572     p_contact_point_id          IN     NUMBER,
2573     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
2574     x_edi_rec                   OUT    NOCOPY edi_rec_type,
2575     x_eft_rec                   OUT    NOCOPY eft_rec_type,
2576     x_email_rec                 OUT    NOCOPY email_rec_type,
2577     x_phone_rec                 OUT    NOCOPY phone_rec_type,
2578     x_telex_rec                 OUT    NOCOPY telex_rec_type,
2579     x_web_rec                   OUT    NOCOPY web_rec_type,
2580     x_return_status             OUT NOCOPY    VARCHAR2,
2581     x_msg_count                 OUT NOCOPY    NUMBER,
2582     x_msg_data                  OUT NOCOPY    VARCHAR2
2583   ) IS
2584 
2585     l_transposed_phone_number   hz_contact_points.transposed_phone_number%TYPE;
2586     l_contact_point_rec         hz_contact_points%ROWTYPE;
2587     l_debug_prefix              VARCHAR2(30) := '';
2588   BEGIN
2589     -- Debug info.
2590 
2591     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2592         hz_utility_v2pub.debug(p_message=>'get_contact_point_main (+)',
2593                                p_prefix=>l_debug_prefix,
2594                                p_msg_level=>fnd_log.level_procedure);
2595     END IF;
2596 
2597     -- Initialize message list if p_init_msg_list is set to TRUE.
2598     IF fnd_api.to_boolean(p_init_msg_list) THEN
2599       fnd_msg_pub.initialize;
2600     END IF;
2601 
2602     -- Initialize API return status to success.
2603     x_return_status := fnd_api.g_ret_sts_success;
2604 
2605     -- Check whether primary key has been passed in.
2606     IF p_contact_point_id IS NULL OR
2607        p_contact_point_id = fnd_api.g_miss_num THEN
2608       fnd_message.set_name('AR', 'HZ_API_MISSING_COLUMN');
2609       fnd_message.set_token('COLUMN', 'contact_point_id');
2610       fnd_msg_pub.add;
2611       RAISE fnd_api.g_exc_error;
2612     END IF;
2613 
2614     x_contact_point_rec.contact_point_id := p_contact_point_id;
2615 
2616     -- Debug info.
2617     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2618         hz_utility_v2pub.debug(p_message=>'hz_contact_points_PKG.Select_Row (+)',
2619                                p_prefix=>l_debug_prefix,
2620                                p_msg_level=>fnd_log.level_procedure);
2621     END IF;
2622 
2623     -- Call table-handler
2624     hz_contact_points_pkg.select_row (
2625       x_contact_point_id                => x_contact_point_rec.contact_point_id,
2626       x_contact_point_type              => x_contact_point_rec.contact_point_type,
2627       x_status                          => x_contact_point_rec.status,
2628       x_owner_table_name                => x_contact_point_rec.owner_table_name,
2629       x_owner_table_id                  => x_contact_point_rec.owner_table_id,
2630       x_primary_flag                    => x_contact_point_rec.primary_flag,
2631       x_orig_system_reference           => x_contact_point_rec.orig_system_reference,
2632       x_attribute_category              => x_contact_point_rec.attribute_category,
2633       x_attribute1                      => x_contact_point_rec.attribute1,
2634       x_attribute2                      => x_contact_point_rec.attribute2,
2635       x_attribute3                      => x_contact_point_rec.attribute3,
2636       x_attribute4                      => x_contact_point_rec.attribute4,
2637       x_attribute5                      => x_contact_point_rec.attribute5,
2638       x_attribute6                      => x_contact_point_rec.attribute6,
2639       x_attribute7                      => x_contact_point_rec.attribute7,
2640       x_attribute8                      => x_contact_point_rec.attribute8,
2641       x_attribute9                      => x_contact_point_rec.attribute9,
2642       x_attribute10                     => x_contact_point_rec.attribute10,
2643       x_attribute11                     => x_contact_point_rec.attribute11,
2644       x_attribute12                     => x_contact_point_rec.attribute12,
2645       x_attribute13                     => x_contact_point_rec.attribute13,
2646       x_attribute14                     => x_contact_point_rec.attribute14,
2647       x_attribute15                     => x_contact_point_rec.attribute15,
2648       x_attribute16                     => x_contact_point_rec.attribute16,
2649       x_attribute17                     => x_contact_point_rec.attribute17,
2650       x_attribute18                     => x_contact_point_rec.attribute18,
2651       x_attribute19                     => x_contact_point_rec.attribute19,
2652       x_attribute20                     => x_contact_point_rec.attribute20,
2653       x_edi_transaction_handling        => x_edi_rec.edi_transaction_handling,
2654       x_edi_id_number                   => x_edi_rec.edi_id_number,
2655       x_edi_payment_method              => x_edi_rec.edi_payment_method,
2656       x_edi_payment_format              => x_edi_rec.edi_payment_format,
2657       x_edi_remittance_method           => x_edi_rec.edi_remittance_method,
2658       x_edi_remittance_instruction      => x_edi_rec.edi_remittance_instruction,
2659       x_edi_tp_header_id                => x_edi_rec.edi_tp_header_id,
2660       x_edi_ece_tp_location_code        => x_edi_rec.edi_ece_tp_location_code,
2661       x_eft_transmission_program_id     => x_eft_rec.eft_transmission_program_id,
2662       x_eft_printing_program_id         => x_eft_rec.eft_printing_program_id,
2663       x_eft_user_number                 => x_eft_rec.eft_user_number,
2664       x_eft_swift_code                  => x_eft_rec.eft_swift_code,
2665       x_email_format                    => x_email_rec.email_format,
2666       x_email_address                   => x_email_rec.email_address,
2667       x_phone_calling_calendar          => x_phone_rec.phone_calling_calendar,
2671       x_phone_country_code              => x_phone_rec.phone_country_code,
2668       x_last_contact_dt_time            => x_phone_rec.last_contact_dt_time,
2669       x_timezone_id                     => x_phone_rec.timezone_id,
2670       x_phone_area_code                 => x_phone_rec.phone_area_code,
2672       x_phone_number                    => x_phone_rec.phone_number,
2673       x_phone_extension                 => x_phone_rec.phone_extension,
2674       x_phone_line_type                 => x_phone_rec.phone_line_type,
2675       x_telex_number                    => x_telex_rec.telex_number,
2676       x_web_type                        => x_web_rec.web_type,
2677       x_url                             => x_web_rec.url,
2678       x_content_source_type             => x_contact_point_rec.content_source_type,
2679       x_raw_phone_number                => x_phone_rec.raw_phone_number,
2680       x_contact_point_purpose           => x_contact_point_rec.contact_point_purpose,
2681       x_primary_by_purpose              => x_contact_point_rec.primary_by_purpose,
2682       x_created_by_module               => x_contact_point_rec.created_by_module,
2683       x_application_id                  => x_contact_point_rec.application_id,
2684       x_transposed_phone_number         => l_transposed_phone_number,
2685       x_actual_content_source           => x_contact_point_rec.actual_content_source
2686     );
2687 
2688     -- Debug info.
2689     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2690         hz_utility_v2pub.debug(p_message=>'HZ_CONTACT_POINTS_PKG.Select_Row (-)',
2691                                p_prefix=>l_debug_prefix,
2692                                p_msg_level=>fnd_log.level_procedure);
2693     END IF;
2694 
2695     -- Standard call to get message count and if count is 1, get message info.
2696     fnd_msg_pub.count_and_get(
2697       p_encoded => fnd_api.g_false,
2698       p_count => x_msg_count,
2699       p_data  => x_msg_data);
2700 
2701     -- Debug info.
2702 
2703     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2704         hz_utility_v2pub.debug(p_message=>'get_contact_point_main (-)',
2705                                p_prefix=>l_debug_prefix,
2706                                p_msg_level=>fnd_log.level_procedure);
2707     END IF;
2708   END get_contact_point_main;
2709 
2710   --
2711   -- PROCEDURE create_contact_point_main
2712   --
2713   -- DESCRIPTION
2714   --     Creates contact point.
2715   --
2716   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2717   --     HZ_BUSINESS_EVENT_V2PVT.create_contact_point_event
2718   --
2719   -- ARGUMENTS
2720   --   IN:
2721   --     p_init_msg_list      Initialize message stack if it is set to
2722   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
2723   --     p_contact_point_rec  Contact point record.
2724   --     p_edi_rec            EDI record.
2725   --     p_eft_rec            EFT record.
2726   --     p_email_rec          Email record.
2727   --     p_phone_rec          Phone record.
2728   --     p_telex_rec          Telex record.
2729   --     p_web_rec            Web record.
2730   --   IN/OUT:
2731   --   OUT:
2732   --     x_contact_point_id   Contact point ID.
2733   --     x_return_status      Return status after the call. The status can
2734   --                          be fnd_api.g_ret_sts_success (success),
2735   --                          fnd_api.g_ret_sts_error (error),
2736   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2737   --     x_msg_count          Number of messages in message stack.
2738   --     x_msg_data           Message text if x_msg_count is 1.
2739   --
2740   -- NOTES
2741   --
2742   -- MODIFICATION HISTORY
2743   --
2744   --   07-23-2001    Jianying Huang      Created.
2745   --   19-NOV-2001   Joe del Callar      Bug 2116225: Added support for
2746   --                                     Bank Consolidation.
2747   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
2748   --                                     enhanced backward compatibility.
2749   --   01-03-2005  Rajib Ranjan Borah   o SSM SST Integration and Extension.
2750   --                                      For non-profile entities, the concept of
2751   --                                      select/de-select data-sources is obsoleted.
2752 
2753   PROCEDURE create_contact_point_main (
2754     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
2755     p_contact_point_rec         IN     contact_point_rec_type,
2756     p_edi_rec                   IN     edi_rec_type := g_miss_edi_rec,
2757     p_eft_rec                   IN     eft_rec_type := g_miss_eft_rec,
2758     p_email_rec                 IN     email_rec_type := g_miss_email_rec,
2759     p_phone_rec                 IN     phone_rec_type := g_miss_phone_rec,
2760     p_telex_rec                 IN     telex_rec_type := g_miss_telex_rec,
2761     p_web_rec                   IN     web_rec_type := g_miss_web_rec,
2762     x_contact_point_id          OUT NOCOPY    NUMBER,
2763     x_return_status             OUT NOCOPY    VARCHAR2,
2764     x_msg_count                 OUT NOCOPY    NUMBER,
2765     x_msg_data                  OUT NOCOPY    VARCHAR2
2766   ) IS
2767 
2768     l_contact_point_rec         contact_point_rec_type := p_contact_point_rec;
2769     l_edi_rec                   edi_rec_type := p_edi_rec;
2770     l_email_rec                 email_rec_type := p_email_rec;
2771     l_phone_rec                 phone_rec_type := p_phone_rec;
2772     l_telex_rec                 telex_rec_type := p_telex_rec;
2773     l_web_rec                   web_rec_type := p_web_rec;
2774     l_eft_rec                   eft_rec_type := p_eft_rec;
2775 
2776     dss_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
2777     dss_msg_count     NUMBER := 0;
2778     dss_msg_data      VARCHAR2(2000):= null;
2779     l_test_security   VARCHAR2(1):= 'F';
2780     l_debug_prefix    VARCHAR2(30) := '';
2781 
2782   BEGIN
2783     -- Debug info.
2787                                p_msg_level=>fnd_log.level_procedure);
2784     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2785         hz_utility_v2pub.debug(p_message=>'create_contact_point_main (+)',
2786                                p_prefix=>l_debug_prefix,
2788     END IF;
2789 
2790     -- Initialize message list if p_init_msg_list is set to TRUE.
2791     IF fnd_api.to_boolean(p_init_msg_list) THEN
2792        fnd_msg_pub.initialize;
2793     END IF;
2794 
2795     -- Initialize API return status to success.
2796     x_return_status := fnd_api.g_ret_sts_success;
2797 
2798     -- Bug 2197181: added for mix-n-match project. first load data
2799     -- sources for this entity. Then assign the actual_content_source
2800     -- to the real data source. The value of content_source_type is
2801     -- depended on if data source is seleted. If it is selected, we reset
2802     -- content_source_type to user-entered. We also check if user
2803     -- has the privilege to create user-entered data if mix-n-match
2804     -- is enabled.
2805 
2806     -- Bug 2444678: Removed caching.
2807 
2808     -- IF g_cpt_mixnmatch_enabled IS NULL THEN
2809     /*
2810      * SSM SST Integration and Extension
2811      * For non-profile entities, the concept of select/de-select data sources is obsoleted.
2812     HZ_MIXNM_UTILITY.LoadDataSources(
2813       p_entity_name                    => 'HZ_CONTACT_POINTS',
2814       p_entity_attr_id                 => g_cpt_entity_attr_id,
2815       p_mixnmatch_enabled              => g_cpt_mixnmatch_enabled,
2816       p_selected_datasources           => g_cpt_selected_datasources );
2817     -- END IF;
2818     */
2819     HZ_MIXNM_UTILITY.AssignDataSourceDuringCreation (
2820       p_entity_name                    => 'HZ_CONTACT_POINTS',
2821       p_entity_attr_id                 => g_cpt_entity_attr_id,
2822       p_mixnmatch_enabled              => g_cpt_mixnmatch_enabled,
2823       p_selected_datasources           => g_cpt_selected_datasources,
2824       p_content_source_type            => l_contact_point_rec.content_source_type,
2825       p_actual_content_source          => l_contact_point_rec.actual_content_source,
2826       x_is_datasource_selected         => g_cpt_is_datasource_selected,
2827       x_return_status                  => x_return_status );
2828 
2829     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2830       RAISE FND_API.G_EXC_ERROR;
2831     END IF;
2832 
2833     -- Call to business logic.
2834     do_create_contact_point(l_contact_point_rec,
2835                             l_edi_rec,
2836                             l_eft_rec,
2837                             l_email_rec,
2838                             l_phone_rec,
2839                             l_telex_rec,
2840                             l_web_rec,
2841                             x_contact_point_id,
2842                             x_return_status);
2843 
2844     -- Bug 2486394 -Check if the DSS security is granted to the user
2845     -- Bug 3818648: check dss profile before call test_instance
2846     -- Bug 3867562: check dss only in party context
2847 
2848     IF NVL(fnd_profile.value('HZ_DSS_ENABLED'), 'N') = 'Y' AND
2849        l_contact_point_rec.owner_table_name IN ('HZ_PARTIES', 'HZ_PARTY_SITES')
2850     THEN
2851       l_test_security :=
2852            hz_dss_util_pub.test_instance(
2853                   p_operation_code     => 'INSERT',
2854                   p_db_object_name     => 'HZ_CONTACT_POINTS',
2855                   p_instance_pk1_value => x_contact_point_id,
2856                   p_user_name          => fnd_global.user_name,
2857                   x_return_status      => dss_return_status,
2858                   x_msg_count          => dss_msg_count,
2859                   x_msg_data           => dss_msg_data);
2860 
2861       if dss_return_status <> fnd_api.g_ret_sts_success THEN
2862          RAISE FND_API.G_EXC_ERROR;
2863       end if;
2864 
2865       if (l_test_security <> 'T' OR l_test_security <> FND_API.G_TRUE) then
2866         --
2867         -- Bug 3835601: replaced the dss message with a more user friendly message
2868         --
2869         FND_MESSAGE.SET_NAME('AR', 'HZ_DSS_NO_INSERT_PRIVILEGE');
2870         IF l_contact_point_rec.owner_table_name = 'HZ_PARTIES' THEN
2871           FND_MESSAGE.SET_TOKEN('ENTITY_NAME',
2872                                 hz_dss_util_pub.get_display_name(null, 'PARTY_CONTACT_POINTS'));
2873         ELSIF l_contact_point_rec.owner_table_name = 'HZ_PARTY_SITES' THEN
2874           FND_MESSAGE.SET_TOKEN('ENTITY_NAME',
2875                                 hz_dss_util_pub.get_display_name(null, 'PARTY_SITE_CONTACT_POINTS'));
2876         END IF;
2877         FND_MSG_PUB.ADD;
2878         RAISE FND_API.G_EXC_ERROR;
2879       end if;
2880     END IF;
2881 
2882     -- Invoke business event system.
2883 
2884     -- SSM SST Integration and Extension
2885     -- For non-profile entities, the concept of select/de-select data sources is obsoleted.
2886     -- There is no need to check if the data-source is selected.
2887 
2888     IF x_return_status = fnd_api.g_ret_sts_success /*AND
2889        -- Bug 2197181: Added below condition for Mix-n-Match
2890       g_cpt_is_datasource_selected = 'Y'*/
2891     THEN
2892       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
2893         hz_business_event_v2pvt.create_contact_point_event(
2894           l_contact_point_rec,
2895           l_edi_rec,
2896           l_eft_rec,
2897           l_email_rec,
2898           l_phone_rec,
2899           l_telex_rec,
2900           l_web_rec);
2901       END IF;
2902 
2903       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
2904         HZ_POPULATE_BOT_PKG.pop_hz_contact_points(
2905           p_operation        => 'I',
2906           p_contact_point_id => x_contact_point_id);
2907       END IF;
2911       --Bug 13117445
2908       -- Call to indicate contact point creation to DQM
2909       --Bug 4866187
2910       --Bug 5370799
2912       --Commented sync_contact_point call as it will be called in do_create_contact_point just after contact_point insertion
2913 /*      IF (p_contact_point_rec.orig_system IS NULL OR p_contact_point_rec.orig_system=FND_API.G_MISS_CHAR)
2914       THEN
2915          hz_dqm_sync.sync_contact_point(l_contact_point_rec.contact_point_id, 'C');
2916       END IF;
2917 */
2918     END IF;
2919 
2920     -- Standard call to get message count and if count is 1, get message info.
2921     fnd_msg_pub.count_and_get(
2922       p_encoded => fnd_api.g_false,
2923       p_count => x_msg_count,
2924       p_data  => x_msg_data);
2925 
2926     -- Debug info.
2927     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2928         hz_utility_v2pub.debug(p_message=>'create_contact_point_main (-)',
2929                                p_prefix=>l_debug_prefix,
2930                                p_msg_level=>fnd_log.level_procedure);
2931     END IF;
2932   END create_contact_point_main;
2933 
2934   --
2935   -- PRIVATE PROCEDURE update_contact_point_main
2936   --
2937   -- DESCRIPTION
2938   --     Updates the given contact point.
2939   --
2940   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2941   --     HZ_BUSINESS_EVENT_V2PVT.update_contact_point_main_event
2942   --
2943   -- ARGUMENTS
2944   --   IN:
2945   --     p_init_msg_list          Initialize message stack if it is set to
2946   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
2947   --     p_contact_point_rec      Contact point record.
2948   --     p_edi_rec                EDI record.
2949   --     p_email_rec              Email record.
2950   --     p_phone_rec              Phone record.
2951   --     p_telex_rec              Telex record.
2952   --     p_web_rec                Web record.
2953   --     p_eft_rec                EFT record.
2954   --   IN/OUT:
2955   --     p_object_version_number  Used for locking the being updated record.
2956   --   OUT:
2957   --     x_return_status          Return status after the call. The status can
2958   --                              be fnd_api.g_ret_sts_success (success),
2959   --                              fnd_api.g_ret_sts_error (error),
2960   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2961   --     x_msg_count              Number of messages in message stack.
2962   --     x_msg_data               Message text if x_msg_count is 1.
2963   --
2964   -- NOTES
2965   --
2966   -- MODIFICATION HISTORY
2967   --
2968   --   07-23-2001    Jianying Huang      Created.
2969   --   19-NOV-2001   Joe del Callar      Bug 2116225: Added support for
2970   --                                     Bank Consolidation.
2971   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
2972   --                                     enhanced backward compatibility.
2973   --   06-JUL-2004   Rajib Ranjan Borah  Bug 3711740.If phone_area_code/
2974   --                                     phone_country_code is null, then do
2975   --                                     not assign the old value before calling
2976   --                                     hz_timezone_pub.get_phone_timezone_id.
2977 
2978   PROCEDURE update_contact_point_main (
2979     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
2980     p_contact_point_rec         IN     contact_point_rec_type,
2981     p_edi_rec                   IN     edi_rec_type := g_miss_edi_rec,
2982     p_eft_rec                   IN     eft_rec_type := g_miss_eft_rec,
2983     p_email_rec                 IN     email_rec_type := g_miss_email_rec,
2984     p_phone_rec                 IN     phone_rec_type := g_miss_phone_rec,
2985     p_telex_rec                 IN     telex_rec_type := g_miss_telex_rec,
2986     p_web_rec                   IN     web_rec_type := g_miss_web_rec,
2987     p_object_version_number     IN OUT NOCOPY NUMBER,
2988     x_return_status             OUT NOCOPY    VARCHAR2,
2989     x_msg_count                 OUT NOCOPY    NUMBER,
2990     x_msg_data                  OUT NOCOPY    VARCHAR2
2991   ) IS
2992 
2993     l_contact_point_rec         contact_point_rec_type := p_contact_point_rec;
2994     l_edi_rec                   edi_rec_type := p_edi_rec;
2995     l_email_rec                 email_rec_type := p_email_rec;
2996     l_phone_rec                 phone_rec_type := p_phone_rec;
2997     l_telex_rec                 telex_rec_type := p_telex_rec;
2998     l_web_rec                   web_rec_type := p_web_rec;
2999     l_eft_rec                   eft_rec_type := p_eft_rec;
3000 
3001     l_old_contact_point_rec     contact_point_rec_type;
3002     l_old_edi_rec               edi_rec_type;
3003     l_old_email_rec             email_rec_type;
3004     l_old_phone_rec             phone_rec_type;
3005     l_old_telex_rec             telex_rec_type;
3006     l_old_web_rec               web_rec_type;
3007     l_old_eft_rec               eft_rec_type;
3008     l_phone_country_code        HZ_CONTACT_POINTS.phone_country_code%type;
3009     l_phone_area_code           HZ_CONTACT_POINTS.phone_area_code%type;
3010 
3011     l_data_source_from          VARCHAR2(30);
3012 
3013     dss_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
3014     dss_msg_count     NUMBER := 0;
3015     dss_msg_data      VARCHAR2(2000):= null;
3016     l_test_security   VARCHAR2(1):= 'F';
3017 
3018     l_return_status             VARCHAR2(1);
3019     l_msg_count                 NUMBER;
3020     l_message_count number;
3021     l_msg_data                  VARCHAR2(2000);
3022     l_changed_flag varchar2(1) := 'N';
3023     l_debug_prefix              VARCHAR2(30) := '';
3024 
3025   BEGIN
3026     -- Debug info.
3027     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3028         hz_utility_v2pub.debug(p_message=>'update_contact_point_main (+)',
3032 
3029                                p_prefix=>l_debug_prefix,
3030                                p_msg_level=>fnd_log.level_procedure);
3031     END IF;
3033     -- Initialize message list if p_init_msg_list is set to TRUE.
3034     IF fnd_api.to_boolean(p_init_msg_list) THEN
3035       fnd_msg_pub.initialize;
3036     END IF;
3037 
3038     -- Initialize API return status to success.
3039     x_return_status := fnd_api.g_ret_sts_success;
3040 
3041         -- if contact_point_id is not passed in, but orig system parameters are passed in
3042     -- get contact_point_id
3043 
3044       IF (p_contact_point_rec.orig_system is not null
3045          and p_contact_point_rec.orig_system <>fnd_api.g_miss_char)
3046        and (p_contact_point_rec.orig_system_reference is not null
3047          and p_contact_point_rec.orig_system_reference <>fnd_api.g_miss_char)
3048        and (p_contact_point_rec.contact_point_id = FND_API.G_MISS_NUM or p_contact_point_rec.contact_point_id is null) THEN
3049            hz_orig_system_ref_pub.get_owner_table_id
3050                         (p_orig_system => p_contact_point_rec.orig_system,
3051                         p_orig_system_reference => p_contact_point_rec.orig_system_reference,
3052                         p_owner_table_name => 'HZ_CONTACT_POINTS',
3053                         x_owner_table_id => l_contact_point_rec.contact_point_id,
3054                         x_return_status => x_return_status);
3055             IF x_return_status <> fnd_api.g_ret_sts_success THEN
3056                 RAISE FND_API.G_EXC_ERROR;
3057             END IF;
3058       END IF;
3059 
3060 
3061     -- Get old records. Will be used by business event system.
3062     get_contact_point_main (
3063       p_contact_point_id               => l_contact_point_rec.contact_point_id,
3064       x_contact_point_rec              => l_old_contact_point_rec,
3065       x_edi_rec                        => l_old_edi_rec,
3066       x_eft_rec                        => l_old_eft_rec,
3067       x_email_rec                      => l_old_email_rec,
3068       x_phone_rec                      => l_old_phone_rec,
3069       x_telex_rec                      => l_old_telex_rec,
3070       x_web_rec                        => l_old_web_rec,
3071       x_return_status                  => x_return_status,
3072       x_msg_count                      => x_msg_count,
3073       x_msg_data                       => x_msg_data);
3074 
3075     IF x_return_status = fnd_api.g_ret_sts_error THEN
3076       RAISE fnd_api.g_exc_error;
3077     ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
3078       RAISE fnd_api.g_exc_unexpected_error;
3079     END IF;
3080 
3081     -- Bug 2486394 -Check if the DSS security is granted to the user
3082     -- Bug 3818648: check dss profile before call test_instance
3083     -- Bug 3867562: check dss only in party context
3084 
3085     IF NVL(fnd_profile.value('HZ_DSS_ENABLED'), 'N') = 'Y' AND
3086        l_old_contact_point_rec.owner_table_name IN ('HZ_PARTIES', 'HZ_PARTY_SITES')
3087     THEN
3088       l_test_security :=
3089            hz_dss_util_pub.test_instance(
3090                   p_operation_code     => 'UPDATE',
3091                   p_db_object_name     => 'HZ_CONTACT_POINTS',
3092                   p_instance_pk1_value => l_contact_point_rec.contact_point_id,
3093                   p_user_name          => fnd_global.user_name,
3094                   x_return_status      => dss_return_status,
3095                   x_msg_count          => dss_msg_count,
3096                   x_msg_data           => dss_msg_data);
3097 
3098       if dss_return_status <> fnd_api.g_ret_sts_success THEN
3099          RAISE FND_API.G_EXC_ERROR;
3100       end if;
3101 
3102       if (l_test_security <> 'T' OR l_test_security <> FND_API.G_TRUE) then
3103         --
3104         -- Bug 3835601: replaced the dss message with a more user friendly message
3105         --
3106         FND_MESSAGE.SET_NAME('AR', 'HZ_DSS_NO_UPDATE_PRIVILEGE');
3107         IF l_old_contact_point_rec.owner_table_name = 'HZ_PARTIES' THEN
3108           FND_MESSAGE.SET_TOKEN('ENTITY_NAME',
3109                                 hz_dss_util_pub.get_display_name(null, 'PARTY_CONTACT_POINTS'));
3110         ELSIF l_old_contact_point_rec.owner_table_name = 'HZ_PARTY_SITES' THEN
3111           FND_MESSAGE.SET_TOKEN('ENTITY_NAME',
3112                                 hz_dss_util_pub.get_display_name(null, 'PARTY_SITE_CONTACT_POINTS'));
3113         END IF;
3114         FND_MSG_PUB.ADD;
3115         RAISE FND_API.G_EXC_ERROR;
3116       end if;
3117     END IF;
3118 
3119     -- Bug 2197181: added for mix-n-match project. first load data
3120     -- sources for this entity.
3121 
3122     -- Bug 2444678: Removed caching.
3123 
3124     /* SSM SST Integration and Extension
3125      * For non-profile entities, the concept of select/de-select data-sources is obsoleted.
3126      * There is no need to check if the data-source is selected.
3127 
3128     -- IF g_cpt_mixnmatch_enabled IS NULL THEN
3129     HZ_MIXNM_UTILITY.LoadDataSources(
3130       p_entity_name                    => 'HZ_CONTACT_POINTS',
3131       p_entity_attr_id                 => g_cpt_entity_attr_id,
3132       p_mixnmatch_enabled              => g_cpt_mixnmatch_enabled,
3133       p_selected_datasources           => g_cpt_selected_datasources );
3134     -- END IF;
3135     */
3136 
3137     -- Bug 2197181: added for mix-n-match project.
3138     -- check if the data source is seleted.
3139     /* SSM SST Integration and Extension
3140      * For non-profile entities, the concept of select/de-select data-sources is obsoleted.
3141      * There is no need to check if the data-source is selected.
3142 
3143     g_cpt_is_datasource_selected :=
3144       HZ_MIXNM_UTILITY.isDataSourceSelected (
3145         p_selected_datasources           => g_cpt_selected_datasources,
3146         p_actual_content_source          => l_old_contact_point_rec.actual_content_source );
3147     */
3151     then
3148     if (l_phone_rec.phone_country_code IS NOT NULL
3149            and l_phone_rec.phone_country_code <> nvl(l_old_phone_rec.phone_country_code,fnd_api.g_miss_char))
3150            or (l_phone_rec.phone_area_code is NOT NULL and l_phone_rec.phone_area_code <> nvl(l_old_phone_rec.phone_area_code,fnd_api.g_miss_char))
3152         l_changed_flag := 'Y';
3153     end if;
3154 
3155     if l_changed_flag = 'Y' and ( l_phone_rec.timezone_id is null or l_phone_rec.timezone_id = fnd_api.g_miss_num)
3156     then
3157                 if l_phone_rec.phone_country_code IS NULL
3158                 then
3159                         l_phone_country_code := l_old_phone_rec.phone_country_code;
3160                 else
3161                         l_phone_country_code := l_phone_rec.phone_country_code;
3162                 end if;
3163 
3164                 if l_phone_rec.phone_area_code IS NULL
3165                 then
3166                         l_phone_area_code := l_old_phone_rec.phone_area_code;
3167                 else
3168                         l_phone_area_code := l_phone_rec.phone_area_code;
3169                 end if;
3170                  l_message_count := fnd_msg_pub.count_msg();
3171                  hz_timezone_pub.get_phone_timezone_id(
3172                         p_api_version => 1.0,
3173                         p_init_msg_list => FND_API.G_FALSE,
3174                         p_phone_country_code => l_phone_country_code,
3175                         p_area_code => l_phone_area_code,
3176                         p_phone_prefix => null,
3177                         p_country_code => null,-- don't need to pass in this
3178                         x_timezone_id => l_phone_rec.timezone_id,
3179                         x_return_status => l_return_status ,
3180                         x_msg_count =>l_msg_count ,
3181                         x_msg_data => l_msg_data);
3182                         if l_return_status <> fnd_api.g_ret_sts_success
3183                         then  -- we don't raise error
3184                                 l_phone_rec.timezone_id := fnd_api.g_miss_num;
3185                                 FOR i IN 1..(l_msg_count - l_message_count) LOOP
3186                                     fnd_msg_pub.delete_msg(l_msg_count - l_message_count + 1 - i);
3187                                 END LOOP;
3188                                 l_return_status := FND_API.G_RET_STS_SUCCESS;
3189                         end if;
3190      end if;
3191 
3192     -- Call to business logic.
3193     do_update_contact_point (
3194       l_contact_point_rec,
3195       l_edi_rec,
3196       l_eft_rec,
3197       l_email_rec,
3198       l_phone_rec,
3199       l_telex_rec,
3200       l_web_rec,
3201       p_object_version_number,
3202       x_return_status);
3203 
3204     IF x_return_status = fnd_api.g_ret_sts_success THEN
3205       update_contact_point_search(l_old_contact_point_rec,
3206                                   l_old_phone_rec,
3207                                   l_phone_rec,
3208                                   l_old_email_rec,
3209                                   l_email_rec
3210                                  );
3211     END IF;
3212 
3213     -- SSM SST Integration and Extension
3214     -- For non-profile entities, the concept of select/de-select data-sources is obsoleted.
3215     -- There is no need to check if the data-source is selected.
3216 
3217     -- Invoke business event system.
3218     IF x_return_status = fnd_api.g_ret_sts_success /*AND
3219        -- Bug 2197181: Added below condition for Mix-n-Match
3220       g_cpt_is_datasource_selected = 'Y'*/
3221     THEN
3222       l_old_contact_point_rec.orig_system := p_contact_point_rec.orig_system;
3223       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('Y', 'EVENTS_ENABLED')) THEN
3224         hz_business_event_v2pvt.update_contact_point_event (
3225           l_contact_point_rec,
3226           l_old_contact_point_rec,
3227           l_edi_rec,
3228           l_old_edi_rec,
3229           l_eft_rec,
3230           l_old_eft_rec,
3231           l_email_rec,
3232           l_old_email_rec,
3233           l_phone_rec,
3234           l_old_phone_rec,
3235           l_telex_rec,
3236           l_old_telex_rec,
3237           l_web_rec,
3238           l_old_web_rec);
3239       END IF;
3240 
3241       IF(HZ_UTILITY_V2PUB.G_EXECUTE_API_CALLOUTS in ('EVENTS_ENABLED', 'BO_EVENTS_ENABLED')) THEN
3242         HZ_POPULATE_BOT_PKG.pop_hz_contact_points(
3243           p_operation        => 'U',
3244           p_contact_point_id => l_contact_point_rec.contact_point_id);
3245       END IF;
3246       -- Call to indicate contact point update to DQM
3247       hz_dqm_sync.sync_contact_point(l_contact_point_rec.contact_point_id, 'U');
3248 
3249     END IF;
3250 
3251     -- Standard call to get message count and if count is 1, get message info.
3252     fnd_msg_pub.count_and_get(
3253       p_encoded => fnd_api.g_false,
3254       p_count => x_msg_count,
3255       p_data  => x_msg_data);
3256 
3257     -- Debug info.
3258     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3259         hz_utility_v2pub.debug(p_message=>'update_contact_point_main (-)',
3260                                p_prefix=>l_debug_prefix,
3261                                p_msg_level=>fnd_log.level_procedure);
3262     END IF;
3263   END update_contact_point_main;
3264 
3265   --------------------------------------
3266   -- public procedures and functions
3267   --------------------------------------
3268 
3269   --
3270   -- PROCEDURE create_contact_point
3271   --
3272   -- DESCRIPTION
3273   --     Creates a contact point.  Still here for backward compatibility.
3274   --
3275   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3276   --
3277   -- ARGUMENTS
3278   --   IN:
3279   --     p_init_msg_list      Initialize message stack if it is set to
3283   --     p_email_rec          Email record.
3280   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3281   --     p_contact_point_rec  Contact point record.
3282   --     p_edi_rec            EDI record.
3284   --     p_phone_rec          Phone record.
3285   --     p_telex_rec          Telex record.
3286   --     p_web_rec            Web record.
3287   --   IN/OUT:
3288   --   OUT:
3289   --     x_contact_point_id   Contact point ID.
3290   --     x_return_status      Return status after the call. The status can
3291   --                          be fnd_api.g_ret_sts_success (success),
3292   --                          fnd_api.g_ret_sts_error (error),
3293   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3294   --     x_msg_count          Number of messages in message stack.
3295   --     x_msg_data           Message text if x_msg_count is 1.
3296   --
3297   -- NOTES
3298   --
3299   -- MODIFICATION HISTORY
3300   --
3301   --   07-23-2001    Jianying Huang      Created.
3302   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
3303   --                                     enhanced backward compatibility.
3304   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
3305   --                                     status and message data getting set
3306   --                                     incorrectly in update and create
3307   --                                     contact point APIs.
3308   --
3309 
3310   PROCEDURE create_contact_point (
3311     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
3312     p_contact_point_rec         IN     contact_point_rec_type,
3313     p_edi_rec                   IN     edi_rec_type := g_miss_edi_rec,
3314     p_email_rec                 IN     email_rec_type := g_miss_email_rec,
3315     p_phone_rec                 IN     phone_rec_type := g_miss_phone_rec,
3316     p_telex_rec                 IN     telex_rec_type := g_miss_telex_rec,
3317     p_web_rec                   IN     web_rec_type := g_miss_web_rec,
3318     x_contact_point_id          OUT NOCOPY    NUMBER,
3319     x_return_status             OUT NOCOPY    VARCHAR2,
3320     x_msg_count                 OUT NOCOPY    NUMBER,
3321     x_msg_data                  OUT NOCOPY    VARCHAR2
3322   ) IS
3323   l_debug_prefix                       VARCHAR2(30) := '';
3324   BEGIN
3325 
3326     -- Standard start of API savepoint
3327     SAVEPOINT create_contact_point;
3328 
3329     -- Check if API is called in debug mode. If yes, enable debug.
3330     --enable_debug;
3331 
3332     -- Debug info.
3333     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3334         hz_utility_v2pub.debug(p_message=>'create_contact_point (+)',
3335                                p_prefix=>l_debug_prefix,
3336                                p_msg_level=>fnd_log.level_procedure);
3337     END IF;
3338 
3339     -- Call to the main business logic.
3340     create_contact_point_main(
3341       p_init_msg_list           => p_init_msg_list,
3342       p_contact_point_rec       => p_contact_point_rec,
3343       p_edi_rec                 => p_edi_rec,
3344       p_email_rec               => p_email_rec,
3345       p_phone_rec               => p_phone_rec,
3346       p_telex_rec               => p_telex_rec,
3347       p_web_rec                 => p_web_rec,
3348       x_contact_point_id        => x_contact_point_id,
3349       x_return_status           => x_return_status,
3350       x_msg_count               => x_msg_count,
3351       x_msg_data                => x_msg_data
3352     );
3353 
3354     -- Debug info.
3355     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3356          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3357                                p_msg_data=>x_msg_data,
3358                                p_msg_type=>'WARNING',
3359                                p_msg_level=>fnd_log.level_exception);
3360     END IF;
3361     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3362         hz_utility_v2pub.debug(p_message=>'create_contact_point (-)',
3363                                p_prefix=>l_debug_prefix,
3364                                p_msg_level=>fnd_log.level_procedure);
3365     END IF;
3366 
3367     -- Check if API is called in debug mode. If yes, disable debug.
3368     --disable_debug;
3369 
3370   EXCEPTION
3371     WHEN fnd_api.g_exc_error THEN
3372       ROLLBACK TO create_contact_point;
3373       x_return_status := fnd_api.g_ret_sts_error;
3374 
3375       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3376                                 p_count => x_msg_count,
3377                                 p_data  => x_msg_data);
3378 
3379       -- Debug info.
3380       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3381         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3382                                p_msg_data=>x_msg_data,
3383                                p_msg_type=>'ERROR',
3384                                p_msg_level=>fnd_log.level_error);
3385     END IF;
3386     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3387         hz_utility_v2pub.debug(p_message=>'create_contact_point (-)',
3388                                p_prefix=>l_debug_prefix,
3389                                p_msg_level=>fnd_log.level_procedure);
3390     END IF;
3391 
3392 
3393       -- Check if API is called in debug mode. If yes, disable debug.
3394       --disable_debug;
3395 
3396     WHEN fnd_api.g_exc_unexpected_error THEN
3397       ROLLBACK TO create_contact_point;
3398       x_return_status := fnd_api.g_ret_sts_unexp_error;
3399 
3400       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3401                                 p_count => x_msg_count,
3402                                 p_data  => x_msg_data);
3403 
3404       -- Debug info.
3408                                p_msg_type=>'UNEXPECTED ERROR',
3405       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3406         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3407                                p_msg_data=>x_msg_data,
3409                                p_msg_level=>fnd_log.level_error);
3410      END IF;
3411      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3412         hz_utility_v2pub.debug(p_message=>'create_contact_point (-)',
3413                                p_prefix=>l_debug_prefix,
3414                                p_msg_level=>fnd_log.level_procedure);
3415      END IF;
3416 
3417       -- Check if API is called in debug mode. If yes, disable debug.
3418       --disable_debug;
3419 
3420     WHEN OTHERS THEN
3421       ROLLBACK TO create_contact_point;
3422       x_return_status := fnd_api.g_ret_sts_unexp_error;
3423 
3424       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3425       fnd_message.set_token('ERROR' ,SQLERRM);
3426       fnd_msg_pub.add;
3427 
3428       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3429                                 p_count => x_msg_count,
3430                                 p_data  => x_msg_data);
3431 
3432       -- Debug info.
3433       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3434         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3435                                p_msg_data=>x_msg_data,
3436                                p_msg_type=>'SQL ERROR',
3437                                p_msg_level=>fnd_log.level_error);
3438      END IF;
3439      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3440         hz_utility_v2pub.debug(p_message=>'create_contact_point (-)',
3441                                p_prefix=>l_debug_prefix,
3442                                p_msg_level=>fnd_log.level_procedure);
3443      END IF;
3444 
3445       -- Check if API is called in debug mode. If yes, disable debug.
3446       --disable_debug;
3447   END create_contact_point;
3448 
3449   --
3450   -- PROCEDURE create_edi_contact_point
3451   --
3452   -- DESCRIPTION
3453   --     Creates an EDI contact point.
3454   --
3455   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3456   --
3457   -- ARGUMENTS
3458   --   IN:
3459   --     p_init_msg_list      Initialize message stack if it is set to
3460   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3461   --     p_contact_point_rec  Contact point record.
3462   --     p_edi_rec            EDI record.
3463   --   IN/OUT:
3464   --   OUT:
3465   --     x_contact_point_id   Contact point ID.
3466   --     x_return_status      Return status after the call. The status can
3467   --                          be fnd_api.g_ret_sts_success (success),
3468   --                          fnd_api.g_ret_sts_error (error),
3469   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3470   --     x_msg_count          Number of messages in message stack.
3471   --     x_msg_data           Message text if x_msg_count is 1.
3472   --
3473   -- NOTES
3474   --
3475   -- MODIFICATION HISTORY
3476   --
3477   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added to support
3478   --                                     enhanced backward compatibility.
3479   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
3480   --                                     status and message data getting set
3481   --                                     incorrectly in update and create
3482   --                                     contact point APIs.
3483   --
3484 
3485   PROCEDURE create_edi_contact_point (
3486     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
3487     p_contact_point_rec         IN     contact_point_rec_type,
3488     p_edi_rec                   IN     edi_rec_type := g_miss_edi_rec,
3489     x_contact_point_id          OUT NOCOPY    NUMBER,
3490     x_return_status             OUT NOCOPY    VARCHAR2,
3491     x_msg_count                 OUT NOCOPY    NUMBER,
3492     x_msg_data                  OUT NOCOPY    VARCHAR2
3493   ) IS
3494   l_debug_prefix                       VARCHAR2(30) := '';
3495   BEGIN
3496 
3497     -- Standard start of API savepoint
3498     SAVEPOINT create_edi_contact_point;
3499 
3500     -- Check if API is called in debug mode. If yes, enable debug.
3501     --enable_debug;
3502 
3503     -- Debug info.
3504     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3505         hz_utility_v2pub.debug(p_message=>'create_edi_contact_point (+)',
3506                                p_prefix=>l_debug_prefix,
3507                                p_msg_level=>fnd_log.level_procedure);
3508     END IF;
3509 
3510     -- Call to the main business logic.
3511     create_contact_point_main(
3512       p_init_msg_list           => p_init_msg_list,
3513       p_contact_point_rec       => p_contact_point_rec,
3514       p_edi_rec                 => p_edi_rec,
3515       x_contact_point_id        => x_contact_point_id,
3516       x_return_status           => x_return_status,
3517       x_msg_count               => x_msg_count,
3518       x_msg_data                => x_msg_data
3519     );
3520 
3521     -- Debug info.
3522     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3523          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3524                                p_msg_data=>x_msg_data,
3525                                p_msg_type=>'WARNING',
3526                                p_msg_level=>fnd_log.level_exception);
3527     END IF;
3528     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3529         hz_utility_v2pub.debug(p_message=>'create_edi_contact_point (-)',
3530                                p_prefix=>l_debug_prefix,
3531                                p_msg_level=>fnd_log.level_procedure);
3532     END IF;
3536 
3533 
3534     -- Check if API is called in debug mode. If yes, disable debug.
3535     --disable_debug;
3537   EXCEPTION
3538     WHEN fnd_api.g_exc_error THEN
3539       ROLLBACK TO create_edi_contact_point;
3540       x_return_status := fnd_api.g_ret_sts_error;
3541 
3542       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3543                                 p_count => x_msg_count,
3544                                 p_data  => x_msg_data);
3545 
3546       -- Debug info.
3547       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3548         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3549                                p_msg_data=>x_msg_data,
3550                                p_msg_type=>'ERROR',
3551                                p_msg_level=>fnd_log.level_error);
3552      END IF;
3553      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3554         hz_utility_v2pub.debug(p_message=>'create_edi_contact_point (-)',
3555                                p_prefix=>l_debug_prefix,
3556                                p_msg_level=>fnd_log.level_procedure);
3557      END IF;
3558 
3559       -- Check if API is called in debug mode. If yes, disable debug.
3560       --disable_debug;
3561 
3562     WHEN fnd_api.g_exc_unexpected_error THEN
3563       ROLLBACK TO create_edi_contact_point;
3564       x_return_status := fnd_api.g_ret_sts_unexp_error;
3565 
3566       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3567                                 p_count => x_msg_count,
3568                                 p_data  => x_msg_data);
3569 
3570       -- Debug info.
3571       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3572         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3573                                p_msg_data=>x_msg_data,
3574                                p_msg_type=>'UNEXPECTED ERROR',
3575                                p_msg_level=>fnd_log.level_error);
3576       END IF;
3577       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3578         hz_utility_v2pub.debug(p_message=>'create_edi_contact_point (-)',
3579                                p_prefix=>l_debug_prefix,
3580                                p_msg_level=>fnd_log.level_procedure);
3581       END IF;
3582 
3583       -- Check if API is called in debug mode. If yes, disable debug.
3584       --disable_debug;
3585 
3586     WHEN OTHERS THEN
3587       ROLLBACK TO create_edi_contact_point;
3588       x_return_status := fnd_api.g_ret_sts_unexp_error;
3589 
3590       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3591       fnd_message.set_token('ERROR' ,SQLERRM);
3592       fnd_msg_pub.add;
3593 
3594       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3595                                 p_count => x_msg_count,
3596                                 p_data  => x_msg_data);
3597 
3598       -- Debug info.
3599       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3600         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3601                                p_msg_data=>x_msg_data,
3602                                p_msg_type=>'SQL ERROR',
3603                                p_msg_level=>fnd_log.level_error);
3604       END IF;
3605       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3606         hz_utility_v2pub.debug(p_message=>'create_edi_contact_point (-)',
3607                                p_prefix=>l_debug_prefix,
3608                                p_msg_level=>fnd_log.level_procedure);
3609       END IF;
3610 
3611       -- Check if API is called in debug mode. If yes, disable debug.
3612       --disable_debug;
3613   END create_edi_contact_point;
3614 
3615   --
3616   -- PROCEDURE create_web_contact_point
3617   --
3618   -- DESCRIPTION
3619   --     Creates a Web contact point.
3620   --
3621   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3622   --
3623   -- ARGUMENTS
3624   --   IN:
3625   --     p_init_msg_list      Initialize message stack if it is set to
3626   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3627   --     p_contact_point_rec  Contact point record.
3628   --     p_web_rec            Web record.
3629   --   IN/OUT:
3630   --   OUT:
3631   --     x_contact_point_id   Contact point ID.
3632   --     x_return_status      Return status after the call. The status can
3633   --                          be fnd_api.g_ret_sts_success (success),
3634   --                          fnd_api.g_ret_sts_error (error),
3635   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3636   --     x_msg_count          Number of messages in message stack.
3637   --     x_msg_data           Message text if x_msg_count is 1.
3638   --
3639   -- NOTES
3640   --
3641   -- MODIFICATION HISTORY
3642   --
3643   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
3644   --                                     enhanced backward compatibility.
3645   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
3646   --                                     status and message data getting set
3647   --                                     incorrectly in update and create
3648   --                                     contact point APIs.
3649   --
3650 
3651   PROCEDURE create_web_contact_point (
3652     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
3653     p_contact_point_rec         IN     contact_point_rec_type,
3654     p_web_rec                   IN     web_rec_type := g_miss_web_rec,
3655     x_contact_point_id          OUT NOCOPY    NUMBER,
3656     x_return_status             OUT NOCOPY    VARCHAR2,
3657     x_msg_count                 OUT NOCOPY    NUMBER,
3658     x_msg_data                  OUT NOCOPY    VARCHAR2
3659   ) IS
3660   l_debug_prefix                       VARCHAR2(30) := '';
3661   BEGIN
3662 
3666     -- Check if API is called in debug mode. If yes, enable debug.
3663     -- Standard start of API savepoint
3664     SAVEPOINT create_web_contact_point;
3665 
3667     --enable_debug;
3668 
3669     -- Debug info.
3670     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3671         hz_utility_v2pub.debug(p_message=>'create_web_contact_point (+)',
3672                                p_prefix=>l_debug_prefix,
3673                                p_msg_level=>fnd_log.level_procedure);
3674     END IF;
3675 
3676     -- Call to the main business logic.
3677     create_contact_point_main(
3678       p_init_msg_list           => p_init_msg_list,
3679       p_contact_point_rec       => p_contact_point_rec,
3680       p_web_rec                 => p_web_rec,
3681       x_contact_point_id        => x_contact_point_id,
3682       x_return_status           => x_return_status,
3683       x_msg_count               => x_msg_count,
3684       x_msg_data                => x_msg_data
3685     );
3686 
3687     -- Debug info.
3688     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3689          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3690                                p_msg_data=>x_msg_data,
3691                                p_msg_type=>'WARNING',
3692                                p_msg_level=>fnd_log.level_exception);
3693     END IF;
3694     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3695         hz_utility_v2pub.debug(p_message=>'create_web_contact_point (-)',
3696                                p_prefix=>l_debug_prefix,
3697                                p_msg_level=>fnd_log.level_procedure);
3698     END IF;
3699 
3700     -- Check if API is called in debug mode. If yes, disable debug.
3701     --disable_debug;
3702 
3703   EXCEPTION
3704     WHEN fnd_api.g_exc_error THEN
3705       ROLLBACK TO create_web_contact_point;
3706       x_return_status := fnd_api.g_ret_sts_error;
3707 
3708       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3709                                 p_count => x_msg_count,
3710                                 p_data  => x_msg_data);
3711 
3712       -- Debug info.
3713       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3714         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3715                                p_msg_data=>x_msg_data,
3716                                p_msg_type=>'ERROR',
3717                                p_msg_level=>fnd_log.level_error);
3718     END IF;
3719     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3720         hz_utility_v2pub.debug(p_message=>'create_web_contact_point (-)',
3721                                p_prefix=>l_debug_prefix,
3722                                p_msg_level=>fnd_log.level_procedure);
3723     END IF;
3724 
3725       -- Check if API is called in debug mode. If yes, disable debug.
3726       --disable_debug;
3727 
3728     WHEN fnd_api.g_exc_unexpected_error THEN
3729       ROLLBACK TO create_web_contact_point;
3730       x_return_status := fnd_api.g_ret_sts_unexp_error;
3731 
3732       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3733                                 p_count => x_msg_count,
3734                                 p_data  => x_msg_data);
3735 
3736       -- Debug info.
3737       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3738         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3739                                p_msg_data=>x_msg_data,
3740                                p_msg_type=>'UNEXPECTED ERROR',
3741                                p_msg_level=>fnd_log.level_error);
3742       END IF;
3743       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3744         hz_utility_v2pub.debug(p_message=>'create_web_contact_point (-)',
3745                                p_prefix=>l_debug_prefix,
3746                                p_msg_level=>fnd_log.level_procedure);
3747       END IF;
3748 
3749       -- Check if API is called in debug mode. If yes, disable debug.
3750       --disable_debug;
3751 
3752     WHEN OTHERS THEN
3753       ROLLBACK TO create_web_contact_point;
3754       x_return_status := fnd_api.g_ret_sts_unexp_error;
3755 
3756       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3757       fnd_message.set_token('ERROR' ,SQLERRM);
3758       fnd_msg_pub.add;
3759 
3760       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3761                                 p_count => x_msg_count,
3762                                 p_data  => x_msg_data);
3763 
3764       -- Debug info.
3765       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3766         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3767                                p_msg_data=>x_msg_data,
3768                                p_msg_type=>'SQL ERROR',
3769                                p_msg_level=>fnd_log.level_error);
3770       END IF;
3771       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3772         hz_utility_v2pub.debug(p_message=>'create_web_contact_point (-)',
3773                                p_prefix=>l_debug_prefix,
3774                                p_msg_level=>fnd_log.level_procedure);
3775       END IF;
3776 
3777       -- Check if API is called in debug mode. If yes, disable debug.
3778       --disable_debug;
3779   END create_web_contact_point;
3780 
3781   --
3782   -- PROCEDURE create_eft_contact_point
3783   --
3784   -- DESCRIPTION
3785   --     Creates an EFT contact point.
3786   --
3787   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3788   --
3789   -- ARGUMENTS
3790   --   IN:
3791   --     p_init_msg_list      Initialize message stack if it is set to
3792   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3793   --     p_contact_point_rec  Contact point record.
3797   --     x_contact_point_id   Contact point ID.
3794   --     p_eft_rec            EFT record.
3795   --   IN/OUT:
3796   --   OUT:
3798   --     x_return_status      Return status after the call. The status can
3799   --                          be fnd_api.g_ret_sts_success (success),
3800   --                          fnd_api.g_ret_sts_error (error),
3801   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3802   --     x_msg_count          Number of messages in message stack.
3803   --     x_msg_data           Message text if x_msg_count is 1.
3804   --
3805   -- NOTES
3806   --
3807   -- MODIFICATION HISTORY
3808   --
3809   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
3810   --                                     enhanced backward compatibility.
3811   --                                     Bug 2100992: Added for bank
3812   --                                     consolidation support.
3813   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
3814   --                                     status and message data getting set
3815   --                                     incorrectly in update and create
3816   --                                     contact point APIs.
3817   --
3818 
3819   PROCEDURE create_eft_contact_point (
3820     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
3821     p_contact_point_rec         IN     contact_point_rec_type,
3822     p_eft_rec                   IN     eft_rec_type := g_miss_eft_rec,
3823     x_contact_point_id          OUT NOCOPY    NUMBER,
3824     x_return_status             OUT NOCOPY    VARCHAR2,
3825     x_msg_count                 OUT NOCOPY    NUMBER,
3826     x_msg_data                  OUT NOCOPY    VARCHAR2
3827   ) IS
3828   l_debug_prefix                       VARCHAR2(30) := '';
3829   BEGIN
3830 
3831     -- Standard start of API savepoint
3832     SAVEPOINT create_eft_contact_point;
3833 
3834     -- Check if API is called in debug mode. If yes, enable debug.
3835     --enable_debug;
3836 
3837     -- Debug info.
3838     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3839         hz_utility_v2pub.debug(p_message=>'create_eft_contact_point (+)',
3840                                p_prefix=>l_debug_prefix,
3841                                p_msg_level=>fnd_log.level_procedure);
3842     END IF;
3843 
3844     -- Call to the main business logic.
3845     create_contact_point_main(
3846       p_init_msg_list           => p_init_msg_list,
3847       p_contact_point_rec       => p_contact_point_rec,
3848       p_eft_rec                 => p_eft_rec,
3849       x_contact_point_id        => x_contact_point_id,
3850       x_return_status           => x_return_status,
3851       x_msg_count               => x_msg_count,
3852       x_msg_data                => x_msg_data
3853     );
3854 
3855     -- Debug info.
3856     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3857          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3858                                p_msg_data=>x_msg_data,
3859                                p_msg_type=>'WARNING',
3860                                p_msg_level=>fnd_log.level_exception);
3861     END IF;
3862     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3863         hz_utility_v2pub.debug(p_message=>'create_eft_contact_point (-)',
3864                                p_prefix=>l_debug_prefix,
3865                                p_msg_level=>fnd_log.level_procedure);
3866     END IF;
3867 
3868 
3869     -- Check if API is called in debug mode. If yes, disable debug.
3870     --disable_debug;
3871 
3872   EXCEPTION
3873     WHEN fnd_api.g_exc_error THEN
3874       ROLLBACK TO create_eft_contact_point;
3875       x_return_status := fnd_api.g_ret_sts_error;
3876 
3877       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3878                                 p_count => x_msg_count,
3879                                 p_data  => x_msg_data);
3880 
3881       -- Debug info.
3882       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3883         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3884                                p_msg_data=>x_msg_data,
3885                                p_msg_type=>'ERROR',
3886                                p_msg_level=>fnd_log.level_error);
3887      END IF;
3888      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3889         hz_utility_v2pub.debug(p_message=>'create_eft_contact_point (-)',
3890                                p_prefix=>l_debug_prefix,
3891                                p_msg_level=>fnd_log.level_procedure);
3892      END IF;
3893 
3894       -- Check if API is called in debug mode. If yes, disable debug.
3895       --disable_debug;
3896 
3897     WHEN fnd_api.g_exc_unexpected_error THEN
3898       ROLLBACK TO create_eft_contact_point;
3899       x_return_status := fnd_api.g_ret_sts_unexp_error;
3900 
3901       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3902                                 p_count => x_msg_count,
3903                                 p_data  => x_msg_data);
3904 
3905       -- Debug info.
3906       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3907         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3908                                p_msg_data=>x_msg_data,
3909                                p_msg_type=>'UNEXPECTED ERROR',
3910                                p_msg_level=>fnd_log.level_error);
3911       END IF;
3912       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3913         hz_utility_v2pub.debug(p_message=>'create_eft_contact_point (-)',
3914                                p_prefix=>l_debug_prefix,
3915                                p_msg_level=>fnd_log.level_procedure);
3916       END IF;
3917 
3918       -- Check if API is called in debug mode. If yes, disable debug.
3922       ROLLBACK TO create_eft_contact_point;
3919       --disable_debug;
3920 
3921     WHEN OTHERS THEN
3923       x_return_status := fnd_api.g_ret_sts_unexp_error;
3924 
3925       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3926       fnd_message.set_token('ERROR' ,SQLERRM);
3927       fnd_msg_pub.add;
3928 
3929       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3930                                 p_count => x_msg_count,
3931                                 p_data  => x_msg_data);
3932 
3933       -- Debug info.
3934       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3935         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3936                                p_msg_data=>x_msg_data,
3937                                p_msg_type=>'SQL ERROR',
3938                                p_msg_level=>fnd_log.level_error);
3939       END IF;
3940       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3941         hz_utility_v2pub.debug(p_message=>'create_eft_contact_point (-)',
3942                                p_prefix=>l_debug_prefix,
3943                                p_msg_level=>fnd_log.level_procedure);
3944       END IF;
3945 
3946       -- Check if API is called in debug mode. If yes, disable debug.
3947       --disable_debug;
3948   END create_eft_contact_point;
3949 
3950   --
3951   -- PROCEDURE create_phone_contact_point
3952   --
3953   -- DESCRIPTION
3954   --     Creates a phone contact point.
3955   --
3956   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3957   --
3958   -- ARGUMENTS
3959   --   IN:
3960   --     p_init_msg_list      Initialize message stack if it is set to
3961   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3962   --     p_contact_point_rec  Contact point record.
3963   --     p_phone_rec          Phone record.
3964   --   IN/OUT:
3965   --   OUT:
3966   --     x_contact_point_id   Contact point ID.
3967   --     x_return_status      Return status after the call. The status can
3968   --                          be fnd_api.g_ret_sts_success (success),
3969   --                          fnd_api.g_ret_sts_error (error),
3970   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3971   --     x_msg_count          Number of messages in message stack.
3972   --     x_msg_data           Message text if x_msg_count is 1.
3973   --
3974   -- NOTES
3975   --
3976   -- MODIFICATION HISTORY
3977   --
3978   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
3979   --                                     enhanced backward compatibility.
3980   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
3981   --                                     status and message data getting set
3982   --                                     incorrectly in update and create
3983   --                                     contact point APIs.
3984   --
3985 
3986   PROCEDURE create_phone_contact_point (
3987     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
3988     p_contact_point_rec         IN     contact_point_rec_type,
3989     p_phone_rec                 IN     phone_rec_type := g_miss_phone_rec,
3990     x_contact_point_id          OUT NOCOPY    NUMBER,
3991     x_return_status             OUT NOCOPY    VARCHAR2,
3992     x_msg_count                 OUT NOCOPY    NUMBER,
3993     x_msg_data                  OUT NOCOPY    VARCHAR2
3994   ) IS
3995   l_debug_prefix                       VARCHAR2(30) := '';
3996   BEGIN
3997 
3998     -- Standard start of API savepoint
3999     SAVEPOINT create_phone_contact_point;
4000 
4001     -- Check if API is called in debug mode. If yes, enable debug.
4002     --enable_debug;
4003 
4004     -- Debug info.
4005     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4006         hz_utility_v2pub.debug(p_message=>'create_phone_contact_point (+)',
4007                                p_prefix=>l_debug_prefix,
4008                                p_msg_level=>fnd_log.level_procedure);
4009     END IF;
4010 
4011 
4012     -- Call to the main business logic.
4013     create_contact_point_main(
4014       p_init_msg_list           => p_init_msg_list,
4015       p_contact_point_rec       => p_contact_point_rec,
4016       p_phone_rec               => p_phone_rec,
4017       x_contact_point_id        => x_contact_point_id,
4018       x_return_status           => x_return_status,
4019       x_msg_count               => x_msg_count,
4020       x_msg_data                => x_msg_data
4021     );
4022 
4023     -- Debug info.
4024     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4025          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4026                                p_msg_data=>x_msg_data,
4027                                p_msg_type=>'WARNING',
4028                                p_msg_level=>fnd_log.level_exception);
4029     END IF;
4030     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4031         hz_utility_v2pub.debug(p_message=>'create_phone_contact_point (-)',
4032                                p_prefix=>l_debug_prefix,
4033                                p_msg_level=>fnd_log.level_procedure);
4034     END IF;
4035 
4036     -- Check if API is called in debug mode. If yes, disable debug.
4037     --disable_debug;
4038 
4039   EXCEPTION
4040     WHEN fnd_api.g_exc_error THEN
4041       ROLLBACK TO create_phone_contact_point;
4042       x_return_status := fnd_api.g_ret_sts_error;
4043 
4044       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4045                                 p_count => x_msg_count,
4046                                 p_data  => x_msg_data);
4047 
4048       -- Debug info.
4049       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4050         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4054      END IF;
4051                                p_msg_data=>x_msg_data,
4052                                p_msg_type=>'ERROR',
4053                                p_msg_level=>fnd_log.level_error);
4055      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4056         hz_utility_v2pub.debug(p_message=>'create_phone_contact_point (-)',
4057                                p_prefix=>l_debug_prefix,
4058                                p_msg_level=>fnd_log.level_procedure);
4059      END IF;
4060 
4061       -- Check if API is called in debug mode. If yes, disable debug.
4062       --disable_debug;
4063 
4064     WHEN fnd_api.g_exc_unexpected_error THEN
4065       ROLLBACK TO create_phone_contact_point;
4066       x_return_status := fnd_api.g_ret_sts_unexp_error;
4067 
4068       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4069                                 p_count => x_msg_count,
4070                                 p_data  => x_msg_data);
4071 
4072       -- Debug info.
4073       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4074         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4075                                p_msg_data=>x_msg_data,
4076                                p_msg_type=>'UNEXPECTED ERROR',
4077                                p_msg_level=>fnd_log.level_error);
4078       END IF;
4079       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4080         hz_utility_v2pub.debug(p_message=>'create_phone_contact_point (-)',
4081                                p_prefix=>l_debug_prefix,
4082                                p_msg_level=>fnd_log.level_procedure);
4083       END IF;
4084 
4085       -- Check if API is called in debug mode. If yes, disable debug.
4086       --disable_debug;
4087 
4088     WHEN OTHERS THEN
4089       ROLLBACK TO create_phone_contact_point;
4090       x_return_status := fnd_api.g_ret_sts_unexp_error;
4091 
4092       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4093       fnd_message.set_token('ERROR' ,SQLERRM);
4094       fnd_msg_pub.add;
4095 
4096       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4097                                 p_count => x_msg_count,
4098                                 p_data  => x_msg_data);
4099 
4100       -- Debug info.
4101       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4102         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4103                                p_msg_data=>x_msg_data,
4104                                p_msg_type=>'SQL ERROR',
4105                                p_msg_level=>fnd_log.level_error);
4106      END IF;
4107      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4108         hz_utility_v2pub.debug(p_message=>'create_phone_contact_point (-)',
4109                                p_prefix=>l_debug_prefix,
4110                                p_msg_level=>fnd_log.level_procedure);
4111      END IF;
4112 
4113       -- Check if API is called in debug mode. If yes, disable debug.
4114       --disable_debug;
4115   END create_phone_contact_point;
4116 
4117   --
4118   -- PROCEDURE create_telex_contact_point
4119   --
4120   -- DESCRIPTION
4121   --     Creates a telex contact point.
4122   --
4123   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4124   --
4125   -- ARGUMENTS
4126   --   IN:
4127   --     p_init_msg_list      Initialize message stack if it is set to
4128   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
4129   --     p_contact_point_rec  Contact point record.
4130   --     p_telex_rec          Telex record.
4131   --   IN/OUT:
4132   --   OUT:
4133   --     x_contact_point_id   Contact point ID.
4134   --     x_return_status      Return status after the call. The status can
4135   --                          be fnd_api.g_ret_sts_success (success),
4136   --                          fnd_api.g_ret_sts_error (error),
4137   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4138   --     x_msg_count          Number of messages in message stack.
4139   --     x_msg_data           Message text if x_msg_count is 1.
4140   --
4141   -- NOTES
4142   --
4143   -- MODIFICATION HISTORY
4144   --
4145   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
4146   --                                     enhanced backward compatibility.
4147   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
4148   --                                     status and message data getting set
4149   --                                     incorrectly in update and create
4150   --                                     contact point APIs.
4151   --
4152 
4153   PROCEDURE create_telex_contact_point (
4154     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
4155     p_contact_point_rec         IN     contact_point_rec_type,
4156     p_telex_rec                 IN     telex_rec_type := g_miss_telex_rec,
4157     x_contact_point_id          OUT NOCOPY    NUMBER,
4158     x_return_status             OUT NOCOPY    VARCHAR2,
4159     x_msg_count                 OUT NOCOPY    NUMBER,
4160     x_msg_data                  OUT NOCOPY    VARCHAR2
4161   ) IS
4162   l_debug_prefix                       VARCHAR2(30) := '';
4163   BEGIN
4164 
4165     -- Standard start of API savepoint
4166     SAVEPOINT create_telex_contact_point;
4167 
4168     -- Check if API is called in debug mode. If yes, enable debug.
4169     --enable_debug;
4170 
4171     -- Debug info.
4172     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4173         hz_utility_v2pub.debug(p_message=>'create_telex_contact_point (+)',
4174                                p_prefix=>l_debug_prefix,
4175                                p_msg_level=>fnd_log.level_procedure);
4176     END IF;
4177 
4178     -- Call to the main business logic.
4179     create_contact_point_main(
4183       x_contact_point_id        => x_contact_point_id,
4180       p_init_msg_list           => p_init_msg_list,
4181       p_contact_point_rec       => p_contact_point_rec,
4182       p_telex_rec               => p_telex_rec,
4184       x_return_status           => x_return_status,
4185       x_msg_count               => x_msg_count,
4186       x_msg_data                => x_msg_data
4187     );
4188 
4189     -- Debug info.
4190     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4191          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4192                                p_msg_data=>x_msg_data,
4193                                p_msg_type=>'WARNING',
4194                                p_msg_level=>fnd_log.level_exception);
4195     END IF;
4196     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4197         hz_utility_v2pub.debug(p_message=>'create_telex_contact_point (-)',
4198                                p_prefix=>l_debug_prefix,
4199                                p_msg_level=>fnd_log.level_procedure);
4200     END IF;
4201 
4202 
4203     -- Check if API is called in debug mode. If yes, disable debug.
4204     --disable_debug;
4205 
4206   EXCEPTION
4207     WHEN fnd_api.g_exc_error THEN
4208       ROLLBACK TO create_telex_contact_point;
4209       x_return_status := fnd_api.g_ret_sts_error;
4210 
4211       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4212                                 p_count => x_msg_count,
4213                                 p_data  => x_msg_data);
4214 
4215       -- Debug info.
4216       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4217         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4218                                p_msg_data=>x_msg_data,
4219                                p_msg_type=>'ERROR',
4220                                p_msg_level=>fnd_log.level_error);
4221       END IF;
4222       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4223         hz_utility_v2pub.debug(p_message=>'create_telex_contact_point (-)',
4224                                p_prefix=>l_debug_prefix,
4225                                p_msg_level=>fnd_log.level_procedure);
4226       END IF;
4227 
4228       -- Check if API is called in debug mode. If yes, disable debug.
4229       --disable_debug;
4230 
4231     WHEN fnd_api.g_exc_unexpected_error THEN
4232       ROLLBACK TO create_telex_contact_point;
4233       x_return_status := fnd_api.g_ret_sts_unexp_error;
4234 
4235       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4236                                 p_count => x_msg_count,
4237                                 p_data  => x_msg_data);
4238 
4239       -- Debug info.
4240       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4241         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4242                                p_msg_data=>x_msg_data,
4243                                p_msg_type=>'UNEXPECTED ERROR',
4244                                p_msg_level=>fnd_log.level_error);
4245       END IF;
4246       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4247         hz_utility_v2pub.debug(p_message=>'create_telex_contact_point (-)',
4248                                p_prefix=>l_debug_prefix,
4249                                p_msg_level=>fnd_log.level_procedure);
4250       END IF;
4251 
4252       -- Check if API is called in debug mode. If yes, disable debug.
4253       --disable_debug;
4254 
4255     WHEN OTHERS THEN
4256       ROLLBACK TO create_telex_contact_point;
4257       x_return_status := fnd_api.g_ret_sts_unexp_error;
4258 
4259       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4260       fnd_message.set_token('ERROR' ,SQLERRM);
4261       fnd_msg_pub.add;
4262 
4263       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4264                                 p_count => x_msg_count,
4265                                 p_data  => x_msg_data);
4266 
4267       -- Debug info.
4268       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4269         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4270                                p_msg_data=>x_msg_data,
4271                                p_msg_type=>'SQL ERROR',
4272                                p_msg_level=>fnd_log.level_error);
4273      END IF;
4274      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4275         hz_utility_v2pub.debug(p_message=>'create_telex_contact_point (-)',
4276                                p_prefix=>l_debug_prefix,
4277                                p_msg_level=>fnd_log.level_procedure);
4278      END IF;
4279 
4280       -- Check if API is called in debug mode. If yes, disable debug.
4281       --disable_debug;
4282   END create_telex_contact_point;
4283 
4284   --
4285   -- PROCEDURE create_email_contact_point
4286   --
4287   -- DESCRIPTION
4288   --     Creates a email contact point.
4289   --
4290   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4291   --
4292   -- ARGUMENTS
4293   --   IN:
4294   --     p_init_msg_list      Initialize message stack if it is set to
4295   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
4296   --     p_contact_point_rec  Contact point record.
4297   --     p_email_rec          Email record.
4298   --   IN/OUT:
4299   --   OUT:
4300   --     x_contact_point_id   Contact point ID.
4301   --     x_return_status      Return status after the call. The status can
4302   --                          be fnd_api.g_ret_sts_success (success),
4303   --                          fnd_api.g_ret_sts_error (error),
4304   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4305   --     x_msg_count          Number of messages in message stack.
4306   --     x_msg_data           Message text if x_msg_count is 1.
4307   --
4308   -- NOTES
4312   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
4309   --
4310   -- MODIFICATION HISTORY
4311   --
4313   --                                     enhanced backward compatibility.
4314   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
4315   --                                     status and message data getting set
4316   --                                     incorrectly in update and create
4317   --                                     contact point APIs.
4318   --
4319 
4320   PROCEDURE create_email_contact_point (
4321     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
4322     p_contact_point_rec         IN     contact_point_rec_type,
4323     p_email_rec                 IN     email_rec_type := g_miss_email_rec,
4324     x_contact_point_id          OUT NOCOPY    NUMBER,
4325     x_return_status             OUT NOCOPY    VARCHAR2,
4326     x_msg_count                 OUT NOCOPY    NUMBER,
4327     x_msg_data                  OUT NOCOPY    VARCHAR2
4328   ) IS
4329   l_debug_prefix                       VARCHAR2(30) := '';
4330   BEGIN
4331 
4332     -- Standard start of API savepoint
4333     SAVEPOINT create_email_contact_point;
4334 
4335     -- Check if API is called in debug mode. If yes, enable debug.
4336     --enable_debug;
4337 
4338     -- Debug info.
4339     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4340         hz_utility_v2pub.debug(p_message=>'create_email_contact_point (+)',
4341                                p_prefix=>l_debug_prefix,
4342                                p_msg_level=>fnd_log.level_procedure);
4343     END IF;
4344 
4345 
4346     -- Call to the main business logic.
4347     create_contact_point_main(
4348       p_init_msg_list           => p_init_msg_list,
4349       p_contact_point_rec       => p_contact_point_rec,
4350       p_email_rec               => p_email_rec,
4351       x_contact_point_id        => x_contact_point_id,
4352       x_return_status           => x_return_status,
4353       x_msg_count               => x_msg_count,
4354       x_msg_data                => x_msg_data
4355     );
4356 
4357     -- Debug info.
4358     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4359          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4360                                p_msg_data=>x_msg_data,
4361                                p_msg_type=>'WARNING',
4362                                p_msg_level=>fnd_log.level_exception);
4363     END IF;
4364     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4365         hz_utility_v2pub.debug(p_message=>'create_email_contact_point (-)',
4366                                p_prefix=>l_debug_prefix,
4367                                p_msg_level=>fnd_log.level_procedure);
4368     END IF;
4369 
4370     -- Check if API is called in debug mode. If yes, disable debug.
4371     --disable_debug;
4372 
4373   EXCEPTION
4374     WHEN fnd_api.g_exc_error THEN
4375       ROLLBACK TO create_email_contact_point;
4376       x_return_status := fnd_api.g_ret_sts_error;
4377 
4378       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4379                                 p_count => x_msg_count,
4380                                 p_data  => x_msg_data);
4381 
4382       -- Debug info.
4383       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4384         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4385                                p_msg_data=>x_msg_data,
4386                                p_msg_type=>'ERROR',
4387                                p_msg_level=>fnd_log.level_error);
4388       END IF;
4389       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4390         hz_utility_v2pub.debug(p_message=>'create_email_contact_point (-)',
4391                                p_prefix=>l_debug_prefix,
4392                                p_msg_level=>fnd_log.level_procedure);
4393       END IF;
4394 
4395       -- Check if API is called in debug mode. If yes, disable debug.
4396       --disable_debug;
4397 
4398     WHEN fnd_api.g_exc_unexpected_error THEN
4399       ROLLBACK TO create_email_contact_point;
4400       x_return_status := fnd_api.g_ret_sts_unexp_error;
4401 
4402       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4403                                 p_count => x_msg_count,
4404                                 p_data  => x_msg_data);
4405 
4406       -- Debug info.
4407       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4408         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4409                                p_msg_data=>x_msg_data,
4410                                p_msg_type=>'UNEXPECTED ERROR',
4411                                p_msg_level=>fnd_log.level_error);
4412     END IF;
4413     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4414         hz_utility_v2pub.debug(p_message=>'create_email_contact_point (-)',
4415                                p_prefix=>l_debug_prefix,
4416                                p_msg_level=>fnd_log.level_procedure);
4417     END IF;
4418 
4419       -- Check if API is called in debug mode. If yes, disable debug.
4420       --disable_debug;
4421 
4422     WHEN OTHERS THEN
4423       ROLLBACK TO create_email_contact_point;
4424       x_return_status := fnd_api.g_ret_sts_unexp_error;
4425 
4426       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4427       fnd_message.set_token('ERROR' ,SQLERRM);
4428       fnd_msg_pub.add;
4429 
4430       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4431                                 p_count => x_msg_count,
4432                                 p_data  => x_msg_data);
4433 
4434       -- Debug info.
4435       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4436         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4440       END IF;
4437                                p_msg_data=>x_msg_data,
4438                                p_msg_type=>'SQL ERROR',
4439                                p_msg_level=>fnd_log.level_error);
4441       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4442         hz_utility_v2pub.debug(p_message=>'create_email_contact_point (-)',
4443                                p_prefix=>l_debug_prefix,
4444                                p_msg_level=>fnd_log.level_procedure);
4445       END IF;
4446 
4447       -- Check if API is called in debug mode. If yes, disable debug.
4448       --disable_debug;
4449   END create_email_contact_point;
4450 
4451   --
4452   -- PRIVATE PROCEDURE update_contact_point
4453   --
4454   -- DESCRIPTION
4455   --     Updates the given contact point.
4456   --
4457   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4458   --
4459   -- ARGUMENTS
4460   --   IN:
4461   --     p_init_msg_list          Initialize message stack if it is set to
4462   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
4463   --     p_contact_point_rec      Contact point record.
4464   --     p_edi_rec                EDI record.
4465   --     p_email_rec              Email record.
4466   --     p_phone_rec              Phone record.
4467   --     p_telex_rec              Telex record.
4468   --     p_web_rec                Web record.
4469   --   IN/OUT:
4470   --     p_object_version_number  Used for locking the being updated record.
4471   --   OUT:
4472   --     x_return_status          Return status after the call. The status can
4473   --                              be fnd_api.g_ret_sts_success (success),
4474   --                              fnd_api.g_ret_sts_error (error),
4475   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4476   --     x_msg_count              Number of messages in message stack.
4477   --     x_msg_data               Message text if x_msg_count is 1.
4478   --
4479   -- NOTES
4480   --
4481   -- MODIFICATION HISTORY
4482   --
4483   --   07-23-2001    Jianying Huang      Created.
4484   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
4485   --                                     enhanced backward compatibility.
4486   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
4487   --                                     status and message data getting set
4488   --                                     incorrectly in update and create
4489   --                                     contact point APIs.
4490   --
4491 
4492   PROCEDURE update_contact_point (
4493     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
4494     p_contact_point_rec         IN     contact_point_rec_type,
4495     p_edi_rec                   IN     edi_rec_type := g_miss_edi_rec,
4496     p_email_rec                 IN     email_rec_type := g_miss_email_rec,
4497     p_phone_rec                 IN     phone_rec_type := g_miss_phone_rec,
4498     p_telex_rec                 IN     telex_rec_type := g_miss_telex_rec,
4499     p_web_rec                   IN     web_rec_type := g_miss_web_rec,
4500     p_object_version_number     IN OUT NOCOPY NUMBER,
4501     x_return_status             OUT NOCOPY    VARCHAR2,
4502     x_msg_count                 OUT NOCOPY    NUMBER,
4503     x_msg_data                  OUT NOCOPY    VARCHAR2
4504   ) IS
4505   l_debug_prefix                       VARCHAR2(30) := '';
4506   BEGIN
4507 
4508     -- Standard start of API savepoint
4509     SAVEPOINT update_contact_point;
4510 
4511     -- Check if API is called in debug mode. If yes, enable debug.
4512     --enable_debug;
4513 
4514     -- Debug info.
4515     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4516         hz_utility_v2pub.debug(p_message=>'update_contact_point (+)',
4517                                p_prefix=>l_debug_prefix,
4518                                p_msg_level=>fnd_log.level_procedure);
4519     END IF;
4520 
4521     -- call main business logic.
4522     update_contact_point_main(
4523       p_init_msg_list           => p_init_msg_list,
4524       p_contact_point_rec       => p_contact_point_rec,
4525       p_edi_rec                 => p_edi_rec,
4526       p_email_rec               => p_email_rec,
4527       p_phone_rec               => p_phone_rec,
4528       p_telex_rec               => p_telex_rec,
4529       p_web_rec                 => p_web_rec,
4530       p_object_version_number   => p_object_version_number,
4531       x_return_status           => x_return_status,
4532       x_msg_count               => x_msg_count,
4533       x_msg_data                => x_msg_data
4534     );
4535 
4536     HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4537 
4538     -- Debug info.
4539     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4540          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4541                                p_msg_data=>x_msg_data,
4542                                p_msg_type=>'WARNING',
4543                                p_msg_level=>fnd_log.level_exception);
4544     END IF;
4545     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4546         hz_utility_v2pub.debug(p_message=>'update_contact_point (-)',
4547                                p_prefix=>l_debug_prefix,
4548                                p_msg_level=>fnd_log.level_procedure);
4549     END IF;
4550 
4551     -- Check if API is called in debug mode. If yes, disable debug.
4552     --disable_debug;
4553 
4554   EXCEPTION
4555     WHEN fnd_api.g_exc_error THEN
4556       ROLLBACK TO update_contact_point;
4557       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4558       x_return_status := fnd_api.g_ret_sts_error;
4559 
4560       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4561                                 p_count => x_msg_count,
4562                                 p_data  => x_msg_data);
4563 
4567                                p_msg_data=>x_msg_data,
4564       -- Debug info.
4565       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4566         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4568                                p_msg_type=>'ERROR',
4569                                p_msg_level=>fnd_log.level_error);
4570       END IF;
4571       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4572         hz_utility_v2pub.debug(p_message=>'update_contact_point (-)',
4573                                p_prefix=>l_debug_prefix,
4574                                p_msg_level=>fnd_log.level_procedure);
4575       END IF;
4576 
4577       -- Check if API is called in debug mode. If yes, disable debug.
4578       --disable_debug;
4579 
4580     WHEN fnd_api.g_exc_unexpected_error THEN
4581       ROLLBACK TO update_contact_point;
4582       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4583       x_return_status := fnd_api.g_ret_sts_unexp_error;
4584 
4585       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4586                                 p_count => x_msg_count,
4587                                 p_data  => x_msg_data);
4588 
4589       -- Debug info.
4590       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4591         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4592                                p_msg_data=>x_msg_data,
4593                                p_msg_type=>'UNEXPECTED ERROR',
4594                                p_msg_level=>fnd_log.level_error);
4595      END IF;
4596      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4597         hz_utility_v2pub.debug(p_message=>'update_contact_point (-)',
4598                                p_prefix=>l_debug_prefix,
4599                                p_msg_level=>fnd_log.level_procedure);
4600      END IF;
4601 
4602       -- Check if API is called in debug mode. If yes, disable debug.
4603       --disable_debug;
4604 
4605     WHEN OTHERS THEN
4606       ROLLBACK TO update_contact_point;
4607       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4608       x_return_status := fnd_api.g_ret_sts_unexp_error;
4609 
4610       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4611       fnd_message.set_token('ERROR' ,SQLERRM);
4612       fnd_msg_pub.add;
4613 
4614       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4615                                 p_count => x_msg_count,
4616                                 p_data  => x_msg_data);
4617 
4618       -- Debug info.
4619       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4620         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4621                                p_msg_data=>x_msg_data,
4622                                p_msg_type=>'SQL ERROR',
4623                                p_msg_level=>fnd_log.level_error);
4624       END IF;
4625       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4626         hz_utility_v2pub.debug(p_message=>'update_contact_point (-)',
4627                                p_prefix=>l_debug_prefix,
4628                                p_msg_level=>fnd_log.level_procedure);
4629       END IF;
4630 
4631       -- Check if API is called in debug mode. If yes, disable debug.
4632       --disable_debug;
4633   END update_contact_point;
4634 
4635   --
4636   -- PROCEDURE update_edi_contact_point
4637   --
4638   -- DESCRIPTION
4639   --     Updates the given EDI contact point.
4640   --
4641   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4642   --
4643   -- ARGUMENTS
4644   --   IN:
4645   --     p_init_msg_list          Initialize message stack if it is set to
4646   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
4647   --     p_contact_point_rec      Contact point record.
4648   --     p_edi_rec                EDI record.
4649   --   IN/OUT:
4650   --     p_object_version_number  Used for locking the being updated record.
4651   --   OUT:
4652   --     x_return_status          Return status after the call. The status can
4653   --                              be fnd_api.g_ret_sts_success (success),
4654   --                              fnd_api.g_ret_sts_error (error),
4655   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4656   --     x_msg_count              Number of messages in message stack.
4657   --     x_msg_data               Message text if x_msg_count is 1.
4658   --
4659   -- NOTES
4660   --
4661   -- MODIFICATION HISTORY
4662   --
4663   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added to support
4664   --                                     enhanced backward compatibility.
4665   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
4666   --                                     status and message data getting set
4667   --                                     incorrectly in update and create
4668   --                                     contact point APIs.
4669   --
4670 
4671   PROCEDURE update_edi_contact_point (
4672     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
4673     p_contact_point_rec         IN     contact_point_rec_type,
4674     p_edi_rec                   IN     edi_rec_type := g_miss_edi_rec,
4675     p_object_version_number     IN OUT NOCOPY NUMBER,
4676     x_return_status             OUT NOCOPY    VARCHAR2,
4677     x_msg_count                 OUT NOCOPY    NUMBER,
4678     x_msg_data                  OUT NOCOPY    VARCHAR2
4679   ) IS
4680   l_debug_prefix                       VARCHAR2(30) := '';
4681   BEGIN
4682     -- Standard start of API savepoint
4683     SAVEPOINT update_edi_contact_point;
4684 
4685     -- Check if API is called in debug mode. If yes, enable debug.
4686     --enable_debug;
4687 
4688     -- Debug info.
4689     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4693     END IF;
4690         hz_utility_v2pub.debug(p_message=>'update_edi_contact_point (+)',
4691                                p_prefix=>l_debug_prefix,
4692                                p_msg_level=>fnd_log.level_procedure);
4694 
4695     -- call main business logic.
4696     update_contact_point_main(
4697       p_init_msg_list           => p_init_msg_list,
4698       p_contact_point_rec       => p_contact_point_rec,
4699       p_edi_rec                 => p_edi_rec,
4700       p_object_version_number   => p_object_version_number,
4701       x_return_status           => x_return_status,
4702       x_msg_count               => x_msg_count,
4703       x_msg_data                => x_msg_data
4704     );
4705 
4706     -- Debug info.
4707     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4708          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4709                                p_msg_data=>x_msg_data,
4710                                p_msg_type=>'WARNING',
4711                                p_msg_level=>fnd_log.level_exception);
4712     END IF;
4713     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4714         hz_utility_v2pub.debug(p_message=>'update_edi_contact_point (-)',
4715                                p_prefix=>l_debug_prefix,
4716                                p_msg_level=>fnd_log.level_procedure);
4717     END IF;
4718 
4719     -- Check if API is called in debug mode. If yes, disable debug.
4720     --disable_debug;
4721 
4722   EXCEPTION
4723     WHEN fnd_api.g_exc_error THEN
4724       ROLLBACK TO update_edi_contact_point;
4725       x_return_status := fnd_api.g_ret_sts_error;
4726 
4727       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4728                                 p_count => x_msg_count,
4729                                 p_data  => x_msg_data);
4730 
4731       -- Debug info.
4732      IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4733         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4734                                p_msg_data=>x_msg_data,
4735                                p_msg_type=>'ERROR',
4736                                p_msg_level=>fnd_log.level_error);
4737      END IF;
4738      IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4739         hz_utility_v2pub.debug(p_message=>'update_edi_contact_point (-)',
4740                                p_prefix=>l_debug_prefix,
4741                                p_msg_level=>fnd_log.level_procedure);
4742      END IF;
4743 
4744       -- Check if API is called in debug mode. If yes, disable debug.
4745       --disable_debug;
4746 
4747     WHEN fnd_api.g_exc_unexpected_error THEN
4748       ROLLBACK TO update_edi_contact_point;
4749       x_return_status := fnd_api.g_ret_sts_unexp_error;
4750 
4751       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4752                                 p_count => x_msg_count,
4753                                 p_data  => x_msg_data);
4754 
4755       -- Debug info.
4756       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4757         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4758                                p_msg_data=>x_msg_data,
4759                                p_msg_type=>'UNEXPECTED ERROR',
4760                                p_msg_level=>fnd_log.level_error);
4761       END IF;
4762       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4763         hz_utility_v2pub.debug(p_message=>'update_edi_contact_point (-)',
4764                                p_prefix=>l_debug_prefix,
4765                                p_msg_level=>fnd_log.level_procedure);
4766       END IF;
4767 
4768       -- Check if API is called in debug mode. If yes, disable debug.
4769       --disable_debug;
4770 
4771     WHEN OTHERS THEN
4772       ROLLBACK TO update_edi_contact_point;
4773       x_return_status := fnd_api.g_ret_sts_unexp_error;
4774 
4775       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4776       fnd_message.set_token('ERROR' ,SQLERRM);
4777       fnd_msg_pub.add;
4778 
4779       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4780                                 p_count => x_msg_count,
4781                                 p_data  => x_msg_data);
4782 
4783       -- Debug info.
4784       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4785         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4786                                p_msg_data=>x_msg_data,
4787                                p_msg_type=>'SQL ERROR',
4788                                p_msg_level=>fnd_log.level_error);
4789       END IF;
4790       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4791         hz_utility_v2pub.debug(p_message=>'update_edi_contact_point (-)',
4792                                p_prefix=>l_debug_prefix,
4793                                p_msg_level=>fnd_log.level_procedure);
4794       END IF;
4795 
4796       -- Check if API is called in debug mode. If yes, disable debug.
4797       --disable_debug;
4798   END update_edi_contact_point;
4799 
4800   --
4801   -- PROCEDURE update_web_contact_point
4802   --
4803   -- DESCRIPTION
4804   --     Updates the given Web contact point.
4805   --
4806   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4807   --
4808   -- ARGUMENTS
4809   --   IN:
4810   --     p_init_msg_list          Initialize message stack if it is set to
4811   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
4812   --     p_contact_point_rec      Contact point record.
4813   --     p_web_rec                WEB record.
4814   --   IN/OUT:
4815   --     p_object_version_number  Used for locking the being updated record.
4816   --   OUT:
4817   --     x_return_status          Return status after the call. The status can
4821   --     x_msg_count              Number of messages in message stack.
4818   --                              be fnd_api.g_ret_sts_success (success),
4819   --                              fnd_api.g_ret_sts_error (error),
4820   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4825   --
4822   --     x_msg_data               Message text if x_msg_count is 1.
4823   --
4824   -- NOTES
4826   -- MODIFICATION HISTORY
4827   --
4828   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added to support
4829   --                                     enhanced backward compatibility.
4830   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
4831   --                                     status and message data getting set
4832   --                                     incorrectly in update and create
4833   --                                     contact point APIs.
4834   --
4835 
4836   PROCEDURE update_web_contact_point (
4837     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
4838     p_contact_point_rec         IN     contact_point_rec_type,
4839     p_web_rec                   IN     web_rec_type := g_miss_web_rec,
4840     p_object_version_number     IN OUT NOCOPY NUMBER,
4841     x_return_status             OUT NOCOPY    VARCHAR2,
4842     x_msg_count                 OUT NOCOPY    NUMBER,
4843     x_msg_data                  OUT NOCOPY    VARCHAR2
4844   ) IS
4845   l_debug_prefix                VARCHAR2(30) := '';
4846   BEGIN
4847     -- Standard start of API savepoint
4848     SAVEPOINT update_web_contact_point;
4849 
4850     -- Check if API is called in debug mode. If yes, enable debug.
4851     --enable_debug;
4852 
4853     -- Debug info.
4854     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4855         hz_utility_v2pub.debug(p_message=>'update_web_contact_point (+)',
4856                                p_prefix=>l_debug_prefix,
4857                                p_msg_level=>fnd_log.level_procedure);
4858     END IF;
4859 
4860     -- call main business logic.
4861     update_contact_point_main(
4862       p_init_msg_list           => p_init_msg_list,
4863       p_contact_point_rec       => p_contact_point_rec,
4864       p_web_rec                 => p_web_rec,
4865       p_object_version_number   => p_object_version_number,
4866       x_return_status           => x_return_status,
4867       x_msg_count               => x_msg_count,
4868       x_msg_data                => x_msg_data
4869     );
4870 
4871       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4872     -- Debug info.
4873     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
4874          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4875                                p_msg_data=>x_msg_data,
4876                                p_msg_type=>'WARNING',
4877                                p_msg_level=>fnd_log.level_exception);
4878     END IF;
4879     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4880         hz_utility_v2pub.debug(p_message=>'update_web_contact_point (-)',
4881                                p_prefix=>l_debug_prefix,
4882                                p_msg_level=>fnd_log.level_procedure);
4883     END IF;
4884 
4885     -- Check if API is called in debug mode. If yes, disable debug.
4886     --disable_debug;
4887 
4888   EXCEPTION
4889     WHEN fnd_api.g_exc_error THEN
4890       ROLLBACK TO update_web_contact_point;
4891       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4892       x_return_status := fnd_api.g_ret_sts_error;
4893 
4894       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4895                                 p_count => x_msg_count,
4896                                 p_data  => x_msg_data);
4897 
4898       -- Debug info.
4899       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4900         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4901                                p_msg_data=>x_msg_data,
4902                                p_msg_type=>'ERROR',
4903                                p_msg_level=>fnd_log.level_error);
4904       END IF;
4905       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4906         hz_utility_v2pub.debug(p_message=>'update_web_contact_point (-)',
4907                                p_prefix=>l_debug_prefix,
4908                                p_msg_level=>fnd_log.level_procedure);
4909       END IF;
4910 
4911       -- Check if API is called in debug mode. If yes, disable debug.
4912       --disable_debug;
4913 
4914     WHEN fnd_api.g_exc_unexpected_error THEN
4915       ROLLBACK TO update_web_contact_point;
4916       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4917       x_return_status := fnd_api.g_ret_sts_unexp_error;
4918 
4919       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4920                                 p_count => x_msg_count,
4924       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4921                                 p_data  => x_msg_data);
4922 
4923       -- Debug info.
4925         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4926                                p_msg_data=>x_msg_data,
4927                                p_msg_type=>'UNEXPECTED ERROR',
4928                                p_msg_level=>fnd_log.level_error);
4929       END IF;
4930       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4931         hz_utility_v2pub.debug(p_message=>'update_web_contact_point (-)',
4932                                p_prefix=>l_debug_prefix,
4933                                p_msg_level=>fnd_log.level_procedure);
4934       END IF;
4935 
4936 
4937       -- Check if API is called in debug mode. If yes, disable debug.
4938       --disable_debug;
4939 
4940     WHEN OTHERS THEN
4941       ROLLBACK TO update_web_contact_point;
4942       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
4943       x_return_status := fnd_api.g_ret_sts_unexp_error;
4944 
4945       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
4946       fnd_message.set_token('ERROR' ,SQLERRM);
4947       fnd_msg_pub.add;
4948 
4949       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
4950                                 p_count => x_msg_count,
4951                                 p_data  => x_msg_data);
4952 
4953       -- Debug info.
4954       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
4955         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
4956                                p_msg_data=>x_msg_data,
4957                                p_msg_type=>'SQL ERROR',
4958                                p_msg_level=>fnd_log.level_error);
4959       END IF;
4960       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4961         hz_utility_v2pub.debug(p_message=>'update_web_contact_point (-)',
4962                                p_prefix=>l_debug_prefix,
4963                                p_msg_level=>fnd_log.level_procedure);
4964       END IF;
4965 
4966       -- Check if API is called in debug mode. If yes, disable debug.
4967       --disable_debug;
4968   END update_web_contact_point;
4969 
4970   --
4974   --     Updates the given EFT contact point.
4971   -- PROCEDURE update_eft_contact_point
4972   --
4973   -- DESCRIPTION
4975   --
4976   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
4977   --
4978   -- ARGUMENTS
4979   --   IN:
4980   --     p_init_msg_list          Initialize message stack if it is set to
4981   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
4982   --     p_contact_point_rec      Contact point record.
4983   --     p_eft_rec                EFT record.
4984   --   IN/OUT:
4985   --     p_object_version_number  Used for locking the being updated record.
4986   --   OUT:
4987   --     x_return_status          Return status after the call. The status can
4988   --                              be fnd_api.g_ret_sts_success (success),
4989   --                              fnd_api.g_ret_sts_error (error),
4990   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
4991   --     x_msg_count              Number of messages in message stack.
4992   --     x_msg_data               Message text if x_msg_count is 1.
4993   --
4994   -- NOTES
4995   --
4996   -- MODIFICATION HISTORY
4997   --
4998   --   19-NOV-2001   Joe del Callar      Bug 2116225: Added to support
4999   --                                     Bank Consolidation.
5000   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added to support
5001   --                                     enhanced backward compatibility.
5002   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
5003   --                                     status and message data getting set
5004   --                                     incorrectly in update and create
5005   --                                     contact point APIs.
5006   --
5007 
5008   PROCEDURE update_eft_contact_point (
5009     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
5010     p_contact_point_rec         IN     contact_point_rec_type,
5011     p_eft_rec                   IN     eft_rec_type := g_miss_eft_rec,
5012     p_object_version_number     IN OUT NOCOPY NUMBER,
5013     x_return_status             OUT NOCOPY    VARCHAR2,
5014     x_msg_count                 OUT NOCOPY    NUMBER,
5015     x_msg_data                  OUT NOCOPY    VARCHAR2
5016   ) IS
5017   l_debug_prefix                       VARCHAR2(30) := '';
5018   BEGIN
5019     -- Standard start of API savepoint
5020     SAVEPOINT update_eft_contact_point;
5021 
5022     -- Check if API is called in debug mode. If yes, enable debug.
5023     --enable_debug;
5024 
5025     -- Debug info.
5026     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5030     END IF;
5027         hz_utility_v2pub.debug(p_message=>'update_eft_contact_point (+)',
5028                                p_prefix=>l_debug_prefix,
5029                                p_msg_level=>fnd_log.level_procedure);
5031 
5032 
5033     -- call main business logic.
5034     update_contact_point_main(
5035       p_init_msg_list           => p_init_msg_list,
5036       p_contact_point_rec       => p_contact_point_rec,
5037       p_eft_rec                 => p_eft_rec,
5038       p_object_version_number   => p_object_version_number,
5039       x_return_status           => x_return_status,
5040       x_msg_count               => x_msg_count,
5041       x_msg_data                => x_msg_data
5042     );
5043 
5044     -- Debug info.
5045     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
5046          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5047                                p_msg_data=>x_msg_data,
5048                                p_msg_type=>'WARNING',
5049                                p_msg_level=>fnd_log.level_exception);
5050     END IF;
5051     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5052         hz_utility_v2pub.debug(p_message=>'update_eft_contact_point (-)',
5053                                p_prefix=>l_debug_prefix,
5054                                p_msg_level=>fnd_log.level_procedure);
5055     END IF;
5056 
5057     -- Check if API is called in debug mode. If yes, disable debug.
5058     --disable_debug;
5059 
5060   EXCEPTION
5061     WHEN fnd_api.g_exc_error THEN
5062       ROLLBACK TO update_eft_contact_point;
5063       x_return_status := fnd_api.g_ret_sts_error;
5064 
5065       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5066                                 p_count => x_msg_count,
5067                                 p_data  => x_msg_data);
5068 
5069       -- Debug info.
5070       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5071         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5072                                p_msg_data=>x_msg_data,
5073                                p_msg_type=>'ERROR',
5074                                p_msg_level=>fnd_log.level_error);
5075       END IF;
5076       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5077         hz_utility_v2pub.debug(p_message=>'update_eft_contact_point (-)',
5078                                p_prefix=>l_debug_prefix,
5079                                p_msg_level=>fnd_log.level_procedure);
5080       END IF;
5081 
5082       -- Check if API is called in debug mode. If yes, disable debug.
5083       --disable_debug;
5084 
5085     WHEN fnd_api.g_exc_unexpected_error THEN
5086       ROLLBACK TO update_eft_contact_point;
5087       x_return_status := fnd_api.g_ret_sts_unexp_error;
5088 
5089       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5090                                 p_count => x_msg_count,
5091                                 p_data  => x_msg_data);
5092 
5093       -- Debug info.
5094       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5095         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5096                                p_msg_data=>x_msg_data,
5097                                p_msg_type=>'UNEXPECTED ERROR',
5098                                p_msg_level=>fnd_log.level_error);
5099       END IF;
5100       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5101         hz_utility_v2pub.debug(p_message=>'update_eft_contact_point (-)',
5102                                p_prefix=>l_debug_prefix,
5103                                p_msg_level=>fnd_log.level_procedure);
5104       END IF;
5105 
5106       -- Check if API is called in debug mode. If yes, disable debug.
5107       --disable_debug;
5108 
5109     WHEN OTHERS THEN
5110       ROLLBACK TO update_eft_contact_point;
5111       x_return_status := fnd_api.g_ret_sts_unexp_error;
5112 
5113       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
5114       fnd_message.set_token('ERROR' ,SQLERRM);
5115       fnd_msg_pub.add;
5116 
5117       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5121       -- Debug info.
5118                                 p_count => x_msg_count,
5119                                 p_data  => x_msg_data);
5120 
5122       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5123         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5124                                p_msg_data=>x_msg_data,
5125                                p_msg_type=>'SQL ERROR',
5126                                p_msg_level=>fnd_log.level_error);
5127       END IF;
5128       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5129         hz_utility_v2pub.debug(p_message=>'update_eft_contact_point (-)',
5130                                p_prefix=>l_debug_prefix,
5131                                p_msg_level=>fnd_log.level_procedure);
5135       -- Check if API is called in debug mode. If yes, disable debug.
5132       END IF;
5133 
5134 
5136       --disable_debug;
5137   END update_eft_contact_point;
5138 
5139   --
5140   -- PROCEDURE update_phone_contact_point
5141   --
5142   -- DESCRIPTION
5143   --     Updates the given phone contact point.
5144   --
5145   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
5146   --
5147   -- ARGUMENTS
5148   --   IN:
5149   --     p_init_msg_list          Initialize message stack if it is set to
5150   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
5151   --     p_contact_point_rec      Contact point record.
5152   --     p_phone_rec              Phone record.
5153   --   IN/OUT:
5154   --     p_object_version_number  Used for locking the being updated record.
5155   --   OUT:
5156   --     x_return_status          Return status after the call. The status can
5157   --                              be fnd_api.g_ret_sts_success (success),
5158   --                              fnd_api.g_ret_sts_error (error),
5159   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
5160   --     x_msg_count              Number of messages in message stack.
5161   --     x_msg_data               Message text if x_msg_count is 1.
5162   --
5163   -- NOTES
5164   --
5165   -- MODIFICATION HISTORY
5166   --
5167   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added to support
5168   --                                     enhanced backward compatibility.
5169   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
5170   --                                     status and message data getting set
5171   --                                     incorrectly in update and create
5172   --                                     contact point APIs.
5173   --
5174 
5175   PROCEDURE update_phone_contact_point (
5176     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
5177     p_contact_point_rec         IN     contact_point_rec_type,
5178     p_phone_rec                   IN     phone_rec_type := g_miss_phone_rec,
5179     p_object_version_number     IN OUT NOCOPY NUMBER,
5180     x_return_status             OUT NOCOPY    VARCHAR2,
5181     x_msg_count                 OUT NOCOPY    NUMBER,
5182     x_msg_data                  OUT NOCOPY    VARCHAR2
5183   ) IS
5184   l_debug_prefix                       VARCHAR2(30) := '';
5185   BEGIN
5186     -- Standard start of API savepoint
5187     SAVEPOINT update_phone_contact_point;
5188 
5189     -- Check if API is called in debug mode. If yes, enable debug.
5190     --enable_debug;
5191 
5192     -- Debug info.
5193     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5194         hz_utility_v2pub.debug(p_message=>'update_phone_contact_point (+)',
5195                                p_prefix=>l_debug_prefix,
5196                                p_msg_level=>fnd_log.level_procedure);
5197     END IF;
5198 
5199     -- call main business logic.
5200     update_contact_point_main(
5201       p_init_msg_list           => p_init_msg_list,
5202       p_contact_point_rec       => p_contact_point_rec,
5203       p_phone_rec               => p_phone_rec,
5204       p_object_version_number   => p_object_version_number,
5205       x_return_status           => x_return_status,
5206       x_msg_count               => x_msg_count,
5207       x_msg_data                => x_msg_data
5208     );
5209 
5210       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5211     -- Debug info.
5212     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
5213          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5214                                p_msg_data=>x_msg_data,
5215                                p_msg_type=>'WARNING',
5216                                p_msg_level=>fnd_log.level_exception);
5217     END IF;
5218     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5219         hz_utility_v2pub.debug(p_message=>'update_phone_contact_point (-)',
5220                                p_prefix=>l_debug_prefix,
5221                                p_msg_level=>fnd_log.level_procedure);
5222     END IF;
5223 
5224     -- Check if API is called in debug mode. If yes, disable debug.
5225     --disable_debug;
5226 
5227   EXCEPTION
5228     WHEN fnd_api.g_exc_error THEN
5229       ROLLBACK TO update_phone_contact_point;
5230       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5231       x_return_status := fnd_api.g_ret_sts_error;
5232 
5233       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5234                                 p_count => x_msg_count,
5235                                 p_data  => x_msg_data);
5236 
5237       -- Debug info.
5238       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5239         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5240                                p_msg_data=>x_msg_data,
5241                                p_msg_type=>'ERROR',
5242                                p_msg_level=>fnd_log.level_error);
5243       END IF;
5244       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5245         hz_utility_v2pub.debug(p_message=>'update_phone_contact_point (-)',
5246                                p_prefix=>l_debug_prefix,
5247                                p_msg_level=>fnd_log.level_procedure);
5248       END IF;
5249 
5250       -- Check if API is called in debug mode. If yes, disable debug.
5251       --disable_debug;
5252 
5253     WHEN fnd_api.g_exc_unexpected_error THEN
5254       ROLLBACK TO update_phone_contact_point;
5255       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5256       x_return_status := fnd_api.g_ret_sts_unexp_error;
5257 
5258       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5259                                 p_count => x_msg_count,
5260                                 p_data  => x_msg_data);
5261 
5267                                p_msg_level=>fnd_log.level_error);
5262       -- Debug info.
5263       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5264         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5265                                p_msg_data=>x_msg_data,
5266                                p_msg_type=>'UNEXPECTED ERROR',
5268       END IF;
5269       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5270         hz_utility_v2pub.debug(p_message=>'update_phone_contact_point (-)',
5271                                p_prefix=>l_debug_prefix,
5272                                p_msg_level=>fnd_log.level_procedure);
5273       END IF;
5274 
5275       -- Check if API is called in debug mode. If yes, disable debug.
5276       --disable_debug;
5277 
5278     WHEN OTHERS THEN
5279       ROLLBACK TO update_phone_contact_point;
5280       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5281       x_return_status := fnd_api.g_ret_sts_unexp_error;
5282 
5283       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
5284       fnd_message.set_token('ERROR' ,SQLERRM);
5285       fnd_msg_pub.add;
5286 
5287       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5288                                 p_count => x_msg_count,
5289                                 p_data  => x_msg_data);
5290 
5291       -- Debug info.
5292       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5293         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5294                                p_msg_data=>x_msg_data,
5295                                p_msg_type=>'SQL ERROR',
5296                                p_msg_level=>fnd_log.level_error);
5297       END IF;
5298       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5299         hz_utility_v2pub.debug(p_message=>'update_phone_contact_point (-)',
5300                                p_prefix=>l_debug_prefix,
5301                                p_msg_level=>fnd_log.level_procedure);
5302       END IF;
5303 
5304       -- Check if API is called in debug mode. If yes, disable debug.
5305       --disable_debug;
5306   END update_phone_contact_point;
5307 
5308   --
5309   -- PROCEDURE update_telex_contact_point
5310   --
5311   -- DESCRIPTION
5312   --     Updates the given telex contact point.
5313   --
5314   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
5315   --
5316   -- ARGUMENTS
5317   --   IN:
5318   --     p_init_msg_list          Initialize message stack if it is set to
5319   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
5320   --     p_contact_point_rec      Contact point record.
5321   --     p_telex_rec              Telex record.
5322   --   IN/OUT:
5323   --     p_object_version_number  Used for locking the being updated record.
5324   --   OUT:
5325   --     x_return_status          Return status after the call. The status can
5326   --                              be fnd_api.g_ret_sts_success (success),
5327   --                              fnd_api.g_ret_sts_error (error),
5328   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
5329   --     x_msg_count              Number of messages in message stack.
5330   --     x_msg_data               Message text if x_msg_count is 1.
5331   --
5332   -- NOTES
5333   --
5334   -- MODIFICATION HISTORY
5335   --
5336   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added to support
5337   --                                     enhanced backward compatibility.
5338   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
5339   --                                     status and message data getting set
5340   --                                     incorrectly in update and create
5341   --                                     contact point APIs.
5342   --
5343 
5344   PROCEDURE update_telex_contact_point (
5345     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
5346     p_contact_point_rec         IN     contact_point_rec_type,
5347     p_telex_rec                   IN     telex_rec_type := g_miss_telex_rec,
5348     p_object_version_number     IN OUT NOCOPY NUMBER,
5349     x_return_status             OUT NOCOPY    VARCHAR2,
5350     x_msg_count                 OUT NOCOPY    NUMBER,
5351     x_msg_data                  OUT NOCOPY    VARCHAR2
5352   ) IS
5353   l_debug_prefix                       VARCHAR2(30) := '';
5354   BEGIN
5355     -- Standard start of API savepoint
5356     SAVEPOINT update_telex_contact_point;
5357 
5358     -- Check if API is called in debug mode. If yes, enable debug.
5359     --enable_debug;
5360 
5361     -- Debug info.
5362     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5363         hz_utility_v2pub.debug(p_message=>'update_telex_contact_point (+)',
5364                                p_prefix=>l_debug_prefix,
5365                                p_msg_level=>fnd_log.level_procedure);
5366     END IF;
5367 
5371       p_contact_point_rec       => p_contact_point_rec,
5368     -- call main business logic.
5369     update_contact_point_main(
5370       p_init_msg_list           => p_init_msg_list,
5372       p_telex_rec               => p_telex_rec,
5373       p_object_version_number   => p_object_version_number,
5374       x_return_status           => x_return_status,
5375       x_msg_count               => x_msg_count,
5376       x_msg_data                => x_msg_data
5377     );
5378 
5379       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5380     -- Debug info.
5381     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
5382          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5383                                p_msg_data=>x_msg_data,
5384                                p_msg_type=>'WARNING',
5385                                p_msg_level=>fnd_log.level_exception);
5386     END IF;
5387     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5388         hz_utility_v2pub.debug(p_message=>'update_telex_contact_point (-)',
5389                                p_prefix=>l_debug_prefix,
5390                                p_msg_level=>fnd_log.level_procedure);
5391     END IF;
5392 
5393 
5394     -- Check if API is called in debug mode. If yes, disable debug.
5395     --disable_debug;
5396 
5397   EXCEPTION
5398     WHEN fnd_api.g_exc_error THEN
5399       ROLLBACK TO update_telex_contact_point;
5400       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5401       x_return_status := fnd_api.g_ret_sts_error;
5402 
5403       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5404                                 p_count => x_msg_count,
5405                                 p_data  => x_msg_data);
5406 
5407       -- Debug info.
5408       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5409         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5410                                p_msg_data=>x_msg_data,
5411                                p_msg_type=>'ERROR',
5412                                p_msg_level=>fnd_log.level_error);
5416                                p_prefix=>l_debug_prefix,
5413       END IF;
5414       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5415         hz_utility_v2pub.debug(p_message=>'update_telex_contact_point (-)',
5417                                p_msg_level=>fnd_log.level_procedure);
5418       END IF;
5419 
5420 
5421 
5422       -- Check if API is called in debug mode. If yes, disable debug.
5423       --disable_debug;
5424 
5425     WHEN fnd_api.g_exc_unexpected_error THEN
5426       ROLLBACK TO update_telex_contact_point;
5427       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5428       x_return_status := fnd_api.g_ret_sts_unexp_error;
5429 
5430       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5431                                 p_count => x_msg_count,
5432                                 p_data  => x_msg_data);
5433 
5434       -- Debug info.
5435       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5436         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5437                                p_msg_data=>x_msg_data,
5438                                p_msg_type=>'UNEXPECTED ERROR',
5439                                p_msg_level=>fnd_log.level_error);
5440       END IF;
5441       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5442         hz_utility_v2pub.debug(p_message=>'update_telex_contact_point (-)',
5443                                p_prefix=>l_debug_prefix,
5444                                p_msg_level=>fnd_log.level_procedure);
5445       END IF;
5446 
5447       -- Check if API is called in debug mode. If yes, disable debug.
5448       --disable_debug;
5449 
5450     WHEN OTHERS THEN
5451       ROLLBACK TO update_telex_contact_point;
5452       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5453       x_return_status := fnd_api.g_ret_sts_unexp_error;
5454 
5455       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
5456       fnd_message.set_token('ERROR' ,SQLERRM);
5457       fnd_msg_pub.add;
5458 
5459       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5460                                 p_count => x_msg_count,
5461                                 p_data  => x_msg_data);
5462 
5463       -- Debug info.
5464       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5465         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5466                                p_msg_data=>x_msg_data,
5467                                p_msg_type=>'SQL ERROR',
5468                                p_msg_level=>fnd_log.level_error);
5469       END IF;
5470       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5471         hz_utility_v2pub.debug(p_message=>'update_telex_contact_point (-)',
5472                                p_prefix=>l_debug_prefix,
5473                                p_msg_level=>fnd_log.level_procedure);
5477       --disable_debug;
5474       END IF;
5475 
5476       -- Check if API is called in debug mode. If yes, disable debug.
5478   END update_telex_contact_point;
5479 
5480   --
5481   -- PROCEDURE update_email_contact_point
5482   --
5483   -- DESCRIPTION
5484   --     Updates the given email contact point.
5485   --
5486   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
5487   --
5488   -- ARGUMENTS
5489   --   IN:
5490   --     p_init_msg_list          Initialize message stack if it is set to
5491   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
5492   --     p_contact_point_rec      Contact point record.
5493   --     p_email_rec              Email record.
5494   --   IN/OUT:
5495   --     p_object_version_number  Used for locking the being updated record.
5496   --   OUT:
5497   --     x_return_status          Return status after the call. The status can
5498   --                              be fnd_api.g_ret_sts_success (success),
5499   --                              fnd_api.g_ret_sts_error (error),
5500   --                              FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
5501   --     x_msg_count              Number of messages in message stack.
5502   --     x_msg_data               Message text if x_msg_count is 1.
5503   --
5504   -- NOTES
5505   --
5506   -- MODIFICATION HISTORY
5507   --
5508   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added to support
5509   --                                     enhanced backward compatibility.
5510   --   04-FEB-2001   Joe del Callar      Bug 2211876: Fixed issue with error
5511   --                                     status and message data getting set
5512   --                                     incorrectly in update and create
5513   --                                     contact point APIs.
5514   --
5515 
5516   PROCEDURE update_email_contact_point (
5517     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
5518     p_contact_point_rec         IN     contact_point_rec_type,
5519     p_email_rec                 IN     email_rec_type := g_miss_email_rec,
5520     p_object_version_number     IN OUT NOCOPY NUMBER,
5521     x_return_status             OUT NOCOPY    VARCHAR2,
5522     x_msg_count                 OUT NOCOPY    NUMBER,
5523     x_msg_data                  OUT NOCOPY    VARCHAR2
5524   ) IS
5525   l_debug_prefix                       VARCHAR2(30) := '';
5526   BEGIN
5527     -- Standard start of API savepoint
5528     SAVEPOINT update_email_contact_point;
5529 
5530     -- Check if API is called in debug mode. If yes, enable debug.
5531     --enable_debug;
5532 
5533     -- Debug info.
5534     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5535         hz_utility_v2pub.debug(p_message=>'update_email_contact_point (+)',
5536                                p_prefix=>l_debug_prefix,
5537                                p_msg_level=>fnd_log.level_procedure);
5538     END IF;
5539 
5540     -- call main business logic.
5541     update_contact_point_main(
5542       p_init_msg_list           => p_init_msg_list,
5543       p_contact_point_rec       => p_contact_point_rec,
5544       p_email_rec               => p_email_rec,
5545       p_object_version_number   => p_object_version_number,
5546       x_return_status           => x_return_status,
5547       x_msg_count               => x_msg_count,
5548       x_msg_data                => x_msg_data
5549     );
5550 
5551       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5552     -- Debug info.
5553     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
5554          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5555                                p_msg_data=>x_msg_data,
5556                                p_msg_type=>'WARNING',
5557                                p_msg_level=>fnd_log.level_exception);
5558     END IF;
5559     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5560         hz_utility_v2pub.debug(p_message=>'update_email_contact_point (-)',
5564 
5561                                p_prefix=>l_debug_prefix,
5562                                p_msg_level=>fnd_log.level_procedure);
5563     END IF;
5565     -- Check if API is called in debug mode. If yes, disable debug.
5566     --disable_debug;
5567 
5568   EXCEPTION
5569     WHEN fnd_api.g_exc_error THEN
5570       ROLLBACK TO update_email_contact_point;
5571       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5572       x_return_status := fnd_api.g_ret_sts_error;
5573 
5574       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5575                                 p_count => x_msg_count,
5576                                 p_data  => x_msg_data);
5577 
5578       -- Debug info.
5579       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5580         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5584       END IF;
5581                                p_msg_data=>x_msg_data,
5582                                p_msg_type=>'ERROR',
5583                                p_msg_level=>fnd_log.level_error);
5585       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5586         hz_utility_v2pub.debug(p_message=>'update_email_contact_point (-)',
5587                                p_prefix=>l_debug_prefix,
5588                                p_msg_level=>fnd_log.level_procedure);
5589       END IF;
5590 
5591       -- Check if API is called in debug mode. If yes, disable debug.
5592       --disable_debug;
5593 
5594     WHEN fnd_api.g_exc_unexpected_error THEN
5595       ROLLBACK TO update_email_contact_point;
5596       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5597       x_return_status := fnd_api.g_ret_sts_unexp_error;
5598 
5599       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5600                                 p_count => x_msg_count,
5601                                 p_data  => x_msg_data);
5602 
5603       -- Debug info.
5604       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5605         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5606                                p_msg_data=>x_msg_data,
5607                                p_msg_type=>'UNEXPECTED ERROR',
5608                                p_msg_level=>fnd_log.level_error);
5609       END IF;
5610       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5611         hz_utility_v2pub.debug(p_message=>'update_email_contact_point (-)',
5612                                p_prefix=>l_debug_prefix,
5613                                p_msg_level=>fnd_log.level_procedure);
5614       END IF;
5615 
5616       -- Check if API is called in debug mode. If yes, disable debug.
5617       --disable_debug;
5618 
5619     WHEN OTHERS THEN
5620       ROLLBACK TO update_email_contact_point;
5621       HZ_UTILITY_V2PUB.G_UPDATE_ACS := NULL;
5622       x_return_status := fnd_api.g_ret_sts_unexp_error;
5623 
5624       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
5625       fnd_message.set_token('ERROR' ,SQLERRM);
5626       fnd_msg_pub.add;
5627 
5628       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5629                                 p_count => x_msg_count,
5630                                 p_data  => x_msg_data);
5631 
5632       -- Debug info.
5633       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5634         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5635                                p_msg_data=>x_msg_data,
5636                                p_msg_type=>'SQL ERROR',
5637                                p_msg_level=>fnd_log.level_error);
5638       END IF;
5639       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5640         hz_utility_v2pub.debug(p_message=>'update_email_contact_point (-)',
5641                                p_prefix=>l_debug_prefix,
5642                                p_msg_level=>fnd_log.level_procedure);
5643       END IF;
5644 
5645       -- Check if API is called in debug mode. If yes, disable debug.
5646       --disable_debug;
5647   END update_email_contact_point;
5648 
5649   --
5650   -- PROCEDURE phone_format
5651   --
5652   -- DESCRIPTION
5653   --      formats a phone number
5654   --
5655   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
5656   --
5657   -- ARGUMENTS
5658   --   IN:
5659   --     p_init_msg_list          Initialize message stack if it is set to
5660   --                              FND_API.G_TRUE. Default is fnd_api.g_false.
5661   --     p_raw_phone_number       Raw phone number.
5662   --     p_territory_code         Territory code.
5663   --   IN/OUT:
5664   --     x_phone_country_code     Phone country code.
5665   --     x_phone_area_code        Phone area code.
5666   --     x_phone_number           Phone number.
5667   --   OUT:
5668   --     x_formatted_phone_number Formatted phone number.
5669   --     x_return_status          Return status after the call. The status can
5670   --                              be fnd_api.g_ret_sts_success (success),
5671   --                              fnd_api.g_ret_sts_error (error),
5672   --                              fnd_api.g_ret_sts_unexp_error (unexpected error).
5673   --     x_msg_count              Number of messages in message stack.
5674   --     x_msg_data               Message text if x_msg_count is 1.
5675   --
5676   -- NOTES
5677   --
5678   -- MODIFICATION HISTORY
5679   --
5680   --   07-23-2001    Jianying Huang      o Created.
5681   --   02-05-2002    Jyoti Pandey        o Modified the parsing and formatting
5682   --                                       logic for Phone Normalization and Parsing
5683   --                                       project in version 115.9
5684   --
5685   --
5686 
5687   PROCEDURE phone_format (
5688     p_init_msg_list                     IN     VARCHAR2 := fnd_api.g_false,
5689     p_raw_phone_number                  IN     VARCHAR2 := fnd_api.g_miss_char,
5690     p_territory_code                    IN     VARCHAR2 := fnd_api.g_miss_char,
5691     x_formatted_phone_number            OUT NOCOPY    VARCHAR2,
5692     x_phone_country_code                IN OUT NOCOPY VARCHAR2,
5693     x_phone_area_code                   IN OUT NOCOPY VARCHAR2,
5694     x_phone_number                      IN OUT NOCOPY VARCHAR2,
5695     x_return_status                     OUT NOCOPY    VARCHAR2,
5696     x_msg_count                         OUT NOCOPY    NUMBER,
5697     x_msg_data                          OUT NOCOPY    VARCHAR2
5698   ) IS
5699     l_formatted_phone_number            VARCHAR2(100);
5700     l_phone_area_code                   VARCHAR2(30);
5701     l_phone_number                      VARCHAR2(30);
5702     l_phone_format_style                VARCHAR2(100);
5703     l_raw_phone_number                  VARCHAR2(100);
5704     l_phone_country_code                VARCHAR2(100);
5710     l_territory_code                    VARCHAR2(30) := NULL;
5705     l_format_raw_phone                  BOOLEAN := FALSE;
5706     l_format_area_phone                 BOOLEAN := FALSE;
5707     l_include_country_code              BOOLEAN;
5708     l_area_code_size                    NUMBER;
5709     l_msg_name                          VARCHAR2(50) := NULL;
5711     x_mobile_flag                       VARCHAR2(1)  := NULL;
5712 
5713     CURSOR c_territory(p_country_code VARCHAR2) IS
5714       SELECT territory_code
5715       FROM   hz_phone_country_codes
5716       WHERE  phone_country_code = p_country_code;
5717 
5718     l_debug_prefix                     VARCHAR2(30) := '';
5719 
5720   BEGIN
5721     -- Check if API is called in debug mode. If yes, enable debug.
5722     --enable_debug;
5723 
5724     -- Debug info.
5725     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5726         hz_utility_v2pub.debug(p_message=>'phone_format (+)',
5727                                p_prefix=>l_debug_prefix,
5728                                p_msg_level=>fnd_log.level_procedure);
5729     END IF;
5730 
5731     -- Initialize message list if p_init_msg_list is set to TRUE.
5732     IF fnd_api.to_boolean(p_init_msg_list) THEN
5733       fnd_msg_pub.initialize;
5734     END IF;
5735 
5736     -- Initialize API return status to success.
5737     x_return_status := fnd_api.g_ret_sts_success;
5738 
5739     -- Check if raw phone number is to be formatted
5740     IF p_raw_phone_number IS NOT NULL AND
5741        p_raw_phone_number <> fnd_api.g_miss_char THEN
5742       l_format_raw_phone := TRUE;
5743     END IF;
5744 
5745     -- Or Check if the area_code/phone number combination is to be formatted
5746     IF ((x_phone_number IS NOT NULL AND
5747            x_phone_number <> fnd_api.g_miss_char) OR
5748          (x_phone_area_code IS NOT NULL AND
5749            x_phone_area_code <> fnd_api.g_miss_char))
5750     THEN
5751       l_format_area_phone := TRUE;
5752     END IF;
5753 
5754     -- If neither need to be formatted or both need to be
5755     -- formatted, error out NOCOPY
5756     IF (l_format_raw_phone AND l_format_area_phone) OR
5757        (NOT l_format_raw_phone AND NOT l_format_area_phone)
5758     THEN
5759       fnd_message.set_name('AR', 'HZ_INVALID_PHONE_PARAMETER');
5760       fnd_msg_pub.add;
5761       RAISE fnd_api.g_exc_error;
5762     END IF;
5763 
5764     -- If not format a raw phone number, then create a raw phone
5765     -- number by appending the area code and phone number. This will
5766     -- allow use of common logic for both
5767 
5768     IF l_format_raw_phone THEN
5769        l_raw_phone_number := p_raw_phone_number;
5770     ELSIF l_format_area_phone THEN
5771       IF x_phone_area_code IS NULL OR
5772          x_phone_area_code = fnd_api.g_miss_char THEN
5773         l_raw_phone_number := filter_phone_number(x_phone_number);
5774       ELSE
5775         l_raw_phone_number := filter_phone_number(x_phone_area_code ||
5776                                                    x_phone_number);
5777       END IF;
5778     END IF;
5779 
5780     -- If Country code has been passed query the territory code for the
5781     -- country. If country code has not been passed, use territory_code.
5782 
5783     IF x_phone_country_code IS NOT NULL AND
5784        x_phone_country_code <> fnd_api.g_miss_char
5785     THEN
5786       OPEN c_territory(x_phone_country_code);
5787       FETCH c_territory INTO l_territory_code;
5788       IF c_territory%NOTFOUND THEN
5789         l_territory_code := NULL;
5790       END IF;
5791       CLOSE c_territory;
5792     ELSIF p_territory_code IS NOT NULL AND
5793           p_territory_code <> fnd_api.g_miss_char THEN
5794       l_territory_code := p_territory_code;
5795     ELSE
5796       l_territory_code := NULL;
5797     END IF;
5798 
5799    --Following commented code is replaced by parsing and displaying logic in
5800    --HZ_FORMAT_PHONE_V2PUB's phone_parse and phone_display. This was done in
5801    -- version 115.9 for Phone normalization and parsing project
5802 
5803    --Call to phone_parse to get parsed components
5804     HZ_FORMAT_PHONE_V2PUB.phone_parse (
5805     fnd_api.g_true      ,
5806     l_raw_phone_number  ,
5807     p_territory_code ,
5808     x_phone_country_code  ,
5809     x_phone_area_code    ,
5810     x_phone_number  ,
5811     x_mobile_flag ,
5812     x_return_status,
5813     x_msg_count,
5814     x_msg_data);
5815 
5816     --Parsed components are i/p to phone_display to get formateed number
5817     HZ_FORMAT_PHONE_V2PUB.phone_display(
5818     fnd_api.g_true                   ,
5819     p_territory_code,
5820     x_phone_country_code     ,
5821     x_phone_area_code        ,
5822     x_phone_number           ,
5823     x_formatted_phone_number ,
5824     x_return_status                  ,
5825     x_msg_count                 ,
5829    | IF l_territory_code IS NULL THEN
5826     x_msg_data                  );
5827 
5828    /* -- Cannot get territory code, error out NOCOPY
5830    |   fnd_message.set_name('AR', 'HZ_COUNTRY_CODE_NOT_DEFINED');
5831    |   fnd_msg_pub.add;
5832    |   RAISE fnd_api.g_exc_error;
5833    | END IF;
5834    |
5835    | -- Call subroutine to get the format style to be applied for the given
5836    | -- raw phone number and territory
5837    | get_phone_format(
5838    |   p_raw_phone_number                      => l_raw_phone_number,
5839    |   p_territory_code                        => l_territory_code,
5840    |   p_area_code                             => x_phone_area_code,
5841    |   x_phone_country_code                    => l_phone_country_code,
5842    |   x_phone_format_style                    => l_phone_format_style,
5843    |   x_area_code_size                        => l_area_code_size,
5844    |   x_include_country_code                  => l_include_country_code,
5845    |   x_msg                                   => l_msg_name);
5846    |
5847    | -- Check for errors in identifying format style
5848    | IF l_msg_name IS NOT NULL THEN
5849    |   fnd_message.set_name('AR', l_msg_name);
5850    |   fnd_msg_pub.add;
5851    |   RAISE fnd_api.g_exc_error;
5852    | END IF;
5853    |
5854    | -- Apply the format style and get translated number
5855    | translate_raw_phone_number (
5856    |   p_raw_phone_number                     => l_raw_phone_number,
5857    |   p_phone_format_style                   => l_phone_format_style,
5858    |   p_area_code_size                       => l_area_code_size,
5859    |   x_formatted_phone_number               => l_formatted_phone_number,
5860    |   x_phone_area_code                      => l_phone_area_code,
5861    |   x_phone_number                         => l_phone_number);
5862    |
5863    | -- Append country code if desired
5864    | IF l_include_country_code THEN
5868    |   x_formatted_phone_number := l_formatted_phone_number;
5865    |   x_formatted_phone_number := '+' || l_phone_country_code ||
5866    |                               ' ' || l_formatted_phone_number;
5867    | ELSE
5869    | END IF;
5870    |
5871    | -- Set the seperated area code and phone number for return
5872    | IF l_format_raw_phone THEN
5873    |   x_phone_area_code := l_phone_area_code;
5874    |   x_phone_number := l_phone_number;
5875    | END IF;
5876    |
5877    | x_phone_country_code := l_phone_country_code; */
5878 
5879     -- Standard call to get message count and if count is 1, get message info.
5880     fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5881                               p_count => x_msg_count,
5882                               p_data  => x_msg_data);
5883 
5884     -- Debug info.
5885     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
5886          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5887                                p_msg_data=>x_msg_data,
5888                                p_msg_type=>'WARNING',
5889                                p_msg_level=>fnd_log.level_exception);
5890     END IF;
5891     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5892         hz_utility_v2pub.debug(p_message=>'phone_format (-)',
5893                                p_prefix=>l_debug_prefix,
5894                                p_msg_level=>fnd_log.level_procedure);
5895     END IF;
5896 
5897     -- Check if API is called in debug mode. If yes, disable debug.
5898     --disable_debug;
5899 
5900   EXCEPTION
5901     WHEN fnd_api.g_exc_error THEN
5902       x_return_status := fnd_api.g_ret_sts_error;
5903 
5904       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5905                                 p_count => x_msg_count,
5906                                 p_data  => x_msg_data);
5907 
5908       -- Debug info.
5909       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5910         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5911                                p_msg_data=>x_msg_data,
5912                                p_msg_type=>'ERROR',
5913                                p_msg_level=>fnd_log.level_error);
5914       END IF;
5915       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5916         hz_utility_v2pub.debug(p_message=>'phone_format (-)',
5917                                p_prefix=>l_debug_prefix,
5918                                p_msg_level=>fnd_log.level_procedure);
5919       END IF;
5920 
5921       -- Check if API is called in debug mode. If yes, disable debug.
5922       --disable_debug;
5923 
5924     WHEN fnd_api.g_exc_unexpected_error THEN
5925       x_return_status := fnd_api.g_ret_sts_unexp_error;
5926 
5927       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5928                                 p_count => x_msg_count,
5929                                 p_data  => x_msg_data);
5930 
5934                                p_msg_data=>x_msg_data,
5931       -- Debug info.
5932       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5933         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5935                                p_msg_type=>'UNEXPECTED ERROR',
5936                                p_msg_level=>fnd_log.level_error);
5937       END IF;
5938       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5939         hz_utility_v2pub.debug(p_message=>'phone_format (-)',
5940                                p_prefix=>l_debug_prefix,
5941                                p_msg_level=>fnd_log.level_procedure);
5942       END IF;
5943 
5944       -- Check if API is called in debug mode. If yes, disable debug.
5945       --disable_debug;
5946 
5947     WHEN OTHERS THEN
5948       x_return_status := fnd_api.g_ret_sts_unexp_error;
5949 
5950       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
5951       fnd_message.set_token('ERROR' ,SQLERRM);
5952       fnd_msg_pub.add;
5953 
5954       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
5955                                 p_count => x_msg_count,
5956                                 p_data  => x_msg_data);
5957 
5958       -- Debug info.
5959       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
5960         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
5961                                p_msg_data=>x_msg_data,
5962                                p_msg_type=>'SQL ERROR',
5963                                p_msg_level=>fnd_log.level_error);
5964       END IF;
5965       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5966         hz_utility_v2pub.debug(p_message=>'phone_format (-)',
5967                                p_prefix=>l_debug_prefix,
5968                                p_msg_level=>fnd_log.level_procedure);
5969       END IF;
5970 
5971       -- Check if API is called in debug mode. If yes, disable debug.
5972       --disable_debug;
5973 
5974   END phone_format;
5975 
5976   --
5977   -- PROCEDURE get_contact_point_rec
5978   --
5979   -- DESCRIPTION
5980   --     Gets contact point record.  Still here for backward compatibility.
5981   --
5982   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
5983   --
5984   -- ARGUMENTS
5985   --   IN:
5986   --     p_init_msg_list      Initialize message stack if it is set to
5987   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
5988   --     p_contact_point_id   Contact point ID.
5989   --   IN/OUT:
5990   --   OUT:
5991   --     x_contact_point_rec  Returned contact point record.
5992   --     x_edi_rec            Returned EDI record.
5993   --     x_email_rec          Returned email record.
5994   --     x_phone_rec          Returned phone record.
5995   --     x_telex_rec          Returned telex record.
5996   --     x_web_rec            Returned web record.
5997   --     x_return_status      Return status after the call. The status can
5998   --                          be fnd_api.g_ret_sts_success (success),
5999   --                          fnd_api.g_ret_sts_error (error),
6000   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
6001   --     x_msg_count          Number of messages in message stack.
6002   --     x_msg_data           Message text if x_msg_count is 1.
6003   --
6004   -- NOTES
6005   --
6006   -- MODIFICATION HISTORY
6007   --
6008   --   07-23-2001    Jianying Huang      o Created.
6009   --   19-NOV-2001   Joe del Callar      Bug 2116225: Added support for
6010   --                                     Bank Consolidation.
6011   --
6012 
6013   PROCEDURE get_contact_point_rec (
6014     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
6015     p_contact_point_id          IN     NUMBER,
6016     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
6017     x_edi_rec                   OUT    NOCOPY edi_rec_type,
6018     x_email_rec                 OUT    NOCOPY email_rec_type,
6019     x_phone_rec                 OUT    NOCOPY phone_rec_type,
6020     x_telex_rec                 OUT    NOCOPY telex_rec_type,
6021     x_web_rec                   OUT    NOCOPY web_rec_type,
6022     x_return_status             OUT NOCOPY    VARCHAR2,
6023     x_msg_count                 OUT NOCOPY    NUMBER,
6024     x_msg_data                  OUT NOCOPY    VARCHAR2
6025   ) IS
6026     l_eft_rec                   eft_rec_type := g_miss_eft_rec;
6027     l_debug_prefix              VARCHAR2(30) := '';
6028   BEGIN
6029 
6030     -- Check if API is called in debug mode. If yes, enable debug.
6031     --enable_debug;
6032 
6033     -- Debug info.
6034     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6035         hz_utility_v2pub.debug(p_message=>'get_contact_point_rec (+)',
6036                                p_prefix=>l_debug_prefix,
6037                                p_msg_level=>fnd_log.level_procedure);
6038     END IF;
6039 
6040     -- Execute main procedure
6041     get_contact_point_main (
6042       p_init_msg_list           => p_init_msg_list,
6043       p_contact_point_id        => p_contact_point_id,
6044       x_contact_point_rec       => x_contact_point_rec,
6045       x_edi_rec                 => x_edi_rec,
6046       x_eft_rec                 => l_eft_rec,
6047       x_email_rec               => x_email_rec,
6048       x_phone_rec               => x_phone_rec,
6049       x_telex_rec               => x_telex_rec,
6050       x_web_rec                 => x_web_rec,
6051       x_return_status           => x_return_status,
6052       x_msg_count               => x_msg_count,
6053       x_msg_data                => x_msg_data
6054     );
6055 
6056     -- Debug info.
6057     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
6058          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6062     END IF;
6059                                p_msg_data=>x_msg_data,
6060                                p_msg_type=>'WARNING',
6061                                p_msg_level=>fnd_log.level_exception);
6063     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6064         hz_utility_v2pub.debug(p_message=>'get_contact_point_rec (-)',
6065                                p_prefix=>l_debug_prefix,
6066                                p_msg_level=>fnd_log.level_procedure);
6067     END IF;
6068 
6069     -- Check if API is called in debug mode. If yes, disable debug.
6070     --disable_debug;
6071 
6072   EXCEPTION
6073     WHEN fnd_api.g_exc_error THEN
6074       x_return_status := fnd_api.g_ret_sts_error;
6075 
6076       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6077                                 p_count => x_msg_count,
6078                                 p_data  => x_msg_data);
6079 
6080       -- Debug info.
6081       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6082         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6083                                p_msg_data=>x_msg_data,
6084                                p_msg_type=>'ERROR',
6085                                p_msg_level=>fnd_log.level_error);
6086       END IF;
6087       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6088         hz_utility_v2pub.debug(p_message=>'get_contact_point_rec (-)',
6089                                p_prefix=>l_debug_prefix,
6090                                p_msg_level=>fnd_log.level_procedure);
6091       END IF;
6092 
6093       -- Check if API is called in debug mode. If yes, disable debug.
6094       --disable_debug;
6095 
6096     WHEN fnd_api.g_exc_unexpected_error THEN
6097       x_return_status := fnd_api.g_ret_sts_unexp_error;
6098 
6099       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6100                                 p_count => x_msg_count,
6101                                 p_data  => x_msg_data);
6102 
6103       -- Debug info.
6104       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6105         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6106                                p_msg_data=>x_msg_data,
6107                                p_msg_type=>'UNEXPECTED ERROR',
6108                                p_msg_level=>fnd_log.level_error);
6109       END IF;
6110       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6111         hz_utility_v2pub.debug(p_message=>'get_contact_point_rec (-)',
6112                                p_prefix=>l_debug_prefix,
6113                                p_msg_level=>fnd_log.level_procedure);
6114       END IF;
6115 
6116       -- Check if API is called in debug mode. If yes, disable debug.
6117       --disable_debug;
6118 
6119     WHEN OTHERS THEN
6120       x_return_status := fnd_api.g_ret_sts_unexp_error;
6121 
6122       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
6123       fnd_message.set_token('ERROR' ,SQLERRM);
6124       fnd_msg_pub.add;
6125 
6126       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6127                                 p_count => x_msg_count,
6128                                 p_data  => x_msg_data);
6129 
6130       -- Debug info.
6131       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6132         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6133                                p_msg_data=>x_msg_data,
6134                                p_msg_type=>'SQL ERROR',
6135                                p_msg_level=>fnd_log.level_error);
6136       END IF;
6137       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6138         hz_utility_v2pub.debug(p_message=>'get_contact_point_rec (-)',
6139                                p_prefix=>l_debug_prefix,
6140                                p_msg_level=>fnd_log.level_procedure);
6141       END IF;
6142 
6143       -- Check if API is called in debug mode. If yes, disable debug.
6144       --disable_debug;
6145   END get_contact_point_rec;
6146 
6147   --
6148   -- PROCEDURE get_edi_contact_point
6149   --
6150   -- DESCRIPTION
6151   --     Gets EDI contact point record.
6152   --
6153   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6154   --
6155   -- ARGUMENTS
6156   --   IN:
6157   --     p_init_msg_list      Initialize message stack if it is set to
6158   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
6159   --     p_contact_point_id   Contact point ID.
6160   --   IN/OUT:
6161   --   OUT:
6162   --     x_contact_point_rec  Returned contact point record.
6163   --     x_edi_rec            Returned EDI record.
6164   --     x_return_status      Return status after the call. The status can
6170   --
6165   --                          be fnd_api.g_ret_sts_success (success),
6166   --                          fnd_api.g_ret_sts_error (error),
6167   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
6168   --     x_msg_count          Number of messages in message stack.
6169   --     x_msg_data           Message text if x_msg_count is 1.
6171   -- NOTES
6172   --
6173   -- MODIFICATION HISTORY
6174   --
6175   --   07-23-2001    Jianying Huang      o Created.
6176   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
6177   --                                     enhanced backward compatibility.
6178   --
6179 
6180   PROCEDURE get_edi_contact_point (
6181     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
6182     p_contact_point_id          IN     NUMBER,
6183     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
6184     x_edi_rec                   OUT    NOCOPY edi_rec_type,
6185     x_return_status             OUT NOCOPY    VARCHAR2,
6186     x_msg_count                 OUT NOCOPY    NUMBER,
6187     x_msg_data                  OUT NOCOPY    VARCHAR2
6188   ) IS
6189     l_eft_rec                   eft_rec_type := g_miss_eft_rec;
6190     l_web_rec                   web_rec_type := g_miss_web_rec;
6191     l_phone_rec                 phone_rec_type := g_miss_phone_rec;
6192     l_telex_rec                 telex_rec_type := g_miss_telex_rec;
6193     l_email_rec                 email_rec_type := g_miss_email_rec;
6194     l_debug_prefix              VARCHAR2(30) := '';
6195   BEGIN
6196     -- Check if API is called in debug mode. If yes, enable debug.
6197     --enable_debug;
6198 
6199     -- Debug info.
6200     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6201         hz_utility_v2pub.debug(p_message=>'get_edi_contact_point (+)',
6202                                p_prefix=>l_debug_prefix,
6203                                p_msg_level=>fnd_log.level_procedure);
6204     END IF;
6205 
6206     -- Execute main procedure
6207     get_contact_point_main (
6208       p_init_msg_list           => p_init_msg_list,
6209       p_contact_point_id        => p_contact_point_id,
6210       x_contact_point_rec       => x_contact_point_rec,
6211       x_edi_rec                 => x_edi_rec,
6212       x_eft_rec                 => l_eft_rec,
6213       x_email_rec               => l_email_rec,
6214       x_phone_rec               => l_phone_rec,
6215       x_telex_rec               => l_telex_rec,
6216       x_web_rec                 => l_web_rec,
6217       x_return_status           => x_return_status,
6218       x_msg_count               => x_msg_count,
6219       x_msg_data                => x_msg_data
6220     );
6221 
6222     -- Debug info.
6223     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
6224          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6225                                p_msg_data=>x_msg_data,
6226                                p_msg_type=>'WARNING',
6227                                p_msg_level=>fnd_log.level_exception);
6228     END IF;
6229     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6230         hz_utility_v2pub.debug(p_message=>'get_edi_contact_point (-)',
6231                                p_prefix=>l_debug_prefix,
6232                                p_msg_level=>fnd_log.level_procedure);
6233     END IF;
6234 
6235     -- Check if API is called in debug mode. If yes, disable debug.
6236     --disable_debug;
6237 
6238   EXCEPTION
6239     WHEN fnd_api.g_exc_error THEN
6240       x_return_status := fnd_api.g_ret_sts_error;
6241 
6242       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6243                                 p_count => x_msg_count,
6244                                 p_data  => x_msg_data);
6245 
6246       -- Debug info.
6247       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6248         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6249                                p_msg_data=>x_msg_data,
6250                                p_msg_type=>'ERROR',
6251                                p_msg_level=>fnd_log.level_error);
6252       END IF;
6253       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6254         hz_utility_v2pub.debug(p_message=>'get_edi_contact_point (-)',
6255                                p_prefix=>l_debug_prefix,
6256                                p_msg_level=>fnd_log.level_procedure);
6257       END IF;
6258 
6259       -- Check if API is called in debug mode. If yes, disable debug.
6260       --disable_debug;
6261 
6262     WHEN fnd_api.g_exc_unexpected_error THEN
6263       x_return_status := fnd_api.g_ret_sts_unexp_error;
6264 
6265       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6266                                 p_count => x_msg_count,
6267                                 p_data  => x_msg_data);
6268 
6269       -- Debug info.
6270       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6271         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6272                                p_msg_data=>x_msg_data,
6273                                p_msg_type=>'UNEXPECTED ERROR',
6274                                p_msg_level=>fnd_log.level_error);
6275       END IF;
6276       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6277         hz_utility_v2pub.debug(p_message=>'get_edi_contact_point (-)',
6278                                p_prefix=>l_debug_prefix,
6279                                p_msg_level=>fnd_log.level_procedure);
6280       END IF;
6281 
6282       -- Check if API is called in debug mode. If yes, disable debug.
6283       --disable_debug;
6284 
6285     WHEN OTHERS THEN
6286       x_return_status := fnd_api.g_ret_sts_unexp_error;
6287 
6288       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
6289       fnd_message.set_token('ERROR' ,SQLERRM);
6290       fnd_msg_pub.add;
6291 
6295 
6292       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6293                                 p_count => x_msg_count,
6294                                 p_data  => x_msg_data);
6296       -- Debug info.
6297       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6298         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6299                                p_msg_data=>x_msg_data,
6300                                p_msg_type=>'SQL ERROR',
6301                                p_msg_level=>fnd_log.level_error);
6302       END IF;
6303       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6304         hz_utility_v2pub.debug(p_message=>'get_edi_contact_point (-)',
6305                                p_prefix=>l_debug_prefix,
6306                                p_msg_level=>fnd_log.level_procedure);
6307       END IF;
6308 
6309       -- Check if API is called in debug mode. If yes, disable debug.
6310       --disable_debug;
6311   END get_edi_contact_point;
6312 
6313   --
6314   -- PROCEDURE get_eft_contact_point
6315   --
6316   -- DESCRIPTION
6317   --     Gets EFT contact point record.
6318   --
6319   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6320   --
6321   -- ARGUMENTS
6322   --   IN:
6323   --     p_init_msg_list      Initialize message stack if it is set to
6324   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
6325   --     p_contact_point_id   Contact point ID.
6326   --   IN/OUT:
6327   --   OUT:
6328   --     x_contact_point_rec  Returned contact point record.
6329   --     x_eft_rec            Returned EFT record.
6330   --     x_return_status      Return status after the call. The status can
6331   --                          be fnd_api.g_ret_sts_success (success),
6332   --                          fnd_api.g_ret_sts_error (error),
6333   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
6334   --     x_msg_count          Number of messages in message stack.
6335   --     x_msg_data           Message text if x_msg_count is 1.
6336   --
6337   -- NOTES
6338   --
6339   -- MODIFICATION HISTORY
6340   --
6341   --   07-23-2001    Jianying Huang      o Created.
6342   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
6343   --                                     enhanced backward compatibility.
6344   --
6345 
6346   PROCEDURE get_eft_contact_point (
6347     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
6348     p_contact_point_id          IN     NUMBER,
6349     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
6350     x_eft_rec                   OUT    NOCOPY eft_rec_type,
6351     x_return_status             OUT NOCOPY    VARCHAR2,
6352     x_msg_count                 OUT NOCOPY    NUMBER,
6353     x_msg_data                  OUT NOCOPY    VARCHAR2
6354   ) IS
6355     l_edi_rec                   edi_rec_type := g_miss_edi_rec;
6356     l_web_rec                   web_rec_type := g_miss_web_rec;
6357     l_phone_rec                 phone_rec_type := g_miss_phone_rec;
6358     l_telex_rec                 telex_rec_type := g_miss_telex_rec;
6359     l_email_rec                 email_rec_type := g_miss_email_rec;
6360     l_debug_prefix              VARCHAR2(30) := '';
6361   BEGIN
6362     -- Check if API is called in debug mode. If yes, enable debug.
6363     --enable_debug;
6364 
6365     -- Debug info.
6366     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6367         hz_utility_v2pub.debug(p_message=>'get_eft_contact_point (+)',
6368                                p_prefix=>l_debug_prefix,
6369                                p_msg_level=>fnd_log.level_procedure);
6370     END IF;
6371 
6372     -- Execute main procedure
6373     get_contact_point_main (
6374       p_init_msg_list           => p_init_msg_list,
6375       p_contact_point_id        => p_contact_point_id,
6376       x_contact_point_rec       => x_contact_point_rec,
6377       x_edi_rec                 => l_edi_rec,
6378       x_eft_rec                 => x_eft_rec,
6379       x_email_rec               => l_email_rec,
6380       x_phone_rec               => l_phone_rec,
6381       x_telex_rec               => l_telex_rec,
6382       x_web_rec                 => l_web_rec,
6383       x_return_status           => x_return_status,
6384       x_msg_count               => x_msg_count,
6385       x_msg_data                => x_msg_data
6386     );
6387 
6388 
6389     -- Debug info.
6390     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
6391          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6392                                p_msg_data=>x_msg_data,
6393                                p_msg_type=>'WARNING',
6394                                p_msg_level=>fnd_log.level_exception);
6395     END IF;
6396     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6397         hz_utility_v2pub.debug(p_message=>'get_eft_contact_point (-)',
6398                                p_prefix=>l_debug_prefix,
6399                                p_msg_level=>fnd_log.level_procedure);
6400     END IF;
6401 
6402     -- Check if API is called in debug mode. If yes, disable debug.
6403     --disable_debug;
6404 
6405   EXCEPTION
6406     WHEN fnd_api.g_exc_error THEN
6407       x_return_status := fnd_api.g_ret_sts_error;
6408 
6409       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6410                                 p_count => x_msg_count,
6411                                 p_data  => x_msg_data);
6412 
6413       -- Debug info.
6414       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6415         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6416                                p_msg_data=>x_msg_data,
6417                                p_msg_type=>'ERROR',
6418                                p_msg_level=>fnd_log.level_error);
6419       END IF;
6423                                p_msg_level=>fnd_log.level_procedure);
6420       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6421         hz_utility_v2pub.debug(p_message=>'get_eft_contact_point (-)',
6422                                p_prefix=>l_debug_prefix,
6424       END IF;
6425 
6426       -- Check if API is called in debug mode. If yes, disable debug.
6427       --disable_debug;
6428 
6429     WHEN fnd_api.g_exc_unexpected_error THEN
6430       x_return_status := fnd_api.g_ret_sts_unexp_error;
6431 
6432       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6433                                 p_count => x_msg_count,
6434                                 p_data  => x_msg_data);
6435 
6436       -- Debug info.
6437       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6438         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6439                                p_msg_data=>x_msg_data,
6440                                p_msg_type=>'UNEXPECTED ERROR',
6441                                p_msg_level=>fnd_log.level_error);
6442       END IF;
6443       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6444         hz_utility_v2pub.debug(p_message=>'get_eft_contact_point (-)',
6445                                p_prefix=>l_debug_prefix,
6446                                p_msg_level=>fnd_log.level_procedure);
6447       END IF;
6448 
6449       -- Check if API is called in debug mode. If yes, disable debug.
6450       --disable_debug;
6451 
6452     WHEN OTHERS THEN
6453       x_return_status := fnd_api.g_ret_sts_unexp_error;
6454 
6455       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
6456       fnd_message.set_token('ERROR' ,SQLERRM);
6457       fnd_msg_pub.add;
6458 
6459       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6463       -- Debug info.
6460                                 p_count => x_msg_count,
6461                                 p_data  => x_msg_data);
6462 
6464       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6465         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6466                                p_msg_data=>x_msg_data,
6467                                p_msg_type=>'SQL ERROR',
6471         hz_utility_v2pub.debug(p_message=>'get_eft_contact_point (-)',
6468                                p_msg_level=>fnd_log.level_error);
6469       END IF;
6470       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6472                                p_prefix=>l_debug_prefix,
6473                                p_msg_level=>fnd_log.level_procedure);
6474       END IF;
6475 
6476       -- Check if API is called in debug mode. If yes, disable debug.
6477       --disable_debug;
6478   END get_eft_contact_point;
6479 
6480   --
6481   -- PROCEDURE get_web_contact_point
6482   --
6483   -- DESCRIPTION
6484   --     Gets Web contact point record.
6485   --
6486   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6487   --
6488   -- ARGUMENTS
6489   --   IN:
6490   --     p_init_msg_list      Initialize message stack if it is set to
6491   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
6492   --     p_contact_point_id   Contact point ID.
6493   --   IN/OUT:
6494   --   OUT:
6495   --     x_contact_point_rec  Returned contact point record.
6496   --     x_web_rec            Returned Web record.
6497   --     x_return_status      Return status after the call. The status can
6498   --                          be fnd_api.g_ret_sts_success (success),
6499   --                          fnd_api.g_ret_sts_error (error),
6500   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
6501   --     x_msg_count          Number of messages in message stack.
6502   --     x_msg_data           Message text if x_msg_count is 1.
6503   --
6504   -- NOTES
6505   --
6506   -- MODIFICATION HISTORY
6507   --
6508   --   07-23-2001    Jianying Huang      o Created.
6509   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
6510   --                                     enhanced backward compatibility.
6511   --
6512 
6513   PROCEDURE get_web_contact_point (
6514     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
6515     p_contact_point_id          IN     NUMBER,
6516     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
6517     x_web_rec                   OUT    NOCOPY web_rec_type,
6518     x_return_status             OUT NOCOPY    VARCHAR2,
6519     x_msg_count                 OUT NOCOPY    NUMBER,
6520     x_msg_data                  OUT NOCOPY    VARCHAR2
6521   ) IS
6522     l_edi_rec                   edi_rec_type := g_miss_edi_rec;
6523     l_eft_rec                   eft_rec_type := g_miss_eft_rec;
6524     l_phone_rec                 phone_rec_type := g_miss_phone_rec;
6525     l_telex_rec                 telex_rec_type := g_miss_telex_rec;
6526     l_email_rec                 email_rec_type := g_miss_email_rec;
6527     l_debug_prefix              VARCHAR2(30) := '';
6528   BEGIN
6529 
6530     -- Check if API is called in debug mode. If yes, enable debug.
6531     --enable_debug;
6532 
6533     -- Debug info.
6534     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6535         hz_utility_v2pub.debug(p_message=>'get_web_contact_point (+)',
6536                                p_prefix=>l_debug_prefix,
6537                                p_msg_level=>fnd_log.level_procedure);
6538     END IF;
6539 
6540     -- Execute main procedure
6541     get_contact_point_main (
6542       p_init_msg_list           => p_init_msg_list,
6543       p_contact_point_id        => p_contact_point_id,
6544       x_contact_point_rec       => x_contact_point_rec,
6545       x_edi_rec                 => l_edi_rec,
6546       x_eft_rec                 => l_eft_rec,
6547       x_email_rec               => l_email_rec,
6548       x_phone_rec               => l_phone_rec,
6549       x_telex_rec               => l_telex_rec,
6550       x_web_rec                 => x_web_rec,
6551       x_return_status           => x_return_status,
6552       x_msg_count               => x_msg_count,
6553       x_msg_data                => x_msg_data
6554     );
6555 
6556     -- Debug info.
6557     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
6558          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6559                                p_msg_data=>x_msg_data,
6560                                p_msg_type=>'WARNING',
6561                                p_msg_level=>fnd_log.level_exception);
6562     END IF;
6563     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6564         hz_utility_v2pub.debug(p_message=>'get_web_contact_point (-)',
6565                                p_prefix=>l_debug_prefix,
6566                                p_msg_level=>fnd_log.level_procedure);
6567     END IF;
6568 
6569     -- Check if API is called in debug mode. If yes, disable debug.
6570     --disable_debug;
6571 
6572   EXCEPTION
6573     WHEN fnd_api.g_exc_error THEN
6574       x_return_status := fnd_api.g_ret_sts_error;
6575 
6576       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6577                                 p_count => x_msg_count,
6578                                 p_data  => x_msg_data);
6579 
6580       -- Debug info.
6581       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6582         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6583                                p_msg_data=>x_msg_data,
6584                                p_msg_type=>'ERROR',
6585                                p_msg_level=>fnd_log.level_error);
6586       END IF;
6587       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6588         hz_utility_v2pub.debug(p_message=>'get_web_contact_point (-)',
6589                                p_prefix=>l_debug_prefix,
6590                                p_msg_level=>fnd_log.level_procedure);
6591       END IF;
6592 
6593       -- Check if API is called in debug mode. If yes, disable debug.
6594       --disable_debug;
6595 
6596     WHEN fnd_api.g_exc_unexpected_error THEN
6600                                 p_count => x_msg_count,
6597       x_return_status := fnd_api.g_ret_sts_unexp_error;
6598 
6599       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6601                                 p_data  => x_msg_data);
6602 
6603       -- Debug info.
6604       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6605         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6606                                p_msg_data=>x_msg_data,
6610       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6607                                p_msg_type=>'UNEXPECTED ERROR',
6608                                p_msg_level=>fnd_log.level_error);
6609       END IF;
6611         hz_utility_v2pub.debug(p_message=>'get_web_contact_point (-)',
6612                                p_prefix=>l_debug_prefix,
6613                                p_msg_level=>fnd_log.level_procedure);
6614       END IF;
6615 
6616 
6617       -- Check if API is called in debug mode. If yes, disable debug.
6618       --disable_debug;
6619 
6620     WHEN OTHERS THEN
6621       x_return_status := fnd_api.g_ret_sts_unexp_error;
6622 
6623       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
6624       fnd_message.set_token('ERROR' ,SQLERRM);
6625       fnd_msg_pub.add;
6626 
6627       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6628                                 p_count => x_msg_count,
6629                                 p_data  => x_msg_data);
6630 
6631       -- Debug info.
6632       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6633         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6634                                p_msg_data=>x_msg_data,
6635                                p_msg_type=>'SQL ERROR',
6636                                p_msg_level=>fnd_log.level_error);
6637       END IF;
6638       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6639         hz_utility_v2pub.debug(p_message=>'get_web_contact_point (-)',
6640                                p_prefix=>l_debug_prefix,
6641                                p_msg_level=>fnd_log.level_procedure);
6642       END IF;
6643 
6644       -- Check if API is called in debug mode. If yes, disable debug.
6645       --disable_debug;
6646   END get_web_contact_point;
6647 
6648   --
6649   -- PROCEDURE get_phone_contact_point
6650   --
6651   -- DESCRIPTION
6652   --     Gets phone contact point record.
6653   --
6654   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6655   --
6656   -- ARGUMENTS
6657   --   IN:
6658   --     p_init_msg_list      Initialize message stack if it is set to
6659   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
6660   --     p_contact_point_id   Contact point ID.
6661   --   IN/OUT:
6662   --   OUT:
6663   --     x_contact_point_rec  Returned contact point record.
6664   --     x_phone_rec          Returned phone record.
6665   --     x_return_status      Return status after the call. The status can
6666   --                          be fnd_api.g_ret_sts_success (success),
6667   --                          fnd_api.g_ret_sts_error (error),
6668   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
6669   --     x_msg_count          Number of messages in message stack.
6670   --     x_msg_data           Message text if x_msg_count is 1.
6671   --
6672   -- NOTES
6673   --
6674   -- MODIFICATION HISTORY
6675   --
6676   --   07-23-2001    Jianying Huang      o Created.
6677   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
6678   --                                     enhanced backward compatibility.
6679   --
6680 
6681   PROCEDURE get_phone_contact_point (
6682     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
6683     p_contact_point_id          IN     NUMBER,
6684     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
6685     x_phone_rec                   OUT    NOCOPY phone_rec_type,
6686     x_return_status             OUT NOCOPY    VARCHAR2,
6687     x_msg_count                 OUT NOCOPY    NUMBER,
6688     x_msg_data                  OUT NOCOPY    VARCHAR2
6689   ) IS
6690     l_edi_rec                   edi_rec_type := g_miss_edi_rec;
6691     l_eft_rec                   eft_rec_type := g_miss_eft_rec;
6692     l_web_rec                   web_rec_type := g_miss_web_rec;
6693     l_telex_rec                 telex_rec_type := g_miss_telex_rec;
6694     l_email_rec                 email_rec_type := g_miss_email_rec;
6695     l_debug_prefix              VARCHAR2(30) := '';
6696   BEGIN
6697     -- Check if API is called in debug mode. If yes, enable debug.
6698     --enable_debug;
6699 
6700     -- Debug info.
6701     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6702         hz_utility_v2pub.debug(p_message=>'get_phone_contact_point (+)',
6703                                p_prefix=>l_debug_prefix,
6704                                p_msg_level=>fnd_log.level_procedure);
6705     END IF;
6709       p_init_msg_list           => p_init_msg_list,
6706 
6707     -- Execute main procedure
6708     get_contact_point_main (
6710       p_contact_point_id        => p_contact_point_id,
6711       x_contact_point_rec       => x_contact_point_rec,
6712       x_edi_rec                 => l_edi_rec,
6713       x_eft_rec                 => l_eft_rec,
6714       x_email_rec               => l_email_rec,
6715       x_phone_rec               => x_phone_rec,
6716       x_telex_rec               => l_telex_rec,
6717       x_web_rec                 => l_web_rec,
6718       x_return_status           => x_return_status,
6719       x_msg_count               => x_msg_count,
6720       x_msg_data                => x_msg_data
6721     );
6722 
6723     -- Debug info.
6724     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
6725          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6726                                p_msg_data=>x_msg_data,
6727                                p_msg_type=>'WARNING',
6728                                p_msg_level=>fnd_log.level_exception);
6729     END IF;
6730     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6731         hz_utility_v2pub.debug(p_message=>'get_phone_contact_point (-)',
6732                                p_prefix=>l_debug_prefix,
6733                                p_msg_level=>fnd_log.level_procedure);
6734     END IF;
6735 
6736     -- Check if API is called in debug mode. If yes, disable debug.
6737     --disable_debug;
6738 
6739   EXCEPTION
6740     WHEN fnd_api.g_exc_error THEN
6741       x_return_status := fnd_api.g_ret_sts_error;
6742 
6743       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6744                                 p_count => x_msg_count,
6745                                 p_data  => x_msg_data);
6746 
6747       -- Debug info.
6748       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6749         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6750                                p_msg_data=>x_msg_data,
6751                                p_msg_type=>'ERROR',
6752                                p_msg_level=>fnd_log.level_error);
6753       END IF;
6754       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6758       END IF;
6755         hz_utility_v2pub.debug(p_message=>'get_phone_contact_point (-)',
6756                                p_prefix=>l_debug_prefix,
6757                                p_msg_level=>fnd_log.level_procedure);
6759 
6760       -- Check if API is called in debug mode. If yes, disable debug.
6761       --disable_debug;
6762 
6763     WHEN fnd_api.g_exc_unexpected_error THEN
6764       x_return_status := fnd_api.g_ret_sts_unexp_error;
6765 
6766       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6767                                 p_count => x_msg_count,
6768                                 p_data  => x_msg_data);
6769 
6770       -- Debug info.
6771       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6772         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6773                                p_msg_data=>x_msg_data,
6774                                p_msg_type=>'UNEXPECTED ERROR',
6775                                p_msg_level=>fnd_log.level_error);
6776       END IF;
6777       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6778         hz_utility_v2pub.debug(p_message=>'get_phone_contact_point (-)',
6779                                p_prefix=>l_debug_prefix,
6780                                p_msg_level=>fnd_log.level_procedure);
6781       END IF;
6782 
6783       -- Check if API is called in debug mode. If yes, disable debug.
6784       --disable_debug;
6785 
6786     WHEN OTHERS THEN
6787       x_return_status := fnd_api.g_ret_sts_unexp_error;
6788 
6789       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
6790       fnd_message.set_token('ERROR' ,SQLERRM);
6791       fnd_msg_pub.add;
6792 
6793       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6794                                 p_count => x_msg_count,
6795                                 p_data  => x_msg_data);
6796 
6797       -- Debug info.
6798       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6799         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6800                                p_msg_data=>x_msg_data,
6801                                p_msg_type=>'SQL ERROR',
6802                                p_msg_level=>fnd_log.level_error);
6803       END IF;
6804       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6805         hz_utility_v2pub.debug(p_message=>'get_phone_contact_point (-)',
6806                                p_prefix=>l_debug_prefix,
6807                                p_msg_level=>fnd_log.level_procedure);
6808       END IF;
6809 
6810       -- Check if API is called in debug mode. If yes, disable debug.
6811       --disable_debug;
6812   END get_phone_contact_point;
6813 
6814   --
6815   -- PROCEDURE get_telex_contact_point
6816   --
6817   -- DESCRIPTION
6818   --     Gets telex contact point record.
6819   --
6820   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6821   --
6822   -- ARGUMENTS
6823   --   IN:
6824   --     p_init_msg_list      Initialize message stack if it is set to
6825   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
6826   --     p_contact_point_id   Contact point ID.
6827   --   IN/OUT:
6828   --   OUT:
6829   --     x_contact_point_rec  Returned contact point record.
6830   --     x_telex_rec          Returned telex record.
6831   --     x_return_status      Return status after the call. The status can
6832   --                          be fnd_api.g_ret_sts_success (success),
6833   --                          fnd_api.g_ret_sts_error (error),
6834   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
6835   --     x_msg_count          Number of messages in message stack.
6836   --     x_msg_data           Message text if x_msg_count is 1.
6837   --
6838   -- NOTES
6839   --
6840   -- MODIFICATION HISTORY
6841   --
6842   --   07-23-2001    Jianying Huang      o Created.
6843   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
6844   --                                     enhanced backward compatibility.
6845   --
6846 
6847   PROCEDURE get_telex_contact_point (
6848     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
6849     p_contact_point_id          IN     NUMBER,
6850     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
6851     x_telex_rec                   OUT    NOCOPY telex_rec_type,
6852     x_return_status             OUT NOCOPY    VARCHAR2,
6853     x_msg_count                 OUT NOCOPY    NUMBER,
6854     x_msg_data                  OUT NOCOPY    VARCHAR2
6855   ) IS
6856     l_edi_rec                   edi_rec_type := g_miss_edi_rec;
6857     l_eft_rec                   eft_rec_type := g_miss_eft_rec;
6858     l_web_rec                   web_rec_type := g_miss_web_rec;
6859     l_phone_rec                 phone_rec_type := g_miss_phone_rec;
6860     l_email_rec                 email_rec_type := g_miss_email_rec;
6861     l_debug_prefix              VARCHAR2(30) := '';
6862   BEGIN
6863     -- Check if API is called in debug mode. If yes, enable debug.
6864     --enable_debug;
6865 
6866     -- Debug info.
6867     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6868         hz_utility_v2pub.debug(p_message=>'get_telex_contact_point (+)',
6869                                p_prefix=>l_debug_prefix,
6870                                p_msg_level=>fnd_log.level_procedure);
6871     END IF;
6872 
6873     -- Execute main procedure
6874     get_contact_point_main (
6875       p_init_msg_list           => p_init_msg_list,
6879       x_eft_rec                 => l_eft_rec,
6876       p_contact_point_id        => p_contact_point_id,
6877       x_contact_point_rec       => x_contact_point_rec,
6878       x_edi_rec                 => l_edi_rec,
6880       x_email_rec               => l_email_rec,
6881       x_phone_rec               => l_phone_rec,
6882       x_telex_rec               => x_telex_rec,
6883       x_web_rec                 => l_web_rec,
6884       x_return_status           => x_return_status,
6885       x_msg_count               => x_msg_count,
6886       x_msg_data                => x_msg_data
6887     );
6888 
6889     -- Debug info.
6890     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
6891          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6892                                p_msg_data=>x_msg_data,
6893                                p_msg_type=>'WARNING',
6894                                p_msg_level=>fnd_log.level_exception);
6895     END IF;
6896     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6897         hz_utility_v2pub.debug(p_message=>'get_telex_contact_point (-)',
6898                                p_prefix=>l_debug_prefix,
6899                                p_msg_level=>fnd_log.level_procedure);
6900     END IF;
6901 
6902     -- Check if API is called in debug mode. If yes, disable debug.
6903     --disable_debug;
6904 
6905   EXCEPTION
6906     WHEN fnd_api.g_exc_error THEN
6907       x_return_status := fnd_api.g_ret_sts_error;
6908 
6909       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6910                                 p_count => x_msg_count,
6911                                 p_data  => x_msg_data);
6912 
6913       -- Debug info.
6914       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6915         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6916                                p_msg_data=>x_msg_data,
6917                                p_msg_type=>'ERROR',
6918                                p_msg_level=>fnd_log.level_error);
6919       END IF;
6920       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6921         hz_utility_v2pub.debug(p_message=>'get_telex_contact_point (-)',
6922                                p_prefix=>l_debug_prefix,
6923                                p_msg_level=>fnd_log.level_procedure);
6924       END IF;
6925 
6926       -- Check if API is called in debug mode. If yes, disable debug.
6927       --disable_debug;
6928 
6929     WHEN fnd_api.g_exc_unexpected_error THEN
6930       x_return_status := fnd_api.g_ret_sts_unexp_error;
6931 
6932       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6933                                 p_count => x_msg_count,
6934                                 p_data  => x_msg_data);
6935 
6936       -- Debug info.
6937       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6938         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6939                                p_msg_data=>x_msg_data,
6940                                p_msg_type=>'UNEXPECTED ERROR',
6941                                p_msg_level=>fnd_log.level_error);
6942       END IF;
6943       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6944         hz_utility_v2pub.debug(p_message=>'get_telex_contact_point (-)',
6945                                p_prefix=>l_debug_prefix,
6946                                p_msg_level=>fnd_log.level_procedure);
6947       END IF;
6948 
6949       -- Check if API is called in debug mode. If yes, disable debug.
6950       --disable_debug;
6951 
6952     WHEN OTHERS THEN
6953       x_return_status := fnd_api.g_ret_sts_unexp_error;
6954 
6955       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
6956       fnd_message.set_token('ERROR' ,SQLERRM);
6957       fnd_msg_pub.add;
6958 
6959       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
6960                                 p_count => x_msg_count,
6961                                 p_data  => x_msg_data);
6962 
6963       -- Debug info.
6964       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
6965         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
6966                                p_msg_data=>x_msg_data,
6967                                p_msg_type=>'SQL ERROR',
6968                                p_msg_level=>fnd_log.level_error);
6969       END IF;
6970       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6971         hz_utility_v2pub.debug(p_message=>'get_telex_contact_point (-)',
6972                                p_prefix=>l_debug_prefix,
6973                                p_msg_level=>fnd_log.level_procedure);
6974       END IF;
6975 
6976       -- Check if API is called in debug mode. If yes, disable debug.
6977       --disable_debug;
6978   END get_telex_contact_point;
6979 
6980   --
6981   -- PROCEDURE get_email_contact_point
6982   --
6983   -- DESCRIPTION
6984   --     Gets email contact point record.
6985   --
6986   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
6987   --
6988   -- ARGUMENTS
6989   --   IN:
6990   --     p_init_msg_list      Initialize message stack if it is set to
6991   --                          FND_API.G_TRUE. Default is fnd_api.g_false.
6992   --     p_contact_point_id   Contact point ID.
6993   --   IN/OUT:
6994   --   OUT:
6995   --     x_contact_point_rec  Returned contact point record.
6996   --     x_email_rec          Returned email record.
6997   --     x_return_status      Return status after the call. The status can
6998   --                          be fnd_api.g_ret_sts_success (success),
6999   --                          fnd_api.g_ret_sts_error (error),
7000   --                          fnd_api.g_ret_sts_unexp_error (unexpected error).
7001   --     x_msg_count          Number of messages in message stack.
7002   --     x_msg_data           Message text if x_msg_count is 1.
7006   -- MODIFICATION HISTORY
7003   --
7004   -- NOTES
7005   --
7007   --
7008   --   07-23-2001    Jianying Huang      o Created.
7009   --   04-DEC-2001   Joe del Callar      Bug 2136283: Added support for
7010   --                                     enhanced backward compatibility.
7011   --
7012 
7013   PROCEDURE get_email_contact_point (
7014     p_init_msg_list             IN     VARCHAR2 := fnd_api.g_false,
7015     p_contact_point_id          IN     NUMBER,
7016     x_contact_point_rec         OUT    NOCOPY contact_point_rec_type,
7017     x_email_rec                   OUT    NOCOPY email_rec_type,
7018     x_return_status             OUT NOCOPY    VARCHAR2,
7019     x_msg_count                 OUT NOCOPY    NUMBER,
7020     x_msg_data                  OUT NOCOPY    VARCHAR2
7021   ) IS
7022     l_edi_rec                   edi_rec_type := g_miss_edi_rec;
7023     l_eft_rec                   eft_rec_type := g_miss_eft_rec;
7024     l_web_rec                   web_rec_type := g_miss_web_rec;
7025     l_phone_rec                 phone_rec_type := g_miss_phone_rec;
7026     l_telex_rec                 telex_rec_type := g_miss_telex_rec;
7027     l_debug_prefix              VARCHAR2(30) := '';
7028   BEGIN
7029     -- Check if API is called in debug mode. If yes, enable debug.
7030     --enable_debug;
7031 
7032     -- Debug info.
7033     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7034         hz_utility_v2pub.debug(p_message=>'get_email_contact_point (+)',
7035                                p_prefix=>l_debug_prefix,
7036                                p_msg_level=>fnd_log.level_procedure);
7037     END IF;
7038 
7039 
7040     -- Execute main procedure
7041     get_contact_point_main (
7042       p_init_msg_list           => p_init_msg_list,
7043       p_contact_point_id        => p_contact_point_id,
7044       x_contact_point_rec       => x_contact_point_rec,
7045       x_edi_rec                 => l_edi_rec,
7046       x_eft_rec                 => l_eft_rec,
7047       x_email_rec               => x_email_rec,
7048       x_phone_rec               => l_phone_rec,
7049       x_telex_rec               => l_telex_rec,
7050       x_web_rec                 => l_web_rec,
7054     );
7051       x_return_status           => x_return_status,
7052       x_msg_count               => x_msg_count,
7053       x_msg_data                => x_msg_data
7055 
7056     -- Debug info.
7057     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
7058          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
7059                                p_msg_data=>x_msg_data,
7060                                p_msg_type=>'WARNING',
7061                                p_msg_level=>fnd_log.level_exception);
7062     END IF;
7063     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7064         hz_utility_v2pub.debug(p_message=>'get_email_contact_point (-)',
7065                                p_prefix=>l_debug_prefix,
7066                                p_msg_level=>fnd_log.level_procedure);
7067     END IF;
7068 
7069     -- Check if API is called in debug mode. If yes, disable debug.
7070     --disable_debug;
7071 
7072   EXCEPTION
7073     WHEN fnd_api.g_exc_error THEN
7074       x_return_status := fnd_api.g_ret_sts_error;
7075 
7076       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
7077                                 p_count => x_msg_count,
7078                                 p_data  => x_msg_data);
7079 
7080       -- Debug info.
7081       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
7082         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
7083                                p_msg_data=>x_msg_data,
7084                                p_msg_type=>'ERROR',
7085                                p_msg_level=>fnd_log.level_error);
7086       END IF;
7087       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7088         hz_utility_v2pub.debug(p_message=>'get_email_contact_point (-)',
7092 
7089                                p_prefix=>l_debug_prefix,
7090                                p_msg_level=>fnd_log.level_procedure);
7091       END IF;
7093       -- Check if API is called in debug mode. If yes, disable debug.
7094       --disable_debug;
7095 
7096     WHEN fnd_api.g_exc_unexpected_error THEN
7097       x_return_status := fnd_api.g_ret_sts_unexp_error;
7098 
7099       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
7100                                 p_count => x_msg_count,
7101                                 p_data  => x_msg_data);
7102 
7103       -- Debug info.
7104       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
7105         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
7106                                p_msg_data=>x_msg_data,
7107                                p_msg_type=>'UNEXPECTED ERROR',
7108                                p_msg_level=>fnd_log.level_error);
7109       END IF;
7110       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7111         hz_utility_v2pub.debug(p_message=>'get_email_contact_point (-)',
7112                                p_prefix=>l_debug_prefix,
7113                                p_msg_level=>fnd_log.level_procedure);
7114       END IF;
7115 
7116       -- Check if API is called in debug mode. If yes, disable debug.
7117       --disable_debug;
7118 
7119     WHEN OTHERS THEN
7120       x_return_status := fnd_api.g_ret_sts_unexp_error;
7121 
7122       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
7123       fnd_message.set_token('ERROR' ,SQLERRM);
7124       fnd_msg_pub.add;
7125 
7126       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
7127                                 p_count => x_msg_count,
7128                                 p_data  => x_msg_data);
7129 
7130       -- Debug info.
7131       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
7132         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
7133                                p_msg_data=>x_msg_data,
7134                                p_msg_type=>'SQL ERROR',
7135                                p_msg_level=>fnd_log.level_error);
7136       END IF;
7137       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
7138         hz_utility_v2pub.debug(p_message=>'get_email_contact_point (-)',
7139                                p_prefix=>l_debug_prefix,
7140                                p_msg_level=>fnd_log.level_procedure);
7141       END IF;
7142 
7143       -- Check if API is called in debug mode. If yes, disable debug.
7144       --disable_debug;
7145   END get_email_contact_point;
7146 
7147   /*----------------------------------------------------------------------------*
7148  | procedure                                                                  |
7149  |    update_contact_point_search                                             |
7150  |                                                                            |
7151  | DESCRIPTION                                                                |
7152  |    This procedure updates the address_text column of                       |
7153  |    hz_cust_acct_sites_all with the NULL value                              |
7154  |    only to change the address_text column status                           |
7155  |    so that interMedia index can be created on it to perform text searches. |
7156  |                                                                            |
7157  | NOTE :- After Calling this procedure the user has to execute the           |
7158  |         Customer Text Data Creation concurrent program to see the changes. |
7159  |                                                                            |
7160  | PARAMETERS                                                                 |
7161  |   INPUT                                                                    |
7162  |    p_cp_rec                                                                |
7163  |    p_old_phone_rec                                                         |
7164  |    p_new_phone_rec                                                         |
7165  |    p_old_email_rec                                                         |
7166  |    p_new_email_rec                                                         |
7167  |                                                                            |
7168  |                                                                            |
7169  |                                                                            |
7170  |   OUTPUT                                                                   |
7171  |                                                                            |
7172  |                                                                            |
7173  | HISTORY                                                                    |
7174  |    15-Mar-2004    Ramesh Ch   Created                                       |
7175  *----------------------------------------------------------------------------*/
7176 
7177 PROCEDURE update_contact_point_search(p_cp_rec        IN HZ_CONTACT_POINT_V2PUB.CONTACT_POINT_REC_TYPE,
7181                                       p_new_email_rec IN HZ_CONTACT_POINT_V2PUB.email_rec_type
7178                                       p_old_phone_rec IN HZ_CONTACT_POINT_V2PUB.phone_rec_type,
7179                                       p_new_phone_rec IN HZ_CONTACT_POINT_V2PUB.phone_rec_type,
7180                                       p_old_email_rec IN HZ_CONTACT_POINT_V2PUB.email_rec_type,
7182                                      )
7183 IS
7184 
7185   ----(Party level Contact Point)
7186  CURSOR c_pl_cp(p_party_id NUMBER) IS
7187   SELECT ac.CUST_ACCT_SITE_ID
7188     FROM HZ_CUST_ACCOUNTS c,HZ_CUST_ACCT_SITES_ALL ac
7189     WHERE c.party_id=p_party_id
7190     AND c.cust_account_id = ac.cust_account_id;
7191 
7192   ----(Site level contact point)
7193 CURSOR c_sl_cp(p_party_site_id NUMBER) IS
7194     SELECT ac.CUST_ACCT_SITE_ID
7195     FROM HZ_PARTY_SITES ps,
7196          HZ_CUST_ACCT_SITES_ALL ac
7197     WHERE ps.PARTY_SITE_ID=p_party_site_id
7198     AND ps.PARTY_SITE_ID=ac.PARTY_SITE_ID;
7199 
7200  ----(Party level relationship's contact point )
7201  CURSOR c_pl_rel_cp(p_party_id NUMBER) IS
7202   SELECT distinct ac.CUST_ACCT_SITE_ID
7203     FROM HZ_PARTIES p, HZ_CUST_ACCOUNT_ROLES ar,
7204          HZ_RELATIONSHIPS rel,HZ_CUST_ACCT_SITES_ALL ac
7205     WHERE rel.party_id=p_party_id
7206     AND ar.ROLE_TYPE = 'CONTACT'
7207     AND rel.party_id=ar.party_id
7208     AND rel.subject_id=p.party_id
7209     AND ar.cust_account_id = ac.cust_account_id
7210     AND (ar.cust_acct_site_id is null);
7211 
7212  -----(Site Level relationship's contact point )
7213  CURSOR c_sl_rel_cp(p_party_id NUMBER) IS
7214   SELECT distinct ac.CUST_ACCT_SITE_ID
7215      FROM HZ_PARTIES p, HZ_CUST_ACCOUNT_ROLES ar,
7216           HZ_RELATIONSHIPS rel,HZ_CUST_ACCT_SITES_ALL ac
7217      WHERE rel.party_id=p_party_id
7218      AND ar.ROLE_TYPE = 'CONTACT'
7219      AND ar.party_id = rel.party_id
7220      AND p.party_id = rel.subject_id
7221      AND ar.cust_account_id = ac.cust_account_id
7222      AND ar.cust_acct_site_id = ac.cust_acct_site_id;
7223 
7224  CURSOR c_party_type(p_party_id NUMBER) IS
7225   SELECT party_type
7226   FROM HZ_PARTIES
7227   WHERE party_id=p_party_id;
7228 
7229 l_owner_table_name   HZ_CONTACT_POINTS.OWNER_TABLE_NAME%TYPE;
7230 l_contact_point_type HZ_CONTACT_POINTS.CONTACT_POINT_TYPE%TYPE;
7231 TYPE siteidtab IS TABLE OF HZ_CUST_ACCT_SITES_ALL.CUST_ACCT_SITE_ID%TYPE;
7232 l_siteidtab siteidtab;
7233 l_party_type       HZ_PARTIES.PARTY_TYPE%TYPE;
7234 BEGIN
7235  savepoint update_contact_point_search;
7236 
7237  l_owner_table_name   := p_cp_rec.owner_table_name;
7238  l_contact_point_type := p_cp_rec.contact_point_type;
7239 
7240  IF (l_owner_table_name='HZ_PARTY_SITES' AND l_contact_point_type NOT IN ('EDI', 'EMAIL', 'WEB'))
7241     OR (l_owner_table_name='HZ_PARTIES' AND l_contact_point_type NOT IN  ('EDI','WEB'))
7242  THEN
7243       IF(  isModified(   p_old_phone_rec.phone_number       ,p_new_phone_rec.phone_number)
7244            OR isModified(p_old_phone_rec.phone_area_code    ,p_new_phone_rec.phone_area_code)
7245            OR isModified(p_old_phone_rec.phone_country_code ,p_new_phone_rec.phone_country_code)
7246            OR isModified(p_old_email_rec.email_address      ,p_new_email_rec.email_address)
7247          ) THEN
7248               IF  l_owner_table_name ='HZ_PARTY_SITES'
7249               THEN
7250                   OPEN c_sl_cp(p_cp_rec.owner_table_id);
7251                   FETCH c_sl_cp BULK COLLECT INTO l_siteidtab;
7252                   CLOSE c_sl_cp;
7253                   IF l_siteidtab.COUNT >0 THEN
7254                      FORALL i IN l_siteidtab.FIRST..l_siteidtab.LAST
7255                         update HZ_CUST_ACCT_SITES_ALL set address_text=NULL where cust_acct_site_id=l_siteidtab(i);
7256                   END IF;
7257               ELSE  ---l_owner_table_name ='HZ_PARTIES'
7258                  OPEN c_party_type(p_cp_rec.owner_table_id);
7259                  FETCH c_party_type INTO l_party_type;
7260                  CLOSE c_party_type;
7261                  IF l_party_type='PARTY_RELATIONSHIP' THEN
7262                     --Process party level relationship's records
7263                     OPEN  c_pl_rel_cp(p_cp_rec.owner_table_id);
7264                     FETCH c_pl_rel_cp BULK COLLECT INTO l_siteidtab;
7265                     CLOSE c_pl_rel_cp;
7266                     IF l_siteidtab.COUNT >0 THEN
7267                        FORALL i IN l_siteidtab.FIRST..l_siteidtab.LAST
7268                          update HZ_CUST_ACCT_SITES_ALL set address_text=NULL where cust_acct_site_id=l_siteidtab(i);
7269                     END IF;
7270                     --Process site level relationship's records
7271                     OPEN  c_sl_rel_cp(p_cp_rec.owner_table_id);
7272                     FETCH c_sl_rel_cp BULK COLLECT INTO l_siteidtab;
7273                     CLOSE c_sl_rel_cp;
7274                     IF l_siteidtab.COUNT >0 THEN
7275                       FORALL i IN l_siteidtab.FIRST..l_siteidtab.LAST
7276                         update HZ_CUST_ACCT_SITES_ALL set address_text=NULL where cust_acct_site_id=l_siteidtab(i);
7280                    FETCH c_pl_cp BULK COLLECT INTO l_siteidtab;
7277                     END IF;
7278                  ELSE
7279                    OPEN c_pl_cp(p_cp_rec.owner_table_id);
7281                    CLOSE c_pl_cp;
7282                    IF l_siteidtab.COUNT >0 THEN
7283                       FORALL i IN l_siteidtab.FIRST..l_siteidtab.LAST
7284                         update HZ_CUST_ACCT_SITES_ALL set address_text=NULL where cust_acct_site_id=l_siteidtab(i);
7285                    END IF;
7286                  END IF;
7287               END IF;
7288       END IF;
7289  END IF;
7290 EXCEPTION
7291  WHEN OTHERS THEN
7292    ROLLBACK TO update_contact_point_search;
7293    RAISE;
7294 END;
7295 FUNCTION isModified(p_old_value IN VARCHAR2,p_new_value IN VARCHAR2) RETURN BOOLEAN
7296 IS
7297 BEGIN
7298   IF p_new_value IS NOT NULL AND p_new_value <> FND_API.G_MISS_CHAR THEN
7299      RETURN NVL(NOT (p_old_value=p_new_value),TRUE);
7300   ELSIF (p_old_value IS NOT NULL AND p_old_value <> FND_API.G_MISS_CHAR)
7301          AND p_new_value = FND_API.G_MISS_CHAR THEN
7302      RETURN TRUE;
7303   ELSE
7304     RETURN FALSE;
7305   END IF;
7306 END;
7307 
7308 END hz_contact_point_v2pub;