[Home] [Help]
PACKAGE BODY: APPS.AMS_LISTACTION_PVT
Source
1 PACKAGE BODY AMS_ListAction_PVT as
2 /* $Header: amsvlsab.pls 120.3 2006/04/28 03:59:39 bmuthukr ship $ */
3 ------------------------------------------------------------------
4 -- Copyright (c) 1999 Oracle Corporation --
5 -- Redwood Shores, California, USA --
6 -- All rights reserved. --
7 ------------------------------------------------------------------
8 -- Start of Comments
9 --
10 -- PACKAGE
11 -- AMS_ListAction_PVT
12
13 -- Procedures:
14
15 -- Create_ListAction
16 -- Update_ListAction
17 -- Delete_ListAction
18 -- Lock_ListAction
19 -- Validate_ListAction
20
21 -- check_action_req_items
22 -- check_action_uk_items
23 -- check_action_fk_items
24 -- check_action_lookup_items
25 --
26 -- check_action_items
27 -- check_action_record
28 -- complete_action_rec
29 -- init_action_rec
30 -- HISTORY
31 -- 19-Apr-2001 choang Excluded MODL and SCOR from rank validation
32 -- 13-Sep-2001 choang Modified validation of ARC_INCL_OBJECT_FROM to use
33 -- AMS_DM_SOURCE_TYPE for lookup validation if the
34 -- arc used by is MODL or SCOR.
35 -- 14-Oct-2002 nyostos Added callout to Model/Score code to INVALIDATE
36 -- Model/Scoring Run when list select actions records
37 -- are added, deleted or updated.
38
39 G_PKG_NAME CONSTANT VARCHAR2(30):='AMS_ListAction_PVT';
40 G_FILE_NAME CONSTANT VARCHAR2(12):='amsvlsab.pls';
41
42 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
43
44
45 ---------------------------------------------------------------------
46 -- PROCEDURE
47 -- check_list_action_changes
48 --
49 -- HISTORY
50 -- 14-Oct-2002 nyostos Check if the list select action has changed
51 -- and then make a callout to Model/Score code
52 -- to Invalidate if appropraite.
53 ---------------------------------------------------------------------
54 PROCEDURE check_list_action_changes(
55 p_action_rec IN action_rec_type,
56 x_rec_changed OUT NOCOPY VARCHAR2
57 );
58
59
60 ---------------------------------------------------------------------
61 -- PROCEDURE
62 -- check_action_record
63 --
64 -- HISTORY
65 -- 01/22/2001 vbhandar modified to check whether action is INCLUDE
66 -- for the lowest order number.
67 ---------------------------------------------------------------------
68 PROCEDURE check_action_record(
69 p_action_rec IN action_rec_type,
70 p_complete_rec IN action_rec_type,
71 x_return_status OUT NOCOPY VARCHAR2
72 )
73 IS
74 --Checking that the same incl_object_name and arc_incl_object_from
75 --is not included more than once in the set of list actions.
76
77 Cursor C_Is_Source_Unique IS
78 SELECT count(*)
79 FROM ams_list_select_actions
80 WHERE action_used_by_id = p_action_rec.action_used_by_id
81 AND arc_action_used_by = p_action_rec.arc_action_used_by
82 AND list_select_action_id <> p_action_rec.list_select_action_id
83 AND incl_object_id = p_action_rec.incl_object_id
84 AND arc_incl_object_from = p_action_rec.arc_incl_object_from;
85
86 --stores the result of C_Is_Source_Unique cursor.
87 l_source_count number;
88
89 --Checking that the same order number does not exist among the set of list actions for the list.
90 Cursor C_Is_Ord_No_Unique Is
91 SELECT Count(*)
92 FROM ams_list_select_actions
93 WHERE action_used_by_id = p_action_rec.action_used_by_id
94 AND arc_action_used_by = p_action_rec.arc_action_used_by
95 AND list_select_action_id <> p_action_rec.list_select_action_id
96 AND order_number = p_action_rec.order_number;
97
98 --stores the result of the C_Is_Ord_No_Unique cursor.
99 l_ord_no_count number;
100
101
102 --Getting The Count of Actions excluding the current one for this list.
103 Cursor C_Actions_Exist IS
104 SELECT count(*)
105 FROM ams_list_select_actions
106 WHERE action_used_by_id = p_action_rec.action_used_by_id
107 AND arc_action_used_by = p_action_rec.arc_action_used_by
108 AND list_select_action_id <> p_action_rec.list_select_action_id;
109
110
111 l_min_Order number;
112 cursor c_min_order is
113 SELECT nvl(Min(order_number),-1)
114 FROM ams_list_select_actions
115 WHERE action_used_by_id = p_action_rec.action_used_by_id
116 AND arc_action_used_by = p_action_rec.arc_action_used_by
117 AND list_select_action_id <> p_action_rec.list_select_action_id;
118
119 --Getting list select action type where order num is min .
120 Cursor C_Min_List_Selection_Type IS
121 SELECT list_action_type
122 FROM ams_list_select_actions
123 WHERE action_used_by_id = p_action_rec.action_used_by_id
124 AND arc_action_used_by = p_action_rec.arc_action_used_by
125 and order_number = l_min_order;
126 l_action_type varchar2(30);
127
128 --stores the count of C_Actions_Exist
129 l_action_count number;
130
131
132 BEGIN
133 x_return_status := FND_API.g_ret_sts_success;
134 --getting the count of actions for the list.
135 open c_actions_exist;
136 fetch c_actions_exist into l_action_count;
137 close c_actions_exist;
138
139 IF p_action_rec.ORDER_NUMBER <> FND_API.G_MISS_NUM
140 AND p_action_rec.ORDER_NUMBER IS NOT NULL THEN
141 IF(l_action_count >0 ) THEN
142 open c_is_ord_no_unique;
143 fetch c_is_ord_no_unique into l_ord_no_count;
144 close c_is_ord_no_unique;
145
146 IF(l_ord_no_count > 0 ) THEN
147 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
148 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_BAD_ORD_NUM');
149 FND_MSG_PUB.Add;
150 END IF;
151
152 x_return_status := FND_API.G_RET_STS_ERROR;
153 -- If any errors happen abort API/Procedure.
154 RAISE FND_API.G_EXC_ERROR;
155
156 ELSE
157 x_return_status := FND_API.G_RET_STS_SUCCESS;
158 END IF;
159 ELSE
160 x_return_status := FND_API.G_RET_STS_SUCCESS;
161 END IF;
162 END IF;
163
164 --checking that the action with lowest order number is INCLUDE
165 open c_min_order;
166 fetch c_min_order into l_min_Order;
167 close c_min_order;
168
169 if (l_min_Order <> -1 ) and (l_min_Order < p_action_rec.order_number ) then
170 OPEN C_Min_List_Selection_Type;
171 FETCH C_Min_List_Selection_Type INTO l_action_type;
172 CLOSE C_Min_List_Selection_Type;
173 else
174 l_action_type := p_action_rec.list_action_type;
175 end if;
176 IF l_action_type <> FND_API.G_MISS_CHAR
177 AND l_action_type IS NOT NULL THEN
178 IF(l_action_type <>'INCLUDE')THEN
179 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
180 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_FIRST_INCLUDE');
181 FND_MSG_PUB.Add;
182 END IF;
183 x_return_status := FND_API.G_RET_STS_ERROR;
184 RAISE FND_API.G_EXC_ERROR;
185 END IF; --end if l_action_type <>'INCLUDE'
186 END IF;-- end IF l_action_type <> FND_API.G_MISS_CHAR
187
188 --checking that the same action source is not included more than once in the list.
189 IF ( p_action_rec.ARC_INCL_OBJECT_FROM <> FND_API.G_MISS_CHAR AND p_action_rec.ARC_INCL_OBJECT_FROM IS NOT NULL)
190 AND
191 ( p_action_rec.INCL_OBJECT_ID <> FND_API.G_MISS_NUM AND p_action_rec.INCL_OBJECT_ID IS NOT NULL ) THEN
192
193 IF(l_action_count >0 ) THEN
194 OPEN c_is_source_unique;
195 FETCH c_is_source_unique into l_source_count;
196 CLOSE c_is_source_unique;
197
198 IF(l_source_count = 0 )THEN
199 x_return_status := FND_API.G_RET_STS_SUCCESS;
200 ELSE
201 -- Error, check the msg level and added an error message to the
202 -- API message list
203 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
204 THEN
205 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_DUPE_ACTION');
206 FND_MESSAGE.set_token('ACT_SOURCE', p_action_rec.arc_incl_object_from ||'-->'|| p_action_rec.incl_object_id );
207 FND_MSG_PUB.Add;
208 END IF;
209
210 x_return_status := FND_API.G_RET_STS_ERROR;
211 -- If any errors happen abort API/Procedure.
212 RAISE FND_API.G_EXC_ERROR;
213 END IF;
214 ELSE
215 x_return_status := FND_API.G_RET_STS_SUCCESS;
216 END IF;
217 END IF;
218
219 IF(p_action_rec.DISTRIBUTION_PCT IS NOT NULL AND p_action_rec.DISTRIBUTION_PCT <> FND_API.G_MISS_NUM ) THEN
220 IF (p_action_rec.DISTRIBUTION_PCT > 100 )THEN
221 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_DIST_PCT_INVALID');
222 FND_MSG_PUB.Add;
223 x_return_status := FND_API.G_RET_STS_ERROR;
224 RAISE FND_API.G_EXC_ERROR;
225 END IF;
226 IF (p_action_rec.DISTRIBUTION_PCT <= 0 )THEN
227 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_DIST_PCT_INVALID');
228 FND_MSG_PUB.Add;
229 x_return_status := FND_API.G_RET_STS_ERROR;
230 RAISE FND_API.G_EXC_ERROR;
231 END IF;
232 END IF;
233
234 IF(p_action_rec.list_action_type <> 'INCLUDE' ) THEN
235 IF(p_action_rec.DISTRIBUTION_PCT IS NOT NULL AND p_action_rec.DISTRIBUTION_PCT <> FND_API.G_MISS_NUM ) THEN
236 FND_MESSAGE.set_name('AMS', 'AMS_DIST_PCT_NULL');
237 FND_MSG_PUB.Add;
238 x_return_status := FND_API.G_RET_STS_ERROR;
239 RAISE FND_API.G_EXC_ERROR;
240 END IF;
241 END IF;
242
243
244 -- do other record level checkings
245
246 END check_action_record;
247
248
249
250 ---------------------------------------------------------------------
251 -- PROCEDURE
252 -- check_action_uk_items
253 --
254 -- HISTORY
255 -- 10/14/99 tdonohoe Created.
256 -- 01/22/01 vbhandar modified to change list header id to action
257 -- used by id and arc action used by
258 -- check uniqueness of rank
259 ---------------------------------------------------------------------
260 PROCEDURE check_action_uk_items(
261 p_action_rec IN action_rec_type,
262 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
263 x_return_status OUT NOCOPY VARCHAR2
264 )
265 IS
266
267 BEGIN
268
269 x_return_status := FND_API.g_ret_sts_success;
270
271 -- For create_action, when action_id is passed in, we need to
272 -- check if this action_id is unique.
273 IF p_validation_mode = JTF_PLSQL_API.g_create
274 AND p_action_rec.list_select_action_id IS NOT NULL
275 THEN
276 IF AMS_Utility_PVT.check_uniqueness(
277 'ams_list_select_actions',
278 'list_select_action_id = ' || p_action_rec.list_select_action_id
279 ) = FND_API.g_false
280 THEN
281 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
282 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_DUPE_ACTION');
283 FND_MSG_PUB.add;
284 END IF;
285 x_return_status := FND_API.g_ret_sts_error;
286 RETURN;
287 END IF;
288 END IF;
289
290 IF p_validation_mode = JTF_PLSQL_API.g_create
291 AND p_action_rec.order_number IS NOT NULL
292 THEN
293 IF AMS_Utility_PVT.check_uniqueness(
294 'ams_list_select_actions',
295 'order_number = ' || p_action_rec.order_number||
296 ' and action_used_by_id = '||p_action_rec.action_used_by_id
297 ||' and arc_action_used_by = '||p_action_rec.arc_action_used_by
298 ) = FND_API.g_false
299 THEN
300 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
301 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_BAD_ORD_NUM');
302 FND_MSG_PUB.add;
303 END IF;
304 x_return_status := FND_API.g_ret_sts_error;
305 RETURN;
306 END IF;
307 END IF;
308
309 IF p_validation_mode = JTF_PLSQL_API.g_create
310 AND p_action_rec.rank IS NOT NULL
311 THEN
312 IF AMS_Utility_PVT.check_uniqueness(
313 'ams_list_select_actions',
314 'rank = ' || p_action_rec.rank||
315 ' and action_used_by_id = '||
316 p_action_rec.action_used_by_id
317 ||' and arc_action_used_by = '||
318 p_action_rec.arc_action_used_by
319 ) = FND_API.g_false
320 THEN
321 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
322 FND_MESSAGE.set_name('AMS', 'AMS_LIST_BAD_RANK_NUM');
323 FND_MSG_PUB.add;
324 END IF;
325 x_return_status := FND_API.g_ret_sts_error;
326 RETURN;
327 END IF;
328 END IF;
329
330 END check_action_uk_items;
331
332 ---------------------------------------------------------------------
333 -- PROCEDURE
334 -- check_action_fk_items
335 --
336 -- HISTORY
337 -- 10/14/99 tdonohoe Created.
338 ---------------------------------------------------------------------
339 PROCEDURE check_action_fk_items(
340 p_action_rec IN action_rec_type,
341 x_return_status OUT NOCOPY VARCHAR2
342 )
343 IS
344
345 l_arc_incl_object_from varchar2(30);
346 l_table_name varchar2(100);
347 l_pk_name varchar2(100);
348
349 BEGIN
350
351 x_return_status := FND_API.g_ret_sts_success;
352
353 IF p_action_rec.arc_action_used_by <> FND_API.g_miss_char THEN
354
355 AMS_Utility_PVT.get_qual_table_name_and_pk(
356 p_sys_qual => p_action_rec.arc_action_used_by,
357 x_return_status => x_return_status,
358 x_table_name => l_table_name,
359 x_pk_name => l_pk_name
360 );
361
362 IF x_return_status <> FND_API.g_ret_sts_success THEN
363 RETURN;
364 END IF;
365
366 IF p_action_rec.action_used_by_id <> FND_API.g_miss_num THEN
367 IF ( AMS_Utility_PVT.Check_FK_Exists(l_table_name
368 , l_pk_name
369 , p_action_rec.action_used_by_id)
370 = FND_API.G_TRUE)
371 THEN
372 x_return_status := FND_API.G_RET_STS_SUCCESS;
373
374 ELSE
375 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
376 THEN
377 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ID_MISSING');
378 FND_MSG_PUB.Add;
379 END IF;
380 x_return_status := FND_API.G_RET_STS_ERROR;
381 RAISE FND_API.G_EXC_ERROR;
382 END IF; -- end AMS_Utility_PVT.Check_FK_Exists
383 END IF; -- end p_action_rec.action_used_by_id
384 END IF; --end p_action_rec.arc_action_used_by <> FND_API.g_miss_char
385
386 IF p_action_rec.arc_incl_object_from <> FND_API.g_miss_char THEN
387
388 if p_action_rec.arc_incl_object_from = 'STANDARD' then
389 l_arc_incl_object_from := 'LIST';
390 elsif p_action_rec.arc_incl_object_from = 'MANUAL' then
391 l_arc_incl_object_from := 'LIST';
392 else
393 l_arc_incl_object_from := p_action_rec.arc_incl_object_from;
394 end if;
395 AMS_Utility_PVT.get_qual_table_name_and_pk(
396 p_sys_qual => l_arc_incl_object_from,
397 x_return_status => x_return_status,
398 x_table_name => l_table_name,
399 x_pk_name => l_pk_name
400 );
401
402 IF x_return_status <> FND_API.g_ret_sts_success THEN
403 RETURN;
404 END IF;
405
406 IF p_action_rec.incl_object_id <> FND_API.g_miss_num THEN
407 IF ( AMS_Utility_PVT.Check_FK_Exists(l_table_name
408 , l_pk_name
409 , p_action_rec.incl_object_id)
410 = FND_API.G_TRUE)
411 THEN
412 x_return_status := FND_API.G_RET_STS_SUCCESS;
413
414 ELSE
415 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
416 THEN
417 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_SRC_INVALID');
418 FND_MESSAGE.set_token('LIST_SOURCE', p_action_rec.arc_incl_object_from ||'-->'|| p_action_rec.incl_object_id );
419 FND_MSG_PUB.Add;
420 END IF;
421 x_return_status := FND_API.G_RET_STS_ERROR;
422 RAISE FND_API.G_EXC_ERROR;
423 END IF; -- end AMS_Utility_PVT.Check_FK_Exists
424 END IF; -- p_action_rec.incl_object_id <> FND_API.g_miss_num
425 END IF; --end p_action_rec.arc_incl_object_from <> FND_API.g_miss_char
426 -- check other fk items
427 END check_action_fk_items;
428
429 PROCEDURE check_action_other_items(
430 p_action_rec IN action_rec_type,
431 x_return_status OUT NOCOPY VARCHAR2
432 )
433 IS
434
435 l_table_name varchar2(100);
436 l_pk_name varchar2(100);
437
438 BEGIN
439
440 x_return_status := FND_API.g_ret_sts_success;
441
442 IF p_action_rec.order_number <> FND_API.g_miss_num THEN
443 if p_action_rec.order_number < 1 then
444 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ORDER_NUMBER_RANK');
445 FND_MESSAGE.set_token('FIELD', 'ORDER_NUMBER');
446 FND_MSG_PUB.add;
447 x_return_status := FND_API.g_ret_sts_error;
448 return ;
449 end if;
450 if trunc(p_action_rec.order_number) <> p_action_rec.order_number then
451 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ORDER_NUMBER_RANK');
452 FND_MESSAGE.set_token('FIELD', 'ORDER_NUMBER');
453 FND_MSG_PUB.add;
454 x_return_status := FND_API.g_ret_sts_error;
455 return ;
456 end if;
457
458 END IF;
459
460
461 IF p_action_rec.rank <> FND_API.g_miss_num AND p_action_rec.arc_action_used_by NOT IN ('MODL', 'SCOR') THEN
462 if p_action_rec.rank < 1 then
463 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ORDER_NUMBER_RANK');
464 FND_MESSAGE.set_token('FIELD', 'RANK');
465 FND_MSG_PUB.add;
466 x_return_status := FND_API.g_ret_sts_error;
467 return ;
468 end if;
469 if trunc(p_action_rec.rank) <> p_action_rec.rank then
470 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ORDER_NUMBER_RANK');
471 FND_MESSAGE.set_token('FIELD', 'RANK');
472 FND_MSG_PUB.add;
473 x_return_status := FND_API.g_ret_sts_error;
474 return ;
475 end if;
476
477 END IF;
478
479 IF (p_action_rec.list_action_type = 'INCLUDE' AND p_action_rec.arc_action_used_by NOT IN ('MODL', 'SCOR')) THEN
480 IF (p_action_rec.rank = FND_API.g_miss_num ) THEN
481 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_RANK_MISSING');
482 FND_MSG_PUB.add;
483 x_return_status := FND_API.g_ret_sts_error;
484 return ;
485 end if;
486 IF (p_action_rec.rank is null ) THEN
487 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_RANK_MISSING');
488 FND_MSG_PUB.add;
489 x_return_status := FND_API.g_ret_sts_error;
490 return ;
491 end if;
492
493
494 END IF;
495
496 IF p_action_rec.incl_control_group <> FND_API.g_miss_char
497 AND p_action_rec.incl_control_group IS NOT NULL THEN
498 IF AMS_Utility_PVT.is_Y_or_N(p_action_rec.incl_control_group) = FND_API.g_false THEN
499 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
500 FND_MESSAGE.set_name('AMS', 'AMS_LIST_BAD_FLAG');
501 FND_MSG_PUB.add;
502 END IF;
503 x_return_status := FND_API.g_ret_sts_error;
504 RETURN;
505 END IF;
506 END IF;
507 -- check other other items
508 END check_action_other_items;
509
510 ---------------------------------------------------------------------
511 -- PROCEDURE
512 -- check_action_lookup_items
513 --
514 -- HISTORY
515 -- 10/14/99 tdonohoe Created.
516 -- 01/22/01 vbhandar check lookup for AMS_SELECT_ACTION_USED_BY
517 ---------------------------------------------------------------------
518 PROCEDURE check_action_lookup_items(
519 p_action_rec IN action_rec_type,
520 x_return_status OUT NOCOPY VARCHAR2
521 )
522 IS
523 BEGIN
524
525 x_return_status := FND_API.g_ret_sts_success;
526
527 ----------------------- arc_action_used_by ------------------------
528 IF p_action_rec.arc_action_used_by <> FND_API.g_miss_char THEN
529 IF AMS_Utility_PVT.check_lookup_exists(
530 p_lookup_type => 'AMS_SELECT_ACTION_USED_BY',
531 p_lookup_code => p_action_rec.arc_action_used_by
532 ) = FND_API.g_false
533 THEN
534 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
535 THEN
536 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACTION_USEDBY_INVALID');
537 FND_MESSAGE.set_token('ACTION_USED_BY', p_action_rec.arc_action_used_by);
538 FND_MSG_PUB.add;
539 END IF;
540
541 x_return_status := FND_API.g_ret_sts_error;
542 RETURN;
543 END IF;
544 END IF;
545
546 ----------------------- list_action_type ------------------------
547 IF p_action_rec.list_action_type <> FND_API.g_miss_char THEN
548 IF AMS_Utility_PVT.check_lookup_exists(
549 p_lookup_type => 'AMS_LIST_SELECT_ACTION',
550 p_lookup_code => p_action_rec.list_action_type
551 ) = FND_API.g_false
552 THEN
553 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
554 THEN
555 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_BAD_TYPE');
556 FND_MSG_PUB.add;
557 END IF;
558
559 x_return_status := FND_API.g_ret_sts_error;
560 RETURN;
561 END IF;
562 END IF;
563
564 ----------------------- arc_incl_object_type ------------------------
565 IF p_action_rec.arc_incl_object_from <> FND_API.g_miss_char THEN
566 IF p_action_rec.arc_action_used_by NOT IN ('MODL', 'SCOR') THEN
567 IF AMS_Utility_PVT.check_lookup_exists(
568 p_lookup_type => 'AMS_LIST_SELECT_TYPE',
569 p_lookup_code => p_action_rec.arc_incl_object_from
570 ) = FND_API.g_false
571 THEN
572 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
573 THEN
574 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_SRC_INVALID');
575 FND_MESSAGE.set_token('LIST_SOURCE', p_action_rec.arc_incl_object_from);
576 FND_MSG_PUB.add;
577 END IF;
578
579 x_return_status := FND_API.g_ret_sts_error;
580 RETURN;
581 END IF;
582 ELSE -- use different lookup for model and score
583 -- CSCH included in the lookup breaks the rendering
584 -- of the loyalty selection screen.
585 IF p_action_rec.arc_incl_object_from <> 'CSCH' THEN
586 IF AMS_Utility_PVT.check_lookup_exists(
587 p_lookup_type => 'AMS_DM_SOURCE_TYPE',
588 p_lookup_code => p_action_rec.arc_incl_object_from
589 ) = FND_API.g_false
590 THEN
591 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
592 THEN
593 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_SRC_INVALID');
594 FND_MESSAGE.set_token('LIST_SOURCE', p_action_rec.arc_incl_object_from);
595 FND_MSG_PUB.add;
596 END IF;
597
598 x_return_status := FND_API.g_ret_sts_error;
599 END IF;
600 END IF;
601 END IF;
602 END IF;
603
604
605
606 -- check other lookup codes
607
608 END check_action_lookup_items;
609
610
611 -- Start of Comments
612 --
613 -- NAME
614 -- check_action_req_items
615 --
616 -- PURPOSE
617 -- This procedure is to check required parameters that satisfy caller needs
618 --
619 -- NOTES
620 --
621 --
622 -- HISTORY
623 -- 05/13/1999 tdonohoe created
624 -- 01/22/2001 vbhandar modified
625 -- check for action_used_by_id instead of list header id
626 -- check for arc_action_used_by
627 -- remove incl_object_name as required column
628 -- End of Comments
629 PROCEDURE check_action_req_items
630 ( p_action_rec IN action_rec_type,
631 x_return_status OUT NOCOPY VARCHAR2
632 ) IS
633
634 BEGIN
635 --Initialize API/Procedure return status to success
636 x_return_status := FND_API.G_RET_STS_SUCCESS;
637
638 IF (p_action_rec.arc_action_used_by IS NULL) THEN
639 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
640 FND_MESSAGE.Set_Name('AMS', 'AMS_ACTION_USEDBY_MISSING');
641 FND_MSG_PUB.Add;
642 END IF;
643 x_return_status := FND_API.G_RET_STS_ERROR;
644 return;
645 END IF;
646
647 IF (p_action_rec.action_used_by_id IS NULL) THEN
648 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
649 FND_MESSAGE.Set_Name('AMS', 'AMS_USEDBY_ID_MISSING');
650 FND_MSG_PUB.Add;
651 END IF;
652 x_return_status := FND_API.G_RET_STS_ERROR;
653 return;
654 END IF;
655
656 IF (p_action_rec.order_number IS NULL) THEN
657 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
658 FND_MESSAGE.Set_Name('AMS', 'AMS_LIST_ACT_ORDNO_MISSING');
659 FND_MSG_PUB.Add;
660 END IF;
661 x_return_status := FND_API.G_RET_STS_ERROR;
662 return;
663 END IF;
664
665 IF (p_action_rec.list_action_type IS NULL) THEN
666 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
667 FND_MESSAGE.Set_Name('AMS', 'AMS_LIST_ACT_TYPE_MISSING');
668 FND_MSG_PUB.Add;
669 END IF;
670 x_return_status := FND_API.G_RET_STS_ERROR;
671 return;
672 END IF;
673
674 -- IF(p_action_rec.incl_object_name IS NULL) THEN
675 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
676 -- FND_MESSAGE.Set_Name('AMS', 'AMS_LIST_ACT_SRC_NAME_MISSING');
677 -- FND_MSG_PUB.Add;
678 -- END IF;
679 -- x_return_status := FND_API.G_RET_STS_ERROR;
680 -- return;
681 -- END IF;
682
683 IF (p_action_rec.arc_incl_object_from IS NULL) THEN
684 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
685 FND_MESSAGE.Set_Name('AMS', 'AMS_LIST_ARC_INCLUDE_FROM');
686 FND_MSG_PUB.Add;
687 END IF;
688 x_return_status := FND_API.G_RET_STS_ERROR;
689 return;
690 END IF;
691
692 IF (p_action_rec.incl_object_id IS NULL) THEN
693 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
694 FND_MESSAGE.Set_Name('AMS', 'AMS_LIST_ARC_INCLUDE_FROM_ID');
695 FND_MSG_PUB.Add;
696 END IF;
697 x_return_status := FND_API.G_RET_STS_ERROR;
698 return;
699 END IF;
700
701
702 EXCEPTION
703 WHEN OTHERS THEN
704 NULL;
705
706 END check_action_req_items;
707
708
709
710 ---------------------------------------------------------------------
711 -- PROCEDURE
712 -- check_action_items
713 --
714 -- HISTORY
715 -- 10/14/99 tdonohoe Created.
716 ---------------------------------------------------------------------
717 PROCEDURE check_action_items(
718 p_action_rec IN action_rec_type,
719 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
720 x_return_status OUT NOCOPY VARCHAR2
721 )
722 IS
723 BEGIN
724
725 check_action_req_items(
726 p_action_rec => p_action_rec,
727 x_return_status => x_return_status
728 );
729
730 IF x_return_status <> FND_API.g_ret_sts_success THEN
731 RETURN;
732 END IF;
733
734
735 check_action_lookup_items(
736 p_action_rec => p_action_rec,
737 x_return_status => x_return_status
738 );
739 IF x_return_status <> FND_API.g_ret_sts_success THEN
740 RETURN;
741 END IF;
742
743 check_action_fk_items(
744 p_action_rec => p_action_rec,
745 x_return_status => x_return_status
746 );
747
748 IF x_return_status <> FND_API.g_ret_sts_success THEN
749 RETURN;
750 END IF;
751
752 check_action_other_items(
753 p_action_rec => p_action_rec,
754 x_return_status => x_return_status
755 );
756
757 IF x_return_status <> FND_API.g_ret_sts_success THEN
758 RETURN;
759 END IF;
760
761 check_action_uk_items(
762 p_action_rec => p_action_rec,
763 p_validation_mode => p_validation_mode,
764 x_return_status => x_return_status
765 );
766
767 IF x_return_status <> FND_API.g_ret_sts_success THEN
768 RETURN;
769 END IF;
770
771
772
773 END check_action_items;
774
775
776 -- Start of Comments
777 ---------------------------------------------------------------------
778 -- PROCEDURE
779 -- Validate_ListAction
780 --
781 -- PURPOSE
782 -- Validate a List Action.
783 --
784 -- PARAMETERS
785 -- p_action_rec: the list action record to be validated
786 --
787 -- NOTES
788 -- 1. p_action_rec should be the complete list action record. There
789 -- should not be any FND_API.g_miss_char/num/date in it.
790 ----------------------------------------------------------------------
791 -- End Of Comments
792 PROCEDURE Validate_ListAction
793 ( p_api_version IN NUMBER,
794 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
795 p_validation_level IN NUMBER
796 := FND_API.G_VALID_LEVEL_FULL,
797 x_return_status OUT NOCOPY VARCHAR2,
798 x_msg_count OUT NOCOPY NUMBER,
799 x_msg_data OUT NOCOPY VARCHAR2,
800
801 p_action_rec IN action_rec_type
802 ) IS
803
804 l_api_name CONSTANT VARCHAR2(30) := 'Validate_ListAction';
805 l_api_version CONSTANT NUMBER := 1.0;
806
807 -- Status Local Variables
808 l_return_status VARCHAR2(1); -- Return value from procedures
809
810
811
812
813 BEGIN
814 -- Standard call to check for call compatibility.
815 IF NOT FND_API.Compatible_API_Call ( l_api_version,
816 p_api_version,
817 l_api_name,
818 G_PKG_NAME)
819 THEN
820 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
821 END IF;
822
823 -- Initialize message list if p_init_msg_list is set to TRUE.
824 IF FND_API.to_Boolean( p_init_msg_list ) THEN
825 FND_MSG_PUB.initialize;
826 END IF;
827
828 -- Debug Message
829 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
830 THEN
831 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
832 FND_MESSAGE.Set_Token('ROW', 'AMS_ListHeader_PVT.Validate_ListAction_Record: Start', TRUE);
833 FND_MSG_PUB.Add;
834 END IF; */
835
836 IF (AMS_DEBUG_HIGH_ON) THEN
837 AMS_Utility_PVT.debug_message(l_api_name||': Start ');
838 END IF;
839
840
841
842 -- Initialize API return status to success
843 x_return_status := FND_API.G_RET_STS_SUCCESS;
844
845 ---------------------- validate ------------------------
846 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
847 check_action_items(
848 p_action_rec => p_action_rec,
849 p_validation_mode => JTF_PLSQL_API.g_create,
850 x_return_status => l_return_status
851 );
852
853 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
854 RAISE FND_API.g_exc_unexpected_error;
855 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
856 RAISE FND_API.g_exc_error;
857 END IF;
858 END IF;
859
860
861 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
862 check_action_record(
863 p_action_rec => p_action_rec,
864 p_complete_rec => NULL,
865 x_return_status => l_return_status
866 );
867
868 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
869 RAISE FND_API.g_exc_unexpected_error;
870 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
871 RAISE FND_API.g_exc_error;
872 END IF;
873 END IF;
874
875 IF(p_action_rec.DISTRIBUTION_PCT IS NOT NULL) THEN
876 IF (p_action_rec.DISTRIBUTION_PCT > 100 )THEN
877 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_DIST_PCT_INVALID');
878 FND_MSG_PUB.Add;
879 x_return_status := FND_API.G_RET_STS_ERROR;
880 RAISE FND_API.G_EXC_ERROR;
881 END IF;
882 IF (p_action_rec.DISTRIBUTION_PCT <= 0 )THEN
883 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACT_DIST_PCT_INVALID');
884 FND_MSG_PUB.Add;
885 x_return_status := FND_API.G_RET_STS_ERROR;
886 RAISE FND_API.G_EXC_ERROR;
887 END IF;
888 END IF;
889
890
891 -- Success Message
892 -- MMSG
893 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
894 THEN
895 FND_MESSAGE.Set_Name('AMS', 'API_SUCCESS');
896 -- bmuthukr changes for bug 5185128. Implemented changes as suggested in bug 5191606.
897 -- FND_MESSAGE.Set_Token('ROW', 'AMS_ListHeader_PVT.Validate_ListAction_Record', TRUE);
898 FND_MESSAGE.Set_Token('ROW', 'AMS_ListHeader_PVT.Validate_ListAction_Record', FALSE);
899 FND_MSG_PUB.Add;
900 END IF;
901
902
903 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
904 THEN
905 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
906 FND_MESSAGE.Set_Token('ROW',
907 'AMS_ListHeader_PVT.Validate_ListAction_Record: END', TRUE);
908 FND_MSG_PUB.Add;
909 END IF; */
910
911
912 IF (AMS_DEBUG_HIGH_ON) THEN
913 AMS_Utility_PVT.debug_message(l_api_name||': End ');
914 END IF;
915
916
917 -- Standard call to get message count AND IF count is 1, get message info.
918 FND_MSG_PUB.Count_AND_Get
919 ( p_count => x_msg_count,
920 p_data => x_msg_data,
921 p_encoded => FND_API.G_FALSE
922 );
923
924
925
926 EXCEPTION
927 WHEN FND_API.G_EXC_ERROR THEN
928 x_return_status := FND_API.G_RET_STS_ERROR ;
929
930 FND_MSG_PUB.Count_AND_Get
931 ( p_count => x_msg_count,
932 p_data => x_msg_data,
933 p_encoded => FND_API.G_FALSE
934 );
935
936
937 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
938 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
939 FND_MSG_PUB.Count_AND_Get
940 ( p_count => x_msg_count,
941 p_data => x_msg_data,
942 p_encoded => FND_API.G_FALSE
943 );
944
945 WHEN OTHERS THEN
946 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
947 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
948 THEN
949 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
950 END IF;
951
952 FND_MSG_PUB.Count_AND_Get
953 ( p_count => x_msg_count,
954 p_data => x_msg_data,
955 p_encoded => FND_API.G_FALSE
956 );
957
958 END Validate_ListAction;
959
960 ---------------------------------------------------------------------
961 -- PROCEDURE
962 -- Create_ListAction
963 --
964 -- PURPOSE
965 -- Create a new List Select Action.
966 --
967 -- PARAMETERS
968 -- p_action_rec: the new record to be inserted
969 -- x_action_id: return the campaign_id of the new campaign
970 --
971 -- NOTES
972 -- 1. object_version_number will be set to 1.
973 -- 2. If action_id is passed in, the uniqueness will be checked.
974 -- Raise exception in case of duplicates.
975 -- 3. If action_id is not passed in, generate a unique one from
976 -- the sequence.
977 -- 4. If a flag column is passed in, check if it is 'Y' or 'N'.
978 -- Raise exception for invalid flag.
979 -- 5. If a flag column is not passed in, default it to 'Y' or 'N'.
980 -- 6. Please don't pass in any FND_API.g_mess_char/num/date.
981 ---------------------------------------------------------------------
982 PROCEDURE Create_ListAction
983 ( p_api_version IN NUMBER,
984 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
985 p_commit IN VARCHAR2 := FND_API.G_FALSE,
986 p_validation_level IN NUMBER
987 := FND_API.G_VALID_LEVEL_FULL,
988 x_return_status OUT NOCOPY VARCHAR2,
989 x_msg_count OUT NOCOPY NUMBER,
990 x_msg_data OUT NOCOPY VARCHAR2,
991
992 p_action_rec IN action_rec_type,
993 x_action_id OUT NOCOPY NUMBER
994 ) IS
995
996 l_api_name CONSTANT VARCHAR2(30) := 'Create_ListAction';
997 l_api_version CONSTANT NUMBER := 1.0;
998
999 -- Status Local Variables
1000 l_return_status VARCHAR2(1); -- Return value from procedures
1001 l_action_rec action_rec_type := p_action_rec;
1002
1003 l_list_select_action_id AMS_LIST_SELECT_ACTIONS.list_select_action_id%TYPE;
1004 l_action_count number;
1005
1006 l_sqlerrm varchar2(600);
1007 l_sqlcode varchar2(100);
1008
1009 CURSOR c_action_seq IS
1010 SELECT ams_list_select_actions_s.NEXTVAL
1011 FROM DUAL;
1012
1013 CURSOR c_action_count(action_id IN NUMBER) IS
1014 SELECT COUNT(*)
1015 FROM ams_list_select_actions
1016 WHERE list_select_action_id = action_id;
1017
1018 BEGIN
1019
1020 -- Standard Start of API savepoint
1021 SAVEPOINT Create_ListAction_PVT;
1022
1023 -- Standard call to check for call compatibility.
1024 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1025 p_api_version,
1026 l_api_name,
1027 G_PKG_NAME)
1028 THEN
1029 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1030 END IF;
1031
1032 -- Initialize message list IF p_init_msg_list is set to TRUE.
1033 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1034 FND_MSG_PUB.initialize;
1035 END IF;
1036
1037 -- Debug Message
1038 /*ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1039 THEN
1040 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1041 FND_MESSAGE.Set_Token('ROW','AMS_ListAction_PVT.Create_ListAction: Start', TRUE);
1042 FND_MSG_PUB.Add;
1043 END IF; */
1044
1045 IF (AMS_DEBUG_HIGH_ON) THEN
1046 AMS_Utility_PVT.debug_message(l_api_name||': Start ');
1047 END IF;
1048
1049
1050 -- Initialize API return status to success
1051 x_return_status := FND_API.G_RET_STS_SUCCESS;
1052
1053 --
1054 -- API body
1055 --
1056
1057 -- Perform the database operation
1058
1059 IF l_action_rec.list_select_action_id IS NULL OR
1060 l_action_rec.list_select_action_id = FND_API.g_miss_num THEN
1061 LOOP
1062 OPEN c_action_seq;
1063 FETCH c_action_seq INTO l_action_rec.list_select_action_id;
1064 CLOSE c_action_seq;
1065
1066 OPEN c_action_count(l_action_rec.list_select_action_id);
1067 FETCH c_action_count INTO l_action_count;
1068 CLOSE c_action_count;
1069 EXIT WHEN l_action_count = 0;
1070 END LOOP;
1071 END IF;
1072
1073
1074 Validate_ListAction
1075 ( p_api_version => 1.0
1076 ,p_init_msg_list => p_init_msg_list
1077 ,p_validation_level => p_validation_level
1078 ,x_return_status => l_return_status
1079 ,x_msg_count => x_msg_count
1080 ,x_msg_data => x_msg_data
1081 ,p_action_rec => l_action_rec
1082 );
1083
1084
1085 -- If any errors happen abort API.
1086 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1087 RAISE FND_API.G_EXC_ERROR;
1088 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1089 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1090 END IF;
1091
1092
1093
1094
1095 INSERT into AMS_LIST_SELECT_ACTIONS
1096 (LIST_SELECT_ACTION_ID
1097 ,LAST_UPDATE_DATE
1098 ,LAST_UPDATED_BY
1099 ,CREATION_DATE
1100 ,CREATED_BY
1101 ,LAST_UPDATE_LOGIN
1102 ,OBJECT_VERSION_NUMBER
1103 ,ORDER_NUMBER
1104 ,LIST_ACTION_TYPE
1105 --,INCL_OBJECT_NAME
1106 ,ARC_INCL_OBJECT_FROM
1107 ,INCL_OBJECT_ID
1108 --,INCL_OBJECT_WB_SHEET
1109 --,INCL_OBJECT_WB_OWNER
1110 --,INCL_OBJECT_CELL_CODE
1111 ,RANK
1112 ,NO_OF_ROWS_AVAILABLE
1113 ,NO_OF_ROWS_REQUESTED
1114 ,NO_OF_ROWS_USED
1115 ,DISTRIBUTION_PCT
1116 ,RESULT_TEXT
1117 ,DESCRIPTION
1118 ,ARC_ACTION_USED_BY
1119 ,ACTION_USED_BY_ID
1120 , incl_control_group
1121 ,NO_OF_ROWS_TARGETED
1122 )
1123
1124 VALUES
1125 ( l_action_rec.list_select_action_id
1126
1127 -- standard who columns
1128 ,sysdate
1129 ,FND_GLOBAL.User_Id
1130 ,sysdate
1131 ,FND_GLOBAL.User_Id
1132 ,FND_GLOBAL.Conc_Login_Id
1133 ,1--object_version_number
1134 ,l_action_rec.order_number
1135 ,l_action_rec.list_action_type
1136 -- ,l_action_rec.incl_object_name
1137 ,l_action_rec.arc_incl_object_from
1138 ,l_action_rec.incl_object_id
1139 -- ,l_action_rec.incl_object_wb_sheet
1140 -- ,l_action_rec.incl_object_wb_owner
1141 -- ,l_action_rec.incl_object_cell_code
1142 ,l_action_rec.rank
1143 ,NVL(l_action_rec.no_of_rows_available,0)
1144 ,NVL(l_action_rec.no_of_rows_requested,0)
1145 ,NVL(l_action_rec.no_of_rows_used,0)
1146 ,l_action_rec.distribution_pct
1147 ,l_action_rec.result_text
1148 ,l_action_rec.description
1149 ,l_action_rec.arc_action_used_by
1150 ,l_action_rec.action_used_by_id
1151 ,l_action_rec.incl_control_group
1152 ,l_action_rec.no_of_rows_targeted
1153 );
1154
1155
1156 -- set OUT value
1157 x_action_id := l_action_rec.list_select_action_id;
1158
1159
1160 -- Added by nyostos on Oct 14, 2002
1161 -- Adding List Select Action record to a Model/Scoring Run data sets
1162 -- may INVALIDATE the Model if it has already been built or the Scoring
1163 -- Run if it has already run. Call the appropriate procedure to check.
1164 IF l_action_rec.arc_action_used_by = 'MODL' THEN
1165 AMS_DM_MODEL_PVT.handle_data_selection_changes(l_action_rec.action_used_by_id);
1166 ELSIF l_action_rec.arc_action_used_by = 'SCOR' THEN
1167 AMS_DM_SCORE_PVT.handle_data_selection_changes(l_action_rec.action_used_by_id);
1168 END IF;
1169 -- End of addition by nyostos.
1170
1171
1172 -- Standard check of p_commit.
1173 IF FND_API.To_Boolean ( p_commit )
1174 THEN
1175 COMMIT WORK;
1176 END IF;
1177
1178 -- Success Message
1179 -- MMSG
1180 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
1181 THEN
1182 FND_MESSAGE.Set_Name('AMS', 'API_SUCCESS');
1183 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Create_ListAction', TRUE);
1184 FND_MSG_PUB.Add;
1185 END IF;
1186
1187 /*ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1188 THEN
1189 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1190 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Create_ListAction: END', TRUE);
1191 FND_MSG_PUB.Add;
1192 END IF; */
1193
1194
1195 -- Standard call to get message count AND IF count is 1, get message info.
1196 FND_MSG_PUB.Count_AND_Get
1197 ( p_count => x_msg_count,
1198 p_data => x_msg_data,
1199 p_encoded => FND_API.G_FALSE
1200 );
1201
1202 EXCEPTION
1203
1204 WHEN FND_API.G_EXC_ERROR THEN
1205
1206 ROLLBACK TO Create_ListAction_PVT;
1207 x_return_status := FND_API.G_RET_STS_ERROR ;
1208 l_sqlerrm := SQLERRM;
1209 l_sqlcode := SQLCODE;
1210
1211 FND_MSG_PUB.Count_AND_Get
1212 ( p_count => x_msg_count,
1213 p_data => x_msg_data,
1214 p_encoded => FND_API.G_FALSE
1215 );
1216
1217
1218 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1219
1220 ROLLBACK TO Create_ListAction_PVT;
1221 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1222 l_sqlerrm := SQLERRM;
1223 l_sqlcode := SQLCODE;
1224
1225 FND_MSG_PUB.Count_AND_Get
1226 ( p_count => x_msg_count,
1227 p_data => x_msg_data,
1228 p_encoded => FND_API.G_FALSE
1229 );
1230
1231 WHEN OTHERS THEN
1232
1233 ROLLBACK TO Create_ListAction_PVT;
1234 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1235 l_sqlerrm := SQLERRM;
1236 l_sqlcode := SQLCODE;
1237
1238 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1239 THEN
1240 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1241 END IF;
1242
1243 FND_MSG_PUB.Count_AND_Get
1244 ( p_count => x_msg_count,
1245 p_data => x_msg_data,
1246 p_encoded => FND_API.G_FALSE
1247 );
1248
1249 END Create_ListAction;
1250
1251 -- Start of Comments
1252 ---------------------------------------------------------------------
1253 -- PROCEDURE
1254 -- Update_ListAction
1255 --
1256 -- PURPOSE
1257 -- Update a List Action.
1258 --
1259 -- PARAMETERS
1260 -- p_action_rec: the record with new items
1261 --
1262 -- NOTES
1263 -- 1. Raise exception if the object_version_number doesn't match.
1264 -- 2. If an attribute is passed in as FND_API.g_miss_char/num/date,
1265 -- that column won't be updated.
1266 ----------------------------------------------------------------------
1267 -- End Of Comments
1268 PROCEDURE Update_ListAction
1269 ( p_api_version IN NUMBER,
1270 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1271 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1272 p_validation_level IN NUMBER
1273 := FND_API.G_VALID_LEVEL_FULL,
1274 x_return_status OUT NOCOPY VARCHAR2,
1275 x_msg_count OUT NOCOPY NUMBER,
1276 x_msg_data OUT NOCOPY VARCHAR2,
1277
1278 p_action_rec IN action_rec_type
1279 ) IS
1280
1281 l_api_name CONSTANT VARCHAR2(30) := 'Update_ListAction';
1282 l_api_version CONSTANT NUMBER := 1.0;
1283
1284 -- Status Local Variables
1285 l_return_status VARCHAR2(1); -- Return value from procedures
1286 l_action_rec action_rec_type := p_action_rec;
1287
1288 l_sqlerrm varchar2(600);
1289 l_sqlcode varchar2(100);
1290 l_rec_changed varchar2(1) := 'N';
1291
1292 Begin
1293
1294 -- Standard Start of API savepoint
1295 SAVEPOINT Update_ListAction_PVT;
1296
1297 -- Standard call to check for call compatibility.
1298 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1299 p_api_version,
1300 l_api_name,
1301 G_PKG_NAME)
1302 THEN
1303 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1304 END IF;
1305
1306 -- Initialize message list IF p_init_msg_list is set to TRUE.
1307 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1308 FND_MSG_PUB.initialize;
1309 END IF;
1310
1311 -- Debug Message
1312 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1313 THEN
1314 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1315 FND_MESSAGE.Set_Token('ROW','AMS_ListAction_PVT.Update_ListAction: Start', TRUE);
1316 FND_MSG_PUB.Add;
1317 END IF; */
1318
1319
1320 IF (AMS_DEBUG_HIGH_ON) THEN
1321 AMS_Utility_PVT.debug_message(l_api_name||': Start ');
1322 END IF;
1323
1324
1325 init_action_rec(x_action_rec => l_action_rec);
1326 complete_action_rec(p_action_rec, l_action_rec);
1327
1328 -- Initialize API return status to success
1329 x_return_status := FND_API.G_RET_STS_SUCCESS;
1330 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1331 check_action_items(
1332 p_action_rec => l_action_rec,
1333 p_validation_mode => JTF_PLSQL_API.g_update,
1334 x_return_status => l_return_status);
1335
1336 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1337 RAISE FND_API.g_exc_unexpected_error;
1338 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1339 RAISE FND_API.g_exc_error;
1340 END IF;
1341 END IF;
1342
1343
1344 -- replace g_miss_char/num/date with current column values
1345
1346 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
1347 check_action_record(
1348 p_action_rec => l_action_rec,
1349 p_complete_rec => l_action_rec,
1350 x_return_status => l_return_status
1351 );
1352
1353 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1354 RAISE FND_API.g_exc_unexpected_error;
1355 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1356 RAISE FND_API.g_exc_error;
1357 END IF;
1358 END IF;
1359
1360
1361 -- Perform the database operation
1362
1363 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1364 THEN
1365 -------------------------------------------
1366 -- choang 07-jan-2000
1367 -- Replace the dbms_output with create_log
1368 -- due to problem with adchkdrv.
1369 -------------------------------------------
1370 AMS_Utility_PVT.Create_Log (
1371 x_return_status => l_return_status,
1372 p_arc_log_used_by => 'LISTACTION',
1373 p_log_used_by_id => TO_CHAR(l_action_rec.list_select_action_id),
1374 p_msg_data => G_PKG_NAME || ' - Update ams_list_actions'
1375 );
1376
1377 END IF;
1378
1379 -- Added by nyostos on Oct 14, 2002
1380 -- Check if the record has changed before updating and set a flag
1381 -- that will be used later to make a callout to Model/Score code.
1382 IF l_action_rec.arc_action_used_by IN ('MODL', 'SCOR') THEN
1383 l_rec_changed := 'N';
1384 check_list_action_changes(l_action_rec, l_rec_changed);
1385 END IF;
1386
1387 UPDATE ams_list_select_actions
1388 SET
1389 last_update_date = sysdate
1390 ,last_updated_by = FND_GLOBAL.User_Id
1391 ,last_update_login = FND_GLOBAL.Conc_Login_Id
1392 ,object_version_number = l_action_rec.object_version_number + 1
1393 ,order_number = l_action_rec.order_number
1394 ,list_action_type = l_action_rec.list_action_type
1395 -- ,incl_object_name = l_action_rec.incl_object_name
1396 ,arc_incl_object_from = l_action_rec.arc_incl_object_from
1397 ,incl_object_id = l_action_rec.incl_object_id
1398 -- ,incl_object_wb_sheet = l_action_rec.incl_object_wb_sheet
1399 -- ,incl_object_wb_owner = l_action_rec.incl_object_wb_owner
1400 ,rank = l_action_rec.rank
1401 ,no_of_rows_available = l_action_rec.no_of_rows_available
1402 ,no_of_rows_requested = l_action_rec.no_of_rows_requested
1403 ,no_of_rows_used = l_action_rec.no_of_rows_used
1404 ,distribution_pct = l_action_rec.distribution_pct
1405 ,result_text = l_action_rec.result_text
1406 ,description = l_action_rec.description
1407 ,incl_control_group = l_action_rec.incl_control_group
1408 ,no_of_rows_targeted = l_action_rec.no_of_rows_targeted
1409 WHERE
1410 list_select_action_id = l_action_rec.list_select_action_id
1411 AND
1412 object_version_number = l_action_rec.object_version_number;
1413
1414
1415 IF (SQL%NOTFOUND) THEN
1416 -- Error, check the msg level and added an error message to the
1417 -- API message list
1418 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1419 THEN -- MMSG
1420 FND_MESSAGE.set_name('AMS', 'API_UNEXP_ERROR_IN_PROCESSING');
1421 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Update_ListAction API', TRUE);
1422 FND_MSG_PUB.Add;
1423 END IF;
1424
1425 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1426 END IF;
1427
1428 -- Added by nyostos on Oct 14, 2002
1429 -- If the Select Action record changed, Call the appropriate Model/Score
1430 -- procedure to check as this may may INVALIDATE the Model if it has
1431 -- already been built or the Scoring Run if it has already run.
1432 IF (l_action_rec.arc_action_used_by IN ('MODL', 'SCOR')) AND l_rec_changed = 'Y' THEN
1433
1434 IF l_action_rec.arc_action_used_by = 'MODL' THEN
1435 AMS_DM_MODEL_PVT.handle_data_selection_changes(l_action_rec.action_used_by_id);
1436 ELSIF l_action_rec.arc_action_used_by = 'SCOR' THEN
1437 AMS_DM_SCORE_PVT.handle_data_selection_changes(l_action_rec.action_used_by_id);
1438 END IF;
1439
1440 END IF;
1441 -- End of addition by nyostos.
1442
1443
1444 -- Standard check of p_commit.
1445 IF FND_API.To_Boolean ( p_commit )
1446 THEN
1447 COMMIT WORK;
1448 END IF;
1449
1450
1451
1452 -- Success Message
1453 -- MMSG
1454 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
1455 THEN
1456 FND_MESSAGE.Set_Name('AMS', 'API_SUCCESS');
1457 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Update_ListAction', TRUE);
1458 FND_MSG_PUB.Add;
1459 END IF;
1460
1461
1462 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1463 THEN
1464 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1465 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Update_ListAction: END', TRUE);
1466 FND_MSG_PUB.Add;
1467 END IF; */
1468
1469
1470 -- Standard call to get message count AND IF count is 1, get message info.
1471 FND_MSG_PUB.Count_AND_Get
1472 ( p_count => x_msg_count,
1473 p_data => x_msg_data,
1474 p_encoded => FND_API.G_FALSE
1475 );
1476
1477 EXCEPTION
1478
1479 WHEN FND_API.G_EXC_ERROR THEN
1480
1481 ROLLBACK TO Update_ListAction_PVT;
1482 x_return_status := FND_API.G_RET_STS_ERROR ;
1483 l_sqlerrm := SQLERRM;
1484 l_sqlcode := SQLCODE;
1485 --dbms_output.put_line('AMS_ListAction_PVT.Update_listaction:'||l_sqlerrm||l_sqlcode);
1486
1487 FND_MSG_PUB.Count_AND_Get
1488 ( p_count => x_msg_count,
1489 p_data => x_msg_data,
1490 p_encoded => FND_API.G_FALSE
1491 );
1492
1493
1494 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1495
1496 ROLLBACK TO Update_ListAction_PVT;
1497 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1498 l_sqlerrm := SQLERRM;
1499 l_sqlcode := SQLCODE;
1500 --dbms_output.put_line('AMS_ListAction_PVT.Update_listaction:'||l_sqlerrm||l_sqlcode);
1501
1502 FND_MSG_PUB.Count_AND_Get
1503 ( p_count => x_msg_count,
1504 p_data => x_msg_data,
1505 p_encoded => FND_API.G_FALSE
1506 );
1507
1508
1509 WHEN OTHERS THEN
1510
1511 ROLLBACK TO Update_ListAction_PVT;
1512 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1513 l_sqlerrm := SQLERRM;
1514 l_sqlcode := SQLCODE;
1515 --dbms_output.put_line('AMS_ListAction_PVT.Update_listaction:'||l_sqlerrm||l_sqlcode);
1516
1517 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1518 THEN
1519 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1520 END IF;
1521
1522 FND_MSG_PUB.Count_AND_Get
1523 ( p_count => x_msg_count,
1524 p_data => x_msg_data,
1525 p_encoded => FND_API.G_FALSE
1526 );
1527
1528 End Update_ListAction;
1529
1530 -- Start of Comments
1531 --------------------------------------------------------------------
1532 -- PROCEDURE
1533 -- Delete_ListAction
1534 --
1535 -- PURPOSE
1536 -- Delete a List Action.
1537 --
1538 -- PARAMETERS
1539 -- p_action_id: the action_id
1540 -- p_object_version: the object_version_number
1541 --
1542 -- NOTES
1543 -- 1. Raise exception if the object_version_number doesn't match.
1544 --------------------------------------------------------------------
1545 -- End Of Comments
1546 PROCEDURE Delete_ListAction
1547 ( p_api_version IN NUMBER,
1548 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1549 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1550 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1551
1552 x_return_status OUT NOCOPY VARCHAR2,
1553 x_msg_count OUT NOCOPY NUMBER,
1554 x_msg_data OUT NOCOPY VARCHAR2,
1555
1556 p_action_id IN NUMBER
1557 ) IS
1558
1559 l_api_name CONSTANT VARCHAR2(30) := 'Delete_ListAction';
1560 l_api_version CONSTANT NUMBER := 1.0;
1561
1562 -- Status Local Variables
1563 l_return_status VARCHAR2(1); -- Return value from procedures
1564 l_init_action_rec action_rec_type;
1565 l_complete_action_rec action_rec_type;
1566 l_init_list_header_rec AMS_ListHeader_PVT.list_header_rec_type;
1567 l_complete_list_header_rec AMS_ListHeader_PVT.list_header_rec_type;
1568 BEGIN
1569
1570 -- Standard Start of API savepoint
1571 SAVEPOINT Delete_ListAction_PVT;
1572
1573 -- Standard call to check for call compatibility.
1574 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1575 p_api_version,
1576 l_api_name,
1577 G_PKG_NAME)
1578 THEN
1579 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1580 END IF;
1581
1582
1583
1584 -- Initialize message list IF p_init_msg_list is set to TRUE.
1585 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1586 FND_MSG_PUB.initialize;
1587 END IF;
1588
1589 -- Debug Message
1590 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1591 THEN
1592 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1593 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Delete_ListAction: Start', TRUE);
1594 FND_MSG_PUB.Add;
1595 END IF; */
1596
1597 IF (AMS_DEBUG_HIGH_ON) THEN
1598 AMS_Utility_PVT.debug_message(l_api_name||': Start ');
1599 END IF;
1600
1601
1602 -- Initialize API return status to success
1603 x_return_status := FND_API.G_RET_STS_SUCCESS;
1604
1605
1606 -- Perform the database operation
1607
1608 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1609 THEN
1610 NULL;
1611 --dbms_output.put_line('AMS_List_SelectAction_PVT - DELETE FROM ams_list_select_actions');
1612 END IF;
1613
1614 /* Delete from ams_list_entries
1615 where list_select_action_id = p_action_id;
1616 */
1617
1618
1619 init_action_rec(x_action_rec => l_init_action_rec);
1620 l_init_action_rec.list_select_action_id := p_action_id;
1621
1622 -- replace g_miss_char/num/date with current column values
1623 complete_action_rec(l_init_action_rec, l_complete_action_rec);
1624
1625 IF (l_complete_action_rec.arc_action_used_by='LIST')
1626 THEN
1627
1628 AMS_ListHeader_PVT.Init_ListHeader_rec(x_listheader_rec => l_init_list_header_rec);
1629 l_init_list_header_rec.list_header_id:=l_complete_action_rec.action_used_by_id;
1630
1631 -- replace g_miss_char/num/date with current column values
1632 AMS_ListHeader_PVT.Complete_ListHeader_rec(l_init_list_header_rec, l_complete_list_header_rec);
1633
1634 -- allow delete only if list header status is Draft/ Scheduled/Available/Cancelled
1635 -- donot allow delete if list header status is generating,locked,archived,expired
1636 -- call reset_status in listheader pvt this will cancel the workflow and change the staus to draft
1637
1638 IF (l_complete_list_header_rec.status_code='CANCELLED') OR
1639 (l_complete_list_header_rec.status_code='DRAFT') OR
1640 (l_complete_list_header_rec.status_code='AVAILABLE')OR
1641 (l_complete_list_header_rec.status_code='SCHEDULED')
1642 THEN
1643 DELETE FROM ams_list_select_actions
1644 WHERE list_select_action_id = p_action_id;
1645
1646 -- AMS_ListHeader_PVT.Reset_Status(l_complete_list_header_rec.action_used_by_id,)
1647
1648 ELSIF(l_complete_list_header_rec.status_code='GENERATING') OR
1649 (l_complete_list_header_rec.status_code='LOCKED') OR
1650 (l_complete_list_header_rec.status_code='ARCHIVED') OR
1651 (l_complete_list_header_rec.status_code='EXPIRED')
1652 THEN
1653 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1654 THEN
1655 FND_MESSAGE.set_name('AMS', 'AMS_LIST_ACTION_NO_DEL');
1656 FND_MSG_PUB.add;
1657 END IF;
1658
1659 x_return_status := FND_API.g_ret_sts_error;
1660 RAISE FND_API.G_EXC_ERROR;
1661 -- RETURN;
1662 END IF;
1663
1664 ELSIF (l_complete_action_rec.arc_action_used_by='MODL')
1665 THEN
1666
1667 DELETE FROM ams_list_select_actions
1668 WHERE list_select_action_id = p_action_id;
1669
1670 -- Added on Oct 14, 2002 by nyostos
1671 -- call the plugin to update the model status
1672 AMS_DM_MODEL_PVT.handle_data_selection_changes(l_complete_action_rec.action_used_by_id);
1673
1674 ELSIF (l_complete_action_rec.arc_action_used_by='SCOR')
1675 THEN
1676 /* call the plugin to update the model status ??*/
1677 DELETE FROM ams_list_select_actions
1678 WHERE list_select_action_id = p_action_id;
1679
1680 -- Added on Oct 14, 2002 by nyostos
1681 -- call the plugin to update the model status
1682 AMS_DM_SCORE_PVT.handle_data_selection_changes(l_complete_action_rec.action_used_by_id);
1683
1684 END IF; --l_complete_action_rec.arc_action_used_by='LIST'
1685
1686 --
1687 -- END of API body.
1688 --
1689
1690 -- Standard check of p_commit.
1691 IF FND_API.To_Boolean ( p_commit )
1692 THEN
1693 COMMIT WORK;
1694 END IF;
1695
1696 -- Success Message
1697 -- MMSG
1698 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
1699 THEN
1700 FND_MESSAGE.Set_Name('AMS', 'API_SUCCESS');
1701 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Delete_ListAction', TRUE);
1702 FND_MSG_PUB.Add;
1703 END IF;
1704
1705
1706 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1707 THEN
1708 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1709 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Delete_ListAction: END', TRUE);
1710 FND_MSG_PUB.Add;
1711 END IF; */
1712
1713
1714 -- Standard call to get message count AND IF count is 1, get message info.
1715 FND_MSG_PUB.Count_AND_Get
1716 ( p_count => x_msg_count,
1717 p_data => x_msg_data,
1718 p_encoded => FND_API.G_FALSE
1719 );
1720
1721 EXCEPTION
1722
1723 WHEN FND_API.G_EXC_ERROR THEN
1724
1725 ROLLBACK TO Delete_ListAction_PVT;
1726 x_return_status := FND_API.G_RET_STS_ERROR ;
1727
1728 FND_MSG_PUB.Count_AND_Get
1729 ( p_count => x_msg_count,
1730 p_data => x_msg_data,
1731 p_encoded => FND_API.G_FALSE
1732 );
1733
1734 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1735
1736 ROLLBACK TO Delete_ListAction_PVT;
1737 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1738
1739 FND_MSG_PUB.Count_AND_Get
1740 ( p_count => x_msg_count,
1741 p_data => x_msg_data,
1742 p_encoded => FND_API.G_FALSE
1743 );
1744
1745
1746 WHEN OTHERS THEN
1747
1748 ROLLBACK TO Delete_ListAction_PVT;
1749 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1750
1751 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1752 THEN
1753 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1754 END IF;
1755
1756 FND_MSG_PUB.Count_AND_Get
1757 ( p_count => x_msg_count,
1758 p_data => x_msg_data,
1759 p_encoded => FND_API.G_FALSE
1760 );
1761
1762
1763 END Delete_ListAction;
1764
1765 -- Start of Comments
1766 -------------------------------------------------------------------
1767 -- PROCEDURE
1768 -- Lock_ListAction
1769 --
1770 -- PURPOSE
1771 -- Lock a List Action.
1772 --
1773 -- PARAMETERS
1774 -- p_action_id: the action_id
1775 -- p_object_version: the object_version_number
1776 --
1777 -- NOTES
1778 -- 1. Raise exception if the object_version_number doesn't match.
1779 --------------------------------------------------------------------
1780 -- End Of Comments
1781 PROCEDURE Lock_ListAction
1782 ( p_api_version IN NUMBER,
1783 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1784 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1785
1786 x_return_status OUT NOCOPY VARCHAR2,
1787 x_msg_count OUT NOCOPY NUMBER,
1788 x_msg_data OUT NOCOPY VARCHAR2,
1789
1790 p_action_id IN NUMBER,
1791 p_object_version IN NUMBER
1792 ) IS
1793
1794
1795 l_api_name CONSTANT VARCHAR2(30) := 'Lock_ListAction';
1796 l_api_version CONSTANT NUMBER := 1.0;
1797
1798 -- Status Local Variables
1799 l_return_status VARCHAR2(1); -- Return value from procedures
1800
1801 CURSOR c_list_actions IS
1802 SELECT list_select_action_id
1803 FROM ams_list_select_actions
1804 WHERE list_select_action_id = p_action_id
1805 AND object_version_number = p_object_version
1806 FOR UPDATE OF list_select_action_id NOWAIT;
1807
1808 l_list_select_action_id number;
1809
1810 BEGIN
1811
1812
1813 -- Standard call to check for call compatibility.
1814 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1815 p_api_version,
1816 l_api_name,
1817 G_PKG_NAME)
1818 THEN
1819 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1820 END IF;
1821
1822
1823
1824 -- Initialize message list if p_init_msg_list is set to TRUE.
1825 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1826 FND_MSG_PUB.initialize;
1827 END IF;
1828
1829
1830 -- Debug Message
1831 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1832 THEN
1833 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1834 FND_MESSAGE.Set_Token('ROW', 'AMS_ListAction_PVT.Lock_ListAction: Start', TRUE);
1835 FND_MSG_PUB.Add;
1836 END IF; */
1837
1838 IF (AMS_DEBUG_HIGH_ON) THEN
1839 AMS_Utility_PVT.debug_message(l_api_name||': Start ');
1840 END IF;
1841
1842 -- Initialize API return status to success
1843 x_return_status := FND_API.G_RET_STS_SUCCESS;
1844
1845 OPEN c_list_actions;
1846 FETCH c_list_actions INTO l_list_select_action_id;
1847 IF (c_list_actions%NOTFOUND) THEN
1848 CLOSE c_list_actions;
1849 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1850 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1851 FND_MSG_PUB.add;
1852 END IF;
1853 RAISE FND_API.g_exc_error;
1854 END IF;
1855 CLOSE c_list_actions;
1856
1857
1858 -- Success Message
1859 -- MMSG
1860 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
1861 THEN
1862 FND_MESSAGE.Set_Name('AMS', 'API_SUCCESS');
1863 FND_MESSAGE.Set_Token('ROW', 'AMS_listheader_PVT.Lock_ListAction', TRUE);
1864 FND_MSG_PUB.Add;
1865 END IF;
1866
1867
1868 /* ckapoor IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH)
1869 THEN
1870 FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
1871 FND_MESSAGE.Set_Token('ROW', 'AMS_listheader_PVT.Lock_ListAction: END', TRUE);
1872 FND_MSG_PUB.Add;
1873 END IF; */
1874
1875 -- Standard call to get message count AND IF count is 1, get message info.
1876 FND_MSG_PUB.Count_AND_Get
1877 ( p_count => x_msg_count,
1878 p_data => x_msg_data,
1879 p_encoded => FND_API.G_FALSE
1880 );
1881
1882
1883
1884 EXCEPTION
1885
1886 WHEN FND_API.G_EXC_ERROR THEN
1887
1888 x_return_status := FND_API.G_RET_STS_ERROR ;
1889
1890 FND_MSG_PUB.Count_AND_Get
1891 ( p_count => x_msg_count,
1892 p_data => x_msg_data,
1893 p_encoded => FND_API.G_FALSE
1894 );
1895
1896
1897 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1898
1899 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1900
1901 FND_MSG_PUB.Count_AND_Get
1902 ( p_count => x_msg_count,
1903 p_data => x_msg_data,
1904 p_encoded => FND_API.G_FALSE
1905 );
1906
1907 WHEN AMS_Utility_PVT.RESOURCE_LOCKED THEN
1908
1909 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1910
1911 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1912 THEN -- MMSG
1913 FND_MESSAGE.SET_NAME('AMS','API_RESOURCE_LOCKED');
1914 FND_MSG_PUB.Add;
1915 END IF;
1916
1917 FND_MSG_PUB.Count_AND_Get
1918 ( p_count => x_msg_count,
1919 p_data => x_msg_data,
1920 p_encoded => FND_API.G_FALSE
1921 );
1922
1923 WHEN OTHERS THEN
1924
1925 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1926
1927 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1928 THEN
1929 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1930 END IF;
1931
1932 FND_MSG_PUB.Count_AND_Get
1933 ( p_count => x_msg_count,
1934 p_data => x_msg_data,
1935 p_encoded => FND_API.G_FALSE
1936 );
1937
1938 END Lock_ListAction;
1939
1940 ---------------------------------------------------------------------
1941 -- PROCEDURE
1942 -- init_action_rec
1943 --
1944 -- HISTORY
1945 -- 10/01/99 tdonohoe Created.
1946 ---------------------------------------------------------------------
1947 PROCEDURE init_action_rec(
1948 x_action_rec OUT NOCOPY action_rec_type
1949 )
1950 IS
1951 BEGIN
1952
1953 x_action_rec.list_select_action_id := FND_API.g_miss_num;
1954 x_action_rec.last_update_date := FND_API.g_miss_date;
1955 x_action_rec.last_updated_by := FND_API.g_miss_num;
1956 x_action_rec.creation_date := FND_API.g_miss_date;
1957 x_action_rec.created_by := FND_API.g_miss_num;
1958 x_action_rec.last_update_login := FND_API.g_miss_num;
1959 x_action_rec.object_version_number := FND_API.g_miss_num;
1960 x_action_rec.order_number := FND_API.g_miss_num;
1961 x_action_rec.list_action_type := FND_API.g_miss_char;
1962 x_action_rec.arc_incl_object_from := FND_API.g_miss_char;
1963 x_action_rec.incl_object_id := FND_API.g_miss_num;
1964 /* x_action_rec.INCL_OBJECT_NAME := FND_API.g_miss_char;
1965 x_action_rec.INCL_OBJECT_WB_SHEET := FND_API.g_miss_char;
1966 x_action_rec.INCL_OBJECT_WB_OWNER := FND_API.g_miss_num;
1967 x_action_rec.INCL_OBJECT_CELL_CODE := FND_API.g_miss_char;
1968 */
1969 x_action_rec.rank := FND_API.g_miss_num;
1970 x_action_rec.no_of_rows_available := FND_API.g_miss_num;
1971 x_action_rec.no_of_rows_requested := FND_API.g_miss_num;
1972 x_action_rec.no_of_rows_used := FND_API.g_miss_num;
1973 x_action_rec.distribution_pct := FND_API.g_miss_num;
1974 x_action_rec.result_text := FND_API.g_miss_char;
1975 x_action_rec.description := FND_API.g_miss_char;
1976 x_action_rec.arc_action_used_by := FND_API.g_miss_char;
1977 x_action_rec.action_used_by_id := FND_API.g_miss_num;
1978 x_action_rec.incl_control_group := FND_API.g_miss_char;
1979 x_action_rec.no_of_rows_targeted := FND_API.g_miss_num;
1980
1981
1982 End Init_Action_Rec;
1983
1984 ---------------------------------------------------------------------
1985 -- PROCEDURE
1986 -- complete_action_rec
1987 --
1988 -- HISTORY
1989 -- 10/01/99 tdonohoe Created.
1990 ---------------------------------------------------------------------
1991 PROCEDURE complete_action_rec(
1992 p_action_rec IN action_rec_type,
1993 x_complete_rec OUT NOCOPY action_rec_type
1994 )
1995 IS
1996
1997 CURSOR c_action IS
1998 SELECT *
1999 FROM ams_list_select_actions
2000 WHERE list_select_action_id = p_action_rec.list_select_action_id;
2001
2002 l_action_rec c_action%ROWTYPE;
2003
2004 BEGIN
2005
2006 x_complete_rec := p_action_rec;
2007
2008 OPEN c_action;
2009 FETCH c_action INTO l_action_rec;
2010 IF c_action%NOTFOUND THEN
2011 CLOSE c_action;
2012 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2013 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
2014 FND_MSG_PUB.add;
2015 END IF;
2016 RAISE FND_API.g_exc_error;
2017 END IF;
2018 CLOSE c_action;
2019
2020
2021 IF p_action_rec.list_select_action_id = FND_API.g_miss_num THEN
2022 x_complete_rec.list_select_action_id := l_action_rec.list_select_action_id;
2023 END IF;
2024
2025 IF p_action_rec.last_update_date = FND_API.g_miss_date THEN
2026 x_complete_rec.last_update_date := l_action_rec.last_update_date;
2027 END IF;
2028
2029 IF p_action_rec.last_updated_by = FND_API.g_miss_num THEN
2030 x_complete_rec.last_updated_by := l_action_rec.last_updated_by;
2031 END IF;
2032
2033 IF p_action_rec.creation_date = FND_API.g_miss_date THEN
2034 x_complete_rec.creation_date := l_action_rec.creation_date;
2035 END IF;
2036
2037 IF p_action_rec.created_by = FND_API.g_miss_num THEN
2038 x_complete_rec.created_by := l_action_rec.created_by;
2039 END IF;
2040
2041 IF p_action_rec.last_update_login = FND_API.g_miss_num THEN
2042 x_complete_rec.last_update_login := l_action_rec.last_update_login;
2043 END IF;
2044
2045 IF p_action_rec.object_version_number = FND_API.g_miss_num THEN
2046 x_complete_rec.object_version_number := l_action_rec.object_version_number;
2047 END IF;
2048
2049
2050 IF p_action_rec.order_number = FND_API.g_miss_num THEN
2051 x_complete_rec.order_number := l_action_rec.order_number;
2052 END IF;
2053
2054 IF p_action_rec.list_action_type = FND_API.g_miss_char THEN
2055 x_complete_rec.list_action_type := l_action_rec.list_action_type;
2056 END IF;
2057
2058
2059 IF p_action_rec.arc_incl_object_from = FND_API.g_miss_char THEN
2060 x_complete_rec.arc_incl_object_from := l_action_rec.arc_incl_object_from;
2061 END IF;
2062
2063 IF p_action_rec.incl_object_id = FND_API.g_miss_num THEN
2064 x_complete_rec.incl_object_id := l_action_rec.incl_object_id;
2065 END IF;
2066
2067 /*
2068 IF p_action_rec.INCL_OBJECT_NAME = FND_API.g_miss_char THEN
2069 x_complete_rec.INCL_OBJECT_NAME := l_action_rec.INCL_OBJECT_NAME;
2070 END IF;
2071
2072 IF p_action_rec.INCL_OBJECT_WB_SHEET = FND_API.g_miss_char THEN
2073 x_complete_rec.INCL_OBJECT_WB_SHEET := l_action_rec.INCL_OBJECT_WB_SHEET;
2074 END IF;
2075
2076 IF p_action_rec.INCL_OBJECT_WB_OWNER = FND_API.g_miss_num THEN
2077 x_complete_rec.INCL_OBJECT_WB_OWNER := l_action_rec.INCL_OBJECT_WB_OWNER;
2078 END IF;
2079
2080 IF p_action_rec.INCL_OBJECT_CELL_CODE = FND_API.g_miss_char THEN
2081 x_complete_rec.INCL_OBJECT_CELL_CODE := l_action_rec.INCL_OBJECT_CELL_CODE;
2082 END IF;
2083 */
2084 IF p_action_rec.rank = FND_API.g_miss_num THEN
2085 x_complete_rec.rank := l_action_rec.rank ;
2086 END IF;
2087
2088 IF p_action_rec.no_of_rows_available = FND_API.g_miss_num THEN
2089 x_complete_rec.no_of_rows_available := l_action_rec.no_of_rows_available;
2090 END IF;
2091
2092 IF p_action_rec.no_of_rows_requested = FND_API.g_miss_num THEN
2093 x_complete_rec.no_of_rows_requested := l_action_rec.no_of_rows_requested;
2094 END IF;
2095
2096 IF p_action_rec.no_of_rows_used = FND_API.g_miss_num THEN
2097 x_complete_rec.no_of_rows_used := l_action_rec.no_of_rows_used;
2098 END IF;
2099
2100 IF p_action_rec.distribution_pct = FND_API.g_miss_num THEN
2101 x_complete_rec.distribution_pct := l_action_rec.distribution_pct;
2102 END IF;
2103
2104 IF p_action_rec.result_text = FND_API.g_miss_char THEN
2105 x_complete_rec.result_text := l_action_rec.result_text;
2106 END IF;
2107
2108 IF p_action_rec.description = FND_API.g_miss_char THEN
2109 x_complete_rec.description := l_action_rec.description;
2110 END IF;
2111
2112
2113 IF p_action_rec.arc_action_used_by = FND_API.g_miss_char THEN
2114 x_complete_rec.arc_action_used_by := l_action_rec.arc_action_used_by;
2115 END IF;
2116
2117 IF p_action_rec.action_used_by_id = FND_API.g_miss_num THEN
2118 x_complete_rec.action_used_by_id := l_action_rec.action_used_by_id;
2119 END IF;
2120
2121 IF p_action_rec.incl_control_group= FND_API.g_miss_char THEN
2122 x_complete_rec.incl_control_group:= l_action_rec.incl_control_group;
2123 END IF;
2124 IF p_action_rec.no_of_rows_targeted = FND_API.g_miss_num THEN
2125 x_complete_rec.no_of_rows_targeted := l_action_rec.no_of_rows_targeted;
2126 END IF;
2127
2128
2129 END complete_action_rec;
2130
2131 ---------------------------------------------------------------------
2132 -- PROCEDURE
2133 -- check_list_action_changes
2134 --
2135 -- HISTORY
2136 -- 14-Oct-2002 nyostos Check if the list select action has changed
2137 -- and then make a callout to Model/Score code
2138 -- to Invalidate if appropraite.
2139 ---------------------------------------------------------------------
2140 PROCEDURE check_list_action_changes(
2141 p_action_rec IN action_rec_type,
2142 x_rec_changed OUT NOCOPY VARCHAR2
2143 )
2144 IS
2145 CURSOR c_action IS
2146 SELECT *
2147 FROM ams_list_select_actions
2148 WHERE list_select_action_id = p_action_rec.list_select_action_id;
2149
2150 l_ref_action c_action%ROWTYPE;
2151
2152 BEGIN
2153
2154 -- Initialize record changed flag to 'N'
2155 x_rec_changed := 'N';
2156
2157 -- Open cursor to get the reference action record.
2158 OPEN c_action;
2159 FETCH c_action INTO l_ref_action;
2160 CLOSE c_action;
2161
2162 -- order_number
2163 IF (l_ref_action.order_number IS NULL AND p_action_rec.order_number IS NOT NULL) OR
2164 (l_ref_action.order_number <> p_action_rec.order_number) THEN
2165 x_rec_changed := 'Y';
2166 RETURN;
2167 END IF;
2168
2169 -- list_action_type
2170 IF (l_ref_action.list_action_type IS NULL AND p_action_rec.list_action_type IS NOT NULL) OR
2171 (l_ref_action.list_action_type <> p_action_rec.list_action_type) THEN
2172 x_rec_changed := 'Y';
2173 RETURN;
2174 END IF;
2175
2176 -- arc_incl_object_from
2177 IF (l_ref_action.arc_incl_object_from IS NULL AND p_action_rec.arc_incl_object_from IS NOT NULL) OR
2178 (l_ref_action.arc_incl_object_from <> p_action_rec.arc_incl_object_from) THEN
2179 x_rec_changed := 'Y';
2180 RETURN;
2181 END IF;
2182
2183 -- incl_object_id
2184 IF (l_ref_action.incl_object_id IS NULL AND p_action_rec.incl_object_id IS NOT NULL) OR
2185 (l_ref_action.incl_object_id <> p_action_rec.incl_object_id) THEN
2186 x_rec_changed := 'Y';
2187 RETURN;
2188 END IF;
2189
2190 END check_list_action_changes;
2191
2192 END AMS_ListAction_PVT;