[Home] [Help]
PACKAGE BODY: APPS.EAM_METERREADING_UTILITY_PVT
Source
1 PACKAGE BODY EAM_METERREADING_UTILITY_PVT AS
2 /* $Header: EAMVMTUB.pls 120.9 2006/06/16 13:31:30 sshahid noship $ */
3 /***************************************************************************
4 --
5 -- Copyright (c) 2002 Oracle Corporation, Redwood Shores, CA, USA
6 -- All rights reserved.
7 --
8 -- FILENAME
9 --
10 -- EAMVMTUB.pls
11 --
12 -- DESCRIPTION
13 --
14 -- Body of package EAM_METERREADING_UTILITY_PVT
15 --
16 -- NOTES
17 --
18 -- HISTORY
19 --
20 -- 14-FEB-2005 mmaduska Initial Creation
21 ***************************************************************************/
22
23 PROCEDURE Perform_Writes
24 (
25 p_eam_request_rec IN EAM_PROCESS_WO_PUB.eam_meter_reading_rec_type
26 , x_return_status OUT NOCOPY VARCHAR2
27 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
28 ) IS
29 BEGIN
30 null;
31 END Perform_Writes;
32
33 PROCEDURE INSERT_ROW
34 (
35 p_eam_meter_reading_tbl IN EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type
36 , p_eam_counter_prop_tbl IN EAM_PROCESS_WO_PUB.eam_counter_prop_tbl_type
37 , x_eam_meter_reading_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type
38 , x_eam_counter_prop_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_counter_prop_tbl_type
39 , x_return_status OUT NOCOPY VARCHAR2
40 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
41 ) IS
42 l_meter_reading_rec EAM_MeterReading_PUB.Meter_Reading_Rec_Type;
43 l_counter_properties_tbl EAM_MeterReading_PUB.Ctr_Property_readings_Tbl;
44 l_count NUMBER;
45
46 l_msg_count NUMBER;
47 l_msg_data VARCHAR2(2000);
48 l_return_status VARCHAR2(1);
49 l_meter_reading_id NUMBER;
50 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
51 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
52 l_Token_Tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
53
54
55 BEGIN
56 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
57 EAM_ERROR_MESSAGE_PVT.Write_Debug('Entered EAM_METERREADING_UTILITY_PVT.INSERT_ROW()..');
58 END IF;
59
60 x_return_status := FND_API.G_RET_STS_SUCCESS;
61 x_eam_meter_reading_tbl := p_eam_meter_reading_tbl;
62 x_eam_counter_prop_tbl := p_eam_counter_prop_tbl;
63
64 IF p_eam_meter_reading_tbl.COUNT > 0 THEN
65 FOR ii in p_eam_meter_reading_tbl.FIRST..p_eam_meter_reading_tbl.LAST LOOP
66
67
68
69 l_meter_reading_rec.meter_id := p_eam_meter_reading_tbl(ii).METER_ID;
70 l_meter_reading_rec.meter_reading_id := p_eam_meter_reading_tbl(ii).METER_READING_ID;
71 l_meter_reading_rec.current_reading := p_eam_meter_reading_tbl(ii).CURRENT_READING;
72 l_meter_reading_rec.current_reading_date := p_eam_meter_reading_tbl(ii).current_reading_date;
73 l_meter_reading_rec.reset_flag := p_eam_meter_reading_tbl(ii).RESET_FLAG;
74 l_meter_reading_rec.wip_entity_id := p_eam_meter_reading_tbl(ii).WIP_ENTITY_ID;
75
76 l_meter_reading_rec.source_line_id := p_eam_meter_reading_tbl(ii).SOURCE_LINE_ID;
77 l_meter_reading_rec.source_code := p_eam_meter_reading_tbl(ii).SOURCE_CODE;
78 l_meter_reading_rec.wo_entry_fake_flag := p_eam_meter_reading_tbl(ii).WO_ENTRY_FAKE_FLAG;
79
80 l_meter_reading_rec.attribute_category := p_eam_meter_reading_tbl(ii).ATTRIBUTE_CATEGORY;
81 l_meter_reading_rec.attribute1 := p_eam_meter_reading_tbl(ii).ATTRIBUTE1;
82 l_meter_reading_rec.attribute2 := p_eam_meter_reading_tbl(ii).ATTRIBUTE2;
83 l_meter_reading_rec.attribute3 := p_eam_meter_reading_tbl(ii).ATTRIBUTE3;
84 l_meter_reading_rec.attribute4 := p_eam_meter_reading_tbl(ii).ATTRIBUTE4;
85 l_meter_reading_rec.attribute5 := p_eam_meter_reading_tbl(ii).ATTRIBUTE5;
86 l_meter_reading_rec.attribute6 := p_eam_meter_reading_tbl(ii).ATTRIBUTE6;
87 l_meter_reading_rec.attribute7 := p_eam_meter_reading_tbl(ii).ATTRIBUTE7;
88 l_meter_reading_rec.attribute8 := p_eam_meter_reading_tbl(ii).ATTRIBUTE8;
89 l_meter_reading_rec.attribute9 := p_eam_meter_reading_tbl(ii).ATTRIBUTE9;
90 l_meter_reading_rec.attribute10 := p_eam_meter_reading_tbl(ii).ATTRIBUTE10;
91 l_meter_reading_rec.attribute11 := p_eam_meter_reading_tbl(ii).ATTRIBUTE11;
92 l_meter_reading_rec.attribute12 := p_eam_meter_reading_tbl(ii).ATTRIBUTE12;
93 l_meter_reading_rec.attribute13 := p_eam_meter_reading_tbl(ii).ATTRIBUTE13;
94 l_meter_reading_rec.attribute14 := p_eam_meter_reading_tbl(ii).ATTRIBUTE14;
95 l_meter_reading_rec.attribute15 := p_eam_meter_reading_tbl(ii).ATTRIBUTE15;
96 l_meter_reading_rec.attribute16 := p_eam_meter_reading_tbl(ii).ATTRIBUTE16;
97 l_meter_reading_rec.attribute17 := p_eam_meter_reading_tbl(ii).ATTRIBUTE17;
98 l_meter_reading_rec.attribute18 := p_eam_meter_reading_tbl(ii).ATTRIBUTE18;
99 l_meter_reading_rec.attribute19 := p_eam_meter_reading_tbl(ii).ATTRIBUTE19;
100 l_meter_reading_rec.attribute20 := p_eam_meter_reading_tbl(ii).ATTRIBUTE20;
101 l_meter_reading_rec.attribute21 := p_eam_meter_reading_tbl(ii).ATTRIBUTE21;
102 l_meter_reading_rec.attribute22 := p_eam_meter_reading_tbl(ii).ATTRIBUTE22;
103 l_meter_reading_rec.attribute23 := p_eam_meter_reading_tbl(ii).ATTRIBUTE23;
104 l_meter_reading_rec.attribute24 := p_eam_meter_reading_tbl(ii).ATTRIBUTE24;
105 l_meter_reading_rec.attribute25 := p_eam_meter_reading_tbl(ii).ATTRIBUTE25;
106 l_meter_reading_rec.attribute26 := p_eam_meter_reading_tbl(ii).ATTRIBUTE26;
107 l_meter_reading_rec.attribute27 := p_eam_meter_reading_tbl(ii).ATTRIBUTE27;
108 l_meter_reading_rec.attribute28 := p_eam_meter_reading_tbl(ii).ATTRIBUTE28;
109 l_meter_reading_rec.attribute29 := p_eam_meter_reading_tbl(ii).ATTRIBUTE29;
110 l_meter_reading_rec.attribute30 := p_eam_meter_reading_tbl(ii).ATTRIBUTE30;
111
112 l_count := 1;
113 l_counter_properties_tbl.delete;
114
115 IF p_eam_counter_prop_tbl.COUNT > 0 THEN
116
117 for jj in p_eam_counter_prop_tbl.FIRST..p_eam_counter_prop_tbl.LAST LOOP
118 IF l_meter_reading_rec.meter_id = p_eam_counter_prop_tbl(jj).counter_id THEN
119
120 l_counter_properties_tbl(l_count).counter_property_id := p_eam_counter_prop_tbl(jj).property_id;
121 l_counter_properties_tbl(l_count).property_value := p_eam_counter_prop_tbl(jj).property_value;
122 l_counter_properties_tbl(l_count).value_timestamp := p_eam_counter_prop_tbl(jj).value_timestamp;
123 l_counter_properties_tbl(l_count).attribute_category := p_eam_counter_prop_tbl(jj).attribute_category;
124 l_counter_properties_tbl(l_count).attribute1 := p_eam_counter_prop_tbl(jj).attribute1;
125 l_counter_properties_tbl(l_count).attribute2 := p_eam_counter_prop_tbl(jj).attribute2;
126 l_counter_properties_tbl(l_count).attribute3 := p_eam_counter_prop_tbl(jj).attribute3;
127 l_counter_properties_tbl(l_count).attribute4 := p_eam_counter_prop_tbl(jj).attribute4;
128 l_counter_properties_tbl(l_count).attribute5 := p_eam_counter_prop_tbl(jj).attribute5;
129 l_counter_properties_tbl(l_count).attribute6 := p_eam_counter_prop_tbl(jj).attribute6;
130 l_counter_properties_tbl(l_count).attribute7 := p_eam_counter_prop_tbl(jj).attribute7;
131 l_counter_properties_tbl(l_count).attribute8 := p_eam_counter_prop_tbl(jj).attribute8;
132 l_counter_properties_tbl(l_count).attribute9 := p_eam_counter_prop_tbl(jj).attribute9;
133 l_counter_properties_tbl(l_count).attribute10 := p_eam_counter_prop_tbl(jj).attribute10;
134 l_counter_properties_tbl(l_count).attribute11 := p_eam_counter_prop_tbl(jj).attribute11;
135 l_counter_properties_tbl(l_count).attribute12 := p_eam_counter_prop_tbl(jj).attribute12;
136 l_counter_properties_tbl(l_count).attribute13 := p_eam_counter_prop_tbl(jj).attribute13;
137 l_counter_properties_tbl(l_count).attribute14 := p_eam_counter_prop_tbl(jj).attribute14;
138 l_counter_properties_tbl(l_count).attribute15 := p_eam_counter_prop_tbl(jj).attribute15;
139 l_counter_properties_tbl(l_count).migrated_flag := p_eam_counter_prop_tbl(jj).migrated_flag;
140
141 l_count:=l_count+1;
142
143 END IF;
144 END LOOP;
145 END IF;
146
147 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
148 EAM_ERROR_MESSAGE_PVT.Write_Debug('Calling EAM_METERREADING_PUB.create_meter_reading().. from EAM_METERREADING_UTILITY_PVT.INSERT_ROW()');
149 END IF;
150 EAM_METERREADING_PUB.create_meter_reading(
151
152 p_api_version => 1.0,
153 x_msg_count => l_msg_count,
154 x_msg_data => l_msg_data,
155 x_return_status => l_return_status,
156 x_meter_reading_id => l_meter_reading_id,
157 p_meter_reading_rec => l_meter_reading_rec,
158 p_value_before_reset => p_eam_meter_reading_tbl(ii).VALUE_BEFORE_RESET,
159 p_ignore_warnings => p_eam_meter_reading_tbl(ii).IGNORE_METER_WARNINGS,
160 p_ctr_property_readings_tbl => l_counter_properties_tbl
161 );
162 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
163 EAM_ERROR_MESSAGE_PVT.Write_Debug('Returned from EAM_METERREADING_PUB.create_meter_reading() with return_status : ' || l_return_status);
164 END IF;
165 FOR MM IN x_eam_meter_reading_tbl.FIRST..x_eam_meter_reading_tbl.LAST LOOP
166 IF x_eam_meter_reading_tbl(MM).meter_id = l_meter_reading_rec.meter_id THEN
167 x_eam_meter_reading_tbl(MM).return_status := l_return_status;
168 END IF;
169 END LOOP;
170
171 IF x_eam_counter_prop_tbl.COUNT > 0 THEN
172 FOR NN IN x_eam_counter_prop_tbl.FIRST..x_eam_counter_prop_tbl.LAST LOOP
173 IF x_eam_counter_prop_tbl(NN).counter_id = l_meter_reading_rec.meter_id THEN
174 x_eam_counter_prop_tbl(NN).return_status := l_return_status;
175 END IF;
176 END LOOP;
177 END IF;
178
179 IF l_return_status <> 'S' THEN
180
181 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
182 EAM_ERROR_MESSAGE_PVT.Write_Debug('Error returned from EAM_METERREADING_PUB.create_meter_reading()..: ' || l_msg_data);
183 END IF;
184
185 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
186 ( p_message_name => NULL
187 , p_message_text => l_msg_data
188 , x_mesg_token_Tbl => x_mesg_token_tbl
189 );
190
191 x_return_status := EAM_ERROR_MESSAGE_PVT.G_STATUS_UNEXPECTED;
192 return;
193 END IF;
194 END LOOP; -- Meter Loop
195 END IF; -- End of Meter Reading Count > 0
196 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
197 EAM_ERROR_MESSAGE_PVT.Write_Debug('Finished EAM_METERREADING_UTILITY_PVT.INSERT_ROW()..Successfully');
198 END IF;
199 END INSERT_ROW;
200
201 PROCEDURE ENABLE_SOURCE_METER
202 (
203 p_eam_wo_comp_mr_read_tbl IN EAM_PROCESS_WO_PUB.eam_wo_comp_mr_read_tbl_type
204 , x_eam_wo_comp_mr_read_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_comp_mr_read_tbl_type
205 , x_return_status OUT NOCOPY VARCHAR2
206 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
207 )IS
208 l_return_status VARCHAR2(1);
209 l_msg_count NUMBER;
210 l_msg_data VARCHAR2(2000);
211 BEGIN
212 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
213 EAM_ERROR_MESSAGE_PVT.Write_Debug('Entered EAM_METERREADING_UTILITY_PVT.ENABLE_SOURCE_METER()..');
214 END IF;
215
216 x_return_status := FND_API.G_RET_STS_SUCCESS;
217 x_eam_wo_comp_mr_read_tbl := p_eam_wo_comp_mr_read_tbl;
218
219 IF p_eam_wo_comp_mr_read_tbl.COUNT > 0 THEN
220 FOR ii in p_eam_wo_comp_mr_read_tbl.FIRST..p_eam_wo_comp_mr_read_tbl.LAST LOOP
221
222 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
223 EAM_ERROR_MESSAGE_PVT.Write_Debug('Calling EAM_METER_PUB.update_meter().. from EAM_METERREADING_UTILITY_PVT.ENABLE_SOURCE_METER()');
224 END IF;
225
226 EAM_METER_PUB.update_meter
227 (
228 p_api_version => 1.0,
229 p_meter_id => p_eam_wo_comp_mr_read_tbl(ii).meter_issued_serial,
230 p_source_meter_id => p_eam_wo_comp_mr_read_tbl(ii).source_meter,
231 p_factor => 1, -- Added for bug #5255445
232 x_return_status => l_return_status,
233 x_msg_count => l_msg_count,
234 x_msg_data => l_msg_data
235 );
236 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
237 EAM_ERROR_MESSAGE_PVT.Write_Debug('Returned from EAM_METER_PUB.update_meter() with return_status : ' || l_return_status);
238 END IF;
239 x_eam_wo_comp_mr_read_tbl(ii).return_status := l_return_status;
240
241 IF l_return_status <> 'S' THEN
242
243 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
244 EAM_ERROR_MESSAGE_PVT.WRITE_DEBUG('ERROR RETURNED FROM EAM_METER_PUB.update_meter().. : ' || l_msg_data);
245 END IF;
246 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
247 ( p_message_name => NULL
248 , p_message_text => l_msg_data
249 , x_mesg_token_Tbl => x_mesg_token_tbl
250 );
251
252 x_return_status := EAM_ERROR_MESSAGE_PVT.G_STATUS_UNEXPECTED;
253 return;
254 END IF;
255 END LOOP;
256 END IF;
257 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
258 EAM_ERROR_MESSAGE_PVT.Write_Debug('Finished EAM_METERREADING_UTILITY_PVT.ENABLE_SOURCE_METER()..Successfully');
259 END IF;
260
261 END ENABLE_SOURCE_METER;
262
263 PROCEDURE DISABLE_COUNTER_HIERARCHY
264 (
265 p_eam_wo_comp_rebuild_tbl IN EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
266 , p_subinventory_id IN VARCHAR2
267 , p_wip_entity_id IN NUMBER := NULL
268 , x_eam_wo_comp_rebuild_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
269 , x_return_status OUT NOCOPY VARCHAR2
270 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
271 )IS
272 l_return_status VARCHAR2(1);
273 l_msg_count NUMBER;
274 l_msg_data VARCHAR2(2000);
275 TYPE counter_tbl IS TABLE OF INTEGER INDEX BY BINARY_INTEGER;
276 l_counter_tbl counter_tbl;
277 l_instance_id NUMBER;
278 l_eam_wo_comp_rebuild_tbl EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type;
279 l_count NUMBER := 0;
280
281 /* Bug # 5255459 : Disable meter hiearchy for instances which are already removed */
282 CURSOR cur_replaced_instance IS
283 SELECT wdj.maintenance_object_id instance_id
284 FROM wip_discrete_jobs wdj
285 WHERE wdj.maintenance_object_type = 3 AND wdj.manual_rebuild_flag = 'N'
286 AND wdj.parent_wip_entity_id = p_wip_entity_id;
287
288 BEGIN
289 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
290 EAM_ERROR_MESSAGE_PVT.Write_Debug('Entered EAM_METERREADING_UTILITY_PVT.DISABLE_COUNTER_HIERARCHY()..');
291 END IF;
292
293 x_return_status := FND_API.G_RET_STS_SUCCESS;
294 x_eam_wo_comp_rebuild_tbl := p_eam_wo_comp_rebuild_tbl;
295
296 l_eam_wo_comp_rebuild_tbl := p_eam_wo_comp_rebuild_tbl;
297 l_count := p_eam_wo_comp_rebuild_tbl.count;
298
299 FOR i in cur_replaced_instance LOOP
300 l_count := l_count + 1;
301 l_eam_wo_comp_rebuild_tbl(l_count).wip_entity_id := p_wip_entity_id;
302 l_eam_wo_comp_rebuild_tbl(l_count).instance_id_removed := i.instance_id;
303 /* set org as -1, so that csi_eam_interface_grp.rebuildable_return is not called */
304 l_eam_wo_comp_rebuild_tbl(l_count).organization_id := -1;
305 END LOOP;
306
307 IF l_count > 0 THEN
308 FOR ii in l_eam_wo_comp_rebuild_tbl.FIRST..l_eam_wo_comp_rebuild_tbl.LAST LOOP
309
310 l_counter_tbl.delete;
311
312 SELECT maintenance_object_id into l_instance_id
313 FROM wip_discrete_jobs wdj
314 WHERE wip_entity_id = l_eam_wo_comp_rebuild_tbl(ii).wip_entity_id;
315
316 SELECT cca.counter_id
317 BULK COLLECT INTO l_counter_tbl
318 FROM CSI_COUNTER_ASSOCIATIONS cca
319 WHERE cca.source_object_id = l_eam_wo_comp_rebuild_tbl(ii).instance_id_removed
320 AND (cca.end_date_active IS NULL OR cca.end_date_active > sysdate)
321 AND exists
322 (
323 SELECT '1'
324 FROM CSI_COUNTER_ASSOCIATIONS ccas, CSI_COUNTER_RELATIONSHIPS ccr
325 WHERE ccas.source_object_id = l_instance_id
326 AND (ccas.end_date_active IS NULL OR ccas.end_date_active > sysdate)
327 AND ccr.object_counter_id = cca.COUNTER_ID
328 AND ccr.source_counter_id = ccas.counter_id
329 );
330
331 IF l_counter_tbl.COUNT > 0 THEN
332 FOR K IN l_counter_tbl.FIRST..l_counter_tbl.LAST LOOP
333
334 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
335 EAM_ERROR_MESSAGE_PVT.Write_Debug('Calling EAM_METER_PUB.update_meter().. from EAM_METERREADING_UTILITY_PVT.DISABLE_COUNTER_HIERARCHY()');
336 END IF;
337 EAM_METER_PUB.update_meter
338 (
339 p_api_version => 1.0,
340 p_meter_id => l_counter_tbl(K),
341 p_source_meter_id => null,
342 p_from_eam => 'Y',
343 x_return_status => l_return_status,
344 x_msg_count => l_msg_count,
345 x_msg_data => l_msg_data
346 );
347 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
348 EAM_ERROR_MESSAGE_PVT.Write_Debug('Returned from EAM_METER_PUB.update_meter() with return_status : ' || l_return_status);
349 END IF;
350
351 x_eam_wo_comp_rebuild_tbl(ii).return_status := l_return_status;
352
353 IF l_return_status <> 'S' THEN
354
355 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
356 EAM_ERROR_MESSAGE_PVT.WRITE_DEBUG('ERROR RETURNED FROM EAM_METER_PUB.update_meter()..: ' || l_msg_data);
357 END IF;
358 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
359 ( p_message_name => NULL
360 , p_message_text => l_msg_data
361 , x_mesg_token_Tbl => x_mesg_token_tbl
362 );
363
364 x_return_status := EAM_ERROR_MESSAGE_PVT.G_STATUS_UNEXPECTED;
365 return;
366 END IF;
367 END LOOP;
368 END IF;
369 IF p_subinventory_id IS NULL AND l_eam_wo_comp_rebuild_tbl(ii).organization_id <> -1 THEN
370
371 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
372 EAM_ERROR_MESSAGE_PVT.Write_Debug('Calling csi_eam_interface_grp.rebuildable_return().. from EAM_METERREADING_UTILITY_PVT.DISABLE_COUNTER_HIERARCHY()');
373 END IF;
374 csi_eam_interface_grp.rebuildable_return
375 (
376 p_wip_entity_id => l_eam_wo_comp_rebuild_tbl(ii).wip_entity_id ,
377 p_organization_id => l_eam_wo_comp_rebuild_tbl(ii).organization_id ,
378 p_instance_id => l_eam_wo_comp_rebuild_tbl(ii).instance_id_removed ,
379 x_return_status => l_msg_data ,
380 x_error_message => l_msg_count
381 );
382 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
383 EAM_ERROR_MESSAGE_PVT.Write_Debug('Returned from csi_eam_interface_grp.rebuildable_return() with return_status : ' || l_msg_data);
384 END IF;
385
386 END IF;
387
388
389 END LOOP;
390 END IF;
391
392 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
393 EAM_ERROR_MESSAGE_PVT.Write_Debug('Finished EAM_METERREADING_UTILITY_PVT.DISABLE_COUNTER_HIERARCHY()..Successfully');
394 END IF;
395
396 END DISABLE_COUNTER_HIERARCHY;
397
398 PROCEDURE UPDATE_ACTIVITY
399 (
400 p_eam_wo_comp_rebuild_tbl IN EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
401 , x_eam_wo_comp_rebuild_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
402 , x_return_status OUT NOCOPY VARCHAR2
403 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
404 )IS
405
406 l_return_status VARCHAR2(1);
407 l_msg_count NUMBER;
408 l_msg_data VARCHAR2(2000);
409 l_scheduled_start_date DATE;
410 l_scheduled_completion_date DATE;
411 l_primary_item_id NUMBER;
412 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
413 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
414 l_Token_Tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
415
416 BEGIN
417
418 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
419 EAM_ERROR_MESSAGE_PVT.Write_Debug('Entered EAM_METERREADING_UTILITY_PVT.UPDATE_ACTIVITY()..');
420 END IF;
421
422 x_return_status := FND_API.G_RET_STS_SUCCESS;
423 x_eam_wo_comp_rebuild_tbl := p_eam_wo_comp_rebuild_tbl;
424
425 IF p_eam_wo_comp_rebuild_tbl.COUNT > 0 THEN
426 FOR ii in p_eam_wo_comp_rebuild_tbl.FIRST..p_eam_wo_comp_rebuild_tbl.LAST LOOP
427 IF p_eam_wo_comp_rebuild_tbl(ii).ACTIVITY_ID IS NOT NULL THEN
428
429 SELECT REQUESTED_START_DATE,due_date,primary_item_id
430 INTO l_scheduled_start_date,l_scheduled_completion_date,l_primary_item_id
431 FROM wip_discrete_jobs
432 WHERE wip_entity_id = p_eam_wo_comp_rebuild_tbl(ii).rebuild_wip_entity_id
433 AND organization_id = p_eam_wo_comp_rebuild_tbl(ii).organization_id;
434
435 IF l_primary_item_id IS NULL THEN
436
437 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
438 EAM_ERROR_MESSAGE_PVT.Write_Debug('Calling EAM_PROCESS_WO_PUB.EXPLODE_ACTIVITY().. from EAM_METERREADING_UTILITY_PVT.UPDATE_ACTIVITY()');
439 END IF;
440
441 EAM_PROCESS_WO_PUB.EXPLODE_ACTIVITY
442 (
443 p_organization_id => p_eam_wo_comp_rebuild_tbl(ii).organization_id
444 , p_asset_activity_id => p_eam_wo_comp_rebuild_tbl(ii).activity_id
445 , p_wip_entity_id => p_eam_wo_comp_rebuild_tbl(ii).rebuild_wip_entity_id
446 , p_start_date => l_scheduled_start_date
447 , p_completion_date => l_scheduled_completion_date
448 , x_return_status => l_return_status
449 , x_msg_count => l_msg_count
450 , x_msg_data => l_msg_data
451 );
452 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
453 EAM_ERROR_MESSAGE_PVT.Write_Debug('Returned from EAM_PROCESS_WO_PUB.EXPLODE_ACTIVITY() with return_status : ' || l_return_status);
454 END IF;
455
456 x_eam_wo_comp_rebuild_tbl(ii).return_status := l_return_status;
457
458 IF l_return_status <> 'S' THEN
459 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
460 EAM_ERROR_MESSAGE_PVT.WRITE_DEBUG('ERROR RETURNED FROM EAM_PROCESS_WO_PUB.EXPLODE_ACTIVITY()..: ' || l_msg_data);
461 END IF;
462 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
463 ( p_message_name => NULL
464 , p_message_text => l_msg_data
465 , x_mesg_token_Tbl => x_mesg_token_tbl
466 );
467
468 x_return_status := EAM_ERROR_MESSAGE_PVT.G_STATUS_UNEXPECTED;
469 return;
470 END IF;
471 ELSE
472
473 x_eam_wo_comp_rebuild_tbl(ii).return_status := l_return_status;
474 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
475 l_token_tbl(1).token_value := p_eam_wo_comp_rebuild_tbl(ii).WIP_ENTITY_ID;
476
477 l_out_mesg_token_tbl := l_mesg_token_tbl;
478 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
479 ( p_message_name => 'EAM_WCMP_ACT_EXISTS'
480 , p_token_tbl => l_Token_tbl
481 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
482 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
483 );
484 l_mesg_token_tbl := l_out_mesg_token_tbl;
485 x_mesg_token_tbl := l_mesg_token_tbl ;
486 x_return_status := FND_API.G_RET_STS_ERROR;
487 return;
488 END IF;
489
490 END IF;
491 END LOOP;
492 END IF;
493 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
494 EAM_ERROR_MESSAGE_PVT.Write_Debug('Finished EAM_METERREADING_UTILITY_PVT.UPDATE_ACTIVITY()..Successfully');
495 END IF;
496
497 END UPDATE_ACTIVITY;
498
499 PROCEDURE UPDATE_GENEALOGY
500 (
501 p_eam_wo_comp_rebuild_tbl IN EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
502 , x_eam_wo_comp_rebuild_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
503 , x_return_status OUT NOCOPY VARCHAR2
504 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
505 )IS
506 l_return_status VARCHAR2(1);
507 l_msg_count NUMBER;
508 l_msg_data VARCHAR2(2000);
509 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
510 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
511 l_Token_Tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
512 BEGIN
513
514 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
515 EAM_ERROR_MESSAGE_PVT.Write_Debug('Entered EAM_METERREADING_UTILITY_PVT.UPDATE_GENEALOGY()..');
516 END IF;
517
518 x_return_status := FND_API.G_RET_STS_SUCCESS;
519 x_eam_wo_comp_rebuild_tbl := p_eam_wo_comp_rebuild_tbl;
520
521 IF p_eam_wo_comp_rebuild_tbl.COUNT > 0 THEN
522 FOR ii in p_eam_wo_comp_rebuild_tbl.FIRST..p_eam_wo_comp_rebuild_tbl.LAST LOOP
523
524 IF p_eam_wo_comp_rebuild_tbl(ii).uninst_serial_removed IS NOT NULL THEN
525
526 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
527 EAM_ERROR_MESSAGE_PVT.Write_Debug('Calling wip_eam_genealogy_pvt.update_eam_genealogy().. from EAM_METERREADING_UTILITY_PVT.UPDATE_GENEALOGY()');
528 END IF;
529
530 wip_eam_genealogy_pvt.update_eam_genealogy
531 (
532 p_api_version => 1.0,
533 p_object_type => 2,
534 p_serial_number => p_eam_wo_comp_rebuild_tbl(ii).UNINST_SERIAL_REMOVED,
535 p_inventory_item_id => p_eam_wo_comp_rebuild_tbl(ii).ITEM_REMOVED,
536 p_organization_id => p_eam_wo_comp_rebuild_tbl(ii).ORGANIZATION_ID,
537 p_genealogy_type => 5, /* asset item relationship*/
538 p_end_date_active => sysdate,
539 x_return_status => l_return_status,
540 x_msg_count => l_msg_count,
541 x_msg_data => l_msg_data
542 );
543 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
544 EAM_ERROR_MESSAGE_PVT.Write_Debug('Returned from wip_eam_genealogy_pvt.update_eam_genealogy() with return_status : ' || l_return_status);
545 END IF;
546
547 x_eam_wo_comp_rebuild_tbl(ii).return_status := l_return_status;
548
549 IF l_return_status <> 'S' THEN
550
551 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
552 EAM_ERROR_MESSAGE_PVT.WRITE_DEBUG('ERROR RETURNED FROM wip_eam_genealogy_pvt.update_eam_genealogy()..: ' || l_msg_data);
553 END IF;
554 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
555 ( p_message_name => NULL
556 , p_message_text => l_msg_data
557 , x_mesg_token_Tbl => x_mesg_token_tbl
558 );
559
560 x_return_status := EAM_ERROR_MESSAGE_PVT.G_STATUS_UNEXPECTED;
561 return;
562 END IF;
563 END IF;
564 END LOOP;
565 END IF;
566
567 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
568 EAM_ERROR_MESSAGE_PVT.Write_Debug('Finished EAM_METERREADING_UTILITY_PVT.UPDATE_GENEALOGY()..Successfully');
569 END IF;
570
571 END UPDATE_GENEALOGY;
572
573
574 PROCEDURE UPDATE_LAST_SERVICE_READING
575 (
576 p_eam_meter_reading_tbl IN EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type
577 , x_eam_meter_reading_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type
578 , x_return_status OUT NOCOPY VARCHAR2
579 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
580 )IS
581 l_return_status VARCHAR2(1);
582 l_msg_count NUMBER;
583 l_msg_data VARCHAR2(2000);
584 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
585 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
586 l_Token_Tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
587 BEGIN
588
589 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
590 EAM_ERROR_MESSAGE_PVT.Write_Debug('Entered EAM_METERREADING_UTILITY_PVT.UPDATE_LAST_SERVICE_READING()..');
591 END IF;
592
593 x_return_status := FND_API.G_RET_STS_SUCCESS;
594 x_eam_meter_reading_tbl := p_eam_meter_reading_tbl;
595
596 FOR I IN p_eam_meter_reading_tbl.FIRST..p_eam_meter_reading_tbl.LAST LOOP
597
598 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
599 EAM_ERROR_MESSAGE_PVT.Write_Debug('Calling EAM_METERS_UTIL.update_last_service_reading_wo().. from EAM_METERREADING_UTILITY_PVT.UPDATE_LAST_SERVICE_READING()');
600 END IF;
601
602 EAM_METERS_UTIL.update_last_service_reading_wo(
603 p_wip_entity_id => p_eam_meter_reading_tbl(i).wip_entity_id ,
604 p_meter_id => p_eam_meter_reading_tbl(i).meter_id ,
605 p_meter_reading => p_eam_meter_reading_tbl(i).meter_reading_id ,
606 p_wo_end_date => p_eam_meter_reading_tbl(i).wo_end_date ,
607 x_return_status => l_return_status,
608 x_msg_count => l_msg_count,
609 x_msg_data => l_msg_data
610 );
611 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
612 EAM_ERROR_MESSAGE_PVT.Write_Debug('Returned from EAM_METERS_UTIL.update_last_service_reading_wo() with return_status : ' || l_return_status);
613 END IF;
614
615 x_eam_meter_reading_tbl(i).return_status := l_return_status;
616
617 IF l_return_status <> 'S' THEN
618 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
619 EAM_ERROR_MESSAGE_PVT.WRITE_DEBUG('ERROR RETURNED FROM EAM_METERS_UTIL.update_last_service_reading_wo()..: ' || l_msg_data);
620 END IF;
621 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
622 ( p_message_name => NULL
623 , p_message_text => l_msg_data
624 , x_mesg_token_Tbl => x_mesg_token_tbl
625 );
626
627 x_return_status := EAM_ERROR_MESSAGE_PVT.G_STATUS_UNEXPECTED;
628 return;
629 END IF;
630 END LOOP;
631 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
632 EAM_ERROR_MESSAGE_PVT.Write_Debug('Finished EAM_METERREADING_UTILITY_PVT.UPDATE_LAST_SERVICE_READING()..Successfully');
633 END IF;
634 END UPDATE_LAST_SERVICE_READING;
635
636 PROCEDURE UPDATE_REBUILD_WORK_ORDER
637 (
638 p_eam_wo_comp_rebuild_tbl IN EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
639 , x_eam_wo_comp_rebuild_tbl OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type
640 , x_return_status OUT NOCOPY VARCHAR2
641 , x_mesg_token_tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
642 )IS
643 BEGIN
644
645 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
646 EAM_ERROR_MESSAGE_PVT.Write_Debug('Entered EAM_METERREADING_UTILITY_PVT.UPDATE_REBUILD_WORK_ORDER()..');
647 END IF;
648
649 x_return_status := FND_API.G_RET_STS_SUCCESS;
650 x_eam_wo_comp_rebuild_tbl := p_eam_wo_comp_rebuild_tbl;
651
652 FOR I IN p_eam_wo_comp_rebuild_tbl.FIRST..p_eam_wo_comp_rebuild_tbl.LAST LOOP
653
654 UPDATE wip_discrete_jobs
655 SET maintenance_object_type = 3 ,
656 maintenance_object_id = p_eam_wo_comp_rebuild_tbl(i).instance_id_removed,
657 rebuild_serial_number = ( select serial_number
658 from csi_item_instances
659 where instance_id = p_eam_wo_comp_rebuild_tbl(i).instance_id_removed
660 )
661 WHERE wip_entity_id = p_eam_wo_comp_rebuild_tbl(i).rebuild_wip_entity_id;
662
663 END LOOP;
664
665 EXCEPTION
666 WHEN OTHERS THEN
667 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
668 EAM_ERROR_MESSAGE_PVT.WRITE_DEBUG('Exception in EAM_METERREADING_UTILITY_PVT.UPDATE_REBUILD_WORK_ORDER()');
669 END IF;
670 x_return_status := FND_API.G_RET_STS_ERROR;
671 return;
672
673 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
674 EAM_ERROR_MESSAGE_PVT.Write_Debug('Finished EAM_METERREADING_UTILITY_PVT.UPDATE_REBUILD_WORK_ORDER()..Successfully');
675 END IF;
676
677 END UPDATE_REBUILD_WORK_ORDER;
678
679 END EAM_METERREADING_UTILITY_PVT;