[Home] [Help]
PACKAGE BODY: APPS.PSB_DISTRIBUTE_WORKSHEET_PVT
Source
1 PACKAGE BODY PSB_Distribute_Worksheet_PVT AS
2 /* $Header: PSBWSDPB.pls 120.3 2005/08/25 10:52:34 matthoma ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'PSB_Distribute_Worksheet_PVT';
5
6
7 /*--------------------------- Global variables -----------------------------*/
8
9 -- WHO columns variables
10 g_current_date DATE := sysdate ;
11 g_current_user_id NUMBER := NVL( Fnd_Global.User_Id , 0) ;
12 g_current_login_id NUMBER := NVL( Fnd_Global.Login_Id , 0) ;
13
14 /*----------------------- End Global variables -----------------------------*/
15
16
17
18 /*===========================================================================+
19 | PROCEDURE Start_Process |
20 +===========================================================================*/
21 --
22 -- The API creates an instance of the item type 'PSBWS' and start the workflow
23 -- process 'Distribute Worksheet'.
24 --
25 PROCEDURE Start_Process
26 (
27 p_api_version IN NUMBER ,
28 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
29 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
30 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL ,
31 p_return_status OUT NOCOPY VARCHAR2 ,
32 p_msg_count OUT NOCOPY NUMBER ,
33 p_msg_data OUT NOCOPY VARCHAR2 ,
34 --
35 p_item_key IN NUMBER ,
36 p_distribution_instructions IN VARCHAR2 ,
37 p_recipient_name IN VARCHAR2
38 )
39 IS
40 --
41 l_api_name CONSTANT VARCHAR2(30) := 'Start_Process' ;
42 l_api_version CONSTANT NUMBER := 1.0 ;
43 --
44 l_return_status VARCHAR2(1) ;
45 l_msg_count NUMBER ;
46 l_msg_data VARCHAR2(2000) ;
47 --
48 l_ItemType VARCHAR2(100) := 'PSBWS' ;
49 l_ItemKey VARCHAR2(100) := p_item_key ;
50 --
51 l_worksheet_id psb_worksheets.worksheet_id%TYPE ;
52 l_user_name VARCHAR2(100);
53 BEGIN
54 --
55 SAVEPOINT Start_Process_Pvt ;
56 --
57 IF NOT FND_API.Compatible_API_Call ( l_api_version,
58 p_api_version,
59 l_api_name,
60 G_PKG_NAME )
61 THEN
62 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
63 END IF;
64 --
65
66 /* Bug 2576222 Start */
67 l_user_name := fnd_global.user_name;
68 /* Bug 2576222 End */
69
70 IF FND_API.to_Boolean ( p_init_msg_list ) THEN
71 FND_MSG_PUB.initialize ;
72 END IF;
73 --
74 p_return_status := FND_API.G_RET_STS_SUCCESS ;
75 --
76
77 WF_Engine.CreateProcess
78 (
79 ItemType => l_ItemType,
80 ItemKey => l_ItemKey,
81 Process => 'DISTRIBUTE_WORKSHEET'
82 );
83
84 --
85 -- Get p_item_key related information.
86 --
87 SELECT worksheet_id INTO l_worksheet_id
88 FROM psb_workflow_processes
89 WHERE item_key = p_item_key ;
90
91 --
92 -- Set worksheet_id as the Item User Key for the process.
93 --
94 WF_Engine.SetItemUserKey
95 (
96 ItemType => l_ItemType ,
97 ItemKey => l_ItemKey ,
98 UserKey => l_worksheet_id
99 );
100
101 --
102 WF_Engine.SetItemAttrNumber
103 (
104 ItemType => l_ItemType,
105 ItemKey => l_itemkey,
106 aname => 'WORKSHEET_ID',
107 avalue => l_worksheet_id
108 );
109
110 --
111 WF_Engine.SetItemAttrText
112 (
113 ItemType => l_ItemType,
114 ItemKey => l_itemkey,
115 aname => 'DISTRIBUTION_INSTRUCTIONS',
116 avalue => p_distribution_instructions
117 );
118
119 --
120 WF_Engine.SetItemAttrText
121 (
122 ItemType => l_ItemType,
123 ItemKey => l_itemkey,
124 aname => 'RECIPIENT_NAME',
125 avalue => p_recipient_name
126 );
127
128
129
130 /* Bug 2576222 Start */
131 wf_engine.SetItemAttrtext( ItemType => l_ItemType,
132 ItemKey => l_itemkey,
133 aname => 'FROM_ROLE',
134 avalue => l_user_name );
135 /* Bug 2576222 End */
136
137 --
138 WF_Engine.StartProcess
139 (
140 ItemType => l_ItemType,
141 ItemKey => l_ItemKey
142 );
143
144 --
145 IF FND_API.To_Boolean ( p_commit ) THEN
146 COMMIT WORK;
147 END IF;
148 --
149 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
150 p_data => p_msg_data );
151 --
152 EXCEPTION
153 --
154 WHEN FND_API.G_EXC_ERROR THEN
155 --
156 ROLLBACK TO Start_Process_Pvt ;
157 p_return_status := FND_API.G_RET_STS_ERROR;
158 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
159 p_data => p_msg_data );
160 --
161 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
162 --
163 ROLLBACK TO Start_Process_Pvt ;
164 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
165 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
166 p_data => p_msg_data );
167 --
168 WHEN OTHERS THEN
169 --
170 ROLLBACK TO Start_Process_Pvt ;
171 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
172 --
173 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
174 FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
175 l_api_name);
176 END if;
177 --
178 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
179 p_data => p_msg_data );
180 --
181 END Start_Process ;
182 /*---------------------------------------------------------------------------*/
183
184
185
186 /*===========================================================================+
187 | PROCEDURE Populate_Worksheet |
188 +===========================================================================*/
189 --
190 -- The API populates the item attribues of the item type 'PSBWS'.
191 --
192 PROCEDURE Populate_Worksheet
193 (
194 itemtype IN VARCHAR2,
195 itemkey IN VARCHAR2,
196 actid IN NUMBER,
197 funcmode IN VARCHAR2,
198 result OUT NOCOPY VARCHAR2
199 )
200 IS
201 --
202 l_worksheet_id psb_worksheets.worksheet_id%TYPE ;
203 l_worksheet_name psb_worksheets.name%TYPE ;
204 l_budget_group_name psb_budget_groups.name%TYPE ;
205 l_recipient_name VARCHAR2(2000);
206 --
207 BEGIN
208 --
209 IF ( funcmode = 'RUN' ) THEN
210 --
211 -- Get worksheet_id item_attribute.
212 --
213 l_worksheet_id := WF_Engine.GetItemAttrNumber
214 (
215 itemtype => itemtype,
216 itemkey => itemkey,
217 aname => 'WORKSHEET_ID'
218 );
219
220 --
221 -- Finding worksheet information.
222 --
223 SELECT name ,
224 budget_group_name
225 INTO
226 l_worksheet_name ,
227 l_budget_group_name
228 FROM psb_worksheets_v
229 WHERE worksheet_id = l_worksheet_id;
230
231 --
232 WF_Engine.SetItemAttrText
233 (
234 itemtype => itemtype,
235 itemkey => itemkey,
236 aname => 'WORKSHEET_NAME',
237 avalue => l_worksheet_name
238 );
239
240 --
241 WF_Engine.SetItemAttrText
242 (
243 itemtype => itemtype,
244 itemkey => itemkey,
245 aname => 'BUDGET_GROUP_NAME',
246 avalue => l_budget_group_name
247 );
248
249 result := 'COMPLETE' ;
250
251 END IF ;
252 --
253
254 IF ( funcmode = 'CANCEL' ) THEN
255 result := 'COMPLETE' ;
256 END IF;
257
258 --
259 -- In future implementations, appropriate code is to be inserted here.
260 --
261 IF ( funcmode NOT IN ( 'RUN', 'CANCEL' ) ) THEN
262 result := '' ;
263 END IF;
264
265 EXCEPTION
266 --
267 WHEN OTHERS THEN
268 wf_core.context('PSBWS', 'Populate_Worksheet',
269 itemtype, itemkey, to_char(actid), funcmode);
270 RAISE ;
271
272 END Populate_Worksheet ;
273 /*---------------------------------------------------------------------------*/
274
275
276 END PSB_Distribute_Worksheet_PVT ;