DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_CTR_CAPTURE_READING_PUB

Source


1 PACKAGE BODY CS_CTR_CAPTURE_READING_PUB as
2 -- $Header: csxpcrdb.pls 120.2 2005/06/15 10:31:58 appldev  $
3 -- Start of Comments
4 -- Package name     : CS_CAPTURE_READING_PUB
5 -- Purpose          : Capture readings for counters
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CS_CTR_CAPTURE_READING_PUB';
10 G_FILE_NAME CONSTANT VARCHAR2(12) := 'csxpcrdb.pls';
11 
12 PROCEDURE Capture_Counter_Reading(
13     P_Api_Version_Number         IN   NUMBER,
14     P_Init_Msg_List              IN   VARCHAR2,
15     P_Commit                     IN   VARCHAR2,
16     p_validation_level           IN   NUMBER,
17     p_CTR_GRP_LOG_Rec            IN   CTR_GRP_LOG_Rec_Type,
18     p_CTR_RDG_Tbl                IN   CTR_RDG_Tbl_Type,
19     p_PROP_RDG_Tbl               IN   PROP_RDG_Tbl_Type,
20     X_Return_Status              OUT  NOCOPY VARCHAR2,
21     X_Msg_Count                  OUT  NOCOPY NUMBER,
22     X_Msg_Data                   OUT  NOCOPY VARCHAR2
23  )
24 IS
25    l_api_name                CONSTANT VARCHAR2(30) := 'CAPTURE_COUNTER_READING';
26    l_api_version_number      CONSTANT NUMBER   := 1.0;
27    l_return_status_full      VARCHAR2(1);
28    l_ctr_grp_log_id          NUMBER;
29    l_array_counter           NUMBER;
30    l_txn_tbl                 csi_datastructures_pub.transaction_tbl;
31    l_ctr_rdg_tbl             csi_ctr_datastructures_pub.counter_readings_tbl;
32    --
33    l_ctr_prop_rdg_tbl        csi_ctr_datastructures_pub.ctr_property_readings_tbl;
34    --
35    l_counter_id              NUMBER;
36    l_rdg_count               NUMBER := 0;
37    l_prop_rdg_count          NUMBER := 0;
38    l_msg_index               NUMBER;
39    l_msg_count               NUMBER;
40    l_empty_txn               VARCHAR2(1);
41    l_src_obj_code            CSI_COUNTER_ASSOCIATIONS.source_object_code%TYPE;
42    l_src_obj_id              NUMBER;
43 
44 BEGIN
45    -- Standard Start of API savepoint
46    SAVEPOINT CS_CTR_CAPTURE_READING_PUB;
47    -- Standard call to check for call compatibility.
48    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
49 					p_api_version_number,
50 					l_api_name,
51 					G_PKG_NAME)
52    THEN
53        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
54    END IF;
55    --
56    x_return_status := FND_API.G_RET_STS_SUCCESS;
57    --
58    IF p_ctr_rdg_tbl.count = 0 THEN
59       x_return_status := FND_API.G_RET_STS_ERROR ;
60       csi_ctr_gen_utility_pvt.put_line('No Counter Readings captured...');
61       Return;
62    END IF;
63    --
64    IF NVL(p_ctr_grp_log_rec.source_transaction_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
65       IF p_ctr_grp_log_rec.source_transaction_code in ('CP','INTERNAL') THEN
66 	 l_txn_tbl(1).transaction_type_id := 80;
67       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'CONTRACT_LINE' THEN
68 	 l_txn_tbl(1).transaction_type_id := 81;
69       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'OKL_CNTR_GRP' THEN
70 	 l_txn_tbl(1).transaction_type_id := 85;
71       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'FS' THEN
72          l_txn_tbl(1).transaction_type_id := 86;
73       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'DR' THEN
74          l_txn_tbl(1).transaction_type_id := 87;
75       ELSE
76 	 csi_ctr_gen_utility_pvt.put_line('Invalid Source Transaction Code : '||p_ctr_grp_log_rec.source_transaction_code);
77 	 csi_ctr_gen_utility_pvt.ExitWithErrMsg('CS_API_CTR_SRC_TXN_INFO_REQD');
78       END IF;
79       --
80       l_txn_tbl(1).source_header_ref_id := p_CTR_GRP_LOG_Rec.source_transaction_id;
81       l_txn_tbl(1).source_transaction_date := sysdate;
82       l_txn_tbl(1).ATTRIBUTE1 := p_CTR_GRP_LOG_Rec.ATTRIBUTE1;
83       l_txn_tbl(1).ATTRIBUTE2 := p_CTR_GRP_LOG_Rec.ATTRIBUTE2;
84       l_txn_tbl(1).ATTRIBUTE3 := p_CTR_GRP_LOG_Rec.ATTRIBUTE3;
85       l_txn_tbl(1).ATTRIBUTE4 := p_CTR_GRP_LOG_Rec.ATTRIBUTE4;
86       l_txn_tbl(1).ATTRIBUTE5 := p_CTR_GRP_LOG_Rec.ATTRIBUTE5;
87       l_txn_tbl(1).ATTRIBUTE6 := p_CTR_GRP_LOG_Rec.ATTRIBUTE6;
88       l_txn_tbl(1).ATTRIBUTE7 := p_CTR_GRP_LOG_Rec.ATTRIBUTE7;
89       l_txn_tbl(1).ATTRIBUTE8 := p_CTR_GRP_LOG_Rec.ATTRIBUTE8;
90       l_txn_tbl(1).ATTRIBUTE9 := p_CTR_GRP_LOG_Rec.ATTRIBUTE9;
91       l_txn_tbl(1).ATTRIBUTE10 := p_CTR_GRP_LOG_Rec.ATTRIBUTE10;
92       l_txn_tbl(1).ATTRIBUTE11 := p_CTR_GRP_LOG_Rec.ATTRIBUTE11;
93       l_txn_tbl(1).ATTRIBUTE12 := p_CTR_GRP_LOG_Rec.ATTRIBUTE12;
94       l_txn_tbl(1).ATTRIBUTE13 := p_CTR_GRP_LOG_Rec.ATTRIBUTE13;
95       l_txn_tbl(1).ATTRIBUTE14 := p_CTR_GRP_LOG_Rec.ATTRIBUTE14;
96       l_txn_tbl(1).ATTRIBUTE15 := p_CTR_GRP_LOG_Rec.ATTRIBUTE15;
97       l_txn_tbl(1).CONTEXT := p_CTR_GRP_LOG_Rec.CONTEXT;
98       l_empty_txn := 'N';
99    ELSE
100       l_txn_tbl.DELETE;
101       l_empty_txn := 'Y';
102    END IF; -- Group Log Source Txn code check
103    --
104    l_array_counter := p_CTR_RDG_Tbl.First;
105    WHILE p_ctr_rdg_tbl.EXISTS(l_array_counter) LOOP
106       l_rdg_count := l_rdg_count + 1;
107       l_ctr_rdg_tbl(l_rdg_count).COUNTER_VALUE_ID := p_ctr_rdg_tbl(l_array_counter).counter_value_id;
108       l_ctr_rdg_tbl(l_rdg_count).COUNTER_ID := p_ctr_rdg_tbl(l_array_counter).counter_id;
109       l_ctr_rdg_tbl(l_rdg_count).VALUE_TIMESTAMP  := p_ctr_rdg_tbl(l_array_counter).VALUE_TIMESTAMP;
110       l_ctr_rdg_tbl(l_rdg_count).COUNTER_READING := p_ctr_rdg_tbl(l_array_counter).COUNTER_READING ;
111       --
112       IF NVL(p_ctr_rdg_tbl(l_array_counter).RESET_FLAG,'N') = 'Y' THEN
113 	 l_ctr_rdg_tbl(l_rdg_count).RESET_MODE  := 'SOFT';
114       ELSE
115 	 l_ctr_rdg_tbl(l_rdg_count).RESET_MODE  := NULL;
116       END IF;
117       --
118       l_ctr_rdg_tbl(l_rdg_count).RESET_REASON  := p_ctr_rdg_tbl(l_array_counter).RESET_REASON;
119       l_ctr_rdg_tbl(l_rdg_count).RESET_COUNTER_READING :=p_ctr_rdg_tbl(l_array_counter).POST_RESET_FIRST_RDG;
120       l_ctr_rdg_tbl(l_rdg_count).ADJUSTMENT_TYPE  := p_ctr_rdg_tbl(l_array_counter).MISC_READING_TYPE;
121       l_ctr_rdg_tbl(l_rdg_count).ADJUSTMENT_READING   := p_ctr_rdg_tbl(l_array_counter).MISC_READING ;
122       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE1 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE1;
123       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE2 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE2;
124       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE3 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE3;
125       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE4 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE4;
126       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE5 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE5;
127       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE6 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE6;
128       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE7 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE7;
129       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE8 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE8;
130       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE9 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE9;
131       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE10 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE10;
132       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE11 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE11;
133       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE12 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE12;
134       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE13 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE13;
135       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE14 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE14;
136       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE15 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE15;
137       l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE_CATEGORY := p_ctr_rdg_tbl(l_array_counter).CONTEXT;
138       l_ctr_rdg_tbl(l_rdg_count).COMMENTS     := p_ctr_rdg_tbl(l_array_counter).COMMENTS;
139       l_ctr_rdg_tbl(l_rdg_count).DISABLED_FLAG := p_ctr_rdg_tbl(l_array_counter).OVERRIDE_VALID_FLAG;
140       --
141       IF l_empty_txn = 'N' THEN
142          l_ctr_rdg_tbl(l_rdg_count).PARENT_TBL_INDEX := 1; -- Grouped against single transaction
143       ELSE -- No Group Log provided. So, using the counter info to create Transaction
144          Begin
145             select source_object_code,source_object_id
146             into l_src_obj_code,l_src_obj_id
147             from CSI_COUNTER_ASSOCIATIONS
148             where counter_id = p_ctr_rdg_tbl(l_array_counter).counter_id
149             and   rownum < 2;
150             --
151             l_txn_tbl(l_rdg_count).source_transaction_date := sysdate;
152             l_txn_tbl(l_rdg_count).source_header_ref_id := l_src_obj_id;
153             IF l_src_obj_code = 'CP' THEN
154                l_txn_tbl(l_rdg_count).transaction_type_id := 80;
155             ELSIF l_src_obj_code = 'CONTRACT_LINE' THEN
156                l_txn_tbl(l_rdg_count).transaction_type_id := 81;
157             ELSE
158                csi_ctr_gen_utility_pvt.put_line('Unable to get Source Txn Code from Counter Associations..');
159 	       csi_ctr_gen_utility_pvt.ExitWithErrMsg('CS_API_CTR_SRC_TXN_INFO_REQD');
160             END IF;
161          Exception
162             When no_data_found then
163                csi_ctr_gen_utility_pvt.ExitWithErrMsg('CSI_API_CTR_INVALID');
164          End;
165          l_ctr_rdg_tbl(l_rdg_count).PARENT_TBL_INDEX := l_rdg_count;
166       END IF;
167       --
168       l_array_counter := p_ctr_rdg_tbl.NEXT(l_array_counter);
169    END LOOP;
170    --
171    IF p_prop_rdg_tbl.count > 0 THEN
172       l_array_counter := p_prop_rdg_tbl.First;
173       WHILE p_prop_rdg_tbl.EXISTS(l_array_counter) LOOP
174 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).parent_tbl_index := NULL;
175 	 l_prop_rdg_count := l_prop_rdg_count + 1;
176 	 -- Property should be valid and belong to one of the counters captured above
177 	 Begin
178 	    select counter_id
179 	    into l_counter_id
180 	    from CSI_COUNTER_PROPERTIES_B
181 	    where counter_property_id = p_prop_rdg_tbl(l_array_counter).counter_property_id;
182 	 Exception
183 	    when no_data_found then
184 	       csi_ctr_gen_utility_pvt.put_line('Counter Property is Invalid or Expired...');
185 	       csi_ctr_gen_utility_pvt.ExitWithErrMsg('CSI_API_CTR_PROP_INVALID');
186 	 End;
187 	 --
188 	 FOR j IN l_ctr_rdg_tbl.FIRST .. l_ctr_rdg_tbl.LAST LOOP
189 	    IF l_ctr_rdg_tbl(j).counter_id = l_counter_id THEN
190 	       l_ctr_prop_rdg_tbl(l_prop_rdg_count).parent_tbl_index := j;
191 	       l_ctr_prop_rdg_tbl(l_prop_rdg_count).VALUE_TIMESTAMP := l_ctr_rdg_tbl(j).VALUE_TIMESTAMP;
192 	       exit;
193 	    END IF;
194 	 END LOOP;
195 	 --
196 	 IF l_ctr_prop_rdg_tbl(l_prop_rdg_count).parent_tbl_index IS NULL THEN
197 	    csi_ctr_gen_utility_pvt.ExitWithErrMsg('CSI_API_CTR_PROP_INVALID');
198 	 END IF;
199 	 --
200 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).COUNTER_PROP_VALUE_ID := p_prop_rdg_tbl(l_array_counter).counter_prop_value_id;
201 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).COUNTER_PROPERTY_ID := p_prop_rdg_tbl(l_array_counter).counter_property_id;
202 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).PROPERTY_VALUE := p_prop_rdg_tbl(l_array_counter).PROPERTY_VALUE ;
203 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE1 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE1;
204 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE2 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE2;
205 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE3 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE3;
206 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE4 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE4;
207 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE5 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE5;
208 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE6 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE6;
209 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE7 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE7;
210 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE8 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE8;
211 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE9 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE9;
212 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE10 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE10;
213 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE11 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE11;
214 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE12 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE12;
215 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE13 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE13;
216 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE14 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE14;
217 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE15 := p_prop_rdg_tbl(l_array_counter).ATTRIBUTE15;
218 	 l_ctr_prop_rdg_tbl(l_prop_rdg_count).ATTRIBUTE_CATEGORY := p_prop_rdg_tbl(l_array_counter).CONTEXT;
219 	 l_array_counter := p_prop_rdg_tbl.NEXT(l_array_counter);
220       END LOOP;
221    END IF;
222    --
223    -- Call CSI Capture Counter Reading API
224    Csi_Counter_Readings_Pub.Capture_Counter_Reading
225    (
226        p_api_version           =>   1.0
227       ,p_commit                =>   p_commit
228       ,p_init_msg_list         =>   p_init_msg_list
229       ,p_validation_level      =>   p_validation_level
230       ,p_txn_tbl               =>   l_txn_tbl
231       ,p_ctr_rdg_tbl           =>   l_ctr_rdg_tbl
232       ,p_ctr_prop_rdg_tbl      =>   l_ctr_prop_rdg_tbl
233       ,x_return_status         =>   x_return_status
234       ,x_msg_count             =>   x_msg_count
235       ,x_msg_data              =>   x_msg_data
236    );
237    --
238    IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
239       csi_ctr_gen_utility_pvt.put_line('ERROR FROM Capture_Counter_Reading_pub API ');
240       l_msg_index := 1;
241       l_msg_count := x_msg_count;
242       WHILE l_msg_count > 0 LOOP
243 	 x_msg_data := FND_MSG_PUB.GET
244 	 (  l_msg_index,
245 	    FND_API.G_FALSE
246 	 );
247 	 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
248 	 l_msg_index := l_msg_index + 1;
249 	 l_msg_count := l_msg_count - 1;
250       END LOOP;
251       RAISE FND_API.G_EXC_ERROR;
252    END IF;
253    --
254    -- End of API body
255    --
256    -- Standard check for p_commit
257    IF FND_API.to_Boolean( p_commit )
258    THEN
259        COMMIT WORK;
260    END IF;
261    -- Standard call to get message count and if count is 1, get message info.
262    FND_MSG_PUB.Count_And_Get
263    (  p_count          =>   x_msg_count,
264       p_data           =>   x_msg_data
265    );
266 EXCEPTION
267    WHEN FND_API.G_EXC_ERROR THEN
268       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
269       x_return_status := FND_API.G_RET_STS_ERROR ;
270       FND_MSG_PUB.Count_And_Get
271             (p_count => x_msg_count ,
272              p_data => x_msg_data
273             );
274    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
278              (p_count => x_msg_count ,
275       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
276       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
277       FND_MSG_PUB.Count_And_Get
279               p_data => x_msg_data
280              );
281    WHEN OTHERS THEN
282       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
283       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
284       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
285          FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
286       END IF;
287       FND_MSG_PUB.Count_And_Get
288             (p_count => x_msg_count ,
289              p_data => x_msg_data
290             );
291 END Capture_Counter_Reading;
292 
293 PROCEDURE Update_Counter_Reading(
294     P_Api_Version_Number         IN   NUMBER,
295     P_Init_Msg_List              IN   VARCHAR2,
296     P_Commit                     IN   VARCHAR2,
297     p_validation_level           IN   NUMBER,
298     p_CTR_GRP_LOG_ID             IN   NUMBER,
299     p_CTR_RDG_Tbl                IN   CTR_RDG_Tbl_Type,
300     p_PROP_RDG_Tbl               IN   PROP_RDG_Tbl_Type,
301     X_Return_Status              OUT  NOCOPY VARCHAR2,
302     X_Msg_Count                  OUT  NOCOPY NUMBER,
303     X_Msg_Data                   OUT  NOCOPY VARCHAR2
304  )
305 IS
306    l_api_name                CONSTANT VARCHAR2(30) := 'UPDATE_COUNTER_READING';
307    l_api_version_number      CONSTANT NUMBER   := 1.0;
308    l_return_status_full      VARCHAR2(1);
309    l_s_temp                  VARCHAR2(100);
310    l_ctr_grp_log_id          NUMBER;
311    l_array_counter           NUMBER;
312    l_ctr_rdg_tbl             csi_ctr_datastructures_pub.counter_readings_tbl;
313    --
314    l_rdg_count               NUMBER := 0;
315    l_msg_index               NUMBER;
316    l_msg_count               NUMBER;
317 BEGIN
318    -- Standard Start of API savepoint
319    SAVEPOINT CS_CTR_CAPTURE_READING_PUB;
320    -- Standard call to check for call compatibility.
321    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
322 					p_api_version_number,
323 					l_api_name,
324 					G_PKG_NAME)
325    THEN
326        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
327    END IF;
328    --
329    x_return_status := FND_API.G_RET_STS_SUCCESS;
330    --
331    -- API body
332    --
333    IF p_ctr_rdg_tbl.count > 0 THEN
334       l_array_counter := p_ctr_rdg_tbl.First;
335       WHILE p_ctr_rdg_tbl.EXISTS(l_array_counter) LOOP
336 	 l_rdg_count := l_rdg_count + 1;
337 	 l_ctr_rdg_tbl(l_rdg_count).COUNTER_VALUE_ID := p_ctr_rdg_tbl(l_array_counter).counter_value_id;
338 	 l_ctr_rdg_tbl(l_rdg_count).COUNTER_ID := p_ctr_rdg_tbl(l_array_counter).counter_id;
339 	 l_ctr_rdg_tbl(l_rdg_count).VALUE_TIMESTAMP  := p_ctr_rdg_tbl(l_array_counter).VALUE_TIMESTAMP;
340 	 l_ctr_rdg_tbl(l_rdg_count).COUNTER_READING := p_ctr_rdg_tbl(l_array_counter).COUNTER_READING ;
341 	 --
342 	 IF NVL(p_ctr_rdg_tbl(l_array_counter).RESET_FLAG,'N') = 'Y' THEN
343 	    l_ctr_rdg_tbl(l_rdg_count).RESET_MODE  := 'SOFT';
344 	 ELSE
345 	    l_ctr_rdg_tbl(l_rdg_count).RESET_MODE  := NULL;
346 	 END IF;
347 	 --
348 	 l_ctr_rdg_tbl(l_rdg_count).RESET_REASON  := p_ctr_rdg_tbl(l_array_counter).RESET_REASON;
349 	 l_ctr_rdg_tbl(l_rdg_count).COUNTER_READING  := p_ctr_rdg_tbl(l_array_counter).PRE_RESET_LAST_RDG;
350 	 l_ctr_rdg_tbl(l_rdg_count).RESET_COUNTER_READING :=p_ctr_rdg_tbl(l_array_counter).POST_RESET_FIRST_RDG;
351 	 l_ctr_rdg_tbl(l_rdg_count).ADJUSTMENT_TYPE  := p_ctr_rdg_tbl(l_array_counter).MISC_READING_TYPE;
352 	 l_ctr_rdg_tbl(l_rdg_count).ADJUSTMENT_READING   := p_ctr_rdg_tbl(l_array_counter).MISC_READING ;
353 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE1 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE1;
354 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE2 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE2;
355 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE3 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE3;
356 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE4 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE4;
357 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE5 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE5;
358 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE6 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE6;
359 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE7 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE7;
360 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE8 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE8;
361 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE9 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE9;
362 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE10 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE10;
363 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE11 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE11;
364 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE12 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE12;
365 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE13 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE13;
366 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE14 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE14;
367 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE15 := p_ctr_rdg_tbl(l_array_counter).ATTRIBUTE15;
368 	 l_ctr_rdg_tbl(l_rdg_count).ATTRIBUTE_CATEGORY := p_ctr_rdg_tbl(l_array_counter).CONTEXT;
369 	 l_ctr_rdg_tbl(l_rdg_count).COMMENTS     := p_ctr_rdg_tbl(l_array_counter).COMMENTS;
370 	 l_ctr_rdg_tbl(l_rdg_count).DISABLED_FLAG := p_ctr_rdg_tbl(l_array_counter).OVERRIDE_VALID_FLAG;
371 	 --
372 	 l_array_counter := p_ctr_rdg_tbl.NEXT(l_array_counter);
373       END LOOP;
374       --
375       -- Call CSI Update Counter Reading API
376       Csi_Counter_Readings_Pub.Update_Counter_Reading
377       (
378 	  p_api_version           =>   1.0
379 	 ,p_commit                =>   p_commit
380 	 ,p_init_msg_list         =>   p_init_msg_list
384 	 ,x_msg_count             =>   x_msg_count
381 	 ,p_validation_level      =>   p_validation_level
382 	 ,p_ctr_rdg_tbl           =>   l_ctr_rdg_tbl
383 	 ,x_return_status         =>   x_return_status
385 	 ,x_msg_data              =>   x_msg_data
386       );
387       --
388       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
389 	 csi_ctr_gen_utility_pvt.put_line('ERROR FROM Update_Counter_Reading_pub API ');
390 	 l_msg_index := 1;
391 	 l_msg_count := x_msg_count;
392 	 WHILE l_msg_count > 0 LOOP
393 	    x_msg_data := FND_MSG_PUB.GET
394 	    (  l_msg_index,
395 	       FND_API.G_FALSE
396 	    );
397 	    csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
398 	    l_msg_index := l_msg_index + 1;
399 	    l_msg_count := l_msg_count - 1;
400 	 END LOOP;
401 	 RAISE FND_API.G_EXC_ERROR;
402       END IF;
403    END IF;
404    --
405    -- Standard check for p_commit
406    IF FND_API.to_Boolean( p_commit )
407    THEN
408        COMMIT WORK;
409    END IF;
410    -- Standard call to get message count and if count is 1, get message info.
411    FND_MSG_PUB.Count_And_Get
412    (  p_count          =>   x_msg_count,
413       p_data           =>   x_msg_data
414    );
415 EXCEPTION
416    WHEN FND_API.G_EXC_ERROR THEN
417       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
418       x_return_status := FND_API.G_RET_STS_ERROR ;
419       FND_MSG_PUB.Count_And_Get
420             (p_count => x_msg_count ,
421              p_data => x_msg_data
422             );
423    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
424       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
425       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
426       FND_MSG_PUB.Count_And_Get
427              (p_count => x_msg_count ,
428               p_data => x_msg_data
429              );
430    WHEN OTHERS THEN
431       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
432       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
433       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
434          FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
435       END IF;
436       FND_MSG_PUB.Count_And_Get
437             (p_count => x_msg_count ,
438              p_data => x_msg_data
439             );
440 END Update_Counter_Reading;
441 
442 PROCEDURE CAPTURE_COUNTER_READING(
443     P_Api_Version_Number         IN   NUMBER,
444     P_Init_Msg_List              IN   VARCHAR2,
445     P_Commit                     IN   VARCHAR2,
446     p_validation_level           IN   NUMBER,
447     p_CTR_RDG_Rec                IN   CTR_RDG_Rec_Type,
448     p_COUNTER_GRP_LOG_ID         IN   NUMBER,
449     X_Return_Status              OUT  NOCOPY VARCHAR2,
450     X_Msg_Count                  OUT  NOCOPY NUMBER,
451     X_Msg_Data                   OUT  NOCOPY VARCHAR2
452    ) IS
453    l_api_name                CONSTANT   VARCHAR2(30)   := 'CAPTURE_COUNTER_READING';
454    l_api_version_number      CONSTANT   NUMBER         := 1.0;
455    l_txn_tbl                 csi_datastructures_pub.transaction_tbl;
456    l_ctr_rdg_tbl             csi_ctr_datastructures_pub.counter_readings_tbl;
457    l_ctr_prop_rdg_tbl        csi_ctr_datastructures_pub.ctr_property_readings_tbl;
458    l_src_obj_code            CSI_COUNTER_ASSOCIATIONS.source_object_code%TYPE;
459    l_src_obj_id              NUMBER;
460    --
461    l_rdg_count               NUMBER := 0;
462    l_msg_index               NUMBER;
463    l_msg_count               NUMBER;
464 BEGIN
465    -- Standard Start of API savepoint
466    SAVEPOINT CS_CTR_CAPTURE_READING_PUB;
467    -- Standard call to check for call compatibility.
468    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
469 					p_api_version_number,
470 					l_api_name,
471 					G_PKG_NAME)
472    THEN
473        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
474    END IF;
475    --
476    x_return_status := FND_API.G_RET_STS_SUCCESS;
477    --
478    IF p_counter_grp_log_id IS NULL THEN
479       Begin
480 	 select source_object_code,source_object_id
481 	 into l_src_obj_code,l_src_obj_id
482 	 from CSI_COUNTER_ASSOCIATIONS
483 	 where counter_id = p_ctr_rdg_rec.counter_id
484 	 and   rownum < 2;
485 	 --
486 	 l_txn_tbl(1).source_transaction_date := sysdate;
487 	 l_txn_tbl(1).source_header_ref_id := l_src_obj_id;
488 	 IF l_src_obj_code = 'CP' THEN
489 	    l_txn_tbl(1).transaction_type_id := 80;
490 	 ELSIF l_src_obj_code = 'CONTRACT_LINE' THEN
491 	    l_txn_tbl(1).transaction_type_id := 81;
492 	 ELSE
493 	    csi_ctr_gen_utility_pvt.put_line('Unable to get Source Txn Code from Counter Associations..');
494 	    csi_ctr_gen_utility_pvt.ExitWithErrMsg('CS_API_CTR_SRC_TXN_INFO_REQD');
495 	 END IF;
496       Exception
497          When no_data_found then
498 	    csi_ctr_gen_utility_pvt.ExitWithErrMsg('CSI_API_CTR_INVALID');
499       End;
500    ELSE -- Should have got inserted into CSI Transaction during Pre Capture Phase
501       Begin
502          select transaction_type_id,source_header_ref_id,source_transaction_date
503          into l_txn_tbl(1).transaction_type_id,
504               l_txn_tbl(1).source_header_ref_id,
505               l_txn_tbl(1).source_transaction_date
506          from CSI_TRANSACTIONS
507          where transaction_id = p_counter_grp_log_id;
508       Exception
509          when no_data_found then
510             csi_ctr_gen_utility_pvt.put_line('Counter Group Log passed did not get into CSI_TRANSACTIONS..');
514 	         p_token1_val  =>  to_char(p_counter_grp_log_id)
511 	    csi_ctr_gen_utility_pvt.ExitWithErrMsg
512 	       ( p_msg_name    =>  'CSI_INVALID_TXN_ID',
513 	         p_token1_name =>  'transaction_id',
515 	       );
516       End;
517    END IF;
518    --
519    l_ctr_rdg_tbl(1).COUNTER_VALUE_ID := p_ctr_rdg_rec.counter_value_id;
520    l_ctr_rdg_tbl(1).COUNTER_ID := p_ctr_rdg_rec.counter_id;
521    l_ctr_rdg_tbl(1).VALUE_TIMESTAMP  := p_ctr_rdg_rec.VALUE_TIMESTAMP;
522    l_ctr_rdg_tbl(1).COUNTER_READING := p_ctr_rdg_rec.COUNTER_READING ;
523    --
524    IF NVL(p_ctr_rdg_rec.RESET_FLAG,'N') = 'Y' THEN
525       l_ctr_rdg_tbl(1).RESET_MODE  := 'SOFT';
526    ELSE
527       l_ctr_rdg_tbl(1).RESET_MODE  := NULL;
528    END IF;
529    --
530    l_ctr_rdg_tbl(1).RESET_REASON  := p_ctr_rdg_rec.RESET_REASON;
531    l_ctr_rdg_tbl(1).COUNTER_READING  := p_ctr_rdg_rec.PRE_RESET_LAST_RDG;
532    l_ctr_rdg_tbl(1).RESET_COUNTER_READING :=p_ctr_rdg_rec.POST_RESET_FIRST_RDG;
533    l_ctr_rdg_tbl(1).ADJUSTMENT_TYPE  := p_ctr_rdg_rec.MISC_READING_TYPE;
534    l_ctr_rdg_tbl(1).ADJUSTMENT_READING   := p_ctr_rdg_rec.MISC_READING ;
535    l_ctr_rdg_tbl(1).ATTRIBUTE1 := p_ctr_rdg_rec.ATTRIBUTE1;
536    l_ctr_rdg_tbl(1).ATTRIBUTE2 := p_ctr_rdg_rec.ATTRIBUTE2;
537    l_ctr_rdg_tbl(1).ATTRIBUTE3 := p_ctr_rdg_rec.ATTRIBUTE3;
538    l_ctr_rdg_tbl(1).ATTRIBUTE4 := p_ctr_rdg_rec.ATTRIBUTE4;
539    l_ctr_rdg_tbl(1).ATTRIBUTE5 := p_ctr_rdg_rec.ATTRIBUTE5;
540    l_ctr_rdg_tbl(1).ATTRIBUTE6 := p_ctr_rdg_rec.ATTRIBUTE6;
541    l_ctr_rdg_tbl(1).ATTRIBUTE7 := p_ctr_rdg_rec.ATTRIBUTE7;
542    l_ctr_rdg_tbl(1).ATTRIBUTE8 := p_ctr_rdg_rec.ATTRIBUTE8;
543    l_ctr_rdg_tbl(1).ATTRIBUTE9 := p_ctr_rdg_rec.ATTRIBUTE9;
544    l_ctr_rdg_tbl(1).ATTRIBUTE10 := p_ctr_rdg_rec.ATTRIBUTE10;
545    l_ctr_rdg_tbl(1).ATTRIBUTE11 := p_ctr_rdg_rec.ATTRIBUTE11;
546    l_ctr_rdg_tbl(1).ATTRIBUTE12 := p_ctr_rdg_rec.ATTRIBUTE12;
547    l_ctr_rdg_tbl(1).ATTRIBUTE13 := p_ctr_rdg_rec.ATTRIBUTE13;
548    l_ctr_rdg_tbl(1).ATTRIBUTE14 := p_ctr_rdg_rec.ATTRIBUTE14;
549    l_ctr_rdg_tbl(1).ATTRIBUTE15 := p_ctr_rdg_rec.ATTRIBUTE15;
550    l_ctr_rdg_tbl(1).ATTRIBUTE_CATEGORY := p_ctr_rdg_rec.CONTEXT;
551    l_ctr_rdg_tbl(1).COMMENTS     := p_ctr_rdg_rec.COMMENTS;
552    l_ctr_rdg_tbl(1).DISABLED_FLAG := p_ctr_rdg_rec.OVERRIDE_VALID_FLAG;
553    l_ctr_rdg_tbl(1).PARENT_TBL_INDEX := 1; -- Grouped against single transaction
554    --
555    -- Call CSI Capture Counter Reading API
556    Csi_Counter_Readings_Pub.Capture_Counter_Reading
557    (
558        p_api_version           =>   1.0
559       ,p_commit                =>   p_commit
560       ,p_init_msg_list         =>   p_init_msg_list
561       ,p_validation_level      =>   p_validation_level
562       ,p_txn_tbl               =>   l_txn_tbl
563       ,p_ctr_rdg_tbl           =>   l_ctr_rdg_tbl
564       ,p_ctr_prop_rdg_tbl      =>   l_ctr_prop_rdg_tbl
565       ,x_return_status         =>   x_return_status
566       ,x_msg_count             =>   x_msg_count
567       ,x_msg_data              =>   x_msg_data
568    );
569    --
570    IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
571       csi_ctr_gen_utility_pvt.put_line('ERROR FROM Capture_Counter_Reading_pub API ');
572       l_msg_index := 1;
573       l_msg_count := x_msg_count;
574       WHILE l_msg_count > 0 LOOP
575 	 x_msg_data := FND_MSG_PUB.GET
576 	 (  l_msg_index,
577 	    FND_API.G_FALSE
578 	 );
579 	 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
580 	 l_msg_index := l_msg_index + 1;
581 	 l_msg_count := l_msg_count - 1;
582       END LOOP;
583       RAISE FND_API.G_EXC_ERROR;
584    END IF;
585    --
586    -- End of API body
587    --
588    -- Standard check for p_commit
589    IF FND_API.to_Boolean( p_commit )
590    THEN
591        COMMIT WORK;
592    END IF;
593    -- Standard call to get message count and if count is 1, get message info.
594    FND_MSG_PUB.Count_And_Get
595    (  p_count          =>   x_msg_count,
596       p_data           =>   x_msg_data
597    );
598 EXCEPTION
599    WHEN FND_API.G_EXC_ERROR THEN
600       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
601       x_return_status := FND_API.G_RET_STS_ERROR ;
602       FND_MSG_PUB.Count_And_Get
603             (p_count => x_msg_count ,
604              p_data => x_msg_data
605             );
606    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
607       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
608       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
609       FND_MSG_PUB.Count_And_Get
610              (p_count => x_msg_count ,
611               p_data => x_msg_data
612              );
613    WHEN OTHERS THEN
614       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
615       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
616       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
617          FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
618       END IF;
619       FND_MSG_PUB.Count_And_Get
620             (p_count => x_msg_count ,
621              p_data => x_msg_data
622             );
623 END Capture_Counter_Reading;
624 
625 PROCEDURE Update_Counter_Reading(
626     p_Api_Version_Number         IN   NUMBER,
627     P_Init_Msg_List              IN   VARCHAR2,
628     P_Commit                     IN   VARCHAR2,
629     p_validation_level           IN   NUMBER,
630     p_CTR_RDG_Rec                IN   CTR_RDG_Rec_Type,
631     p_COUNTER_GRP_LOG_ID         IN   NUMBER,
635     X_Msg_Data                   OUT  NOCOPY VARCHAR2
632     p_object_version_number      IN   NUMBER,
633     X_Return_Status              OUT  NOCOPY VARCHAR2,
634     X_Msg_Count                  OUT  NOCOPY NUMBER,
636    ) IS
637    --
638    l_api_name                CONSTANT   VARCHAR2(30)   := 'UPDATE_COUNTER_READING';
639    l_api_version_number      CONSTANT   NUMBER         := 1.0;
640    l_ctr_rdg_tbl             csi_ctr_datastructures_pub.counter_readings_tbl;
641    l_msg_index               NUMBER;
642    l_msg_count               NUMBER;
643 BEGIN
644    -- Standard Start of API savepoint
645    SAVEPOINT CS_CTR_CAPTURE_READING_PUB;
646    -- Standard call to check for call compatibility.
647    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
648 					p_api_version_number,
649 					l_api_name,
650 					G_PKG_NAME)
651    THEN
652        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
653    END IF;
654    --
655    x_return_status := FND_API.G_RET_STS_SUCCESS;
656    --
657    -- API body
658    --
659    l_ctr_rdg_tbl(1).COUNTER_VALUE_ID := p_ctr_rdg_rec.counter_value_id;
660    l_ctr_rdg_tbl(1).COUNTER_ID := p_ctr_rdg_rec.counter_id;
661    l_ctr_rdg_tbl(1).VALUE_TIMESTAMP  := p_ctr_rdg_rec.VALUE_TIMESTAMP;
662    l_ctr_rdg_tbl(1).COUNTER_READING := p_ctr_rdg_rec.COUNTER_READING ;
663    --
664    IF NVL(p_ctr_rdg_rec.RESET_FLAG,'N') = 'Y' THEN
665       l_ctr_rdg_tbl(1).RESET_MODE  := 'SOFT';
666    ELSE
667       l_ctr_rdg_tbl(1).RESET_MODE  := NULL;
668    END IF;
669    --
670    l_ctr_rdg_tbl(1).RESET_REASON  := p_ctr_rdg_rec.RESET_REASON;
671    l_ctr_rdg_tbl(1).COUNTER_READING  := p_ctr_rdg_rec.PRE_RESET_LAST_RDG;
672    l_ctr_rdg_tbl(1).RESET_COUNTER_READING :=p_ctr_rdg_rec.POST_RESET_FIRST_RDG;
673    l_ctr_rdg_tbl(1).ADJUSTMENT_TYPE  := p_ctr_rdg_rec.MISC_READING_TYPE;
674    l_ctr_rdg_tbl(1).ADJUSTMENT_READING   := p_ctr_rdg_rec.MISC_READING ;
675    l_ctr_rdg_tbl(1).ATTRIBUTE1 := p_ctr_rdg_rec.ATTRIBUTE1;
676    l_ctr_rdg_tbl(1).ATTRIBUTE2 := p_ctr_rdg_rec.ATTRIBUTE2;
677    l_ctr_rdg_tbl(1).ATTRIBUTE3 := p_ctr_rdg_rec.ATTRIBUTE3;
678    l_ctr_rdg_tbl(1).ATTRIBUTE4 := p_ctr_rdg_rec.ATTRIBUTE4;
679    l_ctr_rdg_tbl(1).ATTRIBUTE5 := p_ctr_rdg_rec.ATTRIBUTE5;
680    l_ctr_rdg_tbl(1).ATTRIBUTE6 := p_ctr_rdg_rec.ATTRIBUTE6;
681    l_ctr_rdg_tbl(1).ATTRIBUTE7 := p_ctr_rdg_rec.ATTRIBUTE7;
682    l_ctr_rdg_tbl(1).ATTRIBUTE8 := p_ctr_rdg_rec.ATTRIBUTE8;
683    l_ctr_rdg_tbl(1).ATTRIBUTE9 := p_ctr_rdg_rec.ATTRIBUTE9;
684    l_ctr_rdg_tbl(1).ATTRIBUTE10 := p_ctr_rdg_rec.ATTRIBUTE10;
685    l_ctr_rdg_tbl(1).ATTRIBUTE11 := p_ctr_rdg_rec.ATTRIBUTE11;
686    l_ctr_rdg_tbl(1).ATTRIBUTE12 := p_ctr_rdg_rec.ATTRIBUTE12;
687    l_ctr_rdg_tbl(1).ATTRIBUTE13 := p_ctr_rdg_rec.ATTRIBUTE13;
688    l_ctr_rdg_tbl(1).ATTRIBUTE14 := p_ctr_rdg_rec.ATTRIBUTE14;
689    l_ctr_rdg_tbl(1).ATTRIBUTE15 := p_ctr_rdg_rec.ATTRIBUTE15;
690    l_ctr_rdg_tbl(1).ATTRIBUTE_CATEGORY := p_ctr_rdg_rec.CONTEXT;
691    l_ctr_rdg_tbl(1).COMMENTS     := p_ctr_rdg_rec.COMMENTS;
692    l_ctr_rdg_tbl(1).DISABLED_FLAG := p_ctr_rdg_rec.OVERRIDE_VALID_FLAG;
693    --
694    -- Call CSI Update Counter Reading API
695    Csi_Counter_Readings_Pub.Update_Counter_Reading
696    (
697        p_api_version           =>   1.0
698       ,p_commit                =>   p_commit
699       ,p_init_msg_list         =>   p_init_msg_list
700       ,p_validation_level      =>   p_validation_level
701       ,p_ctr_rdg_tbl           =>   l_ctr_rdg_tbl
702       ,x_return_status         =>   x_return_status
703       ,x_msg_count             =>   x_msg_count
704       ,x_msg_data              =>   x_msg_data
705    );
706    --
707    IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
708       csi_ctr_gen_utility_pvt.put_line('ERROR FROM Update_Counter_Reading_pub API ');
709       l_msg_index := 1;
710       l_msg_count := x_msg_count;
711       WHILE l_msg_count > 0 LOOP
712 	 x_msg_data := FND_MSG_PUB.GET
713 	 (  l_msg_index,
714 	    FND_API.G_FALSE
715 	 );
716 	 csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
717 	 l_msg_index := l_msg_index + 1;
718 	 l_msg_count := l_msg_count - 1;
719       END LOOP;
720       RAISE FND_API.G_EXC_ERROR;
721       END IF;
722    --
723    -- Standard check for p_commit
724    IF FND_API.to_Boolean( p_commit )
725    THEN
726        COMMIT WORK;
727    END IF;
728    -- Standard call to get message count and if count is 1, get message info.
729    FND_MSG_PUB.Count_And_Get
730    (  p_count          =>   x_msg_count,
731       p_data           =>   x_msg_data
732    );
733 EXCEPTION
734    WHEN FND_API.G_EXC_ERROR THEN
735       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
736       x_return_status := FND_API.G_RET_STS_ERROR ;
737       FND_MSG_PUB.Count_And_Get
738             (p_count => x_msg_count ,
739              p_data => x_msg_data
740             );
741    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
742       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
743       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
744       FND_MSG_PUB.Count_And_Get
745              (p_count => x_msg_count ,
746               p_data => x_msg_data
747              );
748    WHEN OTHERS THEN
749       ROLLBACK TO CS_CTR_CAPTURE_READING_PUB;
750       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
751       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
752          FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
753       END IF;
754       FND_MSG_PUB.Count_And_Get
758 END Update_Counter_Reading;
755             (p_count => x_msg_count ,
756              p_data => x_msg_data
757             );
759 
760 
761  PROCEDURE Capture_Ctr_Prop_Reading(
762      p_Api_version_number      IN   NUMBER,
763      p_Init_Msg_List           IN   VARCHAR2,
764      P_Commit                  IN   VARCHAR2,
765      p_validation_level        IN   NUMBER,
766      p_PROP_RDG_Rec            IN   PROP_RDG_Rec_Type,
767      p_COUNTER_GRP_LOG_ID      IN   NUMBER,
768      X_Return_Status           OUT  NOCOPY VARCHAR2,
769      X_Msg_Count               OUT  NOCOPY NUMBER,
770      X_Msg_Data                OUT  NOCOPY VARCHAR2
771      ) IS
772          l_api_name            CONSTANT VARCHAR2(30)  := 'CAPTURE_CTR_PROP_READING';
773          l_api_version_number  CONSTANT NUMBER        := 1.0;
774  BEGIN
775     x_return_status := FND_API.G_RET_STS_SUCCESS;
776  END Capture_CTR_Prop_Reading;
777 
778 PROCEDURE PRE_CAPTURE_CTR_READING(
779     P_Api_Version_Number         IN   NUMBER,
780     P_Init_Msg_List              IN   VARCHAR2,
781     P_Commit                     IN   VARCHAR2,
782     p_validation_level           IN   NUMBER,
783     P_CTR_GRP_LOG_Rec            IN   CTR_GRP_LOG_Rec_Type,
784     X_COUNTER_GRP_LOG_ID         IN OUT  NOCOPY NUMBER,
785     X_Return_Status              OUT  NOCOPY VARCHAR2,
786     X_Msg_Count                  OUT  NOCOPY NUMBER,
787     X_Msg_Data                   OUT  NOCOPY VARCHAR2
788     ) IS
789    --
790    l_api_name                CONSTANT VARCHAR2(30) := 'PRE_CAPTURE_COUNTER_READING';
791    l_api_version_number      CONSTANT NUMBER   := 1.0;
792    l_txn_rec                 csi_datastructures_pub.transaction_rec;
793    l_msg_data                VARCHAR2(2000);
794    l_msg_index               NUMBER;
795    l_msg_count               NUMBER;
796 BEGIN
797    -- Standard Start of API savepoint
798    SAVEPOINT PRE_CAPTURE_READING_PUB;
799    -- Standard call to check for call compatibility.
800    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
801 					p_api_version_number,
802 					l_api_name,
803 					G_PKG_NAME)
804    THEN
805        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
806    END IF;
807    --
808    x_return_status := FND_API.G_RET_STS_SUCCESS;
809    --
810    csi_ctr_gen_utility_pvt.put_line('Inside PRE_CAPTURE_COUNTER_READING...');
811    csi_ctr_gen_utility_pvt.put_line('Source Transaction Code : '||p_ctr_grp_log_rec.source_transaction_code);
812    csi_ctr_gen_utility_pvt.put_line('Source Transaction ID : '||to_char(p_ctr_grp_log_rec.source_transaction_id));
813    --
814    IF NVL(p_ctr_grp_log_rec.source_transaction_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR THEN
815       IF p_ctr_grp_log_rec.source_transaction_code in ('CP','INTERNAL') THEN
816 	 l_txn_rec.transaction_type_id := 80;
817       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'CONTRACT_LINE' THEN
818 	 l_txn_rec.transaction_type_id := 81;
819       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'OKL_CNTR_GRP' THEN
820 	 l_txn_rec.transaction_type_id := 85;
821       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'FS' THEN
822          l_txn_rec.transaction_type_id := 86;
823       ELSIF p_ctr_grp_log_rec.source_transaction_code = 'DR' THEN
824          l_txn_rec.transaction_type_id := 87;
825       ELSE
826 	 csi_ctr_gen_utility_pvt.put_line('Invalid Source Transaction Code : '||p_ctr_grp_log_rec.source_transaction_code);
827 	 csi_ctr_gen_utility_pvt.ExitWithErrMsg('CS_API_CTR_SRC_TXN_INFO_REQD');
828       END IF;
829       --
830       l_txn_rec.source_header_ref_id := p_ctr_grp_log_rec.source_transaction_id;
831       l_txn_rec.source_transaction_date := sysdate;
832       l_txn_rec.ATTRIBUTE1 := p_CTR_GRP_LOG_Rec.ATTRIBUTE1;
833       l_txn_rec.ATTRIBUTE2 := p_CTR_GRP_LOG_Rec.ATTRIBUTE2;
834       l_txn_rec.ATTRIBUTE3 := p_CTR_GRP_LOG_Rec.ATTRIBUTE3;
835       l_txn_rec.ATTRIBUTE4 := p_CTR_GRP_LOG_Rec.ATTRIBUTE4;
836       l_txn_rec.ATTRIBUTE5 := p_CTR_GRP_LOG_Rec.ATTRIBUTE5;
837       l_txn_rec.ATTRIBUTE6 := p_CTR_GRP_LOG_Rec.ATTRIBUTE6;
838       l_txn_rec.ATTRIBUTE7 := p_CTR_GRP_LOG_Rec.ATTRIBUTE7;
839       l_txn_rec.ATTRIBUTE8 := p_CTR_GRP_LOG_Rec.ATTRIBUTE8;
840       l_txn_rec.ATTRIBUTE9 := p_CTR_GRP_LOG_Rec.ATTRIBUTE9;
841       l_txn_rec.ATTRIBUTE10 := p_CTR_GRP_LOG_Rec.ATTRIBUTE10;
842       l_txn_rec.ATTRIBUTE11 := p_CTR_GRP_LOG_Rec.ATTRIBUTE11;
843       l_txn_rec.ATTRIBUTE12 := p_CTR_GRP_LOG_Rec.ATTRIBUTE12;
844       l_txn_rec.ATTRIBUTE13 := p_CTR_GRP_LOG_Rec.ATTRIBUTE13;
845       l_txn_rec.ATTRIBUTE14 := p_CTR_GRP_LOG_Rec.ATTRIBUTE14;
846       l_txn_rec.ATTRIBUTE15 := p_CTR_GRP_LOG_Rec.ATTRIBUTE15;
847       l_txn_rec.CONTEXT := p_CTR_GRP_LOG_Rec.CONTEXT;
848       --
849       -- Call Create_Reading Transaction to insert into CSI_TRANSACTIONS
850       csi_ctr_gen_utility_pvt.put_line('Calling Create_Reading_Transaction...');
851       Csi_Counter_Readings_Pvt.Create_Reading_Transaction
852 	 ( p_api_version           =>  1.0
853 	  ,p_commit                =>  fnd_api.g_false
854 	  ,p_init_msg_list         =>  fnd_api.g_true
855 	  ,p_validation_level      =>  fnd_api.g_valid_level_full
856 	  ,p_txn_rec               =>  l_txn_rec
857 	  ,x_return_status         =>  x_return_status
858 	  ,x_msg_count             =>  x_msg_count
859 	  ,x_msg_data              =>  x_msg_data
860 	 );
861       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
862 	 csi_ctr_gen_utility_pvt.put_line('Error from Create_Reading_Transaction...');
863 	 l_msg_index := 1;
864 	 FND_MSG_PUB.Count_And_Get
865 	      (p_count  =>  x_msg_count,
866 	       p_data   =>  x_msg_data
867 	      );
868 	 l_msg_count := x_msg_count;
869 	 WHILE l_msg_count > 0 LOOP
870 	       x_msg_data := FND_MSG_PUB.GET
871 		    (  l_msg_index,
872 		       FND_API.G_FALSE        );
873 		csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
874 		l_msg_index := l_msg_index + 1;
875 		l_msg_count := l_msg_count - 1;
876 	 END LOOP;
877 	 RAISE FND_API.G_EXC_ERROR;
878       ELSE -- Transaction created successfully
879          X_COUNTER_GRP_LOG_ID := l_txn_rec.transaction_id;
880       END IF;
881    ELSE
882       X_COUNTER_GRP_LOG_ID := NULL;
883    END IF;
884    --
885    -- End of API body
886    --
887    -- Standard check for p_commit
888    IF FND_API.to_Boolean( p_commit )
889    THEN
890        COMMIT WORK;
891    END IF;
892    -- Standard call to get message count and if count is 1, get message info.
893    FND_MSG_PUB.Count_And_Get
894    (  p_count          =>   x_msg_count,
895       p_data           =>   x_msg_data
896    );
897 EXCEPTION
898    WHEN FND_API.G_EXC_ERROR THEN
899       ROLLBACK TO PRE_CAPTURE_READING_PUB;
900       x_return_status := FND_API.G_RET_STS_ERROR ;
901       FND_MSG_PUB.Count_And_Get
902             (p_count => x_msg_count ,
903              p_data => x_msg_data
904             );
905    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
906       ROLLBACK TO PRE_CAPTURE_READING_PUB;
907       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
908       FND_MSG_PUB.Count_And_Get
909              (p_count => x_msg_count ,
910               p_data => x_msg_data
911              );
912    WHEN OTHERS THEN
913       ROLLBACK TO PRE_CAPTURE_READING_PUB;
914       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
915       IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
916          FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME ,l_api_name);
917       END IF;
918       FND_MSG_PUB.Count_And_Get
919             (p_count => x_msg_count ,
920              p_data => x_msg_data
921             );
922 END PRE_CAPTURE_CTR_READING;
923 --
924 PROCEDURE POST_CAPTURE_CTR_READING(
925     P_Api_Version_Number         IN   NUMBER,
926     P_Init_Msg_List              IN   VARCHAR2,
927     P_Commit                     IN   VARCHAR2,
928     p_validation_level           IN   NUMBER,
929     p_COUNTER_GRP_LOG_ID         IN   NUMBER,
930     P_READING_UPDATED            IN   VARCHAR2,
931     X_Return_Status              OUT  NOCOPY VARCHAR2,
932     X_Msg_Count                  OUT  NOCOPY NUMBER,
933     X_Msg_Data                   OUT  NOCOPY VARCHAR2
934     ) IS
935 BEGIN
936    x_return_status := FND_API.G_RET_STS_SUCCESS;
937 END POST_CAPTURE_CTR_READING;
938 --
939 PROCEDURE UPDATE_CTR_PROP_READING(
940     p_api_version_number         IN   NUMBER,
941     p_init_msg_list              IN   VARCHAR2,
942     p_commit                     IN   VARCHAR2,
943     p_validation_level           IN   NUMBER,
944     p_PROP_RDG_Rec               IN   PROP_RDG_Rec_Type,
945     p_COUNTER_GRP_LOG_ID         IN   NUMBER,
946     p_object_version_number      IN   NUMBER,
947     X_Return_Status              OUT  NOCOPY VARCHAR2,
948     X_Msg_Count                  OUT  NOCOPY NUMBER,
949     X_Msg_Data                   OUT  NOCOPY VARCHAR2
950     ) IS
951      l_api_name            CONSTANT  VARCHAR2(30)  := 'UPDATE_CTR_PROP_READING';
952      l_api_version_number  CONSTANT  NUMBER  := 1.0;
953 BEGIN
954    x_return_status := FND_API.G_RET_STS_SUCCESS;
955 END Update_CTR_Prop_Reading;
956 END CS_CTR_CAPTURE_READING_PUB;