[Home] [Help]
PACKAGE BODY: APPS.PA_PERIOD_MASKS_PUB
Source
1 PACKAGE BODY PA_PERIOD_MASKS_PUB as
2 /* $Header: PAFPPMMB.pls 120.0.12000000.2 2007/09/10 12:12:56 admarath ship $ */
3 P_PA_DEBUG_MODE varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
4
5 PROCEDURE maintain_period_masks(
6 p_period_mask_id IN NUMBER,
7 p_name IN VARCHAR2,
8 p_description IN VARCHAR2,
9 p_time_phase_code IN VARCHAR2,
10 p_effective_start_date IN pa_period_masks_b.effective_start_date%type,
11 p_effective_end_date IN pa_period_masks_b.effective_end_date%type,
12 p_record_version_number IN NUMBER,
13 p_num_of_periods IN PA_NUM_1000_NUM,
14 p_anchor_period_flag IN PA_VC_1000_150,
15 p_from_anchor_position IN PA_NUM_1000_NUM,
16 p_error_flag_tab IN OUT NOCOPY PA_VC_1000_150,
17 p_init_msg_flag IN VARCHAR2,
18 p_commit_flag IN VARCHAR2,
19 x_return_status OUT NOCOPY VARCHAR2,
20 x_msg_count OUT NOCOPY NUMBER,
21 x_msg_data OUT NOCOPY VARCHAR2 )
22
23 IS
24 l_module_name VARCHAR2(100) := 'pa.plsql.PA_PERIOD_MASKS_PUB.maintain_period_masks';
25 l_project_id_tab SYSTEM.pa_num_tbl_type:=SYSTEM.pa_num_tbl_type();
26 l_period_masks_s number := 0;
27
28 l_language varchar2(100) := null;
29
30 l_rec_count number := 0;
31 --Initialize plsql tables
32 --l_num_of_periods.delete;
33 --l_anchor_period_flag.delete;
34 --l_from_anchor_position.delete;
35 l_return_status varchar2(30);
36 BEGIN
37 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
38 PA_DEBUG.init_err_stack('PAFPPMMB.PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK');
39 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
40 pa_debug.set_curr_function( p_function => 'maintain_period_masks'
41 ,p_debug_mode => p_pa_debug_mode);
42 END IF;
43
44 x_return_status := FND_API.G_RET_STS_SUCCESS;
45 x_msg_count := 0;
46
47 IF p_init_msg_flag = 'Y' THEN
48 FND_MSG_PUB.Initialize;
49 END IF;
50
51 /*********Name Validation***********/
52 IF P_PA_DEBUG_MODE = 'Y' THEN
53 pa_fp_gen_amount_utils.fp_debug
54 (p_msg => 'Before calling pa_fp_period_masks_utils.name_validation',
55 p_module_name => l_module_name,
56 p_log_level => 5);
57 END IF;
58 pa_fp_period_masks_utils.name_validation(
59 p_name => p_name,
60 p_period_mask_id => p_period_mask_id,
61 p_init_msg_flag => 'N',
62 x_return_status => x_return_status,
63 x_msg_count => x_msg_count,
64 x_msg_data => x_msg_data );
65 IF P_PA_DEBUG_MODE = 'Y' THEN
66 pa_fp_gen_amount_utils.fp_debug
67 (p_msg => 'Status after calling
68 pa_fp_period_masks_utils.name_validation: '
69 ||x_return_status,
70 p_module_name => l_module_name,
71 p_log_level => 5);
72 END IF;
73
74 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
75 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
76 PA_DEBUG.reset_err_stack;
77 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
78 PA_DEBUG.Reset_Curr_Function;
79 END IF;
80 RETURN;
81 END IF;
82 l_return_status := x_return_status;
83
84 /*********Effective Date Validation***********/
85 /**Doosan changes. Moved this api from pa_fin_plan_type_utils
86 *to pa_fin_plan_utils
87 *pa_fin_plan_types_utils.end_date_active_val(*/
88 IF P_PA_DEBUG_MODE = 'Y' THEN
89 pa_fp_gen_amount_utils.fp_debug
90 (p_msg => 'Before calling
91 pa_fp_period_masks_utils.end_date_active_val',
92 p_module_name => l_module_name,
93 p_log_level => 5);
94 END IF;
95 pa_fin_plan_utils.end_date_active_val(
96 p_start_date_active => p_effective_start_date,
97 p_end_date_active => p_effective_end_date,
98 x_return_status => x_return_status,
99 x_msg_count => x_msg_count,
100 x_msg_data => x_msg_data);
101
102 IF P_PA_DEBUG_MODE = 'Y' THEN
103 pa_fp_gen_amount_utils.fp_debug
104 (p_msg => 'Status after calling
105 pa_fp_period_masks_utils.end_date_active_val: '
106 ||x_return_status,
107 p_module_name => l_module_name,
108 p_log_level => 5);
109
110 END IF;
111 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
112 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
113 PA_DEBUG.reset_err_stack;
114 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
115 PA_DEBUG.Reset_Curr_Function;
116 END IF;
117 RETURN;
118 END IF;
119
120 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
121 l_return_status := x_return_status;
122 END IF;
123
124 /*********Number of Period Validation***********/
125 IF P_PA_DEBUG_MODE = 'Y' THEN
126 pa_fp_gen_amount_utils.fp_debug
127 (p_msg => 'Before calling
128 pa_fp_period_masks_utils.nop_validation',
129 p_module_name => l_module_name,
130 p_log_level => 5);
131 END IF;
132 pa_fp_period_masks_utils.nop_validation(
133 p_num_of_periods => p_num_of_periods,
134 p_init_msg_flag => 'N',
135 p_error_flag_tab => p_error_flag_tab,
136 x_return_status => x_return_status,
137 x_msg_count => x_msg_count,
138 x_msg_data => x_msg_data);
139 IF P_PA_DEBUG_MODE = 'Y' THEN
140 pa_fp_gen_amount_utils.fp_debug
141 (p_msg => 'Status after calling
142 pa_fp_period_masks_utils.nop_validation: '
143 ||x_return_status,
144 p_module_name => l_module_name,
145 p_log_level => 5);
146 END IF;
147 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
148 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
149 PA_DEBUG.reset_err_stack;
150 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
151 PA_DEBUG.Reset_Curr_Function;
152 END IF;
153 RETURN;
154 END IF;
155 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
156 l_return_status := x_return_status;
157 END IF;
158 x_return_status := l_return_status;
159
160 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
161 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
162 PA_DEBUG.reset_err_stack;
163 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
164 PA_DEBUG.Reset_Curr_Function;
165 END IF;
166 return;
167 END IF;
168
169 /**if period_mask_id is null, then we need to INSERT
170 *Populate both the master record in pa_period_masks_s + pa_period_masks_tl
171 *and detail record in pa_period_mask_details*/
172 IF p_period_mask_id = 0 THEN
173 SELECT pa_period_masks_s.nextval INTO l_period_masks_s FROM DUAL;
174 SELECT userenv('LANG') INTO l_language FROM dual;
175 /*populating table pa_period_masks_b*/
176 INSERT INTO pa_period_masks_b (
177 PERIOD_MASK_ID,
178 EFFECTIVE_START_DATE,
179 EFFECTIVE_END_DATE,
180 TIME_PHASE_CODE,
181 CREATION_DATE,
182 CREATED_BY,
183 LAST_UPDATE_LOGIN,
184 LAST_UPDATED_BY,
185 LAST_UPDATE_DATE,
186 RECORD_VERSION_NUMBER,
187 PRE_DEFINED_FLAG)
188 VALUES(
189 l_period_masks_s,
190 p_effective_start_date,
191 p_effective_end_date,
192 p_time_phase_code,
193 sysdate,
194 FND_GLOBAL.USER_ID,
195 FND_GLOBAL.LOGIN_ID,
196 FND_GLOBAL.LOGIN_ID,
197 sysdate,
198 1,
199 'N');
200 /*populating table pa_period_masks_tl*/
201 INSERT INTO pa_period_masks_tl (
202 PERIOD_MASK_ID,
203 NAME,
204 DESCRIPTION,
205 LANGUAGE,
206 SOURCE_LANG,
207 LAST_UPDATE_DATE,
208 LAST_UPDATED_BY,
209 CREATION_DATE,
210 CREATED_BY,
211 LAST_UPDATE_LOGIN )
212 select l_period_masks_s,
213 p_name,
214 p_description,
215 L.LANGUAGE_CODE, /* Bug 6275098*/
216 l_language,
217 sysdate,
218 FND_GLOBAL.LOGIN_ID,
219 sysdate,
220 FND_GLOBAL.USER_ID,
221 FND_GLOBAL.LOGIN_ID /*Changes for Bug 6275098 */
222 from FND_LANGUAGES L where L.INSTALLED_FLAG in ('I', 'B')
223 and not exists
224 (select null from PA_PERIOD_MASKS_TL T
225 where T.PERIOD_MASK_ID = l_period_masks_s
226 and T.LANGUAGE = L.LANGUAGE_CODE);
227
228 IF P_PA_DEBUG_MODE = 'Y' THEN
229 pa_fp_gen_amount_utils.fp_debug
230 (p_msg => 'Before calling
231 PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK_DTLS',
232 p_module_name => l_module_name,
233 p_log_level => 5);
234 END IF;
235 /*populating table pa_period_mask_details*/
236 PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK_DTLS(
237 p_period_mask_id => l_period_masks_s,
238 p_num_of_periods => p_num_of_periods,
239 p_anchor_period_flag => p_anchor_period_flag,
240 p_from_anchor_position => p_from_anchor_position,
241 p_init_msg_flag => 'N',
242 p_commit_flag => 'N',
243 x_return_status => x_return_status,
244 x_msg_count => x_msg_count,
245 x_msg_data => x_msg_data);
246 IF P_PA_DEBUG_MODE = 'Y' THEN
247 pa_fp_gen_amount_utils.fp_debug
248 (p_msg => 'Status after calling
249 PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK_DTL: '
250 ||x_return_status,
251 p_module_name => l_module_name,
252 p_log_level => 5);
253 END IF;
254
255 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
256 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
257 PA_DEBUG.reset_err_stack;
258 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
259 PA_DEBUG.Reset_Curr_Function;
260 END IF;
261 RETURN;
262 END IF;
263
264 /**if period_mask_id is not null, then we need to UPDATE
265 *Update both the master record in pa_period_masks_s + pa_period_masks_tl
266 *and detail record in pa_period_mask_details*/
267 ELSE
268 UPDATE pa_period_masks_b
269 SET effective_start_date = p_effective_start_date,
270 effective_end_date = p_effective_end_date,
271 time_phase_code = p_time_phase_code,
272 last_update_login = FND_GLOBAL.LOGIN_ID,
273 last_updated_by = FND_GLOBAL.LOGIN_ID,
274 last_update_date = sysdate,
275 record_version_number = record_version_number + 1
276 WHERE period_mask_id = p_period_mask_id
277 and record_version_number = p_record_version_number;
278 IF (sql%notfound) THEN
279 x_return_status := FND_API.G_RET_STS_ERROR;
280 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
281 p_msg_name => 'PA_FP_PM_INVALID');
282 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
283 PA_DEBUG.reset_err_stack;
284 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
285 PA_DEBUG.Reset_Curr_Function;
286 END IF;
287 RETURN;
288 END IF;
289
290 UPDATE pa_period_masks_tl
291 SET name = p_name,
292 description = p_description,
293 last_update_login = FND_GLOBAL.LOGIN_ID,
294 last_updated_by = FND_GLOBAL.LOGIN_ID,
295 last_update_date = sysdate
296 WHERE period_mask_id = p_period_mask_id;
297
298
299 DELETE FROM pa_period_mask_details
300 WHERE period_mask_id = p_period_mask_id;
301 l_rec_count := p_num_of_periods.count();
302
303 IF P_PA_DEBUG_MODE = 'Y' THEN
304 pa_fp_gen_amount_utils.fp_debug
305 (p_msg => 'Before calling
306 PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK_DTLS',
307 p_module_name => l_module_name,
308 p_log_level => 5);
309 END IF;
310 PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK_DTLS(
311 p_period_mask_id => p_period_mask_id,
312 p_num_of_periods => p_num_of_periods,
313 p_anchor_period_flag => p_anchor_period_flag,
314 p_from_anchor_position => p_from_anchor_position,
315 p_init_msg_flag => 'N',
316 p_commit_flag => 'N',
317 x_return_status => x_return_status,
318 x_msg_count => x_msg_count,
319 x_msg_data => x_msg_data);
320 IF P_PA_DEBUG_MODE = 'Y' THEN
321 pa_fp_gen_amount_utils.fp_debug
322 (p_msg => 'Status after calling
323 PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK_DTL: '
324 ||x_return_status,
325 p_module_name => l_module_name,
326 p_log_level => 5);
327 END IF;
328 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
329 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
330 PA_DEBUG.reset_err_stack;
331 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
332 PA_DEBUG.Reset_Curr_Function;
333 END IF;
334 RETURN;
335 END IF;
336
337 END IF;
338
339 IF (p_commit_flag = 'Y') THEN
340 COMMIT;
341 END IF;
342 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
343 PA_DEBUG.reset_err_stack;
344 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
345 PA_DEBUG.Reset_Curr_Function;
346 END IF;
347
348 EXCEPTION
349 WHEN OTHERS THEN
350 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
351 x_msg_count := 1;
352 x_msg_data := substr(SQLERRM,1,240);
353
354 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_PERIOD_MASKS_PUB',
355 p_procedure_name => 'maintain_period_masks');
356
357 IF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'Y' THEN
358 PA_DEBUG.reset_err_stack;
359 ELSIF p_pa_debug_mode = 'Y' AND p_init_msg_flag = 'N' THEN
360 PA_DEBUG.Reset_Curr_Function;
361 END IF;
362
363 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
364
365 END maintain_period_masks;
366
367
368 --*********************
369 PROCEDURE MAINTAIN_PERIOD_MASK_DTLS
370 (p_period_mask_id IN PA_PERIOD_MASKS_B.PERIOD_MASK_ID%TYPE,
371 p_num_of_periods IN PA_NUM_1000_NUM,
372 p_anchor_period_flag IN PA_VC_1000_150,
373 p_from_anchor_position IN PA_NUM_1000_NUM,
374 p_init_msg_flag IN VARCHAR2,
375 p_commit_flag IN VARCHAR2,
376 x_return_status OUT NOCOPY VARCHAR2,
377 x_msg_count OUT NOCOPY NUMBER,
378 x_msg_data OUT NOCOPY VARCHAR2)
379 IS
380 l_module_name VARCHAR2(100) := 'pa.plsql.PA_PERIOD_MASKS_PUB.MAINTAIN_PERIOD_MASK_DTLS';
381
382 CURSOR succ_pd IS
383 SELECT from_anchor_position,num_of_periods FROM
384 pa_fp_period_mask_tmp WHERE from_anchor_position > 0 ORDER BY from_anchor_position;
385
386 CURSOR prec_pd IS
387 SELECT from_anchor_position,num_of_periods FROM
388 pa_fp_period_mask_tmp WHERE from_anchor_position < 0 ORDER BY from_anchor_position desc;
389
390
391 l_from_anchor_position NUMBER;
392 l_first_no_of_pds NUMBER;
393 l_start_temp NUMBER;
394 l_tmp NUMBER;
395 l_tmp_end NUMBER;
396 l_initial_flag VARCHAR2(1);
397 l_anchor_period_flag PA_VC_1000_150;
398 l_flag_exists BOOLEAN := FALSE;
399
400 l_count number;
401 BEGIN
402 IF P_PA_DEBUG_MODE = 'Y' THEN
403 pa_debug.set_curr_function( p_function => 'MAINTAIN_PERIOD_MASK_DTLS',
404 p_debug_mode => p_pa_debug_mode );
405 END IF;
406
407 x_return_status := FND_API.G_RET_STS_SUCCESS;
408
409 IF p_init_msg_flag = 'Y' THEN
410 FND_MSG_PUB.Initialize;
411 END IF;
412
413 x_msg_count := 0;
414
415
416 DELETE FROM pa_fp_period_mask_tmp;
417
418 IF P_PA_DEBUG_MODE = 'Y' THEN
419 pa_fp_gen_amount_utils.fp_debug
420 (p_msg => 'Before inserting into temporary table',
421 p_module_name => l_module_name,
422 p_log_level => 5);
423 END IF;
424
425 FORALL i in p_num_of_periods.FIRST..p_num_of_periods.LAST
426 INSERT INTO pa_fp_period_mask_tmp(NUM_OF_PERIODS,ANCHOR_PERIOD_FLAG,FROM_ANCHOR_POSITION)
427 VALUES ( p_num_of_periods(i),p_anchor_period_flag(i),p_from_anchor_position(i));
428
429 IF P_PA_DEBUG_MODE = 'Y' THEN
430 pa_fp_gen_amount_utils.fp_debug
431 (p_msg => 'After inserting into temporary table',
432 p_module_name => l_module_name,
433 p_log_level => 5);
434 END IF;
435 select count(*) into l_count
436 from pa_fp_period_mask_tmp
437 where anchor_period_flag = 'Y';
438
439 if l_count = 0 then
440 update pa_fp_period_mask_tmp set
441 anchor_period_flag = 'Y' where
442 from_anchor_position = 1;
443 end if;
444 SELECT from_anchor_position,num_of_periods
445 INTO l_from_anchor_position,l_first_no_of_pds
446 FROM pa_fp_period_mask_tmp
447 WHERE anchor_period_flag = 'Y';
448
449 UPDATE pa_fp_period_mask_tmp
450 SET from_anchor_position = from_anchor_position - l_from_anchor_position;
451
452 UPDATE pa_fp_period_mask_tmp
453 SET from_anchor_start = 0, from_anchor_end = num_of_periods - 1
454 WHERE anchor_period_flag = 'Y';
455
456 l_initial_flag := 'Y';
457 l_tmp := l_first_no_of_pds;
458 l_tmp_end := l_first_no_of_pds - 1;
459
460 IF P_PA_DEBUG_MODE = 'Y' THEN
461 pa_fp_gen_amount_utils.fp_debug
462 (p_msg => 'Before succeeding period',
463 p_module_name => l_module_name,
464 p_log_level => 5);
465 END IF;
466
467 FOR succ_pd_rec IN succ_pd LOOP
468 l_tmp_end := l_tmp_end + succ_pd_rec.num_of_periods;
469
470 UPDATE pa_fp_period_mask_tmp
471 SET from_anchor_start = l_tmp, from_anchor_end = l_tmp_end
472 WHERE from_anchor_position = succ_pd_rec.from_anchor_position;
473
474 l_tmp := l_tmp + succ_pd_rec.num_of_periods;
475 END LOOP;
476
477 IF P_PA_DEBUG_MODE = 'Y' THEN
478 pa_fp_gen_amount_utils.fp_debug
479 (p_msg => 'After succeeding period',
480 p_module_name => l_module_name,
481 p_log_level => 5);
482 END IF;
483
484 l_tmp := 0;
485 l_tmp_end := -1;
486
487 IF P_PA_DEBUG_MODE = 'Y' THEN
488 pa_fp_gen_amount_utils.fp_debug
489 (p_msg => 'Before preceeding period',
490 p_module_name => l_module_name,
491 p_log_level => 5);
492 END IF;
493
494 FOR prec_pd_rec IN prec_pd LOOP
495 l_tmp := l_tmp - prec_pd_rec.num_of_periods;
496
497 UPDATE pa_fp_period_mask_tmp
498 SET from_anchor_start = l_tmp, from_anchor_end = l_tmp_end
499 WHERE from_anchor_position = prec_pd_rec.from_anchor_position;
500
501 l_tmp_end := l_tmp_end - prec_pd_rec.num_of_periods;
502
503 END LOOP;
504
505 IF P_PA_DEBUG_MODE = 'Y' THEN
506 pa_fp_gen_amount_utils.fp_debug
507 (p_msg => 'After preceeding period',
508 p_module_name => l_module_name,
509 p_log_level => 5);
510 END IF;
511
512 BEGIN
513
514 IF P_PA_DEBUG_MODE = 'Y' THEN
515 pa_fp_gen_amount_utils.fp_debug
516 (p_msg => 'Before inserting additional records in the temporary table',
517 p_module_name => l_module_name,
518 p_log_level => 5);
519 END IF;
520
521 --Inserting additional records in the temp table to allow additional periods before/after the project periods
522
523 INSERT INTO pa_fp_period_mask_tmp(num_of_periods, anchor_period_flag,
524 from_anchor_start,from_anchor_end,from_anchor_position
525 )
526 VALUES (0,'N',-99999,-99999,-99999);
527
528 INSERT INTO pa_fp_period_mask_tmp(num_of_periods,
529 anchor_period_flag,from_anchor_start,from_anchor_end,from_anchor_position)
530 VALUES (0,'N',99999,99999,99999 );
531
532
533 IF P_PA_DEBUG_MODE = 'Y' THEN
534 pa_fp_gen_amount_utils.fp_debug
535 (p_msg => 'After inserting additional records in the temporary table',
536 p_module_name => l_module_name,
537 p_log_level => 5);
538 END IF;
539
540
541
542 INSERT INTO pa_period_mask_details(PERIOD_MASK_ID,
543 num_of_periods,
544 anchor_period_flag,
545 from_anchor_start,
546 from_anchor_end,
547 from_anchor_position,
548 CREATION_DATE,
549 CREATED_BY,
550 LAST_UPDATE_LOGIN,
551 LAST_UPDATED_BY,
552 LAST_UPDATE_DATE )
553 (SELECT p_period_mask_id,
554 trunc(num_of_periods),
555 anchor_period_flag,
556 from_anchor_start,
557 from_anchor_end,
558 from_anchor_position,
559 sysdate,
560 FND_GLOBAL.USER_ID,
561 FND_GLOBAL.LOGIN_ID,
562 FND_GLOBAL.LOGIN_ID,
563 sysdate FROM pa_fp_period_mask_tmp );
564
565
566 IF (SQL%NOTFOUND) THEN
567 IF P_PA_DEBUG_MODE = 'Y' THEN
568 PA_DEBUG.RESET_CURR_FUNCTION;
569 END IF;
570 RAISE no_data_found;
571 END IF;
572
573 END;
574
575 if p_commit_flag = 'Y' then
576 COMMIT;
577 END IF;
578 IF P_PA_DEBUG_MODE = 'Y' THEN
579 PA_DEBUG.RESET_CURR_FUNCTION;
580 END IF;
581 EXCEPTION
582 WHEN OTHERS THEN
583 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
584 x_msg_count := 1;
585 x_msg_data := SQLERRM;
586 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_PERIOD_MASKS_UTILS',
587 p_procedure_name => 'MAINTAIN_PERIOD_MASK_DTLS');
588 IF P_PA_DEBUG_MODE = 'Y' THEN
589 PA_DEBUG.RESET_CURR_FUNCTION;
590 END IF;
591 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
592
593 END MAINTAIN_PERIOD_MASK_DTLS;
594
595 --*************************
596
597 PROCEDURE delete_period_mask( p_period_mask_id IN NUMBER,
598 p_record_version_number IN NUMBER,
599 p_init_msg_flag IN VARCHAR2,
600 p_commit_flag IN VARCHAR2,
601 x_return_status OUT NOCOPY VARCHAR2,
602 x_msg_count OUT NOCOPY NUMBER,
603 x_msg_data OUT NOCOPY VARCHAR2 )
604 IS
605 l_module_name VARCHAR2(100) := 'pa.plsql.PA_PERIOD_MASKS_PUB.delete_period_mask';
606 BEGIN
607 IF P_PA_DEBUG_MODE = 'Y' THEN
608 pa_debug.set_curr_function( p_function => 'delete_period_mask',
609 p_debug_mode => p_pa_debug_mode );
610 END IF;
611 x_return_status := FND_API.G_RET_STS_SUCCESS;
612 x_msg_count := 0;
613
614 IF p_init_msg_flag = 'Y' THEN
615 FND_MSG_PUB.Initialize;
616 END IF;
617
618 DELETE FROM pa_period_masks_b
619 WHERE period_mask_id = p_period_mask_id
620 and record_version_number = p_record_version_number;
621 IF (sql%notfound) THEN
622 x_return_status := FND_API.G_RET_STS_ERROR;
623 PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
624 p_msg_name => 'PA_FP_PM_INVALID2');
625 IF P_PA_DEBUG_MODE = 'Y' THEN
626 PA_DEBUG.RESET_CURR_FUNCTION;
627 END IF;
628 RETURN;
629 END IF;
630
631 DELETE FROM pa_period_masks_tl
632 WHERE period_mask_id = p_period_mask_id;
633
634 DELETE FROM pa_period_mask_details
635 WHERE period_mask_id = p_period_mask_id;
636
637 IF (p_commit_flag = 'Y') THEN
638 COMMIT;
639 END IF;
640 IF P_PA_DEBUG_MODE = 'Y' THEN
641 PA_DEBUG.RESET_CURR_FUNCTION;
642 END IF;
643 EXCEPTION
644 WHEN OTHERS THEN
645 x_return_status := FND_API.G_RET_STS_ERROR;
646 x_msg_count := 1;
647 x_msg_data := to_char(sqlcode);
648 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_PERIOD_MASKS_PUB',
649 p_procedure_name => 'delete_period_mask');
650 IF P_PA_DEBUG_MODE = 'Y' THEN
651 PA_DEBUG.RESET_CURR_FUNCTION;
652 END IF;
653 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
654 END delete_period_mask;
655
656
657 END PA_PERIOD_MASKS_PUB;