DBA Data[Home] [Help]

PACKAGE BODY: APPS.IBE_QUOTE_CHECKOUT_PVT

Source


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;