DBA Data[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;