[Home] [Help]
PACKAGE BODY: APPS.PA_TASK_PROG_ACTSET
Source
1 PACKAGE BODY PA_TASK_PROG_ACTSET AS
2 --$Header: PAASTPB.pls 115.15 2003/04/08 18:46:36 mwasowic noship $
3
4
5
6 PROCEDURE process_action_set (
7 p_action_set_type_code IN pa_action_sets.action_set_type_code%TYPE := 'PA_TASK_PROGRESS'
8 , p_action_set_id IN NUMBER
9 , p_action_set_template_flag IN pa_action_sets.action_set_template_flag%TYPE :=NULL
10 , x_return_status OUT NOCOPY VARCHAR2
11 ) IS
12 l_line_number_tbl pa_action_set_utils.number_tbl_type;
13 l_line_id_tbl pa_action_set_utils.number_tbl_type;
14 l_line_cond_id_tbl pa_action_set_utils.number_tbl_type;
15 l_line_cond_date_tbl pa_action_set_utils.date_tbl_type;
16 l_return_status VARCHAR2(1):= 'S';
17 l_loop_cnt NUMBER;
18
19 BEGIN
20 PA_DEBUG.init_err_stack('PA_TASK_PROG_ACTSET.process_action_set');
21 PA_DEBUG.WRITE_LOG(x_Module => 'pa.plsql.PA_TASK_PROG_ACTSET.process_action_set.begin'
22 ,x_Msg => 'in PA_TASK_PROG_ACTSET.process_action_set'
23 ,x_Log_Level => 6);
24
25 --initialize return status
26 x_return_status := l_return_status;
27 --per Xiaoyuan: always return S because errors are ignored and action set
28 --is added - even without lines Aug 21,2002, bug 2521929
29 IF p_action_set_id is NULL THEN
30 --PA_UTILS.Add_Message (p_app_short_name => 'PA'
31 -- ,p_msg_name => 'PA_NULL_ACTION_SET_ID');
32 --x_return_status := 'E';
33 --dbms_output.put_line('IN pa_task_prog_actset.process_action_set, p_action_set_id is NULL');
34 return;
35 END IF;
36
37 -- get all action lines and conditions of the object
38 SELECT line.action_set_line_id,
39 cond.action_set_line_condition_id
40 BULK COLLECT INTO l_line_id_tbl,
41 l_line_cond_id_tbl
42 FROM pa_action_set_lines line,
43 pa_action_set_line_cond cond
44 WHERE line.action_set_id = p_action_set_id
45 AND line.action_set_line_id = cond.action_set_line_id;
46 --FORALL loop_cnt IN l_line_id_tbl.FIRST .. l_line_id_tbl.LAST
47
48 IF l_line_id_tbl.count > 0 THEN
49 FOR loop_cnt IN l_line_id_tbl.FIRST .. l_line_id_tbl.LAST LOOP
50 l_line_number_tbl(loop_cnt) := loop_cnt;
51 END LOOP;
52
53 --order lines for both template and project action set
54 PA_ACTION_SETS_PVT.Bulk_Update_Line_Number(
55 p_action_set_line_id_tbl => l_line_id_tbl
56 ,p_line_number_tbl => l_line_number_tbl
57 ,x_return_status => x_return_status
58 );
59
60 END IF;
61
62 --if (p_action_set_template_flag = 'N') then
63 -- FOR loop_cnt IN l_line_cond_id_tbl.FIRST .. l_line_cond_id_tbl.LAST LOOP
64 -- l_line_cond_date_tbl(loop_cnt) := sysdate;
65 -- END LOOP;
66 --
67 -- PA_ACTION_SETS_PVT.Bulk_Update_Condition_Date(
68 -- p_action_line_condition_id_tbl => l_line_cond_id_tbl
69 -- ,p_condition_date_tbl => l_line_cond_date_tbl
70 -- ,x_return_status => l_return_status
71 -- );
72 -- END IF;
73
74 PA_DEBUG.RESET_ERR_STACK;
75 return;
76
77 -- Put any message text from message stack into the Message ARRAY
78 EXCEPTION
79 WHEN OTHERS THEN
80 -- Set the excetption Message and the stack
81 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_PROG_ACTSET.process_action_set'
82 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
83 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
84 RAISE;
85
86 END process_action_set;
87 /*===================================================================================*/
88 PROCEDURE perform_action_set_line(
89 p_action_set_type_code IN VARCHAR2 := 'PA_TASK_PROGRESS'
90 ,p_action_set_details_rec IN pa_action_sets%ROWTYPE
91 ,p_action_set_line_rec IN pa_action_set_lines%ROWTYPE
92 ,p_action_line_conditions_tbl IN pa_action_set_utils.action_line_cond_tbl_type
93 ,x_action_line_audit_tbl OUT NOCOPY pa_action_set_utils.insert_audit_lines_tbl_type
94 ,x_action_line_result_code OUT NOCOPY VARCHAR2)
95 IS
96 CURSOR c_proj_info(cp_project_id NUMBER) IS
97 SELECT p.start_date proj_start_date,
98 p.project_status_code proj_status_code
99 FROM pa_projects_all p
100 WHERE p.project_id = cp_project_id;
101
102 cp_proj_info c_proj_info%ROWTYPE;
103 l_api_name VARCHAR2(30) := 'PA_TASK_PROG_ACTSET';
104 l_project_id NUMBER;
105 l_proj_start_date DATE;
106 l_project_status VARCHAR2(30);
107 l_action_is_repeating BOOLEAN := TRUE;
108 l_return_status VARCHAR2(1);
109 l_msg_count NUMBER := 0;
110 l_msg_data VARCHAR2(2000);
111
112 BEGIN
113 PA_DEBUG.init_err_stack('PA_TASK_PROG_ACTSET.process_action_set');
114 PA_DEBUG.WRITE_LOG(x_Module => 'pa.plsql.PA_TASK_PROG_ACTSET.perform_action_set_line.begin'
115 ,x_Msg => 'in PA_TASK_PROG_ACTSET.perform_action_set_line'
116 ,x_Log_Level => 6);
117
118 x_action_line_result_code := pa_action_set_utils.G_NOT_PERFORMED ;
119
120 if validate_action_type_code(p_action_set_type_code) = FALSE then
121 PA_ACTION_SET_UTILS.Add_Message(
122 p_app_short_name => 'PA'
123 ,p_msg_name => 'PA_AS_INVALID_ACTION_TYPE');
124 PA_DEBUG.RESET_ERR_STACK;
125 return;
126 end if;
127 l_project_id := p_action_set_details_rec.object_id; --2643
128 --get_project_id(p_action_set_type_code,p_action_set_line_rec);
129 if (l_project_id is null or l_project_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) then
130 PA_ACTION_SET_UTILS.Add_Message(
131 p_app_short_name => 'PA'
132 ,p_msg_name => 'PA_NO_PROJECT_ID');
133 PA_DEBUG.RESET_ERR_STACK;
134 return;
135 end if ;
136
137 OPEN c_proj_info(l_project_id);
138 FETCH c_proj_info INTO cp_proj_info;
139 if c_proj_info%NOTFOUND then
140 close c_proj_info;
141 PA_ACTION_SET_UTILS.Add_Message(
142 p_app_short_name => 'PA'
143 ,p_msg_name => 'PA_NO_PROJECT_ID');
144 PA_DEBUG.RESET_ERR_STACK;
145 return;
146 end if ;
147 l_project_status := cp_proj_info.proj_status_code;
148 l_proj_start_date := cp_proj_info.proj_start_date;
149
150
151 if (action_allowed_for_status(l_project_id,l_project_status) = FALSE) then
152 PA_DEBUG.RESET_ERR_STACK;
153 return;
154 end if;
155
156 --When task prog reminder date is in the past, bring it up to date
157 PA_PROGRESS_UTILS.ADJUST_REMINDER_DATE(p_commit => FND_API.G_TRUE,
158 p_project_id => l_project_id,
159 x_return_status => l_return_status,
160 x_msg_count => l_msg_count,
161 x_msg_data => l_msg_data);
162
163 --per Xiouyuan,hard-coding statu code, bug 2383406
164 if p_action_set_line_rec.status_code = 'REVERSE_PENDING' then
165 x_action_line_result_code := pa_action_set_utils.G_REVERSED_DEFAULT_AUDIT;
166 else
167 if ok_to_perform_action(l_project_id,l_proj_start_date) then
168 l_msg_count := 0;
169 PA_TASK_PROG_INQUIRY_PKG.request_all_tasks_in_project(
170 p_commit => fnd_api.g_true,
171 p_validate_only => fnd_api.g_false,
172 p_project_id => l_project_id,
173 x_action_line_audit_tbl => x_action_line_audit_tbl,
174 x_return_status => l_return_status,
175 x_msg_count => l_msg_count,
176 x_msg_data => l_msg_data);
177 --x_action_line_audit_tbl := PA_TASK_PROG_ACTSET.g_action_line_audit_tbl;
178 l_action_is_repeating := is_action_repeating(p_action_line_conditions_tbl);
179 if (l_action_is_repeating) then
180 /*Don't set the staus to "Complete", it's a repeating action */
181 x_action_line_result_code := pa_action_set_utils.G_PERFORMED_ACTIVE;
182 else
183 x_action_line_result_code := pa_action_set_utils.G_PERFORMED_COMPLETE;
184 end if;
185 end if;
186 end if;
187 PA_DEBUG.RESET_ERR_STACK;
188 return;
189 EXCEPTION
190 WHEN OTHERS THEN
191 -- Set the excetption Message and the stack
192 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_PROG_ACTSET.peform_action_set_line'
193 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
194 x_action_line_result_code := pa_action_set_utils.G_NOT_PERFORMED;
195 RAISE;
196
197 END perform_action_set_line;
198 /*-----------------------------------------------------------------------------------*/
199 FUNCTION validate_action_type_code (
200 p_action_set_type_code IN VARCHAR2
201 ) return BOOLEAN
202 IS
203 BEGIN
204 if (p_action_set_type_code is NULL) then
205 return FALSE;
206 end if;
207
208 if (p_action_set_type_code = 'PA_TASK_PROGRESS') then
209 return TRUE;
210 else
211 return FALSE;
212 end if;
213
214 END validate_action_type_code;
215
216
217 /*-----------------------------------------------------------------------------------*/
218 FUNCTION action_allowed_for_status (
219 p_project_id IN NUMBER
220 ,p_project_status IN VARCHAR2
221 ) return BOOLEAN
222
223 IS
224 --l_project_status VARCHAR2(30);--mwxx REMOVE!!!
225 BEGIN
226
227 PA_DEBUG.init_err_stack('PA_TASK_PROG_ACTSET.action_allowed_for_status');
228 PA_DEBUG.WRITE_LOG(x_Module => 'pa.plsql.PA_TASK_PROG_ACTSET.action_allowed_for_status.begin'
229 ,x_Msg => 'in PA_TASK_PROG_ACTSET.action_allowed_for_status'
230 ,x_Log_Level => 6);
231
232 --l_project_status := 'APPROVED'; --mwxx REMOVE!!!
233 if PA_PROJECT_UTILS.check_prj_stus_action_allowed
234 (p_project_status,'PA_TASK_PROGRESS') <> 'Y' then
235 PA_DEBUG.RESET_ERR_STACK;
236 return FALSE;
237 --return TRUE; --mwx REMOVE!!
238
239 end if;
240 PA_DEBUG.RESET_ERR_STACK;
241 return TRUE ;
242 EXCEPTION
243 WHEN OTHERS THEN
244 RAISE;
245
246 -- FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_PROG_ACTSET.action_allowed_for_status'
247 -- ,p_procedure_name => PA_DEBUG.G_Err_Stack );
248
249 END action_allowed_for_status;
250 /*----------------------------------------------------------------------------------*/
251 FUNCTION ok_to_perform_action (
252 p_project_id IN NUMBER
253 ,p_proj_start_date IN DATE
254 ) return BOOLEAN
255 IS
256 l_sysdate DATE := TRUNC(sysdate);
257
258 CURSOR c_proj_date(cp_project_id NUMBER) IS
259 SELECT next_reporting_date report_date
260 FROM pa_object_page_layouts
261 WHERE TRUNC(next_reporting_date) = l_sysdate
262 AND object_id = cp_project_id
263 AND object_type = 'PA_PROJECTS'
264 AND page_type_code = 'TPR';
265
266 cp_proj_date c_proj_date%ROWTYPE;
267 BEGIN
268
269 PA_DEBUG.init_err_stack('PA_TASK_PROG_ACTSET.ok_to_perform_action');
270 PA_DEBUG.WRITE_LOG(x_Module => 'pa.plsql.PA_TASK_PROG_ACTSET.ok_to_perform_action.begin'
271 ,x_Msg => 'in PA_TASK_PROG_ACTSET.ok_to_perform_action'
272 ,x_Log_Level => 6);
273
274
275 if (TRUNC(p_proj_start_date) > l_sysdate) then
276 return FALSE;
277 end if;
278
279 OPEN c_proj_date(p_project_id);
280 FETCH c_proj_date INTO cp_proj_date;
281 if c_proj_date%NOTFOUND then
282 close c_proj_date;
283 PA_DEBUG.RESET_ERR_STACK;
284 return FALSE;
285 else
286 PA_DEBUG.RESET_ERR_STACK;
287 return TRUE ;
288 end if ;
289
290 EXCEPTION
291 WHEN OTHERS THEN
292 RAISE;
293
294 -- Set the excetption Message and the stack
295 --FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_PROG_ACTSET.ok_to_perform_action'
296 -- ,p_procedure_name => PA_DEBUG.G_Err_Stack );
297
298 END ok_to_perform_action;
299 /*-----------------------------------------------------------------------------*/
300 FUNCTION is_action_repeating(
301 p_action_line_conditions_tbl pa_action_set_utils.action_line_cond_tbl_type) return BOOLEAN
302 IS
303 BEGIN
304 --if (p_action_line_conditions_tbl(0).condition_attribute2 is NULL) then
305 -- return FALSE;
306 --end if;
307 return TRUE;
308 END is_action_repeating;
309
310
311 PROCEDURE copy_action_sets(
312 p_project_id_from IN NUMBER
313 ,p_project_id_to IN NUMBER
314 ,x_return_status OUT NOCOPY VARCHAR2
315 ,x_msg_count OUT NOCOPY NUMBER
316 ,x_msg_data OUT NOCOPY VARCHAR2) IS
317
318 Cursor task_reminder_action_set
319 is
320 /*
321 Select action_set_id
322 from pa_action_sets
323 where object_type = 'PA_PROJECTS'
324 and object_id = p_project_id_from;
325 */
326 SELECT
327 pa_action_set_utils.get_action_set_id
328 ('PA_TASK_PROGRESS','PA_PROJECTS',p_project_id_from) action_set_id
329 FROM dual
330 WHERE pa_action_set_utils.get_action_set_id
331 ('PA_TASK_PROGRESS','PA_PROJECTS',p_project_id_from) is not null;
332
333 l_action_set_id NUMBER;
334 l_new_action_set_id NUMBER;
335
336
337 BEGIN
338 x_return_status := fnd_api.g_ret_sts_success;
339
340 PA_DEBUG.init_err_stack('PA_TASK_PROG_ACTSET.copy_action_sets');
341 savepoint copy_task_action_sets;
342
343
344 OPEN task_reminder_action_set;
345 FETCH task_reminder_action_set INTO l_action_set_id;
346
347 if task_reminder_action_set%NOTFOUND then
348 CLOSE task_reminder_action_set;
349 PA_DEBUG.Reset_Err_Stack;
350 return ;
351 end if ;
352
353 pa_action_sets_pub.apply_action_set
354 (p_action_set_id => l_action_set_id
355 ,p_object_type => 'PA_PROJECTS'
356 ,p_object_id => p_project_id_to
357 ,p_validate_only => FND_API.G_FALSE
358 ,x_new_action_set_id => l_new_action_set_id
359 ,x_return_status => x_return_status
360 ,x_msg_count => x_msg_count
361 ,x_msg_data => x_msg_data);
362
363 if x_return_status <> fnd_api.g_ret_sts_success then
364 ROLLBACK TO copy_task_action_sets;
365 end if;
366
367 PA_DEBUG.Reset_Err_Stack;
368
369
370 EXCEPTION
371 WHEN TOO_MANY_ROWS THEN
372 ROLLBACK TO copy_task_action_sets;
373 -- Set the exception Message and the stack
374 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_task_prog_actset.copy_action_sets'
375 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
376 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
377 RAISE;
378
379 WHEN OTHERS THEN
380 ROLLBACK TO copy_task_action_sets;
381 -- Set the exception Message and the stack
382 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_task_prog_actset.copy_action_sets'
383 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
384 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
385 RAISE;
386
387 END copy_action_sets;
388
389
390 PROCEDURE delete_action_set
391 (p_action_set_id IN pa_action_sets.action_set_id%TYPE := NULL
392 ,p_action_set_type_code IN pa_action_sets.action_set_type_code%TYPE := 'PA_TASK_PROGRESS'
393 ,p_object_type IN pa_action_sets.object_type%TYPE := 'PA_PROJECTS'
394 ,p_object_id IN pa_action_sets.object_id%TYPE := NULL
395 ,p_record_version_number IN pa_action_sets.record_version_number%TYPE := NULL
396 ,p_api_version IN NUMBER := 1.0
397 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
398 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
399 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
400 ,x_return_status OUT NOCOPY VARCHAR2
401 ,x_msg_count OUT NOCOPY NUMBER
402 ,x_msg_data OUT NOCOPY VARCHAR2
403 ) IS
404
405 l_return_status VARCHAR2(1);
406 l_msg_count NUMBER := 0;
407 l_msg_data VARCHAR2(2000);
408 l_record_version_number NUMBER;
409
410 BEGIN
411 PA_DEBUG.init_err_stack('PA_TASK_PROG_ACTSET.delete_action_set');
412 PA_DEBUG.WRITE_LOG(x_Module => 'pa.plsql.PA_TASK_PROG_ACTSET.delete_action_set.begin'
413 ,x_Msg => 'in PA_TASK_PROG_ACTSET.delete_action_set'
414 ,x_Log_Level => 6);
415
416 l_record_version_number := p_record_version_number;
417 IF l_record_version_number is NULL THEN
418 select record_version_number
419 into l_record_version_number
420 from pa_action_sets
421 where action_set_id = p_action_set_id;
422 END IF;
423 PA_ACTION_SETS_PUB.delete_action_set
424 (p_action_set_id => p_action_set_id
425 ,p_action_set_type_code => p_action_set_type_code
426 ,p_object_type => p_object_type
427 ,p_object_id => p_object_id
428 ,p_init_msg_list => p_init_msg_list
429 ,p_record_version_number => l_record_version_number
430 ,p_commit => p_commit
431 ,p_validate_only => p_validate_only
432 ,x_return_status => x_return_status
433 ,x_msg_count => x_msg_count
434 ,x_msg_data => x_msg_data);
435
436
437 --x_return_status =: l_return_status;
438 --x_msg_count =: l_msg_count;
439 --x_msg_data =: l_msg_data;
440
441
442 PA_DEBUG.RESET_ERR_STACK;
443
444
445 EXCEPTION
446
447 WHEN OTHERS THEN
448 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_PROG_ACTSET.delete_action_set'
449 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
450
451 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
452 RAISE;
453
454 END delete_action_set;
455
456 PROCEDURE update_action_set
457 (p_action_set_id IN pa_action_sets.action_set_id%TYPE := NULL
458 ,p_action_set_type_code IN pa_action_sets.action_set_type_code%TYPE := 'PA_TASK_PROGRESS'
459 ,p_object_type IN pa_action_sets.object_type%TYPE := 'PA_PROJECTS'
460 ,p_object_id IN pa_action_sets.object_id%TYPE := NULL
461 ,p_perform_action_set_flag IN VARCHAR2 := 'N'
462 ,p_record_version_number IN pa_action_sets.record_version_number%TYPE := NULL
463 ,p_api_version IN NUMBER := 1.0
464 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
465 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
466 ,p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
467 ,x_new_action_set_id OUT NOCOPY NUMBER
468 ,x_return_status OUT NOCOPY VARCHAR2
469 ,x_msg_count OUT NOCOPY NUMBER
470 ,x_msg_data OUT NOCOPY VARCHAR2
471 ) IS
472 /*
473 CURSOR c_action_set_info(cp_object_id NUMBER, cp_type pa_action_sets.action_set_type_code%TYPE,
474 cp_obj pa_action_sets.object_type%TYPE ) IS
475 select action_set_id,record_version_number
476 from pa_action_sets
477 where object_id = cp_object_id
478 AND object_type = cp_obj
479 AND action_set_type_code = cp_type;
480 */
481 CURSOR c_action_set_info(cp_action_set_id NUMBER
482 ) IS
483 select action_set_id,record_version_number
484 from pa_action_sets
485 where action_set_id = cp_action_set_id;
486
487 l_record_version_number NUMBER;
488 l_curr_action_set_id NUMBER := NULL;
489 cp_action_set_info c_action_set_info%ROWTYPE;
490 l_new_action_set_id NUMBER := NULL;
491
492
493 BEGIN
494 PA_DEBUG.init_err_stack('PA_PROJ_STAT_ACTSET.update_action_set');
495 PA_DEBUG.WRITE_LOG(x_Module => 'pa.plsql.PA_TASK_PROG_ACTSET.update_action_set.begin'
496 ,x_Msg => 'in PA_TASK_PROG_ACTSET.update_action_set'
497 ,x_Log_Level => 6);
498
499 x_return_status := 'S';
500 l_record_version_number := p_record_version_number;
501
502 l_curr_action_set_id := pa_action_set_utils.get_action_set_id(p_action_set_type_code
503 ,p_object_type
504 ,p_object_id);
505 if l_curr_action_set_id is not NULL then
506 OPEN c_action_set_info(l_curr_action_set_id);
507 FETCH c_action_set_info INTO cp_action_set_info;
508 IF c_action_set_info%NOTFOUND THEN
509 CLOSE c_action_set_info;
510 PA_UTILS.Add_Message( p_app_short_name => 'PA'
511 ,p_msg_name => 'PA_CI_XX_DUPLICATE_NUMBER');
512 x_return_status := FND_API.G_RET_STS_ERROR;
513 PA_DEBUG.RESET_ERR_STACK;
514 return;
515 end if;
516 l_record_version_number := cp_action_set_info.record_version_number;
517 CLOSE c_action_set_info;
518 end if;
519
520 /*
521 --Find an existing action set attached to this page layout id
522 OPEN c_action_set_info(p_object_id, p_action_set_type_code,p_object_type);
523 FETCH c_action_set_info INTO cp_action_set_info;
524
525 --Return success when action set not found when we're trying to delete it
526 IF c_action_set_info%NOTFOUND THEN
527 CLOSE c_action_set_info;
528 IF p_action_set_id is NULL THEN
529 RETURN;
530 END IF;
531 ELSE
532 l_curr_action_set_id := cp_action_set_info.action_set_id;
533 l_record_version_number := cp_action_set_info.record_version_number;
534 CLOSE c_action_set_info;
535 END IF;
536 */
537 IF p_action_set_id is NULL AND l_curr_action_set_id is NOT NULL THEN
538 PA_ACTION_SETS_PUB.delete_action_set
539 (p_action_set_id => l_curr_action_set_id
540 ,p_action_set_type_code => p_action_set_type_code
541 ,p_object_type => p_object_type
542 ,p_object_id => p_object_id
543 ,p_init_msg_list => p_init_msg_list
544 ,p_record_version_number => l_record_version_number
545 ,p_commit => p_commit
546 ,p_validate_only => p_validate_only
547 ,x_return_status => x_return_status
548 ,x_msg_count => x_msg_count
549 ,x_msg_data => x_msg_data);
550 ELSE
551 IF p_action_set_id is NOT NULL AND l_curr_action_set_id is NULL THEN
552 PA_ACTION_SETS_PUB.apply_action_set
553 (p_action_set_id => p_action_set_id
554 ,p_object_type => p_object_type
555 ,p_object_id => p_object_id
556 ,p_perform_action_set_flag => p_perform_action_set_flag
557 ,p_init_msg_list => p_init_msg_list
558 ,p_commit => p_commit
559 ,p_validate_only => p_validate_only
560 ,x_new_action_set_id => x_new_action_set_id
561 ,x_return_status => x_return_status
562 ,x_msg_count => x_msg_count
563 ,x_msg_data => x_msg_data);
564
565 ELSE
566 IF p_action_set_id is NOT NULL AND l_curr_action_set_id is NOT NULL THEN
567 IF l_curr_action_set_id = p_action_set_id THEN
568 RETURN;
569 END IF;
570 PA_ACTION_SETS_PUB.replace_action_set
571 (p_current_action_set_id => l_curr_action_set_id
572 ,p_action_set_type_code => p_action_set_type_code
573 ,p_object_type => p_object_type
574 ,p_object_id => p_object_id
575 ,p_record_version_number => l_record_version_number
576 ,p_new_action_set_id => p_action_set_id
577 ,p_init_msg_list => p_init_msg_list
578 ,p_commit => p_commit
579 ,p_validate_only => p_validate_only
580 ,x_new_action_set_id => x_new_action_set_id
581 ,x_return_status => x_return_status
582 ,x_msg_count => x_msg_count
583 ,x_msg_data => x_msg_data);
584
585 END IF;
586 END IF;
587 END IF;
588
589
590
591 PA_DEBUG.RESET_ERR_STACK;
592
593
594 EXCEPTION
595
596 WHEN OTHERS THEN
597 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_TASK_PROG_ACTSET.update_action_set'
598 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
599
600 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
601 RAISE;
602
603 END update_action_set;
604
605
606 /*
607 select billing_cycle_id,billing_cycle_name
608 2 from pa_billing_cycles;
609 BILLING_CYCLE_ID BILLING_CYCLE_NAME
610 ---------------- ------------------------------
611 1 Billing cycle days : 28
612 2 Billing cycle days : 35
613 21 First Day
614 22 Last Weekday of Month
615 23 Weekday Each Week
616
617 */
618
619
620 END;