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