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