[Home] [Help]
PACKAGE BODY: APPS.EAM_METER_PUB
Source
1 PACKAGE BODY EAM_METER_PUB AS
2 /* $Header: EAMPMETB.pls 120.19.12020000.2 2013/03/21 12:28:06 antmishr ship $ */
3
4 /* for de-bugging */
5 /* g_sr_no number ; */
6
7 PROCEDURE print_log(info varchar2) is
8 PRAGMA AUTONOMOUS_TRANSACTION;
9 l_dummy number;
10 BEGIN
11 FND_FILE.PUT_LINE(FND_FILE.LOG, info);
12
13 END;
14
15 -- Start of comments
16 -- API name : create_meter
17 -- Type : Public
18 -- Function :
19 -- Pre-reqs : None.
20 -- Parameters :
21 -- IN : p_api_version IN NUMBER Required
22 -- p_init_msg_list IN VARCHAR2 Optional
23 -- Default = FND_API.G_FALSE
24 -- p_commit IN VARCHAR2 Optional
25 -- Default = FND_API.G_FALSE
26 -- p_validation_level IN NUMBER Optional
27 -- Default = FND_API.G_VALID_LEVEL_FULL
28 -- parameter1
29 -- parameter2
30
31 -- OUT : x_return_status OUT VARCHAR2(1)
32 -- x_msg_count OUT NUMBER
33 -- x_msg_data OUT VARCHAR2(2000)
34 -- Version : Current version 1.0
35 -- End of comments
36
37
38 procedure create_meter
39 (
40 p_api_version IN Number ,
41 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
42 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
43 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
44 x_return_status OUT nocopy VARCHAR2,
45 x_msg_count OUT nocopy NUMBER,
46 x_msg_data OUT nocopy VARCHAR2,
47 p_meter_name IN VARCHAR2,
48 p_meter_uom IN VARCHAR2,
49 p_meter_type IN NUMBER default 1,
50 p_VALUE_CHANGE_DIR IN NUMBER DEFAULT 1,
51 p_USED_IN_SCHEDULING IN VARCHAR2 default 'N',
52 p_USER_DEFINED_RATE IN NUMBER default null,
53 p_USE_PAST_READING IN NUMBER default null,
54 p_DESCRIPTION IN VARCHAR2 default null,
55 p_FROM_EFFECTIVE_DATE IN DATE default null,
56 p_TO_EFFECTIVE_DATE IN DATE default null,
57 p_source_meter_id IN Number DEFAULT NULL,
58 p_factor IN NUMBER DEFAULT 1,
59 p_relationship_start_date IN DATE default null,
60 p_ATTRIBUTE_CATEGORY IN VARCHAR2 default null,
61 p_ATTRIBUTE1 IN VARCHAR2 default null,
62 p_ATTRIBUTE2 IN VARCHAR2 default null,
63 p_ATTRIBUTE3 IN VARCHAR2 default null,
64 p_ATTRIBUTE4 IN VARCHAR2 default null,
65 p_ATTRIBUTE5 IN VARCHAR2 default null,
66 p_ATTRIBUTE6 IN VARCHAR2 default null,
67 p_ATTRIBUTE7 IN VARCHAR2 default null,
68 p_ATTRIBUTE8 IN VARCHAR2 default null,
69 p_ATTRIBUTE9 IN VARCHAR2 default null,
70 p_ATTRIBUTE10 IN VARCHAR2 default null,
71 p_ATTRIBUTE11 IN VARCHAR2 default null,
72 p_ATTRIBUTE12 IN VARCHAR2 default null,
73 p_ATTRIBUTE13 IN VARCHAR2 default null,
74 p_ATTRIBUTE14 IN VARCHAR2 default null,
75 p_ATTRIBUTE15 IN VARCHAR2 default null,
76 p_ATTRIBUTE16 IN VARCHAR2 default null,
77 p_ATTRIBUTE17 IN VARCHAR2 default null,
78 p_ATTRIBUTE18 IN VARCHAR2 default null,
79 p_ATTRIBUTE19 IN VARCHAR2 default null,
80 p_ATTRIBUTE20 IN VARCHAR2 default null,
81 p_ATTRIBUTE21 IN VARCHAR2 default null,
82 p_ATTRIBUTE22 IN VARCHAR2 default null,
83 p_ATTRIBUTE23 IN VARCHAR2 default null,
84 p_ATTRIBUTE24 IN VARCHAR2 default null,
85 p_ATTRIBUTE25 IN VARCHAR2 default null,
86 p_ATTRIBUTE26 IN VARCHAR2 default null,
87 p_ATTRIBUTE27 IN VARCHAR2 default null,
88 p_ATTRIBUTE28 IN VARCHAR2 default null,
89 p_ATTRIBUTE29 IN VARCHAR2 default null,
90 p_ATTRIBUTE30 IN VARCHAR2 default null,
91 p_TMPL_FLAG IN VARCHAR2 default 'N',
92 p_SOURCE_TMPL_ID IN Number default null,
93 p_INITIAL_READING IN NUMBER default 0,
94 P_INITIAL_READING_DATE IN DATE default SYSDATE,
95 P_EAM_REQUIRED_FLAG IN VARCHAR2 default 'N',
96 x_new_meter_id OUT nocopy Number
97
98 )
99 is
100
101 l_api_name CONSTANT VARCHAR2(30) := 'create_meter';
102 l_api_version CONSTANT NUMBER := 1.0;
103 l_meter_id number;
104 l_validated boolean;
105 l_meter_reading_id number;
106 l_initial_reading number;
107 l_tmpl_flag varchar2(30);
108 l_meter_type number;
109 l_value_before_reset Number;
110 l_INITIAL_READING_DATE date;
111 l_commit VARCHAR2(1);
112 l_init_msg_list VARCHAR2(1);
113 l_validation_level NUMBER;
114 l_counter_instance_rec CSI_CTR_DATASTRUCTURES_PUB.Counter_instance_rec;
115 l_counter_template_rec CSI_CTR_DATASTRUCTURES_PUB.Counter_template_rec;
116 l_ctr_properties_tbl CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_tbl;
117 l_counter_relationships_tbl CSI_CTR_DATASTRUCTURES_PUB.counter_relationships_tbl;
118 l_ctr_derived_filters_tbl CSI_CTR_DATASTRUCTURES_PUB.ctr_derived_filters_tbl;
119 l_counter_associations_tbl CSI_CTR_DATASTRUCTURES_PUB.counter_associations_tbl;
120 l_ctr_item_associations_tbl CSI_CTR_DATASTRUCTURES_PUB.ctr_item_associations_tbl;
121 l_ctr_property_template_tbl CSI_CTR_DATASTRUCTURES_PUB.ctr_property_template_tbl;
122 l_meter_reading_rec Eam_MeterReading_PUB.Meter_Reading_Rec_Type;
123 l_ctr_property_readings_tbl EAM_MeterReading_PUB.Ctr_Property_readings_Tbl;
124 l_object_version_number Number;
125
126 l_module varchar2(200) ;
127 l_log_level CONSTANT NUMBER := fnd_log.g_current_runtime_level;
128 l_uLog CONSTANT BOOLEAN := fnd_log.level_unexpected >= l_log_level ;
129 l_pLog CONSTANT BOOLEAN := l_uLog AND fnd_log.level_procedure >= l_log_level;
130 l_sLog CONSTANT BOOLEAN := l_pLog AND fnd_log.level_statement >= l_log_level;
131
132 begin
133
134 -- Standard Start of API savepoint
135 SAVEPOINT create_meter_pub;
136 if( l_ulog) then
137 l_module := 'eam.plsql.'||g_pkg_name|| '.' || l_api_name;
138 end if;
139
140 IF (l_plog) THEN
141 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
142 '==================== Entered EAM_METER_PUB.create_meter ====================');
143 END IF;
144
145 -- Standard call to check for call compatibility.
146 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
147 p_api_version ,
148 l_api_name ,
149 G_PKG_NAME )
150 THEN
151 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
152 END IF;
153
154 l_commit := p_commit;
155 l_init_msg_list := p_init_msg_list;
156 l_validation_level := p_validation_level;
157
158 IF l_commit IS NULL THEN
159 l_commit := FND_API.G_TRUE;
160 END IF;
161
162 IF l_init_msg_list IS NULL THEN
163 l_init_msg_list := FND_API.G_TRUE;
164 END IF;
165
166 IF l_validation_level IS NULL THEN
167 l_validation_level := FND_API.G_VALID_LEVEL_FULL;
168 END IF;
169
170 -- Initialize message list if p_init_msg_list is set to TRUE.
171 IF FND_API.to_Boolean( l_init_msg_list ) THEN
172 FND_MSG_PUB.initialize;
173 END IF;
174
175 -- Initialize API return status to success
176 x_return_status := FND_API.G_RET_STS_SUCCESS;
177
178 -- API body
179
180 l_ctr_properties_tbl.DELETE;
181 l_counter_relationships_tbl.DELETE;
182 l_ctr_derived_filters_tbl.DELETE;
183 l_counter_associations_tbl.DELETE;
184 l_ctr_property_readings_tbl.DELETE;
185
186
187 if (p_tmpl_flag is null) then
188 l_tmpl_flag:='N';
189 else
190 l_tmpl_flag:=p_tmpl_flag;
191 end if;
192
193 if (p_meter_type is null) then
194 l_meter_type:=1;
195 else
196 l_meter_type:=p_meter_type;
197 end if;
198
199 if (p_initial_reading is null) then
200 l_initial_reading:=0;
201 else
202 l_initial_reading:=p_initial_reading;
203 end if;
204
205 IF l_tmpl_flag = 'N' THEN
206 l_counter_instance_rec.name := p_meter_name;
207 IF p_value_change_dir = 1 THEN
208 l_counter_instance_rec.direction := 'A';
209 ELSIF p_value_change_dir = 2 THEN
210 l_counter_instance_rec.direction := 'D';
211 ELSE l_counter_instance_rec.direction := 'B';
212 END IF;
213
214 l_counter_instance_rec.counter_type := 'REGULAR';
215 l_counter_instance_rec.initial_reading := p_initial_reading;
216 l_counter_instance_rec.initial_reading_date := p_initial_reading_date;
217 l_counter_instance_rec.created_from_counter_tmpl_id := p_source_tmpl_id;
218 l_counter_instance_rec.uom_code := p_meter_uom;
219 l_counter_instance_rec.start_date_active := p_from_effective_date;
220 l_counter_instance_rec.end_date_active := p_to_effective_date;
221 l_counter_instance_rec.reading_type := p_meter_type;
222
223 l_counter_instance_rec.default_usage_rate := p_user_defined_rate;
224 l_counter_instance_rec.use_past_reading := p_use_past_reading;
225 l_counter_instance_rec.used_in_scheduling := p_used_in_scheduling;
226 l_counter_instance_rec.description := p_description;
227 l_counter_instance_rec.time_based_manual_entry := 'Y';
228 l_counter_instance_rec.eam_required_flag := p_eam_required_flag;
229 l_counter_instance_rec.attribute_category := p_attribute_category;
230 l_counter_instance_rec.attribute1 := p_attribute1;
231 l_counter_instance_rec.attribute2 := p_attribute2;
232 l_counter_instance_rec.attribute3 := p_attribute3;
233 l_counter_instance_rec.attribute4 := p_attribute4;
234 l_counter_instance_rec.attribute5 := p_attribute5;
235 l_counter_instance_rec.attribute6 := p_attribute6;
236 l_counter_instance_rec.attribute7 := p_attribute7;
237 l_counter_instance_rec.attribute8 := p_attribute8;
238 l_counter_instance_rec.attribute9 := p_attribute9;
239 l_counter_instance_rec.attribute10 := p_attribute10;
240 l_counter_instance_rec.attribute11 := p_attribute11;
241 l_counter_instance_rec.attribute12 := p_attribute12;
242 l_counter_instance_rec.attribute13 := p_attribute13;
243 l_counter_instance_rec.attribute14 := p_attribute14;
244 l_counter_instance_rec.attribute15 := p_attribute15;
245 l_counter_instance_rec.attribute16 := p_attribute16;
246 l_counter_instance_rec.attribute17 := p_attribute17;
247 l_counter_instance_rec.attribute18 := p_attribute18;
248 l_counter_instance_rec.attribute19 := p_attribute19;
249 l_counter_instance_rec.attribute20 := p_attribute20;
250 l_counter_instance_rec.attribute21 := p_attribute21;
251 l_counter_instance_rec.attribute22 := p_attribute22;
252 l_counter_instance_rec.attribute23 := p_attribute23;
253 l_counter_instance_rec.attribute24 := p_attribute24;
254 l_counter_instance_rec.attribute25 := p_attribute25;
255 l_counter_instance_rec.attribute26 := p_attribute26;
256 l_counter_instance_rec.attribute27 := p_attribute27;
257 l_counter_instance_rec.attribute28 := p_attribute28;
258 l_counter_instance_rec.attribute29 := p_attribute29;
259 l_counter_instance_rec.attribute30 := p_attribute30;
260
261 IF (l_plog) THEN
262 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
263 '==================== Calling CSI_COUNTER_PUB.create_counter ===================='
264 ||'x_return_status:'||x_return_status
265 ||' x_msg_count:'||x_msg_count
266 ||'x_msg_data:'||x_msg_data);
267 END IF;
268 CSI_COUNTER_PUB.create_counter(p_api_version,
269 l_init_msg_list,
270 l_commit,
271 l_validation_level,
272 l_counter_instance_rec,
273 l_ctr_properties_tbl,
274 l_counter_relationships_tbl,
275 l_ctr_derived_filters_tbl,
276 l_counter_associations_tbl,
277 x_return_status,
278 x_msg_count,
279 x_msg_data,
280 x_new_meter_id);
281
282 IF (l_plog) THEN
283 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
284 '==================== Returned from CSI_COUNTER_PUB.create_counter ===================='
285 ||'x_return_status:'||x_return_status
286 ||' x_msg_count:'||x_msg_count
287 ||'x_msg_data:'||x_msg_data);
288 END IF;
289
290 IF p_source_meter_id IS NOT NULL THEN
291
292 l_counter_relationships_tbl(1).relationship_type_code := 'CONFIGURATION';
293 l_counter_relationships_tbl(1).source_counter_id := p_source_meter_id;
294 l_counter_relationships_tbl(1).factor := p_factor;
295 l_counter_relationships_tbl(1).active_start_date := p_relationship_start_date;
296 l_counter_relationships_tbl(1).active_end_date := to_date(null);
297
298
299 SELECT object_version_number
300 INTO l_object_version_number
301 FROM CSI_COUNTERS_B
302 WHERE counter_id = x_new_meter_id;
303
304 l_counter_instance_rec.counter_id := x_new_meter_id;
305 l_counter_instance_rec.object_version_number := l_object_version_number;
306
307 IF (l_plog) THEN
308 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
309 '==================== Calling CSI_COUNTER_PUB.update_counter ===================='
310 ||'x_return_status:'||x_return_status
311 ||' x_msg_count:'||x_msg_count
312 ||'x_msg_data:'||x_msg_data);
313 END IF;
314 CSI_COUNTER_PUB.update_counter(p_api_version,
315 l_init_msg_list,
316 l_commit,
317 l_validation_level,
318 l_counter_instance_rec,
319 l_ctr_properties_tbl,
320 l_counter_relationships_tbl,
321 l_ctr_derived_filters_tbl,
322 l_counter_associations_tbl,
323 x_return_status,
324 x_msg_count,
325 x_msg_data);
326
327 IF (l_plog) THEN
328 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
329 '==================== Returning from CSI_COUNTER_PUB.update_counter ===================='
330 ||'x_return_status:'||x_return_status
331 ||' x_msg_count:'||x_msg_count
332 ||'x_msg_data:'||x_msg_data);
333 END IF;
334
335 END IF;
336
337 --for template meters
338 ELSE
339 l_counter_template_rec.name := p_meter_name;
340 l_counter_template_rec.counter_type := 'REGULAR';
341 IF p_value_change_dir = 1 THEN
342 l_counter_template_rec.direction := 'A';
343 ELSIF p_value_change_dir = 2 THEN
344 l_counter_template_rec.direction := 'D';
345 ELSE l_counter_template_rec.direction := 'B';
346 END IF;
347 l_counter_template_rec.initial_reading := p_initial_reading;
348 l_counter_template_rec.initial_reading_date := p_initial_reading_date;
349 l_counter_template_rec.uom_code := p_meter_uom;
350 l_counter_template_rec.start_date_active := p_from_effective_date;
351 l_counter_template_rec.end_date_active := p_to_effective_date;
352 l_counter_template_rec.reading_type := p_meter_type;
353 l_counter_template_rec.default_usage_rate := p_user_defined_rate;
354 l_counter_template_rec.use_past_reading := p_use_past_reading;
355 l_counter_template_rec.used_in_scheduling := p_used_in_scheduling;
356 l_counter_template_rec.description := p_description;
357 l_counter_template_rec.time_based_manual_entry := 'Y';
358 l_counter_template_rec.eam_required_flag := p_eam_required_flag;
359 l_counter_template_rec.attribute_category := p_attribute_category;
360 l_counter_template_rec.attribute1 := p_attribute1;
361 l_counter_template_rec.attribute2 := p_attribute2;
362 l_counter_template_rec.attribute3 := p_attribute3;
363 l_counter_template_rec.attribute4 := p_attribute4;
364 l_counter_template_rec.attribute5 := p_attribute5;
365 l_counter_template_rec.attribute6 := p_attribute6;
366 l_counter_template_rec.attribute7 := p_attribute7;
367 l_counter_template_rec.attribute8 := p_attribute8;
368 l_counter_template_rec.attribute9 := p_attribute9;
369 l_counter_template_rec.attribute10 := p_attribute10;
370 l_counter_template_rec.attribute11 := p_attribute11;
371 l_counter_template_rec.attribute12 := p_attribute12;
372 l_counter_template_rec.attribute13 := p_attribute13;
373 l_counter_template_rec.attribute14 := p_attribute14;
374 l_counter_template_rec.attribute15 := p_attribute15;
375 l_counter_template_rec.attribute16 := p_attribute16;
376 l_counter_template_rec.attribute17 := p_attribute17;
377 l_counter_template_rec.attribute18 := p_attribute18;
378 l_counter_template_rec.attribute19 := p_attribute19;
379 l_counter_template_rec.attribute20 := p_attribute20;
380 l_counter_template_rec.attribute21 := p_attribute21;
381 l_counter_template_rec.attribute22 := p_attribute22;
382 l_counter_template_rec.attribute23 := p_attribute23;
383 l_counter_template_rec.attribute24 := p_attribute24;
384 l_counter_template_rec.attribute25 := p_attribute25;
385 l_counter_template_rec.attribute26 := p_attribute26;
386 l_counter_template_rec.attribute27 := p_attribute27;
387 l_counter_template_rec.attribute28 := p_attribute28;
388 l_counter_template_rec.attribute29 := p_attribute29;
389 l_counter_template_rec.attribute30 := p_attribute30;
390 IF (l_plog) THEN
391 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
392 '==================== Calling csi_counter_template_pub.create_counter_template ===================='
393 ||'x_return_status:'||x_return_status
394 ||' x_msg_count:'||x_msg_count
395 ||'x_msg_data:'||x_msg_data);
396 END IF;
397 csi_counter_template_pub.create_counter_template(p_api_version,
398 l_commit,
399 l_init_msg_list,
400 l_validation_level,
401 l_counter_template_rec,
402 l_ctr_item_associations_tbl,
403 l_ctr_property_template_tbl,
404 l_counter_relationships_tbl,
405 l_ctr_derived_filters_tbl,
406 x_return_status,
407 x_msg_count,
408 x_msg_data);
409 IF (l_plog) THEN
410 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
411 '==================== Returning from csi_counter_template_pub.create_counter_template ===================='
412 ||'x_return_status:'||x_return_status
413 ||' x_msg_count:'||x_msg_count
414 ||'x_msg_data:'||x_msg_data);
415 END IF;
416 END IF;
417 --end of check for meter/meter template
418
419
420 -- End of API body.
421 -- Standard check of l_commit.
422 IF FND_API.To_Boolean( l_commit ) THEN
423
424 COMMIT WORK;
425 IF (l_plog) THEN
426 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'Commiting Work');
427 END IF;
428 END IF;
429 -- Standard call to get message count and if count is 1, get message info.
430 FND_MSG_PUB.get
431 ( p_msg_index_out => x_msg_count ,
432 p_data => x_msg_data
433 );
434 x_msg_data := substr(x_msg_data,1,4000);
435 IF (l_plog) THEN
436 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
437 '==================== Exiting from EAM_METER_PUB.create_meter ====================');
438 END IF;
439
440 EXCEPTION
441 WHEN FND_API.G_EXC_ERROR THEN
442 ROLLBACK TO create_meter_pub;
443 x_return_status := FND_API.G_RET_STS_ERROR ;
444 IF (l_plog) THEN
445 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_pub');
446 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
447 '===================EAM_METER_PUB.create_meter: EXPECTED ERROR======='||
448 '==================== Calling FND_MSG_PUB.get ====================');
449 END IF;
450 FND_MSG_PUB.get
451 ( p_msg_index_out => x_msg_count ,
452 p_data => x_msg_data
453 );
454 IF (l_plog) THEN
455 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
456 '==================== Returned from FND_MSG_PUB.get ====================');
457 END IF;
458 x_msg_data := substr(x_msg_data,1,4000);
459 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
460 ROLLBACK TO create_meter_pub;
461 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
462 IF (l_plog) THEN
463 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_pub');
464 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
465 '===================EAM_METER_PUB.create_meter: UNEXPECTED ERROR======='||
466 '==================== Calling FND_MSG_PUB.get ====================');
467 END IF;
468 FND_MSG_PUB.get
469 ( p_msg_index_out => x_msg_count ,
470 p_data => x_msg_data
471 );
472 IF (l_plog) THEN
473 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
474 '==================== Returned from FND_MSG_PUB.get ====================');
475 END IF;
476 x_msg_data := substr(x_msg_data,1,4000);
477 WHEN OTHERS THEN
478 ROLLBACK TO create_meter_pub;
479 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
480 IF (l_plog) THEN
481 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO create_meter_pub');
482 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
483 '===================EAM_METER_PUB.create_meter: OTHERS ERROR=======');
484 END IF;
485 IF FND_MSG_PUB.Check_Msg_Level
486 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
487 THEN
488 IF (l_plog) THEN
489 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
490 '==================== Calling FND_MSG_PUB.Add_Exc_Msg ====================');
491 END IF;
492 FND_MSG_PUB.Add_Exc_Msg
493 ( G_PKG_NAME ,
494 l_api_name
495 );
496 IF (l_plog) THEN
497 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
498 '==================== Returned from FND_MSG_PUB.Add_Exc_Msg ====================');
499 END IF;
500 END IF;
501 IF (l_plog) THEN
502 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
503 '==================== Calling FND_MSG_PUB.get ====================');
504 END IF;
505 FND_MSG_PUB.get
506 ( p_msg_index_out => x_msg_count ,
507 p_data => x_msg_data
508 );
509 IF (l_plog) THEN
510 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
511 '==================== Returned from FND_MSG_PUB.get ====================');
512 END IF;
513
514 x_msg_data := substr(x_msg_data,1,4000);
515 end create_meter;
516
517
518 procedure update_meter
519 (
520 p_api_version IN Number,
521 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
522 p_commit IN VARCHAR2 := FND_API.G_FALSE,
523 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
524 x_return_status OUT nocopy VARCHAR2,
525 x_msg_count OUT nocopy NUMBER,
526 x_msg_data OUT nocopy VARCHAR2,
527 p_meter_id IN number,
528 p_meter_name IN varchar DEFAULT NULL,
529 p_meter_uom IN varchar DEFAULT NULL,
530 p_METER_TYPE IN Number default NULL,
531 p_VALUE_CHANGE_DIR IN Number default NULL,
532 p_USED_IN_SCHEDULING IN VARCHAR2 default NULL,
533 p_USER_DEFINED_RATE IN NUMBER default null,
534 p_USE_PAST_READING IN Number default null,
535 p_DESCRIPTION IN VARCHAR2 default null,
536 p_FROM_EFFECTIVE_DATE IN DATE default null,
537 p_TO_EFFECTIVE_DATE IN DATE default null,
538 p_source_meter_id IN Number DEFAULT NULL,
539 p_factor IN NUMBER DEFAULT NULL,
540 p_relationship_start_date IN DATE default null,
541 p_ATTRIBUTE_CATEGORY IN VARCHAR2 default null,
542 p_ATTRIBUTE1 IN VARCHAR2 default null,
543 p_ATTRIBUTE2 IN VARCHAR2 default null,
544 p_ATTRIBUTE3 IN VARCHAR2 default null,
545 p_ATTRIBUTE4 IN VARCHAR2 default null,
546 p_ATTRIBUTE5 IN VARCHAR2 default null,
547 p_ATTRIBUTE6 IN VARCHAR2 default null,
548 p_ATTRIBUTE7 IN VARCHAR2 default null,
549 p_ATTRIBUTE8 IN VARCHAR2 default null,
550 p_ATTRIBUTE9 IN VARCHAR2 default null,
551 p_ATTRIBUTE10 IN VARCHAR2 default null,
552 p_ATTRIBUTE11 IN VARCHAR2 default null,
553 p_ATTRIBUTE12 IN VARCHAR2 default null,
554 p_ATTRIBUTE13 IN VARCHAR2 default null,
555 p_ATTRIBUTE14 IN VARCHAR2 default null,
556 p_ATTRIBUTE15 IN VARCHAR2 default null,
557 p_ATTRIBUTE16 IN VARCHAR2 default null,
558 p_ATTRIBUTE17 IN VARCHAR2 default null,
559 p_ATTRIBUTE18 IN VARCHAR2 default null,
560 p_ATTRIBUTE19 IN VARCHAR2 default null,
561 p_ATTRIBUTE20 IN VARCHAR2 default null,
562 p_ATTRIBUTE21 IN VARCHAR2 default null,
563 p_ATTRIBUTE22 IN VARCHAR2 default null,
564 p_ATTRIBUTE23 IN VARCHAR2 default null,
565 p_ATTRIBUTE24 IN VARCHAR2 default null,
566 p_ATTRIBUTE25 IN VARCHAR2 default null,
567 p_ATTRIBUTE26 IN VARCHAR2 default null,
568 p_ATTRIBUTE27 IN VARCHAR2 default null,
569 p_ATTRIBUTE28 IN VARCHAR2 default null,
570 p_ATTRIBUTE29 IN VARCHAR2 default null,
571 p_ATTRIBUTE30 IN VARCHAR2 default null,
572 p_TMPL_FLAG IN VARCHAR2 default 'N',
573 p_SOURCE_TMPL_ID IN Number default NULL,
574 P_EAM_REQUIRED_FLAG IN VARCHAR2 default 'N',
575 p_from_eam IN varchar2 default null
576 )
577 is
578
579 CURSOR primary_failure_flag_csr (p_meter_id NUMBER) is
580 select instance_association_id, counter_id, primary_failure_flag
581 from csi_counter_associations
582 where counter_id = p_meter_id;
583
584 l_api_name CONSTANT VARCHAR2(30) := 'update_meter';
585 l_api_version CONSTANT NUMBER := 1.0;
586 l_meter_id number;
587 l_meter_type NUMBER;
588 l_commit VARCHAR2(1);
589 l_init_msg_list VARCHAR2(1);
590 l_validation_level NUMBER;
591 l_counter_instance_rec CSI_CTR_DATASTRUCTURES_PUB.Counter_instance_rec;
592 l_counter_template_rec CSI_CTR_DATASTRUCTURES_PUB.Counter_template_rec;
593 l_ctr_properties_tbl CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_tbl;
594 l_counter_relationships_tbl CSI_CTR_DATASTRUCTURES_PUB.counter_relationships_tbl;
595 l_ctr_derived_filters_tbl CSI_CTR_DATASTRUCTURES_PUB.ctr_derived_filters_tbl;
596 l_counter_associations_tbl CSI_CTR_DATASTRUCTURES_PUB.counter_associations_tbl;
597 l_ctr_item_associations_tbl CSI_CTR_DATASTRUCTURES_PUB.ctr_item_associations_tbl;
598 l_ctr_property_template_tbl CSI_CTR_DATASTRUCTURES_PUB.ctr_property_template_tbl;
599 l_meter_reading_rec Eam_MeterReading_PUB.Meter_Reading_Rec_Type;
600 l_ctr_property_readings_tbl EAM_MeterReading_PUB.Ctr_Property_readings_Tbl;
601 l_object_version_number Number;
602
603 l_prev_source_counter_id Number;
604 l_prev_relationship_id Number;
605 l_previous_factor Number;
606 l_source_meter_id Number;
607 l_prev_required_flag varchar2(1);
608 l_primary_flag varchar2(1);
609
610 l_module varchar2(200);
611 l_log_level CONSTANT NUMBER := fnd_log.g_current_runtime_level;
612 l_uLog CONSTANT BOOLEAN := fnd_log.level_unexpected >= l_log_level ;
613 l_pLog CONSTANT BOOLEAN := l_uLog AND fnd_log.level_procedure >= l_log_level;
614 l_sLog CONSTANT BOOLEAN := l_pLog AND fnd_log.level_statement >= l_log_level;
615 l_primary_failure_flag_csr primary_failure_flag_csr%ROWTYPE;
616
617 BEGIN
618 -- Standard Start of API savepoint
619 SAVEPOINT update_meter_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_METER_PUB.update_meter ====================');
627 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
628 'it is now' || sysdate);
629 END IF;
630
631 -- Standard call to check for call compatibility.
632 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
633 p_api_version ,
634 l_api_name ,
635 G_PKG_NAME )
636 THEN
637 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
638 END IF;
639
640 l_commit := p_commit;
641 l_init_msg_list := p_init_msg_list;
642 l_validation_level := p_validation_level;
643
644 IF l_commit IS NULL THEN
645 l_commit := FND_API.G_TRUE;
646 END IF;
647
648 IF l_init_msg_list IS NULL THEN
649 l_init_msg_list := FND_API.G_TRUE;
650 END IF;
651
652 IF l_validation_level IS NULL THEN
653 l_validation_level := FND_API.G_VALID_LEVEL_FULL;
654 END IF;
655
656 -- Initialize message list if p_init_msg_list is set to TRUE.
657 IF FND_API.to_Boolean( l_init_msg_list ) THEN
658 FND_MSG_PUB.initialize;
659 END IF;
660
661 -- Initialize API return status to success
662 x_return_status := FND_API.G_RET_STS_SUCCESS;
663
664 -- API body
665
666 l_source_meter_id := p_source_meter_id;
667
668 l_ctr_properties_tbl.DELETE;
669 l_counter_relationships_tbl.DELETE;
670 l_ctr_derived_filters_tbl.DELETE;
671 l_ctr_property_readings_tbl.DELETE;
672 l_counter_associations_tbl.DELETE;
673
674 IF p_tmpl_flag = 'N' THEN
675 SELECT object_version_number
676 INTO l_object_version_number
677 FROM CSI_COUNTERS_B
678 WHERE counter_id = p_meter_id;
679 l_counter_instance_rec.counter_id := p_meter_id;
680 l_counter_instance_rec.name := p_meter_name;
681
682 IF p_value_change_dir is not null THEN
683 IF p_value_change_dir = 1 THEN
684 l_counter_instance_rec.direction := 'A';
685 ELSIF p_value_change_dir = 2 THEN
686 l_counter_instance_rec.direction := 'D';
687 ELSE l_counter_instance_rec.direction := 'B';
688 END IF;
689 END IF;
690 if nvl(p_eam_required_flag, 'N') = 'N' then
691 select eam_required_flag into l_prev_required_flag
692 from csi_counters_b
693 where counter_id = p_meter_id;
694
695 if nvl(l_prev_required_flag, 'N') = 'Y' then
696
697 begin
698 /* Bug 6832829
699 When a meter is associated with multiple assets, multiple asociations get created
700 in csi_counter_associations table. A SELECT to check whether the primary_failure_flag is
701 'Y' thus returns more than one row. Need to change the code to loop through a cursor
702 and check for the first record with primary_failure_flag set to 'Y'.
703 */
704 OPEN primary_failure_flag_csr(p_meter_id);
705 FETCH primary_failure_flag_csr into l_primary_failure_flag_csr;
706 WHILE primary_failure_flag_csr%FOUND
707 LOOP
708 IF nvl(l_primary_failure_flag_csr.primary_failure_flag, 'N') = 'Y' THEN
709 FND_MESSAGE.SET_NAME('EAM', 'EAM_PRIMARY_FLAG_EXISTS');
710 FND_MSG_PUB.ADD;
711 RAISE FND_API.G_EXC_ERROR;
712 EXIT;
713 END IF;
714 FETCH primary_failure_flag_csr into l_primary_failure_flag_csr;
715 END LOOP;
716 CLOSE primary_failure_flag_csr;
717 exception when no_data_found then
718 -- this is not an error condition.
719 null;
720 end;
721 end if;
722 end if;
723
724 l_counter_instance_rec.counter_type := 'REGULAR';
725 l_counter_instance_rec.object_version_number := l_object_version_number;
726 l_counter_instance_rec.created_from_counter_tmpl_id := p_source_tmpl_id;
727 l_counter_instance_rec.uom_code := p_meter_uom;
728 l_counter_instance_rec.start_date_active := p_from_effective_date;
729 l_counter_instance_rec.end_date_active := p_to_effective_date;
730 l_counter_instance_rec.reading_type := p_meter_type;
731 l_counter_instance_rec.default_usage_rate := p_user_defined_rate;
732 l_counter_instance_rec.use_past_reading := p_use_past_reading;
733 l_counter_instance_rec.used_in_scheduling := p_used_in_scheduling;
734 l_counter_instance_rec.description := p_description;
735 l_counter_instance_rec.time_based_manual_entry := 'Y';
736 l_counter_instance_rec.eam_required_flag := p_eam_required_flag;
737 l_counter_instance_rec.attribute_category := p_attribute_category;
738 l_counter_instance_rec.attribute1 := Nvl(p_attribute1, FND_API.G_MISS_CHAR); --bug # 16329758 start
739 l_counter_instance_rec.attribute2 := Nvl(p_attribute2, FND_API.G_MISS_CHAR);
740 l_counter_instance_rec.attribute3 := Nvl(p_attribute3, FND_API.G_MISS_CHAR);
741 l_counter_instance_rec.attribute4 := Nvl(p_attribute4, FND_API.G_MISS_CHAR);
742 l_counter_instance_rec.attribute5 := Nvl(p_attribute5, FND_API.G_MISS_CHAR);
743 l_counter_instance_rec.attribute6 := Nvl(p_attribute6, FND_API.G_MISS_CHAR);
744 l_counter_instance_rec.attribute7 := Nvl(p_attribute7, FND_API.G_MISS_CHAR);
745 l_counter_instance_rec.attribute8 := Nvl(p_attribute8, FND_API.G_MISS_CHAR);
746 l_counter_instance_rec.attribute9 := Nvl(p_attribute9, FND_API.G_MISS_CHAR);
747 l_counter_instance_rec.attribute10 := Nvl(p_attribute10, FND_API.G_MISS_CHAR);
748 l_counter_instance_rec.attribute11 := Nvl(p_attribute11, FND_API.G_MISS_CHAR);
749 l_counter_instance_rec.attribute12 := Nvl(p_attribute12, FND_API.G_MISS_CHAR);
750 l_counter_instance_rec.attribute13 := Nvl(p_attribute13, FND_API.G_MISS_CHAR);
751 l_counter_instance_rec.attribute14 := Nvl(p_attribute14, FND_API.G_MISS_CHAR);
752 l_counter_instance_rec.attribute15 := Nvl(p_attribute15, FND_API.G_MISS_CHAR);
753 l_counter_instance_rec.attribute16 := Nvl(p_attribute16, FND_API.G_MISS_CHAR);
754 l_counter_instance_rec.attribute17 := Nvl(p_attribute17, FND_API.G_MISS_CHAR);
755 l_counter_instance_rec.attribute18 := Nvl(p_attribute18, FND_API.G_MISS_CHAR);
756 l_counter_instance_rec.attribute19 := Nvl(p_attribute19, FND_API.G_MISS_CHAR);
757 l_counter_instance_rec.attribute20 := Nvl(p_attribute20, FND_API.G_MISS_CHAR);
758 l_counter_instance_rec.attribute21 := Nvl(p_attribute21, FND_API.G_MISS_CHAR);
759 l_counter_instance_rec.attribute22 := Nvl(p_attribute22, FND_API.G_MISS_CHAR);
760 l_counter_instance_rec.attribute23 := Nvl(p_attribute23, FND_API.G_MISS_CHAR);
761 l_counter_instance_rec.attribute24 := Nvl(p_attribute24, FND_API.G_MISS_CHAR);
762 l_counter_instance_rec.attribute25 := Nvl(p_attribute25, FND_API.G_MISS_CHAR);
763 l_counter_instance_rec.attribute26 := Nvl(p_attribute26, FND_API.G_MISS_CHAR);
764 l_counter_instance_rec.attribute27 := Nvl(p_attribute27, FND_API.G_MISS_CHAR);
765 l_counter_instance_rec.attribute28 := Nvl(p_attribute28, FND_API.G_MISS_CHAR);
766 l_counter_instance_rec.attribute29 := Nvl(p_attribute29, FND_API.G_MISS_CHAR);
767 l_counter_instance_rec.attribute30 := Nvl(p_attribute30, FND_API.G_MISS_CHAR); --bug # 16329758 end
768
769 BEGIN
770 select source_counter_id,relationship_id,factor,object_version_number
771 into l_prev_source_counter_id,l_prev_relationship_id,l_previous_factor,l_object_version_number
772 from csi_counter_relationships
773 where object_counter_id = p_meter_id and active_end_date is null;
774
775 if nvl(p_from_eam, 'N') = 'Y' then
776
777 if l_source_meter_id is null and l_prev_source_counter_id is not null then
778 l_source_meter_id := FND_API.G_MISS_NUM;
779 end if;
780
781 end if;
782
783
784
785 IF l_source_meter_id IS NOT NULL THEN
786 IF l_source_meter_id = FND_API.G_MISS_NUM THEN
787 l_counter_relationships_tbl(1).object_version_number := l_object_version_number;
788 l_counter_relationships_tbl(1).RELATIONSHIP_ID := l_prev_relationship_id;
789 l_counter_relationships_tbl(1).ACTIVE_END_DATE := SYSDATE;
790 ELSIF l_prev_source_counter_id <> l_source_meter_id THEN
791 -- When source counter is changed .. End date the old one and insert a new one
792 l_counter_relationships_tbl(1).object_version_number := l_object_version_number;
793 l_counter_relationships_tbl(1).RELATIONSHIP_ID := l_prev_relationship_id;
794 l_counter_relationships_tbl(1).ACTIVE_END_DATE := SYSDATE;
795 l_counter_relationships_tbl(2).source_counter_id := l_source_meter_id;
796 l_counter_relationships_tbl(2).factor := p_factor;
797 IF( p_relationship_start_date is not null) THEN
798 l_counter_relationships_tbl(2).active_start_date := p_relationship_start_date;
799 ELSE
800 l_counter_relationships_tbl(2).active_start_date := sysdate;
801 END IF;
802 l_counter_relationships_tbl(2).active_end_date := null;
803 l_counter_relationships_tbl(2).relationship_type_code := 'CONFIGURATION';
804 ELSE
805 l_counter_relationships_tbl(1).object_version_number := l_object_version_number;
806 l_counter_relationships_tbl(1).RELATIONSHIP_ID := l_prev_relationship_id;
807 l_counter_relationships_tbl(1).factor := p_factor;
808 IF( p_relationship_start_date is not null) THEN
809 l_counter_relationships_tbl(1).active_start_date := p_relationship_start_date;
810 ELSE
811 l_counter_relationships_tbl(1).active_start_date := sysdate;
812 END IF;
813 END IF;
814 ELSE
815 l_counter_relationships_tbl.delete;
816 END IF;
817
818 EXCEPTION
819 WHEN NO_DATA_FOUND THEN
820 IF (l_source_meter_id IS NOT NULL) THEN -- When a relationship has to be added
821 l_counter_relationships_tbl(1).source_counter_id := l_source_meter_id;
822 l_counter_relationships_tbl(1).factor := p_factor;
823 l_counter_relationships_tbl(1).relationship_type_code := 'CONFIGURATION';
824 IF( p_relationship_start_date is not null) THEN
825 l_counter_relationships_tbl(1).active_start_date := p_relationship_start_date;
826 ELSE
827 l_counter_relationships_tbl(1).active_start_date := sysdate;
828 END IF;
829 END IF;
830 END;
831
832
833 IF (l_plog) THEN
834 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
835 '==================== Calling CSI_COUNTER_PUB.update_counter ===================='
836 ||'x_return_status:'||x_return_status
837 ||' x_msg_count:'||x_msg_count
838 ||'x_msg_data:'||x_msg_data);
839 END IF;
840 CSI_COUNTER_PUB.update_counter(p_api_version,
841 l_init_msg_list,
842 l_commit,
843 l_validation_level,
844 l_counter_instance_rec,
845 l_ctr_properties_tbl,
846 l_counter_relationships_tbl,
847 l_ctr_derived_filters_tbl,
848 l_counter_associations_tbl,
849 x_return_status,
850 x_msg_count,
851 x_msg_data);
852
853 IF (l_plog) THEN
854 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
855 '==================== Returning from CSI_COUNTER_PUB.update_counter ===================='
856 ||'x_return_status:'||x_return_status
857 ||' x_msg_count:'||x_msg_count
858 ||'x_msg_data:'||x_msg_data);
859 END IF;
860
861 ELSE
862 SELECT object_version_number
863 INTO l_object_version_number
864 FROM CSI_COUNTER_TEMPLATE_B
865 WHERE counter_id = p_meter_id;
866
867 l_counter_template_rec.counter_id := p_meter_id;
868 l_counter_template_rec.name := p_meter_name;
869 IF (l_plog) THEN
870 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
871 'l_object_version_number:'||l_object_version_number);
872 END IF;
873 IF p_value_change_dir = 1 THEN
874 l_counter_template_rec.direction := 'A';
875 ELSIF p_value_change_dir = 2 THEN
876 l_counter_template_rec.direction := 'D';
877 ELSE l_counter_template_rec.direction := 'B';
878 END IF;
879 l_counter_template_rec.counter_type := 'REGULAR';
880 l_counter_template_rec.object_version_number := l_object_version_number;
881 l_counter_template_rec.uom_code := p_meter_uom;
882 l_counter_template_rec.start_date_active := p_from_effective_date;
883 l_counter_template_rec.end_date_active := p_to_effective_date;
884 l_counter_template_rec.reading_type := p_meter_type;
885 l_counter_template_rec.default_usage_rate := p_user_defined_rate;
886 l_counter_template_rec.use_past_reading := p_use_past_reading;
887 l_counter_template_rec.used_in_scheduling := p_used_in_scheduling;
888 l_counter_template_rec.description := p_description;
889 l_counter_template_rec.time_based_manual_entry := 'Y';
890 l_counter_template_rec.eam_required_flag := p_eam_required_flag;
891 l_counter_template_rec.attribute_category := p_attribute_category;
892 l_counter_template_rec.attribute1 := p_attribute1;
893 l_counter_template_rec.attribute2 := p_attribute2;
894 l_counter_template_rec.attribute3 := p_attribute3;
895 l_counter_template_rec.attribute4 := p_attribute4;
896 l_counter_template_rec.attribute5 := p_attribute5;
897 l_counter_template_rec.attribute6 := p_attribute6;
898 l_counter_template_rec.attribute7 := p_attribute7;
899 l_counter_template_rec.attribute8 := p_attribute8;
900 l_counter_template_rec.attribute9 := p_attribute9;
901 l_counter_template_rec.attribute10 := p_attribute10;
902 l_counter_template_rec.attribute11 := p_attribute11;
903 l_counter_template_rec.attribute12 := p_attribute12;
904 l_counter_template_rec.attribute13 := p_attribute13;
905 l_counter_template_rec.attribute14 := p_attribute14;
906 l_counter_template_rec.attribute15 := p_attribute15;
907 l_counter_template_rec.attribute16 := p_attribute16;
908 l_counter_template_rec.attribute17 := p_attribute17;
909 l_counter_template_rec.attribute18 := p_attribute18;
910 l_counter_template_rec.attribute19 := p_attribute19;
911 l_counter_template_rec.attribute20 := p_attribute20;
912 l_counter_template_rec.attribute21 := p_attribute21;
913 l_counter_template_rec.attribute22 := p_attribute22;
914 l_counter_template_rec.attribute23 := p_attribute23;
915 l_counter_template_rec.attribute24 := p_attribute24;
916 l_counter_template_rec.attribute25 := p_attribute25;
917 l_counter_template_rec.attribute26 := p_attribute26;
918 l_counter_template_rec.attribute27 := p_attribute27;
919 l_counter_template_rec.attribute28 := p_attribute28;
920 l_counter_template_rec.attribute29 := p_attribute29;
921 l_counter_template_rec.attribute30 := p_attribute30;
922
923 IF (l_plog) THEN
924 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
925 '==================== Calling csi_counter_template_pub.update_counter_template ===================='
926 ||'x_return_status:'||x_return_status
927 ||' x_msg_count:'||x_msg_count
928 ||'x_msg_data:'||x_msg_data);
929 END IF;
930 csi_counter_template_pub.update_counter_template(p_api_version,
931 l_commit,
932 l_init_msg_list,
933 l_validation_level,
934 l_counter_template_rec,
935 l_ctr_item_associations_tbl,
936 l_ctr_property_template_tbl,
937 l_counter_relationships_tbl,
938 l_ctr_derived_filters_tbl,
939 x_return_status,
940 x_msg_count,
941 x_msg_data);
942 IF (l_plog) THEN
943 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
944 '==================== Returning from csi_counter_template_pub.update_counter_template ===================='
945 ||'x_return_status:'||x_return_status
946 ||' x_msg_count:'||x_msg_count
947 ||'x_msg_data:'||x_msg_data);
948 END IF;
949 END IF;
950
951
952
953 -- End of API body.
954 -- Standard check of l_commit.
955 IF FND_API.To_Boolean( l_commit ) THEN
956 COMMIT WORK;
957 IF (l_plog) THEN
958 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'Commiting Work');
959 END IF;
960 END IF;
961 IF (l_plog) THEN
962 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
963 '==================== Calling FND_MSG_PUB.get ====================');
964 END IF;
965
966 -- Standard call to get message count and if count is 1, get message info.
967 FND_MSG_PUB.get
968 ( p_msg_index_out => x_msg_count ,
969 p_data => x_msg_data
970 );
971 IF (l_plog) THEN
972 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
973 '==================== Returned from FND_MSG_PUB.get ====================');
974
975 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
976 '==================== Exiting EAM_METER_PUB.update_meter ====================');
977 END IF;
978 x_msg_data := substr(x_msg_data,1,4000);
979 EXCEPTION
980 WHEN FND_API.G_EXC_ERROR THEN
981 ROLLBACK TO update_meter_pub;
982 x_return_status := FND_API.G_RET_STS_ERROR ;
983 IF (l_plog) THEN
984 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO update_meter_pub');
985 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
986 '===================EAM_METER_PUB.update_meter: EXPECTED ERROR======='||
987 '==================== Calling FND_MSG_PUB.get ====================');
988 END IF;
989 FND_MSG_PUB.get
990 ( p_msg_index_out => x_msg_count ,
991 p_data => x_msg_data
992 );
993 IF (l_plog) THEN
994 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
995 '==================== Returned from FND_MSG_PUB.get ====================');
996 END IF;
997
998 x_msg_data := substr(x_msg_data,1,4000);
999 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1000 ROLLBACK TO update_meter_pub;
1001 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1002 IF (l_plog) THEN
1003 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO update_meter_pub');
1004 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
1005 '===================EAM_METER_PUB.update_meter: UNEXPECTED ERROR======='||
1006 '==================== Calling FND_MSG_PUB.get ====================');
1007 END IF;
1008 FND_MSG_PUB.get
1009 ( p_msg_index_out => x_msg_count ,
1010 p_data => x_msg_data
1011 );
1012 IF (l_plog) THEN
1013 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
1014 '==================== Returned from FND_MSG_PUB.get ====================');
1015 END IF;
1016 x_msg_data := substr(x_msg_data,1,4000);
1017 WHEN OTHERS THEN
1018 ROLLBACK TO update_meter_pub;
1019 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1020 IF (l_plog) THEN
1021 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,'ROLLBACK TO update_meter_pub');
1022 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
1023 '===================EAM_METER_PUB.update_meter: OTHERS ERROR=======');
1024 END IF;
1025 IF FND_MSG_PUB.Check_Msg_Level
1026 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1027 THEN
1028 IF (l_plog) THEN
1029 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
1030 '==================== Calling FND_MSG_PUB.Add_Exc_Msg ====================');
1031 END IF;
1032 FND_MSG_PUB.Add_Exc_Msg
1033 ( G_PKG_NAME ,
1034 l_api_name
1035 );
1036 IF (l_plog) THEN
1037 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
1038 '==================== Returned from FND_MSG_PUB.Add_Exc_Msg ====================');
1039 END IF;
1040 END IF;
1041 IF (l_plog) THEN
1042 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
1043 '==================== Calling FND_MSG_PUB.get ====================');
1044 END IF;
1045 FND_MSG_PUB.get
1046 ( p_msg_index_out => x_msg_count ,
1047 p_data => x_msg_data
1048 );
1049 IF (l_plog) THEN
1050 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module,
1051 '==================== Returned from FND_MSG_PUB.get ====================');
1052 END IF;
1053
1054 x_msg_data := substr(x_msg_data,1,4000);
1055 end update_meter;
1056
1057
1058
1059 END EAM_METER_PUB;
1060