[Home] [Help]
PACKAGE BODY: APPS.PA_ACTIONS_PUB
Source
1 PACKAGE BODY PA_ACTIONS_PUB as
2 /* $Header: PAACTNPB.pls 120.8 2011/06/20 10:03:13 tvala 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
2871 RETURN 'N';
2872 END IF;
2873 IF ( p_action_in_rec.initiate_procure_flag <> PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR
2874 AND p_action_in_rec.initiate_procure_flag IS NOT NULL) THEN
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
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() ;
2991 l_action_owner_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_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 l_next_row NUMBER := 1;
3061
3062 l_msg_index_out NUMBER;
3063 l_msg_count NUMBER ;
3064 l_data VARCHAR2(2000);
3065 l_msg_data VARCHAR2(2000);
3066 l_err_message fnd_new_messages.message_text%TYPE ;
3067
3068 Cursor C_vers (p_proj_element_id IN NUMBER) IS
3069 SELECT vers.element_version_id
3070 , elem.carrying_out_organization_id
3071 , proj.segment1
3072 , elem.element_Number
3073 , proj.project_id
3074 , Pa_Deliverable_Utils.IS_Dlvr_Item_Based(vers.element_version_id)
3075 FROM pa_proj_element_versions vers
3076 , pa_proj_elements elem
3077 , pa_projects_all proj
3078 WHERE vers.proj_element_id = elem.proj_element_id
3079 AND elem.project_id = vers.project_id
3080 AND elem.proj_element_id = p_Proj_element_id
3081 AND elem.project_id = proj.project_id
3082 AND elem.object_type = 'PA_DELIVERABLES';
3083
3084 CURSOR C_org_name (p_org_id IN NUMBER) IS
3085 SELECT name
3086 FROM pa_organizations_event_v
3087 WHERE organization_id = P_org_id
3088 AND TRUNC(SYSDATE) BETWEEN date_from AND nvl(date_to, TRUNC(SYSDATE));
3089
3090 -- 3651489 added cursor to retrieve actions' element version id
3091 -- proj element id is passed as argument
3092
3093 Cursor C_act_ver (p_proj_element_id IN NUMBER) IS
3094 SELECT pev.element_version_id
3095 FROM pa_proj_element_versions pev
3096 WHERE pev.proj_element_id = p_proj_element_id
3097 AND pev.object_type = 'PA_ACTIONS';
3098
3099 -- 3749462 changes for financial top task and lowest chargeable task validation
3100
3101 l_fin_task_id pa_proj_elements.proj_element_id%TYPE;
3102 --added for bug: 4537865
3103 l_new_fin_task_id pa_proj_elements.proj_element_id%TYPE;
3104 --added for bug: 4537865
3105 l_fin_task_ref VARCHAR2(25);
3106
3107
3108 Cursor is_top_task (project_id NUMBER, fin_task_id NUMBER) IS
3109 SELECT
3110 TASK_NUMBER
3111 FROM
3112 PA_TASKS
3113 WHERE
3114 PROJECT_ID = project_id
3115 AND TASK_ID = TOP_TASK_ID
3116 AND TASK_ID = fin_task_id;
3117
3118 Cursor is_lowest_task (project_id NUMBER, fin_task_id NUMBER) IS
3119 SELECT
3120 TASK_NUMBER
3121 FROM
3122 PA_TASKS
3123 WHERE
3124 PROJECT_ID = project_id
3125 AND TASK_ID = fin_task_id
3126 AND CHARGEABLE_FLAG = 'Y';
3127
3128 -- For Bug 3749447 , Added below local variables and cursor
3129
3130 l_unique_flag VARCHAR2(1);
3131
3132 Cursor C_dlvr_type(l_project_id NUMBER, l_deliverable_id NUMBER) IS
3133 SELECT type_id
3134 FROM PA_PROJ_ELEMENTS
3135 WHERE proj_element_id = l_deliverable_id
3136 AND project_id = l_project_id
3137 AND OBJECT_TYPE = 'PA_DELIVERABLES';
3138
3139 l_dlvr_type_id Pa_Proj_Elements.type_id%TYPE;
3140
3141 l_dlvr_prg_enabled VARCHAR2(1) := NULL;
3142 l_dlvr_action_enabled VARCHAR2(1) := NULL;
3143 l_status_code PA_PROJ_ELEMENTS.STATUS_CODE%TYPE;
3144
3145 -- end 3749447
3146
3147 -- 3651542 added local variable for defaulting
3148
3149 l_default_owner_id NUMBER;
3150 l_default_owner_name PER_ALL_PEOPLE_F.FULL_NAME%TYPE;
3151 l_default_date DATE;
3152 l_earliest_start_date DATE;
3153 l_earliest_finish_date DATE;
3154
3155 -- bug 7385017 skkoppul
3156 l_update_oke_yn VARCHAR2(1) := 'Y';
3157
3158 BEGIN
3159
3160 IF p_commit = FND_API.G_TRUE THEN
3161 SAVEPOINT create_dlvr_actions_wrapper;
3162 END IF;
3163 -- Standard call to check for call compatibility.
3164 IF NOT FND_API.Compatible_API_Call ( g_api_version_number ,
3165 p_api_version ,
3166 l_api_name ,
3167 G_PKG_NAME )
3168 THEN
3169 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3170 END IF;
3171
3172 -- Initialize the message table if requested.
3173 IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
3174 FND_MSG_PUB.initialize;
3175 END IF;
3176
3177 IF p_debug_mode = 'Y' THEN
3178 PA_DEBUG.set_curr_function( p_function => l_api_name,
3179 p_debug_mode => p_debug_mode );
3180 pa_debug.g_err_stage:= 'Inside '||l_api_name;
3181 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
3182 END IF;
3183
3184 -- Set API return status to success
3185 x_return_status := FND_API.G_RET_STS_SUCCESS;
3186
3187 -- OKE apis expect CREATE instead of INSERT. Initializing local variable
3188 -- l_action based on value of p_insert_or_update
3189
3190 IF (p_insert_or_update = g_insert) THEN
3191 l_action := g_create;
3192 ELSE
3193 l_action := p_insert_or_update;
3194 END IF;
3195
3196 i_actn := p_action_in_tbl.first();
3197
3198 WHILE i_actn IS NOT NULL LOOP
3199
3200 /* Bug # 3590235 : Added a condition to check null value for action_owner_id */
3201
3202 IF ( p_action_in_tbl(i_actn).action_owner_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM OR
3203 p_action_in_tbl(i_actn).action_owner_id IS NULL) THEN
3204 l_action_owner_id := null;
3205 ELSE
3206 l_action_owner_id := p_action_in_tbl(i_actn).action_owner_id ;
3207 END IF;
3208
3209 IF ( i_actn = p_action_in_tbl.first()) THEN
3210 l_object_id := p_action_in_tbl(i_actn).deliverable_id ;
3211 l_object_type := g_deliverables ;
3212 l_pm_source_code := nvl(p_action_in_tbl(i_actn).pm_source_code,'MSPROJECT') ;
3213
3214 -- Getting the project /deliverable related information
3215 Open C_vers (l_object_id);
3216 Fetch C_vers INTO l_object_version_id, l_carrying_out_organization_id,
3217 l_project_number, l_deliverable_number, l_project_id, l_item_dlv;
3218 Close C_vers;
3219
3220 Pa_Deliverable_Utils.Get_Project_Details (
3221 p_project_id => l_project_id
3222 ,x_projfunc_currency_code => l_projfunc_currency_code
3223 ,x_org_id => l_org_id
3224 );
3225
3226
3227 IF p_debug_mode = 'Y' THEN
3228 pa_debug.write(g_module_name,'Entering the loop fetched values obj id ['||l_object_id||']vers id['||l_object_version_id||']',3) ;
3229 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) ;
3230 pa_debug.write(g_module_name,'org id ['||l_org_id||']PFC['|| l_projfunc_currency_code||']item dlv['||l_item_dlv||']',3) ;
3231 END IF;
3232
3233 -- 3651542 Added below code to retrieve default owner and date in create mode
3234 -- Assumption : defaulting will done for 'PROJECT' only , for AMG task flow is not
3235 -- considered , Also, this will be in case of project , not the template
3236
3237 -- because of above assumption, passing task ver id null
3238 -- l_earliest_start_date and l_earliest_finish_date will be null
3239
3240 -- retrieve only once, i.e. this call will be made for only first action
3241
3242 IF (l_action = g_create) THEN
3243 PA_DELIVERABLE_UTILS.GET_DEFAULT_ACTN_DATE
3244 (
3245 p_dlvr_ver_id => l_object_version_id
3246 ,p_task_ver_id => NULL
3247 ,p_project_mode => 'PROJECT'
3248 ,x_due_date => l_default_date
3249 ,x_earliest_start_date => l_earliest_start_date
3250 ,x_earliest_finish_date => l_earliest_finish_date
3251 );
3252
3253 PA_DELIVERABLE_UTILS.GET_DEFAULT_ACTION_OWNER
3254 (
3255 p_dlvr_ver_id => l_object_version_id
3256 ,x_owner_id => l_default_owner_id
3257 ,x_owner_name => l_default_owner_name
3258 );
3259 END IF;
3260
3261 -- 3651542 end
3262 END IF;
3263
3264 -- 3749447 Start
3265 -- If this api is called for creating actions, do below validation
3266 -- 1. for deliverable, action is enabled
3267 -- 2. for deliverable, action reference is unique
3268 -- 3. action name is valid , i.e not null and not '^'
3269
3270 IF l_action = g_create THEN
3271
3272 OPEN C_dlvr_type(l_project_id,l_object_id);
3273 FETCH C_dlvr_Type INTO l_dlvr_type_id;
3274 CLOSE C_dlvr_type;
3275
3276 -- Will create actions only when deliverable type of deliverable
3277 -- has action creation enabled.
3278
3279 Pa_Deliverable_Utils.GET_DLVR_TYPE_INFO
3280 (
3281 p_dlvr_type_id => l_dlvr_type_id
3282 ,x_dlvr_prg_enabled => l_dlvr_prg_enabled
3283 ,x_dlvr_action_enabled => l_dlvr_action_enabled
3284 ,x_dlvr_default_status_code => l_status_code
3285 );
3286
3287 IF (l_dlvr_action_enabled <> 'Y') THEN
3288
3289 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3290 l_err_message := FND_MESSAGE.GET_STRING('PA','DLVR_ACTION_NOT_ENABLED') ;
3291 PA_UTILS.ADD_MESSAGE
3292 (p_app_short_name => 'PA',
3293 p_msg_name => 'PA_ACTION_VALID_ERR',
3294 p_token1 => 'PROJECT',
3295 p_value1 => l_project_number,
3296 p_token2 => 'DLVR_REFERENCE',
3297 p_value2 => l_deliverable_number,
3298 p_token3 => 'ACTION_REFERENCE',
3299 p_value3 => p_action_in_tbl(i_actn).pm_action_reference,
3300 p_token4 => 'MESSAGE',
3301 p_value4 => l_err_message
3302 );
3303 END IF;
3304
3305 x_return_status := FND_API.G_RET_STS_ERROR;
3306 RAISE FND_API.G_EXC_ERROR;
3307
3308 END IF;
3309
3310 -- Validate Action reference - not null, unique
3311 pa_deliverable_utils.is_action_reference_unique (
3312 p_action_reference => p_action_in_tbl(i_actn).pm_action_reference
3313 , p_deliverable_id => l_object_id
3314 , p_project_id => l_project_id
3315 , x_unique_flag => l_unique_flag
3316 , x_return_status => x_return_status
3317 );
3318
3319 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3320 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3321 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
3322 RAISE FND_API.G_EXC_ERROR;
3323 END IF;
3324
3325 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
3326
3327 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3328 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_ACTION_NAME_NULL_ERROR') ;
3329 PA_UTILS.ADD_MESSAGE
3330 (p_app_short_name => 'PA',
3331 p_msg_name => 'PA_ACTION_VALID_ERR',
3332 p_token1 => 'PROJECT',
3333 p_value1 => l_project_number,
3334 p_token2 => 'DLVR_REFERENCE',
3335 p_value2 => l_deliverable_number,
3336 p_token3 => 'ACTION_REFERENCE',
3337 p_value3 => p_action_in_tbl(i_actn).pm_action_reference,
3338 p_token4 => 'MESSAGE',
3339 p_value4 => l_err_message
3340 );
3341
3342 END IF;
3343 x_return_status := FND_API.G_RET_STS_ERROR;
3344 RAISE FND_API.G_EXC_ERROR;
3345
3346 END IF;
3347
3348 END IF;
3349
3350 -- end 3749447
3351
3352 -- Populating the action PLSQL table
3353
3354 l_action_name_tbl.extend;
3355 l_action_owner_id_tbl.extend;
3356 l_function_code_tbl.extend;
3357 l_due_date_tbl.extend;
3358 l_completed_flag_tbl.extend;
3359 l_completion_date_tbl.extend;
3360 l_element_version_id_tbl.extend;
3361 l_proj_element_id_tbl.extend;
3362 l_rec_ver_num_id_tbl.extend;
3363 l_description_tbl.extend;
3364 l_user_action_tbl.extend;
3365 l_pm_source_reference_tbl.extend;
3366
3367 l_attribute_category_tbl.extend;
3368 l_attribute1_tbl.extend ;
3369 l_attribute2_tbl.extend ;
3370 l_attribute3_tbl.extend ;
3371 l_attribute4_tbl.extend ;
3372 l_attribute5_tbl.extend ;
3373 l_attribute6_tbl.extend ;
3374 l_attribute7_tbl.extend ;
3375 l_attribute8_tbl.extend ;
3376 l_attribute9_tbl.extend ;
3377 l_attribute10_tbl.extend ;
3378 l_attribute11_tbl.extend ;
3379 l_attribute12_tbl.extend ;
3380 l_attribute13_tbl.extend ;
3381 l_attribute14_tbl.extend ;
3382 l_attribute15_tbl.extend ;
3383
3384 -- 3749462 changes for financial top task and lowest chargeable task validation
3385 l_fin_task_id_tbl.extend ;
3386 l_fin_task_num_tbl.extend ;
3387
3388 -- to be modified l_pm_source_code_tbl(i_actn) := p_action_in_tbl(i_actn).pm_source_code ;
3389 -- to be modified l_pm_source_reference_tbl(i_actn) := p_action_in_tbl(i_actn).pm_source_reference ;
3390
3391 -- Changed the direct initialization of local variables to select statement as values would differ in case of update or create bug 3651139
3392 IF (l_action = g_create) THEN
3393 SELECT
3394 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 )
3395 , l_action_owner_id
3396 , 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 )
3397 , 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 )
3398 , NULL --l_completed_flag
3399 , NULL --l_completion_date
3400 , NULL --l_element_version_id
3401 , NULL --l_proj_element_id
3402 , 1 --l_rec_ver_num_id
3403 , decode(p_action_in_tbl(i_actn).description ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).description )
3404 , p_insert_or_update
3405 , 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 )
3406 , NULL --l_attribute_category
3407 , NULL --l_attribute1
3408 , NULL --l_attribute2
3409 , NULL --l_attribute3
3410 , NULL --l_attribute4
3411 , NULL --l_attribute5
3412 , NULL --l_attribute6
3413 , NULL --l_attribute7
3414 , NULL --l_attribute8
3415 , NULL --l_attribute9
3416 , NULL --l_attribute10
3417 , NULL --l_attribute11
3418 , NULL --l_attribute12
3419 , NULL --l_attribute13
3420 , NULL --l_attribute14
3421 , NULL --l_attribute15
3422 INTO
3423 l_action_name_tbl(i_actn)
3424 , l_action_owner_id_tbl(i_actn)
3425 , l_function_code_tbl(i_actn)
3426 , l_due_date_tbl(i_actn)
3427 , l_completed_flag_tbl(i_actn)
3428 , l_completion_date_tbl(i_actn)
3429 , l_element_version_id_tbl(i_actn)
3430 , l_proj_element_id_tbl(i_actn)
3431 , l_rec_ver_num_id_tbl(i_actn)
3432 , l_description_tbl(i_actn)
3433 , l_user_action_tbl(i_actn)
3434 , l_pm_source_reference_tbl(i_actn)
3435 , l_attribute_category_tbl(i_actn)
3436 , l_attribute1_tbl(i_actn)
3437 , l_attribute2_tbl(i_actn)
3438 , l_attribute3_tbl(i_actn)
3439 , l_attribute4_tbl(i_actn)
3440 , l_attribute5_tbl(i_actn)
3441 , l_attribute6_tbl(i_actn)
3442 , l_attribute7_tbl(i_actn)
3443 , l_attribute8_tbl(i_actn)
3444 , l_attribute9_tbl(i_actn)
3445 , l_attribute10_tbl(i_actn)
3446 , l_attribute11_tbl(i_actn)
3447 , l_attribute12_tbl(i_actn)
3448 , l_attribute13_tbl(i_actn)
3449 , l_attribute14_tbl(i_actn)
3450 , l_attribute15_tbl(i_actn)
3451 FROM DUAL;
3452 ELSE -- UPDATE
3453 SELECT
3454 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 )
3455 , 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 )
3456 , 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 )
3457 , 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 )
3458 , decode(action_status_code , 'DLVR_COMPLETED', 'Y', 'N') --l_completed_flag
3459 , 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
3460 , element_version_id
3461 , proj_element_id
3462 , NULL --l_rec_ver_num_id
3463 , decode(p_action_in_tbl(i_actn).description ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , description, p_action_in_tbl(i_actn).description )
3464 -- 3729250 removed p_insert_or_update passing , for update expected value is 'MODIFIED'
3465 -- because CR_UP_DLV_ACTIONS_IN_BULK procedure is expecting this value to be 'MODIFIED' , not 'UPDATE'
3466 , g_modified
3467 , 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 )
3468 , attribute_category
3469 , attribute1
3470 , attribute2
3471 , attribute3
3472 , attribute4
3473 , attribute5
3474 , attribute6
3475 , attribute7
3476 , attribute8
3477 , attribute9
3478 , attribute10
3479 , attribute11
3480 , attribute12
3481 , attribute13
3482 , attribute14
3483 , attribute15
3484 INTO
3485 l_action_name_tbl(i_actn)
3486 , l_action_owner_id_tbl(i_actn)
3487 , l_function_code_tbl(i_actn)
3488 , l_due_date_tbl(i_actn)
3489 , l_completed_flag_tbl(i_actn)
3490 , l_completion_date_tbl(i_actn)
3491 , l_element_version_id_tbl(i_actn)
3492 , l_proj_element_id_tbl(i_actn)
3493 , l_rec_ver_num_id_tbl(i_actn)
3494 , l_description_tbl(i_actn)
3495 , l_user_action_tbl(i_actn)
3496 , l_pm_source_reference_tbl(i_actn)
3497 , l_attribute_category_tbl(i_actn)
3498 , l_attribute1_tbl(i_actn)
3499 , l_attribute2_tbl(i_actn)
3500 , l_attribute3_tbl(i_actn)
3501 , l_attribute4_tbl(i_actn)
3502 , l_attribute5_tbl(i_actn)
3503 , l_attribute6_tbl(i_actn)
3504 , l_attribute7_tbl(i_actn)
3505 , l_attribute8_tbl(i_actn)
3506 , l_attribute9_tbl(i_actn)
3507 , l_attribute10_tbl(i_actn)
3508 , l_attribute11_tbl(i_actn)
3509 , l_attribute12_tbl(i_actn)
3510 , l_attribute13_tbl(i_actn)
3511 , l_attribute14_tbl(i_actn)
3512 , l_attribute15_tbl(i_actn)
3513 FROM pa_dlvr_actions_V
3514 where proj_element_id = p_action_in_tbl(i_actn).action_id;
3515 END IF; -- l_action= g_create
3516
3517 -- 3651542 if create mode , check action_owner_id and due_date is not passed
3518 -- set default owner id and due date to local variable
3519
3520 IF (l_action = g_create) THEN
3521 IF p_action_in_tbl(i_actn).action_owner_id = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM THEN
3522 l_action_owner_id_tbl(i_actn) := l_default_owner_id;
3523 END IF;
3524
3525 IF p_action_in_tbl(i_actn).due_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE THEN
3526 l_due_date_tbl(i_actn) := l_default_date;
3527 END IF;
3528 END IF;
3529
3530 -- 3749462 changes for financial top task and lowest chargeable task validation
3531
3532 l_fin_task_id := NULL;
3533 l_fin_task_ref := NULL;
3534
3535 -- if passed financial task id or reference is not passed , set it to null
3536
3537 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
3538 l_fin_task_id := p_action_in_tbl(i_actn).financial_task_id;
3539 END IF;
3540
3541 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
3542 l_fin_task_ref := p_action_in_tbl(i_actn).financial_task_reference;
3543 END IF;
3544
3545 -- if task reference / id is passed , validate passed reference with id
3546 -- if only reference is passed, retrieve id
3547
3548 IF ( l_fin_task_id IS NOT NULL OR l_fin_task_ref IS NOT NULL ) THEN
3549
3550 PA_PROJECT_PVT.Convert_pm_taskref_to_id_all (
3551 p_pa_project_id => l_project_id
3552 , p_structure_type => 'FINANCIAL'
3553 , p_pa_task_id => l_fin_task_id
3554 , p_pm_task_reference => l_fin_task_ref
3555 -- , p_out_task_id => l_fin_task_id * added for bug: 4537865
3556 , p_out_task_id => l_new_fin_task_id
3557 -- * added for bug: 4537865
3558 , p_return_status => x_return_status );
3559
3560 --added for bug: 4537865
3561 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
3562 l_fin_task_id := l_new_fin_task_id;
3563 END IF;
3564 --added for bug: 4537865
3565
3566 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3567 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3568 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
3569 RAISE FND_API.G_EXC_ERROR;
3570 END IF;
3571
3572 IF l_function_code_tbl(i_actn) IN ( 'SHIPPING' , 'PROCUREMENT') THEN
3573
3574 -- For Procurement / Shipping action , validate passed financial task should be lowest chargeable task
3575
3576 Open is_lowest_task (l_project_id,l_fin_task_id);
3577 Fetch is_lowest_task INTO l_fin_task_num_tbl(i_actn);
3578
3579 IF is_lowest_task%NOTFOUND THEN
3580 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3581 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DLVR_INVALID_LOW_FIN_TASK') ;
3582 PA_UTILS.ADD_MESSAGE
3583 (p_app_short_name => 'PA',
3584 p_msg_name => 'PA_ACTION_VALID_ERR',
3585 p_token1 => 'PROJECT',
3586 p_value1 => l_project_number,
3587 p_token2 => 'DLVR_REFERENCE',
3588 p_value2 => l_deliverable_number,
3589 p_token3 => 'ACTION_REFERENCE',
3590 p_value3 => l_pm_source_reference_tbl(i_actn),
3591 p_token4 => 'MESSAGE',
3592 p_value4 => l_err_message
3593 );
3594
3595 END IF;
3596 x_return_status := FND_API.G_RET_STS_ERROR;
3597
3598 RAISE FND_API.G_EXC_ERROR;
3599 ELSE
3600 l_fin_task_id_tbl(i_actn) := l_fin_task_id;
3601 END IF;
3602
3603 Close is_lowest_task;
3604
3605 ELSIF l_function_code_tbl(i_actn) IN ( 'BILLING') THEN
3606
3607 -- For Billing action , validate passed financial task should be top financial task
3608
3609 Open is_top_task (l_project_id,l_fin_task_id);
3610 Fetch is_top_task INTO l_fin_task_num_tbl(i_actn);
3611
3612 IF is_top_task%NOTFOUND THEN
3613 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3614 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_DLVR_INVALID_TOP_FIN_TASK') ;
3615 PA_UTILS.ADD_MESSAGE
3616 (p_app_short_name => 'PA',
3617 p_msg_name => 'PA_ACTION_VALID_ERR',
3618 p_token1 => 'PROJECT',
3619 p_value1 => l_project_number,
3620 p_token2 => 'DLVR_REFERENCE',
3621 p_value2 => l_deliverable_number,
3622 p_token3 => 'ACTION_REFERENCE',
3623 p_value3 => l_pm_source_reference_tbl(i_actn),
3624 p_token4 => 'MESSAGE',
3625 p_value4 => l_err_message
3626 );
3627
3628 END IF;
3629 x_return_status := FND_API.G_RET_STS_ERROR;
3630
3631 RAISE FND_API.G_EXC_ERROR;
3632 ELSE
3633 l_fin_task_id_tbl(i_actn) := l_fin_task_id;
3634 END IF;
3635
3636 Close is_top_task;
3637
3638 END IF;
3639 ELSE
3640 l_fin_task_num_tbl(i_actn) := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
3641 END IF;
3642
3643 -- for bug# 3749462
3644 -- create mode, completion date is null and comleted flag will become 'N'
3645 -- update mode, if comp date is passed, make completed flag 'Y'
3646 -- update mode, if action is complte and comp date is not passed, completed flag will retain value from the db
3647
3648 IF l_completion_date_tbl(i_actn) IS NOT NULL THEN
3649 l_completed_flag_tbl(i_actn) := 'Y';
3650 END IF;
3651
3652 i_actn := p_action_in_tbl.next(i_actn);
3653
3654 END LOOP;
3655
3656 IF p_debug_mode = 'Y' THEN
3657 pa_debug.write(g_module_name,'Populated action PLSQL table, calling api for bulk insert',3) ;
3658 END IF;
3659
3660 -- Invoke the API to create dlvr actions in bulk.
3661
3662 Pa_Actions_Pub.CR_UP_DLV_ACTIONS_IN_BULK (
3663 p_init_msg_list => p_init_msg_list
3664 ,p_commit => p_commit
3665 ,p_validate_only => FND_API.G_FALSE
3666 ,p_validation_level => FND_API.G_VALID_LEVEL_FULL
3667 ,p_calling_module => 'AMG'
3668 ,p_debug_mode => p_debug_mode
3669 ,p_max_msg_count => NULL
3670 ,p_name_tbl => l_action_name_tbl
3671 ,p_manager_person_id_tbl => l_action_owner_id_tbl
3672 ,p_function_code_tbl => l_function_code_tbl
3673 ,p_due_date_tbl => l_due_date_tbl
3674 ,p_completed_flag_tbl => l_completed_flag_tbl
3675 ,p_completion_date_tbl => l_completion_date_tbl
3676 ,p_description_tbl => l_description_tbl
3677 ,p_element_version_id_tbl => l_element_version_id_tbl
3678 ,p_proj_element_id_tbl => l_proj_element_id_tbl
3679 ,p_user_action_tbl => l_user_action_tbl
3680 ,p_record_version_number_tbl => l_rec_ver_num_id_tbl
3681 ,p_attribute_category_tbl => l_attribute_category_tbl
3682 ,p_attribute1_tbl => l_attribute1_tbl
3683 ,p_attribute2_tbl => l_attribute2_tbl
3684 ,p_attribute3_tbl => l_attribute3_tbl
3685 ,p_attribute4_tbl => l_attribute4_tbl
3686 ,p_attribute5_tbl => l_attribute5_tbl
3687 ,p_attribute6_tbl => l_attribute6_tbl
3688 ,p_attribute7_tbl => l_attribute7_tbl
3689 ,p_attribute8_tbl => l_attribute8_tbl
3690 ,p_attribute9_tbl => l_attribute9_tbl
3691 ,p_attribute10_tbl => l_attribute10_tbl
3692 ,p_attribute11_tbl => l_attribute11_tbl
3693 ,p_attribute12_tbl => l_attribute12_tbl
3694 ,p_attribute13_tbl => l_attribute13_tbl
3695 ,p_attribute14_tbl => l_attribute14_tbl
3696 ,p_attribute15_tbl => l_attribute15_tbl
3697 ,p_project_id => l_project_id
3698 ,p_object_id => l_object_id
3699 ,p_object_version_id => l_object_version_id
3700 ,p_object_type => l_object_type
3701 ,p_pm_source_code => l_pm_source_code
3702 ,p_pm_source_reference => l_pm_source_reference
3703 ,p_pm_source_reference_tbl => l_pm_source_reference_tbl
3704 ,p_carrying_out_organization_id => l_carrying_out_organization_id
3705 ,p_insert_or_update => p_insert_or_update
3706 ,x_return_status => x_return_status
3707 ,x_msg_count => x_msg_count
3708 ,x_msg_data => x_msg_data);
3709
3710 IF p_debug_mode = 'Y' THEN
3711 pa_debug.write(g_module_name,'Returned from Pa_Actions_Pub.CR_UP_DLV_ACTIONS_IN_BULK ['||x_return_status||']',5);
3712 END IF;
3713
3714 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3715 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3716 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3717 RAISE FND_API.G_EXC_ERROR;
3718 END IF;
3719
3720 -- After successfull creation of actions, looping the action-in table and populating
3721 -- OKE and Billing PLSQL tables
3722
3723 i_actn := p_action_in_tbl.first();
3724
3725 WHILE i_actn IS NOT NULL LOOP
3726
3727 -- bug 7385017 skkoppul - default it to 'Y' as we are looping through
3728 l_update_oke_yn := 'Y';
3729
3730 -- Derive the action_id based on action reference in case of INSERT only.
3731 -- It is not required in case of UPDATE as action id will be passed as in parameter.
3732
3733 IF (p_insert_or_update = 'INSERT') THEN
3734
3735 Pa_Deliverable_Utils.Convert_pm_actionref_to_id
3736 (
3737 p_action_reference => p_action_in_tbl(i_actn).pm_action_reference
3738 ,p_action_id => null
3739 ,p_deliverable_id => l_object_id
3740 ,p_project_id => l_Project_id
3741 ,p_out_action_id => l_action_id
3742 ,p_return_status => x_return_status
3743 );
3744
3745 l_next_row := NVL(x_action_out_tbl.LAST, 0)+ 1;
3746 x_action_out_tbl(l_next_row).action_id := l_action_id;
3747 x_action_out_tbl(l_next_row).return_status := x_return_status;
3748
3749 ELSE -- p_insert_or_update = 'INSERT'
3750
3751 -- bug 7385017 skkoppul - if action record is empty,
3752 -- OKE_AMG_GRP.manage_dlv_action should not be called so update the flag
3753 IF is_action_rec_empty_yn(p_action_in_tbl(i_actn),l_function_code_tbl(i_actn)) = 'Y' THEN
3754 l_update_oke_yn := 'N';
3755 END IF;
3756
3757 l_action_id := p_action_in_tbl(i_actn).action_id;
3758
3759 END IF; --p_insert_or_update = 'INSERT'
3760
3761 IF p_debug_mode = 'Y' THEN
3762 pa_debug.write(g_module_name,'Derived action id ['||l_action_id||']for reference['||p_action_in_tbl(i_actn).pm_action_reference||
3763 ']status['||x_return_status||']',5);
3764 END IF;
3765
3766 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3767 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3768 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3769 RAISE FND_API.G_EXC_ERROR;
3770 END IF;
3771
3772 IF p_debug_mode = 'Y' THEN
3773 pa_debug.write(g_module_name,'Should we update OKE attributes? '||l_update_oke_yn);
3774 END IF;
3775
3776 -- bug 7385017 skkoppul - Update only in case of changes to OKE attributes
3777 -- Bug 7759051 - l_update_oke_yn should demarcate the code only for OKE procurement and shipping and *not* billing action
3778 -- IF l_update_oke_yn = 'Y' THEN
3779
3780 -- 3651489 retrieving action's element version id
3781
3782 Open C_act_ver (l_action_id);
3783 Fetch C_act_ver INTO l_actn_version_id;
3784 Close C_act_ver;
3785
3786 -- Populating the OKE Procurement PLSQL table
3787
3788 -- 3729250, In update mode, if function is not passed, p_action_in_tbl(i_actn).function_code value is G_PA_MISS_CHAR
3789 -- and so below condition was failing and oke data was not getting updated
3790 -- changed from p_action_in_tbl(i_actn).function_code to l_function_code_tbl(i_actn)
3791 IF ( l_function_code_tbl(i_actn) = g_procurement) THEN
3792
3793 IF l_update_oke_yn = 'Y' THEN -- Bug 7759051 (For OKE Procurement)
3794
3795 i_proc := i_proc + 1;
3796
3797 IF (l_action = g_create) THEN -- added IF condition and else part of the code bug 3651139
3798 SELECT l_object_version_id
3799 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3800 , 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 )
3801 , 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
3802 , 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 )
3803 , 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 )
3804 , 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 )
3805 -- 3729250 , po_need_by_date should be populated with procurement action due date
3806 -- 3749462 changed from po_need_by_date to p_action_in_tbl(i_actn).due_date
3807 , 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
3808 , 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 )
3809 , 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 )
3810 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).quantity )
3811 , 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 )
3812 , 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 )
3813 , 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 )
3814 , 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 )
3815 , 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 )
3816 , 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 )
3817 , 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 )
3818 , 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 )
3819 , 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 )
3820 , 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 )
3821 , 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 )
3822 , 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 )
3823 , decode(p_action_in_tbl(i_actn).currency ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR , null, p_action_in_tbl(i_actn).currency )
3824 INTO
3825 l_dlv_req_action_tbl(i_proc).pa_deliverable_id
3826 , l_dlv_req_action_tbl(i_proc).pa_action_id
3827 , l_dlv_req_action_tbl(i_proc).action_name
3828 , l_dlv_req_action_tbl(i_proc).proc_finnancial_task_id
3829 , l_dlv_req_action_tbl(i_proc).destination_type_code
3830 , l_dlv_req_action_tbl(i_proc).receiving_org_id
3831 , l_dlv_req_action_tbl(i_proc).receiving_location_id
3832 , l_dlv_req_action_tbl(i_proc).po_need_by_date
3833 , l_dlv_req_action_tbl(i_proc).vendor_id
3834 , l_dlv_req_action_tbl(i_proc).vendor_site_id
3835 , l_dlv_req_action_tbl(i_proc).quantity
3836 , l_dlv_req_action_tbl(i_proc).unit_price
3837 , l_dlv_req_action_tbl(i_proc).exchange_rate_type
3838 , l_dlv_req_action_tbl(i_proc).exchange_rate_date
3839 , l_dlv_req_action_tbl(i_proc).exchange_rate
3840 , l_dlv_req_action_tbl(i_proc).expenditure_type
3841 , l_dlv_req_action_tbl(i_proc).expenditure_org_id
3842 , l_dlv_req_action_tbl(i_proc).expenditure_item_date
3843 , l_dlv_req_action_tbl(i_proc).requisition_line_type_id
3844 , l_dlv_req_action_tbl(i_proc).category_id
3845 , l_dlv_req_action_tbl(i_proc).ready_to_procure_flag
3846 , l_dlv_req_action_tbl(i_proc).initiate_procure_flag
3847 , l_dlv_req_action_tbl(i_proc).uom_code
3848 , l_dlv_req_action_tbl(i_proc).currency
3849 FROM DUAL;
3850
3851 ELSE -- UPDATE
3852
3853 SELECT l_object_version_id
3854 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3855 , 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 )
3856 , decode(l_fin_task_id_tbl(i_actn) ,NULL , task_id , l_fin_task_id_tbl(i_actn) ) -- for bug# 3749462
3857 , 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 )
3858 , 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 )
3859 , 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 )
3860 -- 3729250 , po_need_by_date should be populated with procurement action due date
3861 -- 3749462 changed from po_need_by_date to l_due_date_tbl(i_actn)
3862 , l_due_date_tbl(i_actn)
3863 , 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 )
3864 , 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 )
3865 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , quantity , p_action_in_tbl(i_actn).quantity )
3866 , 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 )
3867 , 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 )
3868 , 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 )
3869 , 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 )
3870 , 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 )
3871 , 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 )
3872 , 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 )
3873 , 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 )
3874 , 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 )
3875 , 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 )
3876 , 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 )
3877 , 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 )
3878 , 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 )
3879 INTO
3880 l_dlv_req_action_tbl(i_proc).pa_deliverable_id
3881 , l_dlv_req_action_tbl(i_proc).pa_action_id
3882 , l_dlv_req_action_tbl(i_proc).action_name
3883 , l_dlv_req_action_tbl(i_proc).proc_finnancial_task_id
3884 , l_dlv_req_action_tbl(i_proc).destination_type_code
3885 , l_dlv_req_action_tbl(i_proc).receiving_org_id
3886 , l_dlv_req_action_tbl(i_proc).receiving_location_id
3887 , l_dlv_req_action_tbl(i_proc).po_need_by_date
3888 , l_dlv_req_action_tbl(i_proc).vendor_id
3889 , l_dlv_req_action_tbl(i_proc).vendor_site_id
3890 , l_dlv_req_action_tbl(i_proc).quantity
3891 , l_dlv_req_action_tbl(i_proc).unit_price
3892 , l_dlv_req_action_tbl(i_proc).exchange_rate_type
3893 , l_dlv_req_action_tbl(i_proc).exchange_rate_date
3894 , l_dlv_req_action_tbl(i_proc).exchange_rate
3895 , l_dlv_req_action_tbl(i_proc).expenditure_type
3896 , l_dlv_req_action_tbl(i_proc).expenditure_org_id
3897 , l_dlv_req_action_tbl(i_proc).expenditure_item_date
3898 , l_dlv_req_action_tbl(i_proc).requisition_line_type_id
3899 , l_dlv_req_action_tbl(i_proc).category_id
3900 , l_dlv_req_action_tbl(i_proc).ready_to_procure_flag
3901 , l_dlv_req_action_tbl(i_proc).initiate_procure_flag
3902 , l_dlv_req_action_tbl(i_proc).uom_code
3903 , l_dlv_req_action_tbl(i_proc).currency
3904 FROM oke_deliverable_actions_v
3905 WHERE pa_action_id = l_actn_version_id;
3906
3907 END IF; -- l_action= g_create
3908
3909 IF p_debug_mode = 'Y' THEN
3910 pa_debug.write(g_module_name,'Populated OKE Procurement PLSQL table',3) ;
3911 END IF;
3912
3913 END IF; -- Bug 7759051 (For OKE Procurement)
3914
3915 -- 3729250, In update mode, if function is not passed, p_action_in_tbl(i_actn).function_code value is G_PA_MISS_CHAR
3916 -- and so below condition was failing and oke data was not getting updated
3917 -- changed from p_action_in_tbl(i_actn).function_code to l_function_code_tbl(i_actn)
3918
3919 ELSIF ( l_function_code_tbl(i_actn) = g_shipping) THEN
3920
3921 IF l_update_oke_yn = 'Y' THEN -- Bug 7759051 (For OKE Shipping)
3922
3923 -- Populating the OKE Shipping PLSQL table
3924 i_ship := i_ship + 1;
3925
3926 IF (l_action = g_create) THEN -- added IF condition and else part of the code bug 3651139
3927 SELECT l_object_version_id
3928 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3929 , 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 )
3930 , 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
3931 , 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 )
3932 , 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 )
3933 , 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 )
3934 , 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 )
3935 , 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 )
3936 , 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 )
3937 -- 3729250 , expected_shipment_date should be populated with shipping action due date
3938 -- 3749462 , changed from p_action_in_tbl(i_actn).expected_shipment_date to p_action_in_tbl(i_actn).due_date
3939 , 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
3940 , decode(p_action_in_tbl(i_actn).volume ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).volume )
3941 , 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 )
3942 , decode(p_action_in_tbl(i_actn).weight ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).weight )
3943 , 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 )
3944 , 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 )
3945 , 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 )
3946 , 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 )
3947 , 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 )
3948 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , null, p_action_in_tbl(i_actn).quantity )
3949 INTO
3950 l_dlv_ship_action_tbl(i_ship).pa_deliverable_id
3951 , l_dlv_ship_action_tbl(i_ship).pa_action_id
3952 , l_dlv_ship_action_tbl(i_ship).action_name
3953 , l_dlv_ship_action_tbl(i_ship).ship_finnancial_task_id
3954 , l_dlv_ship_action_tbl(i_ship).demand_schedule
3955 , l_dlv_ship_action_tbl(i_ship).ship_from_organization_id
3956 , l_dlv_ship_action_tbl(i_ship).ship_from_location_id
3957 , l_dlv_ship_action_tbl(i_ship).ship_to_organization_id
3958 , l_dlv_ship_action_tbl(i_ship).ship_to_location_id
3959 , l_dlv_ship_action_tbl(i_ship).promised_shipment_date
3960 , l_dlv_ship_action_tbl(i_ship).expected_shipment_date
3961 , l_dlv_ship_action_tbl(i_ship).volume
3962 , l_dlv_ship_action_tbl(i_ship).volume_uom
3963 , l_dlv_ship_action_tbl(i_ship).weight
3964 , l_dlv_ship_action_tbl(i_ship).weight_uom
3965 , l_dlv_ship_action_tbl(i_ship).ready_to_ship_flag
3966 , l_dlv_ship_action_tbl(i_ship).initiate_planning_flag
3967 , l_dlv_ship_action_tbl(i_ship).initiate_shipping_flag
3968 , l_dlv_ship_action_tbl(i_ship).uom_code
3969 , l_dlv_ship_action_tbl(i_ship).quantity
3970 FROM DUAL;
3971
3972 ELSE -- UPDATE
3973 SELECT l_object_version_id
3974 , l_actn_version_id -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
3975 , 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 )
3976 , decode(l_fin_task_id_tbl(i_actn) ,NULL , task_id , l_fin_task_id_tbl(i_actn) ) -- for bug# 3749462
3977 , 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 )
3978 , 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 )
3979 , 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 )
3980 , 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 )
3981 , 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 )
3982 , 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 )
3983 -- 3729250 , expected_shipment_date should be populated with shipping action due date
3984 -- 3749462 , changed from p_action_in_tbl(i_actn).expected_shipment_date to l_due_date_tbl(i_actn)
3985 , l_due_date_tbl(i_actn)
3986 , decode(p_action_in_tbl(i_actn).volume ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , volume , p_action_in_tbl(i_actn).volume )
3987 , 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 )
3988 , decode(p_action_in_tbl(i_actn).weight ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , weight , p_action_in_tbl(i_actn).weight )
3989 , 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 )
3990 , 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 )
3991 , 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 )
3992 , 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 )
3993 , 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 )
3994 , decode(p_action_in_tbl(i_actn).quantity ,PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM , quantity , p_action_in_tbl(i_actn).quantity )
3995 INTO
3996 l_dlv_ship_action_tbl(i_ship).pa_deliverable_id
3997 , l_dlv_ship_action_tbl(i_ship).pa_action_id
3998 , l_dlv_ship_action_tbl(i_ship).action_name
3999 , l_dlv_ship_action_tbl(i_ship).ship_finnancial_task_id
4000 , l_dlv_ship_action_tbl(i_ship).demand_schedule
4001 , l_dlv_ship_action_tbl(i_ship).ship_from_organization_id
4002 , l_dlv_ship_action_tbl(i_ship).ship_from_location_id
4003 , l_dlv_ship_action_tbl(i_ship).ship_to_organization_id
4004 , l_dlv_ship_action_tbl(i_ship).ship_to_location_id
4005 , l_dlv_ship_action_tbl(i_ship).promised_shipment_date
4006 , l_dlv_ship_action_tbl(i_ship).expected_shipment_date
4007 , l_dlv_ship_action_tbl(i_ship).volume
4008 , l_dlv_ship_action_tbl(i_ship).volume_uom
4009 , l_dlv_ship_action_tbl(i_ship).weight
4010 , l_dlv_ship_action_tbl(i_ship).weight_uom
4011 , l_dlv_ship_action_tbl(i_ship).ready_to_ship_flag
4012 , l_dlv_ship_action_tbl(i_ship).initiate_planning_flag
4013 , l_dlv_ship_action_tbl(i_ship).initiate_shipping_flag
4014 , l_dlv_ship_action_tbl(i_ship).uom_code
4015 , l_dlv_ship_action_tbl(i_ship).quantity
4016 FROM oke_deliverable_actions_v
4017 WHERE pa_action_id = l_actn_version_id;
4018
4019 END IF; -- l_action= g_create
4020
4021 /* INSPECTION_REQ_FLAG Varchar2(1),*/
4022
4023 IF p_debug_mode = 'Y' THEN
4024 pa_debug.write(g_module_name,'Populated OKE Shipping PLSQL table',3) ;
4025 END IF;
4026
4027 END IF; -- Bug 7759051 (For OKE Shipping)
4028
4029 -- 3729250, In update mode, if function is not passed, p_action_in_tbl(i_actn).function_code value is G_PA_MISS_CHAR
4030 -- and so below condition was failing and oke data was not getting updated
4031 -- changed from p_action_in_tbl(i_actn).function_code to l_function_code_tbl(i_actn)
4032 ELSIF ( l_function_code_tbl(i_actn) = g_billing) THEN
4033
4034 -- 4027500 Passing l_organization_name as PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR if update mode and p_organization_id
4035 -- is not passed
4036 -- else call C_org_name to derive organization_name from id
4037 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
4038 l_organization_name := PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR;
4039 ELSE
4040 OPEN C_org_name(p_action_in_tbl(i_actn).organization_id);
4041 FETCH C_org_name INTO l_organization_name;
4042 IF (C_org_name%rowcount = 0 ) THEN
4043 l_err_message := FND_MESSAGE.GET_STRING('PA','PA_INVALID_EVNT_ORG_AMG') ; -- 3810957, changed error msg code
4044 PA_UTILS.ADD_MESSAGE
4045 (p_app_short_name => 'PA',
4046 p_msg_name => 'PA_ACTN_VALID_ERR',
4047 p_token1 => 'PROJECT',
4048 p_value1 => l_project_number,
4049 p_token2 => 'DLVR_REFERENCE',
4050 p_value2 => l_deliverable_number,
4051 p_token3 => 'MESSAGE',
4052 p_value3 => l_err_message
4053 );
4054 x_return_status := FND_API.G_RET_STS_ERROR;
4055 CLOSE C_org_name;
4056
4057 -- Added for bug# 3810957 , throwing invalid cursor error
4058 -- here, C_org_name cursor was closed and second time closing it was throwing above error
4059 -- if invalid event org id , set return status to 'E' , close the cursor and raise FND_API.G_EXC_ERROR exception
4060 RAISE FND_API.G_EXC_ERROR;
4061 -- 3810957 end
4062 END IF;
4063 CLOSE C_org_name;
4064 END IF;
4065
4066 IF p_debug_mode = 'Y' THEN
4067 pa_debug.write(g_module_name,'Organization name derived ['||l_organization_name||']',3) ;
4068 END IF;
4069
4070 -- Bug 7759051
4071 IF ((l_action <> g_create) AND
4072 ((p_action_in_tbl(i_actn).pm_event_reference IS NOT NULL AND
4073 p_action_in_tbl(i_actn).pm_event_reference = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4074 (l_fin_task_num_tbl(i_actn) IS NOT NULL AND
4075 l_fin_task_num_tbl(i_actn) = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4076 (p_action_in_tbl(i_actn).event_type IS NOT NULL AND
4077 p_action_in_tbl(i_actn).event_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4078 (p_action_in_tbl(i_actn).description IS NOT NULL AND
4079 p_action_in_tbl(i_actn).description = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4080 (p_action_in_tbl(i_actn).bill_hold_flag IS NOT NULL AND
4081 p_action_in_tbl(i_actn).bill_hold_flag = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4082 (l_organization_name IS NOT NULL AND
4083 l_organization_name = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4084 (p_action_in_tbl(i_actn).quantity IS NOT NULL AND
4085 p_action_in_tbl(i_actn).quantity = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
4086 (p_action_in_tbl(i_actn).uom_code IS NOT NULL AND
4087 p_action_in_tbl(i_actn).uom_code = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4088 (p_action_in_tbl(i_actn).unit_price IS NOT NULL AND
4089 p_action_in_tbl(i_actn).unit_price = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
4090 (p_action_in_tbl(i_actn).currency IS NOT NULL AND
4091 p_action_in_tbl(i_actn).currency = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4092 (p_action_in_tbl(i_actn).invoice_amount IS NOT NULL AND
4093 p_action_in_tbl(i_actn).invoice_amount = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
4094 (p_action_in_tbl(i_actn).revenue_amount IS NOT NULL AND
4095 p_action_in_tbl(i_actn).revenue_amount = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
4096 (p_action_in_tbl(i_actn).project_rate_type IS NOT NULL AND
4097 p_action_in_tbl(i_actn).project_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4098 (p_action_in_tbl(i_actn).project_rate_date IS NOT NULL AND
4099 p_action_in_tbl(i_actn).project_rate_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) AND
4100 (p_action_in_tbl(i_actn).project_rate IS NOT NULL AND
4101 p_action_in_tbl(i_actn).project_rate = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
4102 (p_action_in_tbl(i_actn).project_functional_rate_type IS NOT NULL AND
4103 p_action_in_tbl(i_actn).project_functional_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4104 (p_action_in_tbl(i_actn).project_functional_rate_date IS NOT NULL AND
4105 p_action_in_tbl(i_actn).project_functional_rate_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) AND
4106 (p_action_in_tbl(i_actn).project_functional_rate IS NOT NULL AND
4107 p_action_in_tbl(i_actn).project_functional_rate = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM) AND
4108 (p_action_in_tbl(i_actn).funding_rate_type IS NOT NULL AND
4109 p_action_in_tbl(i_actn).funding_rate_type = PA_INTERFACE_UTILS_PUB.G_PA_MISS_CHAR) AND
4110 (p_action_in_tbl(i_actn).funding_rate_date IS NOT NULL AND
4111 p_action_in_tbl(i_actn).funding_rate_date = PA_INTERFACE_UTILS_PUB.G_PA_MISS_DATE) AND
4112 (p_action_in_tbl(i_actn).funding_rate IS NOT NULL AND
4113 p_action_in_tbl(i_actn).funding_rate = PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM))
4114 )THEN
4115 -- In Update context, if none of the billing event related parameters are passed,
4116 -- then it is not required to call pa_event_pub.update_event
4117 NULL;
4118 ELSE
4119
4120 -- Populating the Billing Event PLSQL table
4121 i_bill := i_bill + 1;
4122
4123 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
4124 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
4125 l_event_in_tbl(i_bill).p_event_number := null ;
4126 l_event_in_tbl(i_bill).p_event_type := p_action_in_tbl(i_actn).event_type ;
4127 l_event_in_tbl(i_bill).p_description := p_action_in_tbl(i_actn).description ;
4128 l_event_in_tbl(i_bill).p_bill_hold_flag := p_action_in_tbl(i_actn).bill_hold_flag ;
4129 l_event_in_tbl(i_bill).p_completion_date := l_completion_date_tbl(i_actn) ; -- 3749462 , create mode event date can't be set
4130 l_event_in_tbl(i_bill).p_project_number := l_project_number ;
4131 l_event_in_tbl(i_bill).p_organization_name := l_organization_name ;
4132 l_event_in_tbl(i_bill).p_inventory_org_name := null ;
4133 l_event_in_tbl(i_bill).p_inventory_item_id := null ;
4134 l_event_in_tbl(i_bill).p_quantity_billed := p_action_in_tbl(i_actn).quantity ;
4135 l_event_in_tbl(i_bill).p_uom_code := p_action_in_tbl(i_actn).uom_code ;
4136 l_event_in_tbl(i_bill).p_unit_price := p_action_in_tbl(i_actn).unit_price ;
4137 l_event_in_tbl(i_bill).p_bill_trans_currency_code := p_action_in_tbl(i_actn).currency ;
4138 l_event_in_tbl(i_bill).p_bill_trans_bill_amount:= p_action_in_tbl(i_actn).invoice_amount ;
4139 l_event_in_tbl(i_bill).p_bill_trans_rev_amount := p_action_in_tbl(i_actn).revenue_amount ;
4140 l_event_in_tbl(i_bill).p_project_rate_type := p_action_in_tbl(i_actn).project_rate_type ;
4141 l_event_in_tbl(i_bill).p_project_rate_date := p_action_in_tbl(i_actn).project_rate_date ;
4142 l_event_in_tbl(i_bill).p_project_exchange_rate := p_action_in_tbl(i_actn).project_rate ;
4143 l_event_in_tbl(i_bill).p_projfunc_rate_type := p_action_in_tbl(i_actn).project_functional_rate_type;
4144 l_event_in_tbl(i_bill).p_projfunc_rate_date := p_action_in_tbl(i_actn).project_functional_rate_date;
4145 l_event_in_tbl(i_bill).p_projfunc_exchange_rate:= p_action_in_tbl(i_actn).project_functional_rate ;
4146 l_event_in_tbl(i_bill).p_funding_rate_type := p_action_in_tbl(i_actn).funding_rate_type ;
4147 l_event_in_tbl(i_bill).p_funding_rate_date := p_action_in_tbl(i_actn).funding_rate_date ;
4148 l_event_in_tbl(i_bill).p_funding_exchange_rate := p_action_in_tbl(i_actn).funding_rate ;
4149 l_event_in_tbl(i_bill).p_adjusting_revenue_flag:= null ;
4150 l_event_in_tbl(i_bill).p_event_id := NULL ;
4151 -- 3651489 changed from deliverable proj element id to version id, as element version id should be passed to billing
4152 l_event_in_tbl(i_bill).p_deliverable_id := l_object_version_id ;
4153 -- 3651489 changed from l_action_id to l_actn_version_id, as element version id should be passed to oke
4154 l_event_in_tbl(i_bill).p_action_id := l_actn_version_id ;
4155 l_event_in_tbl(i_bill).p_context := 'D' ;-- to be passed as 'D' for deliverable action event
4156 l_event_in_tbl(i_bill).p_record_version_number := 1 ;
4157
4158 IF p_debug_mode = 'Y' THEN
4159 pa_debug.write(g_module_name,'Populated Billing PLSQL table',3) ;
4160 END IF;
4161
4162 END IF; -- Bug 7759051 (For Billing events)
4163
4164 ELSE
4165 i_none := i_none + 1;
4166
4167 IF p_debug_mode = 'Y' THEN
4168 pa_debug.write(g_module_name,'Function code is NONE',3) ;
4169 END IF;
4170 END IF;
4171
4172 -- Bug 7759051 - Reduced the scope to only OKE Procurement and Shipping
4173 -- END IF;
4174 i_actn := p_action_in_tbl.next(i_actn);
4175
4176 END LOOP; -- i_act is not null
4177
4178 IF p_debug_mode = 'Y' THEN
4179 pa_debug.write(g_module_name,'action processed ['||i_actn||']bill['||i_bill||']proc['||i_proc||']ship['||i_ship||']none['||i_none||']',5);
4180 END IF;
4181
4182 -- Invoke the API to create records in OKE tables
4183 IF ( i_ship > 0) THEN
4184
4185 i_ship1 := l_dlv_ship_action_tbl.first();
4186
4187 WHILE (i_ship1 IS NOT NULL) LOOP
4188
4189 l_dlv_ship_action_rec.pa_deliverable_id := l_dlv_ship_action_tbl(i_ship1).pa_deliverable_id ;
4190 l_dlv_ship_action_rec.pa_action_id := l_dlv_ship_action_tbl(i_ship1).pa_action_id ;
4191 l_dlv_ship_action_rec.action_name := l_dlv_ship_action_tbl(i_ship1).action_name ;
4192 l_dlv_ship_action_rec.ship_finnancial_task_id := l_dlv_ship_action_tbl(i_ship1).ship_finnancial_task_id ;
4193 l_dlv_ship_action_rec.demand_schedule := l_dlv_ship_action_tbl(i_ship1).demand_schedule ;
4194 l_dlv_ship_action_rec.ship_from_organization_id := l_dlv_ship_action_tbl(i_ship1).ship_from_organization_id;
4195 l_dlv_ship_action_rec.ship_from_location_id := l_dlv_ship_action_tbl(i_ship1).ship_from_location_id ;
4196 l_dlv_ship_action_rec.ship_to_organization_id := l_dlv_ship_action_tbl(i_ship1).ship_to_organization_id ;
4197 l_dlv_ship_action_rec.ship_to_location_id := l_dlv_ship_action_tbl(i_ship1).ship_to_location_id ;
4198 l_dlv_ship_action_rec.promised_shipment_date := l_dlv_ship_action_tbl(i_ship1).promised_shipment_date ;
4199 l_dlv_ship_action_rec.volume := l_dlv_ship_action_tbl(i_ship1).volume ;
4200 l_dlv_ship_action_rec.volume_uom := l_dlv_ship_action_tbl(i_ship1).volume_uom ;
4201 l_dlv_ship_action_rec.weight := l_dlv_ship_action_tbl(i_ship1).weight ;
4202 l_dlv_ship_action_rec.weight_uom := l_dlv_ship_action_tbl(i_ship1).weight_uom ;
4203 l_dlv_ship_action_rec.ready_to_ship_flag := l_dlv_ship_action_tbl(i_ship1).ready_to_ship_flag ;
4204 l_dlv_ship_action_rec.initiate_planning_flag := l_dlv_ship_action_tbl(i_ship1).initiate_planning_flag ;
4205 l_dlv_ship_action_rec.initiate_shipping_flag := l_dlv_ship_action_tbl(i_ship1).initiate_shipping_flag ;
4206 l_dlv_ship_action_rec.expected_shipment_date := l_dlv_ship_action_tbl(i_ship1).expected_shipment_date ;
4207 l_dlv_ship_action_rec.uom_code := l_dlv_ship_action_tbl(i_ship1).uom_code ;
4208 l_dlv_ship_action_rec.quantity := l_dlv_ship_action_tbl(i_ship1).quantity ;
4209
4210 oke_amg_grp.manage_dlv_action
4211 ( p_api_version => p_api_version
4212 , p_init_msg_list => FND_API.G_FALSE
4213 , p_commit => p_commit
4214 , p_action => l_action
4215 , p_dlv_action_type => g_dlv_action_ship
4216 , p_master_inv_org_id => l_org_id
4217 , p_item_dlv => l_item_dlv
4218 , p_dlv_ship_action_rec => l_dlv_ship_action_rec
4219 , p_dlv_req_action_rec => l_dlv_req_action_rec_b
4220 , x_return_status => x_return_status
4221 , x_msg_data => x_msg_data
4222 , x_msg_count => x_msg_count
4223 );
4224
4225 IF p_debug_mode = 'Y' THEN
4226 pa_debug.write(g_module_name,'Returned from oke_amg_grp.manage_dlv_action for shipping action ['||x_return_status||']',5);
4227 END IF;
4228
4229 i_ship1 := l_dlv_ship_action_tbl.next(i_ship1);
4230
4231 END LOOP;
4232
4233 END IF;
4234
4235 IF ( i_proc > 0 ) THEN
4236
4237 i_proc1 := l_dlv_req_action_tbl.first();
4238
4239 WHILE (i_proc1 IS NOT NULL) LOOP
4240
4241 l_dlv_req_action_rec.pa_deliverable_id := l_dlv_req_action_tbl(i_proc1).pa_deliverable_id ;
4242 l_dlv_req_action_rec.pa_action_id := l_dlv_req_action_tbl(i_proc1).pa_action_id ;
4243 l_dlv_req_action_rec.action_name := l_dlv_req_action_tbl(i_proc1).action_name ;
4244 l_dlv_req_action_rec.proc_finnancial_task_id := l_dlv_req_action_tbl(i_proc1).proc_finnancial_task_id ;
4245 l_dlv_req_action_rec.destination_type_code := l_dlv_req_action_tbl(i_proc1).destination_type_code ;
4246 l_dlv_req_action_rec.receiving_org_id := l_dlv_req_action_tbl(i_proc1).receiving_org_id ;
4247 l_dlv_req_action_rec.receiving_location_id := l_dlv_req_action_tbl(i_proc1).receiving_location_id ;
4248 l_dlv_req_action_rec.po_need_by_date := l_dlv_req_action_tbl(i_proc1).po_need_by_date ;
4249 l_dlv_req_action_rec.vendor_id := l_dlv_req_action_tbl(i_proc1).vendor_id ;
4250 l_dlv_req_action_rec.vendor_site_id := l_dlv_req_action_tbl(i_proc1).vendor_site_id ;
4251 -- l_dlv_req_action_rec.project_currency := l_dlv_req_action_tbl(i_proc1).project_currency ;
4252 l_dlv_req_action_rec.quantity := l_dlv_req_action_tbl(i_proc1).quantity ;
4253 l_dlv_req_action_rec.unit_price := l_dlv_req_action_tbl(i_proc1).unit_price ;
4254 l_dlv_req_action_rec.exchange_rate_type := l_dlv_req_action_tbl(i_proc1).exchange_rate_type ;
4255 l_dlv_req_action_rec.exchange_rate_date := l_dlv_req_action_tbl(i_proc1).exchange_rate_date ;
4256 l_dlv_req_action_rec.exchange_rate := l_dlv_req_action_tbl(i_proc1).exchange_rate ;
4257 l_dlv_req_action_rec.expenditure_type := l_dlv_req_action_tbl(i_proc1).expenditure_type ;
4258 l_dlv_req_action_rec.expenditure_org_id := l_dlv_req_action_tbl(i_proc1).expenditure_org_id ;
4259 l_dlv_req_action_rec.expenditure_item_date := l_dlv_req_action_tbl(i_proc1).expenditure_item_date ;
4260 l_dlv_req_action_rec.requisition_line_type_id := l_dlv_req_action_tbl(i_proc1).requisition_line_type_id ;
4261 l_dlv_req_action_rec.category_id := l_dlv_req_action_tbl(i_proc1).category_id ;
4262 l_dlv_req_action_rec.ready_to_procure_flag := l_dlv_req_action_tbl(i_proc1).ready_to_procure_flag ;
4263 l_dlv_req_action_rec.initiate_procure_flag := l_dlv_req_action_tbl(i_proc1).initiate_procure_flag ;
4264 l_dlv_req_action_rec.uom_code := l_dlv_req_action_tbl(i_proc1).uom_code ;
4265 l_dlv_req_action_rec.currency := l_dlv_req_action_tbl(i_proc1).currency ;
4266
4267 oke_amg_grp.manage_dlv_action
4268 ( p_api_version => p_api_version
4269 , p_init_msg_list => FND_API.G_FALSE
4270 , p_commit => p_commit
4271 , p_action => l_action
4272 , p_dlv_action_type => g_dlv_action_proc
4273 , p_master_inv_org_id => l_org_id
4274 , p_item_dlv => l_item_dlv
4275 , p_dlv_ship_action_rec => l_dlv_ship_action_rec_b
4276 , p_dlv_req_action_rec => l_dlv_req_action_rec
4277 , x_return_status => x_return_status
4278 , x_msg_data => x_msg_data
4279 , x_msg_count => x_msg_count
4280 );
4281
4282 IF p_debug_mode = 'Y' THEN
4283 pa_debug.write(g_module_name,'Returned from oke_amg_grp.manage_dlv_action for proc action ['||x_return_status||']',5);
4284 END IF;
4285
4286 i_proc1 := l_dlv_req_action_tbl.next(i_proc1);
4287
4288 END LOOP;
4289
4290 END IF;
4291
4292 -- Invoke the API to create event for billing actions
4293 IF ( i_bill > 0 ) THEN
4294 IF ( p_insert_or_update = g_insert) THEN
4295
4296 Pa_Event_Pub.create_event
4297 ( p_api_version_number => p_api_version
4298 ,p_commit => p_commit
4299 ,p_init_msg_list => FND_API.G_FALSE
4300 ,p_pm_product_code => l_pm_source_code
4301 ,p_event_in_tbl => l_event_in_tbl
4302 ,p_event_out_tbl => l_event_out_tbl
4303 ,p_msg_count => x_msg_count
4304 ,p_msg_data => x_msg_data
4305 ,p_return_status => x_return_status
4306 );
4307
4308 IF p_debug_mode = 'Y' THEN
4309 pa_debug.write(g_module_name,'Returned from Pa_Event_Pub.create_event for billing action ['||x_return_status||']',5);
4310 END IF;
4311
4312 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4313 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4314 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4315 RAISE FND_API.G_EXC_ERROR;
4316 END IF;
4317
4318 ELSIF ( p_insert_or_update = g_update) THEN
4319
4320 Pa_Event_Pub.Update_Event
4321 ( p_api_version_number => p_api_version
4322 , p_commit => p_commit
4323 , p_init_msg_list => FND_API.G_FALSE
4324 , p_pm_product_code => l_pm_source_code
4325 , p_event_in_tbl => l_event_in_tbl
4326 , p_event_out_tbl => l_event_out_tbl
4327 , p_msg_count => x_msg_count
4328 , p_msg_data => x_msg_data
4329 , p_return_status => x_return_status
4330 );
4331
4332 IF p_debug_mode = 'Y' THEN
4333 pa_debug.write(g_module_name,'Returned from Pa_Event_Pub.update_event for billing action ['||x_return_status||']',5);
4334 END IF;
4335
4336 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4337 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4338 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4339 RAISE FND_API.G_EXC_ERROR;
4340 END IF;
4341
4342 END IF; -- p_insert_or_update values
4343 END IF; -- i_bill > 0
4344
4345 IF p_debug_mode = 'Y' THEN
4346 pa_debug.reset_curr_function;
4347 pa_debug.write(g_module_name,l_api_name||': Exiting without error',5);
4348 END IF;
4349
4350 EXCEPTION
4351 WHEN FND_API.G_EXC_ERROR THEN
4352 IF (p_commit = FND_API.G_TRUE) THEN
4353 ROLLBACK TO create_dlvr_actions_wrapper;
4354 END IF;
4355 x_return_status := FND_API.G_RET_STS_ERROR;
4356 l_msg_count := FND_MSG_PUB.count_msg;
4357
4358 IF l_msg_count = 1 AND x_msg_data IS NULL
4359 THEN
4360 PA_INTERFACE_UTILS_PUB.get_messages
4361 (p_encoded => FND_API.G_FALSE,
4362 p_msg_index => 1,
4363 p_msg_count => x_msg_count,
4364 p_msg_data => l_msg_data,
4365 p_data => l_data,
4366 p_msg_index_out => l_msg_index_out);
4367
4368 x_msg_data := l_data;
4369 x_msg_count := l_msg_count;
4370 ELSE
4371 x_msg_count := l_msg_count;
4372
4373 END IF;
4374
4375 IF p_debug_mode = 'Y' THEN
4376 pa_debug.reset_curr_function;
4377 pa_debug.write(g_module_name,l_api_name||': Inside G_EXC_ERROR exception',5);
4378 END IF;
4379
4380 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4381 IF (p_commit = FND_API.G_TRUE) THEN
4382 ROLLBACK TO create_dlvr_actions_wrapper;
4383 END IF;
4384 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4385 l_msg_count := FND_MSG_PUB.count_msg;
4386
4387 IF l_msg_count = 1 AND x_msg_data IS NULL
4388 THEN
4389 PA_INTERFACE_UTILS_PUB.get_messages
4390 (p_encoded => FND_API.G_FALSE,
4391 p_msg_index => 1,
4392 p_msg_count => x_msg_count,
4393 p_msg_data => l_msg_data,
4394 p_data => l_data,
4395 p_msg_index_out => l_msg_index_out);
4396
4397 x_msg_data := l_data;
4398 x_msg_count := l_msg_count;
4399 ELSE
4400 x_msg_count := l_msg_count;
4401
4402 END IF;
4403
4404 IF p_debug_mode = 'Y' THEN
4405 pa_debug.reset_curr_function;
4406 pa_debug.write(g_module_name,l_api_name||': Inside G_EXC_UNEXPECTED_ERROR exception',5);
4407 END IF;
4408
4409 WHEN OTHERS THEN
4410 IF (p_commit = FND_API.G_TRUE) THEN
4411 ROLLBACK TO create_dlvr_actions_wrapper;
4412 END IF;
4413 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4414 x_msg_count := 1;
4415 x_msg_data := SQLERRM;
4416
4417 IF p_debug_mode = 'Y' THEN
4418 pa_debug.g_err_stage:=l_api_name||': Unexpected Error'||SQLERRM;
4419 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
4420 pa_debug.reset_curr_function;
4421 END IF;
4422
4423
4424 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4425 FND_MSG_PUB.add_exc_msg
4426 ( p_pkg_name => G_PKG_NAME
4427 , p_procedure_name => l_api_name );
4428 END IF;
4429 END Create_Dlvr_Actions_Wrapper;
4430 -------3435905 : FP M : Deliverables Changes For AMG -END--------------------
4431
4432 PROCEDURE RUN_ACTION_CONC_PROCESS
4433 (
4434 errbuf OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4435 ,retcode OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4436 ,p_function IN pa_lookups.lookup_code%TYPE
4437 ,p_project_number_from IN pa_projects_all.segment1%TYPE := NULL
4438 ,p_project_number_to IN pa_projects_all.segment1%TYPE := NULL
4439 )
4440 IS
4441 l_project_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4442 l_count NUMBER ;
4443 l_request_id pa_proj_elem_ver_structure.conc_request_id%TYPE;
4444
4445 l_debug_mode VARCHAR2(10);
4446 l_debug_level3 NUMBER := 3;
4447 l_msg_count NUMBER := 0;
4448 l_msg_data VARCHAR2(2000);
4449 l_data VARCHAR2(2000);
4450 l_msg_index_out NUMBER;
4451 l_return_status VARCHAR2(2000);
4452 l_error_message_code VARCHAR2(2000);
4453 -- Added for Bug Number 4907103
4454 l_project_number_from pa_projects_all.segment1%TYPE :=nvl(p_project_number_from,p_project_number_to);
4455 l_project_number_to pa_projects_all.segment1%TYPE :=nvl(p_project_number_to,p_project_number_from) ;
4456 -- 3752898
4457 -- We need this variable only for passing to OKE API
4458 -- Though they dont have any logic as of now to re-initialise Message stack if l_init_msg_list is TRUE ,
4459 -- Its not correct to initialise this variable as TRUE .By default this value should be FALSE
4460 l_init_msg_list VARCHAR2(20) := FND_API.G_FALSE ;
4461
4462 l_valid VARCHAR2(1);
4463
4464 /* Commented for Bug Number 4907103
4465 CURSOR c_project_id_range IS
4466 SELECT proj.project_id
4467 FROM PA_PROJECTS_ALL proj
4468 WHERE segment1 between nvl(p_project_number_from,p_project_number_to)
4469 and nvl(p_project_number_to,p_project_number_from) ;
4470 */
4471 -- Changed for Bug Number 4907103
4472 CURSOR c_project_id_range IS
4473 SELECT proj.project_id
4474 FROM PA_PROJECTS_ALL proj
4475 WHERE segment1 between l_project_number_from and l_project_number_to;
4476 -- End of BugNumber 4907103
4477 CURSOR c_valid_project_number_entry(l_project_number IN pa_projects_all.segment1%TYPE) IS
4478 SELECT 'Y'
4479 FROM PA_PROJECTS_ALL
4480 WHERE segment1 = l_project_number;
4481
4482 BEGIN
4483
4484 -- Set the error stack.
4485 pa_debug.set_err_stack('PA_ACTIONS_PUB.RUN_ACTION_CONC_PROCESS');
4486
4487 -- Get the Debug mode into local variable and set it to 'Y'if its NULL
4488 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
4489
4490 l_request_id := FND_GLOBAL.CONC_REQUEST_ID;
4491 retcode := '0';
4492 errbuf := NULL;
4493
4494 -- Initialize the return status to success
4495 l_return_status := FND_API.G_RET_STS_SUCCESS;
4496 pa_debug.set_process('PLSQL','LOG',l_debug_mode);
4497
4498 IF l_debug_mode = 'Y' THEN
4499 pa_debug.set_curr_function( p_function => 'RUN_ACTION_CONC_PROCESS',
4500 p_debug_mode => l_debug_mode );
4501 pa_debug.g_err_stage:= 'Entering RUN_ACTION_CONC_PROCESS : ' || l_request_id;
4502 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4503 END IF;
4504
4505 --Printing Input Parameters
4506
4507 IF l_debug_mode = 'Y' THEN
4508 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Function is :' || p_function ;
4509 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4510 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Project Number From is :' || p_project_number_from ;
4511 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4512 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Project Number To is :' || p_project_number_to ;
4513 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4514 END IF;
4515
4516 --Valid Parameter Validations
4517 IF ( (p_project_number_from IS NOT NULL) OR (p_project_number_to IS NOT NULL) ) THEN
4518 IF p_project_number_from IS NOT NULL THEN
4519 OPEN c_valid_project_number_entry(p_project_number_from) ;
4520 FETCH c_valid_project_number_entry INTO l_valid ;
4521
4522 IF c_valid_project_number_entry%NOTFOUND THEN
4523 IF l_debug_mode = 'Y' THEN
4524 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Invalid value entered for Project Number From';
4525 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4526 END IF;
4527 l_return_status := FND_API.G_RET_STS_ERROR;
4528 PA_UTILS.ADD_MESSAGE
4529 (p_app_short_name => 'PA',
4530 p_msg_name => 'PA_INV_PARAM_PASSED');
4531 CLOSE c_valid_project_number_entry ;
4532 RAISE Invalid_Arg_Exc_Dlv;
4533 END IF ;
4534 ELSE
4535 OPEN c_valid_project_number_entry(p_project_number_to) ;
4536 FETCH c_valid_project_number_entry INTO l_valid ;
4537
4538 IF c_valid_project_number_entry%NOTFOUND THEN
4539 IF l_debug_mode = 'Y' THEN
4540 pa_debug.g_err_stage:= 'RUN_ACTION_CONC_PROCESS : Invalid value entered for Project Number To' ;
4541 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4542 END IF;
4543 l_return_status := FND_API.G_RET_STS_ERROR;
4544 PA_UTILS.ADD_MESSAGE
4545 (p_app_short_name => 'PA',
4546 p_msg_name => 'PA_INV_PARAM_PASSED');
4547 CLOSE c_valid_project_number_entry ;
4548 RAISE Invalid_Arg_Exc_Dlv;
4549 END IF ;
4550 END IF;
4551 END IF;
4552
4553 --Business Rule Validations
4554 IF (p_function IS NULL) THEN
4555 IF l_debug_mode = 'Y' THEN
4556 pa_debug.g_err_stage:= 'Mandatory parameter to this API : Function is NULL';
4557 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4558 END IF;
4559 l_return_status := FND_API.G_RET_STS_ERROR;
4560 PA_UTILS.ADD_MESSAGE
4561 (p_app_short_name => 'PA',
4562 p_msg_name => 'PA_INV_PARAM_PASSED');
4563 RAISE Invalid_Arg_Exc_Dlv;
4564 END IF;
4565
4566 IF l_debug_mode = 'Y' THEN
4567 pa_debug.g_err_stage := 'Before doing cursor operation';
4568 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4569 END IF;
4570
4571 OPEN c_project_id_range ;
4572 FETCH c_project_id_range BULK COLLECT INTO l_project_id_tbl ;
4573 CLOSE c_project_id_range;
4574
4575 IF l_debug_mode = 'Y' THEN
4576 pa_debug.g_err_stage := 'After fetching the project id range into local table';
4577 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4578 END IF;
4579
4580 IF(NVL(l_project_id_tbl.LAST,0) > 0) THEN
4581
4582 IF l_debug_mode = 'Y' THEN
4583 pa_debug.g_err_stage := 'Project Id table is not empty';
4584 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4585 END IF;
4586
4587 FOR l_count IN l_project_id_tbl.FIRST..l_project_id_tbl.LAST LOOP
4588
4589 --Bug 3611598 If and Only if Deliverable is Enabled for a Project,Proceed
4590
4591 PA_PROJECT_STRUCTURE_UTILS.Check_Structure_Type_Exists
4592 (
4593 p_project_id => l_project_id_tbl(l_count)
4594 ,p_structure_type => 'DELIVERABLE'
4595 ,x_return_status => l_return_status
4596 ,x_error_message_code => l_error_message_code
4597 );
4598
4599 IF l_return_status = 'E' THEN -- This API returns 'E' if Structure Type is Enabled
4600
4601 IF p_function = 'DEMAND' THEN
4602 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4603 P_PROJECT_ID => l_project_id_tbl(l_count)
4604 ,P_Task_ID => null
4605 ,P_Init_Msg_List => l_init_msg_list
4606 ,X_RETURN_STATUS => l_return_status
4607 ,X_MSG_COUNT => l_msg_count
4608 ,X_MSG_DATA => l_msg_data
4609 );
4610 IF l_debug_mode = 'Y' THEN
4611 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status ;
4612 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4613 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4614 END IF;
4615
4616 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4617 RAISE Invalid_Arg_Exc_Dlv ;
4618 END IF ;
4619 ELSIF p_function = 'PROCUREMENT' THEN
4620 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4621 P_PROJECT_ID => l_project_id_tbl(l_count)
4622 ,P_Task_ID => null
4623 ,P_Init_Msg_List => l_init_msg_list
4624 ,X_RETURN_STATUS => l_return_status
4625 ,X_MSG_COUNT => l_msg_count
4626 ,X_MSG_DATA => l_msg_data
4627 );
4628 IF l_debug_mode = 'Y' THEN
4629 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4630 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4631 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4632 END IF;
4633
4634 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4635 RAISE Invalid_Arg_Exc_Dlv ;
4636 END IF ;
4637
4638 ELSIF p_function = 'BOTH' THEN
4639 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4640 P_PROJECT_ID => l_project_id_tbl(l_count)
4641 ,P_Task_ID => null
4642 ,P_Init_Msg_List => l_init_msg_list
4643 ,X_RETURN_STATUS => l_return_status
4644 ,X_MSG_COUNT => l_msg_count
4645 ,X_MSG_DATA => l_msg_data
4646 );
4647 IF l_debug_mode = 'Y' THEN
4648 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status;
4649 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4650 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4651 END IF;
4652
4653 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4654 RAISE Invalid_Arg_Exc_Dlv ;
4655 END IF ;
4656 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4657 P_PROJECT_ID => l_project_id_tbl(l_count)
4658 ,P_Task_ID => null
4659 ,P_Init_Msg_List => l_init_msg_list
4660 ,X_RETURN_STATUS => l_return_status
4661 ,X_MSG_COUNT => l_msg_count
4662 ,X_MSG_DATA => l_msg_data
4663 );
4664 IF l_debug_mode = 'Y' THEN
4665 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4666 pa_debug.g_err_stage := pa_debug.g_err_stage || ' for project id '||l_project_id_tbl(l_count) ;
4667 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4668 END IF;
4669
4670 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4671 RAISE Invalid_Arg_Exc_Dlv ;
4672 END IF ;
4673
4674 END IF;
4675
4676 END IF;
4677
4678 END LOOP;
4679 IF l_debug_mode = 'Y' THEN
4680 pa_debug.g_err_stage := 'After Calling OKE API for all the actions (passed project id)';
4681 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4682 END IF;
4683
4684 ELSE
4685
4686 IF l_debug_mode = 'Y' THEN
4687 pa_debug.g_err_stage := 'Here,No Project Id range is entered';
4688 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4689 END IF;
4690
4691 IF p_function = 'DEMAND' THEN
4692
4693 IF l_debug_mode = 'Y' THEN
4694 pa_debug.g_err_stage := 'Selected Option is Initiate Demand(project_id is null)';
4695 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4696 END IF;
4697
4698 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4699 P_PROJECT_ID => null
4700 ,P_Task_ID => null
4701 ,P_Init_Msg_List => l_init_msg_list
4702 ,X_RETURN_STATUS => l_return_status
4703 ,X_MSG_COUNT => l_msg_count
4704 ,X_MSG_DATA => l_msg_data
4705 );
4706 IF l_debug_mode = 'Y' THEN
4707 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status;
4708 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4709 END IF;
4710
4711 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4712 RAISE Invalid_Arg_Exc_Dlv ;
4713 END IF ;
4714
4715 ELSIF p_function = 'PROCUREMENT' THEN
4716
4717 IF l_debug_mode = 'Y' THEN
4718 pa_debug.g_err_stage := 'Selected Option is Initiate Procurement(project_id is null)';
4719 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4720 END IF;
4721 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4722 P_PROJECT_ID => null
4723 ,P_Task_ID => null
4724 ,P_Init_Msg_List => l_init_msg_list
4725 ,X_RETURN_STATUS => l_return_status
4726 ,X_MSG_COUNT => l_msg_count
4727 ,X_MSG_DATA => l_msg_data
4728 );
4729 IF l_debug_mode = 'Y' THEN
4730 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4731 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4732 END IF;
4733
4734
4735 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4736 RAISE Invalid_Arg_Exc_Dlv ;
4737 END IF ;
4738 ELSIF p_function = 'BOTH' THEN
4739
4740 IF l_debug_mode = 'Y' THEN
4741 pa_debug.g_err_stage := 'Selected Option is All(project_id is null)';
4742 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4743 END IF;
4744
4745 OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS(
4746 P_PROJECT_ID => null
4747 ,P_Task_ID => null
4748 ,P_Init_Msg_List => l_init_msg_list
4749 ,X_RETURN_STATUS => l_return_status
4750 ,X_MSG_COUNT => l_msg_count
4751 ,X_MSG_DATA => l_msg_data
4752 );
4753 IF l_debug_mode = 'Y' THEN
4754 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_MDS returned status :' || l_return_status;
4755 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4756 END IF;
4757
4758 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4759 RAISE Invalid_Arg_Exc_Dlv ;
4760 END IF ;
4761
4762 OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ(
4763 P_PROJECT_ID => null
4764 ,P_Task_ID => null
4765 ,P_Init_Msg_List => l_init_msg_list
4766 ,X_RETURN_STATUS => l_return_status
4767 ,X_MSG_COUNT => l_msg_count
4768 ,X_MSG_DATA => l_msg_data
4769 );
4770
4771 IF l_debug_mode = 'Y' THEN
4772 pa_debug.g_err_stage := 'OKE_DELIVERABLE_UTILS_PUB.BATCH_REQ returned status :' || l_return_status;
4773 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4774 END IF;
4775
4776 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4777 RAISE Invalid_Arg_Exc_Dlv ;
4778 END IF ;
4779 END IF;
4780
4781 END IF;
4782
4783 IF l_debug_mode = 'Y' THEN
4784 pa_debug.g_err_stage:= 'Exiting RUN_ACTION_CONC_PROCESS';
4785 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4786 pa_debug.reset_err_stack;
4787 pa_debug.reset_curr_function; --Added for bug 4945876
4788 END IF;
4789
4790 EXCEPTION
4791
4792 WHEN Invalid_Arg_Exc_Dlv THEN
4793 l_return_status := FND_API.G_RET_STS_ERROR;
4794 l_msg_count := FND_MSG_PUB.count_msg;
4795 retcode := '-1';
4796
4797 IF l_debug_mode = 'Y' THEN
4798 pa_debug.g_err_stage := 'Inside Invalid Argument exception of RUN_ACTION_CONC_PROCESS';
4799 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4800 END IF;
4801
4802 IF c_project_id_range%ISOPEN THEN
4803 CLOSE c_project_id_range ;
4804 END IF;
4805
4806 IF c_valid_project_number_entry%ISOPEN THEN
4807 CLOSE c_valid_project_number_entry ;
4808 END IF;
4809
4810 IF c_valid_project_number_entry%ISOPEN THEN
4811 CLOSE c_valid_project_number_entry ;
4812 END IF ;
4813
4814 IF l_msg_count >= 1 THEN
4815 PA_INTERFACE_UTILS_PUB.get_messages
4816 (p_encoded => FND_API.G_TRUE,
4817 p_msg_index => 1,
4818 p_msg_count => l_msg_count,
4819 p_msg_data => l_msg_data,
4820 p_data => l_data,
4821 p_msg_index_out => l_msg_index_out);
4822 errbuf := l_data;
4823 END IF;
4824
4825 IF l_debug_mode = 'Y' THEN
4826 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_Stack);
4827 pa_debug.reset_err_stack;
4828 pa_debug.reset_curr_function; --Added for bug 4945876
4829 END IF ;
4830 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 */
4831
4832 WHEN OTHERS THEN
4833 l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4834 retcode := '-1';
4835 errbuf := SQLERRM;
4836
4837 IF c_project_id_range%ISOPEN THEN
4838 CLOSE c_project_id_range ;
4839 END IF;
4840
4841 IF c_valid_project_number_entry%ISOPEN THEN
4842 CLOSE c_valid_project_number_entry ;
4843 END IF;
4844
4845 IF c_valid_project_number_entry%ISOPEN THEN
4846 CLOSE c_valid_project_number_entry ;
4847 END IF ;
4848
4849 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
4850 ,p_procedure_name => 'RUN_ACTION_CONC_PROCESS'
4851 ,p_error_text => errbuf);
4852
4853 IF l_debug_mode = 'Y' THEN
4854 pa_debug.g_err_stage:='Unexpected Error'||errbuf;
4855 pa_debug.write_file('RUN_ACTION_CONC_PROCESS :' || pa_debug.g_err_stage);
4856 pa_debug.reset_err_stack;
4857 pa_debug.reset_curr_function; --Added for bug 4945876
4858 END IF;
4859
4860 RAISE;
4861 END RUN_ACTION_CONC_PROCESS ;
4862
4863
4864 -- SubProgram : UPD_DLV_ACTIONS_IN_BULK_TM ( 3578694 )
4865 -- Type : PROCEDURE
4866 -- Purpose : Public API to Update Deliverable Actions From TM Home Actions Page
4867 -- Note : Its a BULK API
4868 -- Assumptions : None
4869 -- Parameter IN/OUT Type Required Description and Purpose
4870 -- --------------------------- --------- ---------- --------- ---------------------------
4871 -- p_api_version IN NUMBER N Standard Parameter
4872 -- p_init_msg_list IN VARCHAR2 N Standard Parameter
4873 -- p_commit IN VARCHAR2 N Standard Parameter
4874 -- p_validate_only IN VARCHAR2 N Standard Parameter
4875 -- p_validation_level IN NUMBER N Standard Parameter
4876 -- p_calling_module IN VARCHAR2 N Standard Parameter
4877 -- p_debug_mode IN VARCHAR2 N Standard Parameter
4878 -- p_max_msg_count IN NUMBER N Standard Parameter
4879 -- p_name_tbl IN PLSQL Table N Action Name
4880 -- p_manager_person_id_tbl IN PLSQL Table N Manager Id
4881 -- p_function_code_tbl IN PLSQL Table N Action Function
4882 -- p_due_date_tbl IN PLSQL Table N Due Date
4883 -- p_completed_flag_tbl IN PLSQL Table N Completed Flag
4884 -- p_completion_date_tbl IN PLSQL Table N Completed Date
4885 -- p_description_tbl IN PLSQL Table N Description
4886 -- p_attribute_category_tbl IN PLSQL Table N DFF Field
4887 -- p_attribute1_tbl IN PLSQL Table N DFF Filed
4888 -- p_attribute2_tbl IN PLSQL Table N DFF Field
4889 -- p_attribute3_tbl IN PLSQL Table N DFF Filed
4890 -- p_attribute4_tbl IN PLSQL Table N DFF Field
4891 -- p_attribute5_tbl IN PLSQL Table N DFF Filed
4892 -- p_attribute6_tbl IN PLSQL Table N DFF Field
4893 -- p_attribute7_tbl IN PLSQL Table N DFF Filed
4894 -- p_attribute8_tbl IN PLSQL Table N DFF Field
4895 -- p_attribute9_tbl IN PLSQL Table N DFF Filed
4896 -- p_attribute10_tbl IN PLSQL Table N DFF Field
4897 -- p_attribute11_tbl IN PLSQL Table N DFF Filed
4898 -- p_attribute12_tbl IN PLSQL Table N DFF Field
4899 -- p_attribute13_tbl IN PLSQL Table N DFF Filed
4900 -- p_attribute14_tbl IN PLSQL Table N DFF Field
4901 -- p_attribute15_tbl IN PLSQL Table N DFF Filed
4902 -- p_element_version_id_tbl IN PLSQL Table N Action VErsion Id
4903 -- p_proj_element_id_tbl IN PLSQL Table N Action Element Id
4904 -- p_record_version_number_tbl IN PLSQL Table N Record Version NUmber
4905 -- p_project_id_tbl IN PLSQL Table N Project Id
4906 -- p_object_id_tbl IN PLSQL Table Y Parent Id
4907 -- p_object_version_id_tbl IN PLSQL Table N Parent Version ID
4908 -- p_object_type IN VARCHAR2 Y Parent Type
4909 -- p_pm_source_code IN NUMBER N PM Source Code
4910 -- p_pm_source_reference IN VARCHAR2 N PM Source Reference
4911 -- p_insert_or_update IN VARCHAR2 N Identifies the API Mode
4912 -- x_return_status OUT VARCHAR2 N Mandatory Out Parameter
4913 -- x_msg_count OUT NUMBER N Mandatory Out Parameter
4914 -- x_msg_data OUT VARCHAR2 N Mandatory Out Parameter
4915
4916 PROCEDURE UPD_DLV_ACTIONS_IN_BULK_TM
4917 (p_api_version IN NUMBER :=1.0
4918 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
4919 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
4920 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
4921 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
4922 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
4923 ,p_debug_mode IN VARCHAR2 :='N'
4924 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
4925 ,p_name_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4926 ,p_manager_person_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4927 ,p_function_code_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
4928 ,p_due_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
4929 ,p_completed_flag_tbl IN SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE()
4930 ,p_completion_date_tbl IN SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE()
4931 ,p_description_tbl IN SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE()
4932 ,p_attribute_category_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
4933 ,p_attribute1_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4934 ,p_attribute2_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4935 ,p_attribute3_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4936 ,p_attribute4_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4937 ,p_attribute5_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4938 ,p_attribute6_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4939 ,p_attribute7_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4940 ,p_attribute8_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4941 ,p_attribute9_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4942 ,p_attribute10_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4943 ,p_attribute11_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4944 ,p_attribute12_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4945 ,p_attribute13_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4946 ,p_attribute14_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4947 ,p_attribute15_tbl IN SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE()
4948 ,p_element_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4949 ,p_proj_element_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4950 ,p_record_version_number_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4951 ,p_project_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4952 ,p_object_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4953 ,p_object_version_id_tbl IN SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE()
4954 ,p_object_type IN PA_LOOKUPS.LOOKUP_CODE%TYPE
4955 ,p_pm_source_code IN pa_proj_elements.pm_source_code%TYPE := null
4956 ,p_pm_source_reference IN pa_proj_elements.pm_source_reference%TYPE := null
4957 ,p_pm_source_reference_tbl IN SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE()
4958 ,p_insert_or_update IN VARCHAR2 := 'UPDATE'
4959 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4960 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
4961 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
4962 )
4963 IS
4964
4965 l_debug_mode VARCHAR2(10);
4966 l_msg_count NUMBER ;
4967 l_data VARCHAR2(2000);
4968 l_msg_data VARCHAR2(2000);
4969 l_msg_index_out NUMBER;
4970
4971 l_upd_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4972 l_upd_mgr_person_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4973 l_upd_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
4974 l_upd_due_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
4975 l_upd_comp_flag_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM. PA_VARCHAR2_1_TBL_TYPE() ;
4976 l_upd_comp_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
4977 l_upd_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4978 l_upd_element_ver_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4979 l_upd_rec_ver_num_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
4980 l_upd_description_tbl SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
4981 l_upd_attribute_category_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
4982 l_upd_attribute1_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4983 l_upd_attribute2_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4984 l_upd_attribute3_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4985 l_upd_attribute4_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4986 l_upd_attribute5_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4987 l_upd_attribute6_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4988 l_upd_attribute7_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4989 l_upd_attribute8_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4990 l_upd_attribute9_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4991 l_upd_attribute10_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4992 l_upd_attribute11_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4993 l_upd_attribute12_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4994 l_upd_attribute13_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4995 l_upd_attribute14_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4996 l_upd_attribute15_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
4997
4998 j_upd NUMBER ;
4999
5000 l_name_tbl SYSTEM.PA_VARCHAR2_240_TBL_TYPE := SYSTEM.PA_VARCHAR2_240_TBL_TYPE() ;
5001 l_completed_flag_tbl SYSTEM.PA_VARCHAR2_1_TBL_TYPE := SYSTEM.PA_VARCHAR2_1_TBL_TYPE() ;
5002 l_completion_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
5003 l_description_tbl SYSTEM.PA_VARCHAR2_2000_TBL_TYPE := SYSTEM.PA_VARCHAR2_2000_TBL_TYPE();
5004 l_function_code_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
5005 l_due_date_tbl SYSTEM.PA_DATE_TBL_TYPE := SYSTEM.PA_DATE_TBL_TYPE() ;
5006 l_element_version_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
5007 l_proj_element_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
5008 l_user_action_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
5009 l_action_owner_id_tbl SYSTEM.PA_NUM_TBL_TYPE := SYSTEM.PA_NUM_TBL_TYPE() ;
5010 l_pm_source_reference_tbl SYSTEM.PA_VARCHAR2_30_TBL_TYPE := SYSTEM.PA_VARCHAR2_30_TBL_TYPE() ;
5011 l_object_id NUMBER;
5012 l_object_version_id NUMBER;
5013 l_project_id NUMBER;
5014
5015 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
5016 l_count NUMBER;
5017
5018 BEGIN
5019
5020 -- this api will be called from TM Home Update Actions Page
5021 -- popluate plsql table, having single row, and pass this table
5022 -- to validation actions api for validations
5023 -- if validations are successful, call UPDATE_DLV_ACTIONS_IN_BULK api
5024
5025 x_msg_count := 0;
5026 x_return_status := FND_API.G_RET_STS_SUCCESS;
5027 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
5028
5029 IF l_debug_mode = 'Y' THEN
5030 PA_DEBUG.set_curr_function( p_function => 'UPD_DLV_ACTIONS_IN_BULK_TM',
5031 p_debug_mode => l_debug_mode );
5032 pa_debug.g_err_stage:= 'Inside UPD_DLV_ACTIONS_IN_BULK_TM ';
5033 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
5034 END IF;
5035
5036 IF l_debug_mode = 'Y' THEN
5037 pa_debug.g_err_stage:= 'Printing Input parameters';
5038 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
5039 pa_debug.write(g_module_name,'p_insert_or_update'||':'||p_insert_or_update,3) ;
5040 END IF;
5041
5042 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
5043 FND_MSG_PUB.initialize;
5044 END IF;
5045
5046 IF (p_commit = FND_API.G_TRUE) THEN
5047 savepoint CR_UP_DLV_ACTIONS_SP ;
5048 END IF;
5049
5050 -- Call the validation API. It will
5051 -- perform all the validation.
5052 IF l_debug_mode = 'Y' THEN
5053 pa_debug.g_err_stage:= 'Calling PA_ACTIONS_PUB.VALIDATE_ACTIONS';
5054 pa_debug.write(g_module_name,pa_debug.g_err_stage,3) ;
5055 END IF ;
5056
5057 l_name_tbl.extend;
5058 l_completed_flag_tbl.extend;
5059 l_completion_date_tbl.extend;
5060 l_description_tbl.extend;
5061 l_function_code_tbl.extend;
5062 l_due_date_tbl.extend;
5063 l_element_version_id_tbl.extend;
5064 l_proj_element_id_tbl.extend;
5065 l_user_action_tbl.extend;
5066 l_action_owner_id_tbl.extend;
5067 l_pm_source_reference_tbl.extend;
5068
5069 l_count:= 0;
5070
5071 IF l_debug_mode = 'Y' THEN
5072 pa_debug.write(g_module_name,'No of actions ' || p_name_tbl.last,3) ;
5073 END IF ;
5074
5075 IF nvl(p_name_tbl.last,0) >= 1 THEN -- Only if something is fetched
5076
5077 l_count := l_count + 1;
5078
5079 FOR i in p_name_tbl.FIRST .. p_name_tbl.LAST LOOP
5080
5081 IF l_debug_mode = 'Y' THEN
5082 pa_debug.write(g_module_name,'i ' || i,3) ;
5083 END IF ;
5084
5085 l_name_tbl(l_count) := p_name_tbl(i);
5086
5087 l_completed_flag_tbl(l_count) := p_completed_flag_tbl(i);
5088 l_completion_date_tbl(l_count) := p_completion_date_tbl(i);
5089 l_description_tbl(l_count) := p_description_tbl(i);
5090 l_function_code_tbl(l_count) := p_function_code_tbl(i);
5091 l_due_date_tbl(l_count) := p_due_date_tbl(i);
5092 l_element_version_id_tbl(l_count) := p_element_version_id_tbl(i);
5093 l_proj_element_id_tbl(l_count) := p_proj_element_id_tbl(i);
5094 l_user_action_tbl(l_count) := 'MODIFIED';
5095 l_action_owner_id_tbl(l_count) := p_manager_person_id_tbl(i);
5096 l_object_id := p_object_id_tbl(i);
5097 l_object_version_id := p_object_version_id_tbl(i);
5098 l_project_id := p_project_id_tbl(i);
5099
5100 IF l_debug_mode = 'Y' THEN
5101 pa_debug.write(g_module_name,' validating action p_element_version_id_tbl ' || p_element_version_id_tbl(i) ,3) ;
5102 pa_debug.write(g_module_name,' validating action ( version id ) ' || l_element_version_id_tbl(l_count) ,3) ;
5103 END IF ;
5104
5105 PA_ACTIONS_PUB.VALIDATE_ACTIONS
5106 ( p_init_msg_list => FND_API.G_FALSE
5107 ,p_debug_mode => l_debug_mode
5108 ,p_name_tbl => l_name_tbl
5109 ,p_completed_flag_tbl => l_completed_flag_tbl
5110 ,p_completion_date_tbl => l_completion_date_tbl
5111 ,p_description_tbl => l_description_tbl
5112 ,p_function_code_tbl => l_function_code_tbl
5113 ,p_due_date_tbl => l_due_date_tbl
5114 ,p_element_version_id_tbl=> l_element_version_id_tbl
5115 ,p_proj_element_id_tbl => l_proj_element_id_tbl
5116 ,p_user_action_tbl => l_user_action_tbl
5117 ,p_object_id => l_object_id
5118 ,p_object_version_id => l_object_version_id
5119 ,p_object_type => p_object_type
5120 ,p_project_id => l_project_id
5121 ,p_action_owner_id_tbl => l_action_owner_id_tbl
5122 ,p_carrying_out_org_id => NULL
5123 ,p_action_reference_tbl => p_pm_source_reference_tbl
5124 ,p_deliverable_id => l_object_id
5125 ,p_insert_or_update => 'UPDATE'
5126 ,x_return_status => x_return_status
5127 ,x_msg_count => x_msg_count
5128 ,x_msg_data => x_msg_data
5129 ) ;
5130
5131 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5132 l_return_status := FND_API.G_RET_STS_ERROR;
5133 END IF;
5134
5135 END LOOP ;
5136
5137 END IF;
5138
5139 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5140 RAISE Invalid_Arg_Exc_Dlv ;
5141 END IF ;
5142
5143 -- Loop through p_name_tbl to find out the
5144 -- actions which are updated by user.
5145
5146 -- Initialize the local variable
5147 j_upd := 0 ;
5148
5149 IF nvl(p_name_tbl.last,0) >= 1 THEN -- Only if something is fetched
5150
5151 FOR i in p_name_tbl.FIRST .. p_name_tbl.LAST LOOP
5152
5153 IF l_debug_mode = 'Y' THEN
5154 pa_debug.g_err_stage:= 'Update Operation';
5155 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5156 END IF;
5157
5158 j_upd:=j_upd+1 ;
5159
5160 -- Get all the actions which are updated, into
5161 -- local plsql tables, which will be used to
5162 -- call PLSQL bulk API for update.
5163
5164 -- extend the size of PLSQL table
5165 l_upd_element_id_tbl.extend ;
5166 l_upd_element_ver_id_tbl.extend ;
5167 l_upd_rec_ver_num_id_tbl.extend ;
5168 l_upd_name_tbl.extend ;
5169 l_upd_function_code_tbl.extend ;
5170 l_upd_mgr_person_id_tbl.extend ;
5171 l_upd_due_date_tbl.extend ;
5172 l_upd_comp_flag_tbl.extend ;
5173 l_upd_comp_date_tbl.extend ;
5174 l_upd_attribute_category_tbl.extend;
5175 l_upd_attribute1_tbl.extend ;
5176 l_upd_attribute2_tbl.extend ;
5177 l_upd_attribute3_tbl.extend ;
5178 l_upd_attribute4_tbl.extend ;
5179 l_upd_attribute5_tbl.extend ;
5180 l_upd_attribute6_tbl.extend ;
5181 l_upd_attribute7_tbl.extend ;
5182 l_upd_attribute8_tbl.extend ;
5183 l_upd_attribute9_tbl.extend ;
5184 l_upd_attribute10_tbl.extend ;
5185 l_upd_attribute11_tbl.extend ;
5186 l_upd_attribute12_tbl.extend ;
5187 l_upd_attribute13_tbl.extend ;
5188 l_upd_attribute14_tbl.extend ;
5189 l_upd_attribute15_tbl.extend ;
5190 l_upd_description_tbl.extend ;
5191
5192 l_upd_element_id_tbl(j_upd) := p_proj_element_id_tbl(i) ;
5193 l_upd_element_ver_id_tbl(j_upd) := p_element_version_id_tbl(i) ;
5194 l_upd_rec_ver_num_id_tbl(j_upd) := p_record_version_number_tbl(i) ;
5195 l_upd_name_tbl(j_upd) := p_name_tbl(i) ;
5196 l_upd_function_code_tbl(j_upd) := p_function_code_tbl(i) ;
5197
5198 -- IF p_object_type <> g_dlvr_types THEN // removed for bug# 3578694, not required condition
5199 l_upd_mgr_person_id_tbl(j_upd) := p_manager_person_id_tbl(i) ;
5200 l_upd_due_date_tbl(j_upd) := p_due_date_tbl(i) ;
5201 l_upd_comp_flag_tbl(j_upd) := p_completed_flag_tbl(i) ;
5202 l_upd_comp_date_tbl(j_upd) := p_completion_date_tbl(i) ;
5203 l_upd_attribute_category_tbl(j_upd):= p_attribute_category_tbl(i) ;
5204 l_upd_attribute1_tbl(j_upd) := p_attribute1_tbl(i) ;
5205 l_upd_attribute2_tbl(j_upd) := p_attribute2_tbl(i) ;
5206 l_upd_attribute3_tbl(j_upd) := p_attribute3_tbl(i) ;
5207 l_upd_attribute4_tbl(j_upd) := p_attribute4_tbl(i) ;
5208 l_upd_attribute5_tbl(j_upd) := p_attribute5_tbl(i) ;
5209 l_upd_attribute6_tbl(j_upd) := p_attribute6_tbl(i) ;
5210 l_upd_attribute7_tbl(j_upd) := p_attribute7_tbl(i) ;
5211 l_upd_attribute8_tbl(j_upd) := p_attribute8_tbl(i) ;
5212 l_upd_attribute9_tbl(j_upd) := p_attribute9_tbl(i) ;
5213 l_upd_attribute10_tbl(j_upd) := p_attribute10_tbl(i) ;
5214 l_upd_attribute11_tbl(j_upd) := p_attribute11_tbl(i) ;
5215 l_upd_attribute12_tbl(j_upd) := p_attribute12_tbl(i) ;
5216 l_upd_attribute13_tbl(j_upd) := p_attribute13_tbl(i) ;
5217 l_upd_attribute14_tbl(j_upd) := p_attribute14_tbl(i) ;
5218 l_upd_attribute15_tbl(j_upd) := p_attribute15_tbl(i) ;
5219 l_upd_description_tbl(j_upd) := p_description_tbl(i) ;
5220 -- END IF ;
5221
5222
5223 END LOOP ;
5224
5225
5226 -- Call Update API to perform the update operation
5227 IF j_upd > 0 THEN
5228
5229 IF l_debug_mode = 'Y' THEN
5230 pa_debug.g_err_stage:= 'Call UPDATE_DLV_ACTIONS_IN_BULK ';
5231 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5232 END IF;
5233
5234 PA_ACTIONS_PUB.UPDATE_DLV_ACTIONS_IN_BULK
5235 (p_api_version => p_api_version
5236 ,p_init_msg_list => FND_API.G_FALSE
5237 ,p_commit => p_commit
5238 ,p_validate_only => p_validate_only
5239 ,p_validation_level => p_validation_level
5240 ,p_calling_module => p_calling_module
5241 ,p_debug_mode => l_debug_mode
5242 ,p_max_msg_count => p_max_msg_count
5243 ,p_name_tbl => l_upd_name_tbl
5244 ,p_manager_person_id_tbl => l_upd_mgr_person_id_tbl
5245 ,p_function_code_tbl => l_upd_function_code_tbl
5246 ,p_due_date_tbl => l_upd_due_date_tbl
5247 ,p_completed_flag_tbl => l_upd_comp_flag_tbl
5248 ,p_completion_date_tbl => l_upd_comp_date_tbl
5249 ,p_description_tbl => l_upd_description_tbl
5250 ,p_attribute_category_tbl => l_upd_attribute_category_tbl
5251 ,p_attribute1_tbl => l_upd_attribute1_tbl
5252 ,p_attribute2_tbl => l_upd_attribute2_tbl
5253 ,p_attribute3_tbl => l_upd_attribute3_tbl
5254 ,p_attribute4_tbl => l_upd_attribute4_tbl
5255 ,p_attribute5_tbl => l_upd_attribute5_tbl
5256 ,p_attribute6_tbl => l_upd_attribute6_tbl
5257 ,p_attribute7_tbl => l_upd_attribute7_tbl
5258 ,p_attribute8_tbl => l_upd_attribute8_tbl
5259 ,p_attribute9_tbl => l_upd_attribute9_tbl
5260 ,p_attribute10_tbl => l_upd_attribute10_tbl
5261 ,p_attribute11_tbl => l_upd_attribute11_tbl
5262 ,p_attribute12_tbl => l_upd_attribute12_tbl
5263 ,p_attribute13_tbl => l_upd_attribute13_tbl
5264 ,p_attribute14_tbl => l_upd_attribute14_tbl
5265 ,p_attribute15_tbl => l_upd_attribute15_tbl
5266 ,p_element_version_id_tbl => l_upd_element_ver_id_tbl
5267 ,p_proj_element_id_tbl => l_upd_element_id_tbl
5268 ,p_record_version_number_tbl => l_upd_rec_ver_num_id_tbl
5269 ,p_project_id => NULL
5270 ,p_object_id => NULL
5271 ,p_object_version_id => NULL
5272 ,p_object_type => p_object_type
5273 ,p_pm_source_code => p_pm_source_code
5274 ,p_pm_source_reference => p_pm_source_reference
5275 ,p_carrying_out_organization_id => NULL
5276 ,x_return_status => x_return_status
5277 ,x_msg_count => x_msg_count
5278 ,x_msg_data => x_msg_data
5279 ) ;
5280
5281
5282 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5283 RAISE Invalid_Arg_Exc_Dlv ;
5284 END IF ;
5285
5286 END IF ;
5287
5288
5289 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5290 RAISE Invalid_Arg_Exc_Dlv ;
5291 END IF ;
5292
5293 END IF ; -- Only if something is fetched
5294
5295 IF l_debug_mode = 'Y' THEN
5296 pa_debug.g_err_stage:= 'Exiting UPD_DLV_ACTIONS_IN_BULK_TM' ;
5297 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5298 pa_debug.reset_curr_function;
5299 END IF;
5300
5301 EXCEPTION
5302 WHEN Invalid_Arg_Exc_Dlv THEN
5303 x_return_status := FND_API.G_RET_STS_ERROR;
5304 l_msg_count := FND_MSG_PUB.count_msg;
5305
5306 IF (p_commit = FND_API.G_TRUE) THEN
5307 ROLLBACK TO CR_UP_DLV_ACTIONS_SP;
5308 END IF ;
5309
5310 IF l_debug_mode = 'Y' THEN
5311 pa_debug.g_err_stage := 'inside invalid arg exception of UPD_DLV_ACTIONS_IN_BULK_TM';
5312 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
5313 END IF;
5314
5315 IF l_msg_count = 1 THEN
5316 PA_INTERFACE_UTILS_PUB.get_messages
5317 (p_encoded => FND_API.G_TRUE,
5318 p_msg_index => 1,
5319 p_msg_count => l_msg_count,
5320 p_msg_data => l_msg_data,
5321 p_data => l_data,
5322 p_msg_index_out => l_msg_index_out);
5323 x_msg_data := l_data;
5324 x_msg_count := l_msg_count;
5325 ELSE
5326 x_msg_count := l_msg_count;
5327 END IF;
5328 IF l_debug_mode = 'Y' THEN
5329 pa_debug.reset_curr_function;
5330 END IF ;
5331 RETURN;
5332 WHEN OTHERS THEN
5333 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5334 x_msg_count := 1;
5335 x_msg_data := SQLERRM;
5336
5337 IF (p_commit = FND_API.G_TRUE) THEN
5338 ROLLBACK TO CR_UP_DLV_ACTIONS_SP;
5339 END IF ;
5340
5341 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
5342 ,p_procedure_name => 'UPD_DLV_ACTIONS_IN_BULK_TM');
5343
5344 IF p_debug_mode = 'Y' THEN
5345 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
5346 pa_debug.write(g_module_name,'UPD_DLV_ACTIONS_IN_BULK_TM: '|| pa_debug.g_err_stage,5);
5347 pa_debug.reset_curr_function;
5348 END IF;
5349 RAISE;
5350 END UPD_DLV_ACTIONS_IN_BULK_TM ;
5351
5352
5353 /*=======================================================================
5354 This is a wrapper API that will launch the concurrent process
5355 PRC: Initiate Project Deliverable Actions
5356 For Initiating Demand as soon as a Project Is Approved,we need to
5357 call this Wrapper API whenever Project Status is changed to Approved.
5358
5359 Please not that ,the Caller of this API should validate for the Project
5360 Status Change = Approved .
5361
5362 So,The parameters that would be passed to this concurrent process are :
5363 1) 'Demand' and 2) The Project Number
5364 =======================================================================*/
5365
5366
5367 PROCEDURE RUN_ACTION_CONC_PROCESS_WRP
5368 (
5369 p_api_version IN NUMBER :=1.0
5370 ,p_init_msg_list IN VARCHAR2 :=FND_API.G_TRUE
5371 ,p_commit IN VARCHAR2 :=FND_API.G_FALSE
5372 ,p_validate_only IN VARCHAR2 :=FND_API.G_TRUE
5373 ,p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL
5374 ,p_calling_module IN VARCHAR2 :='SELF_SERVICE'
5375 ,p_debug_mode IN VARCHAR2 :='N'
5376 ,p_max_msg_count IN NUMBER :=PA_INTERFACE_UTILS_PUB.G_PA_MISS_NUM
5377 ,p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE
5378 ,p_project_number IN PA_PROJECTS_ALL.SEGMENT1%TYPE -- 3671408 added IN paramter
5379 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5380 ,x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5381 ,x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5382 )
5383 IS
5384 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
5385 l_project_number PA_PROJECTS_ALL.SEGMENT1%TYPE ;
5386 l_status_code PA_PROJECT_STATUSES.PROJECT_SYSTEM_STATUS_CODE%TYPE ;
5387 l_request_id PA_PROJ_ELEM_VER_STRUCTURE.CONC_REQUEST_ID%TYPE;
5388
5389 l_debug_mode VARCHAR2(1);
5390 l_msg_count NUMBER ;
5391 l_data VARCHAR2(2000);
5392 l_msg_data VARCHAR2(2000);
5393 l_msg_index_out NUMBER;
5394
5395 -- 3671408 removed following cursor
5396 -- as project_number is been directly passed to api,
5397 /*
5398 CURSOR c_project_number_from IS
5399 SELECT SEGMENT1
5400 FROM PA_PROJECTS_ALL
5401 WHERE PROJECT_ID = p_project_id ;
5402 */
5403 -- THE FOLLOWING CURSOR WILL NOT BE USED ANYWHERE
5404 /*CURSOR c_project_sys_status_code IS
5405 SELECT PROJECT_SYSTEM_STATUS_CODE
5406 FROM PA_PROJECT_STATUSES pps,
5407 PA_PROJECTS_ALL pa
5408 WHERE pa.PROJECT_ID = p_project_id
5409 AND pps.PROJECT_STATUS_CODE = pa.PROJECT_STATUS_CODE ;
5410 */
5411 PRAGMA AUTONOMOUS_TRANSACTION;
5412
5413 BEGIN
5414
5415 x_msg_count := 0;
5416 x_return_status := FND_API.G_RET_STS_SUCCESS;
5417 l_debug_mode := NVL(FND_PROFILE.value('PA_DEBUG_MODE'),'N');
5418
5419 IF l_debug_mode = 'Y' THEN
5420 pa_debug.g_err_stage:= 'Entering RUN_ACTION_CONC_PROCESS_WRP';
5421 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5422
5423 pa_debug.set_curr_function( p_function => 'RUN_ACTION_CONC_PROCESS_WRP',
5424 p_debug_mode => l_debug_mode );
5425 END IF;
5426
5427 -- Initialise Message Stack
5428 IF FND_API.TO_BOOLEAN(nvl(p_init_msg_list,FND_API.G_TRUE)) THEN
5429 FND_MSG_PUB.initialize;
5430 END IF;
5431
5432 -- Define Save Point
5433 IF (p_commit = FND_API.G_TRUE) THEN
5434 savepoint RUN_ACTION_CONC_PROCESS_WRP_SP ;
5435 END IF;
5436
5437 --Printing Input Parameters
5438
5439 IF l_debug_mode = 'Y' THEN
5440 pa_debug.g_err_stage:= 'The Project Id is :' || p_project_id ;
5441 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5442 END IF ;
5443
5444 -- Validate Input parameters
5445 IF l_debug_mode = 'Y' THEN
5446 pa_debug.g_err_stage:= 'Validating Input parameters';
5447 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5448 END IF;
5449
5450 IF p_project_id IS NULL THEN
5451 IF l_debug_mode = 'Y' THEN
5452 pa_debug.g_err_stage:= 'Mandatory parameter to this API : Project ID is NULL';
5453 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5454 END IF;
5455 l_return_status := FND_API.G_RET_STS_ERROR;
5456 PA_UTILS.ADD_MESSAGE
5457 (p_app_short_name => 'PA',
5458 p_msg_name => 'PA_INV_PARAM_PASSED');
5459 RAISE Invalid_Arg_Exc_Dlv;
5460 END IF;
5461
5462 --Check for valid project id passed
5463 IF l_debug_mode = 'Y' THEN
5464 pa_debug.g_err_stage := 'Before doing cursor operation';
5465 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5466 END IF;
5467
5468 -- 3671408 project_number is passed directly to the api
5469 -- removed below code to retrieve and validate project_number
5470 /*
5471 OPEN c_project_number_from;
5472 FETCH c_project_number_from INTO l_project_number;
5473
5474 IF c_project_number_from%NOTFOUND THEN
5475 IF l_debug_mode = 'Y' THEN
5476 pa_debug.g_err_stage:= 'No Project Number returned for the passed Project ID ';
5477 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5478 END IF;
5479 l_return_status := FND_API.G_RET_STS_ERROR;
5480 PA_UTILS.ADD_MESSAGE
5481 (p_app_short_name => 'PA',
5482 p_msg_name => 'PA_INV_PARAM_PASSED');
5483 RAISE Invalid_Arg_Exc_Dlv;
5484 END IF;
5485
5486 CLOSE c_project_number_from ;
5487 */
5488
5489 -- 3671408 added below code to validate project_number
5490
5491 IF p_project_number IS NULL THEN
5492 IF l_debug_mode = 'Y' THEN
5493 pa_debug.g_err_stage:= 'No Project Number returned for the passed Project ID ';
5494 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5495 END IF;
5496 l_return_status := FND_API.G_RET_STS_ERROR;
5497 PA_UTILS.ADD_MESSAGE
5498 (p_app_short_name => 'PA',
5499 p_msg_name => 'PA_INV_PARAM_PASSED');
5500 RAISE Invalid_Arg_Exc_Dlv;
5501 END IF;
5502
5503 -- 3671408 end
5504
5505 IF l_debug_mode = 'Y' THEN
5506 pa_debug.g_err_stage := 'After doing cursor operation - Valid Project Number ';
5507 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5508 END IF;
5509
5510 -- If the new project status has not been committed into Database,this cursor will fail
5511 -- This is due to the Autonomous Transaction definition.So,commented the following code
5512 /* --If the project status is Approved,then only submit the request.
5513 --If not return
5514
5515 OPEN c_project_sys_status_code;
5516 FETCH c_project_sys_status_code into l_status_code ;
5517 CLOSE c_project_sys_status_code;
5518 IF nvl(l_status_code,'-99') <> 'APPROVED' THEN
5519 IF l_debug_mode = 'Y' THEN
5520 pa_debug.g_err_stage := 'The Project Status is not approved .So,No need to invoke concurrent process ';
5521 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5522 END IF;
5523 RETURN;
5524 END IF ;
5525 */
5526 -- Submit the request.
5527 l_request_id := fnd_request.submit_request
5528 (
5529 application => 'PA',
5530 program => 'PAINIACT',
5531 description => 'PRC: Initiate Project Deliverable Actions',
5532 start_time => NULL,
5533 sub_request => false,
5534 argument1 => 'DEMAND',
5535 argument2 => p_project_number, -- 3671408 changed parameter value to passed IN parameter
5536 argument3 => NULL
5537 );
5538 IF l_debug_mode = 'Y' THEN
5539 pa_debug.g_err_stage:= 'Request id is '||l_request_id;
5540 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5541 END IF;
5542
5543 -- Throw an error if the request could not be submitted.
5544 IF l_request_id = 0 THEN
5545 PA_UTILS.ADD_MESSAGE
5546 (p_app_short_name => 'PA',
5547 p_msg_name => 'PA_DLV_INI_CONC_PGM_ERR');
5548 RAISE Invalid_Arg_Exc_Dlv;
5549 END IF;
5550
5551 COMMIT ;
5552
5553 IF l_debug_mode = 'Y' THEN
5554 pa_debug.g_err_stage:= 'Exiting RUN_ACTION_CONC_PROCESS_WRP ' ;
5555 pa_debug.write(g_module_name,pa_debug.g_err_stage,3);
5556 pa_debug.reset_curr_function; --Added for bug 4945876
5557 END IF;
5558 EXCEPTION
5559 WHEN Invalid_Arg_Exc_Dlv THEN
5560 x_return_status := FND_API.G_RET_STS_ERROR;
5561 l_msg_count := FND_MSG_PUB.count_msg;
5562
5563 -- 3671408 cursor is not used now , commented below code
5564 /*
5565 --Close any open cursors and roll back
5566 IF c_project_number_from%ISOPEN THEN
5567 CLOSE c_project_number_from;
5568 END IF;
5569 */
5570 -- 3671408 end
5571 /* IF c_project_sys_status_code%ISOPEN THEN
5572 CLOSE c_project_sys_status_code;
5573 END IF;*/
5574
5575 IF (p_commit = FND_API.G_TRUE) THEN
5576 ROLLBACK TO RUN_ACTION_CONC_PROCESS_WRP_SP;
5577 END IF ;
5578
5579 IF l_debug_mode = 'Y' THEN
5580 pa_debug.g_err_stage := 'Inside Invalid arg exception of RUN_ACTION_CONC_PROCESS_WRP';
5581 pa_debug.write(g_module_name,pa_debug.g_err_stage,5);
5582 END IF;
5583
5584 IF l_msg_count = 1 THEN
5585 PA_INTERFACE_UTILS_PUB.get_messages
5586 (p_encoded => FND_API.G_TRUE,
5587 p_msg_index => 1,
5588 p_msg_count => l_msg_count,
5589 p_msg_data => l_msg_data,
5590 p_data => l_data,
5591 p_msg_index_out => l_msg_index_out);
5592 x_msg_data := l_data;
5593 x_msg_count := l_msg_count;
5594 END IF;
5595 IF l_debug_mode = 'Y' THEN
5596 pa_debug.reset_curr_function;
5597 END IF ;
5598 RETURN;
5599 WHEN OTHERS THEN
5600 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5601 x_msg_count := 1;
5602 x_msg_data := SQLERRM;
5603
5604 -- 3671408 cursor is not used now, removed below code
5605 /*
5606 --Close any open cursors and roll back
5607 IF c_project_number_from%ISOPEN THEN
5608 CLOSE c_project_number_from;
5609 END IF;
5610 */
5611 -- 3671408
5612
5613 /*IF c_project_sys_status_code%ISOPEN THEN
5614 CLOSE c_project_sys_status_code;
5615 END IF;*/
5616
5617 IF (p_commit = FND_API.G_TRUE) THEN
5618 ROLLBACK TO RUN_ACTION_CONC_PROCESS_WRP_SP;
5619 END IF ;
5620
5621 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
5622 ,p_procedure_name => 'RUN_ACTION_CONC_PROCESS_WRP');
5623
5624 IF p_debug_mode = 'Y' THEN
5625 pa_debug.g_err_stage:='Unexpected Error'||SQLERRM;
5626 pa_debug.write(g_module_name, pa_debug.g_err_stage,5);
5627 pa_debug.reset_curr_function;
5628 END IF;
5629 RAISE;
5630 END RUN_ACTION_CONC_PROCESS_WRP ;
5631
5632 /*==================================================================================
5633 This is the wrapper API which has to be called from FORMS whenever Project Status
5634 is changed to 'Approved' .This API inturn places call to another wrapper API
5635 RUN_ACTION_CONC_PROCESS_WRP - which places concurrent request for automatically
5636 generating demand (When the Project Status is 'Approved')
5637 ==================================================================================*/
5638
5639 PROCEDURE RUN_ACTION_CONC_FRM_WRP
5640 (
5641 p_project_id IN PA_PROJECTS_ALL.PROJECT_ID%TYPE
5642 , x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5643 , x_msg_count OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
5644 , x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
5645 )
5646 IS
5647 l_project_number PA_PROJECTS_ALL.SEGMENT1%TYPE ;
5648
5649 -- 3671408 Added below cursor to retrieve project_number
5650
5651 CURSOR c_project_details(p_project_id PA_PROJECTS_ALL.PROJECT_ID%TYPE) IS
5652 SELECT segment1
5653 FROM PA_PROJECTS_ALL
5654 WHERE PROJECT_ID = p_project_id;
5655
5656 BEGIN
5657 x_msg_count := 0;
5658 x_return_status := FND_API.G_RET_STS_SUCCESS;
5659
5660 IF p_project_id IS NULL THEN
5661 x_return_status := FND_API.G_RET_STS_ERROR;
5662 PA_UTILS.ADD_MESSAGE
5663 (p_app_short_name => 'PA',
5664 p_msg_name => 'PA_INV_PARAM_PASSED');
5665 RAISE Invalid_Arg_Exc_Dlv;
5666 END IF;
5667
5668 -- 3671408 added code to retrieve project number
5669
5670 OPEN c_project_details(p_project_id) ;
5671 FETCH c_project_details INTO l_project_number ;
5672 CLOSE c_project_details;
5673
5674 --Bug 3752898
5675 --While Calling this API ,the Message Stack should not be re-initialized.
5676 --If it gets reinitialized it will break fix for Bug # 3134205
5677
5678 PA_ACTIONS_PUB.RUN_ACTION_CONC_PROCESS_WRP
5679 (
5680 p_calling_module => 'FORMS'
5681 ,p_init_msg_list => FND_API.G_FALSE -- 3752898 , Passing False to avoid re-initialization of Message Stack
5682 ,p_project_id => p_project_id
5683 ,p_project_number => l_project_number -- 3671408 , passing retrieved value
5684 ,x_return_status => x_return_status
5685 ,x_msg_count => x_msg_count
5686 ,x_msg_data => x_msg_data
5687 );
5688
5689 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5690 RAISE Invalid_Arg_Exc_Dlv ;
5691 END IF ;
5692
5693 EXCEPTION
5694 WHEN Invalid_Arg_Exc_Dlv THEN
5695
5696 -- 3671408 added code to handle cursor
5697 IF c_project_details%ISOPEN THEN
5698 CLOSE c_project_details;
5699 END IF;
5700
5701 x_return_status := FND_API.G_RET_STS_ERROR;
5702 x_msg_count := FND_MSG_PUB.count_msg;
5703 x_msg_data :='Invalid Argument Exception inside RUN_ACTION_CONC_FRM_WRP' || x_msg_data;
5704 RETURN;
5705 WHEN OTHERS THEN
5706 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5707 x_msg_count := FND_MSG_PUB.count_msg;
5708 x_msg_data := SQLERRM;
5709
5710 -- 3671408 added code to handle cursor
5711 IF c_project_details%ISOPEN THEN
5712 CLOSE c_project_details;
5713 END IF;
5714
5715 FND_MSG_PUB.add_exc_msg( p_pkg_name=> 'PA_ACTIONS_PUB'
5716 ,p_procedure_name => 'RUN_ACTION_CONC_FRM_WRP');
5717
5718 RAISE;
5719 END RUN_ACTION_CONC_FRM_WRP;
5720
5721 END PA_ACTIONS_PUB;