DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_KB_SOLN_IN_PROGRESS_PKG

Source


1 PACKAGE BODY CS_KB_SOLN_IN_PROGRESS_PKG AS
2 /* $Header: cskbsipb.pls 115.2 2003/11/14 00:53:09 mkettle noship $ */
3 
4 --ERRBUF = err messages
5 
6 --RETCODE = 0 success, 1 = warning, 2=error
7 
8 
9 PROCEDURE CHECK_SOLN_IN_PROGRESS (
10   ERRBUF  OUT NOCOPY VARCHAR2,
11   RETCODE OUT NOCOPY VARCHAR2 )
12 IS
13 
14  CURSOR GET_IN_PROGRESS_SOLUTIONS IS
15   SELECT Soln.Set_id, Soln.Set_Number, Soln.Locked_By, Soln.FLow_Details_Id, Soln.Name,
16          FlowDetail.Group_id
17   FROM CS_KB_SETS_VL Soln,
18        CS_KB_WF_FLOW_DETAILS FlowDetail
19   WHERE Soln.STATUS IN ('SAV','NOT','REJ')
20   AND   Soln.LATEST_VERSION_FLAG = 'Y'
21   AND Soln.Flow_Details_id = FlowDetail.Flow_Details_Id (+)
22   AND   Soln.Locked_BY > -1;
23 
24  l_complete_soln VARCHAR2(10);
25  l_user  NUMBER := FND_GLOBAL.User_Id;
26  l_login NUMBER := FND_GLOBAL.Login_Id;
27 
28 BEGIN
29 
30   --FND_FILE.PUT_LINE(FND_FILE.LOG, 'Starting Concurrent Program to unlock Solutions at: '||sysdate);
31 
32 /*
33   FND_FILE.PUT_LINE(FND_FILE.LOG,
34 'Solutions will be unlocked if the locking User nolonger has access
35 to the complete Solution. Access to the complete solution invloves
36 the User having the necessary Visibility to the Solution and all its
37 associated statements. The Solution must also reside in a Category
38 that has been associated to the users Category Group. ');
39   FND_FILE.PUT_LINE(FND_FILE.LOG,' ');
40 */
41 
42   FOR Solutions IN GET_IN_PROGRESS_SOLUTIONS LOOP
43 
44     IF ( CS_KB_SECURITY_PVT.IS_COMPLETE_SOLUTION_VISIBLE( Solutions.Locked_By,
45                                                           Solutions.Set_id) = 'FALSE') THEN
46       -- If current Locking User Does Not have Complete access to the Solution,
47       -- then UnLock the Solution
48 
49       UPDATE CS_KB_SETS_B
50       SET Locked_By = -1,
51           Lock_Date = NULL,
52           Last_Update_Date = sysdate,
53           Last_Updated_By = l_user,
54           Last_Update_Login = l_login
55       WHERE Set_Id = Solutions.Set_id;
56 
57       IF Solutions.FLow_Details_Id IS NOT NULL THEN
58         -- For Solutions that are currently in a Flow we will create
59         -- a new WF process to re-notify the Resource Group that the
60         -- Solution is back in the queue and needs reassigning
61 
62         BEGIN
63          CS_KB_WF_PKG.Create_Wf_Process( p_set_id          => Solutions.Set_id,
64                                          p_set_number      => Solutions.Set_Number,
65                                          p_command         => 'NOT',
66                                          p_flow_details_id => Solutions.FLow_Details_Id,
67                                          p_group_id        => Solutions.Group_Id,
68                                          p_solution_title  => Solutions.Name );
69         EXCEPTION WHEN OTHERS THEN
70           FND_FILE.PUT_LINE(FND_FILE.LOG, fnd_message.GET_STRING('CS','CS_KB_NOT_RESEND_ERR')||
71                                           Solutions.Set_Number||' -'||substrb(sqlerrm,1,200));
72         END;
73 
74       END IF;
75 
76     FND_FILE.PUT_LINE(FND_FILE.LOG, Solutions.Set_Number||fnd_message.GET_STRING('CS','CS_KB_SOLN_UNLOCK'));
77 
78     END IF;
79 
80   END LOOP;
81 
82   --FND_FILE.PUT_LINE(FND_FILE.LOG, 'Finished Concurrent Program to unlock Solutions at: '||sysdate);
83 
84   COMMIT;
85 
86   --ERRBUF := 'Success';
87 
88   RETCODE := 0;
89 
90 
91 EXCEPTION
92   WHEN OTHERS THEN
93 
94     RETCODE := 2;
95 
96     ERRBUF := fnd_message.GET_STRING('CS','CS_KB_C_UNEXP_ERR')||' '||SQLERRM;
97     FND_FILE.PUT_LINE(FND_FILE.LOG, ERRBUF);
98 
99 END CHECK_SOLN_IN_PROGRESS;
100 
101 END CS_KB_SOLN_IN_PROGRESS_PKG;