DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_STREAMS_WF

Source


1 PACKAGE BODY Okl_Streams_Wf AS
2 /* $Header: OKLRPWFB.pls 120.2 2006/07/18 10:52:52 dkagrawa noship $ */
3 -- INFO
4 -- This procedure is invoked from Inbound Work Flow Process
5 -- END INFO
6 
7 PROCEDURE process(itemtype	  IN VARCHAR2,
8 	                      itemkey	  IN VARCHAR2,
9 	                      actid	  IN NUMBER,
10 	                      funcmode	  IN VARCHAR2,
11 	                      resultout  IN OUT NOCOPY VARCHAR2)
12 IS
13   l_transaction_number	VARCHAR2(240);
14   document_id		VARCHAR2(240);
15   parameter1		VARCHAR2(240);
16   parameter2		VARCHAR2(240);
17   parameter3		VARCHAR2(240);
18   parameter4		VARCHAR2(240);
19   parameter5		VARCHAR2(240);
20   parameter6		VARCHAR2(240);
21   parameter7		VARCHAR2(240);
22   parameter8		VARCHAR2(240);
23   parameter9		VARCHAR2(240);
24   parameter10		VARCHAR2(240);
25   l_error_msg		VARCHAR2(2000);
26   result		    VARCHAR2(30);
27   l_orp_code        VARCHAR2(10);
28 
29   l_api_version     NUMBER := 1;
30   l_init_msg_list   VARCHAR2(1) :=  OKC_API.G_FALSE;
31   l_return_status   VARCHAR2(1);
32   l_msg_count       NUMBER;
33   l_msg_data        VARCHAR2(4000);
34   l_msg_text        VARCHAR2(4000);
35   l_attr_name       VARCHAR2(15) := 'ERROR_MSG';
36   G_SIS_CODE        VARCHAR2(50) := 'PROCESSING_FAILED';
37   G_SRT_CODE        VARCHAR2(50) := 'PROCESSING_FAILED';
38   l_error_message_tbl  LOG_MSG_TBL_TYPE;
39   l_error_message_line VARCHAR2(4000) := NULL;
40 --  l_new_line        VARCHAR2(4000) := FND_GLOBAL.NEWLINE;
41 
42 -- smahapat added khr_id to cursor for bug 3145238
43   CURSOR strm_interfaces_data_csr (p_trx_number NUMBER) IS
44   SELECT
45     ORP_CODE, KHR_ID
46   FROM okl_stream_interfaces
47   WHERE okl_stream_interfaces.transaction_number = p_trx_number;
48 
49 -- smahapat added for bug 3145238
50 -- cursor to provide information for setting context
51   CURSOR l_hdr_csr(chrId  NUMBER)
52   IS
53   SELECT chr.orig_system_source_code,
54          chr.start_date,
55          chr.end_date,
56          chr.template_yn,
57          chr.authoring_org_id,
58          chr.inv_organization_id,
59          khr.deal_type,
60          pdt.id  pid,
61          NVL(pdt.reporting_pdt_id, -1) report_pdt_id,
62          chr.currency_code currency_code,
63          khr.term_duration term
64   FROM okc_k_headers_v chr,
65        okl_k_headers khr,
66        okl_products_v pdt
67   WHERE khr.id = chr.id
68   AND chr.id = chrId
69   AND khr.pdt_id = pdt.id(+);
70 
71   l_hdr_rec l_hdr_csr%ROWTYPE;
72   l_khr_id          NUMBER;
73 -- end code for setting context
74 
75 BEGIN
76   -- Do nothing in cancel or timeout mode
77 
78   IF (funcmode <> wf_engine.eng_run) THEN
79     resultout := wf_engine.eng_null;
80     RETURN;
81   END IF;
82   --
83   -- We need to determine which parameters are required and which are optional
84   --
85   l_transaction_number  := Wf_Engine.GetActivityAttrText(itemtype, itemkey, actid, 'PARAMETER1');
86   IF (  l_transaction_number IS NULL ) THEN
87 	wf_core.token('OKL_TRANSACTION_NUMBER','NULL');
88 	wf_core.RAISE('WFSQL_ARGS');
89   END IF;
90 
91   --
92   -- params2..10 optional
93   --
94   parameter2  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER2');
95   parameter3  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER3');
96   parameter4  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER4');
97   parameter5  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER5');
98   parameter6  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER6');
99   parameter7  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER7');
100   parameter8  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER8');
101   parameter9  := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER9');
102   parameter10 := Wf_Engine.GetActivityAttrText(itemtype, itemkey,actid, 'PARAMETER10');
103 
104 	-- Invoke Process Stream Results API
105 	FOR strm_interfaces_data in strm_interfaces_data_csr(l_transaction_number)
106 	LOOP
107 	  l_orp_code := strm_interfaces_data.orp_code;
108 	  l_khr_id := strm_interfaces_data.khr_id;	   -- added by smahapat for setting context (bug 3145238)
109 	END LOOP;
110 
111 -- set context (bug 3145238)
112     OPEN l_hdr_csr( l_khr_id );
113     FETCH l_hdr_csr INTO l_hdr_rec;
114     CLOSE l_hdr_csr;
115     okl_context.set_okc_org_context(l_hdr_rec.authoring_org_id,l_hdr_rec.inv_organization_id);
116 -- end set context
117 
118 
119 	-- Booking
120 		IF (l_orp_code = 'AUTH')
121 		THEN
122 	      OKL_PROCESS_STREAMS_PVT.PROCESS_STREAM_RESULTS (l_api_version
123 					                                     ,l_init_msg_list
124 								 	                     ,l_transaction_number
125 								                         ,l_return_status
126 								                         ,l_msg_count
127 	 							                         ,l_msg_data);
128 	-- Restrucutres
129 	    ELSIF(l_orp_code = 'RSAM')
130 		THEN
131 	      OKL_PROCESS_STREAMS_PVT.PROCESS_REST_STRM_RESLTS(
132 		                                          p_api_version        => l_api_version
133 	                                             ,p_init_msg_list      => l_init_msg_list
134 		                                         ,p_transaction_number => l_transaction_number
135 	                                             ,x_return_status      => l_return_status
136 	                                             ,x_msg_count          => l_msg_count
137 	                                             ,x_msg_data           => l_msg_data);
138 	--  Quotes
139 	    ELSIF(l_orp_code = 'QUOT')
140 		THEN
141 	      OKL_PROCESS_STREAMS_PVT.PROCESS_QUOT_STRM_RESLTS(
142 		                                          p_api_version        => l_api_version
143 	                                             ,p_init_msg_list      => l_init_msg_list
144 		                                         ,p_transaction_number => l_transaction_number
145 	                                             ,x_return_status      => l_return_status
146 	                                             ,x_msg_count          => l_msg_count
147 	                                             ,x_msg_data           => l_msg_data);
148 	--  Renewals
149 	    ELSIF(l_orp_code = 'RENW')
150 		THEN
151 	      OKL_PROCESS_STREAMS_PVT.PROCESS_RENW_STRM_RESLTS(
152 		                                          p_api_version        => l_api_version
153 	                                             ,p_init_msg_list      => l_init_msg_list
154 		                                         ,p_transaction_number => l_transaction_number
155 	                                             ,x_return_status      => l_return_status
156 	                                             ,x_msg_count          => l_msg_count
157 	                                             ,x_msg_data           => l_msg_data);
158 	--  Variable Interest Rate Processing
159 	    ELSIF(l_orp_code = 'VIRP')
160 		THEN
161 	      OKL_PROCESS_STREAMS_PVT.PROCESS_VIRP_STRM_RESLTS(
162 		                                          p_api_version        => l_api_version
163 	                                             ,p_init_msg_list      => l_init_msg_list
164 		                                         ,p_transaction_number => l_transaction_number
165 	                                             ,x_return_status      => l_return_status
166 	                                             ,x_msg_count          => l_msg_count
167 	                                             ,x_msg_data           => l_msg_data);
168 
169 
170     END IF;
171 -- if error
172          IF(l_return_status <> G_RET_STS_SUCCESS)
173 		 THEN
174 
175 -- commented for using REPORT ERROR API
176 --            l_error_msg := 'Errors while processing results, please refer to log file ' || 'OKLSTXMLG_' || l_transaction_number || '.log' || ' for more details';
177             l_error_msg := ' ';
178  	   	    wf_engine.SetItemAttrText(itemtype,itemkey,l_attr_name, l_error_msg);
179 
180 			l_error_message_tbl(1) := 'Errors while processing Streams Results :- ';
181 
182             Okl_Streams_Util.LOG_MESSAGE(p_msgs_tbl => l_error_message_tbl,
183                                          p_translate => G_FALSE,
184                                          p_file_name => 'OKLSTXMLG_' || l_transaction_number || '.log' ,
185              			                 x_return_status => l_return_status );
186 
187 			Okl_Streams_Util.LOG_MESSAGE(p_msg_count => l_msg_count,
188                                          p_file_name => 'OKLSTXMLG_' || l_transaction_number || '.log',
189 			                             x_return_status => l_return_status
190                                          );
191 
192 	    	l_error_message_tbl(1) := 'End Errors while processing Streams Results';
193             Okl_Streams_Util.LOG_MESSAGE(p_msgs_tbl => l_error_message_tbl,
194                                          p_translate => G_FALSE,
195                                          p_file_name => 'OKLSTXMLG_' || l_transaction_number || '.log' ,
196              			                 x_return_status => l_return_status );
197 
198 
199             OKL_POPULATE_PRCENG_RESULT_PUB.UPDATE_STATUS(--p_api_version => l_api_version,
200 	                                                     --p_init_msg_list => l_init_msg_list,
201 	                                                     p_transaction_number => l_transaction_number,
202                                                          p_sis_code => G_SIS_CODE,
203 														 p_srt_code =>  G_SRT_CODE,
204 														 p_log_file_name => 'OKLSTXMLG_' || l_transaction_number || '.log',
205                                                          x_return_status => l_return_status
206 														 );
207 
208 
209 		    	resultout := wf_engine.eng_completed || ':' || 'F';
210          ELSE
211 		    	resultout := wf_engine.eng_completed || ':' || 'T';
212 		END IF;
213 
214 EXCEPTION
215   WHEN OTHERS THEN
216     Wf_Core.Context('OKL_PROCESS_STREAMS', 'process_streams', itemtype, itemkey, TO_CHAR(actid), funcmode);
217     RAISE;
218 
219 END process;
220 
221 PROCEDURE REPORT_ERROR(ITEMTYPE	  IN VARCHAR2,
222 	       ITEMKEY	  IN VARCHAR2,
223 	       ACTID	  IN NUMBER,
224 	       FUNCMODE	  IN VARCHAR2,
225 	       RESULTOUT  IN OUT NOCOPY VARCHAR2)
226 IS
227   l_transaction_number	VARCHAR2(40);
228   l_document_id		VARCHAR2(240);
229   l_msg_name		VARCHAR2(30);
230 
231   parameter1		VARCHAR2(240);
232   parameter2		VARCHAR2(240);
233   parameter3		VARCHAR2(240);
234   parameter4		VARCHAR2(240);
235   parameter5		VARCHAR2(240);
236   l_error_msg		VARCHAR2(2000);
237   result		    VARCHAR2(30);
238 
239   l_api_version     NUMBER := 1;
240   l_init_msg_list   VARCHAR2(1) :=  OKC_API.G_FALSE;
241   l_return_status   VARCHAR2(1);
242   l_msg_count       NUMBER;
243   l_msg_data        VARCHAR2(4000);
244   l_msg_text        VARCHAR2(1000);
245   l_attr_name       VARCHAR2(15) := 'OKL_ERROR_MSG';
246   l_new_line        VARCHAR2(10) := FND_GLOBAL.NEWLINE;
247 
248   l_file_name VARCHAR2(100);
249 
250 BEGIN
251   -- Do nothing in cancel or timeout mode
252   IF (funcmode <> wf_engine.eng_run) THEN
253     resultout := wf_engine.eng_null;
254     RETURN;
255   END IF;
256 
257   l_document_id  := Wf_Engine.GetActivityAttrText(itemtype, itemkey, actid, 'OKL_REQUEST_ID');
258   IF (  l_document_id IS NULL ) THEN
259 	wf_core.token('OKL_REQUEST_ID','NULL');
260 	wf_core.RAISE('WFSQL_ARGS');
261   END IF;
262 
263   l_msg_name  := Wf_Engine.GetActivityAttrText(itemtype, itemkey, actid, 'OKL_ERROR_MSG');
264   IF (  l_document_id IS NULL ) THEN
265 	wf_core.token('OKL_DOCUMENT_ID','NULL');
266 	wf_core.RAISE('WFSQL_ARGS');
267   END IF;
268 
269 
270   -- WHAT IS THIS????
271 
272   -- AKJAIN
273   -- MAY BE WE DO NOT NEED IT SO COMMENTED
274   --  wf_Item_Activity_Status.Result(itemtype, itemkey, actid, status, result);
275   -- AKJAIN
276 
277   l_file_name := G_FILENAME_PRE || l_document_id || G_FILENAME_EXT;
278 
279 			-- Call the Process Stream Results API
280     Okl_Streams_Util.LOG_MESSAGE(p_msg_name            => l_msg_name
281                              ,p_file_name           => l_file_name
282                              ,x_return_status       => l_return_status);
283    -- if error
284    IF(l_return_status <> G_RET_STS_SUCCESS)
285    THEN
286 
287      -- GET THE MESSAGES FROM FND_MESSAGES
288      FOR i IN 1..l_msg_count
289      LOOP
290          fnd_msg_pub.get(p_data => l_msg_text,
291                          p_msg_index_out => l_msg_count,
292                          p_encoded => G_FALSE,
293                          p_msg_index => fnd_msg_pub.g_next);
294 	 IF i = 1 THEN
295 	   l_error_msg := l_msg_text;
296 	 ELSE
297 	   l_error_msg := l_error_msg || l_new_line || l_msg_text;
298 	 END IF;
299       END LOOP;
300       wf_engine.SetItemAttrText(itemtype,itemkey,l_attr_name,l_error_msg);
301       resultout := wf_engine.eng_completed||':'|| 'F';
302    ELSE
303       resultout := wf_engine.eng_completed||':'|| 'T';
304    END IF;
305 
306 EXCEPTION
307   WHEN OTHERS THEN
308     Wf_Core.Context('report_error', 'report_error', itemtype, itemkey, TO_CHAR(actid), funcmode);
309     RAISE;
310 END REPORT_ERROR;
311 
312 
313 END Okl_Streams_Wf;