[Home] [Help]
PACKAGE BODY: APPS.CSI_COUNTER_READINGS_PUB
Source
1 PACKAGE BODY CSI_COUNTER_READINGS_PUB as
2 /* $Header: csipcrdb.pls 120.6 2011/12/20 05:42:31 aabmishr ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSI_COUNTER_READINGS_PUB';
5 G_FILE_NAME CONSTANT VARCHAR2(12) := 'csipcrdb.pls';
6 --
7 /*----------------------------------------------------*/
8 /* procedure name: Capture_Counter_Reading */
9 /* description : procedure used to */
10 /* capture counter readings */
11 /*----------------------------------------------------*/
12
13 PROCEDURE Capture_Counter_Reading
14 (
15 p_api_version IN NUMBER
16 ,p_commit IN VARCHAR2
17 ,p_init_msg_list IN VARCHAR2
18 ,p_validation_level IN NUMBER
19 ,p_txn_tbl IN OUT NOCOPY csi_datastructures_pub.transaction_tbl
20 ,p_ctr_rdg_tbl IN OUT NOCOPY csi_ctr_datastructures_pub.counter_readings_tbl
21 ,p_ctr_prop_rdg_tbl IN OUT NOCOPY csi_ctr_datastructures_pub.ctr_property_readings_tbl
22 ,x_return_status OUT NOCOPY VARCHAR2
23 ,x_msg_count OUT NOCOPY NUMBER
24 ,x_msg_data OUT NOCOPY VARCHAR2
25 )
26 IS
27 l_api_name CONSTANT VARCHAR2(30) := 'CAPTURE_COUNTER_READING';
28 l_api_version CONSTANT NUMBER := 1.0;
29 -- l_debug_level NUMBER;
30 l_msg_data VARCHAR2(2000);
31 l_msg_index NUMBER;
32 l_msg_count NUMBER;
33 l_dflt_ctr_prop_rec csi_ctr_datastructures_pub.ctr_property_readings_rec;
34 l_temp_ctr_prop_rec csi_ctr_datastructures_pub.ctr_property_readings_rec;
35 l_derive_ctr_rec csi_ctr_datastructures_pub.counter_readings_rec;
36 l_temp_ctr_rdg_rec csi_ctr_datastructures_pub.counter_readings_rec;
37 l_process_flag BOOLEAN := TRUE;
38 l_dummy VARCHAR2(1);
39 l_reset_only VARCHAR2(1);
40 l_instance_id NUMBER;
41 l_formula_rel_type VARCHAR2(30) := 'FORMULA';
42 l_target_rel_type VARCHAR2(30) := 'CONFIGURATION';
43 l_reading_type NUMBER; -- Added for bug 12536426
44 --
45 TYPE T_NUM IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
46 l_assembler_tbl T_NUM;
47 --
48 CURSOR DFLT_PROP_RDG(p_counter_id IN NUMBER, p_value_id IN NUMBER) IS
49 select ccp.counter_property_id,ccp.default_value
50 from CSI_COUNTER_PROPERTIES_B ccp
51 where ccp.counter_id = p_counter_id
52 and ((ccp.default_value is not null) or
53 (ccp.default_value is null and ccp.is_nullable = 'N'))
54 and nvl(end_date_active,(sysdate+1)) > sysdate
55 and not exists (select 'x' from CSI_CTR_PROPERTY_READINGS cpr
56 Where cpr.counter_value_id = p_value_id
57 and cpr.counter_property_id = ccp.counter_property_id);
58 --
59 CURSOR LATER_READINGS_CUR(p_counter_id IN NUMBER,p_value_timestamp IN DATE) IS
60 select counter_value_id,counter_reading,net_reading,value_timestamp,adjustment_reading
61 ,reset_mode,adjustment_type,include_target_resets
62 from CSI_COUNTER_READINGS
63 where counter_id = p_counter_id
64 and nvl(disabled_flag,'N') = 'N'
65 and value_timestamp > p_value_timestamp
66 ORDER BY value_timestamp asc, counter_value_id asc;
67 --
68 CURSOR FORMULA_CUR(p_src_ctr_id IN NUMBER) IS
69 select distinct object_counter_id
70 from csi_counter_relationships
71 where source_counter_id = p_src_ctr_id
72 and relationship_type_code = l_formula_rel_type
73 and nvl(active_end_date,(sysdate+1)) > sysdate;
74 --
75 CURSOR TARGET_CUR(p_src_ctr_id IN NUMBER,p_value_timestamp IN DATE) IS
76 select ccr.object_counter_id
77 from CSI_COUNTER_RELATIONSHIPS ccr,
78 CSI_COUNTERS_B ccv
79 where ccr.source_counter_id = p_src_ctr_id
80 and ccr.relationship_type_code = l_target_rel_type
81 and nvl(ccr.active_start_date,sysdate) <= p_value_timestamp
82 and nvl(ccr.active_end_date,(sysdate+1)) > p_value_timestamp
83 and ccv.counter_id = ccr.object_counter_id;
84 --
85 CURSOR UPD_TARGET_CUR(p_ctr_value_id IN NUMBER,p_src_ctr_id IN NUMBER) IS
86 SELECT crg.counter_id
87 from CSI_COUNTER_READINGS crg,
88 CSI_COUNTER_RELATIONSHIPS ccr,
89 CSI_COUNTERS_B ccv
90 where crg.source_counter_value_id = p_ctr_value_id
91 and ccr.object_counter_id = crg.counter_id
92 and ccr.source_counter_id = p_src_ctr_id
93 and ccr.relationship_type_code = l_target_rel_type
94 and ccv.counter_id = crg.counter_id;
95 --
96 CURSOR DERIVE_CUR(p_ctr_value_id IN NUMBER) IS
97 SELECT ctr.counter_id
98 FROM CSI_COUNTERS_B ctr, CSI_COUNTER_READINGS cv
99 WHERE cv.counter_value_id = p_ctr_value_id
100 AND ctr.derive_counter_id = cv.counter_id
101 AND NVL(ctr.start_date_active,sysdate) <= cv.value_timestamp
102 AND NVL(ctr.end_date_active,(sysdate+1)) > cv.value_timestamp;
103 --
104 BEGIN
105 -- Standard Start of API savepoint
106 SAVEPOINT capture_counter_reading;
107 -- Standard call to check for call compatibility.
108 IF NOT FND_API.Compatible_API_Call (l_api_version,
109 p_api_version,
110 l_api_name ,
111 G_PKG_NAME ) THEN
112 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
113 END IF;
114 -- Initialize message list if p_init_msg_list is set to TRUE.
115 IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
116 FND_MSG_PUB.initialize;
117 END IF;
118 -- Initialize API return status to success
119 x_return_status := FND_API.G_RET_STS_SUCCESS;
120
121 -- Read the debug profiles values in to global variable 7197402
122 CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
123
124 --
125 -- Check the profile option debug_level for debug message reporting
126 -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
127 --
128 IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
129 csi_ctr_gen_utility_pvt.put_line( 'capture_counter_reading_pub' ||'-'||
130 p_api_version ||'-'||
131 nvl(p_commit,FND_API.G_FALSE) ||'-'||
132 nvl(p_init_msg_list,FND_API.G_FALSE) ||'-'||
133 nvl(p_validation_level,FND_API.G_VALID_LEVEL_FULL) );
134 END IF;
135 --
136 IF p_txn_tbl.count = 0 THEN
137 csi_ctr_gen_utility_pvt.put_line('Transaction Information is empty. Cannot Proceed...');
138 csi_ctr_gen_utility_pvt.ExitWithErrMsg('CSI_NO_TXN_TYPE_ID');
139 END IF;
140 --
141 FOR j in p_txn_tbl.FIRST .. p_txn_tbl.LAST LOOP
142 IF p_txn_tbl.EXISTS(j) THEN
143 csi_ctr_gen_utility_pvt.put_line('Dumping Transaction Record # '||to_char(j));
144 csi_ctr_gen_utility_pvt.dump_txn_rec(p_txn_rec => p_txn_tbl(j));
145 csi_ctr_gen_utility_pvt.put_line('Calling Create_Reading_Transaction...');
146 Csi_Counter_Readings_Pvt.Create_Reading_Transaction
147 ( p_api_version => 1.0
148 ,p_commit => fnd_api.g_false
149 ,p_init_msg_list => fnd_api.g_true
150 ,p_validation_level => fnd_api.g_valid_level_full
151 ,p_txn_rec => p_txn_tbl(j)
152 ,x_return_status => x_return_status
153 ,x_msg_count => x_msg_count
154 ,x_msg_data => x_msg_data
155 );
156 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
157 csi_ctr_gen_utility_pvt.put_line('Error from Create_Reading_Transaction...');
158 l_msg_index := 1;
159 FND_MSG_PUB.Count_And_Get
160 (p_count => x_msg_count,
161 p_data => x_msg_data
162 );
163 l_msg_count := x_msg_count;
164 WHILE l_msg_count > 0 LOOP
165 x_msg_data := FND_MSG_PUB.GET
166 ( l_msg_index,
167 FND_API.G_FALSE );
168 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
169 l_msg_index := l_msg_index + 1;
170 l_msg_count := l_msg_count - 1;
171 END LOOP;
172 RAISE FND_API.G_EXC_ERROR;
173 END IF;
174 END IF; -- p_txn_tbl record exists check
175 END LOOP; -- End of Txn Tbl Loop
176 --
177 -- Calling Customer Pre-processing Hook
178 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'B', 'C' ) ) then
179 CSI_COUNTER_READINGS_CUHK.CAPTURE_COUNTER_READING_PRE
180 (
181 p_api_version => p_api_version
182 ,p_commit => p_commit
183 ,p_init_msg_list => p_init_msg_list
184 ,p_validation_level => p_validation_level
185 ,p_txn_tbl => p_txn_tbl
186 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
187 ,p_ctr_prop_rdg_tbl => p_ctr_prop_rdg_tbl
188 ,x_return_status => x_return_status
189 ,x_msg_count => x_msg_count
190 ,x_msg_data => x_msg_data
191 );
192 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
193 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_CUHK.Capture_Counter_Reading_Pre API ');
194 l_msg_index := 1;
195 l_msg_count := x_msg_count;
196 WHILE l_msg_count > 0 LOOP
197 x_msg_data := FND_MSG_PUB.GET
198 ( l_msg_index,
199 FND_API.G_FALSE
200 );
201 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
202 l_msg_index := l_msg_index + 1;
203 l_msg_count := l_msg_count - 1;
204 END LOOP;
205 RAISE FND_API.G_EXC_ERROR;
206 END IF;
207 END IF;
208 --
209 -- Calling Vertical Pre-processing Hook
210 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'B', 'V' ) ) then
211 CSI_COUNTER_READINGS_VUHK.CAPTURE_COUNTER_READING_PRE
212 (
213 p_api_version => p_api_version
214 ,p_commit => p_commit
215 ,p_init_msg_list => p_init_msg_list
216 ,p_validation_level => p_validation_level
217 ,p_txn_tbl => p_txn_tbl
218 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
219 ,p_ctr_prop_rdg_tbl => p_ctr_prop_rdg_tbl
220 ,x_return_status => x_return_status
221 ,x_msg_count => x_msg_count
222 ,x_msg_data => x_msg_data
223 );
224 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
225 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_VUHK.Capture_Counter_Reading_Pre API ');
226 l_msg_index := 1;
227 l_msg_count := x_msg_count;
228 WHILE l_msg_count > 0 LOOP
229 x_msg_data := FND_MSG_PUB.GET
230 ( l_msg_index,
231 FND_API.G_FALSE
232 );
233 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
234 l_msg_index := l_msg_index + 1;
235 l_msg_count := l_msg_count - 1;
236 END LOOP;
237 RAISE FND_API.G_EXC_ERROR;
238 END IF;
239 END IF;
240 --
241 IF p_ctr_rdg_tbl.count > 0 THEN
242 FOR j IN p_ctr_rdg_tbl.FIRST .. p_ctr_rdg_tbl.LAST LOOP
243 IF p_ctr_rdg_tbl.EXISTS(j) THEN
244 -- Call Capture Counter reading PVT;
245 csi_ctr_gen_utility_pvt.dump_counter_readings_rec(p_ctr_rdg_tbl(j));
246 IF NOT p_txn_tbl.EXISTS(p_ctr_rdg_tbl(j).parent_tbl_index) THEN
247 csi_ctr_gen_utility_pvt.put_line('Counter Reading record does not have a Transaction...');
248 csi_ctr_gen_utility_pvt.ExitWithErrMsg('CSI_API_CTR_RDG_NO_TXN');
249 END IF;
250 --
251 -- Check whether this is Reset only reading.
252 -- This will decide whether to compute Derive counters or not
253 --
254 IF NVL(p_ctr_rdg_tbl(j).counter_reading,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM AND
255 NVL(p_ctr_rdg_tbl(j).reset_mode,FND_API.G_MISS_CHAR) = 'SOFT' THEN
256 l_reset_only := 'T';
257 ELSE
258 l_reset_only := 'F';
259 END IF;
260 --
261 IF p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index).transaction_type_id in (88,91,92,94,95) THEN
262 IF p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index).transaction_type_id = 91 THEN
263 l_instance_id := p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index).source_header_ref_id;
264 ELSE
265 l_instance_id := null;
266 END IF;
267 csi_ctr_gen_utility_pvt.put_line('Calling Insert Meter Log...');
268 Eam_Asset_Log_Pvt.Insert_Meter_Log
269 (
270 P_api_version => 1.0,
271 P_init_msg_list => fnd_api.g_false,
272 P_commit => fnd_api.g_false,
273 P_validation_level => fnd_api.g_valid_level_full,
274 P_event_date => p_ctr_rdg_tbl(j).value_timestamp,
275 P_instance_id => l_instance_id,
276 P_ref_id => p_ctr_rdg_tbl(j).counter_id,
277 X_return_status => x_return_status,
278 X_msg_count => x_msg_count,
279 X_msg_data => x_msg_data
280 );
281 -- Since this is only for logging we are ignoring the x_return_status.
282 -- Just report the API error and proceed.
283 --
284 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
285 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Insert_Meter_Log API ');
286 l_msg_index := 1;
287 l_msg_count := x_msg_count;
288 WHILE l_msg_count > 0 LOOP
289 x_msg_data := FND_MSG_PUB.GET
290 ( l_msg_index,
291 FND_API.G_FALSE
292 );
293 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
294 l_msg_index := l_msg_index + 1;
295 l_msg_count := l_msg_count - 1;
296 END LOOP;
297 -- DO NOT RAISE ERROR
298 END IF;
299 END IF; -- EAM Logging Check
300 --
301 --For bug 12536426 - Moved the code to call Update_Last_Service_Reading_Wo to
302 -- below Csi_Counter_Readings_Pvt.Capture_Counter_Reading
303 --
304 csi_ctr_gen_utility_pvt.put_line('Calling Capture_Counter_Reading_pvt...');
305 Csi_Counter_Readings_Pvt.Capture_Counter_Reading
306 (
307 p_api_version => 1.0
308 ,p_commit => p_commit
309 ,p_init_msg_list => p_init_msg_list
310 ,p_validation_level => p_validation_level
311 ,p_txn_rec => p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index)
312 ,p_ctr_rdg_rec => p_ctr_rdg_tbl(j)
313 ,x_return_status => x_return_status
314 ,x_msg_count => x_msg_count
315 ,x_msg_data => x_msg_data
316 );
317 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
318 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Capture_Counter_Reading_pvt API ');
319 l_msg_index := 1;
320 l_msg_count := x_msg_count;
321 WHILE l_msg_count > 0 LOOP
322 x_msg_data := FND_MSG_PUB.GET
323 ( l_msg_index,
324 FND_API.G_FALSE
325 );
326 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
327 l_msg_index := l_msg_index + 1;
328 l_msg_count := l_msg_count - 1;
329 END LOOP;
330 RAISE FND_API.G_EXC_ERROR;
331 END IF;
332 --For bug 12536426, moved the code here as LifeToDate reading has to be paased
333 --to Update_Last_Service_Reading_Wo for change counters
334 IF p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index).transaction_type_id = 92 THEN
335 csi_ctr_gen_utility_pvt.put_line('Calling Update_Last_Service_Reading_Wo...');
336 BEGIN
337 SELECT reading_type
338 INTO l_reading_type
339 FROM csi_counters_b
340 WHERE counter_id = p_ctr_rdg_tbl(j).counter_id;
341 EXCEPTION
342 WHEN OTHERS THEN
343 NULL;
344 END;
345 csi_ctr_gen_utility_pvt.put_line('l_reading_type'|| l_reading_type);
346 csi_ctr_gen_utility_pvt.put_line('p_ctr_rdg_tbl(j).life_to_date_reading'|| p_ctr_rdg_tbl(j).life_to_date_reading);
347
348 IF l_reading_type = 2 THEN
349 Eam_Meters_Util.Update_Last_Service_Reading_Wo
350 (
351 p_wip_entity_id => p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index).source_header_ref_id,
352 p_meter_id => p_ctr_rdg_tbl(j).counter_id,
353 p_meter_reading => p_ctr_rdg_tbl(j).life_to_date_reading,
354 p_wo_end_date => p_ctr_rdg_tbl(j).value_timestamp,
355 X_return_status => x_return_status,
356 X_msg_count => x_msg_count,
357 X_msg_data => x_msg_data
358 );
359 ELSE
360 Eam_Meters_Util.Update_Last_Service_Reading_Wo
361 (
362 p_wip_entity_id => p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index).source_header_ref_id,
363 p_meter_id => p_ctr_rdg_tbl(j).counter_id,
364 p_meter_reading => p_ctr_rdg_tbl(j).counter_reading,
365 p_wo_end_date => p_ctr_rdg_tbl(j).value_timestamp,
366 X_return_status => x_return_status,
367 X_msg_count => x_msg_count,
368 X_msg_data => x_msg_data
369 );
370 END IF;
371
372 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
373 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Update_Last_Service_Reading_Wo API ');
374 l_msg_index := 1;
375 l_msg_count := x_msg_count;
376 WHILE l_msg_count > 0 LOOP
377 x_msg_data := FND_MSG_PUB.GET
378 ( l_msg_index,
379 FND_API.G_FALSE
380 );
381 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
382 l_msg_index := l_msg_index + 1;
383 l_msg_count := l_msg_count - 1;
384 END LOOP;
385 RAISE FND_API.G_EXC_ERROR;
386 END IF;
387 END IF; -- Call Update_Last_Service_Reading_WO check
388 --
389 IF p_ctr_prop_rdg_tbl.count > 0 THEN
390 FOR k IN p_ctr_prop_rdg_tbl.FIRST .. p_ctr_prop_rdg_tbl.LAST LOOP
391 IF p_ctr_prop_rdg_tbl.EXISTS(k) THEN
392 IF p_ctr_prop_rdg_tbl(k).parent_tbl_index = j THEN
393 p_ctr_prop_rdg_tbl(k).counter_value_id := p_ctr_rdg_tbl(j).counter_value_id;
394 p_ctr_prop_rdg_tbl(k).value_timestamp := p_ctr_rdg_tbl(j).value_timestamp;
395 -- Call Property reading PVT;
396 csi_ctr_gen_utility_pvt.dump_ctr_property_readings_rec(p_ctr_prop_rdg_tbl(k));
397 csi_ctr_gen_utility_pvt.put_line('Calling Capture_Ctr_Property_Reading...');
398 Csi_Counter_Readings_Pvt.Capture_Ctr_Property_Reading
399 (
400 p_api_version => 1.0
401 ,p_commit => p_commit
402 ,p_init_msg_list => p_init_msg_list
403 ,p_validation_level => p_validation_level
404 ,p_ctr_prop_rdg_rec => p_ctr_prop_rdg_tbl(k)
405 ,x_return_status => x_return_status
406 ,x_msg_count => x_msg_count
407 ,x_msg_data => x_msg_data
408 );
409 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
410 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Capture_Ctr_Property_Reading API ');
411 l_msg_index := 1;
412 l_msg_count := x_msg_count;
413 WHILE l_msg_count > 0 LOOP
414 x_msg_data := FND_MSG_PUB.GET
415 ( l_msg_index,
416 FND_API.G_FALSE
417 );
418 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
422 RAISE FND_API.G_EXC_ERROR;
419 l_msg_index := l_msg_index + 1;
420 l_msg_count := l_msg_count - 1;
421 END LOOP;
423 END IF;
424 END IF; -- Current counter property
425 END IF; -- Prop rec exists
426 END LOOP; -- Property Tbl Loop
427 END IF; -- Prop Tbl > 0
428 -- Capture Default_Property
429 --
430 FOR dflt_rec IN DFLT_PROP_RDG(p_ctr_rdg_tbl(j).counter_id,p_ctr_rdg_tbl(j).counter_value_id)
431 LOOP
432 l_dflt_ctr_prop_rec := l_temp_ctr_prop_rec; -- Initialize
433 --
434 l_dflt_ctr_prop_rec.counter_property_id := dflt_rec.counter_property_id;
435 l_dflt_ctr_prop_rec.property_value := dflt_rec.default_value;
436 l_dflt_ctr_prop_rec.value_timestamp := p_ctr_rdg_tbl(j).value_timestamp;
437 l_dflt_ctr_prop_rec.counter_value_id := p_ctr_rdg_tbl(j).counter_value_id;
438 --
439 csi_ctr_gen_utility_pvt.dump_ctr_property_readings_rec(l_dflt_ctr_prop_rec);
440 csi_ctr_gen_utility_pvt.put_line('Calling Capture_Ctr_Property_Reading for Dflt Property');
441 Csi_Counter_Readings_Pvt.Capture_Ctr_Property_Reading
442 (
443 p_api_version => 1.0
444 ,p_commit => p_commit
445 ,p_init_msg_list => p_init_msg_list
446 ,p_validation_level => p_validation_level
447 ,p_ctr_prop_rdg_rec => l_dflt_ctr_prop_rec
448 ,x_return_status => x_return_status
449 ,x_msg_count => x_msg_count
450 ,x_msg_data => x_msg_data
451 );
452 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
453 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Capture_Ctr_Property_Reading API ');
454 l_msg_index := 1;
455 l_msg_count := x_msg_count;
456 WHILE l_msg_count > 0 LOOP
457 x_msg_data := FND_MSG_PUB.GET
458 ( l_msg_index,
459 FND_API.G_FALSE
460 );
461 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
462 l_msg_index := l_msg_index + 1;
463 l_msg_count := l_msg_count - 1;
464 END LOOP;
465 RAISE FND_API.G_EXC_ERROR;
466 END IF;
467 END LOOP; -- Default Property Loop
468 --
469 -- Call compute Derive filters only if the current capture is not a pure reset.
470 -- This is applicable for the Later readings cursor as Reset should be the last reading.
471 IF l_reset_only = 'F' THEN
472 l_derive_ctr_rec := l_temp_ctr_rdg_rec;
473 --
474 l_derive_ctr_rec.counter_value_id := p_ctr_rdg_tbl(j).counter_value_id;
475 l_derive_ctr_rec.counter_id := p_ctr_rdg_tbl(j).counter_id;
476 l_derive_ctr_rec.value_timestamp := p_ctr_rdg_tbl(j).value_timestamp;
477 l_derive_ctr_rec.source_code := p_ctr_rdg_tbl(j).source_code;
478 l_derive_ctr_rec.source_line_id := p_ctr_rdg_tbl(j).source_line_id;
479 --
480 -- Call Compute Derive Counters
481 csi_ctr_gen_utility_pvt.put_line('Calling Compute_Derive_Counters...');
482 Csi_Counter_Readings_Pvt.Compute_Derive_Counters
483 (
484 p_api_version => 1.0
485 ,p_commit => p_commit
486 ,p_init_msg_list => p_init_msg_list
487 ,p_validation_level => p_validation_level
488 ,p_txn_rec => p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index)
489 ,p_ctr_rdg_rec => l_derive_ctr_rec
490 ,p_mode => 'CREATE'
491 ,x_return_status => x_return_status
492 ,x_msg_count => x_msg_count
493 ,x_msg_data => x_msg_data
494 );
495 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
496 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Compute_Derive_Counters API ');
497 l_msg_index := 1;
498 l_msg_count := x_msg_count;
499 WHILE l_msg_count > 0 LOOP
500 x_msg_data := FND_MSG_PUB.GET
501 ( l_msg_index,
502 FND_API.G_FALSE
503 );
504 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
505 l_msg_index := l_msg_index + 1;
506 l_msg_count := l_msg_count - 1;
507 END LOOP;
508 RAISE FND_API.G_EXC_ERROR;
509 END IF;
510 --
511 -- Re-compute Derive comunters for the Later Readings
512 -- No need for SOFT reset as we would not have created it before.
513 FOR later_rdg IN LATER_READINGS_CUR(p_ctr_rdg_tbl(j).counter_id,
514 p_ctr_rdg_tbl(j).value_timestamp)
515 LOOP
516 IF NVL(later_rdg.reset_mode,'$#$') <> 'SOFT' THEN
517 l_derive_ctr_rec := l_temp_ctr_rdg_rec;
518 --
519 l_derive_ctr_rec.counter_value_id := later_rdg.counter_value_id;
520 l_derive_ctr_rec.counter_id := p_ctr_rdg_tbl(j).counter_id;
521 l_derive_ctr_rec.value_timestamp := later_rdg.value_timestamp;
522 --
523 csi_ctr_gen_utility_pvt.put_line('Calling Compute_Derive_Counters for Update...');
524 Csi_Counter_Readings_Pvt.Compute_Derive_Counters
525 (
526 p_api_version => 1.0
527 ,p_commit => p_commit
528 ,p_init_msg_list => p_init_msg_list
529 ,p_validation_level => p_validation_level
530 ,p_txn_rec => p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index)
531 ,p_ctr_rdg_rec => l_derive_ctr_rec
532 ,p_mode => 'UPDATE'
533 ,x_return_status => x_return_status
534 ,x_msg_count => x_msg_count
535 ,x_msg_data => x_msg_data
536 );
537 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
541 WHILE l_msg_count > 0 LOOP
538 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Compute_Derive_Counters API ');
539 l_msg_index := 1;
540 l_msg_count := x_msg_count;
542 x_msg_data := FND_MSG_PUB.GET
543 ( l_msg_index,
544 FND_API.G_FALSE
545 );
546 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
547 l_msg_index := l_msg_index + 1;
548 l_msg_count := l_msg_count - 1;
549 END LOOP;
550 RAISE FND_API.G_EXC_ERROR;
551 END IF;
552 END IF; -- End of Derive counter call check
553 END LOOP;
554 END IF; -- l_reset_only check
555 -- Call Compute Formula
556 Csi_Counter_Readings_Pvt.Compute_Formula_Counters
557 (
558 p_api_version => 1.0
559 ,p_commit => p_commit
560 ,p_init_msg_list => p_init_msg_list
561 ,p_validation_level => p_validation_level
562 ,p_txn_rec => p_txn_tbl(p_ctr_rdg_tbl(j).parent_tbl_index)
563 ,p_ctr_rdg_rec => p_ctr_rdg_tbl(j)
564 ,x_return_status => x_return_status
565 ,x_msg_count => x_msg_count
566 ,x_msg_data => x_msg_data
567 );
568 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
569 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Compute_Formula_Counters API ');
570 l_msg_index := 1;
571 l_msg_count := x_msg_count;
572 WHILE l_msg_count > 0 LOOP
573 x_msg_data := FND_MSG_PUB.GET
574 ( l_msg_index,
575 FND_API.G_FALSE
576 );
577 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
578 l_msg_index := l_msg_index + 1;
579 l_msg_count := l_msg_count - 1;
580 END LOOP;
581 RAISE FND_API.G_EXC_ERROR;
582 END IF;
583 --
584 END IF; -- Rdg rec exists
585 END LOOP; -- Ctr Reading Tbl Loop
586 END IF;
587 --
588 csi_ctr_gen_utility_pvt.put_line('End of Private API Calls...');
589 -- Calling Customer Post-processing Hook
590 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'A', 'C' ) ) then
591 CSI_COUNTER_READINGS_CUHK.CAPTURE_COUNTER_READING_POST
592 (
593 p_api_version => p_api_version
594 ,p_commit => p_commit
595 ,p_init_msg_list => p_init_msg_list
596 ,p_validation_level => p_validation_level
597 ,p_txn_tbl => p_txn_tbl
598 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
599 ,p_ctr_prop_rdg_tbl => p_ctr_prop_rdg_tbl
600 ,x_return_status => x_return_status
601 ,x_msg_count => x_msg_count
602 ,x_msg_data => x_msg_data
603 );
604 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
605 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_CUHK.Capture_Counter_Reading_Post API ');
606 l_msg_index := 1;
607 l_msg_count := x_msg_count;
608 WHILE l_msg_count > 0 LOOP
609 x_msg_data := FND_MSG_PUB.GET
610 ( l_msg_index,
611 FND_API.G_FALSE
612 );
613 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
614 l_msg_index := l_msg_index + 1;
615 l_msg_count := l_msg_count - 1;
616 END LOOP;
617 RAISE FND_API.G_EXC_ERROR;
618 END IF;
619 END IF;
620 --
621 -- Calling Vertical Post-processing Hook
622 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'A', 'V' ) ) then
623 CSI_COUNTER_READINGS_VUHK.CAPTURE_COUNTER_READING_POST
624 (
625 p_api_version => p_api_version
626 ,p_commit => p_commit
627 ,p_init_msg_list => p_init_msg_list
628 ,p_validation_level => p_validation_level
629 ,p_txn_tbl => p_txn_tbl
630 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
631 ,p_ctr_prop_rdg_tbl => p_ctr_prop_rdg_tbl
632 ,x_return_status => x_return_status
633 ,x_msg_count => x_msg_count
634 ,x_msg_data => x_msg_data
635 );
636 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
637 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_VUHK.Capture_Counter_Reading_Post API ');
638 l_msg_index := 1;
639 l_msg_count := x_msg_count;
640 WHILE l_msg_count > 0 LOOP
641 x_msg_data := FND_MSG_PUB.GET
642 ( l_msg_index,
643 FND_API.G_FALSE
644 );
645 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
646 l_msg_index := l_msg_index + 1;
647 l_msg_count := l_msg_count - 1;
648 END LOOP;
649 RAISE FND_API.G_EXC_ERROR;
650 END IF;
651 END IF;
652 --
653 -- Need to Call the Contracts Assembler Event for all the counters that got captured in this Transaction
654 l_assembler_tbl.DELETE;
655 --
656 FOR J IN p_ctr_rdg_tbl.FIRST .. p_ctr_rdg_tbl.LAST LOOP
657 IF p_ctr_rdg_tbl.EXISTS(J) THEN
658 /*
659 FOR formula_rec IN FORMULA_CUR(p_ctr_rdg_tbl(J).counter_id) LOOP
660 IF NOT(l_assembler_tbl.EXISTS(formula_rec.object_counter_id)) THEN
661 l_assembler_tbl(formula_rec.object_counter_id) := formula_rec.object_counter_id;
662 END IF;
663 END LOOP;
664 --
665 FOR target_rec IN TARGET_CUR(p_ctr_rdg_tbl(J).counter_id,p_ctr_rdg_tbl(J).value_timestamp) LOOP
666 IF NOT(l_assembler_tbl.EXISTS(target_rec.object_counter_id)) THEN
667 l_assembler_tbl(target_rec.object_counter_id) := target_rec.object_counter_id;
671 FOR upd_rec IN UPD_TARGET_CUR(p_ctr_rdg_tbl(J).counter_value_id,p_ctr_rdg_tbl(J).counter_id) LOOP
668 END IF;
669 END LOOP;
670 --
672 IF NOT(l_assembler_tbl.EXISTS(upd_rec.counter_id)) THEN
673 l_assembler_tbl(upd_rec.counter_id) := upd_rec.counter_id;
674 END IF;
675 END LOOP;
676 --
677 FOR derive_rec IN DERIVE_CUR(p_ctr_rdg_tbl(J).counter_value_id) LOOP
678 IF NOT(l_assembler_tbl.EXISTS(derive_rec.counter_id)) THEN
679 l_assembler_tbl(derive_rec.counter_id) := derive_rec.counter_id;
680 END IF;
681 END LOOP;
682 */
683
684 OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble
685 ( p_api_version => 1.0,
686 x_return_status => x_return_status,
687 x_msg_count => x_msg_count,
688 x_msg_data => x_msg_data,
689 p_counter_id => p_ctr_rdg_tbl(J).counter_id
690 );
691
692 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
693 csi_ctr_gen_utility_pvt.put_line('ERROR FROM OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble API ');
694 l_msg_index := 1;
695 l_msg_count := x_msg_count;
696 WHILE l_msg_count > 0 LOOP
697 x_msg_data := FND_MSG_PUB.GET
698 ( l_msg_index,
699 FND_API.G_FALSE
700 );
701 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
702 l_msg_index := l_msg_index + 1;
703 l_msg_count := l_msg_count - 1;
704 END LOOP;
705 RAISE FND_API.G_EXC_ERROR;
706 END IF;
707 END IF;
708 END LOOP;
709 --
710 -- Loop thru' the Assembler Table and call the OKC Event
711 --
712 /* IF l_assembler_tbl.count > 0 THEN
713 FOR J IN l_assembler_tbl.FIRST .. l_assembler_tbl.LAST LOOP
714 IF l_assembler_tbl.EXISTS(J) THEN
715 OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble
716 ( p_api_version => 1.0,
717 x_return_status => x_return_status,
718 x_msg_count => x_msg_count,
719 x_msg_data => x_msg_data,
720 p_counter_id => l_assembler_tbl(J)
721 );
722 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
723 csi_ctr_gen_utility_pvt.put_line('ERROR FROM OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble API ');
724 l_msg_index := 1;
725 l_msg_count := x_msg_count;
726 WHILE l_msg_count > 0 LOOP
727 x_msg_data := FND_MSG_PUB.GET
728 ( l_msg_index,
729 FND_API.G_FALSE
730 );
731 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
732 l_msg_index := l_msg_index + 1;
733 l_msg_count := l_msg_count - 1;
734 END LOOP;
735 RAISE FND_API.G_EXC_ERROR;
736 END IF;
737 END IF;
738 END LOOP;
739 END IF;
740 */
741 --
742 IF FND_API.to_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
743 COMMIT WORK;
744 END IF;
745 --
746 csi_ctr_gen_utility_pvt.put_line('Capture Counter Reading Public API Successfully Completed...');
747 csi_ctr_gen_utility_pvt.put_line('*******************************************************************');
748 -- Standard call to get message count and IF count is get message info.
749 FND_MSG_PUB.Count_And_Get
750 ( p_count => x_msg_count,
751 p_data => x_msg_data
752 );
753 EXCEPTION
754 WHEN FND_API.G_EXC_ERROR THEN
755 x_return_status := FND_API.G_RET_STS_ERROR ;
756 ROLLBACK TO capture_counter_reading;
757 FND_MSG_PUB.Count_And_Get
758 ( p_count => x_msg_count,
759 p_data => x_msg_data
760 );
761 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
762 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
763 ROLLBACK TO capture_counter_reading;
764 FND_MSG_PUB.Count_And_Get
765 ( p_count => x_msg_count,
766 p_data => x_msg_data
767 );
768 WHEN OTHERS THEN
769 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
770 ROLLBACK TO capture_counter_reading;
771 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
772 FND_MSG_PUB.Add_Exc_Msg
773 ( G_PKG_NAME,
774 l_api_name
775 );
776 END IF;
777 FND_MSG_PUB.Count_And_Get
778 ( p_count => x_msg_count,
779 p_data => x_msg_data
780 );
781 END Capture_Counter_Reading;
782 --
783 /*----------------------------------------------------*/
784 /* procedure name: Update_Counter_Reading */
785 /* description : procedure used to */
786 /* update counter readings */
787 /*----------------------------------------------------*/
788
789 PROCEDURE Update_Counter_Reading
790 (
791 p_api_version IN NUMBER
792 ,p_commit IN VARCHAR2
793 ,p_init_msg_list IN VARCHAR2
794 ,p_validation_level IN NUMBER
795 ,p_ctr_rdg_tbl IN OUT NOCOPY csi_ctr_datastructures_pub.counter_readings_tbl
796 ,x_return_status OUT NOCOPY VARCHAR2
797 ,x_msg_count OUT NOCOPY NUMBER
798 ,x_msg_data OUT NOCOPY VARCHAR2
799 )
800 IS
801 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_COUNTER_READING';
802 l_api_version CONSTANT NUMBER := 1.0;
803 -- l_debug_level NUMBER;
804 l_msg_data VARCHAR2(2000);
805 l_msg_index NUMBER;
809 --
806 l_msg_count NUMBER;
807 l_formula_rel_type VARCHAR2(30) := 'FORMULA';
808 l_target_rel_type VARCHAR2(30) := 'CONFIGURATION';
810 TYPE T_NUM IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
811 l_assembler_tbl T_NUM;
812 --
813 CURSOR FORMULA_CUR(p_src_ctr_id IN NUMBER) IS
814 select distinct object_counter_id
815 from csi_counter_relationships
816 where source_counter_id = p_src_ctr_id
817 and relationship_type_code = l_formula_rel_type
818 and nvl(active_end_date,(sysdate+1)) > sysdate;
819 --
820 CURSOR TARGET_CUR(p_src_ctr_id IN NUMBER,p_value_timestamp IN DATE) IS
821 select ccr.object_counter_id
822 from CSI_COUNTER_RELATIONSHIPS ccr,
823 CSI_COUNTERS_B ccv
824 where ccr.source_counter_id = p_src_ctr_id
825 and ccr.relationship_type_code = l_target_rel_type
826 and nvl(ccr.active_start_date,sysdate) <= p_value_timestamp
827 and nvl(ccr.active_end_date,(sysdate+1)) > p_value_timestamp
828 and ccv.counter_id = ccr.object_counter_id;
829 --
830 CURSOR UPD_TARGET_CUR(p_ctr_value_id IN NUMBER,p_src_ctr_id IN NUMBER) IS
831 SELECT crg.counter_id
832 from CSI_COUNTER_READINGS crg,
833 CSI_COUNTER_RELATIONSHIPS ccr,
834 CSI_COUNTERS_B ccv
835 where crg.source_counter_value_id = p_ctr_value_id
836 and ccr.object_counter_id = crg.counter_id
837 and ccr.source_counter_id = p_src_ctr_id
838 and ccr.relationship_type_code = l_target_rel_type
839 and ccv.counter_id = crg.counter_id;
840 --
841 CURSOR DERIVE_CUR(p_ctr_value_id IN NUMBER) IS
842 SELECT ctr.counter_id
843 FROM CSI_COUNTERS_B ctr, CSI_COUNTER_READINGS cv
844 WHERE cv.counter_value_id = p_ctr_value_id
845 AND ctr.derive_counter_id = cv.counter_id
846 AND NVL(ctr.start_date_active,sysdate) <= cv.value_timestamp
847 AND NVL(ctr.end_date_active,(sysdate+1)) > cv.value_timestamp;
848 --
849 BEGIN
850 -- Standard Start of API savepoint
851 SAVEPOINT update_counter_reading;
852 -- Standard call to check for call compatibility.
853 IF NOT FND_API.Compatible_API_Call (l_api_version,
854 p_api_version,
855 l_api_name ,
856 G_PKG_NAME ) THEN
857 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
858 END IF;
859 -- Initialize message list if p_init_msg_list is set to TRUE.
860 IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
861 FND_MSG_PUB.initialize;
862 END IF;
863 -- Initialize API return status to success
864 x_return_status := FND_API.G_RET_STS_SUCCESS;
865
866 -- Read the debug profiles values in to global variable 7197402
867 CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
868
869 --
870 -- Check the profile option debug_level for debug message reporting
871 -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
872 --
873 IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
874 csi_ctr_gen_utility_pvt.put_line( 'update_counter_reading');
875 END IF;
876 --
877 IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
878 csi_ctr_gen_utility_pvt.put_line( 'update_counter_reading' ||
879 p_api_version ||'-'||
880 nvl(p_commit,FND_API.G_FALSE) ||'-'||
881 nvl(p_init_msg_list,FND_API.G_FALSE) ||'-'||
882 nvl(p_validation_level,FND_API.G_VALID_LEVEL_FULL) );
883 END IF;
884 -- Calling Customer Pre-processing Hook
885 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'B', 'C' ) ) then
886 CSI_COUNTER_READINGS_CUHK.UPDATE_COUNTER_READING_PRE
887 (
888 p_api_version => p_api_version
889 ,p_commit => p_commit
890 ,p_init_msg_list => p_init_msg_list
891 ,p_validation_level => p_validation_level
892 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
893 ,x_return_status => x_return_status
894 ,x_msg_count => x_msg_count
895 ,x_msg_data => x_msg_data
896 );
897 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
898 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_CUHK.Update_Counter_Reading_Pre API ');
899 l_msg_index := 1;
900 l_msg_count := x_msg_count;
901 WHILE l_msg_count > 0 LOOP
902 x_msg_data := FND_MSG_PUB.GET
903 ( l_msg_index,
904 FND_API.G_FALSE
905 );
906 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
907 l_msg_index := l_msg_index + 1;
908 l_msg_count := l_msg_count - 1;
909 END LOOP;
910 RAISE FND_API.G_EXC_ERROR;
911 END IF;
912 END IF;
913 --
914 -- Calling Vertical Pre-processing Hook
915 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'B', 'V' ) ) then
916 CSI_COUNTER_READINGS_VUHK.UPDATE_COUNTER_READING_PRE
917 (
918 p_api_version => p_api_version
919 ,p_commit => p_commit
920 ,p_init_msg_list => p_init_msg_list
921 ,p_validation_level => p_validation_level
922 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
923 ,x_return_status => x_return_status
924 ,x_msg_count => x_msg_count
925 ,x_msg_data => x_msg_data
926 );
927 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
928 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_VUHK.Update_Counter_Reading_Pre API ');
929 l_msg_index := 1;
933 ( l_msg_index,
930 l_msg_count := x_msg_count;
931 WHILE l_msg_count > 0 LOOP
932 x_msg_data := FND_MSG_PUB.GET
934 FND_API.G_FALSE
935 );
936 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
937 l_msg_index := l_msg_index + 1;
938 l_msg_count := l_msg_count - 1;
939 END LOOP;
940 RAISE FND_API.G_EXC_ERROR;
941 END IF;
942 END IF;
943 --
944 IF p_ctr_rdg_tbl.count > 0 THEN
945 FOR j IN p_ctr_rdg_tbl.FIRST .. p_ctr_rdg_tbl.LAST LOOP
946 IF p_ctr_rdg_tbl.EXISTS(j) THEN
947 -- Call Update Counter reading PVT;
948 csi_ctr_gen_utility_pvt.dump_counter_readings_rec(p_ctr_rdg_tbl(j));
949 csi_ctr_gen_utility_pvt.put_line('Calling Update_Counter_Reading_pvt...');
950 Csi_Counter_Readings_Pvt.Update_Counter_Reading
951 (
952 p_api_version => 1.0
953 ,p_commit => p_commit
954 ,p_init_msg_list => p_init_msg_list
955 ,p_validation_level => p_validation_level
956 ,p_ctr_rdg_rec => p_ctr_rdg_tbl(j)
957 ,x_return_status => x_return_status
958 ,x_msg_count => x_msg_count
959 ,x_msg_data => x_msg_data
960 );
961 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
962 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Update_Counter_Reading_pvt API ');
963 l_msg_index := 1;
964 l_msg_count := x_msg_count;
965 WHILE l_msg_count > 0 LOOP
966 x_msg_data := FND_MSG_PUB.GET
967 ( l_msg_index,
968 FND_API.G_FALSE
969 );
970 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
971 l_msg_index := l_msg_index + 1;
972 l_msg_count := l_msg_count - 1;
973 END LOOP;
974 RAISE FND_API.G_EXC_ERROR;
975 END IF;
976 END IF; -- Rdg rec exists
977 END LOOP; -- Ctr Reading Tbl Loop
978 END IF;
979 --
980 -- Calling Customer Post-processing Hook
981 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'A', 'C' ) ) then
982 CSI_COUNTER_READINGS_CUHK.UPDATE_COUNTER_READING_POST
983 (
984 p_api_version => p_api_version
985 ,p_commit => p_commit
986 ,p_init_msg_list => p_init_msg_list
987 ,p_validation_level => p_validation_level
988 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
989 ,x_return_status => x_return_status
990 ,x_msg_count => x_msg_count
991 ,x_msg_data => x_msg_data
992 );
993 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
994 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_CUHK.Update_Counter_Reading_Post API ');
995 l_msg_index := 1;
996 l_msg_count := x_msg_count;
997 WHILE l_msg_count > 0 LOOP
998 x_msg_data := FND_MSG_PUB.GET
999 ( l_msg_index,
1000 FND_API.G_FALSE
1001 );
1002 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1003 l_msg_index := l_msg_index + 1;
1004 l_msg_count := l_msg_count - 1;
1005 END LOOP;
1006 RAISE FND_API.G_EXC_ERROR;
1007 END IF;
1008 END IF;
1009 --
1010 -- Calling Vertical Post-processing Hook
1011 IF ( JTF_USR_HKS.Ok_to_execute( G_PKG_NAME, l_api_name, 'A', 'V' ) ) then
1012 CSI_COUNTER_READINGS_VUHK.UPDATE_COUNTER_READING_POST
1013 (
1014 p_api_version => p_api_version
1015 ,p_commit => p_commit
1016 ,p_init_msg_list => p_init_msg_list
1017 ,p_validation_level => p_validation_level
1018 ,p_ctr_rdg_tbl => p_ctr_rdg_tbl
1019 ,x_return_status => x_return_status
1020 ,x_msg_count => x_msg_count
1021 ,x_msg_data => x_msg_data
1022 );
1023 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1024 csi_ctr_gen_utility_pvt.put_line('ERROR FROM CSI_COUNTER_READINGS_VUHK.Update_Counter_Reading_Post API ');
1025 l_msg_index := 1;
1026 l_msg_count := x_msg_count;
1027 WHILE l_msg_count > 0 LOOP
1028 x_msg_data := FND_MSG_PUB.GET
1029 ( l_msg_index,
1030 FND_API.G_FALSE
1031 );
1032 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1033 l_msg_index := l_msg_index + 1;
1034 l_msg_count := l_msg_count - 1;
1035 END LOOP;
1036 RAISE FND_API.G_EXC_ERROR;
1037 END IF;
1038 END IF;
1039 --
1040 -- Need to Call the Contracts Assembler Event for all the counters that got captured in this Transaction
1041 l_assembler_tbl.DELETE;
1042 --
1043 FOR J IN p_ctr_rdg_tbl.FIRST .. p_ctr_rdg_tbl.LAST LOOP
1044 IF p_ctr_rdg_tbl.EXISTS(J) THEN
1045 /*
1046 FOR formula_rec IN FORMULA_CUR(p_ctr_rdg_tbl(J).counter_id) LOOP
1047 IF NOT(l_assembler_tbl.EXISTS(formula_rec.object_counter_id)) THEN
1048 l_assembler_tbl(formula_rec.object_counter_id) := formula_rec.object_counter_id;
1049 END IF;
1050 END LOOP;
1051 --
1052 FOR target_rec IN TARGET_CUR(p_ctr_rdg_tbl(J).counter_id,p_ctr_rdg_tbl(J).value_timestamp) LOOP
1053 IF NOT(l_assembler_tbl.EXISTS(target_rec.object_counter_id)) THEN
1054 l_assembler_tbl(target_rec.object_counter_id) := target_rec.object_counter_id;
1055 END IF;
1056 END LOOP;
1057 --
1058 FOR upd_rec IN UPD_TARGET_CUR(p_ctr_rdg_tbl(J).counter_value_id,p_ctr_rdg_tbl(J).counter_id) LOOP
1059 IF NOT(l_assembler_tbl.EXISTS(upd_rec.counter_id)) THEN
1060 l_assembler_tbl(upd_rec.counter_id) := upd_rec.counter_id;
1061 END IF;
1062 END LOOP;
1063 --
1064 FOR derive_rec IN DERIVE_CUR(p_ctr_rdg_tbl(J).counter_value_id) LOOP
1065 IF NOT(l_assembler_tbl.EXISTS(derive_rec.counter_id)) THEN
1066 l_assembler_tbl(derive_rec.counter_id) := derive_rec.counter_id;
1067 END IF;
1068 END LOOP;
1069 */
1070 OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble
1071 ( p_api_version => 1.0,
1072 x_return_status => x_return_status,
1073 x_msg_count => x_msg_count,
1074 x_msg_data => x_msg_data,
1075 p_counter_id => p_ctr_rdg_tbl(J).counter_id
1076 );
1077 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1078 csi_ctr_gen_utility_pvt.put_line('ERROR FROM OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble API ');
1079 l_msg_index := 1;
1080 l_msg_count := x_msg_count;
1081 WHILE l_msg_count > 0 LOOP
1082 x_msg_data := FND_MSG_PUB.GET
1083 ( l_msg_index,
1084 FND_API.G_FALSE
1085 );
1086 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1087 l_msg_index := l_msg_index + 1;
1088 l_msg_count := l_msg_count - 1;
1089 END LOOP;
1090 RAISE FND_API.G_EXC_ERROR;
1091 END IF;
1092 END IF;
1093 END LOOP;
1094 --
1095 -- Loop thru' the Assembler Table and call the OKC Event
1096 --
1097 /*
1098 IF l_assembler_tbl.count > 0 THEN
1099 FOR J IN l_assembler_tbl.FIRST .. l_assembler_tbl.LAST LOOP
1100 IF l_assembler_tbl.EXISTS(J) THEN
1101 OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble
1102 ( p_api_version => 1.0,
1103 x_return_status => x_return_status,
1104 x_msg_count => x_msg_count,
1105 x_msg_data => x_msg_data,
1106 p_counter_id => l_assembler_tbl(J)
1107 );
1108 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1109 csi_ctr_gen_utility_pvt.put_line('ERROR FROM OKC_CG_UPD_ASMBLR_PVT.Acn_Assemble API ');
1110 l_msg_index := 1;
1111 l_msg_count := x_msg_count;
1112 WHILE l_msg_count > 0 LOOP
1113 x_msg_data := FND_MSG_PUB.GET
1114 ( l_msg_index,
1115 FND_API.G_FALSE
1116 );
1117 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1118 l_msg_index := l_msg_index + 1;
1119 l_msg_count := l_msg_count - 1;
1120 END LOOP;
1121 RAISE FND_API.G_EXC_ERROR;
1122 END IF;
1123 END IF;
1124 END LOOP;
1125 END IF;
1126 */
1127 --
1128 IF FND_API.to_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
1129 COMMIT WORK;
1130 END IF;
1131 --
1132 -- Standard call to get message count and IF count is get message info.
1133 FND_MSG_PUB.Count_And_Get
1134 ( p_count => x_msg_count,
1135 p_data => x_msg_data
1136 );
1137 EXCEPTION
1138 WHEN FND_API.G_EXC_ERROR THEN
1139 x_return_status := FND_API.G_RET_STS_ERROR ;
1140 ROLLBACK TO update_counter_reading;
1141 FND_MSG_PUB.Count_And_Get
1142 ( p_count => x_msg_count,
1143 p_data => x_msg_data
1144 );
1145 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1146 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1147 ROLLBACK TO update_counter_reading;
1148 FND_MSG_PUB.Count_And_Get
1149 ( p_count => x_msg_count,
1150 p_data => x_msg_data
1151 );
1152 WHEN OTHERS THEN
1153 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1154 ROLLBACK TO update_counter_reading;
1155 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1156 FND_MSG_PUB.Add_Exc_Msg
1157 ( G_PKG_NAME,
1158 l_api_name
1159 );
1160 END IF;
1161 FND_MSG_PUB.Count_And_Get
1162 ( p_count => x_msg_count,
1163 p_data => x_msg_data
1164 );
1165 END Update_Counter_Reading;
1166
1167 END CSI_COUNTER_READINGS_PUB;