DBA Data[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 ;