DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_CUST_ACCT_SITE_BO_PUB

Source


1 PACKAGE BODY hz_cust_acct_site_bo_pub AS
2 /*$Header: ARHBCSBB.pls 120.15.12010000.2 2008/10/16 22:27:31 awu ship $ */
3 
4   -- PRIVATE PROCEDURE assign_cust_acct_site_rec
5   --
6   -- DESCRIPTION
7   --     Assign attribute value from customer account site object to plsql record.
8   --
9   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
10   --
11   -- ARGUMENTS
12   --   IN:
13   --     p_cust_acct_site_obj Customer account site object.
14   --     p_party_site_id      Party site Id.
15   --     p_cust_acct_id       Customer account Id.
16   --     p_cust_acct_site_id  Customer account site Id.
17   --     p_cust_acct_site_os  Customer account site original system.
18   --     p_cust_acct_site_osr Customer account site original system reference.
19   --     p_create_or_update   Create or update flag.
20   --   IN/OUT:
21   --     px_cust_acct_site_rec Customer Account Site plsql record.
22   --
23   -- NOTES
24   --
25   -- MODIFICATION HISTORY
26   --
27   --   14-DEC-2004    Arnold Ng          Created.
28   --
29 
30   PROCEDURE assign_cust_acct_site_rec(
31     p_cust_acct_site_obj         IN            HZ_CUST_ACCT_SITE_BO,
32     p_party_site_id              IN            NUMBER,
33     p_cust_acct_id               IN            NUMBER,
34     p_cust_acct_site_id          IN            NUMBER,
35     p_cust_acct_site_os          IN            VARCHAR2,
36     p_cust_acct_site_osr         IN            VARCHAR2,
37     p_create_or_update           IN            VARCHAR2 := 'C',
38     px_cust_acct_site_rec        IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE
39   );
40 
41   -- PRIVATE PROCEDURE assign_cust_acct_site_rec
42   --
43   -- DESCRIPTION
44   --     Assign attribute value from customer account site object to plsql record.
45   --
46   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
47   --
48   -- ARGUMENTS
49   --   IN:
50   --     p_cust_acct_site_obj Customer account site object.
51   --     p_party_site_id      Party site Id.
52   --     p_cust_acct_id       Customer account Id.
53   --     p_cust_acct_site_id  Customer account site Id.
54   --     p_cust_acct_site_os  Customer account site original system.
55   --     p_cust_acct_site_osr Customer account site original system reference.
56   --     p_create_or_update   Create or update flag.
57   --   IN/OUT:
58   --     px_cust_acct_site_rec Customer Account Site plsql record.
59   --
60   -- NOTES
61   --
62   -- MODIFICATION HISTORY
63   --
64   --   14-DEC-2004    Arnold Ng          Created.
65   --
66 
67   PROCEDURE assign_cust_acct_site_rec(
68     p_cust_acct_site_obj         IN            HZ_CUST_ACCT_SITE_BO,
69     p_party_site_id              IN            NUMBER,
70     p_cust_acct_id               IN            NUMBER,
71     p_cust_acct_site_id          IN            NUMBER,
72     p_cust_acct_site_os          IN            VARCHAR2,
73     p_cust_acct_site_osr         IN            VARCHAR2,
74     p_create_or_update           IN            VARCHAR2 := 'C',
75     px_cust_acct_site_rec        IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE
76   ) IS
77   BEGIN
78     px_cust_acct_site_rec.cust_acct_site_id    := p_cust_acct_site_id;
79     px_cust_acct_site_rec.party_site_id        := p_party_site_id;
80     px_cust_acct_site_rec.cust_account_id      := p_cust_acct_id;
81     px_cust_acct_site_rec.attribute_category   := p_cust_acct_site_obj.attribute_category;
82     px_cust_acct_site_rec.attribute1           := p_cust_acct_site_obj.attribute1;
83     px_cust_acct_site_rec.attribute2           := p_cust_acct_site_obj.attribute2;
84     px_cust_acct_site_rec.attribute3           := p_cust_acct_site_obj.attribute3;
85     px_cust_acct_site_rec.attribute4           := p_cust_acct_site_obj.attribute4;
86     px_cust_acct_site_rec.attribute5           := p_cust_acct_site_obj.attribute5;
87     px_cust_acct_site_rec.attribute6           := p_cust_acct_site_obj.attribute6;
88     px_cust_acct_site_rec.attribute7           := p_cust_acct_site_obj.attribute7;
89     px_cust_acct_site_rec.attribute8           := p_cust_acct_site_obj.attribute8;
90     px_cust_acct_site_rec.attribute9           := p_cust_acct_site_obj.attribute9;
91     px_cust_acct_site_rec.attribute10          := p_cust_acct_site_obj.attribute10;
92     px_cust_acct_site_rec.attribute11          := p_cust_acct_site_obj.attribute11;
93     px_cust_acct_site_rec.attribute12          := p_cust_acct_site_obj.attribute12;
94     px_cust_acct_site_rec.attribute13          := p_cust_acct_site_obj.attribute13;
95     px_cust_acct_site_rec.attribute14          := p_cust_acct_site_obj.attribute14;
96     px_cust_acct_site_rec.attribute15          := p_cust_acct_site_obj.attribute15;
97     px_cust_acct_site_rec.attribute16          := p_cust_acct_site_obj.attribute16;
98     px_cust_acct_site_rec.attribute17          := p_cust_acct_site_obj.attribute17;
99     px_cust_acct_site_rec.attribute18          := p_cust_acct_site_obj.attribute18;
100     px_cust_acct_site_rec.attribute19          := p_cust_acct_site_obj.attribute19;
101     px_cust_acct_site_rec.attribute20          := p_cust_acct_site_obj.attribute20;
102     px_cust_acct_site_rec.global_attribute_category   := p_cust_acct_site_obj.global_attribute_category;
103     px_cust_acct_site_rec.global_attribute1    := p_cust_acct_site_obj.global_attribute1;
104     px_cust_acct_site_rec.global_attribute2    := p_cust_acct_site_obj.global_attribute2;
105     px_cust_acct_site_rec.global_attribute3    := p_cust_acct_site_obj.global_attribute3;
106     px_cust_acct_site_rec.global_attribute4    := p_cust_acct_site_obj.global_attribute4;
107     px_cust_acct_site_rec.global_attribute5    := p_cust_acct_site_obj.global_attribute5;
108     px_cust_acct_site_rec.global_attribute6    := p_cust_acct_site_obj.global_attribute6;
109     px_cust_acct_site_rec.global_attribute7    := p_cust_acct_site_obj.global_attribute7;
110     px_cust_acct_site_rec.global_attribute8    := p_cust_acct_site_obj.global_attribute8;
111     px_cust_acct_site_rec.global_attribute9    := p_cust_acct_site_obj.global_attribute9;
112     px_cust_acct_site_rec.global_attribute10   := p_cust_acct_site_obj.global_attribute10;
113     px_cust_acct_site_rec.global_attribute11   := p_cust_acct_site_obj.global_attribute11;
114     px_cust_acct_site_rec.global_attribute12   := p_cust_acct_site_obj.global_attribute12;
115     px_cust_acct_site_rec.global_attribute13   := p_cust_acct_site_obj.global_attribute13;
116     px_cust_acct_site_rec.global_attribute14   := p_cust_acct_site_obj.global_attribute14;
117     px_cust_acct_site_rec.global_attribute15   := p_cust_acct_site_obj.global_attribute15;
118     px_cust_acct_site_rec.global_attribute16   := p_cust_acct_site_obj.global_attribute16;
119     px_cust_acct_site_rec.global_attribute17   := p_cust_acct_site_obj.global_attribute17;
120     px_cust_acct_site_rec.global_attribute18   := p_cust_acct_site_obj.global_attribute18;
121     px_cust_acct_site_rec.global_attribute19   := p_cust_acct_site_obj.global_attribute19;
122     px_cust_acct_site_rec.global_attribute20   := p_cust_acct_site_obj.global_attribute20;
123     IF(p_cust_acct_site_obj.status in ('A','I')) THEN
124       px_cust_acct_site_rec.status                 := p_cust_acct_site_obj.status;
125     END IF;
126     px_cust_acct_site_rec.customer_category_code := p_cust_acct_site_obj.customer_category_code;
127     px_cust_acct_site_rec.language               := p_cust_acct_site_obj.language;
128     px_cust_acct_site_rec.key_account_flag       := p_cust_acct_site_obj.key_account_flag;
129     px_cust_acct_site_rec.tp_header_id           := p_cust_acct_site_obj.tp_header_id;
130     px_cust_acct_site_rec.ece_tp_location_code   := p_cust_acct_site_obj.ece_tp_location_code;
131     px_cust_acct_site_rec.primary_specialist_id  := p_cust_acct_site_obj.primary_specialist_id;
132     px_cust_acct_site_rec.secondary_specialist_id  := p_cust_acct_site_obj.secondary_specialist_id;
133     px_cust_acct_site_rec.territory_id           := p_cust_acct_site_obj.territory_id;
134     px_cust_acct_site_rec.territory              := p_cust_acct_site_obj.territory;
135     px_cust_acct_site_rec.translated_customer_name := p_cust_acct_site_obj.translated_customer_name;
136     IF(p_create_or_update = 'C') THEN
137       px_cust_acct_site_rec.orig_system            := p_cust_acct_site_os;
138       px_cust_acct_site_rec.orig_system_reference  := p_cust_acct_site_osr;
139       px_cust_acct_site_rec.created_by_module    := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
140     END IF;
141     px_cust_acct_site_rec.org_id               := p_cust_acct_site_obj.org_id;
142   END assign_cust_acct_site_rec;
143 
144   -- PROCEDURE do_create_cust_acct_site_bo
145   --
146   -- DESCRIPTION
147   --     Create customer account site business object.
148   PROCEDURE do_create_cust_acct_site_bo(
149     p_init_msg_list           IN            VARCHAR2 := fnd_api.g_false,
150     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
151     p_cust_acct_site_obj      IN OUT NOCOPY HZ_CUST_ACCT_SITE_BO,
152     p_created_by_module       IN            VARCHAR2,
153     p_obj_source              IN            VARCHAR2 := null,
154     x_return_status           OUT NOCOPY    VARCHAR2,
155     x_msg_count               OUT NOCOPY    NUMBER,
156     x_msg_data                OUT NOCOPY    VARCHAR2,
157     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
158     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
159     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
160     px_parent_acct_id         IN OUT NOCOPY NUMBER,
161     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
162     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
163   ) IS
164     l_debug_prefix             VARCHAR2(30) := '';
165     l_cust_acct_site_rec       HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE;
166 
167     l_ps_id                    NUMBER;
168     l_ps_os                    VARCHAR2(30);
169     l_ps_osr                   VARCHAR2(255);
170 
171     l_acct_party_id            NUMBER;
172     l_acct_party_type          VARCHAR2(30);
173     l_acct_party_os            VARCHAR2(30);
174     l_acct_party_osr           VARCHAR2(255);
175 
176     l_valid_obj                BOOLEAN;
177     l_bus_object               HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
178     l_cbm                      VARCHAR2(30);
179 
180     CURSOR get_acct_party(l_acct_id NUMBER) IS
181     SELECT p.party_id, decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON')
182     FROM HZ_PARTIES p, HZ_CUST_ACCOUNTS a
183     WHERE p.party_id = a.party_id
184     AND a.cust_account_id = l_acct_id;
185 
186     CURSOR get_ps_id(l_os VARCHAR2, l_osr VARCHAR2) IS
187     SELECT ps.party_site_id
188     FROM HZ_PARTY_SITES ps, HZ_ORIG_SYS_REFERENCES ref
189     WHERE ref.owner_table_id = ps.party_site_id
190     AND ref.owner_table_name = 'HZ_PARTY_SITES'
191     AND ref.orig_system = l_os
192     AND ref.orig_system_reference = l_osr
193     AND ref.status = 'A'
194     AND rownum = 1;
195 
196   BEGIN
197     -- Standard start of API savepoint
198     SAVEPOINT do_create_cas_bo_pub;
199 
200     -- initialize API return status to success.
201     x_return_status := FND_API.G_RET_STS_SUCCESS;
202 
203     -- Initialize message list if p_init_msg_list is set to TRUE.
204     IF FND_API.to_Boolean(p_init_msg_list) THEN
205       FND_MSG_PUB.initialize;
206     END IF;
207 
208     -- Debug info.
209     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
210         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_bo(+)',
211                                p_prefix=>l_debug_prefix,
212                                p_msg_level=>fnd_log.level_procedure);
213     END IF;
214 
215     -- initialize Global variable
216     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
217     IF(p_created_by_module IS NULL) THEN
218       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
219     ELSE
220       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
221     END IF;
222 
223     -- Base on p_validate_bo_flag, check the completeness of business objects
224     IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
225       HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
226         p_bus_object_code         => 'CUST_ACCT_SITE',
227         x_bus_object              => l_bus_object
228       );
229       l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_cas_bo_comp(
230                        p_cas_objs   => HZ_CUST_ACCT_SITE_BO_TBL(p_cust_acct_site_obj),
231                        p_bus_object => l_bus_object
232                      );
233       IF NOT(l_valid_obj) THEN
234         RAISE fnd_api.g_exc_error;
235       END IF;
236     END IF;
237 
238     -- check pass in parent_id and parent_os+osr
239     hz_registry_validate_bo_pvt.validate_parent_id(
240       px_parent_id      => px_parent_acct_id,
241       px_parent_os      => px_parent_acct_os,
242       px_parent_osr     => px_parent_acct_osr,
243       p_parent_obj_type => 'CUST_ACCT',
244       x_return_status   => x_return_status,
245       x_msg_count       => x_msg_count,
246       x_msg_data        => x_msg_data);
247 
248     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
249       RAISE FND_API.G_EXC_ERROR;
250     END IF;
251 
252     -- check pass in party_site_id and party_site_os+osr
253     l_ps_id := p_cust_acct_site_obj.party_site_id;
254     l_ps_os := p_cust_acct_site_obj.party_site_os;
255     l_ps_osr := p_cust_acct_site_obj.party_site_osr;
256 
257     hz_registry_validate_bo_pvt.validate_parent_id(
258       px_parent_id      => l_ps_id,
259       px_parent_os      => l_ps_os,
260       px_parent_osr     => l_ps_osr,
261       p_parent_obj_type => 'PARTY_SITE',
262       x_return_status   => x_return_status,
263       x_msg_count       => x_msg_count,
264       x_msg_data        => x_msg_data);
265 
266     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
267       RAISE FND_API.G_EXC_ERROR;
268     END IF;
269 
270     x_cust_acct_site_id := p_cust_acct_site_obj.cust_acct_site_id;
271     x_cust_acct_site_os := p_cust_acct_site_obj.orig_system;
272     x_cust_acct_site_osr := p_cust_acct_site_obj.orig_system_reference;
273 
274     -- check if pass in cust_account_site_id and os+osr
275     hz_registry_validate_bo_pvt.validate_ssm_id(
276       px_id              => x_cust_acct_site_id,
277       px_os              => x_cust_acct_site_os,
278       px_osr             => x_cust_acct_site_osr,
279       p_org_id           => p_cust_acct_site_obj.org_id,
280       p_obj_type         => 'HZ_CUST_ACCT_SITES_ALL',
281       p_create_or_update => 'C',
282       x_return_status    => x_return_status,
283       x_msg_count        => x_msg_count,
284       x_msg_data         => x_msg_data);
285 
286     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
287       RAISE FND_API.G_EXC_ERROR;
288     END IF;
289 
290     -- from p_parent_acct_id, get parent party_id of the account, then
291     -- use this party_id as px_parent_id of party site
292     OPEN get_acct_party(px_parent_acct_id);
293     FETCH get_acct_party INTO l_acct_party_id, l_acct_party_type;
294     CLOSE get_acct_party;
295 
296     IF l_acct_party_id IS NULL THEN
297       RAISE FND_API.G_EXC_ERROR;
298     END IF;
299 
300     ----------------------------------
301     -- Assign cust account site record
302     ----------------------------------
303     assign_cust_acct_site_rec(
304       p_cust_acct_site_obj        => p_cust_acct_site_obj,
305       p_party_site_id             => l_ps_id,
306       p_cust_acct_id              => px_parent_acct_id,
307       p_cust_acct_site_id         => x_cust_acct_site_id,
308       p_cust_acct_site_os         => x_cust_acct_site_os,
309       p_cust_acct_site_osr        => x_cust_acct_site_osr,
310       px_cust_acct_site_rec       => l_cust_acct_site_rec
311     );
312 
313     HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_acct_site (
314       p_cust_acct_site_rec        => l_cust_acct_site_rec,
315       x_cust_acct_site_id         => x_cust_acct_site_id,
316       x_return_status             => x_return_status,
317       x_msg_count                 => x_msg_count,
318       x_msg_data                  => x_msg_data
319     );
320 
321     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
322       RAISE FND_API.G_EXC_ERROR;
323     END IF;
324 
325     -- assign cust_acct_site_id
326     p_cust_acct_site_obj.cust_acct_site_id := x_cust_acct_site_id;
327     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
328 
329     -------------------------------------
330     -- Call cust account contact v2pub api
331     -------------------------------------
332     -- Parent of cust account contact is cust account site
333     -- so pass x_cust_acct_site_id, x_cust_acct_site_os and x_cust_acct_site_osr
334     IF((p_cust_acct_site_obj.cust_acct_contact_objs IS NOT NULL) AND
335        (p_cust_acct_site_obj.cust_acct_contact_objs.COUNT > 0)) THEN
336       HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
337         p_cac_objs           => p_cust_acct_site_obj.cust_acct_contact_objs,
338         p_create_update_flag => 'C',
339         p_obj_source         => p_obj_source,
340         x_return_status      => x_return_status,
341         x_msg_count          => x_msg_count,
342         x_msg_data           => x_msg_data,
343         p_parent_id          => x_cust_acct_site_id,
344         p_parent_os          => x_cust_acct_site_os,
345         p_parent_osr         => x_cust_acct_site_osr,
346         p_parent_obj_type    => 'CUST_ACCT_SITE'
347       );
348 
349       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
350         RAISE FND_API.G_EXC_ERROR;
351       END IF;
352     END IF;
353 
354     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
355 
356     -------------------------------------
357     -- Call cust account site use v2pub api
358     -------------------------------------
359     -- create cust account site uses will include cust acct site use plus site use profile
360     -- need to put customer account id and customer account site id
361     IF((p_cust_acct_site_obj.cust_acct_site_use_objs IS NOT NULL) AND
362        (p_cust_acct_site_obj.cust_acct_site_use_objs.COUNT > 0)) THEN
363       HZ_CUST_ACCT_SITE_BO_PVT.create_cust_site_uses(
364         p_casu_objs          => p_cust_acct_site_obj.cust_acct_site_use_objs,
365         p_ca_id              => px_parent_acct_id,
366         p_cas_id             => x_cust_acct_site_id,
367         p_parent_os          => x_cust_acct_site_os,
368         x_return_status      => x_return_status,
369         x_msg_count          => x_msg_count,
370         x_msg_data           => x_msg_data
371       );
372 
373       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
374         RAISE FND_API.G_EXC_ERROR;
375       END IF;
376     END IF;
377 
378     -- reset Global variable
379     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
380     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
381 
382     -- Debug info.
383     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
384          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
385                                p_msg_data=>x_msg_data,
386                                p_msg_type=>'WARNING',
387                                p_msg_level=>fnd_log.level_exception);
388     END IF;
389     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
390         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_bo(-)',
391                                p_prefix=>l_debug_prefix,
392                                p_msg_level=>fnd_log.level_procedure);
393     END IF;
394 
395   EXCEPTION
396     WHEN fnd_api.g_exc_error THEN
397       ROLLBACK TO do_create_cas_bo_pub;
398 
399       -- reset Global variable
400       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
401       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
402 
403       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
404       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
405       FND_MSG_PUB.ADD;
406 
407       x_return_status := fnd_api.g_ret_sts_error;
408 
409       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
410                                 p_count => x_msg_count,
411                                 p_data  => x_msg_data);
412 
413       -- Debug info.
414       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
415         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
416                                p_msg_data=>x_msg_data,
417                                p_msg_type=>'ERROR',
418                                p_msg_level=>fnd_log.level_error);
419       END IF;
420       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
421         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_bo(-)',
422                                p_prefix=>l_debug_prefix,
423                                p_msg_level=>fnd_log.level_procedure);
424       END IF;
425 
426     WHEN fnd_api.g_exc_unexpected_error THEN
427       ROLLBACK TO do_create_cas_bo_pub;
428 
429       -- reset Global variable
430       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
431       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
432 
433       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
434       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
435       FND_MSG_PUB.ADD;
436 
437       x_return_status := fnd_api.g_ret_sts_unexp_error;
438 
439       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
440                                 p_count => x_msg_count,
441                                 p_data  => x_msg_data);
442 
443       -- Debug info.
444       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
445         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
446                                p_msg_data=>x_msg_data,
447                                p_msg_type=>'UNEXPECTED ERROR',
448                                p_msg_level=>fnd_log.level_error);
449       END IF;
450       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
451         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_bo(-)',
452                                p_prefix=>l_debug_prefix,
453                                p_msg_level=>fnd_log.level_procedure);
454       END IF;
455 
456     WHEN OTHERS THEN
457       ROLLBACK TO do_create_cas_bo_pub;
458 
459       -- reset Global variable
460       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
461       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
462 
463       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
464       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
465       FND_MSG_PUB.ADD;
466 
467       x_return_status := fnd_api.g_ret_sts_unexp_error;
468 
469       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
470       fnd_message.set_token('ERROR' ,SQLERRM);
471       fnd_msg_pub.add;
472 
473       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
474                                 p_count => x_msg_count,
475                                 p_data  => x_msg_data);
476 
477       -- Debug info.
478       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
479         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
480                                p_msg_data=>x_msg_data,
481                                p_msg_type=>'SQL ERROR',
482                                p_msg_level=>fnd_log.level_error);
483       END IF;
484       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
485         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_bo(-)',
486                                p_prefix=>l_debug_prefix,
487                                p_msg_level=>fnd_log.level_procedure);
488       END IF;
489   END do_create_cust_acct_site_bo;
490 
491   PROCEDURE create_cust_acct_site_bo(
492     p_init_msg_list           IN            VARCHAR2 := fnd_api.g_false,
493     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
494     p_cust_acct_site_obj      IN            HZ_CUST_ACCT_SITE_BO,
495     p_created_by_module       IN            VARCHAR2,
496     x_return_status           OUT NOCOPY    VARCHAR2,
497     x_msg_count               OUT NOCOPY    NUMBER,
498     x_msg_data                OUT NOCOPY    VARCHAR2,
499     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
500     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
501     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
502     px_parent_acct_id         IN OUT NOCOPY NUMBER,
503     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
504     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
505   ) IS
506     l_cas_obj                 HZ_CUST_ACCT_SITE_BO;
507   BEGIN
508     l_cas_obj := p_cust_acct_site_obj;
509     do_create_cust_acct_site_bo(
510       p_init_msg_list           => p_init_msg_list,
511       p_validate_bo_flag        => p_validate_bo_flag,
512       p_cust_acct_site_obj      => l_cas_obj,
513       p_created_by_module       => p_created_by_module,
514       p_obj_source              => null,
515       x_return_status           => x_return_status,
516       x_msg_count               => x_msg_count,
517       x_msg_data                => x_msg_data,
518       x_cust_acct_site_id       => x_cust_acct_site_id,
519       x_cust_acct_site_os       => x_cust_acct_site_os,
520       x_cust_acct_site_osr      => x_cust_acct_site_osr,
521       px_parent_acct_id         => px_parent_acct_id,
522       px_parent_acct_os         => px_parent_acct_os,
523       px_parent_acct_osr        => px_parent_acct_osr
524     );
525   END create_cust_acct_site_bo;
526 
527   PROCEDURE create_cust_acct_site_bo(
528     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
529     p_cust_acct_site_obj      IN            HZ_CUST_ACCT_SITE_BO,
530     p_created_by_module       IN            VARCHAR2,
531     p_obj_source              IN            VARCHAR2 := null,
532     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
533     x_return_status           OUT NOCOPY    VARCHAR2,
534     x_messages                OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
535     x_return_obj              OUT NOCOPY    HZ_CUST_ACCT_SITE_BO,
536     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
537     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
538     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
539     px_parent_acct_id         IN OUT NOCOPY NUMBER,
540     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
541     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
542   ) IS
543     l_msg_data                VARCHAR2(2000);
544     l_msg_count               NUMBER;
545     l_cas_obj                 HZ_CUST_ACCT_SITE_BO;
546   BEGIN
547     l_cas_obj := p_cust_acct_site_obj;
548     do_create_cust_acct_site_bo(
549       p_init_msg_list           => fnd_api.g_true,
550       p_validate_bo_flag        => p_validate_bo_flag,
551       p_cust_acct_site_obj      => l_cas_obj,
552       p_created_by_module       => p_created_by_module,
553       p_obj_source              => p_obj_source,
554       x_return_status           => x_return_status,
555       x_msg_count               => l_msg_count,
556       x_msg_data                => l_msg_data,
557       x_cust_acct_site_id       => x_cust_acct_site_id,
558       x_cust_acct_site_os       => x_cust_acct_site_os,
559       x_cust_acct_site_osr      => x_cust_acct_site_osr,
560       px_parent_acct_id         => px_parent_acct_id,
561       px_parent_acct_os         => px_parent_acct_os,
562       px_parent_acct_osr        => px_parent_acct_osr
563     );
564     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
565                     x_return_status   => x_return_status,
566                     x_msg_count       => l_msg_count,
567                     x_msg_data        => l_msg_data);
568     IF FND_API.to_Boolean(p_return_obj_flag) THEN
569       x_return_obj := l_cas_obj;
570     END IF;
571   END create_cust_acct_site_bo;
572 
573   -- PROCEDURE update_cust_acct_site_bo
574   --
575   -- DESCRIPTION
576   --     Update customer account site business object.
577   PROCEDURE update_cust_acct_site_bo(
578     p_init_msg_list           IN            VARCHAR2 := fnd_api.g_false,
579     p_cust_acct_site_obj      IN            HZ_CUST_ACCT_SITE_BO,
580     p_created_by_module       IN            VARCHAR2,
581     x_return_status           OUT NOCOPY    VARCHAR2,
582     x_msg_count               OUT NOCOPY    NUMBER,
583     x_msg_data                OUT NOCOPY    VARCHAR2,
584     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
585     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
586     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2
587   )IS
588     l_cas_obj                 HZ_CUST_ACCT_SITE_BO;
589   BEGIN
590     l_cas_obj := p_cust_acct_site_obj;
591     do_update_cust_acct_site_bo(
592       p_init_msg_list           => p_init_msg_list,
593       p_cust_acct_site_obj      => l_cas_obj,
594       p_created_by_module       => p_created_by_module,
595       p_obj_source              => null,
596       x_return_status           => x_return_status,
597       x_msg_count               => x_msg_count,
598       x_msg_data                => x_msg_data,
599       x_cust_acct_site_id       => x_cust_acct_site_id,
600       x_cust_acct_site_os       => x_cust_acct_site_os,
601       x_cust_acct_site_osr      => x_cust_acct_site_osr,
602       p_parent_os               => NULL
603     );
604   END update_cust_acct_site_bo;
605 
606   PROCEDURE update_cust_acct_site_bo(
607     p_cust_acct_site_obj      IN            HZ_CUST_ACCT_SITE_BO,
608     p_created_by_module       IN            VARCHAR2,
609     p_obj_source              IN            VARCHAR2 := null,
610     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
611     x_return_status           OUT NOCOPY    VARCHAR2,
612     x_messages                OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
613     x_return_obj              OUT NOCOPY    HZ_CUST_ACCT_SITE_BO,
614     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
615     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
616     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2
617   )IS
618     l_msg_data                VARCHAR2(2000);
619     l_msg_count               NUMBER;
620     l_cas_obj                 HZ_CUST_ACCT_SITE_BO;
621   BEGIN
622     l_cas_obj := p_cust_acct_site_obj;
623     do_update_cust_acct_site_bo(
624       p_init_msg_list           => fnd_api.g_true,
625       p_cust_acct_site_obj      => l_cas_obj,
626       p_created_by_module       => p_created_by_module,
627       p_obj_source              => p_obj_source,
628       x_return_status           => x_return_status,
629       x_msg_count               => l_msg_count,
630       x_msg_data                => l_msg_data,
631       x_cust_acct_site_id       => x_cust_acct_site_id,
632       x_cust_acct_site_os       => x_cust_acct_site_os,
633       x_cust_acct_site_osr      => x_cust_acct_site_osr,
634       p_parent_os               => NULL
635     );
636     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
637                     x_return_status   => x_return_status,
638                     x_msg_count       => l_msg_count,
639                     x_msg_data        => l_msg_data);
640     IF FND_API.to_Boolean(p_return_obj_flag) THEN
641       x_return_obj := l_cas_obj;
642     END IF;
643   END update_cust_acct_site_bo;
644 
645   -- PRIVATE PROCEDURE do_update_cust_acct_site_bo
646   --
647   -- DESCRIPTION
648   --     Update customer account site business object.
649   PROCEDURE do_update_cust_acct_site_bo(
650     p_init_msg_list           IN            VARCHAR2 := fnd_api.g_false,
651     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
652     p_cust_acct_site_obj      IN OUT NOCOPY HZ_CUST_ACCT_SITE_BO,
653     p_created_by_module       IN            VARCHAR2,
654     p_obj_source              IN            VARCHAR2 := null,
655     x_return_status           OUT NOCOPY    VARCHAR2,
656     x_msg_count               OUT NOCOPY    NUMBER,
657     x_msg_data                OUT NOCOPY    VARCHAR2,
658     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
659     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
660     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
661     p_parent_os               IN            VARCHAR2
662   )IS
663     l_debug_prefix             VARCHAR2(30) := '';
664     l_cust_acct_site_rec       HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE;
665     l_cas_ovn                  NUMBER;
666     l_create_update_flag       VARCHAR2(1);
667     l_parent_os                VARCHAR2(30);
668     l_party_site_id            NUMBER;
669     l_ca_id                    NUMBER;
670     l_ca_os                    VARCHAR2(30);
671     l_ca_osr                   VARCHAR2(255);
672     l_cbm                      VARCHAR2(30);
673 
674     CURSOR get_ovn(l_cas_id NUMBER) IS
675     SELECT s.object_version_number, s.cust_account_id, s.party_site_id
676     FROM HZ_CUST_ACCT_SITES s
677     WHERE s.cust_acct_site_id = l_cas_id;
678 
679   BEGIN
680     -- Standard start of API savepoint
681     SAVEPOINT do_update_cas_bo_pub;
682 
683     -- initialize API return status to success.
684     x_return_status := FND_API.G_RET_STS_SUCCESS;
685 
686     -- Initialize message list if p_init_msg_list is set to TRUE.
687     IF FND_API.to_Boolean(p_init_msg_list) THEN
688       FND_MSG_PUB.initialize;
689     END IF;
690 
691     -- Debug info.
692     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
693         hz_utility_v2pub.debug(p_message=>'do_update_cas_bo(+)',
694                                p_prefix=>l_debug_prefix,
695                                p_msg_level=>fnd_log.level_procedure);
696     END IF;
697 
698     -- initialize Global variable
699     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
700     IF(p_created_by_module IS NULL) THEN
701       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
702     ELSE
703       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
704     END IF;
705 
706     -------------------------------
707     -- For Update cust acct site
708     -------------------------------
709     x_cust_acct_site_id := p_cust_acct_site_obj.cust_acct_site_id;
710     x_cust_acct_site_os := p_cust_acct_site_obj.orig_system;
711     x_cust_acct_site_osr := p_cust_acct_site_obj.orig_system_reference;
712 
713     -- validate ssm of cust account site
714     hz_registry_validate_bo_pvt.validate_ssm_id(
715       px_id              => x_cust_acct_site_id,
716       px_os              => x_cust_acct_site_os,
717       px_osr             => x_cust_acct_site_osr,
718       p_org_id           => p_cust_acct_site_obj.org_id,
719       p_obj_type         => 'HZ_CUST_ACCT_SITES_ALL',
720       p_create_or_update => 'U',
721       x_return_status    => x_return_status,
722       x_msg_count        => x_msg_count,
723       x_msg_data         => x_msg_data);
724 
725     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
726       RAISE FND_API.G_EXC_ERROR;
727     END IF;
728 
729     -- get object version number of customer acct site
730     OPEN get_ovn(x_cust_acct_site_id);
731     FETCH get_ovn INTO l_cas_ovn, l_ca_id, l_party_site_id;
732     CLOSE get_ovn;
733 
734     assign_cust_acct_site_rec(
735       p_cust_acct_site_obj        => p_cust_acct_site_obj,
736       p_party_site_id             => l_party_site_id,
737       p_cust_acct_id              => l_ca_id,
738       p_cust_acct_site_id         => x_cust_acct_site_id,
739       p_cust_acct_site_os         => x_cust_acct_site_os,
740       p_cust_acct_site_osr        => x_cust_acct_site_osr,
741       p_create_or_update          => 'U',
742       px_cust_acct_site_rec       => l_cust_acct_site_rec
743     );
744 
745     HZ_CUST_ACCOUNT_SITE_V2PUB.update_cust_acct_site(
746       p_cust_acct_site_rec          => l_cust_acct_site_rec,
747       p_object_version_number       => l_cas_ovn,
748       x_return_status               => x_return_status,
749       x_msg_count                   => x_msg_count,
750       x_msg_data                    => x_msg_data
751     );
752 
753     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
754       RAISE FND_API.G_EXC_ERROR;
755     END IF;
756 
757     -- assign cust_acct_site_id
758     p_cust_acct_site_obj.cust_acct_site_id := x_cust_acct_site_id;
759     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
760 
761     -----------------------------------
762     -- For cust account contact
763     -----------------------------------
764     IF((p_cust_acct_site_obj.cust_acct_contact_objs IS NOT NULL) AND
765        (p_cust_acct_site_obj.cust_acct_contact_objs.COUNT > 0)) THEN
766       HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
767         p_cac_objs           => p_cust_acct_site_obj.cust_acct_contact_objs,
768         p_create_update_flag  => 'U',
769         p_obj_source         => p_obj_source,
770         x_return_status       => x_return_status,
771         x_msg_count           => x_msg_count,
772         x_msg_data            => x_msg_data,
773         p_parent_id           => x_cust_acct_site_id,
774         p_parent_os           => x_cust_acct_site_os,
775         p_parent_osr          => x_cust_acct_site_osr,
776         p_parent_obj_type     => 'CUST_ACCT_SITE'
777       );
778 
779       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
780         RAISE FND_API.G_EXC_ERROR;
781       END IF;
782     END IF;
783 
784     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
785 
786     ----------------------------
787     -- For cust account site use
788     ----------------------------
789     IF((p_cust_acct_site_obj.cust_acct_site_use_objs IS NOT NULL) AND
790        (p_cust_acct_site_obj.cust_acct_site_use_objs.COUNT > 0)) THEN
791       HZ_CUST_ACCT_SITE_BO_PVT.save_cust_site_uses(
792         p_casu_objs          => p_cust_acct_site_obj.cust_acct_site_use_objs,
793         p_ca_id              => l_ca_id,
794         p_cas_id             => x_cust_acct_site_id,
795         p_parent_os          => x_cust_acct_site_os,
796         x_return_status      => x_return_status,
797         x_msg_count          => x_msg_count,
798         x_msg_data           => x_msg_data
799       );
800 
801       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
802         RAISE FND_API.G_EXC_ERROR;
803       END IF;
804     END IF;
805 
806     -- reset Global variable
807     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
808     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
809 
810     -- Debug info.
811     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
812          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
813                                p_msg_data=>x_msg_data,
814                                p_msg_type=>'WARNING',
815                                p_msg_level=>fnd_log.level_exception);
816     END IF;
817     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
818         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_bo(-)',
819                                p_prefix=>l_debug_prefix,
820                                p_msg_level=>fnd_log.level_procedure);
821     END IF;
822   EXCEPTION
823     WHEN fnd_api.g_exc_error THEN
824       ROLLBACK TO do_update_cas_bo_pub;
825 
826       -- reset Global variable
827       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
828       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
829 
830       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
831       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
832       FND_MSG_PUB.ADD;
833 
834       x_return_status := fnd_api.g_ret_sts_error;
835 
836       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
837                                 p_count => x_msg_count,
838                                 p_data  => x_msg_data);
839 
840       -- Debug info.
841       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
842         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
843                                p_msg_data=>x_msg_data,
844                                p_msg_type=>'ERROR',
845                                p_msg_level=>fnd_log.level_error);
846       END IF;
847       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
848         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_bo(-)',
849                                p_prefix=>l_debug_prefix,
850                                p_msg_level=>fnd_log.level_procedure);
851       END IF;
852 
853     WHEN fnd_api.g_exc_unexpected_error THEN
854       ROLLBACK TO do_update_cas_bo_pub;
855 
856       -- reset Global variable
857       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
858       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
859 
860       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
861       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
862       FND_MSG_PUB.ADD;
863 
864       x_return_status := fnd_api.g_ret_sts_unexp_error;
865 
866       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
867                                 p_count => x_msg_count,
868                                 p_data  => x_msg_data);
869 
870       -- Debug info.
871       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
872         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
873                                p_msg_data=>x_msg_data,
874                                p_msg_type=>'UNEXPECTED ERROR',
875                                p_msg_level=>fnd_log.level_error);
876       END IF;
877       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
878         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_bo(-)',
879                                p_prefix=>l_debug_prefix,
880                                p_msg_level=>fnd_log.level_procedure);
881       END IF;
882 
883     WHEN OTHERS THEN
884       ROLLBACK TO do_update_cas_bo_pub;
885 
886       -- reset Global variable
887       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
888       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
889 
890       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
891       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
892       FND_MSG_PUB.ADD;
893 
894       x_return_status := fnd_api.g_ret_sts_unexp_error;
895 
896       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
897       fnd_message.set_token('ERROR' ,SQLERRM);
898       fnd_msg_pub.add;
899 
900       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
901                                 p_count => x_msg_count,
902                                 p_data  => x_msg_data);
903 
904       -- Debug info.
905       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
906         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
907                                p_msg_data=>x_msg_data,
908                                p_msg_type=>'SQL ERROR',
909                                p_msg_level=>fnd_log.level_error);
910       END IF;
911       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
912         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_bo(-)',
913                                p_prefix=>l_debug_prefix,
914                                p_msg_level=>fnd_log.level_procedure);
915       END IF;
916   END do_update_cust_acct_site_bo;
917 
918   -- PROCEDURE do_save_cust_acct_site_bo
919   --
920   -- DESCRIPTION
921   --     Create or update customer account site business object.
922   PROCEDURE do_save_cust_acct_site_bo(
923     p_init_msg_list            IN            VARCHAR2 := fnd_api.g_false,
924     p_validate_bo_flag         IN            VARCHAR2 := fnd_api.g_true,
925     p_cust_acct_site_obj      IN OUT NOCOPY HZ_CUST_ACCT_SITE_BO,
926     p_created_by_module        IN            VARCHAR2,
927     p_obj_source               IN            VARCHAR2 := null,
928     x_return_status            OUT NOCOPY    VARCHAR2,
929     x_msg_count                OUT NOCOPY    NUMBER,
930     x_msg_data                 OUT NOCOPY    VARCHAR2,
931     x_cust_acct_site_id        OUT NOCOPY    NUMBER,
932     x_cust_acct_site_os        OUT NOCOPY    VARCHAR2,
933     x_cust_acct_site_osr       OUT NOCOPY    VARCHAR2,
934     px_parent_acct_id          IN OUT NOCOPY NUMBER,
935     px_parent_acct_os          IN OUT NOCOPY VARCHAR2,
936     px_parent_acct_osr         IN OUT NOCOPY VARCHAR2
937   ) IS
938     l_return_status            VARCHAR2(30);
939     l_msg_count                NUMBER;
940     l_msg_data                 VARCHAR2(2000);
941     l_create_update_flag       VARCHAR2(1);
942     l_debug_prefix             VARCHAR2(30) := '';
943 
944     CURSOR get_cas_id(l_ps_id NUMBER, l_ca_id NUMBER, l_org_id NUMBER) IS
945     SELECT cust_acct_site_id
946     FROM HZ_CUST_ACCT_SITES_ALL
947     WHERE cust_account_id = l_ca_id
948     AND party_site_id = l_ps_id
949     AND org_id = l_org_id
950     AND rownum = 1;
951 
952   BEGIN
953     -- initialize API return status to success.
954     x_return_status := FND_API.G_RET_STS_SUCCESS;
955 
956     -- Initialize message list if p_init_msg_list is set to TRUE.
957     IF FND_API.to_Boolean(p_init_msg_list) THEN
958       FND_MSG_PUB.initialize;
959     END IF;
960 
961     -- Debug info.
962     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
963         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_bo(+)',
964                                p_prefix=>l_debug_prefix,
965                                p_msg_level=>fnd_log.level_procedure);
966     END IF;
967 
968     x_cust_acct_site_id := p_cust_acct_site_obj.cust_acct_site_id;
969     x_cust_acct_site_os := p_cust_acct_site_obj.orig_system;
970     x_cust_acct_site_osr := p_cust_acct_site_obj.orig_system_reference;
971 
972     -- AIA enh 7209179
973     if p_cust_acct_site_obj.cust_acct_site_id is null and p_cust_acct_site_obj.orig_system = 'ORACLE_AIA'
974     then
975     	open get_cas_id(p_cust_acct_site_obj.party_site_id,p_cust_acct_site_obj.cust_acct_id,p_cust_acct_site_obj.org_id);
976         fetch get_cas_id into x_cust_acct_site_id;
977 	close get_cas_id;
978 	if  x_cust_acct_site_id is not null
979 	then
980 		x_cust_acct_site_os := null;
981 		x_cust_acct_site_osr := null;
982 		p_cust_acct_site_obj.cust_acct_site_id :=  x_cust_acct_site_id;
983 	        p_cust_acct_site_obj.orig_system := null;
984 		p_cust_acct_site_obj.orig_system_reference := null;
985 	end if;
986     end if;
987 
988     -- check root business object to determine that it should be
989     -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
990     l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
991                               p_entity_id      => x_cust_acct_site_id,
992                               p_entity_os      => x_cust_acct_site_os,
993                               p_entity_osr     => x_cust_acct_site_osr,
994                               p_entity_type    => 'HZ_CUST_ACCT_SITES_ALL',
995                               p_parent_id      => px_parent_acct_id,
996                               p_parent_obj_type => 'CUST_ACCT'
997                             );
998     IF(l_create_update_flag = 'E') THEN
999       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1000       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
1001       FND_MSG_PUB.ADD;
1002       RAISE FND_API.G_EXC_ERROR;
1003     END IF;
1004 
1005     IF(l_create_update_flag = 'C') THEN
1006       do_create_cust_acct_site_bo(
1007         p_init_msg_list            => fnd_api.g_false,
1008         p_validate_bo_flag         => p_validate_bo_flag,
1009         p_cust_acct_site_obj       => p_cust_acct_site_obj,
1010         p_created_by_module        => p_created_by_module,
1011         p_obj_source               => p_obj_source,
1012         x_return_status            => x_return_status,
1013         x_msg_count                => x_msg_count,
1014         x_msg_data                 => x_msg_data,
1015         x_cust_acct_site_id        => x_cust_acct_site_id,
1016         x_cust_acct_site_os        => x_cust_acct_site_os,
1017         x_cust_acct_site_osr       => x_cust_acct_site_osr,
1018         px_parent_acct_id          => px_parent_acct_id,
1019         px_parent_acct_os          => px_parent_acct_os,
1020         px_parent_acct_osr         => px_parent_acct_osr
1021       );
1022     ELSIF(l_create_update_flag = 'U') THEN
1023       do_update_cust_acct_site_bo(
1024         p_init_msg_list            => fnd_api.g_false,
1025         p_cust_acct_site_obj       => p_cust_acct_site_obj,
1026         p_created_by_module        => p_created_by_module,
1027         p_obj_source               => p_obj_source,
1028         x_return_status            => x_return_status,
1029         x_msg_count                => x_msg_count,
1030         x_msg_data                 => x_msg_data,
1031         x_cust_acct_site_id        => x_cust_acct_site_id,
1032         x_cust_acct_site_os        => x_cust_acct_site_os,
1033         x_cust_acct_site_osr       => x_cust_acct_site_osr,
1034         p_parent_os                => px_parent_acct_os
1035       );
1036     ELSE
1037       RAISE FND_API.G_EXC_ERROR;
1038     END IF;
1039 
1040     -- Debug info.
1041     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1042          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1043                                p_msg_data=>x_msg_data,
1044                                p_msg_type=>'WARNING',
1045                                p_msg_level=>fnd_log.level_exception);
1046     END IF;
1047     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1048         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_bo(-)',
1049                                p_prefix=>l_debug_prefix,
1050                                p_msg_level=>fnd_log.level_procedure);
1051     END IF;
1052 
1053   EXCEPTION
1054     WHEN fnd_api.g_exc_error THEN
1055       x_return_status := fnd_api.g_ret_sts_error;
1056 
1057       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1058                                 p_count => x_msg_count,
1059                                 p_data  => x_msg_data);
1060 
1061       -- Debug info.
1062       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1063         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1064                                p_msg_data=>x_msg_data,
1065                                p_msg_type=>'ERROR',
1066                                p_msg_level=>fnd_log.level_error);
1067       END IF;
1068       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1069         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_bo(-)',
1070                                p_prefix=>l_debug_prefix,
1071                                p_msg_level=>fnd_log.level_procedure);
1072       END IF;
1073     WHEN fnd_api.g_exc_unexpected_error THEN
1074       x_return_status := fnd_api.g_ret_sts_unexp_error;
1075 
1076       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1077                                 p_count => x_msg_count,
1078                                 p_data  => x_msg_data);
1079 
1080       -- Debug info.
1081       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1082         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1083                                p_msg_data=>x_msg_data,
1084                                p_msg_type=>'UNEXPECTED ERROR',
1085                                p_msg_level=>fnd_log.level_error);
1086       END IF;
1087       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1088         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_bo(-)',
1089                                p_prefix=>l_debug_prefix,
1090                                p_msg_level=>fnd_log.level_procedure);
1091       END IF;
1092     WHEN OTHERS THEN
1093       x_return_status := fnd_api.g_ret_sts_unexp_error;
1094 
1095       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1096       fnd_message.set_token('ERROR' ,SQLERRM);
1097       fnd_msg_pub.add;
1098 
1099       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1100                                 p_count => x_msg_count,
1101                                 p_data  => x_msg_data);
1102 
1103       -- Debug info.
1104       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1105         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1106                                p_msg_data=>x_msg_data,
1107                                p_msg_type=>'SQL ERROR',
1108                                p_msg_level=>fnd_log.level_error);
1109       END IF;
1110       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1111         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_bo(-)',
1112                                p_prefix=>l_debug_prefix,
1113                                p_msg_level=>fnd_log.level_procedure);
1114       END IF;
1115   END do_save_cust_acct_site_bo;
1116 
1117   PROCEDURE save_cust_acct_site_bo(
1118     p_init_msg_list           IN            VARCHAR2 := fnd_api.g_false,
1119     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
1120     p_cust_acct_site_obj      IN            HZ_CUST_ACCT_SITE_BO,
1121     p_created_by_module       IN            VARCHAR2,
1122     x_return_status           OUT NOCOPY    VARCHAR2,
1123     x_msg_count               OUT NOCOPY    NUMBER,
1124     x_msg_data                OUT NOCOPY    VARCHAR2,
1125     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
1126     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
1127     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
1128     px_parent_acct_id         IN OUT NOCOPY NUMBER,
1129     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
1130     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
1131   ) IS
1132     l_cas_obj                 HZ_CUST_ACCT_SITE_BO;
1133   BEGIN
1134     l_cas_obj := p_cust_acct_site_obj;
1135     do_save_cust_acct_site_bo(
1136       p_init_msg_list           => p_init_msg_list,
1137       p_validate_bo_flag        => p_validate_bo_flag,
1138       p_cust_acct_site_obj      => l_cas_obj,
1139       p_created_by_module       => p_created_by_module,
1140       p_obj_source              => null,
1141       x_return_status           => x_return_status,
1142       x_msg_count               => x_msg_count,
1143       x_msg_data                => x_msg_data,
1144       x_cust_acct_site_id       => x_cust_acct_site_id,
1145       x_cust_acct_site_os       => x_cust_acct_site_os,
1146       x_cust_acct_site_osr      => x_cust_acct_site_osr,
1147       px_parent_acct_id         => px_parent_acct_id,
1148       px_parent_acct_os         => px_parent_acct_os,
1149       px_parent_acct_osr        => px_parent_acct_osr
1150     );
1151   END save_cust_acct_site_bo;
1152 
1153   PROCEDURE save_cust_acct_site_bo(
1154     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
1155     p_cust_acct_site_obj      IN            HZ_CUST_ACCT_SITE_BO,
1156     p_created_by_module       IN            VARCHAR2,
1157     p_obj_source              IN            VARCHAR2 := null,
1158     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
1159     x_return_status           OUT NOCOPY    VARCHAR2,
1160     x_messages                OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
1161     x_return_obj              OUT NOCOPY    HZ_CUST_ACCT_SITE_BO,
1162     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
1163     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
1164     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
1165     px_parent_acct_id         IN OUT NOCOPY NUMBER,
1166     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
1167     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
1168   ) IS
1169     l_msg_data                VARCHAR2(2000);
1170     l_msg_count               NUMBER;
1171     l_cas_obj                 HZ_CUST_ACCT_SITE_BO;
1172   BEGIN
1173     l_cas_obj := p_cust_acct_site_obj;
1174     do_save_cust_acct_site_bo(
1175       p_init_msg_list           => fnd_api.g_true,
1176       p_validate_bo_flag        => p_validate_bo_flag,
1177       p_cust_acct_site_obj      => l_cas_obj,
1178       p_created_by_module       => p_created_by_module,
1179       p_obj_source              => p_obj_source,
1180       x_return_status           => x_return_status,
1181       x_msg_count               => l_msg_count,
1182       x_msg_data                => l_msg_data,
1183       x_cust_acct_site_id       => x_cust_acct_site_id,
1184       x_cust_acct_site_os       => x_cust_acct_site_os,
1185       x_cust_acct_site_osr      => x_cust_acct_site_osr,
1186       px_parent_acct_id         => px_parent_acct_id,
1187       px_parent_acct_os         => px_parent_acct_os,
1188       px_parent_acct_osr        => px_parent_acct_osr
1189     );
1190     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1191                     x_return_status   => x_return_status,
1192                     x_msg_count       => l_msg_count,
1193                     x_msg_data        => l_msg_data);
1194     IF FND_API.to_Boolean(p_return_obj_flag) THEN
1195       x_return_obj := l_cas_obj;
1196     END IF;
1197   END save_cust_acct_site_bo;
1198 
1199  --------------------------------------
1200   --
1201   -- PROCEDURE get_cust_acct_site_bo
1202   --
1203   -- DESCRIPTION
1204   --     Get logical customer account site.
1205   --
1206   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1207   --
1208   -- ARGUMENTS
1209   --   IN:
1210   --     p_init_msg_list      Initialize message stack if it is set to
1211   --     p_parent_id          parent id.
1212 --       p_cust_acct_site_id          customer account site ID.
1213   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
1214   --   OUT:
1215   --     x_cust_acct_site_obj         Logical customer account site record.
1216   --     x_return_status      Return status after the call. The status can
1217   --                          be fnd_api.g_ret_sts_success (success),
1218   --                          fnd_api.g_ret_sts_error (error),
1219   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
1220   --     x_msg_count          Number of messages in message stack.
1221   --     x_msg_data           Message text if x_msg_count is 1.
1222   --
1223   -- NOTES
1224   --
1225   -- MODIFICATION HISTORY
1226   --
1227   --
1228   --   8-JUN-2005   AWU                Created.
1229   --
1230 
1231 /*
1232 
1233 The Get customer account site API Procedure is a retrieval service that returns a full customer account site business object.
1234 The user identifies a particular Organization Contact business object using the TCA identifier and/or the object's Source System
1235 information. Upon proper validation of the object, the full Organization Contact business object is returned.
1236 The object consists of all data included within the Organization Contact business object, at all embedded levels. This includes the
1237 set of all data stored in the TCA tables for each embedded entity.
1238 
1239 
1240 Embedded BO	    	Mandatory	Multiple Logical API Procedure		Comments
1241 
1242 Party Site			Y	N	get_party_site_bo
1243 Customer Account Site Contact	N	Y	get_cust_acct_contact_bo
1244 Customer Account Site Use	N	Y	Business Structure. Included entities and
1245 						structures:HZ_CUST_SITE_USES_ALL,Customer
1246 						Profile (Business Structure)
1247 
1248 
1249 To retrieve the appropriate embedded entities within the 'Organization Contact' business object, the Get procedure returns all records
1250 for the particular contact from these TCA entity tables.
1251 
1252 Embedded TCA Entity	Mandatory	Multiple	TCA Table Entities
1253 
1254 Customer account site	Y		N	HZ_CUST_ACCOUNTS
1255 Bank account site Use	N		Y	Owned by Payments team
1256 Payment Method		N		N	Owned by AR team
1257 
1258 */
1259 
1260 
1261 PROCEDURE get_cust_acct_site_bo (
1262 	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE,
1263 	p_cust_acct_site_id	IN	NUMBER,
1264 	p_cust_acct_site_os	IN	VARCHAR2,
1265 	p_cust_acct_site_osr	IN	VARCHAR2,
1266 	x_cust_acct_site_obj	OUT NOCOPY	HZ_CUST_ACCT_SITE_BO,
1267 	x_return_status		OUT NOCOPY	VARCHAR2,
1268 	x_msg_count		OUT NOCOPY	NUMBER,
1269 	x_msg_data		OUT NOCOPY	VARCHAR2
1270 ) is
1271  l_debug_prefix              VARCHAR2(30) := '';
1272 
1273   l_cust_acct_site_id  number;
1274   l_cust_acct_site_os  varchar2(30);
1275   l_cust_acct_site_osr varchar2(255);
1276   l_cust_acct_site_objs  HZ_CUST_ACCT_SITE_BO_TBL;
1277 BEGIN
1278 
1279 	-- initialize API return status to success.
1280     	x_return_status := FND_API.G_RET_STS_SUCCESS;
1281 
1282     	-- Initialize message list if p_init_msg_list is set to TRUE
1283     	IF FND_API.to_Boolean(p_init_msg_list) THEN
1284       		FND_MSG_PUB.initialize;
1285     	END IF;
1286 
1287 
1288 	-- Debug info.
1289         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1290         	hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_bo(+)',
1291                                p_prefix=>l_debug_prefix,
1292                                p_msg_level=>fnd_log.level_procedure);
1293     	END IF;
1294 
1295     	-- check if pass in contact_point_id and/or os+osr
1296     	-- extraction validation logic is same as update
1297 
1298     	l_cust_acct_site_id := p_cust_acct_site_id;
1299     	l_cust_acct_site_os := p_cust_acct_site_os;
1300     	l_cust_acct_site_osr := p_cust_acct_site_osr;
1301 
1302     	HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
1303       		px_id              => l_cust_acct_site_id,
1304       		px_os              => l_cust_acct_site_os,
1305       		px_osr             => l_cust_acct_site_osr,
1306       		p_obj_type         => 'HZ_CUST_ACCT_SITES_ALL',
1307       		x_return_status    => x_return_status,
1308       		x_msg_count        => x_msg_count,
1309       		x_msg_data         => x_msg_data);
1310 
1311     	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1312       		RAISE fnd_api.g_exc_error;
1313    	 END IF;
1314 
1315 	HZ_EXTRACT_ACCT_SITE_BO_PVT.get_cust_acct_site_bos
1316 		(p_init_msg_list => fnd_api.g_false,
1317 		 p_parent_id => NULL,
1318 		 p_cust_acct_site_id => l_cust_acct_site_id,
1319 		 p_action_type => NULL,
1320 		  x_cust_acct_site_objs => l_cust_acct_site_objs,
1321 		 x_return_status => x_return_status,
1322 		 x_msg_count => x_msg_count,
1323 		 x_msg_data => x_msg_data);
1324 
1325 	x_cust_acct_site_obj := l_cust_acct_site_objs(1);
1326 
1327 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1328       		RAISE FND_API.G_EXC_ERROR;
1329     	END IF;
1330 
1331 
1332 	-- Debug info.
1333     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1334          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1335                                p_msg_data=>x_msg_data,
1336                                p_msg_type=>'WARNING',
1337                                p_msg_level=>fnd_log.level_exception);
1338     	END IF;
1339 
1340     	-- Debug info.
1341         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1342         	hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_bo (-)',
1343                                p_prefix=>l_debug_prefix,
1344                                p_msg_level=>fnd_log.level_procedure);
1345     	END IF;
1346 
1347 
1348  EXCEPTION
1349 
1350   WHEN fnd_api.g_exc_error THEN
1351       x_return_status := fnd_api.g_ret_sts_error;
1352 
1353       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1354                                 p_count => x_msg_count,
1355                                 p_data  => x_msg_data);
1356 
1357       -- Debug info.
1358       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1359         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1360                                p_msg_data=>x_msg_data,
1361                                p_msg_type=>'ERROR',
1362                                p_msg_level=>fnd_log.level_error);
1363       END IF;
1364       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1365         hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_bo (-)',
1366                                p_prefix=>l_debug_prefix,
1367                                p_msg_level=>fnd_log.level_procedure);
1368       END IF;
1369     WHEN fnd_api.g_exc_unexpected_error THEN
1370       x_return_status := fnd_api.g_ret_sts_unexp_error;
1371 
1372       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1373                                 p_count => x_msg_count,
1374                                 p_data  => x_msg_data);
1375 
1376       -- Debug info.
1377       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1378         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1379                                p_msg_data=>x_msg_data,
1380                                p_msg_type=>'UNEXPECTED ERROR',
1381                                p_msg_level=>fnd_log.level_error);
1382       END IF;
1383       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1384         hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_bo (-)',
1385                                p_prefix=>l_debug_prefix,
1386                                p_msg_level=>fnd_log.level_procedure);
1387       END IF;
1388     WHEN OTHERS THEN
1389       x_return_status := fnd_api.g_ret_sts_unexp_error;
1390 
1391       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1392       fnd_message.set_token('ERROR' ,SQLERRM);
1393       fnd_msg_pub.add;
1394 
1395       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1396                                 p_count => x_msg_count,
1397                                 p_data  => x_msg_data);
1398 
1399       -- Debug info.
1400       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1401         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1402                                p_msg_data=>x_msg_data,
1403                                p_msg_type=>'SQL ERROR',
1404                                p_msg_level=>fnd_log.level_error);
1405       END IF;
1406       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1407         hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_bo (-)',
1408                                p_prefix=>l_debug_prefix,
1409                                p_msg_level=>fnd_log.level_procedure);
1410       END IF;
1411 
1412 end;
1413 
1414   PROCEDURE get_cust_acct_site_bo (
1415         p_cust_acct_site_id     IN      NUMBER,
1416         p_cust_acct_site_os     IN      VARCHAR2,
1417         p_cust_acct_site_osr    IN      VARCHAR2,
1418         x_cust_acct_site_obj    OUT NOCOPY      HZ_CUST_ACCT_SITE_BO,
1419         x_return_status         OUT NOCOPY      VARCHAR2,
1420         x_messages              OUT NOCOPY      HZ_MESSAGE_OBJ_TBL
1421   ) IS
1422     l_msg_data                 VARCHAR2(2000);
1423     l_msg_count                NUMBER;
1424   BEGIN
1425     get_cust_acct_site_bo (
1426         p_init_msg_list         => FND_API.G_TRUE,
1427         p_cust_acct_site_id     => p_cust_acct_site_id,
1428         p_cust_acct_site_os     => p_cust_acct_site_os,
1429         p_cust_acct_site_osr    => p_cust_acct_site_osr,
1430         x_cust_acct_site_obj    => x_cust_acct_site_obj,
1431         x_return_status         => x_return_status,
1432         x_msg_count             => l_msg_count,
1433         x_msg_data              => l_msg_data
1434     );
1435     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1436                     x_return_status   => x_return_status,
1437                     x_msg_count       => l_msg_count,
1438                     x_msg_data        => l_msg_data);
1439   END get_cust_acct_site_bo;
1440 
1441 -- PRIVATE PROCEDURE assign_cust_acct_site_v2_rec
1442   --
1443   -- DESCRIPTION
1444   --     Assign attribute value from customer account site object to plsql record.
1445   --
1446   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1447   --
1448   -- ARGUMENTS
1449   --   IN:
1450   --     p_cust_acct_site_v2_obj Customer account site object.
1451   --     p_party_site_id      Party site Id.
1452   --     p_cust_acct_id       Customer account Id.
1453   --     p_cust_acct_site_id  Customer account site Id.
1454   --     p_cust_acct_site_os  Customer account site original system.
1455   --     p_cust_acct_site_osr Customer account site original system reference.
1456   --     p_create_or_update   Create or update flag.
1457   --   IN/OUT:
1458   --     px_cust_acct_site_rec Customer Account Site plsql record.
1459   --
1460   -- NOTES
1461   --
1462   -- MODIFICATION HISTORY
1463   --
1464   --   31-JAN-2008    vsegu          Created.
1465   --
1466 
1467   PROCEDURE assign_cust_acct_site_v2_rec(
1468     p_cust_acct_site_v2_obj         IN            HZ_CUST_ACCT_SITE_V2_BO,
1469     p_party_site_id              IN            NUMBER,
1470     p_cust_acct_id               IN            NUMBER,
1471     p_cust_acct_site_id          IN            NUMBER,
1472     p_cust_acct_site_os          IN            VARCHAR2,
1473     p_cust_acct_site_osr         IN            VARCHAR2,
1474     p_create_or_update           IN            VARCHAR2 := 'C',
1475     px_cust_acct_site_rec        IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE
1476   );
1477 
1478   -- PRIVATE PROCEDURE assign_cust_acct_site_v2_rec
1479   --
1480   -- DESCRIPTION
1481   --     Assign attribute value from customer account site object to plsql record.
1482   --
1483   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
1484   --
1485   -- ARGUMENTS
1486   --   IN:
1487   --     p_cust_acct_site_v2_obj Customer account site object.
1488   --     p_party_site_id      Party site Id.
1489   --     p_cust_acct_id       Customer account Id.
1490   --     p_cust_acct_site_id  Customer account site Id.
1491   --     p_cust_acct_site_os  Customer account site original system.
1492   --     p_cust_acct_site_osr Customer account site original system reference.
1493   --     p_create_or_update   Create or update flag.
1494   --   IN/OUT:
1495   --     px_cust_acct_site_rec Customer Account Site plsql record.
1496   --
1497   -- NOTES
1498   --
1499   -- MODIFICATION HISTORY
1500   --
1501   --   31-JAN-2008    vsegu          Created.
1502   --
1503 
1504   PROCEDURE assign_cust_acct_site_v2_rec(
1505     p_cust_acct_site_v2_obj         IN            HZ_CUST_ACCT_SITE_V2_BO,
1506     p_party_site_id              IN            NUMBER,
1507     p_cust_acct_id               IN            NUMBER,
1508     p_cust_acct_site_id          IN            NUMBER,
1509     p_cust_acct_site_os          IN            VARCHAR2,
1510     p_cust_acct_site_osr         IN            VARCHAR2,
1511     p_create_or_update           IN            VARCHAR2 := 'C',
1512     px_cust_acct_site_rec        IN OUT NOCOPY HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE
1513   ) IS
1514   BEGIN
1515     px_cust_acct_site_rec.cust_acct_site_id    := p_cust_acct_site_id;
1516     px_cust_acct_site_rec.party_site_id        := p_party_site_id;
1517     px_cust_acct_site_rec.cust_account_id      := p_cust_acct_id;
1518     px_cust_acct_site_rec.attribute_category   := p_cust_acct_site_v2_obj.attribute_category;
1519     px_cust_acct_site_rec.attribute1           := p_cust_acct_site_v2_obj.attribute1;
1520     px_cust_acct_site_rec.attribute2           := p_cust_acct_site_v2_obj.attribute2;
1521     px_cust_acct_site_rec.attribute3           := p_cust_acct_site_v2_obj.attribute3;
1522     px_cust_acct_site_rec.attribute4           := p_cust_acct_site_v2_obj.attribute4;
1523     px_cust_acct_site_rec.attribute5           := p_cust_acct_site_v2_obj.attribute5;
1524     px_cust_acct_site_rec.attribute6           := p_cust_acct_site_v2_obj.attribute6;
1525     px_cust_acct_site_rec.attribute7           := p_cust_acct_site_v2_obj.attribute7;
1526     px_cust_acct_site_rec.attribute8           := p_cust_acct_site_v2_obj.attribute8;
1527     px_cust_acct_site_rec.attribute9           := p_cust_acct_site_v2_obj.attribute9;
1528     px_cust_acct_site_rec.attribute10          := p_cust_acct_site_v2_obj.attribute10;
1529     px_cust_acct_site_rec.attribute11          := p_cust_acct_site_v2_obj.attribute11;
1530     px_cust_acct_site_rec.attribute12          := p_cust_acct_site_v2_obj.attribute12;
1531     px_cust_acct_site_rec.attribute13          := p_cust_acct_site_v2_obj.attribute13;
1532     px_cust_acct_site_rec.attribute14          := p_cust_acct_site_v2_obj.attribute14;
1533     px_cust_acct_site_rec.attribute15          := p_cust_acct_site_v2_obj.attribute15;
1534     px_cust_acct_site_rec.attribute16          := p_cust_acct_site_v2_obj.attribute16;
1535     px_cust_acct_site_rec.attribute17          := p_cust_acct_site_v2_obj.attribute17;
1536     px_cust_acct_site_rec.attribute18          := p_cust_acct_site_v2_obj.attribute18;
1537     px_cust_acct_site_rec.attribute19          := p_cust_acct_site_v2_obj.attribute19;
1538     px_cust_acct_site_rec.attribute20          := p_cust_acct_site_v2_obj.attribute20;
1539     px_cust_acct_site_rec.global_attribute_category   := p_cust_acct_site_v2_obj.global_attribute_category;
1540     px_cust_acct_site_rec.global_attribute1    := p_cust_acct_site_v2_obj.global_attribute1;
1541     px_cust_acct_site_rec.global_attribute2    := p_cust_acct_site_v2_obj.global_attribute2;
1542     px_cust_acct_site_rec.global_attribute3    := p_cust_acct_site_v2_obj.global_attribute3;
1543     px_cust_acct_site_rec.global_attribute4    := p_cust_acct_site_v2_obj.global_attribute4;
1544     px_cust_acct_site_rec.global_attribute5    := p_cust_acct_site_v2_obj.global_attribute5;
1545     px_cust_acct_site_rec.global_attribute6    := p_cust_acct_site_v2_obj.global_attribute6;
1546     px_cust_acct_site_rec.global_attribute7    := p_cust_acct_site_v2_obj.global_attribute7;
1547     px_cust_acct_site_rec.global_attribute8    := p_cust_acct_site_v2_obj.global_attribute8;
1548     px_cust_acct_site_rec.global_attribute9    := p_cust_acct_site_v2_obj.global_attribute9;
1549     px_cust_acct_site_rec.global_attribute10   := p_cust_acct_site_v2_obj.global_attribute10;
1550     px_cust_acct_site_rec.global_attribute11   := p_cust_acct_site_v2_obj.global_attribute11;
1551     px_cust_acct_site_rec.global_attribute12   := p_cust_acct_site_v2_obj.global_attribute12;
1552     px_cust_acct_site_rec.global_attribute13   := p_cust_acct_site_v2_obj.global_attribute13;
1553     px_cust_acct_site_rec.global_attribute14   := p_cust_acct_site_v2_obj.global_attribute14;
1554     px_cust_acct_site_rec.global_attribute15   := p_cust_acct_site_v2_obj.global_attribute15;
1555     px_cust_acct_site_rec.global_attribute16   := p_cust_acct_site_v2_obj.global_attribute16;
1556     px_cust_acct_site_rec.global_attribute17   := p_cust_acct_site_v2_obj.global_attribute17;
1557     px_cust_acct_site_rec.global_attribute18   := p_cust_acct_site_v2_obj.global_attribute18;
1558     px_cust_acct_site_rec.global_attribute19   := p_cust_acct_site_v2_obj.global_attribute19;
1559     px_cust_acct_site_rec.global_attribute20   := p_cust_acct_site_v2_obj.global_attribute20;
1560     IF(p_cust_acct_site_v2_obj.status in ('A','I')) THEN
1561       px_cust_acct_site_rec.status                 := p_cust_acct_site_v2_obj.status;
1562     END IF;
1563     px_cust_acct_site_rec.customer_category_code := p_cust_acct_site_v2_obj.customer_category_code;
1564     px_cust_acct_site_rec.language               := p_cust_acct_site_v2_obj.language;
1565     px_cust_acct_site_rec.key_account_flag       := p_cust_acct_site_v2_obj.key_account_flag;
1566     px_cust_acct_site_rec.tp_header_id           := p_cust_acct_site_v2_obj.tp_header_id;
1567     px_cust_acct_site_rec.ece_tp_location_code   := p_cust_acct_site_v2_obj.ece_tp_location_code;
1568     px_cust_acct_site_rec.primary_specialist_id  := p_cust_acct_site_v2_obj.primary_specialist_id;
1569     px_cust_acct_site_rec.secondary_specialist_id  := p_cust_acct_site_v2_obj.secondary_specialist_id;
1570     px_cust_acct_site_rec.territory_id           := p_cust_acct_site_v2_obj.territory_id;
1571     px_cust_acct_site_rec.territory              := p_cust_acct_site_v2_obj.territory;
1572     px_cust_acct_site_rec.translated_customer_name := p_cust_acct_site_v2_obj.translated_customer_name;
1573     IF(p_create_or_update = 'C') THEN
1574       px_cust_acct_site_rec.orig_system            := p_cust_acct_site_os;
1575       px_cust_acct_site_rec.orig_system_reference  := p_cust_acct_site_osr;
1576       px_cust_acct_site_rec.created_by_module    := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1577     END IF;
1578     px_cust_acct_site_rec.org_id               := p_cust_acct_site_v2_obj.org_id;
1579   END assign_cust_acct_site_v2_rec;
1580 
1581  -- PROCEDURE do_create_cust_acct_site_v2_bo
1582   --
1583   -- DESCRIPTION
1584   --     Create customer account site business object.
1585   PROCEDURE do_create_cust_acct_site_v2_bo(
1586     p_init_msg_list           IN            VARCHAR2 := fnd_api.g_false,
1587     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
1588     p_cust_acct_site_v2_obj      IN OUT NOCOPY HZ_CUST_ACCT_SITE_V2_BO,
1589     p_created_by_module       IN            VARCHAR2,
1590     p_obj_source              IN            VARCHAR2 := null,
1591     x_return_status           OUT NOCOPY    VARCHAR2,
1592     x_msg_count               OUT NOCOPY    NUMBER,
1593     x_msg_data                OUT NOCOPY    VARCHAR2,
1594     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
1595     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
1596     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
1597     px_parent_acct_id         IN OUT NOCOPY NUMBER,
1598     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
1599     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
1600   ) IS
1601     l_debug_prefix             VARCHAR2(30) := '';
1602     l_cust_acct_site_rec       HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE;
1603 
1604     l_ps_id                    NUMBER;
1605     l_ps_os                    VARCHAR2(30);
1606     l_ps_osr                   VARCHAR2(255);
1607 
1608     l_acct_party_id            NUMBER;
1609     l_acct_party_type          VARCHAR2(30);
1610     l_acct_party_os            VARCHAR2(30);
1611     l_acct_party_osr           VARCHAR2(255);
1612 
1613     l_valid_obj                BOOLEAN;
1614     l_bus_object               HZ_REGISTRY_VALIDATE_BO_PVT.COMPLETENESS_REC_TYPE;
1615     l_cbm                      VARCHAR2(30);
1616 
1617     CURSOR get_acct_party(l_acct_id NUMBER) IS
1618     SELECT p.party_id, decode(p.party_type, 'ORGANIZATION', 'ORG', 'PERSON', 'PERSON')
1619     FROM HZ_PARTIES p, HZ_CUST_ACCOUNTS a
1620     WHERE p.party_id = a.party_id
1621     AND a.cust_account_id = l_acct_id;
1622 
1623     CURSOR get_ps_id(l_os VARCHAR2, l_osr VARCHAR2) IS
1624     SELECT ps.party_site_id
1625     FROM HZ_PARTY_SITES ps, HZ_ORIG_SYS_REFERENCES ref
1626     WHERE ref.owner_table_id = ps.party_site_id
1627     AND ref.owner_table_name = 'HZ_PARTY_SITES'
1628     AND ref.orig_system = l_os
1629     AND ref.orig_system_reference = l_osr
1630     AND ref.status = 'A'
1631     AND rownum = 1;
1632 
1633   BEGIN
1634     -- Standard start of API savepoint
1635     SAVEPOINT do_create_cas_v2_bo_pub;
1636 
1637     -- initialize API return status to success.
1638     x_return_status := FND_API.G_RET_STS_SUCCESS;
1639 
1640     -- Initialize message list if p_init_msg_list is set to TRUE.
1641     IF FND_API.to_Boolean(p_init_msg_list) THEN
1642       FND_MSG_PUB.initialize;
1643     END IF;
1644 
1645     -- Debug info.
1646     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1647         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_v2_bo(+)',
1648                                p_prefix=>l_debug_prefix,
1649                                p_msg_level=>fnd_log.level_procedure);
1650     END IF;
1651 
1652     -- initialize Global variable
1653     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
1654     IF(p_created_by_module IS NULL) THEN
1655       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
1656     ELSE
1657       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
1658     END IF;
1659 
1660     -- Base on p_validate_bo_flag, check the completeness of business objects
1661     IF(p_validate_bo_flag = FND_API.G_TRUE) THEN
1662       HZ_REGISTRY_VALIDATE_BO_PVT.get_bus_obj_struct(
1663         p_bus_object_code         => 'CUST_ACCT_SITE',
1664         x_bus_object              => l_bus_object
1665       );
1666       l_valid_obj := HZ_REGISTRY_VALIDATE_BO_PVT.is_cas_v2_bo_comp(
1667                        p_cas_v2_objs   => HZ_CUST_ACCT_SITE_V2_BO_TBL(p_cust_acct_site_v2_obj),
1668                        p_bus_object => l_bus_object
1669                      );
1670       IF NOT(l_valid_obj) THEN
1671         RAISE fnd_api.g_exc_error;
1672       END IF;
1673     END IF;
1674 
1675     -- check pass in parent_id and parent_os+osr
1676     hz_registry_validate_bo_pvt.validate_parent_id(
1677       px_parent_id      => px_parent_acct_id,
1678       px_parent_os      => px_parent_acct_os,
1679       px_parent_osr     => px_parent_acct_osr,
1680       p_parent_obj_type => 'CUST_ACCT',
1681       x_return_status   => x_return_status,
1682       x_msg_count       => x_msg_count,
1683       x_msg_data        => x_msg_data);
1684 
1685     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1686       RAISE FND_API.G_EXC_ERROR;
1687     END IF;
1688 
1689     -- check pass in party_site_id and party_site_os+osr
1690     l_ps_id := p_cust_acct_site_v2_obj.party_site_id;
1691     l_ps_os := p_cust_acct_site_v2_obj.party_site_os;
1692     l_ps_osr := p_cust_acct_site_v2_obj.party_site_osr;
1693 
1694     hz_registry_validate_bo_pvt.validate_parent_id(
1695       px_parent_id      => l_ps_id,
1696       px_parent_os      => l_ps_os,
1697       px_parent_osr     => l_ps_osr,
1698       p_parent_obj_type => 'PARTY_SITE',
1699       x_return_status   => x_return_status,
1700       x_msg_count       => x_msg_count,
1701       x_msg_data        => x_msg_data);
1702 
1703     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1704       RAISE FND_API.G_EXC_ERROR;
1705     END IF;
1706 
1707     x_cust_acct_site_id := p_cust_acct_site_v2_obj.cust_acct_site_id;
1708     x_cust_acct_site_os := p_cust_acct_site_v2_obj.orig_system;
1709     x_cust_acct_site_osr := p_cust_acct_site_v2_obj.orig_system_reference;
1710 
1711     -- check if pass in cust_account_site_id and os+osr
1712     hz_registry_validate_bo_pvt.validate_ssm_id(
1713       px_id              => x_cust_acct_site_id,
1714       px_os              => x_cust_acct_site_os,
1715       px_osr             => x_cust_acct_site_osr,
1716       p_org_id           => p_cust_acct_site_v2_obj.org_id,
1717       p_obj_type         => 'HZ_CUST_ACCT_SITES_ALL',
1718       p_create_or_update => 'C',
1719       x_return_status    => x_return_status,
1720       x_msg_count        => x_msg_count,
1721       x_msg_data         => x_msg_data);
1722 
1723     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1724       RAISE FND_API.G_EXC_ERROR;
1725     END IF;
1726 
1727     -- from p_parent_acct_id, get parent party_id of the account, then
1728     -- use this party_id as px_parent_id of party site
1729     OPEN get_acct_party(px_parent_acct_id);
1730     FETCH get_acct_party INTO l_acct_party_id, l_acct_party_type;
1731     CLOSE get_acct_party;
1732 
1733     IF l_acct_party_id IS NULL THEN
1734       RAISE FND_API.G_EXC_ERROR;
1735     END IF;
1736 
1737     ----------------------------------
1738     -- Assign cust account site record
1739     ----------------------------------
1740     assign_cust_acct_site_v2_rec(
1741       p_cust_acct_site_v2_obj        => p_cust_acct_site_v2_obj,
1742       p_party_site_id             => l_ps_id,
1743       p_cust_acct_id              => px_parent_acct_id,
1744       p_cust_acct_site_id         => x_cust_acct_site_id,
1745       p_cust_acct_site_os         => x_cust_acct_site_os,
1746       p_cust_acct_site_osr        => x_cust_acct_site_osr,
1747       px_cust_acct_site_rec       => l_cust_acct_site_rec
1748     );
1749 
1750     HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_acct_site (
1751       p_cust_acct_site_rec        => l_cust_acct_site_rec,
1752       x_cust_acct_site_id         => x_cust_acct_site_id,
1753       x_return_status             => x_return_status,
1754       x_msg_count                 => x_msg_count,
1755       x_msg_data                  => x_msg_data
1756     );
1757 
1758     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1759       RAISE FND_API.G_EXC_ERROR;
1760     END IF;
1761 
1762     -- assign cust_acct_site_id
1763     p_cust_acct_site_v2_obj.cust_acct_site_id := x_cust_acct_site_id;
1764     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
1765 
1766     -------------------------------------
1767     -- Call cust account contact v2pub api
1768     -------------------------------------
1769     -- Parent of cust account contact is cust account site
1770     -- so pass x_cust_acct_site_id, x_cust_acct_site_os and x_cust_acct_site_osr
1771     IF((p_cust_acct_site_v2_obj.cust_acct_contact_objs IS NOT NULL) AND
1772        (p_cust_acct_site_v2_obj.cust_acct_contact_objs.COUNT > 0)) THEN
1773       HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
1774         p_cac_objs           => p_cust_acct_site_v2_obj.cust_acct_contact_objs,
1775         p_create_update_flag => 'C',
1776         p_obj_source         => p_obj_source,
1777         x_return_status      => x_return_status,
1778         x_msg_count          => x_msg_count,
1779         x_msg_data           => x_msg_data,
1780         p_parent_id          => x_cust_acct_site_id,
1781         p_parent_os          => x_cust_acct_site_os,
1782         p_parent_osr         => x_cust_acct_site_osr,
1783         p_parent_obj_type    => 'CUST_ACCT_SITE'
1784       );
1785 
1786       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1787         RAISE FND_API.G_EXC_ERROR;
1788       END IF;
1789     END IF;
1790 
1791     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
1792 
1793     -------------------------------------
1794     -- Call cust account site use v2pub api
1795     -------------------------------------
1796     -- create cust account site uses will include cust acct site use plus site use profile
1797     -- need to put customer account id and customer account site id
1798     IF((p_cust_acct_site_v2_obj.cust_acct_site_use_objs IS NOT NULL) AND
1799        (p_cust_acct_site_v2_obj.cust_acct_site_use_objs.COUNT > 0)) THEN
1800       HZ_CUST_ACCT_SITE_BO_PVT.create_cust_site_v2_uses(
1801         p_casu_v2_objs          => p_cust_acct_site_v2_obj.cust_acct_site_use_objs,
1802         p_ca_id              => px_parent_acct_id,
1803         p_cas_id             => x_cust_acct_site_id,
1804         p_parent_os          => x_cust_acct_site_os,
1805         x_return_status      => x_return_status,
1806         x_msg_count          => x_msg_count,
1807         x_msg_data           => x_msg_data
1808       );
1809 
1810       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1811         RAISE FND_API.G_EXC_ERROR;
1812       END IF;
1813     END IF;
1814 
1815     -- reset Global variable
1816     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1817     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1818 
1819     -- Debug info.
1820     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
1821          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1822                                p_msg_data=>x_msg_data,
1823                                p_msg_type=>'WARNING',
1824                                p_msg_level=>fnd_log.level_exception);
1825     END IF;
1826     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1827         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_v2_bo(-)',
1828                                p_prefix=>l_debug_prefix,
1829                                p_msg_level=>fnd_log.level_procedure);
1830     END IF;
1831 
1832   EXCEPTION
1833     WHEN fnd_api.g_exc_error THEN
1834       ROLLBACK TO do_create_cas_v2_bo_pub;
1835 
1836       -- reset Global variable
1837       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1838       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1839 
1840       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1841       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
1842       FND_MSG_PUB.ADD;
1843 
1844       x_return_status := fnd_api.g_ret_sts_error;
1845 
1846       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1847                                 p_count => x_msg_count,
1848                                 p_data  => x_msg_data);
1849 
1850       -- Debug info.
1851       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1852         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1853                                p_msg_data=>x_msg_data,
1854                                p_msg_type=>'ERROR',
1855                                p_msg_level=>fnd_log.level_error);
1856       END IF;
1857       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1858         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_v2_bo(-)',
1859                                p_prefix=>l_debug_prefix,
1860                                p_msg_level=>fnd_log.level_procedure);
1861       END IF;
1862 
1863     WHEN fnd_api.g_exc_unexpected_error THEN
1864       ROLLBACK TO do_create_cas_v2_bo_pub;
1865 
1866       -- reset Global variable
1867       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1868       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1869 
1870       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1871       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
1872       FND_MSG_PUB.ADD;
1873 
1874       x_return_status := fnd_api.g_ret_sts_unexp_error;
1875 
1876       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1877                                 p_count => x_msg_count,
1878                                 p_data  => x_msg_data);
1879 
1880       -- Debug info.
1881       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1882         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1883                                p_msg_data=>x_msg_data,
1884                                p_msg_type=>'UNEXPECTED ERROR',
1885                                p_msg_level=>fnd_log.level_error);
1886       END IF;
1887       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1888         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_v2_bo(-)',
1889                                p_prefix=>l_debug_prefix,
1890                                p_msg_level=>fnd_log.level_procedure);
1891       END IF;
1892 
1893     WHEN OTHERS THEN
1894       ROLLBACK TO do_create_cas_v2_bo_pub;
1895 
1896       -- reset Global variable
1897       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
1898       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
1899 
1900       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
1901       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
1902       FND_MSG_PUB.ADD;
1903 
1904       x_return_status := fnd_api.g_ret_sts_unexp_error;
1905 
1906       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
1907       fnd_message.set_token('ERROR' ,SQLERRM);
1908       fnd_msg_pub.add;
1909 
1910       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
1911                                 p_count => x_msg_count,
1912                                 p_data  => x_msg_data);
1913 
1914       -- Debug info.
1915       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
1916         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
1917                                p_msg_data=>x_msg_data,
1918                                p_msg_type=>'SQL ERROR',
1919                                p_msg_level=>fnd_log.level_error);
1920       END IF;
1921       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1922         hz_utility_v2pub.debug(p_message=>'do_create_cust_acct_site_v2_bo(-)',
1923                                p_prefix=>l_debug_prefix,
1924                                p_msg_level=>fnd_log.level_procedure);
1925       END IF;
1926   END do_create_cust_acct_site_v2_bo;
1927 
1928 
1929  PROCEDURE create_cust_acct_site_v2_bo(
1930     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
1931     p_cust_acct_site_v2_obj      IN            HZ_CUST_ACCT_SITE_V2_BO,
1932     p_created_by_module       IN            VARCHAR2,
1933     p_obj_source              IN            VARCHAR2 := null,
1934     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
1935     x_return_status           OUT NOCOPY    VARCHAR2,
1936     x_messages                OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
1937     x_return_obj              OUT NOCOPY    HZ_CUST_ACCT_SITE_V2_BO,
1938     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
1939     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
1940     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
1941     px_parent_acct_id         IN OUT NOCOPY NUMBER,
1942     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
1943     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
1944   ) IS
1945     l_msg_data                VARCHAR2(2000);
1946     l_msg_count               NUMBER;
1947     l_cas_obj                 HZ_CUST_ACCT_SITE_V2_BO;
1948   BEGIN
1949     l_cas_obj := p_cust_acct_site_v2_obj;
1950     do_create_cust_acct_site_v2_bo(
1951       p_init_msg_list           => fnd_api.g_true,
1952       p_validate_bo_flag        => p_validate_bo_flag,
1953       p_cust_acct_site_v2_obj      => l_cas_obj,
1954       p_created_by_module       => p_created_by_module,
1955       p_obj_source              => p_obj_source,
1956       x_return_status           => x_return_status,
1957       x_msg_count               => l_msg_count,
1958       x_msg_data                => l_msg_data,
1959       x_cust_acct_site_id       => x_cust_acct_site_id,
1960       x_cust_acct_site_os       => x_cust_acct_site_os,
1961       x_cust_acct_site_osr      => x_cust_acct_site_osr,
1962       px_parent_acct_id         => px_parent_acct_id,
1963       px_parent_acct_os         => px_parent_acct_os,
1964       px_parent_acct_osr        => px_parent_acct_osr
1965     );
1966     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
1967                     x_return_status   => x_return_status,
1968                     x_msg_count       => l_msg_count,
1969                     x_msg_data        => l_msg_data);
1970     IF FND_API.to_Boolean(p_return_obj_flag) THEN
1971       x_return_obj := l_cas_obj;
1972     END IF;
1973   END create_cust_acct_site_v2_bo;
1974 
1975  -- PRIVATE PROCEDURE do_update_cust_acct_site_v2_bo
1976   --
1977   -- DESCRIPTION
1978   --     Update customer account site business object.
1979   PROCEDURE do_update_cust_acct_site_v2_bo(
1980     p_init_msg_list           IN            VARCHAR2 := fnd_api.g_false,
1981     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
1982     p_cust_acct_site_v2_obj      IN OUT NOCOPY HZ_CUST_ACCT_SITE_V2_BO,
1983     p_created_by_module       IN            VARCHAR2,
1984     p_obj_source              IN            VARCHAR2 := null,
1985     x_return_status           OUT NOCOPY    VARCHAR2,
1986     x_msg_count               OUT NOCOPY    NUMBER,
1987     x_msg_data                OUT NOCOPY    VARCHAR2,
1988     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
1989     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
1990     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
1991     p_parent_os               IN            VARCHAR2
1992   )IS
1993     l_debug_prefix             VARCHAR2(30) := '';
1994     l_cust_acct_site_rec       HZ_CUST_ACCOUNT_SITE_V2PUB.CUST_ACCT_SITE_REC_TYPE;
1995     l_cas_ovn                  NUMBER;
1996     l_create_update_flag       VARCHAR2(1);
1997     l_parent_os                VARCHAR2(30);
1998     l_party_site_id            NUMBER;
1999     l_ca_id                    NUMBER;
2000     l_ca_os                    VARCHAR2(30);
2001     l_ca_osr                   VARCHAR2(255);
2002     l_cbm                      VARCHAR2(30);
2003 
2004     CURSOR get_ovn(l_cas_id NUMBER) IS
2005     SELECT s.object_version_number, s.cust_account_id, s.party_site_id
2006     FROM HZ_CUST_ACCT_SITES s
2007     WHERE s.cust_acct_site_id = l_cas_id;
2008 
2009   BEGIN
2010     -- Standard start of API savepoint
2011     SAVEPOINT do_update_cas_v2_bo_pub;
2012 
2013     -- initialize API return status to success.
2014     x_return_status := FND_API.G_RET_STS_SUCCESS;
2015 
2016     -- Initialize message list if p_init_msg_list is set to TRUE.
2017     IF FND_API.to_Boolean(p_init_msg_list) THEN
2018       FND_MSG_PUB.initialize;
2019     END IF;
2020 
2021     -- Debug info.
2022     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2023         hz_utility_v2pub.debug(p_message=>'do_update_cas_bo(+)',
2024                                p_prefix=>l_debug_prefix,
2025                                p_msg_level=>fnd_log.level_procedure);
2026     END IF;
2027 
2028     -- initialize Global variable
2029     HZ_UTILITY_V2PUB.G_CALLING_API := 'BO_API';
2030     IF(p_created_by_module IS NULL) THEN
2031       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := 'BO_API';
2032     ELSE
2033       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := p_created_by_module;
2034     END IF;
2035 
2036     -------------------------------
2037     -- For Update cust acct site
2038     -------------------------------
2039     x_cust_acct_site_id := p_cust_acct_site_v2_obj.cust_acct_site_id;
2040     x_cust_acct_site_os := p_cust_acct_site_v2_obj.orig_system;
2041     x_cust_acct_site_osr := p_cust_acct_site_v2_obj.orig_system_reference;
2042 
2043     -- validate ssm of cust account site
2044     hz_registry_validate_bo_pvt.validate_ssm_id(
2045       px_id              => x_cust_acct_site_id,
2046       px_os              => x_cust_acct_site_os,
2047       px_osr             => x_cust_acct_site_osr,
2048       p_org_id           => p_cust_acct_site_v2_obj.org_id,
2049       p_obj_type         => 'HZ_CUST_ACCT_SITES_ALL',
2050       p_create_or_update => 'U',
2051       x_return_status    => x_return_status,
2052       x_msg_count        => x_msg_count,
2053       x_msg_data         => x_msg_data);
2054 
2055     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2056       RAISE FND_API.G_EXC_ERROR;
2057     END IF;
2058 
2059     -- get object version number of customer acct site
2060     OPEN get_ovn(x_cust_acct_site_id);
2061     FETCH get_ovn INTO l_cas_ovn, l_ca_id, l_party_site_id;
2062     CLOSE get_ovn;
2063 
2064     assign_cust_acct_site_v2_rec(
2065       p_cust_acct_site_v2_obj        => p_cust_acct_site_v2_obj,
2066       p_party_site_id             => l_party_site_id,
2067       p_cust_acct_id              => l_ca_id,
2068       p_cust_acct_site_id         => x_cust_acct_site_id,
2069       p_cust_acct_site_os         => x_cust_acct_site_os,
2070       p_cust_acct_site_osr        => x_cust_acct_site_osr,
2071       p_create_or_update          => 'U',
2072       px_cust_acct_site_rec       => l_cust_acct_site_rec
2073     );
2074 
2075     HZ_CUST_ACCOUNT_SITE_V2PUB.update_cust_acct_site(
2076       p_cust_acct_site_rec          => l_cust_acct_site_rec,
2077       p_object_version_number       => l_cas_ovn,
2078       x_return_status               => x_return_status,
2079       x_msg_count                   => x_msg_count,
2080       x_msg_data                    => x_msg_data
2081     );
2082 
2083     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2084       RAISE FND_API.G_EXC_ERROR;
2085     END IF;
2086 
2087     -- assign cust_acct_site_id
2088     p_cust_acct_site_v2_obj.cust_acct_site_id := x_cust_acct_site_id;
2089     l_cbm := HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE;
2090 
2091     -----------------------------------
2092     -- For cust account contact
2093     -----------------------------------
2094     IF((p_cust_acct_site_v2_obj.cust_acct_contact_objs IS NOT NULL) AND
2095        (p_cust_acct_site_v2_obj.cust_acct_contact_objs.COUNT > 0)) THEN
2096       HZ_CUST_ACCT_CONTACT_BO_PVT.save_cust_acct_contacts(
2097         p_cac_objs           => p_cust_acct_site_v2_obj.cust_acct_contact_objs,
2098         p_create_update_flag  => 'U',
2099         p_obj_source         => p_obj_source,
2100         x_return_status       => x_return_status,
2101         x_msg_count           => x_msg_count,
2102         x_msg_data            => x_msg_data,
2103         p_parent_id           => x_cust_acct_site_id,
2104         p_parent_os           => x_cust_acct_site_os,
2105         p_parent_osr          => x_cust_acct_site_osr,
2106         p_parent_obj_type     => 'CUST_ACCT_SITE'
2107       );
2108 
2109       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2110         RAISE FND_API.G_EXC_ERROR;
2111       END IF;
2112     END IF;
2113 
2114     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := l_cbm;
2115 
2116     ----------------------------
2117     -- For cust account site use
2118     ----------------------------
2119     IF((p_cust_acct_site_v2_obj.cust_acct_site_use_objs IS NOT NULL) AND
2120        (p_cust_acct_site_v2_obj.cust_acct_site_use_objs.COUNT > 0)) THEN
2121       HZ_CUST_ACCT_SITE_BO_PVT.save_cust_site_v2_uses(
2122         p_casu_v2_objs          => p_cust_acct_site_v2_obj.cust_acct_site_use_objs,
2123         p_ca_id              => l_ca_id,
2124         p_cas_id             => x_cust_acct_site_id,
2125         p_parent_os          => x_cust_acct_site_os,
2126         x_return_status      => x_return_status,
2127         x_msg_count          => x_msg_count,
2128         x_msg_data           => x_msg_data
2129       );
2130 
2131       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2132         RAISE FND_API.G_EXC_ERROR;
2133       END IF;
2134     END IF;
2135 
2136     -- reset Global variable
2137     HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2138     HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2139 
2140     -- Debug info.
2141     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2142          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2143                                p_msg_data=>x_msg_data,
2144                                p_msg_type=>'WARNING',
2145                                p_msg_level=>fnd_log.level_exception);
2146     END IF;
2147     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2148         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_v2_bo(-)',
2149                                p_prefix=>l_debug_prefix,
2150                                p_msg_level=>fnd_log.level_procedure);
2151     END IF;
2152   EXCEPTION
2153     WHEN fnd_api.g_exc_error THEN
2154       ROLLBACK TO do_update_cas_v2_bo_pub;
2155 
2156       -- reset Global variable
2157       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2158       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2159 
2160       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2161       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
2162       FND_MSG_PUB.ADD;
2163 
2164       x_return_status := fnd_api.g_ret_sts_error;
2165 
2166       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2167                                 p_count => x_msg_count,
2168                                 p_data  => x_msg_data);
2169 
2170       -- Debug info.
2171       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2172         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2173                                p_msg_data=>x_msg_data,
2174                                p_msg_type=>'ERROR',
2175                                p_msg_level=>fnd_log.level_error);
2176       END IF;
2177       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2178         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_v2_bo(-)',
2179                                p_prefix=>l_debug_prefix,
2180                                p_msg_level=>fnd_log.level_procedure);
2181       END IF;
2182 
2183     WHEN fnd_api.g_exc_unexpected_error THEN
2184       ROLLBACK TO do_update_cas_v2_bo_pub;
2185 
2186       -- reset Global variable
2187       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2188       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2189 
2190       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2191       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
2192       FND_MSG_PUB.ADD;
2193 
2194       x_return_status := fnd_api.g_ret_sts_unexp_error;
2195 
2196       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2197                                 p_count => x_msg_count,
2198                                 p_data  => x_msg_data);
2199 
2200       -- Debug info.
2201       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2202         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2203                                p_msg_data=>x_msg_data,
2204                                p_msg_type=>'UNEXPECTED ERROR',
2205                                p_msg_level=>fnd_log.level_error);
2206       END IF;
2207       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2208         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_v2_bo(-)',
2209                                p_prefix=>l_debug_prefix,
2210                                p_msg_level=>fnd_log.level_procedure);
2211       END IF;
2212 
2213     WHEN OTHERS THEN
2214       ROLLBACK TO do_update_cas_v2_bo_pub;
2215 
2216       -- reset Global variable
2217       HZ_UTILITY_V2PUB.G_CALLING_API := NULL;
2218       HZ_UTILITY_V2PUB.G_CREATED_BY_MODULE := NULL;
2219 
2220       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2221       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
2222       FND_MSG_PUB.ADD;
2223 
2224       x_return_status := fnd_api.g_ret_sts_unexp_error;
2225 
2226       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2227       fnd_message.set_token('ERROR' ,SQLERRM);
2228       fnd_msg_pub.add;
2229 
2230       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2231                                 p_count => x_msg_count,
2232                                 p_data  => x_msg_data);
2233 
2234       -- Debug info.
2235       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2236         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2237                                p_msg_data=>x_msg_data,
2238                                p_msg_type=>'SQL ERROR',
2239                                p_msg_level=>fnd_log.level_error);
2240       END IF;
2241       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2242         hz_utility_v2pub.debug(p_message=>'do_update_cust_acct_site_v2_bo(-)',
2243                                p_prefix=>l_debug_prefix,
2244                                p_msg_level=>fnd_log.level_procedure);
2245       END IF;
2246   END do_update_cust_acct_site_v2_bo;
2247 
2248 PROCEDURE update_cust_acct_site_v2_bo(
2249     p_cust_acct_site_v2_obj      IN            HZ_CUST_ACCT_SITE_V2_BO,
2250     p_created_by_module       IN            VARCHAR2,
2251     p_obj_source              IN            VARCHAR2 := null,
2252     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
2253     x_return_status           OUT NOCOPY    VARCHAR2,
2254     x_messages                OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
2255     x_return_obj              OUT NOCOPY    HZ_CUST_ACCT_SITE_V2_BO,
2256     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
2257     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
2258     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2
2259   )IS
2260     l_msg_data                VARCHAR2(2000);
2261     l_msg_count               NUMBER;
2262     l_cas_obj                 HZ_CUST_ACCT_SITE_V2_BO;
2263   BEGIN
2264     l_cas_obj := p_cust_acct_site_v2_obj;
2265     do_update_cust_acct_site_v2_bo(
2266       p_init_msg_list           => fnd_api.g_true,
2267       p_cust_acct_site_v2_obj      => l_cas_obj,
2268       p_created_by_module       => p_created_by_module,
2269       p_obj_source              => p_obj_source,
2270       x_return_status           => x_return_status,
2271       x_msg_count               => l_msg_count,
2272       x_msg_data                => l_msg_data,
2273       x_cust_acct_site_id       => x_cust_acct_site_id,
2274       x_cust_acct_site_os       => x_cust_acct_site_os,
2275       x_cust_acct_site_osr      => x_cust_acct_site_osr,
2276       p_parent_os               => NULL
2277     );
2278     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2279                     x_return_status   => x_return_status,
2280                     x_msg_count       => l_msg_count,
2281                     x_msg_data        => l_msg_data);
2282     IF FND_API.to_Boolean(p_return_obj_flag) THEN
2283       x_return_obj := l_cas_obj;
2284     END IF;
2285   END update_cust_acct_site_v2_bo;
2286 
2287 -- PROCEDURE do_save_cust_acct_site_v2_bo
2288   --
2289   -- DESCRIPTION
2290   --     Create or update customer account site business object.
2291   PROCEDURE do_save_cust_acct_site_v2_bo(
2292     p_init_msg_list            IN            VARCHAR2 := fnd_api.g_false,
2293     p_validate_bo_flag         IN            VARCHAR2 := fnd_api.g_true,
2294     p_cust_acct_site_v2_obj      IN OUT NOCOPY HZ_CUST_ACCT_SITE_V2_BO,
2295     p_created_by_module        IN            VARCHAR2,
2296     p_obj_source               IN            VARCHAR2 := null,
2297     x_return_status            OUT NOCOPY    VARCHAR2,
2298     x_msg_count                OUT NOCOPY    NUMBER,
2299     x_msg_data                 OUT NOCOPY    VARCHAR2,
2300     x_cust_acct_site_id        OUT NOCOPY    NUMBER,
2301     x_cust_acct_site_os        OUT NOCOPY    VARCHAR2,
2302     x_cust_acct_site_osr       OUT NOCOPY    VARCHAR2,
2303     px_parent_acct_id          IN OUT NOCOPY NUMBER,
2304     px_parent_acct_os          IN OUT NOCOPY VARCHAR2,
2305     px_parent_acct_osr         IN OUT NOCOPY VARCHAR2
2306   ) IS
2307     l_return_status            VARCHAR2(30);
2308     l_msg_count                NUMBER;
2309     l_msg_data                 VARCHAR2(2000);
2310     l_create_update_flag       VARCHAR2(1);
2311     l_debug_prefix             VARCHAR2(30) := '';
2312   BEGIN
2313     -- initialize API return status to success.
2314     x_return_status := FND_API.G_RET_STS_SUCCESS;
2315 
2316     -- Initialize message list if p_init_msg_list is set to TRUE.
2317     IF FND_API.to_Boolean(p_init_msg_list) THEN
2318       FND_MSG_PUB.initialize;
2319     END IF;
2320 
2321     -- Debug info.
2322     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2323         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_v2_bo(+)',
2324                                p_prefix=>l_debug_prefix,
2325                                p_msg_level=>fnd_log.level_procedure);
2326     END IF;
2327 
2328     x_cust_acct_site_id := p_cust_acct_site_v2_obj.cust_acct_site_id;
2329     x_cust_acct_site_os := p_cust_acct_site_v2_obj.orig_system;
2330     x_cust_acct_site_osr := p_cust_acct_site_v2_obj.orig_system_reference;
2331 
2332     -- check root business object to determine that it should be
2333     -- create or update, call HZ_REGISTRY_VALIDATE_BO_PVT
2334     l_create_update_flag := HZ_REGISTRY_VALIDATE_BO_PVT.check_bo_op(
2335                               p_entity_id      => x_cust_acct_site_id,
2336                               p_entity_os      => x_cust_acct_site_os,
2337                               p_entity_osr     => x_cust_acct_site_osr,
2338                               p_entity_type    => 'HZ_CUST_ACCT_SITES_ALL',
2339                               p_parent_id      => px_parent_acct_id,
2340                               p_parent_obj_type => 'CUST_ACCT'
2341                             );
2342     IF(l_create_update_flag = 'E') THEN
2343       FND_MESSAGE.SET_NAME('AR', 'HZ_API_PROPAGATE_OBJECT_ERROR');
2344       FND_MESSAGE.SET_TOKEN('OBJECT', 'CUST_ACCT_SITE');
2345       FND_MSG_PUB.ADD;
2346       RAISE FND_API.G_EXC_ERROR;
2347     END IF;
2348 
2349     IF(l_create_update_flag = 'C') THEN
2350       do_create_cust_acct_site_v2_bo(
2351         p_init_msg_list            => fnd_api.g_false,
2352         p_validate_bo_flag         => p_validate_bo_flag,
2353         p_cust_acct_site_v2_obj       => p_cust_acct_site_v2_obj,
2354         p_created_by_module        => p_created_by_module,
2355         p_obj_source               => p_obj_source,
2356         x_return_status            => x_return_status,
2357         x_msg_count                => x_msg_count,
2358         x_msg_data                 => x_msg_data,
2359         x_cust_acct_site_id        => x_cust_acct_site_id,
2360         x_cust_acct_site_os        => x_cust_acct_site_os,
2361         x_cust_acct_site_osr       => x_cust_acct_site_osr,
2362         px_parent_acct_id          => px_parent_acct_id,
2363         px_parent_acct_os          => px_parent_acct_os,
2364         px_parent_acct_osr         => px_parent_acct_osr
2365       );
2366     ELSIF(l_create_update_flag = 'U') THEN
2367       do_update_cust_acct_site_v2_bo(
2368         p_init_msg_list            => fnd_api.g_false,
2369         p_cust_acct_site_v2_obj       => p_cust_acct_site_v2_obj,
2370         p_created_by_module        => p_created_by_module,
2371         p_obj_source               => p_obj_source,
2372         x_return_status            => x_return_status,
2373         x_msg_count                => x_msg_count,
2374         x_msg_data                 => x_msg_data,
2375         x_cust_acct_site_id        => x_cust_acct_site_id,
2376         x_cust_acct_site_os        => x_cust_acct_site_os,
2377         x_cust_acct_site_osr       => x_cust_acct_site_osr,
2378         p_parent_os                => px_parent_acct_os
2379       );
2380     ELSE
2381       RAISE FND_API.G_EXC_ERROR;
2382     END IF;
2383 
2384     -- Debug info.
2385     IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2386          hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2387                                p_msg_data=>x_msg_data,
2388                                p_msg_type=>'WARNING',
2389                                p_msg_level=>fnd_log.level_exception);
2390     END IF;
2391     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2392         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_v2_bo(-)',
2393                                p_prefix=>l_debug_prefix,
2394                                p_msg_level=>fnd_log.level_procedure);
2395     END IF;
2396 
2397   EXCEPTION
2398     WHEN fnd_api.g_exc_error THEN
2399       x_return_status := fnd_api.g_ret_sts_error;
2400 
2401       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2402                                 p_count => x_msg_count,
2403                                 p_data  => x_msg_data);
2404 
2405       -- Debug info.
2406       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2407         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2408                                p_msg_data=>x_msg_data,
2409                                p_msg_type=>'ERROR',
2410                                p_msg_level=>fnd_log.level_error);
2411       END IF;
2412       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2413         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_v2_bo(-)',
2414                                p_prefix=>l_debug_prefix,
2415                                p_msg_level=>fnd_log.level_procedure);
2416       END IF;
2417     WHEN fnd_api.g_exc_unexpected_error THEN
2418       x_return_status := fnd_api.g_ret_sts_unexp_error;
2419 
2420       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2421                                 p_count => x_msg_count,
2422                                 p_data  => x_msg_data);
2423 
2424       -- Debug info.
2425       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2426         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2427                                p_msg_data=>x_msg_data,
2428                                p_msg_type=>'UNEXPECTED ERROR',
2429                                p_msg_level=>fnd_log.level_error);
2430       END IF;
2431       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2432         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_v2_bo(-)',
2433                                p_prefix=>l_debug_prefix,
2434                                p_msg_level=>fnd_log.level_procedure);
2435       END IF;
2436     WHEN OTHERS THEN
2437       x_return_status := fnd_api.g_ret_sts_unexp_error;
2438 
2439       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2440       fnd_message.set_token('ERROR' ,SQLERRM);
2441       fnd_msg_pub.add;
2442 
2443       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2444                                 p_count => x_msg_count,
2445                                 p_data  => x_msg_data);
2446 
2447       -- Debug info.
2448       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2449         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2450                                p_msg_data=>x_msg_data,
2451                                p_msg_type=>'SQL ERROR',
2452                                p_msg_level=>fnd_log.level_error);
2453       END IF;
2454       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2455         hz_utility_v2pub.debug(p_message=>'do_save_cust_acct_site_v2_bo(-)',
2456                                p_prefix=>l_debug_prefix,
2457                                p_msg_level=>fnd_log.level_procedure);
2458       END IF;
2459   END do_save_cust_acct_site_v2_bo;
2460 
2461 PROCEDURE save_cust_acct_site_v2_bo(
2462     p_validate_bo_flag        IN            VARCHAR2 := fnd_api.g_true,
2463     p_cust_acct_site_v2_obj      IN            HZ_CUST_ACCT_SITE_V2_BO,
2464     p_created_by_module       IN            VARCHAR2,
2465     p_obj_source              IN            VARCHAR2 := null,
2466     p_return_obj_flag         IN            VARCHAR2 := fnd_api.g_true,
2467     x_return_status           OUT NOCOPY    VARCHAR2,
2468     x_messages                OUT NOCOPY    HZ_MESSAGE_OBJ_TBL,
2469     x_return_obj              OUT NOCOPY    HZ_CUST_ACCT_SITE_V2_BO,
2470     x_cust_acct_site_id       OUT NOCOPY    NUMBER,
2471     x_cust_acct_site_os       OUT NOCOPY    VARCHAR2,
2472     x_cust_acct_site_osr      OUT NOCOPY    VARCHAR2,
2473     px_parent_acct_id         IN OUT NOCOPY NUMBER,
2474     px_parent_acct_os         IN OUT NOCOPY VARCHAR2,
2475     px_parent_acct_osr        IN OUT NOCOPY VARCHAR2
2476   ) IS
2477     l_msg_data                VARCHAR2(2000);
2478     l_msg_count               NUMBER;
2479     l_cas_obj                 HZ_CUST_ACCT_SITE_V2_BO;
2480   BEGIN
2481     l_cas_obj := p_cust_acct_site_v2_obj;
2482     do_save_cust_acct_site_v2_bo(
2483       p_init_msg_list           => fnd_api.g_true,
2484       p_validate_bo_flag        => p_validate_bo_flag,
2485       p_cust_acct_site_v2_obj      => l_cas_obj,
2486       p_created_by_module       => p_created_by_module,
2487       p_obj_source              => p_obj_source,
2488       x_return_status           => x_return_status,
2489       x_msg_count               => l_msg_count,
2490       x_msg_data                => l_msg_data,
2491       x_cust_acct_site_id       => x_cust_acct_site_id,
2492       x_cust_acct_site_os       => x_cust_acct_site_os,
2493       x_cust_acct_site_osr      => x_cust_acct_site_osr,
2494       px_parent_acct_id         => px_parent_acct_id,
2495       px_parent_acct_os         => px_parent_acct_os,
2496       px_parent_acct_osr        => px_parent_acct_osr
2497     );
2498     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2499                     x_return_status   => x_return_status,
2500                     x_msg_count       => l_msg_count,
2501                     x_msg_data        => l_msg_data);
2502     IF FND_API.to_Boolean(p_return_obj_flag) THEN
2503       x_return_obj := l_cas_obj;
2504     END IF;
2505   END save_cust_acct_site_v2_bo;
2506 
2507  --------------------------------------
2508   --
2509   -- PROCEDURE get_cust_acct_site_v2_bo
2510   --
2511   -- DESCRIPTION
2512   --     Get logical customer account site.
2513   --
2514   -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
2515   --
2516   -- ARGUMENTS
2517   --   IN:
2518   --     p_init_msg_list      Initialize message stack if it is set to
2519   --     p_parent_id          parent id.
2520 --       p_cust_acct_site_id          customer account site ID.
2521   --                          FND_API.G_TRUE. Default is FND_API.G_FALSE.
2522   --   OUT:
2523   --     x_cust_acct_site_v2_obj         Logical customer account site record.
2524   --     x_return_status      Return status after the call. The status can
2525   --                          be fnd_api.g_ret_sts_success (success),
2526   --                          fnd_api.g_ret_sts_error (error),
2527   --                          FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
2528   --     x_msg_count          Number of messages in message stack.
2529   --     x_msg_data           Message text if x_msg_count is 1.
2530   --
2531   -- NOTES
2532   --
2533   -- MODIFICATION HISTORY
2534   --
2535   --
2536   --   31-JUN-2008   vsegu                Created.
2537   --
2538 
2539 /*
2540 
2541 The Get customer account site API Procedure is a retrieval service that returns a full customer account site business object.
2542 The user identifies a particular Organization Contact business object using the TCA identifier and/or the object's Source System
2543 information. Upon proper validation of the object, the full Organization Contact business object is returned.
2544 The object consists of all data included within the Organization Contact business object, at all embedded levels. This includes the
2545 set of all data stored in the TCA tables for each embedded entity.
2546 
2547 
2548 Embedded BO	    	Mandatory	Multiple Logical API Procedure		Comments
2549 
2550 Party Site			Y	N	get_party_site_bo
2551 Customer Account Site Contact	N	Y	get_cust_acct_contact_bo
2552 Customer Account Site Use	N	Y	Business Structure. Included entities and
2553 						structures:HZ_CUST_SITE_USES_ALL,Customer
2554 						Profile (Business Structure)
2555 
2556 
2557 To retrieve the appropriate embedded entities within the 'Organization Contact' business object, the Get procedure returns all records
2558 for the particular contact from these TCA entity tables.
2559 
2560 Embedded TCA Entity	Mandatory	Multiple	TCA Table Entities
2561 
2562 Customer account site	Y		N	HZ_CUST_ACCOUNTS
2563 Bank account site Use	N		Y	Owned by Payments team
2564 Payment Method		N		N	Owned by AR team
2565 
2566 */
2567 
2568 
2569 PROCEDURE get_cust_acct_site_v2_bo (
2570 	p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE,
2571 	p_cust_acct_site_id	IN	NUMBER,
2572 	p_cust_acct_site_os	IN	VARCHAR2,
2573 	p_cust_acct_site_osr	IN	VARCHAR2,
2574 	x_cust_acct_site_v2_obj	OUT NOCOPY	HZ_CUST_ACCT_SITE_V2_BO,
2575 	x_return_status		OUT NOCOPY	VARCHAR2,
2576 	x_msg_count		OUT NOCOPY	NUMBER,
2577 	x_msg_data		OUT NOCOPY	VARCHAR2
2578 ) is
2579  l_debug_prefix              VARCHAR2(30) := '';
2580 
2581   l_cust_acct_site_id  number;
2582   l_cust_acct_site_os  varchar2(30);
2583   l_cust_acct_site_osr varchar2(255);
2584   l_cust_acct_site_v2_objs  HZ_CUST_ACCT_SITE_V2_BO_TBL;
2585 BEGIN
2586 
2587 	-- initialize API return status to success.
2588     	x_return_status := FND_API.G_RET_STS_SUCCESS;
2589 
2590     	-- Initialize message list if p_init_msg_list is set to TRUE
2591     	IF FND_API.to_Boolean(p_init_msg_list) THEN
2592       		FND_MSG_PUB.initialize;
2593     	END IF;
2594 
2595 
2596 	-- Debug info.
2597         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2598         	hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_bo(+)',
2599                                p_prefix=>l_debug_prefix,
2600                                p_msg_level=>fnd_log.level_procedure);
2601     	END IF;
2602 
2603     	-- check if pass in contact_point_id and/or os+osr
2604     	-- extraction validation logic is same as update
2605 
2606     	l_cust_acct_site_id := p_cust_acct_site_id;
2607     	l_cust_acct_site_os := p_cust_acct_site_os;
2608     	l_cust_acct_site_osr := p_cust_acct_site_osr;
2609 
2610     	HZ_EXTRACT_BO_UTIL_PVT.validate_ssm_id(
2611       		px_id              => l_cust_acct_site_id,
2612       		px_os              => l_cust_acct_site_os,
2613       		px_osr             => l_cust_acct_site_osr,
2614       		p_obj_type         => 'HZ_CUST_ACCT_SITES_ALL',
2615       		x_return_status    => x_return_status,
2616       		x_msg_count        => x_msg_count,
2617       		x_msg_data         => x_msg_data);
2618 
2619     	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2620       		RAISE fnd_api.g_exc_error;
2621    	 END IF;
2622 
2623 	HZ_EXTRACT_ACCT_SITE_BO_PVT.get_cust_acct_site_v2_bos
2624 		(p_init_msg_list => fnd_api.g_false,
2625 		 p_parent_id => NULL,
2626 		 p_cust_acct_site_id => l_cust_acct_site_id,
2627 		 p_action_type => NULL,
2628 		  x_cust_acct_site_v2_objs => l_cust_acct_site_v2_objs,
2629 		 x_return_status => x_return_status,
2630 		 x_msg_count => x_msg_count,
2631 		 x_msg_data => x_msg_data);
2632 
2633 	x_cust_acct_site_v2_obj := l_cust_acct_site_v2_objs(1);
2634 
2635 	IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2636       		RAISE FND_API.G_EXC_ERROR;
2637     	END IF;
2638 
2639 
2640 	-- Debug info.
2641     	IF fnd_log.level_exception>=fnd_log.g_current_runtime_level THEN
2642          	hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2643                                p_msg_data=>x_msg_data,
2644                                p_msg_type=>'WARNING',
2645                                p_msg_level=>fnd_log.level_exception);
2646     	END IF;
2647 
2648     	-- Debug info.
2649         IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2650         	hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_v2_bo (-)',
2651                                p_prefix=>l_debug_prefix,
2652                                p_msg_level=>fnd_log.level_procedure);
2653     	END IF;
2654 
2655 
2656  EXCEPTION
2657 
2658   WHEN fnd_api.g_exc_error THEN
2659       x_return_status := fnd_api.g_ret_sts_error;
2660 
2661       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2662                                 p_count => x_msg_count,
2663                                 p_data  => x_msg_data);
2664 
2665       -- Debug info.
2666       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2667         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2668                                p_msg_data=>x_msg_data,
2669                                p_msg_type=>'ERROR',
2670                                p_msg_level=>fnd_log.level_error);
2671       END IF;
2672       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2673         hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_v2_bo (-)',
2674                                p_prefix=>l_debug_prefix,
2675                                p_msg_level=>fnd_log.level_procedure);
2676       END IF;
2677     WHEN fnd_api.g_exc_unexpected_error THEN
2678       x_return_status := fnd_api.g_ret_sts_unexp_error;
2679 
2680       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2681                                 p_count => x_msg_count,
2682                                 p_data  => x_msg_data);
2683 
2684       -- Debug info.
2685       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2686         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2687                                p_msg_data=>x_msg_data,
2688                                p_msg_type=>'UNEXPECTED ERROR',
2689                                p_msg_level=>fnd_log.level_error);
2690       END IF;
2691       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2692         hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_v2_bo (-)',
2693                                p_prefix=>l_debug_prefix,
2694                                p_msg_level=>fnd_log.level_procedure);
2695       END IF;
2696     WHEN OTHERS THEN
2697       x_return_status := fnd_api.g_ret_sts_unexp_error;
2698 
2699       fnd_message.set_name('AR', 'HZ_API_OTHERS_EXCEP');
2700       fnd_message.set_token('ERROR' ,SQLERRM);
2701       fnd_msg_pub.add;
2702 
2703       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2704                                 p_count => x_msg_count,
2705                                 p_data  => x_msg_data);
2706 
2707       -- Debug info.
2708       IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
2709         hz_utility_v2pub.debug_return_messages(p_msg_count=>x_msg_count,
2710                                p_msg_data=>x_msg_data,
2711                                p_msg_type=>'SQL ERROR',
2712                                p_msg_level=>fnd_log.level_error);
2713       END IF;
2714       IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2715         hz_utility_v2pub.debug(p_message=>'hz_cust_acct_site_bo_pub.get_cust_acct_site_v2_bo (-)',
2716                                p_prefix=>l_debug_prefix,
2717                                p_msg_level=>fnd_log.level_procedure);
2718       END IF;
2719 
2720 end;
2721 
2722   PROCEDURE get_cust_acct_site_v2_bo (
2723         p_cust_acct_site_id     IN      NUMBER,
2724         p_cust_acct_site_os     IN      VARCHAR2,
2725         p_cust_acct_site_osr    IN      VARCHAR2,
2726         x_cust_acct_site_v2_obj    OUT NOCOPY      HZ_CUST_ACCT_SITE_V2_BO,
2727         x_return_status         OUT NOCOPY      VARCHAR2,
2728         x_messages              OUT NOCOPY      HZ_MESSAGE_OBJ_TBL
2729   ) IS
2730     l_msg_data                 VARCHAR2(2000);
2731     l_msg_count                NUMBER;
2732   BEGIN
2733     get_cust_acct_site_v2_bo (
2734         p_init_msg_list         => FND_API.G_TRUE,
2735         p_cust_acct_site_id     => p_cust_acct_site_id,
2736         p_cust_acct_site_os     => p_cust_acct_site_os,
2737         p_cust_acct_site_osr    => p_cust_acct_site_osr,
2738         x_cust_acct_site_v2_obj    => x_cust_acct_site_v2_obj,
2739         x_return_status         => x_return_status,
2740         x_msg_count             => l_msg_count,
2741         x_msg_data              => l_msg_data
2742     );
2743     x_messages := HZ_PARTY_BO_PVT.return_all_messages(
2744                     x_return_status   => x_return_status,
2745                     x_msg_count       => l_msg_count,
2746                     x_msg_data        => l_msg_data);
2747   END get_cust_acct_site_v2_bo;
2748 
2749 END hz_cust_acct_site_bo_pub;