DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_MSITE_PRTY_ACCSS_MGR_PVT

Source


1 PACKAGE BODY Jtf_Msite_Prty_Accss_Mgr_Pvt AS
2 /* $Header: JTFVMPMB.pls 115.2 2001/03/06 12:36:33 pkm ship      $ */
3 
4   --
5   --
6   -- Start of Comments
7   --
8   -- NAME
9   --   Jtf_Msite_Prty_Accss_Mgr_Pvt
10   --
11   -- PURPOSE
12   --
13   --
14   -- NOTES
15   --
16   -- HISTORY
17   --   01/24/01           VPALAIYA         Created
18   -- **************************************************************************
19 
20 G_PKG_NAME  CONSTANT VARCHAR2(30):= 'JTF_MSITE_PRTY_ACCSS_MGR_PVT';
21 G_FILE_NAME CONSTANT VARCHAR2(12):= 'JTFVMPMB.pls';
22 
23 --
24 -- Associate (p_party_ids) with p_msite_id.
25 -- x_is_any_duplicate_status will be FND_API.G_RET_STS_SUCCESS, if there is
26 -- no duplicate and will be FND_API.G_RET_STS_ERROR when there is at least 1
27 -- duplicate association attempted
28 --
29 PROCEDURE Associate_Parties_To_MSite
30   (
31    p_api_version                    IN NUMBER,
32    p_init_msg_list                  IN VARCHAR2 := FND_API.G_FALSE,
33    p_commit                         IN VARCHAR2 := FND_API.G_FALSE,
34    p_validation_level               IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,
35    p_msite_id                       IN NUMBER,
36    p_party_ids                      IN JTF_NUMBER_TABLE,
37    p_start_date_actives             IN JTF_DATE_TABLE,
38    p_end_date_actives               IN JTF_DATE_TABLE,
39    x_msite_prty_accss_ids           OUT JTF_NUMBER_TABLE,
40    x_duplicate_association_status   OUT JTF_VARCHAR2_TABLE_100,
41    x_is_any_duplicate_status        OUT VARCHAR2,
42    x_return_status                  OUT VARCHAR2,
43    x_msg_count                      OUT NUMBER,
44    x_msg_data                       OUT VARCHAR2
45   )
46 IS
47   l_api_name                     CONSTANT VARCHAR2(30) :=
48     'Associate_Parties_To_MSite';
49   l_api_version                  CONSTANT NUMBER       := 1.0;
50   l_tmp_id                       NUMBER;
51 
52   CURSOR c1(l_c_msite_id IN NUMBER, l_c_party_id IN NUMBER)
53   IS SELECT msite_prty_accss_id FROM jtf_msite_prty_accss
54     WHERE msite_id = l_c_msite_id
55     AND party_id = l_c_party_id;
56 
57 BEGIN
58 
59   -- Standard Start of API savepoint
60   SAVEPOINT  Associate_Parties_To_Msite_Pvt;
61 
62   -- Standard call to check for call compatibility.
63   IF NOT FND_API.Compatible_API_Call(l_api_version,
64                                      p_api_version,
65                                      l_api_name,
66                                      G_PKG_NAME)
67   THEN
68     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
69   END IF;
70 
71   -- Initialize message list if p_init_msg_list is set to TRUE.
72   IF FND_API.to_Boolean(p_init_msg_list) THEN
73     FND_MSG_PUB.initialize;
74   END IF;
75 
76   -- Initialize API return status to success
77   x_return_status := FND_API.G_RET_STS_SUCCESS;
78 
79   -- Check if the association already exists. Populate the
80   -- x_duplicate_association_status with the appropriate information
81   x_duplicate_association_status := JTF_VARCHAR2_TABLE_100();
82   x_msite_prty_accss_ids := JTF_NUMBER_TABLE();
83   x_is_any_duplicate_status := FND_API.G_RET_STS_SUCCESS;
84 
85   FOR i IN 1..p_party_ids.COUNT LOOP
86 
87     x_duplicate_association_status.EXTEND();
88     x_msite_prty_accss_ids.EXTEND();
89 
90     OPEN c1(p_msite_id, p_party_ids(i));
91     FETCH c1 INTO l_tmp_id;
92     IF(c1%FOUND) THEN
93       CLOSE c1;
94        -- duplicate exists
95       x_duplicate_association_status(i) := FND_API.G_RET_STS_ERROR;
96       x_is_any_duplicate_status := FND_API.G_RET_STS_ERROR;
97       x_msite_prty_accss_ids(i) := l_tmp_id;
98     ELSE
99       CLOSE c1;
100       -- no duplicate exists, create new entry
101       x_duplicate_association_status(i) := FND_API.G_RET_STS_SUCCESS;
102 
103       Jtf_Msite_Prty_Accss_Pvt.Create_Msite_Prty_Accss
104         (
105         p_api_version                    => p_api_version,
106         p_init_msg_list                  => FND_API.G_FALSE,
107         p_commit                         => FND_API.G_FALSE,
108         p_validation_level               => p_validation_level,
109         p_msite_id                       => p_msite_id,
110         p_party_id                       => p_party_ids(i),
111         p_start_date_active              => p_start_date_actives(i),
112         p_end_date_active                => p_end_date_actives(i),
113         x_msite_prty_accss_id            => x_msite_prty_accss_ids(i),
114         x_return_status                  => x_return_status,
115         x_msg_count                      => x_msg_count,
116         x_msg_data                       => x_msg_data
117         );
118 
119       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
120         FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_CREATE_MSITE_PRTY_FL');
121         FND_MSG_PUB.Add;
122         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
123       ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
124         FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_CREATE_MSITE_PRTY_FL');
125         FND_MSG_PUB.Add;
126         RAISE FND_API.G_EXC_ERROR;
127       END IF;
128 
129     END IF;
130 
131   END LOOP; -- end for i
132 
133   --
134   -- End of main API body.
135 
136   -- Standard check of p_commit.
137   IF (FND_API.To_Boolean(p_commit)) THEN
138     COMMIT WORK;
139   END IF;
140 
141   -- Standard call to get message count and if count is 1, get message info.
142   FND_MSG_PUB.Count_And_Get(p_count   =>      x_msg_count,
143                             p_data    =>      x_msg_data,
144                             p_encoded =>      'F');
145 
146 EXCEPTION
147 
148     WHEN FND_API.G_EXC_ERROR THEN
149       ROLLBACK TO Associate_Parties_To_Msite_Pvt;
150       x_return_status := FND_API.G_RET_STS_ERROR;
151       FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
152                                 p_data       =>      x_msg_data,
153                                 p_encoded    =>      'F');
154 
155     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
156       ROLLBACK TO Associate_Parties_To_Msite_Pvt;
157       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
158       FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
159                                 p_data       =>      x_msg_data,
160                                 p_encoded    =>      'F');
161 
162     WHEN OTHERS THEN
163       ROLLBACK TO Associate_Parties_To_Msite_Pvt;
164       FND_MESSAGE.Set_Name('FND', 'SQL_PLSQL_ERROR');
165       FND_MESSAGE.Set_Token('ROUTINE', l_api_name);
166       FND_MESSAGE.Set_Token('ERRNO', SQLCODE);
167       FND_MESSAGE.Set_Token('REASON', SQLERRM);
168       FND_MSG_PUB.Add;
169       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
170 
171       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
172       THEN
173         FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
174       END IF;
175 
176       FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
177                                 p_data       =>      x_msg_data,
178                                 p_encoded    =>      'F');
179 
180 END Associate_Parties_To_MSite;
181 
182 --
183 -- to update and delete multiple entries.
184 --
185 PROCEDURE Update_Delete_Msite_Prty
186   (
187    p_api_version                    IN NUMBER,
188    p_init_msg_list                  IN VARCHAR2 := FND_API.G_FALSE,
189    p_commit                         IN VARCHAR2 := FND_API.G_FALSE,
190    p_validation_level               IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,
191    p_msite_prty_accss_ids           IN JTF_NUMBER_TABLE,
192    p_object_version_numbers         IN JTF_NUMBER_TABLE,
193    p_msite_ids                      IN JTF_NUMBER_TABLE,
194    p_party_ids                      IN JTF_NUMBER_TABLE,
195    p_start_date_actives             IN JTF_DATE_TABLE,
196    p_end_date_actives               IN JTF_DATE_TABLE,
197    p_delete_flags                   IN JTF_VARCHAR2_TABLE_100,
198    p_msite_id                       IN NUMBER,
199    p_party_access_code              IN VARCHAR2,
200    x_return_status                  OUT VARCHAR2,
201    x_msg_count                      OUT NUMBER,
202    x_msg_data                       OUT VARCHAR2
203   )
204 IS
205   l_api_name          CONSTANT VARCHAR2(30) := 'Update_Delete_Msite_Prty';
206   l_api_version       CONSTANT NUMBER       := 1.0;
207 
208 BEGIN
209 
210   -- Standard Start of API savepoint
211   SAVEPOINT  Update_Delete_Msite_Prty_Pvt;
212 
213   -- Standard call to check for call compatibility.
214   IF NOT FND_API.Compatible_API_Call(l_api_version,
215                                      p_api_version,
216                                      l_api_name,
217                                      G_PKG_NAME)
218   THEN
219     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
220   END IF;
221 
222   -- Initialize message list if p_init_msg_list is set to TRUE.
223   IF FND_API.to_Boolean(p_init_msg_list) THEN
224     FND_MSG_PUB.initialize;
225   END IF;
226 
227   -- Initialize API return status to success
228   x_return_status := FND_API.G_RET_STS_SUCCESS;
229 
230   -- API body
231   --  CALL FLOW :
232   -- 1.
233 
234   FOR i IN 1..p_msite_prty_accss_ids.COUNT LOOP
235 
236     IF (p_delete_flags(i) = 'Y') THEN
237 
238       Jtf_Msite_Prty_Accss_Pvt.Delete_Msite_Prty_Accss
239         (
240         p_api_version                  => p_api_version,
241         p_init_msg_list                => FND_API.G_FALSE,
242         p_commit                       => FND_API.G_FALSE,
243         p_validation_level             => p_validation_level,
244         p_msite_prty_accss_id          => p_msite_prty_accss_ids(i),
245         p_msite_id                     => FND_API.G_MISS_NUM,
246         p_party_id                     => FND_API.G_MISS_NUM,
247         x_return_status                => x_return_status,
248         x_msg_count                    => x_msg_count,
249         x_msg_data                     => x_msg_data
250         );
251 
252       IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
253         FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_DELETE_MSITE_PRTY_FL');
254         FND_MSG_PUB.Add;
255         RAISE FND_API.G_EXC_ERROR;
256       ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
257         FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_DELETE_MSITE_PRTY_FL');
258         FND_MSG_PUB.Add;
259         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
260       END IF;
261 
262     ELSE
263 
264       Jtf_Msite_Prty_Accss_Pvt.Update_Msite_Prty_Accss
265         (
266         p_api_version                    => p_api_version,
267         p_init_msg_list                  => FND_API.G_FALSE,
268         p_commit                         => FND_API.G_FALSE,
269         p_validation_level               => p_validation_level,
270         p_msite_prty_accss_id            => p_msite_prty_accss_ids(i),
271         p_object_version_number          => p_object_version_numbers(i),
272         p_msite_id                       => FND_API.G_MISS_NUM,
273         p_party_id                       => FND_API.G_MISS_NUM,
274         p_start_date_active              => p_start_date_actives(i),
275         p_end_date_active                => p_end_date_actives(i),
276         x_return_status                  => x_return_status,
277         x_msg_count                      => x_msg_count,
278         x_msg_data                       => x_msg_data
279         );
280 
281       IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
282         FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_UPDATE_MSITE_PRTY_FL');
283         FND_MSG_PUB.Add;
284         RAISE FND_API.G_EXC_ERROR;
285       ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
286         FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_UPDATE_MSITE_PRTY_FL');
287         FND_MSG_PUB.Add;
288         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
289       END IF;
290 
291     END IF;
292 
293   END LOOP; -- end for i
294 
295   --
296   -- Update jtf_msites_b's party_access_code flag
297   --
298   -- Check for validity of party access code
299   IF ((p_party_access_code IS NULL) OR
300       (p_party_access_code = FND_API.G_MISS_CHAR))
301   THEN
302     FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_INVLD_PRTY_ACSS_CODE');
303     FND_MSG_PUB.Add;
304     RAISE FND_API.G_EXC_ERROR;
305   END IF;
306 
307   BEGIN
308     UPDATE jtf_msites_b
309       SET party_access_code = p_party_access_code
310       WHERE msite_id = p_msite_id;
311   EXCEPTION
312      WHEN OTHERS THEN
313        FND_MESSAGE.Set_Name('FND', 'SQL_PLSQL_ERROR');
314        FND_MESSAGE.Set_Token('ROUTINE', l_api_name);
315        FND_MESSAGE.Set_Token('ERRNO', SQLCODE);
316        FND_MESSAGE.Set_Token('REASON', SQLERRM);
317        FND_MSG_PUB.Add;
318 
319        FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_PRTY_ACCSS_CODE_FAIL');
320        FND_MESSAGE.Set_Token('PARTY_ACCESS_CODE', p_party_access_code);
321        FND_MESSAGE.Set_Token('MSITE_ID', p_msite_id);
322        FND_MSG_PUB.Add;
323        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
324   END;
325 
326   -- End of main API body.
327 
328   -- Standard check of p_commit.
332 
329   IF (FND_API.To_Boolean(p_commit)) THEN
330     COMMIT WORK;
331   END IF;
333   -- Standard call to get message count and if count is 1, get message info.
334   FND_MSG_PUB.Count_And_Get(p_count   =>      x_msg_count,
335                             p_data    =>      x_msg_data,
336                             p_encoded =>      'F');
337 
338 EXCEPTION
339 
340    WHEN FND_API.G_EXC_ERROR THEN
341      ROLLBACK TO Update_Delete_Msite_Prty_Pvt;
342      x_return_status := FND_API.G_RET_STS_ERROR;
343      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
344                                p_data       =>      x_msg_data,
345                                p_encoded    =>      'F');
346 
347    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
348      ROLLBACK TO Update_Delete_Msite_Prty_Pvt;
349      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
350      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
351                                p_data       =>      x_msg_data,
352                                p_encoded    =>      'F');
353 
354    WHEN OTHERS THEN
355      ROLLBACK TO Update_Delete_Msite_Prty_Pvt;
356      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
357 
358      IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
359      THEN
360        FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
361      END IF;
362 
363      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
364                                p_data       =>      x_msg_data,
365                                p_encoded    =>      'F');
366 
367 END Update_Delete_Msite_Prty;
368 
369 --
370 -- Return data (association + minisite data + party data) belonging to
371 -- the p_msite_id
372 --
373 PROCEDURE Load_MsiteParties_For_Msite
374   (
375    p_api_version                    IN NUMBER,
376    p_init_msg_list                  IN VARCHAR2 := FND_API.G_FALSE,
377    p_commit                         IN VARCHAR2 := FND_API.G_FALSE,
378    p_validation_level               IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,
379    p_msite_id                       IN NUMBER,
380    x_party_access_code_csr          OUT PARTY_ACCESS_CODE_CSR,
381    x_msite_csr                      OUT MSITE_CSR,
382    x_msite_prty_accss_csr           OUT MSITE_PRTY_ACCSS_CSR,
383    x_cust_account_csr               OUT CUST_ACCOUNT_CSR,
384    x_return_status                  OUT VARCHAR2,
385    x_msg_count                      OUT NUMBER,
386    x_msg_data                       OUT VARCHAR2
387   )
388 IS
389   l_api_name                CONSTANT VARCHAR2(30) :=
390     'Load_MsiteParties_For_Msite';
391   l_api_version             CONSTANT NUMBER       := 1.0;
392 BEGIN
393 
394   -- Initialize message list if p_init_msg_list is set to TRUE.
395   IF FND_API.to_Boolean(p_init_msg_list) THEN
396     FND_MSG_PUB.initialize;
397   END IF;
398 
399   -- Initialize API return status to success
400   x_return_status := FND_API.G_RET_STS_SUCCESS;
401 
402   -- Get the party access code data
403   OPEN x_party_access_code_csr FOR SELECT lookup_code, meaning
404     FROM fnd_lookups
405     WHERE lookup_type = 'JTF_PARTY_ACCESS_CODE'
406     ORDER BY lookup_code;
407 
408   -- Get the mini-site data
409   OPEN x_msite_csr FOR SELECT msite_id, msite_name, party_access_code
410     FROM jtf_msites_vl
411     WHERE msite_id = p_msite_id;
412 
413   -- Get the msite-party access data and party data
414   OPEN x_msite_prty_accss_csr FOR SELECT MP.msite_prty_accss_id,
415     MP.object_version_number, MP.msite_id, MP.party_id,
416     P.party_name, P.party_type, L.meaning, MP.start_date_active,
417     MP.end_date_active
418     FROM jtf_msite_prty_accss MP, hz_parties P, ar_lookups L
419     WHERE MP.msite_id = p_msite_id
420     AND MP.party_id = P.party_id
421     AND P.party_type = 'ORGANIZATION'
422     AND L.lookup_type = 'PARTY_TYPE'
423     AND P.party_type = L.lookup_code;
424 
425   -- Get the party account data
426   OPEN x_cust_account_csr FOR SELECT party_id, account_number
427     FROM hz_cust_accounts_all
428     WHERE party_id IN
429     (SELECT party_id FROM jtf_msite_prty_accss
430     WHERE msite_id = p_msite_id)
431     ORDER BY party_id, account_number;
432 
433 EXCEPTION
434 
435    WHEN FND_API.G_EXC_ERROR THEN
436      x_return_status := FND_API.G_RET_STS_ERROR;
437      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
438                                p_data       =>      x_msg_data,
439                                p_encoded    =>      'F');
440 
441    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
442      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
443      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
444                                p_data       =>      x_msg_data,
445                                p_encoded    =>      'F');
446 
447    WHEN OTHERS THEN
448      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
449 
450      IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
451      THEN
452        FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
453      END IF;
454 
455      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
456                                p_data       =>      x_msg_data,
457                                p_encoded    =>      'F');
458 
459 END Load_MsiteParties_For_Msite;
460 
461 --
462 -- Get the cursor which returns the (party_id)
463 -- based on the query criteria and the query value
464 --
465 -- Query criteria (p_query_criteria) can have the following values:
466 --   1. PARTY_NAME                    (uses p_criteria_value_str)
467 --   2. ACCOUNT_NUMBER                (uses p_criteria_value_str)
468 --
469 -- p_criteria_value_str will be passed as input if the criteria value is string
470 -- Note: p_criteria_value_str might have "'" in it, so we are calling to
471 -- replace any "'" with "''" so that the SQL query is constructed ok
472 --
473 PROCEDURE Get_Party_Id_List
474   (
475    p_api_version                    IN NUMBER,
476    p_init_msg_list                  IN VARCHAR2 := FND_API.G_FALSE,
477    p_commit                         IN VARCHAR2 := FND_API.G_FALSE,
478    p_validation_level               IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,
479    p_query_criteria                 IN VARCHAR2,
480    p_criteria_value_str             IN VARCHAR2,
481    x_party_csr                      OUT PARTY_CSR,
482    x_return_status                  OUT VARCHAR2,
483    x_msg_count                      OUT NUMBER,
484    x_msg_data                       OUT VARCHAR2
485   )
486 IS
487   l_api_name                     CONSTANT VARCHAR2(30) :=
488     'Get_Party_Id_List';
489   l_api_version                  CONSTANT NUMBER       := 1.0;
490 
491   l_db_sql                       VARCHAR2(2000);
492   l_criteria_value_str           VARCHAR2(256);
493 
494 BEGIN
495 
496   -- Standard call to check for call compatibility.
497   IF NOT FND_API.Compatible_API_Call(l_api_version,
498                                      p_api_version,
499                                      l_api_name,
500                                      G_PKG_NAME)
501   THEN
502     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
503   END IF;
504 
505   -- Initialize message list if p_init_msg_list is set to TRUE.
509 
506   IF FND_API.to_Boolean(p_init_msg_list) THEN
507     FND_MSG_PUB.initialize;
508   END IF;
510   -- Initialize API return status to success
511   x_return_status := FND_API.G_RET_STS_SUCCESS;
512 
513   --
514   -- Assign criteria value to local variable (so that it can be modified)
515   --
516   l_criteria_value_str := p_criteria_value_str;
517 
518   --
519   -- Handle null value of criteria value
520   --
521   IF (l_criteria_value_str IS NULL) THEN
522     l_criteria_value_str := '%';
523   END IF;
524 
525   --
526   -- Replace any occurence of "'" with "''", so that the SQL query
527   -- constructed is OK
528   --
529   l_criteria_value_str := replace(l_criteria_value_str, '''', '''''');
530 
531   --
532   -- Construct the database sql query
533   --
534 
535   --
536   -- Based on the query criteria
537   --
538   IF (p_query_criteria IS NULL) THEN
539 
540     FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_QUERY_CRIT_NULL');
541     FND_MSG_PUB.Add;
542     RAISE FND_API.G_EXC_ERROR;
543 
544   ELSIF (p_query_criteria = 'PARTY_NAME') THEN
545 
546     OPEN x_party_csr FOR SELECT party_id FROM hz_parties
547       WHERE party_type = 'ORGANIZATION'
548       AND UPPER(party_name) LIKE UPPER(l_criteria_value_str);
549 
550   ELSIF (p_query_criteria = 'ACCOUNT_NUMBER') THEN
551 
552     OPEN x_party_csr FOR SELECT A.party_id FROM hz_cust_accounts_all A
553       WHERE UPPER(A.account_number) LIKE UPPER(l_criteria_value_str)
554       AND EXISTS
555       (SELECT 1 FROM hz_parties P
556       WHERE P.party_id = A.party_id
557       AND P.party_type = 'ORGANIZATION');
558 
559   ELSE
560     -- none of the query criteria specified
561     FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_INVLD_QUERY_CRIT');
562     FND_MESSAGE.Set_Token('QUERY_CRITERIA', p_query_criteria);
563     FND_MSG_PUB.Add;
564     RAISE FND_API.G_EXC_ERROR;
565   END IF;
566 
567   --
568   -- End of main API body.
569 
570   -- Standard check of p_commit.
571   IF (FND_API.To_Boolean(p_commit)) THEN
572     COMMIT WORK;
573   END IF;
574 
575   -- Standard call to get message count and if count is 1, get message info.
576   FND_MSG_PUB.Count_And_Get(p_count   =>      x_msg_count,
577                             p_data    =>      x_msg_data,
578                             p_encoded =>      'F');
579 
580 EXCEPTION
581 
582    WHEN FND_API.G_EXC_ERROR THEN
583      x_return_status := FND_API.G_RET_STS_ERROR;
584      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
585                                p_data       =>      x_msg_data,
586                                p_encoded    =>      'F');
587 
588    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
589      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
590      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
591                                p_data       =>      x_msg_data,
592                                p_encoded    =>      'F');
593 
594    WHEN OTHERS THEN
595      FND_MESSAGE.Set_Name('FND', 'SQL_PLSQL_ERROR');
596      FND_MESSAGE.Set_Token('ROUTINE', l_api_name);
597      FND_MESSAGE.Set_Token('ERRNO', SQLCODE);
598      FND_MESSAGE.Set_Token('REASON', SQLERRM);
599      FND_MSG_PUB.Add;
600      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
601 
602      IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
603      THEN
604        FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
605      END IF;
606 
607      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
608                                p_data       =>      x_msg_data,
609                                p_encoded    =>      'F');
610 
611 END Get_Party_Id_List;
612 
613 --
614 -- Get the cursor which returns the x_party_csr with info for lookup
615 -- page for parties in (p_parties_ids)
616 --
617 PROCEDURE Get_Party_Info_For_Lookup
618   (
619    p_api_version                    IN NUMBER,
620    p_init_msg_list                  IN VARCHAR2 := FND_API.G_FALSE,
621    p_commit                         IN VARCHAR2 := FND_API.G_FALSE,
622    p_validation_level               IN NUMBER   := FND_API.G_VALID_LEVEL_FULL,
623    p_party_ids                      IN JTF_NUMBER_TABLE,
624    x_party_csr                      OUT PARTY_CSR,
625    x_cust_account_csr               OUT CUST_ACCOUNT_CSR,
626    x_return_status                  OUT VARCHAR2,
627    x_msg_count                      OUT NUMBER,
631   l_api_name                     CONSTANT VARCHAR2(30) :=
628    x_msg_data                       OUT VARCHAR2
629   )
630 IS
632     'Get_Party_Info_For_Lookup';
633   l_api_version                  CONSTANT NUMBER       := 1.0;
634 
635   l_db_sql                       VARCHAR2(2000);
636   l_tmp_str                      VARCHAR2(2000);
637 
638 BEGIN
639 
640   -- Standard call to check for call compatibility.
641   IF NOT FND_API.Compatible_API_Call(l_api_version,
642                                      p_api_version,
643                                      l_api_name,
644                                      G_PKG_NAME)
645   THEN
646     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
647   END IF;
648 
649   -- Initialize message list if p_init_msg_list is set to TRUE.
650   IF FND_API.to_Boolean(p_init_msg_list) THEN
651     FND_MSG_PUB.initialize;
652   END IF;
653 
654   -- Initialize API return status to success
655   x_return_status := FND_API.G_RET_STS_SUCCESS;
656 
657   --
658   -- If there are no parties in the input, then return error
659   --
660   IF (p_party_ids.COUNT <= 0) THEN
661     FND_MESSAGE.Set_Name('JTF', 'JTF_MSITE_NO_PRTYS_SPECIFIED');
662     FND_MSG_PUB.Add;
663     RAISE FND_API.G_EXC_ERROR;
664   END IF;
665 
666   --
667   -- Prepare the part of the sql query which does selection based on the input
668   --
669   l_tmp_str := ' party_id IN (';
670 
671   FOR i IN 1..p_party_ids.COUNT LOOP
672 
673     IF (i <> 1) THEN
674       l_tmp_str := l_tmp_str || ',';
675     END IF;
676 
677     l_tmp_str := l_tmp_str  || p_party_ids(i);
678 
679   END LOOP; -- end loop i
680 
681   -- end construction of part of sql query
682   l_tmp_str := l_tmp_str || ')';
683 
684   --
685   -- Construct the database sql query
686   --
687   l_db_sql :=
688     'SELECT P.party_id, P.party_name, P.party_type, L.meaning FROM hz_parties P, ar_lookups L WHERE ' ||
689     ' P.party_type = L.lookup_code AND L.lookup_type = ''PARTY_TYPE'' AND ' ||
690     l_tmp_str;
691 
692   --
693   -- Get the party data
694   --
695   OPEN x_party_csr FOR l_db_sql;
696 
697   --
698   -- Get the account data
699   --
700   OPEN x_cust_account_csr FOR 'SELECT party_id, account_number FROM hz_cust_accounts_all WHERE ' || l_tmp_str;
701 
702   --
703   -- End of main API body.
704 
705   -- Standard check of p_commit.
706   IF (FND_API.To_Boolean(p_commit)) THEN
707     COMMIT WORK;
708   END IF;
709 
710   -- Standard call to get message count and if count is 1, get message info.
711   FND_MSG_PUB.Count_And_Get(p_count   =>      x_msg_count,
712                             p_data    =>      x_msg_data,
713                             p_encoded =>      'F');
714 
715 EXCEPTION
716 
717    WHEN FND_API.G_EXC_ERROR THEN
718      x_return_status := FND_API.G_RET_STS_ERROR;
719      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
720                                p_data       =>      x_msg_data,
721                                p_encoded    =>      'F');
722 
723    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
724      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
725      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
726                                p_data       =>      x_msg_data,
727                                p_encoded    =>      'F');
728 
729    WHEN OTHERS THEN
730      FND_MESSAGE.Set_Name('FND', 'SQL_PLSQL_ERROR');
731      FND_MESSAGE.Set_Token('ROUTINE', l_api_name);
732      FND_MESSAGE.Set_Token('ERRNO', SQLCODE);
733      FND_MESSAGE.Set_Token('REASON', SQLERRM);
734      FND_MSG_PUB.Add;
735      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
736 
737      IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
738      THEN
739        FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
740      END IF;
741 
742      FND_MSG_PUB.Count_And_Get(p_count      =>      x_msg_count,
743                                p_data       =>      x_msg_data,
744                                p_encoded    =>      'F');
745 
746 END Get_Party_Info_For_Lookup;
747 
748 END Jtf_Msite_Prty_Accss_Mgr_Pvt;