DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_PARTNER_ACCNT_MGMT_PVT

Source


1 PACKAGE BODY PV_PARTNER_ACCNT_MGMT_PVT as
2 /* $Header: pvxvpamb.pls 120.4 2005/11/28 13:32:17 dgottlie ship $ */
3 
4 G_PKG_NAME  CONSTANT VARCHAR2(30) := 'PV_PARTNER_ACCNT_MGMT_PVT';
5 G_FILE_NAME CONSTANT VARCHAR2(12) := 'pvxvpamb.pls';
6 
7 PV_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
8 PV_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
9 PV_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
10 
11 PROCEDURE Create_Customer_Account(
12    p_api_version       IN  NUMBER
13   ,p_init_msg_list     IN  VARCHAR2  := FND_API.g_false
14   ,p_commit            IN  VARCHAR2  := FND_API.g_false
15   ,P_partner_party_id  IN  NUMBER
16   ,x_return_status     OUT NOCOPY VARCHAR2
17   ,x_msg_count         OUT NOCOPY NUMBER
18   ,x_msg_data          OUT NOCOPY VARCHAR2
19   ,x_acct_id           OUT NOCOPY NUMBER
20  )
21  IS
22   l_api_version CONSTANT  NUMBER       := 1.0;
23   l_api_name    CONSTANT  VARCHAR2(45) := 'Create_Customer_Account';
24   l_full_name   CONSTANT  VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
25 
26 
27   CURSOR C_party_info (l_party_id NUMBER) IS
28     SELECT party_name, party_number
29     FROM  hz_parties
30     WHERE party_id = l_party_id
31     AND   party_type = 'ORGANIZATION';
32 
33    account_rec	      HZ_CUST_ACCOUNT_V2PUB.cust_account_rec_type;
34    organization_rec   HZ_PARTY_V2PUB.organization_rec_type;
35    cust_profile_rec   HZ_CUSTOMER_PROFILE_V2PUB.customer_profile_rec_type;
36    p_party_rec        HZ_PARTY_V2PUB.party_rec_type;
37 
38 
39    l_party_number      VARCHAR2(30);
40    l_party_name        VARCHAR2(240);
41    l_gen_cust_num      VARCHAR2(3);
42    l_account_number    VARCHAR2(30);
43    l_party_id          NUMBER;
44    l_profile_id	       NUMBER;
45 
46     BEGIN
47 ---- Initialize---------------------
48 
49    SAVEPOINT CREATE_CUSTOMER_ACCOUNT;
50 
51    x_return_status := FND_API.g_ret_sts_success;
52 
53    IF FND_API.to_boolean(p_init_msg_list) THEN
54       FND_MSG_PUB.initialize;
55    END IF;
56 
57   IF NOT FND_API.compatible_api_call(
58          l_api_version,
59          p_api_version,
60          l_api_name,
61          g_pkg_name
62    ) THEN
63       RAISE FND_API.g_exc_unexpected_error;
64   END IF;
65 
66     -- figure out if the party type and party_name. party_type has to be an organization
67      OPEN C_party_info(p_partner_party_id);
68        FETCH C_party_info INTO l_party_name, l_party_number;
69           IF (C_party_info%NOTFOUND) THEN
70               FND_MESSAGE.Set_Name('PV', 'PV_INVALID_PARTNER_PARTY_ID');
71               FND_MESSAGE.Set_Token('COLUMN', 'PARTY ID', FALSE);
72               FND_MSG_PUB.ADD;
73 	      raise FND_API.G_EXC_ERROR;
74           END IF;
75        CLOSE C_party_info;
76 
77 
78     account_rec.Created_by_Module := 'PV';
79     organization_rec.Created_by_Module := 'PV';
80     cust_profile_rec.Created_by_Module := 'PV';
81 
82   -- if needed generate account_number.
83     SELECT generate_customer_number INTO l_gen_cust_num FROM ar_system_parameters;
84 
85    -- typically should be set to 'Y' if no we will try to create a new one.
86    -- however, this could error out
87    -- Is this needed????
88 
89       IF l_gen_cust_num = 'N' THEN
90            account_rec.account_number := 'PV'|| l_party_number;
91       END IF;
92 
93     account_rec.account_name := l_party_name;
94     organization_rec.party_rec := p_party_rec;
95     organization_rec.party_rec.party_id := p_partner_party_id;
96 
97       HZ_CUST_ACCOUNT_V2PUB.create_cust_account (
98       p_init_msg_list                         => FND_API.G_FALSE,
99       p_cust_account_rec                      => account_rec,
100       p_organization_rec                      => organization_rec,
101       p_customer_profile_rec                  => cust_profile_rec,
102       p_create_profile_amt                    => 'Y',
103       x_cust_account_id                       => x_acct_id,
104       x_account_number                        => l_account_number,
105       x_party_id                              => l_party_id	,
106       x_party_number                          => l_party_number,
107       x_profile_id                            => l_profile_id,
108       x_return_status                         => x_return_status,
109       x_msg_count                             => x_msg_count,
110       x_msg_data                              => x_msg_data  );
111 
112       IF (PV_DEBUG_HIGH_ON) THEN
113 
114       PVX_UTILITY_PVT.debug_message('create cust_acct: l_acct_id '||x_acct_id);
115       PVX_UTILITY_PVT.debug_message('create cust_acct: x_return_status '||x_return_status);
116 
117       END IF;
118 
119 
120       IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
121             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
122       ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
123             RAISE FND_API.G_EXC_ERROR;
124       END IF;
125 
126 
127     FND_MSG_PUB.Count_And_Get
128       (   p_encoded => FND_API.G_FALSE,
129          p_count          =>   x_msg_count,
130          p_data           =>   x_msg_data
131       );
132 
133     IF FND_API.to_Boolean( p_commit ) THEN
134          COMMIT WORK;
135     END IF;
136 
137 
138     EXCEPTION
139           WHEN FND_API.G_EXC_ERROR THEN
140          ROLLBACK TO CREATE_CUSTOMER_ACCOUNT;
141          x_return_status := FND_API.G_RET_STS_ERROR;
142         -- Standard call to get message count and if count=1, get the message
143          FND_MSG_PUB.Count_And_Get (
144             p_encoded => FND_API.G_FALSE
145            ,p_count   => x_msg_count
146            ,p_data    => x_msg_data
147            );
148 
149         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
150          ROLLBACK TO CREATE_CUSTOMER_ACCOUNT;
151          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
152         -- Standard call to get message count and if count=1, get the message
153           FND_MSG_PUB.Count_And_Get (
154             p_encoded => FND_API.G_FALSE
155            ,p_count   => x_msg_count
156            ,p_data    => x_msg_data
157 	  );
158 
159         WHEN OTHERS THEN
160           ROLLBACK TO CREATE_CUSTOMER_ACCOUNT;
161           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
162           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
163           THEN
164             FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
165           END IF;
166           -- Standard call to get message count and if count=1, get the message
167           FND_MSG_PUB.Count_And_Get (
168             p_encoded => FND_API.G_FALSE
169            ,p_count   => x_msg_count
170            ,p_data    => x_msg_data
171            );
172 
173  END Create_Customer_Account;
174 
175 
176  PROCEDURE Create_ACCT_SITE (
177    p_api_version       IN  NUMBER
178   ,p_init_msg_list     IN  VARCHAR2  := FND_API.g_false
179   ,p_commit            IN  VARCHAR2  := FND_API.g_false
180   ,p_Cust_Account_Id NUMBER
181   ,p_Party_Site_Id NUMBER
182   ,x_return_status     OUT NOCOPY VARCHAR2
183   ,x_msg_count         OUT NOCOPY NUMBER
184   ,x_msg_data          OUT NOCOPY VARCHAR2
185   ,x_customer_site_id  OUT NOCOPY NUMBER
186   )
187   IS
188 
189   l_api_version CONSTANT NUMBER       := 1.0;
190   l_api_name    CONSTANT VARCHAR2(45) := 'Create_ACCT_SITE';
191 
192   -- acct site need not be verified
193   CURSOR C_acct_site (l_account_id NUMBER, l_site_id NUMBER) IS
194      SELECT cust_acct_site_id
195      FROM hz_cust_acct_sites
196      WHERE cust_account_id = l_Account_Id
197      AND party_site_id    = l_Site_Id;
198 
199    p_acct_site_Rec           HZ_CUST_ACCOUNT_SITE_V2PUB.cust_acct_site_rec_type;
200 
201   BEGIN
202    ---- Initialize---------------------
203    SAVEPOINT CREATE_ACCT_SITE;
204 
205    x_return_status := FND_API.g_ret_sts_success;
206 
207 
208    IF FND_API.to_boolean(p_init_msg_list) THEN
209       FND_MSG_PUB.initialize;
210    END IF;
211 
212    IF NOT FND_API.compatible_api_call(
213          l_api_version,
214          p_api_version,
215          l_api_name,
216          g_pkg_name
217    ) THEN
218       RAISE FND_API.g_exc_unexpected_error;
219    END IF;
220 
221 
222     Open C_acct_site (p_cust_account_id, p_party_site_id);
223     Fetch C_acct_site into x_customer_site_id;
224     IF (C_acct_site%NOTFOUND) THEN
225       p_acct_site_rec.cust_account_id := P_cust_account_id;
226       p_acct_site_rec.party_site_id   := P_party_site_id;
227       --p_acct_site_rec.status	      := 'A';
228       p_acct_site_Rec.created_by_module := 'PV';
229       p_acct_site_Rec.org_id := mo_global.get_current_org_id;
230 
231 
232       HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_acct_site (
233         p_init_msg_list                         => FND_API.G_FALSE,
234         p_cust_acct_site_rec                    => p_acct_site_rec,
235         x_cust_acct_site_id                     => x_customer_site_id,
236         x_return_status                         => x_return_status,
237         x_msg_count                             => x_msg_count,
238         x_msg_data                              => x_msg_data  );
239 
240       IF (PV_DEBUG_HIGH_ON) THEN
241        PVX_UTILITY_PVT.debug_message('create acct_site: x_return_status '||x_return_status);
242       END IF;
243 
244        IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
245             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
246        ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
247             RAISE FND_API.G_EXC_ERROR;
248        END IF;
249    END IF;
250 
251    Close C_acct_site;
252    PVX_UTILITY_PVT.debug_message('create acct_site:after create_site:x_customer_site_id '||x_customer_site_id);
253 
254    FND_MSG_PUB.Count_And_Get
255    (  p_encoded => FND_API.G_FALSE,
256       p_count          =>   x_msg_count,
257       p_data           =>   x_msg_data
258    );
259 
260     IF FND_API.to_Boolean( p_commit ) THEN
261          COMMIT WORK;
262        END IF;
263 
264 
265    EXCEPTION
266           WHEN FND_API.G_EXC_ERROR THEN
267          ROLLBACK TO CREATE_ACCT_SITE;
268          x_return_status := FND_API.G_RET_STS_ERROR;
269         -- Standard call to get message count and if count=1, get the message
270          FND_MSG_PUB.Count_And_Get (
271             p_encoded => FND_API.G_FALSE
272            ,p_count   => x_msg_count
273            ,p_data    => x_msg_data
274            );
275 
276         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
277          ROLLBACK TO CREATE_ACCT_SITE;
278          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
279         -- Standard call to get message count and if count=1, get the message
280           FND_MSG_PUB.Count_And_Get (
281             p_encoded => FND_API.G_FALSE
282            ,p_count   => x_msg_count
283            ,p_data    => x_msg_data
284 	  );
285 
286         WHEN OTHERS THEN
287           ROLLBACK TO CREATE_ACCT_SITE;
288           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
289           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
290           THEN
291             FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
292           END IF;
293           -- Standard call to get message count and if count=1, get the message
294           FND_MSG_PUB.Count_And_Get (
295             p_encoded => FND_API.G_FALSE
296            ,p_count   => x_msg_count
297            ,p_data    => x_msg_data
298            );
299 
300   END Create_acct_site;
301 
302 
303 
304 PROCEDURE Create_Party_Site_Use(
305     p_api_version          IN   NUMBER,
306     p_init_msg_list        IN   VARCHAR2  := FND_API.g_false,
307     p_commit               IN   VARCHAR2  := FND_API.g_false,
308     p_party_site_id	   IN	NUMBER,
309     p_party_site_use_type  IN   VARCHAR2,
310     x_party_site_use_id	   OUT NOCOPY NUMBER,
311     x_return_status	   OUT NOCOPY VARCHAR2,
312     x_msg_count            OUT NOCOPY  NUMBER,
313     x_msg_data             OUT NOCOPY  VARCHAR2)
314 IS
315 
316     l_api_name              CONSTANT VARCHAR2(45) := 'Create_Party_Site_Use';
317     l_api_version           CONSTANT NUMBER       := 1.0;
318     l_party_site_use_rec    HZ_PARTY_SITE_V2PUB.Party_Site_Use_Rec_Type;
319 
320 BEGIN
321     SAVEPOINT CREATE_PARTY_SITE_USE;
322 
323     -- Initialize API return status to SUCCESS
324     x_return_status := FND_API.G_RET_STS_SUCCESS;
325 
326     IF FND_API.to_boolean(p_init_msg_list) THEN
327         FND_MSG_PUB.initialize;
328     END IF;
329 
330     IF NOT FND_API.compatible_api_call(
331         l_api_version,
332         p_api_version,
333         l_api_name,
334         g_pkg_name
335     ) THEN
336         RAISE FND_API.g_exc_unexpected_error;
337     END IF;
338 
339 
340    IF (PV_DEBUG_HIGH_ON) THEN
341 
342    PVX_UTILITY_PVT.debug_message('create_pty_site_use: p_party_site_id ' || p_party_site_id);
343    PVX_UTILITY_PVT.debug_message('create_pty_site_use: p_party_site_use_type ' || p_party_site_use_type);
344    END IF;
345 
346    l_party_site_use_rec.party_site_id := p_party_site_id;
347    l_party_site_use_rec.site_use_type := p_party_site_use_type;
348    l_party_site_use_rec.Created_by_Module := 'PV';
349 
350     HZ_PARTY_SITE_V2PUB.create_party_site_use (
351     p_init_msg_list                 => FND_API.G_FALSE,
352     p_party_site_use_rec            => l_party_site_use_rec,
353     x_party_site_use_id             => x_party_site_use_id,
354     x_return_status                 => x_return_status,
355     x_msg_count                     => x_msg_count,
356     x_msg_data                      => x_msg_data  );
357 
358 
359 
360    IF (PV_DEBUG_HIGH_ON) THEN
361 
362    PVX_UTILITY_PVT.debug_message('create_pty_site_use: x_party_site_use_id ' || x_party_site_use_id);
363    PVX_UTILITY_PVT.debug_message('create_pty_site_use: x_return_status ' || x_return_status);
364    END IF;
365 
366    IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
367             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
368    ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
369             RAISE FND_API.G_EXC_ERROR;
370    END IF;
371 
372    FND_MSG_PUB.Count_And_Get
373    (      p_encoded => FND_API.G_FALSE,
374          p_count          =>   x_msg_count,
375          p_data           =>   x_msg_data
376     );
377 
378 
379    IF FND_API.to_Boolean( p_commit ) THEN
380          COMMIT WORK;
381        END IF;
382 
383 
384    EXCEPTION
385          WHEN FND_API.G_EXC_ERROR THEN
386          ROLLBACK TO CREATE_PARTY_SITE_USE;
387          x_return_status := FND_API.G_RET_STS_ERROR;
388         -- Standard call to get message count and if count=1, get the message
389          FND_MSG_PUB.Count_And_Get (
390             p_encoded => FND_API.G_FALSE
391            ,p_count   => x_msg_count
392            ,p_data    => x_msg_data
393            );
394 
395         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
396          ROLLBACK TO CREATE_PARTY_SITE_USE;
397          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
398         -- Standard call to get message count and if count=1, get the message
399           FND_MSG_PUB.Count_And_Get (
400             p_encoded => FND_API.G_FALSE
401            ,p_count   => x_msg_count
402            ,p_data    => x_msg_data
403 	  );
404 
405         WHEN OTHERS THEN
406           ROLLBACK TO CREATE_PARTY_SITE_USE;
407           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
408           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
409           THEN
410             FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
411           END IF;
412           -- Standard call to get message count and if count=1, get the message
413           FND_MSG_PUB.Count_And_Get (
414             p_encoded => FND_API.G_FALSE
415            ,p_count   => x_msg_count
416            ,p_data    => x_msg_data
417            );
418 
419 
420 END Create_Party_Site_Use;
421 
422 /* R12 Changes
423  * Added out parameter x_cust_acct_site_id since we plan
424  * on passing this value around
425 */
426 PROCEDURE Create_ACCT_SITE_USES (
427    p_api_version       IN  NUMBER
428   ,p_init_msg_list     IN  VARCHAR2  := FND_API.g_false
429   ,p_commit            IN  VARCHAR2  := FND_API.g_false
430   ,P_Cust_Account_Id   IN  NUMBER
431   ,P_Party_Site_Id     IN  NUMBER
432   ,P_Acct_Site_type    IN  VARCHAR2
433   ,x_return_status     OUT NOCOPY VARCHAR2
434   ,x_msg_count         OUT NOCOPY NUMBER
435   ,x_msg_data          OUT NOCOPY VARCHAR2
436   ,x_site_use_id  OUT NOCOPY NUMBER
437   ,x_cust_acct_site_id OUT NOCOPY NUMBER
438   )
439      IS
440        CURSOR C_site_use(l_acct_site_id NUMBER, l_site_type VARCHAR2) IS
441          SELECT site_use_id
442          FROM hz_cust_site_uses
443          WHERE cust_acct_site_id = l_acct_site_id
444          AND site_use_code = l_site_type;
445 
446        CURSOR party_site_use(l_party_site_id NUMBER, l_site_type VARCHAR2) IS
447          SELECT party_site_use_id
448          FROM hz_party_site_uses
449          WHERE party_site_id = l_party_site_id
450          AND site_use_type = l_Site_type;
451 
452        CURSOR C_location(l_party_site_id NUMBER) IS
453         Select hzl.city
454         From hz_locations hzl,hz_party_sites hps
455         Where hps.party_site_id = l_party_site_id
456         And hzl.location_id = hps.location_id;
457 
458 
459         l_api_version CONSTANT NUMBER       := 1.0;
460         l_api_name    CONSTANT VARCHAR2(45) := 'Create_ACCT_SITE_USES';
461 
462         l_location          VARCHAR2(60);
463         l_profile varchar2(1);
464         l_party_site_use_id number;
465 
466         p_acct_site_uses_Rec  HZ_CUST_ACCOUNT_SITE_V2PUB.cust_site_use_rec_type;
467         p_cust_profile_rec    HZ_CUSTOMER_PROFILE_V2PUB.customer_profile_rec_type;
468 
469 
470 
471     BEGIN
472 
473         ---- Initialize---------------------
474 
475      SAVEPOINT CREATE_ACCT_SITE_USES;
476 
477      x_return_status := FND_API.g_ret_sts_success;
478 
479      IF FND_API.to_boolean(p_init_msg_list) THEN
480         FND_MSG_PUB.initialize;
481      END IF;
482 
483      IF NOT FND_API.compatible_api_call(
484          l_api_version,
485          p_api_version,
486          l_api_name,
487          g_pkg_name
488      ) THEN
489       RAISE FND_API.g_exc_unexpected_error;
490      END IF;
491 
492 
493    -- Intializing created_by_module as required in version 2 api for the record structure
494 
495      IF (PV_DEBUG_HIGH_ON) THEN
496 
497     PVX_UTILITY_PVT.debug_message('create acct_site_use:l_cust_account_id '||p_cust_account_id);
498 
499     END IF;
500 
501 
502         Create_ACCT_SITE(p_api_version       => 1.0
503                         ,p_Cust_Account_Id  => p_cust_account_id
504                         ,p_Party_Site_Id => p_party_site_id
505                         ,x_return_status => x_return_status
506                         ,x_msg_count     => x_msg_count
507                         ,x_msg_data      =>   x_msg_data
508                         ,x_customer_site_id  => x_cust_acct_site_id
509                         );
510 
511 
512     IF (PV_DEBUG_HIGH_ON) THEN
513 
514     PVX_UTILITY_PVT.debug_message('create acct_site_use:after create_site:x_return_status '||x_return_status);
515     PVX_UTILITY_PVT.debug_message('create acct_site_use:after create_site:x_cust_acct_site_id '||x_cust_acct_site_id);
516 
517 
518     END IF;
519 
520      IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
521             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
522        ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
523             RAISE FND_API.G_EXC_ERROR;
524        END IF;
525 
526 
527     Open C_site_use(x_cust_acct_site_id, p_acct_site_type);
528        Fetch C_site_use into x_site_use_id;
529        IF (C_site_use%NOTFOUND) THEN
530 
531         OPEN C_location(p_party_site_id);
532         FETCH C_location into l_location;
533         IF (C_location%NOTFOUND) THEN
534           l_location := 'NO_LOCATION';
535         END IF;
536         CLOSE C_location;
537 
538         IF (PV_DEBUG_HIGH_ON) THEN
539 
540         PVX_UTILITY_PVT.debug_message('create acct_site_use:l_location '||l_location);
541 
542         END IF;
543 
544         SELECT AUTO_SITE_NUMBERING INTO l_profile FROM AR_SYSTEM_PARAMETERS;
545 
546         IF l_profile = 'N' then
547            p_acct_site_uses_Rec.location := substr(p_acct_Site_type ||' ' ||
548 								    l_location ||' ' ||
549 					 to_char(x_cust_acct_site_id), 1, 40) ;
550         END IF;
551 
552             p_acct_site_uses_Rec.cust_acct_site_id := x_cust_acct_site_id;
553             p_acct_site_uses_Rec.site_use_code    := p_acct_site_type ;
554 	    p_acct_site_uses_Rec.org_id := mo_global.get_current_org_id;
555             p_acct_site_uses_Rec.created_by_module := 'PV';
556             p_cust_profile_rec.created_by_module := 'PV';
557 
558          HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_site_use (
559            p_init_msg_list                         => FND_API.G_FALSE,
560            p_cust_site_use_rec                     => p_acct_site_uses_rec,
561            p_customer_profile_rec                  => p_cust_profile_rec,
562            p_create_profile                        => FND_API.G_TRUE,
563            p_create_profile_amt                    => FND_API.G_TRUE,
564            x_site_use_id                           => x_site_use_id,
565            x_return_status                         => x_return_status,
566            x_msg_count                             => x_msg_count,
567            x_msg_data                              => x_msg_data  );
568 
569         IF (PV_DEBUG_HIGH_ON) THEN
570 
571         PVX_UTILITY_PVT.debug_message('create acct_site_use:create_acct_site_use:x_return_status '||x_return_status );
572 
573         PVX_UTILITY_PVT.debug_message('create acct_site_use:create_acct_site_use:x_site_use_id '||x_site_use_id);
574         END IF;
575 
576         IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
577             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
578        ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
579             RAISE FND_API.G_EXC_ERROR;
580        END IF;
581 
582      END IF; -- x_site_use not null
583 
584 
585      Close C_site_use;
586 
587      IF (PV_DEBUG_HIGH_ON) THEN
588          PVX_UTILITY_PVT.debug_message('create acct_site_use:x_site_use_id '||x_site_use_id);
589      END IF;
590 
591 
592 
593      IF (p_party_site_id IS NOT NULL AND p_party_site_id <> FND_API.G_MISS_NUM) AND
594         (p_acct_site_type IS NOT NULL AND p_acct_site_type <> FND_API.G_MISS_CHAR) THEN
595 
596            OPEN party_site_use(p_party_site_id,p_acct_site_type);
597            FETCH party_site_use into l_party_site_use_id;
598            CLOSE party_site_use;
599 
600           IF (PV_DEBUG_HIGH_ON) THEN
601                PVX_UTILITY_PVT.debug_message('create acct_site_use:create_party_site_use:l_party_site_use_id '||l_party_site_use_id);
602           END IF;
603 
604            IF l_party_site_use_id = NULL  then
605               Create_Party_Site_Use(
606                 p_api_version          => 1.0,
607             	p_party_site_id	       => p_party_site_id,
608                 p_party_site_use_type  => p_acct_site_type,
609 		 x_party_site_use_id =>  l_party_site_use_id,
610                	x_return_status        => x_return_status,
611                 x_msg_count            => x_msg_count,
612                 x_msg_data             => x_msg_data);
613 
614              IF (PV_DEBUG_HIGH_ON) THEN
615 
616                PVX_UTILITY_PVT.debug_message('create acct_site_use: create_party_site_use: x_return_status '|| x_return_status);
617              END IF;
618            END IF;
619 
620           IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
621             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
622           ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
623             RAISE FND_API.G_EXC_ERROR;
624           END IF;
625 
626      END IF;---End of Party Site conditions
627 
628 
629 
630     FND_MSG_PUB.Count_And_Get
631       (   p_encoded => FND_API.G_FALSE,
632          p_count          =>   x_msg_count,
633          p_data           =>   x_msg_data
634       );
635 
636        IF FND_API.to_Boolean( p_commit ) THEN
637          COMMIT WORK;
638        END IF;
639 
640      EXCEPTION
641         WHEN FND_API.G_EXC_ERROR THEN
642          ROLLBACK TO  CREATE_ACCT_SITE_USES;
643          x_return_status := FND_API.G_RET_STS_ERROR;
644         -- Standard call to get message count and if count=1, get the message
645          FND_MSG_PUB.Count_And_Get (
646             p_encoded => FND_API.G_FALSE
647            ,p_count   => x_msg_count
648            ,p_data    => x_msg_data
649            );
650 
651         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
652          ROLLBACK TO  CREATE_ACCT_SITE_USES;
653          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
654         -- Standard call to get message count and if count=1, get the message
655           FND_MSG_PUB.Count_And_Get (
656             p_encoded => FND_API.G_FALSE
657            ,p_count   => x_msg_count
658            ,p_data    => x_msg_data
659 	  );
660 
661         WHEN OTHERS THEN
662           ROLLBACK TO  CREATE_ACCT_SITE_USES;
663           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
664           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
665           THEN
666             FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
667           END IF;
668           -- Standard call to get message count and if count=1, get the message
669           FND_MSG_PUB.Count_And_Get (
670             p_encoded => FND_API.G_FALSE
671            ,p_count   => x_msg_count
672            ,p_data    => x_msg_data
673            );
674 
675    END Create_acct_site_uses;
676 
677 
678 
679 PROCEDURE Create_Contact_Role ( p_api_version       IN  NUMBER
680   ,p_init_msg_list     IN  VARCHAR2  := FND_API.g_false
681   ,p_commit            IN  VARCHAR2  := FND_API.g_false
682   ,p_party_id          IN NUMBER     := FND_API.G_MISS_NUM
683   ,p_Cust_account_id     IN  NUMBER
684   ,p_cust_account_site_id IN NUMBER  := FND_API.G_MISS_NUM
685   ,p_Role_type           IN       VARCHAR2 := 'CONTACT'
686   ,p_responsibility_type IN VARCHAR2 := FND_API.G_MISS_CHAR
687   ,x_return_status     OUT NOCOPY VARCHAR2
688   ,x_msg_count         OUT NOCOPY NUMBER
689   ,x_msg_data          OUT NOCOPY VARCHAR2
690   ,x_cust_account_role_id OUT NOCOPY NUMBER
691 )
692 IS
693   l_api_version CONSTANT NUMBER       := 1.0;
694   l_api_name    CONSTANT VARCHAR2(45) := 'Create_Contact_Role';
695 
696   p_cust_acct_roles_rec  HZ_CUST_ACCOUNT_ROLE_V2PUB.cust_account_role_rec_type;
697   p_role_resp_rec       HZ_CUST_ACCOUNT_ROLE_V2PUB.role_responsibility_rec_type;
698   l_responsibility_id NUMBER;
699 
700   CURSOR C_Get_Resp(role_id NUMBER, resp_type VARCHAR2) IS
701    SELECT responsibility_id
702    FROM hz_role_responsibility
703    WHERE cust_account_role_id = role_id
704    AND responsibility_type = resp_type;
705 
706  BEGIN
707     SAVEPOINT CREATE_CONTACT_ROLE;
708 
709       x_return_status := FND_API.g_ret_sts_success;
710 
711     IF FND_API.to_boolean(p_init_msg_list) THEN
712        FND_MSG_PUB.initialize;
713     END IF;
714 
715     IF NOT FND_API.compatible_api_call(
716          l_api_version,
717          p_api_version,
718          l_api_name,
719          g_pkg_name
720    ) THEN
721       RAISE FND_API.g_exc_unexpected_error;
722    END IF;
723 
724 
725 
726    IF (PV_DEBUG_HIGH_ON) THEN
727    PVX_UTILITY_PVT.debug_message('create_contact_role: p_party_id: '||p_party_id);
728    PVX_UTILITY_PVT.debug_message('create_contact_role: p_cust_account_id: '||p_cust_account_id);
729    PVX_UTILITY_PVT.debug_message('create_contact_role: p_cust_account_site_id: '||p_cust_account_site_id);
730    PVX_UTILITY_PVT.debug_message('create_contact_role: p_role_type: '||p_role_type);
731    END IF;
732 
733    p_cust_acct_roles_rec.party_id        := p_party_id;
734    p_cust_acct_roles_rec.cust_account_id := p_cust_account_id;
735    p_cust_acct_roles_rec.role_type       := p_role_type;
736    p_cust_acct_roles_rec.cust_acct_site_id := p_cust_account_site_id;
737    p_cust_acct_roles_rec.Created_by_Module := 'PV';
738    p_role_resp_rec.Created_by_Module := 'PV';
739 
740 
741    IF (PV_DEBUG_HIGH_ON) THEN
742       PVX_UTILITY_PVT.debug_message('before create cust acct roles');
743    END IF;
744 
745     HZ_CUST_ACCOUNT_ROLE_V2PUB.create_cust_account_role (
746     p_init_msg_list                         => FND_API.G_FALSE,
747     p_cust_account_role_rec                 => p_cust_acct_roles_rec,
748     x_cust_account_role_id                  => x_cust_account_role_id,
749     x_return_status                         => x_return_status,
750     x_msg_count                             => x_msg_count,
751     x_msg_data                              => x_msg_data  );
752 
753     IF (PV_DEBUG_HIGH_ON) THEN
754 
755     PVX_UTILITY_PVT.debug_message('create_contact_role:after create_cust_acct_role: x_return_status: '||x_return_status);
756 
757     END IF;
758 
759     IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
760             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
761     ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
762             RAISE FND_API.G_EXC_ERROR;
763     END IF;
764 
765  IF(p_responsibility_type IS NOT NULL and p_responsibility_type <> FND_API.G_MISS_CHAR) THEN
766  OPEN C_Get_Resp(x_cust_account_role_id, p_responsibility_type);
767  FETCH C_Get_Resp INTO l_responsibility_id;
768 
769  IF C_Get_Resp%NOTFOUND THEN
770 
771    IF p_cust_account_site_id is not NULL AND
772       p_cust_account_site_id <>  FND_API.G_MISS_NUM THEN
773       p_role_resp_rec.cust_account_role_id := x_cust_account_role_id;
774       p_role_resp_rec.responsibility_type := p_responsibility_type;
775 
776     HZ_CUST_ACCOUNT_ROLE_V2PUB.create_role_responsibility (
777     p_init_msg_list                         =>  FND_API.G_FALSE,
778     p_role_responsibility_rec               => p_role_resp_rec,
779     x_responsibility_id                     => l_responsibility_id,
780     x_return_status                         => x_return_status,
781     x_msg_count                             => x_msg_count,
782     x_msg_data                              => x_msg_data  );
783 
784 
785     IF (PV_DEBUG_HIGH_ON) THEN
786     PVX_UTILITY_PVT.debug_message('create_contact_role:after create_role_resp: x_return_status: '||x_return_status);
787     END IF;
788 
789     IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
790             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
791     ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
792             RAISE FND_API.G_EXC_ERROR;
793     END IF;
794 
795    END IF; --Cust_account_site_id is not null
796  END IF;--C_Get_Resp%NOTFOUND
797  CLOSE C_Get_Resp;
798  END IF; --p_responsibility_type is not null
799 
800    FND_MSG_PUB.Count_And_Get
801    (  p_encoded => FND_API.G_FALSE ,
802       p_count          =>   x_msg_count,
803       p_data           =>   x_msg_data
804    );
805 
806     IF FND_API.to_Boolean( p_commit ) THEN
807          COMMIT WORK;
808        END IF;
809 
810 EXCEPTION
811          WHEN FND_API.G_EXC_ERROR THEN
812          ROLLBACK TO  CREATE_CONTACT_ROLE;
813          x_return_status := FND_API.G_RET_STS_ERROR;
814         -- Standard call to get message count and if count=1, get the message
815          FND_MSG_PUB.Count_And_Get (
816             p_encoded => FND_API.G_FALSE
817            ,p_count   => x_msg_count
818            ,p_data    => x_msg_data
819            );
820 
821         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
822          ROLLBACK TO  CREATE_CONTACT_ROLE;
823          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
824         -- Standard call to get message count and if count=1, get the message
825           FND_MSG_PUB.Count_And_Get (
826             p_encoded => FND_API.G_FALSE
827            ,p_count   => x_msg_count
828            ,p_data    => x_msg_data
829 	  );
830 
831         WHEN OTHERS THEN
832           ROLLBACK TO  CREATE_CONTACT_ROLE;
833           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
834           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
835           THEN
836             FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
837           END IF;
838           -- Standard call to get message count and if count=1, get the message
839           FND_MSG_PUB.Count_And_Get (
840             p_encoded => FND_API.G_FALSE
841            ,p_count   => x_msg_count
842            ,p_data    => x_msg_data
843            );
844 
845 END Create_Contact_Role;
846 
847 
848 
849 
850 PROCEDURE Get_Partner_Accnt_Id(
851    p_Partner_Party_Id  IN  NUMBER,
852    x_return_status OUT NOCOPY VARCHAR2,
853    x_Cust_Acct_Id  OUT NOCOPY NUMBER
854 )
855  IS
856 
857    CURSOR C_get_partner_accnt_id(l_Party_Id NUMBER) IS
858      SELECT cust_account_id
859      FROM hz_cust_accounts
860      WHERE party_id = l_Party_Id
861      and status = 'A';
862 
863  l_msg_count        number;
864  l_msg_data         varchar2(200);
865 
866 BEGIN
867 
868 x_return_status := FND_API.G_RET_STS_SUCCESS;
869 
870 
871 IF (p_partner_party_id = FND_API.G_MISS_NUM or p_partner_party_id IS NULL) THEN
872           FND_MESSAGE.set_name('PV', 'PV_API_NO_PARTNER_PARTY_ID');
873           FND_MSG_PUB.add;
874           RAISE FND_API.G_EXC_ERROR;
875 END IF;
876 
877 
878 OPEN C_get_partner_accnt_id(p_partner_Party_Id);
879 LOOP
880   FETCH C_get_partner_accnt_id INTO x_Cust_Acct_Id;
881   IF x_Cust_Acct_Id IS NOT NULL and x_Cust_Acct_Id <> FND_API.G_MISS_NUM  THEN
882    exit;
883   END IF;
884   EXIT WHEN C_get_partner_accnt_id%NOTFOUND;
885 END LOOP;
886 CLOSE C_get_partner_accnt_id;
887 
888 IF x_Cust_Acct_Id IS NULL OR x_Cust_Acct_Id = FND_API.G_MISS_NUM THEN
889        Create_Customer_Account(
890                p_api_version      => 1.0
891               ,P_partner_party_id => p_partner_party_id
892               ,x_return_status    => x_return_status
893               ,x_msg_count        => l_msg_count
894               ,x_msg_data         => l_msg_data
895               ,x_acct_id          => x_Cust_Acct_Id
896               );
897 
898       IF (PV_DEBUG_HIGH_ON) THEN
899             PVX_UTILITY_PVT.debug_message('x_return_status from Create_customer_account :  ' || x_return_status);
900       END IF;
901 
902      IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
903             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
904        ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
905             RAISE FND_API.G_EXC_ERROR;
906        END IF;
907 END IF;
908 
909 END Get_Partner_Accnt_Id;
910 
911 
912 /* R12 Changes
913  * Added out parameter x_cust_acct_site_id which
914  * will be passed to calls to get_cust_acct_roles
915  * throughout procedeure, any reference to
916  * l_cust_acct_site_id is a result of this R12 change
917  * Removed references to cursor party_cur since the same
918  * functionality will be taken care of before this procedure
919  * is ever called
920  * parameter p_partner_party_id changed to p_partner_id since
921  * in R12, this procedure can be called using either an organization
922  * or contact address
923 */
924 PROCEDURE  get_acct_site_uses(
925   p_party_site_id IN NUMBER,
926   p_acct_site_type IN VARCHAR2,
927   p_cust_account_id IN NUMBER,
928   p_party_id IN NUMBER,
929   x_return_status OUT NOCOPY VARCHAR2,
930   x_site_use_id OUT NOCOPY number,
931   x_cust_acct_site_id OUT NOCOPY NUMBER
932 )
933 IS
934 
935  CURSOR site_use_cur IS
936   select a.site_use_id, a.cust_acct_site_id
937   from hz_cust_site_uses a, hz_cust_acct_sites b
938   where b.cust_account_id = p_cust_account_id
939   and b.party_site_id = p_party_site_id
940   and a.cust_acct_site_id = b.cust_acct_site_id
941   and a.site_use_code = p_acct_site_type
942   and a.status = 'A'
943   and b.status = 'A';
944 
945   l_msg_count        number;
946   l_msg_data         varchar2(200);
947 
948 begin
949   x_return_status := FND_API.G_RET_STS_SUCCESS;
950 
951   IF (PV_DEBUG_HIGH_ON) THEN
952 
953     PVX_UTILITY_PVT.debug_message('site use in get_acct_site_uses = ' || p_acct_site_type);
954 
955   END IF;
956 
957   OPEN site_use_cur;
958   FETCH site_use_cur INTO x_site_use_id, x_cust_acct_site_id;
959 
960   IF (site_use_cur%NOTFOUND) THEN
961 
962       Create_ACCT_SITE_USES(
963                p_api_version      => 1.0
964               ,P_Cust_Account_Id  =>  p_cust_account_id
965               ,P_Party_Site_Id    => p_party_site_id
966  	          ,P_Acct_Site_type   =>  p_acct_site_type
967               ,x_return_status     => x_return_status
968 	       ,x_msg_count        => l_msg_count
969               ,x_msg_data         => l_msg_data
970               ,x_site_use_id       => x_site_use_id
971 	          ,x_cust_acct_site_id => x_cust_acct_site_id
972               );
973 
974            IF (PV_DEBUG_HIGH_ON) THEN
975             PVX_UTILITY_PVT.debug_message('x_return_status from Create_ACCT_SITE_USES :  ' || x_return_status);
976 	   END IF;
977 
978            IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
979             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
980            ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
981             RAISE FND_API.G_EXC_ERROR;
982           END IF;
983 
984   END IF;
985   close site_use_cur;
986 
987    IF (PV_DEBUG_HIGH_ON) THEN
988       PVX_UTILITY_PVT.debug_message('site_use_id in get_acct_site_uses = ' || x_site_use_id);
989    END IF;
990 
991 END get_acct_site_uses;
992 
993 /* R12 Changes
994  * p_cust_account_site_id is no longer null as we will start passing
995  * this value in as per OM
996  * Removed paramter p_acct_site_type and any references to it in the procedure
997  * Removed reference to hz_role_responsibility from cursor cust_role
998  * Removed reference to cursor cust_role_wo_party_site
999 */
1000 PROCEDURE get_cust_acct_roles(
1001   p_contact_party_id IN NUMBER,
1002   p_cust_account_site_id IN NUMBER,
1003   p_cust_account_id IN NUMBER,
1004   x_return_status OUT NOCOPY VARCHAR2,
1005   x_cust_account_role_id OUT NOCOPY number
1006 )
1007 IS
1008 
1009 
1010 CURSOR cust_role IS
1011  select a.cust_account_role_id
1012  from hz_cust_account_roles a,  hz_cust_acct_sites c
1013  where a.role_type = 'CONTACT'
1014  and a.party_id = p_contact_party_id
1015  and a.cust_account_id = p_cust_account_id
1016  and a.cust_acct_site_id = c.cust_acct_site_id
1017  and c.cust_acct_site_id = p_cust_account_site_id
1018  and a.cust_account_id = c.cust_account_id
1019  and c.status = 'A'
1020  and a.status = 'A';
1021 
1022   l_msg_count        number;
1023  l_msg_data         varchar2(200);
1024 
1025 
1026 begin
1027 
1028  x_return_status := FND_API.G_RET_STS_SUCCESS;
1029 
1030  IF (PV_DEBUG_HIGH_ON) THEN
1031 
1032  PVX_UTILITY_PVT.debug_message('p_contact_party_id = ' || p_contact_party_id);
1033  END IF;
1034 
1035 
1036  IF (p_cust_account_site_id IS NULL and p_cust_account_site_id <> FND_API.G_MISS_NUM) THEN
1037          FND_MESSAGE.Set_Name('PV', 'PV_CUST_ACCOUNT_ROLE_ERROR');
1038          FND_MESSAGE.Set_Token('ID', to_char( p_contact_party_id), FALSE);
1039          FND_MSG_PUB.ADD;
1040          RAISE FND_API.G_EXC_ERROR;
1041  END IF;
1042 
1043    OPEN cust_role;
1044    FETCH cust_role INTO x_cust_account_role_id;
1045 
1046    IF (cust_role%NOTFOUND) THEN
1047 
1048      Create_Contact_Role (
1049         p_api_version         =>   1.0
1050        ,p_party_id            => p_contact_party_id
1051        ,p_Cust_account_id     =>  p_cust_account_id
1052        ,p_cust_account_site_id => p_cust_account_site_id
1053        ,p_Role_type          => 'CONTACT'
1054        ,p_responsibility_type => NULL
1055        ,x_return_status     => x_return_status
1056        ,x_msg_count        => l_msg_count
1057        ,x_msg_data         => l_msg_data
1058        ,x_cust_account_role_id => x_cust_account_role_id
1059       );
1060 
1061   IF (PV_DEBUG_HIGH_ON) THEN
1062 
1063   PVX_UTILITY_PVT.debug_message('x_return_status from get_cust_acct_roles = '|| x_return_status);
1064 
1065   END IF;
1066 
1067   IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1068             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1069        ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
1070             RAISE FND_API.G_EXC_ERROR;
1071        END IF;
1072 
1073 END IF;
1074 CLOSE cust_role;
1075 IF (PV_DEBUG_HIGH_ON) THEN
1076 
1077   PVX_UTILITY_PVT.debug_message('x_cust_account_role_id in get_cust_acct_roles = '|| x_cust_account_role_id);
1078 
1079 END IF;
1080 
1081 
1082 END get_cust_acct_roles;
1083 
1084 
1085 PROCEDURE Create_Party_Site(
1086         p_api_version       IN  NUMBER,
1087         p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
1088         p_commit            IN  VARCHAR2  := FND_API.g_false,
1089         p_party_site_rec        IN      PARTY_SITE_REC_TYPE,
1090         x_return_status         OUT NOCOPY     VARCHAR2,
1091 	x_party_site_id         OUT NOCOPY     NUMBER,
1092         x_msg_count             OUT NOCOPY     NUMBER,
1093         x_msg_data              OUT NOCOPY     VARCHAR2
1094 )
1095 IS
1096 
1097    /* CURSOR c_site_use_type(p_type_name VARCHAR2) IS
1098         SELECT site_use_type_id FROM HZ_SITE_USE_TYPES
1099         WHERE name = p_type_name;*/
1100 
1101     l_api_version CONSTANT NUMBER       := 1.0;
1102     l_api_name                  VARCHAR2(40) := 'Create_Party_Site';
1103     l_site_use_type_id          NUMBER;
1104     l_location_rec              HZ_LOCATION_V2PUB.Location_Rec_Type;
1105     l_location_id               NUMBER;
1106     l_party_site_rec            HZ_PARTY_SITE_V2PUB.Party_Site_Rec_Type;
1107     l_party_site_use_rec        HZ_PARTY_SITE_V2PUB.Party_Site_Use_Rec_Type;
1108     l_party_site_use_id         NUMBER;
1109     l_party_site_number         NUMBER;
1110 
1111 BEGIN
1112     SAVEPOINT CREATE_PARTY_SITE;
1113 
1114     IF FND_API.to_boolean(p_init_msg_list) THEN
1115        FND_MSG_PUB.initialize;
1116     END IF;
1117 
1118     IF NOT FND_API.compatible_api_call(
1119          l_api_version,
1120          p_api_version,
1121          l_api_name,
1122          g_pkg_name
1123     ) THEN
1124       RAISE FND_API.g_exc_unexpected_error;
1125     END IF;
1126 
1127     -- Initialize API return status to SUCCESS
1128     x_return_status := FND_API.G_RET_STS_SUCCESS;
1129 
1130 
1131     l_party_site_rec.Created_by_Module := 'PV';
1132     l_party_site_use_rec.Created_by_Module := 'PV';
1133     l_location_rec.Created_by_Module := 'PV';
1134 
1135 
1136     l_location_rec.address1 := p_party_site_rec.location.address1;
1137     l_location_rec.address2 := p_party_site_rec.location.address2;
1138     l_location_rec.address3 := p_party_site_rec.location.address3;
1139     l_location_rec.address4 := p_party_site_rec.location.address4;
1140     l_location_rec.country      := p_party_site_rec.location.country;
1141     l_location_rec.city        := p_party_site_rec.location.city;
1142     l_location_rec.postal_code := p_party_site_rec.location.postal_code;
1143     l_location_rec.state       := p_party_site_rec.location.state;
1144     l_location_rec.province    := p_party_site_rec.location.province;
1145     l_location_rec.county      := p_party_site_rec.location.county;
1146 
1147 
1148     l_location_rec.ORIG_SYSTEM_REFERENCE := -1;
1149     l_location_rec.CONTENT_SOURCE_TYPE := 'USER_ENTERED';
1150 
1151     HZ_LOCATION_V2PUB.create_location (
1152     p_init_msg_list                    =>  FND_API.G_FALSE,
1153     p_location_rec                      => l_location_rec,
1154     x_location_id                       => l_location_id,
1155     x_return_status                    => x_return_status,
1156     x_msg_count                        => x_msg_count ,
1157     x_msg_data                          => x_msg_data );
1158 
1159 
1160    IF (PV_DEBUG_HIGH_ON) THEN
1161    PVX_UTILITY_PVT.debug_message('create_party_site:after create_loc:l_location_id '||l_location_id);
1162    PVX_UTILITY_PVT.debug_message('create_party_site:after create_loc:x_return_status '||x_return_status);
1163    END IF;
1164 
1165    IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1166             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1167    ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
1168             RAISE FND_API.G_EXC_ERROR;
1169    END IF;
1170 
1171         l_party_site_rec.party_id := p_party_site_rec.party_id;
1172         l_party_site_rec.location_id := l_location_id;
1173         l_party_site_rec.identifying_address_flag := p_party_site_rec.primary_flag;
1174 
1175      HZ_PARTY_SITE_V2PUB.create_party_site (
1176        p_init_msg_list                 => FND_API.G_FALSE,
1177        p_party_site_rec                => l_party_site_rec,
1178        x_party_site_id                 => x_party_site_id,
1179        x_party_site_number             => l_party_site_number,
1180        x_return_status                 => x_return_status,
1181        x_msg_count                     => x_msg_count,
1182        x_msg_data                      => x_msg_data );
1183 
1184 
1185      IF (PV_DEBUG_HIGH_ON) THEN
1186       PVX_UTILITY_PVT.debug_message('create_party_site:after create_site:x_party_site_id '||x_party_site_id);
1187 
1188      PVX_UTILITY_PVT.debug_message('create_party_site:after create_site:x_return_status '||x_return_status);
1189      END IF;
1190 
1191 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1192             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1193        ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
1194             RAISE FND_API.G_EXC_ERROR;
1195        END IF;
1196 
1197          l_party_site_use_rec.party_site_id := x_party_site_id;
1198          l_party_site_use_rec.site_use_type := p_party_site_rec.party_site_use_type;
1199 
1200 
1201         HZ_PARTY_SITE_V2PUB.create_party_site_use (
1202           p_init_msg_list                 => FND_API.G_FALSE,
1203           p_party_site_use_rec            => l_party_site_use_rec,
1204           x_party_site_use_id             => l_party_site_use_id,
1205           x_return_status                 => x_return_status,
1206           x_msg_count                     => x_msg_count,
1207           x_msg_data                      => x_msg_data );
1208 
1209 
1210 
1211       IF (PV_DEBUG_HIGH_ON) THEN
1212 
1213       PVX_UTILITY_PVT.debug_message('create_party_site:after create_site_use:x_return_status '||x_return_status);
1214 
1215       PVX_UTILITY_PVT.debug_message('create_party_site:after create_site_use:l_party_site_use_id '||l_party_site_use_id);
1216       END IF;
1217 
1218       IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1219             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1220        ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
1221             RAISE FND_API.G_EXC_ERROR;
1222        END IF;
1223 
1224     FND_MSG_PUB.Count_And_Get
1225     (    p_encoded => FND_API.G_FALSE,
1226          p_count          =>   x_msg_count,
1227          p_data           =>   x_msg_data
1228     );
1229 
1230      IF FND_API.to_Boolean( p_commit ) THEN
1231          COMMIT WORK;
1232        END IF;
1233 
1234     EXCEPTION
1235          WHEN FND_API.G_EXC_ERROR THEN
1236          ROLLBACK TO  CREATE_PARTY_SITE;
1237          x_return_status := FND_API.G_RET_STS_ERROR;
1238         -- Standard call to get message count and if count=1, get the message
1239          FND_MSG_PUB.Count_And_Get (
1240             p_encoded => FND_API.G_FALSE
1241            ,p_count   => x_msg_count
1242            ,p_data    => x_msg_data
1243            );
1244 
1245         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1246          ROLLBACK TO  CREATE_PARTY_SITE;
1247          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1248         -- Standard call to get message count and if count=1, get the message
1249           FND_MSG_PUB.Count_And_Get (
1250             p_encoded => FND_API.G_FALSE
1251            ,p_count   => x_msg_count
1252            ,p_data    => x_msg_data
1253 	  );
1254 
1255         WHEN OTHERS THEN
1256           ROLLBACK TO  CREATE_PARTY_SITE;
1257           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1258           IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1259           THEN
1260             FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1261           END IF;
1262 	  -- Standard call to get message count and if count=1, get the message
1263           FND_MSG_PUB.Count_And_Get (
1264             p_encoded => FND_API.G_FALSE
1265            ,p_count   => x_msg_count
1266            ,p_data    => x_msg_data
1267            );
1268 
1269 END Create_Party_Site;
1270 
1271 
1272 END PV_PARTNER_ACCNT_MGMT_PVT;