DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_API_PUB

Source


1 PACKAGE BODY GMD_API_PUB AS
2 --$Header: GMDPAPIB.pls 115.4 2004/08/18 16:33:37 pupakare ship $ */
3 
4 -- Start of comments
5 --+==========================================================================+
6 --|                   Copyright (c) 1998 Oracle Corporation                  |
7 --|                          Redwood Shores, CA, USA                         |
8 --|                            All rights reserved.                          |
9 --+==========================================================================+
10 --| File Name          : GMDPAPIB.pls                                        |
11 --| Package Name       : GMD_API_PUB                                         |
12 --| Type               : Group                                               |
13 --|                                                                          |
14 --| Notes                                                                    |
15 --|    This package contains public layer APIs for all other APIs for GMD    |
16 --|                                                                          |
17 --| HISTORY                                                                  |
18 --|    Chetan Nagar	08-Aug-2002	Created.                             |
19 --|                                                                          |
20 --+==========================================================================+
21 -- End of comments
22 
23 -- Global variables
24 G_PKG_NAME      CONSTANT VARCHAR2(30) := 'GMD_API_PUB';
25 
26 
27 --Start of comments
28 --+========================================================================+
29 --| API Name    : log_message                                              |
30 --| TYPE        : Group                                                    |
31 --| Notes       : This procedure receives as input up to Six token-value   |
32 --|               combination alongwith the message code. It then sets     |
33 --|               all the tokens with the values supplied and puts the     |
34 --|               message on the message stack.                            |
35 --|                                                                        |
36 --| HISTORY                                                                |
37 --|    Chetan Nagar	08-Aug-2002	Created.                           |
38 --|                                                                        |
39 --+========================================================================+
40 -- End of comments
41 
42 PROCEDURE log_message (
43    p_message_code   IN   VARCHAR2
44   ,p_token1_name    IN   VARCHAR2 := NULL
45   ,p_token1_value   IN   VARCHAR2 := NULL
46   ,p_token2_name    IN   VARCHAR2 := NULL
47   ,p_token2_value   IN   VARCHAR2 := NULL
48   ,p_token3_name    IN   VARCHAR2 := NULL
49   ,p_token3_value   IN   VARCHAR2 := NULL
50   ,p_token4_name    IN   VARCHAR2 := NULL
51   ,p_token4_value   IN   VARCHAR2 := NULL
52   ,p_token5_name    IN   VARCHAR2 := NULL
53   ,p_token5_value   IN   VARCHAR2 := NULL
54   ,p_token6_name    IN   VARCHAR2 := NULL
55   ,p_token6_value   IN   VARCHAR2 := NULL) IS
56 BEGIN
57    fnd_message.set_name ('GMD', p_message_code);
58 
59    IF p_token1_name IS NOT NULL THEN
60       fnd_message.set_token (p_token1_name, p_token1_value);
61 
62       IF p_token2_name IS NOT NULL THEN
63          fnd_message.set_token (p_token2_name, p_token2_value);
64 
65          IF p_token3_name IS NOT NULL THEN
66             fnd_message.set_token (p_token3_name, p_token3_value);
67 
68             IF p_token4_name IS NOT NULL THEN
69                fnd_message.set_token (p_token4_name, p_token4_value);
70 
71                IF p_token5_name IS NOT NULL THEN
72                   fnd_message.set_token (p_token5_name, p_token5_value);
73 
74                   IF p_token6_name IS NOT NULL THEN
75                      fnd_message.set_token (p_token6_name, p_token6_value);
76                   END IF;
77                END IF;
78             END IF;
79          END IF;
80       END IF;
81    END IF;
82 
83    fnd_msg_pub.ADD;
84 
85 EXCEPTION
86    WHEN OTHERS THEN
87       RAISE;
88 END log_message;
89 
90 PROCEDURE raise(
91 P_EVENT_NAME VARCHAR2,
92 P_EVENT_KEY  VARCHAR2
93 )
94 IS
95 BEGIN
96   WF_EVENT.RAISE(P_EVENT_NAME => P_EVENT_NAME,
97 		 P_EVENT_KEY  => P_EVENT_KEY);
98 END;
99 
100 
101 PROCEDURE RAISE2(
102 P_event_name VARCHAR2,
103 P_event_key VARCHAR2,
104 P_Parameter_name1 VARCHAR2,
105 P_Parameter_value1 VARCHAR2
106 )
107 IS
108 BEGIN
109   WF_EVENT.RAISE2(P_event_name=>P_event_name,
110                   P_event_key=>P_event_key,
111                   P_Parameter_name1=>P_Parameter_name1,
112                   P_Parameter_value1=>P_Parameter_value1);
113 END;
114 
115 
116 --Start of comments
117 --+========================================================================+
118 --| API Name    : SET_USER_CONTEXT
119 --| TYPE        : UTIL                                                     |
120 --| Notes       : When calling Public API's using SQLPLUS the FND_GLOBAL   |
121 --|               .user_id is default to -1. This API will set the user_id |
122 --|               to the value specified. It will also set the resp, appl  |
123 --|               values based on the Quality Manager Responsbility.       |
124 --|               It assumes that this responsibility will always exist.   |
125 --|               It also assumes that the USER_ID is valid.
126 --|                                                                        |
127 --| HISTORY                                                                |
128 --|    Hverddin  02-APR-03  CREATED.
129 --|                                                                        |
130 --+========================================================================+
131 
132 PROCEDURE SET_USER_CONTEXT(
133 p_user_id          IN NUMBER,
134 x_return_status    OUT NOCOPY VARCHAR2
135 )
136 IS
137 
138 l_return_status       VARCHAR2(1);
139 l_application_id      NUMBER;
140 l_responsibility_id   NUMBER;
141 l_responsibility_name VARCHAR2(255);
142 
143 
144 
145 CURSOR c_get_appl_resp
146 IS
147 SELECT f.application_id, f.responsibility_id, f.responsibility_name
148 FROM   fnd_responsibility_vl f, fnd_application a
149 WHERE  f.application_id = a.application_id
150 AND    a.application_short_name = 'GMD'
151 AND    SYSDATE between f.start_date and NVL(f.end_date,SYSDATE)
152 AND    f.RESPONSIBILITY_KEY =  'GMD_QUALITY_MANAGER' -- Bug 3837330
153 ORDER  BY f.responsibility_id;
154 
155 
156 BEGIN
157 
158   --  Initialize API return Parameters
159 
160   l_return_status := FND_API.G_RET_STS_SUCCESS;
161 
162   -- Compare the Current Value from FND_GLOBAL, with the User_id
163   -- parameter if they are the same , We need to do Nothing.
164 
165 
166   IF FND_GLOBAL.USER_ID <> p_user_id THEN
167 
168      -- Get the values for the application id and responsibility
169      -- For Quality Manager Responsibility.
170      -- Could Select More than one Line With Matching Keys
171 
172      OPEN c_get_appl_resp;
173        FETCH c_get_appl_resp
174        INTO l_application_id, l_responsibility_id,l_responsibility_name;
175        IF c_get_appl_resp%NOTFOUND THEN
176          CLOSE c_get_appl_resp;
177          GMD_API_PUB.Log_Message('GMD_NO_VALID_RESP');
178          RAISE FND_API.G_EXC_ERROR;
179        END IF;
180      CLOSE c_get_appl_resp;
181 
182      -- Now set the appl, resp and user context.
183 
184      FND_GLOBAL.APPS_INITIALIZE
185      ( USER_ID      => p_user_id,
186        RESP_ID      => l_responsibility_id,
187        RESP_APPL_ID => l_application_id);
188 
189      -- Additional Check, if user_id is invalid, the above routine
190      -- will set the FND_GLOBAL.USER_NAME = NULL.
191 
192      IF (FND_GLOBAL.USER_NAME IS NULL) THEN
193 
194          GMD_API_PUB.Log_Message('GME_API_INVALID_USER_NAME');
195          RAISE FND_API.G_EXC_ERROR;
196      END IF;
197 
198   END IF;
199 
200   x_return_status := l_return_status;
201 
202 EXCEPTION
203   WHEN FND_API.G_EXC_ERROR THEN
204       x_return_status := FND_API.G_RET_STS_ERROR;
205 
206   WHEN OTHERS THEN
207     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
208 
209 END SET_USER_CONTEXT;
210 
211 END GMD_API_PUB;