[Home] [Help]
PACKAGE BODY: APPS.AMS_ACTMETRICFACT_PVT
Source
1 PACKAGE BODY Ams_Actmetricfact_Pvt AS
2 /* $Header: amsvamfb.pls 115.25 2002/11/16 01:09:36 mgudivak ship $ */
3
4 ---------------------------------------------------------------------------------------------------
5 --
6 -- NAME
7 -- Ams_Actmetricfact_Pvt
8 --
9 -- HISTORY
10 -- 20-Jun-1999 tdonohoe Created package.
11 -- 28-Jun 2000 tdonohoe Modified Check_ActMetricFact_Items to allow the same node to appear on a
12 -- hierarchy combined with a unique formula_id.
13 -- 31-Jul-2000 tdonohoe comment out code to fix bug 1362107.
14 -- 03-Apr-2001 yzhao add validate_fund_facts
15 --------------------------------------------------------------------------------------------------
16
17 --
18 -- Global variables and constants.
19
20 G_PKG_NAME CONSTANT VARCHAR2(30) := 'Ams_Actmetricfact_Pvt'; -- Name of the current package.
21 G_DEBUG_FLAG VARCHAR2(1) := 'N';
22
23
24 -- Start of comments
25 -- NAME
26 -- Default_ActMetricFact
27 --
28 --
29 -- PURPOSE
30 -- Defaults the Activty Metric Fact .
31 --
32 -- NOTES
33 --
34 -- HISTORY
35 -- 24-Apr-2000 tdonohoe Created.
36 --
37 -- End of comments
38
39 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
40 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
41 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
42
43 PROCEDURE Default_ActMetricFact(
44 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
45 p_act_metric_fact_rec IN act_metric_fact_rec_type,
46 p_validation_mode IN VARCHAR2 ,
47 x_complete_rec OUT NOCOPY act_metric_fact_rec_type,
48 x_return_status OUT NOCOPY VARCHAR2,
49 x_msg_count OUT NOCOPY NUMBER,
50 x_msg_data OUT NOCOPY VARCHAR2
51 )
52 IS
53
54 BEGIN
55 --
56 -- Initialize message list if p_init_msg_list is set to TRUE.
57 --
58 IF FND_API.To_Boolean (p_init_msg_list) THEN
59 FND_MSG_PUB.Initialize;
60 END IF;
61
62 --
63 -- Initialize API return status to success.
64 --
65 x_return_status := FND_API.G_RET_STS_SUCCESS;
66
67 x_complete_rec := p_act_metric_fact_rec;
68
69 -- Insert Mode
70 IF ((p_validation_mode = JTF_PLSQL_API.g_create) OR (p_validation_mode = JTF_PLSQL_API.g_update)) THEN
71
72 IF p_act_metric_fact_rec.trans_forecasted_value IS NULL THEN
73 x_complete_rec.trans_forecasted_value := 0;
74 END IF;
75
76 IF p_act_metric_fact_rec.base_quantity IS NULL THEN
77 x_complete_rec.base_quantity := 0;
78 END IF;
79
80 IF p_act_metric_fact_rec.functional_currency_code IS NULL THEN
81 x_complete_rec.functional_currency_code := 'NONE';
82 END IF;
83
84 IF p_act_metric_fact_rec.func_forecasted_value IS NULL THEN
85 x_complete_rec.func_forecasted_value := 0;
86 END IF;
87
88 IF p_act_metric_fact_rec.de_metric_id IS NULL THEN
89 x_complete_rec.de_metric_id := 0;
90 END IF;
91
92 IF p_act_metric_fact_rec.time_id1 IS NULL THEN
93 x_complete_rec.time_id1 := 0;
94 END IF;
95
96 IF p_act_metric_fact_rec.value_type IS NULL THEN
97 x_complete_rec.value_type := 'NUMERIC';
98 END IF;
99
100 END IF;
101
102 END Default_ActMetricFact ;
103
104
105 -- Start of comments
106 -- API Name Init_ActMetricFact_Rec
107 -- Type Private
108 -- Function This Process initialize Activity Metric Fact record
109 -- Parameters
110 -- OUT NOCOPY x_fact_rec OUT NOCOPY act_metric_rec_fact_type
111 -- History
112 -- 05/30/2002 created by Ying Zhao
113 -- End of comments
114
115 PROCEDURE Init_ActMetricFact_Rec(
116 x_fact_rec OUT NOCOPY act_metric_fact_rec_type
117 )
118 IS
119 BEGIN
120 x_fact_rec.activity_metric_fact_id := fnd_api.g_miss_num;
121 x_fact_rec.last_update_date := fnd_api.g_miss_date;
122 x_fact_rec.last_updated_by := fnd_api.g_miss_num;
123 x_fact_rec.creation_date := fnd_api.g_miss_date;
124 x_fact_rec.created_by := fnd_api.g_miss_num;
125 x_fact_rec.last_update_login := fnd_api.g_miss_num;
126 x_fact_rec.object_version_number := fnd_api.g_miss_num;
127 x_fact_rec.act_metric_used_by_id := fnd_api.g_miss_num;
128 x_fact_rec.arc_act_metric_used_by := fnd_api.g_miss_char;
129 x_fact_rec.value_type := fnd_api.g_miss_char;
130 x_fact_rec.activity_metric_id := fnd_api.g_miss_num;
131 x_fact_rec.activity_geo_area_id := fnd_api.g_miss_num;
132 x_fact_rec.activity_product_id := fnd_api.g_miss_num;
133 x_fact_rec.transaction_currency_code := fnd_api.g_miss_char;
134 x_fact_rec.trans_forecasted_value := fnd_api.g_miss_num;
135 x_fact_rec.base_quantity := fnd_api.g_miss_num;
136 x_fact_rec.functional_currency_code := fnd_api.g_miss_char;
137 x_fact_rec.func_forecasted_value := fnd_api.g_miss_num;
138 x_fact_rec.org_id := fnd_api.g_miss_num;
139 x_fact_rec.de_metric_id := fnd_api.g_miss_num;
140 x_fact_rec.de_geographic_area_id := fnd_api.g_miss_num;
141 x_fact_rec.de_geographic_area_type := fnd_api.g_miss_char;
142 x_fact_rec.de_inventory_item_id := fnd_api.g_miss_num;
143 x_fact_rec.de_inventory_item_org_id := fnd_api.g_miss_num;
144 x_fact_rec.time_id1 := fnd_api.g_miss_num;
145 x_fact_rec.time_id2 := fnd_api.g_miss_num;
146 x_fact_rec.time_id3 := fnd_api.g_miss_num;
147 x_fact_rec.time_id4 := fnd_api.g_miss_num;
148 x_fact_rec.time_id5 := fnd_api.g_miss_num;
149 x_fact_rec.time_id6 := fnd_api.g_miss_num;
150 x_fact_rec.time_id7 := fnd_api.g_miss_num;
151 x_fact_rec.time_id8 := fnd_api.g_miss_num;
152 x_fact_rec.time_id9 := fnd_api.g_miss_num;
153 x_fact_rec.time_id10 := fnd_api.g_miss_num;
154 x_fact_rec.time_id11 := fnd_api.g_miss_num;
155 x_fact_rec.time_id12 := fnd_api.g_miss_num;
156 x_fact_rec.time_id13 := fnd_api.g_miss_num;
157 x_fact_rec.time_id14 := fnd_api.g_miss_num;
158 x_fact_rec.time_id15 := fnd_api.g_miss_num;
159 x_fact_rec.time_id16 := fnd_api.g_miss_num;
160 x_fact_rec.time_id17 := fnd_api.g_miss_num;
161 x_fact_rec.time_id18 := fnd_api.g_miss_num;
162 x_fact_rec.time_id19 := fnd_api.g_miss_num;
163 x_fact_rec.time_id20 := fnd_api.g_miss_num;
164 x_fact_rec.time_id21 := fnd_api.g_miss_num;
165 x_fact_rec.time_id22 := fnd_api.g_miss_num;
166 x_fact_rec.time_id23 := fnd_api.g_miss_num;
167 x_fact_rec.time_id24 := fnd_api.g_miss_num;
168 x_fact_rec.time_id25 := fnd_api.g_miss_num;
169 x_fact_rec.time_id26 := fnd_api.g_miss_num;
170 x_fact_rec.time_id27 := fnd_api.g_miss_num;
171 x_fact_rec.time_id28 := fnd_api.g_miss_num;
172 x_fact_rec.time_id29 := fnd_api.g_miss_num;
173 x_fact_rec.time_id30 := fnd_api.g_miss_num;
174 x_fact_rec.time_id31 := fnd_api.g_miss_num;
175 x_fact_rec.time_id32 := fnd_api.g_miss_num;
176 x_fact_rec.time_id33 := fnd_api.g_miss_num;
177 x_fact_rec.time_id34 := fnd_api.g_miss_num;
178 x_fact_rec.time_id35 := fnd_api.g_miss_num;
179 x_fact_rec.time_id36 := fnd_api.g_miss_num;
180 x_fact_rec.time_id37 := fnd_api.g_miss_num;
181 x_fact_rec.time_id38 := fnd_api.g_miss_num;
182 x_fact_rec.time_id39 := fnd_api.g_miss_num;
183 x_fact_rec.time_id40 := fnd_api.g_miss_num;
184 x_fact_rec.time_id41 := fnd_api.g_miss_num;
185 x_fact_rec.time_id42 := fnd_api.g_miss_num;
186 x_fact_rec.time_id43 := fnd_api.g_miss_num;
187 x_fact_rec.time_id44 := fnd_api.g_miss_num;
188 x_fact_rec.time_id45 := fnd_api.g_miss_num;
189 x_fact_rec.time_id46 := fnd_api.g_miss_num;
190 x_fact_rec.time_id47 := fnd_api.g_miss_num;
191 x_fact_rec.time_id48 := fnd_api.g_miss_num;
192 x_fact_rec.time_id49 := fnd_api.g_miss_num;
193 x_fact_rec.time_id50 := fnd_api.g_miss_num;
194 x_fact_rec.time_id51 := fnd_api.g_miss_num;
195 x_fact_rec.time_id52 := fnd_api.g_miss_num;
196 x_fact_rec.time_id53 := fnd_api.g_miss_num;
197 x_fact_rec.hierarchy_id := fnd_api.g_miss_num;
198 x_fact_rec.node_id := fnd_api.g_miss_num;
199 x_fact_rec.level_depth := fnd_api.g_miss_num;
200 x_fact_rec.formula_id := fnd_api.g_miss_num;
201 x_fact_rec.from_date := fnd_api.g_miss_date;
202 x_fact_rec.to_date := fnd_api.g_miss_date;
203 x_fact_rec.fact_value := fnd_api.g_miss_num;
204 x_fact_rec.fact_percent := fnd_api.g_miss_num;
205 x_fact_rec.root_fact_id := fnd_api.g_miss_num;
206 x_fact_rec.previous_fact_id := fnd_api.g_miss_num;
207 x_fact_rec.fact_type := fnd_api.g_miss_char;
208 x_fact_rec.fact_reference := fnd_api.g_miss_char;
209 x_fact_rec.forward_buy_quantity := fnd_api.g_miss_num;
210 x_fact_rec.status_code := fnd_api.g_miss_char;
211 x_fact_rec.hierarchy_type := fnd_api.g_miss_char;
212 x_fact_rec.approval_date := fnd_api.g_miss_date;
213 x_fact_rec.recommend_total_amount := fnd_api.g_miss_num;
214 x_fact_rec.recommend_hb_amount := fnd_api.g_miss_num;
215 x_fact_rec.request_total_amount := fnd_api.g_miss_num;
216 x_fact_rec.request_hb_amount := fnd_api.g_miss_num;
217 x_fact_rec.actual_total_amount := fnd_api.g_miss_num;
218 x_fact_rec.actual_hb_amount := fnd_api.g_miss_num;
219 x_fact_rec.base_total_pct := fnd_api.g_miss_num;
220 x_fact_rec.base_hb_pct := fnd_api.g_miss_num;
221 END Init_ActMetricFact_Rec;
222
223
224 -- Start of comments
225 -- NAME
226 -- Validate_FUND_Facts
227 --
228 -- PURPOSE
229 -- Validate Activity Metric Fact for budget allocation.
230 -- For each node in the hierarchy:
231 -- Sum(child allocation amount) <= this node's allocation amount - holdback amount
232 -- since I'm traversing the hierarchy, it's not necessary to do the following check any more:
233 -- Sum(this node and its sibling's allocation amount) <= parent allocation amount - holdback amount
234
235 -- can not use ozf_fund_alloc_tree_v since the view has no data for create mode
236 --
237 -- NOTES
238 --
239 -- HISTORY
240 -- 26-Mar-2001 yzhao Created.
241 --
242 -- End of comments--
243 PROCEDURE Validate_FUND_Facts(
244 p_api_version IN NUMBER,
245 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
246 p_validation_level IN NUMBER := FND_API.G_Valid_Level_Full,
247 p_act_metric_id IN NUMBER,
248 x_return_status OUT NOCOPY VARCHAR2,
249 x_msg_count OUT NOCOPY NUMBER,
250 x_msg_data OUT NOCOPY VARCHAR2
251 )
252 IS
253 l_avail_amount NUMBER := 0;
254 l_allocation_amount NUMBER :=0;
255 l_holdback_amount NUMBER :=0;
256 l_child_sum_amount NUMBER := 0;
257 l_node_value VARCHAR2(2000) := null;
258 l_hierarchy_id NUMBER := 0;
259 l_node_id NUMBER := 0;
260 l_level_depth NUMBER := 0;
261 l_formula_id NUMBER := 0;
262 l_top_level boolean := true;
263
264 CURSOR c_fundfact_getfacts IS
265 SELECT fact.hierarchy_id, fact.node_id, fact.level_depth, fact.fact_value
266 ,formula.formula_id, formula.formula_type
267 FROM ams_act_metric_facts_all fact, ams_act_metric_formulas formula
268 WHERE fact.activity_metric_id = p_act_metric_id
269 AND fact.formula_id = formula.formula_id
270 ORDER BY fact.level_depth, fact.node_id, formula.formula_type asc;
271
272 -- get the fund's allocation amount
273 CURSOR c_fundfact_getfundamt IS
274 SELECT func_actual_value
275 FROM ams_act_metrics_all
276 WHERE activity_metric_id = p_act_metric_id;
277
278 -- get a node's node_value, parent node id
279 CURSOR c_fundfact_getnodeinfo(p_hierarchy_id NUMBER, p_node_id NUMBER) IS
280 SELECT node_value
281 FROM ams_terr_v
282 WHERE hierarchy_id = p_hierarchy_id
283 AND node_id = p_node_id;
284
285 -- get allocation amount summary of this node's children
286 CURSOR c_fundfact_getchildsum(p_hierarchy_id NUMBER, p_node_id NUMBER,
287 p_level_depth NUMBER, p_formula_id NUMBER) IS
288 SELECT NVL(SUM(fact_value), 0)
289 FROM ams_act_metric_facts_all fact
290 WHERE activity_metric_id = p_act_metric_id
291 AND hierarchy_id = p_hierarchy_id
292 AND EXISTS
293 (SELECT 1 FROM ams_act_metric_formulas formula
294 WHERE formula.formula_id = fact.formula_id
295 AND formula.formula_type = 'ALLOCATION'
296 AND formula.level_depth= p_level_depth + 1
297 AND formula.parent_formula_id = p_formula_id
298 )
299 AND EXISTS
300 (SELECT 1 FROM ams_terr_v terr
301 WHERE terr.hierarchy_id = p_hierarchy_id
302 AND terr.parent_id = p_node_id
303 AND terr.node_id = fact.node_id);
304
305 BEGIN
306 SAVEPOINT Validate_FUND_Facts;
307 IF (AMS_DEBUG_HIGH_ON) THEN
308
309 AMS_Utility_PVT.debug_message('Validate_FundFact_Fund: start');
310 END IF;
311
312 IF FND_API.To_Boolean (p_init_msg_list) THEN
313 FND_MSG_PUB.Initialize;
314 END IF;
315
316 x_return_status := FND_API.G_RET_STS_SUCCESS;
317 l_top_level := true;
318
319 FOR factrec IN c_fundfact_getfacts LOOP
320 IF factrec.formula_type = 'ALLOCATION' THEN
321 l_allocation_amount := factrec.fact_value;
322 l_hierarchy_id := factrec.hierarchy_id;
323 l_node_id := factrec.node_id;
324 l_level_depth := factrec.level_depth;
325 l_formula_id := factrec.formula_id;
326 IF l_top_level = true THEN
327 -- top level: check against root budget
328 OPEN c_fundfact_getfundamt;
329 FETCH c_fundfact_getfundamt INTO l_avail_amount;
330 CLOSE c_fundfact_getfundamt;
331 -- IF (AMS_DEBUG_HIGH_ON) THEN AMS_Utility_PVT.debug_message(' Top level budget available amount: ' || l_avail_amount); END IF;
332 IF l_allocation_amount > l_avail_amount THEN
333 -- top level allocation amount can not exceed fund's available amount
334 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
335 FND_MESSAGE.Set_Name ('AMS', 'AMS_FUND_INV_CHILD_AMT');
336 FND_MESSAGE.Set_Token('SUMAMT', l_allocation_amount);
340 END IF;
337 FND_MESSAGE.Set_Token('NODEVALUE', 'FUND');
338 FND_MESSAGE.Set_Token('PAMT', l_avail_amount);
339 FND_MSG_PUB.Add;
341 x_return_status := FND_API.G_RET_STS_ERROR;
342 RAISE FND_API.G_EXC_ERROR;
343 END IF;
344 l_top_level := false;
345 END IF; -- IF l_top_level = true
346 ELSE -- formula is 'HOLDBACK'
347 l_avail_amount := l_allocation_amount - factrec.fact_value;
348
349 -- check the node's children sum. Check here so both allocation amt and holdback amt are available
350 OPEN c_fundfact_getchildsum(l_hierarchy_id, l_node_id, l_level_depth, l_formula_id);
351 FETCH c_fundfact_getchildsum INTO l_child_sum_amount;
352 CLOSE c_fundfact_getchildsum;
353
354 IF l_child_sum_amount > l_avail_amount THEN
355 -- sum of this node's children's allocation amount can not exceed this node's available amount
356 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
357 OPEN c_fundfact_getnodeinfo(factrec.hierarchy_id, factrec.node_id);
358 FETCH c_fundfact_getnodeinfo INTO l_node_value;
359 CLOSE c_fundfact_getnodeinfo;
360 FND_MESSAGE.Set_Name ('AMS', 'AMS_FUND_INV_CHILD_AMT');
361 FND_MESSAGE.Set_Token('SUMAMT', l_child_sum_amount);
362 FND_MESSAGE.Set_Token('NODEVALUE', l_node_value);
363 FND_MESSAGE.Set_Token('PAMT', l_avail_amount);
364 FND_MSG_PUB.Add;
365 END IF;
366 x_return_status := FND_API.G_RET_STS_ERROR;
367 RAISE FND_API.G_EXC_ERROR;
368 END IF;
369 END IF;
370 END LOOP;
371
372 IF (AMS_DEBUG_HIGH_ON) THEN
373
374
375
376 AMS_Utility_PVT.debug_message('Validate_FundFact_FUND: end');
377
378 END IF;
379
380 EXCEPTION
381 WHEN FND_API.G_EXC_ERROR THEN
382 -- IF (AMS_DEBUG_HIGH_ON) THEN AMS_Utility_PVT.debug_message('Validate_FUND_Facts: ' || substr(sqlerrm, 1, 100)); END IF;
383 ROLLBACK TO Validate_FUND_Facts;
384 x_return_status := FND_API.G_RET_STS_ERROR;
385 FND_MSG_PUB.Count_And_Get (
386 p_encoded => fnd_api.g_false,
387 p_count => x_msg_count,
388 p_data => x_msg_data
389 );
390 WHEN OTHERS THEN
391 -- IF (AMS_DEBUG_HIGH_ON) THEN AMS_Utility_PVT.debug_message('Validate_FUND_Facts: ' || substr(sqlerrm, 1, 100)); END IF;
392 ROLLBACK TO Validate_FUND_Facts;
393 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
394 FND_MSG_PUB.Count_And_Get (
395 p_encoded => fnd_api.g_false,
396 p_count => x_msg_count,
397 p_data => x_msg_data
398 );
399 END Validate_FUND_Facts;
400
401
402 -- Start of comments
403 -- NAME
404 -- Create_ActMetricFact
405 --
406 --
407 -- PURPOSE
408 -- Creates a result entry for the Activity Metric.
409
410 --
411 -- NOTES
412 --
413 -- HISTORY
414 -- 18-Apr-2000 tdonohoe@us Created.
415 --
416 -- End of comments
417
418 PROCEDURE Create_ActMetricFact (
419 p_api_version IN NUMBER,
420 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
421 p_commit IN VARCHAR2 := FND_API.G_FALSE,
422 p_validation_level IN NUMBER := FND_API.G_Valid_Level_Full,
423
424 x_return_status OUT NOCOPY VARCHAR2,
425 x_msg_count OUT NOCOPY NUMBER,
426 x_msg_data OUT NOCOPY VARCHAR2,
427
428 p_act_metric_fact_rec IN act_metric_fact_rec_type,
429 x_activity_metric_fact_id OUT NOCOPY NUMBER
430 )
431 IS
432 --
433 -- Standard API information constants.
434 --
435 L_API_VERSION CONSTANT NUMBER := 1.0;
436 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE_ACTMETRICFACT';
437 L_FULL_NAME CONSTANT VARCHAR2(60) := G_PKG_NAME ||'.'|| L_API_NAME;
438
439
440 l_return_status VARCHAR2(1); -- Return value from procedures.
441 l_act_metric_fact_rec act_metric_fact_rec_type := p_act_metric_fact_rec;
442 l_act_metric_fact_count NUMBER ;
443
444 l_sql_err_msg varchar2(4000);
445
446 CURSOR c_act_metric_fact_count(l_act_metric_fact_id IN NUMBER) IS
447 SELECT count(1)
448 FROM ams_act_metric_facts_all
449 WHERE activity_metric_fact_id = l_act_metric_fact_id;
450
451 CURSOR c_act_metric_fact_id IS
452 SELECT ams_act_metric_facts_all_s.NEXTVAL
453 FROM dual;
454
455 BEGIN
456 --
457 -- Initialize savepoint.
458 --
459
460 SAVEPOINT Create_ActMetricFact_Pvt;
461
462 IF (AMS_DEBUG_HIGH_ON) THEN
463
464
465
466 AMS_Utility_PVT.Debug_Message(l_full_name||': start');
467
468 END IF;
469
470 --
474 FND_MSG_PUB.Initialize;
471 -- Initialize message list if p_init_msg_list is set to TRUE.
472 --
473 IF FND_API.To_Boolean (p_init_msg_list) THEN
475 END IF;
476
477 --
478 -- Standard check for API version compatibility.
479 --
480 IF NOT FND_API.Compatible_API_Call (L_API_VERSION,
481 p_api_version,
482 L_API_NAME,
483 G_PKG_NAME)
484 THEN
485 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
486 END IF;
487
488 --
489 -- Initialize API return status to success.
490 --
491 x_return_status := FND_API.G_RET_STS_SUCCESS;
492
493 --
494 -- Begin API Body.
495 --
496
497
498
499 Default_ActMetricFact
500 ( p_init_msg_list => p_init_msg_list,
501 p_act_metric_fact_rec => p_act_metric_fact_rec,
502 p_validation_mode => JTF_PLSQL_API.g_create,
503 x_complete_rec => l_act_metric_fact_rec,
504 x_return_status => l_return_status,
505 x_msg_count => x_msg_count,
506 x_msg_data => x_msg_data ) ;
507
508 -- If any errors happen abort API.
509 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
510 RAISE FND_API.G_EXC_ERROR;
511 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
512 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
513 END IF;
514
515
516
517
518 --
519 -- Validate the record before inserting.
520 --
521
522
523 IF l_act_metric_fact_rec.activity_metric_fact_id IS NULL THEN
524 LOOP
525 --
526 -- Set the value for the PK.
527 OPEN c_act_metric_fact_id;
528 FETCH c_act_metric_fact_id INTO l_act_metric_fact_rec.activity_metric_fact_id;
529 CLOSE c_act_metric_fact_id;
530
531 OPEN c_act_metric_fact_count(l_act_metric_fact_rec.activity_metric_fact_id);
532 FETCH c_act_metric_fact_count INTO l_act_metric_fact_count ;
533 CLOSE c_act_metric_fact_count ;
534
535 EXIT WHEN l_act_metric_fact_count = 0 ;
536 END LOOP ;
537 END IF;
538
539
540
541
542 Validate_ActMetFact (
543 p_api_version => l_api_version,
544 p_init_msg_list => p_init_msg_list,
545 p_validation_level => p_validation_level,
546 x_msg_count => x_msg_count,
547 x_msg_data => x_msg_data,
548 x_return_status => l_return_status,
549 p_act_metric_fact_rec => l_act_metric_fact_rec
550 );
551
552 -- If any errors happen abort API.
553 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
554 RAISE FND_API.G_EXC_ERROR;
555 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
556 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
557 END IF;
558
559
560
561 --
562 -- Debug message.
563 --
564 IF (AMS_DEBUG_HIGH_ON) THEN
565
566 AMS_Utility_PVT.debug_message(l_full_name ||': insert');
567 END IF;
568
569
570
571 --
572 -- Insert into the base table.
573 --
574
575
576 Insert into ams_act_metric_facts_all (
577 activity_metric_fact_id,
578 last_update_date,
579 last_updated_by,
580 creation_date,
581 created_by,
582 last_update_login,
583 object_version_number,
584 act_metric_used_by_id,
585 arc_act_metric_used_by,
586 value_type ,
587 activity_metric_id ,
588 activity_geo_area_id ,
589 activity_product_id ,
590 transaction_currency_code,
591 trans_forecasted_value ,
592 base_quantity ,
593 functional_currency_code ,
594 func_forecasted_value ,
595 org_id ,
596 de_metric_id ,
597 de_geographic_area_id ,
598 de_geographic_area_type ,
599 de_inventory_item_id ,
600 de_inventory_item_org_id ,
601 time_id1 ,
602 time_id2 ,
603 time_id3 ,
604 time_id4 ,
605 time_id5 ,
606 time_id6 ,
607 time_id7 ,
608 time_id8 ,
609 time_id9 ,
610 time_id10 ,
611 time_id11 ,
612 time_id12 ,
613 time_id13 ,
614 time_id14 ,
615 time_id15 ,
616 time_id16 ,
620 time_id20 ,
617 time_id17 ,
618 time_id18 ,
619 time_id19 ,
621 time_id21 ,
622 time_id22 ,
623 time_id23 ,
624 time_id24 ,
625 time_id25 ,
626 time_id26 ,
627 time_id27 ,
628 time_id28 ,
629 time_id29 ,
630 time_id30 ,
631 time_id31 ,
632 time_id32 ,
633 time_id33 ,
634 time_id34 ,
635 time_id35 ,
636 time_id36 ,
637 time_id37 ,
638 time_id38 ,
639 time_id39 ,
640 time_id40 ,
641 time_id41 ,
642 time_id42 ,
643 time_id43 ,
644 time_id44 ,
645 time_id45 ,
646 time_id46 ,
647 time_id47 ,
648 time_id48 ,
649 time_id49 ,
650 time_id50 ,
651 time_id51 ,
652 time_id52 ,
653 time_id53 ,
654 hierarchy_id ,
655 node_id ,
656 level_depth ,
657 formula_id ,
658 from_date ,
659 to_date ,
660 fact_value ,
661 fact_percent ,
662 root_fact_id ,
663 previous_fact_id ,
664 fact_type ,
665 fact_reference ,
666 forward_buy_quantity ,
667 /* 05/21/2002 yzhao: add 11 new columns for top-down bottom-up budgeting */
668 status_code ,
669 hierarchy_type ,
670 approval_date ,
671 recommend_total_amount ,
672 recommend_hb_amount ,
673 request_total_amount ,
674 request_hb_amount ,
675 actual_total_amount ,
676 actual_hb_amount ,
677 base_total_pct ,
678 base_hb_pct
679 /* 05/21/2002 yzhao: add ends */
680 )
681 VALUES ( l_act_metric_fact_rec.activity_metric_fact_id,
682 SYSDATE,
683 FND_GLOBAL.User_ID,
684 SYSDATE,
685 FND_GLOBAL.User_ID,
686 FND_GLOBAL.Conc_Login_ID,
687 1, --OBJECT_VERSION_NUMBER
688 l_act_metric_fact_rec.act_metric_used_by_id,
689 l_act_metric_fact_rec.arc_act_metric_used_by,
690 l_act_metric_fact_rec.value_type ,
691 l_act_metric_fact_rec.activity_metric_id ,
692 l_act_metric_fact_rec.activity_geo_area_id ,
693 l_act_metric_fact_rec.activity_product_id ,
694 l_act_metric_fact_rec.transaction_currency_code,
695 l_act_metric_fact_rec.trans_forecasted_value ,
696 l_act_metric_fact_rec.base_quantity ,
697 l_act_metric_fact_rec.functional_currency_code ,
698 l_act_metric_fact_rec.func_forecasted_value ,
699 TO_NUMBER (SUBSTRB (USERENV ('CLIENT_INFO'), 1, 10)) , -- org_id
700 l_act_metric_fact_rec.de_metric_id ,
701 l_act_metric_fact_rec.de_geographic_area_id ,
702 l_act_metric_fact_rec.de_geographic_area_type ,
703 l_act_metric_fact_rec.de_inventory_item_id ,
704 l_act_metric_fact_rec.de_inventory_item_org_id ,
705 l_act_metric_fact_rec.time_id1 ,
706 l_act_metric_fact_rec.time_id2 ,
707 l_act_metric_fact_rec.time_id3 ,
708 l_act_metric_fact_rec.time_id4 ,
709 l_act_metric_fact_rec.time_id5 ,
710 l_act_metric_fact_rec.time_id6 ,
711 l_act_metric_fact_rec.time_id7 ,
712 l_act_metric_fact_rec.time_id8 ,
713 l_act_metric_fact_rec.time_id9 ,
714 l_act_metric_fact_rec.time_id10 ,
715 l_act_metric_fact_rec.time_id11 ,
716 l_act_metric_fact_rec.time_id12 ,
717 l_act_metric_fact_rec.time_id13 ,
718 l_act_metric_fact_rec.time_id14 ,
719 l_act_metric_fact_rec.time_id15 ,
720 l_act_metric_fact_rec.time_id16 ,
724 l_act_metric_fact_rec.time_id20 ,
721 l_act_metric_fact_rec.time_id17 ,
722 l_act_metric_fact_rec.time_id18 ,
723 l_act_metric_fact_rec.time_id19 ,
725 l_act_metric_fact_rec.time_id21 ,
726 l_act_metric_fact_rec.time_id22 ,
727 l_act_metric_fact_rec.time_id23 ,
728 l_act_metric_fact_rec.time_id24 ,
729 l_act_metric_fact_rec.time_id25 ,
730 l_act_metric_fact_rec.time_id26 ,
731 l_act_metric_fact_rec.time_id27 ,
732 l_act_metric_fact_rec.time_id28 ,
733 l_act_metric_fact_rec.time_id29 ,
734 l_act_metric_fact_rec.time_id30 ,
735 l_act_metric_fact_rec.time_id31 ,
736 l_act_metric_fact_rec.time_id32 ,
737 l_act_metric_fact_rec.time_id33 ,
738 l_act_metric_fact_rec.time_id34 ,
739 l_act_metric_fact_rec.time_id35 ,
740 l_act_metric_fact_rec.time_id36 ,
741 l_act_metric_fact_rec.time_id37 ,
742 l_act_metric_fact_rec.time_id38 ,
743 l_act_metric_fact_rec.time_id39 ,
744 l_act_metric_fact_rec.time_id40 ,
745 l_act_metric_fact_rec.time_id41 ,
746 l_act_metric_fact_rec.time_id42 ,
747 l_act_metric_fact_rec.time_id43 ,
748 l_act_metric_fact_rec.time_id44 ,
749 l_act_metric_fact_rec.time_id45 ,
750 l_act_metric_fact_rec.time_id46 ,
751 l_act_metric_fact_rec.time_id47 ,
752 l_act_metric_fact_rec.time_id48 ,
753 l_act_metric_fact_rec.time_id49 ,
754 l_act_metric_fact_rec.time_id50 ,
755 l_act_metric_fact_rec.time_id51 ,
756 l_act_metric_fact_rec.time_id52 ,
757 l_act_metric_fact_rec.time_id53 ,
758 l_act_metric_fact_rec.hierarchy_id ,
759 l_act_metric_fact_rec.node_id ,
760 l_act_metric_fact_rec.level_depth ,
761 l_act_metric_fact_rec.formula_id ,
762 l_act_metric_fact_rec.from_date ,
763 l_act_metric_fact_rec.to_date ,
764 l_act_metric_fact_rec.fact_value ,
765 l_act_metric_fact_rec.fact_percent ,
766 l_act_metric_fact_rec.root_fact_id ,
767 l_act_metric_fact_rec.previous_fact_id ,
768 l_act_metric_fact_rec.fact_type ,
769 l_act_metric_fact_rec.fact_reference ,
770 l_act_metric_fact_rec.forward_buy_quantity ,
771 /* 05/21/2002 yzhao: add 11 new columns for top-down bottom-up budgeting */
772 l_act_metric_fact_rec.status_code ,
773 l_act_metric_fact_rec.hierarchy_type ,
774 l_act_metric_fact_rec.approval_date ,
775 l_act_metric_fact_rec.recommend_total_amount ,
776 l_act_metric_fact_rec.recommend_hb_amount ,
777 l_act_metric_fact_rec.request_total_amount ,
778 l_act_metric_fact_rec.request_hb_amount ,
779 l_act_metric_fact_rec.actual_total_amount ,
780 l_act_metric_fact_rec.actual_hb_amount ,
781 l_act_metric_fact_rec.base_total_pct ,
782 l_act_metric_fact_rec.base_hb_pct
783 /* 05/21/2002 yzhao: add ends */
784 );
785
786 -- If any errors happen abort API.
787 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
788 RAISE FND_API.G_EXC_ERROR;
789 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
790 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
791 END IF;
792
793
794
795
796 -- finish
797
798 --
799 -- Set OUT NOCOPY value.
800 --
801 x_activity_metric_fact_id := l_act_metric_fact_rec.activity_metric_fact_id;
802
803 --
804 -- End API Body.
805 --
806
807 --
808 -- Standard check for commit request.
809 --
810 IF FND_API.To_Boolean (p_commit) THEN
811 COMMIT WORK;
812 END IF;
813
814 --
815 -- Standard API to get message count, and if 1,
816 -- set the message data OUT NOCOPY variable.
817 --
818 FND_MSG_PUB.Count_And_Get (
819 p_count => x_msg_count,
820 p_data => x_msg_data,
821 p_encoded => FND_API.G_FALSE
822 );
823
824 --
825 -- Add success message to message list.
826 --
827 IF (AMS_DEBUG_HIGH_ON) THEN
828
829 AMS_Utility_PVT.debug_message(l_full_name ||': end Success');
830 END IF;
831
832
833
834
838
835 EXCEPTION
836 WHEN FND_API.G_EXC_ERROR THEN
837
839 ROLLBACK TO Create_ActMetricFact_Pvt;
840 x_return_status := FND_API.G_RET_STS_ERROR;
841 FND_MSG_PUB.Count_And_Get (
842 p_count => x_msg_count,
843 p_data => x_msg_data
844 );
845 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
846
847
848
849 ROLLBACK TO Create_ActMetricFact_Pvt;
850 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
851 FND_MSG_PUB.Count_And_Get (
852 p_count => x_msg_count,
853 p_data => x_msg_data
854 );
855 WHEN OTHERS THEN
856
857
858 ROLLBACK TO Create_ActMetricFact_Pvt;
859 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
860 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
861 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, L_API_NAME);
862 END IF;
863 FND_MSG_PUB.Count_And_Get (
864 p_count => x_msg_count,
865 p_data => x_msg_data
866 );
867 END Create_ActMetricFact;
868
869
870 -- Start of comments
871 -- NAME
872 -- Update_ActMetricFact
873 --
874 -- PURPOSE
875 -- Updates an entry in the AMS_ACT_METRIC_FACTS_ALL table for
876 -- a given activity_metric record.
877 --
878 -- NOTES
879 --
880 -- HISTORY
881 -- 18-Apr-2000 tdonohoe Created.
882 --
883 -- End of comments
884
885 PROCEDURE Update_ActMetricFact (
886 p_api_version IN NUMBER,
887 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
888 p_commit IN VARCHAR2 := FND_API.G_FALSE,
889 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
890
891 x_return_status OUT NOCOPY VARCHAR2,
892 x_msg_count OUT NOCOPY NUMBER,
893 x_msg_data OUT NOCOPY VARCHAR2,
894
895 p_act_metric_fact_rec IN act_metric_fact_rec_type
896 )
897 IS
898 L_API_VERSION CONSTANT NUMBER := 1.0;
899 L_API_NAME CONSTANT VARCHAR2(30) := 'UPDATE_ACTMETRICFACT';
900 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
901
902
903 l_return_status VARCHAR2(1);
904 l_act_metric_fact_rec act_metric_fact_rec_type := p_act_metric_fact_rec;
905 l_temp_act_metric_fact_rec act_metric_fact_rec_type ;
906 BEGIN
907
908 --
909 -- Initialize savepoint.
910 --
911 SAVEPOINT Update_ActMetricFact_Pvt;
912
913 --
914 -- Output debug message.
915 --
916 IF (AMS_DEBUG_HIGH_ON) THEN
917
918 AMS_Utility_PVT.debug_message(l_full_name||': start');
919 END IF;
920
921 --
922 -- Initialize message list if p_init_msg_list is set to TRUE.
923 --
924 IF FND_API.To_Boolean (p_init_msg_list) THEN
925 FND_MSG_PUB.Initialize;
926 END IF;
927
928 --
929 -- Standard check for API version compatibility.
930 --
931 IF NOT FND_API.Compatible_API_Call (L_API_VERSION,
932 p_api_version,
933 L_API_NAME,
934 G_PKG_NAME)
935 THEN
936 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
937 END IF;
938
939 --
940 -- Initialize API return status to success.
941 --
942 x_return_status := FND_API.G_RET_STS_SUCCESS;
943
944 --
945 -- Begin API Body
946 --
947 -- Debug Message
948
949
950 Default_ActMetricFact
951 ( p_init_msg_list => p_init_msg_list,
952 p_act_metric_fact_rec => p_act_metric_fact_rec,
953 p_validation_mode => JTF_PLSQL_API.G_UPDATE,
954 x_complete_rec => l_act_metric_fact_rec,
955 x_return_status => l_return_status,
956 x_msg_count => x_msg_count,
957 x_msg_data => x_msg_data ) ;
958 -- dbms_output.put_line(l_full_name || ' default_actmetricfact returns ' || l_return_status);
959 -- If any errors happen abort API.
960 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
961 RAISE FND_API.G_EXC_ERROR;
962 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
963 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
964 END IF;
965
966
967 IF (AMS_DEBUG_HIGH_ON) THEN
968
969
970
971
972
973 AMS_Utility_PVT.debug_message(l_full_name ||': validate');
974
975
976 END IF;
977
978 -- yzhao: 06/11/2002 complete record before validation so missed values can be filled in
979 -- replace g_miss_char/num/date with current column values
980
981 -- mgudivak: November Fifteenth.
982 -- Added NOCOPY for the out variable. Hence in and out cannot have the same name.
983
984 l_temp_act_metric_fact_rec := l_act_metric_fact_rec;
985
986 Complete_ActMetFact_Rec(p_act_metric_fact_rec => l_temp_act_metric_fact_rec,
987 x_complete_fact_rec => l_act_metric_fact_rec);
988
989
993 p_validation_mode => JTF_PLSQL_API.g_update,
990 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
991 Validate_ActMetFact_Items(
992 p_act_metric_fact_rec => l_act_metric_fact_rec,
994 x_return_status => l_return_status
995 );
996 -- dbms_output.put_line(l_full_name || ' validate_items returns ' || l_return_status);
997 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
998 RAISE FND_API.g_exc_unexpected_error;
999 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1000 RAISE FND_API.g_exc_error;
1001 END IF;
1002 END IF;
1003
1004
1005 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
1006 Validate_ActMetFact_Rec(
1007 p_act_metric_fact_rec => p_act_metric_fact_rec,
1008 p_complete_fact_rec => l_act_metric_fact_rec,
1009 x_return_status => l_return_status
1010 );
1011 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1012 RAISE FND_API.g_exc_unexpected_error;
1013 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1014 RAISE FND_API.g_exc_error;
1015 END IF;
1016
1017 END IF;
1018
1019
1020 IF (AMS_DEBUG_HIGH_ON) THEN
1021
1022
1023
1024
1025
1026 AMS_Utility_PVT.debug_message(l_full_name ||': Update Activity Metric Facts Table');
1027
1028
1029 END IF;
1030
1031
1032
1033 Update ams_act_metric_facts_all Set
1034 object_version_number = object_version_number + 1,
1035 last_update_date = SYSDATE,
1036 last_updated_by = NVL(fnd_global.user_id, -1),
1037 last_update_login = NVL(fnd_global.conc_login_id, -1),
1038 act_metric_used_by_id = l_act_metric_fact_rec.act_metric_used_by_id,
1039 arc_act_metric_used_by = l_act_metric_fact_rec.arc_act_metric_used_by,
1040 value_type = l_act_metric_fact_rec.value_type,
1041 activity_metric_id = l_act_metric_fact_rec.activity_metric_id,
1042 activity_geo_area_id = l_act_metric_fact_rec.activity_geo_area_id,
1043 activity_product_id = l_act_metric_fact_rec.activity_product_id,
1044 transaction_currency_code = l_act_metric_fact_rec.transaction_currency_code,
1045 trans_forecasted_value = l_act_metric_fact_rec.trans_forecasted_value,
1046 base_quantity = l_act_metric_fact_rec.base_quantity,
1047 functional_currency_code = l_act_metric_fact_rec.functional_currency_code,
1048 func_forecasted_value = l_act_metric_fact_rec.func_forecasted_value,
1049 org_id = l_act_metric_fact_rec.org_id,
1050 de_metric_id = l_act_metric_fact_rec.de_metric_id,
1051 de_geographic_area_id = l_act_metric_fact_rec.de_geographic_area_id,
1052 de_geographic_area_type = l_act_metric_fact_rec.de_geographic_area_type,
1053 de_inventory_item_id = l_act_metric_fact_rec.de_inventory_item_id,
1054 de_inventory_item_org_id = l_act_metric_fact_rec.de_inventory_item_org_id,
1055 time_id1 = l_act_metric_fact_rec.time_id1,
1056 time_id2 = l_act_metric_fact_rec.time_id2,
1057 time_id3 = l_act_metric_fact_rec.time_id3,
1058 time_id4 = l_act_metric_fact_rec.time_id4,
1059 time_id5 = l_act_metric_fact_rec.time_id5,
1060 time_id6 = l_act_metric_fact_rec.time_id6,
1061 time_id7 = l_act_metric_fact_rec.time_id7,
1062 time_id8 = l_act_metric_fact_rec.time_id8,
1063 time_id9 = l_act_metric_fact_rec.time_id9,
1064 time_id10 = l_act_metric_fact_rec.time_id10,
1065 time_id11 = l_act_metric_fact_rec.time_id11,
1066 time_id12 = l_act_metric_fact_rec.time_id12,
1067 time_id13 = l_act_metric_fact_rec.time_id13,
1068 time_id14 = l_act_metric_fact_rec.time_id14,
1069 time_id15 = l_act_metric_fact_rec.time_id15,
1070 time_id16 = l_act_metric_fact_rec.time_id16,
1071 time_id17 = l_act_metric_fact_rec.time_id17,
1072 time_id18 = l_act_metric_fact_rec.time_id18,
1073 time_id19 = l_act_metric_fact_rec.time_id19,
1074 time_id20 = l_act_metric_fact_rec.time_id20,
1075 time_id21 = l_act_metric_fact_rec.time_id21,
1076 time_id22 = l_act_metric_fact_rec.time_id22,
1077 time_id23 = l_act_metric_fact_rec.time_id23,
1078 time_id24 = l_act_metric_fact_rec.time_id24,
1079 time_id25 = l_act_metric_fact_rec.time_id25,
1080 time_id26 = l_act_metric_fact_rec.time_id26,
1081 time_id27 = l_act_metric_fact_rec.time_id27,
1082 time_id28 = l_act_metric_fact_rec.time_id28,
1086 time_id32 = l_act_metric_fact_rec.time_id32,
1083 time_id29 = l_act_metric_fact_rec.time_id29,
1084 time_id30 = l_act_metric_fact_rec.time_id30,
1085 time_id31 = l_act_metric_fact_rec.time_id31,
1087 time_id33 = l_act_metric_fact_rec.time_id33,
1088 time_id34 = l_act_metric_fact_rec.time_id34,
1089 time_id35 = l_act_metric_fact_rec.time_id35,
1090 time_id36 = l_act_metric_fact_rec.time_id36,
1091 time_id37 = l_act_metric_fact_rec.time_id37,
1092 time_id38 = l_act_metric_fact_rec.time_id38,
1093 time_id39 = l_act_metric_fact_rec.time_id39,
1094 time_id40 = l_act_metric_fact_rec.time_id40,
1095 time_id41 = l_act_metric_fact_rec.time_id41,
1096 time_id42 = l_act_metric_fact_rec.time_id42,
1097 time_id43 = l_act_metric_fact_rec.time_id43,
1098 time_id44 = l_act_metric_fact_rec.time_id44,
1099 time_id45 = l_act_metric_fact_rec.time_id45,
1100 time_id46 = l_act_metric_fact_rec.time_id46,
1101 time_id47 = l_act_metric_fact_rec.time_id47,
1102 time_id48 = l_act_metric_fact_rec.time_id48,
1103 time_id49 = l_act_metric_fact_rec.time_id49,
1104 time_id50 = l_act_metric_fact_rec.time_id50,
1105 time_id51 = l_act_metric_fact_rec.time_id51,
1106 time_id52 = l_act_metric_fact_rec.time_id52,
1107 time_id53 = l_act_metric_fact_rec.time_id53,
1108 hierarchy_id = l_act_metric_fact_rec.hierarchy_id,
1109 node_id = l_act_metric_fact_rec.node_id,
1110 level_depth = l_act_metric_fact_rec.level_depth,
1111 formula_id = l_act_metric_fact_rec.formula_id,
1112 from_date = l_act_metric_fact_rec.from_date,
1113 to_date = l_act_metric_fact_rec.to_date,
1114 fact_value = l_act_metric_fact_rec.fact_value,
1115 fact_percent = l_act_metric_fact_rec.fact_percent,
1116 root_fact_id = l_act_metric_fact_rec.root_fact_id,
1117 previous_fact_id = l_act_metric_fact_rec.previous_fact_id,
1118 fact_type = l_act_metric_fact_rec.fact_type,
1119 fact_reference = l_act_metric_fact_rec.fact_reference,
1120 forward_buy_quantity = l_act_metric_fact_rec.forward_buy_quantity,
1121 /* 05/21/2002 yzhao: add 11 new columns for top-down bottom-up budgeting */
1122 status_code = l_act_metric_fact_rec.status_code,
1123 hierarchy_type = l_act_metric_fact_rec.hierarchy_type,
1124 approval_date = l_act_metric_fact_rec.approval_date,
1125 recommend_total_amount = l_act_metric_fact_rec.recommend_total_amount,
1126 recommend_hb_amount = l_act_metric_fact_rec.recommend_hb_amount,
1127 request_total_amount = l_act_metric_fact_rec.request_total_amount,
1128 request_hb_amount = l_act_metric_fact_rec.request_hb_amount,
1129 actual_total_amount = l_act_metric_fact_rec.actual_total_amount,
1130 actual_hb_amount = l_act_metric_fact_rec.actual_hb_amount,
1131 base_total_pct = l_act_metric_fact_rec.base_total_pct,
1132 base_hb_pct = l_act_metric_fact_rec.base_hb_pct
1133 /* 05/21/2002 yzhao: add ends */
1134 Where activity_metric_fact_id = l_act_metric_fact_rec.activity_metric_fact_id;
1135
1136 IF (SQL%NOTFOUND)
1137 THEN
1138 --
1139 -- Add error message to API message list.
1140 --
1141 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1142 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1143 FND_MSG_PUB.add;
1144 END IF;
1145 RAISE FND_API.g_exc_error;
1146 END IF;
1147
1148
1149 --
1150 -- End API Body
1151 --
1152
1153 IF FND_API.to_boolean(p_commit) THEN
1154 COMMIT;
1155 END IF;
1156
1157 --
1158 -- Standard API to get message count, and if 1,
1159 -- set the message data OUT NOCOPY variable.
1160 --
1161 FND_MSG_PUB.Count_And_Get (
1162 p_count => x_msg_count,
1163 p_data => x_msg_data,
1164 p_encoded => FND_API.G_FALSE
1165 );
1166
1167 --
1168 -- Debug message.
1169 --
1170 IF (AMS_DEBUG_HIGH_ON) THEN
1171
1172 AMS_Utility_PVT.debug_message(l_full_name ||': end');
1173 END IF;
1174
1175
1176 EXCEPTION
1177 WHEN FND_API.G_EXC_ERROR THEN
1178
1179
1180
1181 ROLLBACK TO Update_ActMetricFact_pvt;
1182 x_return_status := FND_API.G_RET_STS_ERROR;
1186 );
1183 FND_MSG_PUB.Count_And_Get (
1184 p_count => x_msg_count,
1185 p_data => x_msg_data
1187 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1188
1189
1190
1191 ROLLBACK TO Update_ActMetricFact_pvt;
1192 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1193 FND_MSG_PUB.Count_And_Get (
1194 p_count => x_msg_count,
1195 p_data => x_msg_data
1196 );
1197 WHEN OTHERS THEN
1198
1199
1200
1201 ROLLBACK TO Update_ActMetricFact_pvt;
1202 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1203 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1204 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, L_API_NAME);
1205 END IF;
1206 FND_MSG_PUB.Count_And_Get (
1207 p_count => x_msg_count,
1208 p_data => x_msg_data
1209 );
1210 END Update_ActMetricFact;
1211
1212
1213 -- Start of comments
1214 -- NAME
1215 -- Lock_ActMetricFact
1216 --
1217 -- PURPOSE
1218 -- Lock the given row in AMS_ACT_METRIC_FACTS table.
1219 --
1220 -- NOTES
1221 --
1222 -- HISTORY
1223 -- 19-Apr-2000 tdonohoe Created.
1224 --
1225 -- End of comments
1226
1227 PROCEDURE Lock_ActMetricFact (
1228 p_api_version IN NUMBER,
1229 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1230
1231 x_return_status OUT NOCOPY VARCHAR2,
1232 x_msg_count OUT NOCOPY NUMBER,
1233 x_msg_data OUT NOCOPY VARCHAR2,
1234
1235 p_activity_metric_fact_id IN NUMBER,
1236 p_object_version_number IN NUMBER
1237 )
1238 IS
1239 L_API_VERSION CONSTANT NUMBER := 1.0;
1240 L_API_NAME CONSTANT VARCHAR2(30) := 'LOCK_ACTMETRICFACT';
1241 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1242
1243 l_activity_metric_fact_id NUMBER;
1244
1245 CURSOR c_act_metric_fact_info IS
1246 SELECT activity_metric_fact_id
1247 FROM ams_act_metric_facts_all
1248 WHERE activity_metric_fact_id = p_activity_metric_fact_id
1249 AND object_version_number = p_object_version_number
1250 FOR UPDATE OF activity_metric_fact_id NOWAIT;
1251
1252 BEGIN
1253 --
1254 -- Output debug message.
1255 --
1256 IF (AMS_DEBUG_HIGH_ON) THEN
1257
1258 AMS_Utility_PVT.debug_message(l_full_name||': start');
1259 END IF;
1260
1261 --
1262 -- Initialize message list if p_init_msg_list is set to TRUE.
1263 --
1264 IF FND_API.To_Boolean (p_init_msg_list) THEN
1265 FND_MSG_PUB.Initialize;
1266 END IF;
1267
1268 --
1269 -- Standard check for API version compatibility.
1270 --
1271 IF NOT FND_API.Compatible_API_Call (L_API_VERSION,
1272 p_api_version,
1273 L_API_NAME,
1274 G_PKG_NAME)
1275 THEN
1276 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1277 END IF;
1278
1279 --
1280 -- Initialize API return status to success.
1281 --
1282 x_return_status := FND_API.G_RET_STS_SUCCESS;
1283
1284 --
1285 -- Begin API Body
1286 --
1287 IF (AMS_DEBUG_HIGH_ON) THEN
1288
1289 AMS_Utility_PVT.debug_message(l_full_name||': lock');
1290 END IF;
1291
1292 OPEN c_act_metric_fact_info;
1293 FETCH c_act_metric_fact_info INTO l_activity_metric_fact_id;
1294 IF (c_act_metric_fact_info%NOTFOUND)
1295 THEN
1296 CLOSE c_act_metric_fact_info;
1297 -- Error, check the msg level and added an error message to the
1298 -- API message list
1299 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1300 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1301 FND_MSG_PUB.add;
1302 END IF;
1303 RAISE FND_API.g_exc_error;
1304 END IF;
1305 CLOSE c_act_metric_fact_info;
1306
1307
1308 --
1309 -- Standard API to get message count, and if 1,
1310 -- set the message data OUT NOCOPY variable.
1311 --
1312 FND_MSG_PUB.Count_And_Get (
1313 p_count => x_msg_count,
1314 p_data => x_msg_data,
1315 p_encoded => FND_API.G_FALSE
1316 );
1317
1318 --
1319 -- Debug message.
1320 --
1321 IF (AMS_DEBUG_HIGH_ON) THEN
1322
1323 AMS_Utility_PVT.debug_message(l_full_name ||': end');
1324 END IF;
1325
1326
1327 EXCEPTION
1328 WHEN FND_API.G_EXC_ERROR THEN
1329 x_return_status := FND_API.G_RET_STS_ERROR;
1330 FND_MSG_PUB.Count_And_Get (
1331 p_count => x_msg_count,
1332 p_data => x_msg_data
1333 );
1334 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1335 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1336 FND_MSG_PUB.Count_And_Get (
1337 p_count => x_msg_count,
1338 p_data => x_msg_data
1339 );
1340 WHEN AMS_Utility_PVT.RESOURCE_LOCKED THEN
1341 x_return_status := FND_API.G_RET_STS_ERROR ;
1342
1343 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1347
1344 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
1345 FND_MSG_PUB.add;
1346 END IF;
1348 FND_MSG_PUB.Count_And_Get (
1349 p_count => x_msg_count,
1350 p_data => x_msg_data,
1351 p_encoded => FND_API.G_FALSE
1352 );
1353 WHEN OTHERS THEN
1354 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1355 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1356 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, L_API_NAME);
1357 END IF;
1358 FND_MSG_PUB.Count_And_Get (
1359 p_count => x_msg_count,
1360 p_data => x_msg_data,
1361 p_encoded => FND_API.G_FALSE
1362 );
1363 END Lock_ActMetricFact;
1364
1365
1366 --
1367 -- NAME
1368 -- Complete_MetricFact_Rec
1369 --
1370 -- PURPOSE
1371 -- Returns the Initialized Activity Metric Fact Record
1372 --
1373 -- NOTES
1374 --
1375 -- HISTORY
1376 -- 21-Apr-2000 tdonohoe Created.
1377 --
1378 PROCEDURE Complete_ActMetFact_Rec(
1379 p_act_metric_fact_rec IN act_metric_fact_rec_type,
1380 x_complete_fact_rec OUT NOCOPY act_metric_fact_rec_type
1381 )
1382 IS
1383 CURSOR c_act_metric_fact IS
1384 SELECT *
1385 FROM ams_act_metric_facts_all
1386 WHERE activity_metric_fact_id = p_act_metric_fact_rec.activity_metric_fact_id;
1387
1388 l_act_metric_fact_rec c_act_metric_fact%ROWTYPE;
1389 BEGIN
1390
1391 x_complete_fact_rec := p_act_metric_fact_rec;
1392
1393 OPEN c_act_metric_fact;
1394 FETCH c_act_metric_fact INTO l_act_metric_fact_rec;
1395 IF c_act_metric_fact%NOTFOUND THEN
1396 CLOSE c_act_metric_fact;
1397 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1398 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1399 FND_MSG_PUB.add;
1400 END IF;
1401 RAISE FND_API.g_exc_error;
1402 END IF;
1403 CLOSE c_act_metric_fact;
1404
1405
1406 IF p_act_metric_fact_rec.activity_metric_fact_id = FND_API.G_MISS_NUM THEN
1407 x_complete_fact_rec.activity_metric_fact_id := l_act_metric_fact_rec.activity_metric_fact_id;
1408 END IF;
1409
1410 IF p_act_metric_fact_rec.act_metric_used_by_id = FND_API.G_MISS_NUM THEN
1411 x_complete_fact_rec.act_metric_used_by_id := l_act_metric_fact_rec.act_metric_used_by_id;
1412 END IF;
1413
1414 IF p_act_metric_fact_rec.arc_act_metric_used_by = FND_API.G_MISS_CHAR THEN
1415 x_complete_fact_rec.arc_act_metric_used_by := l_act_metric_fact_rec.arc_act_metric_used_by;
1416 END IF;
1417
1418 IF p_act_metric_fact_rec.value_type = FND_API.G_MISS_CHAR THEN
1419 x_complete_fact_rec.value_type := l_act_metric_fact_rec.value_type;
1420 END IF;
1421
1422 IF p_act_metric_fact_rec.activity_metric_id = FND_API.G_MISS_NUM THEN
1423 x_complete_fact_rec.activity_metric_id := l_act_metric_fact_rec.activity_metric_id;
1424 END IF;
1425
1426 IF p_act_metric_fact_rec.activity_geo_area_id = FND_API.G_MISS_NUM THEN
1427 x_complete_fact_rec.activity_geo_area_id := l_act_metric_fact_rec.activity_geo_area_id;
1428 END IF;
1429
1430 IF p_act_metric_fact_rec.activity_product_id = FND_API.G_MISS_NUM THEN
1431 x_complete_fact_rec.activity_product_id := l_act_metric_fact_rec.activity_product_id;
1432 END IF;
1433
1434 IF p_act_metric_fact_rec.transaction_currency_code = FND_API.G_MISS_CHAR THEN
1435 x_complete_fact_rec.transaction_currency_code := l_act_metric_fact_rec.transaction_currency_code;
1436 END IF;
1437
1438 IF p_act_metric_fact_rec.trans_forecasted_value = FND_API.G_MISS_NUM THEN
1439 x_complete_fact_rec.trans_forecasted_value := l_act_metric_fact_rec.trans_forecasted_value;
1440 END IF;
1441
1442 IF p_act_metric_fact_rec.base_quantity = FND_API.G_MISS_NUM THEN
1443 x_complete_fact_rec.base_quantity := l_act_metric_fact_rec.base_quantity;
1444 END IF;
1445
1446 IF p_act_metric_fact_rec.functional_currency_code = FND_API.G_MISS_CHAR THEN
1447 x_complete_fact_rec.functional_currency_code := l_act_metric_fact_rec.functional_currency_code;
1448 END IF;
1449
1450 IF p_act_metric_fact_rec.func_forecasted_value = FND_API.G_MISS_NUM THEN
1451 x_complete_fact_rec.func_forecasted_value := l_act_metric_fact_rec.func_forecasted_value;
1452 END IF;
1453
1454 IF p_act_metric_fact_rec.org_id = FND_API.G_MISS_NUM THEN
1455 x_complete_fact_rec.org_id := l_act_metric_fact_rec.org_id;
1456 END IF;
1457
1458 IF p_act_metric_fact_rec.de_metric_id = FND_API.G_MISS_NUM THEN
1459 x_complete_fact_rec.de_metric_id := l_act_metric_fact_rec.de_metric_id;
1460 END IF;
1461
1462 IF p_act_metric_fact_rec.de_geographic_area_id = FND_API.G_MISS_NUM THEN
1463 x_complete_fact_rec.de_geographic_area_id := l_act_metric_fact_rec.de_geographic_area_id;
1464 END IF;
1465
1466 IF p_act_metric_fact_rec.de_geographic_area_type = FND_API.G_MISS_CHAR THEN
1467 x_complete_fact_rec.de_geographic_area_type := l_act_metric_fact_rec.de_geographic_area_type;
1468 END IF;
1469
1470 IF p_act_metric_fact_rec.de_inventory_item_id = FND_API.G_MISS_NUM THEN
1471 x_complete_fact_rec.de_inventory_item_id := l_act_metric_fact_rec.de_inventory_item_id;
1472 END IF;
1473
1474 IF p_act_metric_fact_rec.de_inventory_item_org_id = FND_API.G_MISS_NUM THEN
1478 IF p_act_metric_fact_rec.time_id1 = FND_API.G_MISS_NUM THEN
1475 x_complete_fact_rec.de_inventory_item_org_id := l_act_metric_fact_rec.de_inventory_item_org_id;
1476 END IF;
1477
1479 x_complete_fact_rec.time_id1 := l_act_metric_fact_rec.time_id1;
1480 END IF;
1481
1482 IF p_act_metric_fact_rec.time_id2 = FND_API.G_MISS_NUM THEN
1483 x_complete_fact_rec.time_id2 := l_act_metric_fact_rec.time_id2;
1484 END IF;
1485
1486 IF p_act_metric_fact_rec.time_id3 = FND_API.G_MISS_NUM THEN
1487 x_complete_fact_rec.time_id3 := l_act_metric_fact_rec.time_id3;
1488 END IF;
1489
1490
1491 IF p_act_metric_fact_rec.time_id4 = FND_API.G_MISS_NUM THEN
1492 x_complete_fact_rec.time_id4 := l_act_metric_fact_rec.time_id4;
1493 END IF;
1494
1495 IF p_act_metric_fact_rec.time_id5 = FND_API.G_MISS_NUM THEN
1496 x_complete_fact_rec.time_id5 := l_act_metric_fact_rec.time_id5;
1497 END IF;
1498
1499 IF p_act_metric_fact_rec.time_id6 = FND_API.G_MISS_NUM THEN
1500 x_complete_fact_rec.time_id6 := l_act_metric_fact_rec.time_id6;
1501 END IF;
1502
1503 IF p_act_metric_fact_rec.time_id7 = FND_API.G_MISS_NUM THEN
1504 x_complete_fact_rec.time_id7 := l_act_metric_fact_rec.time_id7;
1505 END IF;
1506
1507 IF p_act_metric_fact_rec.time_id8 = FND_API.G_MISS_NUM THEN
1508 x_complete_fact_rec.time_id8 := l_act_metric_fact_rec.time_id8;
1509 END IF;
1510
1511 IF p_act_metric_fact_rec.time_id9 = FND_API.G_MISS_NUM THEN
1512 x_complete_fact_rec.time_id9 := l_act_metric_fact_rec.time_id9;
1513 END IF;
1514
1515 IF p_act_metric_fact_rec.time_id10 = FND_API.G_MISS_NUM THEN
1516 x_complete_fact_rec.time_id10 := l_act_metric_fact_rec.time_id10;
1517 END IF;
1518
1519 IF p_act_metric_fact_rec.time_id11 = FND_API.G_MISS_NUM THEN
1520 x_complete_fact_rec.time_id11 := l_act_metric_fact_rec.time_id11;
1521 END IF;
1522
1523 IF p_act_metric_fact_rec.time_id12 = FND_API.G_MISS_NUM THEN
1524 x_complete_fact_rec.time_id12 := l_act_metric_fact_rec.time_id12;
1525 END IF;
1526
1527 IF p_act_metric_fact_rec.time_id13 = FND_API.G_MISS_NUM THEN
1528 x_complete_fact_rec.time_id13 := l_act_metric_fact_rec.time_id13;
1529 END IF;
1530
1531 IF p_act_metric_fact_rec.time_id14 = FND_API.G_MISS_NUM THEN
1532 x_complete_fact_rec.time_id14 := l_act_metric_fact_rec.time_id14;
1533 END IF;
1534
1535 IF p_act_metric_fact_rec.time_id15 = FND_API.G_MISS_NUM THEN
1536 x_complete_fact_rec.time_id15 := l_act_metric_fact_rec.time_id15;
1537 END IF;
1538
1539 IF p_act_metric_fact_rec.time_id16 = FND_API.G_MISS_NUM THEN
1540 x_complete_fact_rec.time_id16 := l_act_metric_fact_rec.time_id16;
1541 END IF;
1542
1543 IF p_act_metric_fact_rec.time_id17 = FND_API.G_MISS_NUM THEN
1544 x_complete_fact_rec.time_id17 := l_act_metric_fact_rec.time_id17;
1545 END IF;
1546
1547 IF p_act_metric_fact_rec.time_id18 = FND_API.G_MISS_NUM THEN
1548 x_complete_fact_rec.time_id18 := l_act_metric_fact_rec.time_id18;
1549 END IF;
1550
1551 IF p_act_metric_fact_rec.time_id19 = FND_API.G_MISS_NUM THEN
1552 x_complete_fact_rec.time_id19 := l_act_metric_fact_rec.time_id19;
1553 END IF;
1554
1555 IF p_act_metric_fact_rec.time_id20 = FND_API.G_MISS_NUM THEN
1556 x_complete_fact_rec.time_id20 := l_act_metric_fact_rec.time_id20;
1557 END IF;
1558
1559 IF p_act_metric_fact_rec.time_id21 = FND_API.G_MISS_NUM THEN
1560 x_complete_fact_rec.time_id21 := l_act_metric_fact_rec.time_id21;
1561 END IF;
1562
1563 IF p_act_metric_fact_rec.time_id22 = FND_API.G_MISS_NUM THEN
1564 x_complete_fact_rec.time_id22 := l_act_metric_fact_rec.time_id22;
1565 END IF;
1566
1567 IF p_act_metric_fact_rec.time_id23 = FND_API.G_MISS_NUM THEN
1568 x_complete_fact_rec.time_id23 := l_act_metric_fact_rec.time_id23;
1569 END IF;
1570
1571 IF p_act_metric_fact_rec.time_id24 = FND_API.G_MISS_NUM THEN
1572 x_complete_fact_rec.time_id24 := l_act_metric_fact_rec.time_id24;
1573 END IF;
1574
1575 IF p_act_metric_fact_rec.time_id25 = FND_API.G_MISS_NUM THEN
1576 x_complete_fact_rec.time_id25 := l_act_metric_fact_rec.time_id25;
1577 END IF;
1578
1579 IF p_act_metric_fact_rec.time_id26 = FND_API.G_MISS_NUM THEN
1580 x_complete_fact_rec.time_id26 := l_act_metric_fact_rec.time_id26;
1581 END IF;
1582
1583 IF p_act_metric_fact_rec.time_id27 = FND_API.G_MISS_NUM THEN
1584 x_complete_fact_rec.time_id27 := l_act_metric_fact_rec.time_id27;
1585 END IF;
1586
1587 IF p_act_metric_fact_rec.time_id28 = FND_API.G_MISS_NUM THEN
1588 x_complete_fact_rec.time_id28 := l_act_metric_fact_rec.time_id28;
1589 END IF;
1590
1591 IF p_act_metric_fact_rec.time_id29 = FND_API.G_MISS_NUM THEN
1592 x_complete_fact_rec.time_id29 := l_act_metric_fact_rec.time_id29;
1593 END IF;
1594
1595 IF p_act_metric_fact_rec.time_id30 = FND_API.G_MISS_NUM THEN
1596 x_complete_fact_rec.time_id30 := l_act_metric_fact_rec.time_id30;
1597 END IF;
1598
1599 IF p_act_metric_fact_rec.time_id31 = FND_API.G_MISS_NUM THEN
1603 IF p_act_metric_fact_rec.time_id32 = FND_API.G_MISS_NUM THEN
1600 x_complete_fact_rec.time_id31 := l_act_metric_fact_rec.time_id31;
1601 END IF;
1602
1604 x_complete_fact_rec.time_id32 := l_act_metric_fact_rec.time_id32;
1605 END IF;
1606
1607 IF p_act_metric_fact_rec.time_id33 = FND_API.G_MISS_NUM THEN
1608 x_complete_fact_rec.time_id33 := l_act_metric_fact_rec.time_id33;
1609 END IF;
1610
1611 IF p_act_metric_fact_rec.time_id34 = FND_API.G_MISS_NUM THEN
1612 x_complete_fact_rec.time_id34 := l_act_metric_fact_rec.time_id34;
1613 END IF;
1614
1615 IF p_act_metric_fact_rec.time_id35 = FND_API.G_MISS_NUM THEN
1616 x_complete_fact_rec.time_id35 := l_act_metric_fact_rec.time_id35;
1617 END IF;
1618
1619 IF p_act_metric_fact_rec.time_id36 = FND_API.G_MISS_NUM THEN
1620 x_complete_fact_rec.time_id36 := l_act_metric_fact_rec.time_id36;
1621 END IF;
1622
1623 IF p_act_metric_fact_rec.time_id37 = FND_API.G_MISS_NUM THEN
1624 x_complete_fact_rec.time_id37 := l_act_metric_fact_rec.time_id37;
1625 END IF;
1626
1627 IF p_act_metric_fact_rec.time_id38 = FND_API.G_MISS_NUM THEN
1628 x_complete_fact_rec.time_id38 := l_act_metric_fact_rec.time_id38;
1629 END IF;
1630
1631 IF p_act_metric_fact_rec.time_id39 = FND_API.G_MISS_NUM THEN
1632 x_complete_fact_rec.time_id39 := l_act_metric_fact_rec.time_id39;
1633 END IF;
1634
1635 IF p_act_metric_fact_rec.time_id40 = FND_API.G_MISS_NUM THEN
1636 x_complete_fact_rec.time_id40 := l_act_metric_fact_rec.time_id40;
1637 END IF;
1638
1639 IF p_act_metric_fact_rec.time_id41 = FND_API.G_MISS_NUM THEN
1640 x_complete_fact_rec.time_id41 := l_act_metric_fact_rec.time_id41;
1641 END IF;
1642
1643 IF p_act_metric_fact_rec.time_id42 = FND_API.G_MISS_NUM THEN
1644 x_complete_fact_rec.time_id42 := l_act_metric_fact_rec.time_id42;
1645 END IF;
1646
1647 IF p_act_metric_fact_rec.time_id43 = FND_API.G_MISS_NUM THEN
1648 x_complete_fact_rec.time_id43 := l_act_metric_fact_rec.time_id43;
1649 END IF;
1650
1651 IF p_act_metric_fact_rec.time_id44 = FND_API.G_MISS_NUM THEN
1652 x_complete_fact_rec.time_id44 := l_act_metric_fact_rec.time_id44;
1653 END IF;
1654
1655 IF p_act_metric_fact_rec.time_id45 = FND_API.G_MISS_NUM THEN
1656 x_complete_fact_rec.time_id45 := l_act_metric_fact_rec.time_id45;
1657 END IF;
1658
1659 IF p_act_metric_fact_rec.time_id46 = FND_API.G_MISS_NUM THEN
1660 x_complete_fact_rec.time_id46 := l_act_metric_fact_rec.time_id46;
1661 END IF;
1662
1663 IF p_act_metric_fact_rec.time_id47 = FND_API.G_MISS_NUM THEN
1664 x_complete_fact_rec.time_id47 := l_act_metric_fact_rec.time_id47;
1665 END IF;
1666
1667 IF p_act_metric_fact_rec.time_id48 = FND_API.G_MISS_NUM THEN
1668 x_complete_fact_rec.time_id48 := l_act_metric_fact_rec.time_id48;
1669 END IF;
1670
1671 IF p_act_metric_fact_rec.time_id49 = FND_API.G_MISS_NUM THEN
1672 x_complete_fact_rec.time_id49 := l_act_metric_fact_rec.time_id49;
1673 END IF;
1674
1675 IF p_act_metric_fact_rec.time_id50 = FND_API.G_MISS_NUM THEN
1676 x_complete_fact_rec.time_id50 := l_act_metric_fact_rec.time_id50;
1677 END IF;
1678
1679 IF p_act_metric_fact_rec.time_id51 = FND_API.G_MISS_NUM THEN
1680 x_complete_fact_rec.time_id51 := l_act_metric_fact_rec.time_id51;
1681 END IF;
1682
1683 IF p_act_metric_fact_rec.time_id52 = FND_API.G_MISS_NUM THEN
1684 x_complete_fact_rec.time_id52 := l_act_metric_fact_rec.time_id52;
1685 END IF;
1686
1687 IF p_act_metric_fact_rec.time_id53 = FND_API.G_MISS_NUM THEN
1688 x_complete_fact_rec.time_id53 := l_act_metric_fact_rec.time_id53;
1689 END IF;
1690
1691 IF p_act_metric_fact_rec.hierarchy_id = FND_API.G_MISS_NUM THEN
1692 x_complete_fact_rec.hierarchy_id := l_act_metric_fact_rec.hierarchy_id;
1693 END IF;
1694
1695 IF p_act_metric_fact_rec.node_id = FND_API.G_MISS_NUM THEN
1696 x_complete_fact_rec.node_id := l_act_metric_fact_rec.node_id;
1697 END IF;
1698
1699 IF p_act_metric_fact_rec.level_depth = FND_API.G_MISS_NUM THEN
1700 x_complete_fact_rec.level_depth := l_act_metric_fact_rec.level_depth;
1701 END IF;
1702
1703 IF p_act_metric_fact_rec.formula_id = FND_API.G_MISS_NUM THEN
1704 x_complete_fact_rec.formula_id := l_act_metric_fact_rec.formula_id;
1705 END IF;
1706
1707 IF p_act_metric_fact_rec.from_date = FND_API.G_MISS_DATE THEN
1708 x_complete_fact_rec.from_date := l_act_metric_fact_rec.from_date;
1709 END IF;
1710
1711 IF p_act_metric_fact_rec.to_date = FND_API.G_MISS_DATE THEN
1712 x_complete_fact_rec.to_date := l_act_metric_fact_rec.to_date;
1713 END IF;
1714
1715 IF p_act_metric_fact_rec.fact_value = FND_API.G_MISS_NUM THEN
1716 x_complete_fact_rec.fact_value := l_act_metric_fact_rec.fact_value;
1717 END IF;
1718
1719 IF p_act_metric_fact_rec.fact_percent = FND_API.G_MISS_NUM THEN
1720 x_complete_fact_rec.fact_percent := l_act_metric_fact_rec.fact_percent;
1721 END IF;
1722
1723 IF p_act_metric_fact_rec.root_fact_id = FND_API.G_MISS_NUM THEN
1724 x_complete_fact_rec.root_fact_id := l_act_metric_fact_rec.root_fact_id;
1725 END IF;
1726
1727 IF p_act_metric_fact_rec.previous_fact_id = FND_API.G_MISS_NUM THEN
1728 x_complete_fact_rec.previous_fact_id := l_act_metric_fact_rec.previous_fact_id;
1729 END IF;
1730
1734
1731 IF p_act_metric_fact_rec.fact_type = FND_API.G_MISS_CHAR THEN
1732 x_complete_fact_rec.fact_type := l_act_metric_fact_rec.fact_type;
1733 END IF;
1735 IF p_act_metric_fact_rec.fact_reference = FND_API.G_MISS_CHAR THEN
1736 x_complete_fact_rec.fact_reference := l_act_metric_fact_rec.fact_reference;
1737 END IF;
1738
1739 IF p_act_metric_fact_rec.forward_buy_quantity = FND_API.G_MISS_NUM THEN
1740 x_complete_fact_rec.forward_buy_quantity := l_act_metric_fact_rec.forward_buy_quantity;
1741 END IF;
1742
1743 /* 05/21/2002 yzhao: add 11 new columns for top-down bottom-up budgeting */
1744 IF p_act_metric_fact_rec.status_code = FND_API.G_MISS_CHAR THEN
1745 x_complete_fact_rec.status_code := l_act_metric_fact_rec.status_code;
1746 END IF;
1747
1748 IF p_act_metric_fact_rec.hierarchy_type = FND_API.G_MISS_CHAR THEN
1749 x_complete_fact_rec.hierarchy_type := l_act_metric_fact_rec.hierarchy_type;
1750 END IF;
1751
1752 IF p_act_metric_fact_rec.approval_date = FND_API.G_MISS_DATE THEN
1753 x_complete_fact_rec.approval_date := l_act_metric_fact_rec.approval_date;
1754 END IF;
1755
1756 IF p_act_metric_fact_rec.recommend_total_amount = FND_API.G_MISS_NUM THEN
1757 x_complete_fact_rec.recommend_total_amount := l_act_metric_fact_rec.recommend_total_amount;
1758 END IF;
1759
1760 IF p_act_metric_fact_rec.recommend_hb_amount = FND_API.G_MISS_NUM THEN
1761 x_complete_fact_rec.recommend_hb_amount := l_act_metric_fact_rec.recommend_hb_amount;
1762 END IF;
1763
1764 IF p_act_metric_fact_rec.request_total_amount = FND_API.G_MISS_NUM THEN
1765 x_complete_fact_rec.request_total_amount := l_act_metric_fact_rec.request_total_amount;
1766 END IF;
1767
1768 IF p_act_metric_fact_rec.request_hb_amount = FND_API.G_MISS_NUM THEN
1769 x_complete_fact_rec.request_hb_amount := l_act_metric_fact_rec.request_hb_amount;
1770 END IF;
1771
1772 IF p_act_metric_fact_rec.actual_total_amount = FND_API.G_MISS_NUM THEN
1773 x_complete_fact_rec.actual_total_amount := l_act_metric_fact_rec.actual_total_amount;
1774 END IF;
1775
1776 IF p_act_metric_fact_rec.actual_hb_amount = FND_API.G_MISS_NUM THEN
1777 x_complete_fact_rec.actual_hb_amount := l_act_metric_fact_rec.actual_hb_amount;
1778 END IF;
1779
1780 IF p_act_metric_fact_rec.base_total_pct = FND_API.G_MISS_NUM THEN
1781 x_complete_fact_rec.base_total_pct := l_act_metric_fact_rec.base_total_pct;
1782 END IF;
1783
1784 IF p_act_metric_fact_rec.base_hb_pct = FND_API.G_MISS_NUM THEN
1785 x_complete_fact_rec.base_hb_pct := l_act_metric_fact_rec.base_hb_pct;
1786 END IF;
1787 /* 05/21/2002 yzhao: add ends */
1788
1789 END Complete_ActMetFact_Rec ;
1790
1791
1792 -- Start of comments
1793 -- NAME
1794 -- Delete_ActMetricFact
1795 --
1796 -- PURPOSE
1797 -- Deletes an entry in the ams_act_metric_facts_all table.
1798 --
1799 -- NOTES
1800 --
1801 -- HISTORY
1802 -- 24-Apr-2000 tdonohoe Created.
1803 -- 25-Apr-2000 tdonohoe Modified, if the p_activity_metric_id is specified then
1804 -- all entries for this parameter are deleted.
1805 --
1806 -- End of comments
1807
1808 PROCEDURE Delete_ActMetricFact (
1809 p_api_version IN NUMBER,
1810 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1811 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1812
1813 x_return_status OUT NOCOPY VARCHAR2,
1814 x_msg_count OUT NOCOPY NUMBER,
1815 x_msg_data OUT NOCOPY VARCHAR2,
1816
1817 p_activity_metric_fact_id IN NUMBER,
1818 p_activity_metric_id IN NUMBER,
1819 p_object_version_number IN NUMBER
1820 )
1821 IS
1822 L_API_VERSION CONSTANT NUMBER := 1.0;
1823 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_ACTMETRICFACT';
1824 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1825
1826 l_return_status VARCHAR2(1);
1827
1828 BEGIN
1829 --
1830 -- Initialize savepoint.
1831 --
1832 SAVEPOINT Delete_ActMetricFact_pvt;
1833
1834 --
1835 -- Output debug message.
1836 --
1837 IF (AMS_DEBUG_HIGH_ON) THEN
1838
1839 AMS_Utility_PVT.debug_message(l_full_name||': start');
1840 END IF;
1841
1842 --
1843 -- Initialize message list if p_init_msg_list is set to TRUE.
1844 --
1845 IF FND_API.To_Boolean (p_init_msg_list) THEN
1846 FND_MSG_PUB.Initialize;
1847 END IF;
1848
1849 --
1850 -- Standard check for API version compatibility.
1851 --
1852 IF NOT FND_API.Compatible_API_Call (L_API_VERSION,
1853 p_api_version,
1854 L_API_NAME,
1855 G_PKG_NAME)
1856 THEN
1857 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1858 END IF;
1859
1860 --
1861 -- Initialize API return status to success.
1862 --
1863 x_return_status := FND_API.G_RET_STS_SUCCESS;
1864
1865 --
1866 -- Begin API Body.
1867 --
1868
1869 -- Debug message.
1870 IF (AMS_DEBUG_HIGH_ON) THEN
1871
1875 IF(p_activity_metric_id IS NOT NULL) THEN
1872 AMS_Utility_PVT.debug_message(l_full_name ||': delete with Validation');
1873 END IF;
1874
1876
1877 DELETE FROM ams_act_metric_facts_all
1878 WHERE activity_metric_id = p_activity_metric_id;
1879
1880 ELSIF (p_activity_metric_fact_id IS NOT NULL) THEN
1881
1882 DELETE FROM ams_act_metric_facts_all
1883 WHERE activity_metric_fact_id = p_activity_metric_fact_id
1884 AND object_version_number = p_object_version_number;
1885
1886 END IF;
1887
1888
1889 IF (SQL%NOTFOUND) THEN
1890 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1891 THEN
1892 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1893 FND_MSG_PUB.add;
1894 END IF;
1895 RAISE FND_API.g_exc_error;
1896 END IF;
1897
1898
1899 --
1900 -- End API Body.
1901 --
1902
1903 IF FND_API.To_Boolean (p_commit) THEN
1904 COMMIT WORK;
1905 END IF;
1906
1907 --
1908 -- Debug message.
1909 --
1910 IF (AMS_DEBUG_HIGH_ON) THEN
1911
1912 AMS_Utility_PVT.debug_message(l_full_name ||': End');
1913 END IF;
1914
1915
1916 --
1917 -- Standard API to get message count, and if 1,
1918 -- set the message data OUT NOCOPY variable.
1919 --
1920 FND_MSG_PUB.Count_And_Get (
1921 p_count => x_msg_count,
1922 p_data => x_msg_data,
1923 p_encoded => FND_API.G_FALSE
1924 );
1925
1926 EXCEPTION
1927 WHEN FND_API.G_EXC_ERROR THEN
1928 ROLLBACK TO Delete_ActMetricFact_pvt;
1929 x_return_status := FND_API.G_RET_STS_ERROR;
1930 FND_MSG_PUB.Count_And_Get (
1931 p_count => x_msg_count,
1932 p_data => x_msg_data
1933 );
1934 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1935 ROLLBACK TO Delete_ActMetricFact_pvt;
1936 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1937 FND_MSG_PUB.Count_And_Get (
1938 p_count => x_msg_count,
1939 p_data => x_msg_data
1940 );
1941 WHEN OTHERS THEN
1942 ROLLBACK TO Delete_ActMetricFact_pvt;
1943 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1944 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1945 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, L_API_NAME);
1946 END IF;
1947 FND_MSG_PUB.Count_And_Get (
1948 p_count => x_msg_count,
1949 p_data => x_msg_data
1950 );
1951 END Delete_ActMetricFact;
1952
1953 -- Start of comments
1954 -- NAME
1955 -- Validate_ActMetFact
1956 --
1957 -- PURPOSE
1958 -- Validation API for Activity metric facts table.
1959 --
1960
1961 -- NOTES
1962 --
1963 -- HISTORY
1964 -- 24-Apr-2000 tdonohoe Created.
1965
1966 --
1967 -- End of comments
1968
1969 PROCEDURE Validate_ActMetFact (
1970 p_api_version IN NUMBER,
1971 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1972 p_validation_level IN NUMBER := FND_API.G_Valid_Level_Full,
1973
1974 x_return_status OUT NOCOPY VARCHAR2,
1975 x_msg_count OUT NOCOPY NUMBER,
1976 x_msg_data OUT NOCOPY VARCHAR2,
1977
1978 p_act_metric_fact_rec IN act_metric_fact_rec_type
1979 )
1980 IS
1981 L_API_VERSION CONSTANT NUMBER := 1.0;
1982 L_API_NAME CONSTANT VARCHAR2(30) := 'VALIDATE_ACTMETRICFACT';
1983 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1984
1985
1986 l_return_status VARCHAR2(1);
1987
1988 BEGIN
1989 --
1990 -- Output debug message.
1991 --
1992 IF (AMS_DEBUG_HIGH_ON) THEN
1993
1994 AMS_Utility_PVT.debug_message(l_full_name||': start');
1995 END IF;
1996
1997 --
1998 -- Initialize message list if p_init_msg_list is set to TRUE.
1999 --
2000 IF FND_API.To_Boolean (p_init_msg_list) THEN
2001 FND_MSG_PUB.Initialize;
2002 END IF;
2003
2004 --
2005 -- Standard check for API version compatibility.
2006 --
2007 IF NOT FND_API.Compatible_API_Call (L_API_VERSION,
2008 p_api_version,
2009 L_API_NAME,
2010 G_PKG_NAME)
2011 THEN
2012 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2013 END IF;
2014
2015 --
2016 -- Initialize API return status to success.
2017 --
2018 x_return_status := FND_API.G_RET_STS_SUCCESS;
2019
2020 --
2021 -- Begin API Body.
2022 --
2023
2024 IF (AMS_DEBUG_HIGH_ON) THEN
2025
2026
2027
2028 AMS_Utility_PVT.debug_message(l_full_name||': Validate items');
2029
2030 END IF;
2031
2032
2033
2034 -- Validate required items in the record.
2038 p_act_metric_fact_rec => p_act_metric_fact_rec,
2035 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
2036
2037 Validate_ActMetFact_Items(
2039 p_validation_mode => JTF_PLSQL_API.g_create,
2040 x_return_status => l_return_status
2041 );
2042
2043 -- If any errors happen abort API.
2044 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2045 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2046 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2047 RAISE FND_API.G_EXC_ERROR;
2048 END IF;
2049 END IF;
2050
2051 IF (AMS_DEBUG_HIGH_ON) THEN
2052
2053
2054
2055 AMS_Utility_PVT.debug_message(l_full_name||': check record');
2056
2057 END IF;
2058
2059
2060
2061
2062 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
2063 Validate_ActMetFact_Rec(
2064 p_act_metric_fact_rec => p_act_metric_fact_rec,
2065 p_complete_fact_rec => NULL,
2066 x_return_status => l_return_status
2067 );
2068
2069 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
2070 RAISE FND_API.g_exc_unexpected_error;
2071 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
2072 RAISE FND_API.g_exc_error;
2073 END IF;
2074 END IF;
2075
2076
2077
2078 --
2079 -- End API Body.
2080 --
2081
2082 --
2083 -- Standard API to get message count, and if 1,
2084 -- set the message data OUT NOCOPY variable.
2085 --
2086 FND_MSG_PUB.Count_And_Get (
2087 p_count => x_msg_count,
2088 p_data => x_msg_data,
2089 p_encoded => FND_API.G_FALSE
2090 );
2091
2092
2093
2094 IF (AMS_DEBUG_HIGH_ON) THEN
2095
2096
2097
2098
2099
2100
2101
2102 AMS_Utility_PVT.debug_message(l_full_name ||': end');
2103
2104
2105
2106 END IF;
2107
2108
2109
2110 EXCEPTION
2111 WHEN FND_API.G_EXC_ERROR THEN
2112 x_return_status := FND_API.G_RET_STS_ERROR;
2113 FND_MSG_PUB.Count_And_Get (
2114 p_count => x_msg_count,
2115 p_data => x_msg_data
2116 );
2117 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2118 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2119 FND_MSG_PUB.Count_And_Get (
2120 p_count => x_msg_count,
2121 p_data => x_msg_data
2122 );
2123 WHEN OTHERS THEN
2124 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2125 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2126 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, L_API_NAME);
2127 END IF;
2128 FND_MSG_PUB.Count_And_Get (
2129 p_count => x_msg_count,
2130 p_data => x_msg_data
2131 );
2132 END Validate_ActMetFact;
2133
2134
2135 -- Start of comments.
2136 --
2137 -- NAME
2138 -- Check_Req_ActMetricFact_Items
2139 --
2140 -- PURPOSE
2141 -- Validate required metric fact items.
2142 --
2143 -- NOTES
2144 --
2145 -- HISTORY
2146 -- 24-Apr-2000 tdonohoe Created.
2147 --
2148 -- End of comments.
2149
2150 PROCEDURE Check_Req_ActMetricFact_Items (
2151 p_act_metric_fact_rec IN act_metric_fact_rec_type,
2152 x_return_status OUT NOCOPY VARCHAR2
2153 )
2154 IS
2155 BEGIN
2156 -- Initialize return status to success.
2157 x_return_status := FND_API.G_RET_STS_SUCCESS;
2158
2159 --ACT_METRIC_USED_BY_ID
2160
2161
2162
2163
2164 IF p_act_metric_fact_rec.act_metric_used_by_id IS NULL
2165 THEN
2166 -- missing required fields
2167 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2168 THEN -- MMSG
2169 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_ARC_USED_FOR');
2170 FND_MSG_PUB.Add;
2171 END IF;
2172
2173 x_return_status := FND_API.G_RET_STS_ERROR;
2174
2175 -- If any error happens abort API.
2176 RETURN;
2177 END IF;
2178
2179 --ARC_ACT_METRIC_USED_BY
2180
2181
2182
2183 IF p_act_metric_fact_rec.arc_act_metric_used_by IS NULL
2184 THEN
2185 -- missing required fields
2186 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2187 THEN -- MMSG
2188 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_ARC_USED_FOR');
2189 FND_MSG_PUB.Add;
2190 END IF;
2191
2192 x_return_status := FND_API.G_RET_STS_ERROR;
2193
2194 -- If any error happens abort API.
2195 RETURN;
2196 END IF;
2197
2198 --VALUE_TYPE
2199
2200
2201
2202 IF p_act_metric_fact_rec.value_type IS NULL
2203 THEN
2204 -- missing required fields
2205 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2206 THEN -- MMSG
2207 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_VAL_TYPE');
2208 FND_MSG_PUB.Add;
2209 END IF;
2210
2211 x_return_status := FND_API.G_RET_STS_ERROR;
2212
2216
2213 -- If any error happens abort API.
2214 RETURN;
2215 END IF;
2217 --ACTIVITY_METRIC_ID
2218
2219
2220
2221
2222 IF p_act_metric_fact_rec.activity_metric_id IS NULL
2223 THEN
2224 -- missing required fields
2225 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2226 THEN -- MMSG
2227 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_ACT_METRIC_ID');
2228 FND_MSG_PUB.Add;
2229 END IF;
2230
2231 x_return_status := FND_API.G_RET_STS_ERROR;
2232
2233 -- If any error happens abort API.
2234 RETURN;
2235 END IF;
2236
2237 --TRANS_FORECASTED_VALUE
2238
2239
2240
2241 IF p_act_metric_fact_rec.trans_forecasted_value IS NULL
2242 THEN
2243 -- missing required fields
2244 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2245 THEN -- MMSG
2246 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_TRAN_FCST_VAL');
2247 FND_MSG_PUB.Add;
2248 END IF;
2249
2250 x_return_status := FND_API.G_RET_STS_ERROR;
2251
2252 -- If any error happens abort API.
2253 RETURN;
2254 END IF;
2255
2256
2257
2258
2259 --FUNCTIONAL_CURRENCY_CODE
2260 IF p_act_metric_fact_rec.functional_currency_code IS NULL
2261 THEN
2262 -- missing required fields
2263 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2264 THEN -- MMSG
2265 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_FUNC_CUR_CODE');
2266 FND_MSG_PUB.Add;
2267 END IF;
2268
2269 x_return_status := FND_API.G_RET_STS_ERROR;
2270
2271 -- If any error happens abort API.
2272 RETURN;
2273 END IF;
2274
2275 --FUNC_FORECASTED_VALUE
2276
2277
2278
2279 IF p_act_metric_fact_rec.func_forecasted_value IS NULL
2280 THEN
2281 -- missing required fields
2282 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2283 THEN -- MMSG
2284 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_FUNC_FCST_VAL');
2285 FND_MSG_PUB.Add;
2286 END IF;
2287
2288 x_return_status := FND_API.G_RET_STS_ERROR;
2289
2290 -- If any error happens abort API.
2291 RETURN;
2292 END IF;
2293
2294 --DE_METRIC_ID
2295
2296
2297
2298
2299 IF p_act_metric_fact_rec.de_metric_id IS NULL
2300 THEN
2301 -- missing required fields
2302 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2303 THEN -- MMSG
2304 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_METRIC_ID');
2305 FND_MSG_PUB.Add;
2306 END IF;
2307
2308 x_return_status := FND_API.G_RET_STS_ERROR;
2309
2310 -- If any error happens abort API.
2311 RETURN;
2312 END IF;
2313
2314 --TIME_ID1
2315
2316
2317
2318
2319 IF p_act_metric_fact_rec.time_id1 IS NULL
2320 THEN
2321 -- missing required fields
2322 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2323 THEN -- MMSG
2324 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_TIME_ID1');
2325 FND_MSG_PUB.Add;
2326 END IF;
2327
2328 x_return_status := FND_API.G_RET_STS_ERROR;
2329
2330 -- If any error happens abort API.
2331 RETURN;
2332 END IF;
2333
2334
2335
2336 -------------------------------------------------------------------------------------
2337 --When a Hierarchy Id is present then the node_id and fact_value fields are mandatory
2338 -------------------------------------------------------------------------------------
2339 IF p_act_metric_fact_rec.hierarchy_id IS NOT NULL AND p_act_metric_fact_rec.hierarchy_id <> FND_API.G_MISS_NUM
2340 THEN
2341
2342
2343
2344
2345
2346
2347 IF p_act_metric_fact_rec.node_id IS NULL
2348 THEN
2349
2350
2351
2352 -- missing required fields
2353 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2354 THEN -- MMSG
2355 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_NODE_ID');
2356 FND_MSG_PUB.Add;
2357 END IF;
2358
2359 x_return_status := FND_API.G_RET_STS_ERROR;
2360
2361 -- If any error happens abort API.
2362 RETURN;
2363 END IF;
2364
2365
2366
2367
2368 IF p_act_metric_fact_rec.fact_value IS NULL
2369 THEN
2370 -- missing required fields
2371 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2372 THEN -- MMSG
2373 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_MISSING_FACT_VAL');
2374 FND_MSG_PUB.Add;
2375 END IF;
2376
2377 x_return_status := FND_API.G_RET_STS_ERROR;
2378
2379 -- If any error happens abort API.
2380 RETURN;
2381 END IF;
2382
2383 END IF;
2384
2385 EXCEPTION
2386 WHEN OTHERS THEN
2387 RAISE;
2388 END Check_Req_ActMetricFact_Items;
2389
2390
2391 --
2392 -- Start of comments.
2393 --
2394 -- NAME
2395 -- Check_ActMetricFact_UK_Items
2396 --
2397 -- PURPOSE
2398 -- Perform Uniqueness check for Activity metric facts.
2399 --
2400 -- NOTES
2401 --
2402 -- HISTORY
2403 -- 24-Apr-2000 tdonohoe Created.
2404 -- End of comments.
2405
2406
2407 PROCEDURE Check_ActMetricFact_UK_Items(
2408 p_act_metric_fact_rec IN act_metric_fact_rec_type,
2409 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
2410 x_return_status OUT NOCOPY VARCHAR2
2411 )
2412 IS
2413 l_where_clause VARCHAR2(2000); -- Used By Check_Uniqueness
2414 BEGIN
2415
2416 x_return_status := FND_API.g_ret_sts_success;
2417
2418 -- For Create_ActMetricFact, when activity_metric_fact_id is passed in, we need to
2419 -- check if this activity_metric_id is unique.
2420 IF p_validation_mode = JTF_PLSQL_API.g_create
2421 AND p_act_metric_fact_rec.activity_metric_fact_id IS NOT NULL
2422 THEN
2423
2424 l_where_clause := ' activity_metric_fact_id = '||p_act_metric_fact_rec.activity_metric_fact_id ;
2425
2426 IF AMS_Utility_PVT.Check_Uniqueness(
2427 p_table_name => 'ams_act_metric_facts_all',
2428 p_where_clause => l_where_clause
2429 ) = FND_API.g_false
2430 THEN
2431 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
2432 THEN
2433 FND_MESSAGE.set_name('AMS', 'AMS_METR_FACT_DUP_ID');
2434 FND_MSG_PUB.add;
2435 END IF;
2436 x_return_status := FND_API.g_ret_sts_error;
2437 RETURN;
2438 END IF;
2439 END IF;
2440
2441
2442 END Check_ActMetricFact_Uk_Items;
2443
2444
2445 --
2446 -- Start of comments.
2447 --
2448 -- NAME
2449 -- Check_ActMetricFact_Items
2450 --
2451 -- PURPOSE
2452 -- Perform item level validation for Activity metric facts.
2453 --
2454 -- NOTES
2455 --
2456 -- HISTORY
2457 -- 24-Apr-2000 tdonohoe Created.
2458 -- 28-Jun 2000 tdonohoe Modified Check_ActMetricFact_Items to allow the same node to appear on a
2459 -- hierarchy combined with a unique formula_id.
2460 -- End of comments.
2461
2462 PROCEDURE Check_ActMetricFact_Items (
2463 p_act_metric_fact_rec IN act_metric_fact_rec_type,
2464 x_return_status OUT NOCOPY VARCHAR2
2465 )
2466 IS
2470
2467 l_item_name VARCHAR2(30); -- Used to standardize error messages.
2468 l_act_metric_fact_rec act_metric_fact_rec_type := p_act_metric_fact_rec;
2469 l_return_status VARCHAR2(1);
2471
2472 l_table_name VARCHAR2(30);
2473 l_pk_name VARCHAR2(30);
2474 l_pk_value VARCHAR2(30);
2475 l_pk_data_type VARCHAR2(30);
2476 l_additional_where_clause VARCHAR2(4000); -- Used by Check_FK_Exists.
2477 l_lookup_type VARCHAR2(30);
2478
2479 CURSOR c_hierarchy_node_check(p_hierarchy_id number,p_node_id number,p_act_metric_fact_id number,p_act_metric_id number,p_formula_id number) IS
2480 SELECT 1 from ams_act_metric_facts_all
2481 WHERE hierarchy_id = p_hierarchy_id
2482 AND node_id = p_node_id
2483 AND formula_id = p_formula_id
2484 AND activity_metric_fact_id <> p_act_metric_fact_id
2485 AND activity_metric_id = p_act_metric_id;
2486
2487 l_fact_exists number;
2488
2489
2490 BEGIN
2491 -- Initialize return status to success.
2492 x_return_status := FND_API.G_RET_STS_SUCCESS;
2493
2494
2495
2496 -- ACTIVITY_METRIC_ID
2497 -- Do not validate FK if NULL
2498
2499 IF l_act_metric_fact_rec.activity_metric_id <> FND_API.G_MISS_NUM THEN
2500 l_table_name := 'AMS_ACT_METRICS_ALL';
2501 l_pk_name := 'ACTIVITY_METRIC_ID';
2502 l_pk_value := l_act_metric_fact_rec.activity_metric_id;
2503 l_pk_data_type := AMS_Utility_PVT.G_NUMBER;
2504 l_additional_where_clause := NULL ;
2505
2506 IF AMS_Utility_PVT.Check_FK_Exists (
2507 p_table_name => l_table_name
2508 ,p_pk_name => l_pk_name
2509 ,p_pk_value => l_pk_value
2510 ,p_pk_data_type => l_pk_data_type
2511 ,p_additional_where_clause => l_additional_where_clause
2512 ) = FND_API.G_FALSE
2513 THEN
2514 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2515 THEN
2516 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_INVALID_MET');
2517 FND_MSG_PUB.Add;
2518 END IF;
2519
2520 x_return_status := FND_API.G_RET_STS_ERROR;
2521 RETURN;
2522 END IF; -- Check_FK_Exists
2523
2524 END IF;
2525
2526
2527
2528 -- ARC_ACT_METRIC_USED_BY
2529 IF l_act_metric_fact_rec.arc_act_metric_used_by <> FND_API.G_MISS_CHAR THEN
2530 IF l_act_metric_fact_rec.arc_act_metric_used_by NOT IN
2531 ('CAMP','CSCH','EVEH','EVEO','DELV','FUND','FCST')
2532 THEN
2533 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2534 FND_MESSAGE.Set_Name ('AMS', 'AMS_METR_INVALID_USED_BY');
2535 FND_MSG_PUB.Add;
2536 END IF;
2537
2538 x_return_status := FND_API.G_RET_STS_ERROR;
2539 RETURN;
2540 END IF;
2541 END IF;
2542
2543 -----------------------------------------------------------------------
2544 --07-31-2000 tdonohoe , commented out to fix bug 1362107 --
2545 -----------------------------------------------------------------------
2546 /*
2550 l_pk_name := 'HIERARCHY_ID';
2547 IF l_act_metric_fact_rec.hierarchy_id <> FND_API.G_MISS_NUM THEN
2548
2549 l_table_name := 'AMS_HIERARCHIES_ALL_B';
2551 l_pk_value := l_act_metric_fact_rec.hierarchy_id;
2552 l_pk_data_type := AMS_Utility_PVT.G_NUMBER;
2553 l_additional_where_clause := NULL ;
2554
2555 IF AMS_Utility_PVT.Check_FK_Exists (
2556 p_table_name => l_table_name
2557 ,p_pk_name => l_pk_name
2558 ,p_pk_value => l_pk_value
2559 ,p_pk_data_type => l_pk_data_type
2560 ,p_additional_where_clause => l_additional_where_clause
2561 ) = FND_API.G_FALSE
2562 THEN
2563 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2564 THEN
2565 FND_MESSAGE.Set_Name('AMS', 'AMS_HIER_INVALID');
2566 FND_MSG_PUB.Add;
2567 END IF;
2568
2569 x_return_status := FND_API.G_RET_STS_ERROR;
2570 RETURN;
2571 END IF; -- Check_FK_Exists
2572
2573 END IF;
2574
2575 */
2576 -----------------------------------------------------------------------
2577 --End of Comments --
2578 -----------------------------------------------------------------------
2579 ----------------------------------------------------------------------------------
2580 --When a Hierarchy and Node are specified then a check must be done to verify
2581 --that the node is unique in the set of result entries for this activity metric.
2582 ----------------------------------------------------------------------------------
2583 IF l_act_metric_fact_rec.hierarchy_id <> FND_API.G_MISS_NUM THEN
2584
2585 OPEN c_hierarchy_node_check(l_act_metric_fact_rec.hierarchy_id,
2586 l_act_metric_fact_rec.node_id,
2587 l_act_metric_fact_rec.activity_metric_fact_id,
2588 l_act_metric_fact_rec.activity_metric_id,
2589 l_act_metric_fact_rec.formula_id);
2590
2591 FETCH c_hierarchy_node_check INTO l_fact_exists;
2592
2593
2594
2595
2596
2597 IF c_hierarchy_node_check%FOUND THEN
2598 CLOSE c_hierarchy_node_check;
2599 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
2600 FND_MESSAGE.set_name('AMS', 'AMS_METR_FACT_DUP_NODE_ID');
2601 FND_MSG_PUB.add;
2602 RAISE FND_API.g_exc_error;
2603 END IF;
2604 ELSE
2605 CLOSE c_hierarchy_node_check;
2606 END IF;
2607 END IF;
2608
2609 EXCEPTION
2610 WHEN OTHERS THEN
2611 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2612 END Check_ActMetricFact_Items;
2613
2614
2615 --
2616 -- Start of comments.
2617 --
2618 -- NAME
2619 -- Validate_ActMetFact_Rec
2620 --
2621 -- PURPOSE
2625 --
2622 -- Perform Record Level and Other business validations for metric facts.
2623 --
2624 -- NOTES
2626 -- HISTORY
2627 -- 24-Apr-2000 tdonohoe Created.
2628 --
2629 -- End of comments.
2630
2631 PROCEDURE Validate_ActMetFact_Rec(
2632 p_act_metric_fact_rec IN act_metric_fact_rec_type,
2633 p_complete_fact_rec IN act_metric_fact_rec_type,
2634 x_return_status OUT NOCOPY VARCHAR2
2635 )
2636 IS
2637
2638 l_act_metric_fact_rec act_metric_fact_rec_type := p_act_metric_fact_rec;
2639
2640 l_table_name VARCHAR2(30);
2641 l_pk_name VARCHAR2(30);
2642 l_pk_value VARCHAR2(30);
2643 l_pk_data_type VARCHAR2(30);
2644 l_additional_where_clause VARCHAR2(4000); -- Used by Check_FK_Exists.
2645
2646 l_return_status VARCHAR2(1);
2647
2648
2649 BEGIN
2650
2651 x_return_status := FND_API.g_ret_sts_success;
2652
2653 IF l_act_metric_fact_rec.arc_act_metric_used_by <> FND_API.G_MISS_CHAR THEN
2654
2655 IF l_act_metric_fact_rec.act_metric_used_by_id = FND_API.G_MISS_NUM THEN
2656 l_act_metric_fact_rec.act_metric_used_by_id := p_complete_fact_rec.act_metric_used_by_id ;
2657 END IF;
2658
2659 IF l_act_metric_fact_rec.activity_metric_id = FND_API.G_MISS_NUM THEN
2660 l_act_metric_fact_rec.activity_metric_id := p_complete_fact_rec.activity_metric_id ;
2661 END IF;
2662
2663 -- first Check whether the Metric is attached to same usage or not
2664 l_table_name := 'AMS_ACT_METRICS_ALL';
2665 l_pk_name := 'ACTIVITY_METRIC_ID';
2666 l_pk_value := l_act_metric_fact_rec.activity_metric_id;
2667 l_pk_data_type := AMS_Utility_PVT.G_NUMBER;
2668 l_additional_where_clause := ' arc_act_metric_used_by = '||''''||
2669 l_act_metric_fact_rec.arc_act_metric_used_by||'''' ;
2670
2671
2672
2673 IF AMS_Utility_PVT.Check_FK_Exists (
2674 p_table_name => l_table_name
2675 ,p_pk_name => l_pk_name
2676 ,p_pk_value => l_pk_value
2677 ,p_pk_data_type => l_pk_data_type
2678 ,p_additional_where_clause => l_additional_where_clause
2679 ) = FND_API.G_FALSE
2680 THEN
2681
2682 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
2683 THEN
2684 FND_MESSAGE.Set_Name('AMS', 'AMS_METR_INVALID_ACT_USAGE');
2685 FND_MSG_PUB.Add;
2686 END IF;
2687
2688 x_return_status := FND_API.G_RET_STS_ERROR;
2689
2690 RETURN;
2691
2692 END IF; -- Check_FK_Exists
2693
2694
2695 /*
2696
2697 -- Get table_name and pk_name for the ARC qualifier.
2698 AMS_Utility_PVT.Get_Qual_Table_Name_And_PK (
2699 p_sys_qual => l_act_metric_fact_rec.arc_act_metric_used_by,
2700 x_return_status => l_return_status,
2701 x_table_name => l_table_name,
2702 x_pk_name => l_pk_name
2703 );
2704
2705
2706
2707 l_pk_value := l_act_metric_fact_rec.act_metric_used_by_id;
2708 l_pk_data_type := AMS_Utility_PVT.G_NUMBER;
2709 l_additional_where_clause := NULL;
2710
2711 IF AMS_Utility_PVT.Check_FK_Exists (
2712 p_table_name => l_table_name
2713 ,p_pk_name => l_pk_name
2714 ,p_pk_value => l_pk_value
2715 ,p_pk_data_type => l_pk_data_type
2716 ,p_additional_where_clause => NULL
2717 ) = FND_API.G_FALSE
2718 THEN
2719 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2720 FND_MESSAGE.Set_Name ('AMS', 'AMS_METR_INVALID_USED_BY');
2721 FND_MSG_PUB.Add;
2722 END IF;
2723
2724 x_return_status := FND_API.G_RET_STS_ERROR;
2725 RETURN;
2726 END IF;
2727 */
2728
2729 END IF;
2730
2731 EXCEPTION
2732 WHEN OTHERS THEN
2733 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2734
2735
2736 END Validate_ActMetFact_Rec;
2737
2738
2739 --
2740 -- Start of comments.
2741 --
2742 -- NAME
2743 -- Validate_ActMetFact_Items
2744 --
2745 -- PURPOSE
2746 -- Perform All Item level validation for Activity metric facts.
2747 --
2748 -- NOTES
2749 --
2750 -- HISTORY
2751 -- 24-Apr-2000 tdonohoe Created.
2752 --
2753 -- End of comments.
2754
2755 PROCEDURE Validate_ActMetFact_Items (
2756 p_act_metric_fact_rec IN act_metric_fact_rec_type,
2757 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
2758 x_return_status OUT NOCOPY VARCHAR2
2759 )
2760 IS
2761 BEGIN
2762
2763
2764
2765 Check_Req_ActMetricFact_Items(
2766 p_act_metric_fact_rec => p_act_metric_fact_rec,
2767 x_return_status => x_return_status
2768 );
2769 IF x_return_status <> FND_API.g_ret_sts_success THEN
2770 RETURN;
2771 END IF;
2772
2773
2774
2775 Check_ActMetricFact_Uk_Items(
2776 p_act_metric_fact_rec => p_act_metric_fact_rec,
2777 p_validation_mode => p_validation_mode,
2778 x_return_status => x_return_status
2779 );
2780
2781 IF x_return_status <> FND_API.g_ret_sts_success THEN
2782 RETURN;
2783 END IF;
2784
2785
2786
2787 Check_ActMetricFact_Items(
2788 p_act_metric_fact_rec => p_act_metric_fact_rec,
2789 x_return_status => x_return_status
2790 );
2791
2792 IF x_return_status <> FND_API.g_ret_sts_success THEN
2793 RETURN;
2794 END IF;
2795
2796
2797
2798 END Validate_ActMetFact_Items;
2799
2800
2801 END Ams_Actmetricfact_Pvt;