[Home] [Help]
PACKAGE BODY: APPS.PA_ACTION_SETS_PVT
Source
1 PACKAGE BODY pa_action_sets_pvt AS
2 /*$Header: PARASPVB.pls 120.4 2008/02/28 11:50:39 jcgeorge ship $*/
3 --
4 PROCEDURE create_action_set
5 (p_action_set_type_code IN pa_action_set_types.action_set_type_code%TYPE
6 ,p_action_set_name IN pa_action_sets.action_set_name%TYPE
7 ,p_object_type IN pa_action_sets.object_type%TYPE := NULL
8 ,p_object_id IN pa_action_sets.object_id%TYPE := NULL
9 ,p_start_date_active IN pa_action_sets.start_date_active%TYPE := NULL
10 ,p_end_date_active IN pa_action_sets.end_date_active%TYPE := NULL
11 ,p_action_set_template_flag IN pa_action_sets.action_set_template_flag%TYPE := NULL
12 ,p_source_action_set_id IN pa_action_sets.source_action_set_id%TYPE := NULL
13 ,p_status_code IN pa_action_sets.status_code%TYPE := NULL
14 ,p_description IN pa_action_sets.description%TYPE := NULL
15 ,p_attribute_category IN pa_action_sets.attribute_category%TYPE := NULL
16 ,p_attribute1 IN pa_action_sets.attribute1%TYPE := NULL
17 ,p_attribute2 IN pa_action_sets.attribute2%TYPE := NULL
18 ,p_attribute3 IN pa_action_sets.attribute3%TYPE := NULL
19 ,p_attribute4 IN pa_action_sets.attribute4%TYPE := NULL
20 ,p_attribute5 IN pa_action_sets.attribute5%TYPE := NULL
21 ,p_attribute6 IN pa_action_sets.attribute6%TYPE := NULL
22 ,p_attribute7 IN pa_action_sets.attribute7%TYPE := NULL
23 ,p_attribute8 IN pa_action_sets.attribute8%TYPE := NULL
24 ,p_attribute9 IN pa_action_sets.attribute9%TYPE := NULL
25 ,p_attribute10 IN pa_action_sets.attribute10%TYPE := NULL
26 ,p_attribute11 IN pa_action_sets.attribute11%TYPE := NULL
27 ,p_attribute12 IN pa_action_sets.attribute12%TYPE := NULL
28 ,p_attribute13 IN pa_action_sets.attribute13%TYPE := NULL
29 ,p_attribute14 IN pa_action_sets.attribute14%TYPE := NULL
30 ,p_attribute15 IN pa_action_sets.attribute15%TYPE := NULL
31 ,x_action_set_id OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
32 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
33 )
34 IS
35
36 l_return_status VARCHAR2(1);
37 l_unique VARCHAR2(1);
38 l_existing_action_set_id NUMBER;
39 l_status_code pa_action_sets.status_code%TYPE;
40 l_actual_start_date DATE;
41 l_is_action_set_started VARCHAR2(1);
42 l_debug_mode VARCHAR2(20) := 'N';
43
44 BEGIN
45
46 -- Initialize the return status to success
47 x_return_status := FND_API.G_RET_STS_SUCCESS;
48
49 --Bug 4403338
50 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
51
52 --Log Message: 4403338
53 IF l_debug_mode = 'Y' THEN
54 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set.begin'
55 ,x_msg => 'Beginning of Create_Action_Set pvt'
56 ,x_log_level => 5);
57 END IF;
58
59 IF p_action_set_template_flag = 'Y' THEN
60
61 l_unique := PA_ACTION_SET_UTILS.is_name_unique_in_type(
62 p_action_set_type_code => p_action_set_type_code,
63 p_action_set_name => p_action_set_name);
64
65 IF l_unique = 'N' THEN
66 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
67 ,p_msg_name => 'PA_ACTION_SET_NAME_NOT_UNIQUE');
68 END IF;
69
70 IF p_end_date_active IS NOT NULL THEN
71 IF p_start_date_active > p_end_date_active THEN
72 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
73 ,p_msg_name => 'PA_INVALID_START_DATE');
74 END IF;
75 END IF;
76
77 ELSE
78
79 l_existing_action_set_id := PA_ACTION_SET_UTILS.get_action_set_id(
80 p_action_set_type_code => p_action_set_type_code,
81 p_object_type => p_object_type,
82 p_object_id => p_object_id);
83
84 IF l_existing_action_set_id IS NOT NULL THEN
85 PA_UTILS.Add_Message (p_app_short_name => 'PA'
86 ,p_msg_name => 'PA_OBJECT_HAS_ACTION_SET');
87
88 --Log Message: 4403338
89 IF l_debug_mode = 'Y' THEN
90 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.create_action_set'
91 ,x_msg => 'Message: PA_OBJECT_HAS_ACTION_SET'
92 ,x_log_level => 5);
93 END IF;
94
95 END IF;
96
97 l_is_action_set_started := PA_ACTION_SETS_DYN.Is_Action_Set_Started_On_Apply(
98 p_action_set_type_code => p_action_set_type_code,
99 p_object_type => p_object_type,
100 p_object_id => p_object_id);
101 --Log Message: 4403338
102 IF l_debug_mode = 'Y' THEN
103 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set'
104 ,x_msg => 'l_is_action_set_started = '|| l_is_action_set_started
105 ,x_log_level => 5);
106 END IF;
107
108 IF l_is_action_set_started = 'Y' THEN
109 l_status_code := 'STARTED';
110 ELSE
111 l_status_code := 'NOT_STARTED';
112 END IF;
113
114 IF l_status_code = 'STARTED' THEN
115 l_actual_start_date := SYSDATE;
116 END IF;
117
118 END IF;
119
120 IF FND_MSG_PUB.Count_Msg =0 THEN
121
122 --Log Message: 4403338
123 IF l_debug_mode = 'Y' THEN
124 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set'
125 ,x_msg => 'before pa_action_sets_pkg.insert_row'
126 ,x_log_level => 5);
127 END IF;
128
129 PA_ACTION_SETS_PKG.insert_row
130 (p_action_set_type_code => p_action_set_type_code
131 ,p_action_set_name => p_action_set_name
132 ,p_object_type => p_object_type
133 ,p_object_id => p_object_id
134 ,p_start_date_active => p_start_date_active
135 ,p_end_date_active => p_end_date_active
136 ,p_description => p_description
137 ,p_source_action_set_id => p_source_action_set_id
138 ,p_status_code => l_status_code
139 ,p_actual_start_date => l_actual_start_date
140 ,p_action_set_template_flag => p_action_set_template_flag
141 ,p_attribute_category => p_attribute_category
142 ,p_attribute1 => p_attribute1
143 ,p_attribute2 => p_attribute2
144 ,p_attribute3 => p_attribute3
145 ,p_attribute4 => p_attribute4
146 ,p_attribute5 => p_attribute5
147 ,p_attribute6 => p_attribute6
148 ,p_attribute7 => p_attribute7
149 ,p_attribute8 => p_attribute8
150 ,p_attribute9 => p_attribute9
151 ,p_attribute10 => p_attribute10
152 ,p_attribute11 => p_attribute11
153 ,p_attribute12 => p_attribute12
154 ,p_attribute13 => p_attribute13
155 ,p_attribute14 => p_attribute14
156 ,p_attribute15 => p_attribute15
157 ,x_action_set_id => x_action_set_id
158 ,x_return_status => l_return_status);
159
160 END IF;
161
162 --Log Message: 4403338
163 IF l_debug_mode = 'Y' THEN
164 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set'
165 ,x_msg => 'x_action_set_id = '|| x_action_set_id
166 ,x_log_level => 5);
167 END IF;
168
169 IF FND_MSG_PUB.Count_Msg > 0 THEN
170 x_return_status := FND_API.G_RET_STS_ERROR;
171 END IF;
172
173 EXCEPTION
174 WHEN OTHERS THEN
175
176 -- Set the excetption Message and the stack
177 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Create_Action_Set'
178 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
179 --
180 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
181 RAISE;
182
183 END Create_Action_Set;
184
185
186 PROCEDURE update_action_set
187 (p_action_set_id IN pa_action_sets.action_set_id%TYPE := NULL
188 ,p_action_set_name IN pa_action_sets.action_set_name%TYPE := FND_API.G_MISS_CHAR
189 ,p_action_set_type_code IN pa_action_sets.action_set_type_code%TYPE := FND_API.G_MISS_CHAR
190 ,p_start_date_active IN pa_action_sets.start_date_active%TYPE := FND_API.G_MISS_DATE
191 ,p_end_date_active IN pa_action_sets.end_date_active%TYPE := FND_API.G_MISS_DATE
192 ,p_action_set_template_flag IN pa_action_sets.action_set_template_flag%TYPE := FND_API.G_MISS_CHAR
193 ,p_status_code IN pa_action_sets.status_code%TYPE := FND_API.G_MISS_CHAR
194 ,p_description IN pa_action_sets.description%TYPE := FND_API.G_MISS_CHAR
195 ,p_record_version_number IN pa_action_sets.record_version_number%TYPE
196 ,p_attribute_category IN pa_action_sets.attribute_category%TYPE := FND_API.G_MISS_CHAR
197 ,p_attribute1 IN pa_action_sets.attribute1%TYPE := FND_API.G_MISS_CHAR
198 ,p_attribute2 IN pa_action_sets.attribute2%TYPE := FND_API.G_MISS_CHAR
199 ,p_attribute3 IN pa_action_sets.attribute3%TYPE := FND_API.G_MISS_CHAR
200 ,p_attribute4 IN pa_action_sets.attribute4%TYPE := FND_API.G_MISS_CHAR
201 ,p_attribute5 IN pa_action_sets.attribute5%TYPE := FND_API.G_MISS_CHAR
202 ,p_attribute6 IN pa_action_sets.attribute6%TYPE := FND_API.G_MISS_CHAR
203 ,p_attribute7 IN pa_action_sets.attribute7%TYPE := FND_API.G_MISS_CHAR
204 ,p_attribute8 IN pa_action_sets.attribute8%TYPE := FND_API.G_MISS_CHAR
205 ,p_attribute9 IN pa_action_sets.attribute9%TYPE := FND_API.G_MISS_CHAR
206 ,p_attribute10 IN pa_action_sets.attribute10%TYPE := FND_API.G_MISS_CHAR
207 ,p_attribute11 IN pa_action_sets.attribute11%TYPE := FND_API.G_MISS_CHAR
208 ,p_attribute12 IN pa_action_sets.attribute12%TYPE := FND_API.G_MISS_CHAR
209 ,p_attribute13 IN pa_action_sets.attribute13%TYPE := FND_API.G_MISS_CHAR
210 ,p_attribute14 IN pa_action_sets.attribute14%TYPE := FND_API.G_MISS_CHAR
211 ,p_attribute15 IN pa_action_sets.attribute15%TYPE := FND_API.G_MISS_CHAR
212 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
213 )
214 IS
215
216 l_return_status VARCHAR2(1);
217 l_action_set_id NUMBER;
218 l_record_version_number NUMBER;
219 l_existing_action_set_id NUMBER;
220 l_previous_status pa_action_sets.status_code%TYPE;
221 l_status_code pa_action_sets.status_code%TYPE;
222 l_unique VARCHAR2(1);
223 l_actual_start_date DATE := FND_API.G_MISS_DATE;
224 l_action_set_type_code pa_action_set_types.action_set_type_code%TYPE;
225 l_action_set_template_flag VARCHAR2(1);
226 l_msg_count NUMBER;
227 l_msg_data VARCHAR2(2000);
228 l_debug_mode VARCHAR2(20) := 'N';
229
230 BEGIN
231
232 -- Initialize the return status to success
233 x_return_status := FND_API.G_RET_STS_SUCCESS;
234
235 --Log Message: 4403338
236 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
237
238 --Log Message: 4403338
239 IF l_debug_mode = 'Y' THEN
240 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Update_Action_Set.begin'
241 ,x_msg => 'Beginning of Update_Action_Set pvt'
242 ,x_log_level => 5);
243 END IF;
244
245 SELECT action_set_type_code,
246 action_set_template_flag
247 INTO l_action_set_type_code,
248 l_action_set_template_flag
249 FROM pa_action_sets
250 WHERE action_set_id = p_action_set_id;
251
252 IF l_action_set_template_flag = 'Y' THEN
253
254 IF p_action_set_name IS NOT NULL THEN
255
256 l_unique := PA_ACTION_SET_UTILS.is_name_unique_in_type(
257 p_action_set_type_code => l_action_set_type_code,
258 p_action_set_name => p_action_set_name,
259 p_action_set_id => p_action_set_id);
260
261 IF l_unique = 'N' THEN
262 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
263 ,p_msg_name => 'PA_ACTION_SET_NAME_NOT_UNIQUE');
264 END IF;
265
266 END IF;
267
268 IF p_end_date_active IS NOT NULL THEN
269 IF p_start_date_active > p_end_date_active THEN
270 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
271 ,p_msg_name => 'PA_INVALID_START_DATE');
272 END IF;
273 END IF;
274
275 ELSE
276
277 IF p_status_code IS NOT NULL THEN
278 --validate that status is a valid next status
279 null;
280
281 SELECT status_code INTO l_previous_status
282 FROM pa_action_sets
283 WHERE action_set_id = p_action_set_id;
284
285 IF p_status_code = 'STARTED' AND l_previous_status <> 'STARTED' THEN
286 l_actual_start_date := SYSDATE;
287 END IF;
288
289 END IF;
290
291 END IF;
292
293 IF FND_MSG_PUB.Count_Msg =0 THEN
294
295 PA_ACTION_SETS_PKG.update_row
296 (p_action_set_id => p_action_set_id
297 ,p_action_set_name => p_action_set_name
298 ,p_start_date_active => p_start_date_active
299 ,p_end_date_active => p_end_date_active
300 ,p_description => p_description
301 ,p_status_code => p_status_code
302 ,p_actual_start_date => l_actual_start_date
303 ,p_attribute_category => p_attribute_category
304 ,p_attribute1 => p_attribute1
305 ,p_attribute2 => p_attribute2
306 ,p_attribute3 => p_attribute3
307 ,p_attribute4 => p_attribute4
308 ,p_attribute5 => p_attribute5
309 ,p_attribute6 => p_attribute6
310 ,p_attribute7 => p_attribute7
311 ,p_attribute8 => p_attribute8
312 ,p_attribute9 => p_attribute9
313 ,p_attribute10 => p_attribute10
314 ,p_attribute11 => p_attribute11
315 ,p_attribute12 => p_attribute12
316 ,p_attribute13 => p_attribute13
317 ,p_attribute14 => p_attribute14
318 ,p_attribute15 => p_attribute15
319 ,x_return_status => l_return_status);
320
321 --only need to call process action set if status is changed to stated - may
322 --be needed in order to update line numbers based on the actual start date.
323 -- 2334717: When RESUMED, should be performed as well.
324 IF p_status_code = 'STARTED' OR p_status_code = 'RESUMED'THEN
325
326 PA_ACTION_SETS_DYN.Process_Action_Set(p_action_set_type_code => l_action_set_type_code,
327 p_action_set_id => p_action_set_id,
328 p_action_set_template_flag => l_action_set_template_flag,
329 x_return_status => l_return_status);
330
331 IF l_action_set_template_flag = 'N' AND FND_MSG_PUB.Count_Msg = 0 THEN
332
333 PA_ACTION_SETS_PUB.perform_single_action_set
334 (p_action_set_id => p_action_set_id,
335 p_init_msg_list => FND_API.G_FALSE,
336 x_return_status => l_return_status,
337 x_msg_count => l_msg_count,
338 x_msg_data => l_msg_data);
339
340 END IF;
341
342 END IF;
343
344 END IF;
345
346 IF FND_MSG_PUB.Count_Msg > 0 THEN
347 x_return_status := FND_API.G_RET_STS_ERROR;
348 END IF;
349
350 EXCEPTION
351 WHEN OTHERS THEN
352
353 -- Set the excetption Message and the stack
354 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Update_Action_Set'
355 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
356 --
357 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
358 RAISE;
359
360 END Update_Action_Set;
361
362
363 PROCEDURE delete_action_set
364 (p_action_set_id IN pa_action_sets.action_set_id%TYPE
365 ,p_record_version_number IN pa_action_sets.record_version_number%TYPE := NULL
366 ,x_return_status OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
367 IS
368
369 l_return_status VARCHAR2(1);
370 l_msg_count NUMBER;
371 l_msg_data VARCHAR2(2000);
372 l_action_set_id NUMBER;
373 l_record_version_number NUMBER;
374 l_is_source VARCHAR2(1);
375 l_do_lines_exist VARCHAR2(1);
376 l_action_set_lines_tbl pa_action_set_utils.action_set_lines_tbl_type;
377 l_action_set_template_flag VARCHAR2(1);
378 l_debug_mode VARCHAR2(20) := 'N';
379
380 BEGIN
381
382
383 -- Initialize the return status to success
384 x_return_status := FND_API.G_RET_STS_SUCCESS;
385
386 --Log Message: 4403338
387 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
388
389 --Log Message: 4403338
390 IF l_debug_mode = 'Y' THEN
391 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Delete_Action_Set'
392 ,x_msg => 'Beginning of Delete_Action_Set pvt'
393 ,x_log_level => 5);
394 END IF;
395
396 SELECT action_set_template_flag INTO l_action_set_template_flag
397 FROM pa_action_sets
398 WHERE action_set_id = p_action_set_id;
399
400 IF l_action_set_template_flag = 'Y' THEN
401
402 l_is_source := PA_ACTION_SET_UTILS.is_action_set_a_source(p_action_set_id => p_action_set_id);
403
404 IF l_is_source = 'Y' THEN
405 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
406 ,p_msg_name => 'PA_ACTION_SET_IS_SOURCE');
407 END IF;
408
409 END IF;
410
411 IF FND_MSG_PUB.Count_Msg = 0 THEN
412
413 l_action_set_lines_tbl := pa_action_set_utils.get_action_set_lines(p_action_set_id => p_action_set_id);
414
415 IF l_action_set_lines_tbl.COUNT > 0 THEN
416
417 FOR i IN l_action_set_lines_tbl.FIRST .. l_action_set_lines_tbl.LAST LOOP
418
419 delete_action_set_line(p_action_set_line_id => l_action_set_lines_tbl(i).action_set_line_id,
420 p_record_version_number => l_action_set_lines_tbl(i).record_version_number,
421 x_return_status => l_return_status);
422
423 END LOOP;
424
425 END IF;
426
427 END IF;
428
429 IF FND_MSG_PUB.Count_Msg = 0 THEN
430
431 l_do_lines_exist := PA_ACTION_SET_UTILS.do_lines_exist(p_action_set_id => p_action_set_id);
432
433 IF l_do_lines_exist = 'N' THEN
434
435 PA_ACTION_SETS_PKG.delete_row
436 (p_action_set_id => p_action_set_id,
437 p_record_version_number => p_record_version_number,
438 x_return_status => l_return_status);
439
440 ELSE
441
442 IF l_action_set_template_flag = 'N' THEN
443
444 PA_ACTION_SETS_PUB.perform_single_action_set(p_action_set_id => p_action_set_id
445 ,p_init_msg_list => FND_API.G_FALSE
446 ,x_return_status => l_return_status
447 ,x_msg_count => l_msg_count
448 ,x_msg_data => l_msg_data);
449 END IF;
450
451
452 PA_ACTION_SETS_PKG.update_row(p_action_set_id => p_action_set_id,
453 p_record_version_number => p_record_version_number,
454 p_status_code => 'DELETED',
455 x_return_status => l_return_status);
456
457
458 END IF;
459
460 END IF;
461
462 IF FND_MSG_PUB.Count_Msg > 0 THEN
463 x_return_status := FND_API.G_RET_STS_ERROR;
464 END IF;
465
466 EXCEPTION
467 WHEN OTHERS THEN
468
469 -- Set the excetption Message and the stack
470 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Delete_Action_Set'
471 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
472 --
473 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
474 RAISE;
475
476 END Delete_Action_Set;
477
478
479
480
481 PROCEDURE create_action_set_line
482 (p_action_set_id IN pa_action_sets.action_set_id%TYPE
483 ,p_use_def_description_flag IN VARCHAR2 := 'Y'
484 ,p_description IN pa_action_set_lines.description%TYPE := NULL
485 ,p_action_set_line_number IN pa_action_set_lines.action_set_line_number%TYPE := NULL
486 ,p_action_code IN pa_action_set_lines.action_code%TYPE
487 ,p_action_attribute1 IN pa_action_set_lines.action_attribute1%TYPE := NULL
488 ,p_action_attribute2 IN pa_action_set_lines.action_attribute2%TYPE := NULL
489 ,p_action_attribute3 IN pa_action_set_lines.action_attribute3%TYPE := NULL
490 ,p_action_attribute4 IN pa_action_set_lines.action_attribute4%TYPE := NULL
491 ,p_action_attribute5 IN pa_action_set_lines.action_attribute5%TYPE := NULL
492 ,p_action_attribute6 IN pa_action_set_lines.action_attribute6%TYPE := NULL
493 ,p_action_attribute7 IN pa_action_set_lines.action_attribute7%TYPE := NULL
494 ,p_action_attribute8 IN pa_action_set_lines.action_attribute8%TYPE := NULL
495 ,p_action_attribute9 IN pa_action_set_lines.action_attribute9%TYPE := NULL
496 ,p_action_attribute10 IN pa_action_set_lines.action_attribute10%TYPE := NULL
497 ,p_condition_tbl IN pa_action_set_utils.action_line_cond_tbl_type
498 ,x_action_set_line_id OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
499 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
500 )
501 IS
502
503 l_return_status VARCHAR2(1);
504 l_msg_index_out NUMBER;
505 l_action_set_line_rec pa_action_set_lines%ROWTYPE;
506 l_action_set_type_code pa_action_set_types.action_set_type_code%TYPE;
507 l_action_set_template_flag pa_action_sets.action_set_template_flag%TYPE;
508 l_action_set_line_id NUMBER;
509 l_action_line_condition_id NUMBER;
510 l_debug_mode VARCHAR2(20) := 'N';
511
512 BEGIN
513
514 -- Initialize the return status to success
515 x_return_status := FND_API.G_RET_STS_SUCCESS;
516
517 --Log Message: 4403338
518 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
519
520 --Log Message: 4403338
521 IF l_debug_mode = 'Y' THEN
522 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set_Line.begin'
523 ,x_msg => 'Beginning of Create_Action_Set_Line pvt'
524 ,x_log_level => 5);
525 END IF;
526
527 l_action_set_line_rec.action_set_id := p_action_set_id;
528 l_action_set_line_rec.action_set_line_number := p_action_set_line_number;
529 l_action_set_line_rec.action_code := p_action_code;
530 l_action_set_line_rec.action_attribute1 := p_action_attribute1;
531 l_action_set_line_rec.action_attribute2 := p_action_attribute2;
532 l_action_set_line_rec.action_attribute3 := p_action_attribute3;
533 l_action_set_line_rec.action_attribute4 := p_action_attribute4;
534 l_action_set_line_rec.action_attribute5 := p_action_attribute5;
535 l_action_set_line_rec.action_attribute6 := p_action_attribute6;
536 l_action_set_line_rec.action_attribute7 := p_action_attribute7;
537 l_action_set_line_rec.action_attribute8 := p_action_attribute8;
538 l_action_set_line_rec.action_attribute9 := p_action_attribute9;
539 l_action_set_line_rec.action_attribute10 := p_action_attribute10;
540
541 --Log Message: 4403338
542 IF l_debug_mode = 'Y' THEN
543 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set_Line.begin'
544 ,x_msg => 'p_action_set_id = '|| p_action_set_id
545 ,x_log_level => 5);
546 END IF;
547
548 SELECT action_set_type_code, action_set_template_flag
549 INTO l_action_set_type_code, l_action_set_template_flag
550 FROM pa_action_sets
551 WHERE action_set_id = p_action_set_id;
552
553 --Log Message: 4403338
554 IF l_debug_mode = 'Y' THEN
555 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set_Line.begin'
556 ,x_msg => 'Before validate_action_set_line: '||'action_set_type_code = '||l_action_set_type_code
557 ,x_log_level => 5);
558 END IF;
559
560 PA_ACTION_SETS_DYN.Validate_Action_Set_Line(p_action_set_type_code => l_action_set_type_code,
561 p_action_set_line_rec => l_action_set_line_rec,
562 p_action_line_conditions_tbl => p_condition_tbl,
563 x_return_status => l_return_status);
564
565 --Log Message: 4403338
566 IF l_debug_mode = 'Y' THEN
567 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Create_Action_Set_Line.begin'
568 ,x_msg => 'After validate_action_set_line: x_retun_status = '||l_return_status
569 ,x_log_level => 5);
570 END IF;
571
572 IF FND_MSG_PUB.Count_Msg = 0 THEN
573
574 PA_ACTION_SET_LINES_PKG.Insert_Row
575 (p_action_set_id => p_action_set_id
576 ,p_action_set_line_number => p_action_set_line_number
577 ,p_description => p_description
578 ,p_status_code => 'PENDING'
579 ,p_action_code => p_action_code
580 ,p_action_attribute1 => p_action_attribute1
581 ,p_action_attribute2 => p_action_attribute2
582 ,p_action_attribute3 => p_action_attribute3
583 ,p_action_attribute4 => p_action_attribute4
584 ,p_action_attribute5 => p_action_attribute5
585 ,p_action_attribute6 => p_action_attribute6
586 ,p_action_attribute7 => p_action_attribute7
587 ,p_action_attribute8 => p_action_attribute8
588 ,p_action_attribute9 => p_action_attribute9
589 ,p_action_attribute10 => p_action_attribute10
590 ,x_action_set_line_id => l_action_set_line_id
591 ,x_return_status => l_return_status);
592
593 FOR i IN p_condition_tbl.FIRST .. p_condition_tbl.LAST LOOP
594
595
596 PA_ACTION_SET_LINE_COND_PKG.Insert_Row
597 (p_action_set_line_id => l_action_set_line_id
598 ,p_condition_date => p_condition_tbl(i).condition_date
599 ,p_condition_code => p_condition_tbl(i).condition_code
600 ,p_description => p_condition_tbl(i).description
601 ,p_condition_attribute1 => p_condition_tbl(i).condition_attribute1
602 ,p_condition_attribute2 => p_condition_tbl(i).condition_attribute2
603 ,p_condition_attribute3 => p_condition_tbl(i).condition_attribute3
604 ,p_condition_attribute4 => p_condition_tbl(i).condition_attribute4
605 ,p_condition_attribute5 => p_condition_tbl(i).condition_attribute5
606 ,p_condition_attribute6 => p_condition_tbl(i).condition_attribute6
607 ,p_condition_attribute7 => p_condition_tbl(i).condition_attribute7
608 ,p_condition_attribute8 => p_condition_tbl(i).condition_attribute8
609 ,p_condition_attribute9 => p_condition_tbl(i).condition_attribute9
610 ,p_condition_attribute10 => p_condition_tbl(i).condition_attribute10
611 ,x_action_set_line_condition_id => l_action_line_condition_id
612 ,x_return_status => l_return_status);
613
614 END LOOP;
615
616 END IF;
617
618 -- If any errors exist then set the x_return_status to 'E'
619 IF FND_MSG_PUB.Count_Msg > 0 THEN
620 x_return_status := FND_API.G_RET_STS_ERROR;
621 END IF;
622
623
624 EXCEPTION
625 WHEN OTHERS THEN
626
627 -- Set the excetption Message and the stack
628 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Create_Action_Set_Line'
629 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
630 --
631 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
632 RAISE;
633
634 END Create_Action_Set_Line;
635
636
637 PROCEDURE update_action_set_line
638 (p_action_set_line_id IN pa_action_set_lines.action_set_line_id%TYPE
639 ,p_record_version_number IN pa_action_set_lines.record_version_number%TYPE
640 ,p_action_set_line_number IN pa_action_set_lines.action_set_line_number%TYPE := FND_API.G_MISS_NUM
641 ,p_description IN pa_action_set_lines.description%TYPE := FND_API.G_MISS_CHAR
642 ,p_action_code IN pa_action_set_lines.action_code%TYPE := FND_API.G_MISS_CHAR
643 ,p_action_attribute1 IN pa_action_set_lines.action_attribute1%TYPE := FND_API.G_MISS_CHAR
644 ,p_action_attribute2 IN pa_action_set_lines.action_attribute2%TYPE := FND_API.G_MISS_CHAR
645 ,p_action_attribute3 IN pa_action_set_lines.action_attribute3%TYPE := FND_API.G_MISS_CHAR
646 ,p_action_attribute4 IN pa_action_set_lines.action_attribute4%TYPE := FND_API.G_MISS_CHAR
647 ,p_action_attribute5 IN pa_action_set_lines.action_attribute5%TYPE := FND_API.G_MISS_CHAR
648 ,p_action_attribute6 IN pa_action_set_lines.action_attribute6%TYPE := FND_API.G_MISS_CHAR
649 ,p_action_attribute7 IN pa_action_set_lines.action_attribute7%TYPE := FND_API.G_MISS_CHAR
650 ,p_action_attribute8 IN pa_action_set_lines.action_attribute8%TYPE := FND_API.G_MISS_CHAR
651 ,p_action_attribute9 IN pa_action_set_lines.action_attribute9%TYPE := FND_API.G_MISS_CHAR
652 ,p_action_attribute10 IN pa_action_set_lines.action_attribute10%TYPE := FND_API.G_MISS_CHAR
653 ,p_condition_tbl IN pa_action_set_utils.action_line_cond_tbl_type := pa_action_set_utils.l_empty_condition_tbl
654 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
655 )
656 IS
657
658 l_return_status VARCHAR2(1);
659 l_record_version_number NUMBER;
660 l_current_line_status pa_action_set_lines.status_code%TYPE;
661 l_action_set_type_code pa_action_set_types.action_set_type_code%TYPE;
662 l_action_set_id pa_action_sets.action_set_id%TYPE;
663 l_action_set_line_rec pa_action_set_lines%ROWTYPE;
664 l_action_set_template_flag VARCHAR2(1);
665 l_debug_mode VARCHAR2(20) := 'N';
666
667 BEGIN
668
669 -- Initialize the return status to success
670 x_return_status := FND_API.G_RET_STS_SUCCESS;
671
672 --Log Message: 4403338
673 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
674
675 --Log Message: 4403338
676 IF l_debug_mode = 'Y' THEN
677 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Update_Action_Set_Line.begin'
678 ,x_msg => 'Beginning of Update_Action_Set_Line pvt'
679 ,x_log_level => 5);
680 END IF;
681
682 SELECT sets.action_set_type_code,
683 sets.action_set_id,
684 sets.action_set_template_flag,
685 lines.status_code
686 INTO l_action_set_type_code,
687 l_action_set_id,
688 l_action_set_template_flag,
689 l_current_line_status
690 FROM pa_action_sets sets,
691 pa_action_set_lines lines
692 WHERE lines.action_set_line_id = p_action_set_line_id
693 AND sets.action_set_id = lines.action_set_id;
694
695 IF l_current_line_status = 'ACTIVE' OR l_current_line_status='COMPLETE' THEN
696 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
697 ,p_msg_name => 'PA_LINE_ALREADY_PERFORMED');
698 ELSE
699
700 l_action_set_line_rec.action_set_id := l_action_set_id;
701 l_action_set_line_rec.action_set_line_number := p_action_set_line_number;
702 l_action_set_line_rec.action_code := p_action_code;
703 l_action_set_line_rec.action_attribute1 := p_action_attribute1;
704 l_action_set_line_rec.action_attribute2 := p_action_attribute2;
705 l_action_set_line_rec.action_attribute3 := p_action_attribute3;
706 l_action_set_line_rec.action_attribute4 := p_action_attribute4;
707 l_action_set_line_rec.action_attribute5 := p_action_attribute5;
708 l_action_set_line_rec.action_attribute6 := p_action_attribute6;
709 l_action_set_line_rec.action_attribute7 := p_action_attribute7;
710 l_action_set_line_rec.action_attribute8 := p_action_attribute8;
711 l_action_set_line_rec.action_attribute9 := p_action_attribute9;
712 l_action_set_line_rec.action_attribute10 := p_action_attribute10;
713
714
715 PA_ACTION_SETS_DYN.Validate_Action_Set_Line(p_action_set_type_code => l_action_set_type_code,
716 p_action_set_line_rec => l_action_set_line_rec,
717 p_action_line_conditions_tbl => p_condition_tbl,
718 x_return_status => l_return_status);
719
720
721
722 IF FND_MSG_PUB.Count_Msg = 0 THEN
723
724 PA_ACTION_SET_LINES_PKG.Update_Row
725 (p_action_set_line_id => p_action_set_line_id
726 ,p_action_set_line_number => p_action_set_line_number
727 ,p_description => p_description
728 ,p_action_code => p_action_code
729 ,p_action_attribute1 => p_action_attribute1
730 ,p_action_attribute2 => p_action_attribute2
731 ,p_action_attribute3 => p_action_attribute3
732 ,p_action_attribute4 => p_action_attribute4
733 ,p_action_attribute5 => p_action_attribute5
734 ,p_action_attribute6 => p_action_attribute6
735 ,p_action_attribute7 => p_action_attribute7
736 ,p_action_attribute8 => p_action_attribute8
737 ,p_action_attribute9 => p_action_attribute9
738 ,p_action_attribute10 => p_action_attribute10
739 ,x_return_status => l_return_status);
740
741
742 FOR i IN p_condition_tbl.FIRST .. p_condition_tbl.LAST LOOP
743
744 PA_ACTION_SET_LINE_COND_PKG.Update_Row
745 (p_action_set_line_condition_id => p_condition_tbl(i).action_set_line_condition_id
746 ,p_condition_date => p_condition_tbl(i).condition_date
747 ,p_condition_code => p_condition_tbl(i).condition_code
748 ,p_description => p_condition_tbl(i).description
749 ,p_condition_attribute1 => p_condition_tbl(i).condition_attribute1
750 ,p_condition_attribute2 => p_condition_tbl(i).condition_attribute2
751 ,p_condition_attribute3 => p_condition_tbl(i).condition_attribute3
752 ,p_condition_attribute4 => p_condition_tbl(i).condition_attribute4
753 ,p_condition_attribute5 => p_condition_tbl(i).condition_attribute5
754 ,p_condition_attribute6 => p_condition_tbl(i).condition_attribute6
755 ,p_condition_attribute7 => p_condition_tbl(i).condition_attribute7
756 ,p_condition_attribute8 => p_condition_tbl(i).condition_attribute8
757 ,p_condition_attribute9 => p_condition_tbl(i).condition_attribute9
758 ,p_condition_attribute10 => p_condition_tbl(i).condition_attribute10
759 ,x_return_status => l_return_status);
760
761 END LOOP;
762
763 END IF;
764
765 END IF;
766
767 -- If any errors exist then set the x_return_status to 'E'
768 IF FND_MSG_PUB.Count_Msg > 0 THEN
769 x_return_status := FND_API.G_RET_STS_ERROR;
770 END IF;
771
772 EXCEPTION
773 WHEN OTHERS THEN
774
775 -- Set the excetption Message and the stack
776 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Update_Action_Set_Line'
777 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
778 --
779 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
780 RAISE;
781
782 END Update_Action_Set_Line;
783
784
785 PROCEDURE delete_action_set_line
786 (p_action_set_line_id IN pa_action_sets.action_set_id%TYPE
787 ,p_record_version_number IN pa_action_set_lines.record_version_number%TYPE
788 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
789 )
790 IS
791
792 l_return_status VARCHAR2(1);
793 l_action_set_type_code pa_action_set_types.action_set_type_code%TYPE;
794 l_action_set_id pa_action_sets.action_set_id%TYPE;
795 l_action_set_template_flag pa_action_sets.action_set_template_flag%TYPE;
796 l_current_line_status pa_action_set_lines.status_code%TYPE;
797 l_do_audit_lines_exist VARCHAR2(1);
798 l_action_line_conditions_tbl pa_action_set_utils.action_line_cond_tbl_type;
799 l_debug_mode VARCHAR2(20) := 'N';
800
801 BEGIN
802
803 -- Initialize the return status to success
804 x_return_status := FND_API.G_RET_STS_SUCCESS;
805
806 --Log Message: 4403338
807 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
808
809 --Log Message: 4403338
810 IF l_debug_mode = 'Y' THEN
811 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Delete_Action_Set_Line.begin'
812 ,x_msg => 'Beginning of Delete_Action_Set_Line pvt'
813 ,x_log_level => 5);
814 END IF;
815
816 SELECT sets.action_set_type_code,
817 sets.action_set_id,
818 sets.action_set_template_flag,
819 lines.status_code
820 INTO l_action_set_type_code,
821 l_action_set_id,
822 l_action_set_template_flag,
823 l_current_line_status
824 FROM pa_action_sets sets,
825 pa_action_set_lines lines
826 WHERE lines.action_set_line_id = p_action_set_line_id
827 AND sets.action_set_id = lines.action_set_id;
828
829 IF l_current_line_status = 'REVERSE_PENDING' OR l_current_line_status = 'UPDATE_PENDING' THEN
830
831 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
832 ,p_msg_name => 'PA_ACTION_LINE_CHANGE_PENDING');
833
834 ELSIF l_current_line_status = 'REVERSED' THEN
835
836 -- 2411522 : Need to set MOD_SOURCE_ACTION_SET_FLAG = 'Y' when deleting a line.
837 IF l_action_set_template_flag = 'N' THEN
838 UPDATE pa_action_sets
839 SET MOD_SOURCE_ACTION_SET_FLAG = 'Y'
840 WHERE action_set_id = l_action_set_id;
841 END IF;
842
843 PA_ACTION_SET_LINES_PKG.update_row(p_action_set_line_id => p_action_set_line_id,
844 p_line_deleted_flag => 'Y',
845 x_return_status => l_return_status);
846
847 ELSE
848
849 l_do_audit_lines_exist := PA_ACTION_SET_UTILS.do_audit_lines_exist(p_action_set_line_id => p_action_set_line_id);
850 -- Bug Ref : 6797508
851 IF ( l_action_set_type_code = 'ADVERTISEMENT' ) THEN
852 IF ( l_do_audit_lines_exist = 'Y' )THEN
853 DELETE
854 FROM PA_ACTION_SET_LINE_AUD
855 WHERE ACTION_SET_LINE_ID = P_ACTION_SET_LINE_ID;
856 END IF;
857 -- 2411522 : Need to set MOD_SOURCE_ACTION_SET_FLAG = 'Y' when deleting a line.
858 l_do_audit_lines_exist :=
859 PA_ACTION_SET_UTILS.do_audit_lines_exist(p_action_set_line_id => p_action_set_line_id);
860 IF ( l_do_audit_lines_exist = 'N' AND l_current_line_status <> 'ACTIVE' ) THEN
861 IF l_action_set_template_flag = 'N' THEN
862 UPDATE pa_action_sets
863 SET MOD_SOURCE_ACTION_SET_FLAG = 'Y'
864 WHERE action_set_id = l_action_set_id;
865 END IF;
866 l_action_line_conditions_tbl :=
867 PA_ACTION_SET_UTILS.get_action_line_conditions(p_action_set_line_id => p_action_set_line_id);
868 FOR i IN l_action_line_conditions_tbl.FIRST .. l_action_line_conditions_tbl.LAST LOOP
869 PA_ACTION_SET_LINE_COND_PKG.delete_row
870 (p_action_set_line_condition_id => l_action_line_conditions_tbl(i).action_set_line_condition_id,
871 p_record_version_number => p_record_version_number,
872 x_return_status => l_return_status);
873 END LOOP;
874 PA_ACTION_SET_LINES_PKG.delete_row
875 (p_action_set_line_id => p_action_set_line_id,
876 p_record_version_number => p_record_version_number,
877 x_return_status => l_return_status);
878 ELSE
879 PA_ACTION_SET_LINES_PKG.update_row(p_action_set_line_id => p_action_set_line_id,
880 p_record_version_number => p_record_version_number,
881 p_status_code => 'REVERSE_PENDING',
882 p_line_deleted_flag => 'Y',
883 x_return_status => l_return_status);
884 END IF;
885 ELSE -- l_action_set_type_code = 'ADVERTISEMENT' ) THEN
886 IF ( l_do_audit_lines_exist = 'N' AND l_current_line_status <> 'ACTIVE' AND l_current_line_status <> 'COMPLETE' ) THEN
887 -- 2411522 : Need to set MOD_SOURCE_ACTION_SET_FLAG = 'Y' when deleting a line.
888 IF l_action_set_template_flag = 'N' THEN
889 UPDATE pa_action_sets
890 SET MOD_SOURCE_ACTION_SET_FLAG = 'Y'
891 WHERE action_set_id = l_action_set_id;
892 END IF;
893 l_action_line_conditions_tbl :=
894 PA_ACTION_SET_UTILS.get_action_line_conditions(p_action_set_line_id => p_action_set_line_id);
895 FOR i IN l_action_line_conditions_tbl.FIRST .. l_action_line_conditions_tbl.LAST LOOP
896
897 PA_ACTION_SET_LINE_COND_PKG.delete_row
898 (p_action_set_line_condition_id => l_action_line_conditions_tbl(i).action_set_line_condition_id,
899 p_record_version_number => p_record_version_number,
900 x_return_status => l_return_status);
901
902 END LOOP;
903
904 PA_ACTION_SET_LINES_PKG.delete_row
905 (p_action_set_line_id => p_action_set_line_id,
906 p_record_version_number => p_record_version_number,
907 x_return_status => l_return_status);
908
909 ELSE
910
911 PA_ACTION_SET_LINES_PKG.update_row(p_action_set_line_id => p_action_set_line_id,
912 p_record_version_number => p_record_version_number,
913 p_status_code => 'REVERSE_PENDING',
914 p_line_deleted_flag => 'Y',
915 x_return_status => l_return_status);
916
917 END IF;
918 END IF;
919
920 END IF;
921
922 IF FND_MSG_PUB.Count_Msg > 0 THEN
923 x_return_status := FND_API.G_RET_STS_ERROR;
924 END IF;
925
926 EXCEPTION
927 WHEN OTHERS THEN
928
929 -- Set the excetption Message and the stack
930 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Delete_Action_Set_Line'
931 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
932 --
933 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
934 RAISE;
935
936 END Delete_Action_Set_Line;
937
938
939 FUNCTION get_def_reverse_audit_lines(p_action_set_line_id IN pa_action_set_lines.action_set_line_id%TYPE,
940 p_reason IN VARCHAR2) RETURN pa_action_set_utils.insert_audit_lines_tbl_type
941 IS
942
943 l_action_set_details_rec pa_action_sets%ROWTYPE;
944
945 l_active_audit_lines_tbl pa_action_set_utils.audit_lines_tbl_type;
946 l_insert_audit_lines_tbl pa_action_set_utils.insert_audit_lines_tbl_type;
947 l_reason_code_tbl pa_action_set_utils.varchar_tbl_type;
948 l_action_code_tbl pa_action_set_utils.varchar_tbl_type;
949 l_audit_display_attribute_tbl pa_action_set_utils.varchar_tbl_type;
950 l_audit_attribute_tbl pa_action_set_utils.varchar_tbl_type;
951 l_action_date_tbl pa_action_set_utils.date_tbl_type;
952 l_active_flag_tbl pa_action_set_utils.varchar_tbl_type;
953 l_rev_action_set_line_id_tbl pa_action_set_utils.number_tbl_type;
954
955 l_return_status VARCHAR2(1);
956
957 BEGIN
958
959 l_action_set_details_rec := PA_ACTION_SET_UTILS.get_action_set_details(p_action_set_line_id => p_action_set_line_id);
960
961 l_active_audit_lines_tbl := PA_ACTION_SET_UTILS.get_active_audit_lines(p_action_set_line_id => p_action_set_line_id);
962
963 IF l_active_audit_lines_tbl.COUNT > 0 THEN
964
965 FOR i IN l_active_audit_lines_tbl.FIRST .. l_active_audit_lines_tbl.LAST LOOP
966
967 l_insert_audit_lines_tbl(i).action_code := l_active_audit_lines_tbl(i).action_code;
968 l_insert_audit_lines_tbl(i).audit_display_attribute := l_active_audit_lines_tbl(i).audit_display_attribute;
969 l_insert_audit_lines_tbl(i).audit_attribute := l_active_audit_lines_tbl(i).audit_attribute;
970 IF p_reason='REVERSED' THEN
971 l_insert_audit_lines_tbl(i).reason_code := 'DELETED';
972 ELSIF p_reason='UPDATED' THEN
973 l_insert_audit_lines_tbl(i).reason_code := 'UPDATED';
974 END IF;
975 l_insert_audit_lines_tbl(i).reversed_action_set_line_id := p_action_set_line_id;
976
977 END LOOP;
978
979 END IF;
980
981 RETURN l_insert_audit_lines_tbl;
982
983 EXCEPTION
984 WHEN OTHERS THEN
985
986 -- Set the excetption Message and the stack
987 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.reverse_action_audit_lines'
988 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
989 --
990 RAISE;
991
992
993 END;
994
995
996 PROCEDURE bulk_insert_audit_lines(p_audit_lines_tbl IN pa_action_set_utils.insert_audit_lines_tbl_type,
997 p_action_set_line_id IN pa_action_set_lines.action_set_line_id%TYPE,
998 p_object_type IN pa_action_sets.object_type%TYPE,
999 p_object_id IN pa_action_sets.object_id%TYPE,
1000 p_action_set_type_code IN pa_action_sets.action_set_type_code%TYPE,
1001 p_status_code IN VARCHAR2,
1002 x_return_status OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
1003 IS
1004
1005 l_audit_lines_tbl pa_action_set_utils.insert_audit_lines_tbl_type;
1006 l_reason_code_tbl pa_action_set_utils.varchar_tbl_type;
1007 l_action_code_tbl pa_action_set_utils.varchar_tbl_type;
1008 l_audit_display_attribute_tbl pa_action_set_utils.varchar_tbl_type;
1009 l_audit_attribute_tbl pa_action_set_utils.varchar_tbl_type;
1010 l_rev_action_set_line_id_tbl pa_action_set_utils.number_tbl_type;
1011 l_encoded_error_message_tbl pa_action_set_utils.varchar_tbl_type;
1012
1013 BEGIN
1014
1015 IF p_status_code = 'REVERSED' THEN
1016
1017 UPDATE pa_action_set_line_aud
1018 SET active_flag = 'N'
1019 WHERE action_set_line_id = p_action_set_line_id;
1020
1021 END IF;
1022
1023 IF p_audit_lines_tbl.COUNT > 0 THEN
1024
1025 FOR i IN p_audit_lines_tbl.FIRST .. p_audit_lines_tbl.LAST LOOP
1026
1027 l_action_code_tbl(i) := p_audit_lines_tbl(i).action_code;
1028 l_reason_code_tbl(i) := p_audit_lines_tbl(i).reason_code;
1029 l_audit_display_attribute_tbl(i) := p_audit_lines_tbl(i).audit_display_attribute;
1030 l_audit_attribute_tbl(i) := p_audit_lines_tbl(i).audit_attribute;
1031 l_rev_action_set_line_id_tbl(i) := p_audit_lines_tbl(i).reversed_action_set_line_id;
1032 l_encoded_error_message_tbl(i) := p_audit_lines_tbl(i).encoded_error_message;
1033
1034 END LOOP;
1035
1036 FORALL i IN p_audit_lines_tbl.FIRST .. p_audit_lines_tbl.LAST
1037 INSERT INTO pa_action_set_line_aud
1038 (action_set_line_id,
1039 object_type,
1040 object_id,
1041 action_set_type_code,
1042 status_code,
1043 reason_code,
1044 action_code,
1045 audit_display_attribute,
1046 audit_attribute,
1047 encoded_error_message,
1048 action_date,
1049 active_flag,
1050 reversed_action_set_line_id,
1051 creation_date,
1052 created_by,
1053 last_update_date,
1054 last_updated_by,
1055 last_update_login,
1056 request_id,
1057 program_application_id,
1058 program_id,
1059 program_update_date
1060 )
1061 VALUES (p_action_set_line_id,
1062 p_object_type,
1063 p_object_id,
1064 p_action_set_type_code,
1065 p_status_code,
1066 l_reason_code_tbl(i),
1067 l_action_code_tbl(i),
1068 l_audit_display_attribute_tbl(i),
1069 l_audit_attribute_tbl(i),
1070 l_encoded_error_message_tbl(i),
1071 SYSDATE,
1072 decode(p_status_code,'REVERSED',decode(l_rev_action_set_line_id_tbl(i),NULL,'Y','N'),'Y'),
1073 l_rev_action_set_line_id_tbl(i),
1074 SYSDATE,
1075 FND_GLOBAL.user_id,
1076 SYSDATE,
1077 FND_GLOBAL.user_id,
1078 FND_GLOBAL.user_id,
1079 FND_GLOBAL.CONC_REQUEST_ID,
1080 FND_GLOBAL.PROG_APPL_ID,
1081 FND_GLOBAL.CONC_PROGRAM_ID,
1082 SYSDATE);
1083
1084 END IF;
1085
1086 EXCEPTION
1087 WHEN OTHERS THEN
1088
1089 -- Set the excetption Message and the stack
1090 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.bulk_insert_audit_lines'
1091 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1092 --
1093 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1094 RAISE;
1095
1096
1097 END;
1098
1099
1100 PROCEDURE bulk_update_line_number(p_action_set_line_id_tbl IN pa_action_set_utils.number_tbl_type,
1101 p_line_number_tbl IN pa_action_set_utils.number_tbl_type,
1102 x_return_status OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
1103 IS
1104
1105 TYPE rowid_tbl IS TABLE OF ROWID
1106 INDEX BY BINARY_INTEGER;
1107
1108 l_rowid_tbl rowid_tbl;
1109
1110 e_row_is_locked EXCEPTION;
1111 PRAGMA EXCEPTION_INIT(e_row_is_locked, -54);
1112
1113 BEGIN
1114
1115 IF p_action_set_line_id_tbl.COUNT > 0 THEN
1116
1117 FOR i IN p_action_set_line_id_tbl.FIRST .. p_action_set_line_id_tbl.LAST LOOP
1118
1119 SELECT rowid INTO l_rowid_tbl(i)
1120 FROM pa_action_set_lines
1121 WHERE action_set_line_id = p_action_set_line_id_tbl(i)
1122 FOR UPDATE NOWAIT;
1123
1124 END LOOP;
1125
1126 FORALL i IN l_rowid_tbl.FIRST .. l_rowid_tbl.LAST
1127 UPDATE pa_action_set_lines
1128 SET action_set_line_number = p_line_number_tbl(i)
1129 WHERE rowid = l_rowid_tbl(i);
1130
1131 END IF;
1132
1133 EXCEPTION
1134 WHEN e_row_is_locked THEN
1135 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
1136 ,p_msg_name => 'PA_ACTION_LINE_CHANGE_PENDING');
1137 x_return_status := FND_API.G_RET_STS_ERROR;
1138 WHEN OTHERS THEN
1139
1140 -- Set the excetption Message and the stack
1141 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.bulk_update_line_number'
1142 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1143 --
1144 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1145 RAISE;
1146
1147 END;
1148
1149 PROCEDURE bulk_update_condition_date(p_action_line_condition_id_tbl IN pa_action_set_utils.number_tbl_type,
1150 p_condition_date_tbl IN pa_action_set_utils.date_tbl_type,
1151 x_return_status OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
1152 IS
1153
1154 TYPE rowid_tbl IS TABLE OF ROWID
1155 INDEX BY BINARY_INTEGER;
1156
1157 l_rowid_tbl rowid_tbl;
1158
1159 e_row_is_locked EXCEPTION;
1160 PRAGMA EXCEPTION_INIT(e_row_is_locked, -54);
1161
1162 BEGIN
1163
1164 IF p_action_line_condition_id_tbl.COUNT > 0 THEN
1165
1166 FOR i IN p_action_line_condition_id_tbl.FIRST .. p_action_line_condition_id_tbl.LAST LOOP
1167
1168 SELECT rowid INTO l_rowid_tbl(i)
1169 FROM pa_action_set_line_cond
1170 WHERE action_set_line_condition_id = p_action_line_condition_id_tbl(i)
1171 FOR UPDATE NOWAIT;
1172
1173 END LOOP;
1174
1175 FORALL i IN l_rowid_tbl.FIRST .. l_rowid_tbl.LAST
1176 UPDATE pa_action_set_line_cond
1177 SET condition_date = p_condition_date_tbl(i)
1178 WHERE rowid = l_rowid_tbl(i);
1179
1180 END IF;
1181
1182 EXCEPTION
1183 WHEN e_row_is_locked THEN
1184 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
1185 ,p_msg_name => 'PA_ACTION_LINE_CHANGE_PENDING');
1186 x_return_status := FND_API.G_RET_STS_ERROR;
1187
1188 WHEN OTHERS THEN
1189 -- Set the excetption Message and the stack
1190 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.bulk_update_condition_date'
1191 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1192 --
1193 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1194 RAISE;
1195
1196 END;
1197
1198 PROCEDURE bulk_update_line_status(p_action_set_line_id_tbl IN pa_action_set_utils.number_tbl_type,
1199 p_line_status_tbl IN pa_action_set_utils.varchar_tbl_type,
1200 x_return_status OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
1201 IS
1202
1203 TYPE rowid_tbl IS TABLE OF ROWID
1204 INDEX BY BINARY_INTEGER;
1205
1206 l_rowid_tbl rowid_tbl;
1207
1208 e_row_is_locked EXCEPTION;
1209 PRAGMA EXCEPTION_INIT(e_row_is_locked, -54);
1210
1211 BEGIN
1212
1213 IF p_action_set_line_id_tbl.COUNT > 0 THEN
1214
1215 FOR i IN p_action_set_line_id_tbl.FIRST .. p_action_set_line_id_tbl.LAST LOOP
1216
1217 SELECT rowid INTO l_rowid_tbl(i)
1218 FROM pa_action_set_lines
1219 WHERE action_set_line_id = p_action_set_line_id_tbl(i)
1220 FOR UPDATE NOWAIT;
1221
1222 END LOOP;
1223
1224 FORALL i IN l_rowid_tbl.FIRST .. l_rowid_tbl.LAST
1225 UPDATE pa_action_set_lines
1226 SET status_code = p_line_status_tbl(i)
1227 WHERE rowid = l_rowid_tbl(i);
1228
1229 END IF;
1230
1231 EXCEPTION
1232 WHEN e_row_is_locked THEN
1233 PA_UTILS.Add_Message ( p_app_short_name => 'PA'
1234 ,p_msg_name => 'PA_ACTION_LINE_CHANGE_PENDING');
1235 x_return_status := FND_API.G_RET_STS_ERROR;
1236 WHEN OTHERS THEN
1237 -- Set the excetption Message and the stack
1238 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.bulk_update_line_status'
1239 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1240 --
1241 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1242 RAISE;
1243
1244 END;
1245
1246
1247 PROCEDURE perform_action_set_line
1248 (p_action_set_type_code IN pa_action_set_types.action_set_type_code%TYPE
1249 ,p_action_set_line_id IN pa_action_sets.action_set_id%TYPE
1250 ,x_return_status OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
1251 )
1252 IS
1253
1254 l_return_status VARCHAR2(1);
1255 l_action_set_line_rec pa_action_set_lines%ROWTYPE;
1256 l_action_line_conditions_tbl pa_action_set_utils.action_line_cond_tbl_type;
1257 l_action_line_audit_tbl pa_action_set_utils.insert_audit_lines_tbl_type;
1258 l_action_line_complete_flag VARCHAR2(1);
1259 l_action_line_result_code VARCHAR2(240);
1260 l_action_set_details_rec pa_action_sets%ROWTYPE;
1261 l_audit_status_code VARCHAR2(30);
1262 l_new_line_status_code VARCHAR2(30);
1263 l_line_deleted_flag VARCHAR2(1);
1264 l_action_set_line_number NUMBER;
1265 L_MSG_DATA VARCHAR2(2000);
1266 l_msg_index_out NUMBER;
1267 e_invalid_result_code EXCEPTION;
1268 l_debug_mode VARCHAR2(20) := 'N';
1269
1270 BEGIN
1271
1272 -- Initialize the return status to success
1273 x_return_status := FND_API.G_RET_STS_SUCCESS;
1274
1275 --Log Message: 4403338
1276 fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
1277
1278 --Log Message: 4403338
1279 IF l_debug_mode = 'Y' THEN
1280 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Perform_Action_Set_Line.begin'
1281 ,x_msg => 'Beginning of Perform_Action_Set_Line pvt'
1282 ,x_log_level => 5);
1283 END IF;
1284
1285 l_action_set_details_rec := PA_ACTION_SET_UTILS.get_action_set_details(p_action_set_line_id => p_action_set_line_id);
1286
1287 l_action_set_line_rec := PA_ACTION_SET_UTILS.get_action_set_line(p_action_set_line_id => p_action_set_line_id);
1288
1289 l_action_line_conditions_tbl := PA_ACTION_SET_UTILS.get_action_line_conditions(p_action_set_line_id => p_action_set_line_id);
1290
1291 --Log Message: 4403338
1292 IF l_debug_mode = 'Y' THEN
1293 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Perform_Action_Set_Line.begin'
1294 ,x_msg => 'Before calling PA_ACTION_SETS_DYN.perform_action_set_line'
1295 ,x_log_level => 5);
1296 END IF;
1297
1298 PA_ACTION_SETS_DYN.perform_action_set_line
1299 (p_action_set_type_code => p_action_set_type_code,
1300 p_action_set_details_rec => l_action_set_details_rec,
1301 p_action_set_line_rec => l_action_set_line_rec,
1302 p_action_line_conditions_tbl => l_action_line_conditions_tbl,
1303 x_action_line_audit_tbl => l_action_line_audit_tbl,
1304 x_action_line_result_code => l_action_line_result_code);
1305
1306 --Log Message: 4403338
1307 IF l_debug_mode = 'Y' THEN
1308 PA_DEBUG.write_log (x_module => 'pa.plsql.PA_ACTION_SETS_PVT.Perform_Action_Set_Line.begin'
1309 ,x_msg => 'After calling PA_ACTION_SETS_DYN.perform_action_set_line'
1310 ,x_log_level => 5);
1311 END IF;
1312
1313 IF l_action_line_result_code = PA_ACTION_SET_UTILS.G_PERFORMED_COMPLETE THEN
1314
1315 l_audit_status_code := 'PERFORMED';
1316
1317 l_new_line_status_code := 'COMPLETE';
1318
1319 ELSIF l_action_line_result_code = PA_ACTION_SET_UTILS.G_PERFORMED_ACTIVE THEN
1320
1321 l_audit_status_code := 'PERFORMED';
1322
1323 l_new_line_status_code := 'ACTIVE';
1324
1325 ELSIF l_action_line_result_code = PA_ACTION_SET_UTILS.G_REVERSED_DEFAULT_AUDIT THEN
1326
1327 l_action_line_audit_tbl := get_def_reverse_audit_lines(p_action_set_line_id => p_action_set_line_id
1328 ,p_reason => 'REVERSED');
1329
1330 l_audit_status_code := 'REVERSED';
1331
1332 l_new_line_status_code := 'REVERSED';
1333
1334 ELSIF l_action_line_result_code = PA_ACTION_SET_UTILS.G_REVERSED_CUSTOM_AUDIT THEN
1335
1336 l_audit_status_code := 'REVERSED';
1337
1338 l_new_line_status_code := 'REVERSED';
1339
1340 ELSIF l_action_line_result_code = PA_ACTION_SET_UTILS.G_UPDATED_DEFAULT_AUDIT THEN
1341
1342 l_action_line_audit_tbl := get_def_reverse_audit_lines(p_action_set_line_id => p_action_set_line_id
1343 ,p_reason => 'UPDATED');
1344
1345 l_audit_status_code := 'REVERSED';
1346
1347 l_new_line_status_code := 'PENDING';
1348
1349 ELSIF l_action_line_result_code = PA_ACTION_SET_UTILS.G_UPDATED_CUSTOM_AUDIT THEN
1350
1351 l_audit_status_code := 'REVERSED';
1352
1353 l_new_line_status_code := 'PENDING';
1354
1355 END IF;
1356
1357 /*
1358 HOW SHOULD THIS BE HANDLED???
1359 IF l_new_line_status_code = 'REVERSED' AND FND_MSG_PUB.Count_Msg > 0 THEN
1360 l_line_deleted_flag := 'N';
1361 ELSE
1362 l_line_deleted_flag := FND_API.G_MISS_CHAR;
1363 END IF;
1364 */
1365
1366
1367 IF l_action_line_result_code <> PA_ACTION_SET_UTILS.G_NOT_PERFORMED THEN
1368
1369
1370 PA_ACTION_SET_LINES_PKG.update_row
1371 (p_action_set_line_id => p_action_set_line_id,
1372 p_status_code => l_new_line_status_code,
1373 -- p_line_deleted_flag => l_line_deleted_flag,
1374 x_return_status => l_return_status);
1375
1376 bulk_insert_audit_lines
1377 (p_audit_lines_tbl => l_action_line_audit_tbl,
1378 p_action_set_line_id => p_action_set_line_id,
1379 p_object_type => l_action_set_details_rec.object_type,
1380 p_object_id => l_action_set_details_rec.object_id,
1381 p_action_set_type_code => p_action_set_type_code,
1382 p_status_code => l_audit_status_code,
1383 x_return_status => l_return_status);
1384
1385 END IF;
1386 /*
1387
1388 --only do if line not performed from concurrent program
1389 IF FND_MSG_PUB.Count_Msg > 0 AND FND_GLOBAL.CONC_REQUEST_ID = -1 THEN
1390 FOR i IN 1 .. FND_MSG_PUB.Count_Msg LOOP
1391 pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
1392 ,p_msg_index => i
1393 ,p_data => l_msg_data
1394 ,p_msg_index_out => l_msg_index_out
1395 );
1396
1397 SELECT action_set_line_number INTO l_action_set_line_number
1398 FROM pa_action_set_lines
1399 WHERE action_set_line_id = p_action_set_line_id;
1400
1401 g_line_number_msg_tbl.EXTEND();
1402 g_info_msg_tbl.EXTEND();
1403 g_line_number_msg_tbl(g_line_number_msg_tbl.LAST) := l_action_set_line_number;
1404 g_info_msg_tbl(g_info_msg_tbl.LAST) := l_msg_data;
1405
1406 END LOOP;
1407 END IF;
1408
1409 */
1410
1411 EXCEPTION
1412 WHEN e_invalid_result_code THEN
1413 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Perform_Action_Set_Line'
1414 ,p_procedure_name => PA_DEBUG.G_Err_Stack
1415 ,p_error_text => 'INVALID RESULT CODE: '||l_action_line_result_code);
1416 --
1417 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1418 RAISE e_invalid_result_code;
1419
1420 WHEN OTHERS THEN
1421 -- Set the excetption Message and the stack
1422 FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_ACTION_SETS_PVT.Perform_Action_Set_Line'
1423 ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1424 --
1425 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1426 RAISE;
1427
1428 END Perform_Action_Set_Line;
1429
1430
1431
1432 END;