DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_PERSON_CUST_BO_PUB

Source


1 PACKAGE BODY HZ_PERSON_CUST_BO_PUB AS
2 /*$Header: ARHBPABB.pls 120.20 2008/02/06 10:14:13 vsegu ship $ */
3   PROCEDURE do_create_person_cust_bo(
4     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
5     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
6     p_person_cust_obj     IN OUT NOCOPY HZ_PERSON_CUST_BO,
7     p_created_by_module   IN            VARCHAR2,
8     p_obj_source          IN            VARCHAR2 := null,
9     x_return_status       OUT NOCOPY    VARCHAR2,
10     x_msg_count           OUT NOCOPY    NUMBER,
11     x_msg_data            OUT NOCOPY    VARCHAR2,
12     x_person_id           OUT NOCOPY    NUMBER
13   );
14 
15   PROCEDURE do_update_person_cust_bo(
16     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
17     p_person_cust_obj     IN OUT NOCOPY HZ_PERSON_CUST_BO,
18     p_created_by_module   IN            VARCHAR2,
19     p_obj_source          IN            VARCHAR2 := null,
20     x_return_status       OUT NOCOPY    VARCHAR2,
21     x_msg_count           OUT NOCOPY    NUMBER,
22     x_msg_data            OUT NOCOPY    VARCHAR2,
23     x_person_id           OUT NOCOPY    NUMBER
24   );
25 
26   PROCEDURE do_save_person_cust_bo(
27     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
28     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
29     p_person_cust_obj     IN OUT NOCOPY HZ_PERSON_CUST_BO,
30     p_created_by_module   IN            VARCHAR2,
31     p_obj_source          IN            VARCHAR2 := null,
32     x_return_status       OUT NOCOPY    VARCHAR2,
33     x_msg_count           OUT NOCOPY    NUMBER,
34     x_msg_data            OUT NOCOPY    VARCHAR2,
35     x_person_id           OUT NOCOPY    NUMBER
36   );
37 
38   -- PROCEDURE do_create_person_cust_bo
39   --
40   -- DESCRIPTION
41   --     Create person customer account.
42   PROCEDURE do_create_person_cust_bo(
43     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
44     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
45     p_person_cust_obj     IN OUT NOCOPY HZ_PERSON_CUST_BO,
46     p_created_by_module   IN            VARCHAR2,
47     p_obj_source          IN            VARCHAR2 := null,
48     x_return_status       OUT NOCOPY    VARCHAR2,
49     x_msg_count           OUT NOCOPY    NUMBER,
50     x_msg_data            OUT NOCOPY    VARCHAR2,
51     x_person_id           OUT NOCOPY    NUMBER
52   ) IS
53     l_person_os           VARCHAR2(30);
54     l_person_osr          VARCHAR2(255);
55     l_debug_prefix        VARCHAR2(30) := '';
56     l_valid_obj           BOOLEAN;
57     l_raise_event         BOOLEAN := FALSE;
58     l_bus_object          HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
59     l_cbm                 VARCHAR2(30);
60     l_per_event_id        NUMBER;
61     l_pc_event_id         NUMBER;
62   BEGIN
63     -- Standard start of API savepoint
64     SAVEPOINT do_create_person_cust_pub;
65 
66     -- initialize API return status to success.
67     x_return_status := FND_API.G_RET_STS_SUCCESS;
68 
69     -- Initialize message list if p_init_msg_list is set to TRUE
70     IF FND_API.to_Boolean(p_init_msg_list) THEN
71       FND_MSG_PUB.initialize;
72     END IF;
73 
74     -- Debug info.
75     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
76         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_bo(+)',
77                                p_prefix=>l_debug_prefix,
78                                p_msg_level=>fnd_log.level_procedure);
79     END IF;
80 
81     -- Base on p_validate_bo_flag, check the completeness of business objects
82     IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
83       HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
84         p_bus_object_code         => 'PERSON_CUST',
85         x_bus_object              => l_bus_object
86       );
87 
88       l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_pca_bo_comp(
89                        p_person_obj => p_person_cust_obj.person_obj,
90                        p_ca_objs    => p_person_cust_obj.account_objs
91                      );
92 
93       IF NOT(l_valid_obj) THEN
94         RAISE fnd_api.g_exc_error;
95       END IF;
96 
97       -- find out if raise event at the end
98       l_raise_event := HZ_PARTY_BO_PVT.is_raising_create_event(
99                          p_obj_complete_flag => l_valid_obj );
100 
101       IF(l_raise_event) THEN
102         -- Get event_id for person
103         SELECT HZ_BUS_OBJ_TRACKING_S.nextval
104         INTO l_per_event_id
105         FROM DUAL;
106 
107         -- Get event_id for person customer
108         SELECT HZ_BUS_OBJ_TRACKING_S.nextval
109         INTO l_pc_event_id
110         FROM DUAL;
111       END IF;
112     ELSE
113       l_raise_event := FALSE;
114     END IF;
115 
116     -- initialize Global variable to indicate the caller of V2API is from BO API
117     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
118     IF(p_created_by_module IS NULL) THEN
119       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
120     ELSE
121       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
122     END IF;
123 
124     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
125 
126     HZ_PERSON_BO_PUB.do_create_person_bo(
127       p_init_msg_list          => fnd_api.g_false,
128       p_validate_bo_flag       => FND_API.G_FALSE,
129       p_person_obj             => p_person_cust_obj.person_obj,
130       p_created_by_module      => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
131       p_obj_source             => p_obj_source,
132       x_return_status          => x_return_status,
133       x_msg_count              => x_msg_count,
134       x_msg_data               => x_msg_data,
135       x_person_id              => x_person_id,
136       x_person_os              => l_person_os,
137       x_person_osr             => l_person_osr
138     );
139 
140     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
141       RAISE fnd_api.g_exc_error;
142     END IF;
143 
144     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
145 
146     IF((p_person_cust_obj.account_objs IS NOT NULL) AND
147        (p_person_cust_obj.account_objs.COUNT > 0)) THEN
148       HZ_CUST_ACCT_BO_PVT.save_cust_accts(
149         p_ca_objs                => p_person_cust_obj.account_objs,
150         p_create_update_flag     => 'C',
151         x_return_status          => x_return_status,
152         x_msg_count              => x_msg_count,
153         x_msg_data               => x_msg_data,
154         p_parent_id              => x_person_id,
155         p_parent_os              => l_person_os,
156         p_parent_osr             => l_person_osr,
157         p_parent_obj_type        => 'PERSON'
158       );
159 
160       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
161         RAISE fnd_api.g_exc_error;
162       END IF;
163     END IF;
164 
165     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
166 
167     -- raise event
168     IF(l_raise_event) THEN
169       -- raise create person event
170       HZ_PARTY_BO_PVT.call_bes(
171         p_party_id         => x_person_id,
172         p_bo_code          => 'PERSON',
173         p_create_or_update => 'C',
174         p_obj_source       => p_obj_source,
175         p_event_id         => l_per_event_id
176       );
177 
178       -- raise create person cust event
179       HZ_PARTY_BO_PVT.call_bes(
180         p_party_id         => x_person_id,
181         p_bo_code          => 'PERSON_CUST',
182         p_create_or_update => 'C',
183         p_obj_source       => p_obj_source,
184         p_event_id         => l_pc_event_id
185       );
186     END IF;
187 
188     -- reset Global variable
189     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
190     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
191 
192     -- Debug info.
193     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
194          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
195                                p_msg_data=>x_msg_data,
196                                p_msg_type=>'WARNING',
197                                p_msg_level=>fnd_log.level_exception);
198     END IF;
199     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
200         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_bo(-)',
201                                p_prefix=>l_debug_prefix,
202                                p_msg_level=>fnd_log.level_procedure);
203     END IF;
204 
205   EXCEPTION
206     WHEN fnd_api.g_exc_error THEN
207       ROLLBACK TO do_create_person_cust_pub;
208 
209       -- reset Global variable
210       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
211       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
212 
213       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
214       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
215       FND_MSG_PUB.ADD;
216 
217       x_return_status := fnd_api.g_ret_sts_error;
218 
219       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
220                                 p_count => x_msg_count,
221                                 p_data  => x_msg_data);
222 
223       -- Debug info.
224       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
225         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
226                                p_msg_data=>x_msg_data,
227                                p_msg_type=>'ERROR',
228                                p_msg_level=>fnd_log.level_error);
229       END IF;
230       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
231         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_bo(-)',
232                                p_prefix=>l_debug_prefix,
233                                p_msg_level=>fnd_log.level_procedure);
234       END IF;
235 
236     WHEN fnd_api.g_exc_unexpected_error THEN
237       ROLLBACK TO do_create_person_cust_pub;
238 
239       -- reset Global variable
240       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
241       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
242 
243       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
244       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
245       FND_MSG_PUB.ADD;
246 
247       x_return_status := fnd_api.g_ret_sts_unexp_error;
248 
249       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
250                                 p_count => x_msg_count,
251                                 p_data  => x_msg_data);
252 
253       -- Debug info.
254       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
255         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
256                                p_msg_data=>x_msg_data,
257                                p_msg_type=>'UNEXPECTED ERROR',
258                                p_msg_level=>fnd_log.level_error);
259       END IF;
260       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
261         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_bo(-)',
262                                p_prefix=>l_debug_prefix,
263                                p_msg_level=>fnd_log.level_procedure);
264       END IF;
265 
266     WHEN OTHERS THEN
267       ROLLBACK TO do_create_person_cust_pub;
268 
269       -- reset Global variable
270       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
271       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
272 
273       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
274       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
275       FND_MSG_PUB.ADD;
276 
277       x_return_status := fnd_api.g_ret_sts_unexp_error;
278 
279       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
280       fnd_message.set_token('ERROR' ,SQLERRM);
281       fnd_msg_pub.add;
282 
283       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
284                                 p_count => x_msg_count,
285                                 p_data  => x_msg_data);
286 
287       -- Debug info.
288       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
289         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
290                                p_msg_data=>x_msg_data,
291                                p_msg_type=>'SQL ERROR',
292                                p_msg_level=>fnd_log.level_error);
293       END IF;
294       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
295         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_bo(-)',
296                                p_prefix=>l_debug_prefix,
297                                p_msg_level=>fnd_log.level_procedure);
298       END IF;
299   END do_create_person_cust_bo;
300 
301   PROCEDURE create_person_cust_bo(
302     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
303     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
304     p_person_cust_obj     IN            HZ_PERSON_CUST_BO,
305     p_created_by_module   IN            VARCHAR2,
306     x_return_status       OUT NOCOPY    VARCHAR2,
307     x_msg_count           OUT NOCOPY    NUMBER,
308     x_msg_data            OUT NOCOPY    VARCHAR2,
309     x_person_id           OUT NOCOPY    NUMBER
310   ) IS
311     l_pc_obj              HZ_PERSON_CUST_BO;
312   BEGIN
313     l_pc_obj := p_person_cust_obj;
314     do_create_person_cust_bo(
315       p_init_msg_list       => p_init_msg_list,
316       p_validate_bo_flag    => p_validate_bo_flag,
317       p_person_cust_obj     => l_pc_obj,
318       p_created_by_module   => p_created_by_module,
319       p_obj_source          => null,
320       x_return_status       => x_return_status,
321       x_msg_count           => x_msg_count,
322       x_msg_data            => x_msg_data,
323       x_person_id           => x_person_id
324     );
325   END create_person_cust_bo;
326 
327   PROCEDURE create_person_cust_bo(
328     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
329     p_person_cust_obj     IN            HZ_PERSON_CUST_BO,
330     p_created_by_module   IN            VARCHAR2,
331     p_obj_source          IN            VARCHAR2 := null,
332     p_return_obj_flag     IN            VARCHAR2 := fnd_api.g_true,
333     x_return_status       OUT NOCOPY    VARCHAR2,
334     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
335     x_return_obj          OUT NOCOPY    HZ_PERSON_CUST_BO,
336     x_person_id           OUT NOCOPY    NUMBER
337   ) IS
338     l_msg_data            VARCHAR2(2000);
339     l_msg_count           NUMBER;
340     l_pc_obj              HZ_PERSON_CUST_BO;
341   BEGIN
342     l_pc_obj := p_person_cust_obj;
343     do_create_person_cust_bo(
344       p_init_msg_list       => fnd_api.g_true,
345       p_validate_bo_flag    => p_validate_bo_flag,
346       p_person_cust_obj     => l_pc_obj,
347       p_created_by_module   => p_created_by_module,
348       p_obj_source          => p_obj_source,
349       x_return_status       => x_return_status,
350       x_msg_count           => l_msg_count,
351       x_msg_data            => l_msg_data,
352       x_person_id           => x_person_id
353     );
354     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
355                     x_return_status   => x_return_status,
356                     x_msg_count       => l_msg_count,
357                     x_msg_data        => l_msg_data);
358     IF FND_API.to_Boolean(p_return_obj_flag) THEN
359       x_return_obj := l_pc_obj;
360     END IF;
361   END create_person_cust_bo;
362 
363   -- PROCEDURE do_update_person_cust_bo
364   --
365   -- DESCRIPTION
366   --     Update person customer account.
367   PROCEDURE do_update_person_cust_bo(
368     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
369     p_person_cust_obj     IN OUT NOCOPY HZ_PERSON_CUST_BO,
370     p_created_by_module   IN            VARCHAR2,
371     p_obj_source          IN            VARCHAR2 := null,
372     x_return_status       OUT NOCOPY    VARCHAR2,
373     x_msg_count           OUT NOCOPY    NUMBER,
374     x_msg_data            OUT NOCOPY    VARCHAR2,
375     x_person_id           OUT NOCOPY    NUMBER
376   ) IS
377     l_person_os           VARCHAR2(30);
378     l_person_osr          VARCHAR2(255);
379     l_debug_prefix        VARCHAR2(30) := '';
380     l_per_raise_event     BOOLEAN := FALSE;
381     l_pc_raise_event      BOOLEAN := FALSE;
382     l_cbm                 VARCHAR2(30);
383     l_per_event_id        NUMBER;
384     l_pc_event_id         NUMBER;
385   BEGIN
386     -- Standard start of API savepoint
387     SAVEPOINT do_update_person_cust_pub;
388 
389     -- initialize API return status to success.
390     x_return_status := FND_API.G_RET_STS_SUCCESS;
391 
392     -- Initialize message list if p_init_msg_list is set to TRUE
393     IF FND_API.to_Boolean(p_init_msg_list) THEN
394       FND_MSG_PUB.initialize;
395     END IF;
396 
397     -- Debug info.
398     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
399         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_bo(+)',
400                                p_prefix=>l_debug_prefix,
401                                p_msg_level=>fnd_log.level_procedure);
402     END IF;
403 
404     -- initialize Global variable
405     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
406     IF(p_created_by_module IS NULL) THEN
407       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
408     ELSE
409       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
410     END IF;
411 
412     x_person_id := p_person_cust_obj.person_obj.person_id;
413     l_person_os := p_person_cust_obj.person_obj.orig_system;
414     l_person_osr:= p_person_cust_obj.person_obj.orig_system_reference;
415 
416     -- check input party_id and os+osr
417     hz_registry_validate_bo_pvt.validate_ssm_id(
418       px_id              => x_person_id,
419       px_os              => l_person_os,
420       px_osr             => l_person_osr,
421       p_obj_type         => 'PERSON',
422       p_create_or_update => 'U',
423       x_return_status    => x_return_status,
424       x_msg_count        => x_msg_count,
425       x_msg_data         => x_msg_data);
426 
427     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
428       RAISE FND_API.G_EXC_ERROR;
429     END IF;
430 
431     -- get person_id and then call
432     l_per_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
433                            p_party_id          => x_person_id,
434                            p_bo_code           => 'PERSON'
435                          );
436 
437     l_pc_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
438                           p_party_id          => x_person_id,
439                           p_bo_code           => 'PERSON_CUST'
440                         );
441 
442     IF(l_per_raise_event) THEN
443       -- Get event_id for person
444       SELECT HZ_BUS_OBJ_TRACKING_S.nextval
445       INTO l_per_event_id
446       FROM DUAL;
447     END IF;
448 
449     IF(l_pc_raise_event) THEN
450       -- Get event_id for person customer
451       SELECT HZ_BUS_OBJ_TRACKING_S.nextval
452       INTO l_pc_event_id
453       FROM DUAL;
454     END IF;
455 
456     -- acknowledge update_organization_bo not to raise event
457     HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := 'Y';
458     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
459 
460     HZ_PERSON_BO_PUB.do_update_person_bo(
461       p_init_msg_list          => fnd_api.g_false,
462       p_person_obj             => p_person_cust_obj.person_obj,
463       p_created_by_module      => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
464       p_obj_source             => p_obj_source,
465       x_return_status          => x_return_status,
466       x_msg_count              => x_msg_count,
467       x_msg_data               => x_msg_data,
468       x_person_id              => x_person_id,
469       x_person_os              => l_person_os,
470       x_person_osr             => l_person_osr
471     );
472 
473     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
474       RAISE fnd_api.g_exc_error;
475     END IF;
476 
477     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
478 
479     IF((p_person_cust_obj.account_objs IS NOT NULL) AND
480        (p_person_cust_obj.account_objs.COUNT > 0)) THEN
481       HZ_CUST_ACCT_BO_PVT.save_cust_accts(
482         p_ca_objs                => p_person_cust_obj.account_objs,
483         p_create_update_flag     => 'U',
484         x_return_status          => x_return_status,
485         x_msg_count              => x_msg_count,
486         x_msg_data               => x_msg_data,
487         p_parent_id              => x_person_id,
488         p_parent_os              => l_person_os,
489         p_parent_osr             => l_person_osr,
490         p_parent_obj_type        => 'PERSON'
491       );
492 
493       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
494         RAISE fnd_api.g_exc_error;
495       END IF;
496     END IF;
497 
498     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
499 
500     -- raise event
501     IF(l_per_raise_event) THEN
502       -- raise update org event
503       HZ_PARTY_BO_PVT.call_bes(
504         p_party_id         => x_person_id,
505         p_bo_code          => 'PERSON',
506         p_create_or_update => 'U',
507         p_obj_source       => p_obj_source,
508         p_event_id         => l_per_event_id
509       );
510     END IF;
511 
512     IF(l_pc_raise_event) THEN
513       -- raise update org cust event
514       HZ_PARTY_BO_PVT.call_bes(
515         p_party_id         => x_person_id,
516         p_bo_code          => 'PERSON_CUST',
517         p_create_or_update => 'U',
518         p_obj_source       => p_obj_source,
519         p_event_id         => l_pc_event_id
520       );
521     END IF;
522 
523     -- reset Global variable
524     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
525     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
526     HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
527 
528     -- Debug info.
529     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
530          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
531                                p_msg_data=>x_msg_data,
532                                p_msg_type=>'WARNING',
533                                p_msg_level=>fnd_log.level_exception);
534     END IF;
535     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
536         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_bo(-)',
537                                p_prefix=>l_debug_prefix,
538                                p_msg_level=>fnd_log.level_procedure);
539     END IF;
540   EXCEPTION
541     WHEN fnd_api.g_exc_error THEN
542       ROLLBACK TO do_update_person_cust_pub;
543 
544       -- reset Global variable
545       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
546       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
547       HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
548 
549       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
550       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
551       FND_MSG_PUB.ADD;
552 
553       x_return_status := fnd_api.g_ret_sts_error;
554 
555       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
556                                 p_count => x_msg_count,
557                                 p_data  => x_msg_data);
558 
559       -- Debug info.
560       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
561         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
562                                p_msg_data=>x_msg_data,
563                                p_msg_type=>'ERROR',
564                                p_msg_level=>fnd_log.level_error);
565       END IF;
566       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
567         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_bo(-)',
568                                p_prefix=>l_debug_prefix,
569                                p_msg_level=>fnd_log.level_procedure);
570       END IF;
571 
572     WHEN fnd_api.g_exc_unexpected_error THEN
573       ROLLBACK TO do_update_person_cust_pub;
574 
575       -- reset Global variable
576       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
577       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
578       HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
579 
580       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
581       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
582       FND_MSG_PUB.ADD;
583 
584       x_return_status := fnd_api.g_ret_sts_unexp_error;
585 
586       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
587                                 p_count => x_msg_count,
588                                 p_data  => x_msg_data);
589 
590       -- Debug info.
591       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
592         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
593                                p_msg_data=>x_msg_data,
594                                p_msg_type=>'UNEXPECTED ERROR',
595                                p_msg_level=>fnd_log.level_error);
596       END IF;
597       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
598         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_bo(-)',
599                                p_prefix=>l_debug_prefix,
600                                p_msg_level=>fnd_log.level_procedure);
601       END IF;
602 
603     WHEN OTHERS THEN
604       ROLLBACK TO do_update_person_cust_pub;
605 
606       -- reset Global variable
607       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
608       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
609       HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
610 
611       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
612       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
613       FND_MSG_PUB.ADD;
614 
615       x_return_status := fnd_api.g_ret_sts_unexp_error;
616 
617       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
618       fnd_message.set_token('ERROR' ,SQLERRM);
619       fnd_msg_pub.add;
620 
621       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
622                                 p_count => x_msg_count,
623                                 p_data  => x_msg_data);
624 
625       -- Debug info.
626       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
627         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
628                                p_msg_data=>x_msg_data,
629                                p_msg_type=>'SQL ERROR',
630                                p_msg_level=>fnd_log.level_error);
631       END IF;
632       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
633         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_bo(-)',
634                                p_prefix=>l_debug_prefix,
635                                p_msg_level=>fnd_log.level_procedure);
636       END IF;
637   END do_update_person_cust_bo;
638 
639   PROCEDURE update_person_cust_bo(
640     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
641     p_person_cust_obj     IN            HZ_PERSON_CUST_BO,
642     p_created_by_module   IN            VARCHAR2,
643     x_return_status       OUT NOCOPY    VARCHAR2,
644     x_msg_count           OUT NOCOPY    NUMBER,
645     x_msg_data            OUT NOCOPY    VARCHAR2,
646     x_person_id           OUT NOCOPY    NUMBER
647   ) IS
648     l_pc_obj    HZ_PERSON_CUST_BO;
649   BEGIN
650     l_pc_obj := p_person_cust_obj;
651     do_update_person_cust_bo(
652       p_init_msg_list       => p_init_msg_list,
653       p_person_cust_obj     => l_pc_obj,
654       p_created_by_module   => p_created_by_module,
655       p_obj_source          => null,
656       x_return_status       => x_return_status,
657       x_msg_count           => x_msg_count,
658       x_msg_data            => x_msg_data,
659       x_person_id           => x_person_id
660     );
661   END update_person_cust_bo;
662 
663   PROCEDURE update_person_cust_bo(
664     p_person_cust_obj     IN            HZ_PERSON_CUST_BO,
665     p_created_by_module   IN            VARCHAR2,
666     p_obj_source          IN            VARCHAR2 := null,
667     p_return_obj_flag     IN            VARCHAR2 := fnd_api.g_true,
668     x_return_status       OUT NOCOPY    VARCHAR2,
669     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
670     x_return_obj          OUT NOCOPY    HZ_PERSON_CUST_BO,
671     x_person_id           OUT NOCOPY    NUMBER
672   ) IS
673     l_msg_data            VARCHAR2(2000);
674     l_msg_count           NUMBER;
675     l_pc_obj              HZ_PERSON_CUST_BO;
676   BEGIN
677     l_pc_obj := p_person_cust_obj;
678     do_update_person_cust_bo(
679       p_init_msg_list       => fnd_api.g_true,
680       p_person_cust_obj     => l_pc_obj,
681       p_created_by_module   => p_created_by_module,
682       p_obj_source          => p_obj_source,
683       x_return_status       => x_return_status,
684       x_msg_count           => l_msg_count,
685       x_msg_data            => l_msg_data,
686       x_person_id           => x_person_id
687     );
688     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
689                     x_return_status   => x_return_status,
690                     x_msg_count       => l_msg_count,
691                     x_msg_data        => l_msg_data);
692     IF FND_API.to_Boolean(p_return_obj_flag) THEN
693       x_return_obj := l_pc_obj;
694     END IF;
695   END update_person_cust_bo;
696 
697   -- PROCEDURE save_person_cust_bo
698   --
699   -- DESCRIPTION
700   --     Create or update person customer account.
701   PROCEDURE do_save_person_cust_bo(
702     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
703     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
704     p_person_cust_obj     IN OUT NOCOPY HZ_PERSON_CUST_BO,
705     p_created_by_module   IN            VARCHAR2,
706     p_obj_source          IN            VARCHAR2 := null,
707     x_return_status       OUT NOCOPY    VARCHAR2,
708     x_msg_count           OUT NOCOPY    NUMBER,
709     x_msg_data            OUT NOCOPY    VARCHAR2,
710     x_person_id           OUT NOCOPY    NUMBER
711   ) IS
712     l_person_id                NUMBER;
713     l_person_os                VARCHAR2(30);
714     l_person_osr               VARCHAR2(255);
715     l_debug_prefix             VARCHAR2(30) := '';
716     l_create_update_flag       VARCHAR2(1);
717   BEGIN
718     -- initialize API return status to success.
719     x_return_status := FND_API.G_RET_STS_SUCCESS;
720 
721     -- Initialize message list if p_init_msg_list is set to TRUE
722     IF FND_API.to_Boolean(p_init_msg_list) THEN
723       FND_MSG_PUB.initialize;
724     END IF;
725 
726     -- Debug info.
727     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
728         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_bo(+)',
729                                p_prefix=>l_debug_prefix,
730                                p_msg_level=>fnd_log.level_procedure);
731     END IF;
732 
733     l_person_id := p_person_cust_obj.person_obj.person_id;
734     l_person_os := p_person_cust_obj.person_obj.orig_system;
735     l_person_osr:= p_person_cust_obj.person_obj.orig_system_reference;
736 
737     -- check root business object to determine that it should be
738     -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
739     l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
740                               p_entity_id      => l_person_id,
741                               p_entity_os      => l_person_os,
742                               p_entity_osr     => l_person_osr,
743                               p_entity_type    => 'HZ_PARTIES',
744                               p_parent_id      => NULL,
745                               p_parent_obj_type=> NULL );
746 
747     IF(l_create_update_flag = 'E') THEN
748       FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
749       FND_MSG_PUB.ADD;
750       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
751       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
752       FND_MSG_PUB.ADD;
753       RAISE FND_API.G_EXC_ERROR;
754     END IF;
755 
756     IF(l_create_update_flag = 'C') THEN
757       do_create_person_cust_bo(
758         p_init_msg_list       => fnd_api.g_false,
759         p_validate_bo_flag    => p_validate_bo_flag,
760         p_person_cust_obj     => p_person_cust_obj,
761         p_created_by_module   => p_created_by_module,
762         p_obj_source          => p_obj_source,
763         x_return_status       => x_return_status,
764         x_msg_count           => x_msg_count,
765         x_msg_data            => x_msg_data,
766         x_person_id           => x_person_id
767       );
768     ELSIF(l_create_update_flag = 'U') THEN
769       do_update_person_cust_bo(
770         p_init_msg_list       => fnd_api.g_false,
771         p_person_cust_obj     => p_person_cust_obj,
772         p_created_by_module   => p_created_by_module,
773         p_obj_source          => p_obj_source,
774         x_return_status       => x_return_status,
775         x_msg_count           => x_msg_count,
776         x_msg_data            => x_msg_data,
777         x_person_id           => x_person_id
778       );
779     ELSE
780       RAISE FND_API.G_EXC_ERROR;
781     END IF;
782 
783     -- Debug info.
784     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
785          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
786                                p_msg_data=>x_msg_data,
787                                p_msg_type=>'WARNING',
788                                p_msg_level=>fnd_log.level_exception);
789     END IF;
790     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
791         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_bo(-)',
792                                p_prefix=>l_debug_prefix,
793                                p_msg_level=>fnd_log.level_procedure);
794     END IF;
795   EXCEPTION
796     WHEN fnd_api.g_exc_error THEN
797       x_return_status := fnd_api.g_ret_sts_error;
798 
799       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
800                                 p_count => x_msg_count,
801                                 p_data  => x_msg_data);
802 
803       -- Debug info.
804       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
805         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
806                                p_msg_data=>x_msg_data,
807                                p_msg_type=>'ERROR',
808                                p_msg_level=>fnd_log.level_error);
809       END IF;
810       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
811         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_bo(-)',
812                                p_prefix=>l_debug_prefix,
813                                p_msg_level=>fnd_log.level_procedure);
814       END IF;
815 
816     WHEN fnd_api.g_exc_unexpected_error THEN
817       x_return_status := fnd_api.g_ret_sts_unexp_error;
818 
819       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
820                                 p_count => x_msg_count,
821                                 p_data  => x_msg_data);
822 
823       -- Debug info.
824       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
825         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
826                                p_msg_data=>x_msg_data,
827                                p_msg_type=>'UNEXPECTED ERROR',
828                                p_msg_level=>fnd_log.level_error);
829       END IF;
830       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
831         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_bo(-)',
832                                p_prefix=>l_debug_prefix,
833                                p_msg_level=>fnd_log.level_procedure);
834       END IF;
835     WHEN OTHERS THEN
836       x_return_status := fnd_api.g_ret_sts_unexp_error;
837 
838       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
839       fnd_message.set_token('ERROR' ,SQLERRM);
840       fnd_msg_pub.add;
841 
842       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
843                                 p_count => x_msg_count,
844                                 p_data  => x_msg_data);
845 
846       -- Debug info.
847       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
848         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
849                                p_msg_data=>x_msg_data,
850                                p_msg_type=>'SQL ERROR',
851                                p_msg_level=>fnd_log.level_error);
852       END IF;
853       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
854         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_bo(-)',
855                                p_prefix=>l_debug_prefix,
856                                p_msg_level=>fnd_log.level_procedure);
857       END IF;
858   END do_save_person_cust_bo;
859 
860   PROCEDURE save_person_cust_bo(
861     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
862     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
863     p_person_cust_obj     IN            HZ_PERSON_CUST_BO,
864     p_created_by_module   IN            VARCHAR2,
865     x_return_status       OUT NOCOPY    VARCHAR2,
866     x_msg_count           OUT NOCOPY    NUMBER,
867     x_msg_data            OUT NOCOPY    VARCHAR2,
868     x_person_id           OUT NOCOPY    NUMBER
869   ) IS
870     l_pc_obj              HZ_PERSON_CUST_BO;
871   BEGIN
872     l_pc_obj := p_person_cust_obj;
873     do_save_person_cust_bo(
874       p_init_msg_list       => p_init_msg_list,
875       p_validate_bo_flag    => p_validate_bo_flag,
876       p_person_cust_obj     => l_pc_obj,
877       p_created_by_module   => p_created_by_module,
878       p_obj_source          => null,
879       x_return_status       => x_return_status,
880       x_msg_count           => x_msg_count,
881       x_msg_data            => x_msg_data,
882       x_person_id           => x_person_id
883     );
884   END save_person_cust_bo;
885 
886   PROCEDURE save_person_cust_bo(
887     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
888     p_person_cust_obj     IN            HZ_PERSON_CUST_BO,
889     p_created_by_module   IN            VARCHAR2,
890     p_obj_source          IN            VARCHAR2 := null,
891     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
892     x_return_status       OUT NOCOPY    VARCHAR2,
893     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
894     x_return_obj          OUT NOCOPY    HZ_PERSON_CUST_BO,
895     x_person_id           OUT NOCOPY    NUMBER
896   ) IS
897     l_msg_data            VARCHAR2(2000);
898     l_msg_count           NUMBER;
899     l_pc_obj              HZ_PERSON_CUST_BO;
900   BEGIN
901     l_pc_obj := p_person_cust_obj;
902     do_save_person_cust_bo(
903       p_init_msg_list       => fnd_api.g_true,
904       p_validate_bo_flag    => p_validate_bo_flag,
905       p_person_cust_obj     => l_pc_obj,
906       p_created_by_module   => p_created_by_module,
907       p_obj_source          => p_obj_source,
908       x_return_status       => x_return_status,
909       x_msg_count           => l_msg_count,
910       x_msg_data            => l_msg_data,
911       x_person_id           => x_person_id
912     );
913     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
914                     x_return_status   => x_return_status,
915                     x_msg_count       => l_msg_count,
916                     x_msg_data        => l_msg_data);
917     IF FND_API.to_Boolean(p_return_obj_flag) THEN
918       x_return_obj := l_pc_obj;
919     END IF;
920   END save_person_cust_bo;
921 
922   --------------------------------------
923   --
924   -- PROCEDURE get_person_cust_bo
925   --
926   -- DESCRIPTION
927   --     Get a logical person customer.
928   --
929   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
930   --
931   -- ARGUMENTS
932   --   IN:
933   --     p_init_msg_list      Initialize message stack if it is set to FND_API.G_TRUE. Default is FND_API.G_FALSE.
934 --       p_person_id          Person ID.
935  --     p_person_os           Person orig system.
936   --     p_person_osr         Person orig system reference.
937 
938   --   OUT:
939   --     x_person_cust_obj         Logical person customer record.
940   --     x_return_status      Return status after the call. The status can
941   --                          be fnd_api.g_ret_sts_success (success),
942   --                          fnd_api.g_ret_sts_error (error),
943   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
944   --     x_msg_count          Number of messages in message stack.
945   --     x_msg_data           Message text if x_msg_count is 1.
946   --
947   -- NOTES
948   --
949   -- MODIFICATION HISTORY
950   --
951   --
952   --   10-JUN-2005   AWU                Created.
953   --
954 
955 /*
956 The Get Person Customer API Procedure is a retrieval service that returns a full Person Customer business object.
957 The user identifies a particular Person Customer business object using the TCA identifier and/or
958 the object Source System information. Upon proper validation of the object,
959 the full Person Customer business object is returned. The object consists of all data included within
960 the Person Customer business object, at all embedded levels. This includes the set of all data stored
961 in the TCA tables for each embedded entity.
962 
963 To retrieve the appropriate embedded business objects within the Person Customer business object,
964 the Get procedure calls the equivalent procedure for the following embedded objects:
965 
966 Embedded BO	    Mandatory	Multiple Logical API Procedure		Comments
967 
968 Person			Y	N	get_person_bo
969 Customer Account	Y	Y	get_cust_acct_bo	Called for each Customer Account object for the Person Customer
970 
971 */
972 
973 
974 
975  PROCEDURE get_person_cust_bo(
976     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
977     p_person_id           IN            NUMBER,
978     p_person_os		IN	VARCHAR2,
979     p_person_osr		IN	VARCHAR2,
980     x_person_cust_obj     OUT NOCOPY    HZ_PERSON_CUST_BO,
981     x_return_status       OUT NOCOPY    VARCHAR2,
982     x_msg_count           OUT NOCOPY    NUMBER,
983     x_msg_data            OUT NOCOPY    VARCHAR2
984   )  is
985  l_debug_prefix              VARCHAR2(30) := '';
986 
987   l_person_id  number;
988   l_person_os  varchar2(30);
989   l_person_osr varchar2(255);
990 BEGIN
991 
992 	-- initialize API return status to success.
993     	x_return_status := FND_API.G_RET_STS_SUCCESS;
994 
995     	-- Initialize message list if p_init_msg_list is set to TRUE
996     	IF FND_API.to_Boolean(p_init_msg_list) THEN
997       		FND_MSG_PUB.initialize;
998     	END IF;
999 
1000 
1001 	-- Debug info.
1002         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1003         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_bo(+)',
1004                                p_prefix=>l_debug_prefix,
1005                                p_msg_level=>fnd_log.level_procedure);
1006     	END IF;
1007 
1008     	-- check if pass in contact_point_id and/or os+osr
1009     	-- extraction validation logic is same as update
1010 
1011     	l_person_id := p_person_id;
1012     	l_person_os := p_person_os;
1013     	l_person_osr := p_person_osr;
1014 
1015     	HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
1016       		px_id              => l_person_id,
1017       		px_os              => l_person_os,
1018       		px_osr             => l_person_osr,
1019       		p_obj_type         => 'PERSON',
1020       		x_return_status    => x_return_status,
1021       		x_msg_count        => x_msg_count,
1022       		x_msg_data         => x_msg_data);
1023 
1024     	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1025       		RAISE fnd_api.g_exc_error;
1026    	 END IF;
1027 
1028 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_person_cust_bo(
1029     		p_init_msg_list   => fnd_api.g_false,
1030     		p_person_id => l_person_id,
1031     		p_action_type	  => NULL,
1032     		x_person_cust_obj => x_person_cust_obj,
1033 		x_return_status => x_return_status,
1034 		x_msg_count => x_msg_count,
1035 		x_msg_data => x_msg_data);
1036 
1037 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1038       		RAISE FND_API.G_EXC_ERROR;
1039     	END IF;
1040 
1041 
1042 	-- Debug info.
1043     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1044          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1045                                p_msg_data=>x_msg_data,
1046                                p_msg_type=>'WARNING',
1047                                p_msg_level=>fnd_log.level_exception);
1048     	END IF;
1049 
1050     	-- Debug info.
1051         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1052         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_bo (-)',
1053                                p_prefix=>l_debug_prefix,
1054                                p_msg_level=>fnd_log.level_procedure);
1055     	END IF;
1056 
1057 
1058  EXCEPTION
1059 
1060   WHEN fnd_api.g_exc_error THEN
1061       x_return_status := fnd_api.g_ret_sts_error;
1062 
1063       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1064                                 p_count => x_msg_count,
1065                                 p_data  => x_msg_data);
1066 
1067       -- Debug info.
1068       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1069         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1070                                p_msg_data=>x_msg_data,
1071                                p_msg_type=>'ERROR',
1072                                p_msg_level=>fnd_log.level_error);
1073       END IF;
1074       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1075         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_bo (-)',
1076                                p_prefix=>l_debug_prefix,
1077                                p_msg_level=>fnd_log.level_procedure);
1078       END IF;
1079     WHEN fnd_api.g_exc_unexpected_error THEN
1080       x_return_status := fnd_api.g_ret_sts_unexp_error;
1081 
1082       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1083                                 p_count => x_msg_count,
1084                                 p_data  => x_msg_data);
1085 
1086       -- Debug info.
1087       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1088         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1089                                p_msg_data=>x_msg_data,
1090                                p_msg_type=>'UNEXPECTED ERROR',
1091                                p_msg_level=>fnd_log.level_error);
1092       END IF;
1093       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1094         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_bo (-)',
1095                                p_prefix=>l_debug_prefix,
1096                                p_msg_level=>fnd_log.level_procedure);
1097       END IF;
1098     WHEN OTHERS THEN
1099       x_return_status := fnd_api.g_ret_sts_unexp_error;
1100 
1101       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1102       fnd_message.set_token('ERROR' ,SQLERRM);
1103       fnd_msg_pub.add;
1104 
1105       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1106                                 p_count => x_msg_count,
1107                                 p_data  => x_msg_data);
1108 
1109       -- Debug info.
1110       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1111         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1112                                p_msg_data=>x_msg_data,
1113                                p_msg_type=>'SQL ERROR',
1114                                p_msg_level=>fnd_log.level_error);
1115       END IF;
1116       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1117         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_bo (-)',
1118                                p_prefix=>l_debug_prefix,
1119                                p_msg_level=>fnd_log.level_procedure);
1120       END IF;
1121 
1122 end;
1123 
1124   PROCEDURE get_person_cust_bo(
1125     p_person_id           IN            NUMBER,
1126     p_person_os         IN      VARCHAR2,
1127     p_person_osr                IN      VARCHAR2,
1128     x_person_cust_obj     OUT NOCOPY    HZ_PERSON_CUST_BO,
1129     x_return_status       OUT NOCOPY    VARCHAR2,
1130     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
1131   ) IS
1132     l_msg_data            VARCHAR2(2000);
1133     l_msg_count           NUMBER;
1134   BEGIN
1135     get_person_cust_bo(
1136       p_init_msg_list   => fnd_api.g_true,
1137       p_person_id       => p_person_id,
1138       p_person_os       => p_person_os,
1139       p_person_osr      => p_person_osr,
1140       x_person_cust_obj => x_person_cust_obj,
1141       x_return_status   => x_return_status,
1142       x_msg_count       => l_msg_count,
1143       x_msg_data        => l_msg_data
1144     );
1145     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1146                     x_return_status   => x_return_status,
1147                     x_msg_count       => l_msg_count,
1148                     x_msg_data        => l_msg_data);
1149   END get_person_cust_bo;
1150 
1151  --------------------------------------
1152   --
1153   -- PROCEDURE get_person_custs_created
1154   --
1155   -- DESCRIPTION
1156   --The caller provides an identifier for the Person Customers created business event and
1157   --the procedure returns database objects of the type HZ_PERSON_CUST CUSTOMER_BO for all of
1158   --the Person Customer business objects from the business event.
1159 
1160   --
1161   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1162   --
1163   -- ARGUMENTS
1164   --   IN:
1165   --     p_init_msg_list      Initialize message stack if it is set to
1166   --     p_event_id           BES Event identifier.
1167   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
1168   --   OUT:
1169   --     x_person_cust_objs   One or more created logical person customer.
1170   --     x_return_status      Return status after the call. The status can
1171   --                          be fnd_api.g_ret_sts_success (success),
1172   --                          fnd_api.g_ret_sts_error (error),
1173   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1174   --     x_msg_count          Number of messages in message stack.
1175   --     x_msg_data           Message text if x_msg_count is 1.
1176   --
1177   -- NOTES
1178   --
1179   -- MODIFICATION HISTORY
1180   --
1181   --   10-JUN-2005    AWU                Created.
1182   --
1183 
1184 
1185 
1186 /*
1187 The Get Person customers Created procedure is a service to retrieve all of the Person Customer business objects
1188 whose creations have been captured by a logical business event. Each Person Customers Created
1189 business event signifies that one or more Person Customer business objects have been created.
1190 The caller provides an identifier for the Person Customers Created business event and the procedure
1191 returns all of the Person Customer business objects from the business event. For each business object
1192 creation captured in the business event, the procedure calls the generic Get operation:
1193 HZ_PERSON_CUST_BO_PVT.get_person_cust_bo
1194 
1195 Gathering all of the returned business objects from those API calls, the procedure packages
1196 them in a table structure and returns them to the caller.
1197 */
1198 
1199 
1200 PROCEDURE get_person_custs_created(
1201     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
1202     p_event_id            IN           	NUMBER,
1203     x_person_cust_objs    OUT NOCOPY    HZ_PERSON_CUST_BO_TBL,
1204     x_return_status       OUT NOCOPY    VARCHAR2,
1205     x_msg_count           OUT NOCOPY    NUMBER,
1206     x_msg_data            OUT NOCOPY    VARCHAR2
1207   ) is
1208 l_debug_prefix              VARCHAR2(30) := '';
1209 begin
1210 
1211 	-- initialize API return status to success.
1212     	x_return_status := FND_API.G_RET_STS_SUCCESS;
1213 
1214     	-- Initialize message list if p_init_msg_list is set to TRUE
1215     	IF FND_API.to_Boolean(p_init_msg_list) THEN
1216       		FND_MSG_PUB.initialize;
1217     	END IF;
1218 
1219 
1220 	-- Debug info.
1221         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1222         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_created(+)',
1223                                p_prefix=>l_debug_prefix,
1224                                p_msg_level=>fnd_log.level_procedure);
1225     	END IF;
1226 
1227 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
1228 			    p_party_id => null,
1229 			    p_event_type => 'C',
1230 			    p_bo_code => 'PERSON_CUST',
1231 			    x_return_status => x_return_status);
1232 
1233 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1234       		RAISE FND_API.G_EXC_ERROR;
1235     	END IF;
1236 
1237 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_person_custs_created(
1238     		p_init_msg_list => fnd_api.g_false,
1239 		p_event_id => p_event_id,
1240     		x_person_cust_objs  => x_person_cust_objs,
1241 		x_return_status => x_return_status,
1242 		x_msg_count => x_msg_count,
1243 		x_msg_data => x_msg_data);
1244 
1245 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1246       		RAISE FND_API.G_EXC_ERROR;
1247     	END IF;
1248 
1249 
1250 
1251 	-- Debug info.
1252     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1253          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1254                                p_msg_data=>x_msg_data,
1255                                p_msg_type=>'WARNING',
1256                                p_msg_level=>fnd_log.level_exception);
1257     	END IF;
1258 
1259     	-- Debug info.
1260         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1261         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_created (-)',
1262                                p_prefix=>l_debug_prefix,
1263                                p_msg_level=>fnd_log.level_procedure);
1264     	END IF;
1265 
1266 
1267  EXCEPTION
1268 
1269   WHEN fnd_api.g_exc_error THEN
1270       x_return_status := fnd_api.g_ret_sts_error;
1271 
1272       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1273                                 p_count => x_msg_count,
1274                                 p_data  => x_msg_data);
1275 
1276       -- Debug info.
1277       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1278         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1279                                p_msg_data=>x_msg_data,
1280                                p_msg_type=>'ERROR',
1281                                p_msg_level=>fnd_log.level_error);
1282       END IF;
1283       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1284         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_created(-)',
1285                                p_prefix=>l_debug_prefix,
1286                                p_msg_level=>fnd_log.level_procedure);
1287       END IF;
1288     WHEN fnd_api.g_exc_unexpected_error THEN
1289       x_return_status := fnd_api.g_ret_sts_unexp_error;
1290 
1291       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1292                                 p_count => x_msg_count,
1293                                 p_data  => x_msg_data);
1294 
1295       -- Debug info.
1296       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1297         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1298                                p_msg_data=>x_msg_data,
1299                                p_msg_type=>'UNEXPECTED ERROR',
1300                                p_msg_level=>fnd_log.level_error);
1301       END IF;
1302       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1303         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_created(-)',
1304                                p_prefix=>l_debug_prefix,
1305                                p_msg_level=>fnd_log.level_procedure);
1306       END IF;
1307     WHEN OTHERS THEN
1308       x_return_status := fnd_api.g_ret_sts_unexp_error;
1309 
1310       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1311       fnd_message.set_token('ERROR' ,SQLERRM);
1312       fnd_msg_pub.add;
1313 
1314       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1315                                 p_count => x_msg_count,
1316                                 p_data  => x_msg_data);
1317 
1318       -- Debug info.
1319       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1320         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1321                                p_msg_data=>x_msg_data,
1322                                p_msg_type=>'SQL ERROR',
1323                                p_msg_level=>fnd_log.level_error);
1324       END IF;
1325       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1326         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_created(-)',
1327                                p_prefix=>l_debug_prefix,
1328                                p_msg_level=>fnd_log.level_procedure);
1329       END IF;
1330 
1331 end;
1332 
1333   PROCEDURE get_person_custs_created(
1334     p_event_id            IN            NUMBER,
1335     x_person_cust_objs    OUT NOCOPY    HZ_PERSON_CUST_BO_TBL,
1336     x_return_status       OUT NOCOPY    VARCHAR2,
1337     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
1338   ) IS
1339     l_msg_data            VARCHAR2(2000);
1340     l_msg_count           NUMBER;
1341   BEGIN
1342     get_person_custs_created(
1343       p_init_msg_list       => fnd_api.g_true,
1344       p_event_id            => p_event_id,
1345       x_person_cust_objs    => x_person_cust_objs,
1346       x_return_status       => x_return_status,
1347       x_msg_count           => l_msg_count,
1348       x_msg_data            => l_msg_data
1349     );
1350     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1351                     x_return_status   => x_return_status,
1352                     x_msg_count       => l_msg_count,
1353                     x_msg_data        => l_msg_data);
1354   END get_person_custs_created;
1355 
1356 
1357 
1358 
1359 --------------------------------------
1360   --
1361   -- PROCEDURE get_person_custs_updated
1362   --
1363   -- DESCRIPTION
1364   --The caller provides an identifier for the Person Customers update business event and
1365   --the procedure returns database objects of the type HZ_PERSON_CUST_BO for all of
1366   --the Person Customer business objects from the business event.
1367 
1368   --
1369   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1370   --
1371   -- ARGUMENTS
1372   --   IN:
1373   --     p_init_msg_list      Initialize message stack if it is set to
1374   --     p_event_id           BES Event identifier.
1375   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
1376   --   OUT:
1377   --     x_person_cust_objs   One or more created logical person.
1378   --     x_return_status      Return status after the call. The status can
1379   --                          be fnd_api.g_ret_sts_success (success),
1380   --                          fnd_api.g_ret_sts_error (error),
1381   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1382   --     x_msg_count          Number of messages in message stack.
1383   --     x_msg_data           Message text if x_msg_count is 1.
1384   --
1385   -- NOTES
1386   --
1387   -- MODIFICATION HISTORY
1388   --
1389   --   10-JUN-2005     AWU                Created.
1390   --
1391 
1392 
1393 
1394 /*
1395 The Get Person Customers Updated procedure is a service to retrieve all of the Person Customer business objects whose updates
1396 have been captured by the logical business event. Each Person Customers Updated business event signifies that one or more Person
1397 Customer business objects have been updated.
1398 The caller provides an identifier for the Person Customers Update business event and the procedure returns database objects of
1399 the type HZ_PERSON_CUST_BO for all of the Person Customer business objects from the business event.
1400 Gathering all of the returned database objects from those API calls, the procedure packages them in a table structure and returns
1401 them to the caller.
1402 */
1403 
1404  PROCEDURE get_person_custs_updated(
1405     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
1406     p_event_id            IN           	NUMBER,
1407     x_person_cust_objs         OUT NOCOPY    HZ_PERSON_CUST_BO_TBL,
1408     x_return_status       OUT NOCOPY    VARCHAR2,
1409     x_msg_count           OUT NOCOPY    NUMBER,
1410     x_msg_data            OUT NOCOPY    VARCHAR2
1411   ) is
1412 
1413 l_debug_prefix              VARCHAR2(30) := '';
1414 begin
1415 
1416 	-- initialize API return status to success.
1417     	x_return_status := FND_API.G_RET_STS_SUCCESS;
1418 
1419     	-- Initialize message list if p_init_msg_list is set to TRUE
1420     	IF FND_API.to_Boolean(p_init_msg_list) THEN
1421       		FND_MSG_PUB.initialize;
1422     	END IF;
1423 
1424 
1425 	-- Debug info.
1426         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1427         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_updated(+)',
1428                                p_prefix=>l_debug_prefix,
1429                                p_msg_level=>fnd_log.level_procedure);
1430     	END IF;
1431 
1432 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
1433 			    p_party_id => null,
1434 			    p_event_type => 'U',
1435 			    p_bo_code => 'PERSON_CUST',
1436 			    x_return_status => x_return_status);
1437 
1438 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1439       		RAISE FND_API.G_EXC_ERROR;
1440     	END IF;
1441 
1442 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_person_custs_updated(
1443     		p_init_msg_list => fnd_api.g_false,
1444 		p_event_id => p_event_id,
1445     		x_person_cust_objs  => x_person_cust_objs,
1446 		x_return_status => x_return_status,
1447 		x_msg_count => x_msg_count,
1448 		x_msg_data => x_msg_data);
1449 
1450 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1451       		RAISE FND_API.G_EXC_ERROR;
1452     	END IF;
1453 
1454 
1455 
1456 	-- Debug info.
1457     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1458          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1459                                p_msg_data=>x_msg_data,
1460                                p_msg_type=>'WARNING',
1461                                p_msg_level=>fnd_log.level_exception);
1462     	END IF;
1463 
1464     	-- Debug info.
1465         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1466         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_updated (-)',
1467                                p_prefix=>l_debug_prefix,
1468                                p_msg_level=>fnd_log.level_procedure);
1469     	END IF;
1470 
1471 
1472  EXCEPTION
1473 
1474   WHEN fnd_api.g_exc_error THEN
1475       x_return_status := fnd_api.g_ret_sts_error;
1476 
1477       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1478                                 p_count => x_msg_count,
1479                                 p_data  => x_msg_data);
1480 
1481       -- Debug info.
1482       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1483         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1484                                p_msg_data=>x_msg_data,
1485                                p_msg_type=>'ERROR',
1486                                p_msg_level=>fnd_log.level_error);
1487       END IF;
1488       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1489         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_updated(-)',
1490                                p_prefix=>l_debug_prefix,
1491                                p_msg_level=>fnd_log.level_procedure);
1492       END IF;
1493     WHEN fnd_api.g_exc_unexpected_error THEN
1494       x_return_status := fnd_api.g_ret_sts_unexp_error;
1495 
1496       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1497                                 p_count => x_msg_count,
1498                                 p_data  => x_msg_data);
1499 
1500       -- Debug info.
1501       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1502         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1503                                p_msg_data=>x_msg_data,
1504                                p_msg_type=>'UNEXPECTED ERROR',
1505                                p_msg_level=>fnd_log.level_error);
1506       END IF;
1507       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1508         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_updated(-)',
1509                                p_prefix=>l_debug_prefix,
1510                                p_msg_level=>fnd_log.level_procedure);
1511       END IF;
1512     WHEN OTHERS THEN
1513       x_return_status := fnd_api.g_ret_sts_unexp_error;
1514 
1515       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1516       fnd_message.set_token('ERROR' ,SQLERRM);
1517       fnd_msg_pub.add;
1518 
1519       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1520                                 p_count => x_msg_count,
1521                                 p_data  => x_msg_data);
1522 
1523       -- Debug info.
1524       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1525         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1526                                p_msg_data=>x_msg_data,
1527                                p_msg_type=>'SQL ERROR',
1528                                p_msg_level=>fnd_log.level_error);
1529       END IF;
1530       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1531         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_custs_updated(-)',
1532                                p_prefix=>l_debug_prefix,
1533                                p_msg_level=>fnd_log.level_procedure);
1534       END IF;
1535 
1536 end;
1537 
1538   PROCEDURE get_person_custs_updated(
1539     p_event_id            IN            NUMBER,
1540     x_person_cust_objs         OUT NOCOPY    HZ_PERSON_CUST_BO_TBL,
1541     x_return_status       OUT NOCOPY    VARCHAR2,
1542     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
1543   )IS
1544     l_msg_data            VARCHAR2(2000);
1545     l_msg_count           NUMBER;
1546   BEGIN
1547     get_person_custs_updated(
1548       p_init_msg_list      => fnd_api.g_true,
1549       p_event_id           => p_event_id,
1550       x_person_cust_objs   => x_person_cust_objs,
1551       x_return_status      => x_return_status,
1552       x_msg_count          => l_msg_count,
1553       x_msg_data           => l_msg_data
1554     );
1555     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1556                     x_return_status   => x_return_status,
1557                     x_msg_count       => l_msg_count,
1558                     x_msg_data        => l_msg_data);
1559   END get_person_custs_updated;
1560 
1561 --------------------------------------
1562   --
1563   -- PROCEDURE get_person_cust_updated
1564   --
1565   -- DESCRIPTION
1566   --The caller provides an identifier for the Person customer update business event and person id
1567   --the procedure returns one database object of the type HZ_PERSON_CUST_BO
1568   --
1569   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1570   --
1571   -- ARGUMENTS
1572   --   IN:
1573   --     p_init_msg_list      Initialize message stack if it is set to
1574   --     p_event_id           BES Event identifier.
1575   --     p_person_cust_id        Person customer identifier.
1576   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
1577   --   OUT:
1578   --     x_person_cust_obj       One updated logical person.
1579   --     x_return_status      Return status after the call. The status can
1580   --                          be fnd_api.g_ret_sts_success (success),
1581   --                          fnd_api.g_ret_sts_error (error),
1582   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1583   --     x_msg_count          Number of messages in message stack.
1584   --     x_msg_data           Message text if x_msg_count is 1.
1585   --
1586   -- NOTES
1587   --
1588   -- MODIFICATION HISTORY
1589   --
1590   --   06-JUN-2005     AWU                Created.
1591   --
1592 
1593  PROCEDURE get_person_cust_updated(
1594     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
1595     p_event_id            IN           	NUMBER,
1596     p_person_cust_id           IN           NUMBER,
1597     x_person_cust_obj         OUT NOCOPY    HZ_PERSON_CUST_BO,
1598     x_return_status       OUT NOCOPY    VARCHAR2,
1599     x_msg_count           OUT NOCOPY    NUMBER,
1600     x_msg_data            OUT NOCOPY    VARCHAR2
1601   ) is
1602 l_debug_prefix              VARCHAR2(30) := '';
1603 begin
1604 
1605 	-- initialize API return status to success.
1606     	x_return_status := FND_API.G_RET_STS_SUCCESS;
1607 
1608     	-- Initialize message list if p_init_msg_list is set to TRUE
1609     	IF FND_API.to_Boolean(p_init_msg_list) THEN
1610       		FND_MSG_PUB.initialize;
1611     	END IF;
1612 
1613 
1614 	-- Debug info.
1615         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1616         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_updated(+)',
1617                                p_prefix=>l_debug_prefix,
1618                                p_msg_level=>fnd_log.level_procedure);
1619     	END IF;
1620 
1621 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
1622 			    p_party_id => p_person_cust_id,
1623 			    p_event_type => 'U',
1624 			    p_bo_code => 'PERSON_CUST',
1625 			    x_return_status => x_return_status);
1626 
1627 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1628       		RAISE FND_API.G_EXC_ERROR;
1629     	END IF;
1630 
1631 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_person_cust_updated(
1632     		p_init_msg_list => fnd_api.g_false,
1633 		p_event_id => p_event_id,
1634 		p_person_cust_id  => p_person_cust_id,
1635     		x_person_cust_obj  => x_person_cust_obj,
1636 		x_return_status => x_return_status,
1637 		x_msg_count => x_msg_count,
1638 		x_msg_data => x_msg_data);
1639 
1640 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1641       		RAISE FND_API.G_EXC_ERROR;
1642     	END IF;
1643 
1644 
1645 
1646 	-- Debug info.
1647     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1648          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1649                                p_msg_data=>x_msg_data,
1650                                p_msg_type=>'WARNING',
1651                                p_msg_level=>fnd_log.level_exception);
1652     	END IF;
1653 
1654     	-- Debug info.
1655         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1656         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_updated (-)',
1657                                p_prefix=>l_debug_prefix,
1658                                p_msg_level=>fnd_log.level_procedure);
1659     	END IF;
1660 
1661 
1662  EXCEPTION
1663 
1664   WHEN fnd_api.g_exc_error THEN
1665       x_return_status := fnd_api.g_ret_sts_error;
1666 
1667       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1668                                 p_count => x_msg_count,
1669                                 p_data  => x_msg_data);
1670 
1671       -- Debug info.
1672       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1673         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1674                                p_msg_data=>x_msg_data,
1675                                p_msg_type=>'ERROR',
1676                                p_msg_level=>fnd_log.level_error);
1677       END IF;
1678       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1679         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_updated(-)',
1680                                p_prefix=>l_debug_prefix,
1681                                p_msg_level=>fnd_log.level_procedure);
1682       END IF;
1683     WHEN fnd_api.g_exc_unexpected_error THEN
1684       x_return_status := fnd_api.g_ret_sts_unexp_error;
1685 
1686       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1687                                 p_count => x_msg_count,
1688                                 p_data  => x_msg_data);
1689 
1690       -- Debug info.
1691       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1692         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1693                                p_msg_data=>x_msg_data,
1694                                p_msg_type=>'UNEXPECTED ERROR',
1695                                p_msg_level=>fnd_log.level_error);
1696       END IF;
1697       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1698         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_updated(-)',
1699                                p_prefix=>l_debug_prefix,
1700                                p_msg_level=>fnd_log.level_procedure);
1701       END IF;
1702     WHEN OTHERS THEN
1703       x_return_status := fnd_api.g_ret_sts_unexp_error;
1704 
1705       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1706       fnd_message.set_token('ERROR' ,SQLERRM);
1707       fnd_msg_pub.add;
1708 
1709       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1710                                 p_count => x_msg_count,
1711                                 p_data  => x_msg_data);
1712 
1713       -- Debug info.
1714       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1715         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1716                                p_msg_data=>x_msg_data,
1717                                p_msg_type=>'SQL ERROR',
1718                                p_msg_level=>fnd_log.level_error);
1719       END IF;
1720       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1721         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_updated(-)',
1722                                p_prefix=>l_debug_prefix,
1723                                p_msg_level=>fnd_log.level_procedure);
1724       END IF;
1725 
1726 end;
1727 
1728   PROCEDURE get_person_cust_updated(
1729     p_event_id            IN            NUMBER,
1730     p_person_cust_id           IN           NUMBER,
1731     x_person_cust_obj         OUT NOCOPY    HZ_PERSON_CUST_BO,
1732     x_return_status       OUT NOCOPY    VARCHAR2,
1733     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
1734   ) IS
1735     l_msg_data            VARCHAR2(2000);
1736     l_msg_count           NUMBER;
1737   BEGIN
1738     get_person_cust_updated(
1739       p_init_msg_list       => fnd_api.g_true,
1740       p_event_id            => p_event_id,
1741       p_person_cust_id      => p_person_cust_id,
1742       x_person_cust_obj     => x_person_cust_obj,
1743       x_return_status       => x_return_status,
1744       x_msg_count           => l_msg_count,
1745       x_msg_data            => l_msg_data
1746     );
1747     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1748                     x_return_status   => x_return_status,
1749                     x_msg_count       => l_msg_count,
1750                     x_msg_data        => l_msg_data);
1751   END get_person_cust_updated;
1752 
1753 -- get TCA identifiers for create event
1754 PROCEDURE get_ids_person_custs_created (
1755 	p_init_msg_list		IN	VARCHAR2 := fnd_api.g_false,
1756 	p_event_id		IN	NUMBER,
1757 	x_person_cust_ids		OUT NOCOPY	HZ_EXTRACT_BO_UTIL_PVT.BO_ID_TBL,
1758 	x_return_status       OUT NOCOPY    VARCHAR2,
1759 	x_msg_count		OUT NOCOPY	NUMBER,
1760 	x_msg_data		OUT NOCOPY	VARCHAR2
1761 
1762 ) is
1763 l_debug_prefix              VARCHAR2(30) := '';
1764 
1765 begin
1766 	-- initialize API return status to success.
1767     	x_return_status := FND_API.G_RET_STS_SUCCESS;
1768 
1769     	-- Initialize message list if p_init_msg_list is set to TRUE
1770     	IF FND_API.to_Boolean(p_init_msg_list) THEN
1771       		FND_MSG_PUB.initialize;
1772     	END IF;
1773 
1774 
1775 	-- Debug info.
1776         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1777         	hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_created(+)',
1778                                p_prefix=>l_debug_prefix,
1779                                p_msg_level=>fnd_log.level_procedure);
1780     	END IF;
1781 
1782 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
1783 			    p_party_id => null,
1784 			    p_event_type => 'C',
1785 			    p_bo_code => 'PERSON_CUST',
1786 			    x_return_status => x_return_status);
1787 
1788 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1789       		RAISE FND_API.G_EXC_ERROR;
1790     	END IF;
1791 
1792 	HZ_EXTRACT_BO_UTIL_PVT.get_bo_root_ids(
1793     	p_init_msg_list       => fnd_api.g_false,
1794     	p_event_id            => p_event_id,
1795     	x_obj_root_ids        => x_person_cust_ids,
1796    	x_return_status => x_return_status,
1797 	x_msg_count => x_msg_count,
1798 	x_msg_data => x_msg_data);
1799 
1800 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1801       		RAISE FND_API.G_EXC_ERROR;
1802     	END IF;
1803 
1804 
1805 	-- Debug info.
1806     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1807          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1808                                p_msg_data=>x_msg_data,
1809                                p_msg_type=>'WARNING',
1810                                p_msg_level=>fnd_log.level_exception);
1811     	END IF;
1812 
1813     	-- Debug info.
1814         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1815         	hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_created (-)',
1816                                p_prefix=>l_debug_prefix,
1817                                p_msg_level=>fnd_log.level_procedure);
1818     	END IF;
1819 
1820 
1821  EXCEPTION
1822 
1823   WHEN fnd_api.g_exc_error THEN
1824       x_return_status := fnd_api.g_ret_sts_error;
1825 
1826       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1827                                 p_count => x_msg_count,
1828                                 p_data  => x_msg_data);
1829 
1830       -- Debug info.
1831       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1832         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1833                                p_msg_data=>x_msg_data,
1834                                p_msg_type=>'ERROR',
1835                                p_msg_level=>fnd_log.level_error);
1836       END IF;
1837       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1838         hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_created(-)',
1839                                p_prefix=>l_debug_prefix,
1840                                p_msg_level=>fnd_log.level_procedure);
1841       END IF;
1842     WHEN fnd_api.g_exc_unexpected_error THEN
1843       x_return_status := fnd_api.g_ret_sts_unexp_error;
1844 
1845       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1846                                 p_count => x_msg_count,
1847                                 p_data  => x_msg_data);
1848 
1849       -- Debug info.
1850       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1851         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1852                                p_msg_data=>x_msg_data,
1853                                p_msg_type=>'UNEXPECTED ERROR',
1854                                p_msg_level=>fnd_log.level_error);
1855       END IF;
1856       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1857         hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_created(-)',
1858                                p_prefix=>l_debug_prefix,
1859                                p_msg_level=>fnd_log.level_procedure);
1860       END IF;
1861     WHEN OTHERS THEN
1862       x_return_status := fnd_api.g_ret_sts_unexp_error;
1863 
1864       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1865       fnd_message.set_token('ERROR' ,SQLERRM);
1866       fnd_msg_pub.add;
1867 
1868       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1869                                 p_count => x_msg_count,
1870                                 p_data  => x_msg_data);
1871 
1872       -- Debug info.
1873       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1874         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1875                                p_msg_data=>x_msg_data,
1876                                p_msg_type=>'SQL ERROR',
1877                                p_msg_level=>fnd_log.level_error);
1878       END IF;
1879       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1880         hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_created(-)',
1881                                p_prefix=>l_debug_prefix,
1882                                p_msg_level=>fnd_log.level_procedure);
1883       END IF;
1884 
1885 end;
1886 
1887 
1888 -- get TCA identifiers for update event
1889 PROCEDURE get_ids_person_custs_updated (
1890 	p_init_msg_list		IN	VARCHAR2 := fnd_api.g_false,
1891 	p_event_id		IN	NUMBER,
1892 	x_person_cust_ids		OUT NOCOPY	HZ_EXTRACT_BO_UTIL_PVT.BO_ID_TBL,
1893 	x_return_status       OUT NOCOPY    VARCHAR2,
1894 	x_msg_count		OUT NOCOPY	NUMBER,
1895 	x_msg_data		OUT NOCOPY	VARCHAR2
1896 ) is
1897 l_debug_prefix              VARCHAR2(30) := '';
1898 
1899 begin
1900 	-- initialize API return status to success.
1901     	x_return_status := FND_API.G_RET_STS_SUCCESS;
1902 
1903     	-- Initialize message list if p_init_msg_list is set to TRUE
1904     	IF FND_API.to_Boolean(p_init_msg_list) THEN
1905       		FND_MSG_PUB.initialize;
1906     	END IF;
1907 
1908 
1909 	-- Debug info.
1910         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1911         	hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_updated(+)',
1912                                p_prefix=>l_debug_prefix,
1913                                p_msg_level=>fnd_log.level_procedure);
1914     	END IF;
1915 
1916 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
1917 			    p_party_id => null,
1918 			    p_event_type => 'U',
1919 			    p_bo_code => 'PERSON_CUST',
1920 			    x_return_status => x_return_status);
1921 
1922 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1923       		RAISE FND_API.G_EXC_ERROR;
1924     	END IF;
1925 
1926 	HZ_EXTRACT_BO_UTIL_PVT.get_bo_root_ids(
1927     	p_init_msg_list       => fnd_api.g_false,
1928     	p_event_id            => p_event_id,
1929     	x_obj_root_ids        => x_person_cust_ids,
1930    	x_return_status => x_return_status,
1931 	x_msg_count => x_msg_count,
1932 	x_msg_data => x_msg_data);
1933 
1934 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1935       		RAISE FND_API.G_EXC_ERROR;
1936     	END IF;
1937 
1938 
1939 	-- Debug info.
1940     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1941          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1942                                p_msg_data=>x_msg_data,
1943                                p_msg_type=>'WARNING',
1944                                p_msg_level=>fnd_log.level_exception);
1945     	END IF;
1946 
1947     	-- Debug info.
1948         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1949         	hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_updated (-)',
1950                                p_prefix=>l_debug_prefix,
1951                                p_msg_level=>fnd_log.level_procedure);
1952     	END IF;
1953 
1954 
1955  EXCEPTION
1956 
1957   WHEN fnd_api.g_exc_error THEN
1958       x_return_status := fnd_api.g_ret_sts_error;
1959 
1960       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1961                                 p_count => x_msg_count,
1962                                 p_data  => x_msg_data);
1963 
1964       -- Debug info.
1965       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1966         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1967                                p_msg_data=>x_msg_data,
1968                                p_msg_type=>'ERROR',
1969                                p_msg_level=>fnd_log.level_error);
1970       END IF;
1971       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1972         hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_updated(-)',
1973                                p_prefix=>l_debug_prefix,
1974                                p_msg_level=>fnd_log.level_procedure);
1975       END IF;
1976     WHEN fnd_api.g_exc_unexpected_error THEN
1977       x_return_status := fnd_api.g_ret_sts_unexp_error;
1978 
1979       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1980                                 p_count => x_msg_count,
1981                                 p_data  => x_msg_data);
1982 
1983       -- Debug info.
1984       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1985         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1986                                p_msg_data=>x_msg_data,
1987                                p_msg_type=>'UNEXPECTED ERROR',
1988                                p_msg_level=>fnd_log.level_error);
1989       END IF;
1990       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1991         hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_updated(-)',
1992                                p_prefix=>l_debug_prefix,
1993                                p_msg_level=>fnd_log.level_procedure);
1994       END IF;
1995     WHEN OTHERS THEN
1996       x_return_status := fnd_api.g_ret_sts_unexp_error;
1997 
1998       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1999       fnd_message.set_token('ERROR' ,SQLERRM);
2000       fnd_msg_pub.add;
2001 
2002       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2003                                 p_count => x_msg_count,
2004                                 p_data  => x_msg_data);
2005 
2006       -- Debug info.
2007       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2008         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2009                                p_msg_data=>x_msg_data,
2010                                p_msg_type=>'SQL ERROR',
2011                                p_msg_level=>fnd_log.level_error);
2012       END IF;
2013       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2014         hz_utility_v2pub.debug(p_message=>'get_ids_person_custs_updated(-)',
2015                                p_prefix=>l_debug_prefix,
2016                                p_msg_level=>fnd_log.level_procedure);
2017       END IF;
2018 
2019 end;
2020 
2021 -- PROCEDURE do_create_person_cust_v2_bo
2022   --
2023   -- DESCRIPTION
2024   --     Create person customer account.
2025   PROCEDURE do_create_person_cust_v2_bo(
2026     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
2027     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
2028     p_person_cust_v2_obj     IN OUT NOCOPY HZ_PERSON_CUST_V2_BO,
2029     p_created_by_module   IN            VARCHAR2,
2030     p_obj_source          IN            VARCHAR2 := null,
2031     x_return_status       OUT NOCOPY    VARCHAR2,
2032     x_msg_count           OUT NOCOPY    NUMBER,
2033     x_msg_data            OUT NOCOPY    VARCHAR2,
2034     x_person_id           OUT NOCOPY    NUMBER
2035   ) IS
2036     l_person_os           VARCHAR2(30);
2037     l_person_osr          VARCHAR2(255);
2038     l_debug_prefix        VARCHAR2(30) := '';
2039     l_valid_obj           BOOLEAN;
2040     l_raise_event         BOOLEAN := FALSE;
2041     l_bus_object          HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
2042     l_cbm                 VARCHAR2(30);
2043     l_per_event_id        NUMBER;
2044     l_pc_event_id         NUMBER;
2045   BEGIN
2046     -- Standard start of API savepoint
2047     SAVEPOINT do_create_person_cust_v2_pub;
2048 
2049     -- initialize API return status to success.
2050     x_return_status := FND_API.G_RET_STS_SUCCESS;
2051 
2052     -- Initialize message list if p_init_msg_list is set to TRUE
2053     IF FND_API.to_Boolean(p_init_msg_list) THEN
2054       FND_MSG_PUB.initialize;
2055     END IF;
2056 
2057     -- Debug info.
2058     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2059         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_v2_bo(+)',
2060                                p_prefix=>l_debug_prefix,
2061                                p_msg_level=>fnd_log.level_procedure);
2062     END IF;
2063 
2064     -- Base on p_validate_bo_flag, check the completeness of business objects
2065     IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
2066       HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
2067         p_bus_object_code         => 'PERSON_CUST',
2068         x_bus_object              => l_bus_object
2069       );
2070 
2071       l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_pca_v2_bo_comp(
2072                        p_person_obj => p_person_cust_v2_obj.person_obj,
2073                        p_ca_v2_objs    => p_person_cust_v2_obj.account_objs
2074                      );
2075 
2076       IF NOT(l_valid_obj) THEN
2077         RAISE fnd_api.g_exc_error;
2078       END IF;
2079 
2080       -- find out if raise event at the end
2081       l_raise_event := HZ_PARTY_BO_PVT.is_raising_create_event(
2082                          p_obj_complete_flag => l_valid_obj );
2083 
2084       IF(l_raise_event) THEN
2085         -- Get event_id for person
2086         SELECT HZ_BUS_OBJ_TRACKING_S.nextval
2087         INTO l_per_event_id
2088         FROM DUAL;
2089 
2090         -- Get event_id for person customer
2091         SELECT HZ_BUS_OBJ_TRACKING_S.nextval
2092         INTO l_pc_event_id
2093         FROM DUAL;
2094       END IF;
2095     ELSE
2096       l_raise_event := FALSE;
2097     END IF;
2098 
2099     -- initialize Global variable to indicate the caller of V2API is from BO API
2100     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
2101     IF(p_created_by_module IS NULL) THEN
2102       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
2103     ELSE
2104       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
2105     END IF;
2106 
2107     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2108 
2109     HZ_PERSON_BO_PUB.do_create_person_bo(
2110       p_init_msg_list          => fnd_api.g_false,
2111       p_validate_bo_flag       => FND_API.G_FALSE,
2112       p_person_obj             => p_person_cust_v2_obj.person_obj,
2113       p_created_by_module      => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2114       p_obj_source             => p_obj_source,
2115       x_return_status          => x_return_status,
2116       x_msg_count              => x_msg_count,
2117       x_msg_data               => x_msg_data,
2118       x_person_id              => x_person_id,
2119       x_person_os              => l_person_os,
2120       x_person_osr             => l_person_osr
2121     );
2122 
2123     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2124       RAISE fnd_api.g_exc_error;
2125     END IF;
2126 
2127     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2128 
2129     IF((p_person_cust_v2_obj.account_objs IS NOT NULL) AND
2130        (p_person_cust_v2_obj.account_objs.COUNT > 0)) THEN
2131       HZ_CUST_ACCT_BO_PVT.save_cust_accts(
2132         p_ca_v2_objs                => p_person_cust_v2_obj.account_objs,
2133         p_create_update_flag     => 'C',
2134         x_return_status          => x_return_status,
2135         x_msg_count              => x_msg_count,
2136         x_msg_data               => x_msg_data,
2137         p_parent_id              => x_person_id,
2138         p_parent_os              => l_person_os,
2139         p_parent_osr             => l_person_osr,
2140         p_parent_obj_type        => 'PERSON'
2141       );
2142 
2143       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2144         RAISE fnd_api.g_exc_error;
2145       END IF;
2146     END IF;
2147 
2148     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2149 
2150     -- raise event
2151     IF(l_raise_event) THEN
2152       -- raise create person event
2153       HZ_PARTY_BO_PVT.call_bes(
2154         p_party_id         => x_person_id,
2155         p_bo_code          => 'PERSON',
2156         p_create_or_update => 'C',
2157         p_obj_source       => p_obj_source,
2158         p_event_id         => l_per_event_id
2159       );
2160 
2161       -- raise create person cust event
2162       HZ_PARTY_BO_PVT.call_bes(
2163         p_party_id         => x_person_id,
2164         p_bo_code          => 'PERSON_CUST',
2165         p_create_or_update => 'C',
2166         p_obj_source       => p_obj_source,
2167         p_event_id         => l_pc_event_id
2168       );
2169     END IF;
2170 
2171     -- reset Global variable
2172     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2173     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2174 
2175     -- Debug info.
2176     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2177          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2178                                p_msg_data=>x_msg_data,
2179                                p_msg_type=>'WARNING',
2180                                p_msg_level=>fnd_log.level_exception);
2181     END IF;
2182     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2183         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_v2_bo(-)',
2184                                p_prefix=>l_debug_prefix,
2185                                p_msg_level=>fnd_log.level_procedure);
2186     END IF;
2187 
2188   EXCEPTION
2189     WHEN fnd_api.g_exc_error THEN
2190       ROLLBACK TO do_create_person_cust_v2_pub;
2191 
2192       -- reset Global variable
2193       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2194       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2195 
2196       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2197       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
2198       FND_MSG_PUB.ADD;
2199 
2200       x_return_status := fnd_api.g_ret_sts_error;
2201 
2202       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2203                                 p_count => x_msg_count,
2204                                 p_data  => x_msg_data);
2205 
2206       -- Debug info.
2207       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2208         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2209                                p_msg_data=>x_msg_data,
2210                                p_msg_type=>'ERROR',
2211                                p_msg_level=>fnd_log.level_error);
2212       END IF;
2213       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2214         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_v2_bo(-)',
2215                                p_prefix=>l_debug_prefix,
2216                                p_msg_level=>fnd_log.level_procedure);
2217       END IF;
2218 
2219     WHEN fnd_api.g_exc_unexpected_error THEN
2220       ROLLBACK TO do_create_person_cust_v2_pub;
2221 
2222       -- reset Global variable
2223       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2224       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2225 
2226       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2227       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
2228       FND_MSG_PUB.ADD;
2229 
2230       x_return_status := fnd_api.g_ret_sts_unexp_error;
2231 
2232       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2233                                 p_count => x_msg_count,
2234                                 p_data  => x_msg_data);
2235 
2236       -- Debug info.
2237       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2238         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2239                                p_msg_data=>x_msg_data,
2240                                p_msg_type=>'UNEXPECTED ERROR',
2241                                p_msg_level=>fnd_log.level_error);
2242       END IF;
2243       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2244         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_v2_bo(-)',
2245                                p_prefix=>l_debug_prefix,
2246                                p_msg_level=>fnd_log.level_procedure);
2247       END IF;
2248 
2249     WHEN OTHERS THEN
2250       ROLLBACK TO do_create_person_cust_v2_pub;
2251 
2252       -- reset Global variable
2253       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2254       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2255 
2256       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2257       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
2258       FND_MSG_PUB.ADD;
2259 
2260       x_return_status := fnd_api.g_ret_sts_unexp_error;
2261 
2262       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2263       fnd_message.set_token('ERROR' ,SQLERRM);
2264       fnd_msg_pub.add;
2265 
2266       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2267                                 p_count => x_msg_count,
2268                                 p_data  => x_msg_data);
2269 
2270       -- Debug info.
2271       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2272         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2273                                p_msg_data=>x_msg_data,
2274                                p_msg_type=>'SQL ERROR',
2275                                p_msg_level=>fnd_log.level_error);
2276       END IF;
2277       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2278         hz_utility_v2pub.debug(p_message=>'do_create_person_cust_v2_bo(-)',
2279                                p_prefix=>l_debug_prefix,
2280                                p_msg_level=>fnd_log.level_procedure);
2281       END IF;
2282   END do_create_person_cust_v2_bo;
2283 
2284 
2285   PROCEDURE create_person_cust_v2_bo(
2286     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
2287     p_person_cust_v2_obj     IN            HZ_PERSON_CUST_V2_BO,
2288     p_created_by_module   IN            VARCHAR2,
2289     p_obj_source          IN            VARCHAR2 := null,
2290     p_return_obj_flag     IN            VARCHAR2 := fnd_api.g_true,
2291     x_return_status       OUT NOCOPY    VARCHAR2,
2292     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
2293     x_return_obj          OUT NOCOPY    HZ_PERSON_CUST_V2_BO,
2294     x_person_id           OUT NOCOPY    NUMBER
2295   ) IS
2296     l_msg_data            VARCHAR2(2000);
2297     l_msg_count           NUMBER;
2298     l_pc_obj              HZ_PERSON_CUST_V2_BO;
2299   BEGIN
2300     l_pc_obj := p_person_cust_v2_obj;
2301     do_create_person_cust_v2_bo(
2302       p_init_msg_list       => fnd_api.g_true,
2303       p_validate_bo_flag    => p_validate_bo_flag,
2304       p_person_cust_v2_obj     => l_pc_obj,
2305       p_created_by_module   => p_created_by_module,
2306       p_obj_source          => p_obj_source,
2307       x_return_status       => x_return_status,
2308       x_msg_count           => l_msg_count,
2309       x_msg_data            => l_msg_data,
2310       x_person_id           => x_person_id
2311     );
2312     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2313                     x_return_status   => x_return_status,
2314                     x_msg_count       => l_msg_count,
2315                     x_msg_data        => l_msg_data);
2316     IF FND_API.to_Boolean(p_return_obj_flag) THEN
2317       x_return_obj := l_pc_obj;
2318     END IF;
2319   END create_person_cust_v2_bo;
2320 
2321 -- PROCEDURE do_update_person_cust_v2_bo
2322   --
2323   -- DESCRIPTION
2324   --     Update person customer account.
2325   PROCEDURE do_update_person_cust_v2_bo(
2326     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
2327     p_person_cust_v2_obj     IN OUT NOCOPY HZ_PERSON_CUST_V2_BO,
2328     p_created_by_module   IN            VARCHAR2,
2329     p_obj_source          IN            VARCHAR2 := null,
2330     x_return_status       OUT NOCOPY    VARCHAR2,
2331     x_msg_count           OUT NOCOPY    NUMBER,
2332     x_msg_data            OUT NOCOPY    VARCHAR2,
2333     x_person_id           OUT NOCOPY    NUMBER
2334   ) IS
2335     l_person_os           VARCHAR2(30);
2336     l_person_osr          VARCHAR2(255);
2337     l_debug_prefix        VARCHAR2(30) := '';
2338     l_per_raise_event     BOOLEAN := FALSE;
2339     l_pc_raise_event      BOOLEAN := FALSE;
2340     l_cbm                 VARCHAR2(30);
2341     l_per_event_id        NUMBER;
2342     l_pc_event_id         NUMBER;
2343   BEGIN
2344     -- Standard start of API savepoint
2345     SAVEPOINT do_update_person_cust_v2_pub;
2346 
2347     -- initialize API return status to success.
2348     x_return_status := FND_API.G_RET_STS_SUCCESS;
2349 
2350     -- Initialize message list if p_init_msg_list is set to TRUE
2351     IF FND_API.to_Boolean(p_init_msg_list) THEN
2352       FND_MSG_PUB.initialize;
2353     END IF;
2354 
2355     -- Debug info.
2356     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2357         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_v2_bo(+)',
2358                                p_prefix=>l_debug_prefix,
2359                                p_msg_level=>fnd_log.level_procedure);
2360     END IF;
2361 
2362     -- initialize Global variable
2363     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
2364     IF(p_created_by_module IS NULL) THEN
2365       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
2366     ELSE
2367       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
2368     END IF;
2369 
2370     x_person_id := p_person_cust_v2_obj.person_obj.person_id;
2371     l_person_os := p_person_cust_v2_obj.person_obj.orig_system;
2372     l_person_osr:= p_person_cust_v2_obj.person_obj.orig_system_reference;
2373 
2374     -- check input party_id and os+osr
2375     hz_registry_validate_bo_pvt.validate_ssm_id(
2376       px_id              => x_person_id,
2377       px_os              => l_person_os,
2378       px_osr             => l_person_osr,
2379       p_obj_type         => 'PERSON',
2380       p_create_or_update => 'U',
2381       x_return_status    => x_return_status,
2382       x_msg_count        => x_msg_count,
2383       x_msg_data         => x_msg_data);
2384 
2385     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2386       RAISE FND_API.G_EXC_ERROR;
2387     END IF;
2388 
2389     -- get person_id and then call
2390     l_per_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
2391                            p_party_id          => x_person_id,
2392                            p_bo_code           => 'PERSON'
2393                          );
2394 
2395     l_pc_raise_event := HZ_PARTY_BO_PVT.is_raising_update_event(
2396                           p_party_id          => x_person_id,
2397                           p_bo_code           => 'PERSON_CUST'
2398                         );
2399 
2400     IF(l_per_raise_event) THEN
2401       -- Get event_id for person
2402       SELECT HZ_BUS_OBJ_TRACKING_S.nextval
2403       INTO l_per_event_id
2404       FROM DUAL;
2405     END IF;
2406 
2407     IF(l_pc_raise_event) THEN
2408       -- Get event_id for person customer
2409       SELECT HZ_BUS_OBJ_TRACKING_S.nextval
2410       INTO l_pc_event_id
2411       FROM DUAL;
2412     END IF;
2413 
2414     -- acknowledge update_organization_bo not to raise event
2415     HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := 'Y';
2416     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2417 
2418     HZ_PERSON_BO_PUB.do_update_person_bo(
2419       p_init_msg_list          => fnd_api.g_false,
2420       p_person_obj             => p_person_cust_v2_obj.person_obj,
2421       p_created_by_module      => HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE,
2422       p_obj_source             => p_obj_source,
2423       x_return_status          => x_return_status,
2424       x_msg_count              => x_msg_count,
2425       x_msg_data               => x_msg_data,
2426       x_person_id              => x_person_id,
2427       x_person_os              => l_person_os,
2428       x_person_osr             => l_person_osr
2429     );
2430 
2431     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2432       RAISE fnd_api.g_exc_error;
2433     END IF;
2434 
2435     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2436 
2437     IF((p_person_cust_v2_obj.account_objs IS NOT NULL) AND
2438        (p_person_cust_v2_obj.account_objs.COUNT > 0)) THEN
2439       HZ_CUST_ACCT_BO_PVT.save_cust_accts(
2440         p_ca_v2_objs                => p_person_cust_v2_obj.account_objs,
2441         p_create_update_flag     => 'U',
2442         x_return_status          => x_return_status,
2443         x_msg_count              => x_msg_count,
2444         x_msg_data               => x_msg_data,
2445         p_parent_id              => x_person_id,
2446         p_parent_os              => l_person_os,
2447         p_parent_osr             => l_person_osr,
2448         p_parent_obj_type        => 'PERSON'
2449       );
2450 
2451       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2452         RAISE fnd_api.g_exc_error;
2453       END IF;
2454     END IF;
2455 
2456     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2457 
2458     -- raise event
2459     IF(l_per_raise_event) THEN
2460       -- raise update org event
2461       HZ_PARTY_BO_PVT.call_bes(
2462         p_party_id         => x_person_id,
2463         p_bo_code          => 'PERSON',
2464         p_create_or_update => 'U',
2465         p_obj_source       => p_obj_source,
2466         p_event_id         => l_per_event_id
2467       );
2468     END IF;
2469 
2470     IF(l_pc_raise_event) THEN
2471       -- raise update org cust event
2472       HZ_PARTY_BO_PVT.call_bes(
2473         p_party_id         => x_person_id,
2474         p_bo_code          => 'PERSON_CUST',
2475         p_create_or_update => 'U',
2476         p_obj_source       => p_obj_source,
2477         p_event_id         => l_pc_event_id
2478       );
2479     END IF;
2480 
2481     -- reset Global variable
2482     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2483     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2484     HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
2485 
2486     -- Debug info.
2487     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2488          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2489                                p_msg_data=>x_msg_data,
2490                                p_msg_type=>'WARNING',
2491                                p_msg_level=>fnd_log.level_exception);
2492     END IF;
2493     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2494         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_v2_bo(-)',
2495                                p_prefix=>l_debug_prefix,
2496                                p_msg_level=>fnd_log.level_procedure);
2497     END IF;
2498   EXCEPTION
2499     WHEN fnd_api.g_exc_error THEN
2500       ROLLBACK TO do_update_person_cust_v2_pub;
2501 
2502       -- reset Global variable
2503       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2504       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2505       HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
2506 
2507       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2508       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
2509       FND_MSG_PUB.ADD;
2510 
2511       x_return_status := fnd_api.g_ret_sts_error;
2512 
2513       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2514                                 p_count => x_msg_count,
2515                                 p_data  => x_msg_data);
2516 
2517       -- Debug info.
2518       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2519         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2520                                p_msg_data=>x_msg_data,
2521                                p_msg_type=>'ERROR',
2522                                p_msg_level=>fnd_log.level_error);
2523       END IF;
2524       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2525         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_v2_bo(-)',
2526                                p_prefix=>l_debug_prefix,
2527                                p_msg_level=>fnd_log.level_procedure);
2528       END IF;
2529 
2530     WHEN fnd_api.g_exc_unexpected_error THEN
2531       ROLLBACK TO do_update_person_cust_v2_pub;
2532 
2533       -- reset Global variable
2534       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2535       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2536       HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
2537 
2538       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2539       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
2540       FND_MSG_PUB.ADD;
2541 
2542       x_return_status := fnd_api.g_ret_sts_unexp_error;
2543 
2544       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2545                                 p_count => x_msg_count,
2546                                 p_data  => x_msg_data);
2547 
2548       -- Debug info.
2549       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2550         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2551                                p_msg_data=>x_msg_data,
2552                                p_msg_type=>'UNEXPECTED ERROR',
2553                                p_msg_level=>fnd_log.level_error);
2554       END IF;
2555       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2556         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_v2_bo(-)',
2557                                p_prefix=>l_debug_prefix,
2558                                p_msg_level=>fnd_log.level_procedure);
2559       END IF;
2560 
2561     WHEN OTHERS THEN
2562       ROLLBACK TO do_update_person_cust_v2_pub;
2563 
2564       -- reset Global variable
2565       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2566       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2567       HZ_PARTY_BO_PVT.G_CALL_UPDATE_CUST_BO := NULL;
2568 
2569       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2570       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
2571       FND_MSG_PUB.ADD;
2572 
2573       x_return_status := fnd_api.g_ret_sts_unexp_error;
2574 
2575       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2576       fnd_message.set_token('ERROR' ,SQLERRM);
2577       fnd_msg_pub.add;
2578 
2579       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2580                                 p_count => x_msg_count,
2581                                 p_data  => x_msg_data);
2582 
2583       -- Debug info.
2584       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2585         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2586                                p_msg_data=>x_msg_data,
2587                                p_msg_type=>'SQL ERROR',
2588                                p_msg_level=>fnd_log.level_error);
2589       END IF;
2590       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2591         hz_utility_v2pub.debug(p_message=>'do_update_person_cust_v2_bo(-)',
2592                                p_prefix=>l_debug_prefix,
2593                                p_msg_level=>fnd_log.level_procedure);
2594       END IF;
2595   END do_update_person_cust_v2_bo;
2596 
2597   PROCEDURE update_person_cust_v2_bo(
2598     p_person_cust_v2_obj     IN            HZ_PERSON_CUST_V2_BO,
2599     p_created_by_module   IN            VARCHAR2,
2600     p_obj_source          IN            VARCHAR2 := null,
2601     p_return_obj_flag     IN            VARCHAR2 := fnd_api.g_true,
2602     x_return_status       OUT NOCOPY    VARCHAR2,
2603     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
2604     x_return_obj          OUT NOCOPY    HZ_PERSON_CUST_V2_BO,
2605     x_person_id           OUT NOCOPY    NUMBER
2606   ) IS
2607     l_msg_data            VARCHAR2(2000);
2608     l_msg_count           NUMBER;
2609     l_pc_obj              HZ_PERSON_CUST_V2_BO;
2610   BEGIN
2611     l_pc_obj := p_person_cust_v2_obj;
2612     do_update_person_cust_v2_bo(
2613       p_init_msg_list       => fnd_api.g_true,
2614       p_person_cust_v2_obj     => l_pc_obj,
2615       p_created_by_module   => p_created_by_module,
2616       p_obj_source          => p_obj_source,
2617       x_return_status       => x_return_status,
2618       x_msg_count           => l_msg_count,
2619       x_msg_data            => l_msg_data,
2620       x_person_id           => x_person_id
2621     );
2622     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2623                     x_return_status   => x_return_status,
2624                     x_msg_count       => l_msg_count,
2625                     x_msg_data        => l_msg_data);
2626     IF FND_API.to_Boolean(p_return_obj_flag) THEN
2627       x_return_obj := l_pc_obj;
2628     END IF;
2629   END update_person_cust_v2_bo;
2630 
2631   -- PROCEDURE save_person_cust_v2_bo
2632   --
2633   -- DESCRIPTION
2634   --     Create or update person customer account.
2635   PROCEDURE do_save_person_cust_v2_bo(
2636     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
2637     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
2638     p_person_cust_v2_obj     IN OUT NOCOPY HZ_PERSON_CUST_V2_BO,
2639     p_created_by_module   IN            VARCHAR2,
2640     p_obj_source          IN            VARCHAR2 := null,
2641     x_return_status       OUT NOCOPY    VARCHAR2,
2642     x_msg_count           OUT NOCOPY    NUMBER,
2643     x_msg_data            OUT NOCOPY    VARCHAR2,
2644     x_person_id           OUT NOCOPY    NUMBER
2645   ) IS
2646     l_person_id                NUMBER;
2647     l_person_os                VARCHAR2(30);
2648     l_person_osr               VARCHAR2(255);
2649     l_debug_prefix             VARCHAR2(30) := '';
2650     l_create_update_flag       VARCHAR2(1);
2651   BEGIN
2652     -- initialize API return status to success.
2653     x_return_status := FND_API.G_RET_STS_SUCCESS;
2654 
2655     -- Initialize message list if p_init_msg_list is set to TRUE
2656     IF FND_API.to_Boolean(p_init_msg_list) THEN
2657       FND_MSG_PUB.initialize;
2658     END IF;
2659 
2660     -- Debug info.
2661     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2662         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_v2_bo(+)',
2663                                p_prefix=>l_debug_prefix,
2664                                p_msg_level=>fnd_log.level_procedure);
2665     END IF;
2666 
2667     l_person_id := p_person_cust_v2_obj.person_obj.person_id;
2668     l_person_os := p_person_cust_v2_obj.person_obj.orig_system;
2669     l_person_osr:= p_person_cust_v2_obj.person_obj.orig_system_reference;
2670 
2671     -- check root business object to determine that it should be
2672     -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
2673     l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
2674                               p_entity_id      => l_person_id,
2675                               p_entity_os      => l_person_os,
2676                               p_entity_osr     => l_person_osr,
2677                               p_entity_type    => 'HZ_PARTIES',
2678                               p_parent_id      => NULL,
2679                               p_parent_obj_type=> NULL );
2680 
2681     IF(l_create_update_flag = 'E') THEN
2682       FND_MESSAGE.SET_NAME('AR', 'HZ_API_INVALID_ID');
2683       FND_MSG_PUB.ADD;
2684       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2685       FND_MESSAGE.SET_TOKEN('OBJECT', 'PERSON_CUST');
2686       FND_MSG_PUB.ADD;
2687       RAISE FND_API.G_EXC_ERROR;
2688     END IF;
2689 
2690     IF(l_create_update_flag = 'C') THEN
2691       do_create_person_cust_v2_bo(
2692         p_init_msg_list       => fnd_api.g_false,
2693         p_validate_bo_flag    => p_validate_bo_flag,
2694         p_person_cust_v2_obj     => p_person_cust_v2_obj,
2695         p_created_by_module   => p_created_by_module,
2696         p_obj_source          => p_obj_source,
2697         x_return_status       => x_return_status,
2698         x_msg_count           => x_msg_count,
2699         x_msg_data            => x_msg_data,
2700         x_person_id           => x_person_id
2701       );
2702     ELSIF(l_create_update_flag = 'U') THEN
2703       do_update_person_cust_v2_bo(
2704         p_init_msg_list       => fnd_api.g_false,
2705         p_person_cust_v2_obj     => p_person_cust_v2_obj,
2706         p_created_by_module   => p_created_by_module,
2707         p_obj_source          => p_obj_source,
2708         x_return_status       => x_return_status,
2709         x_msg_count           => x_msg_count,
2710         x_msg_data            => x_msg_data,
2711         x_person_id           => x_person_id
2712       );
2713     ELSE
2714       RAISE FND_API.G_EXC_ERROR;
2715     END IF;
2716 
2717     -- Debug info.
2718     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2719          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2720                                p_msg_data=>x_msg_data,
2721                                p_msg_type=>'WARNING',
2722                                p_msg_level=>fnd_log.level_exception);
2723     END IF;
2724     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2725         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_v2_bo(-)',
2726                                p_prefix=>l_debug_prefix,
2727                                p_msg_level=>fnd_log.level_procedure);
2728     END IF;
2729   EXCEPTION
2730     WHEN fnd_api.g_exc_error THEN
2731       x_return_status := fnd_api.g_ret_sts_error;
2732 
2733       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2734                                 p_count => x_msg_count,
2735                                 p_data  => x_msg_data);
2736 
2737       -- Debug info.
2738       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2739         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2740                                p_msg_data=>x_msg_data,
2741                                p_msg_type=>'ERROR',
2742                                p_msg_level=>fnd_log.level_error);
2743       END IF;
2744       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2745         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_v2_bo(-)',
2746                                p_prefix=>l_debug_prefix,
2747                                p_msg_level=>fnd_log.level_procedure);
2748       END IF;
2749 
2750     WHEN fnd_api.g_exc_unexpected_error THEN
2751       x_return_status := fnd_api.g_ret_sts_unexp_error;
2752 
2753       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2754                                 p_count => x_msg_count,
2755                                 p_data  => x_msg_data);
2756 
2757       -- Debug info.
2758       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2759         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2760                                p_msg_data=>x_msg_data,
2761                                p_msg_type=>'UNEXPECTED ERROR',
2762                                p_msg_level=>fnd_log.level_error);
2763       END IF;
2764       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2765         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_v2_bo(-)',
2766                                p_prefix=>l_debug_prefix,
2767                                p_msg_level=>fnd_log.level_procedure);
2768       END IF;
2769     WHEN OTHERS THEN
2770       x_return_status := fnd_api.g_ret_sts_unexp_error;
2771 
2772       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2773       fnd_message.set_token('ERROR' ,SQLERRM);
2774       fnd_msg_pub.add;
2775 
2776       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2777                                 p_count => x_msg_count,
2778                                 p_data  => x_msg_data);
2779 
2780       -- Debug info.
2781       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2782         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2783                                p_msg_data=>x_msg_data,
2784                                p_msg_type=>'SQL ERROR',
2785                                p_msg_level=>fnd_log.level_error);
2786       END IF;
2787       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2788         hz_utility_v2pub.debug(p_message=>'do_save_person_cust_v2_bo(-)',
2789                                p_prefix=>l_debug_prefix,
2790                                p_msg_level=>fnd_log.level_procedure);
2791       END IF;
2792   END do_save_person_cust_v2_bo;
2793 
2794   PROCEDURE save_person_cust_v2_bo(
2795     p_validate_bo_flag    IN            VARCHAR2 := fnd_api.g_true,
2796     p_person_cust_v2_obj     IN            HZ_PERSON_CUST_V2_BO,
2797     p_created_by_module   IN            VARCHAR2,
2798     p_obj_source          IN            VARCHAR2 := null,
2799     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
2800     x_return_status       OUT NOCOPY    VARCHAR2,
2801     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
2802     x_return_obj          OUT NOCOPY    HZ_PERSON_CUST_V2_BO,
2803     x_person_id           OUT NOCOPY    NUMBER
2804   ) IS
2805     l_msg_data            VARCHAR2(2000);
2806     l_msg_count           NUMBER;
2807     l_pc_obj              HZ_PERSON_CUST_V2_BO;
2808   BEGIN
2809     l_pc_obj := p_person_cust_v2_obj;
2810     do_save_person_cust_v2_bo(
2811       p_init_msg_list       => fnd_api.g_true,
2812       p_validate_bo_flag    => p_validate_bo_flag,
2813       p_person_cust_v2_obj     => l_pc_obj,
2814       p_created_by_module   => p_created_by_module,
2815       p_obj_source          => p_obj_source,
2816       x_return_status       => x_return_status,
2817       x_msg_count           => l_msg_count,
2818       x_msg_data            => l_msg_data,
2819       x_person_id           => x_person_id
2820     );
2821     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2822                     x_return_status   => x_return_status,
2823                     x_msg_count       => l_msg_count,
2824                     x_msg_data        => l_msg_data);
2825     IF FND_API.to_Boolean(p_return_obj_flag) THEN
2826       x_return_obj := l_pc_obj;
2827     END IF;
2828   END save_person_cust_v2_bo;
2829 
2830 --------------------------------------
2831   --
2832   -- PROCEDURE get_person_cust_v2_bo
2833   --
2834   -- DESCRIPTION
2835   --     Get a logical person customer.
2836   --
2837   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2838   --
2839   -- ARGUMENTS
2840   --   IN:
2841   --     p_init_msg_list      Initialize message stack if it is set to FND_API.G_TRUE. Default is FND_API.G_FALSE.
2842 --       p_person_id          Person ID.
2843  --     p_person_os           Person orig system.
2844   --     p_person_osr         Person orig system reference.
2845 
2846   --   OUT:
2847   --     x_person_cust_v2_obj         Logical person customer record.
2848   --     x_return_status      Return status after the call. The status can
2849   --                          be fnd_api.g_ret_sts_success (success),
2850   --                          fnd_api.g_ret_sts_error (error),
2851   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2852   --     x_msg_count          Number of messages in message stack.
2853   --     x_msg_data           Message text if x_msg_count is 1.
2854   --
2855   -- NOTES
2856   --
2857   -- MODIFICATION HISTORY
2858   --
2859   --
2860   --   1-FEB-2008   VSEGU                Created.
2861   --
2862 
2863 /*
2864 The Get Person Customer API Procedure is a retrieval service that returns a full Person Customer business object.
2865 The user identifies a particular Person Customer business object using the TCA identifier and/or
2866 the object Source System information. Upon proper validation of the object,
2867 the full Person Customer business object is returned. The object consists of all data included within
2868 the Person Customer business object, at all embedded levels. This includes the set of all data stored
2869 in the TCA tables for each embedded entity.
2870 
2871 To retrieve the appropriate embedded business objects within the Person Customer business object,
2872 the Get procedure calls the equivalent procedure for the following embedded objects:
2873 
2874 Embedded BO	    Mandatory	Multiple Logical API Procedure		Comments
2875 
2876 Person			Y	N	get_person_bo
2877 Customer Account	Y	Y	get_cust_acct_v2_bo	Called for each Customer Account object for the Person Customer
2878 
2879 */
2880 
2881 
2882 
2883  PROCEDURE get_person_cust_v2_bo(
2884     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
2885     p_person_id           IN            NUMBER,
2886     p_person_os		IN	VARCHAR2,
2887     p_person_osr		IN	VARCHAR2,
2888     x_person_cust_v2_obj     OUT NOCOPY    HZ_PERSON_CUST_V2_BO,
2889     x_return_status       OUT NOCOPY    VARCHAR2,
2890     x_msg_count           OUT NOCOPY    NUMBER,
2891     x_msg_data            OUT NOCOPY    VARCHAR2
2892   )  is
2893  l_debug_prefix              VARCHAR2(30) := '';
2894 
2895   l_person_id  number;
2896   l_person_os  varchar2(30);
2897   l_person_osr varchar2(255);
2898 BEGIN
2899 
2900 	-- initialize API return status to success.
2901     	x_return_status := FND_API.G_RET_STS_SUCCESS;
2902 
2903     	-- Initialize message list if p_init_msg_list is set to TRUE
2904     	IF FND_API.to_Boolean(p_init_msg_list) THEN
2905       		FND_MSG_PUB.initialize;
2906     	END IF;
2907 
2908 
2909 	-- Debug info.
2910         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2911         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_v2_bo(+)',
2912                                p_prefix=>l_debug_prefix,
2913                                p_msg_level=>fnd_log.level_procedure);
2914     	END IF;
2915 
2916     	-- check if pass in contact_point_id and/or os+osr
2917     	-- extraction validation logic is same as update
2918 
2919     	l_person_id := p_person_id;
2920     	l_person_os := p_person_os;
2921     	l_person_osr := p_person_osr;
2922 
2923     	HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
2924       		px_id              => l_person_id,
2925       		px_os              => l_person_os,
2926       		px_osr             => l_person_osr,
2927       		p_obj_type         => 'PERSON',
2928       		x_return_status    => x_return_status,
2929       		x_msg_count        => x_msg_count,
2930       		x_msg_data         => x_msg_data);
2931 
2932     	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2933       		RAISE fnd_api.g_exc_error;
2934    	 END IF;
2935 
2936 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_person_cust_v2_bo(
2937     		p_init_msg_list   => fnd_api.g_false,
2938     		p_person_id => l_person_id,
2939     		p_action_type	  => NULL,
2940     		x_person_cust_v2_obj => x_person_cust_v2_obj,
2941 		x_return_status => x_return_status,
2942 		x_msg_count => x_msg_count,
2943 		x_msg_data => x_msg_data);
2944 
2945 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2946       		RAISE FND_API.G_EXC_ERROR;
2947     	END IF;
2948 
2949 
2950 	-- Debug info.
2951     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2952          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2953                                p_msg_data=>x_msg_data,
2954                                p_msg_type=>'WARNING',
2955                                p_msg_level=>fnd_log.level_exception);
2956     	END IF;
2957 
2958     	-- Debug info.
2959         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2960         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_v2_bo (-)',
2961                                p_prefix=>l_debug_prefix,
2962                                p_msg_level=>fnd_log.level_procedure);
2963     	END IF;
2964 
2965 
2966  EXCEPTION
2967 
2968   WHEN fnd_api.g_exc_error THEN
2969       x_return_status := fnd_api.g_ret_sts_error;
2970 
2971       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2972                                 p_count => x_msg_count,
2973                                 p_data  => x_msg_data);
2974 
2975       -- Debug info.
2976       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2977         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2978                                p_msg_data=>x_msg_data,
2979                                p_msg_type=>'ERROR',
2980                                p_msg_level=>fnd_log.level_error);
2981       END IF;
2982       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2983         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_v2_bo (-)',
2984                                p_prefix=>l_debug_prefix,
2985                                p_msg_level=>fnd_log.level_procedure);
2986       END IF;
2987     WHEN fnd_api.g_exc_unexpected_error THEN
2988       x_return_status := fnd_api.g_ret_sts_unexp_error;
2989 
2990       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2991                                 p_count => x_msg_count,
2992                                 p_data  => x_msg_data);
2993 
2994       -- Debug info.
2995       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2996         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2997                                p_msg_data=>x_msg_data,
2998                                p_msg_type=>'UNEXPECTED ERROR',
2999                                p_msg_level=>fnd_log.level_error);
3000       END IF;
3001       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3002         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_v2_bo (-)',
3003                                p_prefix=>l_debug_prefix,
3004                                p_msg_level=>fnd_log.level_procedure);
3005       END IF;
3006     WHEN OTHERS THEN
3007       x_return_status := fnd_api.g_ret_sts_unexp_error;
3008 
3009       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3010       fnd_message.set_token('ERROR' ,SQLERRM);
3011       fnd_msg_pub.add;
3012 
3013       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3014                                 p_count => x_msg_count,
3015                                 p_data  => x_msg_data);
3016 
3017       -- Debug info.
3018       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3019         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3020                                p_msg_data=>x_msg_data,
3021                                p_msg_type=>'SQL ERROR',
3022                                p_msg_level=>fnd_log.level_error);
3023       END IF;
3024       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3025         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_person_cust_v2_bo (-)',
3026                                p_prefix=>l_debug_prefix,
3027                                p_msg_level=>fnd_log.level_procedure);
3028       END IF;
3029 
3030 end;
3031 
3032   PROCEDURE get_person_cust_v2_bo(
3033     p_person_id           IN            NUMBER,
3034     p_person_os         IN      VARCHAR2,
3035     p_person_osr                IN      VARCHAR2,
3036     x_person_cust_v2_obj     OUT NOCOPY    HZ_PERSON_CUST_V2_BO,
3037     x_return_status       OUT NOCOPY    VARCHAR2,
3038     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
3039   ) IS
3040     l_msg_data            VARCHAR2(2000);
3041     l_msg_count           NUMBER;
3042   BEGIN
3043     get_person_cust_v2_bo(
3044       p_init_msg_list   => fnd_api.g_true,
3045       p_person_id       => p_person_id,
3046       p_person_os       => p_person_os,
3047       p_person_osr      => p_person_osr,
3048       x_person_cust_v2_obj => x_person_cust_v2_obj,
3049       x_return_status   => x_return_status,
3050       x_msg_count       => l_msg_count,
3051       x_msg_data        => l_msg_data
3052     );
3053     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3054                     x_return_status   => x_return_status,
3055                     x_msg_count       => l_msg_count,
3056                     x_msg_data        => l_msg_data);
3057   END get_person_cust_v2_bo;
3058 
3059 --------------------------------------
3060   --
3061   -- PROCEDURE get_v2_person_custs_created
3062   --
3063   -- DESCRIPTION
3064   --The caller provides an identifier for the Person Customers created business event and
3065   --the procedure returns database objects of the type HZ_PERSON_CUST CUSTOMER_BO for all of
3066   --the Person Customer business objects from the business event.
3067 
3068   --
3069   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3070   --
3071   -- ARGUMENTS
3072   --   IN:
3073   --     p_init_msg_list      Initialize message stack if it is set to
3074   --     p_event_id           BES Event identifier.
3075   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3076   --   OUT:
3077   --     x_person_cust_v2_objs   One or more created logical person customer.
3078   --     x_return_status      Return status after the call. The status can
3079   --                          be fnd_api.g_ret_sts_success (success),
3080   --                          fnd_api.g_ret_sts_error (error),
3081   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3082   --     x_msg_count          Number of messages in message stack.
3083   --     x_msg_data           Message text if x_msg_count is 1.
3084   --
3085   -- NOTES
3086   --
3087   -- MODIFICATION HISTORY
3088   --
3089   --   04-FEB-2008    VSEGU                Created.
3090   --
3091 
3092 
3093 
3094 /*
3095 The Get Person customers Created procedure is a service to retrieve all of the Person Customer business objects
3096 whose creations have been captured by a logical business event. Each Person Customers Created
3097 business event signifies that one or more Person Customer business objects have been created.
3098 The caller provides an identifier for the Person Customers Created business event and the procedure
3099 returns all of the Person Customer business objects from the business event. For each business object
3100 creation captured in the business event, the procedure calls the generic Get operation:
3101 HZ_PERSON_CUST_BO_PVT.get_person_cust_v2_bo
3102 
3103 Gathering all of the returned business objects from those API calls, the procedure packages
3104 them in a table structure and returns them to the caller.
3105 */
3106 
3107 
3108 PROCEDURE get_v2_person_custs_created(
3109     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
3110     p_event_id            IN           	NUMBER,
3111     x_person_cust_v2_objs    OUT NOCOPY    HZ_PERSON_CUST_V2_BO_TBL,
3112     x_return_status       OUT NOCOPY    VARCHAR2,
3113     x_msg_count           OUT NOCOPY    NUMBER,
3114     x_msg_data            OUT NOCOPY    VARCHAR2
3115   ) is
3116 l_debug_prefix              VARCHAR2(30) := '';
3117 begin
3118 
3119 	-- initialize API return status to success.
3120     	x_return_status := FND_API.G_RET_STS_SUCCESS;
3121 
3122     	-- Initialize message list if p_init_msg_list is set to TRUE
3123     	IF FND_API.to_Boolean(p_init_msg_list) THEN
3124       		FND_MSG_PUB.initialize;
3125     	END IF;
3126 
3127 
3128 	-- Debug info.
3129         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3130         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_created(+)',
3131                                p_prefix=>l_debug_prefix,
3132                                p_msg_level=>fnd_log.level_procedure);
3133     	END IF;
3134 
3135 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3136 			    p_party_id => null,
3137 			    p_event_type => 'C',
3138 			    p_bo_code => 'PERSON_CUST',
3139 			    x_return_status => x_return_status);
3140 
3141 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3142       		RAISE FND_API.G_EXC_ERROR;
3143     	END IF;
3144 
3145 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_v2_person_custs_created(
3146     		p_init_msg_list => fnd_api.g_false,
3147 		p_event_id => p_event_id,
3148     		x_person_cust_v2_objs  => x_person_cust_v2_objs,
3149 		x_return_status => x_return_status,
3150 		x_msg_count => x_msg_count,
3151 		x_msg_data => x_msg_data);
3152 
3153 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3154       		RAISE FND_API.G_EXC_ERROR;
3155     	END IF;
3156 
3157 
3158 
3159 	-- Debug info.
3160     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3161          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3162                                p_msg_data=>x_msg_data,
3163                                p_msg_type=>'WARNING',
3164                                p_msg_level=>fnd_log.level_exception);
3165     	END IF;
3166 
3167     	-- Debug info.
3168         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3169         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_created (-)',
3170                                p_prefix=>l_debug_prefix,
3171                                p_msg_level=>fnd_log.level_procedure);
3172     	END IF;
3173 
3174 
3175  EXCEPTION
3176 
3177   WHEN fnd_api.g_exc_error THEN
3178       x_return_status := fnd_api.g_ret_sts_error;
3179 
3180       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3181                                 p_count => x_msg_count,
3182                                 p_data  => x_msg_data);
3183 
3184       -- Debug info.
3185       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3186         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3187                                p_msg_data=>x_msg_data,
3188                                p_msg_type=>'ERROR',
3189                                p_msg_level=>fnd_log.level_error);
3190       END IF;
3191       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3192         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_created(-)',
3193                                p_prefix=>l_debug_prefix,
3194                                p_msg_level=>fnd_log.level_procedure);
3195       END IF;
3196     WHEN fnd_api.g_exc_unexpected_error THEN
3197       x_return_status := fnd_api.g_ret_sts_unexp_error;
3198 
3199       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3200                                 p_count => x_msg_count,
3201                                 p_data  => x_msg_data);
3202 
3203       -- Debug info.
3204       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3205         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3206                                p_msg_data=>x_msg_data,
3207                                p_msg_type=>'UNEXPECTED ERROR',
3208                                p_msg_level=>fnd_log.level_error);
3209       END IF;
3210       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3211         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_created(-)',
3212                                p_prefix=>l_debug_prefix,
3213                                p_msg_level=>fnd_log.level_procedure);
3214       END IF;
3215     WHEN OTHERS THEN
3216       x_return_status := fnd_api.g_ret_sts_unexp_error;
3217 
3218       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3219       fnd_message.set_token('ERROR' ,SQLERRM);
3220       fnd_msg_pub.add;
3221 
3222       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3223                                 p_count => x_msg_count,
3224                                 p_data  => x_msg_data);
3225 
3226       -- Debug info.
3227       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3228         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3229                                p_msg_data=>x_msg_data,
3230                                p_msg_type=>'SQL ERROR',
3231                                p_msg_level=>fnd_log.level_error);
3232       END IF;
3233       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3234         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_created(-)',
3235                                p_prefix=>l_debug_prefix,
3236                                p_msg_level=>fnd_log.level_procedure);
3237       END IF;
3238 
3239 end;
3240 
3241   PROCEDURE get_v2_person_custs_created(
3242     p_event_id            IN            NUMBER,
3243     x_person_cust_v2_objs    OUT NOCOPY    HZ_PERSON_CUST_V2_BO_TBL,
3244     x_return_status       OUT NOCOPY    VARCHAR2,
3245     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
3246   ) IS
3247     l_msg_data            VARCHAR2(2000);
3248     l_msg_count           NUMBER;
3249   BEGIN
3250     get_v2_person_custs_created(
3251       p_init_msg_list       => fnd_api.g_true,
3252       p_event_id            => p_event_id,
3253       x_person_cust_v2_objs    => x_person_cust_v2_objs,
3254       x_return_status       => x_return_status,
3255       x_msg_count           => l_msg_count,
3256       x_msg_data            => l_msg_data
3257     );
3258     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3259                     x_return_status   => x_return_status,
3260                     x_msg_count       => l_msg_count,
3261                     x_msg_data        => l_msg_data);
3262   END get_v2_person_custs_created;
3263 
3264 
3265 --------------------------------------
3266   --
3267   -- PROCEDURE get_v2_person_custs_updated
3268   --
3269   -- DESCRIPTION
3270   --The caller provides an identifier for the Person Customers update business event and
3271   --the procedure returns database objects of the type HZ_PERSON_CUST_V2_BO for all of
3272   --the Person Customer business objects from the business event.
3273 
3274   --
3275   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3276   --
3277   -- ARGUMENTS
3278   --   IN:
3279   --     p_init_msg_list      Initialize message stack if it is set to
3280   --     p_event_id           BES Event identifier.
3281   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3282   --   OUT:
3283   --     x_person_cust_v2_objs   One or more created logical person.
3284   --     x_return_status      Return status after the call. The status can
3285   --                          be fnd_api.g_ret_sts_success (success),
3286   --                          fnd_api.g_ret_sts_error (error),
3287   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3288   --     x_msg_count          Number of messages in message stack.
3289   --     x_msg_data           Message text if x_msg_count is 1.
3290   --
3291   -- NOTES
3292   --
3293   -- MODIFICATION HISTORY
3294   --
3295   --   10-JUN-2005     AWU                Created.
3296   --
3297 
3298 
3299 
3300 /*
3301 The Get Person Customers Updated procedure is a service to retrieve all of the Person Customer business objects whose updates
3302 have been captured by the logical business event. Each Person Customers Updated business event signifies that one or more Person
3303 Customer business objects have been updated.
3304 The caller provides an identifier for the Person Customers Update business event and the procedure returns database objects of
3305 the type HZ_PERSON_CUST_V2_BO for all of the Person Customer business objects from the business event.
3306 Gathering all of the returned database objects from those API calls, the procedure packages them in a table structure and returns
3307 them to the caller.
3308 */
3309 
3310  PROCEDURE get_v2_person_custs_updated(
3311     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
3312     p_event_id            IN           	NUMBER,
3313     x_person_cust_v2_objs         OUT NOCOPY    HZ_PERSON_CUST_V2_BO_TBL,
3314     x_return_status       OUT NOCOPY    VARCHAR2,
3315     x_msg_count           OUT NOCOPY    NUMBER,
3316     x_msg_data            OUT NOCOPY    VARCHAR2
3317   ) is
3318 
3319 l_debug_prefix              VARCHAR2(30) := '';
3320 begin
3321 
3322 	-- initialize API return status to success.
3323     	x_return_status := FND_API.G_RET_STS_SUCCESS;
3324 
3325     	-- Initialize message list if p_init_msg_list is set to TRUE
3326     	IF FND_API.to_Boolean(p_init_msg_list) THEN
3327       		FND_MSG_PUB.initialize;
3328     	END IF;
3329 
3330 
3331 	-- Debug info.
3332         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3333         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_updated(+)',
3334                                p_prefix=>l_debug_prefix,
3335                                p_msg_level=>fnd_log.level_procedure);
3336     	END IF;
3337 
3338 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3339 			    p_party_id => null,
3340 			    p_event_type => 'U',
3341 			    p_bo_code => 'PERSON_CUST',
3342 			    x_return_status => x_return_status);
3343 
3344 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3345       		RAISE FND_API.G_EXC_ERROR;
3346     	END IF;
3347 
3348 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_v2_person_custs_updated(
3349     		p_init_msg_list => fnd_api.g_false,
3350 		p_event_id => p_event_id,
3351     		x_person_cust_v2_objs  => x_person_cust_v2_objs,
3352 		x_return_status => x_return_status,
3353 		x_msg_count => x_msg_count,
3354 		x_msg_data => x_msg_data);
3355 
3356 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3357       		RAISE FND_API.G_EXC_ERROR;
3358     	END IF;
3359 
3360 
3361 
3362 	-- Debug info.
3363     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3364          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3365                                p_msg_data=>x_msg_data,
3366                                p_msg_type=>'WARNING',
3367                                p_msg_level=>fnd_log.level_exception);
3368     	END IF;
3369 
3370     	-- Debug info.
3371         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3372         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_updated (-)',
3373                                p_prefix=>l_debug_prefix,
3374                                p_msg_level=>fnd_log.level_procedure);
3375     	END IF;
3376 
3377 
3378  EXCEPTION
3379 
3380   WHEN fnd_api.g_exc_error THEN
3381       x_return_status := fnd_api.g_ret_sts_error;
3382 
3383       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3384                                 p_count => x_msg_count,
3385                                 p_data  => x_msg_data);
3386 
3387       -- Debug info.
3388       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3389         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3390                                p_msg_data=>x_msg_data,
3391                                p_msg_type=>'ERROR',
3392                                p_msg_level=>fnd_log.level_error);
3393       END IF;
3394       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3395         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_updated(-)',
3396                                p_prefix=>l_debug_prefix,
3397                                p_msg_level=>fnd_log.level_procedure);
3398       END IF;
3399     WHEN fnd_api.g_exc_unexpected_error THEN
3400       x_return_status := fnd_api.g_ret_sts_unexp_error;
3401 
3402       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3403                                 p_count => x_msg_count,
3404                                 p_data  => x_msg_data);
3405 
3406       -- Debug info.
3407       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3408         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3409                                p_msg_data=>x_msg_data,
3410                                p_msg_type=>'UNEXPECTED ERROR',
3411                                p_msg_level=>fnd_log.level_error);
3412       END IF;
3413       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3414         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_updated(-)',
3415                                p_prefix=>l_debug_prefix,
3416                                p_msg_level=>fnd_log.level_procedure);
3417       END IF;
3418     WHEN OTHERS THEN
3419       x_return_status := fnd_api.g_ret_sts_unexp_error;
3420 
3421       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3422       fnd_message.set_token('ERROR' ,SQLERRM);
3423       fnd_msg_pub.add;
3424 
3425       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3426                                 p_count => x_msg_count,
3427                                 p_data  => x_msg_data);
3428 
3429       -- Debug info.
3430       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3431         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3432                                p_msg_data=>x_msg_data,
3433                                p_msg_type=>'SQL ERROR',
3434                                p_msg_level=>fnd_log.level_error);
3435       END IF;
3436       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3437         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_custs_updated(-)',
3438                                p_prefix=>l_debug_prefix,
3439                                p_msg_level=>fnd_log.level_procedure);
3440       END IF;
3441 
3442 end;
3443 
3444   PROCEDURE get_v2_person_custs_updated(
3445     p_event_id            IN            NUMBER,
3446     x_person_cust_v2_objs         OUT NOCOPY    HZ_PERSON_CUST_V2_BO_TBL,
3447     x_return_status       OUT NOCOPY    VARCHAR2,
3448     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
3449   )IS
3450     l_msg_data            VARCHAR2(2000);
3451     l_msg_count           NUMBER;
3452   BEGIN
3453     get_v2_person_custs_updated(
3454       p_init_msg_list      => fnd_api.g_true,
3455       p_event_id           => p_event_id,
3456       x_person_cust_v2_objs   => x_person_cust_v2_objs,
3457       x_return_status      => x_return_status,
3458       x_msg_count          => l_msg_count,
3459       x_msg_data           => l_msg_data
3460     );
3461     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3462                     x_return_status   => x_return_status,
3463                     x_msg_count       => l_msg_count,
3464                     x_msg_data        => l_msg_data);
3465   END get_v2_person_custs_updated;
3466 
3467 --------------------------------------
3468   --
3469   -- PROCEDURE get_v2_person_cust_updated
3470   --
3471   -- DESCRIPTION
3472   --The caller provides an identifier for the Person customer update business event and person id
3473   --the procedure returns one database object of the type HZ_PERSON_CUST_V2_BO
3474   --
3475   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
3476   --
3477   -- ARGUMENTS
3478   --   IN:
3479   --     p_init_msg_list      Initialize message stack if it is set to
3480   --     p_event_id           BES Event identifier.
3481   --     p_person_cust_id        Person customer identifier.
3482   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
3483   --   OUT:
3484   --     x_person_cust_v2_obj       One updated logical person.
3485   --     x_return_status      Return status after the call. The status can
3486   --                          be fnd_api.g_ret_sts_success (success),
3487   --                          fnd_api.g_ret_sts_error (error),
3488   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
3489   --     x_msg_count          Number of messages in message stack.
3490   --     x_msg_data           Message text if x_msg_count is 1.
3491   --
3492   -- NOTES
3493   --
3494   -- MODIFICATION HISTORY
3495   --
3496   --   04-FEB-2008     vsegu                Created.
3497   --
3498 
3499  PROCEDURE get_v2_person_cust_updated(
3500     p_init_msg_list       IN            VARCHAR2 := fnd_api.g_false,
3501     p_event_id            IN           	NUMBER,
3502     p_person_cust_id           IN           NUMBER,
3503     x_person_cust_v2_obj         OUT NOCOPY    HZ_PERSON_CUST_V2_BO,
3504     x_return_status       OUT NOCOPY    VARCHAR2,
3505     x_msg_count           OUT NOCOPY    NUMBER,
3506     x_msg_data            OUT NOCOPY    VARCHAR2
3507   ) is
3508 l_debug_prefix              VARCHAR2(30) := '';
3509 begin
3510 
3511 	-- initialize API return status to success.
3512     	x_return_status := FND_API.G_RET_STS_SUCCESS;
3513 
3514     	-- Initialize message list if p_init_msg_list is set to TRUE
3515     	IF FND_API.to_Boolean(p_init_msg_list) THEN
3516       		FND_MSG_PUB.initialize;
3517     	END IF;
3518 
3519 
3520 	-- Debug info.
3521         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3522         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_cust_updated(+)',
3523                                p_prefix=>l_debug_prefix,
3524                                p_msg_level=>fnd_log.level_procedure);
3525     	END IF;
3526 
3527 	HZ_EXTRACT_BO_UTIL_PVT.validate_event_id(p_event_id => p_event_id,
3528 			    p_party_id => p_person_cust_id,
3529 			    p_event_type => 'U',
3530 			    p_bo_code => 'PERSON_CUST',
3531 			    x_return_status => x_return_status);
3532 
3533 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3534       		RAISE FND_API.G_EXC_ERROR;
3535     	END IF;
3536 
3537 	HZ_EXTRACT_PERSON_CUST_BO_PVT.get_v2_person_cust_updated(
3538     		p_init_msg_list => fnd_api.g_false,
3539 		p_event_id => p_event_id,
3540 		p_person_cust_id  => p_person_cust_id,
3541     		x_person_cust_v2_obj  => x_person_cust_v2_obj,
3542 		x_return_status => x_return_status,
3543 		x_msg_count => x_msg_count,
3544 		x_msg_data => x_msg_data);
3545 
3546 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3547       		RAISE FND_API.G_EXC_ERROR;
3548     	END IF;
3549 
3550 
3551 
3552 	-- Debug info.
3553     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
3554          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3555                                p_msg_data=>x_msg_data,
3556                                p_msg_type=>'WARNING',
3557                                p_msg_level=>fnd_log.level_exception);
3558     	END IF;
3559 
3560     	-- Debug info.
3561         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3562         	hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_cust_updated (-)',
3563                                p_prefix=>l_debug_prefix,
3564                                p_msg_level=>fnd_log.level_procedure);
3565     	END IF;
3566 
3567 
3568  EXCEPTION
3569 
3570   WHEN fnd_api.g_exc_error THEN
3571       x_return_status := fnd_api.g_ret_sts_error;
3572 
3573       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3574                                 p_count => x_msg_count,
3575                                 p_data  => x_msg_data);
3576 
3577       -- Debug info.
3578       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3579         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3580                                p_msg_data=>x_msg_data,
3581                                p_msg_type=>'ERROR',
3582                                p_msg_level=>fnd_log.level_error);
3583       END IF;
3584       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3585         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_cust_updated(-)',
3586                                p_prefix=>l_debug_prefix,
3587                                p_msg_level=>fnd_log.level_procedure);
3588       END IF;
3589     WHEN fnd_api.g_exc_unexpected_error THEN
3590       x_return_status := fnd_api.g_ret_sts_unexp_error;
3591 
3592       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3593                                 p_count => x_msg_count,
3594                                 p_data  => x_msg_data);
3595 
3596       -- Debug info.
3597       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3598         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3599                                p_msg_data=>x_msg_data,
3600                                p_msg_type=>'UNEXPECTED ERROR',
3601                                p_msg_level=>fnd_log.level_error);
3602       END IF;
3603       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3604         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_cust_updated(-)',
3605                                p_prefix=>l_debug_prefix,
3606                                p_msg_level=>fnd_log.level_procedure);
3607       END IF;
3608     WHEN OTHERS THEN
3609       x_return_status := fnd_api.g_ret_sts_unexp_error;
3610 
3611       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
3612       fnd_message.set_token('ERROR' ,SQLERRM);
3613       fnd_msg_pub.add;
3614 
3615       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
3616                                 p_count => x_msg_count,
3617                                 p_data  => x_msg_data);
3618 
3619       -- Debug info.
3620       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
3621         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
3622                                p_msg_data=>x_msg_data,
3623                                p_msg_type=>'SQL ERROR',
3624                                p_msg_level=>fnd_log.level_error);
3625       END IF;
3626       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3627         hz_utility_v2pub.debug(p_message=>'hz_person_cust_bo_pub.get_v2_person_cust_updated(-)',
3628                                p_prefix=>l_debug_prefix,
3629                                p_msg_level=>fnd_log.level_procedure);
3630       END IF;
3631 
3632 end;
3633 
3634   PROCEDURE get_v2_person_cust_updated(
3635     p_event_id            IN            NUMBER,
3636     p_person_cust_id           IN           NUMBER,
3637     x_person_cust_v2_obj         OUT NOCOPY    HZ_PERSON_CUST_V2_BO,
3638     x_return_status       OUT NOCOPY    VARCHAR2,
3639     x_messages            OUT NOCOPY    HZ_MESSAGE_OBJ_TBL
3640   ) IS
3641     l_msg_data            VARCHAR2(2000);
3642     l_msg_count           NUMBER;
3643   BEGIN
3644     get_v2_person_cust_updated(
3645       p_init_msg_list       => fnd_api.g_true,
3646       p_event_id            => p_event_id,
3647       p_person_cust_id      => p_person_cust_id,
3648       x_person_cust_v2_obj     => x_person_cust_v2_obj,
3649       x_return_status       => x_return_status,
3650       x_msg_count           => l_msg_count,
3651       x_msg_data            => l_msg_data
3652     );
3653     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
3654                     x_return_status   => x_return_status,
3655                     x_msg_count       => l_msg_count,
3656                     x_msg_data        => l_msg_data);
3657   END get_v2_person_cust_updated;
3658 
3659 END hz_person_cust_bo_pub;