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