DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_METERREADING_PUB

Source


1 PACKAGE BODY EAM_METERREADING_PUB as
2 /* $Header: EAMPMTRB.pls 120.6 2006/03/02 21:56:10 mmaduska ship $ */
3 
4 -- Start of comments
5 --  API name: EAM_MeterReading_PUB
6 --  Type  : Public
7 --  Function: Create new meter reading; disable existing meter reading
8 --  Pre-reqs: None.
9 --  Version : Current version 1.0
10 -- End of comments
11 
12 G_PKG_NAME      CONSTANT VARCHAR2(30):='EAM_MeterReading_PUB';
13 
14 
15 -- Procedure for raising errors
16 PROCEDURE RAISE_ERROR (ERROR VARCHAR2)
17 IS
18 BEGIN
19   FND_MESSAGE.SET_NAME ('EAM', ERROR);
20   FND_MSG_PUB.ADD;
21   RAISE FND_API.G_EXC_ERROR;
22 END;
23 
24 
25 PROCEDURE check_wip_entity_id (p_wip_entity_id number , p_meter_id number)
26 IS
27    x_maintenance_object_id number;
28    l_count number;
29 
30    l_api_name			CONSTANT VARCHAR2(30)	:='check_wip_entity_id';
31    l_module            varchar2(200) ;
32 
33    l_log_level CONSTANT NUMBER := fnd_log.g_current_runtime_level;
34    l_uLog CONSTANT BOOLEAN := fnd_log.level_unexpected >= l_log_level;
35    l_pLog CONSTANT BOOLEAN := l_uLog AND fnd_log.level_procedure >= l_log_level;
36    l_sLog CONSTANT BOOLEAN := l_pLog AND fnd_log.level_statement >= l_log_level;
37 BEGIN
38   IF (l_ulog) THEN
39        l_module := 'eam.plsql.'||g_pkg_name|| '.' || l_api_name;
40   END IF;
41 
42   IF (l_plog) THEN
43 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
44 		'==================== Entered EAM_MeterReading_PUB.check_wip_entity_id ====================');
45   END IF;
46 
47   SELECT maintenance_object_id into x_maintenance_object_id
48   FROM wip_discrete_jobs
49   WHERE wip_entity_id = p_wip_entity_id
50   AND maintenance_object_type = 3;
51   IF (l_plog) THEN
52 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
53 		'x_maintenance_object_id:'||x_maintenance_object_id);
54   END IF;
55 
56 
57   SELECT COUNT(1) into l_count
58   FROM csi_counter_associations csa,csi_counter_relationships ccr
59   WHERE
60   csa.source_object_id = x_maintenance_object_id
61   AND csa.counter_id = ccr.OBJECT_COUNTER_ID (+)
62   AND nvl(ccr.source_counter_id (+),csa.counter_id) = p_meter_id
63   and CCR.ACTIVE_END_DATE (+) >= sysdate ;
64 
65   IF (l_plog) THEN
66 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
67 		'l_count:'||l_count);
68   END IF;
69   IF l_count = 0 then
70     raise_error ('EAM_MTR_WO_INVALID');  -- Specified meter is invalid for this work order.
71   END IF;
72 
73  IF (l_plog) THEN
74 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
75 		'==================== Exiting from EAM_MeterReading_PUB.check_wip_entity_id ====================');
76   END IF;
77 EXCEPTION
78   WHEN no_data_found THEN
79     --Invalid work order
80     fnd_message.set_name('EAM', 'EAM_INVALID_PARAMETER');
81     fnd_message.set_token('NAME', 'WIP_ENTITY_ID :' || p_wip_entity_id);
82     fnd_msg_pub.add;
83     RAISE fnd_api.g_exc_error;
84 END;
85 
86 
87 PROCEDURE create_meter_reading
88 (
89   p_api_version                IN             number,
90   p_init_msg_list              IN             varchar2:=FND_API.G_FALSE,
91   p_commit                     IN             varchar2:=FND_API.G_FALSE,
92   x_msg_count                  OUT  NOCOPY    number,
93   x_msg_data                   OUT  NOCOPY    varchar2,
94   x_return_status              OUT  NOCOPY    varchar2,
95   p_meter_reading_rec          IN             Eam_MeterReading_PUB.Meter_Reading_Rec_Type,
96   p_ctr_property_readings_tbl  IN             EAM_MeterReading_PUB.Ctr_Property_readings_Tbl,
97   p_value_before_reset         IN             number:=NULL,
98   p_ignore_warnings            IN             varchar2 := 'Y',
99   x_meter_reading_id           OUT  NOCOPY    number
100 )
101 IS
102 l_api_name                CONSTANT varchar2(30) := 'create_meter_reading';
103 l_api_version             CONSTANT number     := 1.0;
104 l_current_reading_date		         date;
105 l_reset                            varchar2(1);
106 l_transaction                      varchar2(1) := 'N';
107 l_wip_entity_id                    number;
108 l_source_transaction_id            number;
109 l_source_transaction_type_id       number;
110 l_ctr_property_readings_tbl        Csi_Ctr_Datastructures_PUB.Ctr_Property_Readings_Tbl;
111 l_ctr_rdg_tbl                      Csi_Ctr_Datastructures_PUB.Counter_Readings_Tbl;
112 l_csi_txn_tbl											 Csi_Datastructures_PUB.transaction_tbl;
113 
114    l_module            varchar2(200);
115 
116    l_log_level CONSTANT NUMBER := fnd_log.g_current_runtime_level;
117    l_uLog CONSTANT BOOLEAN := fnd_log.level_unexpected >= l_log_level;
118    l_pLog CONSTANT BOOLEAN := l_uLog AND fnd_log.level_procedure >= l_log_level;
119    l_sLog CONSTANT BOOLEAN := l_pLog AND fnd_log.level_statement >= l_log_level;
120 
121 BEGIN
122   -- Standard Start of API savepoint
123     SAVEPOINT create_meter_reading_Pub;
124     IF (l_ulog) THEN
125        l_module := 'eam.plsql.'||g_pkg_name|| '.' || l_api_name;
126     END IF;
127 
128     IF (l_plog) THEN
129 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
130 		'==================== Entered EAM_MeterReading_PUB.create_meter_reading ====================');
131     END IF;
132     -- Standard call to check for call compatibility.
133 
134 
135     IF NOT FND_API.Compatible_API_Call (l_api_version,
136                                         p_api_version,
137                                         l_api_name,
138                                         G_PKG_NAME )
139     THEN
140       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
141     END IF;
142 
143 
144   -- Initialize message list if p_init_msg_list is set to TRUE.
145     IF FND_API.to_Boolean( p_init_msg_list ) THEN
146       FND_MSG_PUB.initialize;
147     END IF;
148 
149   --  Initialize API return status to success
150     x_return_status := FND_API.G_RET_STS_SUCCESS;
151 
152   -- API body
153     l_ctr_property_readings_tbl.DELETE;
154     l_ctr_rdg_tbl.DELETE;
155     l_csi_txn_tbl.DELETE;
156 
157     l_wip_entity_id := p_meter_reading_rec.wip_entity_id;
158     l_current_reading_date := p_meter_reading_rec.current_reading_date;
159     l_reset := p_meter_reading_rec.reset_flag;
160 
161   -- Check if the asset for which the current work order is raised has the current counter associated to it.
162     IF l_wip_entity_id IS NOT NULL THEN
163       IF (l_plog) THEN
164 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
165 		'==================== Calling check_wip_entity_id  ====================');
166      END IF;
167       check_wip_entity_id (l_wip_entity_id , p_meter_reading_rec.meter_id);
168     IF (l_plog) THEN
169 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
170 		'==================== Returning from check_wip_entity_id  ====================');
171      END IF;
172     END IF;
173 
174   -- Assign the values of Source transaction id and source transactio type for the transaction records.
175 	  IF(l_wip_entity_id IS NOT NULL) THEN
176 	    l_source_transaction_type_id := 92;
177 	    l_source_transaction_id := l_wip_entity_id;
178 	    l_transaction := 'Y';
179 	  ELSIF (p_meter_reading_rec.check_in_out_type = 1 AND p_meter_reading_rec.check_in_out_txn_id  IS NOT NULL) THEN
180 	    l_source_transaction_type_id := 94;
181 	    l_source_transaction_id := p_meter_reading_rec.check_in_out_txn_id;
182 	    l_transaction := 'Y';
183 	  ELSIF (p_meter_reading_rec.check_in_out_type = 2 AND p_meter_reading_rec.check_in_out_txn_id  IS NOT NULL) THEN
184 	    l_source_transaction_type_id := 95;
185 	    l_source_transaction_id := p_meter_reading_rec.check_in_out_txn_id;
186 	    l_transaction := 'Y';
187 	  ELSIF(p_meter_reading_rec.instance_id IS NOT NULL) THEN
188 	    l_source_transaction_type_id := 91;
189 	    l_source_transaction_id := p_meter_reading_rec.instance_id;
190 	    l_transaction := 'Y';
191 	  ELSE
192 	    l_source_transaction_type_id := 88;    --transaction type when there is no transaction info
193 	    l_transaction := 'Y';
194 	  END IF;
195 
196 	  IF l_transaction = 'Y' THEN
197 	    l_csi_txn_tbl(1).source_header_ref_id := l_source_transaction_id;
198 	    l_csi_txn_tbl(1).transaction_type_id := l_source_transaction_type_id;
199 	    l_csi_txn_tbl(1).transaction_date := l_current_reading_date;
200 	    l_csi_txn_tbl(1).source_transaction_date := l_current_reading_date;
201 	  END IF;
202 
203 
204 	-- Assigning values for the Counter readings record
205 
206 	-- If the record is  a reset reading Reset Mode should be soft for EAM else null.
207 	  IF (l_reset='Y') then
208  	    l_ctr_rdg_tbl(1).reset_mode := 'SOFT';
209  	    l_ctr_rdg_tbl(1).reset_counter_reading := p_value_before_reset;
210   	  l_ctr_rdg_tbl(1).reset_reason := p_meter_reading_rec.reset_reason;
211 	  ELSE
212 	    l_ctr_rdg_tbl(1).reset_mode := NULL;
213 	    l_ctr_rdg_tbl(1).reset_counter_reading := NULL;
214  	    l_ctr_rdg_tbl(1).reset_reason := NULL;
215     END IF;
216 
217 
218   	l_ctr_rdg_tbl(1).counter_id := p_meter_reading_rec.meter_id;
219 	  l_ctr_rdg_tbl(1).counter_reading := p_meter_reading_rec.current_reading;
220 	  l_ctr_rdg_tbl(1).value_timestamp:= p_meter_reading_rec.current_reading_date;
221 	  l_ctr_rdg_tbl(1).comments := p_meter_reading_rec.description;
222 	  l_ctr_rdg_tbl(1).disabled_flag := 'N';
223 	  l_ctr_rdg_tbl(1).adjustment_type := p_meter_reading_rec.adjustment_type;
224 	  l_ctr_rdg_tbl(1).adjustment_reading := p_meter_reading_rec.adjustment_reading;
225 	  l_ctr_rdg_tbl(1).net_reading := p_meter_reading_rec.net_reading;
226 	  l_ctr_rdg_tbl(1).attribute_category := p_meter_reading_rec.attribute_category;
227 	  l_ctr_rdg_tbl(1).attribute1 := p_meter_reading_rec.attribute1;
228 	  l_ctr_rdg_tbl(1).attribute2 := p_meter_reading_rec.attribute2;
229 	  l_ctr_rdg_tbl(1).attribute3 := p_meter_reading_rec.attribute3;
230 	  l_ctr_rdg_tbl(1).attribute4 := p_meter_reading_rec.attribute4;
231 	  l_ctr_rdg_tbl(1).attribute5 := p_meter_reading_rec.attribute5;
232 	  l_ctr_rdg_tbl(1).attribute6 := p_meter_reading_rec.attribute6;
233 	  l_ctr_rdg_tbl(1).attribute7 := p_meter_reading_rec.attribute7;
234 	  l_ctr_rdg_tbl(1).attribute8 := p_meter_reading_rec.attribute8;
235 	  l_ctr_rdg_tbl(1).attribute9 := p_meter_reading_rec.attribute9;
236 	  l_ctr_rdg_tbl(1).attribute10 := p_meter_reading_rec.attribute10;
237 	  l_ctr_rdg_tbl(1).attribute11 := p_meter_reading_rec.attribute11;
238 	  l_ctr_rdg_tbl(1).attribute12 := p_meter_reading_rec.attribute12;
239 	  l_ctr_rdg_tbl(1).attribute13 := p_meter_reading_rec.attribute13;
240 	  l_ctr_rdg_tbl(1).attribute14 := p_meter_reading_rec.attribute14;
241 	  l_ctr_rdg_tbl(1).attribute15 := p_meter_reading_rec.attribute15;
242 	  l_ctr_rdg_tbl(1).attribute16 := p_meter_reading_rec.attribute16;
243 	  l_ctr_rdg_tbl(1).attribute17 := p_meter_reading_rec.attribute17;
244 	  l_ctr_rdg_tbl(1).attribute18 := p_meter_reading_rec.attribute18;
245 	  l_ctr_rdg_tbl(1).attribute19 := p_meter_reading_rec.attribute19;
246 	  l_ctr_rdg_tbl(1).attribute10 := p_meter_reading_rec.attribute20;
247 	  l_ctr_rdg_tbl(1).attribute21 := p_meter_reading_rec.attribute21;
248 	  l_ctr_rdg_tbl(1).attribute22 := p_meter_reading_rec.attribute22;
249 	  l_ctr_rdg_tbl(1).attribute23 := p_meter_reading_rec.attribute23;
250 	  l_ctr_rdg_tbl(1).attribute24 := p_meter_reading_rec.attribute24;
251 	  l_ctr_rdg_tbl(1).attribute25 := p_meter_reading_rec.attribute25;
252 	  l_ctr_rdg_tbl(1).attribute26 := p_meter_reading_rec.attribute26;
253 	  l_ctr_rdg_tbl(1).attribute27 := p_meter_reading_rec.attribute27;
254 	  l_ctr_rdg_tbl(1).attribute28 := p_meter_reading_rec.attribute28;
255 	  l_ctr_rdg_tbl(1).attribute29 := p_meter_reading_rec.attribute29;
256 	  l_ctr_rdg_tbl(1).attribute30 := p_meter_reading_rec.attribute30;
257 	  IF l_transaction = 'Y' THEN
258 	        l_ctr_rdg_tbl(1).parent_tbl_index := 1;
259 	  END IF;
260 
261 	--Assigning values to the counter property record.
262    IF p_ctr_property_readings_tbl.count > 0 THEN
263       FOR i IN p_ctr_property_readings_tbl.FIRST .. p_ctr_property_readings_tbl.LAST LOOP
264          IF p_ctr_property_readings_tbl.EXISTS(i) THEN
265 	          l_ctr_property_readings_tbl(i).counter_property_id := p_ctr_property_readings_tbl(i).counter_property_id;
266 	          l_ctr_property_readings_tbl(i).property_value := p_ctr_property_readings_tbl(i).property_value;
267 	          l_ctr_property_readings_tbl(i).value_timestamp := p_ctr_property_readings_tbl(i).value_timestamp;
268 	          l_ctr_property_readings_tbl(i).attribute_category := p_ctr_property_readings_tbl(i).attribute_category;
269 	          l_ctr_property_readings_tbl(i).attribute1 := p_ctr_property_readings_tbl(i).attribute1;
270 	          l_ctr_property_readings_tbl(i).attribute2 := p_ctr_property_readings_tbl(i).attribute2;
271 	          l_ctr_property_readings_tbl(i).attribute3 := p_ctr_property_readings_tbl(i).attribute3;
272 	          l_ctr_property_readings_tbl(i).attribute4 := p_ctr_property_readings_tbl(i).attribute4;
273 	          l_ctr_property_readings_tbl(i).attribute5 := p_ctr_property_readings_tbl(i).attribute5;
274 	          l_ctr_property_readings_tbl(i).attribute6 := p_ctr_property_readings_tbl(i).attribute6;
275 	          l_ctr_property_readings_tbl(i).attribute7 := p_ctr_property_readings_tbl(i).attribute7;
276 	          l_ctr_property_readings_tbl(i).attribute8 := p_ctr_property_readings_tbl(i).attribute8;
277 	          l_ctr_property_readings_tbl(i).attribute9 := p_ctr_property_readings_tbl(i).attribute9;
278 	          l_ctr_property_readings_tbl(i).attribute10 := p_ctr_property_readings_tbl(i).attribute10;
279 	          l_ctr_property_readings_tbl(i).attribute11 := p_ctr_property_readings_tbl(i).attribute11;
280 	          l_ctr_property_readings_tbl(i).attribute12 := p_ctr_property_readings_tbl(i).attribute12;
281 	          l_ctr_property_readings_tbl(i).attribute13 := p_ctr_property_readings_tbl(i).attribute13;
282 	          l_ctr_property_readings_tbl(i).attribute14 := p_ctr_property_readings_tbl(i).attribute14;
283 	          l_ctr_property_readings_tbl(i).attribute15 := p_ctr_property_readings_tbl(i).attribute15;
284 	          l_ctr_property_readings_tbl(i).migrated_flag := p_ctr_property_readings_tbl(i).migrated_flag;
285 	          IF l_transaction = 'Y' THEN
286 	          	l_ctr_property_readings_tbl(i).parent_tbl_index := 1;
287 	          END IF;
288 	       END IF;
289 	    END LOOP;
290 	 END IF;
291 
292 	  -- Call to CSI API to create counter reading.
293      IF (l_plog) THEN
294 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
295 		'==================== Calling  Csi_Counter_Readings_PUB.Capture_Counter_reading ===================='
296 		||'x_return_status:'||x_return_status
297 				||' x_msg_count:'||x_msg_count
298 				||'x_msg_data:'||x_msg_data);
299      END IF;
300     Csi_Counter_Readings_PUB.Capture_Counter_reading(p_api_version => p_api_version,
301                                                      p_commit => p_commit,
302                                                      p_init_msg_list => p_init_msg_list,
303                                                      p_validation_level => FND_API.G_VALID_LEVEL_FULL,
304                                                      p_txn_tbl => l_csi_txn_tbl,
305                                                      p_ctr_rdg_tbl => l_ctr_rdg_tbl,
306                                                      p_ctr_prop_rdg_tbl => l_ctr_property_readings_tbl,
307                                                      x_return_status => x_return_status,
308                                                      x_msg_count => x_msg_count,
309                                                      x_msg_data => x_msg_data);
310     IF (l_plog) THEN
311 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
312 		'==================== Returning from  Csi_Counter_Readings_PUB.Capture_Counter_reading ===================='
313 		||'x_return_status:'||x_return_status
314 				||' x_msg_count:'||x_msg_count
315 				||'x_msg_data:'||x_msg_data);
316     END IF;
317 
318    x_meter_reading_id := l_ctr_rdg_tbl(1).counter_value_id;
319 
320 
321   -- End of API body.
322   -- Standard check of p_commit.
323   IF FND_API.To_Boolean( p_commit ) THEN
324     COMMIT WORK;
325     IF (l_plog) THEN
326 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'Committed Work');
327     END IF;
328   END IF;
329    IF (l_plog) THEN
330 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
331 		'==================== Exiting from EAM_MeterReading_PUB.create_meter_reading ====================');
332     END IF;
333 
334 
335 EXCEPTION
336     WHEN FND_API.G_EXC_ERROR THEN
337     ROLLBACK TO create_meter_reading_Pub;
338     x_return_status := FND_API.G_RET_STS_ERROR ;
339     IF (l_plog) THEN
340 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
341 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
342 		        '===================EAM_MeterReading_PUB.create_meter_readingr: EXPECTED ERROR======='||
343 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
344     END IF;
345     FND_MSG_PUB.Count_And_Get
346         (   p_count           =>      x_msg_count       ,
347               p_data            =>      x_msg_data
348         );
349     IF (l_plog) THEN
350 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
351 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
352     END IF;
353   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
354     ROLLBACK TO create_meter_reading_Pub;
355     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
356      IF (l_plog) THEN
357 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
358 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
359 		        '===================EAM_MeterReading_PUB.create_meter_readingr: UNEXPECTED ERROR======='||
360 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
361     END IF;
362     FND_MSG_PUB.Count_And_Get
363         (   p_count           =>      x_msg_count       ,
364               p_data            =>      x_msg_data
365         );
366 	IF (l_plog) THEN
367 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
368 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
369 	END IF;
370   WHEN OTHERS THEN
371     ROLLBACK TO create_meter_reading_Pub;
372     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
373       IF (l_plog) THEN
374 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
375 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
376 		        '=================== EAM_MeterReading_PUB.create_meter_reading: OTHERS ERROR=======');
377       END IF;
378       IF  FND_MSG_PUB.Check_Msg_Level
379       (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
380     THEN
381 	    IF (l_plog) THEN
382 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
383 				'==================== Calling FND_MSG_PUB.Add_Exc_Msg ====================');
384     	     END IF;
385             FND_MSG_PUB.Add_Exc_Msg
386               ( G_PKG_NAME        ,
387                 l_api_name
388           );
389 	  IF (l_plog) THEN
390 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
391 			'==================== Returned from FND_MSG_PUB.Add_Exc_Msg ====================');
392  	  END IF;
393     END IF;
394     IF (l_plog) THEN
395 		       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
396 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
397     END IF;
398      FND_MSG_PUB.Count_And_Get
399         (   p_count           =>      x_msg_count       ,
400               p_data            =>      x_msg_data
401         );
402 	IF (l_plog) THEN
403 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
404 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
405 	END IF;
406 END create_meter_reading;
407 
408 procedure create_meter_reading
409 (
410    p_api_version                IN             number,
411    p_init_msg_list              IN             varchar2 := FND_API.G_FALSE,
412    p_commit                     IN             varchar2 := FND_API.G_FALSE,
413    x_msg_count                  OUT  NOCOPY    number,
414    x_msg_data                   OUT  NOCOPY    varchar2,
415    x_return_status              OUT  NOCOPY    varchar2,
416    p_meter_reading_rec          IN             EAM_MeterReading_PUB.Meter_Reading_Rec_Type,
417    p_value_before_reset         IN             number := NULL,
418    p_ignore_warnings            IN             varchar2 := 'Y',
419    x_meter_reading_id           OUT  NOCOPY    number
420 )
421 IS
422 
423 l_api_name                CONSTANT varchar2(30) := 'create_meter_reading';
424 l_api_version             CONSTANT number     := 1.0;
425 l_ctr_property_readings_tbl        EAM_MeterReading_PUB.Ctr_Property_readings_Tbl;
426 l_msg_count                        NUMBER;
427 l_msg_data                         VARCHAR2(5000);
428 l_return_status                    VARCHAR2(1);
429 l_meter_reading_id                 NUMBER;
430 
431 l_module            varchar2(200) ;
432 l_log_level CONSTANT NUMBER := fnd_log.g_current_runtime_level;
433 l_uLog CONSTANT BOOLEAN := fnd_log.level_unexpected >= l_log_level;
434 l_pLog CONSTANT BOOLEAN := l_uLog AND fnd_log.level_procedure >= l_log_level;
435 l_sLog CONSTANT BOOLEAN := l_pLog AND fnd_log.level_statement >= l_log_level;
436 
437 
438 BEGIN
439   -- Standard Start of API savepoint
440     SAVEPOINT create_meter_reading_Pub;
441     IF (l_ulog) THEN
442        l_module := 'eam.plsql.'||g_pkg_name|| '.' || l_api_name;
443     END IF;
444 
445     IF (l_plog) THEN
446 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
447 		'==================== Entered EAM_MeterReading_PUB.create_meter_reading ====================');
448     END IF;
449     -- Standard call to check for call compatibility.
450 
451 
452     IF NOT FND_API.Compatible_API_Call (l_api_version,
453                                         p_api_version,
454                                         l_api_name,
455                                         G_PKG_NAME )
456     THEN
457       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
458     END IF;
459 
460 
461   -- Initialize message list if p_init_msg_list is set to TRUE.
462     IF FND_API.to_Boolean( p_init_msg_list ) THEN
463       FND_MSG_PUB.initialize;
464     END IF;
465 
466   --  Initialize API return status to success
467     x_return_status := FND_API.G_RET_STS_SUCCESS;
468 
469   -- API body
470     l_ctr_property_readings_tbl.DELETE;
471     IF (l_plog) THEN
472 		FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
473 		'==================== Calling EAM_MeterReading_PUB.create_meter_reading ===================='
474 		||'l_return_status:'||l_return_status
475 				||' l_msg_count:'||l_msg_count
476 				||'l_msg_data:'||l_msg_data);
477     END IF;
478     EAM_MeterReading_PUB.create_meter_reading(p_api_version => p_api_version,
479                      p_init_msg_list => p_init_msg_list,
480                      p_commit => p_commit,
481                      x_msg_count => l_msg_count,
482                      x_msg_data => l_msg_data,
483                      x_return_status => l_return_status,
484                      p_meter_reading_rec => p_meter_reading_rec,
485                      p_ctr_property_readings_tbl => l_ctr_property_readings_tbl,
486                      p_value_before_reset => p_value_before_reset,
487                      p_ignore_warnings => p_ignore_warnings,
488                      x_meter_reading_id => l_meter_reading_id);
489    IF (l_plog) THEN
490 		FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
491 		'==================== Returned from EAM_MeterReading_PUB.create_meter_reading ===================='
492 		||'l_return_status:'||l_return_status
493 				||' l_msg_count:'||l_msg_count
494 				||'l_msg_data:'||l_msg_data);
495     END IF;
496 
497   -- End of API body.
498   -- Standard check of p_commit.
499   IF FND_API.To_Boolean( p_commit ) THEN
500 
501     COMMIT WORK;
502      IF (l_plog) THEN
503 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'Commiting Work');
504      END IF;
505   END IF;
506   IF (l_plog) THEN
507 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
508 		'==================== Exiting EAM_MeterReading_PUB.create_meter_reading ====================');
509     END IF;
510 
511 
512 EXCEPTION
513     WHEN FND_API.G_EXC_ERROR THEN
514     ROLLBACK TO create_meter_reading_Pub;
515     x_return_status := FND_API.G_RET_STS_ERROR ;
516     IF (l_plog) THEN
517 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
518 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
519 		        '===================EAM_MeterReading_PUB.create_meter_reading: EXPECTED ERROR======='||
520 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
521     END IF;
522     FND_MSG_PUB.Count_And_Get
523         (   p_count           =>      x_msg_count       ,
524               p_data            =>      x_msg_data
525         );
526 	IF (l_plog) THEN
527 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
528 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
529 	END IF;
530   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
531     ROLLBACK TO create_meter_reading_Pub;
532     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
533     IF (l_plog) THEN
534 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
535 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
536 		        '===================EAM_MeterReading_PUB.create_meter_reading: UNEXPECTED ERROR======='||
537 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
538     END IF;
539     FND_MSG_PUB.Count_And_Get
540         (   p_count           =>      x_msg_count       ,
541               p_data            =>      x_msg_data
542         );
543 	IF (l_plog) THEN
544 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
545 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
546 	END IF;
547   WHEN OTHERS THEN
548     ROLLBACK TO create_meter_reading_Pub;
549     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
550     IF (l_plog) THEN
551 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
552 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
553 		        '===================EAM_MeterReading_PUB.create_meter_reading: OTHERS ERROR=======');
554     END IF;
555       IF  FND_MSG_PUB.Check_Msg_Level
556       (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
557     THEN
558               IF (l_plog) THEN
559 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
560 				'==================== Calling FND_MSG_PUB.Add_Exc_Msg ====================');
561 		END IF;
562             FND_MSG_PUB.Add_Exc_Msg
563               ( G_PKG_NAME        ,
564                 l_api_name
565           );
566 	  IF (l_plog) THEN
567 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
568 				'==================== Returned from FND_MSG_PUB.Add_Exc_Msg ====================');
569     	  END IF;
570     END IF;
571     IF (l_plog) THEN
572 		       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
573 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
574     END IF;
575     FND_MSG_PUB.Count_And_Get
576         (   p_count           =>      x_msg_count       ,
577               p_data            =>      x_msg_data
578         );
579 	IF (l_plog) THEN
580 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
581 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
582 	END IF;
583 END create_meter_reading;
584 
585 PROCEDURE disable_meter_reading
586 (
587   p_api_version         IN    NUMBER,
588   p_init_msg_list       IN    VARCHAR2:=FND_API.G_FALSE,
589   p_commit              IN    VARCHAR2:=FND_API.G_FALSE,
590   x_msg_count           OUT NOCOPY   NUMBER,
591   x_msg_data            OUT NOCOPY   VARCHAR2,
592   x_return_status       OUT NOCOPY   VARCHAR2,
593   p_meter_reading_id    IN    NUMBER:=null,
594   p_meter_id            IN    NUMBER:=null,
595   p_meter_reading_date  IN    DATE :=NULL
596 )
597 IS
598 
599 l_api_name                      CONSTANT VARCHAR2(30)   := 'disable_meter_reading';
600 l_api_version                   CONSTANT NUMBER                 := 1.0;
601 l_object_version_number                  Number;
602 l_ctr_rdg_tbl                            Csi_Ctr_Datastructures_PUB.Counter_Readings_Tbl;
603 
604 l_module             varchar2(200);
605 l_log_level CONSTANT NUMBER := fnd_log.g_current_runtime_level;
606 l_uLog CONSTANT BOOLEAN := fnd_log.level_unexpected >= l_log_level ;
607 l_pLog CONSTANT BOOLEAN := l_uLog AND fnd_log.level_procedure >= l_log_level;
608 l_sLog CONSTANT BOOLEAN := l_pLog AND fnd_log.level_statement >= l_log_level;
609 
610 BEGIN
611 
612  SAVEPOINT   disable_meter_reading_pub;
613    IF (l_ulog) THEN
614        l_module := 'eam.plsql.'||g_pkg_name|| '.' || l_api_name;
615   END IF;
616 
617   IF (l_plog) THEN
618 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
619 		'==================== Entered EAM_MeterReading_PUB.disable_meter_reading_pub ====================');
620   END IF;
621 -- Standard call to check for call compatibility.
622     IF NOT FND_API.Compatible_API_Call (  l_api_version         ,
623                               p_api_version         ,
624                         l_api_name        ,
625                             G_PKG_NAME )
626   THEN
627     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
628   END IF;
629 
630   -- Initialize message list if p_init_msg_list is set to TRUE.
631   IF FND_API.to_Boolean( p_init_msg_list ) THEN
632     FND_MSG_PUB.initialize;
633   END IF;
634 
635   --  Initialize API return status to success
636         x_return_status := FND_API.G_RET_STS_SUCCESS;
637 
638   -- API body
639 
640   l_ctr_rdg_tbl.DELETE;
641 
642   SELECT object_version_number
643   INTO l_object_version_number
644   FROM csi_counter_readings
645   WHERE counter_value_id = p_meter_reading_id;
646   IF (l_plog) THEN
647 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
648 		'l_object_version_number: '||l_object_version_number);
649   END IF;
650 
651   -- Assigning values for the Counter readings record
652   l_ctr_rdg_tbl(1).counter_id := p_meter_id;
653 	l_ctr_rdg_tbl(1).counter_value_id := p_meter_reading_id;
654 	l_ctr_rdg_tbl(1).value_timestamp:= p_meter_reading_date;
655 	l_ctr_rdg_tbl(1).object_version_number:= l_object_version_number;
656 	l_ctr_rdg_tbl(1).disabled_flag := 'Y';
657 
658 	-- Call to CSI API to disable counter reading.
659 	IF (l_plog) THEN
660 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
661 		'==================== Calling Csi_Counter_Readings_PUB.Update_Counter_Reading ===================='
662 		||'x_return_status:'||x_return_status
663 				||' x_msg_count:'||x_msg_count
664 				||'x_msg_data:'||x_msg_data);
665 	END IF;
666 	 Csi_Counter_Readings_PUB.Update_Counter_Reading (p_api_version => p_api_version,
667                                                     p_commit => p_commit,
668                                                     p_init_msg_list => p_init_msg_list,
669                                                     p_validation_level => FND_API.G_VALID_LEVEL_FULL,
670                                                     p_ctr_rdg_tbl => l_ctr_rdg_tbl,
671                                                     x_return_status => x_return_status,
672                                                     x_msg_count => x_msg_count,
673                                                     x_msg_data => x_msg_data);
674 	IF (l_plog) THEN
675 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
676 		'==================== Exiting from Csi_Counter_Readings_PUB.Update_Counter_Reading ===================='
677 		||'x_return_status:'||x_return_status
678 				||' x_msg_count:'||x_msg_count
679 				||'x_msg_data:'||x_msg_data);
680 	END IF;
681 
682   -- End of API body.
683   -- Standard check of p_commit.
684   IF FND_API.To_Boolean( p_commit ) THEN
685     COMMIT WORK;
686     IF (l_plog) THEN
687 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'Committed Work');
688     END IF;
689   END IF;
690 IF (l_plog) THEN
691 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
692 		'==================== Exiting EAM_MeterReading_PUB.disable_meter_reading_pub ====================');
693   END IF;
694 EXCEPTION
695     WHEN FND_API.G_EXC_ERROR THEN
696 
697     ROLLBACK TO disable_meter_reading_pub;
698     x_return_status := FND_API.G_RET_STS_ERROR ;
699     IF (l_plog) THEN
700 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO disable_meter_reading_pub');
701 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
702 		        '===================EAM_MeterReading_PUB.disable_meter_reading_pub: EXPECTED ERROR======='||
703 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
704     END IF;
705     FND_MSG_PUB.Count_And_Get
706         (   p_count           =>      x_msg_count       ,
707               p_data            =>      x_msg_data
708         );
709 	IF (l_plog) THEN
710 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
711 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
712  		END IF;
713   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
714 
715     ROLLBACK TO disable_meter_reading_pub;
716     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
717     IF (l_plog) THEN
718 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO disable_meter_reading_pub');
719 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
720 		        '===================EAM_MeterReading_PUB.disable_meter_reading_pub: UNEXPECTED ERROR======='||
721 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
722     END IF;
723     FND_MSG_PUB.Count_And_Get
724         (   p_count           =>      x_msg_count       ,
725               p_data            =>      x_msg_data
726         );
727 	IF (l_plog) THEN
728 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
729 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
730  		END IF;
731   WHEN OTHERS THEN
732 
733     ROLLBACK TO disable_meter_reading_pub;
734     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
735 	IF (l_plog) THEN
736 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO disable_meter_reading_pub');
737 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
738 		        '===================EAM_MeterReading_PUB.disable_meter_reading_pub: OTHERS ERROR=======');
739 	END IF;
740       IF  FND_MSG_PUB.Check_Msg_Level
741       (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
742     THEN
743           IF (l_plog) THEN
744 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
745 				'==================== Calling FND_MSG_PUB.Add_Exc_Msg ====================');
746 	   END IF;
747             FND_MSG_PUB.Add_Exc_Msg
748               ( G_PKG_NAME        ,
749                 l_api_name
750           );
751           IF (l_plog) THEN
752 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
753 				'==================== Returned from FND_MSG_PUB.Add_Exc_Msg ====================');
754 	END IF;
755     END IF;
756 	IF (l_plog) THEN
757 		       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
758 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
759 	END IF;
760     FND_MSG_PUB.Count_And_Get
761         (   p_count           =>      x_msg_count       ,
762               p_data            =>      x_msg_data
763         );
764 	IF (l_plog) THEN
765 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
766 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
767  		END IF;
768 
769 END disable_meter_reading;
770 
771 END EAM_METERREADING_PUB;