DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_GENERIC_NTFY_PVT

Source


1 PACKAGE BODY ams_generic_ntfy_pvt as
2 /* $Header: amsvgntb.pls 120.1 2005/06/15 02:03:32 appldev  $ */
3 
4 G_PKG_NAME     CONSTANT VARCHAR2(30) := 'ams_generic_ntfy_pvt';
5 G_ITEMTYPE     CONSTANT varchar2(30) := 'AMSGAPP';
6 
7 
8 PROCEDURE StartProcess
9            (p_activity_type          IN   VARCHAR2,
10             p_activity_id            IN   NUMBER,
11             p_item_key_suffix        IN   NUMBER,
12             p_workflowprocess        IN   VARCHAR2   DEFAULT NULL,
13             p_item_type              IN   VARCHAR2   DEFAULT NULL,
14             p_subject                IN   VARCHAR2,
15             p_send_by                IN   VARCHAR2   DEFAULT NULL,
16             p_sent_to                IN   VARCHAR2   DEFAULT NULL
17              )
18 IS
19   itemtype              VARCHAR2(30) := nvl(p_item_type,'AMSGAPP');
20   itemkey               VARCHAR2(30) := p_activity_type||to_char(p_activity_id)||':'||to_char(p_item_key_suffix);
21   itemuserkey           VARCHAR2(80) := p_activity_type||p_activity_id;
22 
23   l_requester_role         VARCHAR2(100) ;
24   l_msg_count              NUMBER;
25   l_msg_data               VARCHAR2(4000);
26   l_error_msg              VARCHAR2(4000);
27   x_resource_id            NUMBER;
28   l_index                  NUMBER;
29   l_save_threshold         NUMBER := wf_engine.threshold;
30   l_x_data                 VARCHAR2(4000);
31 
32 BEGIN
33   FND_MSG_PUB.initialize();
34 
35   AMS_Utility_PVT.debug_message('Start :Item Type : '||itemtype
36                          ||' Item key : '||itemkey);
37 
38     -- wf_engine.threshold := -1;
39   WF_ENGINE.CreateProcess (itemtype   =>   itemtype,
40                             itemkey    =>   itemkey ,
41                             process    =>   p_workflowprocess);
42 
43   WF_ENGINE.SetItemUserkey(itemtype   =>   itemtype,
44                             itemkey    =>   itemkey ,
45                             userkey    =>   itemuserkey);
46 
47 
48    /*****************************************************************
49       Initialize Workflow Item Attributes
50    *****************************************************************/
51   WF_ENGINE.SetItemAttrText(itemtype   =>  itemtype ,
52                              itemkey    =>  itemkey,
53                              aname      =>  'AMS_ACTIVITY_TYPE',
54                              avalue     =>   p_activity_type  );
55 
56    -- Activity ID  (primary Id of Activity Object)
57   WF_ENGINE.SetItemAttrNumber(itemtype  =>  itemtype ,
58                                itemkey   =>  itemkey,
59                                aname     =>  'AMS_ACTIVITY_ID',
60                                avalue    =>  p_activity_id  );
61 
62   WF_ENGINE.SetItemAttrText(itemtype   =>  itemtype ,
63                              itemkey    =>  itemkey,
64                              aname      =>  'AMS_SENT_BY',
65                              avalue     =>   p_send_by  );
66 
67   WF_ENGINE.SetItemAttrText(itemtype   =>  itemtype ,
68                              itemkey    =>  itemkey,
69                              aname      =>  'AMS_SEND_TO',
70                              avalue     =>   p_sent_to  );
71 
72   WF_ENGINE.SetItemAttrText(itemtype   =>  itemtype ,
73                              itemkey    =>  itemkey,
74                              aname      =>  'GEN_SUBJECT',
75                              avalue     =>   p_subject  );
76 
77 /*
78 l_x_data:=icx_sec.createRFURL( p_function_name          => 'AMS_EVENTS',
79                       p_function_id            =>1005958,
80                       p_application_id         =>531,
81                       p_responsibility_id      =>21706,
82                       p_security_group_id      =>NULL,
83                       p_session_id             =>NULL
84                       );
85 WF_ENGINE.SetItemAttrText(itemtype   =>  itemtype ,
86                              itemkey    =>  itemkey,
87                              aname      =>  'LAUNCH_URL',
88                              avalue     =>   l_x_data  );
89 */
90 
91 /*  WF_ENGINE.SetItemAttrText(itemtype    =>  itemtype,
92                             itemkey     =>  itemkey,
93                             aname       =>  'AMS_GEN_NTF_APPROVER',
94                             avalue      =>  'CHOANG'  );
95 */
96 
97   WF_ENGINE.SetItemAttrText(itemtype => itemtype,
98           itemkey  => itemkey,
99           aname    => 'AMS_DOCUMENT_ID',
100           avalue   => ItemType||':'||ItemKey);
101 
102 /*
103 wf_engine.SetItemAttrText(itemtype => itemtype,
104           itemkey  => itemkey,
105           aname    => 'AMS_GEN_DOCUMENT',
106           avalue   => 'PLSQL:AMS_GENERIC_NTFY_PVT.AMS_GENERIC_NOTIFICATION/'||ItemType||':'||ItemKey);
107 */
108   WF_ENGINE.SetItemOwner(itemtype    => itemtype,
109                           itemkey     => itemkey,
110                           owner       => p_send_by);
111 
112 
113    -- Start the Process
114   WF_ENGINE.StartProcess (itemtype       => itemtype,
115                             itemkey       => itemkey);
116 
117 
118     -- wf_engine.threshold := l_save_threshold ;
119 EXCEPTION
120   WHEN OTHERS THEN
121         -- wf_engine.threshold := l_save_threshold ;
122     FND_MSG_PUB.Count_And_Get (
123                p_encoded => FND_API.G_FALSE,
124                p_count   => l_msg_count,
125                p_data    => l_msg_data);
126 
127 
128     IF (l_msg_count > 0) THEN
129       FOR I in 1 .. l_msg_count LOOP
130         fnd_msg_pub.Get
131           (p_msg_index      => FND_MSG_PUB.G_NEXT,
132           p_encoded        => FND_API.G_FALSE,
133           p_data           => l_msg_data,
134           p_msg_index_out  =>       l_index);
135        --dbms_output.put_line('message :'||l_msg_data);
136       END LOOP;
137     END IF;
138     RAISE;
139 END StartProcess;
140 
141 
142 --------------------------------------------------------------------------------
143 --
144 -- Procedure
145 --   Ntf_Approval(document_id      in  varchar2,
146 --                display_type     in  varchar2,
147 --                document         in out varchar2,
148 --                document_type    in out varchar2    )
149 ---------------------------------------------------------------------------------
150 PROCEDURE Ams_Generic_Notification(document_id    in  varchar2,
151                                    display_type   in  varchar2,
152                                    document       in OUT NOCOPY  varchar2,
153                                    document_type  in OUT NOCOPY varchar2)
154 IS
155 l_pkg_name  varchar2(80);
156 l_proc_name varchar2(80);
157 l_return_stat       varchar2(1);
158 l_activity_type    varchar2(80);
159 l_approval_type varchar2(80);
160 l_msg_data              VARCHAR2(4000);
161 l_msg_count          number;
162 l_error_msg             VARCHAR2(4000);
163 l_index                  NUMBER;
164 dml_str  varchar2(2000);
165 ItemType varchar2(80);
166 ItemKey varchar2(80);
167 BEGIN
168 
169   ItemType := nvl(substr(document_id, 1,instr(document_id,':')-1),'AMSGAPP');
170   ItemKey  := substr(document_id, instr(document_id,':')+1);
171 
172 
173   l_activity_type      := wf_engine.GetItemAttrText(
174                                  itemtype => itemtype,
175                                  itemkey  => itemkey,
176                                  aname    => 'AMS_ACTIVITY_TYPE' );
177   IF l_activity_type is NULL THEN
178     RAISE FND_API.G_EXC_ERROR;
179     FND_MESSAGE.Set_Name('AMS','AMS_APPR_NO_ACTIVITY_TYPE');
180     FND_MSG_PUB.Add;
181   END IF;
182   ams_gen_approval_pvt.Get_Api_Name('WORKFLOW', l_activity_type, 'GEN_NOTIFY',l_approval_type, l_pkg_name, l_proc_name,l_return_stat);
183   IF (l_return_stat = 'S') THEN
184     dml_str := 'BEGIN ' ||  l_pkg_name||'.'||l_proc_name||'(:document_id,:display_type,:document,:document_type); END;';
185     EXECUTE IMMEDIATE dml_str USING IN document_id,IN display_type,IN OUT document,IN OUT document_type;
186   ELSE
187     RAISE FND_API.G_EXC_ERROR;
188   END IF;
189 /*
190 if (display_type = 'text/plain') then
191  document := document|| 'Requisition approval requested for:';
192  document := document|| chr(10)|| '        Number: '||ItemKey;
193  document_type := 'text/plain';
194   return;
195   end if;
196 
197   if (display_type = 'text/html') then
198  document := document|| 'Requisition approval requested for:';
199  document := document|| chr(10)|| '        Number: '||ItemKey;
200  document_type := 'text/html';
201   return;
202   end if;
203 */
204 EXCEPTION
205   WHEN OTHERS THEN
206         -- wf_engine.threshold := l_save_threshold ;
207     FND_MSG_PUB.Count_And_Get (
208                p_encoded => FND_API.G_FALSE,
209                p_count   => l_msg_count,
210                p_data    => l_msg_data);
211 
212 
213     IF(l_msg_count > 0) THEN
214       FOR I in 1 .. l_msg_count LOOP
215         fnd_msg_pub.Get
216           (p_msg_index      => FND_MSG_PUB.G_NEXT,
217           p_encoded        => FND_API.G_FALSE,
218           p_data           => l_msg_data,
219           p_msg_index_out  =>       l_index);
220       -- dbms_output.put_line('message :'||l_msg_data);
221       END LOOP;
222     END IF;
223     RAISE;
224 
225 END Ams_Generic_Notification;
226 
227 -------------------------------------------------------------------------------
228 --
229 -- Procedure
230 --   Updat_staus(itemtype        in  varchar2,
231 --                itemkey         in  varchar2,
232 --                actid           in  number,
233 --                funcmode        in  varchar2,
234 --                resultout       out varchar2    )
235 ---------------------------------------------------------------------------------
236 PROCEDURE Update_Gen_Status(itemtype IN varchar2,
237                         itemkey  IN varchar2,
238                         actid           in  number,
239                         funcmode        in  varchar2,
240                         resultout       OUT NOCOPY varchar2    )
241 IS
242 l_stat      varchar2(80);
243 
244 l_msg_count              NUMBER;
245 l_msg_data               VARCHAR2(4000);
246 l_error_msg              VARCHAR2(4000);
247 l_index                  NUMBER;
248 
249 BEGIN
250   l_stat      := wf_engine.GetActivityAttrText(
251                                  itemtype => itemtype,
252                                  itemkey  => itemkey,
253                                  actid  => actid,
254                                  aname    => 'UPDATE_STATUS' );
255   IF(l_stat is NULL) THEN
256     l_stat:='Value is NULL';
257   END IF;
258 
259   WF_ENGINE.SetItemAttrText(itemtype   =>  itemtype ,
260                              itemkey    =>  itemkey,
261                              aname      =>  'UPDATE_GEN_STATUS',
262                              avalue     =>   l_stat  );
263 
264 EXCEPTION
265   WHEN OTHERS THEN
266         -- wf_engine.threshold := l_save_threshold ;
267     FND_MSG_PUB.Count_And_Get (
268                p_encoded => FND_API.G_FALSE,
269                p_count   => l_msg_count,
270                p_data    => l_msg_data);
271 
272   IF (l_msg_count > 0) THEN
273     FOR I in 1 .. l_msg_count LOOP
274       fnd_msg_pub.Get
275       (p_msg_index      => FND_MSG_PUB.G_NEXT,
276        p_encoded        => FND_API.G_FALSE,
277        p_data           => l_msg_data,
278        p_msg_index_out  =>       l_index);
279       -- dbms_output.put_line('message :'||l_msg_data);
280     END LOOP;
281   END IF;
282   RAISE;
283 
284 END Update_Gen_Status;
285 
286 END ams_generic_ntfy_pvt;