DBA Data[Home] [Help]

PACKAGE BODY: APPS.IBE_ONECLK_PVT

Source


1 PACKAGE BODY ibe_oneclk_pvt AS
2 /* $Header: IBEVOCPB.pls 120.5 2006/05/16 04:56:29 knachiap ship $ */
3 
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'ibe_oneclk_pvt';
5 l_true VARCHAR2(1) := FND_API.G_TRUE;
6 
7 procedure Submit_Quotes(
8  errbuf OUT NOCOPY VARCHAR2,
9  retcode OUT NOCOPY NUMBER
10 ) is
11 
12  l_api_name    CONSTANT VARCHAR2(30) := 'Get_Settings';
13  l_api_version CONSTANT NUMBER       := 1.0;
14 
15  p_commit           VARCHAR2(1) := FND_API.g_true;
16  p_init_msg_list    VARCHAR2(1) := FND_API.g_true;
17  x_return_status    VARCHAR2(1000);
18  x_msg_count        NUMBER;
19  x_msg_data         VARCHAR2(1000);
20  x_last_update_date DATE;
21 
22  l_order_header_rec   aso_quote_pub.Order_Header_Rec_Type ;
23  l_qte_header_rec     aso_quote_pub.Qte_Header_Rec_Type;
24  l_payment_tbl        aso_quote_pub.Payment_Tbl_Type;
25  l_payment_rec        aso_quote_pub.Payment_Rec_Type;
26  lx_payment_tbl       aso_quote_pub.Payment_Tbl_Type;
27 
28  l_cc_trxn_rec        ASO_PAYMENT_INT.CC_Trxn_Rec_Type;
29  lx_cc_trxn_out_rec   ASO_PAYMENT_INT.CC_TRXN_OUT_REC_TYPE;
30 
31  l_control_rec        aso_quote_pub.Submit_Control_Rec_Type;
32 
33  l_max_date              DATE;
34  l_earliest_time         DATE;
35  l_consolidation_time_n  number := 60/1440; -- default to 60 minutes
36  l_consolidation_time_s  varchar2(240);
37  l_auth_pmt_offline_s    varchar2(240);
38  l_oneclick_id           NUMBER;
39 
40  my_message              VARCHAR2(2000);
41  l_count_good            NUMBER := 0;
42  l_count_fail            NUMBER := 0;
43  l_quote_status          aso_quote_statuses_vl.status_code%type;
44  l_contract_template_id  NUMBER;
45  l_hold_flag             VARCHAR2(1);
46 
47 
48  CURSOR c_quotes(c_earliest_time DATE) IS
49  SELECT  h.quote_header_id,
50   h.total_quote_price,
51   h.party_id,
52   h.cust_account_id,
53   h.org_id
54  FROM aso_quote_headers h
55  WHERE
56   trunc(h.quote_expiration_date) >= trunc(sysdate) and
57   h.quote_source_code = 'IStore Oneclick' and
58   h.order_id is null and
59   h.last_update_date < c_earliest_time;
60 
61  CURSOR c_settings(c_party_id NUMBER, c_acct_id NUMBER) IS
62  SELECT  ord_oneclick_id
63  FROM IBE_ORD_ONECLICK
64  WHERE
65   party_id = c_party_id and
66   cust_account_id = c_acct_id;
67 
68  CURSOR c_quote_status_code (quote_hdr_id number) is
69     select status_code
70     from aso_quote_headers_all a,   aso_quote_statuses_vl b
71     where quote_header_id = quote_hdr_id
72     and a.quote_status_id = b.quote_status_id;
73 
74  rec_quote_status_code   c_quote_status_code%rowtype;
75 
76 BEGIN
77 
78 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
79   IBE_Util.Debug('start Submit Quotes');
80 END IF;
81 
82  FND_FILE.PUT_LINE(FND_FILE.LOG, 'Starting ibe_oneclk_pvt.Submit_Quotes Concurrent Program for organization id ' || FND_PROFILE.VALUE('ASO_PRODUCT_ORGANIZATION_ID'));
83  FND_FILE.PUT_LINE(FND_FILE.LOG, 'Starting ibe_oneclk_pvt.Submit_Quotes Concurrent Program for MO organization id ' || MO_GLOBAL.get_current_org_id());
84  SAVEPOINT  Submit_Quotes_Pvt;
85  -- Standard call to check for call compatibility.
86  IF NOT FND_API.Compatible_API_Call (l_api_version,
87                                      1.0          ,
88                                      l_api_name   ,
89                                      G_PKG_NAME   )
90  THEN
91   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
92  END IF;
93  -- Initialize message list if p_init_msg_list is set to TRUE.
94  IF FND_API.to_Boolean( p_init_msg_list ) THEN
95   FND_MSG_PUB.initialize;
96  END IF;
97 
98  -- Initialize API rturn status to success
99  x_return_status := FND_API.g_ret_sts_success;
100 
101  FND_PROFILE.get('IBE_1CLICK_CONSOLIDATION_TIME',l_consolidation_time_s);
102  FND_FILE.PUT_LINE(FND_FILE.LOG,'profile variable IBE_1CLICK_CONSOLIDATION_TIME:' || l_consolidation_time_s);
103  -- convert to number and divide by minutes in a day to express in
104  -- terms of days or fraction thereof
105  if (l_consolidation_time_s is not null) then
106    l_consolidation_time_n :=  to_number(l_consolidation_time_s) / 1440;
107  end if;
108  l_earliest_time := sysdate - l_consolidation_time_n;
109  FND_FILE.PUT_LINE(FND_FILE.LOG,'Looking for quotes last updated before: ' || to_char(l_earliest_time,'DD-MON-YYYY:HH:MI:SS'));
110 
111  open c_quotes(l_earliest_time);
112  loop
113   -- give each loop a fair start
114   x_return_status := FND_API.g_ret_sts_success;
115   fetch c_quotes into
116     l_qte_header_rec.quote_header_id,
117     l_qte_header_rec.payment_amount,
118     l_qte_header_rec.party_id,
119     l_qte_header_rec.cust_account_id,
120     l_qte_header_rec.org_id;
121     exit when c_quotes%NOTFOUND;
122 
123 FND_FILE.PUT_LINE(FND_FILE.LOG,' ');
124 FND_FILE.PUT_LINE(FND_FILE.LOG,'#####  PROCESSING QUOTE ID:' || l_qte_header_rec.quote_header_id || ' #####');
125 
126 
127 -- if error check email and maybe insert a row for email notification
128 -- dbms_output.put_line('OneClick Concurrent Trying to Submit...');
129 -- Whether auth payment succeeds or not try to submit the quote
130 -- bug 2426483 - set to gmiss so proper defaulting will happen in IBE_QUOTE_CHECKOUT_PVT
131 l_control_rec.BOOK_FLAG := FND_API.G_MISS_CHAR;
132 FND_FILE.PUT_LINE(FND_FILE.LOG,'calling IBE_QUOTE_CHECKOUT_PVT.submitQuote ' || to_char(sysdate,'DD-MON-YYYY:HH24:MI:SS'));
133 FND_FILE.PUT_LINE(FND_FILE.LOG,'l_control_rec.BOOK_FLAG ' || l_control_rec.BOOK_FLAG);
134 
135 --Need to call Contracts expert engine before placing the order to refresh the template with latest terms
136 --if user has made any changes to the cart.
137 --This needs to be done only if the quote status is not "APPROVED"
138 IF (FND_Profile.Value('OKC_ENABLE_SALES_CONTRACTS') = 'Y' ) THEN --Only if contracts is enabled
139   l_quote_status := IBE_QUOTE_MISC_PVT.get_aso_quote_status(l_qte_header_rec.quote_header_id);
140 
141   IF(upper(l_quote_status) <> 'APPROVED') THEN
142     /*mannamra: changes for MOAC: Bug 4682364 	*/
143     --l_contract_template_id := FND_PROFILE.VALUE('ASO_DEFAULT_CONTRACT_TEMPLATE'); old style
144       l_contract_template_id := to_number(ASO_UTILITY_PVT.GET_OU_ATTRIBUTE_VALUE(ASO_UTILITY_PVT.G_DEFAULT_CONTRACT_TEMPLATE)); --New style
145     /*mannamra: end of changes for MOAC*/
146 
147     IF (l_contract_template_id is not null) THEN
148 
149       OKC_XPRT_INT_GRP.get_contract_terms(
150             p_api_version    => 1.0                   ,
151             p_init_msg_list  => FND_API.g_false       ,
152             P_document_type  => 'QUOTE'               ,
153             P_document_id    => l_qte_header_rec.quote_header_id     ,
154             P_template_id    => l_contract_template_id,
155             P_called_from_UI => 'N'                   ,
156             P_run_xprt_flag  => 'Y'                   ,
157             x_return_status  => x_return_status       ,
158             x_msg_count      => x_msg_count           ,
159             x_msg_data       => x_msg_data            )  ;
160 
161       IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
162         RAISE FND_API.G_EXC_ERROR;
163       END IF;
164       IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
165         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
166       END IF;
167     END IF;
168   END IF; --if quote_status not approved
169 
170 END IF; -- if contracs enabled
171 
172 IBE_QUOTE_CHECKOUT_PVT.submitQuote(
173        P_Api_Version_Number => 1.0,
174        P_Init_Msg_List      => FND_API.G_TRUE,
175        P_commit             => FND_API.G_FALSE,
176        P_quote_Header_Id    => l_qte_header_rec.quote_header_id,
177 
178        /* -- accept defaults for these parameters
179          ,p_last_update_date         in  DATE     := FND_API.G_MISS_DATE
180          ,p_sharee_party_Id          IN  NUMBER   := FND_API.G_MISS_NUM
181          ,p_sharee_cust_account_id   IN  NUMBER   := FND_API.G_MISS_NUM
182          ,p_sharee_number       IN  NUMBER   := FND_API.G_MISS_NUM
183          ,p_customer_comments        IN  VARCHAR2 := FND_API.G_MISS_CHAR
184          ,p_reason_code              IN  VARCHAR2 := FND_API.G_MISS_CHAR
185          ,p_salesrep_email_id        IN  VARCHAR2 := FND_API.G_MISS_CHAR
186        */
187        P_submit_Control_Rec => l_control_rec,
188        -- 9/17/02: added to not validate the user
189        p_validate_user      => FND_API.G_FALSE,
190 
191        x_order_header_rec   => l_order_header_rec,
192        x_Return_Status      => x_return_status ,
193        x_Msg_Count          => x_msg_count ,
194        x_Msg_Data           => x_msg_data,
195        x_hold_flag          => l_hold_flag  );
196 
197 FND_FILE.PUT_LINE(FND_FILE.LOG,'back from IBE_QUOTE_CHECKOUT_PVT.submitQuote ' || to_char(sysdate,'DD-MON-YYYY:HH24:MI:SS'));
198 
199 if x_return_status <> FND_API.g_ret_sts_success then
200   l_count_fail := l_count_fail + 1;
201   FND_MESSAGE.SET_NAME('IBE','IBE_EXPR_PLSQL_API_ERROR');
202   FND_MESSAGE.SET_TOKEN ( '0' , 'CONCURRENT PROGRAM - IBE_QUOTE_CHECKOUT_PVT.submitQuote' );
203   FND_MESSAGE.SET_TOKEN ( '1' , x_return_status );
204   FND_MSG_PUB.Add;
205 
206   if x_return_status = FND_API.G_RET_STS_ERROR then
207     null;
208   elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
209     null;
210   end if;
211 
212   FND_FILE.PUT_LINE(FND_FILE.LOG,'Unsuccessful call to IBE_QUOTE_CHECKOUT_PVT.submitQuote');
213   FND_FILE.PUT_LINE(FND_FILE.LOG,'Messages from FND_MSG_PUB....(if any):');
214   FND_FILE.PUT_LINE(FND_FILE.LOG, '    ' || fnd_msg_pub.get(p_encoded => FND_API.g_false));
215   FND_FILE.PUT_LINE(FND_FILE.LOG, '    IBE_QUOTE_CHECKOUT_PVT.submitQuote returned ' || x_msg_count || ' messages.');
216   if x_msg_count = 1 then
217     FND_FILE.PUT_LINE(FND_FILE.LOG, '    ' || x_msg_data);
218   else
219 
220     for i in 1..x_msg_count loop
221       FND_FILE.PUT_LINE(FND_FILE.LOG, '    msg ' || i || ': ' || fnd_msg_pub.get(p_encoded => FND_API.g_false));
222     end loop;
223   end if;
224 
225 else
226   FND_FILE.PUT_LINE(FND_FILE.LOG,'SUCCESSFUL SUBMISSION - order number: ' || l_order_header_rec.order_number || ' / order status: ' || l_order_header_rec.status);
227   l_count_good := l_count_good + 1;
228   FND_FILE.PUT_LINE(FND_FILE.LOG,'Hold_flag is '||l_hold_flag);
229 end if;
230 
231 FND_FILE.PUT_LINE(FND_FILE.LOG,'#####  DONE PROCESSING QUOTE ID:' || l_qte_header_rec.quote_header_id || ' #####');
232 IF FND_API.To_Boolean( p_commit ) THEN
233   COMMIT WORK;
234 END IF;
235 
236 end loop L_BIG_LOOP;
237 close c_quotes;
238 
239 
240 FND_FILE.PUT_LINE(FND_FILE.LOG, '**** Finished running ibe_oneclk_pvt.Submit_Quotes Concurrent Program for organization id ' || FND_PROFILE.VALUE('ASO_PRODUCT_ORGANIZATION_ID') || ' ****');
241 FND_FILE.PUT_LINE(FND_FILE.LOG, 'Successful submissions: ' || to_char(l_count_good) || ' Failed to submit: ' || to_char(l_count_fail));
242 
243 -- for the other log file
244 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '**** Ran ibe_oneclk_pvt.Submit_Quotes Concurrent Program for organization id ' || FND_PROFILE.VALUE('ASO_PRODUCT_ORGANIZATION_ID') || ' ****');
245 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Successful submissions: ' || to_char(l_count_good) || ' Failed to submit: ' || to_char(l_count_fail));
246 
247 IF FND_API.To_Boolean( p_commit ) THEN
248   COMMIT WORK;
249 END IF;
250 FND_MSG_PUB.Count_And_Get
251      (p_encoded   => FND_API.G_FALSE,
252       p_count     => x_msg_count,
253       p_data      => x_msg_data);
254 
255 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
256   IBE_Util.Debug('Exit submit quotes');
257 END IF;
258 
259 EXCEPTION
260   WHEN FND_API.G_EXC_ERROR THEN
261     ROLLBACK TO Submit_Quotes_Pvt;
262     x_return_status := FND_API.G_RET_STS_ERROR ;
263     FND_FILE.PUT_LINE(FND_FILE.LOG, 'Expected Error exception.  Successful submissions: ' || to_char(l_count_good) || ' Failed to submit: ' || to_char(l_count_fail));
264     errbuf := fnd_message.get;
265     retcode := 2;
266 
267     FND_MSG_PUB.Count_And_Get(
268      p_encoded   => FND_API.G_FALSE,
269      p_count     => x_msg_count,
270      p_data      => x_msg_data     );
271 
272  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
273   ROLLBACK TO Submit_Quotes_Pvt;
274   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
275   FND_FILE.PUT_LINE(FND_FILE.LOG, 'Unexpected Error exception.  Successful submissions: ' || to_char(l_count_good) || ' Failed to submit: ' || to_char(l_count_fail));
276   errbuf := fnd_message.get;
277   retcode := 2;
278 
279   FND_MSG_PUB.Count_And_Get(
280     p_encoded => FND_API.G_FALSE,
281     p_count   => x_msg_count,
282     p_data    => x_msg_data );
283 
284  WHEN OTHERS THEN
285   ROLLBACK TO Submit_Quotes_Pvt;
286   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
287 
288   FND_FILE.PUT_LINE(FND_FILE.LOG, 'Other Error exception.  Successful submissions: ' || to_char(l_count_good) || ' Failed to submit: ' || to_char(l_count_fail));
289 
290   errbuf  := fnd_message.get;
291   retcode := 2;
292   IF  FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
293   THEN
294     FND_MSG_PUB.Add_Exc_Msg(
295              G_PKG_NAME,
296              l_api_name);
297   END IF;
298 
299     FND_MSG_PUB.Count_And_Get(
300             p_encoded => FND_API.G_FALSE,
301             p_count   => x_msg_count,
302             p_data      => x_msg_data);
303 
304 end Submit_Quotes;
305 
306 end ibe_oneclk_pvt;