DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_METERREADING_PUB

Source


1 PACKAGE BODY EAM_METERREADING_PUB as
2 /* $Header: EAMPMTRB.pls 120.7 2011/08/11 15:01:14 srkotika 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    /*bug 12835231 start*/
498     x_return_status    := l_return_status;
499     x_msg_count        := l_msg_count;
500     x_msg_data         := l_msg_data;
501     x_meter_reading_id := l_meter_reading_id;
502   /* end */
503 
504   -- End of API body.
505   -- Standard check of p_commit.
506   IF FND_API.To_Boolean( p_commit ) THEN
507 
508     COMMIT WORK;
509      IF (l_plog) THEN
510 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'Commiting Work');
511      END IF;
512   END IF;
513   IF (l_plog) THEN
514 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
515 		'==================== Exiting EAM_MeterReading_PUB.create_meter_reading ====================');
516     END IF;
517 
518 
519 EXCEPTION
520     WHEN FND_API.G_EXC_ERROR THEN
521     ROLLBACK TO create_meter_reading_Pub;
522     x_return_status := FND_API.G_RET_STS_ERROR ;
523     IF (l_plog) THEN
524 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
525 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
526 		        '===================EAM_MeterReading_PUB.create_meter_reading: EXPECTED ERROR======='||
527 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
528     END IF;
529     FND_MSG_PUB.Count_And_Get
530         (   p_count           =>      x_msg_count       ,
531               p_data            =>      x_msg_data
532         );
533 	IF (l_plog) THEN
534 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
535 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
536 	END IF;
537   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
538     ROLLBACK TO create_meter_reading_Pub;
539     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
540     IF (l_plog) THEN
541 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
542 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
543 		        '===================EAM_MeterReading_PUB.create_meter_reading: UNEXPECTED ERROR======='||
544 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
545     END IF;
546     FND_MSG_PUB.Count_And_Get
547         (   p_count           =>      x_msg_count       ,
548               p_data            =>      x_msg_data
549         );
550 	IF (l_plog) THEN
551 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
552 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
553 	END IF;
554   WHEN OTHERS THEN
555     ROLLBACK TO create_meter_reading_Pub;
556     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
557     IF (l_plog) THEN
558 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_reading_Pub');
559 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
560 		        '===================EAM_MeterReading_PUB.create_meter_reading: OTHERS ERROR=======');
561     END IF;
562       IF  FND_MSG_PUB.Check_Msg_Level
563       (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
564     THEN
565               IF (l_plog) THEN
566 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
567 				'==================== Calling FND_MSG_PUB.Add_Exc_Msg ====================');
568 		END IF;
569             FND_MSG_PUB.Add_Exc_Msg
570               ( G_PKG_NAME        ,
571                 l_api_name
572           );
573 	  IF (l_plog) THEN
574 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
575 				'==================== Returned from FND_MSG_PUB.Add_Exc_Msg ====================');
576     	  END IF;
577     END IF;
578     IF (l_plog) THEN
579 		       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
580 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
581     END IF;
582     FND_MSG_PUB.Count_And_Get
583         (   p_count           =>      x_msg_count       ,
584               p_data            =>      x_msg_data
585         );
586 	IF (l_plog) THEN
587 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
588 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
589 	END IF;
590 END create_meter_reading;
591 
592 PROCEDURE disable_meter_reading
593 (
594   p_api_version         IN    NUMBER,
595   p_init_msg_list       IN    VARCHAR2:=FND_API.G_FALSE,
596   p_commit              IN    VARCHAR2:=FND_API.G_FALSE,
597   x_msg_count           OUT NOCOPY   NUMBER,
598   x_msg_data            OUT NOCOPY   VARCHAR2,
599   x_return_status       OUT NOCOPY   VARCHAR2,
600   p_meter_reading_id    IN    NUMBER:=null,
601   p_meter_id            IN    NUMBER:=null,
602   p_meter_reading_date  IN    DATE :=NULL
603 )
604 IS
605 
606 l_api_name                      CONSTANT VARCHAR2(30)   := 'disable_meter_reading';
607 l_api_version                   CONSTANT NUMBER                 := 1.0;
608 l_object_version_number                  Number;
609 l_ctr_rdg_tbl                            Csi_Ctr_Datastructures_PUB.Counter_Readings_Tbl;
610 
611 l_module             varchar2(200);
612 l_log_level CONSTANT NUMBER := fnd_log.g_current_runtime_level;
613 l_uLog CONSTANT BOOLEAN := fnd_log.level_unexpected >= l_log_level ;
614 l_pLog CONSTANT BOOLEAN := l_uLog AND fnd_log.level_procedure >= l_log_level;
615 l_sLog CONSTANT BOOLEAN := l_pLog AND fnd_log.level_statement >= l_log_level;
616 
617 BEGIN
618 
619  SAVEPOINT   disable_meter_reading_pub;
620    IF (l_ulog) THEN
621        l_module := 'eam.plsql.'||g_pkg_name|| '.' || l_api_name;
622   END IF;
623 
624   IF (l_plog) THEN
625 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
626 		'==================== Entered EAM_MeterReading_PUB.disable_meter_reading_pub ====================');
627   END IF;
628 -- Standard call to check for call compatibility.
629     IF NOT FND_API.Compatible_API_Call (  l_api_version         ,
630                               p_api_version         ,
631                         l_api_name        ,
632                             G_PKG_NAME )
633   THEN
634     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
635   END IF;
636 
637   -- Initialize message list if p_init_msg_list is set to TRUE.
638   IF FND_API.to_Boolean( p_init_msg_list ) THEN
639     FND_MSG_PUB.initialize;
640   END IF;
641 
642   --  Initialize API return status to success
643         x_return_status := FND_API.G_RET_STS_SUCCESS;
644 
645   -- API body
646 
647   l_ctr_rdg_tbl.DELETE;
648 
649   SELECT object_version_number
650   INTO l_object_version_number
651   FROM csi_counter_readings
652   WHERE counter_value_id = p_meter_reading_id;
653   IF (l_plog) THEN
654 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
655 		'l_object_version_number: '||l_object_version_number);
656   END IF;
657 
658   -- Assigning values for the Counter readings record
659   l_ctr_rdg_tbl(1).counter_id := p_meter_id;
660 	l_ctr_rdg_tbl(1).counter_value_id := p_meter_reading_id;
661 	l_ctr_rdg_tbl(1).value_timestamp:= p_meter_reading_date;
662 	l_ctr_rdg_tbl(1).object_version_number:= l_object_version_number;
663 	l_ctr_rdg_tbl(1).disabled_flag := 'Y';
664 
665 	-- Call to CSI API to disable counter reading.
666 	IF (l_plog) THEN
667 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
668 		'==================== Calling Csi_Counter_Readings_PUB.Update_Counter_Reading ===================='
669 		||'x_return_status:'||x_return_status
670 				||' x_msg_count:'||x_msg_count
671 				||'x_msg_data:'||x_msg_data);
672 	END IF;
673 	 Csi_Counter_Readings_PUB.Update_Counter_Reading (p_api_version => p_api_version,
674                                                     p_commit => p_commit,
675                                                     p_init_msg_list => p_init_msg_list,
676                                                     p_validation_level => FND_API.G_VALID_LEVEL_FULL,
677                                                     p_ctr_rdg_tbl => l_ctr_rdg_tbl,
678                                                     x_return_status => x_return_status,
679                                                     x_msg_count => x_msg_count,
680                                                     x_msg_data => x_msg_data);
681 	IF (l_plog) THEN
682 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
683 		'==================== Exiting from Csi_Counter_Readings_PUB.Update_Counter_Reading ===================='
684 		||'x_return_status:'||x_return_status
685 				||' x_msg_count:'||x_msg_count
686 				||'x_msg_data:'||x_msg_data);
687 	END IF;
688 
689   -- End of API body.
690   -- Standard check of p_commit.
691   IF FND_API.To_Boolean( p_commit ) THEN
692     COMMIT WORK;
693     IF (l_plog) THEN
694 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'Committed Work');
695     END IF;
696   END IF;
697 IF (l_plog) THEN
698 	        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
699 		'==================== Exiting EAM_MeterReading_PUB.disable_meter_reading_pub ====================');
700   END IF;
701 EXCEPTION
702     WHEN FND_API.G_EXC_ERROR THEN
703 
704     ROLLBACK TO disable_meter_reading_pub;
705     x_return_status := FND_API.G_RET_STS_ERROR ;
706     IF (l_plog) THEN
707 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO disable_meter_reading_pub');
708 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
709 		        '===================EAM_MeterReading_PUB.disable_meter_reading_pub: EXPECTED ERROR======='||
710 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
711     END IF;
712     FND_MSG_PUB.Count_And_Get
713         (   p_count           =>      x_msg_count       ,
714               p_data            =>      x_msg_data
715         );
716 	IF (l_plog) THEN
717 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
718 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
719  		END IF;
720   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
721 
722     ROLLBACK TO disable_meter_reading_pub;
723     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
724     IF (l_plog) THEN
725 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO disable_meter_reading_pub');
726 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
727 		        '===================EAM_MeterReading_PUB.disable_meter_reading_pub: UNEXPECTED ERROR======='||
728 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
729     END IF;
730     FND_MSG_PUB.Count_And_Get
731         (   p_count           =>      x_msg_count       ,
732               p_data            =>      x_msg_data
733         );
734 	IF (l_plog) THEN
735 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
736 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
737  		END IF;
738   WHEN OTHERS THEN
739 
740     ROLLBACK TO disable_meter_reading_pub;
741     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
742 	IF (l_plog) THEN
743 		     FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO disable_meter_reading_pub');
744 	             FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
745 		        '===================EAM_MeterReading_PUB.disable_meter_reading_pub: OTHERS ERROR=======');
746 	END IF;
747       IF  FND_MSG_PUB.Check_Msg_Level
748       (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
749     THEN
750           IF (l_plog) THEN
751 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
752 				'==================== Calling FND_MSG_PUB.Add_Exc_Msg ====================');
753 	   END IF;
754             FND_MSG_PUB.Add_Exc_Msg
755               ( G_PKG_NAME        ,
756                 l_api_name
757           );
758           IF (l_plog) THEN
759 				 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
760 				'==================== Returned from FND_MSG_PUB.Add_Exc_Msg ====================');
761 	END IF;
762     END IF;
763 	IF (l_plog) THEN
764 		       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
765 			'==================== Calling FND_MSG_PUB.Count_And_Get ====================');
766 	END IF;
767     FND_MSG_PUB.Count_And_Get
768         (   p_count           =>      x_msg_count       ,
769               p_data            =>      x_msg_data
770         );
771 	IF (l_plog) THEN
772 			 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
773 			'==================== Returned from FND_MSG_PUB.Count_And_Get ====================');
774  		END IF;
775 
776 END disable_meter_reading;
777 
778 END EAM_METERREADING_PUB;