[Home] [Help]
PACKAGE BODY: APPS.PA_ACTIONS_PUB
Source
1 PACKAGE BODY PA_ACTIONS_PUB as
2 /* $Header: PAACTNPB.pls 120.4.12010000.2 2008/09/18 22:59:09 skkoppul ship $ */
3
4 Invalid_Arg_Exc_Dlv EXCEPTION ;
5 g_plsql_max_array_size NUMBER := 200 ;
6 g_module_name VARCHAR2(100) := 'pa.plsql.pa_actions_pub';
7 g_insert CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'INSERT' ;
8 g_create CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'CREATE' ;
9 g_delete CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'DELETE' ;
10 g_update CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'UPDATE' ;
11 g_modified CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'MODIFIED' ;
12 g_unmodified CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'UNMODIFIED' ;
13 g_billing CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'BILLING';
14 g_shipping CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'SHIPPING';
15 g_procurement CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'PROCUREMENT';
16 g_item CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'ITEM';
17 g_document CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'DOCUMENT';
18 g_others CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'OTHERS';
19 g_deliverables CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'PA_DELIVERABLES';
20 g_dlvr_types CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE := 'PA_DLVR_TYPES';
21 g_dlv_action_ship CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE:= 'WSH';
22 g_dlv_action_proc CONSTANT PA_LOOKUPS.LOOKUP_CODE%TYPE:= 'REQ';
23
24 -- SubProgram : CREATE_DLV_ACTIONS_IN_BULK
25 -- Type : PROCEDURE
26 -- Purpose : Public API to create to Deliverable Actions
27 -- Note : Its a BULK API
28 -- Assumptions : None
29 -- Parameter IN/OUT Type Required Description and Purpose
30 -- --------------------------- --------- ---------- --------- ---------------------------
31 -- p_api_version IN NUMBER N Standard Parameter
32 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
33 -- p_commit IN VARCHAR2 N Standard Parameter
34 -- p_validate_only IN VARCHAR2 N Standard Parameter
35 -- p_validation_level IN NUMBER N Standard Parameter
36 -- p_calling_module IN VARCHAR2 N Standard Parameter
37 -- p_debug_mode IN VARCHAR2 N Standard Parameter
38 -- p_max_msg_count IN NUMBER N Standard Parameter
39 -- p_name_tbl IN PLSQL Table N Action Name
40 -- p_manager_person_id_tbl IN PLSQL Table N Manager Id
41 -- p_function_code_tbl IN PLSQL Table N Action Function
42 -- p_due_date_tbl IN PLSQL Table N Due Date
43 -- p_completed_flag_tbl IN PLSQL Table N Completed Flag
44 -- p_completion_date_tbl IN PLSQL Table N Completed Date
45 -- p_description_tbl IN PLSQL Table N Description
46 -- p_attribute_category_tbl IN PLSQL Table N DFF Field
47 -- p_attribute1_tbl IN PLSQL Table N DFF Filed
48 -- p_attribute2_tbl IN PLSQL Table N DFF Field
49 -- p_attribute3_tbl IN PLSQL Table N DFF Filed
50 -- p_attribute4_tbl IN PLSQL Table N DFF Field
51 -- p_attribute5_tbl IN PLSQL Table N DFF Filed
52 -- p_attribute6_tbl IN PLSQL Table N DFF Field
53 -- p_attribute7_tbl IN PLSQL Table N DFF Filed
54 -- p_attribute8_tbl IN PLSQL Table N DFF Field
55 -- p_attribute9_tbl IN PLSQL Table N DFF Filed
56 -- p_attribute10_tbl IN PLSQL Table N DFF Field
57 -- p_attribute11_tbl IN PLSQL Table N DFF Filed
58 -- p_attribute12_tbl IN PLSQL Table N DFF Field
59 -- p_attribute13_tbl IN PLSQL Table N DFF Filed
60 -- p_attribute14_tbl IN PLSQL Table N DFF Field
61 -- p_attribute15_tbl IN PLSQL Table N DFF Filed
62 -- p_element_version_id_tbl IN PLSQL Table N Action VErsion Id
63 -- p_proj_element_id_tbl IN PLSQL Table N Action Element Id
64 -- p_record_version_number_tbl IN PLSQL Table N Record Version NUmber
65 -- p_project_id IN NUMBER N Project Id
66 -- p_object_id IN NUMBER Y Parent Id
67 -- p_object_version_id IN NUMBER N Parent Version ID
68 -- p_object_type IN VARCHAR2 Y Parent Type
69 -- p_pm_source_code IN NUMBER N PM Source Code
70 -- p_pm_source_reference IN VARCHAR2 N PM Source Reference
71 -- p_carrying_out_organization_id IN VARCHAR2 N Carrying Out Org ID
72 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
73 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
74 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
75
76
77
78 PROCEDURE CREATE_DLV_ACTIONS_IN_BULK
79 (p_api_version IN NUMBER :=1.0
80 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
81 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
82 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
83 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
84 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
85 ,p_debug_mode IN VARCHAR2 :='N'
86 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
87 ,p_name_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
88 ,p_manager_person_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
89 ,p_function_code_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
90 ,p_due_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
91 ,p_completed_flag_tbl IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
92 ,p_completion_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
93 ,p_description_tbl IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
94 ,p_attribute_category_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
95 ,p_attribute1_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
96 ,p_attribute2_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
97 ,p_attribute3_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
98 ,p_attribute4_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
99 ,p_attribute5_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
100 ,p_attribute6_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
101 ,p_attribute7_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
102 ,p_attribute8_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
103 ,p_attribute9_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
104 ,p_attribute10_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
105 ,p_attribute11_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
106 ,p_attribute12_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
107 ,p_attribute13_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
108 ,p_attribute14_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
109 ,p_attribute15_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
110 ,p_element_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
111 ,p_proj_element_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
112 ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
113 ,p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE := null
114 ,p_object_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE
115 ,p_object_version_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null
116 ,p_object_type IN PA_LOOKUPS.LOOKUP_CODE%TYPE
117 ,p_pm_source_code IN pa_proj_elements.pm_source_code%TYPE := null
118 ,p_pm_source_reference IN pa_proj_elements.pm_source_reference%TYPE := null
119 ,p_pm_source_reference_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() -- added 3435905
120 ,p_carrying_out_organization_id IN pa_proj_elements.carrying_out_organization_id%TYPE := null
121 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
122 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
123 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
124 )
125 IS
126 l_proj_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
127 l_rel_subtype PA_OBJECT_RELATIONSHIPS.RELATIONSHIP_SUBTYPE%TYPE ;
128 l_debug_mode VARCHAR2(10);
129 l_msg_count NUMBER ;
130 l_data VARCHAR2(2000);
131 l_msg_data VARCHAR2(2000);
132 l_msg_index_out NUMBER;
133 BEGIN
134
135 x_msg_count := 0;
136 x_return_status := FND_API.G_RET_STS_SUCCESS;
137 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
138
139 IF l_debug_mode = 'Y' THEN
140 PA_DEBUG.set_curr_function( p_function => 'CR_DLV_ACTIONS_IN_BULK'
141 ,p_debug_mode => l_debug_mode );
142 pa_debug.g_err_stage:= 'Inside CREATE_DLV_ACTIONS_IN_BULK ';
143 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
144 END IF;
145
146 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
147 FND_MSG_PUB.initialize;
148 END IF;
149
150 IF (p_commit = FND_API.G_TRUE) THEN
151 savepoint CR_DLV_ACTIONS_SP ;
152 END IF;
153
154 -- Call the pvt Create API only if something is fetched
155 -- to avoid unnecessary API call.
156 IF nvl(p_name_tbl.LAST,0)> 0 THEN
157
158 IF l_debug_mode = 'Y' THEN
159 pa_debug.write(g_module_name,'Before Calling PA_ACTIONS_PVT.CREATE_DLV_ACTIONS_IN_BULK' ,3);
160 END IF;
161 PA_ACTIONS_PVT.CREATE_DLV_ACTIONS_IN_BULK
162 (p_api_version => p_api_version
163 ,p_init_msg_list => FND_API.G_FALSE
164 ,p_commit => p_commit
165 ,p_validate_only => p_validate_only
166 ,p_validation_level => p_validation_level
167 ,p_calling_module => p_calling_module
168 ,p_debug_mode => l_debug_mode
169 ,p_max_msg_count => p_max_msg_count
170 ,p_name_tbl => p_name_tbl
171 ,p_manager_person_id_tbl => p_manager_person_id_tbl
172 ,p_function_code_tbl => p_function_code_tbl
173 ,p_due_date_tbl => p_due_date_tbl
174 ,p_completed_flag_tbl => p_completed_flag_tbl
175 ,p_completion_date_tbl => p_completion_date_tbl
176 ,p_description_tbl => p_description_tbl
177 ,p_attribute_category_tbl => p_attribute_category_tbl
178 ,p_attribute1_tbl => p_attribute1_tbl
179 ,p_attribute2_tbl => p_attribute2_tbl
180 ,p_attribute3_tbl => p_attribute3_tbl
181 ,p_attribute4_tbl => p_attribute4_tbl
182 ,p_attribute5_tbl => p_attribute5_tbl
183 ,p_attribute6_tbl => p_attribute6_tbl
184 ,p_attribute7_tbl => p_attribute7_tbl
185 ,p_attribute8_tbl => p_attribute8_tbl
186 ,p_attribute9_tbl => p_attribute9_tbl
187 ,p_attribute10_tbl => p_attribute10_tbl
188 ,p_attribute11_tbl => p_attribute11_tbl
189 ,p_attribute12_tbl => p_attribute12_tbl
190 ,p_attribute13_tbl => p_attribute13_tbl
191 ,p_attribute14_tbl => p_attribute14_tbl
192 ,p_attribute15_tbl => p_attribute15_tbl
193 ,p_element_version_id_tbl => p_element_version_id_tbl
194 ,p_proj_element_id_tbl => p_proj_element_id_tbl
195 ,p_record_version_number_tbl => p_record_version_number_tbl
196 ,p_project_id => p_project_id
197 ,p_object_id => p_object_id
198 ,p_object_version_id => p_object_version_id
199 ,p_object_type => p_object_type
200 ,p_pm_source_code => p_pm_source_code
201 ,p_pm_source_reference => p_pm_source_reference
202 ,p_pm_source_reference_tbl => p_pm_source_reference_tbl -- added 3435905
203 ,p_carrying_out_organization_id => p_carrying_out_organization_id
204 ,x_return_status => x_return_status
205 ,x_msg_count => x_msg_count
206 ,x_msg_data => x_msg_data
207 ) ;
208 END IF ;
209 IF l_debug_mode = 'Y' THEN
210 pa_debug.write(g_module_name,'x_return_status is ' || x_return_status,3);
211 END IF ;
212
213 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
214 RAISE Invalid_Arg_Exc_Dlv ;
215 END IF ;
216
217 IF l_debug_mode = 'Y' THEN
218 pa_debug.g_err_stage:= 'Exiting PA_ACTIONS_PUB.CREATE_DLV_ACTIONS_IN_BULK' ;
219 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
220 pa_debug.reset_curr_function;
221 END IF;
222
223 EXCEPTION
224 WHEN Invalid_Arg_Exc_Dlv THEN
225 x_return_status := FND_API.G_RET_STS_ERROR;
226 l_msg_count := FND_MSG_PUB.count_msg;
227
228 IF (p_commit = FND_API.G_TRUE) THEN
229 ROLLBACK TO CR_DLV_ACTIONS_SP;
230 END IF ;
231
232 IF l_debug_mode = 'Y' THEN
233 pa_debug.g_err_stage := 'inside invalid arg exception of CR_DLV_ACTIONS_IN_BULK';
234 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
235 END IF;
236
237 IF l_msg_count = 1 THEN
238 PA_INTERFACE_UTILS_PUB.get_messages
239 (p_encoded => FND_API.G_TRUE,
240 p_msg_index => 1,
241 p_msg_count => l_msg_count,
242 p_msg_data => l_msg_data,
243 p_data => l_data,
244 p_msg_index_out => l_msg_index_out);
245 x_msg_data := l_data;
246 x_msg_count := l_msg_count;
247 ELSE
248 x_msg_count := l_msg_count;
249 END IF;
250 IF l_debug_mode = 'Y' THEN
251 pa_debug.reset_curr_function;
252 END IF ;
253 RETURN;
254 WHEN OTHERS THEN
255 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
256 x_msg_count := 1;
257 x_msg_data := SQLERRM;
258
259 IF (p_commit = FND_API.G_TRUE) THEN
260 ROLLBACK TO CR_DLV_ACTIONS_SP;
261 END IF ;
262
263 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
264 ,p_procedure_name => 'CREATE_DLV_ACTIONS_IN_BULK');
265
266 IF p_debug_mode = 'Y' THEN
267 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
268 pa_debug.write(g_module_name, pa_debug.g_err_stage,5);
269 pa_debug.reset_curr_function;
270 END IF;
271 RAISE;
272 END CREATE_DLV_ACTIONS_IN_BULK ;
273
274 -- SubProgram : UPDATE_DLV_ACTIONS_IN_BULK
275 -- Type : PROCEDURE
276 -- Purpose : Public API to Update To Deliverable Actions
277 -- Note : Its a BULK API
278 -- Assumptions : None
279 -- Parameter IN/OUT Type Required Description and Purpose
280 -- --------------------------- --------- ---------- --------- ---------------------------
281 -- p_api_version IN NUMBER N Standard Parameter
282 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
283 -- p_commit IN VARCHAR2 N Standard Parameter
284 -- p_validate_only IN VARCHAR2 N Standard Parameter
285 -- p_validation_level IN NUMBER N Standard Parameter
286 -- p_calling_module IN VARCHAR2 N Standard Parameter
287 -- p_debug_mode IN VARCHAR2 N Standard Parameter
288 -- p_max_msg_count IN NUMBER N Standard Parameter
289 -- p_name_tbl IN PLSQL Table N Action Name
290 -- p_manager_person_id_tbl IN PLSQL Table N Manager Id
291 -- p_function_code_tbl IN PLSQL Table N Action Function
292 -- p_due_date_tbl IN PLSQL Table N Due Date
293 -- p_completed_flag_tbl IN PLSQL Table N Completed Flag
294 -- p_completion_date_tbl IN PLSQL Table N Completed Date
295 -- p_description_tbl IN PLSQL Table N Description
296 -- p_attribute_category_tbl IN PLSQL Table N DFF Field
297 -- p_attribute1_tbl IN PLSQL Table N DFF Filed
298 -- p_attribute2_tbl IN PLSQL Table N DFF Field
299 -- p_attribute3_tbl IN PLSQL Table N DFF Filed
300 -- p_attribute4_tbl IN PLSQL Table N DFF Field
301 -- p_attribute5_tbl IN PLSQL Table N DFF Filed
302 -- p_attribute6_tbl IN PLSQL Table N DFF Field
303 -- p_attribute7_tbl IN PLSQL Table N DFF Filed
304 -- p_attribute8_tbl IN PLSQL Table N DFF Field
305 -- p_attribute9_tbl IN PLSQL Table N DFF Filed
306 -- p_attribute10_tbl IN PLSQL Table N DFF Field
307 -- p_attribute11_tbl IN PLSQL Table N DFF Filed
308 -- p_attribute12_tbl IN PLSQL Table N DFF Field
309 -- p_attribute13_tbl IN PLSQL Table N DFF Filed
310 -- p_attribute14_tbl IN PLSQL Table N DFF Field
311 -- p_attribute15_tbl IN PLSQL Table N DFF Filed
312 -- p_element_version_id_tbl IN PLSQL Table N Action VErsion Id
313 -- p_proj_element_id_tbl IN PLSQL Table N Action Element Id
314 -- p_record_version_number_tbl IN PLSQL Table N Record Version NUmber
315 -- p_project_id IN NUMBER N Project Id
316 -- p_object_id IN NUMBER Y Parent Id
317 -- p_object_version_id IN NUMBER N Parent Version ID
318 -- p_object_type IN VARCHAR2 Y Parent Type
319 -- p_pm_source_code IN NUMBER N PM Source Code
320 -- p_pm_source_reference IN VARCHAR2 N PM Source Reference
321 -- p_carrying_out_organization_id IN VARCHAR2 N Carrying Out Org ID
322 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
323 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
324 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
325
326 PROCEDURE UPDATE_DLV_ACTIONS_IN_BULK
327 (p_api_version IN NUMBER :=1.0
328 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
329 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
330 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
331 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
332 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
333 ,p_debug_mode IN VARCHAR2 :='N'
334 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
335 ,p_name_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
336 ,p_manager_person_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
337 ,p_function_code_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
338 ,p_due_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
339 ,p_completed_flag_tbl IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
340 ,p_completion_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
341 ,p_description_tbl IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
342 ,p_attribute_category_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
343 ,p_attribute1_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
344 ,p_attribute2_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
345 ,p_attribute3_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
346 ,p_attribute4_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
347 ,p_attribute5_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
348 ,p_attribute6_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
349 ,p_attribute7_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
350 ,p_attribute8_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
351 ,p_attribute9_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
352 ,p_attribute10_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
353 ,p_attribute11_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
354 ,p_attribute12_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
355 ,p_attribute13_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
356 ,p_attribute14_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
357 ,p_attribute15_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
358 ,p_element_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
359 ,p_proj_element_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
360 ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
361 ,p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE := null
362 ,p_object_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null -- 3578694 passing default null
363 ,p_object_version_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null
364 ,p_object_type IN PA_LOOKUPS.LOOKUP_CODE%TYPE
365 ,p_pm_source_code IN pa_proj_elements.pm_source_code%TYPE := null
366 ,p_pm_source_reference IN pa_proj_elements.pm_source_reference%TYPE := null
367 ,p_carrying_out_organization_id IN pa_proj_elements.carrying_out_organization_id%TYPE := null
368 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
369 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
370 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
371 )
372 IS
373
374 l_debug_mode VARCHAR2(10);
375 l_msg_count NUMBER ;
376 l_data VARCHAR2(2000);
377 l_msg_data VARCHAR2(2000);
378 l_msg_index_out NUMBER;
379
380 BEGIN
381
382 x_msg_count := 0;
383 x_return_status := FND_API.G_RET_STS_SUCCESS;
384 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
385
386 IF l_debug_mode = 'Y' THEN
387 PA_DEBUG.set_curr_function( p_function => 'UPDADTE_DLV_ACTIONS_IN_BULK'
388 ,p_debug_mode => l_debug_mode );
389 pa_debug.g_err_stage:= 'Inside UPDATE_DLV_ACTIONS_IN_BULK ';
390 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
391 END IF;
392
393 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
394 FND_MSG_PUB.initialize;
395 END IF;
396
397 IF (p_commit = FND_API.G_TRUE) THEN
398 savepoint UP_DLV_ACTIONS_SP ;
399 END IF;
400
401 -- Call the pvt Create API only if something is fetched
402 -- to avoid unnecessary API call.
403 IF nvl(p_name_tbl.LAST,0)>0 THEN
404
405 PA_ACTIONS_PVT.UPDATE_DLV_ACTIONS_IN_BULK
406 (p_api_version => p_api_version
407 ,p_init_msg_list => FND_API.G_FALSE
408 ,p_commit => p_commit
409 ,p_validate_only => p_validate_only
410 ,p_validation_level => p_validation_level
411 ,p_calling_module => p_calling_module
412 ,p_debug_mode => l_debug_mode
413 ,p_max_msg_count => p_max_msg_count
414 ,p_name_tbl => p_name_tbl
415 ,p_manager_person_id_tbl => p_manager_person_id_tbl
416 ,p_function_code_tbl => p_function_code_tbl
417 ,p_due_date_tbl => p_due_date_tbl
418 ,p_completed_flag_tbl => p_completed_flag_tbl
419 ,p_completion_date_tbl => p_completion_date_tbl
420 ,p_description_tbl => p_description_tbl
421 ,p_attribute_category_tbl => p_attribute_category_tbl
422 ,p_attribute1_tbl => p_attribute1_tbl
423 ,p_attribute2_tbl => p_attribute2_tbl
424 ,p_attribute3_tbl => p_attribute3_tbl
425 ,p_attribute4_tbl => p_attribute4_tbl
426 ,p_attribute5_tbl => p_attribute5_tbl
427 ,p_attribute6_tbl => p_attribute6_tbl
428 ,p_attribute7_tbl => p_attribute7_tbl
429 ,p_attribute8_tbl => p_attribute8_tbl
430 ,p_attribute9_tbl => p_attribute9_tbl
431 ,p_attribute10_tbl => p_attribute10_tbl
432 ,p_attribute11_tbl => p_attribute11_tbl
433 ,p_attribute12_tbl => p_attribute12_tbl
434 ,p_attribute13_tbl => p_attribute13_tbl
435 ,p_attribute14_tbl => p_attribute14_tbl
436 ,p_attribute15_tbl => p_attribute15_tbl
437 ,p_element_version_id_tbl => p_element_version_id_tbl
438 ,p_proj_element_id_tbl => p_proj_element_id_tbl
439 ,p_record_version_number_tbl => p_record_version_number_tbl
440 ,p_project_id => p_project_id
441 ,p_object_id => p_object_id
442 ,p_object_version_id => p_object_version_id
443 ,p_object_type => p_object_type
444 ,p_pm_source_code => p_pm_source_code
445 ,p_pm_source_reference => p_pm_source_reference
446 ,p_carrying_out_organization_id => p_carrying_out_organization_id
447 ,x_return_status => x_return_status
448 ,x_msg_count => x_msg_count
449 ,x_msg_data => x_msg_data
450 ) ;
451
452 END IF ;
453
454 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
455 RAISE Invalid_Arg_Exc_Dlv ;
456 END IF ;
457
458 IF l_debug_mode = 'Y' THEN
459 pa_debug.g_err_stage:= 'Exiting UPDATE_DLV_ACTIONS_IN_BULK' ;
460 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
461 pa_debug.reset_curr_function;
462 END IF;
463
464 EXCEPTION
465 WHEN Invalid_Arg_Exc_Dlv THEN
466 x_return_status := FND_API.G_RET_STS_ERROR;
467 l_msg_count := FND_MSG_PUB.count_msg;
468
469 IF (p_commit = FND_API.G_TRUE) THEN
470 ROLLBACK TO UP_DLV_ACTIONS_SP;
471 END IF ;
472
473 IF l_debug_mode = 'Y' THEN
474 pa_debug.g_err_stage := 'inside invalid arg exception of UPDATE_DLV_ACTIONS_IN_BULK';
475 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
476 END IF;
477
478 IF l_msg_count = 1 THEN
479 PA_INTERFACE_UTILS_PUB.get_messages
480 (p_encoded => FND_API.G_TRUE,
481 p_msg_index => 1,
482 p_msg_count => l_msg_count,
483 p_msg_data => l_msg_data,
484 p_data => l_data,
485 p_msg_index_out => l_msg_index_out);
486 x_msg_data := l_data;
487 x_msg_count := l_msg_count;
488 ELSE
489 x_msg_count := l_msg_count;
490 END IF;
491 IF l_debug_mode = 'Y' THEN
492 pa_debug.reset_curr_function;
493 END IF ;
494 RETURN;
495 WHEN OTHERS THEN
496 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
497 x_msg_count := 1;
498 x_msg_data := SQLERRM;
499
500 IF (p_commit = FND_API.G_TRUE) THEN
501 ROLLBACK TO UP_DLV_ACTIONS_SP;
502 END IF ;
503
504 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
505 ,p_procedure_name => 'UPDATE_DLV_ACTIONS_IN_BULK');
506
507 IF p_debug_mode = 'Y' THEN
508 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
509 pa_debug.write('UPDATE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
510 pa_debug.reset_curr_function;
511 END IF;
512 RAISE;
513 END UPDATE_DLV_ACTIONS_IN_BULK ;
514
515 -- SubProgram : DELETE_DLV_ACTIONS_IN_BULK
516 -- Type : PROCEDURE
517 -- Purpose : Public API to Delete To Deliverable Actions
518 -- Note : Its a BULK API
519 -- Assumptions : None
520 -- Parameter IN/OUT Type Required Description and Purpose
521 -- --------------------------- --------- ---------- --------- ---------------------------
522 -- p_api_version IN NUMBER N Standard Parameter
523 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
524 -- p_commit IN VARCHAR2 N Standard Parameter
525 -- p_validate_only IN VARCHAR2 N Standard Parameter
526 -- p_validation_level IN NUMBER N Standard Parameter
527 -- p_calling_module IN VARCHAR2 N Standard Parameter
528 -- p_debug_mode IN VARCHAR2 N Standard Parameter
529 -- p_max_msg_count IN NUMBER N Standard Parameter
530 -- p_element_version_id_tbl IN PLSQL Table N Action VErsion Id
531 -- p_proj_element_id_tbl IN PLSQL Table N Action Element Id
532 -- p_record_version_number_tbl IN PLSQL Table N Record Version NUmber
533 -- p_object_id IN NUMBER Y Parent Id
534 -- p_object_version_id IN NUMBER N Parent Version ID
535 -- p_object_type IN VARCHAR2 Y Parent Type
536 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
537 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
538 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
539
540 PROCEDURE DELETE_DLV_ACTIONS_IN_BULK
541 (p_api_version IN NUMBER :=1.0
542 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
543 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
544 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
545 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
546 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
547 ,p_debug_mode IN VARCHAR2 :='N'
548 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
549 ,p_object_type IN PA_LOOKUPS.LOOKUP_CODE%TYPE
550 ,p_object_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE
551 ,p_element_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
552 ,p_proj_element_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
553 ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
554 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
555 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
556 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
557 )
558 IS
559 l_debug_mode VARCHAR2(10);
560 l_msg_count NUMBER ;
561 l_data VARCHAR2(2000);
562 l_msg_data VARCHAR2(2000);
563 l_msg_index_out NUMBER;
564 BEGIN
565 x_msg_count := 0;
566 x_return_status := FND_API.G_RET_STS_SUCCESS;
567 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
568
569 IF l_debug_mode = 'Y' THEN
570 PA_DEBUG.set_curr_function( p_function => 'DELETE_DLV_ACTIONS_IN_BULK',
571 p_debug_mode => l_debug_mode );
572 pa_debug.g_err_stage:= 'Inside DELETE_DLV_ACTIONS_IN_BULK ';
573 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
574 END IF;
575
576
577 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
578 FND_MSG_PUB.initialize;
579 END IF;
580
581 IF (p_commit = FND_API.G_TRUE) THEN
582 savepoint DEL_DLV_ACTIONS_SP ;
583 END IF;
584
585 IF l_debug_mode = 'Y' THEN
586 pa_debug.g_err_stage:= 'Validating Input parameters';
587 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
588 END IF;
589
590 PA_ACTIONS_PVT.DELETE_DLV_ACTIONS_IN_BULK
591 (p_api_version => p_api_version
592 ,p_init_msg_list => FND_API.G_FALSE
593 ,p_commit => p_commit
594 ,p_validate_only => p_validate_only
595 ,p_validation_level => p_validation_level
596 ,p_calling_module => p_calling_module
597 ,p_debug_mode => l_debug_mode
598 ,p_max_msg_count => p_max_msg_count
599 ,p_object_type => p_object_type
600 ,p_object_id => p_object_id
601 ,p_element_version_id_tbl => p_element_version_id_tbl
602 ,p_proj_element_id_tbl => p_proj_element_id_tbl
603 ,p_record_version_number_tbl => p_record_version_number_tbl
604 ,x_return_status => x_return_status
605 ,x_msg_count => x_msg_count
606 ,x_msg_data => x_msg_data
607 ) ;
608
609 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
610 RAISE Invalid_Arg_Exc_Dlv ;
611 END IF ;
612
613 IF l_debug_mode = 'Y' THEN --Added for bug 4945876
614 pa_debug.reset_curr_function;
615 END IF ;
616
617 EXCEPTION
618 WHEN Invalid_Arg_Exc_Dlv THEN
619 x_return_status := FND_API.G_RET_STS_ERROR;
620 l_msg_count := FND_MSG_PUB.count_msg;
621
622 IF (p_commit = FND_API.G_TRUE) THEN
623 ROLLBACK TO DEL_DLV_ACTIONS_SP;
624 END IF ;
625
626 IF l_debug_mode = 'Y' THEN
627 pa_debug.g_err_stage := 'inside invalid arg exception of CR_UP_DLV_ACTIONS_IN_BULK';
628 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
629 END IF;
630
631 IF l_msg_count = 1 THEN
632 PA_INTERFACE_UTILS_PUB.get_messages
633 (p_encoded => FND_API.G_TRUE,
634 p_msg_index => 1,
635 p_msg_count => l_msg_count,
636 p_msg_data => l_msg_data,
637 p_data => l_data,
638 p_msg_index_out => l_msg_index_out);
639 x_msg_data := l_data;
640 x_msg_count := l_msg_count;
641 ELSE
642 x_msg_count := l_msg_count;
643 END IF;
644 IF l_debug_mode = 'Y' THEN
645 pa_debug.reset_curr_function;
646 END IF ;
647 RETURN;
648 WHEN OTHERS THEN
649 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
650 x_msg_count := 1;
651 x_msg_data := SQLERRM;
652
653 IF (p_commit = FND_API.G_TRUE) THEN
654 ROLLBACK TO UP_DLV_ACTIONS_SP;
655 END IF ;
656
657 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
658 ,p_procedure_name => 'DELETE_DLV_ACTIONS_IN_BULK');
659
660 IF p_debug_mode = 'Y' THEN
661 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
662 pa_debug.write('DELETE_DLV_ACTIONS_IN_BULK: ' || g_module_name,pa_debug.g_err_stage,5);
663 pa_debug.reset_curr_function;
664 END IF;
665 RAISE;
666 END DELETE_DLV_ACTIONS_IN_BULK ;
667
668 -- SubProgram : CR_UP_DLV_ACTIONS_IN_BULK
669 -- Type : PROCEDURE
670 -- Purpose : Public API to Create/Update To Deliverable Actions
671 -- Note : Its a BULK API
672 -- Assumptions : None
673 -- Parameter IN/OUT Type Required Description and Purpose
674 -- --------------------------- --------- ---------- --------- ---------------------------
675 -- p_api_version IN NUMBER N Standard Parameter
676 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
677 -- p_commit IN VARCHAR2 N Standard Parameter
678 -- p_validate_only IN VARCHAR2 N Standard Parameter
679 -- p_validation_level IN NUMBER N Standard Parameter
680 -- p_calling_module IN VARCHAR2 N Standard Parameter
681 -- p_debug_mode IN VARCHAR2 N Standard Parameter
682 -- p_max_msg_count IN NUMBER N Standard Parameter
683 -- p_name_tbl IN PLSQL Table N Action Name
684 -- p_manager_person_id_tbl IN PLSQL Table N Manager Id
685 -- p_function_code_tbl IN PLSQL Table N Action Function
686 -- p_due_date_tbl IN PLSQL Table N Due Date
687 -- p_completed_flag_tbl IN PLSQL Table N Completed Flag
688 -- p_completion_date_tbl IN PLSQL Table N Completed Date
689 -- p_description_tbl IN PLSQL Table N Description
690 -- p_attribute_category_tbl IN PLSQL Table N DFF Field
691 -- p_attribute1_tbl IN PLSQL Table N DFF Filed
692 -- p_attribute2_tbl IN PLSQL Table N DFF Field
693 -- p_attribute3_tbl IN PLSQL Table N DFF Filed
694 -- p_attribute4_tbl IN PLSQL Table N DFF Field
695 -- p_attribute5_tbl IN PLSQL Table N DFF Filed
696 -- p_attribute6_tbl IN PLSQL Table N DFF Field
697 -- p_attribute7_tbl IN PLSQL Table N DFF Filed
698 -- p_attribute8_tbl IN PLSQL Table N DFF Field
699 -- p_attribute9_tbl IN PLSQL Table N DFF Filed
700 -- p_attribute10_tbl IN PLSQL Table N DFF Field
701 -- p_attribute11_tbl IN PLSQL Table N DFF Filed
702 -- p_attribute12_tbl IN PLSQL Table N DFF Field
703 -- p_attribute13_tbl IN PLSQL Table N DFF Filed
704 -- p_attribute14_tbl IN PLSQL Table N DFF Field
705 -- p_attribute15_tbl IN PLSQL Table N DFF Filed
706 -- p_element_version_id_tbl IN PLSQL Table N Action VErsion Id
707 -- p_proj_element_id_tbl IN PLSQL Table N Action Element Id
708 -- p_record_version_number_tbl IN PLSQL Table N Record Version NUmber
709 -- p_project_id IN NUMBER N Project Id
710 -- p_object_id IN NUMBER Y Parent Id
711 -- p_object_version_id IN NUMBER N Parent Version ID
712 -- p_object_type IN VARCHAR2 Y Parent Type
713 -- p_pm_source_code IN NUMBER N PM Source Code
714 -- p_pm_source_reference IN VARCHAR2 N PM Source Reference
715 -- p_carrying_out_organization_id IN VARCHAR2 N Carrying Out Org ID
716 -- p_insert_or_update IN VARCHAR2 N Identifies the API Mode
717 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
718 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
719 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
720
721 PROCEDURE CR_UP_DLV_ACTIONS_IN_BULK
722 (p_api_version IN NUMBER :=1.0
723 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
724 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
725 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
726 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
727 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
728 ,p_debug_mode IN VARCHAR2 :='N'
729 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
730 ,p_name_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
731 ,p_manager_person_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
732 ,p_function_code_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
733 ,p_due_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
734 ,p_completed_flag_tbl IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
735 ,p_completion_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
736 ,p_description_tbl IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
737 ,p_attribute_category_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
738 ,p_attribute1_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
739 ,p_attribute2_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
740 ,p_attribute3_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
741 ,p_attribute4_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
742 ,p_attribute5_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
743 ,p_attribute6_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
744 ,p_attribute7_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
745 ,p_attribute8_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
746 ,p_attribute9_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
747 ,p_attribute10_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
748 ,p_attribute11_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
749 ,p_attribute12_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
750 ,p_attribute13_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
751 ,p_attribute14_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
752 ,p_attribute15_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
753 ,p_element_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
754 ,p_proj_element_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
755 ,p_user_action_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
756 ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
757 ,p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE := null
758 ,p_object_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE
759 ,p_object_version_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null
760 ,p_object_type IN PA_LOOKUPS.LOOKUP_CODE%TYPE
761 ,p_pm_source_code IN pa_proj_elements.pm_source_code%TYPE := null
762 ,p_pm_source_reference IN pa_proj_elements.pm_source_reference%TYPE := null
763 ,p_pm_source_reference_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() -- added 3435905
764 ,p_carrying_out_organization_id IN pa_proj_elements.carrying_out_organization_id%TYPE := null
765 ,p_insert_or_update IN VARCHAR2 := 'INSERT'
766 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
767 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
768 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
769 )
770 IS
771
772 l_debug_mode VARCHAR2(10);
773 l_msg_count NUMBER ;
774 l_data VARCHAR2(2000);
775 l_msg_data VARCHAR2(2000);
776 l_msg_index_out NUMBER;
777
778 l_ins_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
779 l_ins_mgr_person_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
780 l_ins_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
781 l_ins_due_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
782 l_ins_comp_flag_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE() ;
783 l_ins_comp_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
784 l_ins_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
785 l_ins_element_ver_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
786 l_ins_rec_ver_num_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
787 l_ins_description_tbl SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
788 l_ins_attribute_category_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
789 l_ins_attribute1_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
790 l_ins_attribute2_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
791 l_ins_attribute3_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
792 l_ins_attribute4_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
793 l_ins_attribute5_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
794 l_ins_attribute6_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
795 l_ins_attribute7_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
796 l_ins_attribute8_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
797 l_ins_attribute9_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
798 l_ins_attribute10_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
799 l_ins_attribute11_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
800 l_ins_attribute12_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
801 l_ins_attribute13_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
802 l_ins_attribute14_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
803 l_ins_attribute15_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
804
805 l_upd_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
806 l_upd_mgr_person_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
807 l_upd_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
808 l_upd_due_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
809 l_upd_comp_flag_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE() ;
810 l_upd_comp_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
811 l_upd_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
812 l_upd_element_ver_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
813 l_upd_rec_ver_num_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
814 l_upd_description_tbl SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
815 l_upd_attribute_category_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
816 l_upd_attribute1_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
817 l_upd_attribute2_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
818 l_upd_attribute3_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
819 l_upd_attribute4_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
820 l_upd_attribute5_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
821 l_upd_attribute6_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
822 l_upd_attribute7_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
823 l_upd_attribute8_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
824 l_upd_attribute9_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
825 l_upd_attribute10_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
826 l_upd_attribute11_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
827 l_upd_attribute12_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
828 l_upd_attribute13_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
829 l_upd_attribute14_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
830 l_upd_attribute15_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
831
832 l_del_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
833 l_del_element_ver_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
834 l_del_rec_ver_num_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
835
836 j_ins NUMBER ;
837 j_upd NUMBER ;
838 j_del NUMBER ;
839
840 -- 3769024 curstor to retrieve element_version_id of action from proj_element_id
841
842 Cursor c_actn_info(l_action_ver_id IN NUMBER) IS
843 SELECT
844 PEV.PROJ_ELEMENT_ID
845 FROM
846 PA_PROJ_ELEMENT_VERSIONS PEV
847 WHERE
848 PEV.ELEMENT_VERSION_ID = l_action_ver_id
849 AND PEV.OBJECT_TYPE = 'PA_ACTIONS';
850
851 -- 3769024 end
852
853 BEGIN
854
855 x_msg_count := 0;
856 x_return_status := FND_API.G_RET_STS_SUCCESS;
857 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
858
859 IF l_debug_mode = 'Y' THEN
860 PA_DEBUG.set_curr_function( p_function => 'CR_UP_DLV_ACTIONS_IN_BULK',
861 p_debug_mode => l_debug_mode );
862 pa_debug.g_err_stage:= 'Inside CR_UP_DLV_ACTIONS_IN_BULK ';
863 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
864 END IF;
865
866 IF l_debug_mode = 'Y' THEN
867 pa_debug.g_err_stage:= 'Printing Input parameters';
868 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
869 pa_debug.write(g_module_name,'p_object_id'||':'||p_object_id,3) ;
870 pa_debug.write(g_module_name,'p_object_type'||':'||p_object_type,3) ;
871 pa_debug.write(g_module_name,'p_insert_or_update'||':'||p_insert_or_update,3) ;
872 END IF;
873
874 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
875 FND_MSG_PUB.initialize;
876 END IF;
877
878 IF (p_commit = FND_API.G_TRUE) THEN
879 savepoint CR_UP_DLV_ACTIONS_SP ;
880 END IF;
881
882 IF l_debug_mode = 'Y' THEN
883 pa_debug.g_err_stage:= 'Validating Input parameters';
884 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
885 END IF;
886
887 IF p_insert_or_update IS NULL
888 THEN
889 IF l_debug_mode = 'Y' THEN
890 pa_debug.g_err_stage:= 'INVALID INPUT PARAMETER';
891 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
892 END IF;
893
894 x_return_status := FND_API.G_RET_STS_ERROR;
895 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
896 ,p_msg_name => 'PA_INV_PARAM_PASSED');
897 RAISE Invalid_Arg_Exc_Dlv;
898 END IF;
899
900
901 -- Call the validation API. It will
902 -- perform all the validation.
903 IF l_debug_mode = 'Y' THEN
904 pa_debug.g_err_stage:= 'Calling PA_ACTIONS_PUB.VALIDATE_ACTIONS';
905 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
906 END IF ;
907
908 -- Bug 3651563 ,If p_calling_module is nt passed ,
909 -- Whatever validation is done in this API specific to AMG Flow will not get fired
910 -- So,Passing p_calling_module also
911 PA_ACTIONS_PUB.VALIDATE_ACTIONS
912 ( p_init_msg_list => FND_API.G_FALSE
913 ,p_debug_mode => l_debug_mode
914 ,p_calling_module => p_calling_module -- Included by avaithia Bug 3651563
915 ,p_name_tbl => p_name_tbl
916 ,p_completed_flag_tbl => p_completed_flag_tbl
917 ,p_completion_date_tbl => p_completion_date_tbl
918 ,p_description_tbl => p_description_tbl
919 ,p_function_code_tbl => p_function_code_tbl
920 ,p_due_date_tbl => p_due_date_tbl
921 ,p_element_version_id_tbl=> p_element_version_id_tbl
922 ,p_proj_element_id_tbl => p_proj_element_id_tbl
923 ,p_user_action_tbl => p_user_action_tbl
924 ,p_object_id => p_object_id
925 ,p_object_version_id => p_object_version_id
926 ,p_object_type => p_object_type
927 ,p_project_id => p_project_id
928 ,p_action_owner_id_tbl => p_manager_person_id_tbl
929 ,p_carrying_out_org_id => p_carrying_out_organization_id
930 ,p_action_reference_tbl => p_pm_source_reference_tbl
931 ,p_deliverable_id => p_object_id
932 ,p_insert_or_update => p_insert_or_update
933 ,x_return_status => x_return_status
934 ,x_msg_count => x_msg_count
935 ,x_msg_data => x_msg_data
936 ) ;
937
938 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
939 RAISE Invalid_Arg_Exc_Dlv ;
940 END IF ;
941
942
943 -- In update mode user can perform following actions
944 -- 1. Create a new action.
945 -- 2. Update an existing/new action.
946 -- 3. Delete an existing/new action.
947 -- So, in update mode following execution order will
948 -- be maintained.
949 -- 1. Delete
950 -- 2. Update
951 -- 3. Insert
952
953 -- Loop through p_user_actions_tbl to find out the
954 -- actions which are deleted by user.
955
956
957 -- Initialize the local variable
958 j_ins := 0 ;
959 j_upd := 0 ;
960 j_del := 0 ;
961
962 IF nvl(p_user_action_tbl.last,0) >= 1 THEN -- Only if something is fetched
963
964 FOR i in p_user_action_tbl.FIRST .. p_user_action_tbl.LAST LOOP
965
966 IF nvl(p_user_action_tbl(i),g_insert) = g_insert THEN
967
968 IF l_debug_mode = 'Y' THEN
969 pa_debug.g_err_stage:= 'Insert Operation';
970 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
971 END IF;
972
973 j_ins:=j_ins+1 ;
974
975 -- Get all the actions which are created, into
976 -- local plsql tables, which will be used to
977 -- call PLSQL bulk API for create.
978
979 -- extend the size of PLSQL table
980 l_ins_element_id_tbl.extend ;
981 l_ins_element_ver_id_tbl.extend ;
982 l_ins_rec_ver_num_id_tbl.extend ;
983 l_ins_name_tbl.extend ;
984 l_ins_function_code_tbl.extend ;
985 l_ins_mgr_person_id_tbl.extend ;
986 l_ins_due_date_tbl.extend ;
987 l_ins_comp_flag_tbl.extend ;
988 l_ins_comp_date_tbl.extend ;
989 l_ins_attribute_category_tbl.extend;
990 l_ins_attribute1_tbl.extend ;
991 l_ins_attribute2_tbl.extend ;
992 l_ins_attribute3_tbl.extend ;
993 l_ins_attribute4_tbl.extend ;
994 l_ins_attribute5_tbl.extend ;
995 l_ins_attribute6_tbl.extend ;
996 l_ins_attribute7_tbl.extend ;
997 l_ins_attribute8_tbl.extend ;
998 l_ins_attribute9_tbl.extend ;
999 l_ins_attribute10_tbl.extend ;
1000 l_ins_attribute11_tbl.extend ;
1001 l_ins_attribute12_tbl.extend ;
1002 l_ins_attribute13_tbl.extend ;
1003 l_ins_attribute14_tbl.extend ;
1004 l_ins_attribute15_tbl.extend ;
1005 l_ins_description_tbl.extend ;
1006
1007
1008 l_ins_element_id_tbl(j_ins) := p_proj_element_id_tbl(i) ;
1009 l_ins_element_ver_id_tbl(j_ins) := p_element_version_id_tbl(i) ;
1010
1011 IF p_debug_mode = 'Y' THEN
1012 pa_debug.write(g_module_name,'Tracking vers id ['||p_element_version_id_tbl(i)||'] elem id['||p_proj_element_id_tbl(i) ,3) ;
1013 END IF;
1014
1015 l_ins_rec_ver_num_id_tbl(j_ins) := p_record_version_number_tbl(i) ;
1016 l_ins_name_tbl(j_ins) := p_name_tbl(i) ;
1017 l_ins_function_code_tbl(j_ins) := p_function_code_tbl(i) ;
1018
1019 IF p_object_type <> g_dlvr_types THEN
1020 l_ins_mgr_person_id_tbl(j_ins) := p_manager_person_id_tbl(i) ;
1021 l_ins_due_date_tbl(j_ins) := p_due_date_tbl(i) ;
1022 l_ins_comp_flag_tbl(j_ins) := p_completed_flag_tbl(i) ;
1023 l_ins_comp_date_tbl(j_ins) := p_completion_date_tbl(i) ;
1024 l_ins_attribute_category_tbl(j_ins):= p_attribute_category_tbl(i) ;
1025 l_ins_attribute1_tbl(j_ins) := p_attribute1_tbl(i) ;
1026 l_ins_attribute2_tbl(j_ins) := p_attribute2_tbl(i) ;
1027 l_ins_attribute3_tbl(j_ins) := p_attribute3_tbl(i) ;
1028 l_ins_attribute4_tbl(j_ins) := p_attribute4_tbl(i) ;
1029 l_ins_attribute5_tbl(j_ins) := p_attribute5_tbl(i) ;
1030 l_ins_attribute6_tbl(j_ins) := p_attribute6_tbl(i) ;
1031 l_ins_attribute7_tbl(j_ins) := p_attribute7_tbl(i) ;
1032 l_ins_attribute8_tbl(j_ins) := p_attribute8_tbl(i) ;
1033 l_ins_attribute9_tbl(j_ins) := p_attribute9_tbl(i) ;
1034 l_ins_attribute10_tbl(j_ins) := p_attribute10_tbl(i) ;
1035 l_ins_attribute11_tbl(j_ins) := p_attribute11_tbl(i) ;
1036 l_ins_attribute12_tbl(j_ins) := p_attribute12_tbl(i) ;
1037 l_ins_attribute13_tbl(j_ins) := p_attribute13_tbl(i) ;
1038 l_ins_attribute14_tbl(j_ins) := p_attribute14_tbl(i) ;
1039 l_ins_attribute15_tbl(j_ins) := p_attribute15_tbl(i) ;
1040 l_ins_description_tbl(j_ins) := p_description_tbl(i) ;
1041 END IF;
1042
1043 ELSIF nvl(p_user_action_tbl(i),g_insert) = g_modified THEN
1044
1045 IF l_debug_mode = 'Y' THEN
1046 pa_debug.g_err_stage:= 'Update Operation';
1047 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
1048 END IF;
1049
1050 j_upd:=j_upd+1 ;
1051
1052 -- Get all the actions which are updated, into
1053 -- local plsql tables, which will be used to
1054 -- call PLSQL bulk API for update.
1055
1056 -- extend the size of PLSQL table
1057 l_upd_element_id_tbl.extend ;
1058 l_upd_element_ver_id_tbl.extend ;
1059 l_upd_rec_ver_num_id_tbl.extend ;
1060 l_upd_name_tbl.extend ;
1061 l_upd_function_code_tbl.extend ;
1062 l_upd_mgr_person_id_tbl.extend ;
1063 l_upd_due_date_tbl.extend ;
1064 l_upd_comp_flag_tbl.extend ;
1065 l_upd_comp_date_tbl.extend ;
1066 l_upd_attribute_category_tbl.extend;
1067 l_upd_attribute1_tbl.extend ;
1068 l_upd_attribute2_tbl.extend ;
1069 l_upd_attribute3_tbl.extend ;
1070 l_upd_attribute4_tbl.extend ;
1071 l_upd_attribute5_tbl.extend ;
1072 l_upd_attribute6_tbl.extend ;
1073 l_upd_attribute7_tbl.extend ;
1074 l_upd_attribute8_tbl.extend ;
1075 l_upd_attribute9_tbl.extend ;
1076 l_upd_attribute10_tbl.extend ;
1077 l_upd_attribute11_tbl.extend ;
1078 l_upd_attribute12_tbl.extend ;
1079 l_upd_attribute13_tbl.extend ;
1080 l_upd_attribute14_tbl.extend ;
1081 l_upd_attribute15_tbl.extend ;
1082 l_upd_description_tbl.extend ;
1083
1084 -- 3769024 added IF below code to handle following scenarion :
1085 -- on Create Deliverable Actions page, user created some actions and clicked on Save button
1086 -- After that updated that action's description and clicked on Apply button
1087 -- description was not getting updated.
1088
1089 -- Because, Update_Dlv_Actions_In_Bulk api, uses proj_element_id to update action info
1090 -- In above scenario, proj_element_id will be passed as NULL and update is failing
1091 -- Added code to retrieve proj_element_id in update actions,
1092 -- if proj_element id is null and element_version_id is not null
1093 -- else it's normal scenario
1094
1095 IF p_proj_element_id_tbl(i) IS NULL AND p_element_version_id_tbl(i) IS NOT NULL THEN
1096 Open c_actn_info(p_element_version_id_tbl(i));
1097 Fetch c_actn_info INTO l_upd_element_id_tbl(j_upd);
1098 Close c_actn_info;
1099 ELSE
1100 l_upd_element_id_tbl(j_upd) := p_proj_element_id_tbl(i) ;
1101 END IF;
1102
1103 -- 3769024 end
1104
1105 l_upd_element_ver_id_tbl(j_upd) := p_element_version_id_tbl(i) ;
1106 l_upd_rec_ver_num_id_tbl(j_upd) := p_record_version_number_tbl(i) ;
1107 l_upd_name_tbl(j_upd) := p_name_tbl(i) ;
1108 l_upd_function_code_tbl(j_upd) := p_function_code_tbl(i) ;
1109
1110 IF p_object_type <> g_dlvr_types THEN
1111 l_upd_mgr_person_id_tbl(j_upd) := p_manager_person_id_tbl(i) ;
1112 l_upd_due_date_tbl(j_upd) := p_due_date_tbl(i) ;
1113 l_upd_comp_flag_tbl(j_upd) := p_completed_flag_tbl(i) ;
1114 l_upd_comp_date_tbl(j_upd) := p_completion_date_tbl(i) ;
1115 l_upd_attribute_category_tbl(j_upd):= p_attribute_category_tbl(i) ;
1116 l_upd_attribute1_tbl(j_upd) := p_attribute1_tbl(i) ;
1117 l_upd_attribute2_tbl(j_upd) := p_attribute2_tbl(i) ;
1118 l_upd_attribute3_tbl(j_upd) := p_attribute3_tbl(i) ;
1119 l_upd_attribute4_tbl(j_upd) := p_attribute4_tbl(i) ;
1120 l_upd_attribute5_tbl(j_upd) := p_attribute5_tbl(i) ;
1121 l_upd_attribute6_tbl(j_upd) := p_attribute6_tbl(i) ;
1122 l_upd_attribute7_tbl(j_upd) := p_attribute7_tbl(i) ;
1123 l_upd_attribute8_tbl(j_upd) := p_attribute8_tbl(i) ;
1124 l_upd_attribute9_tbl(j_upd) := p_attribute9_tbl(i) ;
1125 l_upd_attribute10_tbl(j_upd) := p_attribute10_tbl(i) ;
1126 l_upd_attribute11_tbl(j_upd) := p_attribute11_tbl(i) ;
1127 l_upd_attribute12_tbl(j_upd) := p_attribute12_tbl(i) ;
1128 l_upd_attribute13_tbl(j_upd) := p_attribute13_tbl(i) ;
1129 l_upd_attribute14_tbl(j_upd) := p_attribute14_tbl(i) ;
1130 l_upd_attribute15_tbl(j_upd) := p_attribute15_tbl(i) ;
1131 l_upd_description_tbl(j_upd) := p_description_tbl(i) ;
1132 END IF ;
1133
1134 ELSIF nvl(p_user_action_tbl(i),g_insert) = g_delete THEN
1135
1136 IF l_debug_mode = 'Y' THEN
1137 pa_debug.g_err_stage:= 'Delete Operation';
1138 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
1139 END IF;
1140
1141 j_del:=j_del+1 ;
1142
1143 -- Get all the actions which are deleted, into
1144 -- local plsql table, which will be used to
1145 -- call PLSQL bulk API for delete. This is not
1146 -- applicable for actions which are deleted
1147 -- from Actions page. From action page the
1148 -- Deletion is handled in a seperate way .
1149
1150 -- extend the size of PLSQL table
1151 l_del_element_id_tbl.extend ;
1152 l_del_element_ver_id_tbl.extend ;
1153 l_del_rec_ver_num_id_tbl.extend ;
1154
1155 l_del_element_id_tbl(j_del) := p_proj_element_id_tbl(i) ;
1156 l_del_element_ver_id_tbl(j_del) := p_element_version_id_tbl(i) ;
1157 l_del_rec_ver_num_id_tbl(j_del) := p_record_version_number_tbl(i) ;
1158
1159 END IF ;
1160
1161 END LOOP ;
1162
1163
1164 -- Call the respective APIs to delete,insert,update
1165 -- if and only if some actions are either deleted
1166 -- or created or updated. The order of the API call
1167 -- is important.First the delete API will be called
1168 -- then update and then insert.
1169
1170 -- Call Delete API to perform the delete operation
1171 IF j_del > 0 THEN
1172
1173 IF l_debug_mode = 'Y' THEN
1174 pa_debug.g_err_stage:= 'Call DELETE_DLV_ACTIONS_IN_BULK ';
1175 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
1176 END IF;
1177
1178 PA_ACTIONS_PUB.DELETE_DLV_ACTIONS_IN_BULK
1179 (p_api_version => p_api_version
1180 ,p_init_msg_list => FND_API.G_FALSE
1181 ,p_commit => p_commit
1182 ,p_validate_only => p_validate_only
1183 ,p_validation_level => p_validation_level
1184 ,p_calling_module => p_calling_module
1185 ,p_debug_mode => l_debug_mode
1186 ,p_max_msg_count => p_max_msg_count
1187 ,p_object_type => p_object_type
1188 ,p_object_id => p_object_id
1189 ,p_element_version_id_tbl => l_del_element_ver_id_tbl
1190 ,p_proj_element_id_tbl => l_del_element_id_tbl
1191 ,p_record_version_number_tbl => l_del_rec_ver_num_id_tbl
1192 ,x_return_status => x_return_status
1193 ,x_msg_count => x_msg_count
1194 ,x_msg_data => x_msg_data
1195 ) ;
1196
1197 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1198 RAISE Invalid_Arg_Exc_Dlv ;
1199 END IF ;
1200
1201 END IF ;
1202
1203 -- Call Update API to perform the delete operation
1204 IF j_upd > 0 THEN
1205
1206 IF l_debug_mode = 'Y' THEN
1207 pa_debug.g_err_stage:= 'Call UPDATE_DLV_ACTIONS_IN_BULK ';
1208 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
1209 END IF;
1210
1211 PA_ACTIONS_PUB.UPDATE_DLV_ACTIONS_IN_BULK
1212 (p_api_version => p_api_version
1213 ,p_init_msg_list => FND_API.G_FALSE
1214 ,p_commit => p_commit
1215 ,p_validate_only => p_validate_only
1216 ,p_validation_level => p_validation_level
1217 ,p_calling_module => p_calling_module
1218 ,p_debug_mode => l_debug_mode
1219 ,p_max_msg_count => p_max_msg_count
1220 ,p_name_tbl => l_upd_name_tbl
1221 ,p_manager_person_id_tbl => l_upd_mgr_person_id_tbl
1222 ,p_function_code_tbl => l_upd_function_code_tbl
1223 ,p_due_date_tbl => l_upd_due_date_tbl
1224 ,p_completed_flag_tbl => l_upd_comp_flag_tbl
1225 ,p_completion_date_tbl => l_upd_comp_date_tbl
1226 ,p_description_tbl => l_upd_description_tbl
1227 ,p_attribute_category_tbl => l_upd_attribute_category_tbl
1228 ,p_attribute1_tbl => l_upd_attribute1_tbl
1229 ,p_attribute2_tbl => l_upd_attribute2_tbl
1230 ,p_attribute3_tbl => l_upd_attribute3_tbl
1231 ,p_attribute4_tbl => l_upd_attribute4_tbl
1232 ,p_attribute5_tbl => l_upd_attribute5_tbl
1233 ,p_attribute6_tbl => l_upd_attribute6_tbl
1234 ,p_attribute7_tbl => l_upd_attribute7_tbl
1235 ,p_attribute8_tbl => l_upd_attribute8_tbl
1236 ,p_attribute9_tbl => l_upd_attribute9_tbl
1237 ,p_attribute10_tbl => l_upd_attribute10_tbl
1238 ,p_attribute11_tbl => l_upd_attribute11_tbl
1239 ,p_attribute12_tbl => l_upd_attribute12_tbl
1240 ,p_attribute13_tbl => l_upd_attribute13_tbl
1241 ,p_attribute14_tbl => l_upd_attribute14_tbl
1242 ,p_attribute15_tbl => l_upd_attribute15_tbl
1243 ,p_element_version_id_tbl => l_upd_element_ver_id_tbl
1244 ,p_proj_element_id_tbl => l_upd_element_id_tbl
1245 ,p_record_version_number_tbl => l_upd_rec_ver_num_id_tbl
1246 ,p_project_id => p_project_id
1247 ,p_object_id => p_object_id
1248 ,p_object_version_id => p_object_version_id
1249 ,p_object_type => p_object_type
1250 ,p_pm_source_code => p_pm_source_code
1251 ,p_pm_source_reference => p_pm_source_reference
1252 ,p_carrying_out_organization_id => p_carrying_out_organization_id
1253 ,x_return_status => x_return_status
1254 ,x_msg_count => x_msg_count
1255 ,x_msg_data => x_msg_data
1256 ) ;
1257
1258
1259 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1260 RAISE Invalid_Arg_Exc_Dlv ;
1261 END IF ;
1262
1263 END IF ;
1264
1265 -- Call Insert API to perform the Insert operation
1266 IF j_ins > 0 THEN
1267
1268 IF l_debug_mode = 'Y' THEN
1269 pa_debug.g_err_stage:= 'Call CREATE_DLV_ACTIONS_IN_BULK ';
1270 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
1271 END IF;
1272
1273 PA_ACTIONS_PUB.CREATE_DLV_ACTIONS_IN_BULK
1274 (p_api_version => p_api_version
1275 ,p_init_msg_list => FND_API.G_FALSE
1276 ,p_commit => p_commit
1277 ,p_validate_only => p_validate_only
1278 ,p_validation_level => p_validation_level
1279 ,p_calling_module => p_calling_module
1280 ,p_debug_mode => l_debug_mode
1281 ,p_max_msg_count => p_max_msg_count
1282 ,p_name_tbl => l_ins_name_tbl
1283 ,p_manager_person_id_tbl => l_ins_mgr_person_id_tbl
1284 ,p_function_code_tbl => l_ins_function_code_tbl
1285 ,p_due_date_tbl => l_ins_due_date_tbl
1286 ,p_completed_flag_tbl => l_ins_comp_flag_tbl
1287 ,p_completion_date_tbl => l_ins_comp_date_tbl
1288 ,p_description_tbl => l_ins_description_tbl
1289 ,p_attribute_category_tbl => l_ins_attribute_category_tbl
1290 ,p_attribute1_tbl => l_ins_attribute1_tbl
1291 ,p_attribute2_tbl => l_ins_attribute2_tbl
1292 ,p_attribute3_tbl => l_ins_attribute3_tbl
1293 ,p_attribute4_tbl => l_ins_attribute4_tbl
1294 ,p_attribute5_tbl => l_ins_attribute5_tbl
1295 ,p_attribute6_tbl => l_ins_attribute6_tbl
1296 ,p_attribute7_tbl => l_ins_attribute7_tbl
1297 ,p_attribute8_tbl => l_ins_attribute8_tbl
1298 ,p_attribute9_tbl => l_ins_attribute9_tbl
1299 ,p_attribute10_tbl => l_ins_attribute10_tbl
1300 ,p_attribute11_tbl => l_ins_attribute11_tbl
1301 ,p_attribute12_tbl => l_ins_attribute12_tbl
1302 ,p_attribute13_tbl => l_ins_attribute13_tbl
1303 ,p_attribute14_tbl => l_ins_attribute14_tbl
1304 ,p_attribute15_tbl => l_ins_attribute15_tbl
1305 ,p_element_version_id_tbl => l_ins_element_ver_id_tbl
1306 ,p_proj_element_id_tbl => l_ins_element_id_tbl
1307 ,p_record_version_number_tbl => l_ins_rec_ver_num_id_tbl
1308 ,p_project_id => p_project_id
1309 ,p_object_id => p_object_id
1310 ,p_object_version_id => p_object_version_id
1311 ,p_object_type => p_object_type
1312 ,p_pm_source_code => p_pm_source_code
1313 ,p_pm_source_reference => p_pm_source_reference
1314 ,p_pm_source_reference_tbl => p_pm_source_reference_tbl
1315 ,p_carrying_out_organization_id => p_carrying_out_organization_id
1316 ,x_return_status => x_return_status
1317 ,x_msg_count => x_msg_count
1318 ,x_msg_data => x_msg_data
1319 ) ;
1320
1321 IF l_debug_mode = 'Y' THEN
1322 pa_debug.write(g_module_name,' return from PA_ACTIONS_PUB.CREATE_DLV_ACTIONS_IN_BULK ['||x_return_status||']',3);
1323 END IF;
1324
1325 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1326 RAISE Invalid_Arg_Exc_Dlv ;
1327 END IF ;
1328
1329 END IF ;
1330
1331 END IF ; -- Only if something is fetched
1332
1333 IF l_debug_mode = 'Y' THEN
1334 pa_debug.g_err_stage:= 'Exiting CR_UP_DLV_ACTIONS_IN_BULK' ;
1335 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
1336 pa_debug.reset_curr_function;
1337 END IF;
1338
1339 EXCEPTION
1340 WHEN Invalid_Arg_Exc_Dlv THEN
1341 x_return_status := FND_API.G_RET_STS_ERROR;
1342 l_msg_count := FND_MSG_PUB.count_msg;
1343
1344 IF (p_commit = FND_API.G_TRUE) THEN
1345 ROLLBACK TO CR_UP_DLV_ACTIONS_SP;
1346 END IF ;
1347
1348 IF l_debug_mode = 'Y' THEN
1349 pa_debug.g_err_stage := 'inside invalid arg exception of CR_UP_DLV_ACTIONS_IN_BULK';
1350 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1351 END IF;
1352
1353 IF l_msg_count = 1 THEN
1354 PA_INTERFACE_UTILS_PUB.get_messages
1355 (p_encoded => FND_API.G_TRUE,
1356 p_msg_index => 1,
1357 p_msg_count => l_msg_count,
1358 p_msg_data => l_msg_data,
1359 p_data => l_data,
1360 p_msg_index_out => l_msg_index_out);
1361 x_msg_data := l_data;
1362 x_msg_count := l_msg_count;
1363 ELSE
1364 x_msg_count := l_msg_count;
1365 END IF;
1366 IF l_debug_mode = 'Y' THEN
1367 pa_debug.reset_curr_function;
1368 END IF ;
1369 IF l_debug_mode = 'Y' THEN
1370 pa_debug.g_err_stage := 'Leaving CR_UP_DLV_ACTIONS_IN_BULK with return status ' || x_return_status ;
1371 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
1372 END IF;
1373 RETURN;
1374 WHEN OTHERS THEN
1375 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1376 x_msg_count := 1;
1377 x_msg_data := SQLERRM;
1378
1379 IF (p_commit = FND_API.G_TRUE) THEN
1380 ROLLBACK TO CR_UP_DLV_ACTIONS_SP;
1381 END IF ;
1382
1383 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
1384 ,p_procedure_name => 'CR_UP_DLV_ACTIONS_IN_BULK');
1385
1386 IF p_debug_mode = 'Y' THEN
1387 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
1388 pa_debug.write(g_module_name,'CR_UP_DLV_ACTIONS_IN_BULK: '|| pa_debug.g_err_stage,5);
1389 pa_debug.reset_curr_function;
1390 END IF;
1391 RAISE;
1392 END CR_UP_DLV_ACTIONS_IN_BULK ;
1393
1394 -- SubProgram : VALIDATE_ACTIONS
1395 -- Type : PROCEDURE
1396 -- Purpose : Public API to Create/Update To Deliverable Actions
1397 -- Note : Its a BULK API
1398 -- Assumptions : None
1399 -- Parameter IN/OUT Type Required Description and Purpose
1400 -- --------------------------- --------- ---------- --------- ---------------------------
1401 -- p_api_version IN NUMBER N Standard Parameter
1402 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
1403 -- p_commit IN VARCHAR2 N Standard Parameter
1404 -- p_validate_only IN VARCHAR2 N Standard Parameter
1405 -- p_validation_level IN NUMBER N Standard Parameter
1406 -- p_calling_module IN VARCHAR2 N Standard Parameter
1407 -- p_debug_mode IN VARCHAR2 N Standard Parameter
1408 -- p_max_msg_count IN NUMBER N Standard Parameter
1409 -- p_name_tbl IN PLSQL Table N Action Name
1410 -- p_due_date_tbl IN PLSQL Table N Due Date
1411 -- p_completed_flag_tbl IN PLSQL Table N Completed Flag
1412 -- p_completion_date_tbl IN PLSQL Table N Completed Date
1413 -- p_description_tbl IN PLSQL Table N Description
1414 -- p_element_version_id_tbl IN PLSQL Table N Action VErsion Id
1415 -- p_proj_element_id_tbl IN PLSQL Table N Action Element Id
1416 -- p_record_version_number_tbl IN PLSQL Table N Record Version NUmber
1417 -- p_project_id IN NUMBER N Project Id
1418 -- p_object_id IN NUMBER Y Parent Id
1419 -- p_object_version_id IN NUMBER N Parent Version ID
1420 -- p_object_type IN VARCHAR2 Y Parent Type
1421 -- p_pm_source_code IN NUMBER N PM Source Code
1422 -- p_pm_source_reference IN VARCHAR2 N PM Source Reference
1423 -- p_carrying_out_organization_id IN VARCHAR2 N Carrying Out Org ID
1424 -- p_insert_or_update IN VARCHAR2 N Identifies the API Mode
1425 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
1426 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
1427 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
1428
1429 PROCEDURE VALIDATE_ACTIONS
1430 ( p_api_version IN NUMBER :=1.0
1431 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
1432 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
1433 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
1434 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
1435 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
1436 ,p_debug_mode IN VARCHAR2 :='N'
1437 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
1438 ,p_name_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
1439 ,p_completed_flag_tbl IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
1440 ,p_completion_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
1441 ,p_description_tbl IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
1442 ,p_function_code_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
1443 ,p_due_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
1444 ,p_element_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
1445 ,p_proj_element_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
1446 ,p_user_action_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
1447 ,p_object_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE
1448 ,p_object_version_id IN PA_OBJECT_RELATIONSHIPS.OBJECT_ID_TO1%TYPE := null
1449 ,p_object_type IN PA_LOOKUPS.LOOKUP_CODE%TYPE
1450 ,p_action_owner_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
1451 ,p_carrying_out_org_id IN NUMBER := null
1452 ,p_action_reference_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
1453 ,p_deliverable_id IN PA_PROJ_ELEMENTS.PROJ_ELEMENT_ID%TYPE := null
1454 ,p_insert_or_update IN VARCHAR2 := 'INSERT'
1455 ,p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE
1456 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1457 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
1458 ,x_msg_data OUT NOCOPY VARCHAR2 ) --File.Sql.39 bug 4440895
1459 IS
1460 l_err_message fnd_new_messages.message_text%TYPE ;
1461
1462 l_debug_mode VARCHAR2(10);
1463 l_debug_level3 NUMBER := 3;
1464 l_msg_count NUMBER ;
1465 l_data VARCHAR2(2000);
1466 l_msg_data VARCHAR2(2000);
1467 l_msg_index_out NUMBER;
1468
1469 l_dlv_type_class_code pa_task_types.task_type_class_code%type ;
1470 l_item_billable VARCHAR2(1) := 'N' ;
1471 l_item_shippable VARCHAR2(1) := 'N' ;
1472 l_item_purchasable VARCHAR2(1) := 'N' ;
1473 l_bill_event_processed VARCHAR2(1) := 'N' ;
1474 l_item_defined VARCHAR2(1) := 'N' ;
1475 l_shipping_initiated VARCHAR2(1) := 'N' ;
1476 l_proc_initiated VARCHAR2(1) := 'N' ;
1477 l_ready_to_ship VARCHAR2(1) := 'N' ;
1478 l_ready_to_proc VARCHAR2(1) := 'N' ;
1479 l_due_date DATE ;
1480 l_completed_date DATE ;
1481 l_completed_flag VARCHAR2(1) ;
1482
1483 l_is_dlv_itembased VARCHAR2(1);
1484 l_function_code PA_LOOKUPS.LOOKUP_CODE%TYPE := NULL;
1485 l_function_code_valid VARCHAR2(1) := 'N';
1486 l_carrying_out_org_id NUMBER;
1487 l_action_owner_id NUMBER;
1488
1489 l_project_number PA_PROJECTS_ALL.SEGMENT1%TYPE := NULL;
1490 l_deliverable_number PA_PROJ_ELEMENTS.ELEMENT_NUMBER%TYPE := NULL;
1491
1492 -- added for bug :4537865
1493 l_new_carrying_out_org_id NUMBER ;
1494 l_new_action_owner_id NUMBER;
1495 -- added for bug :4537865
1496 i_act NUMBER := 1;
1497
1498 -- Included for Bug 3651563
1499 j_act NUMBER := 1;
1500 k_act NUMBER := 1;
1501 l_existing_count NUMBER := 0;
1502 l_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE();
1503 l_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
1504 l_proj_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
1505
1506 CURSOR c_completed_flag (c_action_id IN pa_proj_elements.proj_element_id%TYPE)IS
1507 SELECT decode(pps.project_system_status_code,'DLVR_COMPLETED','Y','N')
1508 FROM pa_project_statuses pps,
1509 pa_proj_elements ppe
1510 WHERE ppe.proj_element_id = c_action_id
1511 AND pps.project_status_code = ppe.status_code ;
1512
1513 CURSOR c_completed_date (c_action_ver_id IN pa_proj_element_versions.element_version_id%TYPE) IS
1514 SELECT actual_finish_date
1515 ,scheduled_finish_date
1516 FROM pa_proj_elem_ver_schedule
1517 WHERE element_version_id = c_action_ver_id ;
1518
1519 -- Bug 3651563 Needed in AMG Flow
1520 -- The Following cursor will retrieve the list of actions for a given deliverable
1521
1522 CURSOR c_existing_action
1523 IS
1524 SELECT PPE.NAME ,
1525 PPE.FUNCTION_CODE,
1526 PPE.PROJ_ELEMENT_ID
1527 FROM PA_PROJ_ELEMENTS PPE ,
1528 PA_OBJECT_RELATIONSHIPS OBJ
1529 WHERE PPE.PROJECT_ID = p_project_id
1530 AND OBJ.OBJECT_ID_FROM2= p_object_id
1531 AND PPE.PROJ_ELEMENT_ID = OBJ.OBJECT_ID_TO2
1532 AND OBJ.OBJECT_TYPE_FROM = 'PA_DELIVERABLES'
1533 AND OBJ.OBJECT_TYPE_TO = 'PA_ACTIONS'
1534 AND OBJ.RELATIONSHIP_SUBTYPE = 'DELIVERABLE_TO_ACTION'
1535 AND OBJ.RELATIONSHIP_TYPE = 'A' ;
1536
1537 -- 3947021 Added below cursor to derive proj_element_id from element version id for action
1538
1539 Cursor c_actn_info(l_action_ver_id IN NUMBER) IS
1540 SELECT
1541 PEV.PROJ_ELEMENT_ID
1542 FROM
1543 PA_PROJ_ELEMENT_VERSIONS PEV
1544 WHERE
1545 PEV.ELEMENT_VERSION_ID = l_action_ver_id
1546 AND PEV.OBJECT_TYPE = 'PA_ACTIONS';
1547
1548 l_action_id NUMBER;
1549
1550 -- 3947021 end
1551
1552 BEGIN
1553 x_msg_count := 0;
1554 x_return_status := FND_API.G_RET_STS_SUCCESS;
1555 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
1556
1557 IF l_debug_mode = 'Y' THEN
1558 PA_DEBUG.set_curr_function( p_function => 'CR_UP_DLV_ACTIONS_IN_BULK',
1559 p_debug_mode => l_debug_mode );
1560 pa_debug.g_err_stage:= 'Inside VALIDATE_ACTIONS ';
1561 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1562 END IF;
1563
1564 IF l_debug_mode = 'Y' THEN
1565 pa_debug.g_err_stage:= 'Printing Input parameters';
1566 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1567 pa_debug.write(g_module_name,'p_object_type'||':'||p_object_type,3) ;
1568 END IF;
1569
1570 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
1571 FND_MSG_PUB.initialize;
1572 END IF;
1573
1574 IF p_object_type = g_deliverables THEN
1575
1576 -- The Type Class Code line has been commented by avaithia for Bug 3496957
1577 -- The line is wrong .The GET_DLV_TYPE_CLASS_CODE expects The Deliverable
1578 -- Type Id as parameter whereas here the DeliverablVersionId is being passed .
1579 -- Our requirement is handle the case if the deliverable is Item Based .
1580 -- For that l_is_dlv_itembased is included.
1581
1582 -- l_dlv_type_class_code := nvl(PA_DELIVERABLE_UTILS.GET_DLV_TYPE_CLASS_CODE(p_object_version_id),'N') ;
1583
1584 IF nvl(p_element_version_id_tbl.LAST,0) > 0 THEN
1585 l_is_dlv_itembased := nvl(PA_DELIVERABLE_UTILS.IS_DLV_ITEM_BASED(p_element_version_id_tbl(1)),'N');
1586 END IF;
1587
1588 l_dlv_type_class_code := nvl(PA_DELIVERABLE_UTILS.GET_DLV_TYPE_CLASS_CODE(p_object_version_id),'N') ;
1589 l_item_billable := nvl(OKE_DELIVERABLE_UTILS_PUB.Item_Billable_Yn(p_object_version_id),'N') ;
1590 l_item_shippable := nvl(OKE_DELIVERABLE_UTILS_PUB.Item_Shippable_Yn(p_object_version_id),'N') ;
1591 l_item_purchasable := nvl(OKE_DELIVERABLE_UTILS_PUB.Item_Purchasable_Yn(p_object_version_id),'N') ;
1592 l_item_defined := nvl(OKE_DELIVERABLE_UTILS_PUB.Item_Defined_Yn(p_object_version_id),'N') ;
1593 END IF ;
1594
1595 -- Do the locking part here in update and delete mode
1596
1597 -- Validate action name.
1598 IF l_debug_mode = 'Y' THEN
1599 pa_debug.g_err_stage:= 'No of records fetched'||p_name_tbl.LAST;
1600 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1601 END IF ;
1602
1603 IF nvl(p_name_tbl.LAST,0)>0 THEN
1604 FOR i IN p_name_tbl.FIRST..p_name_tbl.LAST LOOP
1605 FOR j in p_name_tbl.FIRST..p_name_tbl.LAST LOOP
1606 IF ((nvl(p_name_tbl(i),'X') = nvl(p_name_tbl(j),'Y')) AND
1607 i <> j) THEN
1608 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_ALL_DUPLICATE_NAME') ;
1609 PA_UTILS.ADD_MESSAGE
1610 (p_app_short_name => 'PA',
1611 p_msg_name => 'PA_ACTION_NAME_ERR',
1612 p_token1 => 'ACTION_NAME',
1613 p_value1 => p_name_tbl(i),
1614 p_token2 => 'MESSAGE',
1615 p_value2 => l_err_message
1616 );
1617 END IF;
1618 END LOOP ;
1619 END LOOP ;
1620
1621 IF l_debug_mode = 'Y' THEN
1622 pa_debug.g_err_stage:='The error message content is :' || l_err_message;
1623 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1624 END IF ;
1625 END IF ;
1626
1627
1628 IF l_debug_mode = 'Y' THEN
1629 pa_debug.g_err_stage:= 'After Name Validation ';
1630 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1631 END IF ;
1632
1633
1634 -- 1. Validate completed check box. If Completed Check Box is
1635 -- 'Y' the completion date should not be null and vice versa
1636 -- 2. Validation Related to Billing Function
1637 -- 2.1 Description cannot be null for billing function.
1638 -- 2.2 Due Date cannot be null for billing function.
1639 -- 2.3 IF deliverable is item based and billing is not enabled
1640 -- OR item info. is not available then action cannot be marked
1641 -- as completed .
1642 -- 2.4 Completeion date cannot be updated if event has been processed
1643 -- 2.5 Completion flag cannot be unchecked for billing function
1644 -- 3. Validation Related to Shipping Function
1645 -- 3.1 Action cannot be completed if shipping is not initiated
1646 -- 3.2 Completed flag cannot be unchecked , if shipping has been initiated
1647 -- 3.3 Due Date cannot be updated if ready to ship is checked .
1648 -- 4. Validation Related to Procurement Function
1649 -- 4.1 Action cannot be completed if procurement is not initiated
1650 -- 4.2 Completed flag cannot be unchecked , if procurement has been initiated
1651 -- 4.3 Due Date cannot be updated if ready to procure is checked .
1652
1653 -- Following validation is required only in context of deliverables.
1654 IF nvl(p_object_type,g_deliverables) = g_deliverables THEN
1655
1656 IF l_debug_mode = 'Y' THEN
1657 pa_debug.g_err_stage:= '@@@Calling Context is Deliverables #######()' ;
1658 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
1659 END IF ;
1660
1661 -- For all the records do the validation in loop .
1662 FOR i IN p_element_version_id_tbl.FIRST..p_element_version_id_tbl.LAST LOOP
1663
1664 -- Perform the validation for new and updated records only .
1665 IF p_user_action_tbl(i) <> g_unmodified THEN
1666
1667 -- 3947021 Moved below code here, earlier it was inside "IF l_action_id IS NOT NULL THEN" condition
1668
1669 -- After processing existing completed billing action if second action is new billing action,
1670 -- the flags were not getting reset to original default value because for new actions
1671 -- proj_element_id will be null ( validate_actions is getting called before new action creation )
1672 -- Because of that validation 2.5 was failing , which should not fail for new billing action
1673
1674 -- Initialize all the local variables
1675 -- for every action
1676
1677 l_due_date := to_date(null) ;
1678 l_completed_date := to_date(null) ;
1679 l_completed_flag := 'N' ;
1680 l_action_id := NULL;
1681
1682 -- 3947021 end
1683
1684 -- 3947021 After the SAVE button introduction , it is possible to have proj_element_id value for existing action
1685 -- as null in passed IN parameter ( Reason : after clicking on SAVE button proj_element_id is not reflected
1686 -- in VO attribute for new actions and because of that p_proj_element_id_tbl(i) wont reflect the actual value )
1687 -- Because of this, validation 2.5 wont fire for the existing billing action , ideally it should fire for the
1688 -- existing action
1689
1690 -- Added below code to derive proj_element_id for the existing action
1691
1692 IF p_proj_element_id_tbl(i) IS NULL AND p_element_version_id_tbl(i) IS NOT NULL THEN
1693 Open c_actn_info(p_element_version_id_tbl(i));
1694 Fetch c_actn_info INTO l_action_id;
1695 Close c_actn_info;
1696 ELSE
1697 l_action_id := p_proj_element_id_tbl(i);
1698 END IF;
1699
1700 -- 3947021 end
1701
1702 -- Get the completed flag and due date for existing records
1703
1704 -- 3947021 changed from p_proj_element_id_tbl(i) to l_action_id
1705
1706 IF l_action_id IS NOT NULL THEN
1707
1708 -- 3947021 changed from p_proj_element_id_tbl(i) to l_action_id
1709 OPEN c_completed_flag(l_action_id) ;
1710 FETCH c_completed_flag into l_completed_flag ;
1711 CLOSE c_completed_flag ;
1712
1713 OPEN c_completed_date(p_element_version_id_tbl(i)) ;
1714 FETCH c_completed_date into l_completed_date ,l_due_date;
1715 CLOSE c_completed_date ;
1716
1717 END IF ;
1718
1719 -- Please see point 1. in comments to know what validation ?
1720 IF (nvl(p_completed_flag_tbl(i),'N') = 'Y' AND
1721 p_completion_date_tbl(i) IS NULL )
1722 THEN
1723 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DLVR_COMPLT_DATE_MISSING') ;
1724 PA_UTILS.ADD_MESSAGE
1725 (p_app_short_name => 'PA',
1726 p_msg_name => 'PA_ACTION_NAME_ERR',
1727 p_token1 => 'ACTION_NAME',
1728 p_value1 => p_name_tbl(i),
1729 p_token2 => 'MESSAGE',
1730 p_value2 => l_err_message
1731 );
1732
1733 END IF ;
1734
1735 -- Validation 1
1736 IF (p_completion_date_tbl(i) IS NOT NULL AND
1737 (nvl(p_completed_flag_tbl(i),'N') = 'N'))
1738 THEN
1739 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_COMPLETION_FLAG_MUST_ERR') ;
1740 PA_UTILS.ADD_MESSAGE
1741 (p_app_short_name => 'PA',
1742 p_msg_name => 'PA_ACTION_NAME_ERR',
1743 p_token1 => 'ACTION_NAME',
1744 p_value1 => p_name_tbl(i),
1745 p_token2 => 'MESSAGE',
1746 p_value2 => l_err_message
1747 );
1748 END IF ;
1749
1750 -- If action has a BILLING function
1751 -- Perform validation related to BILLING function
1752 IF p_function_code_tbl(i) = g_billing THEN
1753
1754 -- Initialize l_bill_event_processed
1755 -- to 'N' for every action
1756 l_bill_event_processed := 'N' ;
1757
1758 --For new records ,the CHECK_DELV_EVENT_PROCESSED API IS
1759 --THROWING NO DATA FOUND ERROR .Thats why Included if clause
1760 l_bill_event_processed := nvl(PA_BILLING_WRKBNCH_EVENTS.CHECK_DELV_EVENT_PROCESSED(p_project_id,p_object_version_id,p_element_version_id_tbl(i) ),'N') ; -- Passing Actions' version Id also (Included By avaithia for Bug 3512346 )
1761
1762 -- Validation 2.1
1763 IF p_description_tbl(i) IS NULL THEN
1764 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DESCRIPTION_NULL_ERR') ;
1765 PA_UTILS.ADD_MESSAGE
1766 (p_app_short_name => 'PA',
1767 p_msg_name => 'PA_ACTION_NAME_ERR',
1768 p_token1 => 'ACTION_NAME',
1769 p_value1 => p_name_tbl(i),
1770 p_token2 => 'MESSAGE',
1771 p_value2 => l_err_message
1772 );
1773 END IF ;
1774
1775 -- Validation 2.2 Commented by avaithia (1-Apr-04) Bug 3512346
1776 -- IF p_due_date_tbl(i) IS NULL THEN
1777 -- l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DUE_DATE_NULL_ERR') ;
1778 -- PA_UTILS.ADD_MESSAGE
1779 -- (p_app_short_name => 'PA',
1780 -- p_msg_name => 'PA_ACTION_NAME_ERR',
1781 -- p_token1 => 'ACTION_NAME',
1782 -- p_value1 => p_name_tbl(i),
1783 -- p_token2 => 'MESSAGE',
1784 -- p_value2 => l_err_message
1785 -- );
1786 -- END IF ;
1787 --
1788 -- Validation 2.3
1789
1790 -- Commented for Bug 3496957 by avaithia IF l_dlv_type_class_code = g_item THEN
1791 IF l_is_dlv_itembased ='Y' THEN
1792 IF (l_item_billable = 'N'
1793 AND nvl(p_completed_flag_tbl(i),'N') = 'Y'
1794 AND l_item_defined = 'Y') -- This check has been included by avaithia Bug 3496957
1795 THEN
1796 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_BILL_ITEM_NOT_BILLABLE_ERR') ;/*Corrected by avaithia*/
1797 PA_UTILS.ADD_MESSAGE
1798 (p_app_short_name => 'PA',
1799 p_msg_name => 'PA_ACTION_NAME_ERR',
1800 p_token1 => 'ACTION_NAME',
1801 p_value1 => p_name_tbl(i),
1802 p_token2 => 'MESSAGE',
1803 p_value2 => l_err_message
1804 );
1805 END IF ;
1806 END IF ;
1807
1808 IF l_is_dlv_itembased ='Y' THEN
1809 IF (l_item_defined = 'N'
1810 AND nvl(p_completed_flag_tbl(i),'N') = 'Y' )
1811 THEN
1812 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_BILL_NO_ITEM_ERR') ;
1813 PA_UTILS.ADD_MESSAGE
1814 (p_app_short_name => 'PA',
1815 p_msg_name => 'PA_ACTION_NAME_ERR',
1816 p_token1 => 'ACTION_NAME',
1817 p_value1 => p_name_tbl(i),
1818 p_token2 => 'MESSAGE',
1819 p_value2 => l_err_message
1820 );
1821 END IF ;
1822 END IF ;
1823 -- Validation 2.4
1824
1825 IF (((nvl(trunc(p_completion_date_tbl(i)),to_date(null))<> trunc(l_completed_date))
1826 AND l_bill_event_processed = 'Y' ))
1827 THEN
1828 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_BILL_COMP_DATE_ERR') ;
1829 PA_UTILS.ADD_MESSAGE
1830 (p_app_short_name => 'PA',
1831 p_msg_name => 'PA_ACTION_NAME_ERR',
1832 p_token1 => 'ACTION_NAME',
1833 p_value1 => p_name_tbl(i),
1834 p_token2 => 'MESSAGE',
1835 p_value2 => l_err_message
1836 );
1837
1838 END IF ;
1839
1840 -- 3951763 Added l_bill_event_processed = 'Y' condition , if billing event is processed
1841 -- then and then unchecking of completion flag is not allowed
1842
1843 -- Validation 2.5
1844 IF(l_bill_event_processed = 'Y' AND (nvl(p_completed_flag_tbl(i),'N') = 'N'
1845 AND nvl(l_completed_flag,'N') = 'Y'))
1846 THEN
1847 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_BILL_COMP_FLAG_ERR') ;
1848 PA_UTILS.ADD_MESSAGE
1849 (p_app_short_name => 'PA',
1850 p_msg_name => 'PA_ACTION_NAME_ERR',
1851 p_token1 => 'ACTION_NAME',
1852 p_value1 => p_name_tbl(i),
1853 p_token2 => 'MESSAGE',
1854 p_value2 => l_err_message
1855 );
1856 END IF ;
1857
1858 -- Else If action has a SHIPPING function
1859 -- Perform validation related to SHIPPING function
1860 ELSIF (p_function_code_tbl(i) = g_shipping) THEN
1861
1862 -- 4227845 Added dlvr action due date not null check and populating error message
1863 IF p_due_date_tbl(i) IS NULL THEN
1864 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DUE_DATE_ERR') ;
1865 PA_UTILS.ADD_MESSAGE
1866 (p_app_short_name => 'PA',
1867 p_msg_name => 'PA_ACTION_NAME_ERR',
1868 p_token1 => 'ACTION_NAME',
1869 p_value1 => p_name_tbl(i),
1870 p_token2 => 'MESSAGE',
1871 p_value2 => l_err_message
1872 );
1873 END IF;
1874 -- 4227845 end
1875
1876 --Initialize local var for each action
1877 l_shipping_initiated := 'N' ;
1878 l_ready_to_ship := 'N' ;
1879
1880 l_shipping_initiated := nvl(OKE_DELIVERABLE_UTILS_PUB.WSH_Initiated_Yn(p_element_version_id_tbl(i)),'N') ;
1881 l_ready_to_ship := nvl(OKE_DELIVERABLE_UTILS_PUB.Ready_To_Ship_Yn(p_element_version_id_tbl(i)),'N');
1882
1883 -- Validation 3.1
1884 IF ( l_shipping_initiated = 'N'
1885 AND nvl(p_completed_flag_tbl(i),'N') = 'Y' )
1886 THEN
1887 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_SHIP_PROC_COMP_ERR_Y') ;
1888 PA_UTILS.ADD_MESSAGE
1889 (p_app_short_name => 'PA',
1890 p_msg_name => 'PA_ACTION_NAME_ERR',
1891 p_token1 => 'ACTION_NAME',
1892 p_value1 => p_name_tbl(i),
1893 p_token2 => 'MESSAGE',
1894 p_value2 => l_err_message
1895 );
1896
1897 END IF ;
1898
1899 -- Validation 3.2
1900 -- Bug#3555460
1901 -- Commenting the validation as per the latest changes
1902 -- in functional design.
1903 -- IF ((nvl(p_completed_flag_tbl(i),'N') = 'N'
1904 -- AND l_completed_flag = 'Y')
1905 -- AND l_shipping_initiated = 'Y')
1906 -- THEN
1907 -- l_err_message := FND_MESSAGE.GET_STRING('PA','PA_SHIP_PROC_COMP_ERR_N') ;
1908 -- PA_UTILS.ADD_MESSAGE
1909 -- (p_app_short_name => 'PA',
1910 -- p_msg_name => 'PA_ACTION_NAME_ERR',
1911 -- p_token1 => 'ACTION_NAME',
1912 -- p_value1 => p_name_tbl(i),
1913 -- p_token2 => 'MESSAGE',
1914 -- p_value2 => l_err_message
1915 -- );
1916 -- END IF ;
1917
1918 -- Validation 3.3
1919 IF ((trunc(p_due_date_tbl(i)) <> trunc(l_due_date )) AND
1920 l_ready_to_ship = 'Y' )
1921 THEN
1922 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_SHIP_DUE_DATE_UPDATE_ERR') ;
1923 PA_UTILS.ADD_MESSAGE
1924 (p_app_short_name => 'PA',
1925 p_msg_name => 'PA_ACTION_NAME_ERR',
1926 p_token1 => 'ACTION_NAME',
1927 p_value1 => p_name_tbl(i),
1928 p_token2 => 'MESSAGE',
1929 p_value2 => l_err_message
1930 );
1931 END IF ;
1932
1933 -- Else If action has a PROCUREMENT function
1934 -- Perform validation related to PROCUREMENT function
1935 ELSIF (p_function_code_tbl(i) = g_procurement ) THEN
1936
1937 -- 4227845 Added dlvr action due date not null check and populating error message
1938 IF p_due_date_tbl(i) IS NULL THEN
1939 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DUE_DATE_ERR') ;
1940 PA_UTILS.ADD_MESSAGE
1941 (p_app_short_name => 'PA',
1942 p_msg_name => 'PA_ACTION_NAME_ERR',
1943 p_token1 => 'ACTION_NAME',
1944 p_value1 => p_name_tbl(i),
1945 p_token2 => 'MESSAGE',
1946 p_value2 => l_err_message
1947 );
1948 END IF;
1949 -- 4227845 end
1950
1951 l_proc_initiated := 'N' ;
1952 l_ready_to_proc := 'N' ;
1953
1954 -- 3555460 WSH_Initiated_Yn function call was used instead of REQ_Initiated_Yn
1955 l_proc_initiated := nvl(OKE_DELIVERABLE_UTILS_PUB.REQ_Initiated_Yn(p_element_version_id_tbl(i)),'N') ;
1956 l_ready_to_proc := nvl(OKE_DELIVERABLE_UTILS_PUB.Ready_To_Procure_Yn(p_element_version_id_tbl(i)),'N') ;
1957
1958 -- Validation 4.1
1959 IF (l_proc_initiated = 'N' AND
1960 nvl(p_completed_flag_tbl(i),'N') = 'Y' )
1961 THEN
1962 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_SHIP_PROC_COMP_ERR_Y') ;
1963 PA_UTILS.ADD_MESSAGE
1964 (p_app_short_name => 'PA',
1965 p_msg_name => 'PA_ACTION_NAME_ERR',
1966 p_token1 => 'ACTION_NAME',
1967 p_value1 => p_name_tbl(i),
1968 p_token2 => 'MESSAGE',
1969 p_value2 => l_err_message
1970 );
1971 END IF ;
1972
1973 -- Validation 4.2
1974 -- Bug#3555460
1975 -- Commenting the validation as per the latest changes
1976 -- in functional design.
1977 -- IF (( nvl(p_completed_flag_tbl(i),'N') = 'N'
1978 -- AND l_completed_flag = 'Y')
1979 -- AND l_proc_initiated = 'Y' )
1980 -- THEN
1981 -- l_err_message := FND_MESSAGE.GET_STRING('PA','PA_SHIP_PROC_COMP_ERR_N') ;
1982 -- PA_UTILS.ADD_MESSAGE
1983 -- (p_app_short_name => 'PA',
1984 -- p_msg_name => 'PA_ACTION_NAME_ERR',
1985 -- p_token1 => 'ACTION_NAME',
1986 -- p_value1 => p_name_tbl(i),
1987 -- p_token2 => 'MESSAGE',
1988 -- p_value2 => l_err_message
1989 -- );
1990 --
1991 -- END IF ;
1992 --
1993
1994 -- Validation 4.3
1995 IF ((trunc(p_due_date_tbl(i)) <> trunc(l_due_date)) AND
1996 l_ready_to_proc = 'Y' )
1997 THEN
1998 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_PROC_DUE_DATE_UPDATE_ERR') ;
1999 PA_UTILS.ADD_MESSAGE
2000 (p_app_short_name => 'PA',
2001 p_msg_name => 'PA_ACTION_NAME_ERR',
2002 p_token1 => 'ACTION_NAME',
2003 p_value1 => p_name_tbl(i),
2004 p_token2 => 'MESSAGE',
2005 p_value2 => l_err_message
2006 );
2007 END IF ;
2008 END IF ; -- If p_function_code_tbl(i) = g_billing
2009 END IF ; -- If p_user_action_tbl(i) <> g_unmodified
2010 END LOOP ;
2011 END IF ;
2012
2013 x_msg_count := FND_MSG_PUB.count_msg ;
2014 IF x_msg_count > 0 THEN
2015 x_return_status := FND_API.G_RET_STS_ERROR;
2016 END IF ;
2017 /* ==============3435905 : FP M : Deliverables Changes For AMG - Start * =========================*/
2018
2019 IF (p_calling_module = 'AMG') THEN
2020
2021 -- Start Bug 3651563
2022 --If p_calling_module is 'AMG' then do action name related validation in a special manner
2023 -- (i.e) In addition to checking for duplicate names among the passed actions
2024 --need to check for duplicate action names with the existing actions also
2025
2026 -- In case of AMG,we can pass new actions as well as action id's which are to be updated .
2027 -- Not all actions will be passed
2028
2029 -- Consider this case,An existing actions' name is 'XYZ' (it need not be passed to this API)
2030 -- But for the new action passed in UPDATE Mode ,the name is 'XYZ' .So,existing code will fail
2031
2032 -- Same explanation holds good for Shipping Action / Procurement action restricting code also
2033 -- An existing shipping action might be there and a new shipping action may be passed through AMG
2034 -- But Check will not happen against existing shipping action
2035
2036 -- Note : In case of Self Service ,all actions will be passed - all new actions as well as existing actions
2037 -- So, the existing code will absolutely work fine with out any issues
2038
2039
2040 IF p_calling_module = 'AMG' THEN
2041 OPEN c_existing_action ;
2042 FETCH c_existing_action BULK COLLECT INTO l_name_tbl,l_function_code_tbl,l_proj_element_id_tbl ;
2043 CLOSE c_existing_action ;
2044
2045 l_existing_count := nvl(l_name_tbl.LAST,0) ;
2046
2047 IF l_debug_mode = 'Y' THEN
2048 pa_debug.g_err_stage:= 'No of records already existing are ' || l_existing_count;
2049 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
2050 END IF;
2051
2052 END IF;
2053
2054 --End Bug 3651563
2055
2056 -- Start Bug 3651563
2057 -- p_proj_element_id_tbl(i) <> l_proj_element_id_tbl(k) This check is needed because
2058 -- Consider this case
2059 -- An existing action 'ABC' is passed by AMG (say for some updation of any of its values like duedate)
2060 -- Now,this cursor will retrieve all existing actions ,so 'ABC' will also get selected
2061 -- To avoid validation of the action with itself in this scenario
2062 -- This check is needed
2063
2064 IF l_existing_count > 0 THEN -- IF some records already exist
2065 FOR i IN p_name_tbl.FIRST..p_name_tbl.LAST LOOP
2066 FOR k IN l_name_tbl.FIRST..l_name_tbl.LAST LOOP
2067 IF ( (nvl(p_name_tbl(i),'X') = nvl(l_name_tbl(k),'Y')) AND
2068 p_proj_element_id_tbl(i) <> l_proj_element_id_tbl(k) ) THEN
2069
2070 x_return_status := FND_API.G_RET_STS_ERROR ;
2071 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_ALL_DUPLICATE_NAME') ;
2072 PA_UTILS.ADD_MESSAGE
2073 (p_app_short_name => 'PA',
2074 p_msg_name => 'PA_ACTION_NAME_ERR',
2075 p_token1 => 'ACTION_NAME',
2076 p_value1 => p_name_tbl(i),
2077 p_token2 => 'MESSAGE',
2078 p_value2 => l_err_message
2079 );
2080 END IF;
2081 END LOOP ;
2082 END LOOP;
2083 END IF;
2084
2085 --End Bug 3651563
2086
2087
2088 -- Fetch Deliverable Name and Project Name for tokens
2089 IF l_debug_mode = 'Y' THEN
2090 Pa_Debug.WRITE(g_module_name, 'proj id ['||p_project_id||'] dlvr id ['||p_deliverable_id||']',l_debug_level3);
2091 END IF;
2092
2093 SELECT element_Number INTO l_deliverable_number
2094 FROM pa_Proj_elements
2095 WHERE proj_element_id = p_deliverable_id
2096 AND project_id = p_project_id;
2097
2098 SELECT segment1 INTO l_project_number
2099 FROM Pa_Projects_All
2100 WHERE project_id = p_project_id;
2101
2102 IF l_debug_mode = 'Y' THEN
2103 Pa_Debug.WRITE(g_module_name, 'token values proj ['||l_Project_Number||'] deliverable ['||l_deliverable_Number||']',l_debug_level3);
2104 END IF;
2105
2106 -- Validate Carrying Out Org Id - valid value
2107 IF p_carrying_out_org_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
2108 l_carrying_out_org_id := NULL;
2109 ELSE
2110 l_carrying_out_org_id := p_carrying_out_org_id;
2111 END IF;
2112
2113 IF (l_carrying_out_org_id IS NOT NULL ) THEN
2114 Pa_Hr_Org_Utils.CHECK_ORGNAME_OR_ID
2115 ( p_organization_id => l_carrying_out_org_id
2116 ,p_organization_name => NULL
2117 ,p_check_id_flag => 'Y'
2118 -- ,x_organization_id => l_carrying_out_org_id
2119 ,x_organization_id => l_new_carrying_out_org_id -- this is added for the bug: 4537865
2120 ,x_return_status => x_return_status
2121 ,x_error_msg_code => l_msg_data);
2122
2123 IF l_debug_mode = 'Y' THEN
2124 Pa_Debug.WRITE(g_module_name,' validating carrying out org ['||l_carrying_out_org_id||']status['||x_return_status||']', l_debug_level3);
2125 END IF;
2126 -- added for bug: 4537865
2127 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2128 l_carrying_out_org_id := l_new_carrying_out_org_id ;
2129 END IF;
2130 -- added for bug: 4537865
2131
2132 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2133 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2134 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
2135 l_err_message := FND_MESSAGE.GET_STRING('PA','ACTION_CARRYING_ORG_INVALID') ;
2136 PA_UTILS.ADD_MESSAGE
2137 (p_app_short_name => 'PA',
2138 p_msg_name => 'PA_ACTN_VALID_ERR',
2139 p_token1 => 'PROJECT',
2140 p_value1 => l_project_number,
2141 p_token2 => 'DLVR_REFERENCE',
2142 p_value2 => l_deliverable_number,
2143 p_token3 => 'MESSAGE',
2144 p_value3 => l_err_message
2145 );
2146 x_return_status := FND_API.G_RET_STS_ERROR;
2147 END IF;
2148 END IF;
2149
2150 -- validate action_owner_id - valid value
2151 i_act := p_action_owner_id_tbl.first();
2152 j_act := p_action_owner_id_tbl.first();
2153
2154 WHILE i_act is not null LOOP
2155
2156 IF p_action_owner_id_tbl(i_act) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
2157 l_action_owner_id := NULL;
2158 ELSE
2159 l_action_owner_id := p_action_owner_id_tbl(i_act);
2160 END IF;
2161
2162 IF (l_action_owner_id IS NOT NULL ) THEN
2163 Pa_Tasks_Maint_Utils.CHECK_TASK_MGR_NAME_OR_ID (
2164 p_task_mgr_name => null
2165 ,p_task_mgr_id => l_action_owner_id
2166 ,p_project_id => p_project_id
2167 ,p_check_id_flag => 'Y'
2168 ,p_calling_module => 'AMG'
2169 -- x_task_mgr_id => l_action_owner_id * added for bug 4537865
2170 ,x_task_mgr_id => l_new_action_owner_id
2171 -- * added for bug 4537865
2172 ,x_return_status => x_return_status
2173 ,x_error_msg_code => l_msg_data );
2174 IF l_debug_mode = 'Y' THEN
2175 Pa_Debug.WRITE(g_module_name,' validated owner id ['||l_action_owner_id||']status['||x_return_status||']' , l_debug_level3);
2176 END IF;
2177
2178 -- added for bug 4537865
2179 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2180 l_action_owner_id := l_new_action_owner_id;
2181 END IF;
2182 -- added for bug 4537865
2183
2184 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2185 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2186 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
2187 l_err_message := FND_MESSAGE.GET_STRING('PA','ACTION_OWNER_INVALID') ;
2188 PA_UTILS.ADD_MESSAGE
2189 (p_app_short_name => 'PA',
2190 p_msg_name => 'PA_ACTION_VALID_ERR',
2191 p_token1 => 'PROJECT',
2192 p_value1 => l_project_number,
2193 p_token2 => 'DLVR_REFERENCE',
2194 p_value2 => l_deliverable_number,
2195 p_token3 => 'ACTION_REFERENCE',
2196 p_value3 => p_action_reference_tbl(i_act),
2197 p_token4 => 'MESSAGE',
2198 p_value4 => l_err_message
2199 );
2200 x_return_status := FND_API.G_RET_STS_ERROR;
2201 END IF;
2202 END IF;
2203
2204 -- validate function code
2205 IF (p_function_code_tbl(i_act) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2206 OR p_function_code_tbl(i_act) = NULL )THEN
2207 l_function_code := NULL;
2208 ELSE
2209 l_function_code := p_function_code_tbl(i_act);
2210 END IF;
2211
2212 l_function_code_valid := Pa_Deliverable_Utils.Is_Function_Code_Valid(l_function_code);
2213
2214 IF l_debug_mode = 'Y' THEN
2215 Pa_Debug.WRITE(g_module_name,'function code '||l_Function_code||'] validity ['||l_function_code_valid||']' , l_debug_level3);
2216 END IF;
2217
2218 IF l_function_code_valid IS NULL OR l_function_code_valid = 'N' THEN
2219 l_err_message := FND_MESSAGE.GET_STRING('PA','ACTION_FUNC_CODE_INVALID') ;
2220 PA_UTILS.ADD_MESSAGE
2221 (p_app_short_name => 'PA',
2222 p_msg_name => 'PA_ACTION_VALID_ERR',
2223 p_token1 => 'PROJECT',
2224 p_value1 => l_project_number,
2225 p_token2 => 'DLVR_REFERENCE',
2226 p_value2 => l_deliverable_number,
2227 p_token3 => 'ACTION_REFERENCE',
2228 p_value3 => p_action_reference_tbl(i_act),
2229 p_token4 => 'MESSAGE',
2230 p_value4 => l_err_message
2231 );
2232 x_return_status := FND_API.G_RET_STS_ERROR;
2233 END IF;
2234
2235 --Bug 3651563
2236 --If p_calling_module is 'AMG' then do function code related validation
2237 --(i.e) More than one shipping action or more than one procurement action is not allowed
2238 --Note : In case of Self Service ,it is taken care in the Java Code itself
2239
2240 WHILE j_act IS NOT NULL LOOP
2241 IF ( ((p_function_code_tbl(i_act) = 'SHIPPING' AND p_function_code_tbl(j_act) = 'SHIPPING')
2242 OR (p_function_code_tbl(i_act) = 'PROCUREMENT' AND p_function_code_tbl(j_act) = 'PROCUREMENT'))
2243 AND i_act <> j_act ) THEN
2244 x_return_status := FND_API.G_RET_STS_ERROR;
2245 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DLV_TOO_MANY_ACTIONS');
2246 PA_UTILS.ADD_MESSAGE
2247 (p_app_short_name => 'PA',
2248 p_msg_name => 'PA_ACTION_VALID_ERR',
2249 p_token1 => 'PROJECT',
2250 p_value1 => l_project_number,
2251 p_token2 => 'DLVR_REFERENCE',
2252 p_value2 => l_deliverable_number,
2253 p_token3 => 'ACTION_REFERENCE',
2254 p_value3 => p_action_reference_tbl(i_act),
2255 p_token4 => 'MESSAGE',
2256 p_value4 => l_err_message
2257 );
2258 END IF ;
2259 j_act := p_action_owner_id_tbl.next(j_act);
2260 END LOOP ;
2261
2262 -- Start of Bug 3651563 - Check with existing actions also
2263 IF l_existing_count > 0 THEN -- IF some records already exist
2264 FOR k_act IN l_function_code_tbl.FIRST..l_function_code_tbl.LAST LOOP
2265
2266 IF ( ((p_function_code_tbl(i_act) = 'SHIPPING' AND l_function_code_tbl(k_act) = 'SHIPPING')
2267 OR (p_function_code_tbl(i_act) = 'PROCUREMENT' AND l_function_code_tbl(k_act) = 'PROCUREMENT'))
2268 AND p_proj_element_id_tbl(i_act) <> l_proj_element_id_tbl(k_act) ) THEN
2269
2270 x_return_status := FND_API.G_RET_STS_ERROR;
2271 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DLV_TOO_MANY_ACTIONS') ;
2272 PA_UTILS.ADD_MESSAGE
2273 (p_app_short_name => 'PA',
2274 p_msg_name => 'PA_ACTION_VALID_ERR',
2275 p_token1 => 'PROJECT',
2276 p_value1 => l_project_number,
2277 p_token2 => 'DLVR_REFERENCE',
2278 p_value2 => l_deliverable_number,
2279 p_token3 => 'ACTION_REFERENCE',
2280 p_value3 => p_action_reference_tbl(i_act),
2281 p_token4 => 'MESSAGE',
2282 p_value4 => l_err_message
2283 );
2284 END IF;
2285 END LOOP ;
2286 END IF;
2287
2288 --End of Bug 3651563
2289
2290 -- validate financial task id
2291
2292 i_act := p_action_owner_id_tbl.next(i_act);
2293
2294 END LOOP; -- WHILE LOOP
2295 END IF ;-- p_calling_module ='AMG'
2296
2297 /* ==============3435905 : FP M : Deliverables Changes For AMG - End * =========================*/
2298
2299 /* Bug 3651563 Very Important Fix .Please do not add any code after the following statements
2300 because if some message is there in the error stack
2301 before exiting this API,x_return_status should be set as 'ERROR'*/
2302
2303 x_msg_count := FND_MSG_PUB.count_msg ;
2304 IF x_msg_count > 0 THEN
2305 x_return_status := FND_API.G_RET_STS_ERROR;
2306 END IF ;
2307
2308 IF l_debug_mode = 'Y' THEN
2309 pa_debug.g_err_stage:='Exiting Validate Actions ';
2310 pa_debug.write('VALIDATE_ACTIONS: ' || g_module_name,pa_debug.g_err_stage,5);
2311 pa_debug.reset_curr_function;
2312 END IF;
2313
2314 EXCEPTION
2315 WHEN Invalid_Arg_Exc_Dlv THEN
2316 x_return_status := FND_API.G_RET_STS_ERROR;
2317 l_msg_count := FND_MSG_PUB.count_msg;
2318
2319 IF l_debug_mode = 'Y' THEN
2320 pa_debug.g_err_stage := 'inside invalid arg exception of VALIDATE_ACTIONS';
2321 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
2322 END IF;
2323
2324 IF l_msg_count = 1 THEN
2325 PA_INTERFACE_UTILS_PUB.get_messages
2326 (p_encoded => FND_API.G_TRUE,
2327 p_msg_index => 1,
2328 p_msg_count => l_msg_count,
2329 p_msg_data => l_msg_data,
2330 p_data => l_data,
2331 p_msg_index_out => l_msg_index_out);
2332 x_msg_data := l_data;
2333 x_msg_count := l_msg_count;
2334 ELSE
2335 x_msg_count := l_msg_count;
2336 END IF;
2337 IF l_debug_mode = 'Y' THEN
2338 pa_debug.reset_curr_function;
2339 END IF ;
2340 RETURN;
2341 WHEN OTHERS THEN
2342 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2343 x_msg_count := 1;
2344 x_msg_data := SQLERRM;
2345
2346 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
2347 ,p_procedure_name => 'VALIDATE_ACTIONS');
2348
2349 IF p_debug_mode = 'Y' THEN
2350 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
2351 pa_debug.write('VALIDATE_ACTIONS: ' || g_module_name,pa_debug.g_err_stage,5);
2352 pa_debug.reset_curr_function;
2353 END IF;
2354 RAISE;
2355
2356 END VALIDATE_ACTIONS;
2357
2358
2359 -- SubProgram : DELETE_DLV_ACTION
2360 -- Type : PROCEDURE
2361 -- Purpose : Public API to Delete Deliverable Actions
2362 -- Note :
2363 -- Assumptions : None
2364 -- Parameter IN/OUT Type Required Description and Purpose
2365 -- --------------------------- --------- ---------- --------- ---------------------------
2366 -- p_api_version IN NUMBER N Standard Parameter
2367 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
2368 -- p_commit IN VARCHAR2 N Standard Parameter
2369 -- p_validate_only IN VARCHAR2 N Standard Parameter
2370 -- p_validation_level IN NUMBER N Standard Parameter
2371 -- p_calling_module IN VARCHAR2 N Standard Parameter
2372 -- p_debug_mode IN VARCHAR2 N Standard Parameter
2373 -- p_max_msg_count IN NUMBER N Standard Parameter
2374 -- p_action_id IN NUMBER Y Action Element Id
2375 -- p_action_ver_id IN NUMBER Y Action Version Id
2376
2377 PROCEDURE DELETE_DLV_ACTION
2378 (p_api_version IN NUMBER :=1.0
2379 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
2380 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
2381 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
2382 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
2383 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
2384 ,p_debug_mode IN VARCHAR2 :='N'
2385 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2386 ,p_action_id IN pa_proj_elements.proj_element_id%TYPE
2387 ,p_action_ver_id IN pa_proj_element_versions.element_version_id%TYPE
2388 ,p_dlv_element_id IN pa_proj_elements.proj_element_id%TYPE
2389 ,p_dlv_version_id IN pa_proj_element_versions.element_version_id%TYPE
2390 ,p_function_code IN pa_proj_elements.function_code%TYPE
2391 ,p_project_id IN pa_projects_all.project_id%TYPE
2392 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2393 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2394 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2395 )
2396 IS
2397 l_debug_mode VARCHAR2(10);
2398 l_msg_count NUMBER ;
2399 l_data VARCHAR2(2000);
2400 l_msg_data VARCHAR2(2000);
2401 l_msg_index_out NUMBER;
2402
2403 -- 3769024 curstor to retrieve element_version_id of action from proj_element_id
2404 l_action_id NUMBER;
2405
2406 Cursor c_actn_info IS
2407 SELECT
2408 PEV.PROJ_ELEMENT_ID
2409 FROM
2410 PA_PROJ_ELEMENT_VERSIONS PEV
2411 WHERE
2412 PEV.ELEMENT_VERSION_ID = p_action_ver_id
2413 AND PEV.OBJECT_TYPE = 'PA_ACTIONS'
2414 AND PEV.PROJECT_ID = p_project_id;
2415
2416 -- end
2417
2418 BEGIN
2419
2420 x_msg_count := 0;
2421 x_return_status := FND_API.G_RET_STS_SUCCESS;
2422 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
2423
2424 IF l_debug_mode = 'Y' THEN
2425 PA_DEBUG.set_curr_function( p_function => 'DELETE_DLV_ACTION',
2426 p_debug_mode => l_debug_mode );
2427 pa_debug.g_err_stage:= 'Inside DELETE_DLV_ACTIONS ';
2428 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
2429 END IF;
2430
2431 IF l_debug_mode = 'Y' THEN
2432 pa_debug.g_err_stage:= 'Printing Input parameters';
2433 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
2434 pa_debug.write(g_module_name,'p_action_id'||':'||p_action_id,3) ;
2435 pa_debug.write(g_module_name,'p_action_ver_id'||':'||p_action_ver_id,3) ;
2436 pa_debug.write(g_module_name,'p_dlv_element_id'||':'||p_dlv_element_id,3) ;
2437 pa_debug.write(g_module_name,'p_dlv_version_id'||':'||p_dlv_version_id,3) ;
2438 pa_debug.write(g_module_name,'p_function_code'||':'||p_function_code,3) ;
2439 pa_debug.write(g_module_name,'p_project_id'||':'||p_project_id,3) ;
2440 END IF;
2441
2442 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
2443 FND_MSG_PUB.initialize;
2444 END IF;
2445
2446 IF (p_commit = FND_API.G_TRUE) THEN
2447 savepoint DELETE_DLV_ACTIONS_SP ;
2448 END IF;
2449
2450 IF l_debug_mode = 'Y' THEN
2451 pa_debug.g_err_stage:= 'Validating Input parameters';
2452 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
2453 END IF;
2454
2455 -- 3769024 , if p_action_id ( i.e proj_element_id ) is null and action element_version id is not null
2456 -- derive proj_element_id from proj_element_id
2457
2458 -- proj_element_id will be null in below scenarion : if user has created action and on create action page
2459 -- user deletes it , proj_element_id passed from java code to plsql api will be null
2460
2461 IF p_action_id IS NULL AND p_action_ver_id IS NOT NULL THEN
2462 Open c_actn_info;
2463 Fetch c_actn_info INTO l_action_id;
2464 Close c_actn_info;
2465 ELSE
2466 l_action_id := p_action_id;
2467 END IF;
2468
2469 -- 3769024 end
2470
2471 -- 3769024 using l_action_id instead of p_action_id , changed from p_action_id to p_action_ver_id
2472 -- duplicate validation
2473
2474 IF ((l_action_id IS NULL OR p_action_ver_id IS NULL ) OR
2475 (p_dlv_element_id IS NULL OR p_dlv_version_id IS NULL) OR
2476 (p_function_code IS NULL OR p_project_id IS NULL ))
2477 THEN
2478 IF l_debug_mode = 'Y' THEN
2479 pa_debug.g_err_stage:= 'INVALID INPUT PARAMETER';
2480 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
2481 END IF;
2482
2483 x_return_status := FND_API.G_RET_STS_ERROR;
2484 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
2485 ,p_msg_name => 'PA_INV_PARAM_PASSED');
2486 RAISE Invalid_Arg_Exc_Dlv;
2487 END IF;
2488
2489 PA_ACTIONS_PVT.DELETE_DLV_ACTION
2490 (p_api_version => p_api_version
2491 ,p_init_msg_list => p_init_msg_list
2492 ,p_commit => p_commit
2493 ,p_validate_only => p_validate_only
2494 ,p_validation_level => p_validation_level
2495 ,p_calling_module => p_calling_module
2496 ,p_debug_mode => l_debug_mode
2497 ,p_max_msg_count => p_max_msg_count
2498 ,p_action_id => l_action_id -- 3769024 using derived value
2499 ,p_action_ver_id => p_action_ver_id
2500 ,p_dlv_element_id => p_dlv_element_id
2501 ,p_dlv_version_id => p_dlv_version_id
2502 ,p_function_code => p_function_code
2503 ,p_project_id => p_project_id
2504 ,x_return_status => x_return_status
2505 ,x_msg_count => x_msg_count
2506 ,x_msg_data => x_msg_data
2507 ) ;
2508
2509 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2510 RAISE Invalid_Arg_Exc_Dlv ;
2511 END IF ;
2512
2513 IF l_debug_mode = 'Y' THEN
2514 pa_debug.g_err_stage:= 'Exiting DELETE_DLV_ACTION' ;
2515 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
2516 pa_debug.reset_curr_function;
2517 END IF;
2518
2519 EXCEPTION
2520 WHEN Invalid_Arg_Exc_Dlv THEN
2521 x_return_status := FND_API.G_RET_STS_ERROR;
2522 l_msg_count := FND_MSG_PUB.count_msg;
2523
2524 IF (p_commit = FND_API.G_TRUE) THEN
2525 ROLLBACK TO DELETE_DLV_ACTIONS_SP;
2526 END IF ;
2527
2528 IF l_debug_mode = 'Y' THEN
2529 pa_debug.g_err_stage := 'inside invalid arg exception of DELETE_DLV_ACTIONS';
2530 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
2531 END IF;
2532
2533 IF l_msg_count = 1 THEN
2534 PA_INTERFACE_UTILS_PUB.get_messages
2535 (p_encoded => FND_API.G_TRUE,
2536 p_msg_index => 1,
2537 p_msg_count => l_msg_count,
2538 p_msg_data => l_msg_data,
2539 p_data => l_data,
2540 p_msg_index_out => l_msg_index_out);
2541 x_msg_data := l_data;
2542 x_msg_count := l_msg_count;
2543 ELSE
2544 x_msg_count := l_msg_count;
2545 END IF;
2546 IF l_debug_mode = 'Y' THEN
2547 pa_debug.reset_curr_function;
2548 END IF ;
2549 RETURN;
2550 WHEN OTHERS THEN
2551 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2552 x_msg_count := 1;
2553 x_msg_data := SQLERRM;
2554
2555 IF (p_commit = FND_API.G_TRUE) THEN
2556 ROLLBACK TO DELETE_DLV_ACTIONS_SP;
2557 END IF ;
2558
2559 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
2560 ,p_procedure_name => 'DELETE_DLV_ACTION');
2561
2562 IF p_debug_mode = 'Y' THEN
2563 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
2564 pa_debug.write('DELETE_DLV_ACTION: ' || g_module_name,pa_debug.g_err_stage,5);
2565 pa_debug.reset_curr_function;
2566 END IF;
2567 RAISE;
2568 END DELETE_DLV_ACTION ;
2569
2570 -- SubProgram : COPY_ACTIONS
2571 -- Type : PROCEDURE
2572 -- Purpose : Public API to Copy Actions From Source To Destination
2573 -- Note : Its a BULK API
2574 -- Assumptions : None
2575 -- Parameter IN/OUT Type Required Description and Purpose
2576 -- --------------------------- --------- ---------- --------- ---------------------------
2577 -- p_api_version IN NUMBER N Standard Parameter
2578 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
2579 -- p_commit IN VARCHAR2 N Standard Parameter
2580 -- p_validate_only IN VARCHAR2 N Standard Parameter
2581 -- p_validation_level IN NUMBER N Standard Parameter
2582 -- p_calling_module IN VARCHAR2 N Standard Parameter
2583 -- p_debug_mode IN VARCHAR2 N Standard Parameter
2584 -- p_max_msg_count IN NUMBER N Standard Parameter
2585 -- p_source_object_id IN NUMBER Y Source Object Id
2586 -- p_source_object_type IN VARCHAR2 Y Source Object Type
2587 -- p_target_object_id IN NUMBER Y Target Object Id
2588 -- p_target_object_type IN VARCHAR2 Y Target Object Type
2589 -- p_project_id IN NUMBER Y Project Id
2590 -- p_task_id IN NUMBER N Task Id
2591 -- p_pm_source_reference IN VARCHAR2 N PM Source Reference
2592 -- p_carrying_out_organization_id IN VARCHAR2 N Carrying Out Org ID
2593 -- p_insert_or_update IN VARCHAR2 N Identifies the API Mode
2594 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
2595 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
2596 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
2597
2598 PROCEDURE COPY_ACTIONS
2599 (p_api_version IN NUMBER :=1.0
2600 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
2601 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
2602 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
2603 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
2604 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
2605 ,p_debug_mode IN VARCHAR2 :='N'
2606 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2607 ,p_source_object_id IN pa_object_relationships.object_id_from2%TYPE
2608 ,p_source_object_type IN pa_object_relationships.object_type_from%TYPE
2609 ,p_target_object_id IN pa_object_relationships.object_id_from2%TYPE
2610 ,p_target_object_type IN pa_object_relationships.object_type_from%TYPE
2611 ,p_source_project_id IN pa_projects_all.project_id%TYPE
2612 ,p_target_project_id IN pa_projects_all.project_id%TYPE
2613 ,p_task_id IN pa_proj_elements.proj_element_id%TYPE := null
2614 ,p_task_ver_id IN pa_proj_element_versions.element_version_id%TYPE := null
2615 ,p_carrying_out_organization_id IN pa_proj_elements.carrying_out_organization_id%TYPE := null
2616 ,p_pm_source_reference IN pa_proj_elements.pm_source_reference%TYPE := null
2617 ,p_pm_source_code IN pa_proj_elements.pm_source_code%TYPE := null
2618 ,p_calling_mode IN VARCHAR2 := NULL -- Added for bug# 3911050
2619 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2620 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2621 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2622 )
2623 IS
2624 l_debug_mode VARCHAR2(10);
2625 l_msg_count NUMBER ;
2626 l_data VARCHAR2(2000);
2627 l_msg_data VARCHAR2(2000);
2628 l_msg_index_out NUMBER;
2629 BEGIN
2630
2631 x_msg_count := 0;
2632 x_return_status := FND_API.G_RET_STS_SUCCESS;
2633 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
2634
2635 IF l_debug_mode = 'Y' THEN
2636 PA_DEBUG.set_curr_function( p_function => 'COPY_ACTIONS',
2637 p_debug_mode => l_debug_mode );
2638 pa_debug.g_err_stage:= 'Inside COPY_ACTIONS ';
2639 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
2640 END IF;
2641
2642 IF l_debug_mode = 'Y' THEN
2643 pa_debug.g_err_stage:= 'Printing Input parameters';
2644 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
2645 pa_debug.write(g_module_name,'p_source_object_id '||':'||p_source_object_id ,3) ;
2646 pa_debug.write(g_module_name,'p_source_object_type'||':'||p_source_object_type,3) ;
2647 pa_debug.write(g_module_name,'p_target_object_id '||':'||p_target_object_id ,3) ;
2648 pa_debug.write(g_module_name,'p_target_object_type'||':'||p_target_object_type,3) ;
2649 END IF;
2650
2651 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
2652 FND_MSG_PUB.initialize;
2653 END IF;
2654
2655 IF (p_commit = FND_API.G_TRUE) THEN
2656 savepoint COPY_ACTIONS_SP ;
2657 END IF;
2658
2659 IF l_debug_mode = 'Y' THEN
2660 pa_debug.g_err_stage:= 'Validating Input parameters';
2661 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
2662 END IF;
2663
2664 IF (p_source_object_id IS NULL OR p_source_object_type IS NULL
2665 OR p_target_object_id IS NULL OR p_target_object_type IS NULL )
2666 THEN
2667 IF l_debug_mode = 'Y' THEN
2668 pa_debug.g_err_stage:= 'INVALID INPUT PARAMETER';
2669 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
2670 END IF;
2671
2672 x_return_status := FND_API.G_RET_STS_ERROR;
2673 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA'
2674 ,p_msg_name => 'PA_INV_PARAM_PASSED');
2675 RAISE Invalid_Arg_Exc_Dlv;
2676 END IF;
2677
2678 PA_ACTIONS_PVT.COPY_ACTIONS
2679 (p_api_version => p_api_version
2680 ,p_init_msg_list => p_init_msg_list
2681 ,p_commit => p_commit
2682 ,p_validate_only => p_validate_only
2683 ,p_validation_level => p_validation_level
2684 ,p_calling_module => p_calling_module
2685 ,p_debug_mode => l_debug_mode
2686 ,p_max_msg_count => p_max_msg_count
2687 ,p_source_object_id => p_source_object_id
2688 ,p_source_object_type => p_source_object_type
2689 ,p_target_object_id => p_target_object_id
2690 ,p_target_object_type => p_target_object_type
2691 ,p_source_project_id => p_source_project_id
2692 ,p_target_project_id => p_target_project_id
2693 ,p_task_id => p_task_id
2694 ,p_task_ver_id => p_task_ver_id
2695 ,p_carrying_out_organization_id => p_carrying_out_organization_id
2696 ,p_pm_source_reference => p_pm_source_reference
2697 ,p_pm_source_code => p_pm_source_code
2698 ,p_calling_mode => p_calling_mode -- added for bug# 3911050
2699 ,x_return_status => x_return_status
2700 ,x_msg_count => x_msg_count
2701 ,x_msg_data => x_msg_data
2702 ) ;
2703
2704
2705 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2706 RAISE Invalid_Arg_Exc_Dlv ;
2707 END IF ;
2708
2709 IF l_debug_mode = 'Y' THEN
2710 pa_debug.g_err_stage:= 'Exiting COPY_ACTIONS' ;
2711 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
2712 pa_debug.reset_curr_function;
2713 END IF;
2714
2715 EXCEPTION
2716 WHEN Invalid_Arg_Exc_Dlv THEN
2717 x_return_status := FND_API.G_RET_STS_ERROR;
2718 l_msg_count := FND_MSG_PUB.count_msg;
2719
2720 IF (p_commit = FND_API.G_TRUE) THEN
2721 ROLLBACK TO COPY_ACTIONS_SP;
2722 END IF ;
2723
2724 IF l_debug_mode = 'Y' THEN
2725 pa_debug.g_err_stage := 'inside invalid arg exception of COPY_ACTIONS';
2726 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
2727 END IF;
2728
2729 IF l_msg_count = 1 THEN
2730 PA_INTERFACE_UTILS_PUB.get_messages
2731 (p_encoded => FND_API.G_TRUE,
2732 p_msg_index => 1,
2733 p_msg_count => l_msg_count,
2734 p_msg_data => l_msg_data,
2735 p_data => l_data,
2736 p_msg_index_out => l_msg_index_out);
2737 x_msg_data := l_data;
2738 x_msg_count := l_msg_count;
2739 ELSE
2740 x_msg_count := l_msg_count;
2741 END IF;
2742 IF l_debug_mode = 'Y' THEN
2743 pa_debug.reset_curr_function;
2744 END IF ;
2745 RETURN;
2746 WHEN OTHERS THEN
2747 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2748 x_msg_count := 1;
2749 x_msg_data := SQLERRM;
2750
2751 IF (p_commit = FND_API.G_TRUE) THEN
2752 ROLLBACK TO COPY_ACTIONS_SP;
2753 END IF ;
2754
2755 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
2756 ,p_procedure_name => 'COPY_ACTIONS');
2757
2758 IF p_debug_mode = 'Y' THEN
2759 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
2760 pa_debug.write('COPY_ACTIONS: ' || g_module_name,pa_debug.g_err_stage,5);
2761 pa_debug.reset_curr_function;
2762 END IF;
2763 RAISE;
2764 END COPY_ACTIONS ;
2765
2766 --------------------------------------------------------------------------------
2767 --Name: is_action_rec_empty_yn
2768 --Type: Function
2769 --Description: This function checks if the action record passed is empty
2770 -- for shipping and procurement actions and ignore other actions
2771 --
2772 --Called subprograms: None
2773 --
2774 --History:
2775 -- 05-SEP-2008 SKKOPPUL Created
2776 --
2777 FUNCTION is_action_rec_empty_yn
2778 (
2779 p_action_in_rec IN PA_PROJECT_PUB.action_in_rec_type,
2780 p_function_code IN VARCHAR2
2781 ) RETURN VARCHAR2
2782 IS
2783 BEGIN
2784
2785 -- common parameters for both shipping and procurement actions
2786 IF ( p_action_in_rec.action_name <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2787 AND p_action_in_rec.action_name IS NOT NULL) THEN
2788 RETURN 'N';
2789 END IF;
2790 IF ( p_action_in_rec.financial_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2791 AND p_action_in_rec.financial_task_id IS NOT NULL) THEN
2792 RETURN 'N';
2793 END IF;
2794 IF ( p_action_in_rec.financial_task_reference <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2795 AND p_action_in_rec.financial_task_reference IS NOT NULL) THEN
2796 RETURN 'N';
2797 END IF;
2798 -- OKE procurement parameters
2799 IF ( p_function_code = g_procurement) THEN
2800
2801 IF ( p_action_in_rec.destination_type_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2802 AND p_action_in_rec.destination_type_code IS NOT NULL) THEN
2803 RETURN 'N';
2804 END IF;
2805 IF ( p_action_in_rec.po_need_by_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2806 AND p_action_in_rec.po_need_by_date IS NOT NULL) THEN
2807 RETURN 'N';
2808 END IF;
2809 IF ( p_action_in_rec.receiving_org_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2810 AND p_action_in_rec.receiving_org_id IS NOT NULL) THEN
2811 RETURN 'N';
2812 END IF;
2813 IF ( p_action_in_rec.receiving_location_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2814 AND p_action_in_rec.receiving_location_id IS NOT NULL) THEN
2815 RETURN 'N';
2816 END IF;
2817 IF ( p_action_in_rec.vendor_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2818 AND p_action_in_rec.vendor_id IS NOT NULL) THEN
2819 RETURN 'N';
2820 END IF;
2821 IF ( p_action_in_rec.vendor_site_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2822 AND p_action_in_rec.vendor_site_code IS NOT NULL) THEN
2823 RETURN 'N';
2824 END IF;
2825 IF ( p_action_in_rec.quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2826 AND p_action_in_rec.quantity IS NOT NULL) THEN
2827 RETURN 'N';
2828 END IF;
2829 IF ( p_action_in_rec.uom_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2830 AND p_action_in_rec.uom_code IS NOT NULL) THEN
2831 RETURN 'N';
2832 END IF;
2833 IF ( p_action_in_rec.unit_price <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2834 AND p_action_in_rec.unit_price IS NOT NULL) THEN
2835 RETURN 'N';
2836 END IF;
2837 IF ( p_action_in_rec.exchange_rate_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2838 AND p_action_in_rec.exchange_rate_type IS NOT NULL) THEN
2839 RETURN 'N';
2840 END IF;
2841 IF ( p_action_in_rec.exchange_rate_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2842 AND p_action_in_rec.exchange_rate_date IS NOT NULL) THEN
2843 RETURN 'N';
2844 END IF;
2845 IF ( p_action_in_rec.exchange_rate <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2846 AND p_action_in_rec.exchange_rate IS NOT NULL) THEN
2847 RETURN 'N';
2848 END IF;
2849 IF ( p_action_in_rec.expenditure_type <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2850 AND p_action_in_rec.expenditure_type IS NOT NULL) THEN
2851 RETURN 'N';
2852 END IF;
2853 IF ( p_action_in_rec.expenditure_item_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2854 AND p_action_in_rec.expenditure_item_date IS NOT NULL) THEN
2855 RETURN 'N';
2856 END IF;
2857 IF ( p_action_in_rec.expenditure_org_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2858 AND p_action_in_rec.expenditure_org_id IS NOT NULL) THEN
2859 RETURN 'N';
2860 END IF;
2861 IF ( p_action_in_rec.requisition_line_type_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2862 AND p_action_in_rec.requisition_line_type_id IS NOT NULL) THEN
2863 RETURN 'N';
2864 END IF;
2865 IF ( p_action_in_rec.category_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2866 AND p_action_in_rec.category_id IS NOT NULL) THEN
2867 RETURN 'N';
2868 END IF;
2869 IF ( p_action_in_rec.ready_to_procure_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2870 AND p_action_in_rec.ready_to_procure_flag IS NOT NULL) THEN
2874 AND p_action_in_rec.initiate_procure_flag IS NOT NULL) THEN
2871 RETURN 'N';
2872 END IF;
2873 IF ( p_action_in_rec.initiate_procure_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2875 RETURN 'N';
2876 END IF;
2877 -- OKE procurement parameters
2878
2879 ELSIF ( p_function_code = g_shipping) THEN
2880
2881 -- OKE shipping parameters
2882 IF ( p_action_in_rec.ship_from_organization_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2883 AND p_action_in_rec.ship_from_organization_id IS NOT NULL) THEN
2884 RETURN 'N';
2885 END IF;
2886 IF ( p_action_in_rec.ship_from_location_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2887 AND p_action_in_rec.ship_from_location_id IS NOT NULL) THEN
2888 RETURN 'N';
2889 END IF;
2890 IF ( p_action_in_rec.ship_to_organization_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2891 AND p_action_in_rec.ship_to_organization_id IS NOT NULL) THEN
2892 RETURN 'N';
2893 END IF;
2894 IF ( p_action_in_rec.ship_to_location_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2895 AND p_action_in_rec.ship_to_location_id IS NOT NULL) THEN
2896 RETURN 'N';
2897 END IF;
2898 IF ( p_action_in_rec.demand_schedule <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2899 AND p_action_in_rec.demand_schedule IS NOT NULL) THEN
2900 RETURN 'N';
2901 END IF;
2902 IF ( p_action_in_rec.expected_shipment_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2903 AND p_action_in_rec.expected_shipment_date IS NOT NULL) THEN
2904 RETURN 'N';
2905 END IF;
2906 IF ( p_action_in_rec.promised_shipment_date <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE
2907 AND p_action_in_rec.promised_shipment_date IS NOT NULL) THEN
2908 RETURN 'N';
2909 END IF;
2910 IF ( p_action_in_rec.volume <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2911 AND p_action_in_rec.volume IS NOT NULL) THEN
2912 RETURN 'N';
2913 END IF;
2914 IF ( p_action_in_rec.volume_uom <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2915 AND p_action_in_rec.volume_uom IS NOT NULL) THEN
2916 RETURN 'N';
2917 END IF;
2918 IF ( p_action_in_rec.weight <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2919 AND p_action_in_rec.weight IS NOT NULL) THEN
2920 RETURN 'N';
2921 END IF;
2922 IF ( p_action_in_rec.weight_uom <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2923 AND p_action_in_rec.weight_uom IS NOT NULL) THEN
2924 RETURN 'N';
2925 END IF;
2926 IF ( p_action_in_rec.ready_to_ship_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2927 AND p_action_in_rec.ready_to_ship_flag IS NOT NULL) THEN
2928 RETURN 'N';
2929 END IF;
2930 IF ( p_action_in_rec.initiate_planning_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2931 AND p_action_in_rec.initiate_planning_flag IS NOT NULL) THEN
2932 RETURN 'N';
2933 END IF;
2934 IF ( p_action_in_rec.initiate_shipping_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2935 AND p_action_in_rec.initiate_shipping_flag IS NOT NULL) THEN
2936 RETURN 'N';
2937 END IF;
2938 IF ( p_action_in_rec.quantity <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
2939 AND p_action_in_rec.quantity IS NOT NULL) THEN
2940 RETURN 'N';
2941 END IF;
2942 IF ( p_action_in_rec.uom_code <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2943 AND p_action_in_rec.uom_code IS NOT NULL) THEN
2944 RETURN 'N';
2945 END IF;
2946 -- OKE shipping parameters
2947 ELSE
2948 -- ignore all other cases
2949 RETURN 'N';
2950 END IF;
2951
2952 RETURN 'Y';
2953
2954 EXCEPTION
2955 WHEN OTHERS THEN
2956 RETURN 'N';
2957 END is_action_rec_empty_yn;
2958
2959 -------3435905 : FP M : Deliverables Changes For AMG -Start--------------------
2960 --------------------------------------------------------------------------------
2961 --Name: Create_Dlvr_Actions_Wrapper
2962 --Type: Procedure
2963 --Description: This procedure will be called from AMP api. It validates the
2964 -- input values and then call the pa_action_pub apis
2965 --
2966 --Called subprograms: PA_ACTION_PUB.VALIDATE_ACTION
2967 -- PA_ACTION_PUB.CREATE_DLV_ACTIONS_IN_BULK
2968 --
2969 --
2970 --
2971 --History:
2972 -- 08-Mar-2004 Puneet Created
2973 --
2974
2975 PROCEDURE Create_Dlvr_Actions_Wrapper
2976 ( p_api_version IN NUMBER :=1.0
2977 , p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
2978 , p_commit IN VARCHAR2 :=FND_API.G_FALSE
2979 , p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
2980 , p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
2981 , p_calling_module IN VARCHAR2 :='AMG'
2982 , p_debug_mode IN VARCHAR2 :='N'
2983 , p_insert_or_update IN VARCHAR2 := 'INSERT'
2984 , p_action_in_tbl IN PA_PROJECT_PUB.action_in_tbl_type
2985 , x_action_out_tbl OUT NOCOPY PA_PROJECT_PUB.action_out_tbl_type --File.Sql.39 bug 4440895
2986 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2987 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
2991 l_action_owner_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
2988 , x_msg_data OUT NOCOPY VARCHAR2 ) --File.Sql.39 bug 4440895
2989 IS
2990 l_action_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
2992 l_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
2993 l_due_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
2994 l_completed_flag_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE() ;
2995 l_completion_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
2996 l_element_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
2997 l_proj_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
2998 l_rec_ver_num_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
2999 l_description_tbl SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
3000 l_user_action_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
3001 l_pm_source_reference_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
3002
3003 l_attribute_category_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
3004 l_attribute1_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3005 l_attribute2_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3006 l_attribute3_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3007 l_attribute4_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3008 l_attribute5_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3009 l_attribute6_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3010 l_attribute7_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3011 l_attribute8_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3012 l_attribute9_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3013 l_attribute10_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3014 l_attribute11_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3015 l_attribute12_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3016 l_attribute13_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3017 l_attribute14_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3018 l_attribute15_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3019
3020 l_project_id PA_PROJ_ELEMENTS.PROJECT_ID%TYPE := NULL ;
3021 l_object_id PA_PROJ_ELEMENTS.PROJ_ELEMENT_ID%TYPE := NULL ;
3022 l_object_version_id PA_PROJ_ELEMENT_VERSIONS.ELEMENT_VERSION_ID%TYPE := NULL ;
3023 l_object_type PA_PROJ_ELEMENTS.OBJECT_TYPE%TYPE := NULL ;
3024 l_pm_source_code VARCHAR2(30) := NULL ;
3025 l_pm_source_reference VARCHAR2(30) := NULL ;
3026 -- to be modified l_pm_source_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
3027 -- to be modified l_pm_source_reference_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ; -- should be 25 instead of 30
3028 l_carrying_out_organization_id PA_PROJ_ELEMENTS.CARRYING_OUT_ORGANIZATION_ID%TYPE := NULL ;
3029
3030 -- 3749462 changes for financial top task and lowest chargeable task validation
3031 l_fin_task_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
3032 l_fin_task_num_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
3033 -- 3749462 end
3034
3035 i_proc NUMBER := 0;
3036 i_ship NUMBER := 0;
3037 i_bill NUMBER := 0;
3038 i_actn NUMBER := 0;
3039 i_none NUMBER := 0;
3040
3041 i_ship1 NUMBER := 0;
3042 i_proc1 NUMBER := 0;
3043
3044 l_api_name CONSTANT VARCHAR2(30) := 'Create_Dlvr_Actions_Wrapper';
3045
3046 l_action_out_tbl PA_PROJECT_PUB.action_out_tbl_type;
3047 l_dlv_ship_action_tbl dlv_ship_action_tbl_type;
3048 l_dlv_req_action_tbl dlv_req_action_tbl_type;
3049
3050 l_project_number pa_projects_all.segment1%TYPE;
3051 l_deliverable_number pa_proj_elements.element_number%TYPE;
3052 l_action_id pa_proj_elements.proj_element_id%TYPE;
3053 l_org_id PA_PROJECTS_ALL.ORG_ID%TYPE;
3054 l_organization_name pa_organizations_event_v.name%TYPE;
3055 l_projfunc_currency_code PA_PROJECTS_ALL.PROJFUNC_CURRENCY_CODE%TYPE;
3056 l_action_owner_id NUMBER; /* Bug # 3590235 */
3057 l_item_dlv VARCHAR2(1);
3058 l_action VARCHAR2(30);
3059 l_actn_version_id NUMBER; -- 3651489 added local variable to store action's element_version_id
3060
3061 l_msg_index_out NUMBER;
3062 l_msg_count NUMBER ;
3063 l_data VARCHAR2(2000);
3064 l_msg_data VARCHAR2(2000);
3068 SELECT vers.element_version_id
3065 l_err_message fnd_new_messages.message_text%TYPE ;
3066
3067 Cursor C_vers (p_proj_element_id IN NUMBER) IS
3069 , elem.carrying_out_organization_id
3070 , proj.segment1
3071 , elem.element_Number
3072 , proj.project_id
3073 , Pa_Deliverable_Utils.IS_Dlvr_Item_Based(vers.element_version_id)
3074 FROM pa_proj_element_versions vers
3075 , pa_proj_elements elem
3076 , pa_projects_all proj
3077 WHERE vers.proj_element_id = elem.proj_element_id
3078 AND elem.project_id = vers.project_id
3079 AND elem.proj_element_id = p_Proj_element_id
3080 AND elem.project_id = proj.project_id
3081 AND elem.object_type = 'PA_DELIVERABLES';
3082
3083 CURSOR C_org_name (p_org_id IN NUMBER) IS
3084 SELECT name
3085 FROM pa_organizations_event_v
3086 WHERE organization_id = P_org_id
3087 AND TRUNC(SYSDATE) BETWEEN date_from AND nvl(date_to, TRUNC(SYSDATE));
3088
3089 -- 3651489 added cursor to retrieve actions' element version id
3090 -- proj element id is passed as argument
3091
3092 Cursor C_act_ver (p_proj_element_id IN NUMBER) IS
3093 SELECT pev.element_version_id
3094 FROM pa_proj_element_versions pev
3095 WHERE pev.proj_element_id = p_proj_element_id
3096 AND pev.object_type = 'PA_ACTIONS';
3097
3098 -- 3749462 changes for financial top task and lowest chargeable task validation
3099
3100 l_fin_task_id pa_proj_elements.proj_element_id%TYPE;
3101 --added for bug: 4537865
3102 l_new_fin_task_id pa_proj_elements.proj_element_id%TYPE;
3103 --added for bug: 4537865
3104 l_fin_task_ref VARCHAR2(25);
3105
3106
3107 Cursor is_top_task (project_id NUMBER, fin_task_id NUMBER) IS
3108 SELECT
3109 TASK_NUMBER
3110 FROM
3111 PA_TASKS
3112 WHERE
3113 PROJECT_ID = project_id
3114 AND TASK_ID = TOP_TASK_ID
3115 AND TASK_ID = fin_task_id;
3116
3117 Cursor is_lowest_task (project_id NUMBER, fin_task_id NUMBER) IS
3118 SELECT
3119 TASK_NUMBER
3120 FROM
3121 PA_TASKS
3122 WHERE
3123 PROJECT_ID = project_id
3124 AND TASK_ID = fin_task_id
3125 AND CHARGEABLE_FLAG = 'Y';
3126
3127 -- For Bug 3749447 , Added below local variables and cursor
3128
3129 l_unique_flag VARCHAR2(1);
3130
3131 Cursor C_dlvr_type(l_project_id NUMBER, l_deliverable_id NUMBER) IS
3132 SELECT type_id
3133 FROM PA_PROJ_ELEMENTS
3134 WHERE proj_element_id = l_deliverable_id
3135 AND project_id = l_project_id
3136 AND OBJECT_TYPE = 'PA_DELIVERABLES';
3137
3138 l_dlvr_type_id Pa_Proj_Elements.type_id%TYPE;
3139
3140 l_dlvr_prg_enabled VARCHAR2(1) := NULL;
3141 l_dlvr_action_enabled VARCHAR2(1) := NULL;
3142 l_status_code PA_PROJ_ELEMENTS.STATUS_CODE%TYPE;
3143
3144 -- end 3749447
3145
3146 -- 3651542 added local variable for defaulting
3147
3148 l_default_owner_id NUMBER;
3149 l_default_owner_name PER_ALL_PEOPLE_F.FULL_NAME%TYPE;
3150 l_default_date DATE;
3151 l_earliest_start_date DATE;
3152 l_earliest_finish_date DATE;
3153
3154 -- bug 7385017 skkoppul
3155 l_update_oke_yn VARCHAR2(1) := 'Y';
3156
3157 BEGIN
3158
3159 IF p_commit = FND_API.G_TRUE THEN
3160 SAVEPOINT create_dlvr_actions_wrapper;
3161 END IF;
3162 -- Standard call to check for call compatibility.
3163 IF NOT FND_API.Compatible_API_Call ( g_api_version_number ,
3164 p_api_version ,
3165 l_api_name ,
3166 G_PKG_NAME )
3167 THEN
3168 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3169 END IF;
3170
3171 -- Initialize the message table if requested.
3172 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
3173 FND_MSG_PUB.initialize;
3174 END IF;
3175
3176 IF p_debug_mode = 'Y' THEN
3177 PA_DEBUG.set_curr_function( p_function => l_api_name,
3178 p_debug_mode => p_debug_mode );
3179 pa_debug.g_err_stage:= 'Inside '||l_api_name;
3180 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
3181 END IF;
3182
3183 -- Set API return status to success
3184 x_return_status := FND_API.G_RET_STS_SUCCESS;
3185
3186 -- OKE apis expect CREATE instead of INSERT. Initializing local variable
3187 -- l_action based on value of p_insert_or_update
3188
3189 IF (p_insert_or_update = g_insert) THEN
3190 l_action := g_create;
3191 ELSE
3192 l_action := p_insert_or_update;
3193 END IF;
3194
3195 i_actn := p_action_in_tbl.first();
3196
3197 WHILE i_actn IS NOT NULL LOOP
3198
3199 /* Bug # 3590235 : Added a condition to check null value for action_owner_id */
3200
3201 IF ( p_action_in_tbl(i_actn).action_owner_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
3202 p_action_in_tbl(i_actn).action_owner_id IS NULL) THEN
3203 l_action_owner_id := null;
3204 ELSE
3208 IF ( i_actn = p_action_in_tbl.first()) THEN
3205 l_action_owner_id := p_action_in_tbl(i_actn).action_owner_id ;
3206 END IF;
3207
3209 l_object_id := p_action_in_tbl(i_actn).deliverable_id ;
3210 l_object_type := g_deliverables ;
3211 l_pm_source_code := nvl(p_action_in_tbl(i_actn).pm_source_code,'MSPROJECT') ;
3212
3213 -- Getting the project /deliverable related information
3214 Open C_vers (l_object_id);
3215 Fetch C_vers INTO l_object_version_id, l_carrying_out_organization_id,
3216 l_project_number, l_deliverable_number, l_project_id, l_item_dlv;
3217 Close C_vers;
3218
3219 Pa_Deliverable_Utils.Get_Project_Details (
3220 p_project_id => l_project_id
3221 ,x_projfunc_currency_code => l_projfunc_currency_code
3222 ,x_org_id => l_org_id
3223 );
3224
3225
3226 IF p_debug_mode = 'Y' THEN
3227 pa_debug.write(g_module_name,'Entering the loop fetched values obj id ['||l_object_id||']vers id['||l_object_version_id||']',3) ;
3228 pa_debug.write(g_module_name,'carry out org id ['||l_carrying_out_organization_id||']proj num['|| l_project_number||']dlvr num['||l_deliverable_number||']',3) ;
3229 pa_debug.write(g_module_name,'org id ['||l_org_id||']PFC['|| l_projfunc_currency_code||']item dlv['||l_item_dlv||']',3) ;
3230 END IF;
3231
3232 -- 3651542 Added below code to retrieve default owner and date in create mode
3233 -- Assumption : defaulting will done for 'PROJECT' only , for AMG task flow is not
3234 -- considered , Also, this will be in case of project , not the template
3235
3236 -- because of above assumption, passing task ver id null
3237 -- l_earliest_start_date and l_earliest_finish_date will be null
3238
3239 -- retrieve only once, i.e. this call will be made for only first action
3240
3241 IF (l_action = g_create) THEN
3242 PA_DELIVERABLE_UTILS.GET_DEFAULT_ACTN_DATE
3243 (
3244 p_dlvr_ver_id => l_object_version_id
3245 ,p_task_ver_id => NULL
3246 ,p_project_mode => 'PROJECT'
3247 ,x_due_date => l_default_date
3248 ,x_earliest_start_date => l_earliest_start_date
3249 ,x_earliest_finish_date => l_earliest_finish_date
3250 );
3251
3252 PA_DELIVERABLE_UTILS.GET_DEFAULT_ACTION_OWNER
3253 (
3254 p_dlvr_ver_id => l_object_version_id
3255 ,x_owner_id => l_default_owner_id
3256 ,x_owner_name => l_default_owner_name
3257 );
3258 END IF;
3259
3260 -- 3651542 end
3261 END IF;
3262
3263 -- 3749447 Start
3264 -- If this api is called for creating actions, do below validation
3265 -- 1. for deliverable, action is enabled
3266 -- 2. for deliverable, action reference is unique
3267 -- 3. action name is valid , i.e not null and not '^'
3268
3269 IF l_action = g_create THEN
3270
3271 OPEN C_dlvr_type(l_project_id,l_object_id);
3272 FETCH C_dlvr_Type INTO l_dlvr_type_id;
3273 CLOSE C_dlvr_type;
3274
3275 -- Will create actions only when deliverable type of deliverable
3276 -- has action creation enabled.
3277
3278 Pa_Deliverable_Utils.GET_DLVR_TYPE_INFO
3279 (
3280 p_dlvr_type_id => l_dlvr_type_id
3281 ,x_dlvr_prg_enabled => l_dlvr_prg_enabled
3282 ,x_dlvr_action_enabled => l_dlvr_action_enabled
3283 ,x_dlvr_default_status_code => l_status_code
3284 );
3285
3286 IF (l_dlvr_action_enabled <> 'Y') THEN
3287
3288 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3289 l_err_message := FND_MESSAGE.GET_STRING('PA','DLVR_ACTION_NOT_ENABLED') ;
3290 PA_UTILS.ADD_MESSAGE
3291 (p_app_short_name => 'PA',
3292 p_msg_name => 'PA_ACTION_VALID_ERR',
3293 p_token1 => 'PROJECT',
3294 p_value1 => l_project_number,
3295 p_token2 => 'DLVR_REFERENCE',
3296 p_value2 => l_deliverable_number,
3297 p_token3 => 'ACTION_REFERENCE',
3298 p_value3 => p_action_in_tbl(i_actn).pm_action_reference,
3299 p_token4 => 'MESSAGE',
3300 p_value4 => l_err_message
3301 );
3302 END IF;
3303
3304 x_return_status := FND_API.G_RET_STS_ERROR;
3305 RAISE FND_API.G_EXC_ERROR;
3306
3307 END IF;
3308
3309 -- Validate Action reference - not null, unique
3310 pa_deliverable_utils.is_action_reference_unique (
3314 , x_unique_flag => l_unique_flag
3311 p_action_reference => p_action_in_tbl(i_actn).pm_action_reference
3312 , p_deliverable_id => l_object_id
3313 , p_project_id => l_project_id
3315 , x_return_status => x_return_status
3316 );
3317
3318 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3319 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3320 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
3321 RAISE FND_API.G_EXC_ERROR;
3322 END IF;
3323
3324 IF p_action_in_tbl(i_actn).action_name IS NULL OR p_action_in_tbl(i_actn).action_name = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR THEN
3325
3326 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3327 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_ACTION_NAME_NULL_ERROR') ;
3328 PA_UTILS.ADD_MESSAGE
3329 (p_app_short_name => 'PA',
3330 p_msg_name => 'PA_ACTION_VALID_ERR',
3331 p_token1 => 'PROJECT',
3332 p_value1 => l_project_number,
3333 p_token2 => 'DLVR_REFERENCE',
3334 p_value2 => l_deliverable_number,
3335 p_token3 => 'ACTION_REFERENCE',
3336 p_value3 => p_action_in_tbl(i_actn).pm_action_reference,
3337 p_token4 => 'MESSAGE',
3338 p_value4 => l_err_message
3339 );
3340
3341 END IF;
3342 x_return_status := FND_API.G_RET_STS_ERROR;
3343 RAISE FND_API.G_EXC_ERROR;
3344
3345 END IF;
3346
3347 END IF;
3348
3349 -- end 3749447
3350
3351 -- Populating the action PLSQL table
3352
3353 l_action_name_tbl.extend;
3354 l_action_owner_id_tbl.extend;
3355 l_function_code_tbl.extend;
3356 l_due_date_tbl.extend;
3357 l_completed_flag_tbl.extend;
3358 l_completion_date_tbl.extend;
3359 l_element_version_id_tbl.extend;
3360 l_proj_element_id_tbl.extend;
3361 l_rec_ver_num_id_tbl.extend;
3362 l_description_tbl.extend;
3363 l_user_action_tbl.extend;
3364 l_pm_source_reference_tbl.extend;
3365
3366 l_attribute_category_tbl.extend;
3367 l_attribute1_tbl.extend ;
3368 l_attribute2_tbl.extend ;
3369 l_attribute3_tbl.extend ;
3370 l_attribute4_tbl.extend ;
3371 l_attribute5_tbl.extend ;
3372 l_attribute6_tbl.extend ;
3373 l_attribute7_tbl.extend ;
3374 l_attribute8_tbl.extend ;
3375 l_attribute9_tbl.extend ;
3376 l_attribute10_tbl.extend ;
3377 l_attribute11_tbl.extend ;
3378 l_attribute12_tbl.extend ;
3379 l_attribute13_tbl.extend ;
3380 l_attribute14_tbl.extend ;
3381 l_attribute15_tbl.extend ;
3382
3383 -- 3749462 changes for financial top task and lowest chargeable task validation
3384 l_fin_task_id_tbl.extend ;
3385 l_fin_task_num_tbl.extend ;
3386
3387 -- to be modified l_pm_source_code_tbl(i_actn) := p_action_in_tbl(i_actn).pm_source_code ;
3388 -- to be modified l_pm_source_reference_tbl(i_actn) := p_action_in_tbl(i_actn).pm_source_reference ;
3389
3390 -- Changed the direct initialization of local variables to select statement as values would differ in case of update or create bug 3651139
3391 IF (l_action = g_create) THEN
3392 SELECT
3393 decode(p_action_in_tbl(i_actn).action_name ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).action_name )
3394 , l_action_owner_id
3395 , decode(p_action_in_tbl(i_actn).function_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).function_code )
3396 , decode(p_action_in_tbl(i_actn).due_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , null, p_action_in_tbl(i_actn).due_date )
3397 , NULL --l_completed_flag
3398 , NULL --l_completion_date
3399 , NULL --l_element_version_id
3400 , NULL --l_proj_element_id
3401 , 1 --l_rec_ver_num_id
3402 , decode(p_action_in_tbl(i_actn).description ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).description )
3403 , p_insert_or_update
3404 , decode(p_action_in_tbl(i_actn).pm_action_reference,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).pm_action_reference )
3405 , NULL --l_attribute_category
3406 , NULL --l_attribute1
3407 , NULL --l_attribute2
3408 , NULL --l_attribute3
3409 , NULL --l_attribute4
3410 , NULL --l_attribute5
3411 , NULL --l_attribute6
3412 , NULL --l_attribute7
3413 , NULL --l_attribute8
3414 , NULL --l_attribute9
3418 , NULL --l_attribute13
3415 , NULL --l_attribute10
3416 , NULL --l_attribute11
3417 , NULL --l_attribute12
3419 , NULL --l_attribute14
3420 , NULL --l_attribute15
3421 INTO
3422 l_action_name_tbl(i_actn)
3423 , l_action_owner_id_tbl(i_actn)
3424 , l_function_code_tbl(i_actn)
3425 , l_due_date_tbl(i_actn)
3426 , l_completed_flag_tbl(i_actn)
3427 , l_completion_date_tbl(i_actn)
3428 , l_element_version_id_tbl(i_actn)
3429 , l_proj_element_id_tbl(i_actn)
3430 , l_rec_ver_num_id_tbl(i_actn)
3431 , l_description_tbl(i_actn)
3432 , l_user_action_tbl(i_actn)
3433 , l_pm_source_reference_tbl(i_actn)
3434 , l_attribute_category_tbl(i_actn)
3435 , l_attribute1_tbl(i_actn)
3436 , l_attribute2_tbl(i_actn)
3437 , l_attribute3_tbl(i_actn)
3438 , l_attribute4_tbl(i_actn)
3439 , l_attribute5_tbl(i_actn)
3440 , l_attribute6_tbl(i_actn)
3441 , l_attribute7_tbl(i_actn)
3442 , l_attribute8_tbl(i_actn)
3443 , l_attribute9_tbl(i_actn)
3444 , l_attribute10_tbl(i_actn)
3445 , l_attribute11_tbl(i_actn)
3446 , l_attribute12_tbl(i_actn)
3447 , l_attribute13_tbl(i_actn)
3448 , l_attribute14_tbl(i_actn)
3449 , l_attribute15_tbl(i_actn)
3450 FROM DUAL;
3451 ELSE -- UPDATE
3452 SELECT
3453 decode(p_action_in_tbl(i_actn).action_name ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , element_name , p_action_in_tbl(i_actn).action_name )
3454 , decode(p_action_in_tbl(i_actn).action_owner_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , manager_person_id, p_action_in_tbl(i_actn).action_owner_id )
3455 , decode(p_action_in_tbl(i_actn).function_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , function_code , p_action_in_tbl(i_actn).function_code )
3456 , decode(p_action_in_tbl(i_actn).due_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , due_date , p_action_in_tbl(i_actn).due_date )
3457 , decode(action_status_code , 'DLVR_COMPLETED', 'Y', 'N') --l_completed_flag
3458 , decode(p_action_in_tbl(i_actn).completion_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , actual_finish_date, p_action_in_tbl(i_actn).completion_date ) -- for bug# 3749462-- earlier passed as NULL --l_completion_date
3459 , element_version_id
3460 , proj_element_id
3461 , NULL --l_rec_ver_num_id
3462 , decode(p_action_in_tbl(i_actn).description ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , description, p_action_in_tbl(i_actn).description )
3463 -- 3729250 removed p_insert_or_update passing , for update expected value is 'MODIFIED'
3464 -- because CR_UP_DLV_ACTIONS_IN_BULK procedure is expecting this value to be 'MODIFIED' , not 'UPDATE'
3465 , g_modified
3466 , decode(p_action_in_tbl(i_actn).pm_action_reference,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).pm_action_reference )
3467 , attribute_category
3468 , attribute1
3469 , attribute2
3470 , attribute3
3471 , attribute4
3472 , attribute5
3473 , attribute6
3474 , attribute7
3475 , attribute8
3476 , attribute9
3477 , attribute10
3478 , attribute11
3479 , attribute12
3480 , attribute13
3481 , attribute14
3482 , attribute15
3483 INTO
3484 l_action_name_tbl(i_actn)
3485 , l_action_owner_id_tbl(i_actn)
3486 , l_function_code_tbl(i_actn)
3487 , l_due_date_tbl(i_actn)
3488 , l_completed_flag_tbl(i_actn)
3489 , l_completion_date_tbl(i_actn)
3490 , l_element_version_id_tbl(i_actn)
3491 , l_proj_element_id_tbl(i_actn)
3492 , l_rec_ver_num_id_tbl(i_actn)
3493 , l_description_tbl(i_actn)
3494 , l_user_action_tbl(i_actn)
3495 , l_pm_source_reference_tbl(i_actn)
3496 , l_attribute_category_tbl(i_actn)
3497 , l_attribute1_tbl(i_actn)
3498 , l_attribute2_tbl(i_actn)
3499 , l_attribute3_tbl(i_actn)
3500 , l_attribute4_tbl(i_actn)
3501 , l_attribute5_tbl(i_actn)
3502 , l_attribute6_tbl(i_actn)
3503 , l_attribute7_tbl(i_actn)
3504 , l_attribute8_tbl(i_actn)
3505 , l_attribute9_tbl(i_actn)
3506 , l_attribute10_tbl(i_actn)
3507 , l_attribute11_tbl(i_actn)
3508 , l_attribute12_tbl(i_actn)
3509 , l_attribute13_tbl(i_actn)
3510 , l_attribute14_tbl(i_actn)
3511 , l_attribute15_tbl(i_actn)
3512 FROM pa_dlvr_actions_V
3513 where proj_element_id = p_action_in_tbl(i_actn).action_id;
3514 END IF; -- l_action= g_create
3515
3516 -- 3651542 if create mode , check action_owner_id and due_date is not passed
3517 -- set default owner id and due date to local variable
3518
3519 IF (l_action = g_create) THEN
3523
3520 IF p_action_in_tbl(i_actn).action_owner_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
3521 l_action_owner_id_tbl(i_actn) := l_default_owner_id;
3522 END IF;
3524 IF p_action_in_tbl(i_actn).due_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE THEN
3525 l_due_date_tbl(i_actn) := l_default_date;
3526 END IF;
3527 END IF;
3528
3529 -- 3749462 changes for financial top task and lowest chargeable task validation
3530
3531 l_fin_task_id := NULL;
3532 l_fin_task_ref := NULL;
3533
3534 -- if passed financial task id or reference is not passed , set it to null
3535
3536 IF ( p_action_in_tbl(i_actn).financial_task_id IS NOT NULL AND p_action_in_tbl(i_actn).financial_task_id <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM ) THEN
3537 l_fin_task_id := p_action_in_tbl(i_actn).financial_task_id;
3538 END IF;
3539
3540 IF ( p_action_in_tbl(i_actn).financial_task_reference IS NOT NULL AND p_action_in_tbl(i_actn).financial_task_reference <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR ) THEN
3541 l_fin_task_ref := p_action_in_tbl(i_actn).financial_task_reference;
3542 END IF;
3543
3544 -- if task reference / id is passed , validate passed reference with id
3545 -- if only reference is passed, retrieve id
3546
3547 IF ( l_fin_task_id IS NOT NULL OR l_fin_task_ref IS NOT NULL ) THEN
3548
3549 PA_PROJECT_PVT.Convert_pm_taskref_to_id_all (
3550 p_pa_project_id => l_project_id
3551 , p_structure_type => 'FINANCIAL'
3552 , p_pa_task_id => l_fin_task_id
3553 , p_pm_task_reference => l_fin_task_ref
3554 -- , p_out_task_id => l_fin_task_id * added for bug: 4537865
3555 , p_out_task_id => l_new_fin_task_id
3556 -- * added for bug: 4537865
3557 , p_return_status => x_return_status );
3558
3559 --added for bug: 4537865
3560 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
3561 l_fin_task_id := l_new_fin_task_id;
3562 END IF;
3563 --added for bug: 4537865
3564
3565 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3566 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3567 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
3568 RAISE FND_API.G_EXC_ERROR;
3569 END IF;
3570
3571 IF l_function_code_tbl(i_actn) IN ( 'SHIPPING' , 'PROCUREMENT') THEN
3572
3573 -- For Procurement / Shipping action , validate passed financial task should be lowest chargeable task
3574
3575 Open is_lowest_task (l_project_id,l_fin_task_id);
3576 Fetch is_lowest_task INTO l_fin_task_num_tbl(i_actn);
3577
3578 IF is_lowest_task%NOTFOUND THEN
3579 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3580 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DLVR_INVALID_LOW_FIN_TASK') ;
3581 PA_UTILS.ADD_MESSAGE
3582 (p_app_short_name => 'PA',
3583 p_msg_name => 'PA_ACTION_VALID_ERR',
3584 p_token1 => 'PROJECT',
3585 p_value1 => l_project_number,
3586 p_token2 => 'DLVR_REFERENCE',
3587 p_value2 => l_deliverable_number,
3588 p_token3 => 'ACTION_REFERENCE',
3589 p_value3 => l_pm_source_reference_tbl(i_actn),
3590 p_token4 => 'MESSAGE',
3591 p_value4 => l_err_message
3592 );
3593
3594 END IF;
3595 x_return_status := FND_API.G_RET_STS_ERROR;
3596
3597 RAISE FND_API.G_EXC_ERROR;
3598 ELSE
3599 l_fin_task_id_tbl(i_actn) := l_fin_task_id;
3600 END IF;
3601
3602 Close is_lowest_task;
3603
3604 ELSIF l_function_code_tbl(i_actn) IN ( 'BILLING') THEN
3605
3606 -- For Billing action , validate passed financial task should be top financial task
3607
3608 Open is_top_task (l_project_id,l_fin_task_id);
3609 Fetch is_top_task INTO l_fin_task_num_tbl(i_actn);
3610
3611 IF is_top_task%NOTFOUND THEN
3612 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3613 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DLVR_INVALID_TOP_FIN_TASK') ;
3614 PA_UTILS.ADD_MESSAGE
3615 (p_app_short_name => 'PA',
3616 p_msg_name => 'PA_ACTION_VALID_ERR',
3617 p_token1 => 'PROJECT',
3618 p_value1 => l_project_number,
3619 p_token2 => 'DLVR_REFERENCE',
3620 p_value2 => l_deliverable_number,
3621 p_token3 => 'ACTION_REFERENCE',
3622 p_value3 => l_pm_source_reference_tbl(i_actn),
3626
3623 p_token4 => 'MESSAGE',
3624 p_value4 => l_err_message
3625 );
3627 END IF;
3628 x_return_status := FND_API.G_RET_STS_ERROR;
3629
3630 RAISE FND_API.G_EXC_ERROR;
3631 ELSE
3632 l_fin_task_id_tbl(i_actn) := l_fin_task_id;
3633 END IF;
3634
3635 Close is_top_task;
3636
3637 END IF;
3638 ELSE
3639 l_fin_task_num_tbl(i_actn) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
3640 END IF;
3641
3642 -- for bug# 3749462
3643 -- create mode, completion date is null and comleted flag will become 'N'
3644 -- update mode, if comp date is passed, make completed flag 'Y'
3645 -- update mode, if action is complte and comp date is not passed, completed flag will retain value from the db
3646
3647 IF l_completion_date_tbl(i_actn) IS NOT NULL THEN
3648 l_completed_flag_tbl(i_actn) := 'Y';
3649 END IF;
3650
3651 i_actn := p_action_in_tbl.next(i_actn);
3652
3653 END LOOP;
3654
3655 IF p_debug_mode = 'Y' THEN
3656 pa_debug.write(g_module_name,'Populated action PLSQL table, calling api for bulk insert',3) ;
3657 END IF;
3658
3659 -- Invoke the API to create dlvr actions in bulk.
3660
3661 Pa_Actions_Pub.CR_UP_DLV_ACTIONS_IN_BULK (
3662 p_init_msg_list => p_init_msg_list
3663 ,p_commit => p_commit
3664 ,p_validate_only => FND_API.G_FALSE
3665 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3666 ,p_calling_module => 'AMG'
3667 ,p_debug_mode => p_debug_mode
3668 ,p_max_msg_count => NULL
3669 ,p_name_tbl => l_action_name_tbl
3670 ,p_manager_person_id_tbl => l_action_owner_id_tbl
3671 ,p_function_code_tbl => l_function_code_tbl
3672 ,p_due_date_tbl => l_due_date_tbl
3673 ,p_completed_flag_tbl => l_completed_flag_tbl
3674 ,p_completion_date_tbl => l_completion_date_tbl
3675 ,p_description_tbl => l_description_tbl
3676 ,p_element_version_id_tbl => l_element_version_id_tbl
3677 ,p_proj_element_id_tbl => l_proj_element_id_tbl
3678 ,p_user_action_tbl => l_user_action_tbl
3679 ,p_record_version_number_tbl => l_rec_ver_num_id_tbl
3680 ,p_attribute_category_tbl => l_attribute_category_tbl
3681 ,p_attribute1_tbl => l_attribute1_tbl
3682 ,p_attribute2_tbl => l_attribute2_tbl
3683 ,p_attribute3_tbl => l_attribute3_tbl
3684 ,p_attribute4_tbl => l_attribute4_tbl
3685 ,p_attribute5_tbl => l_attribute5_tbl
3686 ,p_attribute6_tbl => l_attribute6_tbl
3687 ,p_attribute7_tbl => l_attribute7_tbl
3688 ,p_attribute8_tbl => l_attribute8_tbl
3689 ,p_attribute9_tbl => l_attribute9_tbl
3690 ,p_attribute10_tbl => l_attribute10_tbl
3691 ,p_attribute11_tbl => l_attribute11_tbl
3692 ,p_attribute12_tbl => l_attribute12_tbl
3693 ,p_attribute13_tbl => l_attribute13_tbl
3694 ,p_attribute14_tbl => l_attribute14_tbl
3695 ,p_attribute15_tbl => l_attribute15_tbl
3696 ,p_project_id => l_project_id
3697 ,p_object_id => l_object_id
3698 ,p_object_version_id => l_object_version_id
3699 ,p_object_type => l_object_type
3700 ,p_pm_source_code => l_pm_source_code
3701 ,p_pm_source_reference => l_pm_source_reference
3702 ,p_pm_source_reference_tbl => l_pm_source_reference_tbl
3703 ,p_carrying_out_organization_id => l_carrying_out_organization_id
3704 ,p_insert_or_update => p_insert_or_update
3705 ,x_return_status => x_return_status
3706 ,x_msg_count => x_msg_count
3707 ,x_msg_data => x_msg_data);
3708
3709 IF p_debug_mode = 'Y' THEN
3710 pa_debug.write(g_module_name,'Returned from Pa_Actions_Pub.CR_UP_DLV_ACTIONS_IN_BULK ['||x_return_status||']',5);
3711 END IF;
3712
3713 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3714 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3715 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3716 RAISE FND_API.G_EXC_ERROR;
3717 END IF;
3718
3719 -- After successfull creation of actions, looping the action-in table and populating
3720 -- OKE and Billing PLSQL tables
3721
3722 i_actn := p_action_in_tbl.first();
3723
3724 WHILE i_actn IS NOT NULL LOOP
3725
3726 -- bug 7385017 skkoppul - default it to 'Y' as we are looping through
3727 l_update_oke_yn := 'Y';
3728
3729 -- Derive the action_id based on action reference in case of INSERT only.
3730 -- It is not required in case of UPDATE as action id will be passed as in parameter.
3731
3732 IF (p_insert_or_update = 'INSERT') THEN
3733
3737 ,p_action_id => null
3734 Pa_Deliverable_Utils.Convert_pm_actionref_to_id
3735 (
3736 p_action_reference => p_action_in_tbl(i_actn).pm_action_reference
3738 ,p_deliverable_id => l_object_id
3739 ,p_project_id => l_Project_id
3740 ,p_out_action_id => l_action_id
3741 ,p_return_status => x_return_status
3742 );
3743
3744 ELSE -- p_insert_or_update = 'INSERT'
3745
3746 -- bug 7385017 skkoppul - if action record is empty,
3747 -- OKE_AMG_GRP.manage_dlv_action should not be called so update the flag
3748 IF is_action_rec_empty_yn(p_action_in_tbl(i_actn),l_function_code_tbl(i_actn)) = 'Y' THEN
3749 l_update_oke_yn := 'N';
3750 END IF;
3751
3752 l_action_id := p_action_in_tbl(i_actn).action_id;
3753
3754 END IF; --p_insert_or_update = 'INSERT'
3755
3756 IF p_debug_mode = 'Y' THEN
3757 pa_debug.write(g_module_name,'Derived action id ['||l_action_id||']for reference['||p_action_in_tbl(i_actn).pm_action_reference||
3758 ']status['||x_return_status||']',5);
3759 END IF;
3760
3761 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3762 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3763 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3764 RAISE FND_API.G_EXC_ERROR;
3765 END IF;
3766
3767 IF p_debug_mode = 'Y' THEN
3768 pa_debug.write(g_module_name,'Should we update OKE attributes? '||l_update_oke_yn);
3769 END IF;
3770
3771 -- bug 7385017 skkoppul - Update only in case of changes to OKE attributes
3772 IF l_update_oke_yn = 'Y' THEN
3773
3774 -- 3651489 retrieving action's element version id
3775
3776 Open C_act_ver (l_action_id);
3777 Fetch C_act_ver INTO l_actn_version_id;
3778 Close C_act_ver;
3779
3780 -- Populating the OKE Procurement PLSQL table
3781
3782 -- 3729250, In update mode, if function is not passed, p_action_in_tbl(i_actn).function_code value is G_PA_MISS_CHAR
3783 -- and so below condition was failing and oke data was not getting updated
3784 -- changed from p_action_in_tbl(i_actn).function_code to l_function_code_tbl(i_actn)
3785 IF ( l_function_code_tbl(i_actn) = g_procurement) THEN
3786 i_proc := i_proc + 1;
3787
3788 IF (l_action = g_create) THEN -- added IF condition and else part of the code bug 3651139
3789 SELECT l_object_version_id
3790 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3791 , decode(p_action_in_tbl(i_actn).action_name ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).action_name )
3792 , decode(l_fin_task_id_tbl(i_actn) ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, l_fin_task_id_tbl(i_actn) ) -- for bug# 3749462
3793 , decode(p_action_in_tbl(i_actn).destination_type_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).destination_type_code )
3794 , decode(p_action_in_tbl(i_actn).receiving_org_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).receiving_org_id )
3795 , decode(p_action_in_tbl(i_actn).receiving_location_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).receiving_location_id )
3796 -- 3729250 , po_need_by_date should be populated with procurement action due date
3797 -- 3749462 changed from po_need_by_date to p_action_in_tbl(i_actn).due_date
3798 , l_due_date_tbl(i_actn) -- 3651542 Using local variable , if defaulting is done p_action_in_tbl(i_actn).due_date will not reflect it
3799 , decode(p_action_in_tbl(i_actn).vendor_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).vendor_id )
3800 , decode(p_action_in_tbl(i_actn).vendor_site_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).vendor_site_code )
3801 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).quantity )
3802 , decode(p_action_in_tbl(i_actn).unit_price ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).unit_price )
3803 , decode(p_action_in_tbl(i_actn).exchange_rate_type ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).exchange_rate_type )
3804 , decode(p_action_in_tbl(i_actn).exchange_rate_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , null, p_action_in_tbl(i_actn).exchange_rate_date )
3805 , decode(p_action_in_tbl(i_actn).exchange_rate ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).exchange_rate )
3806 , decode(p_action_in_tbl(i_actn).expenditure_type ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).expenditure_type )
3807 , decode(p_action_in_tbl(i_actn).expenditure_org_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).expenditure_org_id )
3808 , decode(p_action_in_tbl(i_actn).expenditure_item_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , null, p_action_in_tbl(i_actn).expenditure_item_date )
3812 , decode(p_action_in_tbl(i_actn).initiate_procure_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).initiate_procure_flag )
3809 , decode(p_action_in_tbl(i_actn).requisition_line_type_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).requisition_line_type_id )
3810 , decode(p_action_in_tbl(i_actn).category_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).category_id )
3811 , decode(p_action_in_tbl(i_actn).ready_to_procure_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).ready_to_procure_flag )
3813 , decode(p_action_in_tbl(i_actn).uom_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).uom_code )
3814 , decode(p_action_in_tbl(i_actn).currency ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).currency )
3815 INTO
3816 l_dlv_req_action_tbl(i_proc).pa_deliverable_id
3817 , l_dlv_req_action_tbl(i_proc).pa_action_id
3818 , l_dlv_req_action_tbl(i_proc).action_name
3819 , l_dlv_req_action_tbl(i_proc).proc_finnancial_task_id
3820 , l_dlv_req_action_tbl(i_proc).destination_type_code
3821 , l_dlv_req_action_tbl(i_proc).receiving_org_id
3822 , l_dlv_req_action_tbl(i_proc).receiving_location_id
3823 , l_dlv_req_action_tbl(i_proc).po_need_by_date
3824 , l_dlv_req_action_tbl(i_proc).vendor_id
3825 , l_dlv_req_action_tbl(i_proc).vendor_site_id
3826 , l_dlv_req_action_tbl(i_proc).quantity
3827 , l_dlv_req_action_tbl(i_proc).unit_price
3828 , l_dlv_req_action_tbl(i_proc).exchange_rate_type
3829 , l_dlv_req_action_tbl(i_proc).exchange_rate_date
3830 , l_dlv_req_action_tbl(i_proc).exchange_rate
3831 , l_dlv_req_action_tbl(i_proc).expenditure_type
3832 , l_dlv_req_action_tbl(i_proc).expenditure_org_id
3833 , l_dlv_req_action_tbl(i_proc).expenditure_item_date
3834 , l_dlv_req_action_tbl(i_proc).requisition_line_type_id
3835 , l_dlv_req_action_tbl(i_proc).category_id
3836 , l_dlv_req_action_tbl(i_proc).ready_to_procure_flag
3837 , l_dlv_req_action_tbl(i_proc).initiate_procure_flag
3838 , l_dlv_req_action_tbl(i_proc).uom_code
3839 , l_dlv_req_action_tbl(i_proc).currency
3840 FROM DUAL;
3841
3842 ELSE -- UPDATE
3843
3844 SELECT l_object_version_id
3845 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3846 , decode(p_action_in_tbl(i_actn).action_name ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , action_name , p_action_in_tbl(i_actn).action_name )
3847 , decode(l_fin_task_id_tbl(i_actn) ,NULL , task_id , l_fin_task_id_tbl(i_actn) ) -- for bug# 3749462
3848 , decode(p_action_in_tbl(i_actn).destination_type_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , destination_type_code , p_action_in_tbl(i_actn).destination_type_code )
3849 , decode(p_action_in_tbl(i_actn).receiving_org_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , ship_to_org_id , p_action_in_tbl(i_actn).receiving_org_id )
3850 , decode(p_action_in_tbl(i_actn).receiving_location_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , ship_to_location_id , p_action_in_tbl(i_actn).receiving_location_id )
3851 -- 3729250 , po_need_by_date should be populated with procurement action due date
3852 -- 3749462 changed from po_need_by_date to l_due_date_tbl(i_actn)
3853 , l_due_date_tbl(i_actn)
3854 , decode(p_action_in_tbl(i_actn).vendor_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , ship_from_org_id , p_action_in_tbl(i_actn).vendor_id )
3855 , decode(p_action_in_tbl(i_actn).vendor_site_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , ship_from_location_id , p_action_in_tbl(i_actn).vendor_site_code )
3856 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , quantity , p_action_in_tbl(i_actn).quantity )
3857 , decode(p_action_in_tbl(i_actn).unit_price ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , unit_price , p_action_in_tbl(i_actn).unit_price )
3858 , decode(p_action_in_tbl(i_actn).exchange_rate_type ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , rate_type , p_action_in_tbl(i_actn).exchange_rate_type )
3859 , decode(p_action_in_tbl(i_actn).exchange_rate_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , rate_date , p_action_in_tbl(i_actn).exchange_rate_date )
3860 , decode(p_action_in_tbl(i_actn).exchange_rate ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , exchange_rate , p_action_in_tbl(i_actn).exchange_rate )
3861 , decode(p_action_in_tbl(i_actn).expenditure_type ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , expenditure_type , p_action_in_tbl(i_actn).expenditure_type )
3862 , decode(p_action_in_tbl(i_actn).expenditure_org_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , expenditure_organization_id, p_action_in_tbl(i_actn).expenditure_org_id )
3866 , decode(p_action_in_tbl(i_actn).ready_to_procure_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null , p_action_in_tbl(i_actn).ready_to_procure_flag )
3863 , decode(p_action_in_tbl(i_actn).expenditure_item_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , expenditure_item_date , p_action_in_tbl(i_actn).expenditure_item_date )
3864 , decode(p_action_in_tbl(i_actn).requisition_line_type_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , requisition_line_type_id, p_action_in_tbl(i_actn).requisition_line_type_id )
3865 , decode(p_action_in_tbl(i_actn).category_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , po_category_id , p_action_in_tbl(i_actn).category_id )
3867 , decode(p_action_in_tbl(i_actn).initiate_procure_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null , p_action_in_tbl(i_actn).initiate_procure_flag )
3868 , decode(p_action_in_tbl(i_actn).uom_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , uom_code , p_action_in_tbl(i_actn).uom_code )
3869 , decode(p_action_in_tbl(i_actn).currency ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , currency_code , p_action_in_tbl(i_actn).currency )
3870 INTO
3871 l_dlv_req_action_tbl(i_proc).pa_deliverable_id
3872 , l_dlv_req_action_tbl(i_proc).pa_action_id
3873 , l_dlv_req_action_tbl(i_proc).action_name
3874 , l_dlv_req_action_tbl(i_proc).proc_finnancial_task_id
3875 , l_dlv_req_action_tbl(i_proc).destination_type_code
3876 , l_dlv_req_action_tbl(i_proc).receiving_org_id
3877 , l_dlv_req_action_tbl(i_proc).receiving_location_id
3878 , l_dlv_req_action_tbl(i_proc).po_need_by_date
3879 , l_dlv_req_action_tbl(i_proc).vendor_id
3880 , l_dlv_req_action_tbl(i_proc).vendor_site_id
3881 , l_dlv_req_action_tbl(i_proc).quantity
3882 , l_dlv_req_action_tbl(i_proc).unit_price
3883 , l_dlv_req_action_tbl(i_proc).exchange_rate_type
3884 , l_dlv_req_action_tbl(i_proc).exchange_rate_date
3885 , l_dlv_req_action_tbl(i_proc).exchange_rate
3886 , l_dlv_req_action_tbl(i_proc).expenditure_type
3887 , l_dlv_req_action_tbl(i_proc).expenditure_org_id
3888 , l_dlv_req_action_tbl(i_proc).expenditure_item_date
3889 , l_dlv_req_action_tbl(i_proc).requisition_line_type_id
3890 , l_dlv_req_action_tbl(i_proc).category_id
3891 , l_dlv_req_action_tbl(i_proc).ready_to_procure_flag
3892 , l_dlv_req_action_tbl(i_proc).initiate_procure_flag
3893 , l_dlv_req_action_tbl(i_proc).uom_code
3894 , l_dlv_req_action_tbl(i_proc).currency
3895 FROM oke_deliverable_actions_v
3896 WHERE pa_action_id = l_actn_version_id;
3897
3898 END IF; -- l_action= g_create
3899
3900 IF p_debug_mode = 'Y' THEN
3901 pa_debug.write(g_module_name,'Populated OKE Procurement PLSQL table',3) ;
3902 END IF;
3903
3904 -- 3729250, In update mode, if function is not passed, p_action_in_tbl(i_actn).function_code value is G_PA_MISS_CHAR
3905 -- and so below condition was failing and oke data was not getting updated
3906 -- changed from p_action_in_tbl(i_actn).function_code to l_function_code_tbl(i_actn)
3907
3908 ELSIF ( l_function_code_tbl(i_actn) = g_shipping) THEN
3909 -- Populating the OKE Shipping PLSQL table
3910 i_ship := i_ship + 1;
3911
3912 IF (l_action = g_create) THEN -- added IF condition and else part of the code bug 3651139
3913 SELECT l_object_version_id
3914 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3915 , decode(p_action_in_tbl(i_actn).action_name ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).action_name )
3916 , decode(l_fin_task_id_tbl(i_actn) ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, l_fin_task_id_tbl(i_actn) ) -- for bug# 3749462
3917 , decode(p_action_in_tbl(i_actn).demand_schedule ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).demand_schedule )
3918 , decode(p_action_in_tbl(i_actn).ship_from_organization_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).ship_from_organization_id )
3919 , decode(p_action_in_tbl(i_actn).ship_from_location_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).ship_from_location_id )
3920 , decode(p_action_in_tbl(i_actn).ship_to_organization_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).ship_to_organization_id )
3921 , decode(p_action_in_tbl(i_actn).ship_to_location_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).ship_to_location_id )
3922 , decode(p_action_in_tbl(i_actn).promised_shipment_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , null, p_action_in_tbl(i_actn).promised_shipment_date )
3923 -- 3729250 , expected_shipment_date should be populated with shipping action due date
3924 -- 3749462 , changed from p_action_in_tbl(i_actn).expected_shipment_date to p_action_in_tbl(i_actn).due_date
3925 , l_due_date_tbl(i_actn) -- 3651542 Using local variable , if defaulting is done p_action_in_tbl(i_actn).due_date will not reflect it
3929 , decode(p_action_in_tbl(i_actn).weight_uom ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).weight_uom )
3926 , decode(p_action_in_tbl(i_actn).volume ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).volume )
3927 , decode(p_action_in_tbl(i_actn).volume_uom ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).volume_uom )
3928 , decode(p_action_in_tbl(i_actn).weight ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).weight )
3930 , decode(p_action_in_tbl(i_actn).ready_to_ship_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).ready_to_ship_flag )
3931 , decode(p_action_in_tbl(i_actn).initiate_planning_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).initiate_planning_flag )
3932 , decode(p_action_in_tbl(i_actn).initiate_shipping_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).initiate_shipping_flag )
3933 , decode(p_action_in_tbl(i_actn).uom_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).uom_code )
3934 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).quantity )
3935 INTO
3936 l_dlv_ship_action_tbl(i_ship).pa_deliverable_id
3937 , l_dlv_ship_action_tbl(i_ship).pa_action_id
3938 , l_dlv_ship_action_tbl(i_ship).action_name
3939 , l_dlv_ship_action_tbl(i_ship).ship_finnancial_task_id
3940 , l_dlv_ship_action_tbl(i_ship).demand_schedule
3941 , l_dlv_ship_action_tbl(i_ship).ship_from_organization_id
3942 , l_dlv_ship_action_tbl(i_ship).ship_from_location_id
3943 , l_dlv_ship_action_tbl(i_ship).ship_to_organization_id
3944 , l_dlv_ship_action_tbl(i_ship).ship_to_location_id
3945 , l_dlv_ship_action_tbl(i_ship).promised_shipment_date
3946 , l_dlv_ship_action_tbl(i_ship).expected_shipment_date
3947 , l_dlv_ship_action_tbl(i_ship).volume
3948 , l_dlv_ship_action_tbl(i_ship).volume_uom
3949 , l_dlv_ship_action_tbl(i_ship).weight
3950 , l_dlv_ship_action_tbl(i_ship).weight_uom
3951 , l_dlv_ship_action_tbl(i_ship).ready_to_ship_flag
3952 , l_dlv_ship_action_tbl(i_ship).initiate_planning_flag
3953 , l_dlv_ship_action_tbl(i_ship).initiate_shipping_flag
3954 , l_dlv_ship_action_tbl(i_ship).uom_code
3955 , l_dlv_ship_action_tbl(i_ship).quantity
3956 FROM DUAL;
3957
3958 ELSE -- UPDATE
3959 SELECT l_object_version_id
3960 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3961 , decode(p_action_in_tbl(i_actn).action_name ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , action_name , p_action_in_tbl(i_actn).action_name )
3962 , decode(l_fin_task_id_tbl(i_actn) ,NULL , task_id , l_fin_task_id_tbl(i_actn) ) -- for bug# 3749462
3963 , decode(p_action_in_tbl(i_actn).demand_schedule ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , schedule_designator , p_action_in_tbl(i_actn).demand_schedule )
3964 , decode(p_action_in_tbl(i_actn).ship_from_organization_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , ship_from_org_id , p_action_in_tbl(i_actn).ship_from_organization_id )
3965 , decode(p_action_in_tbl(i_actn).ship_from_location_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , ship_from_location_id , p_action_in_tbl(i_actn).ship_from_location_id )
3966 , decode(p_action_in_tbl(i_actn).ship_to_organization_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , ship_to_org_id , p_action_in_tbl(i_actn).ship_to_organization_id )
3967 , decode(p_action_in_tbl(i_actn).ship_to_location_id ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , ship_to_location_id , p_action_in_tbl(i_actn).ship_to_location_id )
3968 , decode(p_action_in_tbl(i_actn).promised_shipment_date ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE , promised_date , p_action_in_tbl(i_actn).promised_shipment_date )
3969 -- 3729250 , expected_shipment_date should be populated with shipping action due date
3970 -- 3749462 , changed from p_action_in_tbl(i_actn).expected_shipment_date to l_due_date_tbl(i_actn)
3971 , l_due_date_tbl(i_actn)
3972 , decode(p_action_in_tbl(i_actn).volume ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , volume , p_action_in_tbl(i_actn).volume )
3973 , decode(p_action_in_tbl(i_actn).volume_uom ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , volume_uom_code , p_action_in_tbl(i_actn).volume_uom )
3974 , decode(p_action_in_tbl(i_actn).weight ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , weight , p_action_in_tbl(i_actn).weight )
3975 , decode(p_action_in_tbl(i_actn).weight_uom ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , weight_uom_code , p_action_in_tbl(i_actn).weight_uom )
3976 , decode(p_action_in_tbl(i_actn).ready_to_ship_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , ready_flag , p_action_in_tbl(i_actn).ready_to_ship_flag )
3977 , decode(p_action_in_tbl(i_actn).initiate_planning_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null , p_action_in_tbl(i_actn).initiate_planning_flag )
3981 INTO
3978 , decode(p_action_in_tbl(i_actn).initiate_shipping_flag ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null , p_action_in_tbl(i_actn).initiate_shipping_flag )
3979 , decode(p_action_in_tbl(i_actn).uom_code ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , uom_code , p_action_in_tbl(i_actn).uom_code )
3980 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , quantity , p_action_in_tbl(i_actn).quantity )
3982 l_dlv_ship_action_tbl(i_ship).pa_deliverable_id
3983 , l_dlv_ship_action_tbl(i_ship).pa_action_id
3984 , l_dlv_ship_action_tbl(i_ship).action_name
3985 , l_dlv_ship_action_tbl(i_ship).ship_finnancial_task_id
3986 , l_dlv_ship_action_tbl(i_ship).demand_schedule
3987 , l_dlv_ship_action_tbl(i_ship).ship_from_organization_id
3988 , l_dlv_ship_action_tbl(i_ship).ship_from_location_id
3989 , l_dlv_ship_action_tbl(i_ship).ship_to_organization_id
3990 , l_dlv_ship_action_tbl(i_ship).ship_to_location_id
3991 , l_dlv_ship_action_tbl(i_ship).promised_shipment_date
3992 , l_dlv_ship_action_tbl(i_ship).expected_shipment_date
3993 , l_dlv_ship_action_tbl(i_ship).volume
3994 , l_dlv_ship_action_tbl(i_ship).volume_uom
3995 , l_dlv_ship_action_tbl(i_ship).weight
3996 , l_dlv_ship_action_tbl(i_ship).weight_uom
3997 , l_dlv_ship_action_tbl(i_ship).ready_to_ship_flag
3998 , l_dlv_ship_action_tbl(i_ship).initiate_planning_flag
3999 , l_dlv_ship_action_tbl(i_ship).initiate_shipping_flag
4000 , l_dlv_ship_action_tbl(i_ship).uom_code
4001 , l_dlv_ship_action_tbl(i_ship).quantity
4002 FROM oke_deliverable_actions_v
4003 WHERE pa_action_id = l_actn_version_id;
4004
4005 END IF; -- l_action= g_create
4006
4007 /* INSPECTION_REQ_FLAG Varchar2(1),*/
4008
4009 IF p_debug_mode = 'Y' THEN
4010 pa_debug.write(g_module_name,'Populated OKE Shipping PLSQL table',3) ;
4011 END IF;
4012
4013 -- 3729250, In update mode, if function is not passed, p_action_in_tbl(i_actn).function_code value is G_PA_MISS_CHAR
4014 -- and so below condition was failing and oke data was not getting updated
4015 -- changed from p_action_in_tbl(i_actn).function_code to l_function_code_tbl(i_actn)
4016 ELSIF ( l_function_code_tbl(i_actn) = g_billing) THEN
4017
4018 -- 4027500 Passing l_organization_name as PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR if update mode and p_organization_id
4019 -- is not passed
4020 -- else call C_org_name to derive organization_name from id
4021 IF p_insert_or_update = g_update AND p_action_in_tbl(i_actn).organization_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
4022 l_organization_name := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
4023 ELSE
4024 OPEN C_org_name(p_action_in_tbl(i_actn).organization_id);
4025 FETCH C_org_name INTO l_organization_name;
4026 IF (C_org_name%rowcount = 0 ) THEN
4027 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_INVALID_EVNT_ORG_AMG') ; -- 3810957, changed error msg code
4028 PA_UTILS.ADD_MESSAGE
4029 (p_app_short_name => 'PA',
4030 p_msg_name => 'PA_ACTN_VALID_ERR',
4031 p_token1 => 'PROJECT',
4032 p_value1 => l_project_number,
4033 p_token2 => 'DLVR_REFERENCE',
4034 p_value2 => l_deliverable_number,
4035 p_token3 => 'MESSAGE',
4036 p_value3 => l_err_message
4037 );
4038 x_return_status := FND_API.G_RET_STS_ERROR;
4039 CLOSE C_org_name;
4040
4041 -- Added for bug# 3810957 , throwing invalid cursor error
4042 -- here, C_org_name cursor was closed and second time closing it was throwing above error
4043 -- if invalid event org id , set return status to 'E' , close the cursor and raise FND_API.G_EXC_ERROR exception
4044 RAISE FND_API.G_EXC_ERROR;
4045 -- 3810957 end
4046 END IF;
4047 CLOSE C_org_name;
4048 END IF;
4049
4050 IF p_debug_mode = 'Y' THEN
4051 pa_debug.write(g_module_name,'Organization name derived ['||l_organization_name||']',3) ;
4052 END IF;
4053
4054
4055 -- Populating the Billing Event PLSQL table
4056 i_bill := i_bill + 1;
4057
4058 l_event_in_tbl(i_bill).p_pm_event_reference := p_action_in_tbl(i_actn).pm_event_reference ; -- 3651489 changed from action_ref to event_ref
4059 l_event_in_tbl(i_bill).p_task_number := l_fin_task_num_tbl(i_actn) ; -- 3749462 passing task num, earlier was passed as null
4060 l_event_in_tbl(i_bill).p_event_number := null ;
4061 l_event_in_tbl(i_bill).p_event_type := p_action_in_tbl(i_actn).event_type ;
4062 l_event_in_tbl(i_bill).p_description := p_action_in_tbl(i_actn).description ;
4066 l_event_in_tbl(i_bill).p_organization_name := l_organization_name ;
4063 l_event_in_tbl(i_bill).p_bill_hold_flag := p_action_in_tbl(i_actn).bill_hold_flag ;
4064 l_event_in_tbl(i_bill).p_completion_date := l_completion_date_tbl(i_actn) ; -- 3749462 , create mode event date can't be set
4065 l_event_in_tbl(i_bill).p_project_number := l_project_number ;
4067 l_event_in_tbl(i_bill).p_inventory_org_name := null ;
4068 l_event_in_tbl(i_bill).p_inventory_item_id := null ;
4069 l_event_in_tbl(i_bill).p_quantity_billed := p_action_in_tbl(i_actn).quantity ;
4070 l_event_in_tbl(i_bill).p_uom_code := p_action_in_tbl(i_actn).uom_code ;
4071 l_event_in_tbl(i_bill).p_unit_price := p_action_in_tbl(i_actn).unit_price ;
4072 l_event_in_tbl(i_bill).p_bill_trans_currency_code := p_action_in_tbl(i_actn).currency ;
4073 l_event_in_tbl(i_bill).p_bill_trans_bill_amount:= p_action_in_tbl(i_actn).invoice_amount ;
4074 l_event_in_tbl(i_bill).p_bill_trans_rev_amount := p_action_in_tbl(i_actn).revenue_amount ;
4075 l_event_in_tbl(i_bill).p_project_rate_type := p_action_in_tbl(i_actn).project_rate_type ;
4076 l_event_in_tbl(i_bill).p_project_rate_date := p_action_in_tbl(i_actn).project_rate_date ;
4077 l_event_in_tbl(i_bill).p_project_exchange_rate := p_action_in_tbl(i_actn).project_rate ;
4078 l_event_in_tbl(i_bill).p_projfunc_rate_type := p_action_in_tbl(i_actn).project_functional_rate_type;
4079 l_event_in_tbl(i_bill).p_projfunc_rate_date := p_action_in_tbl(i_actn).project_functional_rate_date;
4080 l_event_in_tbl(i_bill).p_projfunc_exchange_rate:= p_action_in_tbl(i_actn).project_functional_rate ;
4081 l_event_in_tbl(i_bill).p_funding_rate_type := p_action_in_tbl(i_actn).funding_rate_type ;
4082 l_event_in_tbl(i_bill).p_funding_rate_date := p_action_in_tbl(i_actn).funding_rate_date ;
4083 l_event_in_tbl(i_bill).p_funding_exchange_rate := p_action_in_tbl(i_actn).funding_rate ;
4084 l_event_in_tbl(i_bill).p_adjusting_revenue_flag:= null ;
4085 l_event_in_tbl(i_bill).p_event_id := NULL ;
4086 -- 3651489 changed from deliverable proj element id to version id, as element version id should be passed to billing
4087 l_event_in_tbl(i_bill).p_deliverable_id := l_object_version_id ;
4088 -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
4089 l_event_in_tbl(i_bill).p_action_id := l_actn_version_id ;
4090 l_event_in_tbl(i_bill).p_context := 'D' ;-- to be passed as 'D' for deliverable action event
4091 l_event_in_tbl(i_bill).p_record_version_number := 1 ;
4092
4093 IF p_debug_mode = 'Y' THEN
4094 pa_debug.write(g_module_name,'Populated Billing PLSQL table',3) ;
4095 END IF;
4096 ELSE
4097 i_none := i_none + 1;
4098
4099 IF p_debug_mode = 'Y' THEN
4100 pa_debug.write(g_module_name,'Function code is NONE',3) ;
4101 END IF;
4102 END IF;
4103
4104 END IF;
4105 i_actn := p_action_in_tbl.next(i_actn);
4106
4107 END LOOP; -- i_act is not null
4108
4109 IF p_debug_mode = 'Y' THEN
4110 pa_debug.write(g_module_name,'action processed ['||i_actn||']bill['||i_bill||']proc['||i_proc||']ship['||i_ship||']none['||i_none||']',5);
4111 END IF;
4112
4113 -- Invoke the API to create records in OKE tables
4114 IF ( i_ship > 0) THEN
4115
4116 i_ship1 := l_dlv_ship_action_tbl.first();
4117
4118 WHILE (i_ship1 IS NOT NULL) LOOP
4119
4120 l_dlv_ship_action_rec.pa_deliverable_id := l_dlv_ship_action_tbl(i_ship1).pa_deliverable_id ;
4121 l_dlv_ship_action_rec.pa_action_id := l_dlv_ship_action_tbl(i_ship1).pa_action_id ;
4122 l_dlv_ship_action_rec.action_name := l_dlv_ship_action_tbl(i_ship1).action_name ;
4123 l_dlv_ship_action_rec.ship_finnancial_task_id := l_dlv_ship_action_tbl(i_ship1).ship_finnancial_task_id ;
4124 l_dlv_ship_action_rec.demand_schedule := l_dlv_ship_action_tbl(i_ship1).demand_schedule ;
4125 l_dlv_ship_action_rec.ship_from_organization_id := l_dlv_ship_action_tbl(i_ship1).ship_from_organization_id;
4126 l_dlv_ship_action_rec.ship_from_location_id := l_dlv_ship_action_tbl(i_ship1).ship_from_location_id ;
4127 l_dlv_ship_action_rec.ship_to_organization_id := l_dlv_ship_action_tbl(i_ship1).ship_to_organization_id ;
4128 l_dlv_ship_action_rec.ship_to_location_id := l_dlv_ship_action_tbl(i_ship1).ship_to_location_id ;
4129 l_dlv_ship_action_rec.promised_shipment_date := l_dlv_ship_action_tbl(i_ship1).promised_shipment_date ;
4130 l_dlv_ship_action_rec.volume := l_dlv_ship_action_tbl(i_ship1).volume ;
4131 l_dlv_ship_action_rec.volume_uom := l_dlv_ship_action_tbl(i_ship1).volume_uom ;
4132 l_dlv_ship_action_rec.weight := l_dlv_ship_action_tbl(i_ship1).weight ;
4136 l_dlv_ship_action_rec.initiate_shipping_flag := l_dlv_ship_action_tbl(i_ship1).initiate_shipping_flag ;
4133 l_dlv_ship_action_rec.weight_uom := l_dlv_ship_action_tbl(i_ship1).weight_uom ;
4134 l_dlv_ship_action_rec.ready_to_ship_flag := l_dlv_ship_action_tbl(i_ship1).ready_to_ship_flag ;
4135 l_dlv_ship_action_rec.initiate_planning_flag := l_dlv_ship_action_tbl(i_ship1).initiate_planning_flag ;
4137 l_dlv_ship_action_rec.expected_shipment_date := l_dlv_ship_action_tbl(i_ship1).expected_shipment_date ;
4138 l_dlv_ship_action_rec.uom_code := l_dlv_ship_action_tbl(i_ship1).uom_code ;
4139 l_dlv_ship_action_rec.quantity := l_dlv_ship_action_tbl(i_ship1).quantity ;
4140
4141 oke_amg_grp.manage_dlv_action
4142 ( p_api_version => p_api_version
4143 , p_init_msg_list => FND_API.G_FALSE
4144 , p_commit => p_commit
4145 , p_action => l_action
4146 , p_dlv_action_type => g_dlv_action_ship
4147 , p_master_inv_org_id => l_org_id
4148 , p_item_dlv => l_item_dlv
4149 , p_dlv_ship_action_rec => l_dlv_ship_action_rec
4150 , p_dlv_req_action_rec => l_dlv_req_action_rec_b
4151 , x_return_status => x_return_status
4152 , x_msg_data => x_msg_data
4153 , x_msg_count => x_msg_count
4154 );
4155
4156 IF p_debug_mode = 'Y' THEN
4157 pa_debug.write(g_module_name,'Returned from oke_amg_grp.manage_dlv_action for shipping action ['||x_return_status||']',5);
4158 END IF;
4159
4160 i_ship1 := l_dlv_ship_action_tbl.next(i_ship1);
4161
4162 END LOOP;
4163
4164 END IF;
4165
4166 IF ( i_proc > 0 ) THEN
4167
4168 i_proc1 := l_dlv_req_action_tbl.first();
4169
4170 WHILE (i_proc1 IS NOT NULL) LOOP
4171
4172 l_dlv_req_action_rec.pa_deliverable_id := l_dlv_req_action_tbl(i_proc1).pa_deliverable_id ;
4173 l_dlv_req_action_rec.pa_action_id := l_dlv_req_action_tbl(i_proc1).pa_action_id ;
4174 l_dlv_req_action_rec.action_name := l_dlv_req_action_tbl(i_proc1).action_name ;
4175 l_dlv_req_action_rec.proc_finnancial_task_id := l_dlv_req_action_tbl(i_proc1).proc_finnancial_task_id ;
4176 l_dlv_req_action_rec.destination_type_code := l_dlv_req_action_tbl(i_proc1).destination_type_code ;
4177 l_dlv_req_action_rec.receiving_org_id := l_dlv_req_action_tbl(i_proc1).receiving_org_id ;
4178 l_dlv_req_action_rec.receiving_location_id := l_dlv_req_action_tbl(i_proc1).receiving_location_id ;
4179 l_dlv_req_action_rec.po_need_by_date := l_dlv_req_action_tbl(i_proc1).po_need_by_date ;
4180 l_dlv_req_action_rec.vendor_id := l_dlv_req_action_tbl(i_proc1).vendor_id ;
4181 l_dlv_req_action_rec.vendor_site_id := l_dlv_req_action_tbl(i_proc1).vendor_site_id ;
4182 -- l_dlv_req_action_rec.project_currency := l_dlv_req_action_tbl(i_proc1).project_currency ;
4183 l_dlv_req_action_rec.quantity := l_dlv_req_action_tbl(i_proc1).quantity ;
4184 l_dlv_req_action_rec.unit_price := l_dlv_req_action_tbl(i_proc1).unit_price ;
4185 l_dlv_req_action_rec.exchange_rate_type := l_dlv_req_action_tbl(i_proc1).exchange_rate_type ;
4186 l_dlv_req_action_rec.exchange_rate_date := l_dlv_req_action_tbl(i_proc1).exchange_rate_date ;
4187 l_dlv_req_action_rec.exchange_rate := l_dlv_req_action_tbl(i_proc1).exchange_rate ;
4188 l_dlv_req_action_rec.expenditure_type := l_dlv_req_action_tbl(i_proc1).expenditure_type ;
4189 l_dlv_req_action_rec.expenditure_org_id := l_dlv_req_action_tbl(i_proc1).expenditure_org_id ;
4190 l_dlv_req_action_rec.expenditure_item_date := l_dlv_req_action_tbl(i_proc1).expenditure_item_date ;
4191 l_dlv_req_action_rec.requisition_line_type_id := l_dlv_req_action_tbl(i_proc1).requisition_line_type_id ;
4192 l_dlv_req_action_rec.category_id := l_dlv_req_action_tbl(i_proc1).category_id ;
4193 l_dlv_req_action_rec.ready_to_procure_flag := l_dlv_req_action_tbl(i_proc1).ready_to_procure_flag ;
4194 l_dlv_req_action_rec.initiate_procure_flag := l_dlv_req_action_tbl(i_proc1).initiate_procure_flag ;
4195 l_dlv_req_action_rec.uom_code := l_dlv_req_action_tbl(i_proc1).uom_code ;
4196 l_dlv_req_action_rec.currency := l_dlv_req_action_tbl(i_proc1).currency ;
4197
4198 oke_amg_grp.manage_dlv_action
4199 ( p_api_version => p_api_version
4200 , p_init_msg_list => FND_API.G_FALSE
4201 , p_commit => p_commit
4202 , p_action => l_action
4203 , p_dlv_action_type => g_dlv_action_proc
4204 , p_master_inv_org_id => l_org_id
4205 , p_item_dlv => l_item_dlv
4206 , p_dlv_ship_action_rec => l_dlv_ship_action_rec_b
4207 , p_dlv_req_action_rec => l_dlv_req_action_rec
4208 , x_return_status => x_return_status
4209 , x_msg_data => x_msg_data
4210 , x_msg_count => x_msg_count
4214 pa_debug.write(g_module_name,'Returned from oke_amg_grp.manage_dlv_action for proc action ['||x_return_status||']',5);
4211 );
4212
4213 IF p_debug_mode = 'Y' THEN
4215 END IF;
4216
4217 i_proc1 := l_dlv_req_action_tbl.next(i_proc1);
4218
4219 END LOOP;
4220
4221 END IF;
4222
4223 -- Invoke the API to create event for billing actions
4224 IF ( i_bill > 0 ) THEN
4225 IF ( p_insert_or_update = g_insert) THEN
4226
4227 Pa_Event_Pub.create_event
4228 ( p_api_version_number => p_api_version
4229 ,p_commit => p_commit
4230 ,p_init_msg_list => FND_API.G_FALSE
4231 ,p_pm_product_code => l_pm_source_code
4232 ,p_event_in_tbl => l_event_in_tbl
4233 ,p_event_out_tbl => l_event_out_tbl
4234 ,p_msg_count => x_msg_count
4235 ,p_msg_data => x_msg_data
4236 ,p_return_status => x_return_status
4237 );
4238
4239 IF p_debug_mode = 'Y' THEN
4240 pa_debug.write(g_module_name,'Returned from Pa_Event_Pub.create_event for billing action ['||x_return_status||']',5);
4241 END IF;
4242
4243 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4244 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4245 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4246 RAISE FND_API.G_EXC_ERROR;
4247 END IF;
4248
4249 ELSIF ( p_insert_or_update = g_update) THEN
4250
4251 Pa_Event_Pub.Update_Event
4252 ( p_api_version_number => p_api_version
4253 , p_commit => p_commit
4254 , p_init_msg_list => FND_API.G_FALSE
4255 , p_pm_product_code => l_pm_source_code
4256 , p_event_in_tbl => l_event_in_tbl
4257 , p_event_out_tbl => l_event_out_tbl
4258 , p_msg_count => x_msg_count
4259 , p_msg_data => x_msg_data
4260 , p_return_status => x_return_status
4261 );
4262
4263 IF p_debug_mode = 'Y' THEN
4264 pa_debug.write(g_module_name,'Returned from Pa_Event_Pub.update_event for billing action ['||x_return_status||']',5);
4265 END IF;
4266
4267 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4268 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4269 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4270 RAISE FND_API.G_EXC_ERROR;
4271 END IF;
4272
4273 END IF; -- p_insert_or_update values
4274 END IF; -- i_bill > 0
4275
4276 IF p_debug_mode = 'Y' THEN
4277 pa_debug.reset_curr_function;
4278 pa_debug.write(g_module_name,l_api_name||': Exiting without error',5);
4279 END IF;
4280
4281 EXCEPTION
4282 WHEN FND_API.G_EXC_ERROR THEN
4283 IF (p_commit = FND_API.G_TRUE) THEN
4284 ROLLBACK TO create_dlvr_actions_wrapper;
4285 END IF;
4286 x_return_status := FND_API.G_RET_STS_ERROR;
4287 l_msg_count := FND_MSG_PUB.count_msg;
4288
4289 IF l_msg_count = 1 AND x_msg_data IS NULL
4290 THEN
4291 PA_INTERFACE_UTILS_PUB.get_messages
4292 (p_encoded => FND_API.G_FALSE,
4293 p_msg_index => 1,
4294 p_msg_count => x_msg_count,
4295 p_msg_data => l_msg_data,
4296 p_data => l_data,
4297 p_msg_index_out => l_msg_index_out);
4298
4299 x_msg_data := l_data;
4300 x_msg_count := l_msg_count;
4301 ELSE
4302 x_msg_count := l_msg_count;
4303
4304 END IF;
4305
4306 IF p_debug_mode = 'Y' THEN
4307 pa_debug.reset_curr_function;
4308 pa_debug.write(g_module_name,l_api_name||': Inside G_EXC_ERROR exception',5);
4309 END IF;
4310
4311 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4312 IF (p_commit = FND_API.G_TRUE) THEN
4313 ROLLBACK TO create_dlvr_actions_wrapper;
4314 END IF;
4315 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4316 l_msg_count := FND_MSG_PUB.count_msg;
4317
4318 IF l_msg_count = 1 AND x_msg_data IS NULL
4319 THEN
4320 PA_INTERFACE_UTILS_PUB.get_messages
4321 (p_encoded => FND_API.G_FALSE,
4322 p_msg_index => 1,
4323 p_msg_count => x_msg_count,
4324 p_msg_data => l_msg_data,
4325 p_data => l_data,
4326 p_msg_index_out => l_msg_index_out);
4327
4328 x_msg_data := l_data;
4329 x_msg_count := l_msg_count;
4330 ELSE
4331 x_msg_count := l_msg_count;
4332
4333 END IF;
4334
4335 IF p_debug_mode = 'Y' THEN
4336 pa_debug.reset_curr_function;
4337 pa_debug.write(g_module_name,l_api_name||': Inside G_EXC_UNEXPECTED_ERROR exception',5);
4338 END IF;
4339
4340 WHEN OTHERS THEN
4341 IF (p_commit = FND_API.G_TRUE) THEN
4342 ROLLBACK TO create_dlvr_actions_wrapper;
4343 END IF;
4344 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4345 x_msg_count := 1;
4346 x_msg_data := SQLERRM;
4347
4348 IF p_debug_mode = 'Y' THEN
4352 END IF;
4349 pa_debug.g_err_stage:=l_api_name||': Unexpected Error'||SQLERRM;
4350 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
4351 pa_debug.reset_curr_function;
4353
4354
4355 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4356 FND_MSG_PUB.add_exc_msg
4357 ( p_pkg_name => G_PKG_NAME
4358 , p_procedure_name => l_api_name );
4359 END IF;
4360 END Create_Dlvr_Actions_Wrapper;
4361 -------3435905 : FP M : Deliverables Changes For AMG -END--------------------
4362
4363 PROCEDURE RUN_ACTION_CONC_PROCESS
4364 (
4365 errbuf OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4366 ,retcode OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4367 ,p_function IN pa_lookups.lookup_code%TYPE
4368 ,p_project_number_from IN pa_projects_all.segment1%TYPE := NULL
4369 ,p_project_number_to IN pa_projects_all.segment1%TYPE := NULL
4370 )
4371 IS
4372 l_project_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4373 l_count NUMBER ;
4374 l_request_id pa_proj_elem_ver_structure.conc_request_id%TYPE;
4375
4376 l_debug_mode VARCHAR2(10);
4377 l_debug_level3 NUMBER := 3;
4378 l_msg_count NUMBER := 0;
4379 l_msg_data VARCHAR2(2000);
4380 l_data VARCHAR2(2000);
4381 l_msg_index_out NUMBER;
4382 l_return_status VARCHAR2(2000);
4383 l_error_message_code VARCHAR2(2000);
4384 -- Added for Bug Number 4907103
4385 l_project_number_from pa_projects_all.segment1%TYPE :=nvl(p_project_number_from,p_project_number_to);
4386 l_project_number_to pa_projects_all.segment1%TYPE :=nvl(p_project_number_to,p_project_number_from) ;
4387 -- 3752898
4388 -- We need this variable only for passing to OKE API
4389 -- Though they dont have any logic as of now to re-initialise Message stack if l_init_msg_list is TRUE ,
4390 -- Its not correct to initialise this variable as TRUE .By default this value should be FALSE
4391 l_init_msg_list VARCHAR2(20) := FND_API.G_FALSE ;
4392
4393 l_valid VARCHAR2(1);
4394
4395 /* Commented for Bug Number 4907103
4396 CURSOR c_project_id_range IS
4397 SELECT proj.project_id
4398 FROM PA_PROJECTS_ALL proj
4399 WHERE segment1 between nvl(p_project_number_from,p_project_number_to)
4400 and nvl(p_project_number_to,p_project_number_from) ;
4401 */
4402 -- Changed for Bug Number 4907103
4403 CURSOR c_project_id_range IS
4404 SELECT proj.project_id
4405 FROM PA_PROJECTS_ALL proj
4406 WHERE segment1 between l_project_number_from and l_project_number_to;
4407 -- End of BugNumber 4907103
4408 CURSOR c_valid_project_number_entry(l_project_number IN pa_projects_all.segment1%TYPE) IS
4409 SELECT 'Y'
4410 FROM PA_PROJECTS_ALL
4411 WHERE segment1 = l_project_number;
4412
4413 BEGIN
4414
4415 -- Set the error stack.
4416 pa_debug.set_err_stack('PA_ACTIONS_PUB.RUN_ACTION_CONC_PROCESS');
4417
4418 -- Get the Debug mode into local variable and set it to 'Y'if its NULL
4419 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
4420
4421 l_request_id := FND_GLOBAL.CONC_REQUEST_ID;
4422 retcode := '0';
4423 errbuf := NULL;
4424
4425 -- Initialize the return status to success
4426 l_return_status := FND_API.G_RET_STS_SUCCESS;
4427 pa_debug.set_process('PLSQL','LOG',l_debug_mode);
4428
4429 IF l_debug_mode = 'Y' THEN
4430 pa_debug.set_curr_function( p_function => 'RUN_ACTION_CONC_PROCESS',
4431 p_debug_mode => l_debug_mode );
4432 pa_debug.g_err_stage:= 'Entering RUN_ACTION_CONC_PROCESS : ' || l_request_id;
4433 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4434 END IF;
4435
4436 --Printing Input Parameters
4437
4438 IF l_debug_mode = 'Y' THEN
4439 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Function is :' || p_function ;
4440 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4441 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Project Number From is :' || p_project_number_from ;
4442 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4443 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Project Number To is :' || p_project_number_to ;
4444 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4445 END IF;
4446
4447 --Valid Parameter Validations
4448 IF ( (p_project_number_from IS NOT NULL) OR (p_project_number_to IS NOT NULL) ) THEN
4449 IF p_project_number_from IS NOT NULL THEN
4450 OPEN c_valid_project_number_entry(p_project_number_from) ;
4451 FETCH c_valid_project_number_entry INTO l_valid ;
4452
4453 IF c_valid_project_number_entry%NOTFOUND THEN
4454 IF l_debug_mode = 'Y' THEN
4455 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Invalid value entered for Project Number From';
4456 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4457 END IF;
4458 l_return_status := FND_API.G_RET_STS_ERROR;
4459 PA_UTILS.ADD_MESSAGE
4460 (p_app_short_name => 'PA',
4461 p_msg_name => 'PA_INV_PARAM_PASSED');
4462 CLOSE c_valid_project_number_entry ;
4463 RAISE Invalid_Arg_Exc_Dlv;
4467 FETCH c_valid_project_number_entry INTO l_valid ;
4464 END IF ;
4465 ELSE
4466 OPEN c_valid_project_number_entry(p_project_number_to) ;
4468
4469 IF c_valid_project_number_entry%NOTFOUND THEN
4470 IF l_debug_mode = 'Y' THEN
4471 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Invalid value entered for Project Number To' ;
4472 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4473 END IF;
4474 l_return_status := FND_API.G_RET_STS_ERROR;
4475 PA_UTILS.ADD_MESSAGE
4476 (p_app_short_name => 'PA',
4477 p_msg_name => 'PA_INV_PARAM_PASSED');
4478 CLOSE c_valid_project_number_entry ;
4479 RAISE Invalid_Arg_Exc_Dlv;
4480 END IF ;
4481 END IF;
4482 END IF;
4483
4484 --Business Rule Validations
4485 IF (p_function IS NULL) THEN
4486 IF l_debug_mode = 'Y' THEN
4487 pa_debug.g_err_stage:= 'Mandatory parameter to this API : Function is NULL';
4488 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4489 END IF;
4490 l_return_status := FND_API.G_RET_STS_ERROR;
4491 PA_UTILS.ADD_MESSAGE
4492 (p_app_short_name => 'PA',
4493 p_msg_name => 'PA_INV_PARAM_PASSED');
4494 RAISE Invalid_Arg_Exc_Dlv;
4495 END IF;
4496
4497 IF l_debug_mode = 'Y' THEN
4498 pa_debug.g_err_stage := 'Before doing cursor operation';
4499 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4500 END IF;
4501
4502 OPEN c_project_id_range ;
4503 FETCH c_project_id_range BULK COLLECT INTO l_project_id_tbl ;
4504 CLOSE c_project_id_range;
4505
4506 IF l_debug_mode = 'Y' THEN
4507 pa_debug.g_err_stage := 'After fetching the project id range into local table';
4508 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4509 END IF;
4510
4511 IF(NVL(l_project_id_tbl.LAST,0) > 0) THEN
4512
4513 IF l_debug_mode = 'Y' THEN
4514 pa_debug.g_err_stage := 'Project Id table is not empty';
4515 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4516 END IF;
4517
4518 FOR l_count IN l_project_id_tbl.FIRST..l_project_id_tbl.LAST LOOP
4519
4520 --Bug 3611598 If and Only if Deliverable is Enabled for a Project,Proceed
4521
4522 PA_PROJECT_STRUCTURE_UTILS.Check_Structure_Type_Exists
4523 (
4524 p_project_id => l_project_id_tbl(l_count)
4525 ,p_structure_type => 'DELIVERABLE'
4526 ,x_return_status => l_return_status
4527 ,x_error_message_code => l_error_message_code
4528 );
4529
4530 IF l_return_status = 'E' THEN -- This API returns 'E' if Structure Type is Enabled
4531
4532 IF p_function = 'DEMAND' THEN
4533 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4534 P_PROJECT_ID => l_project_id_tbl(l_count)
4535 ,P_Task_ID => null
4536 ,P_Init_Msg_List => l_init_msg_list
4537 ,X_RETURN_STATUS => l_return_status
4538 ,X_MSG_COUNT => l_msg_count
4539 ,X_MSG_DATA => l_msg_data
4540 );
4541 IF l_debug_mode = 'Y' THEN
4542 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status ;
4543 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4544 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4545 END IF;
4546
4547 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4548 RAISE Invalid_Arg_Exc_Dlv ;
4549 END IF ;
4550 ELSIF p_function = 'PROCUREMENT' THEN
4551 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4552 P_PROJECT_ID => l_project_id_tbl(l_count)
4553 ,P_Task_ID => null
4554 ,P_Init_Msg_List => l_init_msg_list
4555 ,X_RETURN_STATUS => l_return_status
4556 ,X_MSG_COUNT => l_msg_count
4557 ,X_MSG_DATA => l_msg_data
4558 );
4559 IF l_debug_mode = 'Y' THEN
4560 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4561 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4562 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4563 END IF;
4564
4565 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4566 RAISE Invalid_Arg_Exc_Dlv ;
4567 END IF ;
4568
4569 ELSIF p_function = 'BOTH' THEN
4570 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4571 P_PROJECT_ID => l_project_id_tbl(l_count)
4572 ,P_Task_ID => null
4573 ,P_Init_Msg_List => l_init_msg_list
4577 );
4574 ,X_RETURN_STATUS => l_return_status
4575 ,X_MSG_COUNT => l_msg_count
4576 ,X_MSG_DATA => l_msg_data
4578 IF l_debug_mode = 'Y' THEN
4579 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status;
4580 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4581 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4582 END IF;
4583
4584 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4585 RAISE Invalid_Arg_Exc_Dlv ;
4586 END IF ;
4587 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4588 P_PROJECT_ID => l_project_id_tbl(l_count)
4589 ,P_Task_ID => null
4590 ,P_Init_Msg_List => l_init_msg_list
4591 ,X_RETURN_STATUS => l_return_status
4592 ,X_MSG_COUNT => l_msg_count
4593 ,X_MSG_DATA => l_msg_data
4594 );
4595 IF l_debug_mode = 'Y' THEN
4596 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4597 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4598 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4599 END IF;
4600
4601 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4602 RAISE Invalid_Arg_Exc_Dlv ;
4603 END IF ;
4604
4605 END IF;
4606
4607 END IF;
4608
4609 END LOOP;
4610 IF l_debug_mode = 'Y' THEN
4611 pa_debug.g_err_stage := 'After Calling OKE API for all the actions (passed project id)';
4612 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4613 END IF;
4614
4615 ELSE
4616
4617 IF l_debug_mode = 'Y' THEN
4618 pa_debug.g_err_stage := 'Here,No Project Id range is entered';
4619 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4620 END IF;
4621
4622 IF p_function = 'DEMAND' THEN
4623
4624 IF l_debug_mode = 'Y' THEN
4625 pa_debug.g_err_stage := 'Selected Option is Initiate Demand(project_id is null)';
4626 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4627 END IF;
4628
4629 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4630 P_PROJECT_ID => null
4631 ,P_Task_ID => null
4632 ,P_Init_Msg_List => l_init_msg_list
4633 ,X_RETURN_STATUS => l_return_status
4634 ,X_MSG_COUNT => l_msg_count
4635 ,X_MSG_DATA => l_msg_data
4636 );
4637 IF l_debug_mode = 'Y' THEN
4638 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status;
4639 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4640 END IF;
4641
4642 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4643 RAISE Invalid_Arg_Exc_Dlv ;
4644 END IF ;
4645
4646 ELSIF p_function = 'PROCUREMENT' THEN
4647
4648 IF l_debug_mode = 'Y' THEN
4649 pa_debug.g_err_stage := 'Selected Option is Initiate Procurement(project_id is null)';
4650 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4651 END IF;
4652 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4653 P_PROJECT_ID => null
4654 ,P_Task_ID => null
4655 ,P_Init_Msg_List => l_init_msg_list
4656 ,X_RETURN_STATUS => l_return_status
4657 ,X_MSG_COUNT => l_msg_count
4658 ,X_MSG_DATA => l_msg_data
4659 );
4660 IF l_debug_mode = 'Y' THEN
4661 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4662 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4663 END IF;
4664
4665
4666 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4667 RAISE Invalid_Arg_Exc_Dlv ;
4668 END IF ;
4669 ELSIF p_function = 'BOTH' THEN
4670
4671 IF l_debug_mode = 'Y' THEN
4672 pa_debug.g_err_stage := 'Selected Option is All(project_id is null)';
4673 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4674 END IF;
4675
4676 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4677 P_PROJECT_ID => null
4678 ,P_Task_ID => null
4679 ,P_Init_Msg_List => l_init_msg_list
4680 ,X_RETURN_STATUS => l_return_status
4684 IF l_debug_mode = 'Y' THEN
4681 ,X_MSG_COUNT => l_msg_count
4682 ,X_MSG_DATA => l_msg_data
4683 );
4685 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status;
4686 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4687 END IF;
4688
4689 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4690 RAISE Invalid_Arg_Exc_Dlv ;
4691 END IF ;
4692
4693 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4694 P_PROJECT_ID => null
4695 ,P_Task_ID => null
4696 ,P_Init_Msg_List => l_init_msg_list
4697 ,X_RETURN_STATUS => l_return_status
4698 ,X_MSG_COUNT => l_msg_count
4699 ,X_MSG_DATA => l_msg_data
4700 );
4701
4702 IF l_debug_mode = 'Y' THEN
4703 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4704 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4705 END IF;
4706
4707 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4708 RAISE Invalid_Arg_Exc_Dlv ;
4709 END IF ;
4710 END IF;
4711
4712 END IF;
4713
4714 IF l_debug_mode = 'Y' THEN
4715 pa_debug.g_err_stage:= 'Exiting RUN_ACTION_CONC_PROCESS';
4716 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4717 pa_debug.reset_err_stack;
4718 pa_debug.reset_curr_function; --Added for bug 4945876
4719 END IF;
4720
4721 EXCEPTION
4722
4723 WHEN Invalid_Arg_Exc_Dlv THEN
4724 l_return_status := FND_API.G_RET_STS_ERROR;
4725 l_msg_count := FND_MSG_PUB.count_msg;
4726 retcode := '-1';
4727
4728 IF l_debug_mode = 'Y' THEN
4729 pa_debug.g_err_stage := 'Inside Invalid Argument exception of RUN_ACTION_CONC_PROCESS';
4730 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4731 END IF;
4732
4733 IF c_project_id_range%ISOPEN THEN
4734 CLOSE c_project_id_range ;
4735 END IF;
4736
4737 IF c_valid_project_number_entry%ISOPEN THEN
4738 CLOSE c_valid_project_number_entry ;
4739 END IF;
4740
4741 IF c_valid_project_number_entry%ISOPEN THEN
4742 CLOSE c_valid_project_number_entry ;
4743 END IF ;
4744
4745 IF l_msg_count >= 1 THEN
4746 PA_INTERFACE_UTILS_PUB.get_messages
4747 (p_encoded => FND_API.G_TRUE,
4748 p_msg_index => 1,
4749 p_msg_count => l_msg_count,
4750 p_msg_data => l_msg_data,
4751 p_data => l_data,
4752 p_msg_index_out => l_msg_index_out);
4753 errbuf := l_data;
4754 END IF;
4755
4756 IF l_debug_mode = 'Y' THEN
4757 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_Stack);
4758 pa_debug.reset_err_stack;
4759 pa_debug.reset_curr_function; --Added for bug 4945876
4760 END IF ;
4761 RAISE; /* Will have to raise since called as part of conc request .After Reports is built for the C.P no need for this raise */
4762
4763 WHEN OTHERS THEN
4764 l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4765 retcode := '-1';
4766 errbuf := SQLERRM;
4767
4768 IF c_project_id_range%ISOPEN THEN
4769 CLOSE c_project_id_range ;
4770 END IF;
4771
4772 IF c_valid_project_number_entry%ISOPEN THEN
4773 CLOSE c_valid_project_number_entry ;
4774 END IF;
4775
4776 IF c_valid_project_number_entry%ISOPEN THEN
4777 CLOSE c_valid_project_number_entry ;
4778 END IF ;
4779
4780 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
4781 ,p_procedure_name => 'RUN_ACTION_CONC_PROCESS'
4782 ,p_error_text => errbuf);
4783
4784 IF l_debug_mode = 'Y' THEN
4785 pa_debug.g_err_stage:='Unexpected Error'||errbuf;
4786 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4787 pa_debug.reset_err_stack;
4788 pa_debug.reset_curr_function; --Added for bug 4945876
4789 END IF;
4790
4791 RAISE;
4792 END RUN_ACTION_CONC_PROCESS ;
4793
4794
4795 -- SubProgram : UPD_DLV_ACTIONS_IN_BULK_TM ( 3578694 )
4796 -- Type : PROCEDURE
4797 -- Purpose : Public API to Update Deliverable Actions From TM Home Actions Page
4798 -- Note : Its a BULK API
4799 -- Assumptions : None
4800 -- Parameter IN/OUT Type Required Description and Purpose
4801 -- --------------------------- --------- ---------- --------- ---------------------------
4802 -- p_api_version IN NUMBER N Standard Parameter
4803 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
4804 -- p_commit IN VARCHAR2 N Standard Parameter
4808 -- p_debug_mode IN VARCHAR2 N Standard Parameter
4805 -- p_validate_only IN VARCHAR2 N Standard Parameter
4806 -- p_validation_level IN NUMBER N Standard Parameter
4807 -- p_calling_module IN VARCHAR2 N Standard Parameter
4809 -- p_max_msg_count IN NUMBER N Standard Parameter
4810 -- p_name_tbl IN PLSQL Table N Action Name
4811 -- p_manager_person_id_tbl IN PLSQL Table N Manager Id
4812 -- p_function_code_tbl IN PLSQL Table N Action Function
4813 -- p_due_date_tbl IN PLSQL Table N Due Date
4814 -- p_completed_flag_tbl IN PLSQL Table N Completed Flag
4815 -- p_completion_date_tbl IN PLSQL Table N Completed Date
4816 -- p_description_tbl IN PLSQL Table N Description
4817 -- p_attribute_category_tbl IN PLSQL Table N DFF Field
4818 -- p_attribute1_tbl IN PLSQL Table N DFF Filed
4819 -- p_attribute2_tbl IN PLSQL Table N DFF Field
4820 -- p_attribute3_tbl IN PLSQL Table N DFF Filed
4821 -- p_attribute4_tbl IN PLSQL Table N DFF Field
4822 -- p_attribute5_tbl IN PLSQL Table N DFF Filed
4823 -- p_attribute6_tbl IN PLSQL Table N DFF Field
4824 -- p_attribute7_tbl IN PLSQL Table N DFF Filed
4825 -- p_attribute8_tbl IN PLSQL Table N DFF Field
4826 -- p_attribute9_tbl IN PLSQL Table N DFF Filed
4827 -- p_attribute10_tbl IN PLSQL Table N DFF Field
4828 -- p_attribute11_tbl IN PLSQL Table N DFF Filed
4829 -- p_attribute12_tbl IN PLSQL Table N DFF Field
4830 -- p_attribute13_tbl IN PLSQL Table N DFF Filed
4831 -- p_attribute14_tbl IN PLSQL Table N DFF Field
4832 -- p_attribute15_tbl IN PLSQL Table N DFF Filed
4833 -- p_element_version_id_tbl IN PLSQL Table N Action VErsion Id
4834 -- p_proj_element_id_tbl IN PLSQL Table N Action Element Id
4835 -- p_record_version_number_tbl IN PLSQL Table N Record Version NUmber
4836 -- p_project_id_tbl IN PLSQL Table N Project Id
4837 -- p_object_id_tbl IN PLSQL Table Y Parent Id
4838 -- p_object_version_id_tbl IN PLSQL Table N Parent Version ID
4839 -- p_object_type IN VARCHAR2 Y Parent Type
4840 -- p_pm_source_code IN NUMBER N PM Source Code
4841 -- p_pm_source_reference IN VARCHAR2 N PM Source Reference
4842 -- p_insert_or_update IN VARCHAR2 N Identifies the API Mode
4843 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
4844 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
4845 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
4846
4847 PROCEDURE UPD_DLV_ACTIONS_IN_BULK_TM
4848 (p_api_version IN NUMBER :=1.0
4849 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4850 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4851 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4852 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4853 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4854 ,p_debug_mode IN VARCHAR2 :='N'
4855 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4856 ,p_name_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4857 ,p_manager_person_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4858 ,p_function_code_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
4859 ,p_due_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
4860 ,p_completed_flag_tbl IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
4861 ,p_completion_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
4862 ,p_description_tbl IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
4863 ,p_attribute_category_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
4864 ,p_attribute1_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4865 ,p_attribute2_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4866 ,p_attribute3_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4867 ,p_attribute4_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4868 ,p_attribute5_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4869 ,p_attribute6_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4870 ,p_attribute7_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4874 ,p_attribute11_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4871 ,p_attribute8_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4872 ,p_attribute9_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4873 ,p_attribute10_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4875 ,p_attribute12_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4876 ,p_attribute13_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4877 ,p_attribute14_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4878 ,p_attribute15_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4879 ,p_element_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4880 ,p_proj_element_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4881 ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4882 ,p_project_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4883 ,p_object_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4884 ,p_object_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4885 ,p_object_type IN PA_LOOKUPS.LOOKUP_CODE%TYPE
4886 ,p_pm_source_code IN pa_proj_elements.pm_source_code%TYPE := null
4887 ,p_pm_source_reference IN pa_proj_elements.pm_source_reference%TYPE := null
4888 ,p_pm_source_reference_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
4889 ,p_insert_or_update IN VARCHAR2 := 'UPDATE'
4890 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4891 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4892 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4893 )
4894 IS
4895
4896 l_debug_mode VARCHAR2(10);
4897 l_msg_count NUMBER ;
4898 l_data VARCHAR2(2000);
4899 l_msg_data VARCHAR2(2000);
4900 l_msg_index_out NUMBER;
4901
4902 l_upd_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4903 l_upd_mgr_person_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4904 l_upd_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
4905 l_upd_due_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
4906 l_upd_comp_flag_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE() ;
4907 l_upd_comp_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
4908 l_upd_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4909 l_upd_element_ver_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4910 l_upd_rec_ver_num_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4911 l_upd_description_tbl SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
4912 l_upd_attribute_category_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
4913 l_upd_attribute1_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4914 l_upd_attribute2_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4915 l_upd_attribute3_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4916 l_upd_attribute4_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4917 l_upd_attribute5_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4918 l_upd_attribute6_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4919 l_upd_attribute7_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4920 l_upd_attribute8_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4921 l_upd_attribute9_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4922 l_upd_attribute10_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4923 l_upd_attribute11_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4924 l_upd_attribute12_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4925 l_upd_attribute13_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4926 l_upd_attribute14_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4927 l_upd_attribute15_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4928
4929 j_upd NUMBER ;
4930
4931 l_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4932 l_completed_flag_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE() ;
4933 l_completion_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
4934 l_description_tbl SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
4935 l_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
4936 l_due_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
4937 l_element_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4938 l_proj_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4942 l_object_id NUMBER;
4939 l_user_action_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
4940 l_action_owner_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4941 l_pm_source_reference_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
4943 l_object_version_id NUMBER;
4944 l_project_id NUMBER;
4945
4946 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
4947 l_count NUMBER;
4948
4949 BEGIN
4950
4951 -- this api will be called from TM Home Update Actions Page
4952 -- popluate plsql table, having single row, and pass this table
4953 -- to validation actions api for validations
4954 -- if validations are successful, call UPDATE_DLV_ACTIONS_IN_BULK api
4955
4956 x_msg_count := 0;
4957 x_return_status := FND_API.G_RET_STS_SUCCESS;
4958 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
4959
4960 IF l_debug_mode = 'Y' THEN
4961 PA_DEBUG.set_curr_function( p_function => 'UPD_DLV_ACTIONS_IN_BULK_TM',
4962 p_debug_mode => l_debug_mode );
4963 pa_debug.g_err_stage:= 'Inside UPD_DLV_ACTIONS_IN_BULK_TM ';
4964 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
4965 END IF;
4966
4967 IF l_debug_mode = 'Y' THEN
4968 pa_debug.g_err_stage:= 'Printing Input parameters';
4969 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
4970 pa_debug.write(g_module_name,'p_insert_or_update'||':'||p_insert_or_update,3) ;
4971 END IF;
4972
4973 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
4974 FND_MSG_PUB.initialize;
4975 END IF;
4976
4977 IF (p_commit = FND_API.G_TRUE) THEN
4978 savepoint CR_UP_DLV_ACTIONS_SP ;
4979 END IF;
4980
4981 -- Call the validation API. It will
4982 -- perform all the validation.
4983 IF l_debug_mode = 'Y' THEN
4984 pa_debug.g_err_stage:= 'Calling PA_ACTIONS_PUB.VALIDATE_ACTIONS';
4985 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
4986 END IF ;
4987
4988 l_name_tbl.extend;
4989 l_completed_flag_tbl.extend;
4990 l_completion_date_tbl.extend;
4991 l_description_tbl.extend;
4992 l_function_code_tbl.extend;
4993 l_due_date_tbl.extend;
4994 l_element_version_id_tbl.extend;
4995 l_proj_element_id_tbl.extend;
4996 l_user_action_tbl.extend;
4997 l_action_owner_id_tbl.extend;
4998 l_pm_source_reference_tbl.extend;
4999
5000 l_count:= 0;
5001
5002 IF l_debug_mode = 'Y' THEN
5003 pa_debug.write(g_module_name,'No of actions ' || p_name_tbl.last,3) ;
5004 END IF ;
5005
5006 IF nvl(p_name_tbl.last,0) >= 1 THEN -- Only if something is fetched
5007
5008 l_count := l_count + 1;
5009
5010 FOR i in p_name_tbl.FIRST .. p_name_tbl.LAST LOOP
5011
5012 IF l_debug_mode = 'Y' THEN
5013 pa_debug.write(g_module_name,'i ' || i,3) ;
5014 END IF ;
5015
5016 l_name_tbl(l_count) := p_name_tbl(i);
5017
5018 l_completed_flag_tbl(l_count) := p_completed_flag_tbl(i);
5019 l_completion_date_tbl(l_count) := p_completion_date_tbl(i);
5020 l_description_tbl(l_count) := p_description_tbl(i);
5021 l_function_code_tbl(l_count) := p_function_code_tbl(i);
5022 l_due_date_tbl(l_count) := p_due_date_tbl(i);
5023 l_element_version_id_tbl(l_count) := p_element_version_id_tbl(i);
5024 l_proj_element_id_tbl(l_count) := p_proj_element_id_tbl(i);
5025 l_user_action_tbl(l_count) := 'MODIFIED';
5026 l_action_owner_id_tbl(l_count) := p_manager_person_id_tbl(i);
5027 l_object_id := p_object_id_tbl(i);
5028 l_object_version_id := p_object_version_id_tbl(i);
5029 l_project_id := p_project_id_tbl(i);
5030
5031 IF l_debug_mode = 'Y' THEN
5032 pa_debug.write(g_module_name,' validating action p_element_version_id_tbl ' || p_element_version_id_tbl(i) ,3) ;
5033 pa_debug.write(g_module_name,' validating action ( version id ) ' || l_element_version_id_tbl(l_count) ,3) ;
5034 END IF ;
5035
5036 PA_ACTIONS_PUB.VALIDATE_ACTIONS
5037 ( p_init_msg_list => FND_API.G_FALSE
5038 ,p_debug_mode => l_debug_mode
5039 ,p_name_tbl => l_name_tbl
5040 ,p_completed_flag_tbl => l_completed_flag_tbl
5041 ,p_completion_date_tbl => l_completion_date_tbl
5042 ,p_description_tbl => l_description_tbl
5043 ,p_function_code_tbl => l_function_code_tbl
5044 ,p_due_date_tbl => l_due_date_tbl
5045 ,p_element_version_id_tbl=> l_element_version_id_tbl
5046 ,p_proj_element_id_tbl => l_proj_element_id_tbl
5047 ,p_user_action_tbl => l_user_action_tbl
5048 ,p_object_id => l_object_id
5049 ,p_object_version_id => l_object_version_id
5050 ,p_object_type => p_object_type
5051 ,p_project_id => l_project_id
5052 ,p_action_owner_id_tbl => l_action_owner_id_tbl
5053 ,p_carrying_out_org_id => NULL
5054 ,p_action_reference_tbl => p_pm_source_reference_tbl
5055 ,p_deliverable_id => l_object_id
5056 ,p_insert_or_update => 'UPDATE'
5057 ,x_return_status => x_return_status
5058 ,x_msg_count => x_msg_count
5059 ,x_msg_data => x_msg_data
5060 ) ;
5061
5062 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5063 l_return_status := FND_API.G_RET_STS_ERROR;
5064 END IF;
5065
5066 END LOOP ;
5067
5068 END IF;
5069
5070 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5071 RAISE Invalid_Arg_Exc_Dlv ;
5072 END IF ;
5073
5074 -- Loop through p_name_tbl to find out the
5075 -- actions which are updated by user.
5076
5077 -- Initialize the local variable
5078 j_upd := 0 ;
5079
5080 IF nvl(p_name_tbl.last,0) >= 1 THEN -- Only if something is fetched
5081
5085 pa_debug.g_err_stage:= 'Update Operation';
5082 FOR i in p_name_tbl.FIRST .. p_name_tbl.LAST LOOP
5083
5084 IF l_debug_mode = 'Y' THEN
5086 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5087 END IF;
5088
5089 j_upd:=j_upd+1 ;
5090
5091 -- Get all the actions which are updated, into
5092 -- local plsql tables, which will be used to
5093 -- call PLSQL bulk API for update.
5094
5095 -- extend the size of PLSQL table
5096 l_upd_element_id_tbl.extend ;
5097 l_upd_element_ver_id_tbl.extend ;
5098 l_upd_rec_ver_num_id_tbl.extend ;
5099 l_upd_name_tbl.extend ;
5100 l_upd_function_code_tbl.extend ;
5101 l_upd_mgr_person_id_tbl.extend ;
5102 l_upd_due_date_tbl.extend ;
5103 l_upd_comp_flag_tbl.extend ;
5104 l_upd_comp_date_tbl.extend ;
5105 l_upd_attribute_category_tbl.extend;
5106 l_upd_attribute1_tbl.extend ;
5107 l_upd_attribute2_tbl.extend ;
5108 l_upd_attribute3_tbl.extend ;
5109 l_upd_attribute4_tbl.extend ;
5110 l_upd_attribute5_tbl.extend ;
5111 l_upd_attribute6_tbl.extend ;
5112 l_upd_attribute7_tbl.extend ;
5113 l_upd_attribute8_tbl.extend ;
5114 l_upd_attribute9_tbl.extend ;
5115 l_upd_attribute10_tbl.extend ;
5116 l_upd_attribute11_tbl.extend ;
5117 l_upd_attribute12_tbl.extend ;
5118 l_upd_attribute13_tbl.extend ;
5119 l_upd_attribute14_tbl.extend ;
5120 l_upd_attribute15_tbl.extend ;
5121 l_upd_description_tbl.extend ;
5122
5123 l_upd_element_id_tbl(j_upd) := p_proj_element_id_tbl(i) ;
5124 l_upd_element_ver_id_tbl(j_upd) := p_element_version_id_tbl(i) ;
5125 l_upd_rec_ver_num_id_tbl(j_upd) := p_record_version_number_tbl(i) ;
5126 l_upd_name_tbl(j_upd) := p_name_tbl(i) ;
5127 l_upd_function_code_tbl(j_upd) := p_function_code_tbl(i) ;
5128
5129 -- IF p_object_type <> g_dlvr_types THEN // removed for bug# 3578694, not required condition
5130 l_upd_mgr_person_id_tbl(j_upd) := p_manager_person_id_tbl(i) ;
5131 l_upd_due_date_tbl(j_upd) := p_due_date_tbl(i) ;
5132 l_upd_comp_flag_tbl(j_upd) := p_completed_flag_tbl(i) ;
5133 l_upd_comp_date_tbl(j_upd) := p_completion_date_tbl(i) ;
5134 l_upd_attribute_category_tbl(j_upd):= p_attribute_category_tbl(i) ;
5135 l_upd_attribute1_tbl(j_upd) := p_attribute1_tbl(i) ;
5136 l_upd_attribute2_tbl(j_upd) := p_attribute2_tbl(i) ;
5137 l_upd_attribute3_tbl(j_upd) := p_attribute3_tbl(i) ;
5138 l_upd_attribute4_tbl(j_upd) := p_attribute4_tbl(i) ;
5139 l_upd_attribute5_tbl(j_upd) := p_attribute5_tbl(i) ;
5140 l_upd_attribute6_tbl(j_upd) := p_attribute6_tbl(i) ;
5141 l_upd_attribute7_tbl(j_upd) := p_attribute7_tbl(i) ;
5142 l_upd_attribute8_tbl(j_upd) := p_attribute8_tbl(i) ;
5143 l_upd_attribute9_tbl(j_upd) := p_attribute9_tbl(i) ;
5144 l_upd_attribute10_tbl(j_upd) := p_attribute10_tbl(i) ;
5145 l_upd_attribute11_tbl(j_upd) := p_attribute11_tbl(i) ;
5146 l_upd_attribute12_tbl(j_upd) := p_attribute12_tbl(i) ;
5147 l_upd_attribute13_tbl(j_upd) := p_attribute13_tbl(i) ;
5148 l_upd_attribute14_tbl(j_upd) := p_attribute14_tbl(i) ;
5149 l_upd_attribute15_tbl(j_upd) := p_attribute15_tbl(i) ;
5150 l_upd_description_tbl(j_upd) := p_description_tbl(i) ;
5151 -- END IF ;
5152
5153
5154 END LOOP ;
5155
5156
5157 -- Call Update API to perform the update operation
5158 IF j_upd > 0 THEN
5159
5160 IF l_debug_mode = 'Y' THEN
5161 pa_debug.g_err_stage:= 'Call UPDATE_DLV_ACTIONS_IN_BULK ';
5162 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5163 END IF;
5164
5165 PA_ACTIONS_PUB.UPDATE_DLV_ACTIONS_IN_BULK
5166 (p_api_version => p_api_version
5167 ,p_init_msg_list => FND_API.G_FALSE
5168 ,p_commit => p_commit
5169 ,p_validate_only => p_validate_only
5170 ,p_validation_level => p_validation_level
5171 ,p_calling_module => p_calling_module
5172 ,p_debug_mode => l_debug_mode
5173 ,p_max_msg_count => p_max_msg_count
5174 ,p_name_tbl => l_upd_name_tbl
5175 ,p_manager_person_id_tbl => l_upd_mgr_person_id_tbl
5176 ,p_function_code_tbl => l_upd_function_code_tbl
5177 ,p_due_date_tbl => l_upd_due_date_tbl
5181 ,p_attribute_category_tbl => l_upd_attribute_category_tbl
5178 ,p_completed_flag_tbl => l_upd_comp_flag_tbl
5179 ,p_completion_date_tbl => l_upd_comp_date_tbl
5180 ,p_description_tbl => l_upd_description_tbl
5182 ,p_attribute1_tbl => l_upd_attribute1_tbl
5183 ,p_attribute2_tbl => l_upd_attribute2_tbl
5184 ,p_attribute3_tbl => l_upd_attribute3_tbl
5185 ,p_attribute4_tbl => l_upd_attribute4_tbl
5186 ,p_attribute5_tbl => l_upd_attribute5_tbl
5187 ,p_attribute6_tbl => l_upd_attribute6_tbl
5188 ,p_attribute7_tbl => l_upd_attribute7_tbl
5189 ,p_attribute8_tbl => l_upd_attribute8_tbl
5190 ,p_attribute9_tbl => l_upd_attribute9_tbl
5191 ,p_attribute10_tbl => l_upd_attribute10_tbl
5192 ,p_attribute11_tbl => l_upd_attribute11_tbl
5193 ,p_attribute12_tbl => l_upd_attribute12_tbl
5194 ,p_attribute13_tbl => l_upd_attribute13_tbl
5195 ,p_attribute14_tbl => l_upd_attribute14_tbl
5196 ,p_attribute15_tbl => l_upd_attribute15_tbl
5197 ,p_element_version_id_tbl => l_upd_element_ver_id_tbl
5198 ,p_proj_element_id_tbl => l_upd_element_id_tbl
5199 ,p_record_version_number_tbl => l_upd_rec_ver_num_id_tbl
5200 ,p_project_id => NULL
5201 ,p_object_id => NULL
5202 ,p_object_version_id => NULL
5203 ,p_object_type => p_object_type
5204 ,p_pm_source_code => p_pm_source_code
5205 ,p_pm_source_reference => p_pm_source_reference
5206 ,p_carrying_out_organization_id => NULL
5207 ,x_return_status => x_return_status
5208 ,x_msg_count => x_msg_count
5209 ,x_msg_data => x_msg_data
5210 ) ;
5211
5212
5213 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5214 RAISE Invalid_Arg_Exc_Dlv ;
5215 END IF ;
5216
5217 END IF ;
5218
5219
5220 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5221 RAISE Invalid_Arg_Exc_Dlv ;
5222 END IF ;
5223
5224 END IF ; -- Only if something is fetched
5225
5226 IF l_debug_mode = 'Y' THEN
5227 pa_debug.g_err_stage:= 'Exiting UPD_DLV_ACTIONS_IN_BULK_TM' ;
5228 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5229 pa_debug.reset_curr_function;
5230 END IF;
5231
5232 EXCEPTION
5233 WHEN Invalid_Arg_Exc_Dlv THEN
5234 x_return_status := FND_API.G_RET_STS_ERROR;
5235 l_msg_count := FND_MSG_PUB.count_msg;
5236
5237 IF (p_commit = FND_API.G_TRUE) THEN
5238 ROLLBACK TO CR_UP_DLV_ACTIONS_SP;
5239 END IF ;
5240
5241 IF l_debug_mode = 'Y' THEN
5242 pa_debug.g_err_stage := 'inside invalid arg exception of UPD_DLV_ACTIONS_IN_BULK_TM';
5243 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
5244 END IF;
5245
5246 IF l_msg_count = 1 THEN
5247 PA_INTERFACE_UTILS_PUB.get_messages
5248 (p_encoded => FND_API.G_TRUE,
5249 p_msg_index => 1,
5250 p_msg_count => l_msg_count,
5251 p_msg_data => l_msg_data,
5252 p_data => l_data,
5253 p_msg_index_out => l_msg_index_out);
5254 x_msg_data := l_data;
5255 x_msg_count := l_msg_count;
5256 ELSE
5257 x_msg_count := l_msg_count;
5258 END IF;
5259 IF l_debug_mode = 'Y' THEN
5260 pa_debug.reset_curr_function;
5261 END IF ;
5262 RETURN;
5263 WHEN OTHERS THEN
5264 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5265 x_msg_count := 1;
5266 x_msg_data := SQLERRM;
5267
5268 IF (p_commit = FND_API.G_TRUE) THEN
5269 ROLLBACK TO CR_UP_DLV_ACTIONS_SP;
5270 END IF ;
5271
5272 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
5273 ,p_procedure_name => 'UPD_DLV_ACTIONS_IN_BULK_TM');
5274
5275 IF p_debug_mode = 'Y' THEN
5276 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
5277 pa_debug.write(g_module_name,'UPD_DLV_ACTIONS_IN_BULK_TM: '|| pa_debug.g_err_stage,5);
5278 pa_debug.reset_curr_function;
5279 END IF;
5280 RAISE;
5281 END UPD_DLV_ACTIONS_IN_BULK_TM ;
5282
5283
5287 For Initiating Demand as soon as a Project Is Approved,we need to
5284 /*=======================================================================
5285 This is a wrapper API that will launch the concurrent process
5286 PRC: Initiate Project Deliverable Actions
5288 call this Wrapper API whenever Project Status is changed to Approved.
5289
5290 Please not that ,the Caller of this API should validate for the Project
5291 Status Change = Approved .
5292
5293 So,The parameters that would be passed to this concurrent process are :
5294 1) 'Demand' and 2) The Project Number
5295 =======================================================================*/
5296
5297
5298 PROCEDURE RUN_ACTION_CONC_PROCESS_WRP
5299 (
5300 p_api_version IN NUMBER :=1.0
5301 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
5302 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
5303 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
5304 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
5305 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
5306 ,p_debug_mode IN VARCHAR2 :='N'
5307 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5308 ,p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE
5309 ,p_project_number IN PA_PROJECTS_ALL.SEGMENT1%TYPE -- 3671408 added IN paramter
5310 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5311 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5312 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5313 )
5314 IS
5315 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
5316 l_project_number PA_PROJECTS_ALL.SEGMENT1%TYPE ;
5317 l_status_code PA_PROJECT_STATUSES.PROJECT_SYSTEM_STATUS_CODE%TYPE ;
5318 l_request_id PA_PROJ_ELEM_VER_STRUCTURE.CONC_REQUEST_ID%TYPE;
5319
5320 l_debug_mode VARCHAR2(1);
5321 l_msg_count NUMBER ;
5322 l_data VARCHAR2(2000);
5323 l_msg_data VARCHAR2(2000);
5324 l_msg_index_out NUMBER;
5325
5326 -- 3671408 removed following cursor
5327 -- as project_number is been directly passed to api,
5328 /*
5329 CURSOR c_project_number_from IS
5330 SELECT SEGMENT1
5331 FROM PA_PROJECTS_ALL
5332 WHERE PROJECT_ID = p_project_id ;
5333 */
5334 -- THE FOLLOWING CURSOR WILL NOT BE USED ANYWHERE
5335 /*CURSOR c_project_sys_status_code IS
5336 SELECT PROJECT_SYSTEM_STATUS_CODE
5337 FROM PA_PROJECT_STATUSES pps,
5338 PA_PROJECTS_ALL pa
5339 WHERE pa.PROJECT_ID = p_project_id
5340 AND pps.PROJECT_STATUS_CODE = pa.PROJECT_STATUS_CODE ;
5341 */
5342 PRAGMA AUTONOMOUS_TRANSACTION;
5343
5344 BEGIN
5345
5346 x_msg_count := 0;
5347 x_return_status := FND_API.G_RET_STS_SUCCESS;
5348 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
5349
5350 IF l_debug_mode = 'Y' THEN
5351 pa_debug.g_err_stage:= 'Entering RUN_ACTION_CONC_PROCESS_WRP';
5352 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5353
5354 pa_debug.set_curr_function( p_function => 'RUN_ACTION_CONC_PROCESS_WRP',
5355 p_debug_mode => l_debug_mode );
5356 END IF;
5357
5358 -- Initialise Message Stack
5359 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
5360 FND_MSG_PUB.initialize;
5361 END IF;
5362
5363 -- Define Save Point
5364 IF (p_commit = FND_API.G_TRUE) THEN
5365 savepoint RUN_ACTION_CONC_PROCESS_WRP_SP ;
5366 END IF;
5367
5368 --Printing Input Parameters
5369
5370 IF l_debug_mode = 'Y' THEN
5371 pa_debug.g_err_stage:= 'The Project Id is :' || p_project_id ;
5372 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5373 END IF ;
5374
5375 -- Validate Input parameters
5376 IF l_debug_mode = 'Y' THEN
5377 pa_debug.g_err_stage:= 'Validating Input parameters';
5378 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5379 END IF;
5380
5381 IF p_project_id IS NULL THEN
5382 IF l_debug_mode = 'Y' THEN
5383 pa_debug.g_err_stage:= 'Mandatory parameter to this API : Project ID is NULL';
5384 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5385 END IF;
5386 l_return_status := FND_API.G_RET_STS_ERROR;
5387 PA_UTILS.ADD_MESSAGE
5388 (p_app_short_name => 'PA',
5389 p_msg_name => 'PA_INV_PARAM_PASSED');
5390 RAISE Invalid_Arg_Exc_Dlv;
5391 END IF;
5392
5393 --Check for valid project id passed
5394 IF l_debug_mode = 'Y' THEN
5395 pa_debug.g_err_stage := 'Before doing cursor operation';
5396 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5397 END IF;
5398
5399 -- 3671408 project_number is passed directly to the api
5400 -- removed below code to retrieve and validate project_number
5401 /*
5402 OPEN c_project_number_from;
5403 FETCH c_project_number_from INTO l_project_number;
5404
5405 IF c_project_number_from%NOTFOUND THEN
5406 IF l_debug_mode = 'Y' THEN
5407 pa_debug.g_err_stage:= 'No Project Number returned for the passed Project ID ';
5408 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5409 END IF;
5410 l_return_status := FND_API.G_RET_STS_ERROR;
5411 PA_UTILS.ADD_MESSAGE
5412 (p_app_short_name => 'PA',
5413 p_msg_name => 'PA_INV_PARAM_PASSED');
5417 CLOSE c_project_number_from ;
5414 RAISE Invalid_Arg_Exc_Dlv;
5415 END IF;
5416
5418 */
5419
5420 -- 3671408 added below code to validate project_number
5421
5422 IF p_project_number IS NULL THEN
5423 IF l_debug_mode = 'Y' THEN
5424 pa_debug.g_err_stage:= 'No Project Number returned for the passed Project ID ';
5425 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5426 END IF;
5427 l_return_status := FND_API.G_RET_STS_ERROR;
5428 PA_UTILS.ADD_MESSAGE
5429 (p_app_short_name => 'PA',
5430 p_msg_name => 'PA_INV_PARAM_PASSED');
5431 RAISE Invalid_Arg_Exc_Dlv;
5432 END IF;
5433
5434 -- 3671408 end
5435
5436 IF l_debug_mode = 'Y' THEN
5437 pa_debug.g_err_stage := 'After doing cursor operation - Valid Project Number ';
5438 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5439 END IF;
5440
5441 -- If the new project status has not been committed into Database,this cursor will fail
5442 -- This is due to the Autonomous Transaction definition.So,commented the following code
5443 /* --If the project status is Approved,then only submit the request.
5444 --If not return
5445
5446 OPEN c_project_sys_status_code;
5447 FETCH c_project_sys_status_code into l_status_code ;
5448 CLOSE c_project_sys_status_code;
5449 IF nvl(l_status_code,'-99') <> 'APPROVED' THEN
5450 IF l_debug_mode = 'Y' THEN
5451 pa_debug.g_err_stage := 'The Project Status is not approved .So,No need to invoke concurrent process ';
5452 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5453 END IF;
5454 RETURN;
5455 END IF ;
5456 */
5457 -- Submit the request.
5458 l_request_id := fnd_request.submit_request
5459 (
5460 application => 'PA',
5461 program => 'PAINIACT',
5462 description => 'PRC: Initiate Project Deliverable Actions',
5463 start_time => NULL,
5464 sub_request => false,
5465 argument1 => 'DEMAND',
5466 argument2 => p_project_number, -- 3671408 changed parameter value to passed IN parameter
5467 argument3 => NULL
5468 );
5469 IF l_debug_mode = 'Y' THEN
5470 pa_debug.g_err_stage:= 'Request id is '||l_request_id;
5471 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5472 END IF;
5473
5474 -- Throw an error if the request could not be submitted.
5475 IF l_request_id = 0 THEN
5476 PA_UTILS.ADD_MESSAGE
5477 (p_app_short_name => 'PA',
5478 p_msg_name => 'PA_DLV_INI_CONC_PGM_ERR');
5479 RAISE Invalid_Arg_Exc_Dlv;
5480 END IF;
5481
5482 COMMIT ;
5483
5484 IF l_debug_mode = 'Y' THEN
5485 pa_debug.g_err_stage:= 'Exiting RUN_ACTION_CONC_PROCESS_WRP ' ;
5486 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5487 pa_debug.reset_curr_function; --Added for bug 4945876
5488 END IF;
5489 EXCEPTION
5490 WHEN Invalid_Arg_Exc_Dlv THEN
5491 x_return_status := FND_API.G_RET_STS_ERROR;
5492 l_msg_count := FND_MSG_PUB.count_msg;
5493
5494 -- 3671408 cursor is not used now , commented below code
5495 /*
5496 --Close any open cursors and roll back
5497 IF c_project_number_from%ISOPEN THEN
5498 CLOSE c_project_number_from;
5499 END IF;
5500 */
5501 -- 3671408 end
5502 /* IF c_project_sys_status_code%ISOPEN THEN
5503 CLOSE c_project_sys_status_code;
5504 END IF;*/
5505
5506 IF (p_commit = FND_API.G_TRUE) THEN
5507 ROLLBACK TO RUN_ACTION_CONC_PROCESS_WRP_SP;
5508 END IF ;
5509
5510 IF l_debug_mode = 'Y' THEN
5511 pa_debug.g_err_stage := 'Inside Invalid arg exception of RUN_ACTION_CONC_PROCESS_WRP';
5512 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
5513 END IF;
5514
5515 IF l_msg_count = 1 THEN
5516 PA_INTERFACE_UTILS_PUB.get_messages
5517 (p_encoded => FND_API.G_TRUE,
5518 p_msg_index => 1,
5519 p_msg_count => l_msg_count,
5520 p_msg_data => l_msg_data,
5521 p_data => l_data,
5522 p_msg_index_out => l_msg_index_out);
5523 x_msg_data := l_data;
5524 x_msg_count := l_msg_count;
5525 END IF;
5526 IF l_debug_mode = 'Y' THEN
5527 pa_debug.reset_curr_function;
5528 END IF ;
5529 RETURN;
5530 WHEN OTHERS THEN
5531 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5532 x_msg_count := 1;
5533 x_msg_data := SQLERRM;
5534
5535 -- 3671408 cursor is not used now, removed below code
5536 /*
5537 --Close any open cursors and roll back
5538 IF c_project_number_from%ISOPEN THEN
5539 CLOSE c_project_number_from;
5540 END IF;
5541 */
5542 -- 3671408
5543
5544 /*IF c_project_sys_status_code%ISOPEN THEN
5545 CLOSE c_project_sys_status_code;
5546 END IF;*/
5547
5548 IF (p_commit = FND_API.G_TRUE) THEN
5549 ROLLBACK TO RUN_ACTION_CONC_PROCESS_WRP_SP;
5550 END IF ;
5551
5552 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
5553 ,p_procedure_name => 'RUN_ACTION_CONC_PROCESS_WRP');
5554
5555 IF p_debug_mode = 'Y' THEN
5556 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
5560 RAISE;
5557 pa_debug.write(g_module_name, pa_debug.g_err_stage,5);
5558 pa_debug.reset_curr_function;
5559 END IF;
5561 END RUN_ACTION_CONC_PROCESS_WRP ;
5562
5563 /*==================================================================================
5564 This is the wrapper API which has to be called from FORMS whenever Project Status
5565 is changed to 'Approved' .This API inturn places call to another wrapper API
5566 RUN_ACTION_CONC_PROCESS_WRP - which places concurrent request for automatically
5567 generating demand (When the Project Status is 'Approved')
5568 ==================================================================================*/
5569
5570 PROCEDURE RUN_ACTION_CONC_FRM_WRP
5571 (
5572 p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE
5573 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5574 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5575 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5576 )
5577 IS
5578 l_project_number PA_PROJECTS_ALL.SEGMENT1%TYPE ;
5579
5580 -- 3671408 Added below cursor to retrieve project_number
5581
5582 CURSOR c_project_details(p_project_id PA_PROJECTS_ALL.PROJECT_ID%TYPE) IS
5583 SELECT segment1
5584 FROM PA_PROJECTS_ALL
5585 WHERE PROJECT_ID = p_project_id;
5586
5587 BEGIN
5588 x_msg_count := 0;
5589 x_return_status := FND_API.G_RET_STS_SUCCESS;
5590
5591 IF p_project_id IS NULL THEN
5592 x_return_status := FND_API.G_RET_STS_ERROR;
5593 PA_UTILS.ADD_MESSAGE
5594 (p_app_short_name => 'PA',
5595 p_msg_name => 'PA_INV_PARAM_PASSED');
5596 RAISE Invalid_Arg_Exc_Dlv;
5597 END IF;
5598
5599 -- 3671408 added code to retrieve project number
5600
5601 OPEN c_project_details(p_project_id) ;
5602 FETCH c_project_details INTO l_project_number ;
5603 CLOSE c_project_details;
5604
5605 --Bug 3752898
5606 --While Calling this API ,the Message Stack should not be re-initialized.
5607 --If it gets reinitialized it will break fix for Bug # 3134205
5608
5609 PA_ACTIONS_PUB.RUN_ACTION_CONC_PROCESS_WRP
5610 (
5611 p_calling_module => 'FORMS'
5612 ,p_init_msg_list => FND_API.G_FALSE -- 3752898 , Passing False to avoid re-initialization of Message Stack
5613 ,p_project_id => p_project_id
5614 ,p_project_number => l_project_number -- 3671408 , passing retrieved value
5615 ,x_return_status => x_return_status
5616 ,x_msg_count => x_msg_count
5617 ,x_msg_data => x_msg_data
5618 );
5619
5620 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5621 RAISE Invalid_Arg_Exc_Dlv ;
5622 END IF ;
5623
5624 EXCEPTION
5625 WHEN Invalid_Arg_Exc_Dlv THEN
5626
5627 -- 3671408 added code to handle cursor
5628 IF c_project_details%ISOPEN THEN
5629 CLOSE c_project_details;
5630 END IF;
5631
5632 x_return_status := FND_API.G_RET_STS_ERROR;
5633 x_msg_count := FND_MSG_PUB.count_msg;
5634 x_msg_data :='Invalid Argument Exception inside RUN_ACTION_CONC_FRM_WRP' || x_msg_data;
5635 RETURN;
5636 WHEN OTHERS THEN
5637 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5638 x_msg_count := FND_MSG_PUB.count_msg;
5639 x_msg_data := SQLERRM;
5640
5641 -- 3671408 added code to handle cursor
5642 IF c_project_details%ISOPEN THEN
5643 CLOSE c_project_details;
5644 END IF;
5645
5646 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
5647 ,p_procedure_name => 'RUN_ACTION_CONC_FRM_WRP');
5648
5649 RAISE;
5650 END RUN_ACTION_CONC_FRM_WRP;
5651
5652 END PA_ACTIONS_PUB;