DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSI_COUNTER_PUB

Source


1 PACKAGE BODY CSI_COUNTER_PUB AS
2 /* $Header: csipctib.pls 120.10.12010000.4 2008/11/07 18:50:31 mashah ship $ */
3 
4 -- --------------------------------------------------------
5 -- Define global variables
6 -- --------------------------------------------------------
7 
8 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSI_COUNTER_PUB';
9 G_FILE_NAME CONSTANT VARCHAR2(12) := 'csipctib.pls';
10 
11 --|---------------------------------------------------
12 --| procedure name: create_counter
13 --| description :   procedure used to
14 --|                 create counter instance
15 --|---------------------------------------------------
16 
17 PROCEDURE create_counter
18  (
19      p_api_version	             IN	NUMBER
20     ,p_init_msg_list	          	IN	VARCHAR2
21     ,p_commit		                 IN	VARCHAR2
22     ,p_validation_level          IN NUMBER
23     ,p_counter_instance_rec	    IN out	NOCOPY CSI_CTR_DATASTRUCTURES_PUB.Counter_instance_rec
24     ,P_ctr_properties_tbl       IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_tbl
25     ,P_counter_relationships_tbl IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.counter_relationships_tbl
26     ,P_ctr_derived_filters_tbl  IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.ctr_derived_filters_tbl
27     ,P_counter_associations_tbl IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.counter_associations_tbl
28     ,x_return_status               out NOCOPY VARCHAR2
29     ,x_msg_count                   out NOCOPY NUMBER
30     ,x_msg_data                    out NOCOPY VARCHAR2
31     ,x_ctr_id		           out	NOCOPY NUMBER
32  )
33  IS
34     l_api_name                      CONSTANT VARCHAR2(30)   := 'CREATE_COUNTER';
35     l_api_version                   CONSTANT NUMBER         := 1.0;
36     -- l_debug_level                   NUMBER;
37     l_flag                          VARCHAR2(1)             := 'N';
38     l_msg_data                      VARCHAR2(2000);
39     l_msg_index                     NUMBER;
40     l_msg_count                     NUMBER;
41     l_count                         NUMBER;
42     l_return_message                VARCHAR2(100);
43 
44     l_counter_id                    NUMBER;
45     l_Ctr_properties_rec            CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_rec;
46     l_counter_relationships_rec     CSI_CTR_DATASTRUCTURES_PUB.counter_relationships_rec;
47     l_ctr_derived_filters_rec       CSI_CTR_DATASTRUCTURES_PUB.ctr_derived_filters_rec;
48     l_counter_associations_rec      CSI_CTR_DATASTRUCTURES_PUB.counter_associations_rec;
49 
50     -- Added for inserting initial reading
51     l_c_ind_txn                  BINARY_INTEGER := 0;
52     l_c_ind_rdg                  BINARY_INTEGER := 0;
53     l_c_ind_prop                 BINARY_INTEGER := 0;
54     l_transaction_type_id        NUMBER;
55     l_transaction_tbl   csi_datastructures_pub.transaction_tbl;
56     l_counter_readings_tbl       csi_ctr_datastructures_pub.counter_readings_tbl;
57     l_ctr_property_readings_tbl  csi_ctr_datastructures_pub.ctr_property_readings_tbl;
58     l_src_obj_cd   VARCHAR2(30);
59     l_src_obj_id   NUMBER;
60     CURSOR DFLT_PROP_RDG(p_counter_id IN NUMBER) IS
61     SELECT ccp.counter_property_id,ccp.default_value,ccp.property_data_type, ccp.is_nullable
62     FROM CSI_COUNTER_PROPERTIES_B ccp
63     WHERE ccp.counter_id = p_counter_id AND NVL(ccp.is_nullable,'N') = 'N'
64     AND   NVL(end_date_active,(SYSDATE+1)) > SYSDATE;
65 
66     l_rel_type  VARCHAR2(30) := 'CONFIGURATION';
67 
68 
69 BEGIN
70    -- Standard Start of API savepoint
71    SAVEPOINT  create_counter_pub;
72 
73    -- Standard call to check for call compatibility.
74    IF NOT FND_API.Compatible_API_Call (l_api_version,
75                                        p_api_version,
76                                        l_api_name   ,
77                                        G_PKG_NAME   )
78    THEN
79       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
80    END IF;
81 
82    -- Initialize message list if p_init_msg_list is set to TRUE.
83    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
84       FND_MSG_PUB.initialize;
85    END IF;
86 
87    --  Initialize API return status to success
88    x_return_status := FND_API.G_RET_STS_SUCCESS;
89 
90    -- Read the debug profiles values in to global variable 7197402
91    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
92 
93    -- Check the profile option debug_level for debug message reporting
94    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
95 
96    -- If debug_level = 1 then dump the procedure name
97    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
98       csi_ctr_gen_utility_pvt.put_line( 'create_counter');
99    END IF;
100 
101    -- If the debug level = 2 then dump all the parameters values.
102    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
103       csi_ctr_gen_utility_pvt.put_line( 'create_counter'     ||
104                                      p_api_version         ||'-'||
105                                      p_commit              ||'-'||
106                                      p_init_msg_list       ||'-'||
107                                      p_validation_level );
108       csi_ctr_gen_utility_pvt.dump_counter_instance_rec(p_counter_instance_rec);
109    END IF;
110 
111    /* Customer pre -processing  section - Mandatory  */
112    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
113      CSI_COUNTER_CUHK.create_counter_pre
114      (
115       p_api_version	            => p_api_version
116       ,p_init_msg_list	            => p_init_msg_list
117       ,p_commit		            => p_commit
118       ,p_validation_level           => p_validation_level
119       ,p_counter_instance_rec	    => p_counter_instance_rec
120       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
121       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
122       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
123       ,P_counter_associations_tbl   => P_counter_associations_tbl
124       ,x_return_status              => x_return_status
125       ,x_msg_count                  => x_msg_count
126       ,x_msg_data                   => x_msg_data
127       ,x_ctr_id		            => x_ctr_id
128      );
129      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
130           l_msg_index := 1;
131           l_msg_count := x_msg_count;
132 
133           WHILE l_msg_count > 0 LOOP
134              x_msg_data := FND_MSG_PUB.GET
135                            (l_msg_index,
136                             FND_API.G_FALSE );
137              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_COUNTER_PRE API');
138              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
139              l_msg_index := l_msg_index + 1;
140              l_msg_count := l_msg_count - 1;
141           END LOOP;
142           RAISE FND_API.G_EXC_ERROR;
143        END IF;
144 
145 
146    END IF;
147    /* Vertical pre -processing  section - Mandatory  */
148    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
149      CSI_COUNTER_VUHK.create_counter_pre
150      (
151       p_api_version	            => p_api_version
152       ,p_init_msg_list	            => p_init_msg_list
153       ,p_commit		            => p_commit
154       ,p_validation_level           => p_validation_level
155       ,p_counter_instance_rec	    => p_counter_instance_rec
156       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
157       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
158       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
159       ,P_counter_associations_tbl   => P_counter_associations_tbl
160       ,x_return_status              => x_return_status
161       ,x_msg_count                  => x_msg_count
162       ,x_msg_data                   => x_msg_data
163       ,x_ctr_id		            => x_ctr_id
164      );
165      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
166           l_msg_index := 1;
167           l_msg_count := x_msg_count;
168 
169           WHILE l_msg_count > 0 LOOP
170              x_msg_data := FND_MSG_PUB.GET
171                            (l_msg_index,
172                             FND_API.G_FALSE );
173              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_COUNTER_PRE API');
174              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
175              l_msg_index := l_msg_index + 1;
176              l_msg_count := l_msg_count - 1;
177           END LOOP;
178           RAISE FND_API.G_EXC_ERROR;
179      END IF;
180    END IF;
181 
182    -- Start of API Body
183 /*
184    IF P_counter_associations_tbl.COUNT = 0 THEN
185       csi_ctr_gen_utility_pvt.put_line('Counter Associations Information is empty. Cannot Proceed...');
186       csi_ctr_gen_utility_pvt.ExitWithErrMsg('CSI_NO_CTR_ASSOC_ID');
187    END IF;
188 */
189    CSI_COUNTER_PVT.create_counter
190    (
191      p_api_version	    =>	1.0
192     ,p_init_msg_list	    =>	p_init_msg_list
193     ,p_commit		    =>	p_commit
194     ,p_validation_level	    =>	p_validation_level
195     ,p_counter_instance_rec => p_counter_instance_rec
196     ,x_return_status	    =>	x_return_status
197     ,x_msg_count	    =>	x_msg_count
198     ,x_msg_data		    =>	x_msg_data
199     ,x_ctr_id		    =>	l_counter_id
200     );
201     IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
202           l_msg_index := 1;
203           l_msg_count := x_msg_count;
204 
205           WHILE l_msg_count > 0 LOOP
206              x_msg_data := FND_MSG_PUB.GET
207                            (l_msg_index,
208                             FND_API.G_FALSE );
209              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_COUNTER API');
210              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
211              l_msg_index := l_msg_index + 1;
212              l_msg_count := l_msg_count - 1;
213           END LOOP;
214           RAISE FND_API.G_EXC_ERROR;
215      END IF;
216 
217     x_ctr_id := l_counter_id;
218 
219     -- Insert Counter Properties
220     IF p_ctr_properties_tbl.count > 0 THEN
221        FOR j in p_ctr_properties_tbl.FIRST..p_ctr_properties_tbl.LAST
222        LOOP
223           DECLARE
224              l_ctr_property_id NUMBER;
225           BEGIN
226              l_Ctr_properties_rec.counter_id := l_counter_id;
227              l_Ctr_properties_rec.NAME := p_ctr_properties_tbl(j).name;
228              l_Ctr_properties_rec.DESCRIPTION  := p_ctr_properties_tbl(j).DESCRIPTION;
229              l_Ctr_properties_rec.PROPERTY_DATA_TYPE := p_ctr_properties_tbl(j).PROPERTY_DATA_TYPE;
230              l_Ctr_properties_rec.IS_NULLABLE  := p_ctr_properties_tbl(j).IS_NULLABLE;
231              l_Ctr_properties_rec.DEFAULT_VALUE  := p_ctr_properties_tbl(j).DEFAULT_VALUE;
232              l_Ctr_properties_rec.MINIMUM_VALUE  := p_ctr_properties_tbl(j).MINIMUM_VALUE;
233              l_Ctr_properties_rec.MAXIMUM_VALUE  := p_ctr_properties_tbl(j).MAXIMUM_VALUE;
234              l_Ctr_properties_rec.UOM_CODE       := p_ctr_properties_tbl(j).UOM_CODE;
235              l_Ctr_properties_rec.START_DATE_ACTIVE  := p_ctr_properties_tbl(j).START_DATE_ACTIVE;
236              l_Ctr_properties_rec.END_DATE_ACTIVE    := p_ctr_properties_tbl(j).END_DATE_ACTIVE;
237              l_Ctr_properties_rec.PROPERTY_LOV_TYPE  := p_ctr_properties_tbl(j).PROPERTY_LOV_TYPE;
238              l_Ctr_properties_rec.ATTRIBUTE1     := p_ctr_properties_tbl(j).ATTRIBUTE1;
239              l_Ctr_properties_rec.ATTRIBUTE2     := p_ctr_properties_tbl(j).ATTRIBUTE2;
240              l_Ctr_properties_rec.ATTRIBUTE3     := p_ctr_properties_tbl(j).ATTRIBUTE3;
241              l_Ctr_properties_rec.ATTRIBUTE4     := p_ctr_properties_tbl(j).ATTRIBUTE4;
242              l_Ctr_properties_rec.ATTRIBUTE5     := p_ctr_properties_tbl(j).ATTRIBUTE5;
243              l_Ctr_properties_rec.ATTRIBUTE6     := p_ctr_properties_tbl(j).ATTRIBUTE6;
244              l_Ctr_properties_rec.ATTRIBUTE7     := p_ctr_properties_tbl(j).ATTRIBUTE7;
245              l_Ctr_properties_rec.ATTRIBUTE8     := p_ctr_properties_tbl(j).ATTRIBUTE8;
246              l_Ctr_properties_rec.ATTRIBUTE9     := p_ctr_properties_tbl(j).ATTRIBUTE9;
247              l_Ctr_properties_rec.ATTRIBUTE10    := p_ctr_properties_tbl(j).ATTRIBUTE10;
248              l_Ctr_properties_rec.ATTRIBUTE11    := p_ctr_properties_tbl(j).ATTRIBUTE11;
249              l_Ctr_properties_rec.ATTRIBUTE12    := p_ctr_properties_tbl(j).ATTRIBUTE12;
250              l_Ctr_properties_rec.ATTRIBUTE13    := p_ctr_properties_tbl(j).ATTRIBUTE13;
251              l_Ctr_properties_rec.ATTRIBUTE14    := p_ctr_properties_tbl(j).ATTRIBUTE14;
252              l_Ctr_properties_rec.ATTRIBUTE15    := p_ctr_properties_tbl(j).ATTRIBUTE15;
253              l_Ctr_properties_rec.ATTRIBUTE_CATEGORY  := p_ctr_properties_tbl(j).ATTRIBUTE_CATEGORY;
254 
255 
256              CSI_COUNTER_PVT.create_ctr_property
257            	 (
258            	   p_api_version	=>	1.0
259            	  ,p_init_msg_list	=>	p_init_msg_list
260            	  ,p_commit		=>	p_commit
261            	  ,p_validation_level	=>	p_validation_level
262                   ,p_ctr_properties_rec =>      l_Ctr_properties_rec
263            	  ,x_return_status	=>	x_return_status
264            	  ,x_msg_count	        =>	x_msg_count
265            	  ,x_msg_data		=>	x_msg_data
266            	  ,x_ctr_property_id	=>	l_ctr_property_id
267            	  );
268           	   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
269                 l_msg_index := 1;
270                 l_msg_count := x_msg_count;
271 
272                 WHILE l_msg_count > 0 LOOP
273                  x_msg_data := FND_MSG_PUB.GET
274                            (l_msg_index,
275                             FND_API.G_FALSE );
276                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_CTR_PROPERTY API');
277                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
278                  l_msg_index := l_msg_index + 1;
279                  l_msg_count := l_msg_count - 1;
280                 END LOOP;
281                 RAISE FND_API.G_EXC_ERROR;
282               END IF;
283           END;
284        END LOOP;
285     END IF;
286 
287     -- Insert Counter relationships
288     IF P_counter_relationships_tbl.count > 0 THEN
289        FOR i in p_counter_relationships_tbl.FIRST..p_counter_relationships_tbl.LAST
290        LOOP
291           DECLARE
292              l_relationship_id NUMBER;
293           BEGIN
294              l_counter_relationships_rec.OBJECT_COUNTER_ID  := l_counter_id;
295              l_counter_relationships_rec.CTR_ASSOCIATION_ID := p_counter_relationships_tbl(i).CTR_ASSOCIATION_ID;
296              l_counter_relationships_rec.RELATIONSHIP_TYPE_CODE := p_counter_relationships_tbl(i).RELATIONSHIP_TYPE_CODE;
297              l_counter_relationships_rec.SOURCE_COUNTER_ID  := p_counter_relationships_tbl(i).SOURCE_COUNTER_ID;
298              l_counter_relationships_rec.ACTIVE_START_DATE  := p_counter_relationships_tbl(i).ACTIVE_START_DATE ;
299              l_counter_relationships_rec.ACTIVE_END_DATE  := p_counter_relationships_tbl(i).ACTIVE_END_DATE;
300              l_counter_relationships_rec.BIND_VARIABLE_NAME  := p_counter_relationships_tbl(i).BIND_VARIABLE_NAME;
301              l_counter_relationships_rec.FACTOR  := p_counter_relationships_tbl(i).FACTOR;
302              l_counter_relationships_rec.ATTRIBUTE1     := p_counter_relationships_tbl(i).ATTRIBUTE1;
303              l_counter_relationships_rec.ATTRIBUTE2     := p_counter_relationships_tbl(i).ATTRIBUTE2;
304              l_counter_relationships_rec.ATTRIBUTE3     := p_counter_relationships_tbl(i).ATTRIBUTE3;
305              l_counter_relationships_rec.ATTRIBUTE4     := p_counter_relationships_tbl(i).ATTRIBUTE4;
306              l_counter_relationships_rec.ATTRIBUTE5     := p_counter_relationships_tbl(i).ATTRIBUTE5;
307              l_counter_relationships_rec.ATTRIBUTE6     := p_counter_relationships_tbl(i).ATTRIBUTE6;
308              l_counter_relationships_rec.ATTRIBUTE7     := p_counter_relationships_tbl(i).ATTRIBUTE7;
309              l_counter_relationships_rec.ATTRIBUTE8     := p_counter_relationships_tbl(i).ATTRIBUTE8;
310              l_counter_relationships_rec.ATTRIBUTE9     := p_counter_relationships_tbl(i).ATTRIBUTE9;
311              l_counter_relationships_rec.ATTRIBUTE10    := p_counter_relationships_tbl(i).ATTRIBUTE10;
312              l_counter_relationships_rec.ATTRIBUTE11    := p_counter_relationships_tbl(i).ATTRIBUTE11;
313              l_counter_relationships_rec.ATTRIBUTE12    := p_counter_relationships_tbl(i).ATTRIBUTE12;
314              l_counter_relationships_rec.ATTRIBUTE13    := p_counter_relationships_tbl(i).ATTRIBUTE13;
315              l_counter_relationships_rec.ATTRIBUTE14    := p_counter_relationships_tbl(i).ATTRIBUTE14;
316              l_counter_relationships_rec.ATTRIBUTE15    := p_counter_relationships_tbl(i).ATTRIBUTE15;
317              l_counter_relationships_rec.ATTRIBUTE_CATEGORY  := p_counter_relationships_tbl(i).ATTRIBUTE_CATEGORY;
318 
319 
320              CSI_COUNTER_TEMPLATE_PVT.create_counter_relationship
321            	 (
322            	   p_api_version	=>	1.0
323            	  ,p_init_msg_list	=>	p_init_msg_list
324            	  ,p_commit		=>	p_commit
325            	  ,p_validation_level	=>	p_validation_level
326                   ,p_counter_relationships_rec => l_counter_relationships_rec
327            	  ,x_return_status	=>	x_return_status
328            	  ,x_msg_count		=>	x_msg_count
329            	  ,x_msg_data		=>	x_msg_data
330            	 );
331           	   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
332                 l_msg_index := 1;
333                 l_msg_count := x_msg_count;
334 
335                 WHILE l_msg_count > 0 LOOP
336                  x_msg_data := FND_MSG_PUB.GET
337                            (l_msg_index,
338                             FND_API.G_FALSE );
339                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_TEMPLATE_PVT.CREATE_COUNTER_RELATIONSHIP API');
340                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
341                  l_msg_index := l_msg_index + 1;
342                  l_msg_count := l_msg_count - 1;
343                 END LOOP;
344                 RAISE FND_API.G_EXC_ERROR;
345               END IF;
346           END;
347        END LOOP;
348     END IF;
349 
350     IF p_ctr_derived_filters_tbl.count > 0 THEN
351         FOR i in p_ctr_derived_filters_tbl.FIRST..p_ctr_derived_filters_tbl.LAST
352          LOOP
353             p_ctr_derived_filters_tbl(i).COUNTER_ID := l_counter_id;
354          END LOOP;
355     -- Insert derived filters
356              CSI_COUNTER_TEMPLATE_PVT.create_derived_filters
357            	 (
358            	   p_api_version	=>	1.0
359            	  ,p_init_msg_list	=>	p_init_msg_list
360            	  ,p_commit		=>	p_commit
361            	  ,p_validation_level	=>	p_validation_level
362               ,p_ctr_derived_filters_tbl => p_ctr_derived_filters_tbl
363            	  ,x_return_status	=>	x_return_status
364            	  ,x_msg_count		=>	x_msg_count
365            	  ,x_msg_data		=>	x_msg_data
366            	 );
367           	   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
368                 l_msg_index := 1;
369                 l_msg_count := x_msg_count;
370 
371                 WHILE l_msg_count > 0 LOOP
372                  x_msg_data := FND_MSG_PUB.GET
373                            (l_msg_index,
374                             FND_API.G_FALSE );
375                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_TEMPLATE_PVT.CREATE_DERIVED_FILTERS API');
376                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
377                  l_msg_index := l_msg_index + 1;
378                  l_msg_count := l_msg_count - 1;
379                 END LOOP;
380                 RAISE FND_API.G_EXC_ERROR;
381               END IF;
382       END IF;
383 
384     -- Insert Counter associations
385     IF p_counter_associations_tbl.count > 0 THEN
386        FOR i in p_counter_associations_tbl.FIRST..p_counter_associations_tbl.LAST
387        LOOP
388           DECLARE
389              l_instance_association_id NUMBER;
390           BEGIN
391              l_counter_associations_rec.COUNTER_ID  := l_counter_id;
392              l_counter_associations_rec.SOURCE_OBJECT_CODE := p_counter_associations_tbl(i).SOURCE_OBJECT_CODE;
393              l_counter_associations_rec.SOURCE_OBJECT_ID := p_counter_associations_tbl(i).SOURCE_OBJECT_ID;
394              l_counter_associations_rec.START_DATE_ACTIVE  := p_counter_associations_tbl(i).START_DATE_ACTIVE ;
395              l_counter_associations_rec.END_DATE_ACTIVE  := p_counter_associations_tbl(i).END_DATE_ACTIVE;
396              l_counter_associations_rec.ATTRIBUTE1     := p_counter_associations_tbl(i).ATTRIBUTE1;
397              l_counter_associations_rec.ATTRIBUTE2     := p_counter_associations_tbl(i).ATTRIBUTE2;
398              l_counter_associations_rec.ATTRIBUTE3     := p_counter_associations_tbl(i).ATTRIBUTE3;
399              l_counter_associations_rec.ATTRIBUTE4     := p_counter_associations_tbl(i).ATTRIBUTE4;
400              l_counter_associations_rec.ATTRIBUTE5     := p_counter_associations_tbl(i).ATTRIBUTE5;
401              l_counter_associations_rec.ATTRIBUTE6     := p_counter_associations_tbl(i).ATTRIBUTE6;
402              l_counter_associations_rec.ATTRIBUTE7     := p_counter_associations_tbl(i).ATTRIBUTE7;
403              l_counter_associations_rec.ATTRIBUTE8     := p_counter_associations_tbl(i).ATTRIBUTE8;
404              l_counter_associations_rec.ATTRIBUTE9     := p_counter_associations_tbl(i).ATTRIBUTE9;
405              l_counter_associations_rec.ATTRIBUTE10    := p_counter_associations_tbl(i).ATTRIBUTE10;
406              l_counter_associations_rec.ATTRIBUTE11    := p_counter_associations_tbl(i).ATTRIBUTE11;
407              l_counter_associations_rec.ATTRIBUTE12    := p_counter_associations_tbl(i).ATTRIBUTE12;
408              l_counter_associations_rec.ATTRIBUTE13    := p_counter_associations_tbl(i).ATTRIBUTE13;
409              l_counter_associations_rec.ATTRIBUTE14    := p_counter_associations_tbl(i).ATTRIBUTE14;
410              l_counter_associations_rec.ATTRIBUTE15    := p_counter_associations_tbl(i).ATTRIBUTE15;
411              l_counter_associations_rec.ATTRIBUTE_CATEGORY  := p_counter_associations_tbl(i).ATTRIBUTE_CATEGORY;
412              l_counter_associations_rec.maint_organization_id := p_counter_associations_tbl(i).maint_organization_id;
413              l_counter_associations_rec.primary_failure_flag := p_counter_associations_tbl(i).primary_failure_flag;
414 
415              -- Added to insert initial reading.
416              l_src_obj_cd := p_counter_associations_tbl(i).SOURCE_OBJECT_CODE;
417              l_src_obj_id := p_counter_associations_tbl(i).SOURCE_OBJECT_ID;
418 
419 
420              CSI_COUNTER_PVT.create_ctr_associations
421            	 (
422            	   p_api_version	=>	1.0
423            	  ,p_init_msg_list	=>	p_init_msg_list
424            	  ,p_commit		=>	p_commit
425            	  ,p_validation_level	=>	p_validation_level
426                   ,p_counter_associations_rec => l_counter_associations_rec
427            	  ,x_return_status	=>	x_return_status
428            	  ,x_msg_count		=>	x_msg_count
429            	  ,x_msg_data		=>	x_msg_data
430            	  ,x_instance_association_id	=>	l_instance_association_id
431            	 );
432              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
433                 l_msg_index := 1;
434                 l_msg_count := x_msg_count;
435 
436                 WHILE l_msg_count > 0 LOOP
437                  x_msg_data := FND_MSG_PUB.GET
438                            (l_msg_index,
439                             FND_API.G_FALSE );
440                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_CTR_ASSOCIATIONS API');
441                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
442                  l_msg_index := l_msg_index + 1;
443                  l_msg_count := l_msg_count - 1;
444                 END LOOP;
445                 RAISE FND_API.G_EXC_ERROR;
446              END IF;
447           END;
448        END LOOP;
449     END IF;
450 
451     -- Insert initial reading by calling counter reading api.
452     IF p_counter_instance_rec.counter_type = 'REGULAR' and  (p_counter_instance_rec.initial_reading is not null and
453      p_counter_instance_rec.initial_reading <> FND_API.G_MISS_NUM) and nvl(l_counter_relationships_rec.RELATIONSHIP_TYPE_CODE,'X') <> l_rel_type then
454 
455       --create transaction record
456       l_transaction_tbl(l_c_ind_txn)                                := NULL;
457       l_transaction_tbl(l_c_ind_txn).TRANSACTION_ID                 := NULL;
458       l_transaction_tbl(l_c_ind_txn).TRANSACTION_DATE               := sysdate;
459       l_transaction_tbl(l_c_ind_txn).SOURCE_TRANSACTION_DATE        := sysdate;
460       if l_src_obj_cd = 'CP' then
461         l_transaction_type_id := 80;
462       elsif l_src_obj_cd = 'CONTRACT_LINE' then
463         l_transaction_type_id := 81;
464       end if;
465       if l_transaction_type_id is null then
466         l_transaction_type_id := 80;
467       end if;
468       l_transaction_tbl(l_c_ind_txn).TRANSACTION_TYPE_ID            := l_transaction_type_id;
469       l_transaction_tbl(l_c_ind_txn).TXN_SUB_TYPE_ID                := NULL;
470       l_transaction_tbl(l_c_ind_txn).SOURCE_GROUP_REF_ID            := NULL;
471       l_transaction_tbl(l_c_ind_txn).SOURCE_GROUP_REF               := NULL;
472       l_transaction_tbl(l_c_ind_txn).SOURCE_HEADER_REF_ID           := l_src_obj_id;
473 
474       -- create counter readings table
475       l_counter_readings_tbl(l_c_ind_rdg).COUNTER_VALUE_ID         :=  NULL;
476       l_counter_readings_tbl(l_c_ind_rdg).COUNTER_ID               :=  l_counter_id;
477       -- l_counter_readings_tbl(l_c_ind_rdg).VALUE_TIMESTAMP          :=  sysdate;
478       l_counter_readings_tbl(l_c_ind_rdg).VALUE_TIMESTAMP          :=  p_counter_instance_rec.initial_reading_date;
479       l_counter_readings_tbl(l_c_ind_rdg).COUNTER_READING          :=  p_counter_instance_rec.initial_reading;
480       l_counter_readings_tbl(l_c_ind_rdg).initial_reading_flag     := 'Y';
481       l_counter_readings_tbl(l_c_ind_rdg).DISABLED_FLAG            :=  'N';
482       l_counter_readings_tbl(l_c_ind_rdg).comments                 :=  'Initial Reading';
483       l_counter_readings_tbl(l_c_ind_rdg).PARENT_TBL_INDEX         :=  l_c_ind_txn;
484 
485       FOR dflt_rec IN DFLT_PROP_RDG(l_counter_id)
486         LOOP
487          l_ctr_property_readings_tbl(l_c_ind_prop).COUNTER_PROP_VALUE_ID := NULL;
488          l_ctr_property_readings_tbl(l_c_ind_prop).COUNTER_PROPERTY_ID   := dflt_rec.counter_property_id;
489          if dflt_rec.default_value is not null then
490            l_ctr_property_readings_tbl(l_c_ind_prop).PROPERTY_VALUE := dflt_rec.default_value;
491          else
492            if dflt_rec.property_data_type = 'CHAR' then
493              l_ctr_property_readings_tbl(l_c_ind_prop).PROPERTY_VALUE := 'Initial Reading';
494            elsif dflt_rec.property_data_type = 'DATE' then
495              l_ctr_property_readings_tbl(l_c_ind_prop).PROPERTY_VALUE := sysdate;
496            else
497              l_ctr_property_readings_tbl(l_c_ind_prop).PROPERTY_VALUE := '1';
498            end if;
499          end if;
500          l_ctr_property_readings_tbl(l_c_ind_prop).VALUE_TIMESTAMP := sysdate;
501          l_ctr_property_readings_tbl(l_c_ind_prop).PARENT_TBL_INDEX  := l_c_ind_rdg;
502          l_c_ind_prop := l_c_ind_prop + 1;
503         END LOOP;
504 
505      csi_counter_readings_pub.capture_counter_reading(
506         p_api_version           => 1.0,
507         p_commit                => p_commit,
508         p_init_msg_list         => p_init_msg_list,
509         p_validation_level      => p_validation_level,
510         p_txn_tbl               => l_transaction_tbl,            --IN OUT NOCOPY csi_datastructures_pub.transaction_tbl
511         p_ctr_rdg_tbl           => l_counter_readings_tbl,       --IN OUT NOCOPY csi_ctr_datastructures_pub.counter_readings_tbl
512         p_ctr_prop_rdg_tbl      => l_ctr_property_readings_tbl,  --IN OUT NOCOPY csi_ctr_datastructures_pub.ctr_property_readings_tbl
513         x_return_status         => x_return_status,
514         x_msg_count             => x_msg_count,
515         x_msg_data              => x_msg_data
516         );
517     END IF;
518 
519     -- End of API body
520 
521    /* Customer post -processing  section - Mandatory  */
522    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
523      CSI_COUNTER_CUHK.create_counter_post
524      (
525       p_api_version	                => p_api_version
526       ,p_init_msg_list	             => p_init_msg_list
527       ,p_commit		                   => p_commit
528       ,p_validation_level           => p_validation_level
529       ,p_counter_instance_rec	      => p_counter_instance_rec
530       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
531       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
532       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
533       ,P_counter_associations_tbl   => P_counter_associations_tbl
534       ,x_return_status              => x_return_status
535       ,x_msg_count                  => x_msg_count
536       ,x_msg_data                   => x_msg_data
537       ,x_ctr_id		                   => x_ctr_id
538      );
539      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
540          l_msg_index := 1;
541          l_msg_count := x_msg_count;
542 
543          WHILE l_msg_count > 0 LOOP
544              x_msg_data := FND_MSG_PUB.GET
545                            (l_msg_index,
546                            FND_API.G_FALSE );
547              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_COUNTER_POST API');
548              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
549              l_msg_index := l_msg_index + 1;
550              l_msg_count := l_msg_count - 1;
551          END LOOP;
552          RAISE FND_API.G_EXC_ERROR;
553      END IF;
554    END IF;
555    /* Vertical post -processing  section - Mandatory  */
556    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'V' )  ) THEN
557      CSI_COUNTER_VUHK.create_counter_post
558      (
559       p_api_version	                => p_api_version
560       ,p_init_msg_list	             => p_init_msg_list
561       ,p_commit		                   => p_commit
562       ,p_validation_level           => p_validation_level
563       ,p_counter_instance_rec	      => p_counter_instance_rec
564       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
565       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
566       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
567       ,P_counter_associations_tbl   => P_counter_associations_tbl
568       ,x_return_status              => x_return_status
569       ,x_msg_count                  => x_msg_count
570       ,x_msg_data                   => x_msg_data
571       ,x_ctr_id		                   => x_ctr_id
572      );
573      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
574          l_msg_index := 1;
575          l_msg_count := x_msg_count;
576 
577          WHILE l_msg_count > 0 LOOP
578              x_msg_data := FND_MSG_PUB.GET
579                            (l_msg_index,
580                            FND_API.G_FALSE );
581              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_COUNTER_POST API');
582              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
583              l_msg_index := l_msg_index + 1;
584              l_msg_count := l_msg_count - 1;
585          END LOOP;
586          RAISE FND_API.G_EXC_ERROR;
587      END IF;
588    END IF;
589 
590    -- Standard check of p_commit.
591    IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
592       COMMIT WORK;
593    END IF;
594 
595 EXCEPTION
596    WHEN FND_API.G_EXC_ERROR THEN
597       x_return_status := FND_API.G_RET_STS_ERROR ;
598       ROLLBACK TO create_counter_pub;
599       FND_MSG_PUB.Count_And_Get
600                 (p_count => x_msg_count,
601                  p_data  => x_msg_data
602                 );
603 
604    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
605       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
606       ROLLBACK TO create_counter_pub;
607       FND_MSG_PUB.Count_And_Get
608       		(p_count => x_msg_count,
609                  p_data  => x_msg_data
610                 );
611    WHEN OTHERS THEN
612       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
613       ROLLBACK TO create_counter_pub;
614       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
615       THEN
616          FND_MSG_PUB.Add_Exc_Msg
617             (G_PKG_NAME,
618              l_api_name
619             );
620        END IF;
621        FND_MSG_PUB.Count_And_Get
622             (p_count => x_msg_count,
623              p_data  => x_msg_data
624             );
625 
626 END create_counter;
627 
628 --|---------------------------------------------------
629 --| procedure name: create_ctr_property
630 --| description :   procedure used to
631 --|                 create counter properties
632 --|---------------------------------------------------
633 
634 PROCEDURE create_ctr_property
635  (
636      p_api_version               IN     NUMBER
637     ,p_commit                    IN     VARCHAR2
638     ,p_init_msg_list             IN     VARCHAR2
639     ,p_validation_level          IN     NUMBER
640     ,P_ctr_properties_tbl        IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_tbl
641     ,x_return_status                OUT    NOCOPY VARCHAR2
642     ,x_msg_count                    OUT    NOCOPY NUMBER
643     ,x_msg_data                     OUT    NOCOPY VARCHAR2
644     ,x_ctr_property_id	          OUT	NOCOPY NUMBER
645  )
646   IS
647     l_api_name                      CONSTANT VARCHAR2(30)   := 'CREATE_CTR_PROPERTY';
648     l_api_version                   CONSTANT NUMBER         := 1.0;
649     -- l_debug_level                   NUMBER;
650     l_flag                          VARCHAR2(1)             := 'N';
651     l_msg_data                      VARCHAR2(2000);
652     l_msg_index                     NUMBER;
653     l_msg_count                     NUMBER;
654     l_count                         NUMBER;
655     l_return_message                VARCHAR2(100);
656 
657     l_Ctr_properties_rec            CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_rec;
658 
659 BEGIN
660    -- Standard Start of API savepoint
661    SAVEPOINT  create_ctr_property_pub;
662 
663    -- Standard call to check for call compatibility.
664    IF NOT FND_API.Compatible_API_Call (l_api_version,
665                                        p_api_version,
666                                        l_api_name   ,
667                                        G_PKG_NAME   )
668    THEN
669       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
670    END IF;
671 
672    -- Initialize message list if p_init_msg_list is set to TRUE.
673    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
674       FND_MSG_PUB.initialize;
675    END IF;
676 
677    --  Initialize API return status to success
678    x_return_status := FND_API.G_RET_STS_SUCCESS;
679 
680    -- Read the debug profiles values in to global variable 7197402
681    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
682 
683    -- Check the profile option debug_level for debug message reporting
684    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
685 
686    -- If debug_level = 1 then dump the procedure name
687    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
688       csi_ctr_gen_utility_pvt.put_line( 'create_ctr_property');
689    END IF;
690 
691    -- If the debug level = 2 then dump all the parameters values.
692    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
693       csi_ctr_gen_utility_pvt.put_line( 'create_ctr_property'     ||
694                                      p_api_version         ||'-'||
695                                      p_commit              ||'-'||
696                                      p_init_msg_list       ||'-'||
697                                      p_validation_level );
698       csi_ctr_gen_utility_pvt.dump_ctr_properties_tbl(p_ctr_properties_tbl);
699    END IF;
700 
701    /* Customer pre -processing  section - Mandatory  */
702    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
703      CSI_COUNTER_CUHK.create_ctr_property_pre
704      (
705       p_api_version	                => p_api_version
706       ,p_init_msg_list	             => p_init_msg_list
707       ,p_commit		                   => p_commit
708       ,p_validation_level           => p_validation_level
709       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
710       ,x_return_status              => x_return_status
711       ,x_msg_count                  => x_msg_count
712       ,x_msg_data                   => x_msg_data
713       ,x_ctr_property_id	           => x_ctr_property_id
714      );
715      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
716          l_msg_index := 1;
717          l_msg_count := x_msg_count;
718 
719          WHILE l_msg_count > 0 LOOP
720              x_msg_data := FND_MSG_PUB.GET
721                            (l_msg_index,
722                            FND_API.G_FALSE );
723              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_CTR_PROPERTY_PRE API');
724              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
725              l_msg_index := l_msg_index + 1;
726              l_msg_count := l_msg_count - 1;
727          END LOOP;
728          RAISE FND_API.G_EXC_ERROR;
729      END IF;
730    END IF;
731    /* Vertical pre -processing  section - Mandatory  */
732    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
733      CSI_COUNTER_VUHK.create_ctr_property_pre
734      (
735       p_api_version	                => p_api_version
736       ,p_init_msg_list	             => p_init_msg_list
737       ,p_commit		                   => p_commit
738       ,p_validation_level           => p_validation_level
739       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
740       ,x_return_status              => x_return_status
741       ,x_msg_count                  => x_msg_count
742       ,x_msg_data                   => x_msg_data
743       ,x_ctr_property_id	           => x_ctr_property_id
744      );
745      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
746          l_msg_index := 1;
747          l_msg_count := x_msg_count;
748 
749          WHILE l_msg_count > 0 LOOP
750              x_msg_data := FND_MSG_PUB.GET
751                            (l_msg_index,
752                            FND_API.G_FALSE );
753              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_CTR_PROPERTY_PRE API');
754              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
755              l_msg_index := l_msg_index + 1;
756              l_msg_count := l_msg_count - 1;
757          END LOOP;
758          RAISE FND_API.G_EXC_ERROR;
759      END IF ;
760    END IF;
761 
762    -- Start of API Body
763 
764    IF p_ctr_properties_tbl.count > 0 THEN
765        FOR j in p_ctr_properties_tbl.FIRST..p_ctr_properties_tbl.LAST
766        LOOP
767           DECLARE
768              l_ctr_property_id NUMBER;
769           BEGIN
770              l_Ctr_properties_rec.counter_id := p_ctr_properties_tbl(j).counter_id;
771              l_Ctr_properties_rec.NAME := p_ctr_properties_tbl(j).name;
772              l_Ctr_properties_rec.DESCRIPTION  := p_ctr_properties_tbl(j).DESCRIPTION;
773              l_Ctr_properties_rec.PROPERTY_DATA_TYPE := p_ctr_properties_tbl(j).PROPERTY_DATA_TYPE;
774              l_Ctr_properties_rec.IS_NULLABLE  := p_ctr_properties_tbl(j).IS_NULLABLE;
775              l_Ctr_properties_rec.DEFAULT_VALUE  := p_ctr_properties_tbl(j).DEFAULT_VALUE;
776              l_Ctr_properties_rec.MINIMUM_VALUE  := p_ctr_properties_tbl(j).MINIMUM_VALUE;
777              l_Ctr_properties_rec.MAXIMUM_VALUE  := p_ctr_properties_tbl(j).MAXIMUM_VALUE;
778              l_Ctr_properties_rec.UOM_CODE       := p_ctr_properties_tbl(j).UOM_CODE;
779              l_Ctr_properties_rec.START_DATE_ACTIVE  := p_ctr_properties_tbl(j).START_DATE_ACTIVE;
780              l_Ctr_properties_rec.END_DATE_ACTIVE    := p_ctr_properties_tbl(j).END_DATE_ACTIVE;
781              l_Ctr_properties_rec.PROPERTY_LOV_TYPE  := p_ctr_properties_tbl(j).PROPERTY_LOV_TYPE;
782              l_Ctr_properties_rec.ATTRIBUTE1     := p_ctr_properties_tbl(j).ATTRIBUTE1;
783              l_Ctr_properties_rec.ATTRIBUTE2     := p_ctr_properties_tbl(j).ATTRIBUTE2;
784              l_Ctr_properties_rec.ATTRIBUTE3     := p_ctr_properties_tbl(j).ATTRIBUTE3;
785              l_Ctr_properties_rec.ATTRIBUTE4     := p_ctr_properties_tbl(j).ATTRIBUTE4;
786              l_Ctr_properties_rec.ATTRIBUTE5     := p_ctr_properties_tbl(j).ATTRIBUTE5;
787              l_Ctr_properties_rec.ATTRIBUTE6     := p_ctr_properties_tbl(j).ATTRIBUTE6;
788              l_Ctr_properties_rec.ATTRIBUTE7     := p_ctr_properties_tbl(j).ATTRIBUTE7;
789              l_Ctr_properties_rec.ATTRIBUTE8     := p_ctr_properties_tbl(j).ATTRIBUTE8;
790              l_Ctr_properties_rec.ATTRIBUTE9     := p_ctr_properties_tbl(j).ATTRIBUTE9;
791              l_Ctr_properties_rec.ATTRIBUTE10    := p_ctr_properties_tbl(j).ATTRIBUTE10;
792              l_Ctr_properties_rec.ATTRIBUTE11    := p_ctr_properties_tbl(j).ATTRIBUTE11;
793              l_Ctr_properties_rec.ATTRIBUTE12    := p_ctr_properties_tbl(j).ATTRIBUTE12;
794              l_Ctr_properties_rec.ATTRIBUTE13    := p_ctr_properties_tbl(j).ATTRIBUTE13;
795              l_Ctr_properties_rec.ATTRIBUTE14    := p_ctr_properties_tbl(j).ATTRIBUTE14;
796              l_Ctr_properties_rec.ATTRIBUTE15    := p_ctr_properties_tbl(j).ATTRIBUTE15;
797              l_Ctr_properties_rec.ATTRIBUTE_CATEGORY  := p_ctr_properties_tbl(j).ATTRIBUTE_CATEGORY;
798 
799 
800              CSI_COUNTER_PVT.create_ctr_property
801            	 (
802            	   p_api_version	=>	1.0
803            	  ,p_init_msg_list	=>	p_init_msg_list
804            	  ,p_commit		=>	p_commit
805            	  ,p_validation_level	=>	p_validation_level
806                   ,p_ctr_properties_rec =>      l_Ctr_properties_rec
807            	  ,x_return_status	=>	x_return_status
808            	  ,x_msg_count		=>	x_msg_count
809            	  ,x_msg_data		=>	x_msg_data
810            	  ,x_ctr_property_id    =>	l_ctr_property_id
811            	  );
812               IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
813                 l_msg_index := 1;
814                 l_msg_count := x_msg_count;
815 
816                 WHILE l_msg_count > 0 LOOP
817                   x_msg_data := FND_MSG_PUB.GET
818                            (l_msg_index,
819                            FND_API.G_FALSE );
820                   csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_CTR_PROPERTY API');
821                   csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
822                   l_msg_index := l_msg_index + 1;
823                   l_msg_count := l_msg_count - 1;
824                END LOOP;
825                RAISE FND_API.G_EXC_ERROR;
826              END IF;
827           END;
828        END LOOP;
829     END IF;
830 
831     -- End of API body
832 
833    /* Customer post -processing  section - Mandatory  */
834    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
835      CSI_COUNTER_CUHK.create_ctr_property_post
836      (
837       p_api_version	                => p_api_version
838       ,p_init_msg_list	             => p_init_msg_list
839       ,p_commit		                   => p_commit
840       ,p_validation_level           => p_validation_level
841       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
842       ,x_return_status              => x_return_status
843       ,x_msg_count                  => x_msg_count
844       ,x_msg_data                   => x_msg_data
845       ,x_ctr_property_id	           => x_ctr_property_id
846      );
847      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
848          l_msg_index := 1;
849          l_msg_count := x_msg_count;
850 
851          WHILE l_msg_count > 0 LOOP
852              x_msg_data := FND_MSG_PUB.GET
853                            (l_msg_index,
854                            FND_API.G_FALSE );
855              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_CTR_PROPERTY_POST API');
856              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
857              l_msg_index := l_msg_index + 1;
858              l_msg_count := l_msg_count - 1;
859          END LOOP;
860          RAISE FND_API.G_EXC_ERROR;
861      END IF;
862    END IF;
863    /* Vertical post -processing  section - Mandatory  */
864    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'V' )  ) THEN
865      CSI_COUNTER_VUHK.create_ctr_property_post
866      (
867       p_api_version	                => p_api_version
868       ,p_init_msg_list	             => p_init_msg_list
869       ,p_commit		                   => p_commit
870       ,p_validation_level           => p_validation_level
871       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
872       ,x_return_status              => x_return_status
873       ,x_msg_count                  => x_msg_count
874       ,x_msg_data                   => x_msg_data
875       ,x_ctr_property_id	           => x_ctr_property_id
876      );
877      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
878          l_msg_index := 1;
879          l_msg_count := x_msg_count;
880 
881          WHILE l_msg_count > 0 LOOP
882              x_msg_data := FND_MSG_PUB.GET
883                            (l_msg_index,
884                            FND_API.G_FALSE );
885              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_CTR_PROPERTY_POST API');
886              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
887              l_msg_index := l_msg_index + 1;
888              l_msg_count := l_msg_count - 1;
889          END LOOP;
890          RAISE FND_API.G_EXC_ERROR;
891      END IF;
892    END IF;
893 
894     -- Standard check of p_commit.
895     IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
896        COMMIT WORK;
897     END IF;
898 
899 EXCEPTION
900    WHEN FND_API.G_EXC_ERROR THEN
901       x_return_status := FND_API.G_RET_STS_ERROR ;
902       ROLLBACK TO create_ctr_property_pub;
903       FND_MSG_PUB.Count_And_Get
904                 (p_count => x_msg_count,
905                  p_data  => x_msg_data
906                 );
907 
908    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
909       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
910       ROLLBACK TO create_ctr_property_pub;
911       FND_MSG_PUB.Count_And_Get
912       		(p_count => x_msg_count,
913                  p_data  => x_msg_data
914                 );
915    WHEN OTHERS THEN
916       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
917       ROLLBACK TO create_ctr_property_pub;
918       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
919       THEN
920          FND_MSG_PUB.Add_Exc_Msg
921             (G_PKG_NAME,
922              l_api_name
923             );
924        END IF;
925        FND_MSG_PUB.Count_And_Get
926             (p_count => x_msg_count,
927              p_data  => x_msg_data
928             );
929 
930 END create_ctr_property;
931 
932 --|---------------------------------------------------
933 --| procedure name: create_ctr_associations
934 --| description :   procedure used to
935 --|                 create counter associations
936 --|---------------------------------------------------
937 
938 PROCEDURE create_ctr_associations
939  (
940      p_api_version               IN     NUMBER
941     ,p_commit                    IN     VARCHAR2
942     ,p_init_msg_list             IN     VARCHAR2
943     ,p_validation_level          IN     NUMBER
944     ,P_counter_associations_tbl IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.counter_associations_tbl
945     ,x_return_status                OUT    NOCOPY VARCHAR2
946     ,x_msg_count                    OUT    NOCOPY NUMBER
947     ,x_msg_data                     OUT    NOCOPY VARCHAR2
948     ,x_instance_association_id      OUT	NOCOPY NUMBER
949  )
950  IS
951     l_api_name                      CONSTANT VARCHAR2(30)   := 'CREATE_CTR_ASSOCIATIONS';
952     l_api_version                   CONSTANT NUMBER         := 1.0;
953     -- l_debug_level                   NUMBER;
954     l_flag                          VARCHAR2(1)             := 'N';
955     l_msg_data                      VARCHAR2(2000);
956     l_msg_index                     NUMBER;
957     l_msg_count                     NUMBER;
958     l_count                         NUMBER;
959     l_return_message                VARCHAR2(100);
960 
961     l_counter_associations_rec      CSI_CTR_DATASTRUCTURES_PUB.counter_associations_rec;
962 
963 BEGIN
964    -- Standard Start of API savepoint
965    SAVEPOINT  create_ctr_associations_pub;
966 
967    -- Standard call to check for call compatibility.
968    IF NOT FND_API.Compatible_API_Call (l_api_version,
969                                        p_api_version,
970                                        l_api_name   ,
971                                        G_PKG_NAME   )
972    THEN
973       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
974    END IF;
975 
976    -- Initialize message list if p_init_msg_list is set to TRUE.
977    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
978       FND_MSG_PUB.initialize;
979    END IF;
980 
981    --  Initialize API return status to success
982    x_return_status := FND_API.G_RET_STS_SUCCESS;
983 
984    -- Read the debug profiles values in to global variable 7197402
985    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
986 
987    -- Check the profile option debug_level for debug message reporting
988    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
989 
990    -- If debug_level = 1 then dump the procedure name
991    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
992       csi_ctr_gen_utility_pvt.put_line( 'create_ctr_associations');
993    END IF;
994 
995    -- If the debug level = 2 then dump all the parameters values.
996    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
997       csi_ctr_gen_utility_pvt.put_line( 'create_ctr_associations'     ||
998                                      p_api_version         ||'-'||
999                                      p_commit              ||'-'||
1000                                      p_init_msg_list       ||'-'||
1001                                      p_validation_level );
1002       csi_ctr_gen_utility_pvt.dump_counter_associations_tbl(p_counter_associations_tbl);
1003    END IF;
1004 
1005    /* Customer pre -processing  section - Mandatory  */
1006    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
1007      CSI_COUNTER_CUHK.create_ctr_associations_pre
1008      (
1009       p_api_version	                => p_api_version
1010       ,p_init_msg_list	             => p_init_msg_list
1011       ,p_commit		                   => p_commit
1012       ,p_validation_level           => p_validation_level
1013       ,P_counter_associations_tbl 	 => P_counter_associations_tbl
1014       ,x_return_status              => x_return_status
1015       ,x_msg_count                  => x_msg_count
1016       ,x_msg_data                   => x_msg_data
1017       ,x_instance_association_id    => x_instance_association_id
1018      );
1019      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1020          l_msg_index := 1;
1021          l_msg_count := x_msg_count;
1022 
1023          WHILE l_msg_count > 0 LOOP
1024              x_msg_data := FND_MSG_PUB.GET
1025                            (l_msg_index,
1026                            FND_API.G_FALSE );
1027              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_CTR_ASSOCIATIONS_PRE API');
1028              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1029              l_msg_index := l_msg_index + 1;
1030              l_msg_count := l_msg_count - 1;
1031          END LOOP;
1032          RAISE FND_API.G_EXC_ERROR;
1033      END IF;
1034    END IF;
1035 
1036    /* Vertical pre -processing  section - Mandatory  */
1037    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
1038      CSI_COUNTER_VUHK.create_ctr_associations_pre
1039      (
1040       p_api_version	                => p_api_version
1041       ,p_init_msg_list	             => p_init_msg_list
1042       ,p_commit		                   => p_commit
1043       ,p_validation_level           => p_validation_level
1044       ,P_counter_associations_tbl   => P_counter_associations_tbl
1045       ,x_return_status              => x_return_status
1046       ,x_msg_count                  => x_msg_count
1047       ,x_msg_data                   => x_msg_data
1048       ,x_instance_association_id	   => x_instance_association_id
1049      );
1050      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1051          l_msg_index := 1;
1052          l_msg_count := x_msg_count;
1053 
1054          WHILE l_msg_count > 0 LOOP
1055              x_msg_data := FND_MSG_PUB.GET
1056                            (l_msg_index,
1057                            FND_API.G_FALSE );
1058              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_CTR_ASSOCIATIONS_PRE API');
1059              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1060              l_msg_index := l_msg_index + 1;
1061              l_msg_count := l_msg_count - 1;
1062          END LOOP;
1063          RAISE FND_API.G_EXC_ERROR;
1064      END IF;
1065    END IF;
1066 
1067    -- Start of API Body
1068 
1069    IF p_counter_associations_tbl.count > 0 THEN
1070        FOR i in p_counter_associations_tbl.FIRST..p_counter_associations_tbl.LAST
1071        LOOP
1072           DECLARE
1073              l_instance_association_id NUMBER;
1074           BEGIN
1075              l_counter_associations_rec.COUNTER_ID  := p_counter_associations_tbl(i).counter_id;
1076              l_counter_associations_rec.SOURCE_OBJECT_CODE := p_counter_associations_tbl(i).SOURCE_OBJECT_CODE;
1077              l_counter_associations_rec.SOURCE_OBJECT_ID := p_counter_associations_tbl(i).SOURCE_OBJECT_ID;
1078              l_counter_associations_rec.START_DATE_ACTIVE  := p_counter_associations_tbl(i).START_DATE_ACTIVE ;
1079              l_counter_associations_rec.END_DATE_ACTIVE  := p_counter_associations_tbl(i).END_DATE_ACTIVE;
1080              l_counter_associations_rec.ATTRIBUTE1     := p_counter_associations_tbl(i).ATTRIBUTE1;
1081              l_counter_associations_rec.ATTRIBUTE2     := p_counter_associations_tbl(i).ATTRIBUTE2;
1082              l_counter_associations_rec.ATTRIBUTE3     := p_counter_associations_tbl(i).ATTRIBUTE3;
1083              l_counter_associations_rec.ATTRIBUTE4     := p_counter_associations_tbl(i).ATTRIBUTE4;
1084              l_counter_associations_rec.ATTRIBUTE5     := p_counter_associations_tbl(i).ATTRIBUTE5;
1085              l_counter_associations_rec.ATTRIBUTE6     := p_counter_associations_tbl(i).ATTRIBUTE6;
1086              l_counter_associations_rec.ATTRIBUTE7     := p_counter_associations_tbl(i).ATTRIBUTE7;
1087              l_counter_associations_rec.ATTRIBUTE8     := p_counter_associations_tbl(i).ATTRIBUTE8;
1088              l_counter_associations_rec.ATTRIBUTE9     := p_counter_associations_tbl(i).ATTRIBUTE9;
1089              l_counter_associations_rec.ATTRIBUTE10    := p_counter_associations_tbl(i).ATTRIBUTE10;
1090              l_counter_associations_rec.ATTRIBUTE11    := p_counter_associations_tbl(i).ATTRIBUTE11;
1091              l_counter_associations_rec.ATTRIBUTE12    := p_counter_associations_tbl(i).ATTRIBUTE12;
1092              l_counter_associations_rec.ATTRIBUTE13    := p_counter_associations_tbl(i).ATTRIBUTE13;
1093              l_counter_associations_rec.ATTRIBUTE14    := p_counter_associations_tbl(i).ATTRIBUTE14;
1094              l_counter_associations_rec.ATTRIBUTE15    := p_counter_associations_tbl(i).ATTRIBUTE15;
1095              l_counter_associations_rec.ATTRIBUTE_CATEGORY  := p_counter_associations_tbl(i).ATTRIBUTE_CATEGORY;
1096              l_counter_associations_rec.maint_organization_id := p_counter_associations_tbl(i).maint_organization_id;
1097              l_counter_associations_rec.primary_failure_flag := p_counter_associations_tbl(i).primary_failure_flag;
1098 
1099              CSI_COUNTER_PVT.create_ctr_associations
1100            	 (
1101            	   p_api_version	=>	1.0
1102            	  ,p_init_msg_list	=>	p_init_msg_list
1103            	  ,p_commit		=>	p_commit
1104            	  ,p_validation_level	=>	p_validation_level
1105                   ,p_counter_associations_rec => l_counter_associations_rec
1106            	  ,x_return_status	=>	x_return_status
1107            	  ,x_msg_count		=>	x_msg_count
1108            	  ,x_msg_data		=>	x_msg_data
1109            	  ,x_instance_association_id	=>	l_instance_association_id
1110            	 );
1111              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1112                l_msg_index := 1;
1113                l_msg_count := x_msg_count;
1114 
1115                WHILE l_msg_count > 0 LOOP
1116                  x_msg_data := FND_MSG_PUB.GET
1117                            (l_msg_index,
1118                            FND_API.G_FALSE );
1119                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_CTR_ASSOCIATIONS API');
1120                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1121                  l_msg_index := l_msg_index + 1;
1122                  l_msg_count := l_msg_count - 1;
1123                END LOOP;
1124                RAISE FND_API.G_EXC_ERROR;
1125              END IF;
1126           END;
1127        END LOOP;
1128     END IF;
1129 
1130    /* Customer post -processing  section - Mandatory  */
1131    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
1132      CSI_COUNTER_CUHK.create_ctr_associations_post
1133      (
1134       p_api_version	                => p_api_version
1135       ,p_init_msg_list	             => p_init_msg_list
1136       ,p_commit		                   => p_commit
1137       ,p_validation_level           => p_validation_level
1138       ,P_counter_associations_tbl 	 => P_counter_associations_tbl
1139       ,x_return_status              => x_return_status
1140       ,x_msg_count                  => x_msg_count
1141       ,x_msg_data                   => x_msg_data
1142       ,x_instance_association_id    => x_instance_association_id
1143      );
1144      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1145          l_msg_index := 1;
1146          l_msg_count := x_msg_count;
1147 
1148          WHILE l_msg_count > 0 LOOP
1149              x_msg_data := FND_MSG_PUB.GET
1150                            (l_msg_index,
1151                            FND_API.G_FALSE );
1152              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_CTR_ASSOCIATIONS_POST API');
1153              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1154              l_msg_index := l_msg_index + 1;
1155              l_msg_count := l_msg_count - 1;
1156          END LOOP;
1157          RAISE FND_API.G_EXC_ERROR;
1158      END IF;
1159    END IF;
1160 
1161    /* Vertical post -processing  section - Mandatory  */
1162    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'V' )  ) THEN
1163      CSI_COUNTER_VUHK.create_ctr_associations_post
1164      (
1165       p_api_version	                => p_api_version
1166       ,p_init_msg_list	             => p_init_msg_list
1167       ,p_commit		                   => p_commit
1168       ,p_validation_level           => p_validation_level
1169       ,P_counter_associations_tbl   => P_counter_associations_tbl
1170       ,x_return_status              => x_return_status
1171       ,x_msg_count                  => x_msg_count
1172       ,x_msg_data                   => x_msg_data
1173       ,x_instance_association_id	   => x_instance_association_id
1174      );
1175      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1176          l_msg_index := 1;
1177          l_msg_count := x_msg_count;
1178 
1179          WHILE l_msg_count > 0 LOOP
1180              x_msg_data := FND_MSG_PUB.GET
1181                            (l_msg_index,
1182                            FND_API.G_FALSE );
1183              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_CTR_ASSOCIATIONS_POST API');
1184              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1185              l_msg_index := l_msg_index + 1;
1186              l_msg_count := l_msg_count - 1;
1187          END LOOP;
1188          RAISE FND_API.G_EXC_ERROR;
1189      END IF;
1190    END IF;
1191 
1192     -- End of API body
1193 
1194     -- Standard check of p_commit.
1195     IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
1196        COMMIT WORK;
1197     END IF;
1198 
1199 EXCEPTION
1200    WHEN FND_API.G_EXC_ERROR THEN
1201       x_return_status := FND_API.G_RET_STS_ERROR ;
1202       ROLLBACK TO create_ctr_associations_pub;
1203       FND_MSG_PUB.Count_And_Get
1204                 (p_count => x_msg_count,
1205                  p_data  => x_msg_data
1206                 );
1207 
1208    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1209       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1210       ROLLBACK TO create_ctr_associations_pub;
1211       FND_MSG_PUB.Count_And_Get
1212       		(p_count => x_msg_count,
1213                  p_data  => x_msg_data
1214                 );
1215    WHEN OTHERS THEN
1216       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1217       ROLLBACK TO create_ctr_associations_pub;
1218       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1219       THEN
1220          FND_MSG_PUB.Add_Exc_Msg
1221             (G_PKG_NAME,
1222              l_api_name
1223             );
1224        END IF;
1225        FND_MSG_PUB.Count_And_Get
1226             (p_count => x_msg_count,
1227              p_data  => x_msg_data
1228             );
1229 
1230 END create_ctr_associations;
1231 
1232 --|---------------------------------------------------
1233 --| procedure name: create_reading_lock
1234 --| description :   procedure used to
1235 --|                 create reading lock on a counter
1236 --|---------------------------------------------------
1237 
1238 PROCEDURE create_reading_lock
1239  (
1240      p_api_version               IN     NUMBER
1241     ,p_commit                    IN     VARCHAR2
1242     ,p_init_msg_list             IN     VARCHAR2
1243     ,p_validation_level          IN     NUMBER
1244     ,p_ctr_reading_lock_rec IN OUT    NOCOPY CSI_CTR_DATASTRUCTURES_PUB.ctr_reading_lock_rec
1245     ,x_return_status           OUT    NOCOPY VARCHAR2
1246     ,x_msg_count               OUT    NOCOPY NUMBER
1247     ,x_msg_data                OUT    NOCOPY VARCHAR2
1248     ,x_reading_lock_id         OUT   	NOCOPY NUMBER
1249  )
1250  IS
1251     l_api_name                      CONSTANT VARCHAR2(30)   := 'CREATE_READING_LOCK';
1252     l_api_version                   CONSTANT NUMBER         := 1.0;
1253     -- l_debug_level                   NUMBER;
1254     l_flag                          VARCHAR2(1)             := 'N';
1255     l_msg_data                      VARCHAR2(2000);
1256     l_msg_index                     NUMBER;
1257     l_msg_count                     NUMBER;
1258     l_count                         NUMBER;
1259     l_return_message                VARCHAR2(100);
1260 
1261     l_reading_lock_id               NUMBER;
1262 
1263 BEGIN
1264    -- Standard Start of API savepoint
1265    SAVEPOINT  create_reading_lock_pub;
1266 
1267    -- Standard call to check for call compatibility.
1268    IF NOT FND_API.Compatible_API_Call (l_api_version,
1269                                        p_api_version,
1270                                        l_api_name   ,
1271                                        G_PKG_NAME   )
1272    THEN
1273       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1274    END IF;
1275 
1276    -- Initialize message list if p_init_msg_list is set to TRUE.
1277    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
1278       FND_MSG_PUB.initialize;
1279    END IF;
1280 
1281    --  Initialize API return status to success
1282    x_return_status := FND_API.G_RET_STS_SUCCESS;
1283 
1284    -- Read the debug profiles values in to global variable 7197402
1285    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
1286 
1287    -- Check the profile option debug_level for debug message reporting
1288    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
1289 
1290    -- If debug_level = 1 then dump the procedure name
1291    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
1292       csi_ctr_gen_utility_pvt.put_line( 'create_reading_lock');
1293    END IF;
1294 
1295    -- If the debug level = 2 then dump all the parameters values.
1296    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
1297       csi_ctr_gen_utility_pvt.put_line( 'create_reading_lock'     ||
1298                                      p_api_version         ||'-'||
1299                                      p_commit              ||'-'||
1300                                      p_init_msg_list       ||'-'||
1301                                      p_validation_level );
1302       csi_ctr_gen_utility_pvt.dump_ctr_reading_lock_rec(p_ctr_reading_lock_rec);
1303    END IF;
1304 
1305    /* Customer pre -processing  section - Mandatory  */
1306    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
1307      CSI_COUNTER_CUHK.create_reading_lock_pre
1308      (
1309       p_api_version	                => p_api_version
1310       ,p_init_msg_list	            => p_init_msg_list
1311       ,p_commit		                => p_commit
1312       ,p_validation_level           => p_validation_level
1313       ,p_ctr_reading_lock_rec	    => p_ctr_reading_lock_rec
1314       ,x_return_status              => x_return_status
1315       ,x_msg_count                  => x_msg_count
1316       ,x_msg_data                   => x_msg_data
1317       ,x_reading_lock_id            => x_reading_lock_id
1318      );
1319      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1320          l_msg_index := 1;
1321          l_msg_count := x_msg_count;
1322 
1323          WHILE l_msg_count > 0 LOOP
1324              x_msg_data := FND_MSG_PUB.GET
1325                            (l_msg_index,
1326                            FND_API.G_FALSE );
1327              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_READING_LOCK_PRE API');
1328              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1329              l_msg_index := l_msg_index + 1;
1330              l_msg_count := l_msg_count - 1;
1331          END LOOP;
1332          RAISE FND_API.G_EXC_ERROR;
1333      END IF;
1334    END IF;
1335    /* Vertical pre -processing  section - Mandatory  */
1336    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
1337      CSI_COUNTER_VUHK.create_reading_lock_pre
1338      (
1339       p_api_version	                => p_api_version
1340       ,p_init_msg_list	            => p_init_msg_list
1341       ,p_commit		                => p_commit
1342       ,p_validation_level           => p_validation_level
1343       ,p_ctr_reading_lock_rec	    => p_ctr_reading_lock_rec
1344       ,x_return_status              => x_return_status
1345       ,x_msg_count                  => x_msg_count
1346       ,x_msg_data                   => x_msg_data
1347       ,x_reading_lock_id            => x_reading_lock_id
1348      );
1349      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1350          l_msg_index := 1;
1351          l_msg_count := x_msg_count;
1352 
1353          WHILE l_msg_count > 0 LOOP
1354              x_msg_data := FND_MSG_PUB.GET
1355                            (l_msg_index,
1356                            FND_API.G_FALSE );
1357              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_READING_LOCK_PRE API');
1358              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1359              l_msg_index := l_msg_index + 1;
1360              l_msg_count := l_msg_count - 1;
1361          END LOOP;
1362          RAISE FND_API.G_EXC_ERROR;
1363      END IF;
1364    END IF;
1365 
1366    -- Start of API Body
1367 
1368    CSI_COUNTER_PVT.create_reading_lock
1369    (
1370      p_api_version	=>	1.0
1371     ,p_init_msg_list	=>	p_init_msg_list
1372     ,p_commit		=>	p_commit
1373     ,p_validation_level	=>	p_validation_level
1374     ,p_ctr_reading_lock_rec => p_ctr_reading_lock_rec
1375     ,x_return_status	=>	x_return_status
1376     ,x_msg_count	=>	x_msg_count
1377     ,x_msg_data		=>	x_msg_data
1378     ,x_reading_lock_id  =>	l_reading_lock_id
1379     );
1380     IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1381          l_msg_index := 1;
1382          l_msg_count := x_msg_count;
1383 
1384          WHILE l_msg_count > 0 LOOP
1385              x_msg_data := FND_MSG_PUB.GET
1386                            (l_msg_index,
1387                            FND_API.G_FALSE );
1388              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_READING_LOCK API');
1389              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1390              l_msg_index := l_msg_index + 1;
1391              l_msg_count := l_msg_count - 1;
1392          END LOOP;
1393          RAISE FND_API.G_EXC_ERROR;
1394      END IF;
1395 
1396    -- End of API body
1397 
1398    /* Customer post -processing  section - Mandatory  */
1399    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
1400      CSI_COUNTER_CUHK.create_reading_lock_post
1401      (
1402       p_api_version	                => p_api_version
1403       ,p_init_msg_list	            => p_init_msg_list
1404       ,p_commit		                => p_commit
1405       ,p_validation_level           => p_validation_level
1406       ,p_ctr_reading_lock_rec	    => p_ctr_reading_lock_rec
1407       ,x_return_status              => x_return_status
1408       ,x_msg_count                  => x_msg_count
1409       ,x_msg_data                   => x_msg_data
1410       ,x_reading_lock_id            => x_reading_lock_id
1411      );
1412      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1413          l_msg_index := 1;
1414          l_msg_count := x_msg_count;
1415 
1416          WHILE l_msg_count > 0 LOOP
1417              x_msg_data := FND_MSG_PUB.GET
1418                            (l_msg_index,
1419                            FND_API.G_FALSE );
1420              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_READING_LOCK_POST API');
1421              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1422              l_msg_index := l_msg_index + 1;
1423              l_msg_count := l_msg_count - 1;
1424          END LOOP;
1425          RAISE FND_API.G_EXC_ERROR;
1426      END IF;
1427    END IF;
1428    /* Vertical post -processing  section - Mandatory  */
1429    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'V' )  ) THEN
1430      CSI_COUNTER_VUHK.create_reading_lock_post
1431      (
1432       p_api_version	                => p_api_version
1433       ,p_init_msg_list	            => p_init_msg_list
1434       ,p_commit		                => p_commit
1435       ,p_validation_level           => p_validation_level
1436       ,p_ctr_reading_lock_rec	    => p_ctr_reading_lock_rec
1437       ,x_return_status              => x_return_status
1438       ,x_msg_count                  => x_msg_count
1439       ,x_msg_data                   => x_msg_data
1440       ,x_reading_lock_id            => x_reading_lock_id
1441      );
1442      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1443          l_msg_index := 1;
1444          l_msg_count := x_msg_count;
1445 
1446          WHILE l_msg_count > 0 LOOP
1447              x_msg_data := FND_MSG_PUB.GET
1448                            (l_msg_index,
1449                            FND_API.G_FALSE );
1450              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_READING_LOCK_POST API');
1451              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1452              l_msg_index := l_msg_index + 1;
1453              l_msg_count := l_msg_count - 1;
1454          END LOOP;
1455          RAISE FND_API.G_EXC_ERROR;
1456      END IF;
1457    END IF;
1458 
1459 
1460 
1461     -- Standard check of p_commit.
1462     IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
1463        COMMIT WORK;
1464     END IF;
1465 
1466 EXCEPTION
1467    WHEN FND_API.G_EXC_ERROR THEN
1468       x_return_status := FND_API.G_RET_STS_ERROR ;
1469       ROLLBACK TO create_reading_lock_pub;
1470       FND_MSG_PUB.Count_And_Get
1471                 (p_count => x_msg_count,
1472                  p_data  => x_msg_data
1473                 );
1474 
1475    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1476       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1477       ROLLBACK TO create_reading_lock_pub;
1478       FND_MSG_PUB.Count_And_Get
1479       		(p_count => x_msg_count,
1480                  p_data  => x_msg_data
1481                 );
1482    WHEN OTHERS THEN
1483       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1484       ROLLBACK TO create_reading_lock_pub;
1485       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1486       THEN
1487          FND_MSG_PUB.Add_Exc_Msg
1488             (G_PKG_NAME,
1489              l_api_name
1490             );
1491        END IF;
1492        FND_MSG_PUB.Count_And_Get
1493             (p_count => x_msg_count,
1494              p_data  => x_msg_data
1495             );
1496 
1497 END create_reading_lock;
1498 
1499 --|---------------------------------------------------
1500 --| procedure name: create_daily_usage
1501 --| description :   procedure used to
1502 --|                 create daily usage
1503 --|---------------------------------------------------
1504 
1505 PROCEDURE create_daily_usage
1506  (
1507      p_api_version               IN     NUMBER
1508     ,p_commit                    IN     VARCHAR2
1509     ,p_init_msg_list             IN     VARCHAR2
1510     ,p_validation_level          IN     NUMBER
1511     ,p_ctr_usage_forecast_rec    IN OUT NOCOPY CSI_CTR_DATASTRUCTURES_PUB.ctr_usage_forecast_rec
1512     ,x_return_status                OUT NOCOPY VARCHAR2
1513     ,x_msg_count                    OUT NOCOPY NUMBER
1514     ,x_msg_data                     OUT NOCOPY VARCHAR2
1515     ,x_instance_forecast_id         OUT	NOCOPY NUMBER
1516  )
1517  IS
1518     l_api_name                      CONSTANT VARCHAR2(30)   := 'CREATE_DAILY_USAGE';
1519     l_api_version                   CONSTANT NUMBER         := 1.0;
1520     -- l_debug_level                   NUMBER;
1521     l_flag                          VARCHAR2(1)             := 'N';
1522     l_msg_data                      VARCHAR2(2000);
1523     l_msg_index                     NUMBER;
1524     l_msg_count                     NUMBER;
1525     l_count                         NUMBER;
1526     l_return_message                VARCHAR2(100);
1527 
1528     l_instance_forecast_id          NUMBER;
1529 
1530 BEGIN
1531    -- Standard Start of API savepoint
1532    SAVEPOINT  create_daily_usage_pub;
1533 
1534    -- Standard call to check for call compatibility.
1535    IF NOT FND_API.Compatible_API_Call (l_api_version,
1536                                        p_api_version,
1537                                        l_api_name   ,
1538                                        G_PKG_NAME   )
1539    THEN
1540       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1541    END IF;
1542 
1543    -- Initialize message list if p_init_msg_list is set to TRUE.
1544    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
1545       FND_MSG_PUB.initialize;
1546    END IF;
1547 
1548    --  Initialize API return status to success
1549    x_return_status := FND_API.G_RET_STS_SUCCESS;
1550 
1551    -- Read the debug profiles values in to global variable 7197402
1552    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
1553 
1554    -- Check the profile option debug_level for debug message reporting
1555    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
1556 
1557    -- If debug_level = 1 then dump the procedure name
1558    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
1559       csi_ctr_gen_utility_pvt.put_line( 'create_daily_usage');
1560    END IF;
1561 
1562    -- If the debug level = 2 then dump all the parameters values.
1563    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
1564       csi_ctr_gen_utility_pvt.put_line( 'create_daily_usage'     ||
1565                                      p_api_version         ||'-'||
1566                                      p_commit              ||'-'||
1567                                      p_init_msg_list       ||'-'||
1568                                      p_validation_level );
1569       csi_ctr_gen_utility_pvt.dump_ctr_usage_forecast_rec(p_ctr_usage_forecast_rec);
1570    END IF;
1571 
1572    /* Customer pre -processing  section - Mandatory  */
1573    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
1574      CSI_COUNTER_CUHK.create_daily_usage_pre
1575      (
1576       p_api_version	                => p_api_version
1577       ,p_init_msg_list	            => p_init_msg_list
1578       ,p_commit		                => p_commit
1579       ,p_validation_level           => p_validation_level
1580       ,p_ctr_usage_forecast_rec	    => p_ctr_usage_forecast_rec
1581       ,x_return_status              => x_return_status
1582       ,x_msg_count                  => x_msg_count
1583       ,x_msg_data                   => x_msg_data
1584       ,x_instance_forecast_id       => x_instance_forecast_id
1585      );
1586      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1587          l_msg_index := 1;
1588          l_msg_count := x_msg_count;
1589 
1590          WHILE l_msg_count > 0 LOOP
1591              x_msg_data := FND_MSG_PUB.GET
1592                            (l_msg_index,
1593                            FND_API.G_FALSE );
1594              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_DAILY_USAGE_PRE API');
1595              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1596              l_msg_index := l_msg_index + 1;
1597              l_msg_count := l_msg_count - 1;
1598          END LOOP;
1599          RAISE FND_API.G_EXC_ERROR;
1600      END IF;
1601    END IF;
1602    /* Vertical pre -processing  section - Mandatory  */
1603    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
1604      CSI_COUNTER_VUHK.create_daily_usage_pre
1605      (
1606       p_api_version	                => p_api_version
1607       ,p_init_msg_list	            => p_init_msg_list
1608       ,p_commit		                => p_commit
1609       ,p_validation_level           => p_validation_level
1610       ,p_ctr_usage_forecast_rec	    => p_ctr_usage_forecast_rec
1611       ,x_return_status              => x_return_status
1612       ,x_msg_count                  => x_msg_count
1613       ,x_msg_data                   => x_msg_data
1614       ,x_instance_forecast_id       => x_instance_forecast_id
1615      );
1616      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1617          l_msg_index := 1;
1618          l_msg_count := x_msg_count;
1619 
1620          WHILE l_msg_count > 0 LOOP
1621              x_msg_data := FND_MSG_PUB.GET
1622                            (l_msg_index,
1623                            FND_API.G_FALSE );
1624              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_DAILY_USAGE_PRE API');
1625              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1626              l_msg_index := l_msg_index + 1;
1627              l_msg_count := l_msg_count - 1;
1628          END LOOP;
1629          RAISE FND_API.G_EXC_ERROR;
1630      END IF;
1631    END IF;
1632 
1633    -- Start of API Body
1634 
1635    CSI_COUNTER_PVT.create_daily_usage
1636    (
1637      p_api_version	=>	1.0
1638     ,p_init_msg_list	=>	p_init_msg_list
1639     ,p_commit		=>	p_commit
1640     ,p_validation_level	=>	p_validation_level
1641     ,p_ctr_usage_forecast_rec => p_ctr_usage_forecast_rec
1642     ,x_return_status	=>	x_return_status
1643     ,x_msg_count	=>	x_msg_count
1644     ,x_msg_data		=>	x_msg_data
1645     ,x_instance_forecast_id =>	l_instance_forecast_id
1646     );
1647     IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1648          l_msg_index := 1;
1649          l_msg_count := x_msg_count;
1650 
1651          WHILE l_msg_count > 0 LOOP
1652              x_msg_data := FND_MSG_PUB.GET
1653                            (l_msg_index,
1654                            FND_API.G_FALSE );
1655              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_DAILY_USAGE API');
1656              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1657              l_msg_index := l_msg_index + 1;
1658              l_msg_count := l_msg_count - 1;
1659          END LOOP;
1660          RAISE FND_API.G_EXC_ERROR;
1661      END IF;
1662 
1663     -- End of API body
1664 
1665     /* Customer post -processing  section - Mandatory  */
1666    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
1667      CSI_COUNTER_CUHK.create_daily_usage_post
1668      (
1669       p_api_version	            => p_api_version
1670       ,p_init_msg_list	            => p_init_msg_list
1671       ,p_commit		            => p_commit
1672       ,p_validation_level           => p_validation_level
1673       ,p_ctr_usage_forecast_rec	    => p_ctr_usage_forecast_rec
1674       ,x_return_status              => x_return_status
1675       ,x_msg_count                  => x_msg_count
1676       ,x_msg_data                   => x_msg_data
1677       ,x_instance_forecast_id       => x_instance_forecast_id
1678      );
1679      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1680          l_msg_index := 1;
1681          l_msg_count := x_msg_count;
1682 
1683          WHILE l_msg_count > 0 LOOP
1684              x_msg_data := FND_MSG_PUB.GET
1685                            (l_msg_index,
1686                            FND_API.G_FALSE );
1687              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.CREATE_DAILY_USAGE_POST API');
1688              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1689              l_msg_index := l_msg_index + 1;
1690              l_msg_count := l_msg_count - 1;
1691          END LOOP;
1692          RAISE FND_API.G_EXC_ERROR;
1693      END IF;
1694    END IF;
1695    /* Vertical post -processing  section - Mandatory  */
1696    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'V' )  ) THEN
1697      CSI_COUNTER_VUHK.create_daily_usage_post
1698      (
1699       p_api_version	                => p_api_version
1700       ,p_init_msg_list	            => p_init_msg_list
1701       ,p_commit		                => p_commit
1702       ,p_validation_level           => p_validation_level
1703       ,p_ctr_usage_forecast_rec	    => p_ctr_usage_forecast_rec
1704       ,x_return_status              => x_return_status
1705       ,x_msg_count                  => x_msg_count
1706       ,x_msg_data                   => x_msg_data
1707       ,x_instance_forecast_id       => x_instance_forecast_id
1708      );
1709      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1710          l_msg_index := 1;
1711          l_msg_count := x_msg_count;
1712 
1713          WHILE l_msg_count > 0 LOOP
1714              x_msg_data := FND_MSG_PUB.GET
1715                            (l_msg_index,
1716                            FND_API.G_FALSE );
1717              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.CREATE_DAILY_USAGE_POST API');
1718              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1719              l_msg_index := l_msg_index + 1;
1720              l_msg_count := l_msg_count - 1;
1721          END LOOP;
1722          RAISE FND_API.G_EXC_ERROR;
1723      END IF;
1724    END IF;
1725 
1726     -- Standard check of p_commit.
1727     IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
1728        COMMIT WORK;
1729     END IF;
1730 
1731 EXCEPTION
1732    WHEN FND_API.G_EXC_ERROR THEN
1733       x_return_status := FND_API.G_RET_STS_ERROR ;
1734       ROLLBACK TO create_daily_usage_pub;
1735       FND_MSG_PUB.Count_And_Get
1736                 (p_count => x_msg_count,
1737                  p_data  => x_msg_data
1738                 );
1739 
1740    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1741       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1742       ROLLBACK TO create_daily_usage_pub;
1743       FND_MSG_PUB.Count_And_Get
1744       		(p_count => x_msg_count,
1745                  p_data  => x_msg_data
1746                 );
1747    WHEN OTHERS THEN
1748       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1749       ROLLBACK TO create_daily_usage_pub;
1750       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1751       THEN
1752          FND_MSG_PUB.Add_Exc_Msg
1753             (G_PKG_NAME,
1754              l_api_name
1755             );
1756        END IF;
1757        FND_MSG_PUB.Count_And_Get
1758             (p_count => x_msg_count,
1759              p_data  => x_msg_data
1760             );
1761 
1762 END create_daily_usage;
1763 
1764 --|---------------------------------------------------
1765 --| procedure name: update_counter
1766 --| description :   procedure used to
1767 --|                 update counter
1768 --|---------------------------------------------------
1769 
1770 PROCEDURE update_counter
1771  (
1772      p_api_version	             IN	NUMBER
1773     ,p_init_msg_list	          	IN	VARCHAR2
1774     ,p_commit		                 IN	VARCHAR2
1775     ,p_validation_level         IN NUMBER
1776     ,p_counter_instance_rec	    IN out	NOCOPY CSI_CTR_DATASTRUCTURES_PUB.Counter_instance_rec
1777     ,P_ctr_properties_tbl       IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_tbl
1778     ,P_counter_relationships_tbl IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.counter_relationships_tbl
1779     ,P_ctr_derived_filters_tbl  IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.ctr_derived_filters_tbl
1780     ,P_counter_associations_tbl IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.counter_associations_tbl
1781     ,x_return_status               out NOCOPY VARCHAR2
1782     ,x_msg_count                   out NOCOPY NUMBER
1783     ,x_msg_data                    out NOCOPY VARCHAR2
1784  )
1785  IS
1786     l_api_name                      CONSTANT VARCHAR2(30)   := 'UPDATE_COUNTER';
1787     l_api_version                   CONSTANT NUMBER         := 1.0;
1788     -- l_debug_level                   NUMBER;
1789     l_flag                          VARCHAR2(1)             := 'N';
1790     l_msg_data                      VARCHAR2(2000);
1791     l_msg_index                     NUMBER;
1792     l_msg_count                     NUMBER;
1793     l_count                         NUMBER;
1794     l_return_message                VARCHAR2(100);
1795 
1796     l_Ctr_properties_rec            CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_rec;
1797     l_counter_relationships_rec     CSI_CTR_DATASTRUCTURES_PUB.counter_relationships_rec;
1798     l_ctr_derived_filters_rec       CSI_CTR_DATASTRUCTURES_PUB.ctr_derived_filters_rec;
1799     l_counter_associations_rec      CSI_CTR_DATASTRUCTURES_PUB.counter_associations_rec;
1800 
1801 BEGIN
1802    -- Standard Start of API savepoint
1803    SAVEPOINT  update_counter_pub;
1804 
1805    -- Standard call to check for call compatibility.
1806    IF NOT FND_API.Compatible_API_Call (l_api_version,
1807                                        p_api_version,
1808                                        l_api_name   ,
1809                                        G_PKG_NAME   )
1810    THEN
1811       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1812    END IF;
1813 
1814    -- Initialize message list if p_init_msg_list is set to TRUE.
1815    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
1816       FND_MSG_PUB.initialize;
1817    END IF;
1818 
1819    --  Initialize API return status to success
1820    x_return_status := FND_API.G_RET_STS_SUCCESS;
1821 
1822    -- Read the debug profiles values in to global variable 7197402
1823    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
1824 
1825    -- Check the profile option debug_level for debug message reporting
1826    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
1827 
1828    -- If debug_level = 1 then dump the procedure name
1829    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
1830       csi_ctr_gen_utility_pvt.put_line( 'update_counter');
1831    END IF;
1832 
1833    -- If the debug level = 2 then dump all the parameters values.
1834    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
1835       csi_ctr_gen_utility_pvt.put_line( 'update_counter'     ||
1836                                      p_api_version         ||'-'||
1837                                      p_commit              ||'-'||
1838                                      p_init_msg_list       ||'-'||
1839                                      p_validation_level );
1840       csi_ctr_gen_utility_pvt.dump_counter_instance_rec(p_counter_instance_rec);
1841    END IF;
1842 
1843    /* Customer pre -processing  section - Mandatory  */
1844    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
1845      CSI_COUNTER_CUHK.update_counter_pre
1846      (
1847       p_api_version	                => p_api_version
1848       ,p_init_msg_list	             => p_init_msg_list
1849       ,p_commit		                   => p_commit
1850       ,p_validation_level           => p_validation_level
1851       ,p_counter_instance_rec	      => p_counter_instance_rec
1852       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
1853       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
1854       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
1855       --,P_counter_associations_tbl   => P_counter_associations_tbl
1856       ,x_return_status              => x_return_status
1857       ,x_msg_count                  => x_msg_count
1858       ,x_msg_data                   => x_msg_data
1859      );
1860      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1861          l_msg_index := 1;
1862          l_msg_count := x_msg_count;
1863 
1864          WHILE l_msg_count > 0 LOOP
1865              x_msg_data := FND_MSG_PUB.GET
1866                            (l_msg_index,
1867                            FND_API.G_FALSE );
1868              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_COUNTER_PRE API');
1869              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1870              l_msg_index := l_msg_index + 1;
1871              l_msg_count := l_msg_count - 1;
1872          END LOOP;
1873          RAISE FND_API.G_EXC_ERROR;
1874      END IF;
1875    END IF;
1876    /* Vertical pre -processing  section - Mandatory  */
1877    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
1878      CSI_COUNTER_VUHK.update_counter_pre
1879      (
1880       p_api_version	                => p_api_version
1881       ,p_init_msg_list	             => p_init_msg_list
1882       ,p_commit		                   => p_commit
1883       ,p_validation_level           => p_validation_level
1884       ,p_counter_instance_rec	      => p_counter_instance_rec
1885       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
1886       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
1887       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
1888       --,P_counter_associations_tbl   => P_counter_associations_tbl
1889       ,x_return_status              => x_return_status
1890       ,x_msg_count                  => x_msg_count
1891       ,x_msg_data                   => x_msg_data
1892      );
1893      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1894          l_msg_index := 1;
1895          l_msg_count := x_msg_count;
1896 
1897          WHILE l_msg_count > 0 LOOP
1898              x_msg_data := FND_MSG_PUB.GET
1899                            (l_msg_index,
1900                            FND_API.G_FALSE );
1901              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.UPDATE_COUNTER_PRE API');
1902              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1903              l_msg_index := l_msg_index + 1;
1904              l_msg_count := l_msg_count - 1;
1905          END LOOP;
1906          RAISE FND_API.G_EXC_ERROR;
1907      END IF;
1908    END IF;
1909 
1910    -- Start of API Body
1911    CSI_COUNTER_PVT.update_counter
1912    (
1913      p_api_version	=>	1.0
1914     ,p_init_msg_list	=>	p_init_msg_list
1915     ,p_commit		=>	p_commit
1916     ,p_validation_level	=>	p_validation_level
1917     ,p_counter_instance_rec => p_counter_instance_rec
1918     ,x_return_status	=>	x_return_status
1919     ,x_msg_count	=>	x_msg_count
1920     ,x_msg_data		=>	x_msg_data
1921     );
1922     IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1923          l_msg_index := 1;
1924          l_msg_count := x_msg_count;
1925 
1926          WHILE l_msg_count > 0 LOOP
1927              x_msg_data := FND_MSG_PUB.GET
1928                            (l_msg_index,
1929                            FND_API.G_FALSE );
1930              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.UPDATE_COUNTER API');
1931              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
1932              l_msg_index := l_msg_index + 1;
1933              l_msg_count := l_msg_count - 1;
1934          END LOOP;
1935          RAISE FND_API.G_EXC_ERROR;
1936      END IF;
1937 
1938     -- Update Counter Properties
1939     IF p_ctr_properties_tbl.count > 0 THEN
1940        FOR j in p_ctr_properties_tbl.FIRST..p_ctr_properties_tbl.LAST
1941        LOOP
1942           DECLARE
1943              l_ctr_property_id NUMBER;
1944           BEGIN
1945              l_Ctr_properties_rec.COUNTER_PROPERTY_ID := p_ctr_properties_tbl(j).COUNTER_PROPERTY_ID;
1946              l_Ctr_properties_rec.counter_id := p_ctr_properties_tbl(j).counter_id;
1947              l_Ctr_properties_rec.NAME := p_ctr_properties_tbl(j).name;
1948              l_Ctr_properties_rec.DESCRIPTION  := p_ctr_properties_tbl(j).DESCRIPTION;
1949              l_Ctr_properties_rec.PROPERTY_DATA_TYPE := p_ctr_properties_tbl(j).PROPERTY_DATA_TYPE;
1950              l_Ctr_properties_rec.IS_NULLABLE  := p_ctr_properties_tbl(j).IS_NULLABLE;
1951              l_Ctr_properties_rec.DEFAULT_VALUE  := p_ctr_properties_tbl(j).DEFAULT_VALUE;
1952              l_Ctr_properties_rec.MINIMUM_VALUE  := p_ctr_properties_tbl(j).MINIMUM_VALUE;
1953              l_Ctr_properties_rec.MAXIMUM_VALUE  := p_ctr_properties_tbl(j).MAXIMUM_VALUE;
1954              l_Ctr_properties_rec.UOM_CODE       := p_ctr_properties_tbl(j).UOM_CODE;
1955              l_Ctr_properties_rec.START_DATE_ACTIVE  := p_ctr_properties_tbl(j).START_DATE_ACTIVE;
1956              l_Ctr_properties_rec.END_DATE_ACTIVE    := p_ctr_properties_tbl(j).END_DATE_ACTIVE;
1957              l_Ctr_properties_rec.PROPERTY_LOV_TYPE  := p_ctr_properties_tbl(j).PROPERTY_LOV_TYPE;
1958              l_Ctr_properties_rec.OBJECT_VERSION_NUMBER := p_ctr_properties_tbl(j).OBJECT_VERSION_NUMBER;
1959              l_Ctr_properties_rec.ATTRIBUTE1     := p_ctr_properties_tbl(j).ATTRIBUTE1;
1960              l_Ctr_properties_rec.ATTRIBUTE2     := p_ctr_properties_tbl(j).ATTRIBUTE2;
1961              l_Ctr_properties_rec.ATTRIBUTE3     := p_ctr_properties_tbl(j).ATTRIBUTE3;
1962              l_Ctr_properties_rec.ATTRIBUTE4     := p_ctr_properties_tbl(j).ATTRIBUTE4;
1963              l_Ctr_properties_rec.ATTRIBUTE5     := p_ctr_properties_tbl(j).ATTRIBUTE5;
1964              l_Ctr_properties_rec.ATTRIBUTE6     := p_ctr_properties_tbl(j).ATTRIBUTE6;
1965              l_Ctr_properties_rec.ATTRIBUTE7     := p_ctr_properties_tbl(j).ATTRIBUTE7;
1966              l_Ctr_properties_rec.ATTRIBUTE8     := p_ctr_properties_tbl(j).ATTRIBUTE8;
1967              l_Ctr_properties_rec.ATTRIBUTE9     := p_ctr_properties_tbl(j).ATTRIBUTE9;
1968              l_Ctr_properties_rec.ATTRIBUTE10    := p_ctr_properties_tbl(j).ATTRIBUTE10;
1969              l_Ctr_properties_rec.ATTRIBUTE11    := p_ctr_properties_tbl(j).ATTRIBUTE11;
1970              l_Ctr_properties_rec.ATTRIBUTE12    := p_ctr_properties_tbl(j).ATTRIBUTE12;
1971              l_Ctr_properties_rec.ATTRIBUTE13    := p_ctr_properties_tbl(j).ATTRIBUTE13;
1972              l_Ctr_properties_rec.ATTRIBUTE14    := p_ctr_properties_tbl(j).ATTRIBUTE14;
1973              l_Ctr_properties_rec.ATTRIBUTE15    := p_ctr_properties_tbl(j).ATTRIBUTE15;
1974              l_Ctr_properties_rec.ATTRIBUTE_CATEGORY  := p_ctr_properties_tbl(j).ATTRIBUTE_CATEGORY;
1975 
1976              If l_Ctr_properties_rec.COUNTER_PROPERTY_ID = FND_API.G_MISS_NUM THEN
1977                l_Ctr_properties_rec.COUNTER_PROPERTY_ID :=  null;
1978              END IF;
1979 
1980              IF l_Ctr_properties_rec.COUNTER_PROPERTY_ID IS NOT NULL THEN
1981               CSI_COUNTER_PVT.update_ctr_property
1982             	 (
1983            	   p_api_version	=>	1.0
1984            	  ,p_init_msg_list	=>	p_init_msg_list
1985            	  ,p_commit		=>	p_commit
1986            	  ,p_validation_level	=>	p_validation_level
1987               ,p_ctr_properties_rec => l_ctr_properties_rec
1988            	  ,x_return_status	=>	x_return_status
1989            	  ,x_msg_count		=>	x_msg_count
1990            	  ,x_msg_data		=>	x_msg_data
1991            	  );
1992               IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1993                 l_msg_index := 1;
1994                 l_msg_count := x_msg_count;
1995 
1996                 WHILE l_msg_count > 0 LOOP
1997                   x_msg_data := FND_MSG_PUB.GET
1998                            (l_msg_index,
1999                            FND_API.G_FALSE );
2000                   csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.UPDATE_CTR_PROPERTY API');
2001                   csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2002                   l_msg_index := l_msg_index + 1;
2003                   l_msg_count := l_msg_count - 1;
2004                 END LOOP;
2005                 RAISE FND_API.G_EXC_ERROR;
2006               END IF;
2007              ELSE -- PROPERTY ID IS NULL. INSERT NEW PROPERTY
2008               l_Ctr_properties_rec.counter_id := p_counter_instance_rec.counter_id;
2009               CSI_COUNTER_PVT.create_ctr_property
2010            	  (
2011            	   p_api_version	=>	1.0
2012            	  ,p_init_msg_list	=>	p_init_msg_list
2013            	  ,p_commit		=>	p_commit
2014            	  ,p_validation_level	=>	p_validation_level
2015               ,p_ctr_properties_rec =>  l_Ctr_properties_rec
2016            	  ,x_return_status	=>	x_return_status
2017            	  ,x_msg_count	        =>	x_msg_count
2018            	  ,x_msg_data		=>	x_msg_data
2019            	  ,x_ctr_property_id	=>	l_ctr_property_id
2020            	  );
2021           	   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2022                 l_msg_index := 1;
2023                 l_msg_count := x_msg_count;
2024 
2025                 WHILE l_msg_count > 0 LOOP
2026                  x_msg_data := FND_MSG_PUB.GET
2027                            (l_msg_index,
2028                             FND_API.G_FALSE );
2029                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_CTR_PROPERTY API');
2030                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2031                  l_msg_index := l_msg_index + 1;
2032                  l_msg_count := l_msg_count - 1;
2033                 END LOOP;
2034                 RAISE FND_API.G_EXC_ERROR;
2035               END IF;
2036              END IF;
2037           END;
2038        END LOOP;
2039     END IF;
2040 
2041     -- Update Counter relationships
2042     IF P_counter_relationships_tbl.count > 0 THEN
2043        FOR i in p_counter_relationships_tbl.FIRST..p_counter_relationships_tbl.LAST
2044        LOOP
2045           BEGIN
2046              l_counter_relationships_rec.RELATIONSHIP_ID := p_counter_relationships_tbl(i).RELATIONSHIP_ID;
2047              l_counter_relationships_rec.OBJECT_COUNTER_ID  := p_counter_relationships_tbl(i).OBJECT_COUNTER_ID;
2048              l_counter_relationships_rec.CTR_ASSOCIATION_ID := p_counter_relationships_tbl(i).CTR_ASSOCIATION_ID;
2049              l_counter_relationships_rec.RELATIONSHIP_TYPE_CODE := p_counter_relationships_tbl(i).RELATIONSHIP_TYPE_CODE;
2050              l_counter_relationships_rec.SOURCE_COUNTER_ID  := p_counter_relationships_tbl(i).SOURCE_COUNTER_ID;
2051              l_counter_relationships_rec.ACTIVE_START_DATE  := p_counter_relationships_tbl(i).ACTIVE_START_DATE ;
2052              l_counter_relationships_rec.ACTIVE_END_DATE  := p_counter_relationships_tbl(i).ACTIVE_END_DATE;
2053              l_counter_relationships_rec.BIND_VARIABLE_NAME  := p_counter_relationships_tbl(i).BIND_VARIABLE_NAME;
2054              l_counter_relationships_rec.FACTOR  := p_counter_relationships_tbl(i).FACTOR;
2055              l_counter_relationships_rec.object_version_number := p_counter_relationships_tbl(i).object_version_number;
2056              l_counter_relationships_rec.ATTRIBUTE1     := p_counter_relationships_tbl(i).ATTRIBUTE1;
2057              l_counter_relationships_rec.ATTRIBUTE2     := p_counter_relationships_tbl(i).ATTRIBUTE2;
2058              l_counter_relationships_rec.ATTRIBUTE3     := p_counter_relationships_tbl(i).ATTRIBUTE3;
2059              l_counter_relationships_rec.ATTRIBUTE4     := p_counter_relationships_tbl(i).ATTRIBUTE4;
2060              l_counter_relationships_rec.ATTRIBUTE5     := p_counter_relationships_tbl(i).ATTRIBUTE5;
2061              l_counter_relationships_rec.ATTRIBUTE6     := p_counter_relationships_tbl(i).ATTRIBUTE6;
2062              l_counter_relationships_rec.ATTRIBUTE7     := p_counter_relationships_tbl(i).ATTRIBUTE7;
2063              l_counter_relationships_rec.ATTRIBUTE8     := p_counter_relationships_tbl(i).ATTRIBUTE8;
2064              l_counter_relationships_rec.ATTRIBUTE9     := p_counter_relationships_tbl(i).ATTRIBUTE9;
2065              l_counter_relationships_rec.ATTRIBUTE10    := p_counter_relationships_tbl(i).ATTRIBUTE10;
2066              l_counter_relationships_rec.ATTRIBUTE11    := p_counter_relationships_tbl(i).ATTRIBUTE11;
2067              l_counter_relationships_rec.ATTRIBUTE12    := p_counter_relationships_tbl(i).ATTRIBUTE12;
2068              l_counter_relationships_rec.ATTRIBUTE13    := p_counter_relationships_tbl(i).ATTRIBUTE13;
2069              l_counter_relationships_rec.ATTRIBUTE14    := p_counter_relationships_tbl(i).ATTRIBUTE14;
2070              l_counter_relationships_rec.ATTRIBUTE15    := p_counter_relationships_tbl(i).ATTRIBUTE15;
2071              l_counter_relationships_rec.ATTRIBUTE_CATEGORY  := p_counter_relationships_tbl(i).ATTRIBUTE_CATEGORY;
2072 
2073              IF l_counter_relationships_rec.RELATIONSHIP_ID = FND_API.G_MISS_NUM THEN
2074                l_counter_relationships_rec.RELATIONSHIP_ID := NULL;
2075              END IF;
2076 
2077              IF l_counter_relationships_rec.RELATIONSHIP_ID IS NOT NULL THEN
2078               CSI_COUNTER_TEMPLATE_PVT.update_counter_relationship
2079             	 (
2080           	   p_api_version	=>	1.0
2081            	  ,p_init_msg_list	=>	p_init_msg_list
2082            	  ,p_commit		=>	p_commit
2083            	  ,p_validation_level	=>	p_validation_level
2084               ,p_counter_relationships_rec => l_counter_relationships_rec
2085            	  ,x_return_status	=>	x_return_status
2086            	  ,x_msg_count		=>	x_msg_count
2087            	  ,x_msg_data		=>	x_msg_data
2088             	 );
2089              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2090                 l_msg_index := 1;
2091                 l_msg_count := x_msg_count;
2092 
2093                 WHILE l_msg_count > 0 LOOP
2094                   x_msg_data := FND_MSG_PUB.GET
2095                            (l_msg_index,
2096                            FND_API.G_FALSE );
2097                   csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_TEMPLATE_PVT.UPDATE_COUNTER_RELATIONSHIP API');
2098                   csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2099                   l_msg_index := l_msg_index + 1;
2100                   l_msg_count := l_msg_count - 1;
2101                 END LOOP;
2102                 RAISE FND_API.G_EXC_ERROR;
2103               END IF;
2104              ELSE --RELATIONSHIP_ID is null, call to insert counter relationship
2105               l_counter_relationships_rec.OBJECT_COUNTER_ID := p_counter_instance_rec.counter_id;
2106               CSI_COUNTER_TEMPLATE_PVT.create_counter_relationship
2107            	  (
2108            	   p_api_version	=>	1.0
2109            	  ,p_init_msg_list	=>	p_init_msg_list
2110            	  ,p_commit		=>	p_commit
2111            	  ,p_validation_level	=>	p_validation_level
2112               ,p_counter_relationships_rec => l_counter_relationships_rec
2113            	  ,x_return_status	=>	x_return_status
2114            	  ,x_msg_count		=>	x_msg_count
2115            	  ,x_msg_data		=>	x_msg_data
2116            	  );
2117           	   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2118                 l_msg_index := 1;
2119                 l_msg_count := x_msg_count;
2120 
2121                 WHILE l_msg_count > 0 LOOP
2122                  x_msg_data := FND_MSG_PUB.GET
2123                            (l_msg_index,
2124                             FND_API.G_FALSE );
2125                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_TEMPLATE_PVT.CREATE_COUNTER_RELATIONSHIP API');
2126                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2127                  l_msg_index := l_msg_index + 1;
2128                  l_msg_count := l_msg_count - 1;
2129                 END LOOP;
2130                 RAISE FND_API.G_EXC_ERROR;
2131               END IF;
2132              END IF;
2133           END;
2134        END LOOP;
2135     END IF;
2136 
2137     -- Update derived filters
2138     IF p_ctr_derived_filters_tbl.count > 0 THEN
2139 
2140       FOR i in p_ctr_derived_filters_tbl.FIRST..p_ctr_derived_filters_tbl.LAST
2141        LOOP
2142          If p_ctr_derived_filters_tbl(i).counter_id is null then
2143              p_ctr_derived_filters_tbl(i).counter_id := p_counter_instance_rec.counter_id;
2144          End if;
2145        END LOOP;
2146 
2147              CSI_COUNTER_TEMPLATE_PVT.update_derived_filters
2148            	 (
2149            	   p_api_version	=>	1.0
2150            	  ,p_init_msg_list	=>	p_init_msg_list
2151            	  ,p_commit		=>	p_commit
2152            	  ,p_validation_level	=>	p_validation_level
2153               ,p_ctr_derived_filters_tbl => p_ctr_derived_filters_tbl
2154            	  ,x_return_status	=>	x_return_status
2155            	  ,x_msg_count		=>	x_msg_count
2156            	  ,x_msg_data		=>	x_msg_data
2157            	 );
2158              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2159                 l_msg_index := 1;
2160                 l_msg_count := x_msg_count;
2161 
2162                 WHILE l_msg_count > 0 LOOP
2163                   x_msg_data := FND_MSG_PUB.GET
2164                            (l_msg_index,
2165                            FND_API.G_FALSE );
2166                   csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_TEMPLATE_PVT.UPDATE_DERIVED_FILTERS API');
2167                   csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2168                   l_msg_index := l_msg_index + 1;
2169                   l_msg_count := l_msg_count - 1;
2170                 END LOOP;
2171                 RAISE FND_API.G_EXC_ERROR;
2172               END IF;
2173     END IF;
2174     -- Update Counter associations
2175 
2176     IF p_counter_associations_tbl.count > 0 THEN
2177        FOR i in p_counter_associations_tbl.FIRST..p_counter_associations_tbl.LAST
2178        LOOP
2179           DECLARE l_instance_association_id NUMBER;
2180           BEGIN
2181              l_counter_associations_rec.instance_association_id := p_counter_associations_tbl(i).instance_association_id;
2182              l_counter_associations_rec.COUNTER_ID  := p_counter_associations_tbl(i).counter_id;
2183              l_counter_associations_rec.SOURCE_OBJECT_CODE := p_counter_associations_tbl(i).SOURCE_OBJECT_CODE;
2184              l_counter_associations_rec.SOURCE_OBJECT_ID := p_counter_associations_tbl(i).SOURCE_OBJECT_ID;
2185              l_counter_associations_rec.START_DATE_ACTIVE  := p_counter_associations_tbl(i).START_DATE_ACTIVE ;
2186              l_counter_associations_rec.END_DATE_ACTIVE  := p_counter_associations_tbl(i).END_DATE_ACTIVE;
2187              l_counter_associations_rec.OBJECT_VERSION_NUMBER := p_counter_associations_tbl(i).OBJECT_VERSION_NUMBER;
2188              l_counter_associations_rec.ATTRIBUTE1     := p_counter_associations_tbl(i).ATTRIBUTE1;
2189              l_counter_associations_rec.ATTRIBUTE2     := p_counter_associations_tbl(i).ATTRIBUTE2;
2190              l_counter_associations_rec.ATTRIBUTE3     := p_counter_associations_tbl(i).ATTRIBUTE3;
2191              l_counter_associations_rec.ATTRIBUTE4     := p_counter_associations_tbl(i).ATTRIBUTE4;
2192              l_counter_associations_rec.ATTRIBUTE5     := p_counter_associations_tbl(i).ATTRIBUTE5;
2193              l_counter_associations_rec.ATTRIBUTE6     := p_counter_associations_tbl(i).ATTRIBUTE6;
2194              l_counter_associations_rec.ATTRIBUTE7     := p_counter_associations_tbl(i).ATTRIBUTE7;
2195              l_counter_associations_rec.ATTRIBUTE8     := p_counter_associations_tbl(i).ATTRIBUTE8;
2196              l_counter_associations_rec.ATTRIBUTE9     := p_counter_associations_tbl(i).ATTRIBUTE9;
2197              l_counter_associations_rec.ATTRIBUTE10    := p_counter_associations_tbl(i).ATTRIBUTE10;
2198              l_counter_associations_rec.ATTRIBUTE11    := p_counter_associations_tbl(i).ATTRIBUTE11;
2199              l_counter_associations_rec.ATTRIBUTE12    := p_counter_associations_tbl(i).ATTRIBUTE12;
2200              l_counter_associations_rec.ATTRIBUTE13    := p_counter_associations_tbl(i).ATTRIBUTE13;
2201              l_counter_associations_rec.ATTRIBUTE14    := p_counter_associations_tbl(i).ATTRIBUTE14;
2202              l_counter_associations_rec.ATTRIBUTE15    := p_counter_associations_tbl(i).ATTRIBUTE15;
2203              l_counter_associations_rec.ATTRIBUTE_CATEGORY  := p_counter_associations_tbl(i).ATTRIBUTE_CATEGORY;
2204              l_counter_associations_rec.maint_organization_id := p_counter_associations_tbl(i).maint_organization_id;
2205              l_counter_associations_rec.primary_failure_flag := p_counter_associations_tbl(i).primary_failure_flag;
2206 
2207              IF l_counter_associations_rec.instance_association_id = FND_API.G_MISS_NUM THEN
2208                 l_counter_associations_rec.instance_association_id := NULL;
2209              END IF;
2210 
2211              IF l_counter_associations_rec.instance_association_id IS NOT NULL THEN
2212               CSI_COUNTER_PVT.update_ctr_associations
2213             	 (
2214            	   p_api_version	=>	1.0
2215            	  ,p_init_msg_list	=>	p_init_msg_list
2216            	  ,p_commit		=>	p_commit
2217            	  ,p_validation_level	=>	p_validation_level
2218               ,p_counter_associations_rec => l_counter_associations_rec
2219            	  ,x_return_status	=>	x_return_status
2220            	  ,x_msg_count		=>	x_msg_count
2221            	  ,x_msg_data		=>	x_msg_data
2222             	 );
2223               IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2224                 l_msg_index := 1;
2225                 l_msg_count := x_msg_count;
2226 
2227                 WHILE l_msg_count > 0 LOOP
2228                   x_msg_data := FND_MSG_PUB.GET
2229                            (l_msg_index,
2230                            FND_API.G_FALSE );
2231                   csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.UPDATE_CTR_ASSOCIATIONS API');
2232                   csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2233                   l_msg_index := l_msg_index + 1;
2234                   l_msg_count := l_msg_count - 1;
2235                 END LOOP;
2236                 RAISE FND_API.G_EXC_ERROR;
2237               END IF;
2238              ELSE --instance_association_id is null. insert new counter association
2239               l_counter_associations_rec.COUNTER_ID  := p_counter_instance_rec.counter_id;
2240               CSI_COUNTER_PVT.create_ctr_associations
2241            	  (
2242            	   p_api_version	=>	1.0
2243            	  ,p_init_msg_list	=>	p_init_msg_list
2244            	  ,p_commit		=>	p_commit
2245            	  ,p_validation_level	=>	p_validation_level
2246               ,p_counter_associations_rec => l_counter_associations_rec
2247            	  ,x_return_status	=>	x_return_status
2248            	  ,x_msg_count		=>	x_msg_count
2249            	  ,x_msg_data		=>	x_msg_data
2250            	  ,x_instance_association_id	=>	l_instance_association_id
2251            	  );
2252           	   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2253                 l_msg_index := 1;
2254                 l_msg_count := x_msg_count;
2255 
2256                 WHILE l_msg_count > 0 LOOP
2257                  x_msg_data := FND_MSG_PUB.GET
2258                            (l_msg_index,
2259                             FND_API.G_FALSE );
2260                  csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.CREATE_CTR_ASSOCIATIONS API');
2261                  csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2262                  l_msg_index := l_msg_index + 1;
2263                  l_msg_count := l_msg_count - 1;
2264                 END LOOP;
2265                 RAISE FND_API.G_EXC_ERROR;
2266               END IF;
2267              END IF;
2268           END;
2269        END LOOP;
2270     END IF;
2271 
2272 
2273     -- End of API body
2274 
2275    /* Customer post -processing  section - Mandatory  */
2276    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
2277      CSI_COUNTER_CUHK.update_counter_post
2278      (
2279       p_api_version	            => p_api_version
2280       ,p_init_msg_list	            => p_init_msg_list
2281       ,p_commit		            => p_commit
2282       ,p_validation_level           => p_validation_level
2283       ,p_counter_instance_rec       => p_counter_instance_rec
2284       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
2285       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
2286       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
2287       --,P_counter_associations_tbl   => P_counter_associations_tbl
2288       ,x_return_status              => x_return_status
2289       ,x_msg_count                  => x_msg_count
2290       ,x_msg_data                   => x_msg_data
2291      );
2292      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2293          l_msg_index := 1;
2294          l_msg_count := x_msg_count;
2295 
2296          WHILE l_msg_count > 0 LOOP
2297              x_msg_data := FND_MSG_PUB.GET
2298                            (l_msg_index,
2299                            FND_API.G_FALSE );
2300              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_COUNTER_POST API');
2301              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2302              l_msg_index := l_msg_index + 1;
2303              l_msg_count := l_msg_count - 1;
2304          END LOOP;
2305          RAISE FND_API.G_EXC_ERROR;
2306      END IF;
2307    END IF;
2308    /* Vertical post -processing  section - Mandatory  */
2309    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'V' )  ) THEN
2310      CSI_COUNTER_VUHK.update_counter_post
2311      (
2312       p_api_version	            => p_api_version
2313       ,p_init_msg_list	            => p_init_msg_list
2314       ,p_commit		            => p_commit
2315       ,p_validation_level           => p_validation_level
2316       ,p_counter_instance_rec       => p_counter_instance_rec
2317       ,P_ctr_properties_tbl         => P_ctr_properties_tbl
2318       ,P_counter_relationships_tbl  => P_counter_relationships_tbl
2319       ,P_ctr_derived_filters_tbl    => P_ctr_derived_filters_tbl
2320       --,P_counter_associations_tbl   => P_counter_associations_tbl
2321       ,x_return_status              => x_return_status
2322       ,x_msg_count                  => x_msg_count
2323       ,x_msg_data                   => x_msg_data
2324      );
2325      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2326          l_msg_index := 1;
2327          l_msg_count := x_msg_count;
2328 
2329          WHILE l_msg_count > 0 LOOP
2330              x_msg_data := FND_MSG_PUB.GET
2331                            (l_msg_index,
2332                            FND_API.G_FALSE );
2333              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.UPDATE_COUNTER_POST API');
2334              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2335              l_msg_index := l_msg_index + 1;
2336              l_msg_count := l_msg_count - 1;
2337          END LOOP;
2338          RAISE FND_API.G_EXC_ERROR;
2339      END IF;
2340    END IF;
2341 
2342     -- Standard check of p_commit.
2343     IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
2344        COMMIT WORK;
2345     END IF;
2346 
2347 EXCEPTION
2348    WHEN FND_API.G_EXC_ERROR THEN
2349       x_return_status := FND_API.G_RET_STS_ERROR ;
2350       ROLLBACK TO update_counter_pub;
2351       FND_MSG_PUB.Count_And_Get
2352                 (p_count => x_msg_count,
2353                  p_data  => x_msg_data
2354                 );
2355 
2356    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2357       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2358       ROLLBACK TO update_counter_pub;
2359       FND_MSG_PUB.Count_And_Get
2360       		(p_count => x_msg_count,
2361                  p_data  => x_msg_data
2362                 );
2363    WHEN OTHERS THEN
2364       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2365       ROLLBACK TO update_counter_pub;
2366       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2367       THEN
2368          FND_MSG_PUB.Add_Exc_Msg
2369             (G_PKG_NAME,
2370              l_api_name
2371             );
2372        END IF;
2373        FND_MSG_PUB.Count_And_Get
2374             (p_count => x_msg_count,
2375              p_data  => x_msg_data
2376             );
2377 
2378 END update_counter;
2379 
2380 --|---------------------------------------------------
2381 --| procedure name: update_ctr_property
2382 --| description :   procedure used to
2383 --|                 update counter properties
2384 --|---------------------------------------------------
2385 
2386 PROCEDURE update_ctr_property
2387  (
2388      p_api_version               IN     NUMBER
2389     ,p_commit                    IN     VARCHAR2
2390     ,p_init_msg_list             IN     VARCHAR2
2391     ,p_validation_level          IN     NUMBER
2392     ,P_ctr_properties_tbl        IN out NOCOPY CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_tbl
2393     ,x_return_status             OUT    NOCOPY VARCHAR2
2394     ,x_msg_count                 OUT    NOCOPY NUMBER
2395     ,x_msg_data                  OUT    NOCOPY VARCHAR2
2396  )
2397  IS
2398     l_api_name                      CONSTANT VARCHAR2(30)   := 'UPDATE_CTR_PROPERTY';
2399     l_api_version                   CONSTANT NUMBER         := 1.0;
2400     -- l_debug_level                   NUMBER;
2401     l_flag                          VARCHAR2(1)             := 'N';
2402     l_msg_data                      VARCHAR2(2000);
2403     l_msg_index                     NUMBER;
2404     l_msg_count                     NUMBER;
2405     l_count                         NUMBER;
2406     l_return_message                VARCHAR2(100);
2407 
2408     l_Ctr_properties_rec            CSI_CTR_DATASTRUCTURES_PUB.Ctr_properties_rec;
2409 
2410 BEGIN
2411    -- Standard Start of API savepoint
2412    SAVEPOINT  update_ctr_property_pub;
2413 
2414    -- Standard call to check for call compatibility.
2415    IF NOT FND_API.Compatible_API_Call (l_api_version,
2416                                        p_api_version,
2417                                        l_api_name   ,
2418                                        G_PKG_NAME   )
2419    THEN
2420       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2421    END IF;
2422 
2423    -- Initialize message list if p_init_msg_list is set to TRUE.
2424    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
2425       FND_MSG_PUB.initialize;
2426    END IF;
2427 
2428    --  Initialize API return status to success
2429    x_return_status := FND_API.G_RET_STS_SUCCESS;
2430 
2431    -- Read the debug profiles values in to global variable 7197402
2432    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
2433 
2434    -- Check the profile option debug_level for debug message reporting
2435    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
2436 
2437    -- If debug_level = 1 then dump the procedure name
2438    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
2439       csi_ctr_gen_utility_pvt.put_line( 'update_ctr_property');
2440    END IF;
2441 
2442    -- If the debug level = 2 then dump all the parameters values.
2443    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
2444       csi_ctr_gen_utility_pvt.put_line( 'update_ctr_property'     ||
2445                                      p_api_version         ||'-'||
2446                                      p_commit              ||'-'||
2447                                      p_init_msg_list       ||'-'||
2448                                      p_validation_level );
2449       csi_ctr_gen_utility_pvt.dump_ctr_properties_tbl(p_ctr_properties_tbl);
2450    END IF;
2451 
2452    /* Customer pre -processing  section - Mandatory  */
2453    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
2454      CSI_COUNTER_CUHK.update_ctr_property_pre
2455      (
2456       p_api_version	                => p_api_version
2457       ,p_init_msg_list	             => p_init_msg_list
2458       ,p_commit		                   => p_commit
2459       ,p_validation_level           => p_validation_level
2460       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
2461       ,x_return_status              => x_return_status
2462       ,x_msg_count                  => x_msg_count
2463       ,x_msg_data                   => x_msg_data
2464      );
2465      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2466          l_msg_index := 1;
2467          l_msg_count := x_msg_count;
2468 
2469          WHILE l_msg_count > 0 LOOP
2470              x_msg_data := FND_MSG_PUB.GET
2471                            (l_msg_index,
2472                            FND_API.G_FALSE );
2473              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_CTR_PROPERTY_PRE API');
2474              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2475              l_msg_index := l_msg_index + 1;
2476              l_msg_count := l_msg_count - 1;
2477          END LOOP;
2478          RAISE FND_API.G_EXC_ERROR;
2479      END IF;
2480    END IF;
2481    /* Vertical pre -processing  section - Mandatory  */
2482    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
2483      CSI_COUNTER_VUHK.update_ctr_property_pre
2484      (
2485       p_api_version	                => p_api_version
2486       ,p_init_msg_list	             => p_init_msg_list
2487       ,p_commit		                   => p_commit
2488       ,p_validation_level           => p_validation_level
2489       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
2490       ,x_return_status              => x_return_status
2491       ,x_msg_count                  => x_msg_count
2492       ,x_msg_data                   => x_msg_data
2493      );
2494      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2495          l_msg_index := 1;
2496          l_msg_count := x_msg_count;
2497 
2498          WHILE l_msg_count > 0 LOOP
2499              x_msg_data := FND_MSG_PUB.GET
2500                            (l_msg_index,
2501                            FND_API.G_FALSE );
2502              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.UPDATE_CTR_PROPERTY_PRE API');
2503              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2504              l_msg_index := l_msg_index + 1;
2505              l_msg_count := l_msg_count - 1;
2506          END LOOP;
2507          RAISE FND_API.G_EXC_ERROR;
2508      END IF;
2509    END IF;
2510 
2511    -- Start of API Body
2512 
2513    IF p_ctr_properties_tbl.count > 0 THEN
2514        FOR j in p_ctr_properties_tbl.FIRST..p_ctr_properties_tbl.LAST
2515        LOOP
2516           BEGIN
2517              l_Ctr_properties_rec.COUNTER_PROPERTY_ID := p_ctr_properties_tbl(j).COUNTER_PROPERTY_ID;
2518              l_Ctr_properties_rec.counter_id := p_ctr_properties_tbl(j).counter_id;
2519              l_Ctr_properties_rec.NAME := p_ctr_properties_tbl(j).name;
2520              l_Ctr_properties_rec.DESCRIPTION  := p_ctr_properties_tbl(j).DESCRIPTION;
2521              l_Ctr_properties_rec.PROPERTY_DATA_TYPE := p_ctr_properties_tbl(j).PROPERTY_DATA_TYPE;
2522              l_Ctr_properties_rec.IS_NULLABLE  := p_ctr_properties_tbl(j).IS_NULLABLE;
2523              l_Ctr_properties_rec.DEFAULT_VALUE  := p_ctr_properties_tbl(j).DEFAULT_VALUE;
2524              l_Ctr_properties_rec.MINIMUM_VALUE  := p_ctr_properties_tbl(j).MINIMUM_VALUE;
2525              l_Ctr_properties_rec.MAXIMUM_VALUE  := p_ctr_properties_tbl(j).MAXIMUM_VALUE;
2526              l_Ctr_properties_rec.UOM_CODE       := p_ctr_properties_tbl(j).UOM_CODE;
2527              l_Ctr_properties_rec.START_DATE_ACTIVE  := p_ctr_properties_tbl(j).START_DATE_ACTIVE;
2528              l_Ctr_properties_rec.END_DATE_ACTIVE    := p_ctr_properties_tbl(j).END_DATE_ACTIVE;
2529              l_Ctr_properties_rec.PROPERTY_LOV_TYPE  := p_ctr_properties_tbl(j).PROPERTY_LOV_TYPE;
2530              l_Ctr_properties_rec.OBJECT_VERSION_NUMBER := p_ctr_properties_tbl(j).OBJECT_VERSION_NUMBER;
2531              l_Ctr_properties_rec.ATTRIBUTE1     := p_ctr_properties_tbl(j).ATTRIBUTE1;
2532              l_Ctr_properties_rec.ATTRIBUTE2     := p_ctr_properties_tbl(j).ATTRIBUTE2;
2533              l_Ctr_properties_rec.ATTRIBUTE3     := p_ctr_properties_tbl(j).ATTRIBUTE3;
2534              l_Ctr_properties_rec.ATTRIBUTE4     := p_ctr_properties_tbl(j).ATTRIBUTE4;
2535              l_Ctr_properties_rec.ATTRIBUTE5     := p_ctr_properties_tbl(j).ATTRIBUTE5;
2536              l_Ctr_properties_rec.ATTRIBUTE6     := p_ctr_properties_tbl(j).ATTRIBUTE6;
2537              l_Ctr_properties_rec.ATTRIBUTE7     := p_ctr_properties_tbl(j).ATTRIBUTE7;
2538              l_Ctr_properties_rec.ATTRIBUTE8     := p_ctr_properties_tbl(j).ATTRIBUTE8;
2539              l_Ctr_properties_rec.ATTRIBUTE9     := p_ctr_properties_tbl(j).ATTRIBUTE9;
2540              l_Ctr_properties_rec.ATTRIBUTE10    := p_ctr_properties_tbl(j).ATTRIBUTE10;
2541              l_Ctr_properties_rec.ATTRIBUTE11    := p_ctr_properties_tbl(j).ATTRIBUTE11;
2542              l_Ctr_properties_rec.ATTRIBUTE12    := p_ctr_properties_tbl(j).ATTRIBUTE12;
2543              l_Ctr_properties_rec.ATTRIBUTE13    := p_ctr_properties_tbl(j).ATTRIBUTE13;
2544              l_Ctr_properties_rec.ATTRIBUTE14    := p_ctr_properties_tbl(j).ATTRIBUTE14;
2545              l_Ctr_properties_rec.ATTRIBUTE15    := p_ctr_properties_tbl(j).ATTRIBUTE15;
2546              l_Ctr_properties_rec.ATTRIBUTE_CATEGORY  := p_ctr_properties_tbl(j).ATTRIBUTE_CATEGORY;
2547 
2548 
2549              CSI_COUNTER_PVT.update_ctr_property
2550            	 (
2551            	   p_api_version	=> 1.0
2552            	  ,p_init_msg_list	=> p_init_msg_list
2553            	  ,p_commit		=> p_commit
2554            	  ,p_validation_level	=> p_validation_level
2555                   ,p_ctr_properties_rec => l_ctr_properties_rec
2556            	  ,x_return_status	=> x_return_status
2557            	  ,x_msg_count		=> x_msg_count
2558            	  ,x_msg_data		=> x_msg_data
2559            	  );
2560               IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2561                 l_msg_index := 1;
2562                 l_msg_count := x_msg_count;
2563 
2564                 WHILE l_msg_count > 0 LOOP
2565                   x_msg_data := FND_MSG_PUB.GET
2566                            (l_msg_index,
2567                            FND_API.G_FALSE );
2568                   csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.UPDATE_CTR_PROPERTY API');
2569                   csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2570                   l_msg_index := l_msg_index + 1;
2571                   l_msg_count := l_msg_count - 1;
2572                END LOOP;
2573                RAISE FND_API.G_EXC_ERROR;
2574              END IF;
2575           END;
2576        END LOOP;
2577     END IF;
2578 
2579     -- End of API body
2580 
2581    /* Customer post -processing  section - Mandatory  */
2582    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
2583      CSI_COUNTER_CUHK.update_ctr_property_post
2584      (
2585       p_api_version	                => p_api_version
2586       ,p_init_msg_list	             => p_init_msg_list
2587       ,p_commit		                   => p_commit
2588       ,p_validation_level           => p_validation_level
2589       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
2590       ,x_return_status              => x_return_status
2591       ,x_msg_count                  => x_msg_count
2592       ,x_msg_data                   => x_msg_data
2593      );
2594      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2595          l_msg_index := 1;
2596          l_msg_count := x_msg_count;
2597 
2598          WHILE l_msg_count > 0 LOOP
2599              x_msg_data := FND_MSG_PUB.GET
2600                            (l_msg_index,
2601                            FND_API.G_FALSE );
2602              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_CTR_PROPERTY_POST API');
2603              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2604              l_msg_index := l_msg_index + 1;
2605              l_msg_count := l_msg_count - 1;
2606          END LOOP;
2607          RAISE FND_API.G_EXC_ERROR;
2608      END IF;
2609    END IF;
2610    /* Vertical post -processing  section - Mandatory  */
2611    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'V' )  ) THEN
2612      CSI_COUNTER_VUHK.update_ctr_property_post
2613      (
2614       p_api_version	                => p_api_version
2615       ,p_init_msg_list	             => p_init_msg_list
2616       ,p_commit		                   => p_commit
2617       ,p_validation_level           => p_validation_level
2618       ,P_ctr_properties_tbl 	       => P_ctr_properties_tbl
2619       ,x_return_status              => x_return_status
2620       ,x_msg_count                  => x_msg_count
2621       ,x_msg_data                   => x_msg_data
2622      );
2623      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2624          l_msg_index := 1;
2625          l_msg_count := x_msg_count;
2626 
2627          WHILE l_msg_count > 0 LOOP
2628              x_msg_data := FND_MSG_PUB.GET
2629                            (l_msg_index,
2630                            FND_API.G_FALSE );
2631              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_VUHK.UPDATE_CTR_PROPERTY_POST API');
2632              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2633              l_msg_index := l_msg_index + 1;
2634              l_msg_count := l_msg_count - 1;
2635          END LOOP;
2636          RAISE FND_API.G_EXC_ERROR;
2637      END IF;
2638    END IF;
2639 
2640     -- Standard check of p_commit.
2641     IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
2642        COMMIT WORK;
2643     END IF;
2644 
2645 EXCEPTION
2646    WHEN FND_API.G_EXC_ERROR THEN
2647       x_return_status := FND_API.G_RET_STS_ERROR ;
2648       ROLLBACK TO update_ctr_property_pub;
2649       FND_MSG_PUB.Count_And_Get
2650                 (p_count => x_msg_count,
2651                  p_data  => x_msg_data
2652                 );
2653 
2654    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2655       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2656       ROLLBACK TO update_ctr_property_pub;
2657       FND_MSG_PUB.Count_And_Get
2658       		(p_count => x_msg_count,
2659                  p_data  => x_msg_data
2660                 );
2661    WHEN OTHERS THEN
2662       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2663       ROLLBACK TO update_ctr_property_pub;
2664       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2665       THEN
2666          FND_MSG_PUB.Add_Exc_Msg
2667             (G_PKG_NAME,
2668              l_api_name
2669             );
2670        END IF;
2671        FND_MSG_PUB.Count_And_Get
2672             (p_count => x_msg_count,
2673              p_data  => x_msg_data
2674             );
2675 
2676 END update_ctr_property;
2677 
2678 PROCEDURE update_ctr_associations
2679  (
2680    p_api_version               IN     NUMBER
2681   ,p_commit                    IN     VARCHAR2
2682   ,p_init_msg_list             IN     VARCHAR2
2683   ,p_validation_level          IN     NUMBER
2684   ,p_counter_associations_tbl  IN OUT NOCOPY CSI_CTR_DATASTRUCTURES_PUB.counter_associations_tbl
2685   ,x_return_status                OUT    NOCOPY VARCHAR2
2686   ,x_msg_count                    OUT    NOCOPY NUMBER
2687   ,x_msg_data                     OUT    NOCOPY VARCHAR2
2688  )
2689 IS
2690     l_api_name                      CONSTANT VARCHAR2(30)   := 'UPDATE_CTR_ASSOCIATIONS';
2691     l_api_version                   CONSTANT NUMBER         := 1.0;
2692     -- l_debug_level                   NUMBER;
2693     l_flag                          VARCHAR2(1)             := 'N';
2694     l_msg_data                      VARCHAR2(2000);
2695     l_msg_index                     NUMBER;
2696     l_msg_count                     NUMBER;
2697     l_count                         NUMBER;
2698     l_return_message                VARCHAR2(100);
2699 
2700     l_counter_associations_rec      CSI_CTR_DATASTRUCTURES_PUB.counter_associations_rec;
2701 
2702 BEGIN
2703    -- Standard Start of API savepoint
2704    SAVEPOINT update_ctr_associations_pub;
2705 
2706    -- Standard call to check for call compatibility.
2707    IF NOT FND_API.Compatible_API_Call (l_api_version,
2708                                        p_api_version,
2709                                        l_api_name   ,
2710                                        G_PKG_NAME   )
2711    THEN
2712       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2713    END IF;
2714 
2715    -- Initialize message list if p_init_msg_list is set to TRUE.
2716    IF FND_API.to_Boolean(nvl(p_init_msg_list,FND_API.G_FALSE)) THEN
2717       FND_MSG_PUB.initialize;
2718    END IF;
2719 
2720    --  Initialize API return status to success
2721    x_return_status := FND_API.G_RET_STS_SUCCESS;
2722 
2723    -- Read the debug profiles values in to global variable 7197402
2724    CSI_CTR_GEN_UTILITY_PVT.read_debug_profiles;
2725 
2726    -- Check the profile option debug_level for debug message reporting
2727    -- l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
2728 
2729    -- If debug_level = 1 then dump the procedure name
2730    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 0) THEN
2731       csi_ctr_gen_utility_pvt.put_line( 'update_ctr_associations');
2732    END IF;
2733 
2734    -- If the debug level = 2 then dump all the parameters values.
2735    IF (CSI_CTR_GEN_UTILITY_PVT.g_debug_level > 1) THEN
2736       csi_ctr_gen_utility_pvt.put_line( 'update_ctr_associations'     ||
2737                                      p_api_version         ||'-'||
2738                                      p_commit              ||'-'||
2739                                      p_init_msg_list       ||'-'||
2740                                      p_validation_level );
2741       csi_ctr_gen_utility_pvt.dump_counter_associations_tbl(p_counter_associations_tbl);
2742    END IF;
2743 
2744    /* Customer pre -processing  section - Mandatory  */
2745    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'C' )  ) THEN
2746      CSI_COUNTER_CUHK.update_ctr_associations_pre
2747      (
2748        p_api_version	           => p_api_version
2749       ,p_init_msg_list	           => p_init_msg_list
2750       ,p_commit		           => p_commit
2751       ,p_validation_level          => p_validation_level
2752       ,P_counter_associations_tbl  => P_counter_associations_tbl
2753       ,x_return_status              => x_return_status
2754       ,x_msg_count                  => x_msg_count
2755       ,x_msg_data                   => x_msg_data
2756      );
2757      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2758          l_msg_index := 1;
2759          l_msg_count := x_msg_count;
2760 
2761          WHILE l_msg_count > 0 LOOP
2762              x_msg_data := FND_MSG_PUB.GET
2763                            (l_msg_index,
2764                            FND_API.G_FALSE );
2765              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_CTR_ASSOCIATIONS_PRE API');
2766              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2767              l_msg_index := l_msg_index + 1;
2768              l_msg_count := l_msg_count - 1;
2769          END LOOP;
2770          RAISE FND_API.G_EXC_ERROR;
2771      END IF;
2772    END IF;
2773 
2774    /* Vertical pre -processing  section - Mandatory  */
2775    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
2776      CSI_COUNTER_VUHK.update_ctr_associations_pre
2777      (
2778        p_api_version               => p_api_version
2779       ,p_init_msg_list             => p_init_msg_list
2780       ,p_commit                    => p_commit
2781       ,p_validation_level          => p_validation_level
2782       ,P_counter_associations_tbl  => P_counter_associations_tbl
2783       ,x_return_status              => x_return_status
2784       ,x_msg_count                  => x_msg_count
2785       ,x_msg_data                   => x_msg_data
2786      );
2787      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2788          l_msg_index := 1;
2789          l_msg_count := x_msg_count;
2790 
2791          WHILE l_msg_count > 0 LOOP
2792              x_msg_data := FND_MSG_PUB.GET
2793                            (l_msg_index,
2794                            FND_API.G_FALSE );
2795              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_CTR_ASSOCIATIONS_PRE API');
2796              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2797              l_msg_index := l_msg_index + 1;
2798              l_msg_count := l_msg_count - 1;
2799          END LOOP;
2800          RAISE FND_API.G_EXC_ERROR;
2801      END IF;
2802    END IF;
2803 
2804    -- Start of API Body
2805 
2806    IF p_counter_associations_tbl.count > 0 THEN
2807        FOR i in p_counter_associations_tbl.FIRST..p_counter_associations_tbl.LAST
2808        LOOP
2809           BEGIN
2810              l_counter_associations_rec.instance_association_id := p_counter_associations_tbl(i).instance_association_id;
2811              l_counter_associations_rec.COUNTER_ID  := p_counter_associations_tbl(i).counter_id;
2812              l_counter_associations_rec.SOURCE_OBJECT_CODE := p_counter_associations_tbl(i).SOURCE_OBJECT_CODE;
2813              l_counter_associations_rec.SOURCE_OBJECT_ID := p_counter_associations_tbl(i).SOURCE_OBJECT_ID;
2814              l_counter_associations_rec.START_DATE_ACTIVE  := p_counter_associations_tbl(i).START_DATE_ACTIVE ;
2815              l_counter_associations_rec.END_DATE_ACTIVE  := p_counter_associations_tbl(i).END_DATE_ACTIVE;
2816              l_counter_associations_rec.OBJECT_VERSION_NUMBER := p_counter_associations_tbl(i).OBJECT_VERSION_NUMBER;
2817              l_counter_associations_rec.ATTRIBUTE1     := p_counter_associations_tbl(i).ATTRIBUTE1;
2818              l_counter_associations_rec.ATTRIBUTE2     := p_counter_associations_tbl(i).ATTRIBUTE2;
2819              l_counter_associations_rec.ATTRIBUTE3     := p_counter_associations_tbl(i).ATTRIBUTE3;
2820              l_counter_associations_rec.ATTRIBUTE4     := p_counter_associations_tbl(i).ATTRIBUTE4;
2821              l_counter_associations_rec.ATTRIBUTE5     := p_counter_associations_tbl(i).ATTRIBUTE5;
2822              l_counter_associations_rec.ATTRIBUTE6     := p_counter_associations_tbl(i).ATTRIBUTE6;
2823              l_counter_associations_rec.ATTRIBUTE7     := p_counter_associations_tbl(i).ATTRIBUTE7;
2824              l_counter_associations_rec.ATTRIBUTE8     := p_counter_associations_tbl(i).ATTRIBUTE8;
2825              l_counter_associations_rec.ATTRIBUTE9     := p_counter_associations_tbl(i).ATTRIBUTE9;
2826              l_counter_associations_rec.ATTRIBUTE10    := p_counter_associations_tbl(i).ATTRIBUTE10;
2827              l_counter_associations_rec.ATTRIBUTE11    := p_counter_associations_tbl(i).ATTRIBUTE11;
2828              l_counter_associations_rec.ATTRIBUTE12    := p_counter_associations_tbl(i).ATTRIBUTE12;
2829              l_counter_associations_rec.ATTRIBUTE13    := p_counter_associations_tbl(i).ATTRIBUTE13;
2830              l_counter_associations_rec.ATTRIBUTE14    := p_counter_associations_tbl(i).ATTRIBUTE14;
2831              l_counter_associations_rec.ATTRIBUTE15    := p_counter_associations_tbl(i).ATTRIBUTE15;
2832              l_counter_associations_rec.ATTRIBUTE_CATEGORY  := p_counter_associations_tbl(i).ATTRIBUTE_CATEGORY;
2833              l_counter_associations_rec.maint_organization_id := p_counter_associations_tbl(i).maint_organization_id;
2834              l_counter_associations_rec.primary_failure_flag := p_counter_associations_tbl(i).primary_failure_flag;
2835 
2836              CSI_COUNTER_PVT.update_ctr_associations
2837            	 (
2838            	   p_api_version	=>	1.0
2839            	  ,p_init_msg_list	=>	p_init_msg_list
2840            	  ,p_commit		=>	p_commit
2841            	  ,p_validation_level	=>	p_validation_level
2842                   ,p_counter_associations_rec => l_counter_associations_rec
2843            	  ,x_return_status	=>	x_return_status
2844            	  ,x_msg_count		=>	x_msg_count
2845            	  ,x_msg_data		=>	x_msg_data
2846            	 );
2847              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2848                 l_msg_index := 1;
2849                 l_msg_count := x_msg_count;
2850 
2851                 WHILE l_msg_count > 0 LOOP
2852                   x_msg_data := FND_MSG_PUB.GET
2853                            (l_msg_index,
2854                            FND_API.G_FALSE );
2855                   csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_PVT.UPDATE_CTR_ASSOCIATIONS API');
2856                   csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2857                   l_msg_index := l_msg_index + 1;
2858                   l_msg_count := l_msg_count - 1;
2859                 END LOOP;
2860                 RAISE FND_API.G_EXC_ERROR;
2861               END IF;
2862           END;
2863        END LOOP;
2864     END IF;
2865 
2866     -- End of API body
2867 
2868     /* Customer post -processing  section - Mandatory  */
2869    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'A', 'C' )  ) THEN
2870      CSI_COUNTER_CUHK.update_ctr_associations_post
2871      (
2872        p_api_version               => p_api_version
2873       ,p_init_msg_list             => p_init_msg_list
2874       ,p_commit                    => p_commit
2875       ,p_validation_level          => p_validation_level
2876       ,P_counter_associations_tbl  => P_counter_associations_tbl
2877       ,x_return_status              => x_return_status
2878       ,x_msg_count                  => x_msg_count
2879       ,x_msg_data                   => x_msg_data
2880      );
2881      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2882          l_msg_index := 1;
2883          l_msg_count := x_msg_count;
2884 
2885          WHILE l_msg_count > 0 LOOP
2886              x_msg_data := FND_MSG_PUB.GET
2887                            (l_msg_index,
2888                            FND_API.G_FALSE );
2889              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_CTR_ASSOCIATIONS_POST API');
2890              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2891              l_msg_index := l_msg_index + 1;
2892              l_msg_count := l_msg_count - 1;
2893          END LOOP;
2894          RAISE FND_API.G_EXC_ERROR;
2895      END IF;
2896    END IF;
2897 
2898    /* Vertical pre -processing  section - Mandatory  */
2899    IF  ( JTF_USR_HKS.Ok_to_execute(  G_PKG_NAME, l_api_name, 'B', 'V' )  ) THEN
2900      CSI_COUNTER_VUHK.update_ctr_associations_post
2901      (
2902        p_api_version               => p_api_version
2903       ,p_init_msg_list             => p_init_msg_list
2904       ,p_commit                    => p_commit
2905       ,p_validation_level          => p_validation_level
2906       ,P_counter_associations_tbl  => P_counter_associations_tbl
2907       ,x_return_status              => x_return_status
2908       ,x_msg_count                  => x_msg_count
2909       ,x_msg_data                   => x_msg_data
2910      );
2911      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2912          l_msg_index := 1;
2913          l_msg_count := x_msg_count;
2914 
2915          WHILE l_msg_count > 0 LOOP
2916              x_msg_data := FND_MSG_PUB.GET
2917                            (l_msg_index,
2918                            FND_API.G_FALSE );
2919              csi_ctr_gen_utility_pvt.put_line( ' Error from CSI_COUNTER_CUHK.UPDATE_CTR_ASSOCIATIONS_POST API');
2920              csi_ctr_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
2921              l_msg_index := l_msg_index + 1;
2922              l_msg_count := l_msg_count - 1;
2923          END LOOP;
2924          RAISE FND_API.G_EXC_ERROR;
2925      END IF;
2926    END IF;
2927 
2928     -- Standard check of p_commit.
2929     IF FND_API.To_Boolean(nvl(p_commit,FND_API.G_FALSE)) THEN
2930        COMMIT WORK;
2931     END IF;
2932 
2933 EXCEPTION
2934    WHEN FND_API.G_EXC_ERROR THEN
2935       x_return_status := FND_API.G_RET_STS_ERROR ;
2936       ROLLBACK TO update_ctr_associations_pub;
2937       FND_MSG_PUB.Count_And_Get
2938                 (p_count => x_msg_count,
2939                  p_data  => x_msg_data
2940                 );
2941 
2942    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2943       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2944       ROLLBACK TO update_ctr_associations_pub;
2945       FND_MSG_PUB.Count_And_Get
2946       		(p_count => x_msg_count,
2947                  p_data  => x_msg_data
2948                 );
2949    WHEN OTHERS THEN
2950       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2951       ROLLBACK TO update_ctr_associations_pub;
2952       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2953       THEN
2954          FND_MSG_PUB.Add_Exc_Msg
2955             (G_PKG_NAME,
2956              l_api_name
2957             );
2958        END IF;
2959        FND_MSG_PUB.Count_And_Get
2960             (p_count => x_msg_count,
2961              p_data  => x_msg_data
2962             );
2963 
2964 END update_ctr_associations;
2965 
2966 
2967 
2968 END CSI_COUNTER_PUB;