DBA Data[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;