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