DBA Data[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;