DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_SERVICE_CONTRACTS_INT

Source


1 PACKAGE BODY ASO_service_contracts_INT as
2 /* $Header: asoioksb.pls 120.2 2005/10/21 18:12:48 skulkarn ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_service_contracts_INT
5 -- Purpose          :
6 -- History          :
7 -- 				10/18/2002 hyang - 2633507 performance fix
8 --				10/21/2002 hyang - fix GSSC warning about default parameter values
9 -- NOTE             :
10 -- End of Comments
11 
12 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_service_contracts_INT';
13 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asoioksb.pls';
14 
15 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
16 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
17 
18 Procedure Get_service_attributes
19 	   (
20 	P_Api_Version_Number	  IN  Number,
21         P_init_msg_list	  IN  Varchar2  := FND_API.G_FALSE,
22 	 P_Qte_Line_Rec     IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type,
23         P_Qte_Line_Dtl_tbl  IN    ASO_QUOTE_PUB.Qte_Line_Dtl_tbl_Type,
24          X_msg_Count       OUT NOCOPY /* file.sql.39 change */    Number,
25         X_msg_Data		  OUT NOCOPY /* file.sql.39 change */    Varchar2,
26         X_Return_Status	  OUT NOCOPY /* file.sql.39 change */    Varchar2
27          	  )
28 IS
29 
30 /* 2633507 - hyang: using cursor variable and base table */
31   CURSOR C_item1(inv1 NUMBER, lc_organization_id NUMBER) IS
32                 select SERVICEABLE_PRODUCT_FLAG
33       		from MTL_SYSTEM_ITEMS_B
34       		where inventory_item_id = inv1
35       		and organization_id = lc_organization_id;
36  CURSOR C_qln(c_qln_id NUMBER) IS
37              SELECT b.inventory_item_id,b.organization_id,a.cust_account_id
38 	     FROM aso_quote_headers_all a,aso_quote_lines_all b
39 	     WHERE b.quote_line_id = c_qln_id and
40 	     a.quote_header_id=b.quote_header_id;
41 CURSOR C_get_cust IS
42             SELECT cust_account_id
43 	     FROM aso_quote_headers_all
44 	     WHERE quote_header_id= P_Qte_Line_Rec.quote_header_id;
45 /*
46 CURSOR C_cs_item(cs_prd_id NUMBER) IS
47 SELECT  a.inventory_item_id
48 FROM
49 CS_CUSTOMER_PRODUCTS_All a, mtl_system_items_kfv b
50 WHERE  a.inventory_item_id   = b.inventory_item_id
51   AND  a.customer_product_id = cs_prd_id
52   AND  b.organization_id     = ( SELECT  cs_std.get_item_valdn_orgzn_id  FROM DUAL ) ;
53 */
54 
55 CURSOR C_cs_item(p_instance_id NUMBER, cs_org_id NUMBER) IS
56 SELECT  a.inventory_item_id
57 FROM
58 csi_item_instances a, mtl_system_items_b b
59 WHERE  a.inventory_item_id   = b.inventory_item_id
60   AND  a.instance_id = p_instance_id
61   AND  b.organization_id     = cs_org_id ;
62 
63 CURSOR C_ord_item(ord_line_id NUMBER) IS
64 	     SELECT  inventory_item_id
65              FROM  oe_order_lines_All
66 	     WHERE  line_id=ord_line_id;
67 CURSOR C_cust_id (Quote_hd_id NUMBER)IS
68              SELECT cust_account_id
69 	     FROM aso_quote_headers_all
70 	     WHERE quote_header_id= Quote_hd_id;
71   l_api_version_number NUMBER := 1.0;
72   l_api_name VARCHAR2(50) := 'Get_service_attributes';
73   l_inventory_item_id NUMBER ;
74   l_organization_id   NUMBER;
75   l_cust_account_id   NUMBER;
76   l_serviceable_flag  VARCHAR2(1);
77   l_check_service_rec ASO_SERVICE_CONTRACTS_INT.CHECK_SERVICE_REC_TYPE;
78   l_Available_YN VARCHAR2(1);
79   l_cs_org_id number;
80 BEGIN
81    -- Standard Start of API savepoint
82       SAVEPOINT GET_SERVICE_ATTRIBUTES_PVT;
83 
84       aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
85 
86       -- Standard call to check for call compatibility.
87       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
88                          	           p_api_version_number,
89                                            l_api_name,
90                                            G_PKG_NAME)
91       THEN
92           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
93       END IF;
94 
95 
96       -- Initialize message list if p_init_msg_list is set to TRUE.
97       IF FND_API.to_Boolean( p_init_msg_list )
98       THEN
99           FND_MSG_PUB.initialize;
100       END IF;
101 
102       -- Debug Message
103 
104       -- Initialize API return status to SUCCESS
105       x_return_status := FND_API.G_RET_STS_SUCCESS;
106 
107       --
108       -- API body
109       --
110 
111       -- ******************************************************************
112       -- Validate Environment
113       -- ******************************************************************
114       IF FND_GLOBAL.User_Id IS NULL
115       THEN
116           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
117           THEN
118               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
119               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
120               FND_MSG_PUB.ADD;
121           END IF;
122           RAISE FND_API.G_EXC_ERROR;
123       END IF;
124   OPEN C_cust_id(P_Qte_Line_rec.quote_header_id);
125                            FETCH C_cust_id INTO l_cust_account_id;
126 
127 					  IF aso_debug_pub.g_debug_flag = 'Y' THEN
128                                aso_debug_pub.add('Get Service Attr:  cust Acct id'||l_cust_account_id);
129                            END IF;
130 
131                            IF C_cust_id%NOTFOUND THEN
132                            l_cust_account_id := NULL;
133                            END IF;
134                            CLOSE C_cust_id;
135 
136  FOR i in 1..P_Qte_Line_Dtl_tbl.count LOOP
137        IF P_Qte_Line_Dtl_tbl(i).SERVICE_REF_TYPE_CODE = 'QUOTE' THEN
138        		OPEN C_qln( P_Qte_Line_Dtl_tbl(i).service_ref_line_id);
139       		 FETCH C_qln INTO l_inventory_item_id,l_organization_id,l_cust_account_id;
140 
141 IF aso_debug_pub.g_debug_flag = 'Y' THEN
142 
143     aso_debug_pub.add('Get Service Attr:ref code QUOTE inv id '||l_inventory_item_id, 1, 'Y');
144     aso_debug_pub.add('Get Service Attr:ref code QUOTE orgnization id '||l_organization_id , 1, 'Y');
145     aso_debug_pub.add('Get Service Attr:ref code QUOTE cust id '||l_cust_account_id, 1, 'Y');
146 
147 END IF;
148 
149        		IF C_qln%NOTFOUND THEN
150       			CLOSE C_qln;
151 			x_return_status := FND_API.G_RET_STS_ERROR;
152         		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
153                			FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_INFO');
154                			FND_MESSAGE.Set_Token('COLUMN','SERVICE_REF_LINE_ID', FALSE);
155                			FND_MSG_PUB.Add;
156         		END IF;
157        		 	raise FND_API.G_EXC_ERROR;
158        		 ELSE
159 		 	CLOSE C_qln;
160          	 	OPEN C_item1( l_inventory_item_id,l_organization_id);
161         		 FETCH C_item1 INTO l_serviceable_flag;
162 
163 IF aso_debug_pub.g_debug_flag = 'Y' THEN
164     aso_debug_pub.add('Get Service Attr:ref code QUOTE serviceable flag '||l_serviceable_flag, 1, 'Y');
165 END IF;
166 
167          		IF C_item1%NOTFOUND OR l_serviceable_flag <> 'Y' THEN
168 				CLOSE C_item1;
169 				x_return_status := FND_API.G_RET_STS_ERROR;
170 	                 	 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
171                				FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO1');
172                				--FND_MESSAGE.Set_Token('COLUMN','SERVICE_REF_LINE_ID', FALSE);
173                				FND_MSG_PUB.Add;
174         			END IF;
175 				 raise FND_API.G_EXC_ERROR;
176 
177         		END IF;
178 			CLOSE C_item1;
179 
180 		    IF aso_debug_pub.g_debug_flag = 'Y' THEN
181 
182                   aso_debug_pub.add('Get Service Attr:product_item_id '||l_inventory_item_id, 1, 'Y');
183                   aso_debug_pub.add('Get Service Attr:service_item_id '||P_Qte_Line_rec.inventory_item_id, 1, 'Y');
184                   aso_debug_pub.add('Get Service Attr:customer_id '||l_cust_account_id, 1, 'Y');
185 
186 		    END IF;
187 
188 			l_check_service_rec.product_item_id := l_inventory_item_id;
189 			l_check_service_rec.service_item_id := P_Qte_Line_rec.inventory_item_id;
190 			l_check_service_rec.customer_id :=  l_cust_account_id;
191 
192 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
193                    aso_debug_pub.add('Get Service Attr:ref code QUOTE before Is Service '||l_serviceable_flag, 1, 'Y');
194                END IF;
195 
196 			ASO_SERVICE_CONTRACTS_INT.Is_Service_Available(
197         					P_Api_Version_Number	=> P_Api_Version_Number ,
198         					P_init_msg_list	=> p_init_msg_list,
199 						   X_msg_Count     => X_msg_count ,
200         					X_msg_Data	=> X_msg_data	 ,
201         					X_Return_Status	=> X_return_status  ,
202 						p_check_service_rec => l_check_service_rec,
203 						X_Available_YN	    => l_Available_YN
204 					  );
205 
206  IF aso_debug_pub.g_debug_flag = 'Y' THEN
207      aso_debug_pub.add('Get Service Attr:ref code QUOTE after  Is Service '||l_Available_YN);
208  END IF;
209 
210 			IF l_Available_YN = 'N' THEN
211 				 x_return_status := FND_API.G_RET_STS_ERROR;
212 			  	 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
213                				FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO2');
214                				--FND_MESSAGE.Set_Token('COLUMN','SERVICE_REF_LINE_ID', FALSE);
215                				FND_MSG_PUB.Add;
216         			END IF;
217 				 raise FND_API.G_EXC_ERROR;
218 			END IF;
219 		END IF;
220 	ELSIF  P_Qte_Line_Dtl_tbl(i).SERVICE_REF_TYPE_CODE = 'CUSTOMER_PRODUCT' THEN
221 
222 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
223 
224           aso_debug_pub.add('Get Service Attr:SERVICE_REF_TYPE_CODE CUSTOMER_PRODUCT');
225           aso_debug_pub.add('Get Service Attr: CUSTOMER_PRODUCT inv id'||P_Qte_Line_rec.inventory_item_id);
226           aso_debug_pub.add('Get Service Attr: CUSTOMER_PRODUCT organization id'||P_Qte_Line_rec.organization_id);
227           aso_debug_pub.add('Get Service Attr: CUSTOMER_PRODUCT service ref line id'||P_Qte_Line_Dtl_tbl(i).SERVICE_REF_LINE_ID, 1, 'Y');
228 
229       END IF;
230 
231                             l_cs_org_id := cs_std.get_item_valdn_orgzn_id;
232 
233 		                  OPEN C_cs_item( P_Qte_Line_Dtl_tbl(i).SERVICE_REF_LINE_ID, l_cs_org_id);
234 		                  FETCH C_cs_item INTO l_inventory_item_id;
235 			                 IF C_cs_item%NOTFOUND THEN
236 				                CLOSE C_cs_item;
237 				                x_return_status := FND_API.G_RET_STS_ERROR;
238 				                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
239                				             FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO3');
240                				--FND_MESSAGE.Set_Token('COLUMN','INSTALLBASE', FALSE);
241                				             FND_MSG_PUB.Add;
242         			                 END IF;
243 				                raise FND_API.G_EXC_ERROR;
244 		 	                END IF;
245 		                  CLOSE C_cs_item;
246 		                  l_check_service_rec.product_item_id := l_inventory_item_id;
247 		                  l_check_service_rec.service_item_id := P_Qte_Line_rec.inventory_item_id;
248 		                  l_check_service_rec.customer_id :=  l_cust_account_id;
249 		                  ASO_SERVICE_CONTRACTS_INT.Is_Service_Available(
250         					P_Api_Version_Number	=> 1.0 ,
251         					P_init_msg_list	=> p_init_msg_list,
252 						      X_msg_Count     => X_msg_count ,
253         					X_msg_Data	=> X_msg_data	 ,
254         					X_Return_Status	=> X_return_status  ,
255 						p_check_service_rec => l_check_service_rec,
256 						X_Available_YN	    => l_Available_YN
257 					       );
258 			                 IF l_Available_YN = 'N' THEN
259 				                x_return_status := FND_API.G_RET_STS_ERROR;
260 			  	                  IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
261                				         FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO2');
262                				--FND_MESSAGE.Set_Token('COLUMN','SERVICE_REF_LINE_ID', FALSE);
263                				         FND_MSG_PUB.Add;
264         			               END IF;
265 				                raise FND_API.G_EXC_ERROR;
266 			                 END IF;
267 		       -- END IF;
268 	ELSIF P_Qte_Line_Dtl_tbl(i).SERVICE_REF_TYPE_CODE = 'ORDER' THEN
269 
270 IF aso_debug_pub.g_debug_flag = 'Y' THEN
271 
272     aso_debug_pub.add('Get Service Attr:SERVICE_REF_TYPE_CODE ORDER', 1, 'Y');
273     aso_debug_pub.add('Get Service Attr: ORDER inv id'||P_Qte_Line_rec.inventory_item_id, 1, 'Y');
274     aso_debug_pub.add('Get Service Attr: ORDER organization id'||P_Qte_Line_rec.organization_id, 1, 'Y');
275     aso_debug_pub.add('Get Service Attr: ORDER service ref line id'||P_Qte_Line_Dtl_tbl(i).SERVICE_REF_LINE_ID, 1, 'Y');
276 
277 END IF;
278 
279 
280 		 OPEN C_ord_item( P_Qte_Line_Dtl_tbl(i).SERVICE_REF_LINE_ID);
281 		 FETCH  C_ord_item INTO  l_inventory_item_id;
282 			IF C_ord_item%NOTFOUND THEN
283 				CLOSE C_ord_item;
284 				x_return_status := FND_API.G_RET_STS_ERROR;
285 				IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
286                				FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO3');
287                				--FND_MESSAGE.Set_Token('COLUMN','ORDER_LINE_ID', FALSE);
288                				FND_MSG_PUB.Add;
289         			END IF;
290 				 raise FND_API.G_EXC_ERROR;
291 		 	 END IF;
292 		CLOSE C_ord_item;
293 		l_check_service_rec.product_item_id := l_inventory_item_id;
294 		l_check_service_rec.service_item_id := P_Qte_Line_rec.inventory_item_id;
295 		l_check_service_rec.customer_id :=  l_cust_account_id;
296 		ASO_SERVICE_CONTRACTS_INT.Is_Service_Available(
297         						P_Api_Version_Number	=> 1.0 ,
298         					P_init_msg_list	=> p_init_msg_list,
299 						X_msg_Count     => X_msg_count ,
300         					X_msg_Data	=> X_msg_data	 ,
301         					X_Return_Status	=> X_return_status  ,
302 						p_check_service_rec => l_check_service_rec,
303 						X_Available_YN	    => l_Available_YN
304 					   );
305 			IF l_Available_YN = 'N' THEN
306 				 x_return_status := FND_API.G_RET_STS_ERROR;
307 			  	 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
308                				FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_SRV_INFO2');
309                				--FND_MESSAGE.Set_Token('COLUMN','SERVICE_REF_LINE_ID', FALSE);
310                				FND_MSG_PUB.Add;
311         			END IF;
312 				 raise FND_API.G_EXC_ERROR;
313 			END IF;
314 		--END IF;
315 	END IF;-- If Service_ref_type_code
316 
317     END LOOP;
318 
319 
320 
321 
322 
323       -- Check return status from the above procedure call
324       IF x_return_status = FND_API.G_RET_STS_ERROR then
325           raise FND_API.G_EXC_ERROR;
326       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
327           raise FND_API.G_EXC_UNEXPECTED_ERROR;
328       END IF;
329 
330       --
331       -- End of API body.
332       --
333 
334    /*   -- Standard check for p_commit
335       IF FND_API.to_Boolean( p_commit )
336       THEN
337           COMMIT WORK;
338       END IF;
339    */
340 
341 
342 
343       -- Standard call to get message count and if count is 1, get message info.
344       FND_MSG_PUB.Count_And_Get
345       (  p_count          =>   x_msg_count,
346          p_data           =>   x_msg_data
347       );
348 
349     EXCEPTION
350 	  WHEN FND_API.G_EXC_ERROR THEN
351 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
352 		   P_API_NAME => L_API_NAME
353 		  ,P_PKG_NAME => G_PKG_NAME
354 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
355 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
356 		  ,P_SQLCODE => SQLCODE
357 		  ,P_SQLERRM => SQLERRM
358 		  ,X_MSG_COUNT => X_MSG_COUNT
359 		  ,X_MSG_DATA => X_MSG_DATA
360 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
361 
362 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
363 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
364 		   P_API_NAME => L_API_NAME
365 		  ,P_PKG_NAME => G_PKG_NAME
366 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
367 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
368 		  ,P_SQLCODE => SQLCODE
369 		  ,P_SQLERRM => SQLERRM
370 		  ,X_MSG_COUNT => X_MSG_COUNT
371 		  ,X_MSG_DATA => X_MSG_DATA
372 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
373 
374 	  WHEN OTHERS THEN
375 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
376 		   P_API_NAME => L_API_NAME
377 		  ,P_PKG_NAME => G_PKG_NAME
378 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
379 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
380 		  ,P_SQLCODE => SQLCODE
381 		  ,P_SQLERRM => SQLERRM
382 		  ,X_MSG_COUNT => X_MSG_COUNT
383 		  ,X_MSG_DATA => X_MSG_DATA
384 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
385 END  Get_service_attributes;
386 
387 
388 
389 
390 
391 Procedure Get_Duration
392 	   (
393 	P_Api_Version_Number	  IN  Number,
394         P_init_msg_list	  IN  Varchar2 :=  FND_API.G_FALSE,
395 	X_msg_Count       OUT NOCOPY /* file.sql.39 change */    Number,
396         X_msg_Data		  OUT NOCOPY /* file.sql.39 change */    Varchar2,
397         X_Return_Status	  OUT NOCOPY /* file.sql.39 change */    Varchar2,
398 	P_customer_id 	  IN  Number,
399 	P_system_id 	  IN  Number,
400 	P_Service_Duration  IN	Number,
401         P_service_period    IN	Varchar2,
402 	P_coterm_checked_yn IN	Varchar2 := FND_API.G_FALSE,
403 	P_start_date 	  IN  Date,
404 	P_end_date 		  IN  Date,
405 	X_service_duration  OUT NOCOPY /* file.sql.39 change */    Number,
406 	X_service_period 	  OUT NOCOPY /* file.sql.39 change */    Varchar2,
407         X_new_end_date 	  OUT NOCOPY /* file.sql.39 change */    Date
408 				 	  )
409 IS
410   l_api_version_number NUMBER := 1.0;
411   l_api_name VARCHAR2(50)     := 'Get_Duration';
412 
413 
414 BEGIN
415    -- Standard Start of API savepoint
416       SAVEPOINT GET_DURATION_PUB;
417 
418 	 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
419 
420       -- Standard call to check for call compatibility.
421       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
422                          	           p_api_version_number,
423                                            l_api_name,
424                                            G_PKG_NAME)
425       THEN
426           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
427       END IF;
428 
429 
430       -- Initialize message list if p_init_msg_list is set to TRUE.
431       IF FND_API.to_Boolean( p_init_msg_list )
432       THEN
433           FND_MSG_PUB.initialize;
434       END IF;
435 
436 
437       -- Initialize API return status to SUCCESS
438       x_return_status := FND_API.G_RET_STS_SUCCESS;
439 
440       --
441       -- API body
442       --
443 
444       -- ******************************************************************
445       -- Validate Environment
446       -- ******************************************************************
447       IF FND_GLOBAL.User_Id IS NULL
448       THEN
449           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
450           THEN
451               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
452               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
453               FND_MSG_PUB.ADD;
454           END IF;
455           RAISE FND_API.G_EXC_ERROR;
456       END IF;
457 
458     IF aso_debug_pub.g_debug_flag = 'Y' THEN
459 
460 	   aso_utility_pvt.print_login_info();
461         aso_debug_pub.add('ASO_service_contracts_INT.Get_Duration: Before call OKS_OMINT_PUB.Get Duration.',1,'Y');
462         aso_debug_pub.add('Get Duration: p_customer_id: '||p_customer_id, 1, 'Y');
463         aso_debug_pub.add('Get Duration: p_system_id: '||p_system_id, 1, 'Y');
464         aso_debug_pub.add('Get Duration: p_service_duration: '||p_service_duration, 1, 'Y');
465         aso_debug_pub.add('Get Duration: p_service_period: '||p_service_period, 1, 'Y');
466         aso_debug_pub.add('Get Duration: p_coterm_checked_yn: '||p_coterm_checked_yn, 1, 'Y');
467         aso_debug_pub.add('Get Duration: p_start_date: '||p_start_date, 1, 'Y');
468         aso_debug_pub.add('Get Duration: p_end_date: '||p_end_date, 1, 'Y');
469 
470     END IF;
471 
472 
473        OKS_OMINT_PUB.Get_Duration(
474 	P_Api_Version 	=> 1.0 ,
475      P_init_msg_list	 => P_init_msg_list,
476 	X_msg_Count     => X_msg_count ,
477      X_msg_Data	=> X_msg_data	 ,
478      X_Return_Status	=> X_return_status  ,
479 	P_customer_id 	=> p_customer_id  ,
480 	P_system_id 	=> p_system_id  ,
481 	P_Service_Duration => p_service_duration ,
482      P_service_period   => p_service_period ,
483 	P_coterm_checked_yn => p_coterm_checked_yn,
484 	P_start_date 	 => p_start_date ,
485 	P_end_date 	 => p_end_date  ,
486 	X_service_duration => x_service_duration ,
487 	X_service_period   => x_service_period  ,
488      X_new_end_date 	  => x_new_end_date) ;
489 
490 
491     IF aso_debug_pub.g_debug_flag = 'Y' THEN
492 
493         aso_debug_pub.add('Get Duration: After Call to OKS_OMINT_PUB.Get_Duration: X_return_status: '||X_return_status, 1, 'Y');
494         aso_debug_pub.add('Get Duration: x_service_duration: '||x_service_duration, 1, 'Y');
495         aso_debug_pub.add('Get Duration: x_service_period: '||x_service_period, 1, 'Y');
496         aso_debug_pub.add('Get Duration: x_new_end_date: '||x_new_end_date, 1, 'Y');
497         aso_utility_pvt.print_login_info();
498 
499     END IF;
500 
501 
502       -- Check return status from the above procedure call
503       IF x_return_status = FND_API.G_RET_STS_ERROR then
504           raise FND_API.G_EXC_ERROR;
505       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
506           raise FND_API.G_EXC_UNEXPECTED_ERROR;
507       END IF;
508 
509       --
510       -- End of API body.
511       --
512 
513    /*   -- Standard check for p_commit
514       IF FND_API.to_Boolean( p_commit )
515       THEN
516           COMMIT WORK;
517       END IF;
518    */
519 
520 
521 
522       -- Standard call to get message count and if count is 1, get message info.
523       FND_MSG_PUB.Count_And_Get
524       (  p_count          =>   x_msg_count,
525          p_data           =>   x_msg_data
526       );
527 
528       EXCEPTION
529           WHEN FND_API.G_EXC_ERROR THEN
530               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
531                    P_API_NAME => L_API_NAME
532                   ,P_PKG_NAME => G_PKG_NAME
533                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
534                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
535                   ,X_MSG_COUNT => X_MSG_COUNT
536                   ,X_MSG_DATA => X_MSG_DATA
537                   ,X_RETURN_STATUS => X_RETURN_STATUS);
538 
539           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
540               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
541                    P_API_NAME => L_API_NAME
542                   ,P_PKG_NAME => G_PKG_NAME
543                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
544                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
545                   ,X_MSG_COUNT => X_MSG_COUNT
546                   ,X_MSG_DATA => X_MSG_DATA
547                   ,X_RETURN_STATUS => X_RETURN_STATUS);
548 
549           WHEN OTHERS THEN
550               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
551                    P_API_NAME => L_API_NAME
552                   ,P_PKG_NAME => G_PKG_NAME
553                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
554                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
555                   ,X_MSG_COUNT => X_MSG_COUNT
556                   ,X_MSG_DATA => X_MSG_DATA
557                   ,X_RETURN_STATUS => X_RETURN_STATUS);
558 END Get_Duration;
559 
560 
561 
562 
563 Procedure Is_Service_Available
564    	 (
565 	P_Api_Version_Number	  IN  Number,
566 	P_init_msg_list	  IN  Varchar2 := FND_API.G_FALSE,
567 	X_msg_Count	  	  OUT NOCOPY /* file.sql.39 change */    Number,
568 	X_msg_Data	  	  OUT NOCOPY /* file.sql.39 change */    Varchar2,
569 	X_Return_Status	  OUT NOCOPY /* file.sql.39 change */    Varchar2,
570 	p_check_service_rec IN	   CHECK_SERVICE_REC_TYPE,
571 	X_Available_YN	  OUT NOCOPY /* file.sql.39 change */    Varchar2
572 				   	  )
573 IS
574   l_api_version_number NUMBER := 1.0;
575   l_api_name VARCHAR2(50) := 'Is_Service_Available';
576 
577   l_check_service_rec OKS_OMINT_PUB.CHECK_SERVICE_REC_TYPE;
578 BEGIN
579    -- Standard Start of API savepoint
580       SAVEPOINT IS_SERVICE_AVAILABLE_PUB;
581 
582       aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
583 
584       -- Standard call to check for call compatibility.
585       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
586                          	           p_api_version_number,
587                                            l_api_name,
588                                            G_PKG_NAME)
589       THEN
590           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
591       END IF;
592 
593 
594       -- Initialize message list if p_init_msg_list is set to TRUE.
595       IF FND_API.to_Boolean( p_init_msg_list )
596       THEN
597           FND_MSG_PUB.initialize;
598       END IF;
599 
600 
601       -- Initialize API return status to SUCCESS
602       x_return_status := FND_API.G_RET_STS_SUCCESS;
603 
604       --
605       -- API body
606       --
607 
608       -- ******************************************************************
609       -- Validate Environment
610       -- ******************************************************************
611       IF FND_GLOBAL.User_Id IS NULL
612       THEN
613           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
614           THEN
615               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
616               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
617               FND_MSG_PUB.ADD;
618           END IF;
619           RAISE FND_API.G_EXC_ERROR;
620       END IF;
621 
622 	IF aso_debug_pub.g_debug_flag = 'Y' THEN
623 
624      aso_debug_pub.add('ASO_SER_INT:IS_service_available: p_check_service_rec.product_item_id '|| p_check_service_rec.product_item_id, 1, 'N');
625  aso_debug_pub.add('ASO_SER_INT:IS_service_available: p_check_service_rec.customer_id '|| p_check_service_rec.customer_id, 1, 'N');
626 aso_debug_pub.add('ASO_SER_INT:IS_service_available: p_check_service_rec.request_date '|| p_check_service_rec.request_date, 1, 'N');
627 aso_debug_pub.add('ASO_SER_INT:IS_service_available: p_check_service_rec.service_item_id '|| p_check_service_rec.service_item_id, 1, 'N');
628 aso_debug_pub.add('ASO_SER_INT:IS_service_available: p_check_service_rec.product_revision '|| p_check_service_rec.product_revision, 1, 'N');
629 
630      END IF;
631 
632 
633 -- map quote rec to oks record type
634 	IF p_check_service_rec.product_item_id = FND_API.G_MISS_NUM THEN
635 	  l_check_service_rec.product_item_id := NULL;
636      ELSE
637      l_check_service_rec.product_item_id := p_check_service_rec.product_item_id;
638 	END IF;
639       IF p_check_service_rec.customer_id = FND_API.G_MISS_NUM THEN
640        l_check_service_rec.customer_id := NULL;
641      ELSE
642      l_check_service_rec.customer_id := p_check_service_rec.customer_id;
643      END IF;
644      IF p_check_service_rec.service_item_id = FND_API.G_MISS_NUM THEN
645        l_check_service_rec.service_item_id := NULL;
646      ELSE
647      l_check_service_rec.service_item_id := p_check_service_rec.service_item_id;
648      END IF;
649      IF p_check_service_rec.product_revision = FND_API.G_MISS_CHAR THEN
650        l_check_service_rec.product_revision := NULL;
651      ELSE
652          l_check_service_rec.product_revision := p_check_service_rec.product_revision;
653      END IF;
654      IF p_check_service_rec.request_date = FND_API.G_MISS_DATE THEN
655        l_check_service_rec.request_date := NULL;
656      ELSE
657          l_check_service_rec.request_date := p_check_service_rec.request_date;
658      END IF;
659 
660 /*
661       l_check_service_rec.product_item_id := p_check_service_rec.product_item_id;
662       l_check_service_rec.service_item_id := p_check_service_rec.service_item_id;
663       l_check_service_rec.customer_id := p_check_service_rec.customer_id;
664       l_check_service_rec.product_revision:=p_check_service_rec.product_revision;
665       l_check_service_rec.request_date := p_check_service_rec.request_date;
666 */
667 
668       IF aso_debug_pub.g_debug_flag = 'Y' THEN
669          aso_debug_pub.add('Before Calling OKS_OMINT_PUB.Is_Service_Available ',1,'Y');
670          aso_utility_pvt.print_login_info();
671       END IF;
672 
673        OKS_OMINT_PUB.Is_Service_Available(
674         P_Api_Version	=> 1.0 ,
675         P_init_msg_list	=> p_init_msg_list,
676 	X_msg_Count     => X_msg_count ,
677         X_msg_Data	=> X_msg_data	 ,
678         X_Return_Status	=> X_return_status  ,
679 	p_check_service_rec => l_check_service_rec,
680 	X_Available_YN	    => X_Available_YN	  );
681 
682       IF aso_debug_pub.g_debug_flag = 'Y' THEN
683         aso_debug_pub.add('After Calling OKS_OMINT_PUB.Is_Service_Available ',1,'Y');
684          aso_utility_pvt.print_login_info();
685       END IF;
686 
687 
688       -- Check return status from the above procedure call
689       IF x_return_status = FND_API.G_RET_STS_ERROR then
690           raise FND_API.G_EXC_ERROR;
691       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
692           raise FND_API.G_EXC_UNEXPECTED_ERROR;
693       END IF;
694 
695       --
696       -- End of API body.
697       --
698 
699    /*   -- Standard check for p_commit
700       IF FND_API.to_Boolean( p_commit )
701       THEN
702           COMMIT WORK;
703       END IF;
704     */
705 
706 
707       -- Standard call to get message count and if count is 1, get message info.
708       FND_MSG_PUB.Count_And_Get
709       (  p_count          =>   x_msg_count,
710          p_data           =>   x_msg_data
711       );
712 
713       EXCEPTION
714           WHEN FND_API.G_EXC_ERROR THEN
715               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
716                    P_API_NAME => L_API_NAME
717                   ,P_PKG_NAME => G_PKG_NAME
718                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
719                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
720                   ,X_MSG_COUNT => X_MSG_COUNT
721                   ,X_MSG_DATA => X_MSG_DATA
722                   ,X_RETURN_STATUS => X_RETURN_STATUS);
723 
724           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
725               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
726                    P_API_NAME => L_API_NAME
727                   ,P_PKG_NAME => G_PKG_NAME
728                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
729                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
730                   ,X_MSG_COUNT => X_MSG_COUNT
731                   ,X_MSG_DATA => X_MSG_DATA
732                   ,X_RETURN_STATUS => X_RETURN_STATUS);
733 
734           WHEN OTHERS THEN
735               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
736                    P_API_NAME => L_API_NAME
737                   ,P_PKG_NAME => G_PKG_NAME
738                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
739                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
740                   ,X_MSG_COUNT => X_MSG_COUNT
741                   ,X_MSG_DATA => X_MSG_DATA
742                   ,X_RETURN_STATUS => X_RETURN_STATUS);
743 
744 END Is_Service_Available;
745 
746 
747 PROCEDURE Available_Services(
748 	P_Api_Version_number	  IN   Number,
749 	P_init_msg_list	  IN   Varchar2 := FND_API.G_FALSE,
750 	X_msg_Count		  OUT NOCOPY /* file.sql.39 change */    Number,
751 	X_msg_Data		  OUT NOCOPY /* file.sql.39 change */    Varchar2,
752 	X_Return_Status	  OUT NOCOPY /* file.sql.39 change */    Varchar2,
753 	p_avail_service_rec IN	 AVAIL_SERVICE_REC_TYPE,
754 	X_Orderable_Service_tbl	  OUT NOCOPY /* file.sql.39 change */    order_service_tbl_type
755 					    )
756 IS
757   l_api_version_number NUMBER := 1.0;
758   l_api_name VARCHAR2(50) := 'Available_Services';
759 
760   l_avail_service_rec OKS_OMINT_PUB.AVAIL_SERVICE_REC_TYPE;
761   l_Orderable_Service_tbl  OKS_OMINT_PUB.order_service_tbl_type;
762 
763 
764 BEGIN
765    -- Standard Start of API savepoint
766       SAVEPOINT AVAILABLE_SERVICES_PUB;
767 
768 	 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
769 
770       -- Standard call to check for call compatibility.
771       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
772                          	           p_api_version_number,
773                                            l_api_name,
774                                            G_PKG_NAME)
775       THEN
776           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
777       END IF;
778 
779 
780       -- Initialize message list if p_init_msg_list is set to TRUE.
781       IF FND_API.to_Boolean( p_init_msg_list )
782       THEN
783           FND_MSG_PUB.initialize;
784       END IF;
785 
786 
787       -- Initialize API return status to SUCCESS
788       x_return_status := FND_API.G_RET_STS_SUCCESS;
789 
790       --
791       -- API body
792       --
793 
794       -- ******************************************************************
795       -- Validate Environment
796       -- ******************************************************************
797       IF FND_GLOBAL.User_Id IS NULL
798       THEN
799           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
800           THEN
801               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
802               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
803               FND_MSG_PUB.ADD;
804           END IF;
805           RAISE FND_API.G_EXC_ERROR;
806       END IF;
807 
808 -- map service rec type
809 IF aso_debug_pub.g_debug_flag = 'Y' THEN
810 
811    aso_debug_pub.add('ASO_SER_INT:available_service: p_avail_service_rec.PRODUCT_ITEM_ID '|| p_avail_service_rec.PRODUCT_ITEM_ID, 1, 'N');
812    aso_debug_pub.add('ASO_SER_INT:available_service: p_avail_service_rec.CUSTOMER_ID '|| p_avail_service_rec.CUSTOMER_ID, 1, 'N');
813    aso_debug_pub.add('ASO_SER_INT:available_service: p_avail_service_rec.PRODUCT_REVISION '|| p_avail_service_rec.PRODUCT_REVISION, 1, 'N');
814    aso_debug_pub.add('ASO_SER_INT:available_service: p_avail_service_rec.REQUEST_DATE '|| p_avail_service_rec.REQUEST_DATE, 1, 'N');
815 
816 END IF;
817 
818       IF p_avail_service_rec.PRODUCT_ITEM_ID = FND_API.G_MISS_NUM THEN
819         l_avail_service_rec.PRODUCT_ITEM_ID := NULL;
820       ELSE
821        l_avail_service_rec.PRODUCT_ITEM_ID  := p_avail_service_rec.PRODUCT_ITEM_ID;
822 	 END IF;
823       IF p_avail_service_rec.CUSTOMER_ID = FND_API.G_MISS_NUM THEN
824         l_avail_service_rec.CUSTOMER_ID := NULL;
825       ELSE
826        l_avail_service_rec.CUSTOMER_ID  := p_avail_service_rec.CUSTOMER_ID;
827       END IF;
828       IF p_avail_service_rec.PRODUCT_REVISION = FND_API.G_MISS_CHAR THEN
829         l_avail_service_rec.PRODUCT_REVISION := NULL;
830       ELSE
831        l_avail_service_rec.PRODUCT_REVISION  := p_avail_service_rec.PRODUCT_REVISION;
832       END IF;
833       IF p_avail_service_rec.request_date = FND_API.G_MISS_DATE THEN
834         l_avail_service_rec.request_date := NULL;
835       ELSE
836        l_avail_service_rec.request_date  := p_avail_service_rec.request_date;
837       END IF;
838 /*
839 l_avail_service_rec.PRODUCT_ITEM_ID  := p_avail_service_rec.PRODUCT_ITEM_ID;
840 l_avail_service_rec.CUSTOMER_ID	     := p_avail_service_rec.CUSTOMER_ID	 ;
841 l_avail_service_rec.PRODUCT_REVISION := p_avail_service_rec.PRODUCT_REVISION;
842 l_avail_service_rec.REQUEST_DATE     := p_avail_service_rec.REQUEST_DATE;
843 */
844 
845       IF aso_debug_pub.g_debug_flag = 'Y' THEN
846          aso_debug_pub.add('Before Calling OKS_OMINT_PUB.Available_Services ',1,'Y');
847          aso_utility_pvt.print_login_info();
848       END IF;
849 
850         OKS_OMINT_PUB.Available_Services(
851 	P_Api_Version	=> 1.0 ,
852         P_init_msg_list	=> p_init_msg_list,
853 	X_msg_Count     => X_msg_count ,
854         X_msg_Data	=> X_msg_data	 ,
855         X_Return_Status	=> X_return_status  ,
856 	p_avail_service_rec => l_avail_service_rec,
857 	X_Orderable_Service_tbl	 => l_Orderable_Service_tbl
858 					   );
859 
860 IF aso_debug_pub.g_debug_flag = 'Y' THEN
861     aso_debug_pub.add('ASO_SER_INT:After Call to OKS available_service: x_return_status '|| X_return_status, 1, 'Y');
862     aso_utility_pvt.print_login_info();
863 END IF;
864 
865     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
866       FOR i in 1..l_Orderable_Service_tbl.count  LOOP
867        x_orderable_service_tbl(i).service_item_id := l_Orderable_Service_tbl(i).service_item_id;
868       END LOOP;
869     END IF;
870 
871 
872       -- Check return status from the above procedure call
873       IF x_return_status = FND_API.G_RET_STS_ERROR then
874           raise FND_API.G_EXC_ERROR;
875       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
876           raise FND_API.G_EXC_UNEXPECTED_ERROR;
877       END IF;
878 
879       --
880       -- End of API body.
881       --
882 
883   /*    -- Standard check for p_commit
884       IF FND_API.to_Boolean( p_commit )
885       THEN
886           COMMIT WORK;
887       END IF;
888  */
889 
890 
891 
892       -- Standard call to get message count and if count is 1, get message info.
893       FND_MSG_PUB.Count_And_Get
894       (  p_count          =>   x_msg_count,
895          p_data           =>   x_msg_data
896       );
897 
898       EXCEPTION
899           WHEN FND_API.G_EXC_ERROR THEN
900               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
901                    P_API_NAME => L_API_NAME
902                   ,P_PKG_NAME => G_PKG_NAME
903                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
904                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
905                   ,X_MSG_COUNT => X_MSG_COUNT
906                   ,X_MSG_DATA => X_MSG_DATA
907                   ,X_RETURN_STATUS => X_RETURN_STATUS);
908 
909           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
910               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
911                    P_API_NAME => L_API_NAME
912                   ,P_PKG_NAME => G_PKG_NAME
913                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
914                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
915                   ,X_MSG_COUNT => X_MSG_COUNT
916                   ,X_MSG_DATA => X_MSG_DATA
917                   ,X_RETURN_STATUS => X_RETURN_STATUS);
918 
919           WHEN OTHERS THEN
920               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
921                    P_API_NAME => L_API_NAME
922                   ,P_PKG_NAME => G_PKG_NAME
923                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
924                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
925                   ,X_MSG_COUNT => X_MSG_COUNT
926                   ,X_MSG_DATA => X_MSG_DATA
927                   ,X_RETURN_STATUS => X_RETURN_STATUS);
928 
929 END Available_Services;
930 
931 
932 Procedure Get_Warranty	   (
933        P_Api_Version_Number	       IN	Number,
934        P_init_msg_list	       IN	Varchar2 := FND_API.G_FALSE,
935        X_msg_Count	       OUT NOCOPY /* file.sql.39 change */    Number,
936        X_msg_Data		 OUT NOCOPY /* file.sql.39 change */  	  Varchar2,
937        P_Org_id               IN       Number,
938        P_Organization_id       IN       NUMBER := null,
939        P_product_item_id 	 IN	  Number,
940        x_return_status	       OUT NOCOPY /* file.sql.39 change */    Varchar2,
941        X_Warranty_tbl	     OUT NOCOPY /* file.sql.39 change */      War_tbl_type  )
942 IS
943 
944   CURSOR C_warranty(item_id NUMBER) IS
945   SELECT description, concatenated_segments
946  -- SELECT description, segment1
947  -- FROM aso_i_items_v
948   FROM mtl_system_items_vl
949   WHERE inventory_item_id = item_id
950   AND organization_id = p_organization_id;
951 /*  AND bom_item_type in (1,4)
952   AND inventory_item_status_code = 'Active'
953   AND customer_order_enabled_flag = 'Y'; */
954 
955   l_api_version_number NUMBER := 1.0;
956   l_api_name VARCHAR2(50) := 'Get_Warranty';
957 
958   l_warranty_tbl OKS_EXTWAR_UTIL_PUB.War_tbl;
959   l_description VARCHAR2(240);
960   l_concatenated_segments VARCHAR2(2000);
961 
962 BEGIN
963    -- Standard Start of API savepoint
964       SAVEPOINT GET_WARRANTY_PUB;
965 
966  aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
967 
968       -- Standard call to check for call compatibility.
969       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
970                          	           p_api_version_number,
971                                            l_api_name,
972                                            G_PKG_NAME)
973       THEN
974           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
975       END IF;
976 
977 
978       -- Initialize message list if p_init_msg_list is set to TRUE.
979       IF FND_API.to_Boolean( p_init_msg_list )
980       THEN
981           FND_MSG_PUB.initialize;
982       END IF;
983 
984 
985       -- Initialize API return status to SUCCESS
986       x_return_status := FND_API.G_RET_STS_SUCCESS;
987 
988       --
989       -- API body
990       --
991 
992       -- ******************************************************************
993       -- Validate Environment
994       -- ******************************************************************
995       IF FND_GLOBAL.User_Id IS NULL
996       THEN
997           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
998           THEN
999               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
1000               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
1001               FND_MSG_PUB.ADD;
1002           END IF;
1003           RAISE FND_API.G_EXC_ERROR;
1004       END IF;
1005 
1006       IF aso_debug_pub.g_debug_flag = 'Y' THEN
1007         aso_debug_pub.add('Before  Call to OKS_EXTWAR_UTIL_PUB.Get_Warranty_info', 1, 'Y');
1008         aso_utility_pvt.print_login_info();
1009       END IF;
1010 
1011       OKS_EXTWAR_UTIL_PUB.Get_Warranty_info(
1012        P_Api_Version	=> 1.0 ,
1013        P_init_msg_list	=> FND_API.G_FALSE,
1014        P_Org_id         => P_Org_id  ,
1015        P_prod_item_id   => P_product_item_id	 ,
1016        X_Return_Status	=> X_return_status  ,
1017        X_msg_Count      => X_msg_count ,
1018        X_msg_Data	=> X_msg_data	 ,
1019        X_Warranty_tbl	=> l_Warranty_tbl      );
1020 -- map the output
1021 
1022       IF aso_debug_pub.g_debug_flag = 'Y' THEN
1023         aso_debug_pub.add('After  Call to OKS_EXTWAR_UTIL_PUB.Get_Warranty_info', 1, 'Y');
1024         aso_utility_pvt.print_login_info();
1025       END IF;
1026 
1027 
1028    For i in 1..l_warranty_tbl.count LOOP
1029     IF p_organization_id is not null THEN
1030        OPEN C_warranty(l_Warranty_tbl(i).Service_item_id);
1031        FETCH C_warranty INTO l_description,
1032                              l_concatenated_segments;
1033        IF (C_warranty%FOUND) THEN
1034           CLOSE C_warranty;
1035           X_Warranty_tbl(i).Service_item_id := l_Warranty_tbl(i).Service_item_id;
1036           X_Warranty_tbl(i).Duration_Quantity:= l_Warranty_tbl(i).Duration_Quantity;
1037           X_Warranty_tbl(i).Duration_Period  := l_Warranty_tbl(i).Duration_Period;
1038           X_Warranty_tbl(i).Coverage_Schedule_id
1039                                              := l_Warranty_tbl(i).Coverage_Schedule_id ;
1040           X_Warranty_tbl(i).Warranty_Start_Date
1041                                              := l_Warranty_tbl(i).Warranty_Start_Date;
1042           X_Warranty_tbl(i).Warranty_End_Date := l_Warranty_tbl(i).Warranty_End_Date;
1043           X_Warranty_tbl(i).service_description := l_description;
1044           X_Warranty_tbl(i).service_name := l_concatenated_segments;
1045        ELSE
1046          -- raise FND_API.G_EXC_ERROR;
1047           CLOSE C_warranty;
1048        END IF;
1049     END IF;
1050    END LOOP;
1051 
1052 
1053       -- Check return status from the above procedure call
1054       IF x_return_status = FND_API.G_RET_STS_ERROR then
1055           raise FND_API.G_EXC_ERROR;
1056       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1057           raise FND_API.G_EXC_UNEXPECTED_ERROR;
1058       END IF;
1059 
1060       --
1061       -- End of API body.
1062       --
1063 
1064 
1065       -- Standard call to get message count and if count is 1, get message info.
1066       FND_MSG_PUB.Count_And_Get
1067       (  p_count          =>   x_msg_count,
1068          p_data           =>   x_msg_data
1069       );
1070 
1071       EXCEPTION
1072           WHEN FND_API.G_EXC_ERROR THEN
1073               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1074                    P_API_NAME => L_API_NAME
1075                   ,P_PKG_NAME => G_PKG_NAME
1076                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1077                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1078                   ,X_MSG_COUNT => X_MSG_COUNT
1079                   ,X_MSG_DATA => X_MSG_DATA
1080                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1081 
1082           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1083               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1084                    P_API_NAME => L_API_NAME
1085                   ,P_PKG_NAME => G_PKG_NAME
1086                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1087                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1088                   ,X_MSG_COUNT => X_MSG_COUNT
1089                   ,X_MSG_DATA => X_MSG_DATA
1090                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1091 
1092           WHEN OTHERS THEN
1093               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1094                    P_API_NAME => L_API_NAME
1095                   ,P_PKG_NAME => G_PKG_NAME
1096                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
1097                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1098                   ,X_MSG_COUNT => X_MSG_COUNT
1099                   ,X_MSG_DATA => X_MSG_DATA
1100                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1101 
1102 END Get_Warranty;
1103 
1104 
1105 End ASO_service_contracts_INT;