[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;