DBA Data[Home] [Help]

PACKAGE BODY: APPS.BSC_KPI_COLOR_PROPERTIES_PUB

Source


1 PACKAGE BODY BSC_KPI_COLOR_PROPERTIES_PUB AS
2 /* $Header: BSCPKCPB.pls 120.2.12000000.1 2007/07/17 07:44:02 appldev noship $ */
3 
4 
5 /************************************************************************************
6  ************************************************************************************/
7 
8 PROCEDURE Update_Kpi_Color_Properties (
9   p_commit              IN              VARCHAR2 := FND_API.G_FALSE
10 , p_objective_id	IN		BSC_KPIS_B.indicator%TYPE
11 , p_kpi_measure_id      IN      	BSC_KPI_ANALYSIS_MEASURES_B.kpi_measure_id%TYPE
12 , p_disable_color	IN		BSC_KPI_MEASURE_PROPS.disable_color%TYPE
13 , p_kpi_prototype_color	IN		BSC_KPI_MEASURE_PROPS.prototype_color_id%TYPE
14 , p_kpi_prototype_trend	IN		BSC_KPI_MEASURE_PROPS.prototype_trend_id%TYPE
15 , p_color_by_total	IN		BSC_KPI_MEASURE_PROPS.color_by_total%TYPE
16 , p_disable_trend	IN		BSC_KPI_MEASURE_PROPS.disable_trend%TYPE
17 , p_need_color_recalc	IN		VARCHAR2 := 'N'
18 , x_return_status       OUT NOCOPY     	VARCHAR2
19 , x_msg_count           OUT NOCOPY     	NUMBER
20 , x_msg_data            OUT NOCOPY     	VARCHAR2
21 )
22 IS
23   l_kpi_measure_rec BSC_KPI_MEASURE_PROPS_PUB.kpi_measure_props_rec;
24   l_obj_prototype_flag BSC_KPIS_B.prototype_flag%TYPE;
25 
26 BEGIN
27 
28   FND_MSG_PUB.Initialize;
29   x_return_status := FND_API.G_RET_STS_SUCCESS;
30 
31   -- Any Business Logic Validation
32 
33   BSC_KPI_MEASURE_PROPS_PUB.Retrieve_Kpi_Measure_Props
34   ( p_objective_id     => p_objective_id
35   , p_kpi_measure_id   => p_kpi_measure_id
36   , x_kpi_measure_rec  => l_kpi_measure_rec
37   , x_return_status    => x_return_status
38   , x_msg_count        => x_msg_count
39   , x_msg_data         => x_msg_data
40   );
41 
42   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
43     RAISE  FND_API.G_EXC_ERROR;
44   END IF;
45 
46   l_kpi_measure_rec.disable_color := p_disable_color;
47   l_kpi_measure_rec.disable_trend := p_disable_trend;
48   l_kpi_measure_rec.prototype_color := p_kpi_prototype_color;
49   l_kpi_measure_rec.prototype_trend := p_kpi_prototype_trend;
50   l_kpi_measure_rec.color_by_total := p_color_by_total;
51 
52   BSC_KPI_MEASURE_PROPS_PUB.Update_Kpi_Measure_Props
53   ( p_commit           => p_commit
54   , p_kpi_measure_rec  => l_kpi_measure_rec
55   , x_return_status    => x_return_status
56   , x_msg_count        => x_msg_count
57   , x_msg_data         => x_msg_data
58   );
59 
60   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
61     RAISE  FND_API.G_EXC_ERROR;
62   END IF;
63 
64   IF (p_need_color_recalc = 'Y') THEN
65 
66     Change_Prototype_Flag
67     ( p_objective_id   => p_objective_id
68     , p_kpi_measure_id => p_kpi_measure_id
69     , p_prototype_flag => 7
70     , x_return_status  => x_return_status
71     , x_msg_count      => x_msg_count
72     , x_msg_data       => x_msg_data
73     );
74 
75 
76   END IF;
77 
78 
79 
80 EXCEPTION
81   WHEN FND_API.G_EXC_ERROR THEN
82     IF (x_msg_data IS NULL) THEN
83       FND_MSG_PUB.Count_And_Get
84       ( p_encoded   =>  FND_API.G_FALSE
85       , p_count     =>  x_msg_count
86       , p_data      =>  x_msg_data
87       );
88     END IF;
89     x_return_status :=  FND_API.G_RET_STS_ERROR;
90   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
91     IF (x_msg_data IS NULL) THEN
92       FND_MSG_PUB.Count_And_Get
93       ( p_encoded   =>  FND_API.G_FALSE
94       , p_count     =>  x_msg_count
95       , p_data      =>  x_msg_data
96       );
97     END IF;
98     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
99   WHEN NO_DATA_FOUND THEN
100     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
101     IF (x_msg_data IS NOT NULL) THEN
102       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Update_Kpi_Color_Properties ';
103     ELSE
104       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Update_Kpi_Color_Properties ';
105     END IF;
106   WHEN OTHERS THEN
107     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
108     IF (x_msg_data IS NOT NULL) THEN
109       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Update_Kpi_Color_Properties ';
110     ELSE
111       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Update_Kpi_Color_Properties ';
112     END IF;
113 
114 END Update_Kpi_Color_Properties;
115 
116 
117 
118 /************************************************************************************
119  ************************************************************************************/
120 
121 PROCEDURE Update_Obj_Color_Properties (
122   p_commit              	IN              VARCHAR2 := FND_API.G_FALSE
123 , p_objective_id		IN		BSC_KPIS_B.indicator%TYPE
124 , p_obj_prototype_color_id	IN		BSC_KPIS_B.prototype_color_id%TYPE
125 , p_obj_prototype_trend_id	IN		BSC_KPIS_B.prototype_trend_id%TYPE
126 , p_color_rollup_type		IN		BSC_KPIS_B.color_rollup_type%TYPE
127 , p_weighted_color_method	IN		BSC_KPIS_B.weighted_color_method%TYPE
128 , p_need_color_recalc		IN		VARCHAR2 := 'Y'
129 , x_return_status       	OUT NOCOPY     	VARCHAR2
130 , x_msg_count           	OUT NOCOPY     	NUMBER
131 , x_msg_data            	OUT NOCOPY     	VARCHAR2
132 )
133 IS
134   l_objective_rec BSC_KPI_PUB.Bsc_Kpi_Entity_Rec;
135 
136   CURSOR c_shared_obj(p_indicator NUMBER) IS
137     SELECT indicator
138     FROM   bsc_kpis_b
139     WHERE  source_indicator = p_indicator
140     AND    share_flag = 2 -- shared objective.
141     AND    prototype_flag <> 2;
142 
143 BEGIN
144 
145   FND_MSG_PUB.Initialize;
146   x_return_status := FND_API.G_RET_STS_SUCCESS;
147 
148   -- Any Business Logic Validation
149 
150   l_objective_rec.Bsc_Kpi_Id := p_objective_id;
151 
152   IF (p_obj_prototype_color_id IS NOT NULL) THEN
153     l_objective_rec.Bsc_Prototype_Color_Id := p_obj_prototype_color_id;
154   END IF;
155 
156   IF (p_obj_prototype_trend_id IS NOT NULL) THEN
157     l_objective_rec.Bsc_Prototype_Trend_Id := p_obj_prototype_trend_id;
158   END IF;
159 
160   IF (p_color_rollup_type IS NOT NULL) THEN
161     l_objective_rec.Bsc_Color_Rollup_Type := p_color_rollup_type;
162   END IF;
163 
164   IF (p_weighted_color_method IS NOT NULL) THEN
165     l_objective_rec.Bsc_Weighted_Color_Method := p_weighted_color_method;
166   END IF;
167 
168 
169   BSC_KPI_PVT.Update_Kpi
170   ( p_commit               => p_commit
171   , p_Bsc_Kpi_Entity_Rec   => l_objective_rec
172   , x_return_status        => x_return_status
173   , x_msg_count            => x_msg_count
174   , x_msg_data             => x_msg_data
175   );
176 
177   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
178     RAISE  FND_API.G_EXC_ERROR;
179   END IF;
180 
181   FOR c_shared IN c_shared_obj(p_objective_id) LOOP
182     l_objective_rec.Bsc_Kpi_Id := c_shared.indicator;
183     BSC_KPI_PVT.Update_Kpi
184     ( p_commit               => p_commit
185     , p_Bsc_Kpi_Entity_Rec   => l_objective_rec
186     , x_return_status        => x_return_status
187     , x_msg_count            => x_msg_count
188     , x_msg_data             => x_msg_data
189     );
190   END LOOP;
191 
192 
193   IF (p_need_color_recalc = 'Y') THEN
194 
195     Obj_Prototype_Flag_Change
196     ( p_objective_id   => p_objective_id
197     , p_prototype_flag => 7
198     , x_return_status  => x_return_status
199     , x_msg_count      => x_msg_count
200     , x_msg_data       => x_msg_data
201     );
202 
203 
204   END IF;
205 
206 EXCEPTION
207   WHEN FND_API.G_EXC_ERROR THEN
208     IF (x_msg_data IS NULL) THEN
209       FND_MSG_PUB.Count_And_Get
210       ( p_encoded   =>  FND_API.G_FALSE
211       , p_count     =>  x_msg_count
212       , p_data      =>  x_msg_data
213       );
214     END IF;
215     x_return_status :=  FND_API.G_RET_STS_ERROR;
216   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
217     IF (x_msg_data IS NULL) THEN
218       FND_MSG_PUB.Count_And_Get
219       ( p_encoded   =>  FND_API.G_FALSE
220       , p_count     =>  x_msg_count
221       , p_data      =>  x_msg_data
222       );
223     END IF;
224     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
225   WHEN NO_DATA_FOUND THEN
226     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
227     IF (x_msg_data IS NOT NULL) THEN
228       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Update_Obj_Color_Properties ';
229     ELSE
230       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Update_Obj_Color_Properties ';
231     END IF;
232   WHEN OTHERS THEN
233     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
234     IF (x_msg_data IS NOT NULL) THEN
235       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Update_Obj_Color_Properties ';
236     ELSE
237       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Update_Obj_Color_Properties ';
238     END IF;
239 
240 
241 END Update_Obj_Color_Properties;
242 
243 
244 
245 /************************************************************************************
246  ************************************************************************************/
247 
248 PROCEDURE Create_Update_Kpi_Mes_Weights (
249   p_commit              IN              VARCHAR2 := FND_API.G_FALSE
250 , p_objective_id	IN		BSC_KPIS_B.indicator%TYPE
251 , p_kpi_measure_id      IN      	BSC_KPI_ANALYSIS_MEASURES_B.kpi_measure_id%TYPE
252 , p_kpi_weight		IN		BSC_KPI_MEASURE_WEIGHTS.weight%TYPE
253 , x_return_status       OUT NOCOPY     	VARCHAR2
254 , x_msg_count           OUT NOCOPY     	NUMBER
255 , x_msg_data            OUT NOCOPY     	VARCHAR2
256 )
257 IS
258   l_kpi_measure_weights_rec BSC_KPI_MEASURE_WEIGHTS_PUB.kpi_measure_weights_rec;
259   l_num VARCHAR(2);
260   l_obj_prototype_flag BSC_KPIS_B.prototype_flag%TYPE;
261   l_color_rollup_type BSC_KPIS_B.color_rollup_type%TYPE;
262 BEGIN
263 
264   FND_MSG_PUB.Initialize;
265   x_return_status := FND_API.G_RET_STS_SUCCESS;
266 
267   -- Any Business Logic Validation
268 
269   l_kpi_measure_weights_rec.objective_id := p_objective_id;
270   l_kpi_measure_weights_rec.kpi_measure_id := p_kpi_measure_id;
271   l_kpi_measure_weights_rec.weight := p_kpi_weight;
272 
273   SELECT count(1) INTO l_num FROM bsc_kpi_measure_weights WHERE indicator = p_objective_id AND kpi_measure_id = p_kpi_measure_id;
274 
275   IF (l_num = 0) THEN
276 
277     BSC_KPI_MEASURE_WEIGHTS_PUB.Create_Kpi_Measure_Weights
278     ( p_commit               	  => p_commit
279     , p_kpi_measure_weights_rec   => l_kpi_measure_weights_rec
280     , p_cascade_shared		  => TRUE
281     , x_return_status        	  => x_return_status
282     , x_msg_count           	  => x_msg_count
283     , x_msg_data             	  => x_msg_data
284     );
285 
286     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
287       RAISE  FND_API.G_EXC_ERROR;
288     END IF;
289 
290   ELSE
291 
292     BSC_KPI_MEASURE_WEIGHTS_PUB.Update_Kpi_Measure_Weights
293     ( p_commit               	  => p_commit
294     , p_kpi_measure_weights_rec   => l_kpi_measure_weights_rec
295     , p_cascade_shared		  => TRUE
296     , x_return_status        	  => x_return_status
297     , x_msg_count           	  => x_msg_count
298     , x_msg_data             	  => x_msg_data
299     );
300 
301     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
302       RAISE  FND_API.G_EXC_ERROR;
303     END IF;
304 
305   END IF;
306 
307   /*SELECT prototype_flag INTO l_obj_prototype_flag
308   FROM bsc_kpis_b
309   WHERE indicator = p_objective_id;*/
310 
311   SELECT bk.color_rollup_type, bk.prototype_flag
312   INTO   l_color_rollup_type, l_obj_prototype_flag
313   FROM bsc_db_color_ao_defaults_v dd, bsc_kpi_analysis_measures_vl km, bsc_kpis_b bk
314   WHERE km.indicator = p_objective_id AND
315         bk.indicator = km.indicator AND
316         km.indicator = dd.indicator AND
317         dd.a0_default = km.analysis_option0 AND
318         dd.a1_default = km.analysis_option1 AND
319         dd.a2_default = km.analysis_option2 AND
320         km.default_value = 1;
321 
322   IF (l_obj_prototype_flag <> 2 AND l_obj_prototype_flag <> 7
323       AND l_color_rollup_type = BSC_COLOR_CALC_UTIL.WEIGHTED_AVERAGE) THEN
324 
325     Obj_Prototype_Flag_Change
326     ( p_objective_id   => p_objective_id
327     , p_prototype_flag => 7
328     , x_return_status  => x_return_status
332 
329     , x_msg_count      => x_msg_count
330     , x_msg_data       => x_msg_data
331     );
333     END IF;
334 
335 
336 
337 EXCEPTION
338   WHEN FND_API.G_EXC_ERROR THEN
339     IF (x_msg_data IS NULL) THEN
340       FND_MSG_PUB.Count_And_Get
341       ( p_encoded   =>  FND_API.G_FALSE
342       , p_count     =>  x_msg_count
343       , p_data      =>  x_msg_data
344       );
345     END IF;
346     x_return_status :=  FND_API.G_RET_STS_ERROR;
347   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
348     IF (x_msg_data IS NULL) THEN
349       FND_MSG_PUB.Count_And_Get
350       ( p_encoded   =>  FND_API.G_FALSE
351       , p_count     =>  x_msg_count
352       , p_data      =>  x_msg_data
353       );
354     END IF;
355     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
356   WHEN NO_DATA_FOUND THEN
357     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
358     IF (x_msg_data IS NOT NULL) THEN
359       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Create_Update_Kpi_Measure_Weights ';
360     ELSE
361       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Create_Update_Kpi_Measure_Weights ';
362     END IF;
363   WHEN OTHERS THEN
364     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
365     IF (x_msg_data IS NOT NULL) THEN
366       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Create_Update_Kpi_Measure_Weights ';
367     ELSE
368       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Create_Update_Kpi_Measure_Weights ';
369     END IF;
370 
371 END Create_Update_Kpi_Mes_Weights;
372 
373 
374 /************************************************************************************
375  ************************************************************************************/
376 
377 PROCEDURE Obj_Prototype_Flag_Change (
378   p_objective_id	IN		BSC_KPIS_B.indicator%TYPE
379 , p_prototype_flag      IN      	NUMBER
380 , x_return_status       OUT NOCOPY     	VARCHAR2
381 , x_msg_count           OUT NOCOPY     	NUMBER
382 , x_msg_data            OUT NOCOPY     	VARCHAR2
383 )
384 IS
385 
386   CURSOR c_shared_obj(p_indicator NUMBER) IS
387     SELECT indicator
388     FROM   bsc_kpis_b
389     WHERE  source_indicator = p_indicator
390     AND    share_flag = 2 -- shared objective.
391     AND    prototype_flag <> 2;
392 
393 BEGIN
394 
395   FND_MSG_PUB.Initialize;
396   x_return_status := FND_API.G_RET_STS_SUCCESS;
397 
398   -- Any Business Logic Validation
399 
400     BSC_DESIGNER_PVT.ActionFlag_Change_Cascade
401     ( p_indicator     => p_objective_id
402     , p_newflag       => p_prototype_flag
403     , p_cascade_color => FALSE
404     );
405 
406 
407     FOR c_shared IN c_shared_obj(p_objective_id) LOOP
408       BSC_DESIGNER_PVT.ActionFlag_Change_Cascade
409       ( p_indicator     => c_shared.indicator
410       , p_newflag       => p_prototype_flag
411       , p_cascade_color => FALSE
412       );
413     END LOOP;
414 
415 
416 EXCEPTION
417   WHEN FND_API.G_EXC_ERROR THEN
418     IF (x_msg_data IS NULL) THEN
419       FND_MSG_PUB.Count_And_Get
420       ( p_encoded   =>  FND_API.G_FALSE
421       , p_count     =>  x_msg_count
422       , p_data      =>  x_msg_data
423       );
424     END IF;
425     x_return_status :=  FND_API.G_RET_STS_ERROR;
426   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
427     IF (x_msg_data IS NULL) THEN
428       FND_MSG_PUB.Count_And_Get
429       ( p_encoded   =>  FND_API.G_FALSE
430       , p_count     =>  x_msg_count
431       , p_data      =>  x_msg_data
432       );
433     END IF;
434     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
435   WHEN NO_DATA_FOUND THEN
436     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
437     IF (x_msg_data IS NOT NULL) THEN
438       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
439     ELSE
440       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
441     END IF;
442   WHEN OTHERS THEN
443     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
444     IF (x_msg_data IS NOT NULL) THEN
445       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
446     ELSE
447       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
448     END IF;
449 
450 END Obj_Prototype_Flag_Change;
451 
452 
453 /************************************************************************************
454  ************************************************************************************/
455 
456 PROCEDURE Kpi_Prototype_Flag_Change (
457   p_objective_id	IN		BSC_KPIS_B.indicator%TYPE
458 , p_kpi_measure_id      IN      	BSC_KPI_ANALYSIS_MEASURES_B.kpi_measure_id%TYPE
459 , p_prototype_flag      IN      	NUMBER
460 , x_return_status       OUT NOCOPY     	VARCHAR2
461 , x_msg_count           OUT NOCOPY     	NUMBER
462 , x_msg_data            OUT NOCOPY     	VARCHAR2
463 )
464 IS
465   l_kpi_measure_id NUMBER;
466 
467   CURSOR c_shared_obj(p_indicator NUMBER) IS
468     SELECT indicator
469     FROM   bsc_kpis_b
470     WHERE  source_indicator = p_indicator
471     AND    share_flag = 2 -- shared objective.
472     AND    prototype_flag <> 2;
473 
474 BEGIN
475 
476   FND_MSG_PUB.Initialize;
477   x_return_status := FND_API.G_RET_STS_SUCCESS;
478 
479   -- Any Business Logic Validation
480 
481   BSC_DESIGNER_PVT.Update_Kpi_Prototype_Flag
482   ( p_objective_id   => p_objective_id
483   , p_kpi_measure_id => p_kpi_measure_id
487   FOR c_shared IN c_shared_obj(p_objective_id) LOOP
484   , p_flag           => p_prototype_flag
485   );
486 
488 
489     l_kpi_measure_id := BSC_KPI_MEASURE_PROPS_PUB.get_shared_obj_kpi_measure
490                         ( p_objective_id         => p_objective_id
491                         , p_kpi_measure_id       => p_kpi_measure_id
492                         , p_shared_objective_id  => c_shared.indicator
493                         );
494 
495     IF l_kpi_measure_id IS NULL THEN
496       RAISE  FND_API.G_EXC_ERROR;
497     END IF;
498 
499     BSC_DESIGNER_PVT.Update_Kpi_Prototype_Flag
500     ( p_objective_id   => c_shared.indicator
501     , p_kpi_measure_id => l_kpi_measure_id
502     , p_flag           => p_prototype_flag
503     );
504 
505 
506   END LOOP;
507 
508 
509 EXCEPTION
510   WHEN FND_API.G_EXC_ERROR THEN
511     IF (x_msg_data IS NULL) THEN
512       FND_MSG_PUB.Count_And_Get
513       ( p_encoded   =>  FND_API.G_FALSE
514       , p_count     =>  x_msg_count
515       , p_data      =>  x_msg_data
516       );
517     END IF;
518     x_return_status :=  FND_API.G_RET_STS_ERROR;
519   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
520     IF (x_msg_data IS NULL) THEN
521       FND_MSG_PUB.Count_And_Get
522       ( p_encoded   =>  FND_API.G_FALSE
523       , p_count     =>  x_msg_count
524       , p_data      =>  x_msg_data
525       );
526     END IF;
527     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
528   WHEN NO_DATA_FOUND THEN
529     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
530     IF (x_msg_data IS NOT NULL) THEN
531       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Kpi_Prototype_Flag_Change ';
532     ELSE
533       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Kpi_Prototype_Flag_Change ';
534     END IF;
535   WHEN OTHERS THEN
536     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
537     IF (x_msg_data IS NOT NULL) THEN
538       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Kpi_Prototype_Flag_Change ';
539     ELSE
540       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Kpi_Prototype_Flag_Change ';
541     END IF;
542 
543 END Kpi_Prototype_Flag_Change;
544 
545 
546 /************************************************************************************
547  ************************************************************************************/
548 
549 PROCEDURE Change_Prototype_Flag (
550   p_objective_id        IN		BSC_KPIS_B.indicator%TYPE
551 , p_kpi_measure_id      IN      	BSC_KPI_ANALYSIS_MEASURES_B.kpi_measure_id%TYPE
552 , p_prototype_flag      IN      	NUMBER
553 , x_return_status       OUT NOCOPY     	VARCHAR2
554 , x_msg_count           OUT NOCOPY     	NUMBER
555 , x_msg_data            OUT NOCOPY     	VARCHAR2
556 )
557 IS
558   l_obj_prototype_flag BSC_KPIS_B.prototype_flag%TYPE;
559   l_color_rollup_type BSC_KPIS_B.color_rollup_type%TYPE;
560   l_def_kpi_measure_id BSC_KPI_ANALYSIS_MEASURES_VL.kpi_measure_id%TYPE;
561 BEGIN
562 
563   FND_MSG_PUB.Initialize;
564   x_return_status := FND_API.G_RET_STS_SUCCESS;
565 
566   -- Any Business Logic Validation
567 
568   Kpi_Prototype_Flag_Change
569   ( p_objective_id   => p_objective_id
570   , p_kpi_measure_id => p_kpi_measure_id
571   , p_prototype_flag => p_prototype_flag
572   , x_return_status  => x_return_status
573   , x_msg_count      => x_msg_count
574   , x_msg_data       => x_msg_data
575   );
576 
577   /*SELECT prototype_flag INTO l_obj_prototype_flag
578   FROM bsc_kpis_b
579   WHERE indicator = p_objective_id;*/
580 
581   SELECT bk.color_rollup_type, km.kpi_measure_id, bk.prototype_flag
582   INTO   l_color_rollup_type, l_def_kpi_measure_id, l_obj_prototype_flag
583   FROM bsc_db_color_ao_defaults_v dd, bsc_kpi_analysis_measures_vl km, bsc_kpis_b bk
584   WHERE km.indicator = p_objective_id AND
585         bk.indicator = km.indicator AND
586         km.indicator = dd.indicator AND
587         dd.a0_default = km.analysis_option0 AND
588         dd.a1_default = km.analysis_option1 AND
589         dd.a2_default = km.analysis_option2 AND
590         km.default_value = 1;
591 
592   IF (l_obj_prototype_flag <> 2 AND
593       l_obj_prototype_flag <> p_prototype_flag AND
594       ((l_color_rollup_type = BSC_COLOR_CALC_UTIL.DEFAULT_KPI AND l_def_kpi_measure_id = p_kpi_measure_id)
595             OR (l_color_rollup_type <> BSC_COLOR_CALC_UTIL.DEFAULT_KPI))) THEN
596 
597     Obj_Prototype_Flag_Change
598     ( p_objective_id   => p_objective_id
599     , p_prototype_flag => p_prototype_flag
600     , x_return_status  => x_return_status
601     , x_msg_count      => x_msg_count
602     , x_msg_data       => x_msg_data
603     );
604 
605   END IF;
606 
607 EXCEPTION
608   WHEN FND_API.G_EXC_ERROR THEN
609     IF (x_msg_data IS NULL) THEN
610       FND_MSG_PUB.Count_And_Get
611       ( p_encoded   =>  FND_API.G_FALSE
612       , p_count     =>  x_msg_count
613       , p_data      =>  x_msg_data
614       );
615     END IF;
616     x_return_status :=  FND_API.G_RET_STS_ERROR;
617   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
618     IF (x_msg_data IS NULL) THEN
619       FND_MSG_PUB.Count_And_Get
620       ( p_encoded   =>  FND_API.G_FALSE
621       , p_count     =>  x_msg_count
622       , p_data      =>  x_msg_data
623       );
624     END IF;
625     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
626   WHEN NO_DATA_FOUND THEN
627     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
628     IF (x_msg_data IS NOT NULL) THEN
629       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
630     ELSE
631       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
632     END IF;
633   WHEN OTHERS THEN
634     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
635     IF (x_msg_data IS NOT NULL) THEN
636       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
637     ELSE
638       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Obj_Prototype_Flag_Change ';
639     END IF;
640 
641 END Change_Prototype_Flag;
642 
643 
644 /************************************************************************************
645  ************************************************************************************/
646 
647 PROCEDURE Save_Disable_Color_Of_Kpi (
648   p_commit              IN              VARCHAR2 := FND_API.G_FALSE
649 , p_objective_id	IN		BSC_KPIS_B.indicator%TYPE
650 , p_kpi_measure_id      IN      	BSC_KPI_ANALYSIS_MEASURES_B.kpi_measure_id%TYPE
651 , p_disable_color	IN		BSC_KPI_MEASURE_PROPS.disable_color%TYPE
652 , p_need_color_recalc	IN		VARCHAR2 := 'N'
653 , x_return_status       OUT NOCOPY     	VARCHAR2
654 , x_msg_count           OUT NOCOPY     	NUMBER
655 , x_msg_data            OUT NOCOPY     	VARCHAR2
656 )
657 IS
658   l_kpi_measure_rec BSC_KPI_MEASURE_PROPS_PUB.kpi_measure_props_rec;
659   l_obj_prototype_flag BSC_KPIS_B.prototype_flag%TYPE;
660 
661 BEGIN
662 
663   FND_MSG_PUB.Initialize;
664   x_return_status := FND_API.G_RET_STS_SUCCESS;
665 
666   -- Any Business Logic Validation
667 
668   BSC_KPI_MEASURE_PROPS_PUB.Retrieve_Kpi_Measure_Props
669   ( p_objective_id     => p_objective_id
670   , p_kpi_measure_id   => p_kpi_measure_id
671   , x_kpi_measure_rec  => l_kpi_measure_rec
672   , x_return_status    => x_return_status
673   , x_msg_count        => x_msg_count
674   , x_msg_data         => x_msg_data
675   );
676 
677   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
678     RAISE  FND_API.G_EXC_ERROR;
679   END IF;
680 
681   l_kpi_measure_rec.disable_color := p_disable_color;
682 
683   BSC_KPI_MEASURE_PROPS_PUB.Update_Kpi_Measure_Props
684   ( p_commit           => p_commit
685   , p_kpi_measure_rec  => l_kpi_measure_rec
686   , x_return_status    => x_return_status
687   , x_msg_count        => x_msg_count
688   , x_msg_data         => x_msg_data
689   );
690 
691   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
692     RAISE  FND_API.G_EXC_ERROR;
693   END IF;
694 
695   IF (p_need_color_recalc = 'Y') THEN
696 
697     Change_Prototype_Flag
698     ( p_objective_id   => p_objective_id
699     , p_kpi_measure_id => p_kpi_measure_id
700     , p_prototype_flag => 7
701     , x_return_status  => x_return_status
702     , x_msg_count      => x_msg_count
703     , x_msg_data       => x_msg_data
704     );
705 
706 
707   END IF;
708 
709 
710 
711 EXCEPTION
712   WHEN FND_API.G_EXC_ERROR THEN
713     IF (x_msg_data IS NULL) THEN
714       FND_MSG_PUB.Count_And_Get
715       ( p_encoded   =>  FND_API.G_FALSE
716       , p_count     =>  x_msg_count
717       , p_data      =>  x_msg_data
718       );
719     END IF;
720     x_return_status :=  FND_API.G_RET_STS_ERROR;
721   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
722     IF (x_msg_data IS NULL) THEN
723       FND_MSG_PUB.Count_And_Get
724       ( p_encoded   =>  FND_API.G_FALSE
725       , p_count     =>  x_msg_count
726       , p_data      =>  x_msg_data
727       );
728     END IF;
729     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
730   WHEN NO_DATA_FOUND THEN
731     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
732     IF (x_msg_data IS NOT NULL) THEN
733       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Save_Disable_Color_Of_Kpi ';
734     ELSE
735       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Save_Disable_Color_Of_Kpi ';
736     END IF;
737   WHEN OTHERS THEN
738     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
739     IF (x_msg_data IS NOT NULL) THEN
740       x_msg_data := x_msg_data || ' -> BSC_KPI_COLOR_PROPERTIES_PUB.Save_Disable_Color_Of_Kpi ';
741     ELSE
742       x_msg_data := SQLERRM || ' at BSC_KPI_COLOR_PROPERTIES_PUB.Save_Disable_Color_Of_Kpi ';
743     END IF;
744 
745 END Save_Disable_Color_Of_Kpi;
746 
747 
748 END BSC_KPI_COLOR_PROPERTIES_PUB;