[Home] [Help]
PACKAGE BODY: APPS.IBE_QUOTE_SAVESHARE_PVT
Source
1 PACKAGE BODY IBE_QUOTE_SAVESHARE_pvt as
2 /* $Header: IBEVQSSB.pls 120.3 2006/07/18 11:00:01 aannamal ship $ */
3 -- Start of Comments
4 -- Package name : IBE_QUOTE_SAVESHARE_pvt
5 -- Purpose :
6 -- NOTE :
7
8 -- End of Comments
9
10 -- Default number of records fetch per call
11 G_PKG_NAME CONSTANT VARCHAR2(30) := 'IBE_QUOTE_SAVESHARE_pvt';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'IBEVQSSB.pls';
13 l_true VARCHAR2(1) := FND_API.G_TRUE;
14
15 cursor c_is_shared_cart(c_qte_hdr_id NUMBER) is
16 select count(*) yes_shared_cart
17 from ibe_sh_quote_access
18 where quote_header_id = c_qte_hdr_id
19 and nvl(end_date_active,sysdate+1) > sysdate;
20
21 rec_is_shared_cart c_is_shared_cart%rowtype;
22
23 FUNCTION get_Config_Rev_Nbr(p_config_hdr_id IN NUMBER,
24 p_config_rev_nbr IN NUMBER)
25 RETURN NUMBER IS
26 CURSOR c_chk_rev_nbr IS
27 SELECT config_rev_nbr
28 FROM cz_config_details_v
29 WHERE config_hdr_id = p_config_hdr_id
30 AND config_rev_nbr = p_config_rev_nbr;
31
32 CURSOR c_max_rev_nbr IS
33 SELECT MAX(config_rev_nbr)
34 FROM cz_config_details_v
35 WHERE config_hdr_id = p_config_hdr_id;
36
37 l_result_rev_nbr NUMBER;
38
39 BEGIN
40 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
41 IBE_UTIL.Debug(' => get_Config_Rev_Nbr(' || p_config_hdr_id || ', ' || p_config_rev_nbr || ') Begins');
42 END IF;
43 OPEN c_chk_rev_nbr;
44 FETCH c_chk_rev_nbr INTO l_result_rev_nbr;
45 IF c_chk_rev_nbr%NOTFOUND THEN
46 -- If revision nbr doesn't exist get the max from config
47 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
48 IBE_UTIL.Debug(' => get_Config_Rev_Nbr Revision Not Found. Looking for Max revision');
49 END IF;
50 OPEN c_max_rev_nbr;
51 FETCH c_max_rev_nbr INTO l_result_rev_nbr;
52 CLOSE c_max_rev_nbr;
53 l_result_rev_nbr := NVL(l_result_rev_nbr, p_config_rev_nbr);
54 END IF;
55 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
56 IBE_UTIL.Debug(' => get_Config_Rev_Nbr Ends [ Result=' || l_result_rev_nbr || ' ] ');
57 END IF;
58 CLOSE c_chk_rev_nbr;
59
60 RETURN l_result_rev_nbr;
61 END get_Config_Rev_Nbr;
62
63 FUNCTION getLineTblForControlledCopy(
64 p_quote_header_Id IN NUMBER
65 ) RETURN ASO_QUOTE_PUB.QTE_LINE_TBL_TYPE
66 IS
67
68 l_qte_line_rec ASO_QUOTE_PUB.QTE_LINE_REC_TYPE;
69 l_qte_line_tbl ASO_QUOTE_PUB.QTE_LINE_TBL_TYPE;
70 CURSOR c_getlinetbl(l_quote_header_id number) IS
71 SELECT l.QUOTE_LINE_ID
72 ,l.CREATION_DATE
73 ,l.CREATED_BY
74 ,l.LAST_UPDATE_DATE
75 ,l.LAST_UPDATED_BY
76 ,l.LAST_UPDATE_LOGIN
77 ,l.REQUEST_ID
78 ,l.PROGRAM_APPLICATION_ID
79 ,l.PROGRAM_ID
80 ,l.PROGRAM_UPDATE_DATE
81 ,l.QUOTE_HEADER_ID
82 ,l.ORG_ID
83 ,l.LINE_CATEGORY_CODE
84 ,l.ITEM_TYPE_CODE
85 ,l.LINE_NUMBER
86 ,l.START_DATE_ACTIVE
87 ,l.END_DATE_ACTIVE
88 ,l.ORDER_LINE_TYPE_ID
89 ,l.ORGANIZATION_ID
90 ,l.INVENTORY_ITEM_ID
91 ,l.QUANTITY
92 ,l.UOM_CODE
93 ,l.MARKETING_SOURCE_CODE_ID
94 ,l.CURRENCY_CODE
95 ,l.RELATED_ITEM_ID
96 ,l.ITEM_RELATIONSHIP_TYPE
97 ,l.ACCOUNTING_RULE_ID
98 ,l.INVOICING_RULE_ID
99 ,l.SPLIT_SHIPMENT_FLAG
100 ,l.BACKORDER_FLAG
101 ,l.agreement_id -- agreement
102 ,l.commitment_id -- commitment
103 From aso_quote_lines l
104 Where l.QUOTE_HEADER_ID = l_QUOTE_HEADER_ID
105 Order by l.quote_line_id;
106 begin
107
108 open c_getlinetbl(p_quote_header_id);
109 loop
110 fetch c_getlinetbl into
111 l_qte_line_rec.QUOTE_LINE_ID
112 ,l_qte_line_rec.CREATION_DATE
113 ,l_qte_line_rec.CREATED_BY
114 ,l_qte_line_rec.LAST_UPDATE_DATE
115 ,l_qte_line_rec.LAST_UPDATED_BY
116 ,l_qte_line_rec.LAST_UPDATE_LOGIN
117 ,l_qte_line_rec.REQUEST_ID
118 ,l_qte_line_rec.PROGRAM_APPLICATION_ID
119 ,l_qte_line_rec.PROGRAM_ID
120 ,l_qte_line_rec.PROGRAM_UPDATE_DATE
121 ,l_qte_line_rec.QUOTE_HEADER_ID
122 ,l_qte_line_rec.ORG_ID
123 ,l_qte_line_rec.LINE_CATEGORY_CODE
124 ,l_qte_line_rec.ITEM_TYPE_CODE
125 ,l_qte_line_rec.LINE_NUMBER
126 ,l_qte_line_rec.START_DATE_ACTIVE
127 ,l_qte_line_rec.END_DATE_ACTIVE
128 ,l_qte_line_rec.ORDER_LINE_TYPE_ID
129 ,l_qte_line_rec.ORGANIZATION_ID
130 ,l_qte_line_rec.INVENTORY_ITEM_ID
131 ,l_qte_line_rec.QUANTITY
132 ,l_qte_line_rec.UOM_CODE
133 ,l_qte_line_rec.MARKETING_SOURCE_CODE_ID
134 ,l_qte_line_rec.CURRENCY_CODE
135 ,l_qte_line_rec.RELATED_ITEM_ID
136 ,l_qte_line_rec.ITEM_RELATIONSHIP_TYPE
137 ,l_qte_line_rec.ACCOUNTING_RULE_ID
138 ,l_qte_line_rec.INVOICING_RULE_ID
139 ,l_qte_line_rec.SPLIT_SHIPMENT_FLAG
140 ,l_qte_line_rec.BACKORDER_FLAG
141 ,l_qte_line_rec.AGREEMENT_ID
142 ,l_qte_line_rec.COMMITMENT_ID;
143 EXIT WHEN c_getlinetbl%NOTFOUND;
144 l_qte_line_tbl(l_qte_line_tbl.count+1) := l_qte_line_rec;
145 END LOOP;
146 CLOSE c_getlinetbl;
147 RETURN l_qte_line_tbl;
148 END getLineTblForControlledCopy;
149
150 Procedure Copy_Lines(
151 p_api_version_number IN NUMBER
152 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
153 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
154 ,X_Return_Status OUT NOCOPY VARCHAR2
155 ,X_Msg_Count OUT NOCOPY NUMBER
156 ,X_Msg_Data OUT NOCOPY VARCHAR2
157
158 ,p_from_quote_header_id IN NUMBER
159 ,p_to_quote_header_id IN NUMBER
160 ,p_mode IN VARCHAR2 := FND_API.G_MISS_CHAR
161 ,x_qte_line_tbl OUT NOCOPY ASO_Quote_Pub.qte_line_tbl_type
162 ,x_qte_line_dtl_tbl OUT NOCOPY ASO_Quote_Pub.Qte_Line_Dtl_tbl_Type
163 ,x_line_attr_ext_tbl OUT NOCOPY ASO_Quote_Pub.Line_Attribs_Ext_tbl_Type
164 ,x_line_rltship_tbl OUT NOCOPY ASO_Quote_Pub.Line_Rltship_tbl_Type
165 ,x_ln_price_attributes_tbl OUT NOCOPY ASO_Quote_Pub.Price_Attributes_Tbl_Type
166 ,x_Price_Adjustment_Tbl IN OUT NOCOPY ASO_Quote_Pub.Price_Adj_Tbl_Type
167 ,x_Price_Adj_Rltship_Tbl IN OUT NOCOPY ASO_Quote_Pub.Price_Adj_Rltship_Tbl_Type
168 )
169 IS
170
171 l_api_name CONSTANT VARCHAR2(30) := 'Copy_lines';
172 l_api_version CONSTANT NUMBER := 1.0;
173
174 l_qte_line_dtl_tbl ASO_Quote_Pub.Qte_Line_Dtl_tbl_Type;
175 l_line_rltship_tbl ASO_Quote_Pub.Line_Rltship_tbl_Type;
176 l_line_attr_ext_tbl ASO_Quote_Pub.Line_Attribs_Ext_tbl_Type;
177 l_ln_price_attributes_tbl ASO_Quote_Pub.Price_Attributes_Tbl_Type;
178
179 l_old_config_hdr_id NUMBER;
180 l_old_config_rev_nbr NUMBER;
181
182 l_new_config_hdr_id NUMBER;
183 l_new_config_rev_nbr NUMBER;
184 --l_return_value NUMBER;
185
186 -- added 12/22/03: PRG, no line merge
187 l_Price_Adjustment_Tbl_ALL ASO_Quote_Pub.Price_Adj_Tbl_Type;
188 l_Price_Adjustment_Tbl ASO_Quote_Pub.Price_Adj_Tbl_Type;
189 l_Price_Adj_Rltship_Tbl ASO_Quote_Pub.Price_Adj_Rltship_Tbl_Type;
190
191 --added for 11.5.11 Duplicate Cart feature
192 l_permission_to_create_agrmt BOOLEAN;
193 l_use_line_agrmts VARCHAR2(2);
194 l_use_commitments VARCHAR2(2);
195
196
197 -- ER#4025142
198 l_ret_status VARCHAR2(1);
199 l_msg_count INTEGER;
200 l_orig_item_id_tbl CZ_API_PUB.number_tbl_type;
201 l_new_item_id_tbl CZ_API_PUB.number_tbl_type;
202
203 BEGIN
204 -- Standard Start of API savepoint
205 SAVEPOINT COPY_LINES_pvt;
206 -- Standard call to check for call compatibility.
207 IF NOT FND_API.Compatible_API_Call (l_api_version,
208 P_Api_Version_Number,
209 l_api_name,
210 G_PKG_NAME )
211 THEN
212 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
213 END IF;
214 -- Initialize message list IF p_init_msg_list is set to TRUE.
215 IF FND_API.to_Boolean( p_init_msg_list ) THEN
216 FND_MSG_PUB.initialize;
217 END IF;
218
219 -- Initialize API return status to success
220 x_return_status := FND_API.G_RET_STS_SUCCESS;
221
222 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
223 ibe_util.debug('p_mode='|| p_mode);
224 END IF;
225
226 -- New api call to get line tbl in p_mode = 'CONTROLLED_COPY', currently this mode is used in
227 -- duplicate cart of shared carts/quotes.
228 IF p_mode = 'CONTROLLED_COPY' THEN
229 x_qte_line_tbl := getLineTblForControlledCopy(p_from_quote_header_id);
230
231 -- To check user has create agreement permission.
232 l_permission_to_create_agrmt := ibe_util.check_user_permission(
233 p_permission => 'IBE_USE_PRICING_AGREEMENT' );
234 -- To check Line level agreement feature is enabled.
235 l_use_line_agrmts := FND_Profile.Value('IBE_USE_LINE_AGREEMENTS');
236
237 -- To check Commitment feature is enabled
238 l_use_commitments := FND_Profile.Value('IBE_USE_COMMITMENTS');
239
240 -- Check if user has agreement permission and profile is ON, then if agreement is available then erase it from line record.
241 IF (l_permission_to_create_agrmt) and (l_use_line_agrmts = 'Y') THEN
242 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
243 ibe_util.debug('user has agreement permission and agreement feature is turned on, so keep the agrmt info');
244 END IF;
245 ELSE
246 -- check if agreementId is not null then erase agreement and pricelist.
247 FOR k IN 1..x_qte_line_tbl.COUNT LOOP
248 IF x_qte_line_tbl(k).agreement_id is not null THEN
249 x_qte_line_tbl(k).agreement_id := null;
250 x_qte_line_tbl(k).price_list_id := null;
251 END IF;
252 END LOOP;
253 END IF;
254 ELSE
255 x_qte_line_tbl := IBE_Quote_Misc_pvt.getLineTbl
256 (p_from_quote_header_id);
257 l_Price_Adjustment_Tbl_ALL := IBE_Quote_Misc_pvt.getAllLinesPrcAdjTbl (p_from_quote_header_id);
258 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
259 ibe_util.debug('reusing x_Price_Adjustment_Tbl -- size='|| x_Price_Adjustment_Tbl.count);
260 ibe_util.debug('reusing x_Price_Adj_Rltship_Tbl -- size='|| x_Price_Adj_Rltship_Tbl.count);
261 ibe_util.debug('l_Price_Adjustment_Tbl_ALL size is='|| l_Price_Adjustment_Tbl_ALL.count);
262 END IF;
263
264 END IF;
265
266 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
267 ibe_util.debug('line number is='|| x_qte_line_tbl.count);
268 END IF;
269
270
271 FOR i IN 1..x_qte_line_tbl.COUNT LOOP
272
273 l_qte_line_dtl_tbl := IBE_Quote_Misc_pvt.getlineDetailTbl
274 (x_qte_line_tbl(i).quote_line_id);
275 FOR j IN 1..l_qte_line_dtl_tbl.COUNT LOOP
276 IF l_qte_line_dtl_tbl(j).service_ref_line_id <> fnd_api.g_miss_num THEN
277 l_qte_line_dtl_tbl(j).service_ref_qte_line_index :=
278 IBE_Quote_Misc_pvt.getLineIndexFromLineId(l_qte_line_dtl_tbl(j).service_ref_line_id,
279 x_qte_line_tbl);
280 l_qte_line_dtl_tbl(j).service_ref_line_id := fnd_api.g_miss_num;
281 END IF;
282 l_qte_line_dtl_tbl(j).quote_line_detail_id := fnd_api.g_miss_num;
283 l_qte_line_dtl_tbl(j).operation_code := 'CREATE';
284 l_qte_line_dtl_tbl(j).qte_line_index := i;
285 l_qte_line_dtl_tbl(j).quote_line_id := fnd_api.g_miss_num;
286 x_qte_line_dtl_tbl(x_qte_line_dtl_tbl.count+1)
287 := l_qte_line_dtl_tbl(j);
288 END LOOP;
289
290
291 l_line_rltship_tbl := IBE_Quote_Misc_pvt.getlineRelationshipTbl(x_qte_line_tbl(i).quote_line_id);
292
293 FOR j IN 1..l_line_rltship_tbl.COUNT LOOP
294 IF NVL(l_line_rltship_tbl(j).relationship_type_code, '*') <> 'SERVICE' THEN
295 l_line_rltship_tbl(j).line_relationship_id := fnd_api.g_miss_num;
296 l_line_rltship_tbl(j).operation_code := 'CREATE';
297
298 l_line_rltship_tbl(j).qte_line_index := i;
299 l_line_rltship_tbl(j).related_qte_line_index
300 := IBE_Quote_Misc_pvt.getLineIndexFromLineId
301 ( l_line_rltship_tbl(j).related_quote_line_id
302 ,x_qte_line_tbl
303 );
304 l_line_rltship_tbl(j).quote_line_id := fnd_api.g_miss_num;
305 l_line_rltship_tbl(j).related_quote_line_id := fnd_api.g_miss_num;
306 x_line_rltship_tbl(x_line_rltship_tbl.count+1)
307 := l_line_rltship_tbl(j);
308 END IF;
309
310 END LOOP;
311
312 -- Setup the line attr ext and price attributes table only if p_mode <> 'CONTROLLED_COPY'
313
314 IF p_mode <> 'CONTROLLED_COPY' THEN
315
316 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
317 ibe_util.debug('regulat copy lines and copying line attr and price attributes');
318 END IF;
319
320 l_line_attr_ext_tbl := IBE_Quote_Misc_pvt.getLineAttrExtTbl
321 (x_qte_line_tbl(i).quote_line_id);
322
323 FOR j IN 1..l_line_attr_ext_tbl.COUNT LOOP
324 l_line_attr_ext_tbl(j).line_attribute_id := fnd_api.g_miss_num;
325 l_line_attr_ext_tbl(j).operation_code := 'CREATE';
326 l_line_attr_ext_tbl(j).qte_line_index := i;
327 l_line_attr_ext_tbl(j).quote_line_id := fnd_api.g_miss_num;
328 -- l_line_attr_ext_tbl(j).quote_header_id := p_to_quote_header_id;
329
330 x_line_attr_ext_tbl(x_line_attr_ext_tbl.count+1)
331 := l_line_attr_ext_tbl(j);
332 END LOOP;
333
334 l_ln_price_attributes_tbl := IBE_Quote_Misc_pvt.getlinePrcAttrTbl
335 (x_qte_line_tbl(i).quote_line_id);
336
337 FOR j IN 1..l_ln_price_attributes_tbl.COUNT LOOP
338 l_ln_price_attributes_tbl(j).price_attribute_id := fnd_api.g_miss_num;
339 l_ln_price_attributes_tbl(j).operation_code := 'CREATE';
340 l_ln_price_attributes_tbl(j).qte_line_index := i;
341 l_ln_price_attributes_tbl(j).quote_line_id := fnd_api.g_miss_num;
342 l_ln_price_attributes_tbl(j).quote_header_id := p_to_quote_header_id;
343 x_ln_price_attributes_tbl(x_ln_price_attributes_tbl.count+i)
344 := l_ln_price_attributes_tbl(j);
345 END LOOP;
346
347 -- added 12/22/03: PRG, no line merge
348 -- for each quote_line_id, get the price adjustment info
349 l_Price_Adjustment_Tbl := IBE_Quote_Misc_pvt.getLinePrcAdjTbl (x_qte_line_tbl(i).quote_line_id);
350 FOR j IN 1..l_Price_Adjustment_Tbl.COUNT LOOP
351
352 -- if Free Line, for each PRICE_ADJUSTMENT_ID, get the related info
353 if (x_qte_line_tbl(i).pricing_line_type_indicator = 'F') then
354 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
355 ibe_util.debug('x_qte_line_tbl(i).pricing_line_type_indicator='|| x_qte_line_tbl(i).pricing_line_type_indicator);
356 ibe_util.debug('before calling getLinePrcAdjRelTbl: l_Price_Adjustment_Tbl(j).PRICE_ADJUSTMENT_ID='|| l_Price_Adjustment_Tbl(j).PRICE_ADJUSTMENT_ID);
357 END IF;
358 l_Price_Adj_Rltship_Tbl := IBE_Quote_Misc_pvt.getLinePrcAdjRelTbl (l_Price_Adjustment_Tbl(j).PRICE_ADJUSTMENT_ID);
359 FOR k IN 1..l_Price_Adj_Rltship_Tbl.COUNT LOOP
360 l_Price_Adj_Rltship_Tbl(k).ADJ_RELATIONSHIP_ID := fnd_api.g_miss_num;
361 l_Price_Adj_Rltship_Tbl(k).operation_code := 'CREATE';
362
363 l_Price_Adj_Rltship_Tbl(k).RLTD_PRICE_ADJ_INDEX := x_Price_Adjustment_Tbl.count+j;
364
365 -- the following two values are for Qual Lines, we have to search the indices
366 l_Price_Adj_Rltship_Tbl(k).PRICE_ADJ_INDEX := IBE_Quote_Misc_pvt.getPrcAdjIndexFromPrcAdjId
367 (l_Price_Adj_Rltship_Tbl(k).PRICE_ADJUSTMENT_ID, l_Price_Adjustment_Tbl_ALL);
368 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
369 ibe_util.debug('New... need to pass qte_line_index');
370 END IF;
371 l_Price_Adj_Rltship_Tbl(k).QTE_LINE_INDEX := IBE_Quote_Misc_pvt.getLineIndexFromLineId(l_Price_Adj_Rltship_Tbl(k).quote_line_id, x_qte_line_tbl);
372 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
373 ibe_util.debug('New... and the qte_line_index is:'||l_Price_Adj_Rltship_Tbl(k).QTE_LINE_INDEX);
374 END IF;
375 -- clear out the other id's
376 l_Price_Adj_Rltship_Tbl(k).RLTD_PRICE_ADJ_Id := fnd_api.g_miss_num;
377 l_Price_Adj_Rltship_Tbl(k).PRICE_ADJUSTMENT_ID := fnd_api.g_miss_num;
378 l_Price_Adj_Rltship_Tbl(k).QUOTE_LINE_ID := fnd_api.g_miss_num;
379
380 x_Price_Adj_Rltship_Tbl(x_Price_Adj_Rltship_Tbl.count+1) := l_Price_Adj_Rltship_Tbl(k);
381 end loop; -- Looping through price adjustment relationships
382 end if; -- if Free Line
383
384 l_Price_Adjustment_Tbl(j).PRICE_ADJUSTMENT_ID := fnd_api.g_miss_num;
385 l_Price_Adjustment_Tbl(j).operation_code := 'CREATE';
386
387 l_Price_Adjustment_Tbl(j).qte_line_index := i;
388 l_Price_Adjustment_Tbl(j).quote_line_id := fnd_api.g_miss_num;
389 l_Price_Adjustment_Tbl(j).quote_header_id := p_to_quote_header_id;
390 x_Price_Adjustment_Tbl(x_Price_Adjustment_Tbl.count+1) := l_Price_Adjustment_Tbl(j);
391 END LOOP; -- Looping through price adjustments
392 END IF; -- for p_mode<>
393 END LOOP; -- end of get line information
394
395 FOR i in 1..x_qte_line_tbl.count loop
396 x_qte_line_tbl(i).operation_code := 'CREATE';
397 x_qte_line_tbl(i).quote_line_id := fnd_api.g_miss_num;
398 x_qte_line_tbl(i).quote_header_id := p_to_quote_header_id;
399 x_qte_line_tbl(i).line_number := fnd_api.g_miss_num;
400 END LOOP;
401
402 -- takes care of configuraton item
403 FOR i IN 1..x_qte_line_dtl_tbl.COUNT LOOP
404 IF x_qte_line_tbl(x_qte_line_dtl_tbl(i).qte_line_index).item_type_code
405 = 'MDL' THEN
406 l_old_config_hdr_id := x_qte_line_dtl_tbl(i).config_header_id;
407 l_old_config_rev_nbr := x_qte_line_dtl_tbl(i).config_revision_num;
408
409 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
410 IBE_UTIL.debug('old config id = '|| l_old_config_hdr_id);
411 IBE_UTIL.debug('old config rev number = '|| l_old_config_rev_nbr);
412 END IF;
413
414
415 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
416 IBE_UTIL.debug('call CZ_CONFIG_API_PUB.copy_configuration at'
417 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
418 END IF;
419
420 --ER#4025142
421 CZ_CONFIG_API_PUB.copy_configuration(p_api_version => l_api_version
422 ,p_config_hdr_id => l_old_config_hdr_id
423 ,p_config_rev_nbr => Get_Config_Rev_Nbr(l_old_config_hdr_id,
424 l_old_config_rev_nbr)
425 ,p_copy_mode => CZ_API_PUB.G_NEW_HEADER_COPY_MODE
426 ,x_config_hdr_id => l_new_config_hdr_id
427 ,x_config_rev_nbr => l_new_config_rev_nbr
428 ,x_orig_item_id_tbl => l_orig_item_id_tbl
429 ,x_new_item_id_tbl => l_new_item_id_tbl
430 ,x_return_status => l_ret_status
431 ,x_msg_count => l_msg_count
432 ,x_msg_data => x_msg_data);
433 IF (l_ret_status <> FND_API.G_RET_STS_SUCCESS OR l_orig_item_id_tbl.count > 0) THEN
434 RAISE FND_API.G_EXC_ERROR;
435 END IF;
436
437 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
438 IBE_UTIL.DEBUG('done CZ_CONFIG_API_PUB.Copy_Configuration at'
439 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
440 END IF;
441
442 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
443 IBE_UTIL.debug('new config id = '|| l_new_config_hdr_id);
444 IBE_UTIL.debug('new config rev number = '|| l_new_config_rev_nbr);
445 END IF;
446
447 -- update all other dtl table
448 FOR j in 1..x_qte_line_dtl_tbl.COUNT LOOP
449 IF ( x_qte_line_dtl_tbl(j).config_header_id = l_old_config_hdr_id
450 and x_qte_line_dtl_tbl(j).config_revision_num = l_old_config_rev_nbr )
451 THEN
452 x_qte_line_dtl_tbl(j).config_header_id := l_new_config_hdr_id;
453 x_qte_line_dtl_tbl(j).config_revision_num := l_new_config_rev_nbr;
454 END IF;
455 END LOOP;
456 END IF;
457 END LOOP;
458
459 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
460 ibe_util.debug('before out line number is='|| x_qte_line_tbl.count);
461 END IF;
462 -- Standard check of p_commit.
463 IF FND_API.To_Boolean( p_commit ) THEN
464 COMMIT WORK;
465 END IF;
466
467 -- Standard call to get message count and IF count is 1, get message info.
468 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
469 p_count => x_msg_count,
470 p_data => x_msg_data);
471 EXCEPTION
472 WHEN FND_API.G_EXC_ERROR THEN
473 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
474 ibe_util.debug('Expected exception in copy_lines');
475 END IF;
476 ROLLBACK TO COPY_LINES_pvt;
477 x_return_status := FND_API.G_RET_STS_ERROR;
478 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
479 p_count => x_msg_count,
480 p_data => x_msg_data);
481 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
482 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
483 ibe_util.debug('Unexpected exception in copy_lines');
484 END IF;
485 ROLLBACK TO COPY_LINES_pvt;
486 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
487 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
488 p_count => x_msg_count,
489 p_data => x_msg_data);
490 WHEN OTHERS THEN
491 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
492 ibe_util.debug('Unknown exception in copy_lines');
493 END IF;
494 ROLLBACK TO COPY_LINES_pvt;
495 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
496
497 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
498 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
499 l_api_name);
500 END IF;
501
502 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
503 p_count => x_msg_count,
504 p_data => x_msg_data);
505 END Copy_Lines;
506
507
508
509 PROCEDURE SaveSharee (
510 P_Api_Version_Number IN NUMBER
511 ,p_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE
512 ,p_Commit IN VARCHAR2 := FND_API.G_FALSE
513 ,p_Quote_Header_id IN NUMBER
514 ,p_emailAddress IN varchar2
515 ,p_privilegeType IN varchar2
516 ,p_recip_party_id IN NUMBER := FND_API.G_MISS_NUM
517 ,p_recip_cust_account_id IN NUMBER := FND_API.G_MISS_NUM
518 ,x_qte_access_rec OUT NOCOPY IBE_QUOTE_SAVESHARE_pvt.QUOTE_ACCESS_Rec_Type
519 ,X_Return_Status OUT NOCOPY VARCHAR2
520 ,X_Msg_Count OUT NOCOPY NUMBER
521 ,X_Msg_Data OUT NOCOPY VARCHAR2
522 )
523 IS
524 l_api_name CONSTANT VARCHAR2(30) := 'Savesharee';
525 l_api_version CONSTANT NUMBER := 1.0;
526 l_quote_sharee_id NUMBER;
527 l_quote_sharee_number NUMBER;
528 l_contact_point_id NUMBER;
529 l_quote_access_rec IBE_QUOTE_SAVESHARE_pvt.quote_access_rec_type
530 := IBE_QUOTE_SAVESHARE_pvt.g_miss_quote_access_rec;
531 l_qte_access_table IBE_QUOTE_SAVESHARE_pvt.quote_access_tbl_type
532 := IBE_QUOTE_SAVESHARE_pvt.g_miss_quote_access_tbl;
533
534 cursor c_get_sharee_id is
535 select quote_sharee_number
536 from ibe_sh_quote_access
537 where quote_sharee_id = (select max(quote_sharee_id)
538 from ibe_sh_quote_access I, hz_contact_points h
539 where i.contact_point_id = h.contact_point_id
540 and upper(h.owner_table_name) = 'IBE_SH_QUOTE_ACCESS'
541 and UPPER(h.email_address) = upper(p_emailaddress)
542 and quote_header_id = p_quote_header_id
543 and i.update_privilege_type_code = p_privilegeType);
544
545 rec_get_sharee_id c_get_sharee_id%rowtype;
546
547 BEGIN
548 -- Standard Start of API savepoint
549 SAVEPOINT SAVESHAREE_pvt;
550 -- Standard call to check for call compatibility.
551 IF NOT FND_API.Compatible_API_Call (l_api_version,
552 P_Api_Version_Number,
553 l_api_name,
554 G_PKG_NAME )
555 THEN
556 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
557 END IF;
558 -- Initialize message list IF p_init_msg_list is set to TRUE.
559 IF FND_API.to_Boolean( p_init_msg_list ) THEN
560 FND_MSG_PUB.initialize;
561 END IF;
562
563 -- Initialize API return status to success
564 x_return_status := FND_API.G_RET_STS_SUCCESS;
565
566 l_quote_access_rec.quote_header_id := p_quote_header_id;
567 l_quote_access_rec.update_privilege_type_code := p_privilegeType;
568 l_quote_access_rec.party_id := p_recip_party_id;
569 l_quote_access_rec.cust_account_id := p_recip_cust_account_id;
570 l_quote_access_rec.email_contact_address := p_emailAddress;
571 l_quote_access_rec.operation_code := 'CREATE';
572 l_qte_access_table(1) := l_quote_access_rec;
573 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
574 IBE_UTIL.DEBUG('Calling save_recipients to save recipient information');
575 END IF;
576 --DBMS_OUTPUT.PUT_LINE('Calling save_recipients to save recipient information ');
577 IF(nvl(l_qte_access_table.count,0) > 0) THEN
578
579 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
580 IBE_UTIL.DEBUG('Calling save_recipients to save recipient information');
581 END IF;
582 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
583 IBE_UTIL.DEBUG('l_qte_access_table(1).quote_header_id: '||l_qte_access_table(1).quote_header_id);
584 IBE_UTIL.DEBUG('l_qte_access_table(1).update_privilege_type_code: '|| l_qte_access_table(1).update_privilege_type_code);
585 IBE_UTIL.DEBUG('l_qte_access_table(1).party_id: '||l_qte_access_table(1).party_id);
586 IBE_UTIL.DEBUG('l_qte_access_table(1).cust_account_id: '||l_qte_access_table(1).cust_account_id);
587 IBE_UTIL.DEBUG('l_qte_access_table(1).email_contact_address: '||l_qte_access_table(1).email_contact_address);
588 END IF;
589 IBE_QUOTE_SAVESHARE_V2_PVT.save_recipients(
590 p_quote_access_tbl => l_qte_access_table ,
591 p_quote_header_id => p_quote_header_id ,
592 p_send_notif => FND_API.G_FALSE ,
593 p_api_version => P_Api_Version_Number ,
594 p_init_msg_list => fnd_api.g_false ,
595 p_commit => fnd_api.g_false ,
596 x_return_status => x_return_status ,
597 x_msg_count => x_msg_count ,
598 x_msg_data => x_msg_data );
599
600 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
601 RAISE FND_API.G_EXC_ERROR;
602 END IF;
603
604 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
605 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
606 END IF;
607
608 END IF; -- IF(nvl(p_quote_access_tbl.count,0)
609
610 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
611 IBE_UTIL.DEBUG('Done calling save_recipients to save recipient information');
612 END IF;
613 --DBMS_OUTPUT.PUT_LINE('Done calling save_recipients to save recipient information ');
614 for rec_get_sharee_id in c_get_sharee_id loop
615 l_quote_access_rec.quote_sharee_number := rec_get_sharee_id.quote_sharee_number;
616 exit when c_get_sharee_id%notfound;
617 end loop;
618
619 x_qte_access_rec := l_quote_access_rec;
620
621 -- Standard check of p_commit.
622 IF FND_API.To_Boolean( p_commit ) THEN
623 COMMIT WORK;
624 END IF;
625
626 -- Standard call to get message count and IF count is 1, get message info.
627 FND_MSG_PUB.Count_And_Get
628 ( p_encoded => FND_API.G_FALSE,
629 p_count => x_msg_count,
630 p_data => x_msg_data
631 );
632
633 EXCEPTION
634 WHEN FND_API.G_EXC_ERROR THEN
635 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
636 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.SaveSharee');
637 END IF;
638 ROLLBACK TO SAVESHAREE_pvt;
639 x_return_status := FND_API.G_RET_STS_ERROR;
640 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
641 p_count => x_msg_count,
642 p_data => x_msg_data);
643 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
644 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
645 ibe_util.debug('Unexpected exception in IBE_QUOTE_SAVESHARE_PVT.SaveSharee');
646 END IF;
647 ROLLBACK TO SAVESHAREE_pvt;
648 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
649 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
650 p_count => x_msg_count,
651 p_data => x_msg_data);
652 WHEN OTHERS THEN
653 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
654 ibe_util.debug('Unknown exception in IBE_QUOTE_SAVESHARE_PVT.SaveSharee');
655 END IF;
656 ROLLBACK TO SAVESHAREE_pvt;
657 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
658
659 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
660 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
661 l_api_name);
662 END IF;
663
664 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
665 p_count => x_msg_count,
666 p_data => x_msg_data);
667 END SAVESHAREE;
668
669 PROCEDURE SaveAsAndShare(
670 p_api_version_number IN NUMBER
671 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
672 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
673 ,x_return_status OUT NOCOPY VARCHAR2
674 ,x_msg_count OUT NOCOPY NUMBER
675 ,x_msg_data OUT NOCOPY VARCHAR2
676 ,p_from_quote_header_id IN NUMBER
677 ,p_from_last_update_date IN DATE
678 ,p_copy_only_header IN VARCHAR2 := FND_API.G_FALSE
679 ,p_to_Control_Rec IN ASO_Quote_Pub.Control_Rec_Type
680 := ASO_Quote_Pub.G_Miss_Control_Rec
681 ,p_to_Qte_Header_Rec IN ASO_Quote_Pub.Qte_Header_Rec_Type
682 ,p_to_hd_Shipment_rec IN ASO_Quote_Pub.Shipment_rec_Type
683 := ASO_Quote_Pub.G_MISS_SHIPMENT_rec
684 ,p_url IN VARCHAR2 := FND_API.G_MISS_CHAR
685 ,p_sharee_email_address IN jtf_varchar2_table_2000 := NULL
686 ,p_sharee_privilege_type IN jtf_varchar2_table_100 := NULL
687 ,p_comments IN VARCHAR2 := FND_API.G_MISS_CHAR
688 ,p_quote_retrieval_number IN NUMBER := FND_API.G_MISS_NUM
689 ,p_minisite_id IN NUMBER := FND_API.G_MISS_NUM
690 ,p_validate_user IN VARCHAR2 := FND_API.G_FALSE
691 ,x_to_quote_header_id OUT NOCOPY NUMBER
692 ,x_to_last_update_date OUT NOCOPY DATE
693 )
694 IS
695 l_api_name CONSTANT VARCHAR2(30) := 'SAVEASANDSHARE';
696 l_api_version CONSTANT NUMBER := 1.0;
697
698 l_party_id NUMBER ;
699 l_cust_account_id NUMBER ;
700 l_quote_number NUMBER := null;
701 l_quote_status_id NUMBER := null;
702
703 l_to_qte_header_rec ASO_Quote_Pub.qte_header_rec_type;
704
705 l_to_hd_shipment_tbl ASO_Quote_Pub.shipment_tbl_type;
706
707 l_to_qte_line_tbl ASO_Quote_Pub.qte_line_tbl_type;
708 l_to_line_rltship_tbl ASO_Quote_Pub.Line_Rltship_tbl_Type;
709 l_to_qte_line_dtl_tbl ASO_Quote_Pub.Qte_Line_Dtl_tbl_Type;
710 l_to_line_attr_ext_tbl ASO_Quote_Pub.Line_Attribs_Ext_tbl_Type;
711 l_to_ln_price_attributes_tbl ASO_Quote_Pub.Price_Attributes_Tbl_Type;
712
713 -- added 12/22/03: PRG, no line merge
714 l_Price_Adjustment_Tbl ASO_Quote_Pub.Price_Adj_Tbl_Type;
715 l_Price_Adj_Rltship_Tbl ASO_Quote_Pub.Price_Adj_Rltship_Tbl_Type;
716
717 CURSOR c_order_type(p_quote_header_id NUMBER) IS
718 SELECT order_type_id
719 FROM aso_quote_headers
720 WHERE quote_header_id = p_quote_header_id;
721 l_order_type_id NUMBER;
722
723
724 BEGIN
725 -- --IBE_UTIL.ENABLE_DEBUG;
726 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
727 IBE_Util.Debug('Begin IBE_QUOTE_SAVESHARE_pvt.SaveAsAndShare() at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
728 END IF;
729 -- Standard Start of API savepoint
730 SAVEPOINT SAVEASANDSHARE_pvt;
731 -- Standard call to check for call compatibility.
732 IF NOT FND_API.Compatible_API_Call (l_api_version,
733 P_Api_Version_Number,
734 l_api_name,
735 G_PKG_NAME )
736 THEN
737 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
738 END IF;
739 -- Initialize message list IF p_init_msg_list is set to TRUE.
740 IF FND_API.to_Boolean( p_init_msg_list ) THEN
741 FND_MSG_PUB.initialize;
742 END IF;
743
744 -- Initialize API return status to success
745 x_return_status := FND_API.G_RET_STS_SUCCESS;
746
747 -- User Authentication
748 IBE_Quote_Misc_pvt.Validate_User_Update(
749 p_init_msg_list => p_init_msg_list
750 ,p_quote_header_id => p_from_quote_header_id
751 ,p_party_id => p_to_Qte_Header_Rec.party_id
752 ,p_cust_account_id => p_to_Qte_Header_Rec.cust_account_id
753 ,p_quote_retrieval_number => p_quote_retrieval_number
754 ,p_validate_user => p_validate_user
755 ,x_return_status => x_return_status
756 ,x_msg_count => x_msg_count
757 ,x_msg_data => x_msg_data
758 );
759 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
760 RAISE FND_API.G_EXC_ERROR;
761 END IF;
762 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
763 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
764 END IF;
765
766
767 l_to_qte_header_rec := p_to_qte_header_rec;
768 -- get party_id and cust_account_id of quote_header_id
769 IBE_Quote_Misc_pvt.getQuoteOwner
770 ( p_api_version_number => p_api_version_number
771 ,p_quote_header_id => p_from_quote_header_id
772 ,x_party_id => l_Party_id
773 ,x_cust_account_id => l_Cust_account_id
774 ,X_Return_Status => x_return_status
775 ,X_Msg_Count => x_msg_count
776 ,X_Msg_Data => x_msg_data
777 );
778 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
779 RAISE FND_API.G_EXC_ERROR;
780 END IF;
781 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
782 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
783 END IF;
784
785
786 IF ( l_party_id = p_to_qte_header_rec.party_id
787 and l_cust_account_id = p_to_qte_header_rec.cust_account_id )
788 or ( p_to_qte_header_rec.party_id = fnd_api.g_miss_num or
789 p_to_qte_header_rec.cust_account_id = fnd_api.g_miss_num)
790 THEN
791 IF (l_to_qte_header_rec.quote_status_id <> fnd_api.g_miss_num) THEN
792 l_quote_status_id := l_to_qte_header_rec.quote_status_id;
793 END IF;
794
795 IF (l_to_qte_header_rec.quote_number <> fnd_api.g_miss_num) THEN
796 l_quote_number := l_to_qte_header_rec.quote_number;
797 END IF;
798
799 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
800 IBE_Util.Debug('ASO_Quote_Pub.Copy_Quote() starts at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
801 END IF;
802
803 ASO_Quote_Pub.Copy_Quote(
804 p_api_version_number => p_api_version_number
805 ,p_init_msg_list => FND_API.G_FALSE
806 ,p_commit => FND_API.G_FALSE
807 ,p_qte_header_id => p_from_quote_header_id
808 ,p_last_update_date => p_from_last_update_date
809 ,p_copy_only_header => p_copy_only_header
810 --,P_New_Version =>
811 ,P_Qte_Status_Id => l_quote_status_id -- default to null
812 ,P_Qte_Number => l_quote_number -- default to null
813 ,x_qte_header_id => l_to_qte_header_rec.quote_header_id
814 ,x_Return_Status => x_Return_Status
815 ,x_Msg_Count => x_Msg_Count
816 ,x_Msg_Data => x_Msg_Data);
817
818 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
819 IBE_Util.Debug('ASO_Quote_Pub.Copy_Quote() finishes at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
820 END IF;
821
822 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
823 RAISE FND_API.G_EXC_ERROR;
824 END IF;
825
826 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
827 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
828 END IF;
829
830 -- copy change the lastupdatedate, but order capture does not return it.
831 l_to_qte_header_rec.last_update_date
832 := IBE_Quote_Misc_pvt.getQuotelastUpdateDate
833 (l_to_qte_header_rec.quote_header_id);
834 ELSE
835 -- get order_type_id from the original quote header
836 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
837 IBE_Util.Debug('Getting order_type_id from original quote header ' || p_from_quote_header_id);
838 END IF;
839 OPEN c_order_type(p_from_quote_header_id);
840 FETCH c_order_type INTO l_order_type_id;
841 IF l_order_type_id IS NOT NULL
842 THEN
843 l_to_qte_header_rec.order_type_id := l_order_type_id;
844 END IF;
845 CLOSE c_order_type;
846 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
847 IBE_Util.Debug('order_type_id=' || l_order_type_id);
848 END IF;
849
850 -- get all line related information from original quote header id
851 Copy_Lines
852 ( p_api_version_number => p_api_version_number
853 ,p_init_msg_list => FND_API.G_FALSE
854 ,p_commit => FND_API.G_FALSE
855 ,x_Return_Status => x_Return_Status
856 ,x_Msg_Count => x_Msg_Count
857 ,x_Msg_Data => x_Msg_Data
858
859 ,p_from_quote_header_id => p_from_quote_header_id
860 ,p_to_quote_header_id => l_to_qte_header_rec.quote_header_id
861 ,x_qte_line_tbl => l_to_qte_line_tbl
862 ,x_qte_line_dtl_tbl => l_to_qte_line_dtl_tbl
863 ,x_line_attr_ext_tbl => l_to_line_attr_ext_tbl
864 ,x_line_rltship_tbl => l_to_line_rltship_tbl
865 ,x_ln_price_attributes_tbl => l_to_ln_price_attributes_tbl
866
867 ,x_Price_Adjustment_tbl => l_Price_Adjustment_tbl
868 ,x_Price_Adj_Rltship_tbl => l_Price_Adj_Rltship_tbl
869 );
870
871 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
872 RAISE FND_API.G_EXC_ERROR;
873 END IF;
874 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
875 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
876 END IF;
877 END IF;
878
879 l_to_hd_shipment_tbl(1) := p_to_hd_shipment_rec;
880 l_to_hd_shipment_tbl(1).quote_header_id := l_to_qte_header_rec.quote_header_id;
881
882 IBE_Quote_Save_pvt.save
883 ( p_api_version_number => p_api_version_number
884 ,p_init_msg_list => FND_API.G_FALSE
885 ,p_commit => FND_API.G_FALSE
886 ,p_qte_header_rec => l_to_qte_header_rec
887 ,p_Qte_Line_Tbl => l_to_qte_line_tbl
888 ,p_Qte_Line_Dtl_Tbl => l_to_Qte_Line_Dtl_Tbl
889 ,p_Line_Attr_Ext_Tbl => l_to_Line_Attr_Ext_Tbl
890 ,p_Line_rltship_tbl => l_to_Line_rltship_tbl
891 ,p_control_rec => p_to_control_rec
892 ,p_hd_shipment_tbl => l_to_hd_shipment_tbl
893
894 ,p_Price_Adjustment_tbl => l_Price_Adjustment_tbl
895 ,p_Price_Adj_Rltship_tbl => l_Price_Adj_Rltship_tbl
896
897 ,x_quote_header_id => x_to_quote_header_id
898 ,x_last_update_date => x_to_last_update_date
899 ,x_return_status => x_return_status
900 ,x_msg_count => x_msg_count
901 ,x_msg_data => x_msg_data
902 );
903 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
904 RAISE FND_API.G_EXC_ERROR;
905 END IF;
906 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
907 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
908 END IF;
909
910 IBE_QUOTE_SAVESHARE_pvt.sharequote
911 ( p_api_version_number => 1.0
912 ,p_init_msg_list => FND_API.G_FALSE
913 ,p_commit => FND_API.G_FALSE
914 ,p_quote_header_id => x_to_quote_header_id
915 ,p_url => p_url
916 ,p_sharee_email_address => p_sharee_email_address
917 ,p_sharee_privilege_Type => p_sharee_privilege_Type
918 ,p_comments => p_comments
919 ,X_Return_Status => x_Return_Status
920 ,X_Msg_Count => x_Msg_Count
921 ,X_Msg_Data => x_Msg_Data
922 );
923 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
924 RAISE FND_API.G_EXC_ERROR;
925 END IF;
926 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
927 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
928 END IF;
929
930 -- Standard check of p_commit.
931 IF FND_API.To_Boolean( p_commit ) THEN
932 COMMIT WORK;
933 END IF;
934
935 -- Standard call to get message count and IF count is 1, get message info.
936 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
937 p_count => x_msg_count,
938 p_data => x_msg_data);
939 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
940 IBE_Util.Debug('End IBE_QUOTE_SAVESHARE_pvt.SaveAsAndShare() at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
941 END IF;
942 --IBE_UTIL.DISABLE_DEBUG;
943 EXCEPTION
944 WHEN FND_API.G_EXC_ERROR THEN
945 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
946 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.SaveAsAndShare');
947 END IF;
948 ROLLBACK TO SAVEASANDSHARE_pvt;
949 x_return_status := FND_API.G_RET_STS_ERROR;
950 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
951 p_count => x_msg_count,
952 p_data => x_msg_data);
953 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
954 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
955 ibe_util.debug('Unexpected exception in IBE_QUOTE_SAVESHARE_PVT.SaveAsAndShare');
956 END IF;
957 ROLLBACK TO SAVEASANDSHARE_pvt;
958 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
959 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
960 p_count => x_msg_count,
961 p_data => x_msg_data);
962 WHEN OTHERS THEN
963 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
964 ibe_util.debug('Unknown exception in IBE_QUOTE_SAVESHARE_PVT.SaveAsAndShare');
965 END IF;
966 ROLLBACK TO SAVEASANDSHARE_pvt;
967 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
968
969 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
970 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
971 l_api_name);
972 END IF;
973
974 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
975 p_count => x_msg_count,
976 p_data => x_msg_data);
977 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
978 IBE_Util.Debug('End IBE_QUOTE_SAVESHARE_pvt.SaveAsAndShare() at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
979 END IF;
980 --IBE_UTIL.DISABLE_DEBUG;
981 END SaveAsAndShare;
982
983 PROCEDURE AppendToReplaceShare(
984 p_api_version_number IN NUMBER ,
985 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
986 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
987 x_return_status OUT NOCOPY VARCHAR2 ,
988 x_msg_count OUT NOCOPY NUMBER ,
989 x_msg_data OUT NOCOPY VARCHAR2 ,
990 p_mode IN VARCHAR2 := 'APPENDTO' ,
991 p_combinesameitem IN VARCHAR2 := FND_API.G_MISS_CHAR,
992 p_increaseversion IN VARCHAR2 := FND_API.G_FALSE ,
993 p_original_quote_header_id IN NUMBER ,
994 p_last_update_date IN DATE := FND_API.G_MISS_DATE,
995 p_rep_app_quote_header_id IN NUMBER := FND_API.G_MISS_NUM ,
996 p_new_quote_password IN VARCHAR2 := FND_API.G_MISS_CHAR,
997 p_url IN VARCHAR2 := FND_API.G_MISS_CHAR,
998 p_sharee_email_address IN jtf_varchar2_table_2000 := NULL,
999 p_sharee_privilege_type IN jtf_varchar2_table_100 := NULL,
1000 p_currency_code IN VARCHAR2 := FND_API.G_MISS_CHAR,
1001 p_price_list_id IN NUMBER := FND_API.G_MISS_NUM ,
1002 p_control_rec IN ASO_Quote_Pub.Control_Rec_Type := ASO_Quote_Pub.G_MISS_Control_Rec,
1003 p_comments IN VARCHAR2 := FND_API.G_MISS_CHAR ,
1004 p_rep_app_invTo_partySiteId IN NUMBER := FND_API.G_MISS_NUM ,
1005 p_Hd_Price_Attributes_Tbl IN ASO_Quote_Pub.Price_Attributes_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Attributes_Tbl,
1006 p_Hd_Payment_Tbl IN ASO_Quote_Pub.Payment_Tbl_Type := ASO_Quote_Pub.G_MISS_PAYMENT_TBL,
1007 p_Hd_Shipment_Tbl IN ASO_Quote_Pub.Shipment_Tbl_Type := ASO_Quote_Pub.G_MISS_SHIPMENT_TBL,
1008 p_Hd_Freight_Charge_Tbl IN ASO_Quote_Pub.Freight_Charge_Tbl_Type := ASO_Quote_Pub.G_Miss_Freight_Charge_Tbl,
1009 p_Hd_Tax_Detail_Tbl IN ASO_Quote_Pub.TAX_DETAIL_TBL_TYPE := ASO_Quote_Pub.G_Miss_Tax_Detail_Tbl,
1010 p_Price_Adjustment_Tbl IN ASO_Quote_Pub.Price_Adj_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Adj_Tbl,
1011 p_Price_Adj_Attr_Tbl IN ASO_Quote_Pub.Price_Adj_Attr_Tbl_Type := ASO_Quote_Pub.G_Miss_PRICE_ADJ_ATTR_Tbl,
1012 p_Price_Adj_Rltship_Tbl IN ASO_Quote_Pub.Price_Adj_Rltship_Tbl_Type:= ASO_Quote_Pub.G_Miss_Price_Adj_Rltship_Tbl,
1013 p_quote_retrieval_number IN NUMBER := FND_API.G_MISS_NUM,
1014 p_party_id IN NUMBER := FND_API.G_MISS_NUM,
1015 p_cust_account_id IN NUMBER := FND_API.G_MISS_NUM,
1016 p_validate_user IN VARCHAR2 := FND_API.G_FALSE,
1017 p_minisite_id IN NUMBER := FND_API.G_MISS_NUM,
1018 x_quote_header_id OUT NOCOPY NUMBER ,
1019 x_last_update_date OUT NOCOPY DATE
1020 )
1021 is
1022 l_api_name CONSTANT VARCHAR2(30) := 'APPENDTOREPLACESHARE';
1023 l_api_version CONSTANT NUMBER := 1.0;
1024
1025 l_to_qte_header_rec ASO_Quote_Pub.qte_header_rec_type;
1026 l_to_qte_line_tbl ASO_Quote_Pub.qte_line_tbl_type;
1027 l_to_line_rltship_tbl ASO_Quote_Pub.Line_Rltship_tbl_Type;
1028 l_to_qte_line_dtl_tbl ASO_Quote_Pub.Qte_Line_Dtl_tbl_Type;
1029 l_to_line_attr_ext_tbl ASO_Quote_Pub.Line_Attribs_Ext_tbl_Type;
1030 l_to_ln_price_attributes_tbl ASO_Quote_Pub.Price_Attributes_Tbl_Type;
1031 q_ver number(5);
1032 q_num number(5);
1033 l_quote_to_copy NUMBER;
1034 l_quote_header_id_tmp NUMBER;
1035 l_last_update_date_tmp DATE;
1036
1037 CURSOR c_q_datenumber (c_quote_header_id number) is
1038 select last_update_date, quote_number
1039 from ASO_QUOTE_HEADERS
1040 where quote_header_id = c_quote_header_id;
1041
1042
1043 CURSOR c_q_date (c_quote_header_id number) is
1044 select last_update_date
1045 from ASO_QUOTE_HEADERS
1046 where quote_header_id = c_quote_header_id;
1047
1048 CURSOR c_q_number (c_quote_header_id number) is
1049 select quote_number
1050 from ASO_QUOTE_HEADERS
1051 where quote_header_id = c_quote_header_id;
1052
1053
1054 /* Cursor to select the cart name used for "Replace Cart" functionality*/
1055 CURSOR c_cart_name(p_quote_header_id number) is
1056 SELECT quote_name, quote_number
1057 FROM aso_quote_headers
1058 WHERE quote_header_id =p_quote_header_id;
1059
1060 /* Cursor to select the quote owners used for "Replace Cart" functionality done by a recepient(sharee)*/
1061
1062 cursor c_check_cart_owner(p_quote_header_id number) is
1063 select created_by from aso_quote_headers_all
1064 where quote_header_id = p_quote_header_id;
1065
1066 rec_cart_name c_cart_name%rowtype;
1067 l_target_cart_owner number;
1068 l_source_cart_owner number;
1069
1070 -- added 12/22/03: PRG, no line merge
1071 l_Price_Adjustment_Tbl ASO_Quote_Pub.Price_Adj_Tbl_Type;
1072 l_Price_Adj_Rltship_Tbl ASO_Quote_Pub.Price_Adj_Rltship_Tbl_Type;
1073
1074 BEGIN
1075 --IBE_UTIL.ENABLE_DEBUG;
1076 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1077 IBE_Util.Debug('Begin **new** IBE_QUOTE_SAVESHARE_pvt.AppendToReplaceShare() at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
1078 IBE_Util.Debug('Parameters pased to IBE_QUOTE_SAVESHARE_pvt.AppendToReplaceShare() are');
1079 IBE_Util.Debug('P_ORIGINAL_QUOTE_HEADER_ID: '||P_ORIGINAL_QUOTE_HEADER_ID);
1080 IBE_Util.Debug('P_REP_APP_QUOTE_HEADER_ID: '||P_REP_APP_QUOTE_HEADER_ID);
1081 IBE_Util.Debug('P_INCREASEVERSION: '||P_INCREASEVERSION);
1082 END IF;
1083
1084
1085 -- Standard Start of API savepoint
1086 SAVEPOINT APPENDTOREPLACESHARE_pvt;
1087 -- Standard call to check for call compatibility.
1088 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1089 P_Api_Version_Number,
1090 l_api_name,
1091 G_PKG_NAME )
1092 THEN
1093 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1094 END IF;
1095 -- Initialize message list IF p_init_msg_list is set to TRUE.
1096 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1097 FND_MSG_PUB.initialize;
1098 END IF;
1099
1100 -- Initialize API return status to success
1101 x_return_status := FND_API.G_RET_STS_SUCCESS;
1102
1103 -- API body
1104 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1105 IBE_UTIL.DEBUG('APPENDTOREPLACESHARE: Before Calling log_environment_info');
1106 END IF;
1107 IBE_Quote_Misc_pvt.log_environment_info();
1108 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1109 IBE_UTIL.DEBUG('APPENDTOREPLACESHARE: After Calling log_environment_info');
1110 END IF;
1111
1112 -- User Authentication
1113 IBE_Quote_Misc_pvt.Validate_User_Update(
1114 p_init_msg_list => p_init_msg_list
1115 ,p_quote_header_id => p_original_quote_header_id
1116 ,p_party_id => p_party_id
1117 ,p_cust_account_id => p_cust_account_id
1118 ,p_quote_retrieval_number => p_quote_retrieval_number
1119 ,p_validate_user => p_validate_user
1120 ,p_last_update_date => p_last_update_date
1121 ,x_return_status => x_return_status
1122 ,x_msg_count => x_msg_count
1123 ,x_msg_data => x_msg_data
1124 );
1125
1126 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1127 RAISE FND_API.G_EXC_ERROR;
1128 END IF;
1129 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1130 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1131 END IF;
1132 --Removing this validation as this is already being done in validate_user_update
1133 /*IF (p_last_update_date is not null
1134 and p_last_update_date <> fnd_api.g_miss_date) THEN
1135
1136 IBE_Quote_Misc_pvt.validateQuoteLastUpdateDate
1137 ( p_api_version_number => p_api_version_number
1138 ,p_quote_header_id => p_original_quote_header_id
1139 ,p_last_update_date => p_last_update_date
1140 ,X_Return_Status => x_return_status
1141 ,X_Msg_Count => x_msg_count
1142 ,X_Msg_Data => x_msg_data
1143 );
1144 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1145 RAISE FND_API.G_EXC_ERROR;
1146 END IF;
1147 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1148 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1149 END IF;
1150 END IF;*/
1151
1152 l_to_qte_header_rec.quote_header_id := p_rep_app_quote_header_id;
1153 -- p_new_quote_password is not null
1154 IF (p_new_quote_password <> fnd_api.g_miss_char) THEN
1155 l_to_qte_header_rec.quote_password := p_new_quote_password;
1156 END IF;
1157
1158 IF (p_currency_code is not null
1159 and p_currency_code <> fnd_api.g_miss_char) THEN
1160 l_to_qte_header_rec.currency_code := p_currency_code;
1161 END IF;
1162
1163 -- Modified by mannamra for the bug 1936844
1164 -- IF (p_price_list_id is not null
1165 IF p_price_list_id <> fnd_api.g_miss_num THEN
1166 l_to_qte_header_rec.price_list_id := p_price_list_id;
1167 END IF;
1168
1169 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1170 IBE_Util.Debug('Parameter values just before checking "REPLACE" or "APPEND" condition');
1171 IBE_Util.Debug('p_MODE: '||p_MODE);
1172 IBE_Util.Debug('P_ORIGINAL_QUOTE_HEADER_ID: '||P_ORIGINAL_QUOTE_HEADER_ID);
1173 IBE_Util.Debug('P_REP_APP_QUOTE_HEADER_ID: '||P_REP_APP_QUOTE_HEADER_ID);
1174 IBE_Util.Debug('P_INCREASEVERSION: '||P_INCREASEVERSION);
1175 END IF;
1176
1177 /*Obtain cart name here*/
1178 OPEN c_cart_name(p_rep_app_quote_header_id);
1179 FETCH c_cart_name INTO
1180 l_to_Qte_Header_Rec.quote_name,
1181 l_to_Qte_Header_Rec.quote_number;
1182 CLOSE c_cart_name;
1183 /*Obtain the target cart owner */
1184 OPEN c_check_cart_owner(p_rep_app_quote_header_id);
1185 FETCH c_check_cart_owner INTO
1186 l_target_cart_owner;
1187 CLOSE c_check_cart_owner;
1188
1189 /*Obtain the source cart owner */
1190 OPEN c_check_cart_owner(p_original_quote_header_id);
1191 FETCH c_check_cart_owner INTO
1192 l_source_cart_owner;
1193 CLOSE c_check_cart_owner;
1194
1195 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1196 IBE_Util.Debug('quote number obtained from the cursor is: '||l_to_Qte_Header_Rec.quote_name);
1197 IBE_Util.Debug('quote name obtained from the cursor is: '|| l_to_Qte_Header_Rec.quote_number);
1198 END IF;
1199
1200 if (((p_mode = 'REPLACE') and (l_target_cart_owner <> l_source_cart_owner)) or
1201 ((p_mode = 'APPENDTO') and (fnd_api.to_Boolean(p_increaseversion)))) then
1202 l_quote_to_copy := p_rep_app_quote_header_id;
1203
1204 OPEN c_q_datenumber(p_rep_app_quote_header_id);
1205 FETCH c_q_datenumber INTO
1206 l_to_qte_header_rec.last_update_date
1207 , l_to_qte_header_rec.quote_number;
1208 CLOSE c_q_datenumber;
1209 else
1210 l_quote_to_copy := p_original_quote_header_id;
1211
1212 OPEN c_q_date(p_original_quote_header_id);
1213 FETCH c_q_date INTO
1214 l_to_qte_header_rec.last_update_date;
1215 CLOSE c_q_date;
1216 OPEN c_q_number(p_rep_app_quote_header_id);
1217 FETCH c_q_number INTO
1218 l_to_qte_header_rec.quote_number;
1219 CLOSE c_q_number;
1220 end if;
1221
1222 if ((p_mode = 'REPLACE') or
1223 ((p_mode = 'APPENDTO') and (fnd_api.to_Boolean(p_increaseversion)))) then
1224
1225
1226 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1227 IBE_Util.Debug('ASO_Quote_Pub.Copy_Quote() starts');
1228 END IF;
1229 aso_quote_pub.copy_quote(
1230 p_api_version_number => P_Api_Version_Number
1231 ,p_init_msg_list => fnd_api.g_false
1232 ,p_commit => fnd_api.g_false
1233 ,p_qte_header_id => l_quote_to_copy
1234 ,p_last_update_date => l_to_qte_header_rec.last_update_date
1235 ,P_Qte_Number => l_to_qte_header_rec.quote_number
1236 ,p_new_version => FND_API.G_TRUE
1237 ,x_qte_header_id => l_to_qte_header_rec.quote_header_id
1238 ,X_Return_Status => x_Return_Status
1239 ,X_Msg_Count => x_Msg_Count
1240 ,X_Msg_Data => x_Msg_Data);
1241
1242 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1243 IBE_Util.Debug('ASO_Quote_Pub.Copy_Quote() finishes');
1244 IBE_Util.Debug('x_qte_header_id: ' || l_to_qte_header_rec.quote_header_id);
1245 END IF;
1246
1247 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1248 RAISE FND_API.G_EXC_ERROR;
1249 END IF;
1250
1251 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1252 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1253 END IF;
1254 l_to_qte_header_rec.last_update_date
1255 := IBE_Quote_Misc_pvt.getQuotelastUpdateDate
1256 (l_to_qte_header_rec.quote_header_id);
1257
1258 else
1259 -- we are in a sort of update mode updating the target cart
1260 l_to_qte_header_rec.quote_header_id := p_rep_app_quote_header_id;
1261 l_to_qte_header_rec.last_update_date
1262 := IBE_Quote_Misc_pvt.getQuotelastUpdateDate
1263 (l_to_qte_header_rec.quote_header_id);
1264 end if; -- end of copy_quote if
1265
1266 IF ((p_mode = 'REPLACE' )
1267 and (l_target_cart_owner <> l_source_cart_owner)) THEN
1268 /*Delete lines from the cart created in the above call to copy quote*/
1269
1270 IBE_Quote_Save_pvt.deletealllines(
1271 P_Api_Version_Number => p_api_version_number
1272 ,p_Init_Msg_List => fnd_api.g_false
1273 ,p_Commit => fnd_api.g_false
1274 ,p_Quote_Header_Id => l_to_qte_header_rec.quote_header_id
1275 ,p_last_update_date => l_to_qte_header_rec.last_update_date
1276 ,x_quote_header_id => l_quote_header_id_tmp
1277 ,x_last_update_date => l_last_update_date_tmp
1278 ,X_Return_Status => x_return_status
1279 ,X_Msg_Count => x_msg_count
1280 ,X_Msg_Data => x_msg_data);
1281
1282 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1283 RAISE FND_API.G_EXC_ERROR;
1284 END IF;
1285
1286 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1287 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1288 END IF;
1289
1290 l_to_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
1291 l_to_qte_header_rec.last_update_date := l_last_update_date_tmp;
1292
1293 end if;
1294
1295 -- added 12/22/03: PRG, no line merge
1296 l_Price_Adjustment_Tbl := p_Price_Adjustment_Tbl;
1297 l_Price_Adj_Rltship_Tbl := p_Price_Adj_Rltship_Tbl;
1298
1299 if ((p_mode = 'APPENDTO') or
1300 ((p_mode = 'REPLACE' ) and
1301 (l_target_cart_owner <> l_source_cart_owner))) THEN
1302 /* unless we're replacing for common owner,
1303 copy lines from the source cart to target cart */
1304 Copy_Lines(
1305 p_api_version_number => p_api_version_number
1306 ,p_init_msg_list => FND_API.G_FALSE
1307 ,p_commit => FND_API.G_FALSE
1308 ,x_Return_Status => x_Return_Status
1309 ,x_Msg_Count => x_Msg_Count
1310 ,x_Msg_Data => x_Msg_Data
1311 ,p_from_quote_header_id => p_original_quote_header_id
1312 ,p_to_quote_header_id => l_to_qte_header_rec.quote_header_id
1313 ,x_qte_line_tbl => l_to_qte_line_tbl
1314 ,x_qte_line_dtl_tbl => l_to_qte_line_dtl_tbl
1315 ,x_line_attr_ext_tbl => l_to_line_attr_ext_tbl
1316 ,x_line_rltship_tbl => l_to_line_rltship_tbl
1317 ,x_ln_price_attributes_tbl => l_to_ln_price_attributes_tbl
1318 ,x_Price_Adjustment_tbl => l_Price_Adjustment_tbl
1319 ,x_Price_Adj_Rltship_tbl => l_Price_Adj_Rltship_tbl);
1320
1321 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1322 RAISE FND_API.G_EXC_ERROR;
1323 END IF;
1324
1325 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1326 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1327 END IF;
1328
1329 end if;
1330
1331
1332 /*To identify the name of the destination cart*/
1333
1334 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1335 IBE_Util.Debug('parameter values before calling SAVE');
1336 IBE_Util.Debug('l_to_Qte_Header_Rec.quote_name : '||l_to_Qte_Header_Rec.quote_name);
1337 IBE_Util.Debug('l_to_Qte_Header_Rec.quote_number : '|| l_to_Qte_Header_Rec.quote_number);
1338 IBE_Util.Debug('l_to_Qte_Header_Rec.quote_header_id : '|| l_to_Qte_Header_Rec.quote_header_id);
1339 IBE_Util.Debug('quote version q_ver is: '||q_ver);
1340 END IF;
1341
1342 --8/12/02: Default Feature:
1343 if ((p_rep_app_invTo_partySiteId is not null) and (p_rep_app_invTo_partySiteId <> FND_API.G_MISS_NUM) ) then
1344 l_to_qte_header_rec.invoice_to_party_site_id := p_rep_app_invTo_partySiteId;
1345 end if;
1346 IBE_Quote_Save_pvt.save(
1347 p_api_version_number => p_api_version_number
1348 ,p_init_msg_list => fnd_api.g_false
1349 ,p_commit => fnd_api.g_false
1350 ,p_combineSameItem => p_combineSameItem
1351 ,p_qte_header_rec => l_to_qte_header_rec
1352 ,p_control_rec => p_control_rec
1353 ,p_Qte_Line_Tbl => l_to_qte_line_tbl
1354 ,p_Qte_Line_Dtl_Tbl => l_to_Qte_Line_Dtl_Tbl
1355 ,p_Line_Attr_Ext_Tbl => l_to_Line_Attr_Ext_Tbl
1356 ,p_Line_rltship_tbl => l_to_Line_rltship_tbl
1357
1358 -- 8/12/02: added for Default Feature
1359 ,p_hd_price_attributes_tbl => p_Hd_Price_Attributes_Tbl
1360 ,p_hd_payment_tbl => p_Hd_Payment_Tbl
1361 ,p_hd_shipment_tbl => p_Hd_Shipment_Tbl
1362 ,p_hd_freight_charge_tbl => p_Hd_Freight_Charge_Tbl
1363 ,p_hd_tax_detail_tbl => p_Hd_Tax_Detail_Tbl
1364 ,p_price_adjustment_tbl => l_Price_Adjustment_Tbl
1365 ,p_price_adj_attr_tbl => p_Price_Adj_Attr_Tbl
1366 ,p_price_adj_rltship_tbl => l_Price_Adj_Rltship_Tbl
1367
1368 ,x_quote_header_id => x_quote_header_id
1369 ,x_last_update_date => x_last_update_date
1370 ,x_return_status => x_return_status
1371 ,x_msg_count => x_msg_count
1372 ,x_msg_data => x_msg_data);
1373
1374 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1375 RAISE FND_API.G_EXC_ERROR;
1376 END IF;
1377
1378 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1379 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1380 END IF;
1381
1382 IBE_QUOTE_SAVESHARE_pvt.sharequote(
1383 p_api_version_number => 1.0
1384 ,p_init_msg_list => FND_API.G_false
1385 ,p_commit => FND_API.G_false
1386 ,p_quote_header_id => x_quote_header_id
1387 ,p_url => p_url
1388 ,p_sharee_email_address => p_sharee_email_address
1389 ,p_sharee_privilege_Type => p_sharee_privilege_Type
1390 ,p_comments => p_comments
1391 ,X_Return_Status => x_Return_Status
1392 ,X_Msg_Count => x_Msg_Count
1393 ,X_Msg_Data => x_Msg_Data);
1394
1395 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1396 RAISE FND_API.G_EXC_ERROR;
1397 END IF;
1398
1399 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1400 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1401 END IF;
1402
1403 -- Standard check of p_commit.
1404 IF FND_API.To_Boolean( p_commit ) THEN
1405 COMMIT WORK;
1406 END IF;
1407
1408 -- Standard call to get message count and IF count is 1, get message info.
1409 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1410 p_count => x_msg_count,
1411 p_data => x_msg_data);
1412 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1413 IBE_Util.Debug('End IBE_QUOTE_SAVESHARE_pvt.AppendToReplaceShare() at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
1414 END IF;
1415
1416 EXCEPTION
1417 WHEN FND_API.G_EXC_ERROR THEN
1418 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1419 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.AppendToReplaceShare');
1420 END IF;
1421 ROLLBACK TO APPENDTOREPLACESHARE_pvt;
1422 x_return_status := FND_API.G_RET_STS_ERROR;
1423 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1424 p_count => x_msg_count,
1425 p_data => x_msg_data);
1426 --IBE_UTIL.DISABLE_DEBUG;
1427 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1428 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1429 ibe_util.debug('Unexpected exception in IBE_QUOTE_SAVESHARE_PVT.AppendToReplaceShare');
1430 END IF;
1431 ROLLBACK TO APPENDTOREPLACESHARE_pvt;
1432 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1433 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1434 p_count => x_msg_count,
1435 p_data => x_msg_data);
1436 WHEN OTHERS THEN
1437 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1438 ibe_util.debug('Unknown exception in IBE_QUOTE_SAVESHARE_PVT.AppendToReplaceShare');
1439 END IF;
1440 ROLLBACK TO APPENDTOREPLACESHARE_pvt;
1441 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1442
1443 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1444 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
1445 l_api_name);
1446 END IF;
1447
1448 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1449 p_count => x_msg_count,
1450 p_data => x_msg_data);
1451 END AppendToReplaceShare;
1452
1453
1454
1455 PROCEDURE ShareQuote(
1456 p_api_version_number IN NUMBER := 1 ,
1457 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
1458 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
1459 x_return_status OUT NOCOPY VARCHAR2 ,
1460 x_msg_count OUT NOCOPY NUMBER ,
1461 x_msg_data OUT NOCOPY VARCHAR2 ,
1462 p_quote_header_id IN NUMBER ,
1463 p_url IN VARCHAR2 ,
1464 p_sharee_email_address IN JTF_VARCHAR2_TABLE_2000 := NULL,
1465 p_sharee_privilege_type IN JTF_VARCHAR2_TABLE_100 := NULL,
1466 p_comments IN VARCHAR2 := FND_API.G_MISS_CHAR
1467 )
1468 IS
1469 l_api_name CONSTANT VARCHAR2(30) := 'ShareQuote';
1470 l_api_version CONSTANT NUMBER := 1.0;
1471
1472 l_contact_point_id NUMBER := fnd_api.g_miss_num;
1473 l_contact_lastupdatedate DATE := fnd_api.g_miss_date;
1474 l_qte_access_rec IBE_QUOTE_SAVESHARE_pvt.QUOTE_ACCESS_Rec_Type
1475 :=IBE_QUOTE_SAVESHARE_pvt.g_miss_quote_access_rec;
1476
1477 BEGIN
1478 -- Standard Start of API savepoint
1479 SAVEPOINT SAVEASANDSHARE_pvt;
1480 -- Standard call to check for call compatibility.
1481 IF NOT FND_API.Compatible_API_Call (l_api_version,
1482 P_Api_Version_Number,
1483 l_api_name,
1484 G_PKG_NAME )
1485 THEN
1486 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1487 END IF;
1488 -- Initialize message list IF p_init_msg_list is set to TRUE.
1489 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1490 FND_MSG_PUB.initialize;
1491 END IF;
1492
1493 -- Initialize API return status to success
1494 x_return_status := FND_API.G_RET_STS_SUCCESS;
1495
1496 -- API body
1497 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1498 IBE_UTIL.DEBUG('SAVEASANDSHARE: Before Calling log_environment_info');
1499 END IF;
1500 IBE_Quote_Misc_pvt.log_environment_info();
1501 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1502 IBE_UTIL.DEBUG('SAVEASANDSHARE: After Calling log_environment_info');
1503 END IF;
1504
1505 /*IF (P_URL is not null and P_URL <> FND_API.G_MISS_CHAR) THEN
1506 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1507 ibe_util.debug('call IBE_QUOTE_SAVESHARE_pvt.savecontactpoint at '
1508 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1509 END IF;
1510
1511 saveContactPoint
1512 ( p_api_version_number => P_Api_Version_Number
1513 ,p_init_msg_list => FND_API.G_FALSE
1514 ,p_commit => FND_API.G_FALSE
1515 ,P_URL => p_url
1516 ,p_owner_table_id => p_quote_header_id
1517 ,p_mode => 'WEB'
1518 ,x_contact_point_id => l_contact_point_id
1519 ,x_return_status => x_return_status
1520 ,x_msg_count => x_msg_count
1521 ,x_msg_data => x_msg_data
1522 );
1523 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1524 RAISE FND_API.G_EXC_ERROR;
1525 END IF;
1526 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1527 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1528 END IF;
1529 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1530 ibe_util.debug('done IBE_QUOTE_SAVESHARE_pvt.savecontactpoint at '
1531 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1532 END IF;
1533
1534 END IF; -- end of url*/
1535
1536 IF (P_sharee_email_Address is not null) THEN
1537 FOR i IN 1..P_sharee_email_Address.count LOOP
1538 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1539 ibe_util.debug('call IBE_QUOTE_SAVESHARE_pvt.savesharee '|| i || ' at '
1540 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1541 END IF;
1542
1543 IBE_QUOTE_SAVESHARE_pvt.SaveSharee
1544 ( p_api_version_number => P_Api_Version_Number
1545 ,p_init_msg_list => FND_API.G_FALSE
1546 ,p_commit => FND_API.G_FALSE
1547 ,P_Quote_Header_id => p_quote_header_id
1548 ,P_emailAddress => p_sharee_email_Address(i)
1549 ,P_privilegeType => p_sharee_privilege_Type(i)
1550 ,x_Qte_access_rec => l_qte_access_rec
1551 ,x_return_status => x_return_status
1552 ,x_msg_count => x_msg_count
1553 ,x_msg_data => x_msg_data );
1554 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1555 RAISE FND_API.G_EXC_ERROR;
1556 END IF;
1557 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1558 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1559 END IF;
1560
1561 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1562 IBE_UTIL.DEBUG('call IBE_QUOTE_SAVESHARE_pvt.emailsharee at'
1563 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1564 END IF;
1565
1566 IBE_QUOTE_SAVESHARE_pvt.EmailSharee
1567 ( p_api_version_number => P_Api_Version_Number
1568 ,p_init_msg_list => FND_API.G_FALSE
1569 ,p_commit => FND_API.G_FALSE
1570 ,P_Quote_Header_id => p_quote_header_id
1571 ,P_emailAddress => p_sharee_email_Address(i)
1572 ,P_privilegeType => p_sharee_privilege_Type(i)
1573 ,p_url => p_url
1574 ,p_qte_access_rec => l_qte_access_rec
1575 ,p_comments => p_comments
1576 ,x_return_status => x_return_status
1577 ,x_msg_count => x_msg_count
1578 ,x_msg_data => x_msg_data
1579 );
1580 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1581 RAISE FND_API.G_EXC_ERROR;
1582 END IF;
1583 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1584 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1585 END IF;
1586 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1587 IBE_UTIL.DEBUG('done IBE_QUOTE_SAVESHARE_pvt.emailsharee at'
1588 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1589 END IF;
1590
1591 END LOOP;
1592 END IF;
1593 END ShareQuote;
1594
1595
1596 --- only for account user
1597 Procedure ActivateQuote(
1598 p_api_version_number IN NUMBER := 1 ,
1599 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE ,
1600 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
1601 x_return_status OUT NOCOPY VARCHAR2 ,
1602 x_msg_count OUT NOCOPY NUMBER ,
1603 x_msg_data OUT NOCOPY VARCHAR2 ,
1604 p_quote_header_id IN NUMBER ,
1605 p_last_update_date IN DATE := FND_API.G_MISS_DATE,
1606 p_increaseversion IN VARCHAR2 := FND_API.G_FALSE ,
1607 x_quote_header_id OUT NOCOPY NUMBER ,
1608 x_last_update_date OUT NOCOPY DATE
1609 )
1610 IS
1611 l_api_name CONSTANT VARCHAR2(30) := 'ActivateQuote';
1612 l_api_version CONSTANT NUMBER := 1.0;
1613 l_qte_header_rec ASO_Quote_Pub.qte_header_rec_type
1614 := ASO_Quote_Pub.g_miss_qte_header_rec;
1615 l_control_rec aso_quote_pub.control_rec_type
1616 := aso_quote_pub.g_miss_control_rec;
1617 l_party_id NUMBER;
1618 l_cust_account_id NUMBER;
1619
1620 l_quote_header_id_tmp NUMBER;
1621 l_last_update_date_tmp DATE;
1622
1623 cursor c_owner_party(c_quote_header_id number) is
1624 select party_id, cust_account_id, quote_header_id
1625 from aso_quote_headers_all
1626 where quote_header_id = c_quote_header_id;
1627
1628 rec_owner_party c_owner_party%rowtype;
1629
1630
1631
1632 BEGIN
1633 -- Standard Start of API savepoint
1634 SAVEPOINT ActivateQuote_pvt;
1635 -- Standard call to check for call compatibility.
1636 IF NOT FND_API.Compatible_API_Call(l_api_version,
1637 p_api_version_number,
1638 l_api_name,
1639 G_PKG_NAME)
1640 THEN
1641 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1642 END IF;
1643
1644 -- Initialize message list IF p_init_msg_list is set to TRUE.
1645 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1646 FND_MSG_PUB.initialize;
1647 END IF;
1648
1649 -- Initialize API return status to success
1650 x_return_status := FND_API.G_RET_STS_SUCCESS;
1651
1652 -- API body
1653 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1654 IBE_UTIL.DEBUG('ActivateQuote: Before Calling log_environment_info');
1655 END IF;
1656 IBE_Quote_Misc_pvt.log_environment_info();
1657 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1658 IBE_UTIL.DEBUG('ActivateQuote: After Calling log_environment_info');
1659 END IF;
1660
1661 -- User Authentication
1662 IBE_Quote_Misc_pvt.Validate_User_Update(
1663 p_init_msg_list => p_init_msg_list
1664 ,p_quote_header_id => p_quote_header_id
1665 ,p_validate_user => FND_API.G_TRUE
1666 ,x_return_status => x_return_status
1667 ,x_msg_count => x_msg_count
1668 ,x_msg_data => x_msg_data );
1669
1670 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1671 RAISE FND_API.G_EXC_ERROR;
1672 END IF;
1673 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1674 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1675 END IF;
1676
1677 --IBE_UTIL.ENABLE_DEBUG;
1678 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1679 IBE_Util.Debug('Begin IBE_QUOTE_SAVESHARE_pvt.ActivateQuote() at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
1680 END IF;
1681
1682 l_qte_header_rec.quote_header_id := p_quote_header_id;
1683 l_qte_header_rec.last_update_date := p_last_update_date;
1684
1685 IF l_qte_header_rec.last_update_date IS NULL
1686 OR l_qte_header_rec.last_update_date = FND_API.G_MISS_DATE THEN
1687 l_qte_header_rec.last_update_date := IBE_Quote_Misc_pvt.GetQuoteLastUpdateDate(l_qte_header_rec.quote_header_id);
1688 END IF;
1689
1690
1691 IF FND_API.To_Boolean(p_increaseVersion) THEN
1692 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1693 IBE_Util.Debug('ASO_Quote_Pub.Copy_Quote() starts at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
1694 END IF;
1695
1696 ASO_Quote_Pub.Copy_Quote(
1697 P_Api_Version_Number => P_Api_Version_Number
1698 ,P_Init_Msg_List => FND_API.G_FALSE
1699 ,P_Commit => FND_API.G_FALSE
1700 ,P_Qte_Header_Id => l_qte_header_rec.quote_header_id
1701 ,P_Last_Update_Date => l_qte_header_rec.last_update_date
1702 ,X_Qte_Header_Id => l_quote_header_id_tmp
1703 ,X_Return_Status => x_return_status
1704 ,X_Msg_Count => x_msg_count
1705 ,X_Msg_Data => x_msg_data);
1706
1707 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1708 IBE_Util.Debug('ASO_Quote_Pub.Copy_Quote() finishes at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
1709 END IF;
1710
1711 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1712 RAISE FND_API.G_EXC_ERROR;
1713 END IF;
1714
1715 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1716 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1717 END IF;
1718
1719 l_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
1720
1721 l_qte_header_rec.last_update_date := IBE_Quote_Misc_pvt.GetQuoteLastUpdateDate(l_qte_header_rec.quote_header_id);
1722 END IF;
1723
1724 l_qte_header_rec.quote_name := 'IBE_PRMT_SC_UNNAMED';
1725 l_qte_header_rec.quote_source_code := 'IStore Account';
1726 --Adding re-pricing parameters for bug #2267005
1727 --mannamra:Removing references to obsoleted profile IBE_PRICE_REQUEST_TYPE see bug 2594529 for details
1728 l_control_rec.pricing_request_type := 'ASO';--FND_Profile.Value('IBE_PRICE_REQUEST_TYPE');
1729 l_control_rec.header_pricing_event := FND_Profile.Value('IBE_INCART_PRICING_EVENT');
1730 l_control_rec.line_pricing_event := FND_API.G_MISS_CHAR;
1731 l_control_rec.calculate_freight_charge_flag := 'Y';
1732 l_control_rec.calculate_tax_flag := 'Y';
1733 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1734 ibe_util.debug('Activate quote: l_control_rec.pricing_request_type '||l_control_rec.pricing_request_type);
1735 ibe_util.debug('Activate quote: l_control_rec.header_pricing_event '||l_control_rec.header_pricing_event );
1736 ibe_util.debug('Activate quote: l_control_rec.line_pricing_event '||l_control_rec.line_pricing_event );
1737 END IF;
1738 IBE_Quote_Save_pvt.save(
1739 p_api_version_number => p_api_version_number
1740 ,p_init_msg_list => FND_API.G_FALSE
1741 ,p_commit => FND_API.G_FALSE
1742 ,p_qte_header_rec => l_qte_header_rec
1743 ,p_control_rec => l_control_rec
1744 ,x_quote_header_id => x_quote_header_id
1745 ,x_last_update_date => x_last_update_date
1746 ,x_return_status => x_return_status
1747 ,x_msg_count => x_msg_count
1748 ,x_msg_data => x_msg_data);
1749
1750 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1751 RAISE FND_API.G_EXC_ERROR;
1752 END IF;
1753
1754 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1755 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1756 END IF;
1757
1758 FOR rec_owner_party in c_owner_party(l_qte_header_rec.quote_header_id) LOOP
1759 l_party_id := rec_owner_party.party_id;
1760 l_cust_account_id := rec_owner_party.cust_account_id;
1761 exit when c_owner_party%notfound;
1762 END LOOP;
1763 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1764 IBE_UTIL.DEBUG('Owner party_id: '||l_party_id);
1765 IBE_UTIL.DEBUG('Owner cust_account_id: '||l_cust_account_id);
1766 END IF;
1767
1768 --DBMS_OUTPUT.PUT_LINE('Calling IBE_QUOTE_SAVESHARE_V2_PVT.ACTIVATE_QUOTE ');
1769 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1770 IBE_UTIL.DEBUG('Calling IBE_QUOTE_SAVESHARE_V2_PVT.ACTIVATE_QUOTE ');
1771 END IF;
1772 IBE_QUOTE_SAVESHARE_V2_PVT.ACTIVATE_QUOTE(
1773 P_Quote_header_rec => l_qte_header_rec ,
1774 P_Party_id => l_party_id ,
1775 P_Cust_account_id => l_cust_account_id ,
1776 P_api_version => p_api_version_number ,
1777 P_init_msg_list => FND_API.G_FALSE ,
1778 P_commit => FND_API.G_FALSE ,
1779 x_return_status => x_return_status ,
1780 x_msg_count => x_msg_count ,
1781 x_msg_data => x_msg_data);
1782
1783 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1784 RAISE FND_API.G_EXC_ERROR;
1785 END IF;
1786
1787 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1788 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1789 END IF;
1790 --DBMS_OUTPUT.PUT_LINE('Finished calling IBE_QUOTE_SAVESHARE_V2_PVT.ACTIVATE_QUOTE ');
1791 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1792 IBE_UTIL.DEBUG('Finished calling IBE_QUOTE_SAVESHARE_V2_PVT.ACTIVATE_QUOTE ');
1793 END IF;
1794
1795 -- Standard check of p_commit.
1796 IF FND_API.To_Boolean( p_commit ) THEN
1797 COMMIT WORK;
1798 END IF;
1799
1800 -- Standard call to get message count and IF count is 1, get message info.
1801 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1802 p_count => x_msg_count,
1803 p_data => x_msg_data);
1804 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1805 IBE_Util.Debug('End IBE_QUOTE_SAVESHARE_pvt.ActivateQuote() at ' || TO_CHAR(SYSDATE, 'MM/DD/YYYY:HH24:MI:SS'));
1806 END IF;
1807 --IBE_UTIL.DISABLE_DEBUG;
1808 EXCEPTION
1809 WHEN FND_API.G_EXC_ERROR THEN
1810 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1811 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.ActivateQuote');
1812 END IF;
1813 ROLLBACK TO ActivateQuote_pvt;
1814 x_return_status := FND_API.G_RET_STS_ERROR;
1815 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1816 p_count => x_msg_count,
1817 p_data => x_msg_data);
1818 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1819 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1820 ibe_util.debug('Unexpected exception in IBE_QUOTE_SAVESHARE_PVT.ActivateQuote');
1821 END IF;
1822 ROLLBACK TO ActivateQuote_pvt;
1823 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1824 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1825 p_count => x_msg_count,
1826 p_data => x_msg_data);
1827 WHEN OTHERS THEN
1828 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1829 ibe_util.debug('unknown exception in IBE_QUOTE_SAVESHARE_PVT.ActivateQuote');
1830 END IF;
1831 ROLLBACK TO ActivateQuote_pvt;
1832 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1833
1834 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1835 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
1836 l_api_name);
1837 END IF;
1838
1839 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
1840 p_count => x_msg_count,
1841 p_data => x_msg_data);
1842 END ActivateQuote;
1843
1844
1845 PROCEDURE RetrieveShareQuote(
1846 p_api_version_number IN NUMBER ,
1847 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
1848 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
1849 x_return_status OUT NOCOPY VARCHAR2 ,
1850 x_msg_count OUT NOCOPY NUMBER ,
1851 x_msg_data OUT NOCOPY VARCHAR2 ,
1852 p_quote_password IN VARCHAR2 := FND_API.G_MISS_CHAR,
1853 p_quote_number IN NUMBER ,
1854 p_quote_version IN NUMBER := FND_API.G_MISS_NUM ,
1855 p_sharee_number IN NUMBER ,
1856 p_sharee_party_id IN NUMBER := FND_API.G_MISS_NUM ,
1857 p_sharee_cust_account_id IN NUMBER := FND_API.G_MISS_NUM ,
1858 p_currency_code IN VARCHAR2 := FND_API.G_MISS_CHAR,
1859 p_price_list_id IN NUMBER := FND_API.G_MISS_NUM ,
1860 p_control_rec IN ASO_Quote_Pub.Control_Rec_Type := ASO_Quote_Pub.G_MISS_Control_Rec,
1861 p_minisite_id IN NUMBER := FND_API.G_MISS_NUM ,
1862 x_quote_header_id OUT NOCOPY NUMBER ,
1863 x_last_update_date OUT NOCOPY DATE ,
1864 x_privilege_type_code OUT NOCOPY VARCHAR2
1865 )
1866 is
1867
1868 l_api_name CONSTANT VARCHAR2(30) := 'Retrievesharequote';
1869 l_api_version CONSTANT NUMBER := 1.0;
1870 l_expiration_date_tmp DATE;
1871 l_pricebasedonowner varchar2(30);
1872
1873 l_qte_header_rec ASO_Quote_Pub.qte_header_rec_type
1874 := ASO_Quote_Pub.g_miss_qte_header_rec;
1875 -- temp var for NOCOPY OUT parameter
1876
1877 l_qte_header_rec_tmp ASO_Quote_Pub.qte_header_rec_type
1878 := ASO_Quote_Pub.g_miss_qte_header_rec;
1879 lx_qte_line_tbl ASO_Quote_Pub.qte_line_tbl_type
1880 := ASO_Quote_Pub.g_miss_qte_line_tbl;
1881 begin
1882
1883 -- Standard Start of API savepoint
1884 SAVEPOINT RETRIEVESHAREQUOTE_pvt;
1885 -- Standard call to check for call compatibility.
1886 IF NOT FND_API.Compatible_API_Call (l_api_version,
1887 P_Api_Version_Number,
1888 l_api_name,
1889 G_PKG_NAME )
1890 THEN
1891 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1892 END IF;
1893 -- Initialize message list IF p_init_msg_list is set to TRUE.
1894 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1895 FND_MSG_PUB.initialize;
1896 END IF;
1897
1898 -- Initialize API return status to success
1899 x_return_status := FND_API.G_RET_STS_SUCCESS;
1900
1901
1902 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1903 IBE_UTIL.DEBUG('RETRIEVESHAREQUOTE: Before Calling log_environment_info');
1904 END IF;
1905 IBE_Quote_Misc_pvt.log_environment_info();
1906 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1907 IBE_UTIL.DEBUG('RETRIEVESHAREQUOTE: After Calling log_environment_info');
1908 END IF;
1909
1910 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1911 IBE_UTIL.DEBUG('call IBE_Quote_Misc_pvt.get_Shared_Quote at'
1912 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1913 END IF;
1914
1915 IBE_Quote_Misc_pvt.get_Shared_Quote
1916 ( p_api_version_number => p_api_version_number
1917 ,p_quote_password => p_quote_password
1918 ,p_quote_number => p_quote_number
1919 ,p_quote_version => p_quote_version
1920 ,x_quote_header_id => l_qte_header_rec.quote_header_id
1921 ,x_last_update_date => l_qte_header_rec.last_update_date
1922 ,x_return_status => x_return_status
1923 ,x_msg_count => x_msg_count
1924 ,x_msg_data => x_msg_data
1925 );
1926 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1927 RAISE FND_API.G_EXC_ERROR;
1928 END IF;
1929 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1930 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1931 END IF;
1932 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1933 IBE_UTIL.DEBUG('done IBE_Quote_Misc_pvt.getShareQuote at'
1934 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1935 END IF;
1936
1937 x_privilege_type_code := IBE_Quote_Misc_pvt.getShareePrivilege
1938 ( p_quote_header_id => l_qte_header_rec.quote_header_id
1939 ,p_sharee_number => p_sharee_number
1940 );
1941 l_pricebasedonowner := fnd_profile.value('IBE_SC_PRICE_BASED_ON_OWNER');
1942
1943 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1944 ibe_util.debug('l_pricebasedonowner='||l_pricebasedonowner);
1945 END IF;
1946 if( (P_Sharee_Number is not null and P_Sharee_Number <> fnd_api.g_miss_num)
1947 and (l_pricebasedonowner = 'N')
1948 and (x_privilege_type_code = 'A'
1949 or x_privilege_type_code = 'F')) THEN
1950 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1951 ibe_util.debug('call IBE_Quote_Save_pvt.updatequoteforshare');
1952 END IF;
1953 l_qte_header_rec.price_list_id := p_price_list_id;
1954 l_qte_header_rec.currency_code := p_currency_code;
1955 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
1956 IBE_UTIL.DEBUG('call IBE_Quote_Save_pvt.updatequoteforsharee at'
1957 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
1958 END IF;
1959
1960 IBE_Quote_Save_pvt.get_quote_expiration_date(
1961 p_api_version => 1.0 ,
1962 p_init_msg_list => FND_API.G_TRUE ,
1963 p_commit => FND_API.G_FALSE ,
1964 x_return_status => x_return_status ,
1965 x_msg_count => x_msg_count ,
1966 x_msg_data => x_msg_data ,
1967 p_quote_header_rec => l_qte_header_rec ,
1968 x_expiration_date => l_expiration_date_tmp );
1969 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1970 RAISE FND_API.G_EXC_ERROR;
1971 END IF;
1972 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1973 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1974 END IF;
1975
1976 l_qte_header_rec.quote_expiration_date := l_expiration_date_tmp;
1977
1978 IBE_Quote_Save_pvt.UpdateQuoteForSharee
1979 ( p_api_version_number => p_api_version_number
1980 ,p_init_msg_list => FND_API.G_FALSE
1981 ,p_commit => FND_API.G_FALSE
1982 ,p_sharee_party_id => p_sharee_party_id
1983 ,p_sharee_cust_account_id => p_sharee_cust_account_id
1984 ,p_control_rec => p_control_rec
1985 ,p_qte_header_rec => l_qte_header_rec
1986 ,x_qte_header_rec => l_qte_header_rec_tmp
1987 ,x_qte_line_tbl => lx_qte_line_tbl
1988 ,X_Return_Status => X_Return_Status
1989 ,X_Msg_Count => X_Msg_Count
1990 ,X_Msg_Data => X_Msg_Data
1991 );
1992 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1993 RAISE FND_API.G_EXC_ERROR;
1994 END IF;
1995 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1996 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1997 END IF;
1998 l_qte_header_rec := l_qte_header_rec_tmp;
1999 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2000 IBE_UTIL.DEBUG('done IBE_Quote_Save_pvt.updatequoteforsharee at'
2001 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
2002 END IF;
2003 END IF;
2004
2005 x_quote_header_id := l_qte_header_rec.quote_header_id;
2006 x_last_update_date := l_qte_header_rec.last_update_date;
2007
2008 -- Standard check of p_commit.
2009 IF FND_API.To_Boolean( p_commit ) THEN
2010 COMMIT WORK;
2011 END IF;
2012
2013 -- Standard call to get message count and IF count is 1, get message info.
2014 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2015 p_count => x_msg_count,
2016 p_data => x_msg_data);
2017 EXCEPTION
2018 WHEN FND_API.G_EXC_ERROR THEN
2019 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2020 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.RetrieveShareQuote');
2021 END IF;
2022 ROLLBACK TO RETRIEVESHAREQUOTE_pvt;
2023 x_return_status := FND_API.G_RET_STS_ERROR;
2024 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2025 p_count => x_msg_count,
2026 p_data => x_msg_data);
2027 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2028 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2029 ibe_util.debug('Unexpected exception in IBE_QUOTE_SAVESHARE_PVT.RetrieveShareQuote');
2030 END IF;
2031 ROLLBACK TO RETRIEVESHAREQUOTE_pvt;
2032 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2033 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2034 p_count => x_msg_count,
2035 p_data => x_msg_data);
2036 WHEN OTHERS THEN
2037 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2038 ibe_util.debug('Unknown exception in IBE_QUOTE_SAVESHARE_PVT.RetrieveShareQuote');
2039 END IF;
2040 ROLLBACK TO RETRIEVESHAREQUOTE_pvt;
2041 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2042
2043 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2044 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
2045 l_api_name);
2046 END IF;
2047
2048 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2049 p_count => x_msg_count,
2050 p_data => x_msg_data);
2051 END RetrieveshareQuote;
2052
2053 PROCEDURE MergeActiveQuote(
2054 p_api_version_number IN NUMBER ,
2055 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE ,
2056 p_commit IN VARCHAR2 := FND_API.G_FALSE ,
2057 x_return_status OUT NOCOPY VARCHAR2 ,
2058 x_msg_count OUT NOCOPY NUMBER ,
2059 x_msg_data OUT NOCOPY VARCHAR2 ,
2060 p_quote_header_id IN NUMBER ,
2061 p_last_update_date IN VARCHAR2 := FND_API.G_FALSE ,
2062 p_mode IN VARCHAR2 := 'MERGE' ,
2063 p_combinesameitem IN VARCHAR2 := FND_API.G_MISS_CHAR,
2064 p_party_id IN NUMBER ,
2065 p_cust_account_id IN NUMBER ,
2066 p_quote_source_code IN VARCHAR2 := 'IStore Account' ,
2067 p_minisite_id IN NUMBER := FND_API.G_MISS_NUM ,
2068 p_currency_code IN VARCHAR2 := FND_API.G_MISS_CHAR,
2069 p_price_list_id IN NUMBER := FND_API.G_MISS_NUM ,
2070 p_control_rec IN ASO_Quote_Pub.Control_Rec_Type := ASO_Quote_Pub.G_MISS_Control_Rec,
2071 x_quote_header_id OUT NOCOPY NUMBER ,
2072 x_last_update_date OUT NOCOPY DATE ,
2073 x_retrieval_number OUT NOCOPY NUMBER
2074 )
2075 IS
2076 l_api_name CONSTANT VARCHAR2(30) := 'MergeActiveQuote';
2077 l_api_version CONSTANT NUMBER := 1.0;
2078 l_db_qte_header_rec ASO_Quote_Pub.qte_header_rec_type
2079 := ASO_Quote_Pub.g_miss_qte_header_rec;
2080
2081 l_in_qte_header_rec ASO_Quote_Pub.qte_header_rec_type
2082 := ASO_Quote_Pub.g_miss_qte_header_rec;
2083
2084 l_default_save_qte_hdr_rec ASO_Quote_Pub.qte_header_rec_type
2085 := ASO_Quote_Pub.g_miss_qte_header_rec;
2086
2087 l_quote_header_id number;
2088
2089 l_promote_guest_cart VARCHAR2(2) := FND_API.G_FALSE;
2090 l_retrieval_number NUMBER;
2091 l_resource_id NUMBER;
2092 l_publish_flag VARCHAR2(1);
2093 l_currency_code VARCHAR2(100);
2094 l_control_rec ASO_Quote_Pub.Control_Rec_Type
2095 := ASO_Quote_Pub.G_MISS_Control_Rec;
2096
2097 cursor c_getHdr(p_quote_header_id number) is
2098 select quote_header_id,
2099 last_update_date,
2100 quote_name,
2101 party_id,
2102 cust_account_id,
2103 currency_code
2104 from aso_quote_headers
2105 where quote_header_id = p_quote_header_id;
2106
2107 cursor c_getIdDate(p_party_id number
2108 ,p_cust_account_id number
2109 ,p_quote_source_code varchar2) is
2110 select quote_header_id,last_update_date
2111 from aso_quote_headers
2112 where party_id = p_party_id
2113 and cust_account_id = p_cust_account_id
2114 and quote_name = 'IBEACTIVECART'
2115 and quote_source_code = p_quote_source_code
2116 and trunc(quote_expiration_date) >= trunc(sysdate) --QUOTE EXPIRATION CHECK.
2117 and order_id is null;
2118
2119 cursor c_get_retrieval_num(c_party_id number,
2120 c_cust_account_id number,
2121 c_quote_header_id number) is
2122 select quote_sharee_number
2123 from ibe_sh_quote_access
2124 where quote_header_id = c_quote_header_id
2125 and party_id = c_party_id
2126 and cust_account_id = c_cust_account_id;
2127
2128 cursor c_get_quote_details(c_quote_header_id number) is
2129 select resource_id, publish_flag
2130 from aso_quote_headers
2131 where quote_header_id = c_quote_header_id;
2132
2133 rec_getHdr c_getHdr%rowtype;
2134 rec_get_retrieval_num c_get_retrieval_num%rowtype;
2135 -- 8/12/02: added the following parameters for Default Feature
2136 lx_Hd_Price_Attributes_Tbl ASO_Quote_Pub.Price_Attributes_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Attributes_Tbl;
2137 lx_Hd_Payment_Tbl ASO_Quote_Pub.Payment_Tbl_Type := ASO_Quote_Pub.G_MISS_PAYMENT_TBL;
2138 lx_Hd_Shipment_Tbl ASO_Quote_Pub.Shipment_Tbl_Type := ASO_Quote_Pub.G_MISS_SHIPMENT_TBL;
2139 lx_Hd_Freight_Charge_Tbl ASO_Quote_Pub.Freight_Charge_Tbl_Type := ASO_Quote_Pub.G_Miss_Freight_Charge_Tbl;
2140 lx_Hd_Tax_Detail_Tbl ASO_Quote_Pub.TAX_DETAIL_TBL_TYPE := ASO_Quote_Pub.G_Miss_Tax_Detail_Tbl;
2141 lx_Price_Adjustment_Tbl ASO_Quote_Pub.Price_Adj_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Adj_Tbl;
2142 lx_Price_Adj_Attr_Tbl ASO_Quote_Pub.Price_Adj_Attr_Tbl_Type := ASO_Quote_Pub.G_Miss_PRICE_ADJ_ATTR_Tbl;
2143 lx_Price_Adj_Rltship_Tbl ASO_Quote_Pub.Price_Adj_Rltship_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Adj_Rltship_Tbl;
2144
2145 -- temp vars for OUT params (NOCOPY chngs)
2146 l_quote_header_id_tmp number;
2147 l_last_update_date_tmp DATE;
2148 lx_Hd_Price_Attributes_Tbl_tmp ASO_Quote_Pub.Price_Attributes_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Attributes_Tbl;
2149 lx_Hd_Payment_Tbl_tmp ASO_Quote_Pub.Payment_Tbl_Type := ASO_Quote_Pub.G_MISS_PAYMENT_TBL;
2150 lx_Hd_Shipment_Tbl_tmp ASO_Quote_Pub.Shipment_Tbl_Type := ASO_Quote_Pub.G_MISS_SHIPMENT_TBL;
2151 lx_Hd_Freight_Charge_Tbl_tmp ASO_Quote_Pub.Freight_Charge_Tbl_Type := ASO_Quote_Pub.G_Miss_Freight_Charge_Tbl;
2152 lx_Hd_Tax_Detail_Tbl_tmp ASO_Quote_Pub.TAX_DETAIL_TBL_TYPE := ASO_Quote_Pub.G_Miss_Tax_Detail_Tbl;
2153 lx_Price_Adjustment_Tbl_tmp ASO_Quote_Pub.Price_Adj_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Adj_Tbl;
2154 lx_Price_Adj_Attr_Tbl_tmp ASO_Quote_Pub.Price_Adj_Attr_Tbl_Type := ASO_Quote_Pub.G_Miss_PRICE_ADJ_ATTR_Tbl;
2155 lx_Price_Adj_Rltship_Tbl_tmp ASO_Quote_Pub.Price_Adj_Rltship_Tbl_Type := ASO_Quote_Pub.G_Miss_Price_Adj_Rltship_Tbl;
2156 l_db_qte_header_rec_tmp ASO_Quote_Pub.qte_header_rec_type
2157 := ASO_Quote_Pub.g_miss_qte_header_rec;
2158
2159 --end of default feature params
2160 --MANNAMRA: 09/16/02 for save/share
2161 l_saveshare_control_rec IBE_QUOTE_SAVESHARE_V2_PVT.saveshare_control_rec_type
2162 := IBE_QUOTE_SAVESHARE_V2_PVT.g_miss_saveshare_control_rec;
2163
2164 cursor c_get_line_msiteId (l_quote_header_id number)
2165 is
2166 select minisite_id
2167 from aso_quote_lines
2168 where QUOTE_HEADER_ID = l_quote_header_id
2169 order by quote_line_id;
2170 rec_get_line_msiteId c_get_line_msiteId%rowtype;
2171
2172 -- Added for the bug 3346204.
2173 l_handle_exception number; -- 0 for Save both the carts, 1 for promoting guest cart as account active cart
2174
2175 BEGIN
2176
2177 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2178 IBE_UTIL.DEBUG('MergeActiveQuote: Start');
2179 END IF;
2180 -- Standard Start of API savepoint
2181 SAVEPOINT MergeActiveQuote_pvt;
2182 -- Standard call to check for call compatibility.
2183 IF NOT FND_API.Compatible_API_Call (l_api_version,
2184 P_Api_Version_Number,
2185 l_api_name,
2186 G_PKG_NAME )
2187 THEN
2188 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2189 END IF;
2190 -- Initialize message list IF p_init_msg_list is set to TRUE.
2191 IF FND_API.to_Boolean( p_init_msg_list ) THEN
2192 FND_MSG_PUB.initialize;
2193 END IF;
2194
2195 -- Initialize API return status to success
2196 x_return_status := FND_API.G_RET_STS_SUCCESS;
2197
2198 -- API body
2199
2200 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2201 IBE_UTIL.DEBUG('MergeActiveQuote: Before Calling log_environment_info');
2202 END IF;
2203 IBE_Quote_Misc_pvt.log_environment_info();
2204 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2205 IBE_UTIL.DEBUG('MergeActiveQuote: After Calling log_environment_info');
2206 END IF;
2207
2208 open c_getHdr(p_quote_header_id);
2209 fetch c_getHdr into
2210 l_in_qte_header_rec.quote_header_id
2211 ,l_in_qte_header_rec.last_update_date
2212 ,l_in_qte_header_rec.quote_name
2213 ,l_in_qte_header_rec.party_id
2214 ,l_in_qte_header_rec.cust_account_id
2215 ,l_currency_code;
2216 close c_getHdr;
2217
2218 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2219 IBE_UTIL.DEBUG('MergeActiveQuote: look at quote_source_code');
2220 END IF;
2221 IF (p_quote_source_code is null
2222 or p_quote_source_code = fnd_api.g_miss_char) THEN
2223 l_in_qte_header_rec.quote_source_code := 'IStore Account';
2224 else
2225 l_in_qte_header_rec.quote_source_code := p_quote_source_code;
2226 END IF;
2227
2228 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2229 IBE_UTIL.DEBUG('MergeActiveQuote: checking guest cart id');
2230 END IF;
2231 IF ( l_in_qte_header_rec.quote_header_id <> fnd_api.g_miss_num
2232 and l_in_qte_header_rec.quote_header_id is not null
2233 and l_in_qte_header_rec.quote_name <> 'IBE_PRMT_SC_UNNAMED' ) THEN
2234 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2235 FND_MESSAGE.Set_Name('IBE', 'IBE_SC_ERR_ACTIVECART');
2236 FND_MSG_PUB.ADD;
2237 END IF;
2238 RAISE FND_API.G_EXC_ERROR;
2239 END IF;
2240
2241 /*open c_getIDDate(p_party_id, p_cust_account_id, l_in_qte_header_rec.quote_source_code);
2242 fetch c_getIDDate into*/
2243
2244 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2245 IBE_UTIL.DEBUG('MergeActiveQuote: before getActiveQuote');
2246 END IF;
2247 --Retrieve the database(account active cart) quote header id
2248 l_db_qte_header_rec.quote_header_id
2249 := IBE_Quote_Misc_pvt.get_active_quote_id(
2250 p_party_id => p_party_id ,
2251 p_cust_account_id => p_cust_account_id);
2252
2253 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2254 IBE_UTIL.DEBUG('MergeActiveQuote: l_db_qte_header_rec.quote_header_id='||l_db_qte_header_rec.quote_header_id);
2255 END IF;
2256 -- 8/12/02: Default Feature: Added to get values for db acct active cart: to be passed to get default api's
2257 open c_getHdr(l_db_qte_header_rec.quote_header_id);
2258 fetch c_getHdr into
2259 l_db_qte_header_rec.quote_header_id
2260 ,l_db_qte_header_rec.last_update_date
2261 ,l_db_qte_header_rec.quote_name
2262 ,l_db_qte_header_rec.party_id
2263 ,l_db_qte_header_rec.cust_account_id
2264 ,l_currency_code;
2265 close c_getHdr;
2266
2267 -- try to get the minsite Id
2268
2269 -- 9/9/02: Defaulting feature
2270 -- for the case when the user doesn't have an Account Active Cart
2271 if ((l_db_qte_header_rec.quote_header_id <> fnd_api.g_miss_num) and (l_db_qte_header_rec.quote_header_id is not null) ) then
2272 l_quote_header_id := l_db_qte_header_rec.quote_header_id;
2273 else
2274 l_quote_header_id := l_in_qte_header_rec.quote_header_id;
2275 end if;
2276
2277 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2278 IBE_Util.Debug('MergeActiveQutoe: get minisiteId#1 -- use quoteHeaderId='||l_quote_header_id);
2279 END IF;
2280 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: get minisiteId#1 -- use quoteHeaderId='||l_quote_header_id);
2281 open c_get_line_msiteId (l_quote_header_id);
2282 fetch c_get_line_msiteId into rec_get_line_msiteId;
2283 close c_get_line_msiteId;
2284 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2285 IBE_Util.Debug('MergeActiveQutoe: get minisiteId#1:'||rec_get_line_msiteId.minisite_id);
2286 END IF;
2287 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: get minisiteId#1:'||rec_get_line_msiteId.minisite_id);
2288
2289 -- 9/9/02: Defaulting feature
2290 -- for the case when the user has an empty Account Active Cart
2291 if ((rec_get_line_msiteId.minisite_id = fnd_api.g_miss_num) or (rec_get_line_msiteId.minisite_id is null) ) then
2292 l_quote_header_id := l_in_qte_header_rec.quote_header_id;
2293
2294 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2295 IBE_Util.Debug('MergeActiveQutoe: get minisiteId#2 -- use quoteHeaderId='||l_quote_header_id);
2296 END IF;
2297 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: get minisiteId#2 -- use quoteHeaderId='||l_quote_header_id);
2298 open c_get_line_msiteId (l_quote_header_id);
2299 fetch c_get_line_msiteId into rec_get_line_msiteId;
2300 close c_get_line_msiteId;
2301 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2302 IBE_Util.Debug('MergeActiveQutoe: get minisiteId#2:'||rec_get_line_msiteId.minisite_id);
2303 END IF;
2304 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: get minisiteId#2:'||rec_get_line_msiteId.minisite_id);
2305 end if;
2306
2307 l_saveshare_control_rec.control_rec := p_control_rec;
2308 l_saveshare_control_rec.combinesameitem := p_combinesameitem;
2309
2310 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2311 IBE_UTIL.DEBUG('mergeActiveQuote: start the conditions');
2312 IBE_Util.Debug('input price list id: ' || p_price_list_id);
2313 END IF;
2314 IF ( l_in_qte_header_rec.quote_header_id <> fnd_api.g_miss_num
2315 and l_in_qte_header_rec.quote_header_id is not null ) THEN --If passed in cart is not null
2316
2317 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2318 IBE_UTIL.DEBUG('qte_in is not null');
2319 END IF;
2320 IF (l_db_qte_header_rec.quote_header_id <> fnd_api.g_miss_num --If database cart is not null
2321 and l_db_qte_header_rec.quote_header_id is not null
2322 and l_db_qte_header_rec.quote_header_id <> 0) THEN
2323
2324 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2325 IBE_UTIL.DEBUG('qte_db is not null');
2326 END IF;
2327 IF (l_in_qte_header_rec.quote_header_id <>
2328 l_db_qte_header_rec.quote_header_id ) THEN
2329 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2330 IBE_UTIL.DEBUG('input quote_header_id <> quote_header_id in db');
2331 END IF;
2332 IF (p_mode = 'MERGE') THEN -- combine two cart
2333 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2334 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE:Mode is merge');
2335 END IF;
2336 -- added 8/11/02: for Default Feature: we have to see if we need to default by calling getHdrDefaultValues:
2337 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2338 IBE_Util.Debug('MergeActiveQutoe: check to see if we can call getHdrDefaultValues');
2339 END IF;
2340 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: check to see if we can call getHdrDefaultValues');
2341 FOR rec_is_shared_cart in c_is_shared_cart(l_db_qte_header_rec.quote_header_id) LOOP
2342 /*If the destination cart is a shared cart then promote guest cart as the
2343 active cart, this is because a guest cart cannot be merged into a shared active cart*/
2344 IF (nvl(rec_is_shared_cart.yes_shared_cart,0) > 0) THEN
2345 l_promote_guest_cart := FND_API.G_TRUE;
2346 END IF;
2347 END LOOP;
2348
2349 /* If the destination cart is a Published Quote then promote guest cart as the active cart. */
2350 OPEN c_get_quote_details(l_db_qte_header_rec.quote_header_id);
2351 FETCH c_get_quote_details into l_resource_id, l_publish_flag;
2352 CLOSE c_get_quote_details;
2353
2354 IF (l_resource_id is not null and l_publish_flag ='Y') THEN
2355 l_promote_guest_cart := FND_API.G_TRUE;
2356 END IF;
2357
2358 IF(l_promote_guest_cart <> FND_API.G_TRUE) THEN
2359
2360 if ((rec_get_line_msiteId.minisite_id is not null) or
2361 (rec_get_line_msiteId.minisite_id <> fnd_api.g_miss_num) ) then
2362 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2363 IBE_Util.Debug('MergeActiveQuote : About to call getHdrDefaultValues');
2364 IBE_Util.Debug(' partyid :'||l_db_qte_header_rec.party_id);
2365 IBE_Util.Debug(' accountid :'||l_db_qte_header_rec.cust_account_id);
2366 IBE_Util.Debug(' quoteheaderid :'||l_db_qte_header_rec.quote_header_id);
2367 END IF;
2368 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: About to call getHdrDefaultValues');
2369 IBE_Quote_Save_pvt.getHdrDefaultValues(
2370 P_Api_Version_Number => p_api_version_number
2371 ,p_Init_Msg_List => p_init_msg_list
2372 ,p_Commit => p_commit
2373 ,p_minisite_id => rec_get_line_msiteId.minisite_id
2374 ,p_Qte_Header_Rec => l_db_qte_header_rec
2375 ,p_hd_price_attributes_tbl => lx_Hd_Price_Attributes_Tbl
2376 ,p_hd_payment_tbl => lx_Hd_Payment_Tbl
2377 ,p_hd_shipment_tbl => lx_Hd_Shipment_Tbl
2378 ,p_hd_freight_charge_tbl => lx_Hd_Freight_Charge_Tbl
2379 ,p_hd_tax_detail_tbl => lx_Hd_Tax_Detail_Tbl
2380 ,p_price_adjustment_tbl => lx_Price_Adjustment_Tbl
2381 ,p_price_adj_attr_tbl => lx_Price_Adj_Attr_Tbl
2382 ,p_price_adj_rltship_tbl => lx_Price_Adj_Rltship_Tbl
2383 ,x_Qte_Header_Rec => l_db_qte_header_rec_tmp
2384 ,x_Hd_Price_Attributes_Tbl => lx_Hd_Price_Attributes_Tbl_tmp
2385 ,x_Hd_Payment_Tbl => lx_Hd_Payment_Tbl_tmp
2386 ,x_Hd_Shipment_Tbl => lx_Hd_Shipment_Tbl_tmp
2387 ,x_Hd_Freight_Charge_Tbl => lx_Hd_Freight_Charge_Tbl_tmp
2388 ,x_Hd_Tax_Detail_Tbl => lx_Hd_Tax_Detail_Tbl_tmp
2389 ,x_Price_Adjustment_Tbl => lx_Price_Adjustment_Tbl_tmp
2390 ,x_Price_Adj_Attr_Tbl => lx_Price_Adj_Attr_Tbl_tmp
2391 ,x_Price_Adj_Rltship_Tbl => lx_Price_Adj_Rltship_Tbl_tmp
2392 ,x_last_update_date => x_last_update_date
2393 ,x_Return_Status => x_Return_Status
2394 ,x_Msg_Count => x_Msg_Count
2395 ,x_Msg_Data => x_Msg_Data);
2396 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2397 RAISE FND_API.G_EXC_ERROR;
2398 END IF;
2399 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2400 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2401 END IF;
2402
2403 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2404 IBE_Util.Debug('MergeActiveQutoe: Back from calling getHdrDefaultValues');
2405 IBE_Util.Debug('MergeActiveQuote: Assigning OUT params here');
2406 END IF;
2407 l_db_qte_header_rec := l_db_qte_header_rec_tmp;
2408 lx_Hd_Price_Attributes_Tbl := lx_Hd_Price_Attributes_Tbl_tmp;
2409 lx_Hd_Payment_Tbl := lx_Hd_Payment_Tbl_tmp;
2410 lx_Hd_Shipment_Tbl := lx_Hd_Shipment_Tbl_tmp;
2411 lx_Hd_Freight_Charge_Tbl := lx_Hd_Freight_Charge_Tbl_tmp;
2412 lx_Hd_Tax_Detail_Tbl := lx_Hd_Tax_Detail_Tbl_tmp;
2413 lx_Price_Adjustment_Tbl := lx_Price_Adjustment_Tbl_tmp;
2414 lx_Price_Adj_Attr_Tbl := lx_Price_Adj_Attr_Tbl_tmp;
2415 lx_Price_Adj_Rltship_Tbl := lx_Price_Adj_Rltship_Tbl_tmp;
2416 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2417 IBE_Util.Debug('DB Quote info: ' || l_db_qte_header_rec.party_id ||'##' ||l_db_qte_header_rec.quote_header_id);
2418 End if;
2419 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: Back from calling getHdrDefaultValues');
2420 end if; -- if we can find the minisiteId
2421
2422 IBE_QUOTE_SAVESHARE_pvt.AppendToReplaceShare
2423 ( P_Api_Version_Number => p_api_version_number
2424 ,p_Init_Msg_List => fnd_api.g_false
2425 ,P_Commit => fnd_api.g_false
2426 ,p_Original_Quote_Header_Id => l_in_qte_header_rec.quote_header_id
2427 ,p_last_update_date => l_in_qte_header_rec.last_update_date
2428 ,P_REP_App_Quote_Header_id => l_db_qte_header_rec.quote_header_id
2429 ,p_currency_code => p_currency_code
2430 ,p_price_list_id => p_price_list_id
2431 ,p_control_rec => p_control_rec
2432 ,p_combinesameitem => p_combinesameitem
2433 ,p_mode => 'APPENDTO'
2434 ,p_rep_app_invTo_partySiteId => l_db_qte_header_rec.invoice_to_party_site_id
2435 ,p_hd_price_attributes_tbl => lx_Hd_Price_Attributes_Tbl
2436 ,p_hd_payment_tbl => lx_Hd_Payment_Tbl
2437 ,p_hd_shipment_tbl => lx_Hd_Shipment_Tbl
2438 ,p_hd_freight_charge_tbl => lx_Hd_Freight_Charge_Tbl
2439 ,p_hd_tax_detail_tbl => lx_Hd_Tax_Detail_Tbl
2440 ,p_price_adjustment_tbl => lx_Price_Adjustment_Tbl
2441 ,p_price_adj_attr_tbl => lx_Price_Adj_Attr_Tbl
2442 ,p_price_adj_rltship_tbl => lx_Price_Adj_Rltship_Tbl
2443 ,X_Quote_Header_Id => l_quote_header_id_tmp
2444 ,x_last_update_date => l_last_update_date_tmp
2445 ,X_Return_Status => x_return_status
2446 ,X_Msg_Count => x_msg_count
2447 ,X_Msg_Data => x_msg_data);
2448
2449 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2450 l_handle_exception := 0;
2451 RAISE FND_API.G_EXC_ERROR;
2452 END IF;
2453 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2454 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2455 END IF;
2456 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2457 IBE_UTIL.DEBUG('Assigns OUT params');
2458 END IF;
2459 l_db_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
2460 l_db_qte_header_rec.last_update_date := l_last_update_date_tmp;
2461
2462 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2463 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE: done merge');
2464 END IF;
2465
2466
2467 IBE_Quote_Save_pvt.Delete
2468 ( p_api_version_number => p_api_version_number
2469 ,p_init_msg_list => FND_API.G_false
2470 ,p_commit => FND_API.G_false
2471 ,p_quote_header_id => l_in_qte_header_rec.quote_header_id
2472 ,p_last_update_date => l_in_qte_header_rec.last_update_date
2473 ,p_expunge_flag => FND_API.G_true
2474 ,X_Return_Status => x_Return_Status
2475 ,X_Msg_Count => x_Msg_Count
2476 ,X_Msg_Data => x_Msg_Data);
2477
2478 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2479 RAISE FND_API.G_EXC_ERROR;
2480 END IF;
2481 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2482 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2483 END IF;
2484 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2485 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE: done merge: +delete');
2486 END IF;
2487
2488 x_quote_header_id := l_db_qte_header_rec.quote_header_id;
2489 x_last_update_date := l_db_qte_header_rec.last_update_date;
2490 END IF;
2491
2492 elsif (p_mode ='KEEP') THEN
2493
2494 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2495 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE: mode is keep');
2496 --IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE: Calling delete on account active cart');
2497 END IF;
2498 if (l_db_qte_header_rec.quote_name = 'IBE_PRMT_SC_UNNAMED') then
2499 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2500 IBE_UTIL.DEBUG('Active cart was unnamed, calling IBE_Quote_Save_pvt.SAVE to default save the active cart');
2501 END IF;
2502 l_default_save_qte_hdr_rec.quote_header_id := l_db_qte_header_rec.quote_header_id;
2503 l_default_save_qte_hdr_rec.last_update_date := l_db_qte_header_rec.last_update_date;
2504 l_default_save_qte_hdr_rec.quote_name := 'IBE_PRMT_SC_DEFAULTNAMED';
2505
2506 IBE_Quote_Save_pvt.save(
2507 p_api_version_number => p_api_version_number ,
2508 p_init_msg_list => fnd_api.g_false ,
2509 p_commit => fnd_api.g_false ,
2510 p_qte_header_rec => l_default_save_qte_hdr_rec ,
2511 x_quote_header_id => l_quote_header_id_tmp ,
2512 x_last_update_date => l_last_update_date_tmp ,
2513
2514 x_return_status => x_return_status ,
2515 x_msg_count => x_msg_count ,
2516 x_msg_data => x_msg_data);
2517
2518 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2519 RAISE FND_API.G_EXC_ERROR;
2520 END IF;
2521
2522 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2523 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2524 END IF;
2525 l_db_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
2526 l_db_qte_header_rec.last_update_date := l_last_update_date_tmp;
2527
2528 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2529 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE: Done keep: updating cart name to defaultnamed');
2530 END IF;
2531 end if; -- end if quote name was unnamed
2532 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2533 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE: Deactivating account active cart (since mode = KEEP)');
2534 END IF;
2535 IBE_QUOTE_SAVESHARE_V2_PVT.DEACTIVATE_QUOTE (
2536 P_Quote_header_id => l_db_qte_header_rec.quote_header_id ,
2537 P_Party_id => l_db_qte_header_rec.party_id ,
2538 P_Cust_account_id => l_db_qte_header_rec.Cust_account_id ,
2539 -- P_minisite_id => p_minisite_id ,
2540 p_api_version => p_api_version_number ,
2541 p_init_msg_list => fnd_api.g_false ,
2542 p_commit => fnd_api.g_false ,
2543 x_return_status => x_return_status ,
2544 x_msg_count => x_msg_count ,
2545 x_msg_data => x_msg_data );
2546
2547 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2548 RAISE FND_API.G_EXC_ERROR;
2549 END IF;
2550
2551 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2552 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2553 END IF;
2554
2555 l_promote_guest_cart := FND_API.G_TRUE;
2556 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2557 IBE_UTIL.DEBUG('keep: done');
2558 END IF;
2559
2560 elsif (p_mode ='REMOVE') THEN
2561
2562 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2563 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE:start remove');
2564 END IF;
2565 IBE_Quote_Save_pvt.Delete
2566 ( p_api_version_number => p_api_version_number
2567 ,p_init_msg_list => FND_API.G_false
2568 ,p_commit => FND_API.G_false
2569 ,p_quote_header_id => l_in_qte_header_rec.quote_header_id
2570 ,p_last_update_date => l_in_qte_header_rec.last_update_date
2571 ,p_expunge_flag => FND_API.g_true --added expunge_flag param
2572 ,X_Return_Status => x_Return_Status
2573 ,X_Msg_Count => x_Msg_Count
2574 ,X_Msg_Data => x_Msg_Data
2575 );
2576 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2577 RAISE FND_API.G_EXC_ERROR;
2578 END IF;
2579 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2580 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2581 END IF;
2582 x_quote_header_id := l_db_qte_header_rec.quote_header_id;
2583 x_last_update_date := l_db_qte_header_rec.last_update_date;
2584
2585 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2586 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE: remove: after delete');
2587 END IF;
2588 END IF;
2589 else -- pass in quote is same as quote in db
2590
2591 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2592 IBE_UTIL.DEBUG('in = db');
2593 END IF;
2594 x_quote_header_id := l_in_qte_header_rec.quote_header_id;
2595 x_last_update_date := l_in_qte_header_rec.last_update_date;
2596 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2597 IBE_UTIL.DEBUG('in = db: done');
2598 END IF;
2599 END IF;
2600
2601
2602 else -- no quote id in database
2603 l_promote_guest_cart := FND_API.G_TRUE;
2604 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2605 IBE_UTIL.DEBUG('No quote in database hence promoting guest cart ');
2606 END IF;
2607 END IF;
2608
2609 ELSE -- no quote_id passed in
2610 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2611 IBE_UTIL.DEBUG('no q_in');
2612 END IF;
2613 -- 8/13/02: Default Feature: the case when there is no guest cart.
2614 IF (l_db_qte_header_rec.quote_header_id <> fnd_api.g_miss_num
2615 and l_db_qte_header_rec.quote_header_id is not null
2616 and l_db_qte_header_rec.quote_header_id <> 0) THEN
2617 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2618 IBE_Util.Debug('MergeActiveQutoe -- when no quoteId is passed in: check to see if we can call getHdrDefaultValues');
2619 END IF;
2620 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe -- when no quoteId is passed in: check to see if we can call getHdrDefaultValues');
2621
2622 if ((rec_get_line_msiteId.minisite_id is not null) or (rec_get_line_msiteId.minisite_id <> fnd_api.g_miss_num) ) then
2623 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2624 IBE_Util.Debug('MergeActiveQuote: About to call getHdrDefaultValues');
2625 END IF;
2626 --DBMS_OUTPUT.PUT_LINE('MergeActiveQuote: About to call getHdrDefaultValues');
2627 IBE_Quote_Save_pvt.getHdrDefaultValues(
2628 P_Api_Version_Number => p_api_version_number
2629 ,p_Init_Msg_List => p_init_msg_list
2630 ,p_Commit => p_commit
2631 ,p_minisite_id => rec_get_line_msiteId.minisite_id
2632 ,p_Qte_Header_Rec => l_db_qte_header_rec
2633 ,p_hd_price_attributes_tbl => lx_Hd_Price_Attributes_Tbl
2634 ,p_hd_payment_tbl => lx_Hd_Payment_Tbl
2635 ,p_hd_shipment_tbl => lx_Hd_Shipment_Tbl
2636 ,p_hd_freight_charge_tbl => lx_Hd_Freight_Charge_Tbl
2637 ,p_hd_tax_detail_tbl => lx_Hd_Tax_Detail_Tbl
2638 ,p_price_adjustment_tbl => lx_Price_Adjustment_Tbl
2639 ,p_price_adj_attr_tbl => lx_Price_Adj_Attr_Tbl
2640 ,p_price_adj_rltship_tbl => lx_Price_Adj_Rltship_Tbl
2641 ,x_Qte_Header_Rec => l_db_qte_header_rec_tmp
2642 ,x_Hd_Price_Attributes_Tbl => lx_Hd_Price_Attributes_Tbl_tmp
2643 ,x_Hd_Payment_Tbl => lx_Hd_Payment_Tbl_tmp
2644 ,x_Hd_Shipment_Tbl => lx_Hd_Shipment_Tbl_tmp
2645 ,x_Hd_Freight_Charge_Tbl => lx_Hd_Freight_Charge_Tbl_tmp
2646 ,x_Hd_Tax_Detail_Tbl => lx_Hd_Tax_Detail_Tbl_tmp
2647 ,x_Price_Adjustment_Tbl => lx_Price_Adjustment_Tbl_tmp
2648 ,x_Price_Adj_Attr_Tbl => lx_Price_Adj_Attr_Tbl_tmp
2649 ,x_Price_Adj_Rltship_Tbl => lx_Price_Adj_Rltship_Tbl_tmp
2650 ,x_last_update_date => x_last_update_date
2651 ,X_Return_Status => x_Return_Status
2652 ,X_Msg_Count => x_Msg_Count
2653 ,X_Msg_Data => x_Msg_Data
2654 );
2655 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2656 RAISE FND_API.G_EXC_ERROR;
2657 END IF;
2658 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2659 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2660 END IF;
2661
2662 l_db_qte_header_rec := l_db_qte_header_rec_tmp;
2663 lx_Hd_Price_Attributes_Tbl := lx_Hd_Price_Attributes_Tbl_tmp;
2664 lx_Hd_Payment_Tbl := lx_Hd_Payment_Tbl_tmp;
2665 lx_Hd_Shipment_Tbl := lx_Hd_Shipment_Tbl_tmp;
2666 lx_Hd_Freight_Charge_Tbl := lx_Hd_Freight_Charge_Tbl_tmp;
2667 lx_Hd_Tax_Detail_Tbl := lx_Hd_Tax_Detail_Tbl_tmp;
2668 lx_Price_Adjustment_Tbl := lx_Price_Adjustment_Tbl_tmp;
2669 lx_Price_Adj_Attr_Tbl := lx_Price_Adj_Attr_Tbl_tmp;
2670 lx_Price_Adj_Rltship_Tbl := lx_Price_Adj_Rltship_Tbl_tmp;
2671
2672 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2673 IBE_Util.Debug('SUCCESS! MergeActiveQutoe: Back from calling getHdrDefaultValues');
2674 END IF;
2675 --DBMS_OUTPUT.PUT_LINE('MergeActiveQutoe: Back from calling getHdrDefaultValues');
2676
2677 -- 8/12/02: for Default Feature: added some more parameters
2678 --Adding the currency code validation here.
2679 /*IF (l_currency_code <> p_currency_code) THEN
2680 l_control_rec.pricing_request_type := 'ASO';--FND_Profile.Value('IBE_PRICE_REQUEST_TYPE');
2681 l_control_rec.header_pricing_event := FND_Profile.Value('IBE_INCART_PRICING_EVENT');
2682 l_control_rec.line_pricing_event := FND_Profile.Value('IBE_INCARTLINE_PRICING_EVENT');
2683 l_control_rec.calculate_freight_charge_flag := 'Y';
2684 l_control_rec.calculate_tax_flag := 'Y';
2685 END IF:*/
2686 -- added for bug 3217154 - really price list id was being passed in the right places except here
2687 l_db_qte_header_rec.price_list_id := p_price_list_id;
2688 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2689 IBE_Util.Debug('price list id: ' || l_db_qte_header_rec.price_list_id);
2690 END IF;
2691 IBE_Quote_Save_pvt.save
2692 ( p_api_version_number => p_api_version_number
2693 ,p_init_msg_list => FND_API.G_FALSE
2694 ,p_commit => FND_API.G_FALSE
2695 ,p_control_rec => p_control_rec
2696 ,p_qte_header_rec => l_db_qte_header_rec
2697 ,p_hd_price_attributes_tbl => lx_Hd_Price_Attributes_Tbl
2698 ,p_hd_payment_tbl => lx_Hd_Payment_Tbl
2699 ,p_hd_shipment_tbl => lx_Hd_Shipment_Tbl
2700 ,p_hd_freight_charge_tbl => lx_Hd_Freight_Charge_Tbl
2701 ,p_hd_tax_detail_tbl => lx_Hd_Tax_Detail_Tbl
2702 ,p_price_adjustment_tbl => lx_Price_Adjustment_Tbl
2703 ,p_price_adj_attr_tbl => lx_Price_Adj_Attr_Tbl
2704 ,p_price_adj_rltship_tbl => lx_Price_Adj_Rltship_Tbl
2705 ,x_quote_header_id => l_quote_header_id_tmp
2706 ,x_last_update_date => l_last_update_date_tmp
2707 ,x_return_status => x_return_status
2708 ,x_msg_count => x_msg_count
2709 ,x_msg_data => x_msg_data
2710 );
2711 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2712 l_handle_exception := 0; -- No guest cart id passed in, exception in repricing the current cart
2713 RAISE FND_API.G_EXC_ERROR;
2714 END IF;
2715 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2716 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2717 END IF;
2718
2719 l_db_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
2720 l_db_qte_header_rec.last_update_date := l_last_update_date_tmp;
2721
2722 end if; -- if we can find the minisiteId
2723
2724 for rec_getHdr in c_getHdr(l_db_qte_header_rec.quote_header_id) loop
2725 IF (p_party_id <> rec_getHdr.party_id) THEN
2726 FOR rec_get_retrieval_num in c_get_retrieval_num(p_party_id,
2727 p_cust_account_id,
2728 l_db_qte_header_rec.quote_header_id) LOOP
2729 l_retrieval_number := rec_get_retrieval_num.quote_sharee_number;
2730 x_retrieval_number := l_retrieval_number;
2731 EXIT when c_get_retrieval_num%NOTFOUND;
2732 END LOOP;
2733 END IF;
2734 EXIT when c_getHdr%NOTFOUND;
2735 END LOOP;
2736
2737
2738 end if; -- db quote is valid
2739 x_quote_header_id := l_db_qte_header_rec.quote_header_id;
2740 x_last_update_date := l_db_qte_header_rec.last_update_date;
2741 END IF;
2742
2743 --Code for promoting a guest cart
2744 IF (l_promote_guest_cart = FND_API.G_TRUE) THEN
2745 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2746 IBE_UTIL.DEBUG('*****************Code for promoting a guest cart*******************');
2747 IBE_UTIL.DEBUG('********MergeActiveQutoe:Promote guest cart flag is set to true**********');
2748 IBE_UTIL.DEBUG('MergeActiveQutoe:Guest party_id is: '||p_party_id);
2749 IBE_UTIL.DEBUG('MergeActiveQutoe:Guest cust_account_id is: '||p_cust_account_id);
2750 IBE_UTIL.DEBUG('MergeActiveQutoe:Guest header id: '||l_in_qte_header_rec.quote_header_id);
2751 IBE_UTIL.DEBUG('MergeActiveQutoe:quote name : '||l_in_qte_header_rec.quote_name);
2752
2753 END IF;
2754
2755 l_in_qte_header_rec.party_id := p_party_id;
2756 l_in_qte_header_rec.cust_account_id := p_cust_account_id;
2757 l_in_qte_header_rec.quote_source_code := 'IStore Account';
2758 l_in_qte_header_rec.price_list_id := p_price_list_id;
2759 l_in_qte_header_rec.currency_code := p_currency_code;
2760 IF(l_in_qte_header_rec.quote_name <> 'IBE_PRMT_SC_UNNAMED') THEN
2761 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2762 IBE_UTIL.DEBUG('MergeActiveQutoe:Changing guest cart name frm: '||l_in_qte_header_rec.quote_name||
2763 ' to IBE_PRMT_SC_UNNAMED');
2764 END IF;
2765 l_in_qte_header_rec.quote_name := 'IBE_PRMT_SC_UNNAMED';
2766 END IF;
2767
2768 if ((rec_get_line_msiteId.minisite_id is not null) or
2769 (rec_get_line_msiteId.minisite_id <> fnd_api.g_miss_num) ) then
2770 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2771 IBE_Util.Debug('MergeActiveQuote: About to call getHdrDefaultValues during promotion');
2772 END IF;
2773 --DBMS_OUTPUT.PUT_LINE('MergeActiveQuote: About to call getHdrDefaultValues');
2774 IBE_Quote_Save_pvt.getHdrDefaultValues(
2775 P_Api_Version_Number => p_api_version_number
2776 ,p_Init_Msg_List => p_init_msg_list
2777 ,p_Commit => p_commit
2778 ,p_minisite_id => rec_get_line_msiteId.minisite_id
2779 ,p_Qte_Header_Rec => l_in_qte_header_rec
2780 ,p_hd_price_attributes_tbl => lx_Hd_Price_Attributes_Tbl
2781 ,p_hd_payment_tbl => lx_Hd_Payment_Tbl
2782 ,p_hd_shipment_tbl => lx_Hd_Shipment_Tbl
2783 ,p_hd_freight_charge_tbl => lx_Hd_Freight_Charge_Tbl
2784 ,p_hd_tax_detail_tbl => lx_Hd_Tax_Detail_Tbl
2785 ,p_price_adjustment_tbl => lx_Price_Adjustment_Tbl
2786 ,p_price_adj_attr_tbl => lx_Price_Adj_Attr_Tbl
2787 ,p_price_adj_rltship_tbl => lx_Price_Adj_Rltship_Tbl
2788 ,x_Qte_Header_Rec => l_db_qte_header_rec_tmp
2789 ,x_Hd_Price_Attributes_Tbl => lx_Hd_Price_Attributes_Tbl_tmp
2790 ,x_Hd_Payment_Tbl => lx_Hd_Payment_Tbl_tmp
2791 ,x_Hd_Shipment_Tbl => lx_Hd_Shipment_Tbl_tmp
2792 ,x_Hd_Freight_Charge_Tbl => lx_Hd_Freight_Charge_Tbl_tmp
2793 ,x_Hd_Tax_Detail_Tbl => lx_Hd_Tax_Detail_Tbl_tmp
2794 ,x_Price_Adjustment_Tbl => lx_Price_Adjustment_Tbl_tmp
2795 ,x_Price_Adj_Attr_Tbl => lx_Price_Adj_Attr_Tbl_tmp
2796 ,x_Price_Adj_Rltship_Tbl => lx_Price_Adj_Rltship_Tbl_tmp
2797 ,x_last_update_date => x_last_update_date
2798 ,x_Return_Status => x_Return_Status
2799 ,x_Msg_Count => x_Msg_Count
2800 ,x_Msg_Data => x_Msg_Data);
2801 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2802 RAISE FND_API.G_EXC_ERROR;
2803 END IF;
2804 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2805 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2806 END IF;
2807
2808 l_in_qte_header_rec := l_db_qte_header_rec_tmp;
2809 lx_Hd_Price_Attributes_Tbl := lx_Hd_Price_Attributes_Tbl_tmp;
2810 lx_Hd_Payment_Tbl := lx_Hd_Payment_Tbl_tmp;
2811 lx_Hd_Shipment_Tbl := lx_Hd_Shipment_Tbl_tmp;
2812 lx_Hd_Freight_Charge_Tbl := lx_Hd_Freight_Charge_Tbl_tmp;
2813 lx_Hd_Tax_Detail_Tbl := lx_Hd_Tax_Detail_Tbl_tmp;
2814 lx_Price_Adjustment_Tbl := lx_Price_Adjustment_Tbl_tmp;
2815 lx_Price_Adj_Attr_Tbl := lx_Price_Adj_Attr_Tbl_tmp;
2816 lx_Price_Adj_Rltship_Tbl := lx_Price_Adj_Rltship_Tbl_tmp;
2817
2818
2819 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2820 IBE_Util.Debug('MergeActiveQuote: Back from calling getHdrDefaultValues');
2821 END IF;
2822 --DBMS_OUTPUT.PUT_LINE('MergeActiveQuote: Back from calling getHdrDefaultValues');
2823 else
2824 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2825 IBE_UTIL.DEBUG('MergeActiveQuote:Cannot find a minisite_id while calling getHdrDefaultValues');
2826 END IF;
2827 end if; -- if we can find the minisiteId
2828
2829 --save the guest cart into account active cart of the user
2830 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2831 IBE_UTIL.DEBUG('MergeActiveQuote:saving the guest cart as account active cart of the user');
2832 END IF;
2833 IBE_Quote_Save_pvt.save(
2834 p_api_version_number => p_api_version_number ,
2835 p_init_msg_list => fnd_api.g_false ,
2836 p_commit => fnd_api.g_false ,
2837
2838 -- Mannamra: fix for 4374289
2839 p_hd_price_attributes_tbl => lx_Hd_Price_Attributes_Tbl,
2840 p_hd_payment_tbl => lx_Hd_Payment_Tbl ,
2841 p_hd_shipment_tbl => lx_Hd_Shipment_Tbl ,
2842 p_hd_freight_charge_tbl => lx_Hd_Freight_Charge_Tbl ,
2843 p_hd_tax_detail_tbl => lx_Hd_Tax_Detail_Tbl ,
2844 p_price_adjustment_tbl => lx_Price_Adjustment_Tbl ,
2845 p_price_adj_attr_tbl => lx_Price_Adj_Attr_Tbl ,
2846 p_price_adj_rltship_tbl => lx_Price_Adj_Rltship_Tbl ,
2847 -- Mannamra:End of fix for 4374289
2848
2849 p_qte_header_rec => l_in_qte_header_rec ,
2850 p_control_rec => p_control_rec ,
2851 x_quote_header_id => l_quote_header_id_tmp ,
2852 x_last_update_date => l_last_update_date_tmp ,
2853
2854 x_return_status => x_return_status ,
2855 x_msg_count => x_msg_count ,
2856 x_msg_data => x_msg_data );
2857
2858 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2859 IF (p_mode = 'KEEP') THEN
2860 /* This is to save the current active cart in case of KEEP Option. */
2861 l_handle_exception := 0;
2862 ELSE
2863 l_handle_exception := 1;
2864 END IF;
2865 /* Promoting guest cart failed with exception, so promote guest cart and save the cart for that user */
2866 RAISE FND_API.G_EXC_ERROR;
2867 END IF;
2868
2869 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2870 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2871 END IF;
2872
2873 l_in_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
2874 l_in_qte_header_rec.last_update_date := l_last_update_date_tmp;
2875
2876 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2877 IBE_UTIL.DEBUG('MergeActiveQuote:DONE saving the guest cart as account active cart of the user');
2878 IBE_UTIL.DEBUG('MergeActiveQuote:Calling IBE_QUOTE_SAVESHARE_V2_PVT.activate_quote');
2879 IBE_UTIL.DEBUG('MergeActiveQuote:l_in_qte_header_rec.quote_header_id: '||l_in_qte_header_rec.quote_header_id);
2880 END IF;
2881 IBE_QUOTE_SAVESHARE_V2_PVT.ACTIVATE_QUOTE(
2882 P_Quote_header_rec => l_in_qte_header_rec ,
2883 P_Party_id => P_party_id ,
2884 P_Cust_account_id => P_cust_account_id ,
2885 P_api_version => p_api_version_number ,
2886 P_init_msg_list => FND_API.G_FALSE ,
2887 P_commit => FND_API.G_FALSE ,
2888 x_return_status => x_return_status ,
2889 x_msg_count => x_msg_count ,
2890 x_msg_data => x_msg_data);
2891
2892 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2893 RAISE FND_API.G_EXC_ERROR;
2894 END IF;
2895
2896 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2897 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2898 END IF;
2899 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2900 IBE_UTIL.DEBUG('MergeActiveQutoe:DONE calling IBE_QUOTE_SAVESHARE_V2_PVT.activate_quote');
2901 END IF;
2902 x_quote_header_id := l_in_qte_header_rec.quote_header_id;
2903 x_last_update_date := l_in_qte_header_rec.last_update_date;
2904
2905 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2906 IBE_UTIL.DEBUG('MergeActiveQutoe:x_quote_header_id: '||x_quote_header_id);
2907 IBE_UTIL.DEBUG('MergeActiveQutoe:x_last_update_date: '||x_last_update_date);
2908 END IF;
2909
2910 END IF;
2911
2912
2913 IF (x_quote_header_id = FND_API.G_MISS_NUM
2914 or x_quote_header_id = 0) THEN
2915 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2916 IBE_UTIL.DEBUG('cant find quote header id -> return null');
2917 END IF;
2918 x_quote_header_id := NULL;
2919 END IF;
2920 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2921 IBE_UTIL.DEBUG('mergeActiveQuote: End');
2922 END IF;
2923
2924 -- Standard check of p_commit.
2925 IF FND_API.To_Boolean( p_commit ) THEN
2926 COMMIT WORK;
2927 END IF;
2928
2929 -- Standard call to get message count and IF count is 1, get message info.
2930 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
2931 p_count => x_msg_count,
2932 p_data => x_msg_data);
2933 EXCEPTION
2934 WHEN FND_API.G_EXC_ERROR THEN
2935 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2936 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.mergeActiveQuote');
2937 END IF;
2938 ROLLBACK TO MergeActiveQuote_pvt;
2939 -- Handle saving the carts...
2940 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2941 ibe_util.debug('Exception:l_handle_exception = '||l_handle_exception);
2942 END IF;
2943 IF (l_handle_exception = 0) THEN
2944 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2945 ibe_util.debug('New exception handling, in case of few expected exception save the carts');
2946 END IF;
2947 if (l_db_qte_header_rec.quote_name = 'IBE_PRMT_SC_UNNAMED') then
2948 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2949 IBE_UTIL.DEBUG('Exception: Active cart was unnamed, calling IBE_Quote_Save_pvt.SAVE to default save the active cart');
2950 END IF;
2951 l_default_save_qte_hdr_rec.quote_header_id := l_db_qte_header_rec.quote_header_id;
2952 l_default_save_qte_hdr_rec.last_update_date := l_db_qte_header_rec.last_update_date;
2953 l_default_save_qte_hdr_rec.quote_name := 'IBE_PRMT_SC_DEFAULTNAMED';
2954
2955 IBE_Quote_Save_pvt.save(
2956 p_api_version_number => p_api_version_number ,
2957 p_init_msg_list => fnd_api.g_false ,
2958 p_commit => fnd_api.g_true ,
2959 p_qte_header_rec => l_default_save_qte_hdr_rec ,
2960 x_quote_header_id => l_quote_header_id_tmp ,
2961 x_last_update_date => l_last_update_date_tmp ,
2962
2963 x_return_status => x_return_status ,
2964 x_msg_count => x_msg_count ,
2965 x_msg_data => x_msg_data);
2966
2967 l_db_qte_header_rec.quote_header_id := l_quote_header_id_tmp;
2968 l_db_qte_header_rec.last_update_date := l_last_update_date_tmp;
2969
2970 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2971 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE Exception: Done keep: updating cart name to defaultnamed');
2972 END IF;
2973 end if; -- end if quote name was unnamed
2974 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2975 IBE_UTIL.DEBUG('IBE_QUOTE_SAVESHARE_pvt.MERGE_QUOTE Exception: Deactivating account active cart (since mode = KEEP)');
2976 END IF;
2977 IBE_QUOTE_SAVESHARE_V2_PVT.DEACTIVATE_QUOTE (
2978 P_Quote_header_id => l_db_qte_header_rec.quote_header_id ,
2979 P_Party_id => l_db_qte_header_rec.party_id ,
2980 P_Cust_account_id => l_db_qte_header_rec.Cust_account_id ,
2981 p_api_version => p_api_version_number ,
2982 p_init_msg_list => fnd_api.g_false ,
2983 p_commit => fnd_api.g_true ,
2984 x_return_status => x_return_status ,
2985 x_msg_count => x_msg_count ,
2986 x_msg_data => x_msg_data );
2987 END IF; -- l_handle_exception is 0, to handle merge of 2 carts.
2988
2989 IF (l_handle_exception = 0 OR l_handle_exception = 1) THEN
2990
2991 IF ( l_in_qte_header_rec.quote_header_id <> fnd_api.g_miss_num
2992 and l_in_qte_header_rec.quote_header_id is not null ) THEN
2993
2994 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
2995 IBE_UTIL.DEBUG('*****************Code for promoting a guest cart in case of expected exception *******************');
2996 IBE_UTIL.DEBUG('********MergeActiveQutoe:Exception:Promote guest cart flag is set to true**********');
2997 IBE_UTIL.DEBUG('MergeActiveQutoe:Exception:Guest party_id is: '||p_party_id);
2998 IBE_UTIL.DEBUG('MergeActiveQutoe:Exception:Guest cust_account_id is: '||p_cust_account_id);
2999 IBE_UTIL.DEBUG('MergeActiveQutoe:Exception:Guest header id: '||l_in_qte_header_rec.quote_header_id);
3000 IBE_UTIL.DEBUG('MergeActiveQutoe:Exception:quote name : '||l_in_qte_header_rec.quote_name);
3001 END IF;
3002 l_in_qte_header_rec.party_id := p_party_id;
3003 l_in_qte_header_rec.cust_account_id := p_cust_account_id;
3004 l_in_qte_header_rec.quote_source_code := 'IStore Account';
3005 l_in_qte_header_rec.price_list_id := p_price_list_id;
3006 l_in_qte_header_rec.currency_code := p_currency_code;
3007 l_in_qte_header_rec.quote_name := 'IBE_PRMT_SC_DEFAULTNAMED';
3008
3009 if ((rec_get_line_msiteId.minisite_id is not null) or
3010 (rec_get_line_msiteId.minisite_id <> fnd_api.g_miss_num) ) then
3011 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3012 IBE_Util.Debug('MergeActiveQuote:Exception: About to call getHdrDefaultValues during promotion');
3013 END IF;
3014
3015 IBE_Quote_Save_pvt.getHdrDefaultValues(
3016 P_Api_Version_Number => p_api_version_number
3017 ,p_Init_Msg_List => p_init_msg_list
3018 ,p_Commit => p_commit
3019 ,p_minisite_id => rec_get_line_msiteId.minisite_id
3020 ,p_Qte_Header_Rec => l_in_qte_header_rec
3021 ,p_hd_price_attributes_tbl => lx_Hd_Price_Attributes_Tbl
3022 ,p_hd_payment_tbl => lx_Hd_Payment_Tbl
3023 ,p_hd_shipment_tbl => lx_Hd_Shipment_Tbl
3024 ,p_hd_freight_charge_tbl => lx_Hd_Freight_Charge_Tbl
3025 ,p_hd_tax_detail_tbl => lx_Hd_Tax_Detail_Tbl
3026 ,p_price_adjustment_tbl => lx_Price_Adjustment_Tbl
3027 ,p_price_adj_attr_tbl => lx_Price_Adj_Attr_Tbl
3028 ,p_price_adj_rltship_tbl => lx_Price_Adj_Rltship_Tbl
3029 ,x_Qte_Header_Rec => l_db_qte_header_rec_tmp
3030 ,x_Hd_Price_Attributes_Tbl => lx_Hd_Price_Attributes_Tbl_tmp
3031 ,x_Hd_Payment_Tbl => lx_Hd_Payment_Tbl_tmp
3032 ,x_Hd_Shipment_Tbl => lx_Hd_Shipment_Tbl_tmp
3033 ,x_Hd_Freight_Charge_Tbl => lx_Hd_Freight_Charge_Tbl_tmp
3034 ,x_Hd_Tax_Detail_Tbl => lx_Hd_Tax_Detail_Tbl_tmp
3035 ,x_Price_Adjustment_Tbl => lx_Price_Adjustment_Tbl_tmp
3036 ,x_Price_Adj_Attr_Tbl => lx_Price_Adj_Attr_Tbl_tmp
3037 ,x_Price_Adj_Rltship_Tbl => lx_Price_Adj_Rltship_Tbl_tmp
3038 ,x_last_update_date => x_last_update_date
3039 ,x_Return_Status => x_Return_Status
3040 ,x_Msg_Count => x_Msg_Count
3041 ,x_Msg_Data => x_Msg_Data);
3042 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
3043 RAISE FND_API.G_EXC_ERROR;
3044 END IF;
3045 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3046 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3047 END IF;
3048
3049 l_in_qte_header_rec := l_db_qte_header_rec_tmp;
3050 lx_Hd_Price_Attributes_Tbl := lx_Hd_Price_Attributes_Tbl_tmp;
3051 lx_Hd_Payment_Tbl := lx_Hd_Payment_Tbl_tmp;
3052 lx_Hd_Shipment_Tbl := lx_Hd_Shipment_Tbl_tmp;
3053 lx_Hd_Freight_Charge_Tbl := lx_Hd_Freight_Charge_Tbl_tmp;
3054 lx_Hd_Tax_Detail_Tbl := lx_Hd_Tax_Detail_Tbl_tmp;
3055 lx_Price_Adjustment_Tbl := lx_Price_Adjustment_Tbl_tmp;
3056 lx_Price_Adj_Attr_Tbl := lx_Price_Adj_Attr_Tbl_tmp;
3057 lx_Price_Adj_Rltship_Tbl := lx_Price_Adj_Rltship_Tbl_tmp;
3058
3059
3060 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3061 IBE_Util.Debug('MergeActiveQuote:Exception: Back from calling getHdrDefaultValues');
3062 END IF;
3063 --DBMS_OUTPUT.PUT_LINE('MergeActiveQuote: Back from calling getHdrDefaultValues');
3064 else
3065 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3066 IBE_UTIL.DEBUG('MergeActiveQuote:Exception:Cannot find a minisite_id while calling getHdrDefaultValues');
3067 END IF;
3068 end if; -- if we can find the minisiteId
3069
3070 --save the guest cart into account active cart of the user
3071 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3072 IBE_UTIL.DEBUG('MergeActiveQuote:Exception:saving the guest cart as account active cart of the user');
3073 END IF;
3074 IBE_Quote_Save_pvt.save(
3075 p_api_version_number => p_api_version_number ,
3076 p_init_msg_list => fnd_api.g_false ,
3077 p_commit => fnd_api.g_true ,
3078
3079 p_qte_header_rec => l_in_qte_header_rec ,
3080 x_quote_header_id => l_quote_header_id_tmp ,
3081 x_last_update_date => l_last_update_date_tmp ,
3082
3083 x_return_status => x_return_status ,
3084 x_msg_count => x_msg_count ,
3085 x_msg_data => x_msg_data );
3086
3087 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3088 RAISE FND_API.G_EXC_ERROR;
3089 END IF;
3090
3091 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3092 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3093 END IF;
3094 END IF;
3095 IF FND_Msg_Pub.Check_Msg_Level (FND_Msg_Pub.G_MSG_LVL_ERROR) THEN
3096 FND_Message.Set_Name('IBE', 'IBE_SC_MERGE_CART_ERROR');
3097 FND_Msg_Pub.Add;
3098 END IF;
3099
3100 END IF;
3101 x_return_status := FND_API.G_RET_STS_ERROR;
3102
3103 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3104 p_count => x_msg_count,
3105 p_data => x_msg_data);
3106 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3107 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3108 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.mergeActiveQuote');
3109 END IF;
3110 ROLLBACK TO MergeActiveQuote_pvt;
3111 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3112 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3113 p_count => x_msg_count,
3114 p_data => x_msg_data);
3115 WHEN OTHERS THEN
3116 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3117 ibe_util.debug('Unknown exception in IBE_QUOTE_SAVESHARE_PVT.mergeActiveQuote');
3118 END IF;
3119 ROLLBACK TO MergeActiveQuote_pvt;
3120 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3121
3122 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3123 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
3124 l_api_name);
3125 END IF;
3126
3127 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3128 p_count => x_msg_count,
3129 p_data => x_msg_data);
3130 END MergeActiveQuote;
3131
3132 PROCEDURE EmailSharee(
3133 p_Api_Version_Number IN NUMBER
3134 ,p_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE
3135 ,p_Commit IN VARCHAR2 := FND_API.G_FALSE
3136
3137 ,p_Quote_Header_id IN NUMBER
3138 ,p_emailAddress IN varchar2
3139 ,p_privilegeType IN varchar2
3140
3141 ,p_url IN varchar2
3142 ,p_qte_access_rec IN IBE_QUOTE_SAVESHARE_pvt.QUOTE_ACCESS_Rec_Type
3143 ,p_comments IN VARCHAR2 := FND_API.G_MISS_CHAR
3144 ,X_Return_Status OUT NOCOPY VARCHAR2
3145 ,X_Msg_Count OUT NOCOPY NUMBER
3146 ,X_Msg_Data OUT NOCOPY VARCHAR2
3147 )
3148 IS
3149 l_api_name CONSTANT VARCHAR2(30) := 'Emailsharee';
3150 l_api_version CONSTANT NUMBER := 1.0;
3151 l_url varchar2(2000);
3152
3153 l_qte_header_rec ASO_Quote_Pub.QTE_HEADER_REC_TYPE
3154 := ASO_Quote_Pub.g_miss_qte_header_rec;
3155
3156 cursor C_GETHEADERREC(qte_header_id number) is
3157 select quote_password, quote_number, quote_version
3158 from aso_quote_headers
3159 where quote_header_id = qte_header_id;
3160
3161 BEGIN
3162
3163 -- Standard Start of API savepoint
3164 SAVEPOINT EMAILSHAREE_pvt;
3165 -- Standard call to check for call compatibility.
3166 IF NOT FND_API.Compatible_API_Call (l_api_version,
3167 P_Api_Version_Number,
3168 l_api_name,
3169 G_PKG_NAME )
3170 THEN
3171 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3172 END IF;
3173 -- Initialize message list IF p_init_msg_list is set to TRUE.
3174 IF FND_API.to_Boolean( p_init_msg_list ) THEN
3175 FND_MSG_PUB.initialize;
3176 END IF;
3177
3178 -- Initialize API return status to success
3179 x_return_status := FND_API.G_RET_STS_SUCCESS;
3180
3181 -- API body
3182
3183 open C_getheaderrec(P_Quote_Header_id);
3184 fetch c_getheaderrec into l_qte_header_rec.quote_password
3185 ,l_qte_header_rec.quote_number
3186 ,l_qte_header_rec.quote_version;
3187 close c_getheaderrec;
3188
3189 if(l_qte_header_rec.quote_password = null or
3190 -- l_qte_header_rec.quote_password = '' or
3191 l_qte_header_rec.quote_number = FND_API.g_miss_num or
3192 l_qte_header_rec.quote_version = FND_API.g_miss_num) THEN
3193
3194 fnd_message.set_name('IBE', 'IBE_SH_INVALID_QUOTE_SHARE');
3195 FND_MSG_PUB.Add;
3196 RAISE FND_API.G_EXC_ERROR;
3197
3198 END IF;
3199
3200 l_url := '';
3201 l_url := l_url || 'retSharTSharNum=' || p_qte_access_rec.quote_sharee_number || '&';
3202 l_url := l_url || 'retSharTQuoteNum=' || l_qte_header_rec.quote_number || '&';
3203 l_url := l_url || 'retSharTVersion=' || l_qte_header_rec.quote_version;
3204 l_url := p_url || '&' || l_url;
3205
3206 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3207 IBE_UTIL.DEBUG('call IBE_WORKFLOW_pvt.NotifyForSharedCart starts');
3208 END IF;
3209
3210 IBE_WORKFLOW_pvt.NotifyForSharedCart(
3211 p_api_version => p_api_version_number
3212 ,p_init_msg_list => p_init_msg_list
3213 ,p_msite_id => NULL
3214 ,p_quote_header_id => p_quote_header_id
3215 ,p_emailAddress => p_emailAddress
3216 ,p_quoteShareeNum => p_qte_access_rec.quote_sharee_number
3217 ,p_privilegeType => p_privilegeType
3218 ,p_url => l_url
3219 ,p_comments => p_comments
3220 ,x_return_status => x_return_status
3221 ,x_msg_count => x_msg_count
3222 ,x_msg_data => x_msg_data
3223 );
3224
3225 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3226 IBE_UTIL.DEBUG('call IBE_WORKFLOW_PVT.NotifyForSharedCart finishes');
3227 END IF;
3228
3229 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3230 RAISE FND_API.G_EXC_ERROR;
3231 END IF;
3232 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3233 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3234 END IF;
3235 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3236 IBE_UTIL.DEBUG('done IBE_WFNOTIFICATION.send_email at'
3237 || to_char(sysdate, 'mm/dd/yyyy:hh24:MI:SS'));
3238 END IF;
3239
3240
3241 -- Standard check of p_commit.
3242 IF FND_API.To_Boolean( p_commit ) THEN
3243 COMMIT WORK;
3244 END IF;
3245
3246 -- Standard call to get message count and IF count is 1, get message info.
3247 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3248 p_count => x_msg_count,
3249 p_data => x_msg_data);
3250 EXCEPTION
3251 WHEN FND_API.G_EXC_ERROR THEN
3252 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3253 ibe_util.debug('Expected exception in IBE_QUOTE_SAVESHARE_PVT.EmailSharee');
3254 END IF;
3255 ROLLBACK TO EMAILSHAREE_pvt;
3256 x_return_status := FND_API.G_RET_STS_ERROR;
3257 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3258 p_count => x_msg_count,
3259 p_data => x_msg_data);
3260 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3261 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3262 ibe_util.debug('Unexpected exception in IBE_QUOTE_SAVESHARE_PVT.EmailSharee');
3263 END IF;
3264 ROLLBACK TO EMAILSHAREE_pvt;
3265 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3266 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3267 p_count => x_msg_count,
3268 p_data => x_msg_data);
3269 WHEN OTHERS THEN
3270 IF (IBE_UTIL.G_DEBUGON = l_true) THEN
3271 ibe_util.debug('Unknown exception in IBE_QUOTE_SAVESHARE_PVT.EmailSharee');
3272 END IF;
3273 ROLLBACK TO EMAILSHAREE_pvt;
3274 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3275
3276 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3277 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,
3278 l_api_name);
3279 END IF;
3280
3281 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
3282 p_count => x_msg_count,
3283 p_data => x_msg_data);
3284 END emailsharee;
3285
3286 -- This procedure generates a random sharee number for quote.
3287 PROCEDURE GenerateShareeNumber
3288 (
3289 p_quote_header_id IN NUMBER,
3290 p_recip_id IN NUMBER,
3291 x_sharee_number OUT NOCOPY NUMBER
3292 )
3293 IS
3294 l_seed NUMBER;
3295 l_rand NUMBER;
3296 l_num_rows NUMBER;
3297 BEGIN
3298
3299
3300 l_rand := FND_CRYPTO.SmallRandomNumber;
3301 IF l_rand < 0 THEN
3302 l_rand := l_rand * -1;
3303 END IF;
3304 x_sharee_number := to_number(substr((to_char(p_recip_id)||to_char(l_rand)),1,15));
3305 END GenerateShareeNumber;
3306
3307 END IBE_QUOTE_SAVESHARE_pvt;