[Home] [Help]
PACKAGE BODY: APPS.FPA_SCORECARDS_PVT
Source
1 package body FPA_SCORECARDS_PVT as
2 /* $Header: FPAVSCRB.pls 120.3 2006/03/16 13:06:42 appldev noship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(200) := 'FPA_SCORECARDS_PVT';
5 G_APP_NAME CONSTANT VARCHAR2(3) := FPA_UTILITIES_PVT.G_APP_NAME;
6 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
7 L_API_NAME CONSTANT VARCHAR2(35) := 'SCORECARDS';
8
9
10 PROCEDURE insert_tl_rec(
11 p_init_msg_list IN VARCHAR2,
12 p_scorecards_tl_rec IN FPA_SCORECARDS_TL_REC,
13 x_msg_count OUT NOCOPY NUMBER,
14 x_msg_data OUT NOCOPY VARCHAR2,
15 x_return_status OUT NOCOPY VARCHAR2
16 ) IS
17
18 l_api_version CONSTANT NUMBER := 1;
19 l_api_name CONSTANT VARCHAR2(30) := 'insert_tl_rec';
20 l_return_status VARCHAR2(1) := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
21 l_scorecards_tl_rec FPA_SCORECARDS_TL_REC := p_scorecards_tl_rec;
22 l_msg_log VARCHAR2(2000) := null;
23
24 CURSOR get_languages IS
25 SELECT *
26 FROM FND_LANGUAGES
27 WHERE INSTALLED_FLAG IN ('I', 'B');
28
29 -----------------------------------------
30 -- Set_Attributes for:FPA_SCORECARDS_TL --
31 -----------------------------------------
32 FUNCTION Set_Attributes (
33 p_scorecards_tl_rec IN FPA_SCORECARDS_TL_REC,
34 x_scorecards_tl_rec OUT NOCOPY FPA_SCORECARDS_TL_REC
35 ) RETURN VARCHAR2 IS
36 l_return_status VARCHAR2(1) := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
37 BEGIN
38 x_scorecards_tl_rec := p_scorecards_tl_rec;
39
40 x_scorecards_tl_rec.LANGUAGE := USERENV('LANG');
41 x_scorecards_tl_rec.SOURCE_LANG := USERENV('LANG');
42 x_scorecards_tl_rec.CREATED_BY := FND_GLOBAL.USER_ID;
43 x_scorecards_tl_rec.CREATION_DATE := SYSDATE;
44 x_scorecards_tl_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
45 x_scorecards_tl_rec.LAST_UPDATE_DATE := SYSDATE;
46 x_scorecards_tl_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
47
48 RETURN(l_return_status);
49
50 END Set_Attributes;
51
52 BEGIN
53 FPA_UTILITIES_PVT.START_ACTIVITY(
54 p_api_name => l_api_name,
55 p_pkg_name => G_PKG_NAME,
56 p_init_msg_list => p_init_msg_list,
57 p_msg_log => 'Entering Fpa_Scorecards_Pvt.insert_tl_rec');
58
59 --- Setting item attributes
60 l_return_status := Set_Attributes(
61 p_scorecards_tl_rec,
62 l_scorecards_tl_rec);
63
64 FOR l_lang_rec IN get_languages LOOP
65 FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'l_lang_rec.language_code '||l_lang_rec.language_code);
66 l_scorecards_tl_rec.LANGUAGE := l_lang_rec.language_code;
67 INSERT INTO FPA_SCORECARDS_TL(
68 project_id,
69 strategic_obj_id,
70 scenario_id,
71 comments,
72 language,
73 source_lang,
74 created_by,
75 creation_date,
76 last_updated_by,
77 last_update_date,
78 last_update_login)
79 VALUES (
80 l_scorecards_tl_rec.project_id,
81 l_scorecards_tl_rec.strategic_obj_id,
82 l_scorecards_tl_rec.scenario_id,
83 l_scorecards_tl_rec.comments,
84 l_scorecards_tl_rec.language,
85 l_scorecards_tl_rec.source_lang,
86 l_scorecards_tl_rec.created_by,
87 l_scorecards_tl_rec.creation_date,
88 l_scorecards_tl_rec.last_updated_by,
89 l_scorecards_tl_rec.last_update_date,
90 l_scorecards_tl_rec.last_update_login);
91
92 END LOOP;
93
94 x_return_status := l_return_status;
95
96 FPA_UTILITIES_PVT.END_ACTIVITY(
97 p_api_name => l_api_name,
98 p_pkg_name => G_PKG_NAME,
99 p_msg_log => null,
100 x_msg_count => x_msg_count,
101 x_msg_data => x_msg_data);
102
103 EXCEPTION
104
105 when OTHERS then
106 -- to change for using call with no rollback
107 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
108 p_api_name => l_api_name,
109 p_pkg_name => G_PKG_NAME,
110 p_exc_name => 'OTHERS',
111 p_msg_log => l_msg_log||SQLERRM,
112 x_msg_count => x_msg_count,
113 x_msg_data => x_msg_data,
114 p_api_type => G_API_TYPE);
115
116 END insert_tl_rec;
117
118
119
120 PROCEDURE update_tl_rec(
121 p_init_msg_list IN VARCHAR2,
122 p_scorecards_tl_rec IN FPA_SCORECARDS_TL_REC,
123 x_msg_count OUT NOCOPY NUMBER,
124 x_msg_data OUT NOCOPY VARCHAR2,
125 x_return_status OUT NOCOPY VARCHAR2
126 ) IS
127
128 l_api_version CONSTANT NUMBER := 1;
129 l_api_name CONSTANT VARCHAR2(30) := 'update_tl_rec';
130 l_return_status VARCHAR2(1) := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
131 l_scorecards_tl_rec FPA_SCORECARDS_TL_REC := p_scorecards_tl_rec;
132 l_msg_log VARCHAR2(2000) := null;
133 -----------------------------------------
134 -- Set_Attributes for:FPA_SCORECARDS_TL --
135 -----------------------------------------
136 FUNCTION Set_Attributes (
137 p_scorecards_tl_rec IN FPA_SCORECARDS_TL_REC,
138 x_scorecards_tl_rec OUT NOCOPY FPA_SCORECARDS_TL_REC
139 ) RETURN VARCHAR2 IS
140 l_return_status VARCHAR2(1) := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
141 BEGIN
142 x_scorecards_tl_rec := p_scorecards_tl_rec;
143
144 x_scorecards_tl_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
145 x_scorecards_tl_rec.LAST_UPDATE_DATE := SYSDATE;
146 x_scorecards_tl_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
147
148 RETURN(l_return_status);
149
150 END Set_Attributes;
151
152 BEGIN
153 FPA_UTILITIES_PVT.START_ACTIVITY(
154 p_api_name => l_api_name,
155 p_pkg_name => G_PKG_NAME,
156 p_init_msg_list => p_init_msg_list,
157 p_msg_log => 'Entering Fpa_Scorecards_Pvt.update_tl_rec');
158
159 --- Setting item attributes
160 l_return_status := Set_Attributes(
161 p_scorecards_tl_rec,
162 l_scorecards_tl_rec);
163
164 UPDATE fpa_scorecards_tl
165 SET comments = l_scorecards_tl_rec.comments,
166 last_updated_by = l_scorecards_tl_rec.last_updated_by,
167 last_update_date = l_scorecards_tl_rec.last_update_date,
168 last_update_login = l_scorecards_tl_rec.last_update_login
169 WHERE project_id = l_scorecards_tl_rec.project_id AND
170 scenario_id = l_scorecards_tl_rec.scenario_id AND
171 strategic_obj_id = l_scorecards_tl_rec.strategic_obj_id AND
172 language = userenv('LANG') AND
173 source_lang = userenv('LANG');
174
175 x_return_status := l_return_status;
176
177 FPA_UTILITIES_PVT.END_ACTIVITY(
178 p_api_name => l_api_name,
179 p_pkg_name => G_PKG_NAME,
180 p_msg_log => null,
181 x_msg_count => x_msg_count,
182 x_msg_data => x_msg_data);
183
184 EXCEPTION
185
186 when OTHERS then
187 -- to change for using call with no rollback
188 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
189 p_api_name => l_api_name,
190 p_pkg_name => G_PKG_NAME,
191 p_exc_name => 'OTHERS',
192 p_msg_log => l_msg_log||SQLERRM,
193 x_msg_count => x_msg_count,
194 x_msg_data => x_msg_data,
195 p_api_type => G_API_TYPE);
196
197 END update_tl_rec;
198
199
200
201 PROCEDURE Update_Calc_Pjt_Scorecard_Aw
202 (
203 p_api_version IN NUMBER,
204 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
205 p_commit IN VARCHAR2 := FND_API.G_FALSE,
206 p_planning_cycle_id IN NUMBER,
207 p_project_id IN NUMBER,
208 p_scorecard_tbl IN FPA_SCORECARDS_PVT.FPA_SCORECARD_TBL_TYPE,
209 x_return_status OUT NOCOPY VARCHAR2,
210 x_msg_count OUT NOCOPY NUMBER,
211 x_msg_data OUT NOCOPY VARCHAR2
212 ) IS
213
214 -- standard parameters
215 l_return_status VARCHAR2(1);
216 l_api_name CONSTANT VARCHAR2(30) := 'Update_Calc_Pjt_Score';
217 l_api_version CONSTANT NUMBER := 1.0;
218 l_msg_log VARCHAR2(2000) := null;
219 ----------------------------------------------------------------------------
220
221 i NUMBER := 0;
222 l_scorecard_rec FPA_SCORECARDS_PVT.FPA_SCORECARD_REC_TYPE;
223 l_tl_exists VARCHAR2(1) := null;
224 l_scorecards_tl_rec FPA_SCORECARDS_TL_REC;
225
226 cursor check_comments_csr (p_project_id IN NUMBER,
227 p_strategic_obj_id IN NUMBER) IS
228 select 'T'
229 from fpa_scorecards_tl
230 where project_id = p_project_id
231 and strategic_obj_id = p_strategic_obj_id
232 and scenario_id = -1
233 and language = USERENV('LANG')
234 and source_lang = USERENV('LANG');
235
236
237 BEGIN
238
239 -- l_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
240
241 x_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
242 -- call START_ACTIVITY to create savepoint, check compatibility
243 -- and initialize message list
244 x_return_status := FPA_UTILITIES_PVT.START_ACTIVITY(
245 p_api_name => l_api_name,
246 p_pkg_name => G_PKG_NAME,
247 p_init_msg_list => p_init_msg_list,
248 l_api_version => l_api_version,
249 p_api_version => p_api_version,
250 p_api_type => G_API_TYPE,
251 p_msg_log => 'Entering Fpa_Scorecards_Pvt.Update_Calc_Pjt_Scorecard_Aw',
252 x_return_status => x_return_status);
253
254 -- check if activity started successfully
255 if (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR) then
256 l_msg_log := 'start_activity';
257 raise FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR;
258 elsif (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_ERROR) then
259 l_msg_log := 'start_activity';
260 raise FPA_UTILITIES_PVT.G_EXCEPTION_ERROR;
261 end if;
262
263 if(p_scorecard_tbl.count > 0) then
264
265 dbms_aw.execute('LMT project_d TO ' || p_project_id );
266
267 l_scorecards_tl_rec.project_id := p_project_id;
268 l_scorecards_tl_rec.scenario_id := -1;
269
270
271 for i in p_scorecard_tbl.FIRST..p_scorecard_tbl.LAST
272 loop
273
274 l_scorecard_rec := p_scorecard_tbl(i);
275
276 l_tl_exists := null;
277 open check_comments_csr(p_project_id,
278 l_scorecard_rec.strategic_obj_id);
279 fetch check_comments_csr into l_tl_exists;
280 close check_comments_csr;
281
282 l_scorecards_tl_rec.strategic_obj_id := l_scorecard_rec.strategic_obj_id;
283 l_scorecards_tl_rec.comments := l_scorecard_rec.comments;
284
285 if (l_tl_exists is not null and l_tl_exists = FND_API.G_TRUE) then
286
287 update_tl_rec(
288 p_init_msg_list => p_init_msg_list,
289 p_scorecards_tl_rec => l_scorecards_tl_rec,
290 x_msg_count => x_msg_count,
291 x_msg_data => x_msg_data,
292 x_return_status => l_return_status
293 );
294
295 else
296
297 insert_tl_rec(
298 p_init_msg_list => p_init_msg_list,
299 p_scorecards_tl_rec => l_scorecards_tl_rec,
300 x_msg_count => x_msg_count,
301 x_msg_data => x_msg_data,
302 x_return_status => l_return_status
303 );
304
305 end if;
306
307 --DIMENSION investment_criteria from strategic_obj_d
308 dbms_aw.execute('LMT strategic_obj_d TO ' || l_scorecard_rec.strategic_obj_id );
309
310 if(l_scorecard_rec.new_score is null) then
311 dbms_aw.execute('project_entered_obj_score_m = NA' );
312 else
313 dbms_aw.execute('project_entered_obj_score_m = ' || l_scorecard_rec.new_score );
314 end if;
315
316 end loop;
317
318 dbms_aw.execute('CALL CALC_PROJ_SCORECARD_PRG(' ||
319 p_planning_cycle_id || ',' ||
320 p_project_id || ')' );
321 -- Overwrite Root and Financial Category weighted score
322 dbms_aw.execute('LMT strategic_obj_d TO strategic_obj_d le 2');
323 dbms_aw.execute('project_strategic_obj_weights_score_m = NA' );
324
325 end if;
326 x_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
327
328
329 FPA_UTILITIES_PVT.END_ACTIVITY(
330 p_api_name => l_api_name,
331 p_pkg_name => G_PKG_NAME,
332 p_msg_log => null,
333 x_msg_count => x_msg_count,
334 x_msg_data => x_msg_data);
335
336
337 EXCEPTION
338 when FPA_UTILITIES_PVT.G_EXCEPTION_ERROR then
339 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
340 p_api_name => l_api_name,
341 p_pkg_name => G_PKG_NAME,
342 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_ERROR',
343 p_msg_log => l_msg_log,
344 x_msg_count => x_msg_count,
345 x_msg_data => x_msg_data,
346 p_api_type => G_API_TYPE);
347
348 when FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR then
349 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
350 p_api_name => l_api_name,
351 p_pkg_name => G_PKG_NAME,
352 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR',
353 p_msg_log => l_msg_log,
354 x_msg_count => x_msg_count,
355 x_msg_data => x_msg_data,
356 p_api_type => G_API_TYPE);
357
358 when OTHERS then
359 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
360 p_api_name => l_api_name,
361 p_pkg_name => G_PKG_NAME,
362 p_exc_name => 'OTHERS',
363 p_msg_log => l_msg_log||SQLERRM,
364 x_msg_count => x_msg_count,
365 x_msg_data => x_msg_data,
366 p_api_type => G_API_TYPE);
367
368 END Update_Calc_Pjt_Scorecard_Aw;
369
370
371 PROCEDURE Update_Calc_Scen_Scorecard_Aw
372 (
373 p_api_version IN NUMBER,
374 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
375 p_commit IN VARCHAR2 := FND_API.G_FALSE,
376 p_planning_cycle_id IN NUMBER,
377 p_scenario_id IN NUMBER,
378 p_project_id IN NUMBER,
379 p_scorecard_tbl IN FPA_SCORECARDS_PVT.FPA_SCORECARD_TBL_TYPE,
380 x_return_status OUT NOCOPY VARCHAR2,
381 x_msg_count OUT NOCOPY NUMBER,
382 x_msg_data OUT NOCOPY VARCHAR2
383 ) IS
384
385 -- standard parameters
386 l_return_status VARCHAR2(1);
387 l_api_name CONSTANT VARCHAR2(30) := 'Update_Calc_Scen_Score';
388 l_api_version CONSTANT NUMBER := 1.0;
389 l_msg_log VARCHAR2(2000) := null;
390 ----------------------------------------------------------------------------
391
392 i NUMBER := 0;
393 l_scorecard_rec FPA_SCORECARDS_PVT.FPA_SCORECARD_REC_TYPE;
394 l_scorecards_tl_rec FPA_SCORECARDS_TL_REC;
395 l_tl_exists VARCHAR2(1) := null;
396
397 cursor check_comments_csr (p_project_id IN NUMBER,
398 p_scenario_id IN NUMBER,
399 p_strategic_obj_id IN NUMBER) IS
400 select 'T'
401 from fpa_scorecards_tl
402 where project_id = p_project_id
403 and strategic_obj_id = p_strategic_obj_id
404 and scenario_id = p_scenario_id
405 and language = USERENV('LANG')
406 and source_lang = USERENV('LANG');
407
408 BEGIN
409
410 x_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
411 -- call START_ACTIVITY to create savepoint, check compatibility
412 -- and initialize message list
413 x_return_status := FPA_UTILITIES_PVT.START_ACTIVITY(
414 p_api_name => l_api_name,
415 p_pkg_name => G_PKG_NAME,
416 p_init_msg_list => p_init_msg_list,
417 l_api_version => l_api_version,
418 p_api_version => p_api_version,
419 p_api_type => G_API_TYPE,
420 p_msg_log => 'Entering Fpa_Scorecards_Pvt.Update_Calc_Scen_Scorecard_Aw',
421 x_return_status => x_return_status);
422
423 -- check if activity started successfully
424 if (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR) then
425 l_msg_log := 'start_activity';
426 raise FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR;
427 elsif (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_ERROR) then
428 l_msg_log := 'start_activity';
429 raise FPA_UTILITIES_PVT.G_EXCEPTION_ERROR;
430 end if;
431
432 if(p_scorecard_tbl.count > 0) then
433
434 dbms_aw.execute('LMT project_d TO ' || p_project_id );
435 dbms_aw.execute('LMT scenario_d TO ' || p_scenario_id );
436
437 l_scorecards_tl_rec.project_id := p_project_id;
438 l_scorecards_tl_rec.scenario_id := p_scenario_id;
439
440 for i in p_scorecard_tbl.FIRST..p_scorecard_tbl.LAST
441 loop
442
443 l_scorecard_rec := p_scorecard_tbl(i);
444
445 l_tl_exists := null;
446 open check_comments_csr(p_project_id,
447 p_scenario_id,
448 l_scorecard_rec.strategic_obj_id);
449
450 fetch check_comments_csr into l_tl_exists;
451 close check_comments_csr;
452
453 l_scorecards_tl_rec.strategic_obj_id := l_scorecard_rec.strategic_obj_id;
454 l_scorecards_tl_rec.comments := l_scorecard_rec.comments;
455
456 if (l_tl_exists is not null and l_tl_exists = FND_API.G_TRUE) then
457
458 update_tl_rec(
459 p_init_msg_list => p_init_msg_list,
460 p_scorecards_tl_rec => l_scorecards_tl_rec,
461 x_msg_count => x_msg_count,
462 x_msg_data => x_msg_data,
463 x_return_status => l_return_status
464 );
465 else
466
467 insert_tl_rec(
468 p_init_msg_list => p_init_msg_list,
469 p_scorecards_tl_rec => l_scorecards_tl_rec,
470 x_msg_count => x_msg_count,
471 x_msg_data => x_msg_data,
472 x_return_status => l_return_status
473 );
474
475 end if;
476
477 --DIMENSION investment_criteria from strategic_obj_d
478 dbms_aw.execute('LMT strategic_obj_d TO ' || l_scorecard_rec.strategic_obj_id );
479
480 if(l_scorecard_rec.new_score is null) then
481 dbms_aw.execute('scenario_project_obj_score_m = NA' );
482 else
483 dbms_aw.execute('scenario_project_obj_score_m = ' || round(l_scorecard_rec.new_score,1) );
484 end if;
485
486 end loop;
487
488
489
490 dbms_aw.execute('CALL CALC_SCEN_SCORECARD_PRG(' ||
491 p_planning_cycle_id || ',' ||
492 p_scenario_id || ',' ||
493 p_project_id || ')' );
494 -- Overwrite Root and Financial Category weighted score
495 dbms_aw.execute('LMT strategic_obj_d TO strategic_obj_d le 2');
496 dbms_aw.execute('scenario_project_obj_wscore_m = NA' );
497
498 dbms_aw.execute('CALL CALC_SCE_COST_WSCORES_PRG(' ||
499 p_scenario_id || ')' );
500
501
502 dbms_aw.execute('CALL CALC_SCE_CLASS_COST_WSCORES_PRG(' ||
503 p_scenario_id || ',' ||
504 'na,' ||
505 p_project_id || ')' );
506
507 end if;
508 x_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
509
510 FPA_UTILITIES_PVT.END_ACTIVITY(
511 p_api_name => l_api_name,
512 p_pkg_name => G_PKG_NAME,
513 p_msg_log => null,
514 x_msg_count => x_msg_count,
515 x_msg_data => x_msg_data);
516
517
518 EXCEPTION
519 when FPA_UTILITIES_PVT.G_EXCEPTION_ERROR then
520 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
521 p_api_name => l_api_name,
522 p_pkg_name => G_PKG_NAME,
523 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_ERROR',
524 p_msg_log => l_msg_log,
525 x_msg_count => x_msg_count,
526 x_msg_data => x_msg_data,
527 p_api_type => G_API_TYPE);
528
529 when FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR then
530 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
531 p_api_name => l_api_name,
532 p_pkg_name => G_PKG_NAME,
533 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR',
534 p_msg_log => l_msg_log,
535 x_msg_count => x_msg_count,
536 x_msg_data => x_msg_data,
537 p_api_type => G_API_TYPE);
538
539 when OTHERS then
540 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
541 p_api_name => l_api_name,
542 p_pkg_name => G_PKG_NAME,
543 p_exc_name => 'OTHERS',
544 p_msg_log => l_msg_log||SQLERRM,
545 x_msg_count => x_msg_count,
546 x_msg_data => x_msg_data,
547 p_api_type => G_API_TYPE);
548
549 END Update_Calc_Scen_Scorecard_Aw;
550
551
552 PROCEDURE Calc_Scenario_Wscores_Aw
553 (
554 p_api_version IN NUMBER,
555 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
556 p_scenario_id IN NUMBER,
557 x_return_status OUT NOCOPY VARCHAR2,
558 x_msg_count OUT NOCOPY NUMBER,
559 x_msg_data OUT NOCOPY VARCHAR2
560 ) IS
561
562 -- standard parameters
563 l_return_status VARCHAR2(1);
564 l_api_name CONSTANT VARCHAR2(30) := 'Calc_Scenario_Wscores_Aw';
565 l_api_version CONSTANT NUMBER := 1.0;
566 l_msg_log VARCHAR2(2000) := null;
567 ----------------------------------------------------------------------------
568 l_init_scenario_id NUMBER := null;
569 l_planning_cycle_id NUMBER := null;
570
571 CURSOR INIT_SCENARIO_CSR (P_SCENARIO_ID IN NUMBER) IS
572 SELECT
573 PC.PLANNING_CYCLE, SCEI.SCENARIO
574 FROM
575 FPA_AW_SCE_INFO_V SCEI, FPA_AW_SCE_INFO_V SCE, FPA_AW_SCES_V PC
576 WHERE
577 SCEI.IS_INITIAL_SCENARIO = 1
578 AND SCE.PLANNING_CYCLE = PC.PLANNING_CYCLE
579 AND SCEI.PLANNING_CYCLE = PC.PLANNING_CYCLE
580 AND PC.SCENARIO = SCE.SCENARIO
581 AND SCE.SCENARIO = P_SCENARIO_ID;
582
583 PROCEDURE Calc_Scenario_Wscores(
584 p_planning_cycle_id IN NUMBER,
585 p_scenario_id IN NUMBER) IS
586 BEGIN
587
588 dbms_aw.execute('CALL CALC_SCEN_SCORECARD_PRG(' ||
589 l_planning_cycle_id || ',' ||
590 p_scenario_id || ',NA)' );
591
592 dbms_aw.execute('CALL CALC_SCE_COST_WSCORES_PRG(' ||
593 p_scenario_id || ')' );
594
595 dbms_aw.execute('CALL CALC_SCE_CLASS_COST_WSCORES_PRG(' ||
596 p_scenario_id || ', NA, NA)' );
597
598 END Calc_Scenario_Wscores;
599
600 BEGIN
601
602 x_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
603 x_return_status := FPA_UTILITIES_PVT.START_ACTIVITY(
604 p_api_name => l_api_name,
605 p_pkg_name => G_PKG_NAME,
606 p_init_msg_list => p_init_msg_list,
607 l_api_version => l_api_version,
608 p_api_version => p_api_version,
609 p_api_type => G_API_TYPE,
610 p_msg_log => 'Entering Fpa_Project_Load_Pvt.Calc_Scenario_Wscores_Aw',
611 x_return_status => x_return_status);
612
613 -- check if activity started successfully
614 if (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR) then
615 l_msg_log := 'start_activity';
616 raise FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR;
617 elsif (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_ERROR) then
618 l_msg_log := 'start_activity';
619 raise FPA_UTILITIES_PVT.G_EXCEPTION_ERROR;
620 end if;
621
622 -- calculate scenario weighted scores
623 -- fetch planning cycle (and initial scenario on the planning cycle)
624 -- for this scenario
625
626 open init_scenario_csr(p_scenario_id);
627 fetch init_scenario_csr into l_planning_cycle_id, l_init_scenario_id;
628 close init_scenario_csr;
629
630 calc_scenario_wscores(l_planning_cycle_id, p_scenario_id);
631
632 -- if p_scenario_id is not intial scenario then calculate new scenario scores
633 -- for initial scenario as projects got added to initial scenario also
634 -- during this load
635
636 if (l_init_scenario_id is not null and l_init_scenario_id <> p_scenario_id) then
637 calc_scenario_wscores(l_planning_cycle_id, l_init_scenario_id);
638 end if;
639
640
641 FPA_UTILITIES_PVT.END_ACTIVITY(
642 p_api_name => l_api_name,
643 p_pkg_name => G_PKG_NAME,
644 p_msg_log => null,
645 x_msg_count => x_msg_count,
646 x_msg_data => x_msg_data);
647
648 EXCEPTION
649 when FPA_UTILITIES_PVT.G_EXCEPTION_ERROR then
650 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
651 p_api_name => l_api_name,
652 p_pkg_name => G_PKG_NAME,
653 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_ERROR',
654 p_msg_log => l_msg_log,
655 x_msg_count => x_msg_count,
656 x_msg_data => x_msg_data,
657 p_api_type => G_API_TYPE);
658
659 when FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR then
660 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
661 p_api_name => l_api_name,
662 p_pkg_name => G_PKG_NAME,
663 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR',
664 p_msg_log => l_msg_log,
665 x_msg_count => x_msg_count,
666 x_msg_data => x_msg_data,
667 p_api_type => G_API_TYPE);
668
669 when OTHERS then
670 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
671 p_api_name => l_api_name,
672 p_pkg_name => G_PKG_NAME,
673 p_exc_name => 'OTHERS',
674 p_msg_log => l_msg_log||SQLERRM,
675 x_msg_count => x_msg_count,
676 x_msg_data => x_msg_data,
677 p_api_type => G_API_TYPE);
678
679 END Calc_Scenario_Wscores_Aw;
680
681 -- The procedure Update_Scenario_App_Scores copies the scores from the approved
682 -- scenario (scenario id is passed) to the approved scores variable.
683 PROCEDURE Update_Scenario_App_Scores
684 (
685 p_api_version IN NUMBER,
686 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
687 p_scenario_id IN NUMBER,
688 x_return_status OUT NOCOPY VARCHAR2,
689 x_msg_count OUT NOCOPY NUMBER,
690 x_msg_data OUT NOCOPY VARCHAR2
691 ) is
692
693 -- standard parameters
694 l_return_status VARCHAR2(1);
695 l_api_name CONSTANT VARCHAR2(30) := 'Update_Scenario_App_Scores';
696 l_api_version CONSTANT NUMBER := 1.0;
697 l_msg_log VARCHAR2(2000) := null;
698
699 begin
700
701 x_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
702 x_return_status := FPA_UTILITIES_PVT.START_ACTIVITY(
703 p_api_name => l_api_name,
704 p_pkg_name => G_PKG_NAME,
705 p_init_msg_list => p_init_msg_list,
706 l_api_version => l_api_version,
707 p_api_version => p_api_version,
708 p_api_type => G_API_TYPE,
709 p_msg_log => 'Entering Fpa_Project_Load_Pvt.Calc_Scenario_Wscores_Aw',
710 x_return_status => x_return_status);
711
712 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
713 FND_LOG.String
714 ( FND_LOG.LEVEL_PROCEDURE,
715 'FPA_Scorecard_Pvt.Update_Scenario_App_Scores.begin',
716 'Setting appropriate dimension limits.'
717 );
718 END IF;
719
720 dbms_aw.execute('limit scenario_d to ' || p_scenario_id);
721 dbms_aw.execute('limit project_d to scenario_project_m');
722 dbms_aw.execute('limit planning_cycle_d to scenario_d');
723 dbms_aw.execute('limit strategic_obj_d to pc_obj_m');
724
725 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
726 FND_LOG.String
727 ( FND_LOG.LEVEL_PROCEDURE,
728 'FPA_Scorecard_Pvt.Update_Scenario_App_Scores.',
729 'Updating Approved Scores.'
730 );
731 END IF;
732
733 dbms_aw.execute('project_approved_obj_score_m = scenario_project_obj_score_m');
734
735 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
736 FND_LOG.String
737 ( FND_LOG.LEVEL_PROCEDURE,
738 'FPA_Scorecard_Pvt.Update_Scenario_App_Scores.end',
739 'Finished updating approved projects.'
740 );
741 END IF;
742
743
744
745 FPA_UTILITIES_PVT.END_ACTIVITY(
746 p_api_name => l_api_name,
747 p_pkg_name => G_PKG_NAME,
748 p_msg_log => null,
749 x_msg_count => x_msg_count,
750 x_msg_data => x_msg_data);
751
752 EXCEPTION
753 when FPA_UTILITIES_PVT.G_EXCEPTION_ERROR then
754 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
755 p_api_name => l_api_name,
756 p_pkg_name => G_PKG_NAME,
757 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_ERROR',
758 p_msg_log => l_msg_log,
759 x_msg_count => x_msg_count,
760 x_msg_data => x_msg_data,
761 p_api_type => G_API_TYPE);
762
763 when FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR then
764 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
765 p_api_name => l_api_name,
766 p_pkg_name => G_PKG_NAME,
767 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR',
768 p_msg_log => l_msg_log,
769 x_msg_count => x_msg_count,
770 x_msg_data => x_msg_data,
771 p_api_type => G_API_TYPE);
772
773 when OTHERS then
774 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
775 p_api_name => l_api_name,
776 p_pkg_name => G_PKG_NAME,
777 p_exc_name => 'OTHERS',
778 p_msg_log => l_msg_log||SQLERRM,
779 x_msg_count => x_msg_count,
780 x_msg_data => x_msg_data,
781 p_api_type => G_API_TYPE);
782
783
784
785 end Update_Scenario_App_Scores;
786
787
788
789 PROCEDURE Handle_Comments
790 (
791 p_api_version IN NUMBER,
792 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
793 p_scenario_id IN NUMBER,
794 p_type IN VARCHAR2,
795 p_source_scenario_id IN NUMBER,
796 p_delete_project_id IN NUMBER,
797 x_return_status OUT NOCOPY VARCHAR2,
798 x_msg_count OUT NOCOPY NUMBER,
799 x_msg_data OUT NOCOPY VARCHAR2
800 ) IS
801
802 -- standard parameters
803 l_return_status VARCHAR2(1);
804 l_api_name CONSTANT VARCHAR2(30) := 'Load_Comments';
805 l_api_version CONSTANT NUMBER := 1.0;
806 l_msg_log VARCHAR2(2000) := null;
807 ----------------------------------------------------------------------------
808 l_projects VARCHAR2(2000) := null;
809 l_init_scenario_id NUMBER;
810 l_source_scenario_id NUMBER;
811
812 l_scorecards_tl_rec FPA_SCORECARDS_PVT.FPA_SCORECARDS_TL_REC;
813
814 CURSOR initial_scenario_csr (p_scenario_id in number) IS
815 select
816 scei.scenario
817 from
818 fpa_aw_sce_info_v scei, fpa_aw_sce_info_v sce, fpa_aw_sces_v pc
819 where
820 scei.is_initial_scenario = 1
821 and sce.planning_cycle = pc.planning_cycle
822 and scei.planning_cycle = pc.planning_cycle
823 and pc.scenario = sce.scenario
824 and sce.scenario = p_scenario_id;
825
826 CURSOR pjt_comments_csr (p_scenario_id in number) IS
827 select
828 sce.scenario scenario,
829 sce.project project,
830 sce.investment_criteria investment_criteria,
831 pjtc.comments comments
832 from
833 fpa_aw_proj_str_scores_v sce, fpa_scorecards_tl pjtc
834 where
835 sce.project = pjtc.project_id
836 and sce.investment_criteria = pjtc.strategic_obj_id
837 and pjtc.scenario_id = -1
838 and sce.scenario = p_scenario_id
839 and pjtc.language = userenv('LANG')
840 and not exists
841 (select 1
842 from fpa_scorecards_tl sctl
843 where sctl.scenario_id = sce.scenario
844 and sctl.project_id = sce.project
845 and sctl.language = userenv('LANG')
846 and sctl.strategic_obj_id = sce.investment_criteria);
847
848
849 CURSOR pjp_comments_csr (p_source_scenario_id in number,
850 p_scenario_id in number) IS
851 select
852 pjts.project_id project,
853 pjts.strategic_obj_id investment_criteria,
854 pjts.comments comments
855 from
856 fpa_scorecards_tl pjts
857 where
858 pjts.scenario_id = p_source_scenario_id
859 and pjts.language = userenv('LANG')
860 and not exists
861 (select 1
862 from fpa_scorecards_tl sctl
863 where sctl.project_id = pjts.project_id
864 and sctl.strategic_obj_id = pjts.strategic_obj_id
865 and sctl.language = userenv('LANG')
866 and sctl.scenario_id = p_scenario_id);
867
868
869 BEGIN
870
871 x_return_status := FPA_UTILITIES_PVT.G_RET_STS_SUCCESS;
872 -- call START_ACTIVITY to create savepoint, check compatibility
873 -- and initialize message list
874 x_return_status := FPA_UTILITIES_PVT.START_ACTIVITY(
875 p_api_name => l_api_name,
876 p_pkg_name => G_PKG_NAME,
877 p_init_msg_list => p_init_msg_list,
878 l_api_version => l_api_version,
879 p_api_version => p_api_version,
880 p_api_type => G_API_TYPE,
881 p_msg_log => 'Entering Fpa_Scorecards_Pvt.Handle_Comments '||p_scenario_id,
882 x_return_status => x_return_status);
883
884 -- check if activity started successfully
885 if (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR) then
886 l_msg_log := 'start_activity';
887 raise FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR;
888 elsif (x_return_status = FPA_UTILITIES_PVT.G_RET_STS_ERROR) then
889 l_msg_log := 'start_activity';
890 raise FPA_UTILITIES_PVT.G_EXCEPTION_ERROR;
891 end if;
892
893 IF (p_delete_project_id is not null) then
894 DELETE
895 FROM FPA_SCORECARDS_TL
896 WHERE SCENARIO_ID = P_SCENARIO_ID
897 AND PROJECT_ID = P_DELETE_PROJECT_ID
898 AND LANGUAGE = userenv('LANG')
899 AND SOURCE_LANG = userenv('LANG');
900
901 FPA_UTILITIES_PVT.END_ACTIVITY(
902 p_api_name => l_api_name,
903 p_pkg_name => G_PKG_NAME,
904 p_msg_log => null,
905 x_msg_count => x_msg_count,
906 x_msg_data => x_msg_data);
907 RETURN;
908 END IF;
909
910 OPEN initial_scenario_csr(p_scenario_id);
911 FETCH initial_scenario_csr INTO l_init_scenario_id;
912 CLOSE initial_scenario_csr;
913
914
915 IF (p_type = 'PJT') THEN
916
917 FOR pjt_comments_csr_rec IN pjt_comments_csr(p_scenario_id) LOOP
918
919 l_scorecards_tl_rec.scenario_id := pjt_comments_csr_rec.scenario;
920 l_scorecards_tl_rec.project_id := pjt_comments_csr_rec.project;
921 l_scorecards_tl_rec.strategic_obj_id := pjt_comments_csr_rec.investment_criteria;
922 l_scorecards_tl_rec.comments := pjt_comments_csr_rec.comments;
923
924 insert_tl_rec(
925 p_init_msg_list => p_init_msg_list,
926 p_scorecards_tl_rec => l_scorecards_tl_rec,
927 x_msg_count => x_msg_count,
928 x_msg_data => x_msg_data,
929 x_return_status => l_return_status);
930 END LOOP;
931
932 IF pjt_comments_csr%ISOPEN THEN
933 CLOSE pjt_comments_csr;
934 END IF;
935
936 IF(l_init_scenario_id <> p_scenario_id) THEN
937 FOR pjt_comments_csr_rec IN pjt_comments_csr(l_init_scenario_id) LOOP
938
939 l_scorecards_tl_rec.scenario_id := pjt_comments_csr_rec.scenario;
940 l_scorecards_tl_rec.project_id := pjt_comments_csr_rec.project;
941 l_scorecards_tl_rec.strategic_obj_id := pjt_comments_csr_rec.investment_criteria;
942 l_scorecards_tl_rec.comments := pjt_comments_csr_rec.comments;
943
944 insert_tl_rec(
945 p_init_msg_list => p_init_msg_list,
946 p_scorecards_tl_rec => l_scorecards_tl_rec,
947 x_msg_count => x_msg_count,
948 x_msg_data => x_msg_data,
949 x_return_status => l_return_status);
950 END LOOP;
951
952 IF pjt_comments_csr%ISOPEN THEN
953 CLOSE pjt_comments_csr;
954 END IF;
955 END IF;
956
957 ELSIF (p_type = 'PJP') then
958
959 if (p_source_scenario_id is null) then
960 l_source_scenario_id := l_init_scenario_id;
961 else
962 l_source_scenario_id := p_source_scenario_id;
963 end if;
964
965 FOR pjp_comments_csr_rec IN pjp_comments_csr(l_source_scenario_id, p_scenario_id) LOOP
966
967 l_scorecards_tl_rec.scenario_id := p_scenario_id;
968 l_scorecards_tl_rec.project_id := pjp_comments_csr_rec.project;
969 l_scorecards_tl_rec.strategic_obj_id := pjp_comments_csr_rec.investment_criteria;
970 l_scorecards_tl_rec.comments := pjp_comments_csr_rec.comments;
971
972 insert_tl_rec(
973 p_init_msg_list => p_init_msg_list,
974 p_scorecards_tl_rec => l_scorecards_tl_rec,
975 x_msg_count => x_msg_count,
976 x_msg_data => x_msg_data,
977 x_return_status => l_return_status);
978
979 END LOOP;
980
981 IF pjp_comments_csr%ISOPEN THEN
982 CLOSE pjp_comments_csr;
983 END IF;
984
985 END IF; -- elsif PJP
986
987 FPA_UTILITIES_PVT.END_ACTIVITY(
988 p_api_name => l_api_name,
989 p_pkg_name => G_PKG_NAME,
990 p_msg_log => null,
991 x_msg_count => x_msg_count,
992 x_msg_data => x_msg_data);
993
994 EXCEPTION
995 when FPA_UTILITIES_PVT.G_EXCEPTION_ERROR then
996 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
997 p_api_name => l_api_name,
998 p_pkg_name => G_PKG_NAME,
999 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_ERROR',
1000 p_msg_log => l_msg_log,
1001 x_msg_count => x_msg_count,
1002 x_msg_data => x_msg_data,
1003 p_api_type => G_API_TYPE);
1004
1005 when FPA_UTILITIES_PVT.G_EXCEPTION_UNEXPECTED_ERROR then
1006 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
1007 p_api_name => l_api_name,
1008 p_pkg_name => G_PKG_NAME,
1009 p_exc_name => 'FPA_UTILITIES_PVT.G_RET_STS_UNEXP_ERROR',
1010 p_msg_log => l_msg_log,
1011 x_msg_count => x_msg_count,
1012 x_msg_data => x_msg_data,
1013 p_api_type => G_API_TYPE);
1014
1015 when OTHERS then
1016 x_return_status := FPA_UTILITIES_PVT.HANDLE_EXCEPTIONS(
1017 p_api_name => l_api_name,
1018 p_pkg_name => G_PKG_NAME,
1019 p_exc_name => 'OTHERS',
1020 p_msg_log => l_msg_log||SQLERRM,
1021 x_msg_count => x_msg_count,
1022 x_msg_data => x_msg_data,
1023 p_api_type => G_API_TYPE);
1024
1025 END Handle_Comments;
1026
1027
1028
1029 FUNCTION Read_Only(
1030 p_planning_cycle_id IN NUMBER,
1031 p_scenario_id IN NUMBER) RETURN VARCHAR2 IS
1032
1033 CURSOR PC_SCENARIO_CSR (P_SCENARIO_ID IN NUMBER) IS
1034 SELECT
1035 PC.PC_STATUS, PC.PORTFOLIO, PC.PLANNING_CYCLE,
1036 SCE.RECOMMENDED_FLAG, SCE.APPROVED_FLAG, SCE.IS_INITIAL_SCENARIO
1037 FROM
1038 FPA_AW_PC_INFO_V PC, FPA_AW_SCES_V SCEP, FPA_AW_SCE_INFO_V SCE
1039 WHERE
1040 SCEP.SCENARIO = SCE.SCENARIO
1041 AND SCEP.PLANNING_CYCLE = PC.PLANNING_CYCLE
1042 AND SCEP.SCENARIO = P_SCENARIO_ID;
1043
1044 CURSOR PC_CSR (P_PC_ID IN NUMBER) IS
1045 SELECT
1046 PC.PC_STATUS, PC.PORTFOLIO, PC.SCENARIO_COUNT
1047 FROM
1048 FPA_AW_PC_INFO_V PC
1049 WHERE
1050 PC.PLANNING_CYCLE = P_PC_ID;
1051
1052 l_priv_develop_scen VARCHAR2(1) := null;
1053 l_portfolio_id NUMBER;
1054 l_pc_id NUMBER;
1055 l_scen_count NUMBER;
1056 l_pc_status FPA_AW_PC_INFO_V.PC_STATUS%TYPE;
1057 l_scen_rec_flag FPA_AW_SCE_INFO_V.RECOMMENDED_FLAG%TYPE;
1058 l_scen_app_flag FPA_AW_SCE_INFO_V.APPROVED_FLAG%TYPE;
1059 l_scen_ini_flag FPA_AW_SCE_INFO_V.IS_INITIAL_SCENARIO%TYPE;
1060
1061 BEGIN
1062
1063 l_pc_id := p_planning_cycle_id;
1064
1065 if(p_scenario_id is not null) then
1066 open pc_scenario_csr (p_scenario_id);
1067 fetch pc_scenario_csr into l_pc_status, l_portfolio_id, l_pc_id,
1068 l_scen_rec_flag, l_scen_app_flag,
1069 l_scen_ini_flag;
1070 close pc_scenario_csr;
1071 if(l_scen_rec_flag = 1 or l_scen_app_flag = 1) then
1072 return 'T';
1073 end if;
1074
1075 l_priv_develop_scen := FPA_SECURITY_PVT.Check_User_Previlege(
1076 p_privilege => FPA_SECURITY_PVT.G_DEVELOP_SCENARIO,
1077 p_object_id => l_portfolio_id);
1078
1079 if(l_priv_develop_scen <> 'T' ) then
1080 return 'T';
1081 end if;
1082
1083 open pc_csr (l_pc_id);
1084 fetch pc_csr into l_pc_status, l_portfolio_id, l_scen_count;
1085 close pc_csr;
1086
1087 if(l_scen_ini_flag = 1 and l_scen_count > 1) then
1088 return 'T';
1089 end if;
1090 else
1091 open pc_csr (l_pc_id);
1092 fetch pc_csr into l_pc_status, l_portfolio_id, l_scen_count;
1093 close pc_csr;
1094 end if;
1095
1096 if(l_pc_status = 'CLOSED' or l_pc_status = 'APPROVED'
1097 or l_pc_status = 'SUBMITTED') then
1098 return 'T';
1099 end if;
1100
1101 return 'F';
1102
1103 EXCEPTION
1104 WHEN OTHERS THEN
1105 if (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1106 FND_LOG.String(
1107 FND_LOG.LEVEL_PROCEDURE,
1108 'fpa.sql.FPA_SCORECARD_PVT.Read_Only',
1109 'EXCEPTION:'||sqlerrm||p_planning_cycle_id||','||p_scenario_id);
1110 end if;
1111 return 'F';
1112 END Read_Only;
1113
1114
1115
1116
1117 END FPA_SCORECARDS_PVT;