[Home] [Help]
PACKAGE BODY: APPS.OKC_CONDITION_EVAL_PUB
Source
1 package body okc_condition_eval_pub as
2 /* $Header: OKCPCEVB.pls 120.0 2005/05/25 22:40:58 appldev noship $ */
3 l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4
5 --
6
7 -- This procedure evaluates condition attached to a plan.
8
9 PROCEDURE evaluate_plan_condition(
10 p_api_version IN NUMBER,
11 p_init_msg_list IN VARCHAR2 ,
12 x_return_status OUT NOCOPY VARCHAR2,
13 x_msg_count OUT NOCOPY NUMBER,
14 x_msg_data OUT NOCOPY VARCHAR2,
15 p_cnh_id IN okc_condition_headers_b.id%TYPE,
16 p_msg_tab IN okc_aq_pvt.msg_tab_typ,
17 x_sync_outcome_tab OUT NOCOPY okc_condition_eval_pub.outcome_tab_type
18 )
19 IS
20
21 l_api_name CONSTANT VARCHAR2(30) := 'EVALUATE_CONDITION';
22 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
23 --
24 l_proc varchar2(72) := ' okc_condition_eval_pub.'||'evaluate_condition';
25 --
26
27 BEGIN
28
29 IF (l_debug = 'Y') THEN
30 okc_debug.Set_Indentation(l_proc);
31 okc_debug.Log('10: Entering ',2);
32 END IF;
33
34 -- Call start_activity to create savepoint, check compatibility
35 -- and initialize message list
36 l_return_status := OKC_API.START_ACTIVITY ( l_api_name
37 , p_init_msg_list
38 , '_PUB'
39 , x_return_status
40 );
41 -- Check if activity started successfully
42 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
43 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
44 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
45 RAISE OKC_API.G_EXCEPTION_ERROR;
46 END IF;
47
48 -- evaluate conditions, build outcomes for true conditions
49 OKC_CONDITION_EVAL_PVT.evaluate_plan_condition(
50 p_api_version,
51 p_init_msg_list,
52 x_return_status,
53 x_msg_count,
54 x_msg_data,
55 p_cnh_id,
56 p_msg_tab,
57 x_sync_outcome_tab
58 );
59
60 /*Add check return status*/
61 -- end activity
62 OKC_API.END_ACTIVITY ( x_msg_count
63 , x_msg_data );
64
65 IF (l_debug = 'Y') THEN
66 okc_debug.Log('1000: Leaving ',2);
67 okc_debug.Reset_Indentation;
68 END IF;
69
70 EXCEPTION
71
72 WHEN OKC_API.G_EXCEPTION_ERROR THEN
73 x_return_status := OKC_API.HANDLE_EXCEPTIONS
74 ( l_api_name,
75 G_PKG_NAME,
76 'OKC_API.G_RET_STS_ERROR',
77 x_msg_count,
78 x_msg_data,
79 '_PUB');
80 IF (l_debug = 'Y') THEN
81 okc_debug.Log('2000: Leaving ',2);
82 okc_debug.Reset_Indentation;
83 END IF;
84
85 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
86 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
87 ( l_api_name,
88 G_PKG_NAME,
89 'OKC_API.G_RET_STS_UNEXP_ERROR',
90 x_msg_count,
91 x_msg_data,
92 '_PUB');
93 IF (l_debug = 'Y') THEN
94 okc_debug.Log('3000: Leaving ',2);
95 okc_debug.Reset_Indentation;
96 END IF;
97
98 WHEN OTHERS THEN
99 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
100 ( l_api_name,
101 G_PKG_NAME,
102 'OTHERS',
103 x_msg_count,
104 x_msg_data,
105 '_PUB');
106 IF (l_debug = 'Y') THEN
107 okc_debug.Log('4000: Leaving ',2);
108 okc_debug.Reset_Indentation;
109 END IF;
110
111 END evaluate_plan_condition;
112
113
114 -- This procedure is overloaded to handle sync and async events.
115 -- For sync events a table of outcomes are returned to the calling API.
116 PROCEDURE evaluate_condition(
117 p_api_version IN NUMBER,
118 p_init_msg_list IN VARCHAR2 ,
119 x_return_status OUT NOCOPY VARCHAR2,
120 x_msg_count OUT NOCOPY NUMBER,
121 x_msg_data OUT NOCOPY VARCHAR2,
122 p_acn_id IN okc_actions_b.id%TYPE,
123 p_msg_tab IN okc_aq_pvt.msg_tab_typ,
124 x_sync_outcome_tab OUT NOCOPY okc_condition_eval_pub.outcome_tab_type
125 )
126 IS
127 l_status VARCHAR2(10);
128 l_count NUMBER := 0;
129 l_outcome_tab okc_condition_eval_pvt.exec_tab_type;
130 l_cnh_tab okc_condition_eval_pvt.id_tab_type;
131 l_api_name CONSTANT VARCHAR2(30) := 'EVALUATE_CONDITION';
132 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
133 --
134 l_proc varchar2(72) := ' okc_condition_eval_pub.'||'evaluate_condition';
135 --
136 BEGIN
137
138 IF (l_debug = 'Y') THEN
139 okc_debug.Set_Indentation(l_proc);
140 okc_debug.Log('10: Entering ',2);
141 END IF;
142
143 -- Call start_activity to create savepoint, check compatibility
144 -- and initialize message list
145 l_return_status := OKC_API.START_ACTIVITY ( l_api_name
146 , p_init_msg_list
147 , '_PUB'
148 , x_return_status
149 );
150 -- Check if activity started successfully
151 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
152 -- RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
153 null;
154 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
155 null;-- RAISE OKC_API.G_EXCEPTION_ERROR;
156 END IF;
157
158 -- evaluate conditions, build outcomes for true conditions
159 OKC_CONDITION_EVAL_PVT.evaluate_condition(
160 p_api_version,
161 p_init_msg_list,
162 x_return_status,
163 x_msg_count,
164 x_msg_data,
165 p_acn_id,
166 p_msg_tab,
167 x_sync_outcome_tab
168 );
169
170 -- end activity
171 OKC_API.END_ACTIVITY ( x_msg_count
172 , x_msg_data );
173
174 IF (l_debug = 'Y') THEN
175 okc_debug.Log('1000: Leaving ',2);
176 okc_debug.Reset_Indentation;
177 END IF;
178
179
180 EXCEPTION
181
182 WHEN OKC_API.G_EXCEPTION_ERROR THEN
183 x_return_status := OKC_API.HANDLE_EXCEPTIONS
184 ( l_api_name,
185 G_PKG_NAME,
186 'OKC_API.G_RET_STS_ERROR',
187 x_msg_count,
188 x_msg_data,
189 '_PUB');
190 IF (l_debug = 'Y') THEN
191 okc_debug.Log('2000: Leaving ',2);
192 okc_debug.Reset_Indentation;
193 END IF;
194 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
195 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
196 ( l_api_name,
197 G_PKG_NAME,
198 'OKC_API.G_RET_STS_UNEXP_ERROR',
199 x_msg_count,
200 x_msg_data,
201 '_PUB');
202 IF (l_debug = 'Y') THEN
203 okc_debug.Log('3000: Leaving ',2);
204 okc_debug.Reset_Indentation;
205 END IF;
206 WHEN OTHERS THEN
207 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
208 ( l_api_name,
209 G_PKG_NAME,
210 'OTHERS',
211 x_msg_count,
212 x_msg_data,
213 '_PUB');
214 IF (l_debug = 'Y') THEN
215 okc_debug.Log('4000: Leaving ',2);
216 okc_debug.Reset_Indentation;
217 END IF;
218 END evaluate_condition;
219
220
221 PROCEDURE evaluate_condition(
222 p_api_version IN NUMBER,
223 p_init_msg_list IN VARCHAR2 ,
224 x_return_status OUT NOCOPY VARCHAR2,
225 x_msg_count OUT NOCOPY NUMBER,
226 x_msg_data OUT NOCOPY VARCHAR2,
227 p_acn_id IN okc_actions_b.id%TYPE,
228 p_msg_tab IN okc_aq_pvt.msg_tab_typ
229 )
230 IS
231 l_status VARCHAR2(10);
232 l_count NUMBER := 0;
233 l_outcome_tab okc_condition_eval_pvt.exec_tab_type;
234 l_cnh_tab okc_condition_eval_pvt.id_tab_type;
235 l_api_name CONSTANT VARCHAR2(30) := 'EVALUATE_CONDITION';
236 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
237 --
238 l_proc varchar2(72) := ' okc_condition_eval_pub.'||'evaluate_condition';
239 --
240 BEGIN
241
242 IF (l_debug = 'Y') THEN
243 okc_debug.Set_Indentation(l_proc);
244 okc_debug.Log('10: Entering ',2);
245 END IF;
246
247 -- Call start_activity to create savepoint, check compatibility
248 -- and initialize message list
249 l_return_status := OKC_API.START_ACTIVITY ( l_api_name
250 , p_init_msg_list
251 , '_PUB'
252 , x_return_status
253 );
254 -- Check if activity started successfully
255 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
256 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
257 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
258 RAISE OKC_API.G_EXCEPTION_ERROR;
259 END IF;
260 -- evaluate conditions, build outcomes for true conditions and
261 -- put them on outcome queue
262 OKC_CONDITION_EVAL_PVT.evaluate_condition(
263 p_api_version,
264 p_init_msg_list,
265 x_return_status,
266 x_msg_count,
267 x_msg_data,
268 p_acn_id,
269 p_msg_tab
270 );
271 OKC_API.END_ACTIVITY ( x_msg_count
272 , x_msg_data );
273
274 IF (l_debug = 'Y') THEN
275 okc_debug.Log('1000: Leaving ',2);
276 okc_debug.Reset_Indentation;
277 END IF;
278
279
280 EXCEPTION
281 WHEN OKC_API.G_EXCEPTION_ERROR THEN
282 x_return_status := OKC_API.HANDLE_EXCEPTIONS
283 ( l_api_name,
284 G_PKG_NAME,
285 'OKC_API.G_RET_STS_ERROR',
286 x_msg_count,
287 x_msg_data,
288 '_PUB');
289 IF (l_debug = 'Y') THEN
290 okc_debug.Log('2000: Leaving ',2);
291 okc_debug.Reset_Indentation;
292 END IF;
293 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
294 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
295 ( l_api_name,
296 G_PKG_NAME,
297 'OKC_API.G_RET_STS_UNEXP_ERROR',
298 x_msg_count,
299 x_msg_data,
300 '_PUB');
301 IF (l_debug = 'Y') THEN
302 okc_debug.Log('3000: Leaving ',2);
303 okc_debug.Reset_Indentation;
304 END IF;
305 WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
306 ( l_api_name,
307 G_PKG_NAME,
308 'OTHERS',
309 x_msg_count,
310 x_msg_data,
311 '_PUB');
312 IF (l_debug = 'Y') THEN
313 okc_debug.Log('4000: Leaving ',2);
314 okc_debug.Reset_Indentation;
315 END IF;
316 END evaluate_condition;
317
318 -- Evaluator for date based actions
319 PROCEDURE evaluate_date_condition(
320 p_api_version IN NUMBER,
321 p_init_msg_list IN VARCHAR2 ,
322 x_return_status OUT NOCOPY VARCHAR2,
323 x_msg_count OUT NOCOPY NUMBER,
324 x_msg_data OUT NOCOPY VARCHAR2,
325 p_cnh_id IN okc_condition_headers_b.id%TYPE,
326 p_msg_tab IN okc_aq_pvt.msg_tab_typ
327 )
328 IS
329 l_status VARCHAR2(10);
330 l_count NUMBER := 0;
331 l_outcome_tab okc_condition_eval_pvt.exec_tab_type;
332 l_cnh_tab okc_condition_eval_pvt.id_tab_type;
333 l_api_name CONSTANT VARCHAR2(30) := 'EVALUATE_CONDITION';
334 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
335 --
336 l_proc varchar2(72) := ' okc_condition_eval_pub.'||'evaluate_date_condition';
337 --
338 BEGIN
339
340 IF (l_debug = 'Y') THEN
341 okc_debug.Set_Indentation(l_proc);
342 okc_debug.Log('10: Entering ',2);
343 END IF;
344
345 -- Call start_activity to create savepoint, check compatibility
346 -- and initialize message list
347 l_return_status := OKC_API.START_ACTIVITY ( l_api_name
348 , p_init_msg_list
349 , '_PUB'
350 , l_return_status
351 );
352 -- Check if activity started successfully
353 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
354 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
355 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
356 RAISE OKC_API.G_EXCEPTION_ERROR;
357 END IF;
358 -- evaluate conditions, build outcomes for true conditions and
359 -- put them on outcome queue
360 OKC_CONDITION_EVAL_PVT.evaluate_date_condition(
361 p_api_version,
362 p_init_msg_list,
363 x_return_status,
364 x_msg_count,
365 x_msg_data,
366 p_cnh_id,
367 p_msg_tab
368 );
369 OKC_API.END_ACTIVITY ( x_msg_count
370 , x_msg_data );
371
372 IF (l_debug = 'Y') THEN
373 okc_debug.Log('1000: Leaving ',2);
374 okc_debug.Reset_Indentation;
375 END IF;
376
377
378 EXCEPTION
379 WHEN OKC_API.G_EXCEPTION_ERROR THEN
380 x_return_status := OKC_API.HANDLE_EXCEPTIONS
381 ( l_api_name,
382 G_PKG_NAME,
383 'OKC_API.G_RET_STS_ERROR',
384 x_msg_count,
385 x_msg_data,
386 '_PUB');
387 IF (l_debug = 'Y') THEN
388 okc_debug.Log('2000: Leaving ',2);
389 okc_debug.Reset_Indentation;
390 END IF;
391 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
392 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
393 ( l_api_name,
394 G_PKG_NAME,
395 'OKC_API.G_RET_STS_UNEXP_ERROR',
396 x_msg_count,
397 x_msg_data,
398 '_PUB');
399 IF (l_debug = 'Y') THEN
400 okc_debug.Log('3000: Leaving ',2);
401 okc_debug.Reset_Indentation;
402 END IF;
403 WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
404 ( l_api_name,
405 G_PKG_NAME,
406 'OTHERS',
407 x_msg_count,
408 x_msg_data,
409 '_PUB');
410 IF (l_debug = 'Y') THEN
411 okc_debug.Log('4000: Leaving ',2);
412 okc_debug.Reset_Indentation;
413 END IF;
414 END evaluate_date_condition;
415
416 END okc_condition_eval_pub;