DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_ACTIONS_PVT

Source


4 g_module_name  VARCHAR2(100) := 'pa.plsql.pa_actions_pvt';
1 PACKAGE BODY PA_ACTIONS_PVT as
2 /* $Header: PAACTNVB.pls 120.4.12020000.2 2013/03/28 13:43:54 djambhek ship $ */
3 
5 
6 Invalid_Arg_Exc_Dlv EXCEPTION ;
7 g_dlvr_types CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'PA_DLVR_TYPES';
8 g_actions    CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'PA_ACTIONS';
9 g_dlvr_type_to_action  CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'DLVR_TYPE_TO_ACTION';
10 g_dlvr_to_action  CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'DELIVERABLE_TO_ACTION';
11 g_billing        CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'BILLING';
12 g_shipping       CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'SHIPPING';
13 g_procurement    CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'PROCUREMENT';
14 
15 -- SubProgram           : CREATE_DLV_ACTIONS_IN_BULK
16 -- Type                 : PROCEDURE
17 -- Purpose              : Private API to create to Deliverable Actions
18 -- Note                 : Its a BULK API
19 -- Assumptions          : None
20 -- Parameter                      IN/OUT        Type         Required     Description and Purpose
21 -- ---------------------------  ---------    ----------      ---------    ---------------------------
22 -- p_api_version                   IN          NUMBER            N        Standard Parameter
23 -- p_init_msg_list                 IN          VARCHAR2          N        Standard Parameter
24 -- p_commit                        IN          VARCHAR2          N        Standard Parameter
25 -- p_validate_only                 IN          VARCHAR2          N        Standard Parameter
26 -- p_validation_level              IN          NUMBER            N        Standard Parameter
27 -- p_calling_module                IN          VARCHAR2          N        Standard Parameter
28 -- p_debug_mode                    IN          VARCHAR2          N        Standard Parameter
29 -- p_max_msg_count                 IN          NUMBER            N        Standard Parameter
30 -- p_name_tbl                      IN          PLSQL Table       N        Action Name
31 -- p_manager_person_id_tbl         IN          PLSQL Table       N        Manager Id
32 -- p_function_code_tbl             IN          PLSQL Table       N        Action Function
33 -- p_due_date_tbl                  IN          PLSQL Table       N        Due Date
34 -- p_completed_flag_tbl            IN          PLSQL Table       N        Completed Flag
35 -- p_completion_date_tbl           IN          PLSQL Table       N        Completed Date
36 -- p_description_tbl               IN          PLSQL Table       N        Description
37 -- p_attribute_category_tbl        IN          PLSQL Table       N        DFF Field
38 -- p_attribute1_tbl                IN          PLSQL Table       N        DFF Filed
39 -- p_attribute2_tbl                IN          PLSQL Table       N        DFF Field
40 -- p_attribute3_tbl                IN          PLSQL Table       N        DFF Filed
41 -- p_attribute4_tbl                IN          PLSQL Table       N        DFF Field
42 -- p_attribute5_tbl                IN          PLSQL Table       N        DFF Filed
43 -- p_attribute6_tbl                IN          PLSQL Table       N        DFF Field
44 -- p_attribute7_tbl                IN          PLSQL Table       N        DFF Filed
45 -- p_attribute8_tbl                IN          PLSQL Table       N        DFF Field
46 -- p_attribute9_tbl                IN          PLSQL Table       N        DFF Filed
47 -- p_attribute10_tbl               IN          PLSQL Table       N        DFF Field
48 -- p_attribute11_tbl               IN          PLSQL Table       N        DFF Filed
49 -- p_attribute12_tbl               IN          PLSQL Table       N        DFF Field
50 -- p_attribute13_tbl               IN          PLSQL Table       N        DFF Filed
54 -- p_proj_element_id_tbl           IN          PLSQL Table       N        Action Element Id
51 -- p_attribute14_tbl               IN          PLSQL Table       N        DFF Field
52 -- p_attribute15_tbl               IN          PLSQL Table       N        DFF Filed
53 -- p_element_version_id_tbl        IN          PLSQL Table       N        Action VErsion Id
55 -- p_record_version_number_tbl     IN          PLSQL Table       N        Record Version NUmber
56 -- p_project_id                    IN          NUMBER            N        Project Id
57 -- p_object_id                     IN          NUMBER            Y        Parent Id
58 -- p_object_version_id             IN          NUMBER            N        Parent Version ID
59 -- p_object_type                   IN          VARCHAR2          Y        Parent Type
60 -- p_pm_source_code                IN          NUMBER            N        PM Source Code
61 -- p_pm_source_reference           IN          VARCHAR2          N        PM Source Reference
62 -- p_carrying_out_organization_id  IN          VARCHAR2          N        Carrying Out Org ID
63 -- x_return_status                 OUT         VARCHAR2          N        Mandatory Out Parameter
64 -- x_msg_count                     OUT         NUMBER            N        Mandatory Out Parameter
65 -- x_msg_data                      OUT         VARCHAR2          N        Mandatory Out Parameter
66 
67 PROCEDURE CREATE_DLV_ACTIONS_IN_BULK
68      (p_api_version               IN NUMBER    :=1.0
69      ,p_init_msg_list             IN VARCHAR2  :=FND_API.G_TRUE
70      ,p_commit                    IN VARCHAR2  :=FND_API.G_FALSE
71      ,p_validate_only             IN VARCHAR2  :=FND_API.G_TRUE
72      ,p_validation_level          IN NUMBER    :=FND_API.G_VALID_LEVEL_FULL
73      ,p_calling_module            IN VARCHAR2  :='SELF_SERVICE'
74      ,p_debug_mode                IN VARCHAR2  :='N'
75      ,p_max_msg_count             IN NUMBER    :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
76      ,p_name_tbl                  IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
77      ,p_manager_person_id_tbl     IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
78      ,p_function_code_tbl         IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
79      ,p_due_date_tbl              IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
80      ,p_completed_flag_tbl        IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
81      ,p_completion_date_tbl       IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
82      ,p_description_tbl           IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE  := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
83      ,p_attribute_category_tbl    IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
84      ,p_attribute1_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
85      ,p_attribute2_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
86      ,p_attribute3_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
87      ,p_attribute4_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
88      ,p_attribute5_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
89      ,p_attribute6_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
90      ,p_attribute7_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
91      ,p_attribute8_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
92      ,p_attribute9_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
93      ,p_attribute10_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
94      ,p_attribute11_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
95      ,p_attribute12_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
96      ,p_attribute13_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
97      ,p_attribute14_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
98      ,p_attribute15_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
99      ,p_element_version_id_tbl    IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
100      ,p_proj_element_id_tbl       IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
101      ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
102      ,p_project_id                IN PA_PROJECTS_ALL.PROJECT_ID%TYPE  := null
103      ,p_object_id                 IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE
104      ,p_object_version_id         IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null
105      ,p_object_type               IN PA_LOOKUPS.LOOKUP_CODE%TYPE
106      ,p_pm_source_code            IN pa_proj_elements.pm_source_code%TYPE := null
107      ,p_pm_source_reference       IN pa_proj_elements.pm_source_reference%TYPE := null
108      ,p_pm_source_reference_tbl   IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() -- added 3435905
109      ,p_carrying_out_organization_id IN pa_proj_elements.carrying_out_organization_id%TYPE := null
110      ,x_return_status             OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
111      ,x_msg_count                 OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
112      ,x_msg_data                  OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
113      )
114 IS
115      l_proj_element_id_tbl        SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
116      l_element_version_id_tbl     SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
117      l_rel_subtype                PA_OBJECT_RELATIONSHIPS.RELATIONSHIP_SUBTYPE%TYPE ;
118      l_msg_count                  NUMBER ;
119      l_data                       VARCHAR2(2000);
120      l_msg_data                   VARCHAR2(2000);
121      l_msg_index_out              NUMBER;
125      x_msg_count := 0;
122      i NUMBER;
123      l_pm_source_reference_tbl    SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE(); -- added for 3574730
124 BEGIN
126      x_return_status := FND_API.G_RET_STS_SUCCESS;
127 
128      IF p_debug_mode = 'Y' THEN
129           PA_DEBUG.set_curr_function( p_function   => 'CREATE_DLV_ACTIONS_IN_BULK'
130                                      ,p_debug_mode => p_debug_mode );
131           pa_debug.g_err_stage:= 'Inside CREATE_DLV_ACTIONS_IN_BULK ';
132           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
133      END IF;
134 
135      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
136       FND_MSG_PUB.initialize;
137      END IF;
138 
139      IF p_debug_mode = 'Y' THEN
140           pa_debug.write(g_module_name,'Printing Input Parameters ',3) ;
141           pa_debug.write(g_module_name,'#'||p_project_id||'#'||p_object_id||'#'||p_object_version_id||'#'||p_object_type||'#'||
142                      p_pm_source_code||'#'||p_carrying_out_organization_id,3) ;
143 
144           IF (p_calling_module = 'AMG') THEN
145              i := p_name_tbl.first();
146          WHILE i is not null loop
147             pa_debug.write(g_module_name,'#1'||p_name_tbl(i)||'#'||p_manager_person_id_tbl(i)||'#'||p_function_code_tbl(i)||'#'||p_due_date_tbl(i)||'#'||p_completed_flag_tbl(i)||'#'||p_pm_source_reference_tbl(i),3) ;
148                 pa_debug.write(g_module_name,'#2'||p_completion_date_tbl(i)||'#'||p_description_tbl(i)||'#'||p_element_version_id_tbl(i)||'#'||p_proj_element_id_tbl(i)||'#'||p_record_version_number_tbl(i) ,3) ;
149 
150             i := p_name_tbl.next(i);
151          end loop;
152           END IF; -- p_calling_module = 'AMG'
153      END IF;
154 
155      IF nvl(p_name_tbl.LAST,0)> 0 THEN
156 
157           -- populate the element table
158           IF p_debug_mode = 'Y' THEN
159                pa_debug.g_err_stage := 'Bulk inserting into PA_PROJ_ELEMENTS';
160                pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
161           END IF;
162 
163           -- 3574730 : not able to create deliverable, default actions copy is causing the problem
164           -- the below code must be removed once permanent fix is done
165           -- here, if calling module is self_service extend the p_pm_source_reference_tbl
166           -- this is required because, when ever this api is called in self_service mode
167           -- decode statement in the insert will try to evaluate p_pm_source_reference_tbl(i) value
168           -- so temparorily fix the issue, we are extending the table
169 
170           -- when ever permanant fix is done, remove local varaible, the below code and in insert from local to input parameter
171 
172           IF p_calling_module = 'SELF_SERVICE' THEN
173               FOR i IN p_name_tbl.FIRST..p_name_tbl.LAST
174               LOOP
175                 l_pm_source_reference_tbl.extend;
176                 l_pm_source_reference_tbl(i):= null;           /* Bug # 3590235 */
177               END LOOP;
178           ELSE
179               FOR i IN p_name_tbl.FIRST..p_name_tbl.LAST
180               LOOP
181                 l_pm_source_reference_tbl.extend;              /* Bug # 3590235 */
182                 l_pm_source_reference_tbl(i) := p_pm_source_reference_tbl(i) ;
183               END LOOP;
184           END IF;
185 
186           -- 3574730 end
187 
188           -- For action level record associated to Deliverable Type
189           -- Project id is populated as null .
190 
191           FORALL i in p_name_tbl.FIRST..p_name_tbl.LAST
192                INSERT INTO PA_PROJ_ELEMENTS(
193                      proj_element_id
194                     ,project_id
195                     ,object_type
196                     ,name
197                     ,element_number
198                     ,creation_date
199                     ,created_by
200                     ,last_update_date
201                     ,last_updated_by
202                     ,description
203                     ,status_code
204                     ,function_code
205                     ,pm_source_code
206                     ,pm_source_reference
207                     ,manager_person_id
208                     ,carrying_out_organization_id
209                     ,record_version_number
210                     ,last_update_login
211                     ,program_application_id
212                     ,attribute_category
213                     ,attribute1
214                     ,attribute2
215                     ,attribute3
216                     ,attribute4
217                     ,attribute5
218                     ,attribute6
219                     ,attribute7
220                     ,attribute8
221                     ,attribute9
222                     ,attribute10
223                     ,attribute11
224                     ,attribute12
225                     ,attribute13
226                     ,attribute14
227                     ,attribute15
228                     ,source_object_id
229                     ,source_object_type
230                     )
231                 VALUES
232                     (
233                      nvl(p_proj_element_id_tbl(i),pa_tasks_s.nextval )
234                     ,nvl(p_project_id,-99)
235                     ,g_actions
236                     ,p_name_tbl(i)
237                     ,pa_tasks_s.currval
238                     ,SYSDATE
239                     ,fnd_global.user_id
240                     ,SYSDATE
241                     ,fnd_global.user_id
242                     ,p_description_tbl(i)
246                     ,decode(p_calling_module, 'SELF_SERVICE', p_pm_source_reference , l_pm_source_reference_tbl(i))  -- added decode 3435905
243                     ,decode(p_completed_flag_tbl(i),'Y','DLVR_COMPLETED','DLVR_IN_PROGRESS')
244                     ,p_function_code_tbl(i)
245                     ,p_pm_source_code
247                     ,p_manager_person_id_tbl(i)
248                     ,p_carrying_out_organization_id
249                     ,1
250                     ,fnd_global.login_id
251                     ,fnd_global.prog_appl_id
252                     ,p_attribute_category_tbl(i)
253                     ,p_attribute1_tbl(i)
254                     ,p_attribute2_tbl(i)
255                     ,p_attribute3_tbl(i)
256                     ,p_attribute4_tbl(i)
257                     ,p_attribute5_tbl(i)
258                     ,p_attribute6_tbl(i)
259                     ,p_attribute7_tbl(i)
260                     ,p_attribute8_tbl(i)
261                     ,p_attribute9_tbl(i)
262                     ,p_attribute10_tbl(i)
263                     ,p_attribute11_tbl(i)
264                     ,p_attribute12_tbl(i)
265                     ,p_attribute13_tbl(i)
266                     ,p_attribute14_tbl(i)
267                     ,p_attribute15_tbl(i)
268                     ,nvl(p_project_id,-99)
269                     ,'PA_PROJECTS'
270                     )
271                 RETURNING proj_element_id
272                 BULK COLLECT INTO l_proj_element_id_tbl ;
273 
274 
275           IF p_debug_mode = 'Y' THEN
276                pa_debug.g_err_stage := 'Bulk inserting into PA_PROJ_ELEMENT_VERSIONS';
277                pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
278           END IF;
279 
280 
281           -- populate the element version table
282 
283           -- From copy action API p_element_version_id_tbl will be passed
284           -- as null.Hence using nvl
285 
286           FORALL i in l_proj_element_id_tbl.FIRST..l_proj_element_id_tbl.LAST
287                INSERT INTO PA_PROJ_ELEMENT_VERSIONS(
288                      element_version_id
289                     ,proj_element_id
290                     ,object_type
291                     ,project_id
292                     ,creation_date
293                     ,created_by
294                     ,last_update_date
295                     ,last_updated_by
296                     ,record_version_number
297                     ,last_update_login
298                     ,source_object_id
299                     ,source_object_type
300                     )
301                  VALUES
302                     (
303                      nvl(p_element_version_id_tbl(i),pa_proj_element_versions_s.nextval)
304                     ,l_proj_element_id_tbl(i)
305                     ,g_actions
306                     ,nvl(p_project_id,-99)
307                     ,SYSDATE
308                     ,fnd_global.user_id
309                     ,SYSDATE
310                     ,fnd_global.user_id
311                     ,1
312                     ,fnd_global.login_id
313                     ,nvl(p_project_id,-99)
314                     ,'PA_PROJECTS'
315                     )
316                 RETURNING element_version_id
317                 BULK COLLECT INTO l_element_version_id_tbl ;
318 
319 
320           IF p_debug_mode = 'Y' THEN
321                pa_debug.g_err_stage := 'Bulk inserting into PA_PROJ_ELEM_VER_SCHEDULE';
322                pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
323           END IF;
324 
325           -- populate the element version table
326           FORALL i in l_element_version_id_tbl.FIRST..l_element_version_id_tbl.LAST
327                INSERT INTO PA_PROJ_ELEM_VER_SCHEDULE(
328                      pev_schedule_id
329                     ,element_version_id
330                     ,project_id
331                     ,proj_element_id
332                     ,creation_date
333                     ,created_by
334                     ,last_update_date
335                     ,last_updated_by
336                     ,last_update_login
337                     ,scheduled_finish_date
338                     ,actual_finish_date
339                     ,record_version_number
340                     ,source_object_id
341                     ,source_object_type
342                     )
343                  VALUES
344                     (
345                      pa_proj_elem_ver_schedule_s.nextval
346                     ,l_element_version_id_tbl(i)
347                     ,nvl(p_project_id,-99)
348                     ,l_proj_element_id_tbl(i)
349                     ,SYSDATE
350                     ,fnd_global.user_id
351                     ,SYSDATE
352                     ,fnd_global.user_id
353                     ,fnd_global.login_id
354                     ,p_due_date_tbl(i)
355                     ,p_completion_date_tbl(i)
356                     ,1
357                     ,nvl(p_project_id,-99)
358                     ,'PA_PROJECTS'
359                     ) ;
360 
361           IF p_object_type = g_dlvr_types THEN
362                l_rel_subtype := g_dlvr_type_to_action ;
363           ELSE
364                l_rel_subtype := g_dlvr_to_action      ;
365           END IF;
366 
367           IF p_debug_mode = 'Y' THEN
368                pa_debug.g_err_stage := 'Bulk inserting into PA_OBJECT_RELATIONSHIPS';
372           -- populate the object relationships table
369                pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
370           END IF;
371 
373           FORALL i in l_proj_element_id_tbl.FIRST..l_proj_element_id_tbl.LAST
374                INSERT INTO PA_OBJECT_RELATIONSHIPS(
375                      object_relationship_id
376                     ,object_type_from
377                     ,object_id_from1
378                     ,object_type_to
379                     ,object_id_to1
380                     ,relationship_type
381                     ,created_by
382                     ,creation_date
383                     ,last_updated_by
384                     ,last_update_date
385                     ,object_id_from2
386                     ,object_id_to2
387                     ,relationship_subtype
388                     ,record_version_number
389                     ,last_update_login
390                     )
391                  VALUES
392                     (
393                      pa_object_relationships_s.nextval
394                     ,p_object_type
395                     ,p_object_version_id
396                     ,g_actions
397                     ,l_element_version_id_tbl(i)
398                     ,'A'
399                     ,fnd_global.user_id
400                     ,SYSDATE
401                     ,fnd_global.user_id
402                     ,SYSDATE
403                     ,p_object_id
404                     ,l_proj_element_id_tbl(i)
405                     ,l_rel_subtype
406                     ,1
407                     ,fnd_global.login_id
408                     ) ;
409      END IF ;
410 
411           IF p_debug_mode = 'Y' THEN           --Added for bug 4945876
412           pa_debug.reset_curr_function;
413           END IF;
414 
415 EXCEPTION
416  WHEN OTHERS THEN
417      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
418      x_msg_count     := 1;
419      x_msg_data      := SQLERRM;
420      FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PVT'
421                      ,p_procedure_name  => 'CREATE_DLV_ACTIONS_IN_BULK');
422      IF p_debug_mode = 'Y' THEN
423           pa_debug.g_err_stage := 'Exiting CREATE_DLV_ACTIONS_IN_BULK' ;
424           pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
425           pa_debug.reset_curr_function;
426      END IF;
427      RAISE;
428 END CREATE_DLV_ACTIONS_IN_BULK ;
429 
430 -- SubProgram           : UPDATE_DLV_ACTIONS_IN_BULK
431 -- Type                 : PROCEDURE
432 -- Purpose              : Private API to Update To Deliverable Actions
433 -- Note                 : Its a BULK API
434 -- Assumptions          : None
435 -- Parameter                      IN/OUT        Type         Required     Description and Purpose
436 -- ---------------------------  ---------    ----------      ---------    ---------------------------
437 -- p_api_version                   IN          NUMBER            N        Standard Parameter
438 -- p_init_msg_list                 IN          VARCHAR2          N        Standard Parameter
439 -- p_commit                        IN          VARCHAR2          N        Standard Parameter
440 -- p_validate_only                 IN          VARCHAR2          N        Standard Parameter
441 -- p_validation_level              IN          NUMBER            N        Standard Parameter
442 -- p_calling_module                IN          VARCHAR2          N        Standard Parameter
443 -- p_debug_mode                    IN          VARCHAR2          N        Standard Parameter
444 -- p_max_msg_count                 IN          NUMBER            N        Standard Parameter
445 -- p_name_tbl                      IN          PLSQL Table       N        Action Name
446 -- p_manager_person_id_tbl         IN          PLSQL Table       N        Manager Id
447 -- p_function_code_tbl             IN          PLSQL Table       N        Action Function
448 -- p_due_date_tbl                  IN          PLSQL Table       N        Due Date
449 -- p_completed_flag_tbl            IN          PLSQL Table       N        Completed Flag
450 -- p_completion_date_tbl           IN          PLSQL Table       N        Completed Date
451 -- p_description_tbl               IN          PLSQL Table       N        Description
452 -- p_attribute_category_tbl        IN          PLSQL Table       N        DFF Field
453 -- p_attribute1_tbl                IN          PLSQL Table       N        DFF Filed
454 -- p_attribute2_tbl                IN          PLSQL Table       N        DFF Field
455 -- p_attribute3_tbl                IN          PLSQL Table       N        DFF Filed
456 -- p_attribute4_tbl                IN          PLSQL Table       N        DFF Field
457 -- p_attribute5_tbl                IN          PLSQL Table       N        DFF Filed
458 -- p_attribute6_tbl                IN          PLSQL Table       N        DFF Field
459 -- p_attribute7_tbl                IN          PLSQL Table       N        DFF Filed
460 -- p_attribute8_tbl                IN          PLSQL Table       N        DFF Field
461 -- p_attribute9_tbl                IN          PLSQL Table       N        DFF Filed
462 -- p_attribute10_tbl               IN          PLSQL Table       N        DFF Field
463 -- p_attribute11_tbl               IN          PLSQL Table       N        DFF Filed
464 -- p_attribute12_tbl               IN          PLSQL Table       N        DFF Field
465 -- p_attribute13_tbl               IN          PLSQL Table       N        DFF Filed
466 -- p_attribute14_tbl               IN          PLSQL Table       N        DFF Field
467 -- p_attribute15_tbl               IN          PLSQL Table       N        DFF Filed
468 -- p_element_version_id_tbl        IN          PLSQL Table       N        Action VErsion Id
469 -- p_proj_element_id_tbl           IN          PLSQL Table       N        Action Element Id
470 -- p_record_version_number_tbl     IN          PLSQL Table       N        Record Version NUmber
474 -- p_object_type                   IN          VARCHAR2          Y        Parent Type
471 -- p_project_id                    IN          NUMBER            N        Project Id
472 -- p_object_id                     IN          NUMBER            Y        Parent Id
473 -- p_object_version_id             IN          NUMBER            N        Parent Version ID
475 -- p_pm_source_code                IN          NUMBER            N        PM Source Code
476 -- p_pm_source_reference           IN          VARCHAR2          N        PM Source Reference
477 -- p_carrying_out_organization_id  IN          VARCHAR2          N        Carrying Out Org ID
478 -- x_return_status                 OUT         VARCHAR2          N        Mandatory Out Parameter
479 -- x_msg_count                     OUT         NUMBER            N        Mandatory Out Parameter
480 -- x_msg_data                      OUT         VARCHAR2          N        Mandatory Out Parameter
481 
482 PROCEDURE UPDATE_DLV_ACTIONS_IN_BULK
483      (p_api_version               IN NUMBER    :=1.0
484      ,p_init_msg_list             IN VARCHAR2  :=FND_API.G_TRUE
485      ,p_commit                    IN VARCHAR2  :=FND_API.G_FALSE
486      ,p_validate_only             IN VARCHAR2  :=FND_API.G_TRUE
487      ,p_validation_level          IN NUMBER    :=FND_API.G_VALID_LEVEL_FULL
488      ,p_calling_module            IN VARCHAR2  :='SELF_SERVICE'
489      ,p_debug_mode                IN VARCHAR2  :='N'
490      ,p_max_msg_count             IN NUMBER    :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
491      ,p_name_tbl                  IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
492      ,p_manager_person_id_tbl     IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
493      ,p_function_code_tbl         IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
494      ,p_due_date_tbl              IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
495      ,p_completed_flag_tbl        IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
496      ,p_completion_date_tbl       IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
497      ,p_description_tbl           IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE  := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
498      ,p_attribute_category_tbl    IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
499      ,p_attribute1_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
500      ,p_attribute2_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
501      ,p_attribute3_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
502      ,p_attribute4_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
503      ,p_attribute5_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
504      ,p_attribute6_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
505      ,p_attribute7_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
506      ,p_attribute8_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
507      ,p_attribute9_tbl            IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
508      ,p_attribute10_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
509      ,p_attribute11_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
510      ,p_attribute12_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
511      ,p_attribute13_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
512      ,p_attribute14_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
513      ,p_attribute15_tbl           IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
514      ,p_element_version_id_tbl    IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
515      ,p_proj_element_id_tbl       IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
516      ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
517      ,p_project_id                IN PA_PROJECTS_ALL.PROJECT_ID%TYPE := null
518      ,p_object_id                 IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null -- 3578694 added default value
519      ,p_object_version_id         IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null
520      ,p_object_type               IN PA_LOOKUPS.LOOKUP_CODE%TYPE
521      ,p_pm_source_code            IN pa_proj_elements.pm_source_code%TYPE := null
522      ,p_pm_source_reference       IN pa_proj_elements.pm_source_reference%TYPE := null
523      ,p_carrying_out_organization_id IN pa_proj_elements.carrying_out_organization_id%TYPE := null
524      ,x_return_status             OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
525      ,x_msg_count                 OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
526      ,x_msg_data                  OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
527      )
528 IS
529      l_msg_count                  NUMBER ;
530      l_data                       VARCHAR2(2000);
531      l_msg_data                   VARCHAR2(2000);
532      l_msg_index_out              NUMBER;
533 BEGIN
534 
535      x_msg_count := 0;
536      x_return_status := FND_API.G_RET_STS_SUCCESS;
537 
538      IF p_debug_mode = 'Y' THEN
539           PA_DEBUG.set_curr_function( p_function   => 'CR_DLV_ACTIONS_IN_BULK'
540                                      ,p_debug_mode => p_debug_mode );
541           pa_debug.g_err_stage:= 'Inside UPDATE_DLV_ACTIONS_IN_BULK ';
542           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
543      END IF;
544 
545      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
546       FND_MSG_PUB.initialize;
547      END IF;
548 
549      -- Update attributes related to proj element table.
550      -- Following attributes related to PA_PROJ_ELEMENTS
551      -- are updateable from SS page
552      --   1. Action Name
553      --   2. Owner
554      --   3. Function Code
558 
555      --   4. Description
556      --   5. Completed Flag , mapped to status column
557      --   6. DFF Fields
559      FORALL i in p_name_tbl.FIRST..p_name_tbl.LAST
560           UPDATE pa_proj_elements
561              SET name = p_name_tbl(i)
562                 ,manager_person_id = p_manager_person_id_tbl(i)
563                 ,description = p_description_tbl(i)
564                 ,status_code = decode(p_completed_flag_tbl(i),'Y','DLVR_COMPLETED','DLVR_IN_PROGRESS')
565                 ,function_code = p_function_code_tbl(i)
566                 ,attribute_category = p_attribute_category_tbl(i)
567                 ,attribute1         = p_attribute1_tbl(i)
568                 ,attribute2         = p_attribute2_tbl(i)
569                 ,attribute3         = p_attribute3_tbl(i)
570                 ,attribute4         = p_attribute4_tbl(i)
571                 ,attribute5         = p_attribute5_tbl(i)
572                 ,attribute6         = p_attribute6_tbl(i)
573                 ,attribute7         = p_attribute7_tbl(i)
574                 ,attribute8         = p_attribute8_tbl(i)
575                 ,attribute9         = p_attribute9_tbl(i)
576                 ,attribute10        = p_attribute10_tbl(i)
577                 ,attribute11        = p_attribute11_tbl(i)
578                 ,attribute12        = p_attribute12_tbl(i)
579                 ,attribute13        = p_attribute13_tbl(i)
580                 ,attribute14        = p_attribute14_tbl(i)
581                 ,attribute15        = p_attribute15_tbl(i)
582                 ,record_version_number = nvl(record_version_number,0) + 1
583                 ,last_update_date   = SYSDATE
584                 ,last_updated_by    = fnd_global.user_id
585                 ,last_update_login  = fnd_global.login_id
586           WHERE proj_element_id = p_proj_element_id_tbl(i) ;
587 
588 
589      -- Update attributes related to proj elem ver schedule table.
590      -- Following attributes related to PA_PROJ_ELEM_VER_SVHEDULE
591      -- are updateable from SS page
592      --   1. Due Date (Shedule Finish Date)
593      --   2. Completion Date (Actual Finish Date)
594 
595      FORALL i in p_element_version_id_tbl.FIRST..p_element_version_id_tbl.LAST
596           UPDATE PA_PROJ_ELEM_VER_SCHEDULE
597              SET scheduled_finish_date  = p_due_date_tbl(i)
598                 ,actual_finish_date = p_completion_date_tbl(i)
599                 ,record_version_number = nvl(record_version_number,0) + 1
600                 ,last_update_date   = SYSDATE
601                 ,last_updated_by    = fnd_global.user_id
602                 ,last_update_login  = fnd_global.login_id
603           WHERE  element_version_id = p_element_version_id_tbl(i) ;
604 
605       -- 3941159 , added code to loop through actions and update event
606       -- date for billing actions
607 
608       FOR i IN p_element_version_id_tbl.FIRST..p_element_version_id_tbl.LAST
609       LOOP
610 
611         -- removed completion date not null check because, for billing action, completion check box can be
612         -- unchecked if billing event is not processed and changed completion date ( null value ) should be reflected in
613         -- pa_events table
614 
615         IF p_function_code_tbl(i) = 'BILLING' THEN
616          PA_Billing_Wrkbnch_Events.Upd_Event_Comp_Date(
617                         P_Deliverable_Id  =>    p_object_version_id
618                        ,P_Action_Id       =>    p_element_version_id_tbl(i)
619                        ,P_Event_Date      =>    p_completion_date_tbl(i));
620         END IF;
621       END LOOP;
622 
623     -- 3941159 end
624 
625      IF p_debug_mode = 'Y' THEN
626           pa_debug.g_err_stage := 'Exiting UPDATE_DLV_ACTIONS_IN_BULK' ;
627           pa_debug.write(g_module_name, pa_debug.g_err_stage, 5);
628           pa_debug.reset_curr_function;
629      END IF;
630 
631 EXCEPTION
632  WHEN OTHERS THEN
633      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
634      x_msg_count     := 1;
635      x_msg_data      := SQLERRM;
636      FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PVT'
637                      ,p_procedure_name  => 'UPDATE_DLV_ACTIONS_IN_BULK');
638      IF p_debug_mode = 'Y' THEN
639           pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
640           pa_debug.write('UPDATE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
641           pa_debug.reset_curr_function;
642      END IF;
643      RAISE;
644 END UPDATE_DLV_ACTIONS_IN_BULK ;
645 
646 -- SubProgram           : DELETE_DLV_ACTIONS_IN_BULK
647 -- Type                 : PROCEDURE
648 -- Purpose              : Private API to Delete To Deliverable Actions.This API will be called
649 --                        when deliverable type is deleted. In such cases only object type and
650 --                        object id will be passed .
651 -- Note                 : Its a BULK API
652 -- Assumptions          : None
653 -- Parameter                      IN/OUT        Type         Required     Description and Purpose
654 -- ---------------------------  ---------    ----------      ---------    ---------------------------
655 -- p_api_version                   IN          NUMBER            N        Standard Parameter
656 -- p_init_msg_list                 IN          VARCHAR2          N        Standard Parameter
657 -- p_commit                        IN          VARCHAR2          N        Standard Parameter
658 -- p_validate_only                 IN          VARCHAR2          N        Standard Parameter
659 -- p_validation_level              IN          NUMBER            N        Standard Parameter
660 -- p_calling_module                IN          VARCHAR2          N        Standard Parameter
661 -- p_debug_mode                    IN          VARCHAR2          N        Standard Parameter
662 -- p_max_msg_count                 IN          NUMBER            N        Standard Parameter
666 -- p_object_id                     IN          NUMBER            Y        Parent Id
663 -- p_element_version_id_tbl        IN          PLSQL Table       N        Action VErsion Id
664 -- p_proj_element_id_tbl           IN          PLSQL Table       N        Action Element Id
665 -- p_record_version_number_tbl     IN          PLSQL Table       N        Record Version NUmber
667 -- p_object_version_id             IN          NUMBER            N        Parent Version ID
668 -- p_object_type                   IN          VARCHAR2          Y        Parent Type
669 -- x_return_status                 OUT         VARCHAR2          N        Mandatory Out Parameter
670 -- x_msg_count                     OUT         NUMBER            N        Mandatory Out Parameter
671 -- x_msg_data                      OUT         VARCHAR2          N        Mandatory Out Parameter
672 
673 PROCEDURE DELETE_DLV_ACTIONS_IN_BULK
674      (p_api_version               IN NUMBER    :=1.0
675      ,p_init_msg_list             IN VARCHAR2  :=FND_API.G_TRUE
676      ,p_commit                    IN VARCHAR2  :=FND_API.G_FALSE
677      ,p_validate_only             IN VARCHAR2  :=FND_API.G_TRUE
678      ,p_validation_level          IN NUMBER    :=FND_API.G_VALID_LEVEL_FULL
679      ,p_calling_module            IN VARCHAR2  :='SELF_SERVICE'
680      ,p_debug_mode                IN VARCHAR2  :='N'
681      ,p_max_msg_count             IN NUMBER  :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
682      ,p_object_type               IN PA_LOOKUPS.LOOKUP_CODE%TYPE
683      ,p_object_id                 IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE
684      ,p_element_version_id_tbl    IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
685      ,p_proj_element_id_tbl       IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
686      ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
687      ,x_return_status             OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
688      ,x_msg_count                 OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
689      ,x_msg_data                  OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
690      )
691 IS
692 
693      CURSOR get_element_id IS
694      SELECT object_id_to2,
695             object_relationship_id
696        FROM pa_object_relationships
697       WHERE object_id_from2 = p_object_id
698         AND object_type_from = p_object_type
699         AND object_type_to = g_actions
700         AND relationship_type = 'A';
701 
702 l_proj_element_id_tbl        SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
703 l_obj_relationship_id_tbl    SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
704 
705 -- Bug 3614361
706 l_elem_version_id_tbl        SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
707 BEGIN
708      x_msg_count := 0;
709      x_return_status := FND_API.G_RET_STS_SUCCESS;
710 
711      IF p_debug_mode = 'Y' THEN
712           PA_DEBUG.set_curr_function( p_function   => 'DELETE_DLV_ACTIONS_IN_BULK'
713                                      ,p_debug_mode => p_debug_mode );
714           pa_debug.g_err_stage:= 'Inside DELETE_DLV_ACTIONS_IN_BULK ';
715           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
716      END IF;
717 
718      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
719           FND_MSG_PUB.initialize;
720      END IF;
721 
722      IF  nvl(p_proj_element_id_tbl.LAST,0)=0 THEN
723 
724           OPEN  get_element_id ;
725           FETCH get_element_id BULK COLLECT INTO l_proj_element_id_tbl,l_obj_relationship_id_tbl ;
726           CLOSE  get_element_id ;
727 
728           IF  nvl(l_proj_element_id_tbl.LAST,0) > 0 THEN
729                     -- Delete from PA_PROJ_ELEMENTS Table
730                     FORALL i in l_proj_element_id_tbl.FIRST..l_proj_element_id_tbl.LAST
731                          DELETE FROM pa_proj_elements
732                                WHERE proj_element_id = l_proj_element_id_tbl(i) ;
733 
734                     -- Delete from PA_PROJ_ELEMENT_VERSIONS Table
735             -- Bug 3614361 Including Returning Clause
736                     FORALL i in l_proj_element_id_tbl.FIRST..l_proj_element_id_tbl.LAST
737                          DELETE FROM pa_proj_element_versions
738                                WHERE proj_element_id = l_proj_element_id_tbl(i)
739                    RETURNING element_version_id
740                         BULK COLLECT INTO l_elem_version_id_tbl;
741 
742                     -- Delete from PA_PROJ_ELEM_VER_SCHEDULE Table
743 
744                     /* Following Code has been commented for Performance Fix Bug # 3614361
745                        Basing logic on Element Version Id will improve performance
746             in the below delete statement
747                     FORALL i in l_proj_element_id_tbl.FIRST..l_proj_element_id_tbl.LAST
748                          DELETE FROM pa_proj_elem_ver_schedule
749                                WHERE proj_element_id = l_proj_element_id_tbl(i) ;
750             */
751 
752            -- Bug 3614361 Start
753            FORALL i in l_elem_version_id_tbl.FIRST..l_elem_version_id_tbl.LAST
754              DELETE FROM pa_proj_elem_ver_schedule
755                                WHERE element_version_id = l_elem_version_id_tbl(i) ;
756            -- 3614361 End
757 
758                     -- Delete from PA_OBJECT_RELATIONSHIPS table
759                     FORALL i in l_obj_relationship_id_tbl.FIRST..l_obj_relationship_id_tbl.LAST
760                          DELETE FROM PA_OBJECT_RELATIONSHIPS
761                                WHERE object_relationship_id = l_obj_relationship_id_tbl(i) ;
762 
763           END IF ;
764      END IF ;
765 
766      -- Delete the entries from PA_OBJECT_RELATIONSHIPS table
767      IF nvl(p_proj_element_id_tbl.LAST,0)>0 THEN
768 
769           IF p_debug_mode = 'Y' THEN
770                pa_debug.g_err_stage:='Delete entries from PA_OBJECT_RELATIONSHIPS table' ;
774           FORALL i in p_proj_element_id_tbl.FIRST..p_proj_element_id_tbl.LAST
771                pa_debug.write('DELETE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
772           END IF;
773 
775                DELETE FROM PA_OBJECT_RELATIONSHIPS
776                      WHERE OBJECT_ID_TO2 = p_proj_element_id_tbl(i)
777                        AND OBJECT_ID_FROM2 = p_object_id ;
778      END IF ;
779 
780      -- Delete the entries from PA_PROJ_ELEM_VER_SCHEDULE table
781      IF nvl(p_element_version_id_tbl.LAST,0)>0 THEN
782 
783           IF p_debug_mode = 'Y' THEN
784                pa_debug.g_err_stage:='Delete entries from PA_PROJ_ELEM_VER_SCHEDULE table' ;
785                pa_debug.write('DELETE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
786           END IF;
787 
788           FORALL i in p_element_version_id_tbl.FIRST..p_element_version_id_tbl.LAST
789                DELETE FROM PA_PROJ_ELEM_VER_SCHEDULE
790                      WHERE element_version_id = p_element_version_id_tbl(i) ;
791 
792      END IF ;
793 
794      -- Delete the entries from PA_ELEMENT_VERSIONS table
795      IF nvl(p_element_version_id_tbl.LAST,0)>0 THEN
796 
797           IF p_debug_mode = 'Y' THEN
798                pa_debug.g_err_stage:='Delete entries from PA_ELEMENT_VERSIONS table' ;
799                pa_debug.write('DELETE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
800           END IF;
801 
802           FORALL i in p_element_version_id_tbl.FIRST..p_element_version_id_tbl.LAST
803                DELETE FROM PA_PROJ_ELEMENT_VERSIONS
804                      WHERE element_version_id = p_element_version_id_tbl(i) ;
805 
806      END IF ;
807 
808 
809      -- Delete the entries from PA_PROJ_ELEMENTS table
810      IF nvl(p_proj_element_id_tbl.LAST,0)>0 THEN
811 
812           IF p_debug_mode = 'Y' THEN
813                pa_debug.g_err_stage:='Delete entries from PA_ELEMENT_VERSIONS table' ;
814                pa_debug.write('DELETE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
815           END IF;
816 
817           FORALL i in p_proj_element_id_tbl.FIRST..p_proj_element_id_tbl.LAST
818                DELETE FROM PA_PROJ_ELEMENTS
819                      WHERE proj_element_id = p_proj_element_id_tbl(i) ;
820 
821      END IF ;
822 
823      IF p_debug_mode = 'Y' THEN
824           pa_debug.g_err_stage := 'Exiting UPDATE_DLV_ACTIONS_IN_BULK' ;
825           pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
826           pa_debug.reset_curr_function;
827      END IF;
828 
829 EXCEPTION
830  WHEN OTHERS THEN
831      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
832      x_msg_count     := 1;
833      x_msg_data      := SQLERRM;
834      FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PVT'
835                      ,p_procedure_name  => 'DELETE_DLV_ACTIONS_IN_BULK');
836      IF p_debug_mode = 'Y' THEN
837           pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
838           pa_debug.write('DELETE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
839           pa_debug.reset_curr_function;
840      END IF;
841      RAISE;
842 END DELETE_DLV_ACTIONS_IN_BULK ;
843 
844 -- SubProgram           : DELETE_DLV_ACTION
845 -- Type                 : PROCEDURE
846 -- Purpose              : Private API to Delete Deliverable Actions
847 -- Note                 :
848 -- Assumptions          : None
849 -- Parameter                      IN/OUT        Type         Required     Description and Purpose
850 -- ---------------------------  ---------    ----------      ---------    ---------------------------
851 -- p_api_version                   IN          NUMBER           N           Standard Parameter
852 -- p_init_msg_list                 IN          VARCHAR2         N           Standard Parameter
853 -- p_commit                        IN          VARCHAR2         N           Standard Parameter
854 -- p_validate_only                 IN          VARCHAR2         N           Standard Parameter
855 -- p_validation_level              IN          NUMBER           N           Standard Parameter
856 -- p_calling_module                IN          VARCHAR2         N           Standard Parameter
857 -- p_debug_mode                    IN          VARCHAR2         N           Standard Parameter
858 -- p_max_msg_count                 IN          NUMBER           N           Standard Parameter
859 -- p_action_id                     IN          NUMBER           Y           Action Id .
860 -- p_action_ver_id                 IN          VARCHAR2         Y           ACtion Ver Id.
861 
862 PROCEDURE DELETE_DLV_ACTION
863      (p_api_version      IN NUMBER   :=1.0
864      ,p_init_msg_list    IN VARCHAR2 :=FND_API.G_TRUE
865      ,p_commit           IN VARCHAR2 :=FND_API.G_FALSE
866      ,p_validate_only    IN VARCHAR2 :=FND_API.G_TRUE
867      ,p_validation_level IN NUMBER   :=FND_API.G_VALID_LEVEL_FULL
868      ,p_calling_module   IN VARCHAR2 :='SELF_SERVICE'
869      ,p_debug_mode       IN VARCHAR2 :='N'
870      ,p_max_msg_count    IN NUMBER   :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
871      ,p_action_id        IN pa_proj_elements.proj_element_id%TYPE
872      ,p_action_ver_id    IN pa_proj_element_versions.element_version_id%TYPE
873      ,p_dlv_element_id   IN pa_proj_elements.proj_element_id%TYPE
874      ,p_dlv_version_id   IN pa_proj_element_versions.element_version_id%TYPE
875      ,p_function_code    IN pa_proj_elements.function_code%TYPE
876      ,p_project_id       IN pa_projects_all.project_id%TYPE
877      ,x_return_status    OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
878      ,x_msg_count        OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
879      ,x_msg_data         OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
880      )
881 IS
882      l_action_del_allowed VARCHAR2(1) := 'Y';
883      l_msg_count                  NUMBER ;
887      l_name                       pa_proj_elements.name%TYPE ;
884      l_data                       VARCHAR2(2000);
885      l_msg_data                   VARCHAR2(2000);
886      l_msg_index_out              NUMBER;
888      l_function_code              pa_proj_elements.function_code%TYPE ;
889 
890      l_dlv_ship_action_rec   oke_amg_grp.dlv_ship_action_rec_type;
891      l_dlv_req_action_rec    oke_amg_grp.dlv_req_action_rec_type;
892      l_dlv_ship_action_rec_b   oke_amg_grp.dlv_ship_action_rec_type;
893      l_dlv_req_action_rec_b    oke_amg_grp.dlv_req_action_rec_type;
894 
895      CURSOR c_action_info (c_action_elt_id IN NUMBER )
896      IS
897      SELECT name
898            ,function_code
899        FROM pa_proj_elements
900       WHERE proj_element_id = c_action_elt_id
901         AND object_type = 'PA_ACTIONS';
902 
903 BEGIN
904      x_msg_count := 0;
905      x_return_status := FND_API.G_RET_STS_SUCCESS;
906 
907      IF p_debug_mode = 'Y' THEN
908           PA_DEBUG.set_curr_function( p_function   => 'PA_DELETE_DLV_ACTION'
909                                      ,p_debug_mode => p_debug_mode );
910           pa_debug.g_err_stage:= 'Inside DELETE_DLV_ACTION ';
911           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
912      END IF;
913 
914      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
915           FND_MSG_PUB.initialize;
916      END IF;
917 
918      PA_ACTIONS_PVT.IS_DELETE_ACTION_ALLOWED
919           (p_api_version           => p_api_version
920           ,p_init_msg_list         => FND_API.G_FALSE
921           ,p_commit                => p_commit
922           ,p_validate_only         => p_validate_only
923           ,p_validation_level      => p_validation_level
924           ,p_calling_module        => p_calling_module
925           ,p_debug_mode            => p_debug_mode
926           ,p_max_msg_count         => p_max_msg_count
927           ,p_action_id             => p_action_id
928           ,p_action_ver_id         => p_action_ver_id
929           ,p_dlv_element_id        => p_dlv_element_id
930           ,p_dlv_version_id        => p_dlv_version_id
931           ,p_function_code         => p_function_code
932           ,p_project_id            => p_project_id
933           ,x_action_del_allowed    => l_action_del_allowed
934           ,x_return_status         => x_return_status
935           ,x_msg_count             => x_msg_count
936           ,x_msg_data              => x_msg_data
937           ) ;
938 
939      IF  (l_action_del_allowed = 'N' OR x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
940           RAISE Invalid_Arg_Exc_Dlv ;
941      END IF ;
942 
943      OPEN c_action_info(p_action_id) ;
944      FETCH c_action_info INTO l_name,l_function_code ;
945      CLOSE c_action_info ;
946 
947      IF l_function_code = g_billing THEN
948 
949           IF p_debug_mode = 'Y' THEN
950                pa_debug.g_err_stage:= 'Inside DELETE BILLING EVENTS ';
951                pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
952           END IF;
953 
954           -- Delete the billing event if its a billing function
955           PA_BILLING_WRKBNCH_EVENTS.DELETE_DELV_EVENT
956                         ( P_Project_Id     => p_project_id
957                          ,P_Deliverable_Id => p_dlv_version_id
958                          ,P_Action_Id      => p_action_ver_id
959                          ,P_Action_Name    => l_name
960                          ,X_Return_Status  => x_return_status
961                           ) ;
962       IF p_debug_mode = 'Y' THEN
963              pa_debug.write(g_module_name,'Returned from PA_BILLING_WRKBNCH_EVENTS.DELETE_DELV_EVENT ['||x_return_status||']',3) ;
964           END IF;
965 
966           IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
967                     RAISE Invalid_Arg_Exc_Dlv ;
968           END IF ;
969 
970      END IF ;
971 
972      --Start Bug # 3431156
973 
974      -- Delete the shipping or Procurement actions from OKE tables
975      IF l_function_code in( g_shipping,g_procurement) THEN
976          IF ( p_calling_module   = 'SELF_SERVICE') THEN
977 
978 --             removed oke's delete_action call, according to new stratergy, PA will not call oke's delete api
979 --              oke will set the row status to deleted in their AM method, which will be called by PA, and oke
980 --              will override EO's doDML method to handle delete case
981 
982 --             OKE_DELIVERABLE_UTILS_PUB.DELETE_ACTION
983 --                            ( P_Action_ID       => p_action_ver_id
984 --                             , X_Return_Status  => x_return_status
985 --                             , X_Msg_Count      => x_msg_count
986 --                             , X_Msg_Data       => x_msg_data
987 --                             ) ;
988 
989              IF p_debug_mode = 'Y' THEN
990                 pa_debug.write(g_module_name,'Returned from OKE_DELIVERABLE_UTILS_PUB.DELETE_ACTION ['||x_return_status||']',3) ;
991              END IF;
992 
993 --             IF  X_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
994 --                 RAISE Invalid_Arg_Exc_Dlv ;
995 --             END IF ;
996 
997          ELSIF (p_calling_module   = 'AMG' and l_function_code = g_procurement) THEN
998 
999            l_dlv_req_action_rec.pa_action_id := p_action_ver_id;
1000 
1001            oke_amg_grp.manage_dlv_action
1002              (  p_api_version          =>    p_api_version
1003               , p_init_msg_list         =>    FND_API.G_FALSE
1004               , p_commit                =>    p_commit
1005               , p_action                =>    'DELETE'
1006               -- 3732873 earlier l_function_code was passed for p_dlv_action_type
1010               , p_master_inv_org_id     =>    null
1007               -- and the value will be 'PROCUREMENT', but OKE expects this value to be 'REQ' for procurement
1008               -- if the value is not 'WSH' or 'REQ' , oke will throw the error message saying invalid action type
1009               , p_dlv_action_type       =>    'REQ'
1011               , p_item_dlv              =>    null
1012               , p_dlv_ship_action_rec   =>    l_dlv_ship_action_rec_b
1013               , p_dlv_req_action_rec    =>    l_dlv_req_action_rec
1014               , x_return_status         =>    x_return_status
1015               , x_msg_data              =>    x_msg_data
1016               , x_msg_count             =>    x_msg_count
1017               );
1018 
1019              IF p_debug_mode = 'Y' THEN
1020                 pa_debug.write(g_module_name,'Returned from oke_amg_grp.manage_dlv_action['||l_function_code||'] ['||x_return_status||']',3) ;
1021              END IF;
1022 
1023              IF  X_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
1024                  RAISE Invalid_Arg_Exc_Dlv ;
1025              END IF ;
1026 
1027          ELSIF (p_calling_module   = 'AMG' and l_function_code = g_shipping) THEN
1028 
1029            l_dlv_ship_action_rec.pa_action_id := p_action_ver_id;
1030 
1031            oke_amg_grp.manage_dlv_action
1032              (  p_api_version          =>    p_api_version
1033               , p_init_msg_list         =>    FND_API.G_FALSE
1034               , p_commit                =>    p_commit
1035               , p_action                =>    'DELETE'
1036               -- 3732873 earlier l_function_code was passed for p_dlv_action_type
1037               -- and the value will be 'SHIPPING', but OKE expects this value to be 'WSH' for shipping
1038               -- if the value is not 'WSH' or 'REQ' , oke will throw the error message saying invalid action type
1039               , p_dlv_action_type       =>    'WSH'
1040               , p_master_inv_org_id     =>    null
1041               , p_item_dlv              =>    null
1042               , p_dlv_ship_action_rec   =>    l_dlv_ship_action_rec
1043               , p_dlv_req_action_rec    =>    l_dlv_req_action_rec_b
1044               , x_return_status         =>    x_return_status
1045               , x_msg_data              =>    x_msg_data
1046               , x_msg_count             =>    x_msg_count
1047               );
1048 
1049              IF p_debug_mode = 'Y' THEN
1050                 pa_debug.write(g_module_name,'Returned from oke_amg_grp.manage_dlv_action['||l_function_code||'] ['||x_return_status||']',3) ;
1051              END IF;
1052 
1053              IF  X_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
1054                  RAISE Invalid_Arg_Exc_Dlv ;
1055              END IF ;
1056 
1057          END IF; --p_calling_module   = 'AMG'
1058      END IF ;
1059 
1060      -- End Bug # 3431156
1061 
1062      -- Delete from PA_PROJ_ELEMENTS Table
1063      DELETE FROM pa_proj_elements
1064            WHERE proj_element_id = p_action_id ;
1065 
1066      -- Delete from PA_PROJ_ELEMENT_VERSIONS Table
1067      DELETE FROM pa_proj_element_versions
1068            WHERE element_version_id = p_action_ver_id ;
1069 
1070      -- Delete from PA_PROJ_ELEM_VER_SCHEDULE Table
1071      DELETE FROM pa_proj_elem_ver_schedule
1072            WHERE element_version_id = p_action_ver_id ;
1073 
1074      -- Delete from PA_OBJECT_RELATIONSHIPS table
1075      DELETE FROM PA_OBJECT_RELATIONSHIPS
1076            WHERE object_id_to2 = p_action_id
1077            and   object_id_to1 = p_action_ver_id; -- Added condition for perf bug# 3964701
1078 
1079      IF p_debug_mode = 'Y' THEN
1080           pa_debug.g_err_stage := 'Exiting DELETE_DLV_ACTION' ;
1081           pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1082           pa_debug.reset_curr_function;
1083      END IF;
1084 
1085 EXCEPTION
1086 WHEN Invalid_Arg_Exc_Dlv THEN
1087      x_return_status := FND_API.G_RET_STS_ERROR;
1088      l_msg_count := FND_MSG_PUB.count_msg;
1089      IF p_debug_mode = 'Y' THEN
1090         pa_debug.g_err_stage := 'inside invalid arg exception of DELETE_DLV_ACTION';
1091         pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1092      END IF;
1093 
1094      IF x_msg_count = 1 THEN
1095            PA_INTERFACE_UTILS_PUB.get_messages
1096                (p_encoded        => FND_API.G_FALSE,
1097                 p_msg_index      => 1,
1098                 p_msg_count      => l_msg_count,
1099                 p_msg_data       => l_msg_data,
1100                 p_data           => l_data,
1101                 p_msg_index_out  => l_msg_index_out);
1102            x_msg_data  := l_data;
1103            x_msg_count := l_msg_count;
1104      ELSE
1105             x_msg_count := l_msg_count;
1106      END IF;
1107      IF p_debug_mode = 'Y' THEN
1108        pa_debug.reset_curr_function;
1109      END IF ;
1110      RETURN;
1111  WHEN OTHERS THEN
1112      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1113      x_msg_count     := 1;
1114      x_msg_data      := SQLERRM;
1115 
1116      FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PVT'
1117                              ,p_procedure_name  => 'DELETE_DLV_ACTION');
1118 
1119      IF p_debug_mode = 'Y' THEN
1120           pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
1121           pa_debug.write(g_module_name, 'DELETE_DLV_ACTION: ' ||pa_debug.g_err_stage,5);
1122           pa_debug.reset_curr_function;
1123      END IF;
1124      RAISE;
1125 END DELETE_DLV_ACTION ;
1126 
1127 PROCEDURE IS_DELETE_ACTION_ALLOWED
1128      (p_api_version      IN NUMBER   :=1.0
1129      ,p_init_msg_list    IN VARCHAR2 :=FND_API.G_TRUE
1130      ,p_commit           IN VARCHAR2 :=FND_API.G_FALSE
1131      ,p_validate_only    IN VARCHAR2 :=FND_API.G_TRUE
1135      ,p_max_msg_count    IN NUMBER   :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1132      ,p_validation_level IN NUMBER   :=FND_API.G_VALID_LEVEL_FULL
1133      ,p_calling_module   IN VARCHAR2 :='SELF_SERVICE'
1134      ,p_debug_mode       IN VARCHAR2 :='N'
1136      ,p_action_id        IN pa_proj_elements.proj_element_id%TYPE
1137      ,p_action_ver_id    IN pa_proj_element_versions.element_version_id%TYPE
1138      ,p_dlv_element_id   IN pa_proj_elements.proj_element_id%TYPE
1139      ,p_dlv_version_id   IN pa_proj_element_versions.element_version_id%TYPE
1140      ,p_function_code    IN pa_proj_elements.function_code%TYPE
1141      ,p_project_id       IN pa_projects_all.project_id%TYPE
1142      ,x_action_del_allowed IN VARCHAR2
1143      ,x_return_status   OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1144      ,x_msg_count       OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1145      ,x_msg_data        OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1146      )
1147 IS
1148      l_err_message fnd_new_messages.message_name%TYPE ;
1149      l_shipping_initiated         VARCHAR2(1) := 'N' ;
1150      l_proc_initiated             VARCHAR2(1) := 'N' ;
1151 
1152 BEGIN
1153      x_msg_count := 0;
1154      x_return_status := FND_API.G_RET_STS_SUCCESS;
1155 
1156      IF p_debug_mode = 'Y' THEN
1157           PA_DEBUG.set_curr_function( p_function   => 'IS_DELETE_ACTION_ALLOWED'
1158                                      ,p_debug_mode => p_debug_mode );
1159           pa_debug.g_err_stage:= 'Inside IS_DELETE_ACTION_ALLOWED ';
1160           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1161      END IF;
1162 
1163      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
1164           FND_MSG_PUB.initialize;
1165      END IF;
1166 
1167      --Bug 3512346 The Following Check (CHECK_DELV_EVENT_PROCESSED) has been uncommented.Also,passing p_Action_ver_id for the API
1168      --This change has been done by avaithia on Apr 1st,2004 (This is not a part of actual resolution for the bug.This is just an
1169      --additional fix included as a part of Bug 3512346
1170 
1171      IF p_function_code = g_billing THEN
1172           IF nvl(PA_BILLING_WRKBNCH_EVENTS.CHECK_DELV_EVENT_PROCESSED(p_project_id,p_dlv_version_id,p_action_ver_id),'Y') = 'Y' THEN /* changes done for bug 8890368 */
1173                l_err_message := 'PA_BILLING_ACTION_DEL_ERR' ; /* reverted the flag to 'Y' from 'N' in above for bug 9278197 */
1174           END IF ;
1175           pa_debug.g_err_stage := 'Exiting IS_DELETE_ACTION_ALLOWED' ;
1176           pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1177      ELSIF p_function_code = g_shipping THEN
1178           -- 3570283 changed parameter from p_dlv_version_id to p_action_ver_id
1179           -- api is expecting action version id and was passed deliverable version id
1180 
1181           -- 3555460 added validation for shipping action initiation
1182           -- if shipping is initiated and user is deleting shipping action,
1183           --    throw error message for shipping initiation
1184           -- else
1185           --    check for ready to ship flag for shipping action
1186           --    if ready to ship flag is set
1187           --        throw error message for ready to ship
1188           --    else
1189           --        allow shipping action deletion
1190           --    end if
1191 
1192           l_shipping_initiated := nvl(OKE_DELIVERABLE_UTILS_PUB.WSH_Initiated_Yn(p_action_ver_id),'N') ;
1193 
1194           IF l_shipping_initiated = 'Y' THEN
1195               l_err_message := 'PA_SHIP_ACTN_INIT_DEL_ERR';
1196           ELSE
1197               IF nvl(OKE_DELIVERABLE_UTILS_PUB.Ready_To_Ship_Yn(p_action_ver_id),'N') = 'Y' THEN
1198                    l_err_message := 'PA_SHIPPING_ACTION_DEL_ERR' ;
1199               END IF ;
1200           END IF;
1201      ELSIF p_function_code = g_procurement THEN
1202           -- 3570283 changed parameter from p_dlv_version_id to p_action_ver_id
1203           -- api is expecting action version id and was passed deliverable version id
1204 
1205           -- 3555460 added validation for procurement action initiation
1206           -- if procurement is initiated and user is deleting procurement action,
1207           --    throw error message for procurement initiation
1208           -- else
1209           --    check for ready to procure flag for procuremetn action
1210           --    if ready to procure flag is set
1211           --        throw error message for ready to procure
1212           --    else
1213           --        allow procurement action deletion
1214           --    end if
1215 
1216           l_proc_initiated := nvl(OKE_DELIVERABLE_UTILS_PUB.REQ_Initiated_Yn(p_action_ver_id),'N') ;
1217 
1218           IF l_proc_initiated = 'Y' THEN
1219               l_err_message := 'PA_PROC_ACTN_INIT_DEL_ERR';
1220           ELSE
1221               IF nvl(OKE_DELIVERABLE_UTILS_PUB.Ready_To_Procure_Yn(p_action_ver_id),'N') = 'Y' THEN
1222                    l_err_message := 'PA_PROCUREMENT_ACTION_DEL_ERR' ;
1223               END IF ;
1224           END IF ;
1225      END IF ;
1226 
1227      IF l_err_message IS NOT NULL THEN
1228           PA_UTILS.ADD_MESSAGE('PA',l_err_message);
1229           x_return_status := 'E';
1230      END IF ;
1231 
1232      IF p_debug_mode = 'Y' THEN
1233           pa_debug.g_err_stage := 'Exiting IS_DELETE_ACTION_ALLOWED' ;
1234           pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1235           pa_debug.reset_curr_function;
1236      END IF;
1237 
1238 EXCEPTION
1239  WHEN OTHERS THEN
1240      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1241      x_msg_count     := 1;
1242      x_msg_data      := SQLERRM;
1243 
1244      FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PVT'
1245                              ,p_procedure_name  => 'IS_DELETE_ACTION_ALLOWED');
1246 
1247      IF p_debug_mode = 'Y' THEN
1248           pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
1249           pa_debug.write('IS_DELETE_ACTION_ALLOWED: ' || g_module_name,pa_debug.g_err_stage,5);
1250           pa_debug.reset_curr_function;
1251      END IF;
1252      RAISE;
1253 END IS_DELETE_ACTION_ALLOWED;
1254 
1255 -- SubProgram           : COPY_ACTIONS
1256 -- Type                 : PROCEDURE
1257 -- Purpose              : Private API to Copy Actions From Source To Destination
1258 -- Note                 : Its a BULK API
1259 -- Assumptions          : None
1260 -- Parameter                      IN/OUT        Type         Required     Description and Purpose
1261 -- ---------------------------  ---------    ----------      ---------    ---------------------------
1262 -- p_api_version                   IN          NUMBER            N        Standard Parameter
1263 -- p_init_msg_list                 IN          VARCHAR2          N        Standard Parameter
1264 -- p_commit                        IN          VARCHAR2          N        Standard Parameter
1265 -- p_validate_only                 IN          VARCHAR2          N        Standard Parameter
1266 -- p_validation_level              IN          NUMBER            N        Standard Parameter
1267 -- p_calling_module                IN          VARCHAR2          N        Standard Parameter
1268 -- p_debug_mode                    IN          VARCHAR2          N        Standard Parameter
1269 -- p_max_msg_count                 IN          NUMBER            N        Standard Parameter
1270 -- p_source_object_id              IN          NUMBER            Y        Source Object Id
1271 -- p_source_object_type            IN          VARCHAR2          Y        Source Object Type
1272 -- p_target_object_id              IN          NUMBER            Y        Target Object Id
1273 -- p_target_object_type            IN          VARCHAR2          Y        Target Object Type
1274 -- p_project_id                    IN          NUMBER            Y        Project Id
1275 -- p_task_id                       IN          NUMBER            N        Task Id
1276 -- p_pm_source_reference           IN          VARCHAR2          N        PM Source Reference
1277 -- p_carrying_out_organization_id  IN          VARCHAR2          N        Carrying Out Org ID
1278 -- p_insert_or_update              IN          VARCHAR2          N        Identifies the API Mode
1279 -- x_return_status                 OUT         VARCHAR2          N        Mandatory Out Parameter
1280 -- x_msg_count                     OUT         NUMBER            N        Mandatory Out Parameter
1281 -- x_msg_data                      OUT         VARCHAR2          N        Mandatory Out Parameter
1282 
1283 PROCEDURE COPY_ACTIONS
1284      (p_api_version         IN NUMBER   :=1.0
1285      ,p_init_msg_list       IN VARCHAR2 :=FND_API.G_TRUE
1286      ,p_commit              IN VARCHAR2 :=FND_API.G_FALSE
1287      ,p_validate_only       IN VARCHAR2 :=FND_API.G_TRUE
1288      ,p_validation_level    IN NUMBER   :=FND_API.G_VALID_LEVEL_FULL
1289      ,p_calling_module      IN VARCHAR2 :='SELF_SERVICE'
1290      ,p_debug_mode          IN VARCHAR2 :='N'
1291      ,p_max_msg_count       IN NUMBER   :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1292      ,p_source_object_id    IN pa_object_relationships.object_id_from2%TYPE
1293      ,p_source_object_type  IN pa_object_relationships.object_type_from%TYPE
1294      ,p_target_object_id    IN pa_object_relationships.object_id_from2%TYPE
1295      ,p_target_object_type  IN pa_object_relationships.object_type_from%TYPE
1296      ,p_source_project_id   IN pa_projects_all.project_id%TYPE
1297      ,p_target_project_id   IN pa_projects_all.project_id%TYPE
1298      ,p_task_id             IN pa_proj_elements.proj_element_id%TYPE := null
1299      ,p_task_ver_id         IN pa_proj_element_versions.element_version_id%TYPE := null
1300      ,p_carrying_out_organization_id IN pa_proj_elements.carrying_out_organization_id%TYPE := null
1301      ,p_pm_source_reference IN pa_proj_elements.pm_source_reference%TYPE := null
1302      ,p_pm_source_code      IN pa_proj_elements.pm_source_code%TYPE := null
1303      ,p_calling_mode        IN VARCHAR2 := NULL -- Added for bug# 3911050
1304      ,x_return_status       OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1305      ,x_msg_count           OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1306      ,x_msg_data            OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1307      )
1308 IS
1309 
1310 --Bug 3614361
1311 l_proj_id                   pa_projects_all.project_id%TYPE;
1312 
1313 CURSOR get_source_actions IS
1314    SELECT  ppe.name
1315           ,ppe.manager_person_id
1316           ,ppe.function_code
1317           ,psc.scheduled_finish_date
1318           ,'N'
1319 -- Bug 3665911 Action Completion date should not get copied   ,psc.actual_finish_date
1320           ,null                  -- Hence passing the completion date as null
1321           ,ppe.description
1322           ,ppe.attribute_category
1323           ,ppe.attribute1
1324           ,ppe.attribute2
1325           ,ppe.attribute3
1326           ,ppe.attribute4
1327           ,ppe.attribute5
1328           ,ppe.attribute6
1329           ,ppe.attribute7
1330           ,ppe.attribute8
1331           ,ppe.attribute9
1332           ,ppe.attribute10
1333           ,ppe.attribute11
1334           ,ppe.attribute12
1335           ,ppe.attribute13
1336           ,ppe.attribute14
1337           ,ppe.attribute15
1338 --          ,null  --Commented for Bug # 3431156  --This corresponds to the target action version id
1339 --          ,null  --Commented for Bug # 3431156  --This corresponds to target action projelementid
1343           ,pa_tasks_s.nextval                  -- Target Action Proj Element Id -- Included for Bug # 3431156
1340           ,ppe.proj_element_id                 --Source Action Proj Element Id -- Included for Bug # 3431156
1341           ,ppv.element_version_id         --Source Action Version Id -- Included for Bug # 3431156
1342           ,pa_proj_element_versions_s.nextval  -- Target Action Version Id  -- Included for Bug # 3431156
1344           ,null    -- record version number
1345     FROM  pa_proj_elements ppe,
1346           pa_proj_element_versions ppv,
1347           pa_proj_elem_ver_schedule psc,
1348           pa_object_relationships obj,
1349           pa_projects_all pa,
1350           pa_project_types_all ppt
1351    WHERE  obj.object_id_from2 = p_source_object_id
1352      AND  obj.object_type_from = p_source_object_type
1353      AND  obj.relationship_type = 'A'
1354      AND  ppe.object_type = g_actions
1355      AND  ppe.project_id = l_proj_id /*3614361*/
1356      AND  ppv.project_id = l_proj_id /*3614361*/
1357      AND  psc.project_id = l_proj_id /*3614361*/
1358      AND  obj.object_id_to2 = ppe.proj_element_id
1359      AND  ppe.proj_element_id = ppv.proj_element_id
1360      AND  ppv.element_version_id = psc.element_version_id
1361      AND  pa.project_id = p_target_project_id
1362      AND  pa.project_type = ppt.project_type
1363      AND  pa.org_id = ppt.org_id
1364      AND  decode(ppt.project_type_class_code,'CONTRACT','X',ppe.function_code) <> 'BILLING'
1365 	 AND  DECODE(ppe.function_code,'PROCUREMENT','N','SHIPPING','N',PA_ALTERNATE_TASK_PVT.Is_Cbs_Enabled(pa.project_id))=PA_ALTERNATE_TASK_PVT.Is_Cbs_Enabled(pa.project_id);--16551563
1366 
1367 
1368      l_name_tbl               SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1369      l_mgr_person_id_tbl      SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()                     ;
1370      l_function_code_tbl      SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()     ;
1371      l_due_date_tbl           SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()                   ;
1372      l_comp_flag_tbl          SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()      ;
1373      l_comp_date_tbl          SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()                   ;
1374      l_element_id_tbl         SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()                     ;
1375      l_element_ver_id_tbl     SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()                     ;
1376      l_rec_ver_num_id_tbl     SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()                     ;
1377      l_description_tbl        SYSTEM.PA_VARCHAR2_2000_TBL_TYPE  := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
1378      l_attribute_category_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE  := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()    ;
1379      l_attribute1_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1380      l_attribute2_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1381      l_attribute3_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1382      l_attribute4_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1383      l_attribute5_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1384      l_attribute6_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1385      l_attribute7_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1386      l_attribute8_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1387      l_attribute9_tbl         SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1388      l_attribute10_tbl        SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1389      l_attribute11_tbl        SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1390      l_attribute12_tbl        SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1391      l_attribute13_tbl        SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1392      l_attribute14_tbl        SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1393      l_attribute15_tbl        SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()   ;
1394 
1395      l_carrying_out_org_id    PA_PROJ_ELEMENTS.CARRYING_OUT_ORGANIZATION_ID%TYPE ;
1396      l_object_version_id      PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null  ; --The target Deliverable version id
1397 
1398      --Start Bug # 3431156
1399      l_source_object_ver_id   PA_OBJECT_RELATIONSHIPS.OBJECT_ID_FROM1%TYPE :=null ; --The source Deliverable version id
1400      l_source_action_id_tbl   SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()  ;  --The Source Action Id
1401      l_source_action_ver_id_tbl   SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE(); --The Source Action Version Id
1402      --End --Bug # 3431156
1403 
1404      l_project_mode           VARCHAR2(30) := 'PROJECT' ;
1405      l_dummy                  VARCHAR2(240) ;
1406 
1407      l_debug_mode             VARCHAR2(10);
1408      l_msg_count              NUMBER ;
1409      l_data                   VARCHAR2(2000);
1410      l_msg_data               VARCHAR2(2000);
1411      l_msg_index_out          NUMBER;
1412 
1413      l_action_type            VARCHAR2(5);      -- 3573134 added variable to set action type for
1414                                                 -- oke actions
1415 
1416      --Commented for Bug # 3431156
1417      /*CURSOR get_version_id
1418      IS
1419      SELECT element_version_id
1420        FROM pa_proj_element_versions
1421       WHERE proj_element_id = l_target_object_id
1422         AND object_type = 'PA_DELIVERABLES' ;*/
1423 
1424     --Bug # 3431156 Modified the cursor to fetch
1428      SELECT element_version_id
1425     --either the source deliverable version id/target deliverable version id
1426      CURSOR get_version_id (l_dlv_id NUMBER)
1427      IS
1429        FROM pa_proj_element_versions
1430       WHERE proj_element_id = l_dlv_id
1431         AND object_type = 'PA_DELIVERABLES' ;
1432 
1433      CURSOR get_project_mode
1434      IS
1435      SELECT 'TEMPLATE'
1436      FROM pa_projects_all
1437      WHERE project_id = p_target_project_id
1438        AND template_flag = 'Y';
1439 BEGIN
1440 
1441      x_msg_count := 0;
1442      x_return_status := FND_API.G_RET_STS_SUCCESS;
1443 
1444      IF p_debug_mode = 'Y' THEN
1445           PA_DEBUG.set_curr_function( p_function   => 'COPY_ACTIONS'
1446                                      ,p_debug_mode => p_debug_mode );
1447           pa_debug.g_err_stage:= 'Inside COPY_ACTIONS ';
1448           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1449      END IF;
1450 
1451      IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
1452           FND_MSG_PUB.initialize;
1453      END IF;
1454 
1455      OPEN get_project_mode ;
1456      FETCH get_project_mode INTO l_project_mode ;
1457      CLOSE get_project_mode ;
1458 
1459      --Fetch all the actions from the source to
1460      --PLSQL table.
1461      IF p_debug_mode = 'Y' THEN
1462           pa_debug.g_err_stage:= 'Before fetch:get_source_actions : ';
1463           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1464      END IF;
1465 
1466      -- Bug 3614361
1467       IF p_source_object_type = g_dlvr_types THEN
1468         l_proj_id := -99 ;
1469       ELSE
1470         l_proj_id := p_source_project_id ;
1471       END IF;
1472      -- Bug 3614361
1473 
1474      OPEN  get_source_actions ;
1475      FETCH get_source_actions BULK COLLECT INTO
1476             l_name_tbl
1477            ,l_mgr_person_id_tbl
1478            ,l_function_code_tbl
1479            ,l_due_date_tbl
1480            ,l_comp_flag_tbl
1481            ,l_comp_date_tbl
1482            ,l_description_tbl
1483            ,l_attribute_category_tbl
1484            ,l_attribute1_tbl
1485            ,l_attribute2_tbl
1486            ,l_attribute3_tbl
1487            ,l_attribute4_tbl
1488            ,l_attribute5_tbl
1489            ,l_attribute6_tbl
1490            ,l_attribute7_tbl
1491            ,l_attribute8_tbl
1492            ,l_attribute9_tbl
1493            ,l_attribute10_tbl
1494            ,l_attribute11_tbl
1495            ,l_attribute12_tbl
1496            ,l_attribute13_tbl
1497            ,l_attribute14_tbl
1498            ,l_attribute15_tbl
1499            ,l_source_action_id_tbl     --Source action id
1500            ,l_source_action_ver_id_tbl --Source action version id
1501            ,l_element_ver_id_tbl       --target action version id  (already available)
1502            ,l_element_id_tbl           --target action id          (already available)
1503            ,l_rec_ver_num_id_tbl ;
1504      CLOSE get_source_actions ;
1505 
1506      IF p_debug_mode = 'Y' THEN
1507           pa_debug.g_err_stage:= 'After fetch:get_source_actions : ';
1508           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1509           pa_debug.g_err_stage:= ':l_name_tbl.LAST: '||l_name_tbl.LAST;
1510           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1511      END IF;
1512      --Following code commented for Bug # 3431156
1513      /* -- Get the  element version id of the deliverable
1514      IF  p_target_object_type = 'PA_DELIVERABLES' THEN
1515           OPEN get_version_id
1516           FETCH get_version_id INTO l_object_version_id ;
1517           CLOSE get_version_id ;
1518      END IF ;*/
1519 
1520      --Passing p_target_object_id to the cursor as the cursor has been
1521      --modified for Bug # 3431156
1522 
1523      -- Get the target element version id of the deliverable
1524      IF  p_target_object_type = 'PA_DELIVERABLES' THEN
1525           OPEN get_version_id (p_target_object_id);
1526           FETCH get_version_id INTO l_object_version_id ;
1527           CLOSE get_version_id ;
1528      END IF ;
1529 
1530      IF nvl(l_name_tbl.LAST,0)>0 THEN
1531           FOR i in l_name_tbl.FIRST..l_name_tbl.LAST LOOP
1532 
1533                 IF l_due_date_tbl(i) is NULL THEN
1534                      -- Get default action date
1535                      PA_DELIVERABLE_UTILS.GET_DEFAULT_ACTION_DATE
1536                                ( p_dlvr_ver_id   => l_object_version_id
1537                                 ,p_task_ver_id   => p_task_ver_id
1538                                 ,p_project_mode  => l_project_mode
1539                                 ,p_function_code => l_function_code_tbl(i)
1540                                 ,x_due_date      => l_due_date_tbl(i)
1541                                ) ;
1542                  END IF ;
1543 
1544                IF l_mgr_person_id_tbl(i) IS NULL THEN
1545                      -- Get default action owner
1546                      PA_DELIVERABLE_UTILS.GET_DEFAULT_ACTION_OWNER
1547                               (p_dlvr_ver_id  => l_object_version_id
1548                               ,x_owner_id     => l_mgr_person_id_tbl(i)
1549                               ,x_owner_name   => l_dummy
1550                                ) ;
1551                END IF ;
1552           END LOOP ;
1553      END IF ;
1554      IF p_debug_mode = 'Y' THEN
1555           pa_debug.g_err_stage:= 'Before calling CREATE_DLV_ACTIONS_IN_BULK ';
1556           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1557      END IF;
1558 
1562                (p_api_version               => p_api_version
1559      -- If some thing is fetched call CREATE_DLV_ACTIONS_INBULK API
1560      IF nvl(l_name_tbl.LAST,0) > 0 THEN
1561           PA_ACTIONS_PVT.CREATE_DLV_ACTIONS_IN_BULK
1563                ,p_init_msg_list             => p_init_msg_list
1564                ,p_commit                    => p_commit
1565                ,p_validate_only             => p_validate_only
1566                ,p_validation_level          => p_validation_level
1567                ,p_calling_module            => p_calling_module
1568                ,p_debug_mode                => p_debug_mode
1569                ,p_max_msg_count             => p_max_msg_count
1570                ,p_name_tbl                  => l_name_tbl
1571                ,p_manager_person_id_tbl     => l_mgr_person_id_tbl
1572                ,p_function_code_tbl         => l_function_code_tbl
1573                ,p_due_date_tbl              => l_due_date_tbl
1574                ,p_completed_flag_tbl        => l_comp_flag_tbl
1575                ,p_completion_date_tbl       => l_comp_date_tbl
1576                ,p_description_tbl           => l_description_tbl
1577                ,p_attribute_category_tbl    => l_attribute_category_tbl
1578                ,p_attribute1_tbl            => l_attribute1_tbl
1579                ,p_attribute2_tbl            => l_attribute2_tbl
1580                ,p_attribute3_tbl            => l_attribute3_tbl
1581                ,p_attribute4_tbl            => l_attribute4_tbl
1582                ,p_attribute5_tbl            => l_attribute5_tbl
1583                ,p_attribute6_tbl            => l_attribute6_tbl
1584                ,p_attribute7_tbl            => l_attribute7_tbl
1585                ,p_attribute8_tbl            => l_attribute8_tbl
1586                ,p_attribute9_tbl            => l_attribute9_tbl
1587                ,p_attribute10_tbl           => l_attribute10_tbl
1588                ,p_attribute11_tbl           => l_attribute11_tbl
1589                ,p_attribute12_tbl           => l_attribute12_tbl
1590                ,p_attribute13_tbl           => l_attribute13_tbl
1591                ,p_attribute14_tbl           => l_attribute14_tbl
1592                ,p_attribute15_tbl           => l_attribute15_tbl
1593                ,p_element_version_id_tbl    => l_element_ver_id_tbl
1594                ,p_proj_element_id_tbl       => l_element_id_tbl
1595                ,p_record_version_number_tbl => l_rec_ver_num_id_tbl
1596                ,p_project_id                => p_target_project_id
1597                ,p_object_id                 => p_target_object_id
1598                ,p_object_version_id         => l_object_version_id
1599                ,p_object_type               => p_target_object_type
1600                ,p_pm_source_code            => p_pm_source_code
1601                ,p_pm_source_reference       => p_pm_source_reference
1602                ,p_carrying_out_organization_id => p_carrying_out_organization_id
1603                ,x_return_status             => x_return_status
1604                ,x_msg_count                 => x_msg_count
1605                ,x_msg_data                  => x_msg_data
1606           ) ;
1607 
1608      END IF ;
1609 
1610      IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1611           RAISE Invalid_Arg_Exc_Dlv ;
1612      END IF ;
1613 
1614      --Start Bug # 3431156
1615 
1616      IF  p_source_object_type = 'PA_DELIVERABLES' THEN
1617           -- Get the source element version id of the deliverable
1618           OPEN get_version_id (p_source_object_id);
1619           FETCH get_version_id INTO l_source_object_ver_id ;
1620           CLOSE get_version_id ;
1621 
1622           IF p_debug_mode = 'Y' THEN
1623           pa_debug.g_err_stage:= 'The source element version id(deliverable)is :'|| l_source_object_ver_id;
1624           pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1625           END IF;
1626 
1627           --If something is fetched Call the Copy Action API of OKE
1628           IF nvl(l_name_tbl.LAST,0)>0 THEN
1629 
1630                IF p_debug_mode = 'Y' THEN
1631                pa_debug.g_err_stage:= 'Before calling OKE_DELIVERABLE_UTILS_PUB.Copy_Action ';
1632                pa_debug.write(g_module_name,pa_debug.g_err_stage,5) ;
1633                END IF;
1634 
1635                -- 3612702 : when deliverable actions are copied based on due date
1636                -- defaulting logic dates should be populated,
1637                -- added one parameter to take due date, oke will populate this date in their table
1638                -- and dlvr action due date and txn dates will be in synch when actions are copied
1639 
1640                FOR i in l_name_tbl.FIRST..l_name_tbl.LAST LOOP
1641                     OKE_DELIVERABLE_UTILS_PUB.Copy_Action
1642                      ( P_Source_Project_ID             =>  p_source_project_id
1643                      , P_Target_Project_ID             =>  p_target_project_id
1644                      , P_Source_Deliverable_ID         =>  l_source_object_ver_id
1645                      , P_Target_Deliverable_ID         =>  l_object_version_id
1646                      , P_Source_Action_ID              =>  l_source_action_ver_id_tbl(i)
1647                      , P_Target_Action_ID              =>  l_element_ver_id_tbl(i)
1648                      , P_Target_Action_Name            =>  l_name_tbl(i)
1649                      , P_Target_Action_Date            =>  l_due_date_tbl(i) -- 3612702 added new parameter
1650                      , X_Return_Status                 =>  x_return_status
1651                      , X_Msg_Count                     =>  x_msg_count
1652                      , X_Msg_Data                      =>  x_msg_data );
1653                      IF  X_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
1654                          RAISE Invalid_Arg_Exc_Dlv ;
1655                      END IF ;
1656 
1657                END LOOP ;
1658 
1662                END IF;
1659                IF p_debug_mode = 'Y' THEN
1660                pa_debug.g_err_stage:= 'After calling OKE_DELIVERABLE_UTILS_PUB.Copy_Action ';
1661                pa_debug.write(g_module_name,pa_debug.g_err_stage,5) ;
1663 
1664           END IF ;
1665 
1666           IF  x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1667                RAISE Invalid_Arg_Exc_Dlv ;
1668           END IF ;
1669 
1670      -- 3573134 added else if statement for deliverable type
1671      -- when ever deliverable defaults actions from type , action entry for defaulted shipping and
1672      -- procurement should be created in oke table also
1673      -- if defaulted action is of type shipping or procurement, call default_action oke api to
1674      -- default it to oke table
1675 
1676      ELSIF p_source_object_type = 'PA_DLVR_TYPES' THEN
1677 
1678           -- 3911050 reverted back the old changes
1679           -- Added a condition to check p_calling_mode, if it is UPDATE then and then call oke default_action api
1680           -- to default action from dlvr type to dlvr in oke tables
1681           -- In case of CREATE, oke create deliverable api is defaulting actions from dlvr type in their tables
1682 
1683           IF p_calling_mode = 'UPDATE' THEN
1684 
1685               -- Get the target element version id of the deliverable
1686 
1687               OPEN get_version_id (p_target_object_id);
1688               FETCH get_version_id INTO l_object_version_id ;
1689               CLOSE get_version_id ;
1690 
1691               IF p_debug_mode = 'Y' THEN
1692                   pa_debug.g_err_stage:= 'The target element version id(deliverable)is :'|| l_object_version_id;
1693                   pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1694               END IF;
1695 
1696               --If something is fetched Call the Default_Action API of OKE
1697 
1698               IF nvl(l_name_tbl.LAST,0)>0 THEN
1699 
1700                    IF p_debug_mode = 'Y' THEN
1701                        pa_debug.g_err_stage:= 'Before calling OKE_DELIVERABLE_UTILS_PUB.Default_Action In Loop ';
1702                        pa_debug.write(g_module_name,pa_debug.g_err_stage,5) ;
1703                    END IF;
1704 
1705                    FOR i in l_name_tbl.FIRST..l_name_tbl.LAST LOOP
1706 
1707                         l_action_type := null;
1708 
1709                         IF l_function_code_tbl(i) = 'SHIPPING' THEN
1710                             l_action_type := 'WSH';
1711                         ELSIF l_function_code_tbl(i) = 'PROCUREMENT' THEN
1712                             l_action_type := 'REQ';
1713                         END IF;
1714 
1715                         IF l_action_type IS NOT NULL THEN
1716 
1717                            -- 3612702 : when deliverable actions are defaulted, based on due date
1718                            -- defaulting logic dates should be populated,
1719                            -- added one parameter to take due date, oke will populate this date in their table
1720                            -- and dlvr action due date and txn dates will be in synch when actions are defaulted
1721 
1722                             OKE_DELIVERABLE_UTILS_PUB.Default_Action
1723                                         (
1724                                              P_Source_Code                =>  'PA'
1725                                             ,P_Action_Type                =>  l_action_type
1726                                             ,P_Source_Action_Name         =>  l_name_tbl(i)
1727                                             ,P_Source_Deliverable_ID      =>  l_object_version_id
1728                                             ,P_Source_Action_ID           =>  l_element_ver_id_tbl(i)
1729                                             ,P_Action_Date                =>  l_due_date_tbl(i) -- 3612702 added new parameter
1730                                         );
1731                         END IF;
1732 
1733                    END LOOP ;
1734 
1735                    IF p_debug_mode = 'Y' THEN
1736                        pa_debug.g_err_stage:= 'After calling OKE_DELIVERABLE_UTILS_PUB.Default_Action In Loop';
1737                        pa_debug.write(g_module_name,pa_debug.g_err_stage,5) ;
1738                    END IF;
1739 
1740                  END IF ;
1741           END IF;
1742      END IF ;
1743      -- 3573134
1744 
1745      --End Bug # 3431156
1746 
1747      -- 3911050 end
1748 
1749      IF p_debug_mode = 'Y' THEN
1750           pa_debug.g_err_stage := 'Exiting COPY_ACTIONS' ;
1751           pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1752           pa_debug.reset_curr_function;
1756 WHEN Invalid_Arg_Exc_Dlv THEN
1753      END IF;
1754 
1755 EXCEPTION
1757      x_return_status := FND_API.G_RET_STS_ERROR;
1758      l_msg_count := FND_MSG_PUB.count_msg;
1759      IF l_debug_mode = 'Y' THEN
1760         pa_debug.g_err_stage := 'inside invalid arg exception of COPY_ACTIONS';
1761         pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1762      END IF;
1763 
1764      IF l_msg_count = 1 THEN
1765            PA_INTERFACE_UTILS_PUB.get_messages
1766                (p_encoded        => FND_API.G_TRUE,
1767                 p_msg_index      => 1,
1768                 p_msg_count      => l_msg_count,
1769                 p_msg_data       => l_msg_data,
1770                 p_data           => l_data,
1771                 p_msg_index_out  => l_msg_index_out);
1772            x_msg_data  := l_data;
1773            x_msg_count := l_msg_count;
1774      ELSE
1775             x_msg_count := l_msg_count;
1776      END IF;
1777      IF l_debug_mode = 'Y' THEN
1778        pa_debug.reset_curr_function;
1779      END IF ;
1780      RETURN;
1781  WHEN OTHERS THEN
1782      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1783      x_msg_count     := 1;
1784      x_msg_data      := SQLERRM;
1785 
1786      IF get_source_actions%ISOPEN THEN
1787           CLOSE get_source_actions ;
1788      END IF ;
1789 
1790      FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PVT'
1791                      ,p_procedure_name  => 'COPY_ACTIONS');
1792      IF p_debug_mode = 'Y' THEN
1793           pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
1794           pa_debug.write('COPY_ACTIONS: ' || g_module_name,pa_debug.g_err_stage,5);
1795           pa_debug.reset_curr_function;
1796      END IF;
1797      RAISE;
1798 END COPY_ACTIONS;
1799 END PA_ACTIONS_PVT;