DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_INSTDTLS_INT

Source


1 PACKAGE BODY ASO_instdtls_INT as
2 /* $Header: asoiserb.pls 120.4 2006/03/29 10:22:26 hagrawal ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_Instdtls_INT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_Instdtls_INT';
11 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asoiserb.pls';
12 
13 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
14 
15 
16 -- global variables
17 
18   l_line_inst_tbl           Line_Inst_Tbl_type;
19   l_inst_count              NUMBER := 1;
20 
21 Function Get_System_Rec Return System_rec_type IS
22  l_system_rec  System_rec_type ;
23 Begin
24  Return l_system_rec ;
25 End Get_System_Rec ;
26 
27 
28 
29 
30   PROCEDURE Autocreate_systems(
31 	p_api_version_number           IN      NUMBER,
32 	p_init_msg_list         IN      VARCHAR2    := FND_API.G_FALSE,
33 	p_commit                IN      VARCHAR2    := FND_API.G_FALSE,
34 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
35 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
36         x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
37 --        p_system_tbl            IN OUT NOCOPY /* file.sql.39 change */     System_Tbl_Type
38         p_system_rec            IN      System_Rec_Type ,
39         x_system_name_tbl       OUT NOCOPY /* file.sql.39 change */     Name_tbl_type
40   )
41 IS
42 /*   l_api_version_number NUMBER := 1;
43    l_api_name VARCHAR2(50) := 'Autocreate_systems';
44    l_name VARCHAR2(240);
45    l_name_tbl  CS_AUTOCREATE_SYSTEMS_PKG.name_tbl_type ;*/
46 
47   BEGIN
48 
49   /*
50 -- dbms_output.put_line('beginning of the interface API');
51 
52  -- Standard Start of API savepoint
53       SAVEPOINT Autocreate_systems_PUB;
54 
55       -- Standard call to check for call compatibility.
56       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
57                          	           p_api_version_number,
58                                            l_api_name,
59                                            G_PKG_NAME)
60       THEN
61           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
62       END IF;
63 
64 
65       -- Initialize message list if p_init_msg_list is set to TRUE.
66       IF FND_API.to_Boolean( p_init_msg_list )
67       THEN
68           FND_MSG_PUB.initialize;
69       END IF;
70 
71       -- Debug Message
72       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
73 
74       -- Initialize API return status to SUCCESS
75       x_return_status := FND_API.G_RET_STS_SUCCESS;
76 
77 -- dbms_output.put_line('before service API');
78 
79 --   FOR i in 1..p_system_tbl.count LOOP
80    */
81 --   l_name := p_system_tbl(i).name;
82 /*
83    CS_AUTOCREATE_SYSTEMS_PKG.autocreate
84    (
85         P_CUSTOMER_ID	        => p_system_tbl(i).customer_id,
86  	P_NAME 			=> p_system_tbl(i).name,
87  	P_DESCRIPTION		=> p_system_tbl(i).description,
88  	P_SYSTEM_TYPE_CODE	=> p_system_tbl(i).system_type_code,
89  	P_NUMBER_TO_CREATE	=> p_system_tbl(i).number_to_create,
90  	P_INSTALL_SITE_USE_ID	=> p_system_tbl(i).install_site_use_id,
91  	P_TECHNICAL_CONTACT_ID  => p_system_tbl(i).technical_contact_id,
92  	P_SERVICE_ADMIN_CONTACT_ID  =>p_system_tbl(i).service_admin_contact_id,
93  	P_SHIP_TO_SITE_USE_ID	=> p_system_tbl(i).ship_to_site_use_id,
94  	P_SHIP_TO_CONTACT_ID	=> p_system_tbl(i).ship_to_contact_id,
95  	P_BILL_TO_SITE_USE_ID	=> p_system_tbl(i).bill_to_site_use_id,
96  	P_BILL_TO_CONTACT_ID	=> p_system_tbl(i).bill_to_contact_id,
97      P_CONFIG_SYSTEM_TYPE	=> p_system_tbl(i).config_system_type,
98 	P_START_DATE_ACTIVE      => p_system_tbl(i).start_date_active,
99 	P_END_DATE_ACTIVE      => p_system_tbl(i).end_date_active,
100 	p_attribute1		=> p_system_tbl(i).attribute1,
101 	p_attribute2		=> p_system_tbl(i).attribute2,
102 	p_attribute3		=> p_system_tbl(i).attribute3,
103 	p_attribute4		=> p_system_tbl(i).attribute4,
104 	p_attribute5		=> p_system_tbl(i).attribute5,
105 	p_attribute6		=> p_system_tbl(i).attribute6,
106 	p_attribute7		=> p_system_tbl(i).attribute7,
107 	p_attribute8		=> p_system_tbl(i).attribute8,
108 	p_attribute9		=> p_system_tbl(i).attribute9,
109 	p_attribute10		=> p_system_tbl(i).attribute10,
110 	p_attribute11		=> p_system_tbl(i).attribute11,
111 	p_attribute12		=> p_system_tbl(i).attribute12,
112 	p_attribute13		=> p_system_tbl(i).attribute13,
113 	p_attribute14		=> p_system_tbl(i).attribute14,
114 	p_attribute15		=> p_system_tbl(i).attribute15,
115 	p_context               => p_system_tbl(i).attribute_category
116    );
117 */
118  /*  CS_AUTOCREATE_SYSTEMS_PKG.autocreate
119    (
120         P_CUSTOMER_ID	        => p_system_rec.customer_id,
121  	P_NAME 			=> p_system_rec.name,
122  	P_DESCRIPTION		=> p_system_rec.description,
123  	P_SYSTEM_TYPE_CODE	=> p_system_rec.system_type_code,
124  	P_NUMBER_TO_CREATE	=> p_system_rec.number_to_create,
125  	P_INSTALL_SITE_USE_ID	=> p_system_rec.install_site_use_id,
126  	P_TECHNICAL_CONTACT_ID  => p_system_rec.technical_contact_id,
127  	P_SERVICE_ADMIN_CONTACT_ID  =>p_system_rec.service_admin_contact_id,
128  	P_SHIP_TO_SITE_USE_ID	=> p_system_rec.ship_to_site_use_id,
129  	P_SHIP_TO_CONTACT_ID	=> p_system_rec.ship_to_contact_id,
130  	P_BILL_TO_SITE_USE_ID	=> p_system_rec.bill_to_site_use_id,
131  	P_BILL_TO_CONTACT_ID	=> p_system_rec.bill_to_contact_id,
132      P_CONFIG_SYSTEM_TYPE	=> p_system_rec.config_system_type,
133 	P_START_DATE_ACTIVE      => p_system_rec.start_date_active,
134 	P_END_DATE_ACTIVE      => p_system_rec.end_date_active,
135 	p_attribute1		=> p_system_rec.attribute1,
136 	p_attribute2		=> p_system_rec.attribute2,
137 	p_attribute3		=> p_system_rec.attribute3,
138 	p_attribute4		=> p_system_rec.attribute4,
139 	p_attribute5		=> p_system_rec.attribute5,
140 	p_attribute6		=> p_system_rec.attribute6,
141 	p_attribute7		=> p_system_rec.attribute7,
142 	p_attribute8		=> p_system_rec.attribute8,
143 	p_attribute9		=> p_system_rec.attribute9,
144 	p_attribute10		=> p_system_rec.attribute10,
145 	p_attribute11		=> p_system_rec.attribute11,
146 	p_attribute12		=> p_system_rec.attribute12,
147 	p_attribute13		=> p_system_rec.attribute13,
148 	p_attribute14		=> p_system_rec.attribute14,
149 	p_attribute15		=> p_system_rec.attribute15,
150 	p_context               => p_system_rec.attribute_category,
151         x_name_tbl              => l_name_tbl
152    );
153 
154 null;
155            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
156               RAISE FND_API.G_EXC_ERROR;
157           END IF;
158 
159 --p_system_tbl(i).name := l_name;
160 
161 --END LOOP;
162 
163       For i IN l_name_tbl.FIRST .. l_name_tbl.LAST Loop
164        x_system_name_tbl(i).system_id  := l_name_tbl(i).system_id ;
165        x_system_name_tbl(i).name       := l_name_tbl(i).name  ;
166       End Loop ;
167       --
168       -- End of API body.
169       --
170 
171       -- Standard check for p_commit
172       IF FND_API.to_Boolean( p_commit )
173       THEN
174           COMMIT WORK;
175       END IF;
176 
177 
178       -- Debug Message
179       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Public API: ' || l_api_name || 'end');
180 
181 
182       -- Standard call to get message count and if count is 1, get message info.
183       FND_MSG_PUB.Count_And_Get
184       (  p_count          =>   x_msg_count,
185          p_data           =>   x_msg_data
186       );
187 
188       EXCEPTION
189           WHEN FND_API.G_EXC_ERROR THEN
190               x_return_status := FND_API.G_RET_STS_ERROR;
191               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
192                    P_API_NAME => L_API_NAME
193                   ,P_PKG_NAME => G_PKG_NAME
194                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
195                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
196                   ,X_MSG_COUNT => X_MSG_COUNT
197                   ,X_MSG_DATA => X_MSG_DATA
198                   ,X_RETURN_STATUS => X_RETURN_STATUS);
199 
200           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
201               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
202               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
203                    P_API_NAME => L_API_NAME
204                   ,P_PKG_NAME => G_PKG_NAME
205                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
206                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
207                   ,X_MSG_COUNT => X_MSG_COUNT
208                   ,X_MSG_DATA => X_MSG_DATA
209                   ,X_RETURN_STATUS => X_RETURN_STATUS);
210 
211           WHEN OTHERS THEN
212               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
213               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
214                    P_API_NAME => L_API_NAME
215                   ,P_PKG_NAME => G_PKG_NAME
216                   ,P_SQLERRM  => sqlerrm
217                   ,P_SQLCODE  => sqlcode
218                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
219                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
220                   ,X_MSG_COUNT => X_MSG_COUNT
221                   ,X_MSG_DATA => X_MSG_DATA
222                   ,X_RETURN_STATUS => X_RETURN_STATUS);
223 
224 			   */
225 			   null;
226 
227 END Autocreate_systems;
228 
229 
230 
231 /*
232 -- PROCEDURE Map_to_Service_record
233 -- USAGE     this procedure is used to convert a ASO_instdtls_INT.inst_detail_TBL into CS_Instdtls_PUB.line_inst_dtl_REC_TYPE.
234 -- NEED
235 -- 1. forms cannot directly use CS_Instdtls_PUB.line_inst_dtl_REC_TYPE
236 -- 2. forms 6.0 has a bug in accepting record types
237 
238 -- should be modified in future to accept rec type
239 
240 PROCEDURE Map_to_Service_record(
241     p_line_inst_dtl_tbl IN  inst_detail_TBL_TYPE,
242     x_line_inst_dtl_rec OUT NOCOPY  file.sql.39 change  CS_Inst_detail_PUB.line_inst_dtl_REC_TYPE
243   )
244   IS
245   i NUMBER := 1;
246 
247   BEGIN
248 
249   x_line_inst_dtl_rec.line_inst_detail_id
250 		:= p_line_inst_dtl_tbl(i).line_inst_detail_id;
251   x_line_inst_dtl_rec.order_line_id
252 		:= p_line_inst_dtl_tbl(i).order_line_id;
253   x_line_inst_dtl_rec.quote_line_shipment_id
254 		:= p_line_inst_dtl_tbl(i).quote_line_shipment_id;
255   x_line_inst_dtl_rec.source_line_inst_detail_id
256 		:= p_line_inst_dtl_tbl(i).source_line_inst_detail_id;
257   x_line_inst_dtl_rec.transaction_type_id
258 		:= p_line_inst_dtl_tbl(i).transaction_type_id;
259   x_line_inst_dtl_rec.system_id
260 		:= p_line_inst_dtl_tbl(i).system_id;
261   x_line_inst_dtl_rec.customer_product_id
262 		:= p_line_inst_dtl_tbl(i).customer_product_id;
263   x_line_inst_dtl_rec.type_code
264 		:= p_line_inst_dtl_tbl(i).type_code;
265   x_line_inst_dtl_rec.quantity
266 		:= p_line_inst_dtl_tbl(i).quantity;
267   x_line_inst_dtl_rec.installed_at_party_site_id
268 		:= p_line_inst_dtl_tbl(i).installed_at_party_site_id;
269   x_line_inst_dtl_rec.installed_cp_return_by_date
270 		:= p_line_inst_dtl_tbl(i).installed_cp_return_by_date;
271   x_line_inst_dtl_rec.installed_cp_rma_line_id
272 		:= p_line_inst_dtl_tbl(i).installed_cp_rma_line_id;
273   x_line_inst_dtl_rec.new_cp_rma_line_id
274 		:= p_line_inst_dtl_tbl(i).new_cp_rma_line_id;
275   x_line_inst_dtl_rec.new_cp_return_by_date
276 		:= p_line_inst_dtl_tbl(i).new_cp_return_by_date;
277   x_line_inst_dtl_rec.expected_installation_date
278 		:= p_line_inst_dtl_tbl(i).expected_installation_date;
279   x_line_inst_dtl_rec.start_date_active
280 		:= p_line_inst_dtl_tbl(i).start_date_active;
281   x_line_inst_dtl_rec.end_date_active
282 		:= p_line_inst_dtl_tbl(i).end_date_active;
283 
284 		null;
285 
286 END;
287 
288 
289 */
290 
291 -- PROCEDURE Modify contacts
292 -- USAGE     used to create, update, delete contacts.
293 -- NEED      single point of call to all contact related information.
294 --           calls service core's specify contact, update contact and delete contact.
295 -- REQUIRED FIELD operation code
296 
297 
298 PROCEDURE Modify_Contacts(
299 	p_api_version           IN NUMBER,
300 	p_init_msg_list         IN      VARCHAR2    := FND_API.G_FALSE,
301 	p_commit                IN      VARCHAR2    := FND_API.G_FALSE,
302 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
303 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
304 	x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
305 	p_line_dtl_id    IN NUMBER := FND_API.G_MISS_NUM,
306                                                 --default for delete
307 	p_contact_tbl    IN  contact_tbl_type := G_MISS_Contact_Tbl
308        )
309      IS
310 	/*
311    	l_cs_contact_id NUMBER;
312    	l_cp_contact_rec CS_Installedbase_PUB.CP_Contact_Rec_Type;
313    	l_obj_version_number NUMBER := -1;
314    	my_message VARCHAR2(2000);
315 	x_obj_version_number number; --nocopy changes */
316 
317      BEGIN
318 	/*
319 --dbms_output.put_line('before modify contacts - calling cs in create 1');
320  	l_cp_contact_rec.source_object_code  :=  'INST_DETAIL'	;
321  	l_cp_contact_rec.source_object_id    :=  p_line_dtl_id ;
322  	l_cp_contact_rec.desc_flex           :=  G_MISS_DFF_rec ;
323 
324 
325     	FOR i in 1..p_contact_tbl.count LOOP
326     	  IF p_contact_tbl(i).OPERATION_CODE is NULL THEN
327 
328              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
329               FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
330               FND_MESSAGE.Set_Token('COLUMN', 'Contact operation code', FALSE);
331               FND_MSG_PUB.ADD;
332              END IF;
333 
334           ELSIF p_contact_tbl(i).OPERATION_CODE = 'CREATE' THEN
335 
336             l_cp_contact_rec.contact_id	      := p_contact_tbl(i).contact_id;
337             l_cp_contact_rec.contact_type     := p_contact_tbl(i).contact_type;
338             l_cp_contact_rec.contact_category := p_contact_tbl(i).contact_category; -- Added for Bug 1554869 shegde
339 
340 
341     		 CS_Installedbase_PUB.specify_contact(
342       			  p_api_version	       => 2.0,
343      			  p_init_msg_list      => FND_API.G_FALSE	,
344       			  p_commit             => FND_API.G_FALSE	,
345 			  x_return_status      => x_return_status,
346 			  x_msg_count	       => x_msg_count,
347 			  x_msg_data	       => x_msg_data,
348 	           	  p_contact_rec        => l_cp_contact_rec ,
349 			  x_cs_contact_id      => l_cs_contact_id ,
350       			  x_object_version_number => l_obj_version_number
351                        );
352 
353            ELSIF p_contact_tbl(i).OPERATION_CODE = 'UPDATE' THEN
354    --  dbms_output.put_line('before modify contacts - calling cs update');
355         	 l_cp_contact_rec.contact_id := p_contact_tbl(i).contact_id;
356          	l_cp_contact_rec.contact_type := p_contact_tbl(i).contact_type;
357 	 	l_cs_contact_id      := p_contact_tbl(i).cs_contact_id;
358           l_obj_version_number := p_contact_tbl(i).object_version_number;
359           l_cp_contact_rec.contact_category := p_contact_tbl(i).contact_category; -- Added for Bug 1554869 shegde
360 
361     		   CS_Installedbase_PUB.update_contact(
362        			p_api_version	        => 1.0,	-- Bug# 1531396 puzzled why 2.0 was being passed earlier ????????? reverting it to 1.0 -shegde
363 			x_return_status	        => x_return_status,
364 			x_msg_count	        =>  x_msg_count,
365 			x_msg_data	        => x_msg_data,
366 			p_cs_contact_id         => l_cs_contact_id	,
367     		        p_object_version_number => l_obj_version_number,
368 			p_contact_rec           => l_cp_contact_rec,
369       		        x_object_version_number => x_obj_version_number
370                      );
371                l_obj_version_number := x_obj_version_number; ---Nocopy changes
372 
373   	 ELSIF p_contact_tbl(i).OPERATION_CODE = 'DELETE' THEN
377 		     x_return_status	=> x_return_status,
374      -- dbms_output.put_line('before modify contacts - calling cs delete');
375    		 CS_Installedbase_PUB.delete_contact(
376    		     p_api_version	=> 1.0,		-- Bug# 1531396 puzzled why 2.0 was being passed earlier ????????? reverting it to 1.0 -shegde
378 		     x_msg_count	=> x_msg_count,
379 		     x_msg_data	    	=> x_msg_data,
380 		     p_cs_contact_id	=> p_contact_tbl(i).cs_contact_id);
381   	  END IF;
382 
383    END LOOP;
384    */
385    null;
386 
387 END Modify_Contacts;
388 
389 
390 
391 -- PROCEDURE Create_Inst_Details
392 -- USAGE    creates installation details and contacts
393 -- NEED
394 -- calls service core's create_installation_details and specify_contacts
395 
396 PROCEDURE Create_Inst_Details(
397 	p_api_version           IN      NUMBER,
398 	p_init_msg_list         IN      VARCHAR2   := FND_API.G_FALSE,
399 	p_commit                IN      VARCHAR2   := FND_API.G_FALSE,
400 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
401 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
402 	x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
403 	p_line_inst_dtl_tbl     IN      Inst_Detail_tbl_Type,
404         p_cascade_line_tbl      IN      cascade_line_tbl_type
405                                         := G_MISS_Cascade_Line_Tbl,
406         p_contact_tbl           IN      contact_tbl_type
407                                         := G_MISS_Contact_Tbl,
408 	x_line_inst_dtl_id      OUT NOCOPY /* file.sql.39 change */     NUMBER
409 )
410 
411 IS /*
412 	l_dtl_id NUMBER;
413 	l_line_inst_dtl_rec CS_INST_DETAIL_PUB.Line_Inst_Dtl_Rec_Type;
414 	l_object_version_number NUMBER; */
415 
416 BEGIN
417 /*
418      Map_to_Service_record(
419      p_line_inst_dtl_tbl =>  p_line_inst_dtl_tbl ,
420      x_line_inst_dtl_rec =>  l_line_inst_dtl_rec
421     );
422 
423 
424      CS_Inst_detail_PUB.Create_Installation_details(
425          p_api_version              => 1.0
426 	,x_return_status            => x_return_status
427 	,x_msg_count                => x_msg_count
428 	,x_msg_data                 => x_msg_data
429 	,p_line_inst_dtl_rec        => l_line_inst_dtl_rec
430         ,p_line_inst_dtl_desc_flex  => G_MISS_DFF_rec
431         ,x_object_version_number    => l_object_version_number
432 	,x_line_inst_detail_id      => l_dtl_id
433      );
434 
435       x_line_inst_dtl_id := l_dtl_id ;
436 
437 
438 	IF (p_contact_tbl.count > 0
439               and x_return_status =  FND_API.G_RET_STS_SUCCESS ) THEN
440 --       dbms_output.put_line('after modify contacts');
441 	Modify_contacts
442 	 ( 1.0     ,
443   	   p_init_msg_list         ,
444   	   p_commit                ,
445   	   x_return_status         ,
446    	   x_msg_count             ,
447    	   x_msg_data              ,
448     	   l_dtl_id                ,
449    	   p_contact_tbl             );
450 --  dbms_output.put_line('after modify contacts');
451 	end if;
452 
453 
454 -- make an entry in the temp table. this is needed to prevent going to the
455 -- database each time.
456 
457      IF p_line_inst_dtl_tbl(1).order_line_id is not NULL
458        AND p_line_inst_dtl_tbl(1).order_line_id <> FND_API.G_MISS_NUM THEN
459        l_line_inst_tbl(l_inst_count).line_id
460                      := p_line_inst_dtl_tbl(1).order_line_id;
461      ELSE
462        l_line_inst_tbl(l_inst_count).line_id
463                      := p_line_inst_dtl_tbl(1).quote_line_shipment_id;
464      END IF;
465      l_line_inst_tbl(l_inst_count).inst_detail_id
466                      := l_dtl_id;
467      l_line_inst_tbl(l_inst_count).quantity := p_line_inst_dtl_tbl(1).quantity;
468      l_inst_count := l_inst_count + 1;
469 
470 	*/
471 	null;
472 
473 END Create_Inst_Details;
474 
475 
476 
477 -- PROCEDURE CASCADE_DETAILS_YN
478 -- USAGE This procedure is used to determine whether or not installation detail
479 -- should be cascaded to a new line. We check to see if the parent already has
480 -- installation details. If it has then the parent's details are cascaded.
481 
482    PROCEDURE CASCADE_DETAILS_YN(
483         p_api_version           IN      NUMBER,
484 	p_init_msg_list         IN      VARCHAR2    := FND_API.G_FALSE,
485 	p_commit                IN      VARCHAR2    := FND_API.G_FALSE,
486 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
487 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
488         x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
489         p_object_version_number IN      NUMBER,
490         p_cascade_line_rec      IN      cascade_line_rec_type,
491         x_line_inst_dtl_id      OUT NOCOPY /* file.sql.39 change */     NUMBER)
492 
493     IS
494       /*  CURSOR C_detail_exists(parent_quote_line_id NUMBER) IS
495         SELECT
496 	   line_inst_detail_id	         ,
497 	   transaction_type_id           ,
498 	   system_id                     ,
499 	   customer_product_id           ,
500 	   customer_product_type_code                  ,
501 	   customer_product_quantity                  ,
502 	   installed_at_party_site_id    ,
503 	   installed_cp_return_by_date   ,
504   	   installed_cp_rma_line_id      ,
508 	   start_date_active,
505 	   new_cp_rma_line_id           ,
506 	   new_cp_return_by_date           ,
507 	   expected_installation_date,
509 	   end_date_active
510         FROM CS_LINE_INST_DETAILS
511         WHERE quote_line_shipment_id = parent_quote_line_id;
512 
513 
514          CURSOR C_contacts_info(inst_detail_id NUMBER) IS
515             SELECT contact_id, contact_type, contact_category
516             FROM   cs_inst_contact_dtls_v -- Bug 1554869 shegde
517             WHERE  line_inst_detail_id = inst_detail_id;
518 
519 
520         l_api_version          NUMBER        := 1.0;
521         l_api_name             VARCHAR2(100) := 'CASCADE_DETAILS_YN';
522         l_line_inst_dtl_rec    Inst_Detail_rec_Type;
523         l_contact_tbl          contact_tbl_type;
524         l_cascade_req          VARCHAR2(2)   := 'T';
525         l_line_inst_dtl_tbl    Inst_Detail_tbl_Type;
526         i                      NUMBER;
527         p_cascade_line_tbl     Cascade_Line_Tbl_Type;  */
528      BEGIN
529 	/*
530   -- Standard Start of API savepoint
531       SAVEPOINT CASCADE_DETAILS_YN_PUB;
532 
533       -- Standard call to check for call compatibility.
534       IF NOT FND_API.Compatible_API_Call ( l_api_version,
535                          	           p_api_version,
536                                            l_api_name,
537                                            G_PKG_NAME)
538       THEN
539           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
540       END IF;
541 
542 
543       -- Initialize message list if p_init_msg_list is set to TRUE.
544       IF FND_API.to_Boolean( p_init_msg_list )
545       THEN
546           FND_MSG_PUB.initialize;
547       END IF;
548 
549       -- Debug Message
550       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
551 
552       -- Initialize API return status to SUCCESS
553       x_return_status := FND_API.G_RET_STS_SUCCESS;
554 
555       --
556       -- API body
557       --
558 
559       -- ******************************************************************
560       -- Validate Environment
561       -- ******************************************************************
562       IF FND_GLOBAL.User_Id IS NULL
563       THEN
564           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
565           THEN
566               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
567               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
568               FND_MSG_PUB.ADD;
569           END IF;
570           RAISE FND_API.G_EXC_ERROR;
571       END IF;
572 
573 
574          l_line_inst_dtl_rec.quote_line_shipment_id
575 			:= p_cascade_line_rec.line_id;
576 
577         OPEN C_detail_exists(p_cascade_line_rec.parent_line_id);
578         FETCH C_detail_exists into
579 	l_line_inst_dtl_rec.source_line_inst_detail_id,
580 	l_line_inst_dtl_rec.transaction_type_id    ,
581 	l_line_inst_dtl_rec.system_id               ,
582 	l_line_inst_dtl_rec.customer_product_id      ,
583 	l_line_inst_dtl_rec.type_code                 ,
584 	l_line_inst_dtl_rec.quantity                   ,
585 	l_line_inst_dtl_rec.installed_at_party_site_id  ,
586 	l_line_inst_dtl_rec.installed_cp_return_by_date  ,
587 	l_line_inst_dtl_rec.installed_cp_rma_line_id      ,
588 	l_line_inst_dtl_rec.new_cp_rma_line_id          ,
589 	l_line_inst_dtl_rec.new_cp_return_by_date        ,
590 	l_line_inst_dtl_rec.expected_installation_date,
591 	l_line_inst_dtl_rec.start_date_active,
592 	l_line_inst_dtl_rec.start_date_active  ;
593         IF (C_detail_exists%NOTFOUND) THEN
594             l_cascade_req := 'F';
595         END IF;
596         CLOSE C_detail_exists;
597 
598        i := 1;
599        IF l_cascade_req = 'T' THEN
600 
601         l_line_inst_dtl_rec.quantity
602             := l_line_inst_dtl_rec.quantity * p_cascade_line_rec.qty_factor;
603 
604         FOR j in  C_contacts_info(l_line_inst_dtl_rec.source_line_inst_detail_id) LOOP
605            l_contact_tbl(i).contact_id     := j.contact_id;
606            l_contact_tbl(i).contact_type   := j.contact_type;
607            l_contact_tbl(i).operation_code := 'CREATE';
608            l_contact_tbl(i).contact_category   := j.contact_category; -- added contact category for Bug 1554869 shegde
609 
610              i := i + 1;
611         END LOOP;
612 
613 
614          l_line_inst_dtl_tbl(1) := l_line_inst_dtl_rec;
615          Create_Inst_Details(
616 	      p_api_version          =>  1.0 ,
617               p_init_msg_list        =>  FND_API.G_FALSE ,
618 	      p_commit               =>  FND_API.G_FALSE ,
619 	      x_return_status        =>  x_return_status ,
620 	      x_msg_count            =>  x_msg_count ,
621 	      x_msg_data             =>  x_msg_data ,
622 	      p_line_inst_dtl_tbl    =>  l_line_inst_dtl_tbl ,
623               p_cascade_line_tbl     =>  p_cascade_line_tbl  ,
624               p_contact_tbl          =>  l_contact_tbl ,
625 	      x_line_inst_dtl_id     =>  x_line_inst_dtl_id
626           );
627 
628       END IF;
629 
630       IF x_return_status = FND_API.G_RET_STS_ERROR then
631           raise FND_API.G_EXC_ERROR;
632       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
636       --
633           raise FND_API.G_EXC_UNEXPECTED_ERROR;
634       END IF;
635 
637       -- End of API body.
638       --
639 
640       -- Standard check for p_commit
641       IF FND_API.to_Boolean( p_commit )
642       THEN
643           COMMIT WORK;
644       END IF;
645 
646 
647       -- Debug Message
648       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Public API: ' || l_api_name || 'end');
649 
650 
651       -- Standard call to get message count and if count is 1, get message info.
652       FND_MSG_PUB.Count_And_Get
653       (  p_count          =>   x_msg_count,
654          p_data           =>   x_msg_data
655       );
656 
657       EXCEPTION
658           WHEN FND_API.G_EXC_ERROR THEN
659               x_return_status := FND_API.G_RET_STS_ERROR;
660                 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
661                    P_API_NAME => L_API_NAME
662                   ,P_PKG_NAME => G_PKG_NAME
663                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
664                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
665                   ,X_MSG_COUNT => X_MSG_COUNT
666                   ,X_MSG_DATA => X_MSG_DATA
667                   ,X_RETURN_STATUS => X_RETURN_STATUS);
668 
669           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
670               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
671              ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
672                    P_API_NAME => L_API_NAME
673                   ,P_PKG_NAME => G_PKG_NAME
674                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
675                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
676                   ,X_MSG_COUNT => X_MSG_COUNT
677                   ,X_MSG_DATA => X_MSG_DATA
678                   ,X_RETURN_STATUS => X_RETURN_STATUS);
679 
680           WHEN OTHERS THEN
681               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
682              ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
683                    P_API_NAME => L_API_NAME
684                   ,P_PKG_NAME => G_PKG_NAME
685                   ,P_SQLERRM  => sqlerrm
686                   ,P_SQLCODE  => sqlcode
687                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
688                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
689                   ,X_MSG_COUNT => X_MSG_COUNT
690                   ,X_MSG_DATA => X_MSG_DATA
691                   ,X_RETURN_STATUS => X_RETURN_STATUS);
692 */
693 null;
694 end Cascade_Details_YN;
695 
696 
697 -- PROCEDURE Cascade_Delete_Inst_Details
698 -- USAGE     used to delete installation details for all options if the model level installation detail is deleted.
699 -- NEED     existing functionality
700 
701 
702    PROCEDURE Cascade_Delete_Inst_Details(
703 	p_api_version           IN      NUMBER,
704 	p_init_msg_list         IN      VARCHAR2    := FND_API.G_FALSE,
705 	p_commit                IN      VARCHAR2    := FND_API.G_FALSE,
706 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
707 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
708         x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
709 	p_line_inst_dtl_id      IN      NUMBER
710    )
711   IS
712 /*
713   CURSOR cascaded_lines(p_inst_dtl_id NUMBER) IS
714     select line_inst_detail_id
715     from cs_line_inst_details
716     where source_line_inst_detail_id = p_inst_dtl_id;
717 */
718 BEGIN
719 /*
720   	 FOR i in cascaded_lines(p_line_inst_dtl_id) LOOP
721      	      ASO_Instdtls_INT.Delete_Installation_Detail(
722        	        p_api_version_number   => 1.0,
723 		x_return_status        => x_return_status,
724 		x_msg_count            => x_msg_count,
725 		x_msg_data             => x_msg_data,
726 		p_line_inst_dtl_id     => i.line_inst_detail_id
727       		 );
728 	 END LOOP;
729 	 */
730 
731 null;
732 END Cascade_Delete_Inst_Details;
733 
734 
735 -- PROCEDURE Cascade_Update_Inst_Details
736 -- USAGE     used to update installation details for all options if the model level installation detail is updated.
737 -- NEED     existing functionality
738 
739 
740   PROCEDURE Cascade_Update_Inst_Details(
741 	p_api_version           IN      NUMBER,
742 	p_init_msg_list         IN      VARCHAR2    := FND_API.G_FALSE,
743 	p_commit                IN      VARCHAR2    := FND_API.G_FALSE,
744 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
745 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
746         x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
747         p_object_version_number IN      NUMBER,
748         p_line_inst_dtl_tbl     IN      Inst_Detail_tbl_Type,
749 	p_contact_tbl           IN      contact_tbl_type := G_MISS_Contact_Tbl ,
750         p_old_quantity          IN      NUMBER
751   )
752 IS
753 /*
754 CURSOR cascaded_lines(p_inst_dtl_id NUMBER) IS
755   select line_inst_detail_id, customer_product_quantity quantity, object_version_number
756   from cs_line_inst_details
757   where source_line_inst_detail_id = p_inst_dtl_id;
758 
759 CURSOR C_cascade_cont(p_inst_dtl_id NUMBER) IS
760   select cs_contact_id, object_version_number, contact_id
761   from cs_inst_contact_dtls_v -- Bug 1554869 shegde
762   where line_inst_detail_id = p_inst_dtl_id;
763 
767 */
764 l_line_inst_dtl_tbl Inst_Detail_tbl_Type;
765 l_contact_tbl   contact_tbl_type;
766 l_object_version_number NUMBER;
768 
769 BEGIN
770 /*         l_line_inst_dtl_tbl := p_line_inst_dtl_tbl;
771          l_contact_tbl       := p_contact_tbl;
772 
773   	 FOR i in cascaded_lines(p_line_inst_dtl_tbl(1).line_inst_detail_id) LOOP
774            -- dbms_output.put_line('in cascade update inst details');
775               l_line_inst_dtl_tbl(1).source_line_inst_detail_id
776 				:= p_line_inst_dtl_tbl(1).line_inst_detail_id;
777               l_line_inst_dtl_tbl(1).line_inst_detail_id
778                                 := i.line_inst_detail_id;
779               l_object_version_number
780 				:= i.object_version_number;
781 
782 
783 -- If quantity of the parent changes then the quantity at the child must also
784 -- change in the same ratio. We take the factor as an input because it could
785 -- lead to decimal quanitities. Instead we pass the old quantity and compute
786 -- the values here.
787 
788               -- Bug 2965402 : changed "<> NULL" to "IS NOT NULL"
789               IF  l_line_inst_dtl_tbl(1).quantity IS NOT NULL AND
790                   l_line_inst_dtl_tbl(1).quantity <> FND_API.G_MISS_NUM THEN
791 
792  -- quantity = quantity * new_quantity/old_quantity
793                  l_line_inst_dtl_tbl(1).quantity :=
794                   l_line_inst_dtl_tbl(1).quantity * i.quantity/p_old_quantity;
795 
796               END IF;
797 
798 -- for every line in the contact table
799                FOR j in 1..l_contact_tbl.count LOOP
800                   IF l_contact_tbl(j).operation_code <> 'CREATE' THEN
801                      FOR k in C_cascade_cont(l_line_inst_dtl_tbl(1).line_inst_detail_id) LOOP
802                        IF k.contact_id = l_contact_tbl(j).old_contact_id THEN
803                           l_contact_tbl(j).object_version_number
804                                           := k.object_version_number;
805                           l_contact_tbl(j).cs_contact_id := k.cs_contact_id;
806                     --      l_contact_tbl(j).line_inst_detail_id
807                  --             := l_line_inst_dtl_tbl(1).line_inst_detail_id;
808                        END IF;
809                      END LOOP;
810                    END IF;
811                  END LOOP;
812 
813         	ASO_Instdtls_INT.Update_Installation_Detail(
814        	        1.0           ,
815  		p_init_msg_list         ,
816 		p_commit                ,
817 		x_return_status         ,
818 		x_msg_count             ,
819 		x_msg_data              ,
820                 p_object_version_number => l_object_version_number,
821                 p_line_inst_dtl_tbl     => l_line_inst_dtl_tbl,
822                 p_contact_tbl           =>  l_contact_tbl ,
823                 p_cascade_flag          => FND_API.G_FALSE
824       		 );
825 -- i think we need the following so that the loop can start with the initial values again.
826           l_contact_tbl       := p_contact_tbl;
827          END LOOP;
828 	    */
829 
830 null;
831 END Cascade_Update_Inst_Details;
832 
833 
834 
835 
836 --   *******************************************************
837 --    Start of Comments
838 --   *******************************************************
839 --   API Name:  Create_Installation_Details
840 --   Type    :  Public
841 --   Pre-Req :
842 --   Parameters:
843 --
844 --  Standard IN Parameters:
845 --   p_api_version       IN   NUMBER    Required
846 --   p_init_msg_list     IN   VARCHAR2  Optional
847 --                                      := FND_API.G_FALSE
848 --
849 --  Standard OUT NOCOPY /* file.sql.39 change */ Parameters:
850 --   x_return_status     OUT NOCOPY /* file.sql.39 change */  VARCHAR2(1)
851 --   x_msg_count         OUT NOCOPY /* file.sql.39 change */  NUMBER
852 --   x_msg_data          OUT NOCOPY /* file.sql.39 change */  VARCHAR2(2000)
853 --
854 --  Create_Installation_Details IN Parameters:
855 --  p_line_inst_dtl_rec       Line_Inst_Dtl_Rec_Type   Required
856 --  p_cascade_line_tbl   IN   Cascade_line_tbl_type  DEFAULT = G_MISS_Cascade_Line_Tbl
857 
858 --  Create_Installation_Details OUT NOCOPY /* file.sql.39 change */ Parameters:
859 --  x_line_inst_dtl_id        NUMBER
860 --
861 --   End of Comments
862 --
863 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
864 --       The Master delete procedure may not be needed depends on different business requirements.
865 
866 
867 PROCEDURE Create_Installation_Detail
868 (
869 	p_api_version_number    IN      NUMBER,
870 	p_init_msg_list         IN      VARCHAR2   := FND_API.G_FALSE,
871 	p_commit                IN      VARCHAR2   := FND_API.G_FALSE,
872 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
873 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
874 	x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
875 --        p_object_version_number IN      NUMBER,
876 	p_line_inst_dtl_tbl     IN      Inst_Detail_TBL_Type,
877         p_cascade_line_tbl      IN      cascade_line_tbl_type := G_MISS_Cascade_Line_Tbl,
878         p_contact_tbl           IN      contact_tbl_type := G_MISS_Contact_Tbl,
879 	x_line_inst_dtl_id      OUT NOCOPY /* file.sql.39 change */     NUMBER
880 )
881 IS
882 /*
883 --BEGIN
884   l_api_version_number      NUMBER := 1.0;
888   l_return_status           NUMBER;
885   l_api_name VARCHAR2(50)          := 'Create_Installation_Detail';
886   l_line_inst_dtl_tbl       CS_Inst_detail_PUB.Line_Inst_Dtl_tbl_Type;
887   l_cascade_line_tbl        Inst_Detail_TBL_Type := p_line_inst_dtl_tbl;
889   l_msg_count               NUMBER;
890   l_msg_data                VARCHAR2(1000);
891   l_dtl_id                  NUMBER;
892   l_cascade_count           NUMBER := 0;
893   l_p_cascade_line_tbl      cascade_line_tbl_type;
894 
895 
896 my_message VARCHAR2(2000);
897 */
898 BEGIN
899 /*
900    -- Standard Start of API savepoint
901       SAVEPOINT CREATE_installation_detail_PUB;
902 
903       -- Standard call to check for call compatibility.
904       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
905                          	           p_api_version_number,
906                                            l_api_name,
907                                            G_PKG_NAME)
908       THEN
909           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
910       END IF;
911 
912 
913       -- Initialize message list if p_init_msg_list is set to TRUE.
914       IF FND_API.to_Boolean( p_init_msg_list )
915       THEN
916           FND_MSG_PUB.initialize;
917       END IF;
918 
919       -- Debug Message
920       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
921 
922       -- Initialize API return status to SUCCESS
923       x_return_status := FND_API.G_RET_STS_SUCCESS;
924 
925       --
926       -- API body
927       --
928 
929       -- ******************************************************************
930       -- Validate Environment
931       -- ******************************************************************
932       IF FND_GLOBAL.User_Id IS NULL
933       THEN
934           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
935           THEN
936               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
937               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
938               FND_MSG_PUB.ADD;
939           END IF;
940           RAISE FND_API.G_EXC_ERROR;
941       END IF;
942 
943 
944 -- dbms_output.put_line('before create inst details');
945 
946 -- create installation details for the header or model item.
947        Create_Inst_Details
948        (
949 	p_api_version           => 1.0  ,
950 	p_init_msg_list         => FND_API.G_FALSE ,
951 	p_commit                => FND_API.G_FALSE ,
952 	x_return_status         => x_return_status ,
953 	x_msg_count             => x_msg_count ,
954 	x_msg_data              => x_msg_data  ,
955 	p_line_inst_dtl_tbl     => p_line_inst_dtl_tbl ,
956         p_cascade_line_tbl      => p_cascade_line_tbl  ,
957         p_contact_tbl           => p_contact_tbl ,
958 	x_line_inst_dtl_id      => x_line_inst_dtl_id
959        );
960 
961        IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
962               RAISE FND_API.G_EXC_ERROR;
963        END IF;
964 
965 
966 -- check to see how many installation details need to be created.
967 
968      l_cascade_count := p_cascade_line_tbl.count;
969      l_p_cascade_line_tbl := p_cascade_line_tbl;
970     WHILE l_cascade_count > 0 LOOP
971 
972        l_cascade_line_tbl := p_line_inst_dtl_tbl ;
973 
974       FOR j in 1..l_inst_count LOOP
975        FOR i in 1..l_p_cascade_line_tbl.count LOOP
976 
977 -- check if parent installation detail has already been created
978           IF l_line_inst_tbl(j).line_id
979                 = l_p_cascade_line_tbl(i).parent_line_id
980           AND l_p_cascade_line_tbl(i).INST_DETAIL_CREATED
981                 = FND_API.G_FALSE THEN
982 
983              l_cascade_line_tbl(1).source_line_inst_detail_id
984                                      := l_line_inst_tbl(j).inst_detail_id ;
985 
986 -- determine whether it is an order line or a quote line
987              IF l_cascade_line_tbl(1).order_line_id <> FND_API.G_MISS_NUM
988                AND l_cascade_line_tbl(1).order_line_id is not NULL THEN
989                     l_cascade_line_tbl(1).order_line_id
990 			:= l_p_cascade_line_tbl(i).line_id ;
991              ELSE
992                     l_cascade_line_tbl(1).quote_line_shipment_id
993                         := l_p_cascade_line_tbl(i).line_id ;
994              END IF;
995 
996 -- cascade quantity
997              l_cascade_line_tbl(1).quantity
998 	:= l_line_inst_tbl(j).quantity * l_p_cascade_line_tbl(i).qty_factor;
999           --   dbms_output.put_line('quantity '||l_cascade_line_tbl(1).quantity);
1000 
1001           Create_Inst_Details(
1002         	p_api_version           => 1.0  ,
1003 	        p_init_msg_list         => FND_API.G_FALSE ,
1004 	        p_commit                => FND_API.G_FALSE ,
1005 	        x_return_status         => x_return_status ,
1006 	        x_msg_count             => x_msg_count ,
1007 	        x_msg_data              => x_msg_data  ,
1008 	        p_line_inst_dtl_tbl     => l_cascade_line_tbl  ,
1009                 p_cascade_line_tbl      => l_p_cascade_line_tbl  ,
1010                 p_contact_tbl           => p_contact_tbl ,
1011 	        x_line_inst_dtl_id      => x_line_inst_dtl_id
1012             );
1013 
1014         l_p_cascade_line_tbl(i).INST_DETAIL_CREATED := FND_API.G_TRUE;
1018        END LOOP;  -- cascade line tbl
1015         l_cascade_count  := l_cascade_count - 1;
1016         END IF;
1017 
1019 
1020       END LOOP;   -- cascade count
1021 
1022     END LOOP;  -- count > 0
1023 
1024 
1025       --
1026       -- End of API body
1027       --
1028       IF x_return_status = FND_API.G_RET_STS_ERROR then
1029           raise FND_API.G_EXC_ERROR;
1030       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1031           raise FND_API.G_EXC_UNEXPECTED_ERROR;
1032       END IF;
1033 
1034       --
1035       -- End of API body.
1036       --
1037 
1038       -- Standard check for p_commit
1039       IF FND_API.to_Boolean( p_commit )
1040       THEN
1041           COMMIT WORK;
1042       END IF;
1043 
1044 
1045       -- Debug Message
1046       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Public API: ' || l_api_name || 'end');
1047 
1048 
1049       -- Standard call to get message count and if count is 1, get message info.
1050       FND_MSG_PUB.Count_And_Get
1051       (  p_count          =>   x_msg_count,
1052          p_data           =>   x_msg_data
1053       );
1054 
1055       EXCEPTION
1056           WHEN FND_API.G_EXC_ERROR THEN
1057               x_return_status := FND_API.G_RET_STS_ERROR;
1058                 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1059                    P_API_NAME => L_API_NAME
1060                   ,P_PKG_NAME => G_PKG_NAME
1061                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1062                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1063                   ,X_MSG_COUNT => X_MSG_COUNT
1064                   ,X_MSG_DATA => X_MSG_DATA
1065                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1066 
1067           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1068               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1069              ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1070                    P_API_NAME => L_API_NAME
1071                   ,P_PKG_NAME => G_PKG_NAME
1072                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1073                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1074                   ,X_MSG_COUNT => X_MSG_COUNT
1075                   ,X_MSG_DATA => X_MSG_DATA
1076                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1077 
1078           WHEN OTHERS THEN
1079               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1080              ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1081                    P_API_NAME => L_API_NAME
1082                   ,P_PKG_NAME => G_PKG_NAME
1083                   ,P_SQLERRM  => sqlerrm
1084                   ,P_SQLCODE  => sqlcode
1085                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
1086                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1087                   ,X_MSG_COUNT => X_MSG_COUNT
1088                   ,X_MSG_DATA => X_MSG_DATA
1089                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1090 
1091 			   */
1092 			   null;
1093 
1094 end Create_Installation_Detail;
1095 
1096 
1097 
1098 --  API name   : Update_Installation_Details
1099 --  Type       : Public
1100 --  Function   : This API is used to update Installation details records.
1101 --  Pre-reqs   : None.
1102 --
1103 --  Standard IN Parameters:
1104 --   p_api_version       IN   NUMBER    Required
1105 --   p_init_msg_list     IN   VARCHAR2  Optional
1106 --                                      Default = FND_API.G_FALSE
1107 --
1108 --  Standard OUT NOCOPY /* file.sql.39 change */ Parameters:
1109 --   x_return_status     OUT NOCOPY /* file.sql.39 change */  VARCHAR2(1)
1110 --   x_msg_count         OUT NOCOPY /* file.sql.39 change */  NUMBER
1111 --   x_msg_data          OUT NOCOPY /* file.sql.39 change */  VARCHAR2(2000)
1112 --
1113 --  Update_Installation_Details IN Parameters:
1114 --  p_line_inst_dtl_id        NUMBER                   Required
1115 --  p_line_inst_dtl_rec       Line_Inst_Dtl_Rec_Type   Required
1116 
1117 --  Update_Installation_Details OUT NOCOPY /* file.sql.39 change */ Parameters:
1118 --  None
1119 --
1120 --  Version	:	Current version	1.0
1121 --  				Initial version	1.0
1122 --
1123 -- End of comments
1124 --------------------------------------------------------------------------
1125 
1126 PROCEDURE Update_Installation_Detail
1127 (
1128 	p_api_version_number    IN      NUMBER,
1129 	p_init_msg_list         IN      VARCHAR2    := FND_API.G_FALSE,
1130 	p_commit                IN      VARCHAR2    := FND_API.G_FALSE,
1131 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
1132 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
1133 	x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
1134         p_object_version_number IN      NUMBER,
1135 	p_line_inst_dtl_tbl     IN      Inst_Detail_tbl_Type,
1136 	p_contact_tbl           IN      contact_tbl_type := G_MISS_Contact_Tbl,
1137         p_cascade_flag          IN      VARCHAR2   := FND_API.G_TRUE)
1138 IS
1139    /*  CURSOR C_old_contact(l_cs_contact_id NUMBER) IS
1140      SELECT contact_id
1141      FROM cs_inst_contact_dtls_v -- Bug 1554869 shegde
1142      WHERE cs_contact_id = l_cs_contact_id;
1143 
1144      l_api_version_number NUMBER := 1.0;
1145      l_api_name           VARCHAR2(50) := 'UPDATE_INSTALLATION_DETAIL';
1146      l_cs_contact_id      NUMBER;
1150      l_p_contact_tbl      contact_tbl_type; */
1147      l_line_inst_dtl_rec  CS_Inst_detail_PUB.Line_Inst_Dtl_Rec_Type;
1148      l_object_version_number NUMBER;
1149      l_old_quantity       NUMBER := 1;
1151 BEGIN
1152 /*
1153  -- Standard Start of API savepoint
1154       SAVEPOINT Update_Installation_detail_PUB;
1155 
1156       -- Standard call to check for call compatibility.
1157       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1158                          	           p_api_version_number,
1159                                            l_api_name,
1160                                            G_PKG_NAME)
1161       THEN
1162           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1163       END IF;
1164 
1165 
1166       -- Initialize message list if p_init_msg_list is set to TRUE.
1167       IF FND_API.to_Boolean( p_init_msg_list )
1168       THEN
1169           FND_MSG_PUB.initialize;
1170       END IF;
1171 
1172       -- Debug Message
1173       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
1174 
1175       -- Initialize API return status to SUCCESS
1176       x_return_status := FND_API.G_RET_STS_SUCCESS;
1177 
1178       --
1179       -- API body
1180       --
1181 
1182       -- ******************************************************************
1183       -- Validate Environment
1184       -- ******************************************************************
1185       IF FND_GLOBAL.User_Id IS NULL
1186       THEN
1187           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1188           THEN
1189               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
1190               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
1191               FND_MSG_PUB.ADD;
1192           END IF;
1193           RAISE FND_API.G_EXC_ERROR;
1194       END IF;
1195 
1196 
1197 
1198      Map_to_Service_record(
1199      p_line_inst_dtl_tbl =>  p_line_inst_dtl_tbl ,
1200      x_line_inst_dtl_rec =>  l_line_inst_dtl_rec
1201     );
1202 
1203 
1204 -- this assignment is done so that if the line had previously been cascaded
1205 -- then the source line will not change because of the update. by explicity
1206 -- setting it to null we make sure that this line has no relationship with the
1207 -- parent.
1208 
1209     IF l_line_inst_dtl_rec.source_line_inst_detail_id = FND_API.G_MISS_NUM THEN
1210       l_line_inst_dtl_rec.source_line_inst_detail_id := null;
1211    END IF;
1212 
1213 -- old quantity is needed if updates have to be cascaded
1214      IF l_line_inst_dtl_rec.quantity is not NULL
1215         OR l_line_inst_dtl_rec.quantity <> FND_API.G_MISS_NUM THEN
1216 
1217         SELECT customer_product_quantity  INTO l_old_quantity
1218         FROM cs_line_inst_details
1219         where line_inst_detail_id = l_line_inst_dtl_rec.line_inst_detail_id;
1220         IF SQL%NOTFOUND THEN
1221            null;
1222         END IF;
1223 
1224      END IF;  -- inst quantity not null
1225 
1226     CS_Inst_detail_PUB.Update_installation_details
1227     (
1228 	p_api_version       => 1.0          ,
1229 	p_init_msg_list     => FND_API.G_FALSE        ,
1230 	p_commit            => FND_API.G_FALSE        ,
1231 	x_return_status     => x_return_status         ,
1232 	x_msg_count         => x_msg_count             ,
1233 	x_msg_data          => x_msg_data              ,
1234         p_line_inst_dtl_rec =>  l_line_inst_dtl_rec     ,
1235         p_line_inst_dtl_desc_flex => G_MISS_DFF_rec,
1236         P_OBJECT_VERSION_NUMBER	  => p_object_version_number,
1237         X_OBJECT_VERSION_NUMBER   => l_object_version_number
1238     );
1239 
1240           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1241               RAISE FND_API.G_EXC_ERROR;
1242           END IF;
1243 
1244 -- dbms_output.put_line('before modify contacts in update');
1245 
1246  IF p_contact_tbl.count > 0 THEN
1247 -- first create a link between the old and new contact ids. This is needed
1248 -- for cascading.
1249 
1250    l_p_contact_tbl := p_contact_tbl;
1251    FOR i in 1..p_contact_tbl.count LOOP
1252       IF p_contact_tbl(i).old_contact_id = FND_API.G_MISS_NUM
1253         AND p_contact_tbl(i).operation_code <> 'CREATE' THEN
1254 
1255         OPEN C_old_contact( p_contact_tbl(i).cs_contact_id);
1256         FETCH C_old_contact INTO l_p_contact_tbl(i).old_contact_id;
1257         IF(C_old_contact%NOTFOUND) THEN
1258            RAISE FND_API.G_EXC_ERROR;
1259         END IF;
1260         CLOSE  C_old_contact;
1261 
1262       END IF;
1263     END LOOP;
1264 
1265    Modify_contacts
1266      ( p_api_version        => 1.0          ,
1267        p_init_msg_list      => FND_API.G_FALSE        ,
1268        p_commit             => FND_API.G_FALSE        ,
1269        x_return_status      => x_return_status         ,
1270        x_msg_count          => x_msg_count             ,
1271        x_msg_data           => x_msg_data              ,
1272        p_line_dtl_id        => l_line_inst_dtl_rec.line_inst_detail_id ,
1273        p_contact_tbl        => p_contact_tbl);
1274 
1275 
1276          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1277               RAISE FND_API.G_EXC_ERROR;
1278           END IF;
1279    END IF;
1280 
1281 
1282   Cascade_update_inst_details(
1283      1.0,
1284 	p_init_msg_list         ,
1288 	x_msg_data              ,
1285 	p_commit                ,
1286 	x_return_status         ,
1287 	x_msg_count             ,
1289         p_object_version_number ,
1290 	p_line_inst_dtl_tbl     ,
1291 	p_contact_tbl           ,
1292         l_old_quantity          );
1293 
1294 
1295    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1296               RAISE FND_API.G_EXC_ERROR;
1297           END IF;
1298 
1299 
1300 
1301       --
1302       -- End of API body.
1303       --
1304 
1305       -- Standard check for p_commit
1306       IF FND_API.to_Boolean( p_commit )
1307       THEN
1308           COMMIT WORK;
1309       END IF;
1310 
1311 
1312       -- Debug Message
1313       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Public API: ' || l_api_name || 'end');
1314 
1315 
1316       -- Standard call to get message count and if count is 1, get message info.
1317       FND_MSG_PUB.Count_And_Get
1318       (  p_count          =>   x_msg_count,
1319          p_data           =>   x_msg_data
1320       );
1321 
1322       EXCEPTION
1323           WHEN FND_API.G_EXC_ERROR THEN
1324               x_return_status := FND_API.G_RET_STS_ERROR;
1325               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1326                    P_API_NAME => L_API_NAME
1327                   ,P_PKG_NAME => G_PKG_NAME
1328                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1329                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1330                   ,X_MSG_COUNT => X_MSG_COUNT
1331                   ,X_MSG_DATA => X_MSG_DATA
1332                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1333  null;
1334 
1335           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1336               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1337                ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1338                    P_API_NAME => L_API_NAME
1339                   ,P_PKG_NAME => G_PKG_NAME
1340                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1341                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1342                   ,X_MSG_COUNT => X_MSG_COUNT
1343                   ,X_MSG_DATA => X_MSG_DATA
1344                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1345              null;
1346 
1347           WHEN OTHERS THEN
1348               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1349                ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1350                    P_API_NAME => L_API_NAME
1351                   ,P_PKG_NAME => G_PKG_NAME
1352                   ,P_SQLERRM  => sqlerrm
1353                   ,P_SQLCODE  => sqlcode
1354                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1355                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1356                   ,X_MSG_COUNT => X_MSG_COUNT
1357                   ,X_MSG_DATA => X_MSG_DATA
1358                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1359 			   */
1360               null;
1361 
1362 END Update_Installation_Detail;
1363 
1364 
1365 
1366 --------------------------------------------------------------------------
1367 
1368 -- Start of comments
1369 --  API name   : Delete_Installation_Details
1370 --  Type       : Public
1371 --  Function   : This API is used to delete Installation details records.
1372 --  Pre-reqs   : None.
1373 --
1374 --  Standard IN Parameters:
1375 --   p_api_version       IN   NUMBER    Required
1376 --   p_init_msg_list     IN   VARCHAR2  Optional
1377 --                                      Default = FND_API.G_FALSE
1378 --
1379 --  Standard OUT NOCOPY /* file.sql.39 change */ Parameters:
1380 --   x_return_status     OUT NOCOPY /* file.sql.39 change */  VARCHAR2(1)
1381 --   x_msg_count         OUT NOCOPY /* file.sql.39 change */  NUMBER
1382 --   x_msg_data          OUT NOCOPY /* file.sql.39 change */  VARCHAR2(2000)
1383 --
1384 --  Delete_Installation_Details IN Parameters:
1385 --  p_line_inst_dtl_id        NUMBER                   Required
1386 
1387 --  Delete_Installation_Details OUT NOCOPY /* file.sql.39 change */ Parameters:
1388 --  None
1389 --
1390 --  Version	:	Current version	1.0
1391 --  				Initial version	1.0
1392 --
1393 -- End of comments
1394 --------------------------------------------------------------------------
1395 
1396 PROCEDURE Delete_Installation_Detail
1397 (
1398 	p_api_version_number    IN      NUMBER,
1399 	p_init_msg_list         IN      VARCHAR2    := FND_API.G_FALSE,
1400 	p_commit                IN      VARCHAR2    := FND_API.G_FALSE,
1401 	x_return_status         OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
1402 	x_msg_count             OUT NOCOPY /* file.sql.39 change */     NUMBER,
1403 	x_msg_data              OUT NOCOPY /* file.sql.39 change */     VARCHAR2,
1404 	p_line_inst_dtl_id      IN      NUMBER
1405 )
1406 IS
1407 /*
1408 CURSOR C_contact_info(p_inst_dtl_id NUMBER) IS
1409   select cs_contact_id
1410   from cs_inst_contact_dtls_v -- Bug 1554869 shegde
1411   where line_inst_detail_id = p_inst_dtl_id;
1412 
1413 l_api_version_number NUMBER := 1.0;
1414 l_api_name VARCHAR2(50)     := 'Delete_Installation_Detail';
1415 l_object_version_number NUMBER;
1416 l_contact_tbl contact_tbl_type;
1417 j NUMBER := 1;
1418 */
1419 BEGIN
1420 /*
1421  -- Standard Start of API savepoint
1422       SAVEPOINT Delete_Installation_detail_PUB;
1423 
1424       -- Standard call to check for call compatibility.
1428                                            G_PKG_NAME)
1425       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1426                          	           p_api_version_number,
1427                                            l_api_name,
1429       THEN
1430           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1431       END IF;
1432 
1433 
1434       -- Initialize message list if p_init_msg_list is set to TRUE.
1435       IF FND_API.to_Boolean( p_init_msg_list )
1436       THEN
1437           FND_MSG_PUB.initialize;
1438       END IF;
1439 
1440       -- Debug Message
1441       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
1442 
1443       -- Initialize API return status to SUCCESS
1444       x_return_status := FND_API.G_RET_STS_SUCCESS;
1445 
1446 
1447    Cascade_delete_inst_details(
1448      1.0    ,
1449 	p_init_msg_list         ,
1450 	p_commit                ,
1451 	x_return_status         ,
1452 	x_msg_count             ,
1453 	x_msg_data              ,
1454 	p_line_inst_dtl_id
1455        );
1456 
1457            IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1458               RAISE FND_API.G_EXC_ERROR;
1459           END IF;
1460 
1461 
1462    FOR i in C_Contact_Info(p_line_inst_dtl_id) LOOP
1463       l_contact_tbl(j).cs_contact_id := i.cs_contact_id;
1464       l_contact_tbl(j).operation_code := 'DELETE';
1465       j := j + 1;
1466    END LOOP;
1467 
1468   IF l_contact_tbl.count > 0 THEN
1469    Modify_contacts
1470  ( 1.0    ,
1471    p_init_msg_list         ,
1472    p_commit                ,
1473    x_return_status         ,
1474    x_msg_count             ,
1475    x_msg_data              ,
1476    p_line_dtl_id => p_line_inst_dtl_id ,
1477    p_contact_tbl => l_contact_tbl);
1478   END IF;
1479 
1480       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1481               RAISE FND_API.G_EXC_ERROR;
1482           END IF;
1483 
1484 
1485     CS_Inst_detail_PUB.Delete_installation_details(
1486 	1.0    ,
1487 	p_init_msg_list         ,
1488 	p_commit                ,
1489 	x_return_status         ,
1490 	x_msg_count             ,
1491 	x_msg_data              ,
1492 	p_line_inst_dtl_id
1493     );
1494 
1495         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1496               RAISE FND_API.G_EXC_ERROR;
1497           END IF;
1498 
1499 
1500       --
1501       -- End of API body.
1502       --
1503 
1504       -- Standard check for p_commit
1505       IF FND_API.to_Boolean( p_commit )
1506       THEN
1507           COMMIT WORK;
1508       END IF;
1509 
1510 
1511       -- Debug Message
1512       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Public API: ' || l_api_name || 'end');
1513 
1514 
1515       -- Standard call to get message count and if count is 1, get message info.
1516       FND_MSG_PUB.Count_And_Get
1517       (  p_count          =>   x_msg_count,
1518          p_data           =>   x_msg_data
1519       );
1520 
1521       EXCEPTION
1522           WHEN FND_API.G_EXC_ERROR THEN
1523               x_return_status := FND_API.G_RET_STS_ERROR;
1524               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1525                    P_API_NAME => L_API_NAME
1526                   ,P_PKG_NAME => G_PKG_NAME
1527                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1528                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1529                   ,X_MSG_COUNT => X_MSG_COUNT
1530                   ,X_MSG_DATA => X_MSG_DATA
1531                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1532 
1533           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1534               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1535               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1536                    P_API_NAME => L_API_NAME
1537                   ,P_PKG_NAME => G_PKG_NAME
1538                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1539                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1540                   ,X_MSG_COUNT => X_MSG_COUNT
1541                   ,X_MSG_DATA => X_MSG_DATA
1542                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1543 
1544           WHEN OTHERS THEN
1545               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1546               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1547                    P_API_NAME => L_API_NAME
1548                   ,P_PKG_NAME => G_PKG_NAME
1549                   ,P_SQLERRM  => sqlerrm
1550                   ,P_SQLCODE  => sqlcode
1551                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
1552                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1553                   ,X_MSG_COUNT => X_MSG_COUNT
1554                   ,X_MSG_DATA => X_MSG_DATA
1555                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1556 
1557 			   */
1558 			   null;
1559 END Delete_Installation_Detail;
1560 
1561 
1562 
1563 -- PROCEDURE Update_Inst_Details_ORDER
1564 -- USAGE     updates the installation detail to include the order line id.
1565 -- NEED
1566 -- 1. installation details need to be linked to an order. when creating installation details from OC the order line id does not exist. this procedure is called after the quote is converted to an order.
1567 
1568 
1569 PROCEDURE Update_Inst_Details_ORDER
1570  (
1571         p_api_version_number			IN	NUMBER,
1572 	p_init_msg_list		IN	VARCHAR2  := FND_API.G_FALSE,
1573 	p_commit	  IN	VARCHAR2  := FND_API.G_FALSE,
1574 	x_return_status	 OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
1575 	x_msg_count		 OUT NOCOPY /* file.sql.39 change */ NUMBER,
1576 	x_msg_data		 OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
1577 	p_quote_line_shipment_id		IN	NUMBER,
1578 	p_order_line_id		IN	NUMBER
1579 )
1580 IS
1581 /*
1582       CURSOR C_inst_details IS
1583       SELECT count(*)
1584       FROM cs_line_inst_details
1585       WHERE quote_line_shipment_id = p_quote_line_shipment_id;
1586 
1587       l_api_version_number        number := 1.0;
1588       l_api_name           VARCHAR2(240) := 'UPDATE_INST_DETAILS_ORDER';
1589       l_count              NUMBER;
1590 	 */
1591 
1592 BEGIN
1593 /*
1594      -- Standard Start of API savepoint
1595       SAVEPOINT Update_Inst_details_ORder_PUB;
1596 
1597       -- Standard call to check for call compatibility.
1598       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1599                          	           p_api_version_number,
1600                                            l_api_name,
1601                                            G_PKG_NAME)
1602       THEN
1603           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1604       END IF;
1605 
1606 
1607       -- Initialize message list if p_init_msg_list is set to TRUE.
1608       IF FND_API.to_Boolean( p_init_msg_list )
1609       THEN
1610           FND_MSG_PUB.initialize;
1611       END IF;
1612 
1613       -- Debug Message
1614       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
1615 
1616       -- Initialize API return status to SUCCESS
1617       x_return_status := FND_API.G_RET_STS_SUCCESS;
1618 
1619        OPEN C_inst_details;
1620        FETCH C_inst_details INTO l_count;
1621        CLOSE C_inst_details;
1622 
1623      IF l_count > 0 THEN
1624 
1625 	CS_Installedbase_GRP.Update_Inst_Details_Order_Line(
1626 	p_api_version		=> 1.0,
1627 	x_return_status		=> x_return_status,
1628 	x_msg_count		=> x_msg_count,
1629 	x_msg_data		=> x_msg_data,
1630 	p_quote_line_shipment_id => p_quote_line_shipment_id,
1631 	p_order_line_id		=> p_order_line_id
1632 	);
1633 
1634      END IF;
1635 
1636  	IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1637               RAISE FND_API.G_EXC_ERROR;
1638           END IF;
1639 
1640        -- Standard check for p_commit
1641       IF FND_API.to_Boolean( p_commit )
1642       THEN
1643           COMMIT WORK;
1644       END IF;
1645 
1646 
1647       -- Debug Message
1648       ASO_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Public API: ' || l_api_name || 'end');
1649 
1650 
1651       -- Standard call to get message count and if count is 1, get message info.
1652       FND_MSG_PUB.Count_And_Get
1653       (  p_count          =>   x_msg_count,
1654          p_data           =>   x_msg_data
1655       );
1656 
1657       EXCEPTION
1658           WHEN FND_API.G_EXC_ERROR THEN
1659               x_return_status := FND_API.G_RET_STS_ERROR;
1660               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1661                    P_API_NAME => L_API_NAME
1662                   ,P_PKG_NAME => G_PKG_NAME
1663                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1664                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1665                   ,X_MSG_COUNT => X_MSG_COUNT
1666                   ,X_MSG_DATA => X_MSG_DATA
1667                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1668 
1669           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1670               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1671               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1672                    P_API_NAME => L_API_NAME
1673                   ,P_PKG_NAME => G_PKG_NAME
1674                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1675                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1676                   ,X_MSG_COUNT => X_MSG_COUNT
1677                   ,X_MSG_DATA => X_MSG_DATA
1678                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1679 
1680           WHEN OTHERS THEN
1681               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1682               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1683                    P_API_NAME => L_API_NAME
1684                   ,P_PKG_NAME => G_PKG_NAME
1685                   ,P_SQLERRM  => sqlerrm
1686                   ,P_SQLCODE  => sqlcode
1687                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
1688                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1689                   ,X_MSG_COUNT => X_MSG_COUNT
1690                   ,X_MSG_DATA => X_MSG_DATA
1691                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1692 */
1693 null;
1694 END;
1695 
1696 
1697 END ASO_instdtls_INT;