DBA Data[Home] [Help]

PACKAGE BODY: APPS.PSB_DEFAULT_ASSIGNMENTS_PVT

Source


1 PACKAGE BODY PSB_DEFAULT_ASSIGNMENTS_PVT AS
2 /* $Header: PSBVPDAB.pls 120.2 2005/07/13 11:27:57 shtripat ship $ */
3 
4   G_PKG_NAME CONSTANT VARCHAR2(30):= 'PSB_DEFAULT_ASSIGNMENTS_PVT';
5 
6 /* ----------------------------------------------------------------------- */
7 
8 PROCEDURE INSERT_ROW
9 ( p_api_version                 IN      NUMBER,
10   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
11   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
12   p_validation_level            IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
13   p_return_status               OUT  NOCOPY     VARCHAR2,
14   p_msg_count                   OUT  NOCOPY     NUMBER,
15   p_msg_data                    OUT  NOCOPY     VARCHAR2,
16   --
17   P_ROW_ID                           IN OUT  NOCOPY  VARCHAR2,
18   P_DEFAULT_ASSIGNMENT_ID            IN      NUMBER,
19   P_DEFAULT_RULE_ID                  in      NUMBER,
20   P_ASSIGNMENT_TYPE                  IN      VARCHAR2,
21   P_ATTRIBUTE_ID                     IN      NUMBER,
22   P_ATTRIBUTE_VALUE_ID               IN      NUMBER,
23   P_ATTRIBUTE_VALUE                  IN      VARCHAR2,
24   P_PAY_ELEMENT_ID                   IN      NUMBER,
25   P_PAY_ELEMENT_OPTION_ID            IN      NUMBER,
26   P_PAY_BASIS                        IN      VARCHAR2,
27   P_ELEMENT_VALUE_TYPE               IN      VARCHAR2,
28   P_ELEMENT_VALUE                    IN      NUMBER,
29   P_CURRENCY_CODE                    IN      VARCHAR2,
30   P_LAST_UPDATE_DATE                 in      DATE,
31   P_LAST_UPDATED_BY                  in      NUMBER,
32   P_LAST_UPDATE_LOGIN                in      NUMBER,
33   P_CREATED_BY                       in      NUMBER,
34   P_CREATION_DATE                    in      DATE
35 ) IS
36 
37   l_api_name            CONSTANT VARCHAR2(30)   := 'INSERT_ROW';
38   l_api_version         CONSTANT NUMBER         := 1.0;
39   l_row_id              varchar2(40);
40   --
41   cursor c1 is
42      select ROWID from psb_default_assignments
43      where default_rule_id = p_default_rule_id
44      and default_assignment_id = p_default_assignment_id;
45 
46 BEGIN
47 
48   -- Standard Start of API savepoint
49 
50   SAVEPOINT     INSERT_ROW_PVT;
51 
52   -- Standard call to check for call compatibility.
53 
54   if not FND_API.Compatible_API_Call (l_api_version,
55 				      p_api_version,
56 				      l_api_name,
57 				      G_PKG_NAME)
58   then
59     raise FND_API.G_EXC_UNEXPECTED_ERROR;
60   end if;
61 
62   -- Initialize message list if p_init_msg_list is set to TRUE.
63 
64   if FND_API.to_Boolean (p_init_msg_list) then
65     FND_MSG_PUB.initialize;
66   end if;
67 
68   -- Initialize API return status to success
69 
70   p_return_status := FND_API.G_RET_STS_SUCCESS;
71 
72 
73   -- API body
74   INSERT INTO psb_default_assignments
75   (
76   DEFAULT_ASSIGNMENT_ID            ,
77   DEFAULT_RULE_ID                  ,
78   ASSIGNMENT_TYPE                  ,
79   ATTRIBUTE_ID                     ,
80   ATTRIBUTE_VALUE_ID               ,
81   ATTRIBUTE_VALUE                  ,
82   PAY_ELEMENT_ID                   ,
83   PAY_ELEMENT_OPTION_ID            ,
84   PAY_BASIS                        ,
85   ELEMENT_VALUE_TYPE               ,
86   ELEMENT_VALUE                    ,
87   CURRENCY_CODE                    ,
88   LAST_UPDATE_DATE                 ,
89   LAST_UPDATED_BY                  ,
90   LAST_UPDATE_LOGIN                ,
91   CREATED_BY                       ,
92   CREATION_DATE
93   )
94   VALUES
95   (
96   P_DEFAULT_ASSIGNMENT_ID           ,
97   P_DEFAULT_RULE_ID                 ,
98   P_ASSIGNMENT_TYPE                 ,
99   P_ATTRIBUTE_ID                    ,
100   P_ATTRIBUTE_VALUE_ID              ,
101   P_ATTRIBUTE_VALUE                 ,
102   P_PAY_ELEMENT_ID                  ,
103   P_PAY_ELEMENT_OPTION_ID           ,
104   P_PAY_BASIS                       ,
105   P_ELEMENT_VALUE_TYPE              ,
106   P_ELEMENT_VALUE                   ,
107   P_CURRENCY_CODE                   ,
108   P_LAST_UPDATE_DATE                ,
109   P_LAST_UPDATED_BY                 ,
110   P_LAST_UPDATE_LOGIN               ,
111   P_CREATED_BY                      ,
112   P_CREATION_DATE
113   );
114 
115   open c1;
116   fetch c1 into P_ROW_ID;
117   if (c1%notfound) then
118     close c1;
119     raise no_data_found;
120   end if;
121   -- End of API body.
122 
123   -- Standard check of p_commit.
124 
125   if FND_API.to_Boolean (p_commit) then
126     commit work;
127   end if;
128 
129   -- Standard call to get message count and if count is 1, get message info.
130 
131   FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
132 			     p_data  => p_msg_data);
133 
134 EXCEPTION
135 
136    when FND_API.G_EXC_ERROR then
137 
138      rollback to INSERT_ROW_PVT;
139 
140      p_return_status := FND_API.G_RET_STS_ERROR;
141 
142      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
143 				p_data  => p_msg_data);
144 
145 
146    when FND_API.G_EXC_UNEXPECTED_ERROR then
147 
148      rollback to INSERT_ROW_PVT;
149 
150      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
151 
152      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
153 				p_data  => p_msg_data);
154 
155 
156    when OTHERS then
157 
158      rollback to INSERT_ROW_PVT;
159 
160      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
161 
162      if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
163 
164        FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
165 				l_api_name);
166      end if;
167 
168      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
169 				p_data  => p_msg_data);
170 
171 END INSERT_ROW;
172 
173 PROCEDURE UPDATE_ROW
174 ( p_api_version                 IN      NUMBER,
175   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
176   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
177   p_validation_level            IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
178   p_return_status               OUT  NOCOPY     VARCHAR2,
179   p_msg_count                   OUT  NOCOPY     NUMBER,
180   p_msg_data                    OUT  NOCOPY     VARCHAR2,
181   --
182   P_ROW_ID                           IN      VARCHAR2,
183   P_DEFAULT_ASSIGNMENT_ID            IN      NUMBER,
184   P_DEFAULT_RULE_ID                  in      NUMBER,
185   P_ASSIGNMENT_TYPE                  IN      VARCHAR2,
186   P_ATTRIBUTE_ID                     IN      NUMBER,
187   P_ATTRIBUTE_VALUE_ID               IN      NUMBER,
188   P_ATTRIBUTE_VALUE                  IN      VARCHAR2,
189   P_PAY_ELEMENT_ID                   IN      NUMBER,
190   P_PAY_ELEMENT_OPTION_ID            IN      NUMBER,
191   P_PAY_BASIS                        IN      VARCHAR2,
192   P_ELEMENT_VALUE_TYPE               IN      VARCHAR2,
193   P_ELEMENT_VALUE                    IN      NUMBER,
194   P_CURRENCY_CODE                    IN      VARCHAR2,
195   P_LAST_UPDATE_DATE                 in      DATE,
196   P_LAST_UPDATED_BY                  in      NUMBER,
197   P_LAST_UPDATE_LOGIN                in      NUMBER
198 ) IS
199 
200   l_api_name            CONSTANT VARCHAR2(30)   := 'UPDATE_ROW';
201   l_api_version         CONSTANT NUMBER         := 1.0;
202 
203 BEGIN
204 
205   -- Standard Start of API savepoint
206 
207   SAVEPOINT     UPDATE_ROW_PVT;
208 
209   -- Standard call to check for call compatibility.
210 
211   if not FND_API.Compatible_API_Call (l_api_version,
212 				      p_api_version,
213 				      l_api_name,
214 				      G_PKG_NAME)
215   then
216     raise FND_API.G_EXC_UNEXPECTED_ERROR;
217   end if;
218 
219   -- Initialize message list if p_init_msg_list is set to TRUE.
220 
221   if FND_API.to_Boolean (p_init_msg_list) then
222     FND_MSG_PUB.initialize;
223   end if;
224 
225   -- Initialize API return status to success
226 
227   p_return_status := FND_API.G_RET_STS_SUCCESS;
228 
229   -- API body
230   UPDATE psb_default_assignments SET
231   DEFAULT_ASSIGNMENT_ID           =  P_DEFAULT_ASSIGNMENT_ID,
232   DEFAULT_RULE_ID                 =  P_DEFAULT_RULE_ID,
233   ASSIGNMENT_TYPE                 =  P_ASSIGNMENT_TYPE,
234   ATTRIBUTE_ID                    =  P_ATTRIBUTE_ID,
235   ATTRIBUTE_VALUE_ID              =  P_ATTRIBUTE_VALUE_ID,
236   ATTRIBUTE_VALUE                 =  P_ATTRIBUTE_VALUE,
237   PAY_ELEMENT_ID                  =  P_PAY_ELEMENT_ID,
238   PAY_ELEMENT_OPTION_ID           =  P_PAY_ELEMENT_OPTION_ID,
239   PAY_BASIS                       =  P_PAY_BASIS,
240   ELEMENT_VALUE_TYPE              =  P_ELEMENT_VALUE_TYPE,
241   ELEMENT_VALUE                   =  P_ELEMENT_VALUE,
242   CURRENCY_CODE                   =  P_CURRENCY_CODE,
243   LAST_UPDATE_DATE                =  P_LAST_UPDATE_DATE,
244   LAST_UPDATED_BY                 =  P_LAST_UPDATED_BY,
245   LAST_UPDATE_LOGIN               =  P_LAST_UPDATE_LOGIN
246   where ROWID = P_ROW_ID;
247 
248   if (SQL%NOTFOUND) then
249     RAISE NO_DATA_FOUND;
250   end if;
251 
252   -- End of API body.
253 
254   -- Standard check of p_commit.
255 
256   if FND_API.to_Boolean (p_commit) then
257     commit work;
258   end if;
259 
260   -- Standard call to get message count and if count is 1, get message info.
261 
262   FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
263 			     p_data  => p_msg_data);
264 
265 EXCEPTION
266 
267    when FND_API.G_EXC_ERROR then
268 
269      rollback to UPDATE_ROW_PVT;
270 
271      p_return_status := FND_API.G_RET_STS_ERROR;
272 
273      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
274 				p_data  => p_msg_data);
275 
276 
277    when FND_API.G_EXC_UNEXPECTED_ERROR then
278 
279      rollback to UPDATE_ROW_PVT;
280 
281      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
282 
283      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
284 				p_data  => p_msg_data);
285 
286 
287    when OTHERS then
288 
289      rollback to UPDATE_ROW_PVT;
290 
291      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
292 
293      if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
294 
295        FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
296 				l_api_name);
297      end if;
298 
299      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
300 				p_data  => p_msg_data);
301 
302 END UPDATE_ROW;
303 
304 
305 PROCEDURE DELETE_ROW
306 ( p_api_version         IN      NUMBER,
307   p_init_msg_list       IN      VARCHAR2 := FND_API.G_FALSE,
308   p_commit              IN      VARCHAR2 := FND_API.G_FALSE,
309   p_validation_level    IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
310   p_return_status       OUT  NOCOPY     VARCHAR2,
311   p_msg_count           OUT  NOCOPY     NUMBER,
312   p_msg_data            OUT  NOCOPY     VARCHAR2,
313   --
314   P_ROW_ID              IN      VARCHAR2
315 ) IS
316 
317   l_api_name            CONSTANT VARCHAR2(30)   := 'DELETE_ROW';
318   l_api_version         CONSTANT NUMBER         := 1.0;
319 
320 BEGIN
321 
322   -- Standard Start of API savepoint
323 
324   SAVEPOINT     DELETE_ROW_PVT;
325 
326   -- Standard call to check for call compatibility.
327 
328   if not FND_API.Compatible_API_Call (l_api_version,
329 				      p_api_version,
330 				      l_api_name,
331 				      G_PKG_NAME)
332   then
333     raise FND_API.G_EXC_UNEXPECTED_ERROR;
334   end if;
335 
336   -- Initialize message list if p_init_msg_list is set to TRUE.
337 
338   if FND_API.to_Boolean (p_init_msg_list) then
339     FND_MSG_PUB.initialize;
340   end if;
341 
342 
343   --Delete the record in the table
344   DELETE FROM psb_default_assignments
345   where rowid = p_row_id;
346 
347 
348   if (SQL%NOTFOUND) then
349     RAISE NO_DATA_FOUND;
350   end if;
351 
352   -- Standard call to get message count and if count is 1, get message info.
353 
354   FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
355 			     p_data  => p_msg_data);
356 
357   -- Standard check of p_commit.
358 
359   if FND_API.to_Boolean (p_commit) then
360     commit work;
361   end if;
362 
363 
364 EXCEPTION
365 
366    when FND_API.G_EXC_ERROR then
367 
368      rollback to DELETE_ROW_PVT;
369 
370      p_return_status := FND_API.G_RET_STS_ERROR;
371 
372      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
373 				p_data  => p_msg_data);
374 
375 
376    when FND_API.G_EXC_UNEXPECTED_ERROR then
377 
378      rollback to DELETE_ROW_PVT;
379 
380      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
381 
382      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
383 				p_data  => p_msg_data);
384 
385 
386    when OTHERS then
387 
388      rollback to DELETE_ROW_PVT;
389 
390      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
391 
392      if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
393 
394        FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
395 				l_api_name);
396      end if;
397 
398      FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
399 				p_data  => p_msg_data);
400 END DELETE_ROW;
401 
402 PROCEDURE LOCK_ROW(
403   p_api_version                 IN      NUMBER,
404   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
405   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
406   p_validation_level            IN      NUMBER  := FND_API.G_VALID_LEVEL_FULL,
407   p_return_status               OUT  NOCOPY     VARCHAR2,
408   p_msg_count                   OUT  NOCOPY     NUMBER,
409   p_msg_data                    OUT  NOCOPY     VARCHAR2,
410   --
411   p_row_locked                  OUT  NOCOPY     VARCHAR2,
412   --
413   P_ROW_ID                           IN      VARCHAR2,
414   P_DEFAULT_ASSIGNMENT_ID            IN      NUMBER,
415   P_DEFAULT_RULE_ID                  in      NUMBER,
416   P_ASSIGNMENT_TYPE                  IN      VARCHAR2,
417   P_ATTRIBUTE_ID                     IN      NUMBER,
418   P_ATTRIBUTE_VALUE_ID               IN      NUMBER,
419   P_ATTRIBUTE_VALUE                  IN      VARCHAR2,
420   P_PAY_ELEMENT_ID                   IN      NUMBER,
421   P_PAY_ELEMENT_OPTION_ID            IN      NUMBER,
422   P_PAY_BASIS                        IN      VARCHAR2,
423   P_ELEMENT_VALUE_TYPE               IN      VARCHAR2,
424   P_ELEMENT_VALUE                    IN      NUMBER,
425   P_CURRENCY_CODE                    IN      VARCHAR2
426 ) IS
427 
428   l_api_name            CONSTANT VARCHAR2(30)   := 'LOCK_ROW';
429   l_api_version         CONSTANT NUMBER         := 1.0;
430   --
431   counter number;
432 
433   CURSOR C IS SELECT * FROM psb_default_assignments
434   WHERE rowid = p_row_id
435   FOR UPDATE of default_assignment_id NOWAIT;
436   Recinfo C%ROWTYPE;
437 
438   BEGIN
439   --
440   SAVEPOINT Lock_Row_Pvt ;
441   --
442   IF NOT FND_API.Compatible_API_Call ( l_api_version,
443 				       p_api_version,
444 				       l_api_name,
445 				       G_PKG_NAME )
446   THEN
447     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
448   END IF;
449   --
450 
454   --
451   IF FND_API.to_Boolean ( p_init_msg_list ) THEN
452     FND_MSG_PUB.initialize ;
453   END IF;
455   p_return_status := FND_API.G_RET_STS_SUCCESS ;
456   p_row_locked    := FND_API.G_TRUE ;
457   --
458   OPEN C;
459   --
460   FETCH C INTO Recinfo;
461   IF (C%NOTFOUND) then
462     CLOSE C;
463     FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
464     FND_MSG_PUB.Add;
465     RAISE FND_API.G_EXC_ERROR ;
466   END IF;
467 
468   IF
469   (
470 	 (Recinfo.default_assignment_id = p_default_assignment_id)
471 	 AND (Recinfo.default_rule_id = p_default_rule_id)
472 	 AND (Recinfo.assignment_type = p_assignment_type)
473 
474 	 AND ((Recinfo.attribute_id = p_attribute_id)
475 	      OR((Recinfo.attribute_id IS NULL)
476 		 AND(p_attribute_id IS NULL)))
477 	 AND ((Recinfo.attribute_value_id = p_attribute_value_id)
478 	      OR((Recinfo.attribute_value_id IS NULL)
479 		 AND(p_attribute_value_id IS NULL)))
480 	 AND ((Recinfo.attribute_value = p_attribute_value)
481 	      OR((Recinfo.attribute_value IS NULL)
482 		 AND(p_attribute_value IS NULL)))
483 	 AND ((Recinfo.pay_element_id = p_pay_element_id)
484 	      OR((Recinfo.pay_element_id IS NULL)
485 		 AND(p_pay_element_id IS NULL)))
486 	 AND ((Recinfo.pay_element_option_id = p_pay_element_option_id)
487 	      OR((Recinfo.pay_element_option_id IS NULL)
488 		 AND(p_pay_element_option_id IS NULL)))
489 	 AND ((Recinfo.pay_basis = p_pay_basis)
490 	      OR((Recinfo.pay_basis IS NULL)
491 		 AND(p_pay_basis IS NULL)))
492 	 AND ((Recinfo.element_value_type = p_element_value_type)
493 	      OR((Recinfo.element_value_type IS NULL)
494 		 AND(p_element_value_type IS NULL)))
495 	 AND ((Recinfo.element_value = p_element_value)
496 	      OR((Recinfo.element_value IS NULL)
497 		 AND(p_element_value IS NULL)))
498 	 AND ((Recinfo.currency_code = p_currency_code)
499 	      OR((Recinfo.currency_code IS NULL)
500 		 AND(p_currency_code IS NULL)))
501 
502   )
503 
504   THEN
505     Null;
506   ELSE
507     FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
508     FND_MSG_PUB.Add;
509     RAISE FND_API.G_EXC_ERROR ;
510   END IF;
511 
512   --
513   IF FND_API.To_Boolean ( p_commit ) THEN
514     COMMIT WORK;
515   END iF;
516   --
517   FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
518 			      p_data  => p_msg_data );
519   --
520 EXCEPTION
521   --
522   WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
523     --
524     ROLLBACK TO Lock_Row_Pvt ;
525     p_row_locked := FND_API.G_FALSE;
526     p_return_status := FND_API.G_RET_STS_ERROR;
527     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
528 				p_data  => p_msg_data );
529   --
530   WHEN FND_API.G_EXC_ERROR THEN
531     --
532     ROLLBACK TO Lock_Row_Pvt ;
533     p_return_status := FND_API.G_RET_STS_ERROR;
534     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
535 				p_data  => p_msg_data );
536   --
537   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
538     --
539     ROLLBACK TO Lock_Row_Pvt ;
540     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
541     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
542 				p_data  => p_msg_data );
543   --
544   WHEN OTHERS THEN
545     --
546     ROLLBACK TO Lock_Row_Pvt ;
547     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
548     --
549     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
550       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
551 				l_api_name);
552     END if;
553     --
554     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
555 				p_data  => p_msg_data );
556 END LOCK_ROW;
557 
558 PROCEDURE Check_Unique
559 (
560   p_api_version               IN       NUMBER,
561   p_init_msg_list             IN       VARCHAR2 := FND_API.G_FALSE,
562   p_commit                    IN       VARCHAR2 := FND_API.G_FALSE,
563   p_validation_level          IN       NUMBER   := FND_API.G_VALID_LEVEL_FULL,
564   p_return_status             OUT  NOCOPY      VARCHAR2,
565   p_msg_count                 OUT  NOCOPY      NUMBER,
566   p_msg_data                  OUT  NOCOPY      VARCHAR2,
567   --
568   p_Return_Value                     IN OUT  NOCOPY   VARCHAR2,
569   --
570   P_DEFAULT_RULE_ID                  IN      NUMBER,
571   P_DEFAULT_ASSIGNMENT_ID            IN      NUMBER,
572   P_ATTRIBUTE_ID                     IN      NUMBER,
573   P_PAY_ELEMENT_ID                   IN      NUMBER,
574   P_PAY_ELEMENT_OPTION_ID            IN      NUMBER
575 
576 )
577 IS
578   --
579   l_api_name            CONSTANT VARCHAR2(30)   := 'Check_Unique';
580   l_api_version         CONSTANT NUMBER         :=  1.0;
581   --
582   l_tmp VARCHAR2(1);
583 
584   CURSOR c IS
585     SELECT '1'
586     FROM psb_default_assignments
587     WHERE   ( attribute_id = p_attribute_id
588 	     OR pay_element_id = p_pay_element_id
589 	     OR (pay_element_option_id = p_pay_element_option_id
590 		 and pay_element_id = p_pay_element_id )
591 	     )
592     AND (default_rule_id = p_default_rule_id )
593     AND (default_assignment_id <> p_default_assignment_id);
594 
595 BEGIN
596   --
597   SAVEPOINT Check_Unique_Pvt ;
598   --
599   IF NOT FND_API.Compatible_API_Call ( l_api_version,
600 				       p_api_version,
601 				       l_api_name,
602 				       G_PKG_NAME )
603   THEN
604     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
605   END IF;
606   --
607 
608   IF FND_API.to_Boolean ( p_init_msg_list ) THEN
609     FND_MSG_PUB.initialize ;
610   END IF;
611   --
612   p_return_status := FND_API.G_RET_STS_SUCCESS ;
613   --
614 
615   -- Checking the Psb_set_relations table for references.
616   OPEN c;
617   FETCH c INTO l_tmp;
618   --
619   -- p_Return_Value tells whether references exist or not.
620   IF l_tmp IS NULL THEN
621     p_Return_Value := 'FALSE';
622   ELSE
623     p_Return_Value := 'TRUE';
624   END IF;
625 
626   CLOSE c;
627   --
628   IF FND_API.To_Boolean ( p_commit ) THEN
629     COMMIT WORK;
630   END iF;
631   --
632   FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
633 			      p_data  => p_msg_data );
634   --
635 EXCEPTION
636   --
637   WHEN FND_API.G_EXC_ERROR THEN
638     --
639     ROLLBACK TO Check_Unique_Pvt ;
640     p_return_status := FND_API.G_RET_STS_ERROR;
641     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
642 				p_data  => p_msg_data );
643   --
644   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
645     --
646     ROLLBACK TO Check_Unique_Pvt ;
647     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
648     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
649 				p_data  => p_msg_data );
650   --
651   WHEN OTHERS THEN
652     --
653     ROLLBACK TO Check_Unique_Pvt ;
654     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
655     --
656     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
657       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
658 				l_api_name);
659     END if;
660     --
661     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
662 				p_data  => p_msg_data );
663   --
664 END Check_Unique;
665 
666 END PSB_DEFAULT_ASSIGNMENTS_PVT;