1 PACKAGE BODY IBE_Quote_Checkout_Pvt as
2 /* $Header: IBEVQASB.pls 120.12 2006/10/10 10:15:19 khiremat ship $ */
3 -- Start of Comments
4 -- Package name : IBE_Quote_Checkout_Pvt
5 -- Purpose :
6 -- NOTE :
7
8 -- End of Comments
9
10 -- Default number of records fetch per call
11 l_true VARCHAR2(1) := FND_API.G_TRUE;
12 G_PKG_NAME CONSTANT VARCHAR2(30) := 'IBE_Quote_Checkout_Pvt';
13 G_FILE_NAME CONSTANT VARCHAR2(12):= 'IBEVQASB.pls';
14 G_AUTH_ERROR CONSTANT NUMBER :=3;
15 PROCEDURE Authorize_Credit_Card(
16 p_qte_Header_Id IN NUMBER
17 ,x_return_status OUT NOCOPY VARCHAR2
18 ,x_msg_count OUT NOCOPY NUMBER
19 ,x_msg_data OUT NOCOPY VARCHAR2
20 ) IS
21
22 l_trxn_extension_id NUMBER;
23 l_payer IBY_FNDCPT_COMMON_PUB.PayerContext_rec_type;
24 l_payee_rec IBY_FNDCPT_TRXN_PUB.PayeeContext_rec_type;
25 l_party_id NUMBER;
26 l_resource_id NUMBER := FND_API.G_MISS_NUM;
27 l_org_type VARCHAR2(30) := 'OPERATING_UNIT';
28 l_payment_function VARCHAR2(30) := 'CUSTOMER_PAYMENT';
29 l_auth_result IBY_FNDCPT_TRXN_PUB.AuthResult_rec_type;
30 l_amount IBY_FNDCPT_TRXN_PUB.Amount_rec_type;
31 l_auth_attribs IBY_FNDCPT_TRXN_PUB.AuthAttribs_rec_type;
32 l_response IBY_FNDCPT_COMMON_PUB.Result_rec_type;
33 l_trxn_currency_code VARCHAR2(30) := 'USD';
34 l_return_status VARCHAR2(30) := NULL;
35 l_msg_count NUMBER;
36 l_msg_data VARCHAR2(2000);
37 l_auth_amount NUMBER;
38 L_API_NAME CONSTANT VARCHAR2(30) := 'Authorize_Credit_Card';
39 l_quote_source_code VARCHAR2(40);
40 l_org_id NUMBER;
41
42 Cursor c_get_trxn_extn_id (c_quote_header_id number)
43 IS
44 select trxn_extension_id
45 from aso_payments
46 where quote_header_id = c_quote_header_id and quote_line_id is null;
47
48 Cursor c_get_quote_details (c_quote_header_id number)
49 IS
50 select total_quote_price, currency_code, party_id, resource_id, quote_source_code
51 from ibe_quote_headers_v
52 where quote_header_id = c_quote_header_id;
53
54 Cursor c_get_org_id (c_party_id number)
55 IS
56 select object_id
57 from hz_relationships
58 where party_id = c_party_id and directional_flag='F'
59 and relationship_code in ('EMPLOYEE_OF','CONTACT_OF') and rownum <2;
60
61 PRAGMA AUTONOMOUS_TRANSACTION;
62
63 BEGIN
64
65
66 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
67 IBE_UTIL.DEBUG('Inside Authorize_Credit_Card api');
68 IBE_UTIL.DEBUG('PRAGMA AUTONOMOUS_TRANSACTION');
69 END IF;
70
71 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
72 IBE_UTIL.DEBUG('Authorize_Credit_Card:FND_MSG_PUB.initialized');
73 END IF;
74
75 open c_get_trxn_extn_id(p_qte_Header_Id);
76 fetch c_get_trxn_extn_id into l_trxn_extension_id;
77 close c_get_trxn_extn_id;
78
79 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
80 IBE_UTIL.DEBUG('Authorize_Credit_Card: After trxn query - l_trxn_extension_id' || l_trxn_extension_id);
81 END IF;
82
83 open c_get_quote_details(p_qte_Header_Id);
84 fetch c_get_quote_details into l_auth_amount, l_trxn_currency_code, l_party_id, l_resource_id, l_quote_source_code;
85 close c_get_quote_details;
86
87 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
88 IBE_UTIL.DEBUG('Authorize_Credit_Card:l_trxn_currency_code'|| l_trxn_currency_code);
89 IBE_UTIL.DEBUG('Authorize_Credit_Card:Amount populated...'|| l_auth_amount);
90 IBE_UTIL.DEBUG('Authorize_Credit_Card:l_party_id populated...'|| l_party_id);
91 IBE_UTIL.DEBUG('Authorize_Credit_Card:l_resource_id populated...'|| l_resource_id);
92 IBE_UTIL.DEBUG('Authorize_Credit_Card:l_quote_source_code...'|| l_quote_source_code);
93 END IF;
94
95 IF(l_resource_id is not null AND l_resource_id <> FND_API.G_MISS_NUM AND l_party_id is not null
96 and l_quote_source_code = 'Order Capture Quotes') THEN
97 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
98 IBE_UTIL.DEBUG('Authorize_Credit_Card: l_resource_id not null and is Order Capture Quote. Get the org_id');
99 END IF;
100
101 open c_get_org_id(l_party_id);
102 fetch c_get_org_id into l_org_id;
103 if c_get_org_id%NOTFOUND THEN
104 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
105 IBE_UTIL.DEBUG('Authorize_Credit_Card: l_org_id not found');
106 END IF;
107 else
108 l_party_id := l_org_id;
109 end if;
110 close c_get_org_id;
111
112
113 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
114 IBE_UTIL.DEBUG('Authorize_Credit_Card: After getting the org_id- party_id is '||l_party_id);
115 END IF;
116 END IF;
117
118 l_payer.payment_function := 'CUSTOMER_PAYMENT';
119 l_payer.party_id := l_party_id;
120 l_payee_rec.Org_Type := 'OPERATING_UNIT';
121 l_payee_rec.Org_Id := MO_GLOBAL.get_current_org_id;
122 l_amount.value := l_auth_amount;
123 l_amount.currency_code := l_trxn_currency_code;
124 l_auth_attribs.RiskEval_Enable_Flag := 'N'; -- Risk Validation should not be done
125
126 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
127 IBE_UTIL.DEBUG('Authorize_Credit_Card:Before call to create auth trxn_extension_id is: '||l_trxn_extension_id);
128 IBE_UTIL.DEBUG('Authorize_Credit_Card:Payer context values ...');
129 IBE_UTIL.DEBUG('Authorize_Credit_Card:payment function'||l_payment_function);
130 IBE_UTIL.DEBUG('Authorize_Credit_Card:l_payer.party_id'||l_party_id);
131 IBE_UTIL.DEBUG('Authorize_Credit_Card:amount is '||l_amount.value);
132 IBE_UTIL.DEBUG('Authorize_Credit_Card:currency is '||l_amount.currency_code);
133 IBE_UTIL.DEBUG('Authorize_Credit_Card:risk eval flag is '||l_auth_attribs.RiskEval_Enable_Flag);
134 IBE_UTIL.DEBUG('Authorize_Credit_Card:Calling IBY_Fndcpt_Trxn_Pub.Create_Authorization ');
135 END IF;
136
137
138 IBY_Fndcpt_Trxn_Pub.Create_Authorization
139 (p_api_version => 1.0,
140 x_return_status => l_return_status,
141 x_msg_count => l_msg_count,
142 x_msg_data => l_msg_data,
143 p_payer => l_payer,
144 p_payer_equivalency => IBY_FNDCPT_COMMON_PUB.G_PAYER_EQUIV_UPWARD,
145 p_payee => l_payee_rec,
146 p_trxn_entity_id => l_trxn_extension_id,
147 p_auth_attribs => l_auth_attribs,
148 p_amount => l_amount,
149 x_auth_result => l_auth_result,
150 x_response => l_response);
151
152
153 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
154 IBE_UTIL.DEBUG('Authorize_Credit_Card: After call to IBY_Fndcpt_Trxn_Pub.Create_Authorization');
155 IBE_UTIL.DEBUG('Authorize_Credit_Card: l_return_status:'||l_return_status);
156 IBE_UTIL.DEBUG('Authorize_Credit_Card: CC l_response.result_code '||l_response.result_code);
157 IBE_UTIL.DEBUG('Authorize_Credit_Card: x_msg_data:'|| l_msg_data);
158
159 if(l_response.result_code = 'IBY_0001' or l_response.result_code = 'COMMUNICATION_ERROR') then
160 IBE_UTIL.DEBUG('Authorize_Credit_Card: There was some communication error');
161 IBE_UTIL.DEBUG('Authorize_Credit_Card: x_msg_data:'|| l_msg_data);
162 end if;
163 END IF;
164
165 IF l_return_status = FND_API.G_RET_STS_SUCCESS AND l_response.result_code = 'AUTH_SUCCESS' THEN
166
167 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
168 IBE_UTIL.DEBUG('Authorize_Credit_Card:Authorization successful....Commiting the data');
169 END IF;
170 COMMIT;
171
172 ELSE
173 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
174 IBE_UTIL.DEBUG('Authorize_Credit_Card:CC Auth failed...!');
175 IBE_UTIL.DEBUG('Authorize_Credit_Card:l_response.result_code = '|| l_response.result_code);
176 END IF;
177
178 x_return_status := FND_API.G_RET_STS_ERROR;
179
180 FND_MSG_PUB.initialize;
181 FND_MESSAGE.CLEAR;
182
183 IF l_response.result_code = 'IBY_0020' or l_response.result_code = 'PAYMENT_SYS_REJECT' THEN
184
185 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
186 IBE_UTIL.DEBUG('Authorize_Credit_Card: Payment Decline - PAYMENT_SYS_REJECT ');
187 IBE_UTIL.DEBUG('Authorize_Credit_Card: x_msg_count '|| x_msg_count);
188 IBE_UTIL.DEBUG('Authorize_Credit_Card: x_msg_data '|| x_msg_data);
189 END IF;
190
191 FND_MESSAGE.SET_NAME('IBE','IBE_ERR_CC_AUTH_DECLINE');
192 FND_MSG_PUB.ADD;
193
194 ELSE
195 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
196 IBE_UTIL.DEBUG('Authorize_Credit_Card:Had some problem while processing the CC Auth.Setting common error msg ');
197 END IF;
198
199 FND_MESSAGE.SET_NAME('IBE','IBE_ERR_CC_AUTH_PROCESSING');
200 FND_MSG_PUB.ADD;
201
202 END IF;
203
204 RAISE FND_API.G_EXC_ERROR;
205 END IF;
206
207 EXCEPTION
208 WHEN FND_API.G_EXC_ERROR THEN
209 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
210 IBE_Util.Debug('Expected exception in IBE_Quote_Checkout_Pvt.Authorize_Credit_Card');
211 END IF;
212
213 x_return_status := FND_API.G_RET_STS_ERROR;
214 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
215 p_count => x_msg_count ,
216 p_data => x_msg_data);
217 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
218 IBE_Util.Debug('Expected exception count and data'||x_msg_count||'data = '||x_msg_data);
219 END IF;
220 RAISE FND_API.G_EXC_ERROR;
221
222 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
223 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
224 IBE_Util.Debug('Unexpected exception in IBE_Quote_Checkout_Pvt.Authorize_Credit_Card');
225 END IF;
226
227 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
228 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
229 p_count => x_msg_count ,
230 p_data => x_msg_data);
231 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
232
233 WHEN OTHERS THEN
234 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
235 IBE_Util.Debug('Unknown exception in IBE_Quote_Checkout_Pvt.Authorize_Credit_Card');
236 END IF;
237
238 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
239 IF FND_Msg_Pub.Check_Msg_Level(FND_Msg_Pub.G_MSG_LVL_UNEXP_ERROR) THEN
240 FND_Msg_Pub.Add_Exc_Msg(G_PKG_NAME,
241 L_API_NAME);
242 END IF;
243 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
244 p_count => x_msg_count ,
245 p_data => x_msg_data);
246
247 END Authorize_Credit_Card;
248
249
250 PROCEDURE Default_Order_State(
251 p_qte_Header_Id IN NUMBER
252 ,px_submit_Control_Rec IN OUT NOCOPY ASO_QUOTE_PUB.Submit_Control_Rec_Type
253 ) IS
254 l_qte_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
255
256 FUNCTION Boolean_To_GBoolean(p_Cond IN BOOLEAN) RETURN VARCHAR2 IS
257 BEGIN
258 IF p_Cond THEN
259 RETURN FND_API.G_TRUE;
260 ELSE
261 RETURN FND_API.G_FALSE;
262 END IF;
263 END Boolean_To_GBoolean;
264
265 BEGIN
266
267 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
268 IBE_Util.Debug('IBE_Quote_Checkout_Pvt.Default_Order_State Start');
269 END IF;
270
271 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
272 IBE_Util.Debug('Submit_Control_Rec.Book_Flag=' || px_submit_control_rec.book_flag);
273 IBE_Util.Debug('Submit_Control_Rec.Book_Flag=(' || px_submit_control_rec.book_flag || ')');
274 IBE_Util.Debug('FND_PROFILE(ASO_DEFAULT_ORDER_STATE)=(' || FND_PROFILE.Value('ASO_DEFAULT_ORDER_STATE') || ')');
275 END IF;
276
277 IF px_submit_control_rec.book_flag = FND_API.G_MISS_CHAR --OR
278 -- px_submit_control_rec.book_flag = 'F'
279 -- shouldn't be defaulting if F is passed in
280 THEN
281 l_qte_payment_tbl := IBE_Quote_Misc_pvt.getHeaderPaymentTbl(p_qte_header_id);
282
283 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
284 IBE_Util.Debug('qte_payment_tbl.COUNT=' || l_qte_payment_tbl.COUNT);
285 END IF;
286 IF l_qte_payment_tbl.COUNT = 1 THEN
287 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
288 IBE_UTIL.Debug('qte_payment_tbl(1).payment_type_code = ' || l_qte_payment_tbl(1).payment_type_code);
289 END IF;
290 IF l_qte_payment_tbl(1).payment_type_code IN ('CREDIT_CARD', 'PO') THEN
291 /*IF l_qte_payment_tbl(1).payment_ref_number IS NOT NULL THEN
292 px_submit_control_rec.book_flag :=
293 Boolean_To_GBoolean(FND_PROFILE.Value('ASO_DEFAULT_ORDER_STATE') = 'BOOKED');
294 ELSE
295 px_submit_control_rec.book_flag := FND_API.G_FALSE;
296 END IF;*/
297
298 /*mannamra: Credit Card Consolidation changes: 1. We will no longer use payment_ref_number, which would
299 be the credit card number when payment type is credit_card,
300 because only assignment id will be sufficient for ASO to
301 retrieve the credit card details.
302 2. PO number cannot be an independent payment type hence
303 not taking into consideration the case when only PO number
304 is passed.
305 */
306 IF (l_qte_payment_tbl(1).instr_assignment_id is not null
307 AND l_qte_payment_tbl(1).instr_assignment_id <> FND_API.G_MISS_NUM) THEN
308 px_submit_control_rec.book_flag :=
309 Boolean_To_GBoolean(FND_PROFILE.Value('ASO_DEFAULT_ORDER_STATE') = 'BOOKED');
310 ELSE
311 px_submit_control_rec.book_flag := FND_API.G_FALSE;
312 END IF;
313
314 ELSIF NVL(l_qte_payment_tbl(1).payment_type_code, 'CASH') IN ('CASH', 'CHECK') THEN
315 px_submit_control_rec.book_flag :=
316 Boolean_To_GBoolean(FND_PROFILE.Value('ASO_DEFAULT_ORDER_STATE') = 'BOOKED');
317 END IF;
318 ELSE -- Handles INVOICE payment type code
319 px_submit_control_rec.book_flag :=
320 Boolean_To_GBoolean(FND_PROFILE.Value('ASO_DEFAULT_ORDER_STATE') = 'BOOKED');
321 END IF;
322 END IF;
323
324 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
325 IBE_Util.Debug('Updated Submit_Control_Rec.Book_Flag=' || px_submit_control_rec.book_flag);
326 END IF;
327
328 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
329 IBE_Util.Debug('IBE_Quote_Checkout_Pvt.Default_Order_State Finishes');
330 END IF;
331
332 END Default_Order_State;
333
334 PROCEDURE SubmitQuote(
335 p_api_version_number IN NUMBER
336 ,p_commit IN VARCHAR2 := FND_API.g_false
337 ,p_init_msg_list IN VARCHAR2 := FND_API.g_false
338 ,p_quote_Header_Id IN NUMBER
339 ,p_last_update_date in DATE := FND_API.G_MISS_DATE
340
341 ,p_sharee_party_Id IN NUMBER := FND_API.G_MISS_NUM
342 ,p_sharee_cust_account_id IN NUMBER := FND_API.G_MISS_NUM
343 ,p_sharee_number IN NUMBER := FND_API.G_MISS_NUM
344
345 ,p_submit_Control_Rec IN ASO_QUOTE_PUB.Submit_Control_Rec_Type
346 := ASO_QUOTE_PUB.G_MISS_Submit_Control_Rec
347
348 ,p_customer_comments IN VARCHAR2 := FND_API.G_MISS_CHAR
349 ,p_reason_code IN VARCHAR2 := FND_API.G_MISS_CHAR
350 ,p_salesrep_email_id IN VARCHAR2 := FND_API.G_MISS_CHAR
351
352 -- 9/17/02: added to control calling validate_user_update
353 ,p_validate_user IN VARCHAR2 := FND_API.G_TRUE
354 ,p_minisite_id IN NUMBER := FND_API.G_MISS_NUM
355
356 ,x_order_header_rec OUT NOCOPY ASO_QUOTE_PUB.Order_Header_Rec_Type
357 --Mannamra: Added for bug 4716044
361 ,x_msg_data OUT NOCOPY VARCHAR2
358 ,x_hold_flag OUT NOCOPY VARCHAR2
359 ,x_return_status OUT NOCOPY VARCHAR2
360 ,x_msg_count OUT NOCOPY NUMBER
362 )
363 IS
364 L_API_NAME CONSTANT VARCHAR2(30) := 'SUBMITQUOTE';
365 L_API_VERSION CONSTANT NUMBER := 1.0;
366
367 l_privilege_type_code VARCHAR2(30);
368 l_qte_header_rec ASO_QUOTE_PUB.QTE_HEADER_REC_TYPE;
369 l_submit_control_rec ASO_QUOTE_PUB.Submit_Control_Rec_Type
370 := ASO_QUOTE_PUB.G_MISS_Submit_Control_Rec;
371 l_return_status VARCHAR2(1);
372 l_msg_count NUMBER;
373 l_msg_data VARCHAR2(2000);
374
375 PLACE_ORDER NUMBER := 6;
376
377
378 l_contract_id NUMBER;
379 l_related_obj_id NUMBER;
380 l_contract_number VARCHAR2(120);
381 l_current_state NUMBER;
382
383 l_contract_template_id NUMBER;
384 l_check_terms VARCHAR2(240) := null;
385
386 -- temp vars for NOCOPY OUT params
387 l_quote_header_id_tmp NUMBER;
388 l_last_update_date_tmp DATE;
389
390 l_quote_source_code ASO_QUOTE_HEADERS.QUOTE_SOURCE_CODE%TYPE;
391 l_sold_to_party_id NUMBER;
392 l_party_id NUMBER;
393 lx_party_id NUMBER;
394 l_last_updated_by NUMBER;
395 l_person_first_name HZ_PARTIES.PERSON_FIRST_NAME%TYPE;
396 l_person_last_name HZ_PARTIES.PERSON_LAST_NAME%TYPE;
397 l_hold_flag VARCHAR2(1);
398 --CC Auth
399 l_CC_Auth_Prof VARCHAR2(1) := NVL(FND_PROFILE.Value('IBE_PERFORM_CC_AUTH'), 'Y');
400 l_qte_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
401 l_auth_flag VARCHAR2(1);
402 l_trxn_extension_id NUMBER;
403
404 Cursor c_get_quote_details(c_quote_header_id number) IS
405 select quote_source_code, party_id, last_updated_by
406 from aso_quote_headers
407 where quote_header_id = c_quote_header_id;
408
409 Cursor c_get_party_id (c_user_id number) is
410 select customer_id
411 from fnd_user
412 where user_id = c_user_id;
413 Cursor c_get_auth_details (ci_extension_id IN iby_fndcpt_tx_extensions.trxn_extension_id%TYPE)
414 IS
415 SELECT authorized_flag
416 FROM iby_trxn_extensions_v
417 WHERE (trxn_extension_id = ci_extension_id);
418
419 Cursor c_get_trxn_extn_id (c_quote_header_id number)
420 IS
421 select trxn_extension_id
422 FROM ASO_PAYMENTS
423 WHERE quote_HEADER_ID = c_quote_header_id and QUOTE_LINE_ID is null;
424
425 BEGIN
426 -- Standard Start of API savepoint
427 SAVEPOINT SUBMITQUOTE_PVT;
428 -- Standard call to check for call compatibility.
429 IF NOT FND_API.Compatible_API_Call (L_API_VERSION,
430 P_Api_Version_Number,
431 L_API_NAME,
432 G_PKG_NAME )
433 THEN
434 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
435 END IF;
436 -- Initialize message list IF p_init_msg_list is set to TRUE.
437 IF FND_API.to_Boolean( p_init_msg_list ) THEN
438 FND_MSG_PUB.initialize;
439 END IF;
440
441 -- Initialize API return status to success
442 x_return_status := FND_API.G_RET_STS_SUCCESS;
443
444 -- API body
445 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
446 IBE_UTIL.DEBUG('SUBMITQUOTE: Before Calling log_environment_info');
447 END IF;
448 IBE_Quote_Misc_pvt.log_environment_info();
449 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
450 IBE_UTIL.DEBUG('SUBMITQUOTE: After Calling log_environment_info');
451 END IF;
452 --ibe_util.enable_debug;
453 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
454 IBE_Util.Debug('Begin IBE_Quote_Checkout_Pvt.SubmitQuote()');
455 END IF;
456
457 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
458 IBE_UTIL.DEBUG('Submit_Quote: p_validate_user flag='||p_validate_user);
459 END IF;
460 if (fnd_api.to_boolean(p_validate_user)) then
461 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
462 IBE_UTIL.DEBUG('Submit_Quote: before calling validate_user_update()');
463 END IF;
464 -- User Authentication
465 IBE_Quote_Misc_pvt.Validate_User_Update(
466 p_init_msg_list => FND_API.G_TRUE
467 ,p_quote_header_id => p_quote_Header_Id
468 ,p_quote_retrieval_number => p_sharee_number
469 ,p_validate_user => FND_API.G_TRUE
470 ,p_privilege_type_code => 'A'
471 ,p_save_type => PLACE_ORDER
472 ,p_last_update_date => p_last_update_date
473 ,x_return_status => x_return_status
474 ,x_msg_count => x_msg_count
475 ,x_msg_data => x_msg_data
476 );
477 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
478 RAISE FND_API.G_EXC_ERROR;
479 END IF;
480
481 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
482 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
483 END IF;
484 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
485 IBE_UTIL.debug('SUBmit_quote: after calling validate_user_update()');
486 END IF;
487 end if;
488
489 l_qte_header_rec.quote_header_id := p_quote_header_id;
493 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
490 /*IF p_sharee_number IS NOT NULL
491 AND p_sharee_number <> FND_API.G_MISS_NUM THEN
492 -- save cart check permisson
494 IBE_Util.Debug('IBE_Quote_Save_pvt.Save() starts');
495 END IF;
496
497 IBE_Quote_Save_pvt.Save(
498 p_api_version_number => p_api_version_number
499 ,p_init_msg_list => FND_API.G_TRUE
500 ,p_commit => FND_API.G_FALSE
501 ,p_sharee_number => p_sharee_number
502 ,p_sharee_party_id => p_sharee_party_id
503 ,p_sharee_cust_account_id => p_sharee_cust_account_id
504 ,p_changeowner => fnd_api.g_true
505 ,p_qte_header_rec => l_qte_header_rec
506 ,x_quote_header_id => l_quote_header_id_tmp
507 ,x_last_update_date => l_last_update_date_tmp
508 ,x_return_status => x_return_status
509 ,x_msg_count => x_msg_count
510 ,x_msg_data => x_msg_data);
511
512 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
513 IBE_Util.Debug('IBE_Quote_Save_pvt.Save() finishes');
514 END IF;
515
516 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
517 RAISE FND_API.G_EXC_ERROR;
518 END IF;
519
520 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
521 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
522 END IF;
523
524 l_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
525 l_qte_header_rec.last_update_date := l_last_update_date_tmp;
526
527 END IF;*/
528
529 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
530 IBE_Util.Debug('ASO_Quote_Pub.Default_Order_State starts');
531 END IF;
532
533 l_submit_control_rec := p_submit_control_rec;
534 Default_Order_State(p_qte_header_id => l_qte_header_rec.quote_header_id,
535 px_submit_control_Rec => l_submit_control_rec);
536
537 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
538 IBE_Util.Debug('ASO_Quote_Pub.Default_Order_State finishes. Control_Rec.book_flag = ' ||
539 l_submit_control_rec.book_flag);
540 END IF;
541
542 -- Added for Contracts Integration
543
544 IF (FND_Profile.Value('OKC_ENABLE_SALES_CONTRACTS') = 'Y' ) THEN
545 -- check if the contract is associated to the quote. If not then retrieve the template id and pass it in header rec.
546 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
547 IBE_Util.Debug('Contracts feature is turned ON, before calling Contract get_terms_template');
548 END IF;
549 l_check_terms := OKC_TERMS_UTIL_GRP.Get_Terms_Template( p_doc_type => 'QUOTE',
550 p_doc_id => l_qte_header_rec.quote_header_id);
551 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
552 IBE_Util.Debug('After get_terms_template api, l_check_terms='||l_check_terms);
553 END IF;
554
555 IF (l_check_terms is null) THEN
556 /*mannamra: changes for MOAC*/
557 --l_contract_template_id := FND_PROFILE.VALUE('ASO_DEFAULT_CONTRACT_TEMPLATE'); old style
558 l_contract_template_id := to_number(ASO_UTILITY_PVT.GET_OU_ATTRIBUTE_VALUE(ASO_UTILITY_PVT.G_DEFAULT_CONTRACT_TEMPLATE)); --New style
559 /*mannamra: end of changes for MOAC*/
560 END IF;
561
562 -- Get the quote details like last_updated_by, quote_source_code, party_id
563 open c_get_quote_details(l_qte_header_rec.quote_header_id);
564 fetch c_get_quote_details into l_quote_source_code,
565 l_sold_to_party_id,
566 l_last_updated_by;
567 close c_get_quote_details;
568
569 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
570 IBE_Util.Debug('Quote Source Code = '||l_quote_source_code);
571 IBE_Util.Debug('Sold To Party Id = '||l_sold_to_party_id);
572 IBE_Util.Debug('last updated by = '||l_last_updated_by);
573 END IF;
574
575 -- for Express Checkout carts, use the last_updated_by column to get the Party Id. If the party Id is null then
576 -- use the Sold To Party Id.
577 -- For Other Carts, get the party Id depending on the fnd_global.user_id
578
579 IF (l_quote_source_code = 'IStore Oneclick') THEN
580 open c_get_party_id(l_last_updated_by);
581 fetch c_get_party_id into l_party_id;
582 close c_get_party_id;
583
584 IF l_party_id is null THEN
585 l_party_id := l_sold_to_party_id;
586 END IF;
587 ELSE
588 open c_get_party_id(FND_GLOBAL.USER_ID);
589 fetch c_get_party_id into l_party_id;
590 close c_get_party_id;
591 END IF;
592
593 -- Get the First Name and Last Name for the derived party id.
594 -- Call ibe_workflow_pvt.get_name_details.
595 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
596 IBE_Util.Debug('Before calling get_name_details, partyId = '||l_party_id);
597 END IF;
598
599 IF (l_party_id is not null) THEN
600 IBE_WORKFLOW_PVT.get_name_details(
601 p_party_id => l_party_id,
602 p_user_type => FND_API.G_MISS_CHAR,
603 x_contact_first_name => l_person_first_name,
604 x_contact_last_name => l_person_last_name,
605 x_party_id => lx_party_id);
609 l_qte_header_rec.Customer_Name_And_Title := l_person_first_name ||' '||l_person_last_name;
606 END IF;
607
608 -- set the header record with all the required data.
610 l_qte_header_rec.Customer_Signature_Date := sysdate;
611 l_qte_header_rec.Contract_Template_Id := l_contract_template_id;
612
613 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
614 IBE_Util.Debug('Customer Name and Title ='||l_qte_header_rec.Customer_Name_And_Title);
615 IBE_Util.Debug('Customer Name and Title ='||l_qte_header_rec.Customer_Signature_Date);
616 IBE_Util.Debug('Customer Name and Title ='||l_qte_header_rec.Contract_Template_Id);
617 IBE_Util.Debug('Before calling new ASO Submit Quote api with Header Rec');
618 END IF;
619
620 -- Added for CC Authorization
621 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
622 IBE_UTIL.Debug('l_CC_Auth_Prof = ' || l_CC_Auth_Prof);
623 IBE_Util.Debug('Checking if Authorize_Credit_Card() need to be called');
624 END IF;
625
626 IF l_CC_Auth_Prof = 'Y' THEN
627
628 l_qte_payment_tbl := IBE_Quote_Misc_pvt.getHeaderPaymentTbl(p_quote_Header_Id);
629 IF l_qte_payment_tbl.COUNT = 1 THEN
630 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
631 IBE_UTIL.Debug('qte_payment_tbl(1).payment_type_code = ' || l_qte_payment_tbl(1).payment_type_code);
632 END IF;
633 END IF;
634
635 open c_get_trxn_extn_id(l_qte_header_rec.quote_header_id);
636 fetch c_get_trxn_extn_id into l_trxn_extension_id;
637 close c_get_trxn_extn_id;
638
639 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
640 IBE_Util.Debug('l_trxn_extension_id from aso_payments = '||l_trxn_extension_id);
641 END IF;
642
643 open c_get_auth_details(l_trxn_extension_id);
644 fetch c_get_auth_details into l_auth_flag;
645 close c_get_auth_details;
646
647 END IF;
648
649 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
650 IBE_Util.Debug('l_trxn_extension_id Auth Flag = '||l_auth_flag);
651 END IF;
652
653 IF l_CC_Auth_Prof = 'Y' and l_auth_flag = 'N' THEN
654 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
655 IBE_Util.Debug('Going to call Authorize_Credit_Card');
656 END IF;
657 Authorize_Credit_Card(p_qte_header_id => l_qte_header_rec.quote_header_id
658 ,x_return_status => x_return_status
659 ,x_msg_count => x_msg_count
660 ,x_msg_data => x_msg_data);
661
662 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
663 IBE_Util.Debug('After Authorize_Credit_Card checking the returned status');
664 END IF;
665
666 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
667 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
668 IBE_Util.Debug('IBE_Quote_Checkout_Pvt.Authorize_Credit_Card(): Exp Error while entering the quote ');
669 END IF;
670
671 RAISE FND_API.G_EXC_ERROR;
672 END IF;
673
674 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
675 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
676 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote(): Unexp Error while entering the quote ');
677 END IF;
678
679 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
680 END IF;
681 END IF;
682
683 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
684 IBE_Util.Debug('After Authorize_Credit_Card');
685 END IF;
686
687 ASO_Quote_Pub.Submit_quote(
688 P_Api_Version_Number => p_api_version_number
689 ,P_Init_Msg_List => FND_API.G_TRUE
690 ,P_Commit => FND_API.G_FALSE
691 ,p_control_rec => l_submit_control_rec
692 ,P_Qte_Header_Rec => l_qte_header_rec
693 ,x_order_header_rec => x_Order_Header_Rec
694 ,x_return_status => x_return_status
695 ,x_msg_count => x_msg_count
696 ,x_msg_data => x_msg_data);
697
698
699 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
700 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote() New api with Header Rec finishes, x_Order_Header_Rec.header_id '||x_Order_Header_Rec.ORDER_header_id);
701 END IF;
702 ELSE
703 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
704 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote() starts');
705 END IF;
706
707 ASO_Quote_Pub.Submit_Quote(
708 p_api_version_number => p_api_version_number
709 ,p_Init_Msg_List => FND_API.G_TRUE
710 ,p_control_rec => l_submit_control_rec
711 ,p_Qte_Header_Id => l_qte_header_rec.quote_header_id
712 ,x_order_header_rec => x_Order_Header_Rec
713 ,x_return_status => x_return_status
714 ,x_msg_count => x_msg_count
715 ,x_msg_data => x_msg_data);
716
717 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
718 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote() finishes x_Order_Header_Rec.header_id '||x_Order_Header_Rec.ORDER_header_id);
719 END IF;
720 END IF;
721 l_msg_data := x_msg_data;
722 l_msg_count := x_msg_count;
723 l_return_status := x_return_status;
724
725 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
726 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
730 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
727 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote(): Error in submit quote');
728 END IF;
729
731 END IF;
732
733 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
734 IF ( l_submit_control_rec.book_flag = FND_API.G_TRUE
735 AND FND_PROFILE.VALUE('IBE_ENTER_ORDER_ON_ERROR') = 'Y')
736 THEN
737 -- l_submit_control_rec := p_submit_control_rec;
738 l_submit_control_rec.book_flag := fnd_api.g_false;
739
740 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
741 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote() after book failure starts');
742 END IF;
743
744 ASO_Quote_Pub.Submit_Quote(
745 p_api_version_number => p_api_version_number
746 ,p_Init_Msg_List => FND_API.G_TRUE
747 ,p_control_rec => l_submit_control_rec
748 ,p_Qte_Header_Id => l_qte_header_rec.quote_header_id
749 ,x_order_header_rec => x_Order_Header_Rec
750 ,x_return_status => x_return_status
751 ,x_msg_count => x_msg_count
752 ,x_msg_data => x_msg_data);
753
754 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
755 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote() after book failure finishes x_Order_Header_Rec.header_id '||x_Order_Header_Rec.ORDER_header_id);
756 END IF;
757
758 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
759 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
760 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote(): Exp Error while entering the quote ');
761 END IF;
762
763 RAISE FND_API.G_EXC_ERROR;
764 END IF;
765
766 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
767 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
768 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote(): Unexp Error while entering the quote ');
769 END IF;
770
771 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
772 END IF;
773 ELSE
774
775 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
776 IBE_Util.Debug('ASO_Quote_Pub.Submit_Quote(): Error in submit quote');
777 END IF;
778 RAISE FND_API.G_EXC_ERROR;
779 END IF;
780 END IF;
781
782 -------------------------------------------------------------------------------------
783 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
784 IBE_Util.Debug('submitQuote: Calling oe_holds_pub.check_holds with header id '||x_Order_Header_Rec.ORDER_HEADER_ID);
785 END IF;
786
787 oe_holds_pub.check_holds(p_api_version => 1
788 ,p_header_id => x_Order_Header_Rec.ORDER_HEADER_ID
789 ,x_result_out => l_hold_flag
790 ,x_return_status => x_return_status
791 ,x_msg_count => x_msg_count
792 ,x_msg_data => x_msg_data);
793
794 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
795 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
796 IBE_Util.Debug('submitQuote: oe_holds_pub.check_holds has returned with an error '||x_msg_data);
797 END IF;
798
799 RAISE FND_API.G_EXC_ERROR;
800 END IF;
801
802 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
803 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
804 IBE_Util.Debug('submitQuote: oe_holds_pub.check_holds has returned with an error '||x_msg_data);
805 END IF;
806 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
807 END IF;
808
809 x_hold_flag := l_hold_flag;
810
811 -------------------------------------------------------------------------------------
812
813 IBE_QUOTE_SAVESHARE_V2_PVT.stop_sharing (
814 p_quote_header_id => p_quote_header_id ,
815 p_delete_context => 'IBE_SC_CART_ORDERED',
816 P_minisite_id => p_minisite_id ,
817 p_api_version => p_api_version_number ,
818 p_init_msg_list => fnd_api.g_false ,
819 p_commit => fnd_api.g_false ,
820 x_return_status => x_return_status ,
821 x_msg_count => x_msg_count ,
822 x_msg_data => x_msg_data );
823
824
825 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
826 RAISE FND_API.G_EXC_ERROR;
827 END IF;
828
829 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
830 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
831 END IF;
832
833
834 IF p_reason_code <> FND_API.G_MISS_CHAR
835 AND p_reason_code IS NOT NULL THEN
836 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
837 IBE_Util.Debug('IBE_Workflow_Pvt.NotifyForSalesAssistance() starts');
838 END IF;
839
840 IBE_Workflow_Pvt.NotifyForSalesAssistance(
841 p_api_version => p_api_version_number
842 ,p_init_msg_list => FND_API.G_TRUE
843 ,p_quote_id => l_qte_header_rec.quote_header_id
844 ,p_customer_comments => p_customer_comments
845 ,p_reason_code => p_reason_code
846 ,p_salesrep_email_id => p_salesrep_email_id
847 ,x_return_status => x_return_status
848 ,x_msg_count => x_msg_count
849 ,x_msg_data => x_msg_data);
850
851 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
852 IBE_Util.Debug('IBE_Workflow_Pvt.NotifyForSalesAssistance() finishes');
853 END IF;
854 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
855 RAISE FND_API.G_EXC_ERROR;
856 END IF;
857
858 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
859 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
860 END IF;
861 ELSE
862
863 /*This part is to bock notifications for application in maintenance mode(High Availability)*/
864 /*If the state of application is among 2,3,4,5 then notifications are disabled*/
865 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
866 IBE_Util.Debug('JTF_HA_STATE_PKG.Get_Current_state begins');
867 END IF;
868
869 JTF_HA_STATE_PKG.Get_Current_state(x_current_state => l_current_state,
870 x_return_status => x_return_status);
871
872 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
873 IBE_Util.Debug('JTF_HA_STATE_PKG.Get_Current_state finishes');
874 END IF;
875 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
876 RAISE FND_API.G_EXC_ERROR;
877 END IF;
878
879 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
880 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
881 END IF;
882 IF(l_current_state NOT IN (2,3,4,5)) THEN
883
884 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
885 IBE_Util.Debug('IBE_Workflow_Pvt.NotifyOrderStatus() starts');
886 END IF;
887 /*This part is a fix for sending notifications to sharee*/
888 IF (p_sharee_party_id = fnd_api.g_miss_num OR p_sharee_party_id IS NULL) THEN
889 IBE_Workflow_Pvt.NotifyOrderStatus(
890 p_api_version => p_api_version_number
891 ,p_init_msg_list => FND_API.G_TRUE
892 ,p_quote_id => l_qte_header_rec.quote_header_id
893 ,p_status => l_return_status
894 ,p_errmsg_count => l_msg_count
895 ,p_errmsg_data => l_msg_data
896 ,x_return_status => x_return_status
897 ,x_msg_count => x_msg_count
898 ,x_msg_data => x_msg_data);
899
900 ELSE
901 /*Sharee is present*/
902 IBE_Workflow_Pvt.NotifyOrderStatus(
903 p_api_version => p_api_version_number
904 ,p_init_msg_list => FND_API.G_TRUE
905 ,p_quote_id => l_qte_header_rec.quote_header_id
906 ,p_status => l_return_status
907 ,p_errmsg_count => l_msg_count
908 ,p_errmsg_data => l_msg_data
909 ,p_sharee_partyId => p_sharee_party_Id
910 ,x_return_status => x_return_status
911 ,x_msg_count => x_msg_count
912 ,x_msg_data => x_msg_data);
913
914 END IF;
915
916 /* Book Order Error - Enter Order Success should notify user */
917 IF (l_return_status = 'E' and x_return_status = 'S') THEN
918 IBE_Workflow_Pvt.NotifyOrderStatus(
919 p_api_version => p_api_version_number
920 ,p_init_msg_list => FND_API.G_TRUE
921 ,p_quote_id => l_qte_header_rec.quote_header_id
922 ,p_status => 'S'
923 ,p_errmsg_count => l_msg_count
924 ,p_errmsg_data => l_msg_data
925 ,x_return_status => x_return_status
926 ,x_msg_count => x_msg_count
927 ,x_msg_data => x_msg_data);
928 END IF;
929
930
931 END IF;--for l_current_state(HA)
932 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
933 IBE_Util.Debug('IBE_Workflow_Pvt.NotifyOrderStatus() finishes');
934 END IF;
935 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
936 RAISE FND_API.G_EXC_ERROR;
937 END IF;
938
939 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
940 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
941 END IF;
942 END IF;
943
944 -- End of API body.
945 -- Standard check of p_commit.
946 IF FND_API.To_Boolean( p_commit ) THEN
947 COMMIT WORK;
948 END IF;
949
950 -- Standard call to get message count and IF count is 1, get message info.
951 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
952 p_count => x_msg_count ,
953 p_data => x_msg_data);
954 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
955 IBE_Util.Debug('End IBE_Quote_Checkout_Pvt.SubmitQuote()');
956 END IF;
957 --ibe_util.disable_debug;
958 EXCEPTION
959 WHEN FND_API.G_EXC_ERROR THEN
960 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
961 IBE_Util.Debug('Expected exception in IBE_Quote_Checkout_Pvt.SubmitQuote');
962 END IF;
963 ROLLBACK TO SUBMITQUOTE_PVT;
964 x_return_status := FND_API.G_RET_STS_ERROR;
965 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
966 p_count => x_msg_count ,
967 p_data => x_msg_data);
968 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
969 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
970 IBE_Util.Debug('Unexpected exception in IBE_Quote_Checkout_Pvt.SubmitQuote');
971 END IF;
972
973 ROLLBACK TO SUBMITQUOTE_PVT;
974 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
975 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
976 p_count => x_msg_count ,
977 p_data => x_msg_data);
978 WHEN OTHERS THEN
979 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
980 IBE_Util.Debug('Unknown exception in IBE_Quote_Checkout_Pvt.SubmitQuote');
981 END IF;
982
983 ROLLBACK TO SUBMITQUOTE_PVT;
984 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
985 IF FND_Msg_Pub.Check_Msg_Level(FND_Msg_Pub.G_MSG_LVL_UNEXP_ERROR) THEN
986 FND_Msg_Pub.Add_Exc_Msg(G_PKG_NAME,
987 L_API_NAME);
988 END IF;
989 FND_Msg_Pub.Count_And_Get(p_encoded => FND_API.G_FALSE,
990 p_count => x_msg_count ,
991 p_data => x_msg_data);
992 END SubmitQuote;
993 END IBE_Quote_Checkout_Pvt;