DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_QUOTE_PUB

Source


1 PACKAGE BODY ASO_QUOTE_PUB as
2 /* $Header: asopqteb.pls 120.11 2012/03/13 05:32:42 rassharm ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_QUOTE_PUB
5 -- Purpose          :
6 -- History          :
7 --                     12-16-04  skulkarn: fixed bug 4046692
8 -- NOTE             :
9 -- End of Comments
10 
11 
12 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_QUOTE_PUB';
13 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asopqteb.pls';
14 
15 
16 x_msg_count number;
17 x_msg_data varchar2(1000);
18 
19 PROCEDURE Convert_Party_To_Id (
20 	p_column_name	IN	VARCHAR2,
21 	p_party_type	IN	VARCHAR2,
22 	p_party_id	IN	NUMBER,
23 	p_party_name	IN	VARCHAR2,
24 	p_person_first_name	IN	VARCHAR2,
25 	p_person_middle_name	IN	VARCHAR2,
26 	p_person_last_name	IN	VARCHAR2,
27 	x_party_id OUT NOCOPY /* file.sql.39 change */  NUMBER,
28 	x_return_status OUT NOCOPY /* file.sql.39 change */  VARCHAR2)
29 IS
30     l_party_rec		ASO_PARTY_INT.Party_Rec_Type;
31 BEGIN
32 
33 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
34 
35     x_party_id := p_party_id;
36     x_return_status := FND_API.G_RET_STS_SUCCESS;
37     IF (p_party_id IS NOT NULL
38 	AND p_party_id <> FND_API.G_MISS_NUM) THEN
39 	ASO_UTILITY_PVT.Set_Message(
40 		p_msg_level     => FND_MSG_PUB.G_MSG_LVL_SUCCESS,
41 		p_msg_name      => 'ASO_API_ATTRIBUTE_IGNORED',
42 		p_token1        => 'COLUMN',
43 		p_token1_value  => p_column_name);
44     ELSIF (p_person_first_name <> FND_API.G_MISS_CHAR
45 		AND p_person_first_name IS NOT NULL)
46 	OR (p_party_name <> FND_API.G_MISS_CHAR
47 		AND p_party_name IS NOT NULL) THEN
48 	l_party_rec.party_id := p_party_id;
49 	l_party_rec.party_type := p_party_type;
50 	l_party_rec.party_name := p_party_name;
51 	l_party_rec.person_first_name := p_person_first_name;
52 	l_party_rec.person_middle_name := p_person_middle_name;
53 	l_party_rec.person_last_name := p_person_last_name;
54 	ASO_PARTY_INT.Create_Party(
55 		p_party_rec	=> l_party_rec,
56 		x_party_id	=> x_party_id,
57 		x_return_status => x_return_status,
58         x_msg_count  => x_msg_count,
59         x_msg_data => x_msg_data  );
60     END IF;
61 END;
62 
63 PROCEDURE Convert_Site_To_Id (
64 	p_column_name	IN	VARCHAR2,
65 	p_party_id	IN	NUMBER,
66 	p_party_site_id	IN	NUMBER,
67 	p_site_use_type IN	VARCHAR2,
68 	p_address1	IN	VARCHAR2,
69 	p_address2	IN	VARCHAR2,
70 	p_address3	IN	VARCHAR2,
71 	p_address4	IN	VARCHAR2,
72 	p_country_code	IN	VARCHAR2,
73 	p_country	IN	VARCHAR2,
74 	p_city		IN	VARCHAR2,
75 	p_postal_code	IN	VARCHAR2,
76 	p_province	IN	VARCHAR2,
77 	p_county	IN	VARCHAR2,
78 	x_party_site_id OUT NOCOPY /* file.sql.39 change */  NUMBER,
79 	x_return_status OUT NOCOPY /* file.sql.39 change */  VARCHAR2)
80 IS
81     l_party_site_rec	ASO_PARTY_INT.Party_Site_Rec_Type;
82     l_msg_data VARCHAR2(2000);
83     l_msg_count NUMBER;
84 
85 BEGIN
86 
87 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
88 
89     x_party_site_id := p_party_site_id;
90     x_return_status := FND_API.G_RET_STS_SUCCESS;
91     IF (p_party_site_id IS NOT NULL
92 	AND p_party_site_id <> FND_API.G_MISS_NUM) THEN
93 	ASO_UTILITY_PVT.Set_Message(
94 		p_msg_level     => FND_MSG_PUB.G_MSG_LVL_SUCCESS,
95 		p_msg_name      => 'ASO_API_ATTRIBUTE_IGNORED',
96 		p_token1        => 'COLUMN',
97 		p_token1_value  => p_column_name);
98     ELSIF (p_address1 <> FND_API.G_MISS_CHAR AND
99 		p_address1 IS NOT NULL AND
100 		p_country <> FND_API.G_MISS_CHAR AND
101 		p_country IS NOT NULL AND
102 		p_party_id <> FND_API.G_MISS_NUM  AND  -- bug 4046692 changed from G_MISS_CHAR to G_MISS_NUM
103 		p_party_id IS NULL) THEN
104 	l_party_site_rec.party_id := p_party_id;
105 	l_party_site_rec.party_site_use_type := p_site_use_type;
106     	l_party_site_rec.location.address1 := p_address1;
107     	l_party_site_rec.location.address2 := p_address2;
108     	l_party_site_rec.location.address3 := p_address3;
109     	l_party_site_rec.location.address4 := p_address4;
110     	l_party_site_rec.location.city := p_city;
111     	l_party_site_rec.location.postal_code := p_postal_code;
112     	l_party_site_rec.location.province := p_province;
113     	l_party_site_rec.location.county := p_county;
114     	l_party_site_rec.location.country := p_country;
115 	ASO_PARTY_INT.Create_Party_Site(
116 		p_party_site_rec => l_party_site_rec,
117 		x_party_site_id	 => x_party_site_id,
118 		x_return_status	 => x_return_status,
119 		x_msg_data => l_msg_data,
120 		x_msg_count => l_msg_count);
121     END IF;
122 END;
123 
124 
125 PROCEDURE Convert_Header_Values_To_Ids(
126          P_Qte_Header_rec        IN    Qte_Header_Rec_Type,
127          x_qte_header_rec	  OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type
128 )
129 IS
130     l_any_errors  BOOLEAN := FALSE;
131     l_return_status     VARCHAR2(1);
132 BEGIN
133 
134 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
135 
136     x_qte_header_rec := p_qte_header_rec;
137     -- party_id
138     Convert_Party_To_Id (
139 	p_column_name	=> 'PARTY_NAME',
140 	p_party_id	=> p_qte_header_rec.party_id,
141 	p_party_type	=> p_qte_header_rec.party_type,
142 	p_party_name	=> p_qte_header_rec.party_name,
143 	p_person_first_name	=> p_qte_header_rec.person_first_name,
144 	p_person_middle_name	=> p_qte_header_rec.person_middle_name,
145 	p_person_last_name	=> p_qte_header_rec.person_last_name,
146 	x_party_id	=> x_qte_header_rec.party_id,
147 	x_return_status => l_return_status);
148     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
149         l_any_errors := TRUE;
150     END IF;
151     -- invoice_to_party_id
152     Convert_Party_To_Id (
153 	p_column_name	=> 'INVOICE_TO_PARTY_NAME',
154 	p_party_id	=> p_qte_header_rec.invoice_to_party_id,
155 	p_party_name	=> p_qte_header_rec.invoice_to_party_name,
156 	p_party_type	=> 'PERSON',
157 	p_person_first_name	=> p_qte_header_rec.invoice_to_contact_first_name,
158 	p_person_middle_name	=> p_qte_header_rec.invoice_to_contact_middle_name,
159 	p_person_last_name	=> p_qte_header_rec.invoice_to_contact_last_name,
160 	x_party_id	=> x_qte_header_rec.invoice_to_party_id,
161 	x_return_status => l_return_status);
162     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
163         l_any_errors := TRUE;
164     END IF;
165     -- invoice_to_site_id
166     Convert_Site_To_Id (
167 	p_column_name	=> 'INVOICE_TO_SITE_LOCATION',
168 	p_party_id	=> p_qte_header_rec.invoice_to_party_id,
169 	p_party_site_id	=> p_qte_header_rec.invoice_to_party_site_id,
170 	p_site_use_type => 'INVOICE_TO',
171 	p_address1	=> p_qte_header_rec.invoice_to_address1,
172 	p_address2	=> p_qte_header_rec.invoice_to_address2,
173 	p_address3	=> p_qte_header_rec.invoice_to_address3,
174 	p_address4	=> p_qte_header_rec.invoice_to_address4,
175 	p_country_code	=> p_qte_header_rec.invoice_to_country_code,
176 	p_country	=> p_qte_header_rec.invoice_to_country,
177 	p_city		=> p_qte_header_rec.invoice_to_city,
178 	p_postal_code	=> p_qte_header_rec.invoice_to_postal_code,
179 	p_province	=> p_qte_header_rec.invoice_to_province,
180 	p_county	=> p_qte_header_rec.invoice_to_county,
181 	x_party_site_id	=> x_qte_header_rec.invoice_to_party_site_id,
182 	x_return_status => l_return_status);
183     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
184         l_any_errors := TRUE;
185     END IF;
186     -- no value-to-id conversion for the following fields. If the user wants
187     -- to input any related data, the ID must be passed in.
188     -- status_id
189     -- org_contact_id
190     -- source_campaign_id
191     -- compaign_id
192     -- order_type_id
193     -- employee_person_id
194     -- price_list_id
195     IF l_any_errors THEN
196           raise FND_API.G_EXC_ERROR;
197     END IF;
198 END;
199 
200 PROCEDURE Convert_Shipment_Values_To_Ids(
201          P_shipment_Rec   IN    shipment_Rec_Type,
202          x_shipment_rec	  OUT NOCOPY /* file.sql.39 change */  shipment_Rec_Type
203 )
204 IS
205     l_any_errors  BOOLEAN := FALSE;
206     l_return_status     VARCHAR2(1);
207 BEGIN
208 
209 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
210 
211     x_shipment_rec := p_shipment_rec;
212     -- ship_to_party_id
213     Convert_Party_To_Id (
214 	p_column_name	=> 'SHIP_TO_PARTY_NAME',
215 	p_party_id	=> p_shipment_rec.ship_to_party_id,
216 	p_party_name	=> p_shipment_rec.ship_to_party_name,
217 	p_party_type	=> 'PERSON',
218 	p_person_first_name	=> p_shipment_rec.ship_to_contact_first_name,
219 	p_person_middle_name	=> p_shipment_rec.ship_to_contact_middle_name,
220 	p_person_last_name	=> p_shipment_rec.ship_to_contact_last_name,
221 	x_party_id	=> x_shipment_rec.ship_to_party_id,
222 	x_return_status => l_return_status);
223     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
224         l_any_errors := TRUE;
225     END IF;
226     -- ship_to_site_id
227     Convert_Site_To_Id (
228 	p_column_name	=> 'SHIP_TO_SITE_LOCATION',
229 	p_party_id	=> p_shipment_rec.ship_to_party_id,
230 	p_party_site_id	=> p_shipment_rec.ship_to_party_site_id,
231 	p_site_use_type => 'INVOICE_TO',
232 	p_address1	=> p_shipment_rec.ship_to_address1,
233 	p_address2	=> p_shipment_rec.ship_to_address2,
234 	p_address3	=> p_shipment_rec.ship_to_address3,
235 	p_address4	=> p_shipment_rec.ship_to_address4,
236 	p_country_code	=> p_shipment_rec.ship_to_country_code,
237 	p_country	=> p_shipment_rec.ship_to_country,
238 	p_city		=> p_shipment_rec.ship_to_city,
239 	p_postal_code	=> p_shipment_rec.ship_to_postal_code,
240 	p_province	=> p_shipment_rec.ship_to_province,
241 	p_county	=> p_shipment_rec.ship_to_county,
242 	x_party_site_id	=> x_shipment_rec.ship_to_party_site_id,
243 	x_return_status => l_return_status);
244     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
245         l_any_errors := TRUE;
246     END IF;
247     -- no value-to-id conversion for the following fields. If the user wants
248     -- to input any related data, the CODE must be passed in.
249     -- SHIP_METHOD_CODE
250     -- FREIGHT_TERMS_CODE
251     -- FREIGHT_CARRIER_CODE
252     -- FOB_CODE
253     IF l_any_errors THEN
254           raise FND_API.G_EXC_ERROR;
255     END IF;
256 END;
257 
258 PROCEDURE Convert_Line_Values_To_Ids(
259          P_QTE_Line_Rec        IN    QTE_Line_Rec_Type,
260          x_QTE_Line_rec	  OUT NOCOPY /* file.sql.39 change */  QTE_Line_Rec_Type
261 )
262 IS
263 BEGIN
264 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
265     x_qte_line_rec := p_qte_line_rec;
266     null;
267 END;
268 
269 PROCEDURE Create_quote(
270     P_Api_Version_Number         IN   NUMBER,
271     P_Init_Msg_List              IN   VARCHAR2                                := FND_API.G_FALSE,
272     P_Commit                     IN   VARCHAR2                                := FND_API.G_FALSE,
273     P_Control_Rec		        IN   Control_Rec_Type                        := G_Miss_Control_Rec,
274     P_Qte_Header_Rec		   IN   Qte_Header_Rec_Type                     := G_MISS_Qte_Header_Rec,
275     P_hd_Price_Attributes_Tbl	   IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := G_Miss_Price_Attributes_Tbl,
276     P_hd_Payment_Tbl		   IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := G_MISS_PAYMENT_TBL,
277     P_hd_Shipment_Rec		   IN   ASO_QUOTE_PUB.Shipment_Rec_Type         := G_MISS_SHIPMENT_REC,
278     P_hd_Freight_Charge_Tbl	   IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := G_Miss_Freight_Charge_Tbl,
279     P_hd_Tax_Detail_Tbl		   IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := G_Miss_Tax_Detail_Tbl,
280     P_Qte_Line_Tbl		        IN   Qte_Line_Tbl_Type                       := G_MISS_QTE_LINE_TBL,
281     P_Qte_Line_Dtl_Tbl		   IN   Qte_Line_Dtl_Tbl_Type                   := G_MISS_QTE_LINE_DTL_TBL,
282     P_Line_Attr_Ext_Tbl		   IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
283     P_line_rltship_tbl		   IN   Line_Rltship_Tbl_Type                   := G_MISS_Line_Rltship_Tbl,
284     P_Price_Adjustment_Tbl	   IN   Price_Adj_Tbl_Type                      := G_Miss_Price_Adj_Tbl,
285     P_Price_Adj_Attr_Tbl	        IN   Price_Adj_Attr_Tbl_Type                 := G_Miss_PRICE_ADJ_ATTR_Tbl,
286     P_Price_Adj_Rltship_Tbl	   IN   Price_Adj_Rltship_Tbl_Type              := G_Miss_Price_Adj_Rltship_Tbl,
287     P_Ln_Price_Attributes_Tbl	   IN   Price_Attributes_Tbl_Type               := G_Miss_Price_Attributes_Tbl,
288     P_Ln_Payment_Tbl		   IN   Payment_Tbl_Type                        := G_MISS_PAYMENT_TBL,
289     P_Ln_Shipment_Tbl		   IN   Shipment_Tbl_Type                       := G_MISS_SHIPMENT_TBL,
290     P_Ln_Freight_Charge_Tbl	   IN   Freight_Charge_Tbl_Type                 := G_Miss_Freight_Charge_Tbl,
291     P_Ln_Tax_Detail_Tbl		   IN   Tax_Detail_Tbl_Type                     := G_Miss_Tax_Detail_Tbl,
292     x_Qte_Header_Rec		   OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type,
293     X_Qte_Line_Tbl		        OUT NOCOPY /* file.sql.39 change */  Qte_Line_Tbl_Type,
294     X_Qte_Line_Dtl_Tbl		   OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
295     X_Hd_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
296     X_Hd_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
297     X_Hd_Shipment_Rec		   OUT NOCOPY /* file.sql.39 change */  Shipment_Rec_Type,
298     X_Hd_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
299     X_Hd_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
300     x_Line_Attr_Ext_Tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
301     X_line_rltship_tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Rltship_Tbl_Type,
302     X_Price_Adjustment_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
303     X_Price_Adj_Attr_Tbl	        OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
304     X_Price_Adj_Rltship_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Rltship_Tbl_Type,
305     X_Ln_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
306     X_Ln_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
307     X_Ln_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
308     X_Ln_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
309     X_Ln_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
310     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
311     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
312     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
313     )
314 IS
315 
316  x_hd_Attr_Ext_Tbl		       Line_Attribs_Ext_Tbl_Type;
317  x_hd_Sales_Credit_Tbl          Sales_Credit_Tbl_Type ;
318  x_hd_Quote_Party_Tbl           Quote_Party_Tbl_Type;
319  x_ln_Sales_Credit_Tbl          Sales_Credit_Tbl_Type ;
320  x_ln_Quote_Party_Tbl           Quote_Party_Tbl_Type;
321 
322 BEGIN
323    aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
324 
325    Create_quote(
326 	    P_Api_Version_Number	      => 1.0,
327 	    P_Init_Msg_List		      => p_init_msg_list,
328 	    P_Commit			      => p_commit,
329 	    P_Control_Rec		      => p_control_rec,
330 	    P_qte_header_rec		 => p_qte_header_rec,
331 	    P_Hd_Price_Attributes_Tbl	 => p_Hd_Price_Attributes_Tbl,
332 	    P_Hd_Payment_Tbl		 => p_Hd_Payment_Tbl,
333 	    P_Hd_Shipment_Rec		 => p_Hd_Shipment_Rec,
334 	    P_Hd_Freight_Charge_Tbl	 => p_Hd_Freight_Charge_Tbl,
335 	    P_Hd_Tax_Detail_Tbl		 => p_Hd_Tax_Detail_Tbl,
336 	    P_Qte_Line_Tbl		      => p_Qte_Line_Tbl,
337 	    P_Qte_Line_Dtl_Tbl		 => p_Qte_Line_Dtl_Tbl,
338 	    P_Line_Attr_Ext_Tbl		 => P_Line_Attr_Ext_Tbl,
339 	    P_Line_rltship_tbl		 => p_Line_Rltship_Tbl,
340 	    P_Price_Adjustment_Tbl	 => p_Price_Adjustment_Tbl,
341 	    P_Price_Adj_Attr_Tbl	      => P_Price_Adj_Attr_Tbl,
342 	    P_Price_Adj_Rltship_Tbl	 => p_Price_Adj_Rltship_Tbl,
343 	    P_Ln_Price_Attributes_Tbl	 => p_Ln_Price_Attributes_Tbl,
344 	    P_Ln_Payment_Tbl		 => p_Ln_Payment_Tbl,
345 	    P_Ln_Shipment_Tbl		 => p_Ln_Shipment_Tbl,
346 	    P_Ln_Freight_Charge_Tbl	 => p_Ln_Freight_Charge_Tbl,
347 	    P_Ln_Tax_Detail_Tbl		 => p_Ln_Tax_Detail_Tbl,
348 	    x_qte_header_rec		 => x_qte_header_rec,
349 	    X_Hd_Price_Attributes_Tbl	 => x_Hd_Price_Attributes_Tbl,
350 	    X_Hd_Payment_Tbl		 => x_Hd_Payment_Tbl,
351 	    X_Hd_Shipment_Rec		 => x_Hd_Shipment_Rec,
352 	    X_Hd_Freight_Charge_Tbl	 => x_Hd_Freight_Charge_Tbl,
353 	    X_Hd_Tax_Detail_Tbl		 => x_Hd_Tax_Detail_Tbl,
354          X_hd_Attr_Ext_Tbl		 => X_hd_Attr_Ext_Tbl,
355          X_hd_Sales_Credit_Tbl      => X_hd_Sales_Credit_Tbl,
356          X_hd_Quote_Party_Tbl       => X_hd_Quote_Party_Tbl,
357 	    X_Qte_Line_Tbl		      => x_Qte_Line_Tbl,
358 	    X_Qte_Line_Dtl_Tbl		 => x_Qte_Line_Dtl_Tbl,
359 	    x_Line_Attr_Ext_Tbl		 => x_Line_Attr_Ext_Tbl,
360 	    X_Line_rltship_tbl		 => x_Line_Rltship_Tbl,
361 	    X_Price_Adjustment_Tbl	 => x_Price_Adjustment_Tbl,
362 	    x_Price_Adj_Attr_Tbl	      => x_Price_Adj_Attr_Tbl,
363 	    X_Price_Adj_Rltship_Tbl	 => x_Price_Adj_Rltship_Tbl,
364 	    X_Ln_Price_Attributes_Tbl	 => x_Ln_Price_Attributes_Tbl,
365 	    X_Ln_Payment_Tbl		 => x_Ln_Payment_Tbl,
366 	    X_Ln_Shipment_Tbl		 => x_Ln_Shipment_Tbl,
367 	    X_Ln_Freight_Charge_Tbl	 => x_Ln_Freight_Charge_Tbl,
368 	    X_Ln_Tax_Detail_Tbl		 => x_Ln_Tax_Detail_Tbl,
369          X_Ln_Sales_Credit_Tbl      => X_ln_Sales_Credit_Tbl,
370          X_Ln_Quote_Party_Tbl       => X_ln_Quote_Party_Tbl,
371 	    X_Return_Status            => x_return_status,
372 	    X_Msg_Count                => x_msg_count,
373 	    X_Msg_Data                 => x_msg_data);
374 
375 END Create_Quote;
376 
377 
378 PROCEDURE Update_quote(
379     P_Api_Version_Number         IN   NUMBER,
380     P_Init_Msg_List              IN   VARCHAR2                                := FND_API.G_FALSE,
381     P_Commit                     IN   VARCHAR2                                := FND_API.G_FALSE,
382     P_Control_Rec		        IN   Control_Rec_Type                        := G_Miss_Control_Rec,
383     P_Qte_Header_Rec		   IN   Qte_Header_Rec_Type                     := G_MISS_Qte_Header_Rec,
384     P_hd_Price_Attributes_Tbl	   IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := G_Miss_Price_Attributes_Tbl,
385     P_hd_Payment_Tbl		   IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := G_MISS_PAYMENT_TBL,
386     P_hd_Shipment_Tbl		   IN   ASO_QUOTE_PUB.Shipment_Tbl_Type         := G_MISS_SHIPMENT_TBL,
387     P_hd_Freight_Charge_Tbl	   IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := G_Miss_Freight_Charge_Tbl,
388     P_hd_Tax_Detail_Tbl		   IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := G_Miss_Tax_Detail_Tbl,
389     P_Qte_Line_Tbl		        IN   Qte_Line_Tbl_Type                       := G_MISS_QTE_LINE_TBL,
390     P_Qte_Line_Dtl_Tbl		   IN   Qte_Line_Dtl_Tbl_Type                   := G_MISS_QTE_LINE_DTL_TBL,
391     P_Line_Attr_Ext_Tbl		   IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
392     P_line_rltship_tbl		   IN   Line_Rltship_Tbl_Type                   := G_MISS_Line_Rltship_Tbl,
393     P_Price_Adjustment_Tbl	   IN   Price_Adj_Tbl_Type                      := G_Miss_Price_Adj_Tbl,
394     P_Price_Adj_Attr_Tbl	        IN   Price_Adj_Attr_Tbl_Type                 := G_Miss_PRICE_ADJ_ATTR_Tbl,
395     P_Price_Adj_Rltship_Tbl	   IN   Price_Adj_Rltship_Tbl_Type              := G_Miss_Price_Adj_Rltship_Tbl,
396     P_Ln_Price_Attributes_Tbl	   IN   Price_Attributes_Tbl_Type               := G_Miss_Price_Attributes_Tbl,
397     P_Ln_Payment_Tbl		   IN   Payment_Tbl_Type                        := G_MISS_PAYMENT_TBL,
398     P_Ln_Shipment_Tbl		   IN   Shipment_Tbl_Type                       := G_MISS_SHIPMENT_TBL,
399     P_Ln_Freight_Charge_Tbl	   IN   Freight_Charge_Tbl_Type                 := G_Miss_Freight_Charge_Tbl,
400     P_Ln_Tax_Detail_Tbl		   IN   Tax_Detail_Tbl_Type                     := G_Miss_Tax_Detail_Tbl,
401     x_Qte_Header_Rec		   OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type,
402     X_Qte_Line_Tbl		        OUT NOCOPY /* file.sql.39 change */  Qte_Line_Tbl_Type,
403     X_Qte_Line_Dtl_Tbl		   OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
404     X_Hd_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
405     X_Hd_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
406     X_Hd_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
407     X_Hd_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
408     X_Hd_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
409     x_Line_Attr_Ext_Tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
410     X_line_rltship_tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Rltship_Tbl_Type,
411     X_Price_Adjustment_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
412     X_Price_Adj_Attr_Tbl	        OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
413     X_Price_Adj_Rltship_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Rltship_Tbl_Type,
414     X_Ln_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
415     X_Ln_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
416     X_Ln_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
417     X_Ln_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
418     X_Ln_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
419     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
420     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
421     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
422     )
423 IS
424 
425  x_hd_Attr_Ext_Tbl		       Line_Attribs_Ext_Tbl_Type;
426  x_hd_Sales_Credit_Tbl          Sales_Credit_Tbl_Type ;
427  x_hd_Quote_Party_Tbl           Quote_Party_Tbl_Type;
428  x_ln_Sales_Credit_Tbl          Sales_Credit_Tbl_Type ;
429  x_ln_Quote_Party_Tbl           Quote_Party_Tbl_Type;
430 
431 BEGIN
432      aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
433 
434      Update_quote(
435 	    P_Api_Version_Number	      => 1.0,
436 	    P_Init_Msg_List		      => p_init_msg_list,
437 	    P_Commit			      => p_commit,
438 	    P_Control_Rec		      => p_control_rec,
439 	    P_qte_header_rec		 => p_qte_header_rec,
440 	    P_Hd_Price_Attributes_Tbl	 => p_Hd_Price_Attributes_Tbl,
441 	    P_Hd_Payment_Tbl		 => p_Hd_Payment_Tbl,
442 	    P_Hd_Shipment_Tbl		 => p_Hd_Shipment_Tbl,
443 	    P_Hd_Freight_Charge_Tbl	 => p_Hd_Freight_Charge_Tbl,
444 	    P_Hd_Tax_Detail_Tbl		 => p_Hd_Tax_Detail_Tbl,
445 	    P_Qte_Line_Tbl		      => p_Qte_Line_Tbl,
446 	    P_Qte_Line_Dtl_Tbl		 => p_Qte_Line_Dtl_Tbl,
447 	    P_Line_Attr_Ext_Tbl		 => P_Line_Attr_Ext_Tbl,
448 	    P_Line_rltship_tbl		 => p_Line_Rltship_Tbl,
449 	    P_Price_Adjustment_Tbl	 => p_Price_Adjustment_Tbl,
450 	    P_Price_Adj_Attr_Tbl	      => P_Price_Adj_Attr_Tbl,
451 	    P_Price_Adj_Rltship_Tbl	 => p_Price_Adj_Rltship_Tbl,
452 	    P_Ln_Price_Attributes_Tbl	 => p_Ln_Price_Attributes_Tbl,
453 	    P_Ln_Payment_Tbl		 => p_Ln_Payment_Tbl,
454 	    P_Ln_Shipment_Tbl		 => p_Ln_Shipment_Tbl,
455 	    P_Ln_Freight_Charge_Tbl	 => p_Ln_Freight_Charge_Tbl,
456 	    P_Ln_Tax_Detail_Tbl		 => p_Ln_Tax_Detail_Tbl,
457 	    x_qte_header_rec		 => x_qte_header_rec,
458 	    X_Hd_Price_Attributes_Tbl	 => x_Hd_Price_Attributes_Tbl,
459 	    X_Hd_Payment_Tbl		 => x_Hd_Payment_Tbl,
460 	    X_Hd_Shipment_tbl		 => x_Hd_Shipment_tbl,
461 	    X_Hd_Freight_Charge_Tbl	 => x_Hd_Freight_Charge_Tbl,
462 	    X_Hd_Tax_Detail_Tbl		 => x_Hd_Tax_Detail_Tbl,
463          X_hd_Attr_Ext_Tbl		 => X_hd_Attr_Ext_Tbl,
464          X_hd_Sales_Credit_Tbl      => X_hd_Sales_Credit_Tbl,
465          X_hd_Quote_Party_Tbl       => X_hd_Quote_Party_Tbl,
466 	    X_Qte_Line_Tbl		      => x_Qte_Line_Tbl,
467 	    X_Qte_Line_Dtl_Tbl		 => x_Qte_Line_Dtl_Tbl,
468 	    x_Line_Attr_Ext_Tbl		 => x_Line_Attr_Ext_Tbl,
469 	    X_Line_rltship_tbl		 => x_Line_Rltship_Tbl,
470 	    X_Price_Adjustment_Tbl	 => x_Price_Adjustment_Tbl,
471 	    x_Price_Adj_Attr_Tbl	      => x_Price_Adj_Attr_Tbl,
472 	    X_Price_Adj_Rltship_Tbl	 => x_Price_Adj_Rltship_Tbl,
473 	    X_Ln_Price_Attributes_Tbl	 => x_Ln_Price_Attributes_Tbl,
474 	    X_Ln_Payment_Tbl		 => x_Ln_Payment_Tbl,
475 	    X_Ln_Shipment_Tbl		 => x_Ln_Shipment_Tbl,
476 	    X_Ln_Freight_Charge_Tbl	 => x_Ln_Freight_Charge_Tbl,
477 	    X_Ln_Tax_Detail_Tbl		 => x_Ln_Tax_Detail_Tbl,
478          X_Ln_Sales_Credit_Tbl      => X_ln_Sales_Credit_Tbl,
479          X_Ln_Quote_Party_Tbl       => X_ln_Quote_Party_Tbl,
480 	    X_Return_Status            => x_return_status,
481 	    X_Msg_Count                => x_msg_count,
482 	    X_Msg_Data                 => x_msg_data);
483 
484 End Update_quote;
485 
486 
487 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
488 -- The Master delete procedure may not be needed depends on different business requirements.
489 
490 PROCEDURE Delete_quote(
491     P_Api_Version_Number         IN   NUMBER,
492     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
493     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
494     P_Qte_Header_Id		        IN   NUMBER,
495     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
496     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
497     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
498     )
499 
500 IS
501     l_api_name                CONSTANT VARCHAR2(30) := 'DELETE_QUOTE';
502     l_api_version_number      CONSTANT NUMBER       := 1.0;
503     l_qte_header_id NUMBER;
504 BEGIN
505       -- Standard Start of API savepoint
506       SAVEPOINT DELETE_QUOTE_PUB;
507 
508       aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
509 
510       -- Standard call to check for call compatibility.
511       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
512                          	             p_api_version_number,
513                                            l_api_name,
514                                            G_PKG_NAME) THEN
515           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
516       END IF;
517 
518       -- Initialize message list if p_init_msg_list is set to TRUE.
519       IF FND_API.to_Boolean( p_init_msg_list ) THEN
520           FND_MSG_PUB.initialize;
521       END IF;
522 
523       -- Initialize API return status to SUCCESS
524       x_return_status := FND_API.G_RET_STS_SUCCESS;
525       l_qte_header_id := P_qte_header_id;
526 
527       --
528       -- API body
529       --
530       -- call user hooks
531       -- customer pre processing
532 
533       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
534 
535           ASO_QUOTE_CUHK.Delete_quote_PRE( P_Qte_Header_Id   => l_qte_header_id,
536                                            X_Return_Status   => x_return_status,
537   	                                      X_Msg_Count       => x_msg_count ,
538   	                                      X_Msg_Data        => x_msg_data );
539 
540           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
541 
542               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
543 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
544 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Delete_Quote_PRE', FALSE);
545 		        FND_MSG_PUB.ADD;
546               END IF;
547 
548               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
549                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
550               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
551                     RAISE FND_API.G_EXC_ERROR;
552               END IF;
553 
554           END IF;
555 
556       END IF; -- customer hook
557 
558       -- vertical hook
559       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
560 
561           ASO_QUOTE_VUHK.Delete_quote_PRE( P_Qte_Header_Id  => l_qte_header_id,
562                                            X_Return_Status  => x_return_status,
563   	                                      X_Msg_Count      => x_msg_count,
564   	                                      x_Msg_Data       => x_msg_data );
565 
566           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
567 
568               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
569 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
570 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Delete_Quote_PRE', FALSE);
571 		        FND_MSG_PUB.ADD;
572               END IF;
573 
574               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
575                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
576               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
577                    RAISE FND_API.G_EXC_ERROR;
578               END IF;
579 
580           END IF;
581 
582       END IF; -- vertical hook
583 
584       ASO_QUOTE_HEADERS_PVT.Delete_quote( P_Api_Version_Number  => 1.0,
585 		                                P_Init_Msg_List       => FND_API.G_FALSE,
586 		                                P_Commit              => p_commit,
587 		                                P_Qte_Header_ID       => l_Qte_Header_Id,
588 		                                X_Return_Status       => x_return_status,
589 		                                X_Msg_Count           => x_msg_count,
590 		                                X_Msg_Data            => x_msg_data);
591 
592       -- Check return status from the above procedure call
593       IF x_return_status = FND_API.G_RET_STS_ERROR then
594           raise FND_API.G_EXC_ERROR;
595       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
596           raise FND_API.G_EXC_UNEXPECTED_ERROR;
597       END IF;
598 
599       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
600 
601           ASO_QUOTE_CUHK.Delete_quote_POST( P_Qte_Header_Id		=> l_qte_header_id,
602    	                                       X_Return_Status         => x_return_status,
603 		                                  X_Msg_Count             => x_msg_count,
604 		                                  X_Msg_Data              => x_msg_data );
605 
606           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
607 
608               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
609 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
610 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Delete_Quote_POST', FALSE);
611 		        FND_MSG_PUB.ADD;
612               END IF;
613 
614               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
615                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
616               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
617                    RAISE FND_API.G_EXC_ERROR;
618               END IF;
619 
620           END IF;
621 
622       END IF; -- customer hook
623 
624       -- vertical hook
625       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
626 
627           ASO_QUOTE_VUHK.Delete_quote_POST( P_Qte_Header_Id  => l_qte_header_id,
628    	                                       X_Return_Status  => x_return_status,
629 		                                  X_Msg_Count      => x_msg_count,
630 		                                  X_Msg_Data       => x_msg_data );
631 
632           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
633 
634               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
635 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
636 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Delete_Quote_POST', FALSE);
637 		        FND_MSG_PUB.ADD;
638               END IF;
639 
640               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
641                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
642               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
643                    RAISE FND_API.G_EXC_ERROR;
644               END IF;
645 
646           END IF;
647 
648       END IF; -- vertical hook
649 
650 	 --
651       -- End of API body
652       --
653 
654       -- Standard check for p_commit
655       IF FND_API.to_Boolean( p_commit ) THEN
656           COMMIT WORK;
657       END IF;
658 
659       -- Standard call to get message count and if count is 1, get message info.
660       FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
661                                  p_data  => x_msg_data );
662 
663       EXCEPTION
664 
665           WHEN FND_API.G_EXC_ERROR THEN
666 
667               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
668 		         P_API_NAME        => L_API_NAME
669                   ,P_PKG_NAME        => G_PKG_NAME
670                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
671                   ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PUB
672                   ,X_MSG_COUNT       => X_MSG_COUNT
673                   ,X_MSG_DATA        => X_MSG_DATA
674                   ,X_RETURN_STATUS   => X_RETURN_STATUS);
675 
676           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
677 
678               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
679                    P_API_NAME        => L_API_NAME
680                   ,P_PKG_NAME        => G_PKG_NAME
681                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
682                   ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PUB
683                   ,X_MSG_COUNT       => X_MSG_COUNT
684                   ,X_MSG_DATA        => X_MSG_DATA
685                   ,X_RETURN_STATUS   => X_RETURN_STATUS);
686 
687           WHEN OTHERS THEN
688               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
689                    P_API_NAME        => L_API_NAME
690                   ,P_PKG_NAME        => G_PKG_NAME
691                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
692                   ,P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PUB
693                   ,X_MSG_COUNT       => X_MSG_COUNT
694                   ,X_MSG_DATA        => X_MSG_DATA
695                   ,X_RETURN_STATUS   => X_RETURN_STATUS);
696 
697 End Delete_quote;
698 
699 
700 PROCEDURE Get_quote(
701     P_Api_Version_Number         IN   NUMBER,
702     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
703     P_Qte_Header_Rec		 IN   Qte_Header_Rec_Type,
704   -- Hint: Add list of bind variables here
705     p_rec_requested              IN   NUMBER  := G_DEFAULT_NUM_REC_FETCH,
706     p_start_rec_prt              IN   NUMBER  := 1,
707     p_return_tot_count           IN   NUMBER  := FND_API.G_FALSE,
708   -- Hint: user defined record type
709     p_order_by_rec               IN   QTE_sort_rec_type,
710     x_return_status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
711     x_msg_count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
712     x_msg_data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
713     X_QTE_Header_Tbl		 OUT NOCOPY /* file.sql.39 change */  QTE_Header_Tbl_Type,
714     x_returned_rec_count         OUT NOCOPY /* file.sql.39 change */  NUMBER,
715     x_next_rec_ptr               OUT NOCOPY /* file.sql.39 change */  NUMBER,
716     x_tot_rec_count              OUT NOCOPY /* file.sql.39 change */  NUMBER
717   -- other optional parameters
718 --  x_tot_rec_amount             OUT NOCOPY /* file.sql.39 change */  NUMBER
719     )
720 
721  IS
722 l_api_name                CONSTANT VARCHAR2(30) := 'GET_QUOTE';
723 l_api_version_number      CONSTANT NUMBER   := 1.0;
724  BEGIN
725       -- Standard Start of API savepoint
726       SAVEPOINT GET_QUOTE_PUB;
727 
728 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
729 
730       -- Standard call to check for call compatibility.
731       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
732                          	             p_api_version_number,
733                                            l_api_name,
734                                            G_PKG_NAME)
735       THEN
736           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
737       END IF;
738 
739 
740       -- Initialize message list if p_init_msg_list is set to TRUE.
741       IF FND_API.to_Boolean( p_init_msg_list )
742       THEN
743           FND_MSG_PUB.initialize;
744       END IF;
745 
746 
747 
748 
749       -- Initialize API return status to SUCCESS
750       x_return_status := FND_API.G_RET_STS_SUCCESS;
751 
752       --
753       -- API body
754       --
755       ASO_QUOTE_HEADERS_PVT.Get_quote(
756 		P_Api_Version_Number         => 1.0,
757 		P_Init_Msg_List              => FND_API.G_FALSE,
758 		P_Qte_Header_Rec  =>  P_Qte_Header_Rec,
759 		p_rec_requested              => p_rec_requested,
760 		p_start_rec_prt              => p_start_rec_prt,
761 		p_return_tot_count           => p_return_tot_count,
762 		p_order_by_rec               => p_order_by_rec,
763 		X_Return_Status              => x_return_status,
764 		X_Msg_Count                  => x_msg_count,
765 		X_Msg_Data                   => x_msg_data,
766 		X_Qte_Header_Tbl  => X_Qte_Header_Tbl,
767 		x_returned_rec_count         => x_returned_rec_count,
768 		x_next_rec_ptr               => x_next_rec_ptr,
769 		x_tot_rec_count              => x_tot_rec_count
770       );
771 
772 
773 
774 
775       -- Check return status from the above procedure call
776       IF x_return_status = FND_API.G_RET_STS_ERROR then
777           raise FND_API.G_EXC_ERROR;
778       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
779           raise FND_API.G_EXC_UNEXPECTED_ERROR;
780       END IF;
781 
782       --
783       -- End of API body
784       --
785 
786 
787 
788       -- Standard call to get message count and if count is 1, get message info.
789       FND_MSG_PUB.Count_And_Get
790       (  p_count          =>   x_msg_count,
791          p_data           =>   x_msg_data
792       );
793 
794       EXCEPTION
795           WHEN FND_API.G_EXC_ERROR THEN
796               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
797                    P_API_NAME => L_API_NAME
798                   ,P_PKG_NAME => G_PKG_NAME
799                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
800                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
801                   ,X_MSG_COUNT => X_MSG_COUNT
802                   ,X_MSG_DATA => X_MSG_DATA
803                   ,X_RETURN_STATUS => X_RETURN_STATUS);
804 
805           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
806               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
807                    P_API_NAME => L_API_NAME
808                   ,P_PKG_NAME => G_PKG_NAME
809                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
810                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
811                   ,X_MSG_COUNT => X_MSG_COUNT
812                   ,X_MSG_DATA => X_MSG_DATA
813                   ,X_RETURN_STATUS => X_RETURN_STATUS);
814 
815           WHEN OTHERS THEN
816               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
817                    P_API_NAME => L_API_NAME
818                   ,P_PKG_NAME => G_PKG_NAME
819                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
820                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
821                   ,X_MSG_COUNT => X_MSG_COUNT
822                   ,X_MSG_DATA => X_MSG_DATA
823                   ,X_RETURN_STATUS => X_RETURN_STATUS);
824 End Get_quote;
825 
826 PROCEDURE Validate_quote(
827     P_Api_Version_Number         IN   NUMBER,
828     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
829     P_Qte_Header_Id		 IN   NUMBER,
830     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
831     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
832     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
833     )
834 IS
835     l_api_name                CONSTANT VARCHAR2(30) := 'VALIDATE_QUOTE';
836     l_api_version_number      CONSTANT NUMBER   := 1.0;
837 BEGIN
838       -- Standard Start of API savepoint
839       SAVEPOINT validate_QUOTE_PUB;
840 
841 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
842 
843       -- Standard call to check for call compatibility.
844       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
845                          	             p_api_version_number,
846                                            l_api_name,
847                                            G_PKG_NAME)
848       THEN
849           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
850       END IF;
851 
852 
853       -- Initialize message list if p_init_msg_list is set to TRUE.
854       IF FND_API.to_Boolean( p_init_msg_list )
855       THEN
856           FND_MSG_PUB.initialize;
857       END IF;
858 
859 
860 
861 
862       -- Initialize API return status to SUCCESS
863       x_return_status := FND_API.G_RET_STS_SUCCESS;
864 
865       --
866       -- API body
867       --
868 
869 
870       ASO_QUOTE_HEADERS_PVT.Validate_Quote(
871 		P_Api_Version_Number     => 1.0,
872 		P_Init_Msg_List          => FND_API.G_FALSE,
873 		P_Qte_Header_Id		 => p_qte_header_id,
874 		X_Return_Status          => x_return_status,
875 		X_Msg_Count              => x_msg_count,
876 		X_Msg_Data               => x_msg_data);
877 
878       -- Check return status from the above procedure call
879       IF x_return_status = FND_API.G_RET_STS_ERROR then
880           raise FND_API.G_EXC_ERROR;
881       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
882           raise FND_API.G_EXC_UNEXPECTED_ERROR;
883       END IF;
884 
885       --
886       -- End of API body
887       --
888 
889 
890 
891       -- Standard call to get message count and if count is 1, get message info.
892       FND_MSG_PUB.Count_And_Get
893       (  p_count          =>   x_msg_count,
894          p_data           =>   x_msg_data
895       );
896 
897       EXCEPTION
898           WHEN FND_API.G_EXC_ERROR THEN
899               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
900                    P_API_NAME => L_API_NAME
901                   ,P_PKG_NAME => G_PKG_NAME
902                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
903                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
904                   ,X_MSG_COUNT => X_MSG_COUNT
905                   ,X_MSG_DATA => X_MSG_DATA
906                   ,X_RETURN_STATUS => X_RETURN_STATUS);
907 
908           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
909               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
910                    P_API_NAME => L_API_NAME
911                   ,P_PKG_NAME => G_PKG_NAME
912                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
913                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
914                   ,X_MSG_COUNT => X_MSG_COUNT
915                   ,X_MSG_DATA => X_MSG_DATA
916                   ,X_RETURN_STATUS => X_RETURN_STATUS);
917 
918           WHEN OTHERS THEN
919               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
920                    P_API_NAME => L_API_NAME
921                   ,P_PKG_NAME => G_PKG_NAME
922                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
923                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
924                   ,X_MSG_COUNT => X_MSG_COUNT
925                   ,X_MSG_DATA => X_MSG_DATA
926                   ,X_RETURN_STATUS => X_RETURN_STATUS);
927 END Validate_Quote;
928 
929 PROCEDURE Submit_quote(
930     P_Api_Version_Number         IN   NUMBER,
931     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
932     P_control_rec		        IN   Submit_Control_Rec_Type
933 				                               := g_miss_Submit_Control_Rec,
934     P_Qte_Header_Id		        IN   NUMBER,
935     x_order_header_rec		   OUT NOCOPY /* file.sql.39 change */  Order_Header_Rec_Type,
936     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
937     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
938     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
939     )
940 IS
941     l_api_name                CONSTANT VARCHAR2(30) := 'SUBMIT_QUOTE';
942     l_api_version_number      CONSTANT NUMBER   := 1.0;
943     l_control_rec             Submit_Control_Rec_Type := P_control_rec;
944     l_Qte_Header_Id           NUMBER;
945     l_qte_header_rec          ASO_QUOTE_PUB.qte_Header_Rec_Type;
946 BEGIN
947       -- Standard Start of API savepoint
948       SAVEPOINT SUBMIT_QUOTE_PUB;
949 
950 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
951 
952       -- Standard call to check for call compatibility.
953       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
954                          	             p_api_version_number,
955                                            l_api_name,
956                                            G_PKG_NAME)
957       THEN
958           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
959       END IF;
960 
961 
962       -- Initialize message list if p_init_msg_list is set to TRUE.
963       IF FND_API.to_Boolean( p_init_msg_list )
964       THEN
965           FND_MSG_PUB.initialize;
966       END IF;
967 
968 
969 
970 
971       -- Initialize API return status to SUCCESS
972       x_return_status := FND_API.G_RET_STS_SUCCESS;
973       l_Qte_Header_Id := P_Qte_Header_Id;
974 
975       --
976       -- API body
977       --
978 
979       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
980        ASO_QUOTE_CUHK.Submit_quote_PRE(
981     p_control_rec		 => l_control_rec,
982     P_Qte_Header_Id		 => l_Qte_Header_Id,
983     X_Return_Status      => X_Return_Status,
984     X_Msg_Count          => X_Msg_Count,
985     X_Msg_Data            => X_Msg_Data    );
986        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
987              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
988 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
989 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Submit_Quote_PRE', FALSE);
990 		  FND_MSG_PUB.ADD;
991              END IF;
992                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
993                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
994                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
995                     RAISE FND_API.G_EXC_ERROR;
996                  END IF;
997           END IF;
998       END IF; -- customer hook
999        -- vertical hook
1000        IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
1001          ASO_QUOTE_VUHK.Submit_quote_PRE(
1002     p_control_rec		 => l_control_rec,
1003     P_Qte_Header_Id		 => l_Qte_Header_Id,
1004     X_Return_Status      => X_Return_Status,
1005     X_Msg_Count          => X_Msg_Count,
1006     X_Msg_Data            => X_Msg_Data    );
1007       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1008              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1009 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
1010 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Submit_Quote_PRE', FALSE);
1011 		  FND_MSG_PUB.ADD;
1012              END IF;
1013                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1014                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1015                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1016                     RAISE FND_API.G_EXC_ERROR;
1017                  END IF;
1018        END IF;
1019       END IF;
1020 
1021 	 l_qte_header_rec.quote_header_id := l_Qte_Header_Id;
1022 	 l_qte_header_rec.last_update_date := FND_API.G_MISS_DATE;
1023 
1024       ASO_SUBMIT_QUOTE_PVT.Submit_Quote(
1025 		P_Api_Version_Number => 1.0,
1026 		P_Init_Msg_List      => p_init_msg_list,
1027 		P_Control_Rec		 => l_control_rec,
1028 		P_Qte_Header_Rec	 => l_qte_header_rec,
1029 		x_order_header_rec	 => x_Order_Header_Rec,
1030 		X_Return_Status      => x_return_status,
1031 		X_Msg_Count          => x_msg_count,
1032 		X_Msg_Data           => x_msg_data);
1033 
1034       -- Check return status from the above procedure call
1035       IF x_return_status = FND_API.G_RET_STS_ERROR then
1036           raise FND_API.G_EXC_ERROR;
1037       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1038           raise FND_API.G_EXC_UNEXPECTED_ERROR;
1039       END IF;
1040 
1041          --  call user hooks
1042       -- customer post processing
1043 
1044     IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
1045          ASO_QUOTE_CUHK.Submit_quote_POST(
1046     p_control_rec		 => l_control_rec,
1047     P_Qte_Header_Id		 => l_Qte_Header_Id,
1048     p_order_header_rec   => x_order_header_rec,
1049     X_Return_Status      => X_Return_Status,
1050     X_Msg_Count          => X_Msg_Count,
1051     X_Msg_Data            => X_Msg_Data    );
1052 
1053      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1054              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1055 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
1056 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Submit_Quote_POST', FALSE);
1057 		  FND_MSG_PUB.ADD;
1058              END IF;
1059                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1060                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1061                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1062                     RAISE FND_API.G_EXC_ERROR;
1063                  END IF;
1064           END IF;
1065       END IF; -- customer hook
1066 
1067       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
1068       ASO_QUOTE_VUHK.Submit_quote_POST(
1069     p_control_rec		 => l_control_rec,
1070     P_Qte_Header_Id		 => l_Qte_Header_Id,
1071     p_order_header_rec   => x_order_header_rec,
1072     X_Return_Status      => X_Return_Status,
1073     X_Msg_Count          => X_Msg_Count,
1074     X_Msg_Data            => X_Msg_Data    );
1075     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1076              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1077 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
1078 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Submit_Quote_POST', FALSE);
1079 		  FND_MSG_PUB.ADD;
1080              END IF;
1081                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1082                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1083                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1084                     RAISE FND_API.G_EXC_ERROR;
1085                  END IF;
1086           END IF;
1087       END IF; -- vertical hook
1088       --
1089       -- End of API body
1090       --
1091 
1092 
1093 
1094 
1095       -- Standard call to get message count and if count is 1, get message info.
1096       FND_MSG_PUB.Count_And_Get
1097       (  p_count          =>   x_msg_count,
1098          p_data           =>   x_msg_data
1099       );
1100 
1101       EXCEPTION
1102           WHEN FND_API.G_EXC_ERROR THEN
1103               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1104                    P_API_NAME => L_API_NAME
1105                   ,P_PKG_NAME => G_PKG_NAME
1106                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1107                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1108                   ,X_MSG_COUNT => X_MSG_COUNT
1109                   ,X_MSG_DATA => X_MSG_DATA
1110                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1111 
1112           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1113               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1114                    P_API_NAME => L_API_NAME
1115                   ,P_PKG_NAME => G_PKG_NAME
1116                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1117                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1118                   ,X_MSG_COUNT => X_MSG_COUNT
1119                   ,X_MSG_DATA => X_MSG_DATA
1120                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1121 
1122           WHEN OTHERS THEN
1123               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1124                    P_API_NAME => L_API_NAME
1125                   ,P_PKG_NAME => G_PKG_NAME
1126                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
1127                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1128                   ,X_MSG_COUNT => X_MSG_COUNT
1129                   ,X_MSG_DATA => X_MSG_DATA
1130                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1131 END Submit_Quote;
1132 
1133 
1134 PROCEDURE Copy_quote(
1135     P_Api_Version_Number         IN   NUMBER,
1136     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1137     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
1138     P_Qte_Header_Id		 IN   NUMBER,
1139     P_Last_Update_Date		 IN   DATE,
1140     P_Copy_Only_Header		 IN   VARCHAR2	   := FND_API.G_FALSE,
1141     P_New_Version		 IN   VARCHAR2	   := FND_API.G_FALSE,
1142     P_Qte_Status_Id		 IN   NUMBER	   := NULL,
1143     P_Qte_Number		 IN   NUMBER	   := NULL,
1144     X_Qte_Header_Id		 OUT NOCOPY /* file.sql.39 change */  NUMBER,
1145     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1146     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
1147     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1148     )
1149 IS
1150     l_api_name                CONSTANT VARCHAR2(30) := 'COPY_QUOTE';
1151     l_api_version_number      CONSTANT NUMBER   := 1.0;
1152     l_Qte_Header_Id  NUMBER;
1153     l_Last_Update_Date DATE;
1154     l_Copy_Only_Header VARCHAR2(30);
1155     l_New_Version VARCHAR2(30);
1156     l_Qte_Status_Id NUMBER;
1157     l_Qte_Number NUMBER;
1158     l_NEW_Qte_Header_Id NUMBER;
1159     l_control_rec ASO_QUOTE_PUB.control_rec_type := G_MISS_Control_Rec ;
1160 BEGIN
1161       -- Standard Start of API savepoint
1162       SAVEPOINT COPY_QUOTE_PUB;
1163 
1164 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
1165 
1166       -- Standard call to check for call compatibility.
1167       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1168                          	             p_api_version_number,
1169                                            l_api_name,
1170                                            G_PKG_NAME)
1171       THEN
1172           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1173       END IF;
1174 
1175 
1176       -- Initialize message list if p_init_msg_list is set to TRUE.
1177       IF FND_API.to_Boolean( p_init_msg_list )
1178       THEN
1179           FND_MSG_PUB.initialize;
1180       END IF;
1181 
1182 
1183 
1184 
1185       -- Initialize API return status to SUCCESS
1186       x_return_status := FND_API.G_RET_STS_SUCCESS;
1187 
1188       --
1189       -- API body
1190       --
1191 
1192     -- mapping to local variables
1193     l_Qte_Header_Id    :=   P_Qte_Header_Id	;
1194     l_Last_Update_Date := P_Last_Update_Date;
1195     l_Copy_Only_Header :=  P_Copy_Only_Header;
1196     l_New_Version   := P_New_Version;
1197     l_Qte_Status_Id := P_Qte_Status_Id;
1198     l_Qte_Number := P_Qte_Number	;
1199 
1200      IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
1201      ASO_QUOTE_CUHK.Copy_quote_PRE(
1202     P_Qte_Header_Id		 => l_Qte_Header_Id,
1203     P_Last_Update_Date	  => l_Last_Update_Date,
1204     P_Copy_Only_Header		 => l_Copy_Only_Header,
1205     P_New_Version		 => l_New_Version,
1206     P_Qte_Status_Id		=> l_Qte_Status_Id	,
1207     P_Qte_Number		 => l_Qte_Number	,
1208     X_Return_Status      => X_Return_Status ,
1209     X_Msg_Count           =>     X_Msg_Count,
1210     X_Msg_Data            =>        X_Msg_Data
1211     );
1212      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1213            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1214 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
1215 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Copy_Quote_PRE', FALSE);
1216 		  FND_MSG_PUB.ADD;
1217              END IF;
1218                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1219                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1220                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1221                     RAISE FND_API.G_EXC_ERROR;
1222                  END IF;
1223           END IF;
1224       END IF; -- customer hook
1225        -- vertical hook
1226        IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
1227        ASO_QUOTE_VUHK.Copy_quote_PRE(
1228     P_Qte_Header_Id		 => l_Qte_Header_Id,
1229     P_Last_Update_Date	  => l_Last_Update_Date,
1230     P_Copy_Only_Header		 => l_Copy_Only_Header,
1231     P_New_Version		 => l_New_Version,
1232     P_Qte_Status_Id		=> l_Qte_Status_Id	,
1233     P_Qte_Number		 => l_Qte_Number	,
1234     X_Return_Status      => X_Return_Status ,
1235     X_Msg_Count           =>     X_Msg_Count,
1236     X_Msg_Data            =>        X_Msg_Data
1237     );
1238      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1239            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1240 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
1241 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Copy_Quote_PRE', FALSE);
1242 		  FND_MSG_PUB.ADD;
1243      END IF;
1244                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1245                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1246                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1247                     RAISE FND_API.G_EXC_ERROR;
1248                  END IF;
1249           END IF;
1250       END IF;
1251 
1252 
1253       ASO_QUOTE_HEADERS_PVT.Copy_Quote(
1254 		P_Api_Version_Number	=> 1.0,
1255 		P_Init_Msg_List		=> FND_API.G_FALSE,
1256 		P_Commit		=> p_commit,
1257 		P_Qte_Header_Id		=> p_qte_header_id,
1258                 P_control_rec           =>  l_control_rec,
1259 		P_Last_Update_Date	=> p_last_update_date,
1260 		P_Copy_Only_Header	=> p_copy_only_header,
1261 		P_New_Version		=> p_new_version,
1262 		P_Qte_Status_Id		=> p_qte_status_id,
1263 		P_Qte_Number		=> p_qte_number,
1264 		X_Qte_Header_Id		=> x_qte_header_id,
1265 		X_Return_Status         => x_return_status,
1266 		X_Msg_Count             => x_msg_count,
1267 		X_Msg_Data              => x_msg_data);
1268 
1269 
1270 
1271       -- Check return status from the above procedure call
1272       IF x_return_status = FND_API.G_RET_STS_ERROR then
1273           raise FND_API.G_EXC_ERROR;
1274       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1275           raise FND_API.G_EXC_UNEXPECTED_ERROR;
1276       END IF;
1277 
1278   l_NEW_Qte_Header_Id := x_qte_header_id;
1279 
1280   IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
1281       ASO_QUOTE_CUHK.Copy_quote_POST(
1282     P_Qte_Header_Id		 => l_Qte_Header_Id,
1283     P_Last_Update_Date	  => l_Last_Update_Date,
1284     P_Copy_Only_Header		 => l_Copy_Only_Header,
1285     P_New_Version		 => l_New_Version,
1286     P_Qte_Status_Id		=> l_Qte_Status_Id	,
1287     P_Qte_Number		 => l_Qte_Number	,
1288     P_NEW_Qte_Header_Id  => l_NEW_Qte_Header_Id,
1289     X_Return_Status      => X_Return_Status ,
1290     X_Msg_Count           =>     X_Msg_Count,
1291     X_Msg_Data            =>        X_Msg_Data
1292     );
1293       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1294              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1295 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
1296 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Copy_Quote_POST', FALSE);
1297 		  FND_MSG_PUB.ADD;
1298              END IF;
1299                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1300                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1301                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1302                     RAISE FND_API.G_EXC_ERROR;
1303                  END IF;
1304           END IF;
1305       END IF; -- customer hook
1306       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
1307       ASO_QUOTE_VUHK.Copy_quote_POST(
1308     P_Qte_Header_Id		 => l_Qte_Header_Id,
1309     P_Last_Update_Date	  => l_Last_Update_Date,
1310     P_Copy_Only_Header		 => l_Copy_Only_Header,
1311     P_New_Version		 => l_New_Version,
1312     P_Qte_Status_Id		=> l_Qte_Status_Id	,
1313     P_Qte_Number		 => l_Qte_Number	,
1314     P_NEW_Qte_Header_Id  => l_NEW_Qte_Header_Id,
1315     X_Return_Status      => X_Return_Status ,
1316     X_Msg_Count           =>     X_Msg_Count,
1317     X_Msg_Data            =>        X_Msg_Data
1318     );
1319       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1320              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1321 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
1322 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Copy_Quote_POST', FALSE);
1323 		  FND_MSG_PUB.ADD;
1324              END IF;
1325                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1326                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1327                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1328                     RAISE FND_API.G_EXC_ERROR;
1329                  END IF;
1330           END IF;
1331       END IF;
1332       --
1333       -- End of API body
1334       --
1335 
1336       -- Standard check for p_commit
1337       IF FND_API.to_Boolean( p_commit )
1338       THEN
1339           COMMIT WORK;
1340       END IF;
1341 
1342 
1343 
1344 
1345       -- Standard call to get message count and if count is 1, get message info.
1346       FND_MSG_PUB.Count_And_Get
1347       (  p_count          =>   x_msg_count,
1348          p_data           =>   x_msg_data
1349       );
1350 
1351       EXCEPTION
1352           WHEN FND_API.G_EXC_ERROR THEN
1353               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1354                    P_API_NAME => L_API_NAME
1355                   ,P_PKG_NAME => G_PKG_NAME
1356                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1357                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1358                   ,X_MSG_COUNT => X_MSG_COUNT
1359                   ,X_MSG_DATA => X_MSG_DATA
1360                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1361 
1362           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1363               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1364                    P_API_NAME => L_API_NAME
1365                   ,P_PKG_NAME => G_PKG_NAME
1366                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1367                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1368                   ,X_MSG_COUNT => X_MSG_COUNT
1369                   ,X_MSG_DATA => X_MSG_DATA
1370                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1371 
1372           WHEN OTHERS THEN
1373               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1374                    P_API_NAME => L_API_NAME
1375                   ,P_PKG_NAME => G_PKG_NAME
1376                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
1377                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
1378                   ,X_MSG_COUNT => X_MSG_COUNT
1379                   ,X_MSG_DATA => X_MSG_DATA
1380                   ,X_RETURN_STATUS => X_RETURN_STATUS);
1381 END Copy_Quote;
1382 
1383 
1384 -- Overloaded Copy_quote
1385 
1386 PROCEDURE Copy_quote(
1387     P_Api_Version_Number         IN   NUMBER,
1388     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1389     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
1390     P_control_rec                IN  Control_Rec_Type,
1391     P_Qte_Header_Id       IN   NUMBER,
1392     P_Last_Update_Date         IN   DATE,
1393     P_Copy_Only_Header         IN   VARCHAR2    := FND_API.G_FALSE,
1394     P_New_Version         IN   VARCHAR2    := FND_API.G_FALSE,
1395     P_Qte_Status_Id       IN   NUMBER      := NULL,
1396     P_Qte_Number          IN   NUMBER      := NULL,
1397     X_Qte_Header_Id       OUT NOCOPY /* file.sql.39 change */  NUMBER,
1398     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1399     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
1400     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1401     )
1402 IS
1403 
1404   l_api_name                CONSTANT VARCHAR2(30) := 'COPY_QUOTE';
1405     l_api_version_number      CONSTANT NUMBER   := 1.0;
1406     l_Qte_Header_Id  NUMBER;
1407     l_Last_Update_Date DATE;
1408     l_Copy_Only_Header VARCHAR2(30);
1409     l_New_Version VARCHAR2(30);
1410     l_Qte_Status_Id NUMBER;
1411     l_Qte_Number NUMBER;
1412     l_NEW_Qte_Header_Id NUMBER;
1413     BEGIN
1414 
1415 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
1416 
1417   ASO_QUOTE_HEADERS_PVT.Copy_Quote(
1418 		P_Api_Version_Number	=> 1.0,
1419 		P_Init_Msg_List		=> FND_API.G_FALSE,
1420 		P_Commit		=> p_commit,
1421 		P_control_rec           =>  P_control_rec,
1422 		P_Qte_Header_Id		=> p_qte_header_id,
1423 		P_Last_Update_Date	=> p_last_update_date,
1424 		P_Copy_Only_Header	=> p_copy_only_header,
1425 		P_New_Version		=> p_new_version,
1426 		P_Qte_Status_Id		=> p_qte_status_id,
1427 		P_Qte_Number		=> p_qte_number,
1428 		X_Qte_Header_Id		=> x_qte_header_id,
1429 		X_Return_Status         => x_return_status,
1430 		X_Msg_Count             => x_msg_count,
1431 		X_Msg_Data              => x_msg_data);
1432 
1433 
1434 END;
1435 
1436 --   *******************************************************
1437 --    Start of Comments
1438 --   *******************************************************
1439 --   API Name:  Create_Quote_Line
1440 --   Type    :  Public
1441 --   Pre-Req :
1442 --   Parameters:
1443 --   IN
1444 --       p_api_version_number      IN   NUMBER     Required
1445 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
1446 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
1447 --       P_qte_lines_Rec     IN    qte_line_Rec_Type         Required
1448 --       P_quote_header_id   IN    NUMBER                    Required
1449 --       P_header_last_update_date IN DATE                   Required
1450 --       P_Payment_Tbl       IN    Payment_Tbl_Type
1451 --       P_Price_Adj_Tbl     IN    Price_Adj_Tbl_Type
1452 --       P_Qte_Line_Dtl_Rec  IN    Qte_Line_Dtl_Rec_Type
1453 --       P_Shipment_Tbl      IN    Shipment_Tbl_Type
1454 --       P_Tax_Detail_Tbl      IN    Tax_Detail_Tbl_Type
1455 --       P_Freight_Charge_Tbl  IN    Freight_Charge_Tbl_Type
1456 --       P_Line_Rltship_Tbl IN   Line_Rltship_Tbl_Type
1457 --       P_Price_Attributes_Tbl  IN   Price_Attributes_Tbl_Type
1458 --       P_Price_Adj_Rltship_Tbl IN Price_Adj_Rltship_Tbl_Type
1459 --       P_Update_Header_Flag    IN   VARCHAR2     Optional  Default = FND_API.G_TRUE
1460 
1461 --   OUT:
1462 --       X_quote_line_id     OUT NOCOPY /* file.sql.39 change */  NUMBER,
1463 --       x_return_status           OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1464 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */  NUMBER
1465 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1466 --   Version : Current version 2.0
1467 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
1468 --         and basic operation, developer must manually add parameters and business logic as necessary.
1469 --
1470 --   End of Comments
1471 --
1472 
1473 
1474 PROCEDURE Create_Quote_Line(
1475     P_Api_Version_Number   IN   NUMBER,
1476     P_Init_Msg_List        IN   VARCHAR2     := FND_API.G_FALSE,
1477     P_Commit               IN   VARCHAR2     := FND_API.G_FALSE,
1478     P_Qte_Line_Rec         IN   Qte_Line_Rec_Type  := G_MISS_qte_line_REC,
1479     P_Control_Rec          IN   Control_rec_Type   := G_MISS_control_REC,
1480     P_Qte_Line_Dtl_TBL     IN   Qte_Line_Dtl_Tbl_Type  := G_MISS_qte_line_dtl_TBL,
1481     P_Line_Attribs_Ext_Tbl IN   Line_Attribs_Ext_Tbl_type
1482                                         := G_Miss_Line_Attribs_Ext_Tbl,
1483     P_Payment_Tbl          IN   Payment_Tbl_Type   := G_MISS_Payment_TBL,
1484     P_Price_Adj_Tbl        IN   Price_Adj_Tbl_Type := G_MISS_Price_Adj_TBL,
1485     P_Price_Attributes_Tbl IN   Price_Attributes_Tbl_Type := G_MISS_Price_attributes_TBL,
1486     P_Price_Adj_Attr_Tbl    IN  Price_Adj_Attr_Tbl_Type
1487 					:= G_Miss_PRICE_ADJ_ATTR_Tbl,
1488     P_Shipment_Tbl          IN  Shipment_Tbl_Type   := G_MISS_shipment_TBL,
1489     P_Tax_Detail_Tbl        IN  Tax_Detail_Tbl_Type:= G_MISS_tax_detail_TBL,
1490     P_Freight_Charge_Tbl    IN  Freight_Charge_Tbl_Type   := G_MISS_freight_charge_TBL,
1491     P_Update_Header_Flag    IN  VARCHAR2   := FND_API.G_TRUE,
1492     X_Qte_Line_Rec          OUT NOCOPY /* file.sql.39 change */  Qte_Line_Rec_Type,
1493     X_Qte_Line_Dtl_TBL      OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_TBL_Type,
1494     X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_type,
1495     X_Payment_Tbl           OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
1496     X_Price_Adj_Tbl         OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
1497     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type ,
1498     X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
1499     X_Shipment_Tbl          OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
1500     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
1501     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type ,
1502     X_Return_Status         OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1503     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
1504     X_Msg_Data              OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1505 )
1506 IS
1507 X_Sales_Credit_Tbl  Sales_Credit_Tbl_Type;
1508 X_Quote_Party_Tbl   Quote_Party_Tbl_Type;
1509 BEGIN
1510 
1511 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
1512 
1513   Create_Quote_Line(
1514     P_Api_Version_Number  => p_api_version_number,
1515     P_Init_Msg_List       => p_init_msg_list,
1516     P_Commit              => p_commit,
1517     P_Qte_Line_Rec        => p_qte_line_rec,
1518     P_Control_REC         => p_control_rec   ,
1519     P_Payment_Tbl         => p_payment_tbl   ,
1520     P_Price_Adj_Tbl       => p_price_adj_tbl ,
1521     P_Qte_Line_Dtl_Tbl    => p_Qte_Line_Dtl_Tbl,
1522     P_Shipment_Tbl        => p_Shipment_Tbl ,
1523     P_Tax_Detail_Tbl      => p_Tax_Detail_Tbl ,
1524     P_Freight_Charge_Tbl  => p_Freight_Charge_Tbl,
1525     P_Price_Attributes_Tbl  => p_Price_Attributes_Tbl,
1526     P_Price_Adj_Attr_Tbl    =>p_Price_Adj_Attr_Tbl,
1527     P_Line_Attribs_Ext_Tbl  =>p_Line_Attribs_Ext_Tbl,
1528     P_Update_Header_Flag    =>p_Update_Header_Flag ,
1529     X_qte_line_rec         => X_qte_line_rec,
1530     X_payment_tbl	   => x_payment_tbl,
1531     X_Price_Adj_Tbl        => x_price_adj_tbl,
1532     X_Qte_Line_Dtl_Tbl     => x_qte_line_dtl_tbl,
1533     X_Shipment_Tbl         => x_shipment_tbl,
1534     X_Tax_Detail_Tbl       => x_tax_detail_tbl,
1535     X_Freight_Charge_Tbl   => x_freight_charge_tbl,
1536     X_Price_Attributes_Tbl => x_price_attributes_tbl,
1537     X_Price_Adj_Attr_Tbl    => x_Price_Adj_Attr_Tbl,
1538     X_Line_Attribs_Ext_Tbl  => x_Line_Attribs_Ext_Tbl,
1539     X_Sales_Credit_Tbl      => X_Sales_Credit_Tbl ,
1540     X_Quote_Party_Tbl       => X_Quote_Party_Tbl,
1541     X_Return_Status        => x_return_status,
1542     X_Msg_Count            => x_msg_count,
1543     X_Msg_Data             => x_msg_data
1544     );
1545 
1546 END Create_Quote_Line;
1547 
1548 
1549 
1550 --   *******************************************************
1551 --    Start of Comments
1552 --   *******************************************************
1553 --   API Name:  Update_Quote_Line
1554 --   Type    :  Public
1555 --   Pre-Req :
1556 --   Parameters:
1557 --   IN
1558 --       p_api_version_number      IN   NUMBER     Required
1559 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
1560 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
1561 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
1562 --       P_qte_lines_Rec     IN    qte_line_Rec_Type         Required
1563 --       P_quote_header_id   IN    NUMBER                    Required
1564 --       P_header_last_update_date IN DATE                   Required
1565 --       P_Payment_Tbl       IN    Payment_Tbl_Type
1566 --       P_Price_Adj_Tbl     IN    Price_Adj_Tbl_Type
1567 --       P_Qte_Line_Dtl_Rec  IN    Qte_Line_Dtl_Rec_Type
1568 --       P_Shipment_Tbl      IN    Shipment_Tbl_Type
1569 --       P_Tax_Detail_Tbl      IN    Tax_Detail_Tbl_Type
1570 --       P_Freight_Charge_Tbl  IN    Freight_Charge_Tbl_Type
1571 --       P_Line_Rltship_Tbl IN   Line_Rltship_Tbl_Type
1572 --       P_Price_Attributes_Tbl  IN   Price_Attributes_Tbl_Type
1573 --       P_Price_Adj_Rltship_Tbl IN Price_Adj_Rltship_Tbl_Type
1574 --       P_Update_Header_Flag    IN   VARCHAR2     Optional  Default = FND_API.G_TRUE
1575 --   OUT:
1576 --       X_quote_line_id     OUT NOCOPY /* file.sql.39 change */  NUMBER,
1577 --       x_return_status           OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1578 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */  NUMBER
1579 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1580 --   Version : Current version 2.0
1581 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
1582 --         and basic operation, developer must manually add parameters and business logic as necessary.
1583 --
1584 --   End of Comments
1585 --
1586 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
1587 
1588 PROCEDURE Update_Quote_Line(
1589     P_Api_Version_Number   IN   NUMBER,
1590     P_Init_Msg_List        IN   VARCHAR2     := FND_API.G_FALSE,
1591     P_Commit               IN   VARCHAR2     := FND_API.G_FALSE,
1592     P_Qte_Line_Rec         IN   Qte_Line_Rec_Type  := G_MISS_qte_line_REC,
1593     P_Control_Rec          IN   Control_rec_Type   := G_MISS_control_REC,
1594     P_Qte_Line_Dtl_Tbl     IN   Qte_Line_Dtl_Tbl_Type  := G_MISS_qte_line_dtl_TBL,
1595     P_Line_Attribs_Ext_Tbl IN   Line_Attribs_Ext_Tbl_type
1596                                         := G_Miss_Line_Attribs_Ext_Tbl,
1597     P_Payment_Tbl          IN   Payment_Tbl_Type   := G_MISS_Payment_TBL,
1598     P_Price_Adj_Tbl        IN   Price_Adj_Tbl_Type := G_MISS_Price_Adj_TBL,
1599     P_Price_Attributes_Tbl IN   Price_Attributes_Tbl_Type := G_MISS_Price_attributes_TBL,
1600     P_Price_Adj_Attr_Tbl    IN  Price_Adj_Attr_Tbl_Type
1601 					:= G_Miss_PRICE_ADJ_ATTR_Tbl,
1602     P_Shipment_Tbl          IN  Shipment_Tbl_Type   := G_MISS_shipment_TBL,
1603     P_Tax_Detail_Tbl        IN  Tax_Detail_Tbl_Type:= G_MISS_tax_detail_TBL,
1604     P_Freight_Charge_Tbl    IN  Freight_Charge_Tbl_Type   := G_MISS_freight_charge_TBL,
1605     P_Update_Header_Flag    IN  VARCHAR2   := FND_API.G_TRUE,
1606     X_Qte_Line_Rec          OUT NOCOPY /* file.sql.39 change */  Qte_Line_Rec_Type,
1607     X_Qte_Line_Dtl_Tbl      OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
1608     X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_type,
1609     X_Payment_Tbl           OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
1610     X_Price_Adj_Tbl         OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
1611     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type ,
1612     X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
1613     X_Shipment_Tbl          OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
1614     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
1615     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type ,
1616     X_Return_Status         OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1617     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
1618     X_Msg_Data              OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1619     )
1620 IS
1621 
1622 X_Sales_Credit_Tbl  Sales_Credit_Tbl_Type;
1623 X_Quote_Party_Tbl   Quote_Party_Tbl_Type;
1624 BEGIN
1625 
1626 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
1627 
1628 Update_Quote_Line(
1629     P_Api_Version_Number  => 1.0,
1630     P_Init_Msg_List       => p_init_msg_list,
1631     P_Commit              => p_commit,
1632     P_Qte_Line_Rec        => p_qte_line_rec,
1633     P_Control_REC         => p_control_rec      ,
1634     P_Payment_Tbl         => p_payment_tbl      ,
1635     P_Price_Adj_Tbl       => p_price_adj_tbl ,
1636     P_Qte_Line_Dtl_TBL    => p_Qte_Line_Dtl_TBL ,
1637     P_Shipment_Tbl        => p_Shipment_Tbl ,
1638     P_Tax_Detail_Tbl      => p_Tax_Detail_Tbl ,
1639     P_Freight_Charge_Tbl  => p_Freight_Charge_Tbl,
1640     P_Price_Attributes_Tbl => p_Price_Attributes_Tbl,
1641     P_Price_Adj_Attr_Tbl    =>p_Price_Adj_Attr_Tbl,
1642     P_Line_Attribs_Ext_Tbl  =>p_Line_Attribs_Ext_Tbl,
1643     P_Update_Header_Flag    =>p_Update_Header_Flag ,
1644     X_qte_line_rec         => X_qte_line_rec,
1645     X_payment_tbl	   => x_payment_tbl,
1646     X_Price_Adj_Tbl        => x_price_adj_tbl,
1647     X_Qte_Line_Dtl_tbl     => x_qte_line_dtl_tbl,
1648     X_Shipment_Tbl         => x_shipment_tbl,
1649     X_Tax_Detail_Tbl       => x_tax_detail_tbl,
1650     X_Freight_Charge_Tbl   => x_freight_charge_tbl,
1651     X_Price_Attributes_Tbl => x_price_attributes_tbl,
1652     X_Price_Adj_Attr_Tbl    =>x_Price_Adj_Attr_Tbl,
1653     X_Line_Attribs_Ext_Tbl  =>x_Line_Attribs_Ext_Tbl,
1654     X_Sales_Credit_Tbl      => X_Sales_Credit_Tbl,
1655     X_Quote_Party_Tbl       => X_Quote_Party_Tbl,
1656     X_Return_Status        => x_return_status,
1657     X_Msg_Count            => x_msg_count,
1658     X_Msg_Data             => x_msg_data
1659     );
1660 
1661 END Update_Quote_Line;
1662 
1663 
1664 --   *******************************************************
1665 --    Start of Comments
1666 --   *******************************************************
1667 --   API Name:  Delete_Quote_Line
1668 --   Type    :  Public
1669 --   Pre-Req :
1670 --   Parameters:
1671 --   IN
1672 --       p_api_version_number      IN   NUMBER     Required
1673 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
1674 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
1675 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
1676 --       P_qte_line_Rec      IN qte_line_Rec_Type  Required
1677 --       P_quote_header_id   IN    NUMBER                    Required
1678 --       P_header_last_update_date IN DATE                   Required
1679 --
1680 --   OUT:
1681 --       x_return_status           OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1682 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */  NUMBER
1683 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1684 --   Version : Current version 2.0
1685 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
1686 --         and basic operation, developer must manually add parameters and business logic as necessary.
1687 --
1688 --   End of Comments
1689 --
1690 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
1691 --       The Master delete procedure may not be needed depends on different business requirements.
1692 
1693 PROCEDURE Delete_Quote_Line(
1694     P_Api_Version_Number         IN   NUMBER,
1695     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1696     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
1697     P_qte_line_Rec     IN qte_line_Rec_Type,
1698     P_Control_Rec      IN    Control_rec_Type   := G_MISS_control_REC,
1699     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1700     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
1701     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1702     )
1703 IS
1704 
1705 BEGIN
1706 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
1707    Delete_Quote_Line(
1708     P_Api_Version_Number  => 1.0,
1709     P_Init_Msg_List       => P_Init_Msg_List  ,
1710     P_Commit              => p_commit,
1711     P_qte_line_Rec        => P_qte_line_Rec,
1712     P_Control_Rec         => p_control_rec,
1713     P_Update_Header_Flag  => 'N',
1714     X_Return_Status       => X_Return_Status,
1715     X_Msg_Count           => x_msg_count,
1716     X_Msg_Data            => x_msg_data
1717     );
1718 End Delete_quote_line;
1719 
1720 
1721 -- added by kchervel 06/26/00
1722 
1723 
1724 --   *******************************************************
1725 --    Start of Comments
1726 --   *******************************************************
1727 --   API Name:  Create_quote
1728 --   Type    :  Public
1729 --   Pre-Req :
1730 --   Parameters:
1731 
1732 --   Version : Current version 2.0
1733 --   Note: This is an overloaded procedure. It takes additional attributes
1734 --   which include the hd_attributes, sales credits and quote party record
1735 --   types
1736 --
1737 --   End of Comments
1738 --
1739 
1740 PROCEDURE Create_quote(
1741     P_Api_Version_Number       IN   NUMBER,
1742     P_Init_Msg_List            IN   VARCHAR2                                := FND_API.G_FALSE,
1743     P_Commit                   IN   VARCHAR2                                := FND_API.G_FALSE,
1744     P_Validation_Level 	      IN   NUMBER                                  := FND_API.G_VALID_LEVEL_FULL,
1745     P_Control_Rec		      IN   Control_Rec_Type                        := G_Miss_Control_Rec,
1746     P_Qte_Header_Rec		 IN   Qte_Header_Rec_Type                     := G_MISS_Qte_Header_Rec,
1747     P_hd_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := G_Miss_Price_Attributes_Tbl,
1748     P_hd_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := G_MISS_PAYMENT_TBL,
1749     P_hd_Shipment_Rec		 IN   ASO_QUOTE_PUB.Shipment_Rec_Type         := G_MISS_SHIPMENT_REC,
1750     P_hd_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := G_Miss_Freight_Charge_Tbl,
1751     P_hd_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := G_Miss_Tax_Detail_Tbl,
1752     P_hd_Attr_Ext_Tbl		 IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
1753     P_hd_Sales_Credit_Tbl      IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
1754     P_hd_Quote_Party_Tbl       IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
1755     P_Qte_Line_Tbl		      IN   Qte_Line_Tbl_Type                       := G_MISS_QTE_LINE_TBL,
1756     P_Qte_Line_Dtl_Tbl		 IN   Qte_Line_Dtl_Tbl_Type                   := G_MISS_QTE_LINE_DTL_TBL,
1757     P_Line_Attr_Ext_Tbl		 IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
1758     P_line_rltship_tbl		 IN   Line_Rltship_Tbl_Type                   := G_MISS_Line_Rltship_Tbl,
1759     P_Price_Adjustment_Tbl	 IN   Price_Adj_Tbl_Type                      := G_Miss_Price_Adj_Tbl,
1760     P_Price_Adj_Attr_Tbl	      IN   Price_Adj_Attr_Tbl_Type                 := G_Miss_PRICE_ADJ_ATTR_Tbl,
1761     P_Price_Adj_Rltship_Tbl	 IN   Price_Adj_Rltship_Tbl_Type              := G_Miss_Price_Adj_Rltship_Tbl,
1762     P_Ln_Price_Attributes_Tbl	 IN   Price_Attributes_Tbl_Type               := G_Miss_Price_Attributes_Tbl,
1763     P_Ln_Payment_Tbl		 IN   Payment_Tbl_Type                        := G_MISS_PAYMENT_TBL,
1764     P_Ln_Shipment_Tbl		 IN   Shipment_Tbl_Type                       := G_MISS_SHIPMENT_TBL,
1765     P_Ln_Freight_Charge_Tbl	 IN   Freight_Charge_Tbl_Type                 := G_Miss_Freight_Charge_Tbl,
1766     P_Ln_Tax_Detail_Tbl		 IN   Tax_Detail_Tbl_Type                     := G_Miss_Tax_Detail_Tbl,
1767     P_ln_Sales_Credit_Tbl      IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
1768     P_ln_Quote_Party_Tbl       IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
1769     x_Qte_Header_Rec		 OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type,
1770     X_Qte_Line_Tbl		      OUT NOCOPY /* file.sql.39 change */  Qte_Line_Tbl_Type,
1771     X_Qte_Line_Dtl_Tbl		 OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
1772     X_Hd_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
1773     X_Hd_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
1774     X_Hd_Shipment_Rec		 OUT NOCOPY /* file.sql.39 change */  Shipment_Rec_Type,
1775     X_Hd_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
1776     X_Hd_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
1777     X_hd_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
1778     X_hd_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
1779     X_hd_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
1780     x_Line_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
1781     X_line_rltship_tbl		 OUT NOCOPY /* file.sql.39 change */  Line_Rltship_Tbl_Type,
1782     X_Price_Adjustment_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
1783     X_Price_Adj_Attr_Tbl	      OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
1784     X_Price_Adj_Rltship_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Adj_Rltship_Tbl_Type,
1785     X_Ln_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
1786     X_Ln_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
1787     X_Ln_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
1788     X_Ln_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
1789     X_Ln_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
1790     X_Ln_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
1791     X_Ln_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
1792     X_Return_Status            OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1793     X_Msg_Count                OUT NOCOPY /* file.sql.39 change */  NUMBER,
1794     X_Msg_Data                 OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1795     )
1796 IS
1797  x_Qte_Access_Tbl            Qte_Access_Tbl_Type;
1798  x_Template_Tbl              Template_Tbl_Type;
1799  X_Related_Obj_Tbl           Related_Obj_Tbl_Type;
1800 BEGIN
1801    aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
1802 
1803    if aso_debug_pub.g_debug_flag = 'Y' then
1804        aso_debug_pub.add('Before call to the second overloaded create_quote procedure.',1, 'Y');
1805    end if;
1806 
1807    Create_quote(
1808 	    P_Api_Version_Number	      => 1.0,
1809 	    P_Init_Msg_List		      => p_init_msg_list,
1810 	    P_Commit			      => p_commit,
1811 	    P_Control_Rec		      => p_control_rec,
1812 	    P_qte_header_rec		 => p_qte_header_rec,
1813 	    P_Hd_Price_Attributes_Tbl	 => p_Hd_Price_Attributes_Tbl,
1814 	    P_Hd_Payment_Tbl		 => p_Hd_Payment_Tbl,
1815 	    P_Hd_Shipment_Rec		 => p_Hd_Shipment_Rec,
1816 	    P_Hd_Freight_Charge_Tbl	 => p_Hd_Freight_Charge_Tbl,
1817 	    P_Hd_Tax_Detail_Tbl		 => p_Hd_Tax_Detail_Tbl,
1818 	    P_Qte_Line_Tbl		      => p_Qte_Line_Tbl,
1819 	    P_Qte_Line_Dtl_Tbl		 => p_Qte_Line_Dtl_Tbl,
1820 	    P_Line_Attr_Ext_Tbl		 => P_Line_Attr_Ext_Tbl,
1821 	    P_Line_rltship_tbl		 => p_Line_Rltship_Tbl,
1822 	    P_Price_Adjustment_Tbl	 => p_Price_Adjustment_Tbl,
1823 	    P_Price_Adj_Attr_Tbl	      => P_Price_Adj_Attr_Tbl,
1824 	    P_Price_Adj_Rltship_Tbl	 => p_Price_Adj_Rltship_Tbl,
1825 	    P_Ln_Price_Attributes_Tbl	 => p_Ln_Price_Attributes_Tbl,
1826 	    P_Ln_Payment_Tbl		 => p_Ln_Payment_Tbl,
1827 	    P_Ln_Shipment_Tbl		 => p_Ln_Shipment_Tbl,
1828 	    P_Ln_Freight_Charge_Tbl	 => p_Ln_Freight_Charge_Tbl,
1829 	    P_Ln_Tax_Detail_Tbl		 => p_Ln_Tax_Detail_Tbl,
1830 	    x_qte_header_rec		 => x_qte_header_rec,
1831 	    X_Hd_Price_Attributes_Tbl	 => x_Hd_Price_Attributes_Tbl,
1832 	    X_Hd_Payment_Tbl		 => x_Hd_Payment_Tbl,
1833 	    X_Hd_Shipment_Rec		 => x_Hd_Shipment_Rec,
1834 	    X_Hd_Freight_Charge_Tbl	 => x_Hd_Freight_Charge_Tbl,
1835 	    X_Hd_Tax_Detail_Tbl		 => x_Hd_Tax_Detail_Tbl,
1836          X_hd_Attr_Ext_Tbl		 => x_hd_Attr_Ext_Tbl,
1837          X_hd_Sales_Credit_Tbl      => x_hd_Sales_Credit_Tbl,
1838          X_hd_Quote_Party_Tbl       => x_hd_Quote_Party_Tbl,
1839 	    X_Qte_Line_Tbl		      => x_Qte_Line_Tbl,
1840 	    X_Qte_Line_Dtl_Tbl		 => x_Qte_Line_Dtl_Tbl,
1841 	    x_Line_Attr_Ext_Tbl		 => x_Line_Attr_Ext_Tbl,
1842 	    X_Line_rltship_tbl		 => x_Line_Rltship_Tbl,
1843 	    X_Price_Adjustment_Tbl	 => x_Price_Adjustment_Tbl,
1844 	    x_Price_Adj_Attr_Tbl	      => x_Price_Adj_Attr_Tbl,
1845 	    X_Price_Adj_Rltship_Tbl	 => x_Price_Adj_Rltship_Tbl,
1846 	    X_Ln_Price_Attributes_Tbl	 => x_Ln_Price_Attributes_Tbl,
1847 	    X_Ln_Payment_Tbl		 => x_Ln_Payment_Tbl,
1848 	    X_Ln_Shipment_Tbl		 => x_Ln_Shipment_Tbl,
1849 	    X_Ln_Freight_Charge_Tbl	 => x_Ln_Freight_Charge_Tbl,
1850 	    X_Ln_Tax_Detail_Tbl		 => x_Ln_Tax_Detail_Tbl,
1851          X_Ln_Sales_Credit_Tbl      => x_ln_Sales_Credit_Tbl,
1852          X_Ln_Quote_Party_Tbl       => x_ln_Quote_Party_Tbl,
1853          x_Qte_Access_Tbl           => x_Qte_Access_Tbl,
1854          x_Template_Tbl             => x_Template_Tbl,
1855 	    X_Related_Obj_Tbl          => X_Related_Obj_Tbl,
1856 	    X_Return_Status            => x_return_status,
1857 	    X_Msg_Count                => x_msg_count,
1858 	    X_Msg_Data                 => x_msg_data);
1859 
1860    if aso_debug_pub.g_debug_flag = 'Y' then
1861        aso_debug_pub.add('After call to the second overloaded create_quote procedure: x_return_status: '|| x_return_status, 1, 'Y');
1862    end if;
1863 
1864 END Create_Quote;
1865 
1866 
1867 --   *******************************************************
1868 --    Start of Comments
1869 --   *******************************************************
1870 --   API Name:  Update_quote
1871 --   Type    :  Public
1872 --   Pre-Req :
1873 --   Parameters:
1874 
1875 --  This is an overloaded procedure. It takes additional attributes
1876 --  which include the hd_attributes, sales credits and quote party record types
1877 
1878 
1879 PROCEDURE Update_quote(
1880     P_Api_Version_Number         IN   NUMBER,
1881     P_Init_Msg_List              IN   VARCHAR2                                := FND_API.G_FALSE,
1882     P_Commit                     IN   VARCHAR2                                := FND_API.G_FALSE,
1883     P_Validation_Level 	        IN   NUMBER                                  := FND_API.G_VALID_LEVEL_FULL,
1884     P_Control_Rec		        IN   Control_Rec_Type                        := G_Miss_Control_Rec,
1885     P_Qte_Header_Rec		   IN   Qte_Header_Rec_Type                     := G_MISS_Qte_Header_Rec,
1886     P_hd_Price_Attributes_Tbl	   IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := G_Miss_Price_Attributes_Tbl,
1887     P_hd_Payment_Tbl		   IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := G_MISS_PAYMENT_TBL,
1888     P_hd_Shipment_Tbl		   IN   ASO_QUOTE_PUB.Shipment_Tbl_Type         := G_MISS_SHIPMENT_TBL,
1889     P_hd_Freight_Charge_Tbl	   IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := G_Miss_Freight_Charge_Tbl,
1890     P_hd_Tax_Detail_Tbl		   IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := G_Miss_Tax_Detail_Tbl,
1891     P_hd_Attr_Ext_Tbl		   IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
1892     P_hd_Sales_Credit_Tbl        IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
1893     P_hd_Quote_Party_Tbl         IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
1894     P_Qte_Line_Tbl		        IN   Qte_Line_Tbl_Type                       := G_MISS_QTE_LINE_TBL,
1895     P_Qte_Line_Dtl_Tbl		   IN   Qte_Line_Dtl_Tbl_Type                   := G_MISS_QTE_LINE_DTL_TBL,
1896     P_Line_Attr_Ext_Tbl		   IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
1897     P_line_rltship_tbl		   IN   Line_Rltship_Tbl_Type                   := G_MISS_Line_Rltship_Tbl,
1898     P_Price_Adjustment_Tbl	   IN   Price_Adj_Tbl_Type                      := G_Miss_Price_Adj_Tbl,
1899     P_Price_Adj_Attr_Tbl	        IN   Price_Adj_Attr_Tbl_Type                 := G_Miss_PRICE_ADJ_ATTR_Tbl,
1900     P_Price_Adj_Rltship_Tbl	   IN   Price_Adj_Rltship_Tbl_Type              := G_Miss_Price_Adj_Rltship_Tbl,
1901     P_Ln_Price_Attributes_Tbl	   IN   Price_Attributes_Tbl_Type               := G_Miss_Price_Attributes_Tbl,
1902     P_Ln_Payment_Tbl		   IN   Payment_Tbl_Type                        := G_MISS_PAYMENT_TBL,
1903     P_Ln_Shipment_Tbl		   IN   Shipment_Tbl_Type                       := G_MISS_SHIPMENT_TBL,
1904     P_Ln_Freight_Charge_Tbl	   IN   Freight_Charge_Tbl_Type                 := G_Miss_Freight_Charge_Tbl,
1905     P_Ln_Tax_Detail_Tbl		   IN   Tax_Detail_Tbl_Type                     := G_Miss_Tax_Detail_Tbl,
1906     P_ln_Sales_Credit_Tbl        IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
1907     P_ln_Quote_Party_Tbl         IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
1908     x_Qte_Header_Rec		   OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type,
1909     X_Qte_Line_Tbl		        OUT NOCOPY /* file.sql.39 change */  Qte_Line_Tbl_Type,
1910     X_Qte_Line_Dtl_Tbl		   OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
1911     X_Hd_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
1912     X_Hd_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
1913     X_Hd_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
1914     X_Hd_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
1915     X_Hd_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
1916     X_hd_Attr_Ext_Tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
1917     X_hd_Sales_Credit_Tbl        OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
1918     X_hd_Quote_Party_Tbl         OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
1919     x_Line_Attr_Ext_Tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
1920     X_line_rltship_tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Rltship_Tbl_Type,
1921     X_Price_Adjustment_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
1922     X_Price_Adj_Attr_Tbl	        OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
1923     X_Price_Adj_Rltship_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Rltship_Tbl_Type,
1924     X_Ln_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
1925     X_Ln_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
1926     X_Ln_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
1927     X_Ln_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
1928     X_Ln_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
1929     X_Ln_Sales_Credit_Tbl        OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
1930     X_Ln_Quote_Party_Tbl         OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
1931     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
1932     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
1933     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
1934     )
1935 IS
1936     x_Qte_Access_Tbl           Qte_Access_Tbl_Type;
1937     x_Template_Tbl             Template_Tbl_Type;
1938     X_Related_Obj_Tbl          Related_Obj_Tbl_Type;
1939 BEGIN
1940      aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
1941 
1942      if aso_debug_pub.g_debug_flag = 'Y' then
1943          aso_debug_pub.add('Before call to the second overloaded update_quote procedure.',1, 'Y');
1944      end if;
1945 
1946      Update_quote(
1947 	    P_Api_Version_Number	      => 1.0,
1948 	    P_Init_Msg_List		      => p_init_msg_list,
1949 	    P_Commit			      => p_commit,
1950 	    P_Control_Rec		      => p_control_rec,
1951 	    P_qte_header_rec		 => p_qte_header_rec,
1952 	    P_Hd_Price_Attributes_Tbl	 => p_Hd_Price_Attributes_Tbl,
1953 	    P_Hd_Payment_Tbl		 => p_Hd_Payment_Tbl,
1954 	    P_Hd_Shipment_Tbl		 => p_Hd_Shipment_Tbl,
1955 	    P_hd_Sales_Credit_Tbl	 => P_hd_Sales_Credit_Tbl,   --Yogeshwar(# Added parameter to address sales credit allocation issue)
1956 	    P_ln_Sales_Credit_Tbl	 => P_ln_Sales_Credit_Tbl,   --Yogeshwar(# Added parameter to address sales credit allocation issue)
1957 	    P_Hd_Freight_Charge_Tbl	 => p_Hd_Freight_Charge_Tbl,
1958 	    P_Hd_Tax_Detail_Tbl		 => p_Hd_Tax_Detail_Tbl,
1959 	    P_Qte_Line_Tbl		      => p_Qte_Line_Tbl,
1960 	    P_Qte_Line_Dtl_Tbl		 => p_Qte_Line_Dtl_Tbl,
1961 	    P_Line_Attr_Ext_Tbl		 => P_Line_Attr_Ext_Tbl,
1962 	    P_Line_rltship_tbl		 => p_Line_Rltship_Tbl,
1963 	    P_Price_Adjustment_Tbl	 => p_Price_Adjustment_Tbl,
1964 	    P_Price_Adj_Attr_Tbl	      => P_Price_Adj_Attr_Tbl,
1965 	    P_Price_Adj_Rltship_Tbl	 => p_Price_Adj_Rltship_Tbl,
1966 	    P_Ln_Price_Attributes_Tbl	 => p_Ln_Price_Attributes_Tbl,
1967 	    P_Ln_Payment_Tbl		 => p_Ln_Payment_Tbl,
1968 	    P_Ln_Shipment_Tbl		 => p_Ln_Shipment_Tbl,
1969 	    P_Ln_Freight_Charge_Tbl	 => p_Ln_Freight_Charge_Tbl,
1970 	    P_Ln_Tax_Detail_Tbl		 => p_Ln_Tax_Detail_Tbl,
1971 	    x_qte_header_rec		 => x_qte_header_rec,
1972 	    X_Hd_Price_Attributes_Tbl	 => x_Hd_Price_Attributes_Tbl,
1973 	    X_Hd_Payment_Tbl		 => x_Hd_Payment_Tbl,
1974 	    X_Hd_Shipment_tbl		 => x_Hd_Shipment_tbl,
1975 	    X_Hd_Freight_Charge_Tbl	 => x_Hd_Freight_Charge_Tbl,
1976 	    X_Hd_Tax_Detail_Tbl		 => x_Hd_Tax_Detail_Tbl,
1977          X_hd_Attr_Ext_Tbl		 => X_hd_Attr_Ext_Tbl,
1978          X_hd_Sales_Credit_Tbl      => X_hd_Sales_Credit_Tbl,
1979          X_hd_Quote_Party_Tbl       => X_hd_Quote_Party_Tbl,
1980 	    X_Qte_Line_Tbl		      => x_Qte_Line_Tbl,
1981 	    X_Qte_Line_Dtl_Tbl		 => x_Qte_Line_Dtl_Tbl,
1982 	    x_Line_Attr_Ext_Tbl		 => x_Line_Attr_Ext_Tbl,
1983 	    X_Line_rltship_tbl		 => x_Line_Rltship_Tbl,
1984 	    X_Price_Adjustment_Tbl	 => x_Price_Adjustment_Tbl,
1985 	    x_Price_Adj_Attr_Tbl	      => x_Price_Adj_Attr_Tbl,
1986 	    X_Price_Adj_Rltship_Tbl	 => x_Price_Adj_Rltship_Tbl,
1987 	    X_Ln_Price_Attributes_Tbl	 => x_Ln_Price_Attributes_Tbl,
1988 	    X_Ln_Payment_Tbl		 => x_Ln_Payment_Tbl,
1989 	    X_Ln_Shipment_Tbl		 => x_Ln_Shipment_Tbl,
1990 	    X_Ln_Freight_Charge_Tbl	 => x_Ln_Freight_Charge_Tbl,
1991 	    X_Ln_Tax_Detail_Tbl		 => x_Ln_Tax_Detail_Tbl,
1992          X_Ln_Sales_Credit_Tbl      => X_ln_Sales_Credit_Tbl,
1993          X_Ln_Quote_Party_Tbl       => X_ln_Quote_Party_Tbl,
1994          x_Qte_Access_Tbl           => x_Qte_Access_Tbl,
1995          x_Template_Tbl             => x_Template_Tbl,
1996 	    X_Related_Obj_Tbl          => X_Related_Obj_Tbl,
1997 	    X_Return_Status            => x_return_status,
1998 	    X_Msg_Count                => x_msg_count,
1999 	    X_Msg_Data                 => x_msg_data);
2000 
2001    if aso_debug_pub.g_debug_flag = 'Y' then
2002        aso_debug_pub.add('After call to the second overloaded update_quote procedure: x_return_status: '|| x_return_status, 1, 'Y');
2003    end if;
2004 
2005 End Update_quote;
2006 
2007 
2008 
2009 
2010 
2011 --   *******************************************************
2012 --    Start of Comments
2013 --   *******************************************************
2014 --   API Name:  Submit_Quote
2015 --   Type    :  Public
2016 --   Pre-Req :
2017 --   Parameters:
2018 --   overloaded function includes the p_commit flag
2019 --
2020 --   End of Comments
2021 --
2022 PROCEDURE Submit_quote(
2023     P_Api_Version_Number         IN   NUMBER,
2024     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
2025     P_commit                     IN   VARCHAR2 ,
2026     p_control_rec		        IN   Submit_Control_Rec_Type
2027 					                          := G_MISS_Submit_Control_Rec,
2028     P_Qte_Header_Id		        IN   NUMBER,
2029     x_order_header_rec		   OUT NOCOPY /* file.sql.39 change */  Order_Header_Rec_Type,
2030     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
2031     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
2032     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
2033     )
2034 IS
2035 BEGIN
2036 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
2037 Submit_quote(
2038     P_Api_Version_Number       => P_Api_Version_Number,
2039     P_Init_Msg_List            =>  P_Init_Msg_List  ,
2040     P_control_rec		=> P_control_rec,
2041     P_Qte_Header_Id	 => 	P_Qte_Header_Id,
2042     x_order_header_rec		 => x_order_header_rec,
2043     X_Return_Status              => X_Return_Status,
2044     X_Msg_Count                  => X_Msg_Count,
2045     X_Msg_Data                   => X_Msg_Data
2046     );
2047   IF FND_API.to_Boolean( p_commit )
2048       THEN
2049           COMMIT WORK;
2050       END IF;
2051 END;
2052 
2053 
2054 --   *******************************************************
2055 --    Start of Comments
2056 --   *******************************************************
2057 --   API Name:  Create_Quote_Line
2058 --   Type    :  Public
2059 --   Pre-Req :
2060 --   Parameters:
2061 
2062 
2063 --
2064 --   End of Comments
2065 --
2066 PROCEDURE Create_Quote_Line(
2067 
2068     P_Api_Version_Number   IN   NUMBER,
2069     P_Init_Msg_List        IN   VARCHAR2     := FND_API.G_FALSE,
2070     P_Commit               IN   VARCHAR2     := FND_API.G_FALSE,
2071     P_Validation_Level 	IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
2072     P_Qte_Header_Rec           IN    Qte_Header_Rec_Type  := G_MISS_Qte_Header_Rec,
2073     P_Qte_Line_Rec         IN   Qte_Line_Rec_Type  := G_MISS_qte_line_REC,
2074     P_Control_Rec          IN   Control_rec_Type   := G_MISS_control_REC,
2075     P_Qte_Line_Dtl_Tbl    IN   Qte_Line_Dtl_Tbl_Type:= G_MISS_qte_line_dtl_TBL,
2076     P_Line_Attribs_Ext_Tbl IN   Line_Attribs_Ext_Tbl_type
2077                                         := G_Miss_Line_Attribs_Ext_Tbl,
2078     P_Payment_Tbl          IN   Payment_Tbl_Type   := G_MISS_Payment_TBL,
2079     P_Price_Adj_Tbl        IN   Price_Adj_Tbl_Type := G_MISS_Price_Adj_TBL,
2080     P_Price_Attributes_Tbl IN   Price_Attributes_Tbl_Type := G_MISS_Price_attributes_TBL,
2081     P_Price_Adj_Attr_Tbl    IN  Price_Adj_Attr_Tbl_Type
2082 					:= G_Miss_PRICE_ADJ_ATTR_Tbl,
2083     P_Shipment_Tbl          IN  Shipment_Tbl_Type   := G_MISS_shipment_TBL,
2084     P_Tax_Detail_Tbl        IN  Tax_Detail_Tbl_Type:= G_MISS_tax_detail_TBL,
2085     P_Freight_Charge_Tbl    IN  Freight_Charge_Tbl_Type   := G_MISS_freight_charge_TBL,
2086     P_Sales_Credit_Tbl        IN   Sales_Credit_Tbl_Type
2087                                         := G_MISS_Sales_Credit_Tbl,
2088     P_Quote_Party_Tbl         IN   Quote_Party_Tbl_Type
2089                                         := G_MISS_Quote_Party_Tbl,
2090     P_Update_Header_Flag    IN  VARCHAR2   := FND_API.G_TRUE,
2091     X_Qte_Line_Rec          OUT NOCOPY /* file.sql.39 change */  Qte_Line_Rec_Type,
2092     X_Qte_Line_Dtl_TBL      OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_TBL_Type,
2093     X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_type,
2094     X_Payment_Tbl           OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
2095     X_Price_Adj_Tbl         OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
2096     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type ,
2097     X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
2098     X_Shipment_Tbl          OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
2099     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
2100     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type ,
2101     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
2102     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
2103     X_Return_Status         OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
2104     X_Msg_Count             OUT NOCOPY /* file.sql.39 change */  NUMBER,
2105     X_Msg_Data              OUT NOCOPY /* file.sql.39 change */  VARCHAR2
2106 )
2107 IS
2108     l_api_name                CONSTANT VARCHAR2(30) := 'CREATE_QUOTE_LINE';
2109     l_api_version_number      CONSTANT NUMBER   := 1.0;
2110 
2111 
2112         l_Qte_Line_Rec          Qte_Line_Rec_Type  ;
2113         l_Qte_Line_Rec_out      Qte_Line_Rec_Type  ;
2114         l_Payment_Tbl           Payment_Tbl_Type ;
2115         l_Price_Adj_Tbl         Price_Adj_Tbl_Type;
2116 	l_Qte_Line_Dtl_rec      Qte_Line_Dtl_rec_Type ;
2117 	l_Shipment_Tbl          Shipment_Tbl_Type;
2118 	l_Tax_Detail_Tbl        Tax_Detail_Tbl_Type;
2119 	l_Freight_Charge_Tbl    Freight_Charge_Tbl_Type;
2120 	l_Line_Rltship_Tbl      Line_Rltship_Tbl_Type;
2121 	l_Price_Attributes_Tbl  Price_Attributes_Tbl_Type;
2122 	l_Price_Adj_rltship_Tbl Price_Adj_Rltship_Tbl_Type;
2123 	l_Price_Adj_Attr_Tbl    Price_Adj_Attr_Tbl_Type;
2124 	l_Line_Attribs_Ext_Tbl  Line_Attribs_Ext_Tbl_type;
2125 	l_Qte_Line_Dtl_tbl      Qte_Line_Dtl_tbl_Type;
2126         l_Sales_Credit_Tbl      Sales_Credit_Tbl_Type ;
2127         l_Quote_Party_Tbl       Quote_Party_Tbl_Type;
2128         l_Control_Rec           Control_rec_Type;
2129         l_update_header_flag    VARCHAR2(10);
2130 
2131     my_message   VARCHAR2(2000);
2132 
2133 BEGIN
2134 
2135       -- Standard Start of API savepoint
2136       SAVEPOINT CREATE_QUOTE_LINE_PUB;
2137 
2138 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
2139 
2140       -- Standard call to check for call compatibility.
2141       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2142                          	             p_api_version_number,
2143                                            l_api_name,
2144                                            G_PKG_NAME)
2145       THEN
2146           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2147       END IF;
2148 
2149 
2150       -- Initialize message list if p_init_msg_list is set to TRUE.
2151       IF FND_API.to_Boolean( p_init_msg_list )
2152       THEN
2153           FND_MSG_PUB.initialize;
2154       END IF;
2155 
2156 
2157 
2158 
2159       -- Initialize API return status to SUCCESS
2160       x_return_status := FND_API.G_RET_STS_SUCCESS;
2161 
2162       --
2163       -- API body
2164       --
2165 
2166       -- mapping to local variables
2167 
2168         l_Qte_Line_Rec          := p_Qte_Line_Rec  ;
2169         l_Payment_Tbl           := p_Payment_Tbl   ;
2170         l_Price_Adj_Tbl         := p_Price_Adj_Tbl ;
2171 	l_Shipment_Tbl          := p_Shipment_Tbl  ;
2172 	l_Tax_Detail_Tbl        := p_Tax_Detail_Tbl;
2173 	l_Freight_Charge_Tbl    := p_Freight_Charge_Tbl   ;
2174 --	l_Line_Rltship_Tbl      := p_Line_Rltship_Tbl     ;
2175 	l_Price_Attributes_Tbl  := p_Price_Attributes_Tbl ;
2176 --	l_Price_Adj_rltship_Tbl := p_Price_Adj_Rltship_Tbl;
2177 	l_Price_Adj_Attr_Tbl    := p_Price_Adj_Attr_Tbl   ;
2178 	l_Line_Attribs_Ext_Tbl  := p_Line_Attribs_Ext_Tbl ;
2179 	l_Qte_Line_Dtl_tbl      := p_Qte_Line_Dtl_tbl     ;
2180         l_control_rec           := p_control_rec          ;
2181         l_update_header_flag    := p_update_header_flag   ;
2182         l_Quote_Party_Tbl       := P_Quote_Party_Tbl      ;
2183         l_Sales_Credit_Tbl      := P_Sales_Credit_Tbl     ;
2184 
2185 
2186       --  call user hooks
2187       -- customer pre processing
2188 
2189         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
2190           ASO_QUOTE_CUHK.Create_Quote_Line_PRE(
2191     	  P_Qte_Line_Rec        => l_qte_line_rec      ,
2192     	  P_Control_Rec         => l_control_rec       ,
2193     	  P_Qte_Line_Dtl_Tbl    => l_qte_line_dtl_tbl  ,
2194     	  P_Line_Attribs_Ext_Tbl =>l_line_attribs_ext_tbl,
2195           P_Payment_Tbl         => l_payment_tbl,
2196     	  P_Price_Adj_Tbl       => l_price_adj_tbl,
2197     	  P_Price_Attributes_Tbl =>l_price_attributes_tbl,
2198     	  P_Price_Adj_Attr_Tbl  => l_price_adj_attr_tbl,
2199           P_Shipment_Tbl        => l_shipment_tbl      ,
2200     	  P_Tax_Detail_Tbl      => l_tax_detail_tbl    ,
2201     	  P_Freight_Charge_Tbl  => l_freight_charge_tbl,
2202           P_Sales_Credit_Tbl    => l_Sales_Credit_Tbl  ,
2203           P_Quote_Party_Tbl     => l_Quote_Party_Tbl,
2204     	  P_Update_Header_Flag  => l_update_header_flag,
2205     	  X_Return_Status       => x_return_status ,
2206     	  X_Msg_Count           => x_msg_count     ,
2207           X_Msg_Data            => x_msg_data
2208           );
2209 
2210           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2211              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2212 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2213 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Create_Quote_Line_PRE', FALSE);
2214 		  FND_MSG_PUB.ADD;
2215              END IF;
2216                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2217                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2218                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2219                     RAISE FND_API.G_EXC_ERROR;
2220                  END IF;
2221           END IF;
2222       END IF; -- customer hook
2223 
2224 
2225       -- vertical hook
2226         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
2227           ASO_QUOTE_VUHK.Create_Quote_Line_PRE(
2228     	  P_Qte_Line_Rec        => l_qte_line_rec      ,
2229     	  P_Control_Rec         => l_control_rec       ,
2230     	  P_Qte_Line_Dtl_Tbl    => l_qte_line_dtl_tbl  ,
2231     	  P_Line_Attribs_Ext_Tbl =>l_line_attribs_ext_tbl,
2232           P_Payment_Tbl         => l_payment_tbl,
2233     	  P_Price_Adj_Tbl       => l_price_adj_tbl,
2234     	  P_Price_Attributes_Tbl =>l_price_attributes_tbl,
2235     	  P_Price_Adj_Attr_Tbl  => l_price_adj_attr_tbl,
2236           P_Shipment_Tbl        => l_shipment_tbl      ,
2237     	  P_Tax_Detail_Tbl      => l_tax_detail_tbl    ,
2238     	  P_Freight_Charge_Tbl  => l_freight_charge_tbl,
2239           P_Sales_Credit_Tbl    => l_Sales_Credit_Tbl  ,
2240           P_Quote_Party_Tbl     => l_Quote_Party_Tbl,
2241     	  P_Update_Header_Flag  => l_update_header_flag,
2242     	  X_Return_Status       => x_return_status ,
2243     	  X_Msg_Count           => x_msg_count     ,
2244           X_Msg_Data            => x_msg_data
2245           );
2246 
2247           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2248              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2249 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2250 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Create_Quote_Line_PRE', FALSE);
2251 		  FND_MSG_PUB.ADD;
2252              END IF;
2253                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2254                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2255                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2256                     RAISE FND_API.G_EXC_ERROR;
2257                  END IF;
2258           END IF;
2259       END IF; -- vertical hook
2260 
2261 
2262 
2263 
2264       -- Convert the values to ids
2265       Convert_Line_Values_To_Ids (
2266 	    p_qte_line_rec	=> l_qte_line_rec,
2267 	    x_qte_line_rec	=> l_qte_line_rec_out);
2268 
2269 	    l_qte_line_rec := l_qte_line_rec_out;
2270 
2271 
2272 /*      FOR i IN 1..p_shipment_tbl.count LOOP
2273         Convert_Shipment_Values_To_Ids (
2274 	    p_shipment_rec	=> p_shipment_tbl(i),
2275 	    x_shipment_rec	=> l_shipment_tbl(i));
2276       END LOOP;
2277 */
2278 
2279      -- Call Private API
2280   ASO_QUOTE_LINES_PVT.Create_Quote_Lines(
2281     P_Api_Version_Number  => 1.0,
2282     P_Init_Msg_List       => p_init_msg_list,
2283     P_Commit              => p_commit,
2284  --   P_Validation_Level    => ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM,
2285     P_Validation_Level    => FND_API.G_VALID_LEVEL_FULL,
2286     p_qte_header_rec      => p_qte_header_rec,
2287     P_Qte_Line_Rec        => l_qte_line_rec,
2288     P_Control_REC         => l_control_rec   ,
2289     P_Payment_Tbl         => l_payment_tbl   ,
2290     P_Price_Adj_Tbl       => l_price_adj_tbl ,
2291     P_Qte_Line_Dtl_Tbl    => l_Qte_Line_Dtl_Tbl,
2292     P_Shipment_Tbl        => l_Shipment_Tbl ,
2293     P_Tax_Detail_Tbl      => l_Tax_Detail_Tbl ,
2294     P_Freight_Charge_Tbl  => l_Freight_Charge_Tbl,
2295     P_Price_Attributes_Tbl => l_Price_Attributes_Tbl,
2296     P_Price_Adj_Attr_Tbl    =>l_Price_Adj_Attr_Tbl,
2297     P_Line_Attribs_Ext_Tbl  =>l_Line_Attribs_Ext_Tbl,
2298     P_Sales_Credit_Tbl    => l_Sales_Credit_Tbl  ,
2299     P_Quote_Party_Tbl     => l_Quote_Party_Tbl,
2300     P_Update_Header_Flag    =>l_Update_Header_Flag ,
2301     X_qte_line_rec         => X_qte_line_rec,
2302     X_payment_tbl	   => x_payment_tbl,
2303     X_Price_Adj_Tbl        => x_price_adj_tbl,
2304     X_Qte_Line_Dtl_Tbl     => x_qte_line_dtl_tbl,
2305     X_Shipment_Tbl         => x_shipment_tbl,
2306     X_Tax_Detail_Tbl       => x_tax_detail_tbl,
2307     X_Freight_Charge_Tbl   => x_freight_charge_tbl,
2308     X_Price_Attributes_Tbl => x_price_attributes_tbl,
2309     X_Price_Adj_Attr_Tbl    => x_Price_Adj_Attr_Tbl,
2310     X_Line_Attribs_Ext_Tbl  => x_Line_Attribs_Ext_Tbl,
2311     X_Sales_Credit_Tbl      => X_Sales_Credit_Tbl,
2312     X_Quote_Party_Tbl      => X_Quote_Party_Tbl,
2313     X_Return_Status        => x_return_status,
2314     X_Msg_Count            => x_msg_count,
2315     X_Msg_Data             => x_msg_data
2316     );
2317 
2318 
2319       -- Check return status from the above procedure call
2320       IF x_return_status = FND_API.G_RET_STS_ERROR then
2321           raise FND_API.G_EXC_ERROR;
2322       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2323           raise FND_API.G_EXC_UNEXPECTED_ERROR;
2324       END IF;
2325  my_message := fnd_msg_pub.get(p_encoded => FND_API.g_false);
2326         while (my_message is not null) loop
2327             my_message := fnd_msg_pub.get(p_encoded => FND_API.g_false);
2328         end loop;
2329 
2330       --
2331       -- End of API body.
2332       --
2333 
2334 
2335 
2336        --  call user hooks
2337       -- customer post processing
2338 
2339         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
2340           ASO_QUOTE_CUHK.Create_Quote_Line_POST(
2341     	  P_Qte_Line_Rec        => x_qte_line_rec      ,
2342     	  P_Control_Rec         => l_control_rec       ,
2343     	  P_Qte_Line_Dtl_Tbl    => x_qte_line_dtl_tbl  ,
2344     	  P_Line_Attribs_Ext_Tbl =>x_line_attribs_ext_tbl,
2345           P_Payment_Tbl         => x_payment_tbl,
2346     	  P_Price_Adj_Tbl       => x_price_adj_tbl,
2347     	  P_Price_Attributes_Tbl =>x_price_attributes_tbl,
2348     	  P_Price_Adj_Attr_Tbl  => x_price_adj_attr_tbl,
2349           P_Shipment_Tbl        => x_shipment_tbl      ,
2350     	  P_Tax_Detail_Tbl      => x_tax_detail_tbl    ,
2351     	  P_Freight_Charge_Tbl  => x_freight_charge_tbl,
2352            P_Sales_Credit_Tbl    => x_Sales_Credit_Tbl  ,
2353           P_Quote_Party_Tbl     => x_Quote_Party_Tbl,
2354     	  P_Update_Header_Flag  => l_update_header_flag,
2355     	  X_Return_Status       => x_return_status ,
2356     	  X_Msg_Count           => x_msg_count     ,
2357           X_Msg_Data            => x_msg_data
2358           );
2359 
2360           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2361              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2362 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2363 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Create_Quote_Line_POST', FALSE);
2364 		  FND_MSG_PUB.ADD;
2365              END IF;
2366                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2367                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2368                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2369                     RAISE FND_API.G_EXC_ERROR;
2370                  END IF;
2371           END IF;
2372       END IF; -- customer hook
2373 
2374 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
2375       aso_debug_pub.add('aso_quote_vuhk: before if create quote line post (1) '||x_return_status,1, 'N');
2376 	 END IF;
2377 
2378       -- vertical hook
2379         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
2380 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
2381          aso_debug_pub.add('aso_quote_vuhk: inside if create quote line post (1)'||x_return_status,1, 'N');
2382 	    END IF;
2383           ASO_QUOTE_VUHK.Create_Quote_Line_POST(
2384     	  P_Qte_Line_Rec        => x_qte_line_rec      ,
2385     	  P_Control_Rec         => l_control_rec       ,
2386     	  P_Qte_Line_Dtl_Tbl    => x_qte_line_dtl_tbl  ,
2387     	  P_Line_Attribs_Ext_Tbl =>x_line_attribs_ext_tbl,
2388           P_Payment_Tbl         => x_payment_tbl,
2389     	  P_Price_Adj_Tbl       => x_price_adj_tbl,
2390     	  P_Price_Attributes_Tbl =>x_price_attributes_tbl,
2391     	  P_Price_Adj_Attr_Tbl  => x_price_adj_attr_tbl,
2392           P_Shipment_Tbl        => x_shipment_tbl      ,
2393     	  P_Tax_Detail_Tbl      => x_tax_detail_tbl    ,
2394     	  P_Freight_Charge_Tbl  => x_freight_charge_tbl,
2395            P_Sales_Credit_Tbl    => x_Sales_Credit_Tbl  ,
2396           P_Quote_Party_Tbl     => x_Quote_Party_Tbl,
2397     	  P_Update_Header_Flag  => l_update_header_flag,
2398     	  X_Return_Status       => x_return_status ,
2399     	  X_Msg_Count           => x_msg_count     ,
2400           X_Msg_Data            => x_msg_data
2401           );
2402 
2403 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
2404          aso_debug_pub.add('aso_quote_vuhk: after if create quote line post (1)'||x_return_status,1, 'N');
2405 	    END IF;
2406 
2407 
2408           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2409              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2410 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2411 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Create_Quote_Line_POST', FALSE);
2412 		  FND_MSG_PUB.ADD;
2413              END IF;
2414                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2415                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2416                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2417                     RAISE FND_API.G_EXC_ERROR;
2418                  END IF;
2419           END IF;
2420       END IF; -- vertical hook
2421 
2422 
2423 
2424 
2425       -- Standard check for p_commit
2426       IF FND_API.to_Boolean( p_commit )
2427       THEN
2428           COMMIT WORK;
2429       END IF;
2430 
2431 
2432 
2433 
2434       -- Standard call to get message count and if count is 1, get message info.
2435       FND_MSG_PUB.Count_And_Get
2436       (  p_count          =>   x_msg_count,
2437          p_data           =>   x_msg_data
2438       );
2439 
2440       EXCEPTION
2441           WHEN FND_API.G_EXC_ERROR THEN
2442               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
2443                    P_API_NAME => L_API_NAME
2444                   ,P_PKG_NAME => G_PKG_NAME
2445                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
2446                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
2447                   ,P_SQLCODE => SQLCODE
2448                   ,P_SQLERRM => SQLERRM
2449                   ,X_MSG_COUNT => X_MSG_COUNT
2450                   ,X_MSG_DATA => X_MSG_DATA
2451                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2452 
2453           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2454               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
2455                    P_API_NAME => L_API_NAME
2456                   ,P_PKG_NAME => G_PKG_NAME
2457                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2458                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
2459                   ,P_SQLCODE => SQLCODE
2460                   ,P_SQLERRM => SQLERRM
2461                   ,X_MSG_COUNT => X_MSG_COUNT
2462                   ,X_MSG_DATA => X_MSG_DATA
2463                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2464 
2465           WHEN OTHERS THEN
2466               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
2467                    P_API_NAME => L_API_NAME
2468                   ,P_PKG_NAME => G_PKG_NAME
2469                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
2470                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
2471                   ,P_SQLCODE => SQLCODE
2472                   ,P_SQLERRM => SQLERRM
2473                   ,X_MSG_COUNT => X_MSG_COUNT
2474                   ,X_MSG_DATA => X_MSG_DATA
2475                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2476 END;
2477 
2478 
2479 --   *******************************************************
2480 --    Start of Comments
2481 --   *******************************************************
2482 --   API Name:  Update_Quote_Line
2483 --   Type    :  Public
2484 --   Pre-Req :
2485 --   Parameters:
2486 --   IN
2487 
2488 PROCEDURE Update_Quote_Line(
2489     P_Api_Version_Number  IN   NUMBER,
2490     P_Init_Msg_List       IN   VARCHAR2     := FND_API.G_FALSE,
2491     P_Commit              IN   VARCHAR2     := FND_API.G_FALSE,
2492     P_Validation_Level 	IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
2493     P_Qte_Header_Rec           IN    Qte_Header_Rec_Type  := G_MISS_Qte_Header_Rec,
2494     P_Qte_Line_Rec        IN    Qte_Line_Rec_Type  := G_MISS_qte_line_REC,
2495     P_Control_Rec         IN    Control_rec_Type   := G_MISS_control_REC,
2496     P_Qte_Line_Dtl_TBL   IN    Qte_Line_Dtl_tbl_Type:= G_MISS_qte_line_dtl_TBL,
2497     P_Line_Attribs_Ext_Tbl  IN   Line_Attribs_Ext_Tbl_type
2498                                         := G_Miss_Line_Attribs_Ext_Tbl,
2499     P_Payment_Tbl           IN    Payment_Tbl_Type   := G_MISS_Payment_TBL,
2500     P_Price_Adj_Tbl         IN    Price_Adj_Tbl_Type := G_MISS_Price_Adj_TBL,
2501     P_Price_Attributes_Tbl  IN   Price_Attributes_Tbl_Type := G_MISS_Price_attributes_TBL,
2502     P_Price_Adj_Attr_Tbl    IN   Price_Adj_Attr_Tbl_Type
2503 					:= G_Miss_PRICE_ADJ_ATTR_Tbl,
2504     P_Shipment_Tbl          IN    Shipment_Tbl_Type   := G_MISS_shipment_TBL,
2505     P_Tax_Detail_Tbl        IN    Tax_Detail_Tbl_Type:= G_MISS_tax_detail_TBL,
2506     P_Freight_Charge_Tbl    IN   Freight_Charge_Tbl_Type   := G_MISS_freight_charge_TBL,
2507     P_Sales_Credit_Tbl        IN   Sales_Credit_Tbl_Type
2508                                         := G_MISS_Sales_Credit_Tbl,
2509     P_Quote_Party_Tbl         IN   Quote_Party_Tbl_Type
2510                                         := G_MISS_Quote_Party_Tbl,
2511     P_Update_Header_Flag    IN   VARCHAR2   := FND_API.G_TRUE,
2512     X_Qte_Line_Rec          OUT NOCOPY /* file.sql.39 change */  Qte_Line_Rec_Type,
2513     X_Qte_Line_Dtl_TBL      OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_TBL_Type,
2514     X_Line_Attribs_Ext_Tbl  OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_type,
2515     X_Payment_Tbl           OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
2516     X_Price_Adj_Tbl         OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
2517     X_Price_Attributes_Tbl  OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type ,
2518     X_Price_Adj_Attr_Tbl    OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
2519     X_Shipment_Tbl          OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
2520     X_Tax_Detail_Tbl        OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
2521     X_Freight_Charge_Tbl    OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type ,
2522     X_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
2523     X_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
2524     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
2525     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
2526     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
2527     )
2528 IS
2529 
2530      l_api_name                CONSTANT VARCHAR2(30) := 'UPDATE_QUOTE_LINE';
2531     l_api_version_number      CONSTANT NUMBER   := 1.0;
2532 
2533 
2534         l_Qte_Line_Rec          Qte_Line_Rec_Type  ;
2535         l_Qte_Line_Rec_out      Qte_Line_Rec_Type  ;
2536         l_Payment_Tbl           Payment_Tbl_Type ;
2537         l_Price_Adj_Tbl         Price_Adj_Tbl_Type;
2538 	l_Qte_Line_Dtl_rec      Qte_Line_Dtl_rec_Type ;
2539 	l_Shipment_Tbl          Shipment_Tbl_Type;
2540 	l_Tax_Detail_Tbl        Tax_Detail_Tbl_Type;
2541 	l_Freight_Charge_Tbl    Freight_Charge_Tbl_Type;
2542 	l_Line_Rltship_Tbl      Line_Rltship_Tbl_Type;
2543 	l_Price_Attributes_Tbl  Price_Attributes_Tbl_Type;
2544 	l_Price_Adj_rltship_Tbl Price_Adj_Rltship_Tbl_Type;
2545 	l_Price_Adj_Attr_Tbl    Price_Adj_Attr_Tbl_Type;
2546 	l_Line_Attribs_Ext_Tbl  Line_Attribs_Ext_Tbl_type;
2547 	l_Qte_Line_Dtl_tbl      Qte_Line_Dtl_tbl_Type;
2548         l_Control_Rec           Control_rec_Type;
2549         l_update_header_flag    VARCHAR2(10);
2550           l_Sales_Credit_Tbl      Sales_Credit_Tbl_Type ;
2551         l_Quote_Party_Tbl       Quote_Party_Tbl_Type;
2552 
2553 
2554 BEGIN
2555       -- Standard Start of API savepoint
2556       SAVEPOINT UPDATE_QUOTE_LINE_PUB;
2557 
2558 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
2559 
2560       -- Standard call to check for call compatibility.
2561       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2562                          	             p_api_version_number,
2563                                            l_api_name,
2564                                            G_PKG_NAME)
2565       THEN
2566           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2567       END IF;
2568 
2569 
2570       -- Initialize message list if p_init_msg_list is set to TRUE.
2571       IF FND_API.to_Boolean( p_init_msg_list )
2572       THEN
2573           FND_MSG_PUB.initialize;
2574       END IF;
2575 
2576 
2577 
2578 
2579       -- Initialize API return status to SUCCESS
2580       x_return_status := FND_API.G_RET_STS_SUCCESS;
2581 
2582       --
2583       -- API body
2584       --
2585 
2586              -- mapping to local variables
2587 
2588         l_Qte_Line_Rec          := p_Qte_Line_Rec  ;
2589         l_Payment_Tbl           := p_Payment_Tbl   ;
2590         l_Price_Adj_Tbl         := p_Price_Adj_Tbl ;
2591 	l_Shipment_Tbl          := p_Shipment_Tbl  ;
2592 	l_Tax_Detail_Tbl        := p_Tax_Detail_Tbl;
2593 	l_Freight_Charge_Tbl    := p_Freight_Charge_Tbl   ;
2594 --	l_Line_Rltship_Tbl      := p_Line_Rltship_Tbl     ;
2595 	l_Price_Attributes_Tbl  := p_Price_Attributes_Tbl ;
2596 --	l_Price_Adj_rltship_Tbl := p_Price_Adj_Rltship_Tbl;
2597 	l_Price_Adj_Attr_Tbl    := p_Price_Adj_Attr_Tbl   ;
2598 	l_Line_Attribs_Ext_Tbl  := p_Line_Attribs_Ext_Tbl ;
2599 	l_Qte_Line_Dtl_tbl      := p_Qte_Line_Dtl_tbl     ;
2600         l_control_rec           := p_control_rec          ;
2601         l_update_header_flag    := p_update_header_flag   ;
2602         l_Quote_Party_Tbl       := P_Quote_Party_Tbl      ;
2603         l_Sales_Credit_Tbl      := P_Sales_Credit_Tbl     ;
2604 
2605 
2606 
2607 
2608 
2609       --  call user hooks
2610       -- customer pre processing
2611 
2612         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
2613           ASO_QUOTE_CUHK.Update_Quote_Line_PRE(
2614     	  P_Qte_Line_Rec        => l_qte_line_rec      ,
2615     	  P_Control_Rec         => l_control_rec       ,
2616     	  P_Qte_Line_Dtl_Tbl    => l_qte_line_dtl_tbl  ,
2617     	  P_Line_Attribs_Ext_Tbl =>l_line_attribs_ext_tbl,
2618           P_Payment_Tbl         => l_payment_tbl,
2619     	  P_Price_Adj_Tbl       => l_price_adj_tbl,
2620     	  P_Price_Attributes_Tbl =>l_price_attributes_tbl,
2621     	  P_Price_Adj_Attr_Tbl  => l_price_adj_attr_tbl,
2622           P_Shipment_Tbl        => l_shipment_tbl      ,
2623     	  P_Tax_Detail_Tbl      => l_tax_detail_tbl    ,
2624     	  P_Freight_Charge_Tbl  => l_freight_charge_tbl,
2625            P_Sales_Credit_Tbl    => l_Sales_Credit_Tbl  ,
2626           P_Quote_Party_Tbl     => l_Quote_Party_Tbl,
2627     	  P_Update_Header_Flag  => l_update_header_flag,
2628     	  X_Return_Status       => x_return_status ,
2629     	  X_Msg_Count           => x_msg_count     ,
2630           X_Msg_Data            => x_msg_data
2631           );
2632 
2633           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2634              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2635 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2636 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Update_Quote_Line_PRE', FALSE);
2637 		  FND_MSG_PUB.ADD;
2638              END IF;
2639                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2640                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2641                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2642                     RAISE FND_API.G_EXC_ERROR;
2643                  END IF;
2644           END IF;
2645       END IF; -- customer hook
2646 
2647 
2648       -- vertical hook
2649         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
2650           ASO_QUOTE_VUHK.Update_Quote_Line_PRE(
2651     	  P_Qte_Line_Rec        => l_qte_line_rec      ,
2652     	  P_Control_Rec         => l_control_rec       ,
2653     	  P_Qte_Line_Dtl_Tbl    => l_qte_line_dtl_tbl  ,
2654     	  P_Line_Attribs_Ext_Tbl =>l_line_attribs_ext_tbl,
2655           P_Payment_Tbl         => l_payment_tbl,
2656     	  P_Price_Adj_Tbl       => l_price_adj_tbl,
2657     	  P_Price_Attributes_Tbl =>l_price_attributes_tbl,
2658     	  P_Price_Adj_Attr_Tbl  => l_price_adj_attr_tbl,
2659           P_Shipment_Tbl        => l_shipment_tbl      ,
2660     	  P_Tax_Detail_Tbl      => l_tax_detail_tbl    ,
2661     	  P_Freight_Charge_Tbl  => l_freight_charge_tbl,
2662            P_Sales_Credit_Tbl    => l_Sales_Credit_Tbl  ,
2663           P_Quote_Party_Tbl     => l_Quote_Party_Tbl,
2664     	  P_Update_Header_Flag  => l_update_header_flag,
2665     	  X_Return_Status       => x_return_status ,
2666     	  X_Msg_Count           => x_msg_count     ,
2667           X_Msg_Data            => x_msg_data
2668           );
2669 
2670           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2671              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2672 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2673 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Update_Quote_Line_PRE', FALSE);
2674 		  FND_MSG_PUB.ADD;
2675              END IF;
2676                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2677                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2678                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2679                     RAISE FND_API.G_EXC_ERROR;
2680                  END IF;
2681           END IF;
2682       END IF; -- vertical hook
2683 
2684 
2685 
2686 
2687 
2688 
2689 
2690 
2691       -- Convert the values to ids
2692       Convert_Line_Values_To_Ids (
2693 	    p_qte_line_rec	=> l_qte_line_rec,
2694 	    x_qte_line_rec	=> l_qte_line_rec_out);
2695 
2696 	    l_qte_line_rec := l_qte_line_rec_out;
2697 
2698 /*      FOR i IN 1..p_shipment_tbl.count LOOP
2699         Convert_Shipment_Values_To_Ids (
2700 	    p_shipment_rec	=> p_shipment_tbl(i),
2701 	    x_shipment_rec	=> l_shipment_tbl(i));
2702       END LOOP;
2703 */
2704 
2705 -- Call Private API
2706   ASO_QUOTE_LINES_PVT.Update_Quote_Line(
2707     P_Api_Version_Number  => 1.0,
2708     P_Init_Msg_List       => p_init_msg_list,
2709     P_Commit              => p_commit,
2710     P_Validation_Level    => p_validation_level,
2711     p_qte_header_rec      => p_qte_header_rec,
2712     P_Qte_Line_Rec        => l_qte_line_rec,
2713     P_Control_REC         => l_control_rec   ,
2714     P_Payment_Tbl         => l_payment_tbl   ,
2715     P_Price_Adj_Tbl       => l_price_adj_tbl ,
2716     P_Qte_Line_Dtl_TBL    => l_Qte_Line_Dtl_TBL ,
2717     P_Shipment_Tbl        => l_Shipment_Tbl ,
2718     P_Tax_Detail_Tbl      => l_Tax_Detail_Tbl ,
2719     P_Freight_Charge_Tbl  => l_Freight_Charge_Tbl,
2720     P_Price_Attributes_Tbl => l_Price_Attributes_Tbl,
2721     P_Price_Adj_Attr_Tbl    =>l_Price_Adj_Attr_Tbl,
2722     P_Line_Attribs_Ext_Tbl  =>l_Line_Attribs_Ext_Tbl,
2723     P_Sales_Credit_Tbl    => l_Sales_Credit_Tbl  ,
2724     P_Quote_Party_Tbl     => l_Quote_Party_Tbl,
2725     P_Update_Header_Flag    =>l_Update_Header_Flag ,
2726     X_qte_line_rec         => X_qte_line_rec,
2727     X_payment_tbl	   => x_payment_tbl,
2728     X_Price_Adj_Tbl        => x_price_adj_tbl,
2729     X_Qte_Line_Dtl_tbl     => x_qte_line_dtl_tbl,
2730     X_Shipment_Tbl         => x_shipment_tbl,
2731     X_Tax_Detail_Tbl       => x_tax_detail_tbl,
2732     X_Freight_Charge_Tbl   => x_freight_charge_tbl,
2733     X_Price_Attributes_Tbl => x_price_attributes_tbl,
2734     X_Price_Adj_Attr_Tbl    =>x_Price_Adj_Attr_Tbl,
2735     X_Line_Attribs_Ext_Tbl  =>x_Line_Attribs_Ext_Tbl,
2736     X_Sales_Credit_Tbl      => X_Sales_Credit_Tbl,
2737     X_Quote_Party_Tbl       => X_Quote_Party_Tbl,
2738     X_Return_Status        => x_return_status,
2739     X_Msg_Count            => x_msg_count,
2740     X_Msg_Data             => x_msg_data
2741     );
2742 
2743 
2744 
2745       -- Check return status from the above procedure call
2746       IF x_return_status = FND_API.G_RET_STS_ERROR then
2747           raise FND_API.G_EXC_ERROR;
2748       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
2749           raise FND_API.G_EXC_UNEXPECTED_ERROR;
2750       END IF;
2751 
2752       --
2753       -- End of API body.
2754       --
2755 
2756 
2757 
2758        --  call user hooks
2759       -- customer post processing
2760 
2761         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
2762           ASO_QUOTE_CUHK.Update_Quote_Line_POST(
2763     	  P_Qte_Line_Rec        => x_qte_line_rec      ,
2764     	  P_Control_Rec         => l_control_rec       ,
2765     	  P_Qte_Line_Dtl_Tbl    => x_qte_line_dtl_tbl  ,
2766     	  P_Line_Attribs_Ext_Tbl =>x_line_attribs_ext_tbl,
2767           P_Payment_Tbl         => x_payment_tbl,
2768     	  P_Price_Adj_Tbl       => x_price_adj_tbl,
2769     	  P_Price_Attributes_Tbl =>x_price_attributes_tbl,
2770     	  P_Price_Adj_Attr_Tbl  => x_price_adj_attr_tbl,
2771           P_Shipment_Tbl        => x_shipment_tbl      ,
2772     	  P_Tax_Detail_Tbl      => x_tax_detail_tbl    ,
2773     	  P_Freight_Charge_Tbl  => x_freight_charge_tbl,
2774            P_Sales_Credit_Tbl    => x_Sales_Credit_Tbl  ,
2775           P_Quote_Party_Tbl     => x_Quote_Party_Tbl,
2776     	  P_Update_Header_Flag  => l_update_header_flag,
2777     	  X_Return_Status       => x_return_status ,
2778     	  X_Msg_Count           => x_msg_count     ,
2779           X_Msg_Data            => x_msg_data
2780           );
2781 
2782           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2783              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2784 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2785 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Update_Quote_Line_POST', FALSE);
2786 		  FND_MSG_PUB.ADD;
2787              END IF;
2788                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2789                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2790                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2791                     RAISE FND_API.G_EXC_ERROR;
2792                  END IF;
2793           END IF;
2794       END IF; -- customer hook
2795 
2796          IF aso_debug_pub.g_debug_flag = 'Y' THEN
2797          aso_debug_pub.add('aso_quote_vuhk: before if update quote line post (1)'||x_return_status,1, 'N');
2798 	    END IF;
2799 
2800       -- vertical hook
2801         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
2802 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
2803          aso_debug_pub.add('aso_quote_vuhk: inside if update quote line post (1)'||x_return_status,1, 'N');
2804 	    END IF;
2805           ASO_QUOTE_VUHK.Update_Quote_Line_POST(
2806     	  P_Qte_Line_Rec        => x_qte_line_rec      ,
2807     	  P_Control_Rec         => l_control_rec       ,
2808     	  P_Qte_Line_Dtl_Tbl    => x_qte_line_dtl_tbl  ,
2809     	  P_Line_Attribs_Ext_Tbl =>x_line_attribs_ext_tbl,
2810           P_Payment_Tbl         => x_payment_tbl,
2811     	  P_Price_Adj_Tbl       => x_price_adj_tbl,
2812     	  P_Price_Attributes_Tbl =>x_price_attributes_tbl,
2813     	  P_Price_Adj_Attr_Tbl  => x_price_adj_attr_tbl,
2814           P_Shipment_Tbl        => x_shipment_tbl      ,
2815     	  P_Tax_Detail_Tbl      => x_tax_detail_tbl    ,
2816     	  P_Freight_Charge_Tbl  => x_freight_charge_tbl,
2817            P_Sales_Credit_Tbl    => x_Sales_Credit_Tbl  ,
2818           P_Quote_Party_Tbl     => x_Quote_Party_Tbl,
2819     	  P_Update_Header_Flag  => l_update_header_flag,
2820     	  X_Return_Status       => x_return_status ,
2821     	  X_Msg_Count           => x_msg_count     ,
2822           X_Msg_Data            => x_msg_data
2823           );
2824 
2825          IF aso_debug_pub.g_debug_flag = 'Y' THEN
2826 	    aso_debug_pub.add('aso_quote_vuhk: after if update quote line post (1)'||x_return_status,1, 'N');
2827 	    END IF;
2828 
2829           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2830              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2831 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2832 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Update_Quote_Line_POST', FALSE);
2833 		  FND_MSG_PUB.ADD;
2834              END IF;
2835                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2836                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2837                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2838                     RAISE FND_API.G_EXC_ERROR;
2839                  END IF;
2840           END IF;
2841       END IF; -- vertical hook
2842 
2843 
2844 
2845 
2846 
2847       -- Standard check for p_commit
2848       IF FND_API.to_Boolean( p_commit )
2849       THEN
2850           COMMIT WORK;
2851       END IF;
2852 
2853 
2854 
2855 
2856       -- Standard call to get message count and if count is 1, get message info.
2857       FND_MSG_PUB.Count_And_Get
2858       (  p_count          =>   x_msg_count,
2859          p_data           =>   x_msg_data
2860       );
2861 
2862       EXCEPTION
2863           WHEN FND_API.G_EXC_ERROR THEN
2864               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
2865                    P_API_NAME => L_API_NAME
2866                   ,P_PKG_NAME => G_PKG_NAME
2867                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
2868                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
2869                   ,P_SQLCODE => SQLCODE
2870                   ,P_SQLERRM => SQLERRM
2871                   ,X_MSG_COUNT => X_MSG_COUNT
2872                   ,X_MSG_DATA => X_MSG_DATA
2873                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2874 
2875           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2876               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
2877                    P_API_NAME => L_API_NAME
2878                   ,P_PKG_NAME => G_PKG_NAME
2879                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2880                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
2881                   ,P_SQLCODE => SQLCODE
2882                   ,P_SQLERRM => SQLERRM
2883                   ,X_MSG_COUNT => X_MSG_COUNT
2884                   ,X_MSG_DATA => X_MSG_DATA
2885                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2886 
2887           WHEN OTHERS THEN
2888               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
2889                    P_API_NAME => L_API_NAME
2890                   ,P_PKG_NAME => G_PKG_NAME
2891                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
2892                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
2893                   ,P_SQLCODE => SQLCODE
2894                   ,P_SQLERRM => SQLERRM
2895                   ,X_MSG_COUNT => X_MSG_COUNT
2896                   ,X_MSG_DATA => X_MSG_DATA
2897                   ,X_RETURN_STATUS => X_RETURN_STATUS);
2898 END;
2899 
2900 
2901 PROCEDURE Delete_Quote_Line(
2902     P_Api_Version_Number         IN   NUMBER,
2903     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
2904     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
2905     P_qte_line_Rec     IN    qte_line_Rec_Type,
2906     P_Control_REC      IN    Control_Rec_Type := G_MISS_Control_Rec,
2907     P_Update_Header_Flag         IN   VARCHAR2,
2908     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
2909     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
2910     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
2911     )
2912 IS
2913     l_api_name                CONSTANT VARCHAR2(30) := 'DELETE_QUOTE_LINE';
2914     l_api_version_number      CONSTANT NUMBER   := 1.0;
2915 
2916       l_Qte_Line_Rec          Qte_Line_Rec_Type  ;
2917       l_Control_Rec           Control_rec_Type;
2918 
2919 BEGIN
2920       -- Standard Start of API savepoint
2921       SAVEPOINT DELETE_QUOTE_LINE_PUB;
2922 
2923 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
2924 
2925       -- Standard call to check for call compatibility.
2926       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2927                          	             p_api_version_number,
2928                                            l_api_name,
2929                                            G_PKG_NAME)
2930       THEN
2931           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2932       END IF;
2933 
2934 
2935       -- Initialize message list if p_init_msg_list is set to TRUE.
2936       IF FND_API.to_Boolean( p_init_msg_list )
2937       THEN
2938           FND_MSG_PUB.initialize;
2939       END IF;
2940 
2941 
2942 
2943 
2944       -- Initialize API return status to SUCCESS
2945       x_return_status := FND_API.G_RET_STS_SUCCESS;
2946 
2947         l_Qte_Line_Rec   := p_qte_line_rec;
2948         l_control_rec    := p_control_rec ;
2949 
2950       --
2951       -- API body
2952       --
2953 
2954 
2955       --  call user hooks
2956       -- customer pre processing
2957 
2958         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
2959           ASO_QUOTE_CUHK.Delete_Quote_Line_PRE(
2960   	  P_qte_line_Rec     => l_qte_line_rec,
2961   	  P_Control_Rec      => l_control_rec,
2962   	  X_Return_Status    => x_return_status,
2963   	  X_Msg_Count        => x_msg_count ,
2964   	  X_Msg_Data         => x_msg_data
2965    	 );
2966 
2967           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2968              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2969 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2970 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Delete_Quote_Line_PRE', FALSE);
2971 		  FND_MSG_PUB.ADD;
2972              END IF;
2973                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2974                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2975                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2976                     RAISE FND_API.G_EXC_ERROR;
2977                  END IF;
2978           END IF;
2979       END IF; -- customer hook
2980 
2981 
2982       -- vertical hook
2983         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
2984           ASO_QUOTE_VUHK.Delete_Quote_Line_PRE(
2985   	  P_qte_line_Rec     => l_qte_line_rec,
2986   	  P_Control_Rec      => l_control_rec,
2987   	  X_Return_Status    => x_return_status,
2988   	  X_Msg_Count        => x_msg_count ,
2989   	  X_Msg_Data         => x_msg_data
2990    	 );
2991           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2992              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2993 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
2994 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Delete_Quote_Line_PRE', FALSE);
2995 		  FND_MSG_PUB.ADD;
2996              END IF;
2997                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2998                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2999                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3000                     RAISE FND_API.G_EXC_ERROR;
3001                  END IF;
3002           END IF;
3003       END IF; -- vertical hook
3004 
3005 
3006 
3007 
3008      ASO_QUOTE_LINES_PVT.Delete_quote_line(
3009 		P_Api_Version_Number	=> 1.0,
3010 		P_Init_Msg_List		=> FND_API.G_FALSE,
3011 		P_Commit		=> p_commit,
3012                 P_qte_line_Rec          => l_qte_line_Rec,
3013     		P_Control_Rec           => l_Control_Rec  ,
3014                 P_Update_Header_Flag    => P_Update_Header_Flag ,
3015 		X_Return_Status         => x_return_status,
3016 		X_Msg_Count             => x_msg_count,
3017 		X_Msg_Data              => x_msg_data );
3018 
3019 
3020 
3021       -- Check return status from the above procedure call
3022       IF x_return_status = FND_API.G_RET_STS_ERROR then
3023           raise FND_API.G_EXC_ERROR;
3024       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
3025           raise FND_API.G_EXC_UNEXPECTED_ERROR;
3026       END IF;
3027 
3028       --
3029       -- End of API body
3030       --
3031 
3032 
3033 
3034       --  call user hooks
3035       -- customer pre processing
3036 
3037         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
3038           ASO_QUOTE_CUHK.Delete_Quote_Line_POST(
3039   	  P_qte_line_Rec     => l_qte_line_rec,
3040   	  P_Control_Rec      => l_control_rec,
3041   	  X_Return_Status    => x_return_status,
3042   	  X_Msg_Count        => x_msg_count ,
3043   	  X_Msg_Data         => x_msg_data
3044    	 );
3045 
3046           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3047              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3048 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3049 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Delete_Quote_Line_POST', FALSE);
3050 		  FND_MSG_PUB.ADD;
3051              END IF;
3052                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3053                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3054                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3055                     RAISE FND_API.G_EXC_ERROR;
3056                  END IF;
3057           END IF;
3058       END IF; -- customer hook
3059 
3060 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3061          aso_debug_pub.add('aso_quote_vuhk: before if delete quote line post (1)'||x_return_status,1, 'N');
3062 	    END IF;
3063 
3064       -- vertical hook
3065         IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
3066 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3067          aso_debug_pub.add('aso_quote_vuhk: inside if delete quote line post (1)'||x_return_status,1, 'N');
3068 	    END IF;
3069           ASO_QUOTE_VUHK.Delete_Quote_Line_POST(
3070   	  P_qte_line_Rec     => l_qte_line_rec,
3071   	  P_Control_Rec      => l_control_rec,
3072   	  X_Return_Status    => x_return_status,
3073   	  X_Msg_Count        => x_msg_count ,
3074   	  X_Msg_Data         => x_msg_data
3075    	 );
3076 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
3077          aso_debug_pub.add('aso_quote_vuhk: after if delete quote line post (1)'||x_return_status,1, 'N');
3078 	    END IF;
3079 
3080 
3081           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3082              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3083 		  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3084 		  FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Delete_Quote_Line_POST', FALSE);
3085 		  FND_MSG_PUB.ADD;
3086              END IF;
3087                  IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3088                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3089                  ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3090                     RAISE FND_API.G_EXC_ERROR;
3091                  END IF;
3092           END IF;
3093       END IF; -- vertical hook
3094 
3095 
3096 
3097 
3098 
3099 
3100       -- Standard check for p_commit
3101       IF FND_API.to_Boolean( p_commit )
3102       THEN
3103           COMMIT WORK;
3104       END IF;
3105 
3106 
3107 
3108 
3109       -- Standard call to get message count and if count is 1, get message info.
3110       FND_MSG_PUB.Count_And_Get
3111       (  p_count          =>   x_msg_count,
3112          p_data           =>   x_msg_data
3113       );
3114 
3115       EXCEPTION
3116           WHEN FND_API.G_EXC_ERROR THEN
3117               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3118                    P_API_NAME => L_API_NAME
3119                   ,P_PKG_NAME => G_PKG_NAME
3120                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
3121                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
3122                   ,P_SQLCODE => SQLCODE
3123                   ,P_SQLERRM => SQLERRM
3124                   ,X_MSG_COUNT => X_MSG_COUNT
3125                   ,X_MSG_DATA => X_MSG_DATA
3126                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3127 
3128           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3129               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3130                    P_API_NAME => L_API_NAME
3131                   ,P_PKG_NAME => G_PKG_NAME
3132                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3133                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
3134                   ,P_SQLCODE => SQLCODE
3135                   ,P_SQLERRM => SQLERRM
3136                   ,X_MSG_COUNT => X_MSG_COUNT
3137                   ,X_MSG_DATA => X_MSG_DATA
3138                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3139 
3140           WHEN OTHERS THEN
3141               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3142                    P_API_NAME => L_API_NAME
3143                   ,P_PKG_NAME => G_PKG_NAME
3144                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
3145                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
3146                   ,P_SQLCODE => SQLCODE
3147                   ,P_SQLERRM => SQLERRM
3148                   ,X_MSG_COUNT => X_MSG_COUNT
3149                   ,X_MSG_DATA => X_MSG_DATA
3150                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3151 
3152 End Delete_quote_line;
3153 
3154 PROCEDURE Quote_Security_Check(
3155     P_Api_Version_Number         IN      NUMBER,
3156     P_Init_Msg_List              IN      VARCHAR2     := FND_API.G_FALSE,
3157     P_User_Id                    IN      NUMBER,
3158     X_Resource_Id                OUT NOCOPY /* file.sql.39 change */  NUMBER,
3159     X_Security_Flag              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
3160     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
3161     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
3162     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
3163 )
3164 IS
3165 
3166 BEGIN
3167 
3168 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
3169     ASO_QUOTE_HEADERS_PVT.Quote_Security_Check(
3170         P_Api_Version_Number         =>     P_Api_Version_Number,
3171         P_Init_Msg_List              =>     P_Init_Msg_List,
3172         P_User_Id                    =>     P_User_Id,
3173         X_Resource_Id                =>     X_Resource_Id,
3174         X_Security_Flag              =>     X_Security_Flag,
3175         X_Return_Status              =>     X_Return_Status,
3176         X_Msg_Count                  =>     X_Msg_Count,
3177         X_Msg_Data                   =>     X_Msg_Data
3178     );
3179 
3180     IF aso_debug_pub.g_debug_flag = 'Y' THEN
3181     aso_debug_pub.add('ASO_QUOTE_PUB: Quote_Security_Check(): End: Resource_Id:   '||X_Resource_Id, 1, 'Y');
3182     aso_debug_pub.add('ASO_QUOTE_PUB: Quote_Security_Check(): End: Security_Flag: '||X_Security_Flag, 1, 'Y');
3183     END IF;
3184 
3185 End Quote_Security_Check;
3186 
3187 
3188 --   *******************************************************
3189 --    Start of Comments
3190 --   *******************************************************
3191 --   API Name:  Submit_Quote
3192 --   Type    :  Public
3193 --   Pre-Req :
3194 --   Parameters:
3195 --   overloaded function includes Qte_Header_Rec to check for last_update_date
3196 --
3197 --   End of Comments
3198 --
3199 PROCEDURE Submit_quote(
3200     P_Api_Version_Number         IN   NUMBER,
3201     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
3202     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
3203     p_control_rec                IN   ASO_QUOTE_PUB.Submit_Control_Rec_Type
3204                                                    := ASO_QUOTE_PUB.G_MISS_Submit_Control_Rec,
3205     P_Qte_Header_Rec             IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
3206     x_order_header_rec           OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Order_Header_Rec_Type,
3207     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
3208     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
3209     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
3210     )
3211 IS
3212     l_api_name                CONSTANT VARCHAR2(30) := 'SUBMIT_QUOTE';
3213     l_api_version_number      CONSTANT NUMBER   := 1.0;
3214     l_control_rec             Submit_Control_Rec_Type := P_control_rec;
3215     l_Qte_Header_Id           NUMBER;
3216 BEGIN
3217 
3218       -- Standard Start of API savepoint
3219       SAVEPOINT SUBMIT_QUOTE_PUB;
3220 
3221 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
3222 
3223       -- Standard call to check for call compatibility.
3224       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
3225                          	             p_api_version_number,
3226                                            l_api_name,
3227                                            G_PKG_NAME)
3228       THEN
3229           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3230       END IF;
3231 
3232       -- Initialize message list if p_init_msg_list is set to TRUE.
3233       IF FND_API.to_Boolean( p_init_msg_list )
3234       THEN
3235           FND_MSG_PUB.initialize;
3236       END IF;
3237 
3238 
3239       -- Initialize API return status to SUCCESS
3240       x_return_status := FND_API.G_RET_STS_SUCCESS;
3241       l_Qte_Header_Id := P_Qte_Header_Rec.Quote_Header_Id;
3242 
3243       --
3244       -- API body
3245       --
3246 
3247 
3248       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
3249        ASO_QUOTE_CUHK.Submit_quote_PRE(
3250           p_control_rec      => l_control_rec,
3251           P_Qte_Header_Id    => l_Qte_Header_Id,
3252           X_Return_Status    => X_Return_Status,
3253           X_Msg_Count        => X_Msg_Count,
3254           X_Msg_Data         => X_Msg_Data    );
3255 
3256        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3257              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3258 		       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3259 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Submit_Quote_PRE', FALSE);
3260 		       FND_MSG_PUB.ADD;
3261              END IF;
3262 
3263              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3264                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3265              ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3266                 RAISE FND_API.G_EXC_ERROR;
3267              END IF;
3268         END IF;
3269 
3270       END IF; -- customer hook
3271 
3272       -- vertical hook
3273       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
3274          ASO_QUOTE_VUHK.Submit_quote_PRE(
3275             p_control_rec        => l_control_rec,
3276             P_Qte_Header_Id      => l_Qte_Header_Id,
3277             X_Return_Status      => X_Return_Status,
3278             X_Msg_Count          => X_Msg_Count,
3279             X_Msg_Data           => X_Msg_Data    );
3280 
3281       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3282              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3283 		       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3284 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Submit_Quote_PRE', FALSE);
3285 		       FND_MSG_PUB.ADD;
3286              END IF;
3287              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3288                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3289              ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3290                 RAISE FND_API.G_EXC_ERROR;
3291              END IF;
3292        END IF;
3293 
3294       END IF;
3295 
3296 ASO_SUBMIT_QUOTE_PVT.Submit_quote(
3297     P_Api_Version_Number       => 1.0,
3298     P_Init_Msg_List            => P_Init_Msg_List,
3299     P_control_rec              => l_control_rec,
3300     P_Qte_Header_Rec           => P_Qte_Header_Rec,
3301     x_order_header_rec         => X_order_header_rec,
3302     X_Return_Status            => X_Return_Status,
3303     X_Msg_Count                => X_Msg_Count,
3304     X_Msg_Data                 => X_Msg_Data
3305     );
3306 
3307       -- Check return status from the above procedure call
3308       IF x_return_status = FND_API.G_RET_STS_ERROR then
3309           raise FND_API.G_EXC_ERROR;
3310       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
3311           raise FND_API.G_EXC_UNEXPECTED_ERROR;
3312       END IF;
3313 
3314          --  call user hooks
3315       -- customer post processing
3316 
3317     IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
3318        ASO_QUOTE_CUHK.Submit_quote_POST(
3319           p_control_rec        => l_control_rec,
3320           P_Qte_Header_Id      => l_Qte_Header_Id,
3321           p_order_header_rec   => x_order_header_rec,
3322           X_Return_Status      => X_Return_Status,
3323           X_Msg_Count          => X_Msg_Count,
3324           X_Msg_Data           => X_Msg_Data    );
3325 
3326         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3327              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3328 		       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3329 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Submit_Quote_POST', FALSE);
3330 		       FND_MSG_PUB.ADD;
3331              END IF;
3332              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3333                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3334               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3335                 RAISE FND_API.G_EXC_ERROR;
3336               END IF;
3337           END IF;
3338 
3339       END IF; -- customer hook
3340 
3341       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
3342          ASO_QUOTE_VUHK.Submit_quote_POST(
3343            p_control_rec        => l_control_rec,
3344            P_Qte_Header_Id      => l_Qte_Header_Id,
3345            p_order_header_rec   => x_order_header_rec,
3346            X_Return_Status      => X_Return_Status,
3347            X_Msg_Count          => X_Msg_Count,
3348            X_Msg_Data           => X_Msg_Data    );
3349 
3350           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3351              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3352 	   	       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3353 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Submit_Quote_POST', FALSE);
3354 		       FND_MSG_PUB.ADD;
3355              END IF;
3356              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3357                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3358              ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3359                 RAISE FND_API.G_EXC_ERROR;
3360              END IF;
3361           END IF;
3362 
3363       END IF; -- vertical hook
3364       --
3365       -- End of API body
3366       --
3367 
3368 
3369 
3370       -- Standard call to get message count and if count is 1, get message info.
3371       FND_MSG_PUB.Count_And_Get
3372       (  p_count          =>   x_msg_count,
3373          p_data           =>   x_msg_data
3374       );
3375 
3376       EXCEPTION
3377           WHEN FND_API.G_EXC_ERROR THEN
3378               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3379                    P_API_NAME => L_API_NAME
3380                   ,P_PKG_NAME => G_PKG_NAME
3381                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
3382                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
3383                   ,X_MSG_COUNT => X_MSG_COUNT
3384                   ,X_MSG_DATA => X_MSG_DATA
3385                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3386 
3387           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3388               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3389                    P_API_NAME => L_API_NAME
3390                   ,P_PKG_NAME => G_PKG_NAME
3391                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
3392                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
3393                   ,X_MSG_COUNT => X_MSG_COUNT
3394                   ,X_MSG_DATA => X_MSG_DATA
3395                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3396 
3397           WHEN OTHERS THEN
3398               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3399                    P_API_NAME => L_API_NAME
3400                   ,P_PKG_NAME => G_PKG_NAME
3401                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
3402                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
3403                   ,X_MSG_COUNT => X_MSG_COUNT
3404                   ,X_MSG_DATA => X_MSG_DATA
3405                   ,X_RETURN_STATUS => X_RETURN_STATUS);
3406 
3407 END Submit_Quote;
3408 
3409 
3410 -- vtariker: Sales Credit Allocation Public API
3411 PROCEDURE Allocate_Sales_Credits
3412 (
3413     P_Api_Version_Number  IN   NUMBER,
3414     P_Init_Msg_List       IN   VARCHAR2     := FND_API.G_FALSE,
3415     P_Commit              IN   VARCHAR2     := FND_API.G_FALSE,
3416     p_control_rec         IN   ASO_QUOTE_PUB.SALES_ALLOC_CONTROL_REC_TYPE
3417                                             :=  ASO_QUOTE_PUB.G_MISS_SALES_ALLOC_CONTROL_REC,
3418     P_Qte_Header_Rec      IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
3419     X_Qte_Header_Rec      OUT NOCOPY /* file.sql.39 change */  ASO_QUOTE_PUB.Qte_Header_Rec_Type,
3420     X_Return_Status       OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
3421     X_Msg_Count           OUT NOCOPY /* file.sql.39 change */  NUMBER,
3422     X_Msg_Data            OUT NOCOPY /* file.sql.39 change */  VARCHAR2)
3423 IS
3424 
3425    l_api_name              CONSTANT VARCHAR2 ( 30 ) := 'Allocate_Sales_Credits';
3426    l_api_version_number    CONSTANT NUMBER := 1.0;
3427 
3428 BEGIN
3429 
3430       aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
3431 
3432       -- Standard Start of API savepoint
3433       SAVEPOINT ALLOCATE_SALES_CREDITS_PUB;
3434 
3435       -- Standard call to check for call compatibility.
3436       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
3437                                            1.0,
3438                                            l_api_name,
3439                                            G_PKG_NAME)
3440       THEN
3441           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3442           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3443       END IF;
3444 
3445       -- Initialize message list if p_init_msg_list is set to TRUE.
3446       IF FND_API.to_Boolean( p_init_msg_list )
3447       THEN
3448           FND_MSG_PUB.initialize;
3449       END IF;
3450 
3451       -- Initialize API return status to SUCCESS
3452       x_return_status := FND_API.G_RET_STS_SUCCESS;
3453 
3454       --
3455       -- API body
3456       --
3457 
3458    -- New PRE-Customer and Verical Hooks
3459 
3460      IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
3461        ASO_QUOTE_CUHK.Allocate_Sales_Credits_PRE(
3462           p_control_rec      => p_control_rec,
3463           P_Qte_Header_Id    => p_qte_header_rec.quote_header_id,
3464           X_Return_Status    => X_Return_Status,
3465           X_Msg_Count        => X_Msg_Count,
3466           X_Msg_Data         => X_Msg_Data    );
3467 
3468        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3469              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3470 		       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3471 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Allocate_Sales_Credits_PRE', FALSE);
3472 		       FND_MSG_PUB.ADD;
3473              END IF;
3474 
3475              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3476                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3477              ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3478                 RAISE FND_API.G_EXC_ERROR;
3479              END IF;
3480         END IF;
3481 
3482       END IF; -- customer hook
3483 
3484       -- vertical hook
3485       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
3486          ASO_QUOTE_VUHK.Allocate_Sales_Credits_PRE(
3487             p_control_rec        => p_control_rec,
3488             P_Qte_Header_Id      => p_qte_header_rec.quote_header_id,
3489             X_Return_Status      => X_Return_Status,
3490             X_Msg_Count          => X_Msg_Count,
3491             X_Msg_Data           => X_Msg_Data    );
3492 
3493          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3494              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3495 		       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3496 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Allocate_Sales_Credits_PRE', FALSE);
3497 		       FND_MSG_PUB.ADD;
3498              END IF;
3499              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3500                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3501              ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3502                 RAISE FND_API.G_EXC_ERROR;
3503              END IF;
3504          END IF;
3505 
3506       END IF;
3507 
3508 
3509       -- Allocate Sales Credits
3510       ASO_SALES_CREDIT_PVT.Allocate_Sales_Credits (
3511         P_Api_Version_Number         =>     1.0,
3512         P_Init_Msg_List              =>     FND_API.G_FALSE,
3513         P_Commit                     =>     FND_API.G_FALSE,
3514         P_control_rec                =>     p_control_rec,
3515         P_Qte_Header_Rec             =>     p_qte_header_rec,
3516         X_Qte_Header_Rec             =>     x_qte_header_rec,
3517         X_Return_Status              =>     x_return_status,
3518         X_Msg_Count                  =>     x_msg_count,
3519         X_Msg_Data                   =>     x_msg_data
3520       );
3521 
3522 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3523 aso_debug_pub.add('After ASO_SALES_TEAM_PVT.Assign_Sales_Team: '||x_return_status,1,'Y');
3524 END IF;
3525 
3526         IF x_return_status = FND_API.G_RET_STS_ERROR THEN
3527             RAISE FND_API.G_EXC_ERROR;
3528         END IF;
3529         IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3530             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3531         END IF;
3532 
3533      -- Added new post Customer and Verical POST hooks
3534 
3535       -- customer post processing
3536 
3537     IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
3538        ASO_QUOTE_CUHK.Allocate_Sales_Credits_POST(
3539           p_control_rec        => p_control_rec,
3540           P_Qte_Header_Rec     => x_qte_header_rec,
3541           X_Return_Status      => X_Return_Status,
3542           X_Msg_Count          => X_Msg_Count,
3543           X_Msg_Data           => X_Msg_Data    );
3544 
3545         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3546              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3547 		       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3548 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Allocate_Sales_Credits_POST', FALSE);
3549 		       FND_MSG_PUB.ADD;
3550              END IF;
3551              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3552                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3553               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3554                 RAISE FND_API.G_EXC_ERROR;
3555               END IF;
3556           END IF;
3557 
3558       END IF; -- customer hook
3559 
3560 
3561 
3562       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
3563          ASO_QUOTE_VUHK.Allocate_Sales_Credits_POST(
3564            p_control_rec        => p_control_rec,
3565            P_Qte_Header_Rec     => x_qte_header_rec,
3566            X_Return_Status      => X_Return_Status,
3567            X_Msg_Count          => X_Msg_Count,
3568            X_Msg_Data           => X_Msg_Data    );
3569 
3570           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3571              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3572 	   	       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3573 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Allocate_Sales_Credits_POST', FALSE);
3574 		       FND_MSG_PUB.ADD;
3575              END IF;
3576              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3577                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3578              ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3579                 RAISE FND_API.G_EXC_ERROR;
3580              END IF;
3581           END IF;
3582 
3583       END IF; -- vertical hook
3584 
3585         -- Standard check for p_commit
3586       IF FND_API.to_Boolean( p_commit )
3587       THEN
3588           COMMIT WORK;
3589       END IF;
3590 
3591 
3592       -- Standard call to get message count and if count is 1, get message info.
3593       FND_MSG_PUB.Count_And_Get
3594       (  p_count          =>   x_msg_count,
3595          p_data           =>   x_msg_data
3596       );
3597 
3598     EXCEPTION
3599 
3600         WHEN FND_API.G_EXC_ERROR THEN
3601             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3602                 P_API_NAME        => L_API_NAME,
3603                 P_PKG_NAME        => G_PKG_NAME,
3604                 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
3605                 P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PUB,
3606                 P_SQLCODE         => SQLCODE,
3607                 P_SQLERRM         => SQLERRM,
3608                 X_MSG_COUNT       => X_MSG_COUNT,
3609                 X_MSG_DATA        => X_MSG_DATA,
3610                 X_RETURN_STATUS   => X_RETURN_STATUS
3611             );
3612 
3613         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3614             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3615                 P_API_NAME        => L_API_NAME,
3616                 P_PKG_NAME        => G_PKG_NAME,
3617                 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
3618                 P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PUB,
3619                 P_SQLCODE         => SQLCODE,
3620                 P_SQLERRM         => SQLERRM,
3621                 X_MSG_COUNT       => X_MSG_COUNT,
3622                 X_MSG_DATA        => X_MSG_DATA,
3623                 X_RETURN_STATUS   => X_RETURN_STATUS
3624             );
3625 
3626         WHEN OTHERS THEN
3627             ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
3628                 P_API_NAME        => L_API_NAME,
3629                 P_PKG_NAME        => G_PKG_NAME,
3630                 P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS,
3631                 P_PACKAGE_TYPE    => ASO_UTILITY_PVT.G_PUB,
3632                 P_SQLCODE         => SQLCODE,
3633                 P_SQLERRM         => SQLERRM,
3634                 X_MSG_COUNT       => X_MSG_COUNT,
3635                 X_MSG_DATA        => X_MSG_DATA,
3636                 X_RETURN_STATUS   => X_RETURN_STATUS
3637             );
3638 
3639 END Allocate_Sales_Credits;
3640 
3641 
3642 PROCEDURE Sales_Credit_Event_Pre (
3643                   P_Qte_Header_Id     IN  NUMBER,
3644                   X_Return_Status     OUT NOCOPY /* file.sql.39 change */ VARCHAR2 )
3645 IS
3646 
3647    l_list              WF_PARAMETER_LIST_T := wf_parameter_list_t();
3648    l_event_name        VARCHAR2(255) := 'oracle.apps.aso.quote.allocatecredit.pre';
3649    l_event_key         VARCHAR2(255);
3650 
3651 BEGIN
3652 
3653        X_Return_Status := FND_API.G_RET_STS_SUCCESS;
3654 
3655        l_event_key := to_char(sysdate,'MMDDYYYY HH24MISS');
3656 
3657        wf_event.AddParameterToList (
3658                         p_name  => 'USER_ID',
3659                         p_value => fnd_profile.value( 'USER_ID'),
3660                         p_parameterlist => l_list );
3661 
3662        wf_event.AddParameterToList (
3663                         p_name  => 'RESP_ID',
3664                         p_value => fnd_profile.value( 'RESP_ID'),
3665                         p_parameterlist => l_list );
3666 
3667        wf_event.AddParameterToList (
3668                         p_name  => 'RESP_APPL_ID',
3669                         p_value => fnd_profile.value( 'RESP_APPL_ID'),
3670                         p_parameterlist => l_list );
3671 
3672        wf_event.AddParameterToList (
3673                         p_name  => 'ORG_ID',
3674                         p_value => fnd_profile.value( 'ORG_ID'),
3675                         p_parameterlist => l_list );
3676 
3677        wf_event.AddParameterToList (
3678                         p_name  => 'DOCUMENT_ID',
3679                         p_value => P_Qte_Header_Id,
3680                         p_parameterlist => l_list );
3681 
3682        wf_event.raise (
3683                         p_event_name => l_event_name,
3684                         p_event_key  => l_event_key,
3685                         p_parameters => l_list );
3686 
3687        l_list.DELETE;
3688 
3689    EXCEPTION
3690 
3691      WHEN OTHERS THEN
3692 
3693           x_return_Status :=FND_API.G_RET_STS_ERROR;
3694 
3695 END Sales_Credit_Event_Pre;
3696 
3697 
3698 PROCEDURE Sales_Credit_Event_Post (
3699                   P_Qte_Header_Id     IN  NUMBER,
3700                   X_Return_Status     OUT NOCOPY /* file.sql.39 change */ VARCHAR2 )
3701 IS
3702 
3703    l_list              WF_PARAMETER_LIST_T := wf_parameter_list_t();
3704    l_event_name        VARCHAR2(255) := 'oracle.apps.aso.quote.allocatecredit.post';
3705    l_event_key         VARCHAR2(255);
3706 
3707 BEGIN
3708 
3709        X_Return_Status := FND_API.G_RET_STS_SUCCESS;
3710 
3711        l_event_key := to_char(sysdate,'MMDDYYYY HH24MISS');
3712 
3713        wf_event.AddParameterToList (
3714                         p_name  => 'USER_ID',
3715                         p_value => fnd_profile.value( 'USER_ID'),
3716                         p_parameterlist => l_list );
3717 
3718        wf_event.AddParameterToList (
3719                         p_name  => 'RESP_ID',
3720                         p_value => fnd_profile.value( 'RESP_ID'),
3721                         p_parameterlist => l_list );
3722 
3723        wf_event.AddParameterToList (
3724                         p_name  => 'RESP_APPL_ID',
3725                         p_value => fnd_profile.value( 'RESP_APPL_ID'),
3726                         p_parameterlist => l_list );
3727 
3728        wf_event.AddParameterToList (
3729                         p_name  => 'ORG_ID',
3730                         p_value => fnd_profile.value( 'ORG_ID'),
3731                         p_parameterlist => l_list );
3732 
3733        wf_event.AddParameterToList (
3734                         p_name  => 'DOCUMENT_ID',
3735                         p_value => P_Qte_Header_Id,
3736                         p_parameterlist => l_list );
3737 
3738        wf_event.raise (
3739                         p_event_name => l_event_name,
3740                         p_event_key  => l_event_key,
3741                         p_parameters => l_list );
3742 
3743        l_list.DELETE;
3744 
3745 
3746    EXCEPTION
3747 
3748        WHEN OTHERS THEN
3749 
3750           x_return_Status :=FND_API.G_RET_STS_ERROR;
3751 
3752 END Sales_Credit_Event_Post;
3753 
3754 
3755 
3756 --   *******************************************************
3757 --    Start of Comments
3758 --   *******************************************************
3759 --   API Name:  Create_quote
3760 --   Type    :  Public
3761 --   Pre-Req :
3762 --   Parameters:
3763 
3764 --   Version : Current version 2.0
3765 --   Note: This is an overloaded procedure. It takes additional attributes
3766 --   which include the p_template_tbl, P_Qte_Access_Tbl and P_Related_Obj_Tbl record
3767 --   types
3768 --
3769 --   End of Comments
3770 --
3771 
3772 
3773 PROCEDURE Create_quote(
3774     P_Api_Version_Number       IN   NUMBER,
3775     P_Init_Msg_List            IN   VARCHAR2                                := FND_API.G_FALSE,
3776     P_Commit                   IN   VARCHAR2                                := FND_API.G_FALSE,
3777     P_Validation_Level 	      IN   NUMBER                                  := FND_API.G_VALID_LEVEL_FULL,
3778     P_Control_Rec		      IN   Control_Rec_Type                        := G_Miss_Control_Rec,
3779     P_Qte_Header_Rec		 IN   Qte_Header_Rec_Type                     := G_MISS_Qte_Header_Rec,
3780     P_hd_Price_Attributes_Tbl	 IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := G_Miss_Price_Attributes_Tbl,
3781     P_hd_Payment_Tbl		 IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := G_MISS_PAYMENT_TBL,
3782     P_hd_Shipment_Rec		 IN   ASO_QUOTE_PUB.Shipment_Rec_Type         := G_MISS_SHIPMENT_REC,
3783     P_hd_Freight_Charge_Tbl	 IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := G_Miss_Freight_Charge_Tbl,
3784     P_hd_Tax_Detail_Tbl		 IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := G_Miss_Tax_Detail_Tbl,
3785     P_hd_Attr_Ext_Tbl		 IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
3786     P_hd_Sales_Credit_Tbl      IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
3787     P_hd_Quote_Party_Tbl       IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
3788     P_Qte_Line_Tbl		      IN   Qte_Line_Tbl_Type                       := G_MISS_QTE_LINE_TBL,
3789     P_Qte_Line_Dtl_Tbl		 IN   Qte_Line_Dtl_Tbl_Type                   := G_MISS_QTE_LINE_DTL_TBL,
3790     P_Line_Attr_Ext_Tbl		 IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
3791     P_line_rltship_tbl		 IN   Line_Rltship_Tbl_Type                   := G_MISS_Line_Rltship_Tbl,
3792     P_Price_Adjustment_Tbl	 IN   Price_Adj_Tbl_Type                      := G_Miss_Price_Adj_Tbl,
3793     P_Price_Adj_Attr_Tbl	      IN   Price_Adj_Attr_Tbl_Type                 := G_Miss_PRICE_ADJ_ATTR_Tbl,
3794     P_Price_Adj_Rltship_Tbl	 IN   Price_Adj_Rltship_Tbl_Type              := G_Miss_Price_Adj_Rltship_Tbl,
3795     P_Ln_Price_Attributes_Tbl	 IN   Price_Attributes_Tbl_Type               := G_Miss_Price_Attributes_Tbl,
3796     P_Ln_Payment_Tbl		 IN   Payment_Tbl_Type                        := G_MISS_PAYMENT_TBL,
3797     P_Ln_Shipment_Tbl		 IN   Shipment_Tbl_Type                       := G_MISS_SHIPMENT_TBL,
3798     P_Ln_Freight_Charge_Tbl	 IN   Freight_Charge_Tbl_Type                 := G_Miss_Freight_Charge_Tbl,
3799     P_Ln_Tax_Detail_Tbl		 IN   Tax_Detail_Tbl_Type                     := G_Miss_Tax_Detail_Tbl,
3800     P_ln_Sales_Credit_Tbl      IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
3801     P_ln_Quote_Party_Tbl       IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
3802     P_Qte_Access_Tbl           IN   Qte_Access_Tbl_Type                     := G_MISS_QTE_ACCESS_TBL,
3803     P_Template_Tbl             IN   Template_Tbl_Type                       := G_MISS_TEMPLATE_TBL,
3804     P_Related_Obj_Tbl          IN   Related_Obj_Tbl_Type                    := G_MISS_RELATED_OBJ_TBL,
3805     x_Qte_Header_Rec		 OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type,
3806     X_Qte_Line_Tbl		      OUT NOCOPY /* file.sql.39 change */  Qte_Line_Tbl_Type,
3807     X_Qte_Line_Dtl_Tbl		 OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
3808     X_Hd_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
3809     X_Hd_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
3810     X_Hd_Shipment_Rec		 OUT NOCOPY /* file.sql.39 change */  Shipment_Rec_Type,
3811     X_Hd_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
3812     X_Hd_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
3813     X_hd_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
3814     X_hd_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
3815     X_hd_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
3816     x_Line_Attr_Ext_Tbl		 OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
3817     X_line_rltship_tbl		 OUT NOCOPY /* file.sql.39 change */  Line_Rltship_Tbl_Type,
3818     X_Price_Adjustment_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
3819     X_Price_Adj_Attr_Tbl	      OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
3820     X_Price_Adj_Rltship_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Adj_Rltship_Tbl_Type,
3821     X_Ln_Price_Attributes_Tbl	 OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
3822     X_Ln_Payment_Tbl		 OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
3823     X_Ln_Shipment_Tbl		 OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
3824     X_Ln_Freight_Charge_Tbl	 OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
3825     X_Ln_Tax_Detail_Tbl		 OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
3826     X_Ln_Sales_Credit_Tbl      OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
3827     X_Ln_Quote_Party_Tbl       OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
3828     X_Qte_Access_Tbl           OUT NOCOPY /* file.sql.39 change */  Qte_Access_Tbl_Type,
3829     X_Template_Tbl             OUT NOCOPY /* file.sql.39 change */  Template_Tbl_Type,
3830     X_Related_Obj_Tbl          OUT NOCOPY /* file.sql.39 change */  Related_Obj_Tbl_Type,
3831     X_Return_Status            OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
3832     X_Msg_Count                OUT NOCOPY /* file.sql.39 change */  NUMBER,
3833     X_Msg_Data                 OUT NOCOPY /* file.sql.39 change */  VARCHAR2
3834     )
3835 IS
3836     l_api_name                 CONSTANT VARCHAR2(30) := 'CREATE_QUOTE';
3837     l_api_version_number       CONSTANT NUMBER       := 1.0;
3838     l_qte_header_rec	      Qte_Header_Rec_Type;
3839     l_qte_header_rec_out       Qte_Header_Rec_Type;
3840     l_Qte_Line_Tbl	           Qte_Line_Tbl_Type;
3841     l_Qte_Line_rec_out	      Qte_Line_Rec_Type;
3842     l_hd_shipment_rec	      Shipment_Rec_Type;
3843     l_hd_shipment_rec_out      Shipment_Rec_Type;
3844     l_ln_shipment_tbl	      Shipment_Tbl_Type;
3845     l_ln_shipment_rec_out      Shipment_Rec_Type;
3846     l_hd_Payment_Tbl           Payment_Tbl_Type;
3847     l_ln_Payment_Tbl           Payment_Tbl_Type;
3848     l_Price_Adj_Tbl            Price_Adj_Tbl_Type;
3849     l_Qte_Line_Dtl_rec         Qte_Line_Dtl_rec_Type;
3850     l_hd_Tax_Detail_Tbl        Tax_Detail_Tbl_Type;
3851     l_ln_Tax_Detail_Tbl        Tax_Detail_Tbl_Type;
3852     l_hd_Freight_Charge_Tbl    Freight_Charge_Tbl_Type;
3853     l_ln_Freight_Charge_Tbl    Freight_Charge_Tbl_Type;
3854     l_Line_Rltship_Tbl         Line_Rltship_Tbl_Type;
3855     l_hd_Price_Attributes_Tbl  Price_Attributes_Tbl_Type;
3856     l_ln_Price_Attributes_Tbl  Price_Attributes_Tbl_Type;
3857     l_Price_Adj_rltship_Tbl    Price_Adj_Rltship_Tbl_Type;
3858     l_Price_Adj_Attr_Tbl       Price_Adj_Attr_Tbl_Type;
3859     l_hd_Attribs_Ext_Tbl       Line_Attribs_Ext_Tbl_type;
3860     l_Line_Attribs_Ext_Tbl     Line_Attribs_Ext_Tbl_type;
3861     l_Qte_Line_Dtl_tbl         Qte_Line_Dtl_tbl_Type;
3862     l_hd_Sales_Credit_Tbl      Sales_Credit_Tbl_Type;
3863     l_ln_Sales_Credit_Tbl      Sales_Credit_Tbl_Type;
3864     l_hd_Quote_Party_Tbl       Quote_Party_Tbl_Type;
3865     l_ln_Quote_Party_Tbl       Quote_Party_Tbl_Type;
3866     l_Control_Rec              Control_rec_Type;
3867     l_validation_level         NUMBER;
3868     l_Qte_Access_Tbl           Qte_Access_Tbl_Type;
3869     l_Template_Tbl             Template_Tbl_Type;
3870     l_Related_Obj_Tbl          Related_Obj_Tbl_Type;
3871 
3872 BEGIN
3873       -- Standard Start of API savepoint
3874       SAVEPOINT CREATE_QUOTE_PUB;
3875 
3876       aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
3877 
3878       -- Standard call to check for call compatibility.
3879       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
3880                          	             p_api_version_number,
3881                                            l_api_name,
3882                                            G_PKG_NAME) THEN
3883           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3884       END IF;
3885 
3886       -- Initialize message list if p_init_msg_list is set to TRUE.
3887       IF FND_API.to_Boolean( p_init_msg_list ) THEN
3888           FND_MSG_PUB.initialize;
3889       END IF;
3890 
3891       -- Initialize API return status to SUCCESS
3892       x_return_status := FND_API.G_RET_STS_SUCCESS;
3893 
3894       --
3895       -- API body
3896       --
3897 
3898       -- mapping to local variables
3899       l_qte_header_rec          := P_Qte_Header_Rec;
3900       l_hd_Price_Attributes_Tbl := P_hd_Price_Attributes_Tbl;
3901       l_hd_Payment_Tbl          := P_hd_Payment_Tbl;
3902       l_hd_shipment_rec         := P_hd_Shipment_Rec;
3903       l_hd_Freight_Charge_Tbl   := P_hd_Freight_Charge_Tbl;
3904       l_hd_Tax_Detail_Tbl       := P_hd_Tax_Detail_Tbl;
3905       l_hd_Attribs_Ext_Tbl      := P_hd_Attr_Ext_Tbl;
3906       l_hd_Sales_Credit_Tbl     := P_hd_Sales_Credit_Tbl;
3907       l_hd_Quote_Party_Tbl      := P_hd_Quote_Party_Tbl;
3908       l_Qte_Line_tbl            := p_Qte_Line_tbl;
3909       l_hd_Payment_Tbl          := p_hd_Payment_Tbl;
3910       l_Price_Adj_Tbl           := P_Price_Adjustment_Tbl;
3911     	 l_Line_Rltship_Tbl        := p_Line_Rltship_Tbl;
3912       l_Price_Adj_rltship_Tbl   := p_Price_Adj_Rltship_Tbl;
3913       l_ln_Price_Attributes_Tbl := P_Ln_Price_Attributes_Tbl;
3914       l_Price_Adj_Attr_Tbl      := p_Price_Adj_Attr_Tbl;
3915       l_ln_Payment_Tbl          := P_Ln_Payment_Tbl;
3916       l_ln_shipment_tbl         := P_Ln_Shipment_Tbl;
3917       l_ln_Freight_Charge_Tbl   := P_Ln_Freight_Charge_Tbl;
3918       l_ln_Tax_Detail_Tbl       := P_Ln_Tax_Detail_Tbl;
3919       l_ln_Sales_Credit_Tbl     := P_ln_Sales_Credit_Tbl;
3920       l_ln_Quote_Party_Tbl      := P_ln_Quote_Party_Tbl;
3921     	 l_Line_Attribs_Ext_Tbl    := P_Line_Attr_Ext_Tbl;
3922 	 l_Qte_Line_Dtl_tbl        := p_Qte_Line_Dtl_tbl;
3923       l_control_rec             := p_control_rec;
3924       l_validation_level        := P_Validation_Level;
3925       l_Qte_Access_Tbl          := P_Qte_Access_Tbl;
3926       l_Template_Tbl            := P_Template_Tbl;
3927       l_Related_Obj_Tbl         := P_Related_Obj_Tbl;
3928 
3929       -- call user hooks
3930       -- customer pre processing
3931 
3932       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
3933 
3934            ASO_QUOTE_CUHK.Create_quote_PRE(
3935                             P_Validation_Level 	     => l_validation_level ,
3936                             P_Control_Rec		     => l_control_rec ,
3937                             P_Qte_Header_Rec	          => l_qte_header_rec  ,
3938                             P_hd_Price_Attributes_Tbl	=> l_hd_Price_Attributes_Tbl  ,
3939                             P_hd_Payment_Tbl		     => l_hd_Payment_Tbl ,
3940                             P_hd_Shipment_Rec		=> l_hd_shipment_rec,
3941                             P_hd_Freight_Charge_Tbl	=> l_hd_Freight_Charge_Tbl,
3942                             P_hd_Tax_Detail_Tbl		=> l_hd_Tax_Detail_Tbl ,
3943                             P_hd_Attr_Ext_Tbl		=> l_hd_Attribs_Ext_Tbl,
3944                             P_hd_Sales_Credit_Tbl      => l_hd_Sales_Credit_Tbl ,
3945                             P_hd_Quote_Party_Tbl       => l_hd_Quote_Party_Tbl   ,
3946                             P_Qte_Line_Tbl		     => l_Qte_Line_Tbl,
3947                             P_Qte_Line_Dtl_Tbl		=> l_Qte_Line_Dtl_tbl,
3948                             P_Line_Attr_Ext_Tbl		=> l_Line_Attribs_Ext_Tbl,
3949                             P_line_rltship_tbl		=> l_Line_Rltship_Tbl,
3950                             P_Price_Adjustment_Tbl	=> l_Price_Adj_Tbl ,
3951                             P_Price_Adj_Attr_Tbl	     => l_Price_Adj_Attr_Tbl    ,
3952                             P_Price_Adj_Rltship_Tbl	=> l_Price_Adj_rltship_Tbl,
3953                             P_Ln_Price_Attributes_Tbl	=> l_ln_Price_Attributes_Tbl  ,
3954                             P_Ln_Payment_Tbl		     => l_ln_Payment_Tbl ,
3955                             P_Ln_Shipment_Tbl		=> l_ln_shipment_tbl ,
3956                             P_Ln_Freight_Charge_Tbl	=> l_ln_Freight_Charge_Tbl,
3957                             P_Ln_Tax_Detail_Tbl		=> l_ln_Tax_Detail_Tbl,
3958                             P_ln_Sales_Credit_Tbl      => l_ln_Sales_Credit_Tbl    ,
3959                             P_ln_Quote_Party_Tbl       => l_ln_Quote_Party_Tbl,
3960 
3961 					   /*
3962                             P_Qte_Access_Tbl           => l_Qte_Access_Tbl,
3963                             P_Template_Tbl             => l_Template_Tbl,   */
3964                             P_Related_Obj_Tbl          => l_Related_Obj_Tbl,
3965 
3966                             X_Return_Status            => X_Return_Status,
3967                             X_Msg_Count                => X_Msg_Count,
3968                             X_Msg_Data                 => X_Msg_Data);
3969 
3970            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3971 
3972                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3973 		         FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
3974 		         FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Create_Quote_PRE', FALSE);
3975 		         FND_MSG_PUB.ADD;
3976                END IF;
3977 
3978                IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3979                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3980                ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
3981                     RAISE FND_API.G_EXC_ERROR;
3982                END IF;
3983 
3984           END IF;
3985 
3986       END IF; -- customer hook
3987 
3988       -- vertical hook
3989       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
3990 
3991            ASO_QUOTE_VUHK.Create_quote_PRE(
3992                            P_Validation_Level 	   => l_validation_level ,
3993                            P_Control_Rec		   => l_control_rec ,
3994                            P_Qte_Header_Rec	        => l_qte_header_rec  ,
3995                            P_hd_Price_Attributes_Tbl => l_hd_Price_Attributes_Tbl  ,
3996                            P_hd_Payment_Tbl		   => l_hd_Payment_Tbl ,
3997                            P_hd_Shipment_Rec		   => l_hd_shipment_rec,
3998                            P_hd_Freight_Charge_Tbl   => l_hd_Freight_Charge_Tbl,
3999                            P_hd_Tax_Detail_Tbl	   => l_hd_Tax_Detail_Tbl ,
4000                            P_hd_Attr_Ext_Tbl		   => l_hd_Attribs_Ext_Tbl,
4001                            P_hd_Sales_Credit_Tbl     => l_hd_Sales_Credit_Tbl ,
4002                            P_hd_Quote_Party_Tbl      => l_hd_Quote_Party_Tbl   ,
4003                            P_Qte_Line_Tbl		   => l_Qte_Line_Tbl,
4004                            P_Qte_Line_Dtl_Tbl        => l_Qte_Line_Dtl_tbl,
4005                            P_Line_Attr_Ext_Tbl       => l_Line_Attribs_Ext_Tbl,
4006                            P_line_rltship_tbl        => l_Line_Rltship_Tbl,
4007                            P_Price_Adjustment_Tbl	   => l_Price_Adj_Tbl ,
4008                            P_Price_Adj_Attr_Tbl	   => l_Price_Adj_Attr_Tbl    ,
4009                            P_Price_Adj_Rltship_Tbl   => l_Price_Adj_rltship_Tbl,
4010                            P_Ln_Price_Attributes_Tbl => l_ln_Price_Attributes_Tbl  ,
4011                            P_Ln_Payment_Tbl		   => l_ln_Payment_Tbl ,
4012                            P_Ln_Shipment_Tbl		   => l_ln_shipment_tbl ,
4013                            P_Ln_Freight_Charge_Tbl   => l_ln_Freight_Charge_Tbl,
4014                            P_Ln_Tax_Detail_Tbl       => l_ln_Tax_Detail_Tbl,
4015                            P_ln_Sales_Credit_Tbl     => l_ln_Sales_Credit_Tbl    ,
4016                            P_ln_Quote_Party_Tbl      => l_ln_Quote_Party_Tbl,
4017 					  /*
4018                            P_Qte_Access_Tbl          => l_Qte_Access_Tbl,
4019                            P_Template_Tbl            => l_Template_Tbl,
4020 					  P_Related_Obj_Tbl         => l_Related_Obj_Tbl,
4021 					  */
4022                            X_Return_Status           => X_Return_Status,
4023                            X_Msg_Count               => X_Msg_Count,
4024                            X_Msg_Data                => X_Msg_Data );
4025 
4026            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4027 
4028                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4029 		         FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
4030 		         FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Create_Quote_PRE', FALSE);
4031 		         FND_MSG_PUB.ADD;
4032                END IF;
4033 
4034                IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4035                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4036                ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4037                     RAISE FND_API.G_EXC_ERROR;
4038                END IF;
4039 
4040           END IF;
4041 
4042       END IF;
4043 
4044       -- Convert the values to ids
4045       --
4046 
4047       Convert_Header_Values_To_Ids ( p_qte_header_rec	=>  l_qte_header_rec,
4048                                      x_qte_header_rec	=>  l_qte_header_rec_out);
4049 
4050 	 l_qte_header_rec := l_qte_header_rec_out;
4051 
4052       FOR i IN 1..p_qte_line_tbl.count LOOP
4053 
4054          Convert_Line_Values_To_Ids ( p_qte_line_rec	=> l_qte_line_tbl(i),
4055 	                                x_qte_line_rec	=> l_qte_line_rec_out );
4056 
4057 	    l_qte_line_tbl(i) := l_qte_line_rec_out;
4058 
4059       END LOOP;
4060 
4061       Convert_Shipment_Values_To_Ids ( p_shipment_rec	=> l_hd_shipment_rec,
4062 	                                  x_shipment_rec	=> l_hd_shipment_rec_out);
4063 
4064 	 l_hd_shipment_rec := l_hd_shipment_rec_out;
4065 
4066       FOR i IN 1..p_ln_shipment_tbl.count LOOP
4067 
4068           Convert_Shipment_Values_To_Ids ( p_shipment_rec	=> l_ln_shipment_tbl(i),
4069 	                                      x_shipment_rec	=> l_ln_shipment_rec_out );
4070 
4071 	     l_ln_shipment_tbl(i) := l_ln_shipment_rec_out;
4072 
4073       END LOOP;
4074 
4075       ASO_QUOTE_HEADERS_PVT.Create_quote(
4076 	                          P_Api_Version_Number      => 1.0,
4077 	                          P_Init_Msg_List           => FND_API.G_FALSE,
4078 	                          P_Commit			       => FND_API.G_FALSE,
4079 	                          p_validation_level		  => p_validation_level,
4080 	                          P_Control_Rec		       => l_control_rec,
4081 	                          P_qte_header_rec		  => l_qte_header_rec,
4082 	                          P_Hd_Price_Attributes_Tbl => l_hd_Price_Attributes_Tbl,
4083 	                          P_Hd_Payment_Tbl		  => l_hd_Payment_Tbl,
4084 	                          P_Hd_Shipment_Rec		  => l_Hd_Shipment_Rec,
4085 	                          P_Hd_Freight_Charge_Tbl	  => l_hd_Freight_Charge_Tbl,
4086 	                          P_Hd_Tax_Detail_Tbl	  => l_hd_Tax_Detail_Tbl ,
4087                                P_hd_Attr_Ext_Tbl         => l_hd_Attribs_Ext_Tbl,
4088                                P_hd_Sales_Credit_Tbl     => l_hd_Sales_Credit_Tbl ,
4089                                P_hd_Quote_Party_Tbl      => l_hd_Quote_Party_Tbl,
4090 	                          P_Qte_Line_Tbl		  => l_Qte_Line_Tbl,
4091 	                          P_Qte_Line_Dtl_Tbl		  => l_Qte_Line_Dtl_tbl,
4092 	                          P_Line_Attr_Ext_Tbl       => l_Line_Attribs_Ext_Tbl,
4093 	                          P_Line_rltship_tbl		  => l_Line_Rltship_Tbl,
4094 	                          P_Price_Adjustment_Tbl	  => l_Price_Adj_Tbl,
4095 	                          P_Price_Adj_Attr_Tbl	  => l_Price_Adj_Attr_Tbl,
4096 	                          P_Price_Adj_Rltship_Tbl	  => l_Price_Adj_rltship_Tbl ,
4097 	                          P_Ln_Price_Attributes_Tbl => l_ln_Price_Attributes_Tbl ,
4098 	                          P_Ln_Payment_Tbl          => l_Ln_Payment_Tbl,
4099 	                          P_Ln_Shipment_Tbl         => l_Ln_Shipment_Tbl,
4100 	                          P_Ln_Freight_Charge_Tbl	  => l_Ln_Freight_Charge_Tbl,
4101 	                          P_Ln_Tax_Detail_Tbl       => l_Ln_Tax_Detail_Tbl,
4102                                P_ln_Sales_Credit_Tbl     => l_ln_Sales_Credit_Tbl ,
4103                                P_ln_Quote_Party_Tbl      => l_ln_Quote_Party_Tbl,
4104                                P_Qte_Access_Tbl          => l_Qte_Access_Tbl,
4105                                P_Template_Tbl            => l_Template_Tbl,
4106 					      P_Related_Obj_Tbl         => l_Related_Obj_Tbl,
4107 	                          x_qte_header_rec		  => x_qte_header_rec,
4108 	                          X_Hd_Price_Attributes_Tbl => x_Hd_Price_Attributes_Tbl,
4109 	                          X_Hd_Payment_Tbl		  => x_Hd_Payment_Tbl,
4110 	                          X_Hd_Shipment_Rec		  => x_Hd_Shipment_Rec,
4111 	                          X_Hd_Freight_Charge_Tbl	  => x_Hd_Freight_Charge_Tbl,
4112 	                          X_Hd_Tax_Detail_Tbl       => x_Hd_Tax_Detail_Tbl,
4113                                X_hd_Attr_Ext_Tbl         => X_hd_Attr_Ext_Tbl,
4114                                X_hd_Sales_Credit_Tbl     => X_hd_Sales_Credit_Tbl,
4115                                X_hd_Quote_Party_Tbl      => X_hd_Quote_Party_Tbl,
4116 	                          X_Qte_Line_Tbl            => x_Qte_Line_Tbl,
4117 	                          X_Qte_Line_Dtl_Tbl		  => x_Qte_Line_Dtl_Tbl,
4118 	                          x_Line_Attr_Ext_Tbl       => x_Line_Attr_Ext_Tbl,
4119 	                          X_Line_rltship_tbl	       => x_Line_Rltship_Tbl,
4120 	                          X_Price_Adjustment_Tbl    => x_Price_Adjustment_Tbl,
4121 	                          x_Price_Adj_Attr_Tbl      => x_Price_Adj_Attr_Tbl,
4122 	                          X_Price_Adj_Rltship_Tbl   => x_Price_Adj_Rltship_Tbl,
4123 	                          X_Ln_Price_Attributes_Tbl => x_Ln_Price_Attributes_Tbl,
4124 	                          X_Ln_Payment_Tbl          => x_Ln_Payment_Tbl,
4125 	                          X_Ln_Shipment_Tbl         => x_Ln_Shipment_Tbl,
4126 	                          X_Ln_Freight_Charge_Tbl   => x_Ln_Freight_Charge_Tbl,
4127 	                          X_Ln_Tax_Detail_Tbl       => x_Ln_Tax_Detail_Tbl,
4128                                X_Ln_Sales_Credit_Tbl     => X_Ln_Sales_Credit_Tbl,
4129                                X_Ln_Quote_Party_Tbl      => X_Ln_Quote_Party_Tbl ,
4130                                X_Qte_Access_Tbl          => X_Qte_Access_Tbl,
4131                                X_Template_Tbl            => X_Template_Tbl,
4132                                X_Related_Obj_Tbl         => X_Related_Obj_Tbl,
4133 	                          X_Return_Status           => x_return_status,
4134 	                          X_Msg_Count               => x_msg_count,
4135 	                          X_Msg_Data                => x_msg_data);
4136 
4137 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
4138           aso_debug_pub.add('create_quote_pub: after create quote, starting user hooks (1)'||x_return_status,1, 'N');
4139 	 END IF;
4140 
4141       -- Check return status from the above procedure call
4142       IF x_return_status = FND_API.G_RET_STS_ERROR then
4143           raise FND_API.G_EXC_ERROR;
4144       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
4145           raise FND_API.G_EXC_UNEXPECTED_ERROR;
4146       END IF;
4147 
4148       --
4149       -- End of API body.
4150       --
4151 
4152       -- call user hooks customer post processing
4153 
4154       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
4155 
4156           ASO_QUOTE_CUHK.Create_quote_POST(
4157                             P_Validation_Level 	    => l_validation_level ,
4158                             P_Control_Rec		    => l_control_rec ,
4159                             P_Qte_Header_Rec	         => x_qte_header_rec  ,
4160                             P_hd_Price_Attributes_Tbl => x_hd_Price_Attributes_Tbl  ,
4161                             P_hd_Payment_Tbl		    => x_hd_Payment_Tbl ,
4162                             P_hd_Shipment_Rec         => x_hd_shipment_rec,
4163                             P_hd_Freight_Charge_Tbl   => x_hd_Freight_Charge_Tbl,
4164                             P_hd_Tax_Detail_Tbl       => x_hd_Tax_Detail_Tbl ,
4165                             P_hd_Attr_Ext_Tbl         => X_hd_Attr_Ext_Tbl,
4166                             P_hd_Sales_Credit_Tbl     => x_hd_Sales_Credit_Tbl ,
4167                             P_hd_Quote_Party_Tbl      => x_hd_Quote_Party_Tbl   ,
4168                             P_Qte_Line_Tbl            => x_Qte_Line_Tbl,
4169                             P_Qte_Line_Dtl_Tbl        => x_Qte_Line_Dtl_tbl,
4170                             P_Line_Attr_Ext_Tbl       => x_Line_Attr_Ext_Tbl,
4171                             P_line_rltship_tbl        => x_Line_Rltship_Tbl,
4172                             P_Price_Adjustment_Tbl    => x_Price_Adjustment_Tbl ,
4173                             P_Price_Adj_Attr_Tbl      => x_Price_Adj_Attr_Tbl    ,
4174                             P_Price_Adj_Rltship_Tbl   => x_Price_Adj_rltship_Tbl,
4175                             P_Ln_Price_Attributes_Tbl => x_ln_Price_Attributes_Tbl  ,
4176                             P_Ln_Payment_Tbl	         => x_ln_Payment_Tbl ,
4177                             P_Ln_Shipment_Tbl         => x_ln_shipment_tbl ,
4178                             P_Ln_Freight_Charge_Tbl   => x_ln_Freight_Charge_Tbl,
4179                             P_Ln_Tax_Detail_Tbl       => x_ln_Tax_Detail_Tbl,
4180                             P_ln_Sales_Credit_Tbl     => x_ln_Sales_Credit_Tbl    ,
4181                             P_ln_Quote_Party_Tbl      => x_ln_Quote_Party_Tbl,
4182 					   /*
4183                             P_Qte_Access_Tbl          => x_Qte_Access_Tbl,
4184                             P_Template_Tbl            => x_Template_Tbl, */
4185 					   P_Related_Obj_Tbl         => l_Related_Obj_Tbl,
4186 
4187                             X_Return_Status           => X_Return_Status,
4188                             X_Msg_Count               => X_Msg_Count,
4189                             X_Msg_Data                => X_Msg_Data
4190                             );
4191 
4192           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4193 
4194              IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4195 		       FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
4196 		       FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Create_Quote_POST', FALSE);
4197 		       FND_MSG_PUB.ADD;
4198              END IF;
4199 
4200              IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4201                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4202              ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4203                   RAISE FND_API.G_EXC_ERROR;
4204              END IF;
4205 
4206           END IF;
4207 
4208       END IF; -- customer hook
4209 
4210 
4211 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
4212 	     aso_debug_pub.add('aso_quote_vuhk: before if create quote post (1)'||x_return_status,1, 'N');
4213 	 END IF;
4214 
4215       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
4216 
4217 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
4218               aso_debug_pub.add('aso_quote_vuhk: inside if create quote post (1)'||x_return_status,1, 'N');
4219 	     END IF;
4220 
4221           ASO_QUOTE_VUHK.Create_quote_POST(
4222                             P_Validation_Level 	    => l_validation_level ,
4223                             P_Control_Rec		    => l_control_rec ,
4224                             P_Qte_Header_Rec	         => x_qte_header_rec  ,
4225                             P_hd_Price_Attributes_Tbl => x_hd_Price_Attributes_Tbl  ,
4226                             P_hd_Payment_Tbl		    => x_hd_Payment_Tbl ,
4227                             P_hd_Shipment_Rec         => x_hd_shipment_rec,
4228                             P_hd_Freight_Charge_Tbl   => x_hd_Freight_Charge_Tbl,
4229                             P_hd_Tax_Detail_Tbl	    => x_hd_Tax_Detail_Tbl ,
4230                             P_hd_Attr_Ext_Tbl         => X_hd_Attr_Ext_Tbl,
4231                             P_hd_Sales_Credit_Tbl     => x_hd_Sales_Credit_Tbl ,
4232                             P_hd_Quote_Party_Tbl      => x_hd_Quote_Party_Tbl   ,
4233                             P_Qte_Line_Tbl		    => x_Qte_Line_Tbl,
4234                             P_Qte_Line_Dtl_Tbl        => x_Qte_Line_Dtl_tbl,
4235                             P_Line_Attr_Ext_Tbl       => x_Line_Attr_Ext_Tbl,
4236                             P_line_rltship_tbl        => x_Line_Rltship_Tbl,
4237                             P_Price_Adjustment_Tbl    => x_Price_Adjustment_Tbl ,
4238                             P_Price_Adj_Attr_Tbl      => x_Price_Adj_Attr_Tbl    ,
4239                             P_Price_Adj_Rltship_Tbl   => x_Price_Adj_rltship_Tbl,
4240                             P_Ln_Price_Attributes_Tbl => x_ln_Price_Attributes_Tbl  ,
4241                             P_Ln_Payment_Tbl          => x_ln_Payment_Tbl ,
4242                             P_Ln_Shipment_Tbl         => x_ln_shipment_tbl ,
4243                             P_Ln_Freight_Charge_Tbl   => x_ln_Freight_Charge_Tbl,
4244                             P_Ln_Tax_Detail_Tbl       => x_ln_Tax_Detail_Tbl,
4245                             P_ln_Sales_Credit_Tbl     => x_ln_Sales_Credit_Tbl    ,
4246                             P_ln_Quote_Party_Tbl      => x_ln_Quote_Party_Tbl,
4247 					   /*
4248                             P_Qte_Access_Tbl          => x_Qte_Access_Tbl,
4249                             P_Template_Tbl            => x_Template_Tbl,
4250 					   P_Related_Obj_Tbl         => x_Related_Obj_Tbl,
4251 					   */
4252                             X_Return_Status           => X_Return_Status,
4253                             X_Msg_Count               => X_Msg_Count,
4254                             X_Msg_Data                => X_Msg_Data
4255                             );
4256 
4257           IF aso_debug_pub.g_debug_flag = 'Y' THEN
4258               aso_debug_pub.add('create_quote_pub: after hooks (2)'||x_return_status,1, 'N');
4259           END IF;
4260 
4261           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4262 
4263               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4264 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
4265 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Create_Quote_POST', FALSE);
4266 		        FND_MSG_PUB.ADD;
4267               END IF;
4268 
4269               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4270                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4271               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4272                    RAISE FND_API.G_EXC_ERROR;
4273               END IF;
4274 
4275           END IF;
4276 
4277       END IF; -- vertical hook
4278 
4279       -- Standard check for p_commit
4280       IF FND_API.to_Boolean( p_commit ) THEN
4281           COMMIT WORK;
4282       END IF;
4283 
4284       -- Standard call to get message count and if count is 1, get message info.
4285       FND_MSG_PUB.Count_And_Get
4286       (  p_count          =>   x_msg_count,
4287          p_data           =>   x_msg_data
4288       );
4289 
4290       EXCEPTION
4291 
4292 	  WHEN FND_API.G_EXC_ERROR THEN
4293 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4294 		   P_API_NAME => L_API_NAME
4295 		  ,P_PKG_NAME => G_PKG_NAME
4296 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
4297 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
4298 		  ,P_SQLCODE => SQLCODE
4299 		  ,P_SQLERRM => SQLERRM
4300 		  ,X_MSG_COUNT => X_MSG_COUNT
4301 		  ,X_MSG_DATA => X_MSG_DATA
4302 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
4303 
4304 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4305 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4306 		   P_API_NAME => L_API_NAME
4307 		  ,P_PKG_NAME => G_PKG_NAME
4308 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4309 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
4310 		  ,P_SQLCODE => SQLCODE
4311 		  ,P_SQLERRM => SQLERRM
4312 		  ,X_MSG_COUNT => X_MSG_COUNT
4313 		  ,X_MSG_DATA => X_MSG_DATA
4314 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
4315 
4316 	  WHEN OTHERS THEN
4317 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4318 		   P_API_NAME => L_API_NAME
4319 		  ,P_PKG_NAME => G_PKG_NAME
4320 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
4321 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
4322 		  ,P_SQLCODE => SQLCODE
4323 		  ,P_SQLERRM => SQLERRM
4324 		  ,X_MSG_COUNT => X_MSG_COUNT
4325 		  ,X_MSG_DATA => X_MSG_DATA
4326 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
4327 END;
4328 
4329 
4330 --   *******************************************************
4331 --    Start of Comments
4332 --   *******************************************************
4333 --   API Name:  Create_quote_Service
4334 --   Type    :  Public
4335 --   Pre-Req :
4336 --   Parameters:
4337 
4338 --   Version : Current version 2.0
4339 --   Note: This is an overloaded procedure. It takes additional attributes
4340 --   which include the p_template_tbl, P_Qte_Access_Tbl and P_Related_Obj_Tbl record
4341 --   types
4342 --
4343 --   End of Comments
4344 --
4345 
4346 
4347 PROCEDURE Create_Quote_Service(
4348     P_Api_Version_Number        IN   NUMBER,
4349     P_Init_Msg_List             IN   VARCHAR2                                := FND_API.G_FALSE,
4350     P_Commit                    IN   VARCHAR2                                := FND_API.G_FALSE,
4351     P_Validation_Level 	        IN   NUMBER                                  := FND_API.G_VALID_LEVEL_FULL,
4352     P_Control_Rec	        IN   Control_Rec_Type                        := G_Miss_Control_Rec,
4353     P_Qte_Header_Rec		IN   Qte_Header_Rec_Type                     := G_MISS_Qte_Header_Rec,
4354     P_hd_Price_Attributes_Tbl	IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := G_Miss_Price_Attributes_Tbl,
4355     P_hd_Payment_Tbl		IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := G_MISS_PAYMENT_TBL,
4356     P_hd_Shipment_Rec		IN   ASO_QUOTE_PUB.Shipment_Rec_Type         := G_MISS_SHIPMENT_REC,
4357     P_hd_Freight_Charge_Tbl	IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := G_Miss_Freight_Charge_Tbl,
4358     P_hd_Tax_Detail_Tbl		IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := G_Miss_Tax_Detail_Tbl,
4359     P_hd_Attr_Ext_Tbl		IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
4360     P_hd_Sales_Credit_Tbl       IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
4361     P_hd_Quote_Party_Tbl        IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
4362     P_Qte_Line_Tbl		IN   Qte_Line_Tbl_Type                       := G_MISS_QTE_LINE_TBL,
4363     P_Qte_Line_Dtl_Tbl		IN   Qte_Line_Dtl_Tbl_Type                   := G_MISS_QTE_LINE_DTL_TBL,
4364     P_Line_Attr_Ext_Tbl		IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
4365     P_line_rltship_tbl		IN   Line_Rltship_Tbl_Type                   := G_MISS_Line_Rltship_Tbl,
4366     P_Price_Adjustment_Tbl	IN   Price_Adj_Tbl_Type                      := G_Miss_Price_Adj_Tbl,
4367     P_Price_Adj_Attr_Tbl	IN   Price_Adj_Attr_Tbl_Type                 := G_Miss_PRICE_ADJ_ATTR_Tbl,
4368     P_Price_Adj_Rltship_Tbl	IN   Price_Adj_Rltship_Tbl_Type              := G_Miss_Price_Adj_Rltship_Tbl,
4369     P_Ln_Price_Attributes_Tbl	IN   Price_Attributes_Tbl_Type               := G_Miss_Price_Attributes_Tbl,
4370     P_Ln_Payment_Tbl		IN   Payment_Tbl_Type                        := G_MISS_PAYMENT_TBL,
4371     P_Ln_Shipment_Tbl		IN   Shipment_Tbl_Type                       := G_MISS_SHIPMENT_TBL,
4372     P_Ln_Freight_Charge_Tbl	IN   Freight_Charge_Tbl_Type                 := G_Miss_Freight_Charge_Tbl,
4373     P_Ln_Tax_Detail_Tbl		IN   Tax_Detail_Tbl_Type                     := G_Miss_Tax_Detail_Tbl,
4374     P_ln_Sales_Credit_Tbl       IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
4375     P_ln_Quote_Party_Tbl        IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
4376     P_Qte_Access_Tbl            IN   Qte_Access_Tbl_Type                     := G_MISS_QTE_ACCESS_TBL,
4377     P_Template_Tbl              IN   Template_Tbl_Type                       := G_MISS_TEMPLATE_TBL,
4378     P_Related_Obj_Tbl           IN   Related_Obj_Tbl_Type                    := G_MISS_RELATED_OBJ_TBL,
4379     x_Qte_Header_Rec		OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type,
4380     X_Qte_Line_Tbl		OUT NOCOPY /* file.sql.39 change */  Qte_Line_Tbl_Type,
4381     X_Qte_Line_Dtl_Tbl		OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
4382     X_Hd_Price_Attributes_Tbl	OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
4383     X_Hd_Payment_Tbl		OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
4384     X_Hd_Shipment_Rec		OUT NOCOPY /* file.sql.39 change */  Shipment_Rec_Type,
4385     X_Hd_Freight_Charge_Tbl	OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
4386     X_Hd_Tax_Detail_Tbl		OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
4387     X_hd_Attr_Ext_Tbl		OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
4388     X_hd_Sales_Credit_Tbl       OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
4389     X_hd_Quote_Party_Tbl        OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
4390     x_Line_Attr_Ext_Tbl		OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
4391     X_line_rltship_tbl		OUT NOCOPY /* file.sql.39 change */  Line_Rltship_Tbl_Type,
4392     X_Price_Adjustment_Tbl	OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
4393     X_Price_Adj_Attr_Tbl	OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
4394     X_Price_Adj_Rltship_Tbl	OUT NOCOPY /* file.sql.39 change */  Price_Adj_Rltship_Tbl_Type,
4395     X_Ln_Price_Attributes_Tbl	OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
4396     X_Ln_Payment_Tbl		OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
4397     X_Ln_Shipment_Tbl		OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
4398     X_Ln_Freight_Charge_Tbl	OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
4399     X_Ln_Tax_Detail_Tbl		OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
4400     X_Ln_Sales_Credit_Tbl       OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
4401     X_Ln_Quote_Party_Tbl        OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
4402     X_Qte_Access_Tbl            OUT NOCOPY /* file.sql.39 change */  Qte_Access_Tbl_Type,
4403     X_Template_Tbl              OUT NOCOPY /* file.sql.39 change */  Template_Tbl_Type,
4404     X_Related_Obj_Tbl           OUT NOCOPY /* file.sql.39 change */  Related_Obj_Tbl_Type,
4405     X_Return_Status             OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
4406     X_Msg_Count                 OUT NOCOPY /* file.sql.39 change */  NUMBER,
4407     X_Msg_Data                  OUT NOCOPY /* file.sql.39 change */  VARCHAR2
4408     )
4409 IS
4410     l_api_name                  CONSTANT VARCHAR2(30) := 'CREATE_QUOTE_SERVICE';
4411     l_api_version_number        CONSTANT NUMBER       := 1.0;
4412     l_validation_level          NUMBER;
4413     l_control_rec               Control_Rec_Type;
4414     l_qte_header_rec	        Qte_Header_Rec_Type;
4415     l_hd_shipment_rec	        Shipment_Rec_Type;
4416     l_hd_Payment_Tbl            Payment_Tbl_Type;
4417     l_hd_payment_rec            Payment_Rec_Type :=G_MISS_PAYMENT_REC;
4418     l_hd_Tax_Detail_Tbl         Tax_Detail_Tbl_Type;
4419     l_hd_tax_rec                Tax_Detail_Rec_Type :=G_MiSS_TAX_DETAIL_REC;
4420     lx_qte_header_rec		Qte_Header_Rec_Type := ASO_UTILITY_PVT.Get_Qte_Header_Rec;
4421     lx_hd_shipment_rec 	        Shipment_Rec_Type := ASO_UTILITY_PVT.Get_Shipment_Rec;
4422     lx_hd_payment_rec	        Payment_Rec_Type := ASO_UTILITY_PVT.Get_Payment_Rec;
4423     lx_hd_tax_rec		TAX_DETAIL_REC_TYPE:= aso_utility_pvt.get_Tax_detail_rec;
4424 
4425     l_Qte_Line_Tbl	        Qte_Line_Tbl_Type;
4426     l_Qte_Line_rec	        Qte_Line_Rec_Type := G_MISS_QTE_LINE_REC;
4427     l_ln_shipment_rec           Shipment_Rec_Type := G_MISS_SHIPMENT_REC;
4428     l_ln_shipment_tbl	        Shipment_Tbl_Type;
4429     l_ln_payment_rec            Payment_Rec_Type := G_MISS_PAYMENT_REC;
4430     l_ln_Payment_Tbl            Payment_Tbl_Type;
4431     l_ln_tax_rec                Tax_Detail_Rec_Type :=G_MISS_TAX_DETAIL_REC;
4432     l_ln_Tax_Detail_Tbl         Tax_Detail_Tbl_Type;
4433 
4434     lx_qte_line_rec		QTE_LINE_REC_TYPE   :=ASO_UTILITY_PVT.Get_Qte_Line_Rec;
4435     lx_ln_shipment_rec          Shipment_rec_type   := ASO_UTILITY_PVT.Get_Shipment_Rec;
4436     lx_ln_payment_rec		Payment_Rec_Type    := ASO_UTILITY_PVT.Get_Payment_Rec;
4437     lx_ln_tax_rec		TAX_DETAIL_REC_TYPE :=aso_utility_pvt.get_tax_detail_rec;
4438 
4439     l_ln_misc_rec		ASO_DEFAULTING_INT.LINE_MISC_REC_TYPE :=ASO_utility_pvt.get_line_misc_rec;
4440     l_hd_misc_rec		ASO_DEFAULTING_INT.HEADER_MISC_REC_TYPE:=ASO_utility_pvt.get_header_misc_rec;
4441     lx_ln_misc_rec		ASO_DEFAULTING_INT.LINE_MISC_REC_TYPE :=ASO_utility_pvt.get_line_misc_rec;
4442     lx_hd_misc_rec		ASO_DEFAULTING_INT.HEADER_MISC_REC_TYPE:=ASO_utility_pvt.get_header_misc_rec;
4443 
4444     l_opp_qte_in_rec            ASO_OPP_QTE_PUB.OPP_QTE_IN_REC_TYPE := ASO_OPP_QTE_PUB.G_MISS_OPP_QTE_IN_REC;
4445    -- defaulting related parameters
4446     l_trigger_attribute_tbl     ASO_Defaulting_Int.Attribute_codes_tbl_type := ASO_Defaulting_Int.G_MISS_ATTRIBUTE_CODES_TBL;
4447     l_def_control_rec           ASO_Defaulting_Int.Control_Rec_Type    := ASO_Defaulting_Int.G_Miss_Control_Rec;
4448 
4449     lx_changed_flag		VARCHAR2(1);
4450     lx_return_status		VARCHAR2(1);
4451     lx_msg_count		NUMBER;
4452     lx_msg_data			VARCHAR2(2000);
4453 
4454     l_db_object_name            VARCHAR2(65);
4455 
4456     x_changed_flag		VARCHAR2(1);
4457 
4458     i                           NUMBER;
4459     k                           NUMBER;
4460 -- parameter for quote line
4461     l_inv_org_id                NUMBER;
4462     l_primary_uom_code          VARCHAR2(3);
4463     l_serviceable_product_flag  VARCHAR2(1);
4464     l_bom_item_type             NUMBER;
4465 
4466     -- validate quantity
4467     l_output_qty              NUMBER;
4468     l_primary_qty             NUMBER;
4469     x_valid_quantity          VARCHAR2(1);
4470 
4471     CURSOR C_Get_Master_Org_Id (p_org_id NUMBER) IS
4472         SELECT master_organization_id
4473         FROM oe_system_parameters_all
4474         WHERE org_id = p_org_id;
4475 
4476       -- Cursor to get inventory item info.
4477     CURSOR C_Get_Item_Info(p_inv_org_id NUMBER, p_inv_item_id NUMBER) IS
4478      SELECT primary_uom_code,
4479             serviceable_product_flag ,
4480             bom_item_type
4481       FROM  mtl_system_items_b_kfv
4482       WHERE organization_id = p_inv_org_id
4483         AND inventory_item_id = p_inv_item_id;
4484 
4485 
4486 BEGIN
4487       -- Standard Start of API savepoint
4488       SAVEPOINT CREATE_QUOTE_SERVICE_PUB;
4489 
4490       aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
4491 
4492       -- Standard call to check for call compatibility.
4493       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4494                          	             p_api_version_number,
4495                                            l_api_name,
4496                                            G_PKG_NAME) THEN
4497           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4498       END IF;
4499 
4500       -- Initialize message list if p_init_msg_list is set to TRUE.
4501       IF FND_API.to_Boolean( p_init_msg_list ) THEN
4502           FND_MSG_PUB.initialize;
4503       END IF;
4504 
4505       -- Initialize API return status to SUCCESS
4506       x_return_status := FND_API.G_RET_STS_SUCCESS;
4507 
4508       --
4509       -- API body
4510       --
4511 
4512       -- mapping to local variables
4513       l_qte_header_rec          := P_Qte_Header_Rec;
4514       l_hd_Payment_Tbl          := P_hd_Payment_Tbl;
4515       l_hd_shipment_rec         := P_hd_Shipment_Rec;
4516       l_hd_Tax_Detail_Tbl       := P_hd_Tax_Detail_Tbl;
4517       l_Qte_Line_tbl            := p_Qte_Line_tbl;
4518       l_hd_Payment_Tbl          := p_hd_Payment_Tbl;
4519       l_ln_Payment_Tbl          := P_Ln_Payment_Tbl;
4520       l_ln_shipment_tbl         := P_Ln_Shipment_Tbl;
4521       l_ln_Tax_Detail_Tbl       := P_Ln_Tax_Detail_Tbl;
4522       l_control_rec             := p_control_rec;
4523       l_validation_level        := P_Validation_Level;
4524 
4525       -- Default Header Record
4526       --IF P_Qte_Header_Rec IS NOT NULL
4527       --AND P_Qte_Header_Rec <> G_MISS_Qte_Header_Rec THEN
4528        -- Prepare to call ASO_DEFAULTING_INT.default_entity to default the header record
4529        -- Prepare p_trigger_attribute_table
4530         i:=1;
4531         IF P_Qte_Header_Rec.org_id IS NULL OR P_Qte_Header_Rec.org_id=FND_API.G_MISS_NUM THEN
4532           l_Qte_Header_Rec.org_id := TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'),1,10));
4533         END IF;
4534         l_trigger_attribute_tbl(i):='Q_ORG_ID';
4535         i := i+1;
4536 
4537         IF P_Qte_Header_Rec.original_system_reference IS NOT NULL
4538           AND P_Qte_Header_Rec.original_system_reference <> FND_API.G_MISS_CHAR THEN
4539            l_Qte_Header_Rec.original_system_reference := 'AIA_'||P_Qte_Header_Rec.original_system_reference;
4540         ELSE
4541            l_Qte_Header_Rec.original_system_reference := 'AIA';
4542         END IF;
4543 
4544         IF P_Qte_Header_Rec.order_type_id IS NOT NULL AND P_Qte_Header_Rec.order_type_id<>FND_API.G_MISS_NUM  THEN
4545           l_trigger_attribute_tbl(i):='Q_ORDER_TYPE_ID';
4546           i := i+1;
4547         END IF;
4548 
4549         IF P_Qte_Header_Rec.contract_id IS NOT NULL AND P_Qte_Header_Rec.contract_id <>FND_API.G_MISS_NUM THEN
4550           l_trigger_attribute_tbl(i):='Q_CONTRACT_ID';
4551           i := i+1;
4552         END IF;
4553 
4554         IF P_Qte_Header_Rec.price_list_id IS NOT NULL AND P_Qte_Header_Rec.price_list_id<>FND_API.G_MISS_NUM  THEN
4555           l_trigger_attribute_tbl(i):='Q_PRICE_LIST_ID';
4556           i := i+1;
4557         END IF;
4558 
4559         IF P_Qte_Header_Rec.resource_id IS NOT NULL AND P_Qte_Header_Rec.resource_id<>FND_API.G_MISS_NUM THEN
4560           l_trigger_attribute_tbl(i):='Q_RESOURCE_ID';
4561           i := i+1;
4562         END IF;
4563 
4564         IF P_Qte_Header_Rec.CUST_PARTY_ID IS NOT NULL
4565           AND P_Qte_Header_Rec.CUST_PARTY_ID <>FND_API.G_MISS_NUM  THEN
4566           l_trigger_attribute_tbl(i):='Q_CUST_PARTY_ID';
4567           i := i+1;
4568         END IF;
4569 
4570         IF P_Qte_Header_Rec.CUST_ACCOUNT_ID IS NOT NULL
4571           AND P_Qte_Header_Rec.CUST_ACCOUNT_ID <> FND_API.G_MISS_NUM  THEN
4572           l_trigger_attribute_tbl(i):='Q_CUST_ACCOUNT_ID';
4573           i := i+1;
4574         END IF;
4575 
4576         IF P_Qte_Header_Rec.INVOICE_TO_CUST_ACCOUNT_ID IS NOT NULL
4577           AND P_Qte_Header_Rec.INVOICE_TO_CUST_ACCOUNT_ID<>FND_API.G_MISS_NUM THEN
4578           l_trigger_attribute_tbl(i):='Q_INV_TO_CUST_ACCT_ID';
4579           i := i+1;
4580         END IF;
4581 
4582         IF P_Qte_Header_Rec.INVOICE_TO_PARTY_SITE_ID IS NOT NULL
4583           AND P_Qte_Header_Rec.INVOICE_TO_PARTY_SITE_ID <>FND_API.G_MISS_NUM THEN
4584           l_trigger_attribute_tbl(i):='Q_INV_TO_PTY_SITE_ID';
4585           i := i+1;
4586         END IF;
4587       --END IF; -- quote header record attributes
4588       --IF P_hd_Shipment_Rec IS NOT NULL
4589       --  AND P_hd_Shipment_Rec <> G_MISS_SHIPMENT_REC THEN
4590         IF P_hd_shipment_Rec.SHIP_TO_CUST_ACCOUNT_ID IS NOT NULL
4591           AND P_hd_Shipment_Rec.SHIP_TO_CUST_ACCOUNT_ID<>FND_API.G_MISS_NUM THEN
4592           l_trigger_attribute_tbl(i):='Q_SHIP_TO_CUST_ACCT_ID';
4593           i := i+1;
4594         END IF;
4595         IF P_hd_shipment_Rec.SHIP_TO_PARTY_SITE_ID IS NOT NULL
4596           AND P_hd_Shipment_Rec.SHIP_TO_PARTY_SITE_ID<>FND_API.G_MISS_NUM THEN
4597           l_trigger_attribute_tbl(i):='Q_SHIP_TO_PARTY_SITE_ID';
4598         END IF;
4599       --END IF;
4600 
4601       -- set header defaulting control record
4602       -- set control record
4603     l_def_control_rec.override_Trigger_Flag := FND_API.G_FALSE;
4604     l_def_control_rec.dependency_Flag := FND_API.G_FALSE;
4605     l_def_control_rec.defaulting_Flag := FND_API.G_TRUE;
4606     l_def_control_rec.application_type_code := 'QUOTING HTML';
4607     l_def_control_rec.defaulting_flow_code := 'CREATE';
4608 
4609     l_db_object_name := 'ASO_AK_QUOTE_HEADER_V';
4610 
4611     Aso_Defaulting_Int.Default_Entity (
4612       P_API_VERSION               =>      1.0,
4613       P_INIT_MSG_LIST             =>      FND_API.G_TRUE,
4614       P_COMMIT                    =>      FND_API.G_TRUE,
4615       P_CONTROL_REC               =>      l_def_control_rec,
4616       P_DATABASE_OBJECT_NAME      =>      l_db_object_name,
4617       P_TRIGGER_ATTRIBUTES_TBL    =>      l_trigger_attribute_tbl,
4618       P_QUOTE_HEADER_REC          =>      l_qte_header_rec,
4619       P_OPP_QTE_HEADER_REC        =>      l_opp_qte_in_rec,
4620       P_HEADER_MISC_REC           =>      l_hd_Misc_Rec,
4621       P_HEADER_SHIPMENT_REC       =>      l_hd_shipment_rec,
4622       P_HEADER_PAYMENT_REC        =>      l_hd_payment_rec,
4623       P_HEADER_TAX_DETAIL_REC     =>      l_hd_tax_rec,
4624       P_QUOTE_LINE_REC            =>      l_qte_line_rec,
4625       P_LINE_MISC_REC             =>      l_ln_Misc_Rec,
4626       P_LINE_SHIPMENT_REC         =>      l_ln_shipment_rec,
4627       P_LINE_PAYMENT_REC          =>      l_ln_payment_rec,
4628       P_LINE_TAX_DETAIL_REC       =>      l_ln_tax_rec,
4629       X_QUOTE_HEADER_REC          =>      lx_qte_header_rec,
4630       X_HEADER_MISC_REC           =>      lx_hd_Misc_Rec,
4631       X_HEADER_SHIPMENT_REC       =>      lx_hd_shipment_rec,
4632       X_HEADER_PAYMENT_REC        =>      lx_hd_payment_rec,
4633       X_HEADER_TAX_DETAIL_REC     =>      lx_hd_tax_rec,
4634       X_QUOTE_LINE_REC            =>      lx_qte_line_rec,
4635       X_LINE_MISC_REC             =>      lx_ln_Misc_Rec,
4636       X_LINE_SHIPMENT_REC         =>      lx_ln_shipment_rec,
4637       X_LINE_PAYMENT_REC          =>      lx_ln_payment_rec,
4638       X_LINE_TAX_DETAIL_REC       =>      lx_ln_tax_rec,
4639       X_CHANGED_FLAG              =>      lx_changed_flag,
4640       X_RETURN_STATUS             =>      x_return_status,
4641       X_MSG_COUNT                 =>      x_msg_count,
4642       X_MSG_DATA                  =>      x_msg_data
4643     );
4644 
4645     IF aso_debug_pub.g_debug_flag = 'Y' THEN
4646       aso_debug_pub.add('create_quote_service: after call default header entity '||lx_return_status,1, 'N');
4647     END IF;
4648     /*
4649     DBMS_OUTPUT.PUT_LINE('header default entity call return= ' || x_return_status);
4650     DBMS_OUTPUT.PUT_LINE('status id = ' || lx_qte_header_rec.quote_status_id);
4651     DBMS_OUTPUT.PUT_LINE('resource id= ' || lx_qte_header_rec.resource_id);
4652     DBMS_OUTPUT.PUT_LINE('header price list id = ' || lx_qte_header_rec.price_list_id);
4653     DBMS_OUTPUT.PUT_LINE('currenty code = ' || lx_qte_header_rec.currency_code);
4654     DBMS_OUTPUT.PUT_LINE('quote_expiration_date = ' || lx_qte_header_rec.quote_expiration_date);
4655     DBMS_OUTPUT.PUT_LINE('automatic price flag = ' || lx_qte_header_rec.automatic_price_flag);
4656     DBMS_OUTPUT.PUT_LINE('automatic tax flag = ' || lx_qte_header_rec.automatic_tax_flag);
4657     DBMS_OUTPUT.PUT_LINE('contract template id = ' || lx_qte_header_rec.contract_template_id);
4658     DBMS_OUTPUT.PUT_LINE('created by = ' || lx_qte_header_rec.created_by);
4659     DBMS_OUTPUT.PUT_LINE('org_id = ' || lx_qte_header_rec.org_id);
4660     DBMS_OUTPUT.PUT_LINE('order_type_id = ' || lx_qte_header_rec.order_type_id);
4661     DBMS_OUTPUT.PUT_LINE('ship_to_party_site_id = ' || lx_hd_shipment_rec.ship_to_party_site_id);
4662     DBMS_OUTPUT.PUT_LINE('ship_to_cust_accuont_id = ' || lx_hd_shipment_rec.ship_to_cust_account_id);
4663     */
4664     -- Check return status from the above procedure call
4665     IF x_return_status = FND_API.G_RET_STS_ERROR then
4666           raise FND_API.G_EXC_ERROR;
4667     elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
4668           raise FND_API.G_EXC_UNEXPECTED_ERROR;
4669     END IF;
4670     -- validate defaulting data
4671     /*
4672     ASO_VALIDATE_PVT.VALIDATE_DEFAULTING_DATA(
4673 	P_quote_header_rec    =>lx_qte_header_rec,
4674 	P_quote_line_rec      =>lx_qte_line_rec,
4675 	P_Shipment_header_rec =>lx_hd_shipment_rec,
4676 	P_shipment_line_rec   =>lx_ln_shipment_rec,
4677 	P_Payment_header_rec  =>lx_hd_payment_rec,
4678 	P_Payment_line_rec    =>lx_ln_payment_rec,
4679 	P_tax_header_rec      =>lx_hd_tax_rec,
4680 	P_tax_line_rec        =>lx_ln_tax_rec,
4681 	p_def_object_name     =>l_db_object_name,
4682 	X_quote_header_rec    =>lx_qte_header_rec,
4683 	X_quote_line_rec      =>lx_qte_line_rec,
4684 	X_Shipment_header_rec =>lx_hd_shipment_rec,
4685 	X_Shipment_line_rec   =>lx_ln_shipment_rec,
4686 	X_Payment_header_rec  =>lx_hd_payment_rec,
4687 	X_Payment_line_rec    =>lx_ln_payment_rec,
4688 	X_tax_header_rec      =>lx_hd_tax_Rec,
4689 	X_tax_line_rec        =>lx_ln_tax_rec,
4690 	X_RETURN_STATUS       => x_return_Status,
4691 	X_MSG_DATA            => x_msg_data,
4692 	X_MSG_COUNT           => x_msg_count);
4693 
4694     IF aso_debug_pub.g_debug_flag = 'Y' THEN
4695       aso_debug_pub.add('create_quote_service: after call default header entity validation)'||lx_return_status,1, 'N');
4696     END IF;
4697     DBMS_OUTPUT.PUT_LINE('header default validaton return=' || x_return_status);
4698     IF lx_return_status = FND_API.G_RET_STS_ERROR then
4699           raise FND_API.G_EXC_ERROR;
4700     elsif lx_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
4701           raise FND_API.G_EXC_UNEXPECTED_ERROR;
4702     END IF;
4703     */
4704     l_qte_header_rec := lx_qte_header_rec;
4705     l_hd_shipment_rec := lx_hd_shipment_rec;
4706     l_hd_payment_rec := lx_hd_payment_rec;
4707     l_hd_payment_tbl(1) := l_hd_payment_rec;
4708 
4709     -- check additional columns
4710     IF(l_qte_header_rec.quote_source_code IS NULL
4711       OR l_qte_header_rec.quote_source_code <> FND_API.G_MISS_CHAR) THEN
4712         l_qte_header_rec.quote_source_code := 'Order Capture Quotes';
4713     END IF;
4714 
4715     -- Loop over lines and prepare lines Recored
4716     l_db_object_name := 'ASO_AK_QUOTE_LINE_V';
4717     -- control record for lines defaulting
4718     l_def_control_rec.override_Trigger_Flag := FND_API.G_FALSE;
4719     l_def_control_rec.dependency_Flag := FND_API.G_FALSE;
4720     l_def_control_rec.defaulting_Flag := FND_API.G_TRUE;
4721     l_def_control_rec.application_type_code := 'QUOTING HTML';
4722     l_def_control_rec.defaulting_flow_code := 'CREATE';
4723 
4724     OPEN C_Get_Master_Org_Id (l_qte_header_rec.org_id);
4725     FETCH C_Get_Master_Org_Id INTO l_inv_org_id;
4726     CLOSE C_Get_Master_Org_Id;
4727 
4728 --    IF (p_qte_line_tbl IS NOT NULL AND p_qte_line_tbl <> G_MISS_QTE_LINE_TBL) THEN
4729       FOR i IN 1..p_qte_line_tbl.count LOOP
4730 
4731         l_qte_line_tbl(i).operation_code := 'CREATE';
4732         l_qte_line_tbl(i).organization_id := l_inv_org_id;
4733 
4734         OPEN C_Get_Item_Info (l_inv_org_id, l_qte_line_tbl(i).inventory_item_id);
4735           FETCH C_Get_Item_Info INTO l_primary_uom_code, l_serviceable_product_flag, l_bom_item_type;
4736         CLOSE C_Get_Item_Info;
4737 
4738         IF (l_qte_line_tbl(i).uom_code IS NULL
4739           OR l_qte_line_tbl(i).uom_code = FND_API.G_MISS_CHAR) THEN
4740           l_qte_line_tbl(i).uom_code := l_primary_uom_code;
4741         END IF;
4742 
4743         IF l_bom_item_type = 1 THEN -- model item
4744           l_qte_line_tbl(i).item_type_code := 'MDL';
4745         ELSE
4746           IF l_serviceable_product_flag = 'Y' THEN
4747             l_qte_line_tbl(i).item_type_code := 'SVA';
4748           ELSE
4749             l_qte_line_tbl(i).item_type_code := 'STD';
4750           END IF;
4751         END IF;
4752 
4753         IF aso_debug_pub.g_debug_flag = 'Y' THEN
4754           ASO_QUOTE_UTIL_PVT.debug('Create_Quote_Service: line '|| i);
4755           ASO_QUOTE_UTIL_PVT.debug('inventory_item_id '|| l_qte_line_tbl(i).inventory_item_id);
4756           ASO_QUOTE_UTIL_PVT.debug('l_inv_org_id '|| l_inv_org_id);
4757           ASO_QUOTE_UTIL_PVT.debug('uom_code '|| l_qte_line_tbl(i).uom_code);
4758           ASO_QUOTE_UTIL_PVT.debug('item_type_code '||l_qte_line_tbl(i).item_type_code );
4759           ASO_QUOTE_UTIL_PVT.debug('quantity '||l_qte_line_tbl(i).quantity );
4760         END IF;
4761 
4762           -- validate quantity
4763         inv_decimals_pub.validate_quantity(
4764             l_qte_line_tbl(i).inventory_item_id,
4765             l_inv_org_id,
4766             l_qte_line_tbl(i).quantity,
4767             l_qte_line_tbl(i).uom_code,
4768             l_output_qty,
4769             l_primary_qty,
4770             x_valid_quantity);
4771         IF aso_debug_pub.g_debug_flag = 'Y' THEN
4772           ASO_QUOTE_UTIL_PVT.debug('Returning from INV_DECIMALS_PUB.validate_quantity ' || TO_CHAR(SYSDATE,'DD-MON-YYYY:HH24:MI:SS'));
4773         END IF;
4774 
4775         -- Prepare l_trigger_attribute_tbl
4776         l_trigger_attribute_tbl := ASO_Defaulting_Int.G_MISS_ATTRIBUTE_CODES_TBL;
4777 
4778         k :=1;
4779 	IF (p_qte_line_tbl(i).order_line_type_id IS NOT NULL
4780           AND p_qte_line_tbl(i).order_line_type_id <> FND_API.G_MISS_NUM) THEN
4781           l_trigger_attribute_tbl(k) :='L_ORDER_LINE_TYPE_ID';
4782           k := k+1;
4783         END IF;
4784 
4785 	IF (p_qte_line_tbl(i).agreement_id IS NOT NULL
4786           AND p_qte_line_tbl(i).agreement_id <> FND_API.G_MISS_NUM) THEN
4787           l_trigger_attribute_tbl(k) :='L_AGREEMENT_ID';
4788           k := k+1;
4789         END IF;
4790 
4791         IF (p_qte_line_tbl(i).invoice_to_cust_account_id IS NOT NULL
4792           AND p_qte_line_tbl(i).invoice_to_cust_account_id <> FND_API.G_MISS_NUM) THEN
4793           l_trigger_attribute_tbl(k) :='L_INV_TO_CUST_ACCT_ID';
4794           k := k+1;
4795         END IF;
4796 
4797         IF (p_qte_line_tbl(i).invoice_to_party_site_id IS NOT NULL
4798           AND p_qte_line_tbl(i).invoice_to_party_site_id <> FND_API.G_MISS_NUM) THEN
4799           l_trigger_attribute_tbl(k) :='L_INV_TO_PTY_SITE_ID';
4800           k := k+1;
4801         END IF;
4802 /*
4803 	IF (p_qte_line_tbl(i).line_ship_to_cust_acct_number IS NOT NULL
4804           AND p_qte_line_tbl(i).line_ship_to_cust_acct_number <> FND_API.G_MISS_NUM) THEN
4805           l_trigger_attribute_tbl(k) := 'L_SHIP_TO_CUST_ACCT_ID';
4806           k := k+1;
4807         END IF;
4808 
4809 	IF (p_qte_line_tbl(i).ship_to_address1 IS NOT NULL
4810           AND p_qte_line_tbl(i).ship_to_address1 <> FND_API.G_MISS_CHAR) THEN
4811           l_trigger_attribute_tbl(k) := 'L_SHIP_TO_PARTY_SITE_ID';
4812           k := k+1;
4813         END IF;
4814   */
4815 	IF (p_qte_line_tbl(i).price_list_id IS NOT NULL
4816           AND p_qte_line_tbl(i).price_list_id <> FND_API.G_MISS_NUM) THEN
4817           l_trigger_attribute_tbl(k) := 'L_PRICE_LIST_ID';
4818         END IF;
4819 
4820         l_qte_line_rec := p_qte_line_tbl(i);
4821 
4822         Aso_Defaulting_Int.Default_Entity (
4823           P_API_VERSION               =>      1.0,
4824           P_INIT_MSG_LIST             =>      FND_API.G_TRUE,
4825           P_COMMIT                    =>      FND_API.G_TRUE,
4826           P_CONTROL_REC               =>      l_def_control_rec,
4827           P_DATABASE_OBJECT_NAME      =>      l_db_object_name,
4828           P_TRIGGER_ATTRIBUTES_TBL    =>      l_trigger_attribute_tbl,
4829           P_QUOTE_HEADER_REC          =>      l_qte_header_rec,
4830           P_OPP_QTE_HEADER_REC        =>      l_opp_qte_in_rec,
4831           P_HEADER_MISC_REC           =>      l_hd_Misc_Rec,
4832           P_HEADER_SHIPMENT_REC       =>      l_hd_shipment_rec,
4833           P_HEADER_PAYMENT_REC        =>      l_hd_payment_rec,
4834           P_HEADER_TAX_DETAIL_REC     =>      l_hd_tax_rec,
4835           P_QUOTE_LINE_REC            =>      l_qte_line_rec,
4836           P_LINE_MISC_REC             =>      l_ln_Misc_Rec,
4837           P_LINE_SHIPMENT_REC         =>      l_ln_shipment_rec,
4838           P_LINE_PAYMENT_REC          =>      l_ln_payment_rec,
4839           P_LINE_TAX_DETAIL_REC       =>      l_ln_tax_rec,
4840           X_QUOTE_HEADER_REC          =>      lx_qte_header_rec,
4841           X_HEADER_MISC_REC           =>      lx_hd_Misc_Rec,
4842           X_HEADER_SHIPMENT_REC       =>      lx_hd_shipment_rec,
4843           X_HEADER_PAYMENT_REC        =>      lx_hd_payment_rec,
4844           X_HEADER_TAX_DETAIL_REC     =>      lx_hd_tax_rec,
4845           X_QUOTE_LINE_REC            =>      lx_qte_line_rec,
4846           X_LINE_MISC_REC             =>      lx_ln_Misc_Rec,
4847           X_LINE_SHIPMENT_REC         =>      lx_ln_shipment_rec,
4848           X_LINE_PAYMENT_REC          =>      lx_ln_payment_rec,
4849           X_LINE_TAX_DETAIL_REC       =>      lx_ln_tax_rec,
4850           X_CHANGED_FLAG              =>      lx_changed_flag,
4851           X_RETURN_STATUS             =>      x_return_status,
4852           X_MSG_COUNT                 =>      x_msg_count,
4853           X_MSG_DATA                  =>      x_msg_data
4854         );
4855 
4856         IF aso_debug_pub.g_debug_flag = 'Y' THEN
4857           aso_debug_pub.add('create_quote_service: after call default line entity '||k||lx_return_status,1, 'N');
4858         END IF;
4859         -- Check return status from the above procedure call
4860         IF x_return_status = FND_API.G_RET_STS_ERROR then
4861           raise FND_API.G_EXC_ERROR;
4862         elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
4863           raise FND_API.G_EXC_UNEXPECTED_ERROR;
4864         END IF;
4865 
4866         l_qte_line_tbl (i) :=  lx_qte_line_rec;
4867 
4868         -- additional check
4869         IF l_qte_line_tbl(i).line_category_code IS NULL
4870           OR l_qte_line_tbl(i).line_category_code <> FND_API.G_MISS_CHAR THEN
4871           l_qte_line_tbl(i).line_category_code := 'ORDER';
4872         END IF;
4873 
4874       END LOOP;
4875    -- END IF;
4876 
4877     -- Prepare control record to call create_quote
4878     -- call create_quote api
4879 
4880           -- Prepare Control Record
4881     IF aso_debug_pub.g_debug_flag = 'Y' THEN
4882       aso_debug_pub.add('ASO_QUOTE_PUB.Create_Quote_Service: Start to prepare control record');
4883       aso_debug_pub.add('Profile Value ASO_CALCULATE_PRICE is ' ||fnd_profile.value('ASO_CALCULATE_PRICE'), 1, 'N');
4884       aso_debug_pub.add('Profile Value ASO_CALCULATE_TAX is ' ||fnd_profile.value('ASO_CALCULATE_TAX'), 1, 'N');
4885     END IF;
4886 
4887     IF NVL(FND_PROFILE.VALUE('ASO_CALCULATE_PRICE'), 'A')='M' THEN
4888       l_control_rec.pricing_request_type := 'ASO';
4889       l_control_rec.price_mode := NULL;
4890       l_control_rec.header_pricing_event := NULL;
4891       l_control_rec.calculate_freight_charge_flag := 'N';
4892       l_qte_header_rec.pricing_status_indicator := 'I';
4893     ELSE
4894       l_control_rec.pricing_request_type :='ASO';
4895       l_control_rec.price_mode := 'ENTIRE_QUOTE';
4896       l_control_rec.header_pricing_event := 'BATCH';
4897       l_control_rec.calculate_freight_charge_flag := 'Y';
4898       l_qte_header_rec.pricing_status_indicator := 'C';
4899     END IF;
4900 
4901     IF NVL(FND_PROFILE.VALUE('ASO_CALCULATE_TAX'), 'A')='M' THEN
4902       l_control_rec.calculate_tax_flag := 'N';
4903       l_qte_header_rec.tax_status_indicator := 'I';
4904     ELSE
4905       l_control_rec.calculate_tax_flag := 'Y';
4906       l_qte_header_rec.tax_status_indicator := 'C';
4907     END IF;
4908 
4909    Create_quote(
4910 	    P_Api_Version_Number        => 1.0,
4911 	    P_Init_Msg_List		=> p_init_msg_list,
4912 	    P_Commit			=> p_commit,
4913 	    P_Control_Rec		=> p_control_rec,
4914 	    P_qte_header_rec		=> l_qte_header_rec,
4915 	    P_Hd_Price_Attributes_Tbl	=> p_Hd_Price_Attributes_Tbl,
4916 	    P_Hd_Payment_Tbl		=> l_Hd_Payment_Tbl,
4917 	    P_Hd_Shipment_Rec		=> l_Hd_Shipment_Rec,
4918 	    P_Hd_Freight_Charge_Tbl	=> p_Hd_Freight_Charge_Tbl,
4919 	    P_Hd_Tax_Detail_Tbl		=> p_Hd_Tax_Detail_Tbl,
4920 	    P_Qte_Line_Tbl		=> l_Qte_Line_Tbl,
4921 	    P_Qte_Line_Dtl_Tbl		=> p_Qte_Line_Dtl_Tbl,
4922 	    P_Line_Attr_Ext_Tbl		=> P_Line_Attr_Ext_Tbl,
4923 	    P_Line_rltship_tbl		=> p_Line_Rltship_Tbl,
4924 	    P_Price_Adjustment_Tbl	=> p_Price_Adjustment_Tbl,
4925 	    P_Price_Adj_Attr_Tbl	=> P_Price_Adj_Attr_Tbl,
4926 	    P_Price_Adj_Rltship_Tbl	=> p_Price_Adj_Rltship_Tbl,
4927 	    P_Ln_Price_Attributes_Tbl	=> p_Ln_Price_Attributes_Tbl,
4928 	    P_Ln_Payment_Tbl		=> p_Ln_Payment_Tbl,
4929 	    P_Ln_Shipment_Tbl		=> p_Ln_Shipment_Tbl,
4930 	    P_Ln_Freight_Charge_Tbl	=> p_Ln_Freight_Charge_Tbl,
4931 	    P_Ln_Tax_Detail_Tbl		=> p_Ln_Tax_Detail_Tbl,
4932 	    x_qte_header_rec		=> x_qte_header_rec,
4933 	    X_Hd_Price_Attributes_Tbl	=> x_Hd_Price_Attributes_Tbl,
4934 	    X_Hd_Payment_Tbl		=> x_Hd_Payment_Tbl,
4935 	    X_Hd_Shipment_Rec		=> x_Hd_Shipment_Rec,
4936 	    X_Hd_Freight_Charge_Tbl	=> x_Hd_Freight_Charge_Tbl,
4937 	    X_Hd_Tax_Detail_Tbl		=> x_Hd_Tax_Detail_Tbl,
4938             X_hd_Attr_Ext_Tbl		=> x_hd_Attr_Ext_Tbl,
4939             X_hd_Sales_Credit_Tbl       => x_hd_Sales_Credit_Tbl,
4940             X_hd_Quote_Party_Tbl        => x_hd_Quote_Party_Tbl,
4941 	    X_Qte_Line_Tbl		=> x_Qte_Line_Tbl,
4942 	    X_Qte_Line_Dtl_Tbl		=> x_Qte_Line_Dtl_Tbl,
4943 	    x_Line_Attr_Ext_Tbl		=> x_Line_Attr_Ext_Tbl,
4944 	    X_Line_rltship_tbl		=> x_Line_Rltship_Tbl,
4945 	    X_Price_Adjustment_Tbl	=> x_Price_Adjustment_Tbl,
4946 	    x_Price_Adj_Attr_Tbl	=> x_Price_Adj_Attr_Tbl,
4947 	    X_Price_Adj_Rltship_Tbl	=> x_Price_Adj_Rltship_Tbl,
4948 	    X_Ln_Price_Attributes_Tbl	=> x_Ln_Price_Attributes_Tbl,
4949 	    X_Ln_Payment_Tbl		=> x_Ln_Payment_Tbl,
4950 	    X_Ln_Shipment_Tbl		=> x_Ln_Shipment_Tbl,
4951 	    X_Ln_Freight_Charge_Tbl	=> x_Ln_Freight_Charge_Tbl,
4952 	    X_Ln_Tax_Detail_Tbl		=> x_Ln_Tax_Detail_Tbl,
4953             X_Ln_Sales_Credit_Tbl       => x_ln_Sales_Credit_Tbl,
4954             X_Ln_Quote_Party_Tbl        => x_ln_Quote_Party_Tbl,
4955             x_Qte_Access_Tbl            => x_Qte_Access_Tbl,
4956             x_Template_Tbl              => x_Template_Tbl,
4957 	    X_Related_Obj_Tbl           => X_Related_Obj_Tbl,
4958 	    X_Return_Status             => x_return_status,
4959 	    X_Msg_Count                 => x_msg_count,
4960 	    X_Msg_Data                  => x_msg_data);
4961 
4962       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4963               aso_debug_pub.add('create_quote_service_pub: after create_quote'||x_return_status,1, 'N');
4964       END IF;
4965 
4966       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4967 
4968         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4969 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
4970 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_PUB.Create_Quote', FALSE);
4971 		        FND_MSG_PUB.ADD;
4972         END IF;
4973 
4974         IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4975                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4976         ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
4977                    RAISE FND_API.G_EXC_ERROR;
4978         END IF;
4979 
4980       END IF;
4981 
4982 
4983       -- Standard check for p_commit
4984       IF FND_API.to_Boolean( p_commit ) THEN
4985           COMMIT WORK;
4986       END IF;
4987 
4988       -- Standard call to get message count and if count is 1, get message info.
4989       FND_MSG_PUB.Count_And_Get
4990       (  p_count          =>   x_msg_count,
4991          p_data           =>   x_msg_data
4992       );
4993 
4994       EXCEPTION
4995 
4996 	  WHEN FND_API.G_EXC_ERROR THEN
4997 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
4998 		   P_API_NAME => L_API_NAME
4999 		  ,P_PKG_NAME => G_PKG_NAME
5000 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
5001 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
5002 		  ,P_SQLCODE => SQLCODE
5003 		  ,P_SQLERRM => SQLERRM
5004 		  ,X_MSG_COUNT => X_MSG_COUNT
5005 		  ,X_MSG_DATA => X_MSG_DATA
5006 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
5007 
5008 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5009 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
5010 		   P_API_NAME => L_API_NAME
5011 		  ,P_PKG_NAME => G_PKG_NAME
5012 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5013 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
5014 		  ,P_SQLCODE => SQLCODE
5015 		  ,P_SQLERRM => SQLERRM
5016 		  ,X_MSG_COUNT => X_MSG_COUNT
5017 		  ,X_MSG_DATA => X_MSG_DATA
5018 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
5019 
5020 	  WHEN OTHERS THEN
5021 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
5022 		   P_API_NAME => L_API_NAME
5023 		  ,P_PKG_NAME => G_PKG_NAME
5024 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
5025 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
5026 		  ,P_SQLCODE => SQLCODE
5027 		  ,P_SQLERRM => SQLERRM
5028 		  ,X_MSG_COUNT => X_MSG_COUNT
5029 		  ,X_MSG_DATA => X_MSG_DATA
5030 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
5031 
5032 END; -- Create_Quote_Service
5033 
5034 
5035 --   *******************************************************
5036 --    Start of Comments
5037 --   *******************************************************
5038 --   API Name:  Update_quote
5039 --   Type    :  Public
5040 --   Pre-Req :
5041 --   Parameters:
5042 
5043 --  This is an overloaded procedure. It takes additional attributes
5044 --  which include the hd_attributes, sales credits and quote party record types
5045 
5046 
5047 PROCEDURE Update_quote(
5048     P_Api_Version_Number         IN   NUMBER,
5049     P_Init_Msg_List              IN   VARCHAR2                                := FND_API.G_FALSE,
5050     P_Commit                     IN   VARCHAR2                                := FND_API.G_FALSE,
5051     P_Validation_Level 	        IN   NUMBER                                  := FND_API.G_VALID_LEVEL_FULL,
5052     P_Control_Rec		        IN   Control_Rec_Type                        := G_Miss_Control_Rec,
5053     P_Qte_Header_Rec		   IN   Qte_Header_Rec_Type                     := G_MISS_Qte_Header_Rec,
5054     P_hd_Price_Attributes_Tbl	   IN   ASO_QUOTE_PUB.Price_Attributes_Tbl_Type := G_Miss_Price_Attributes_Tbl,
5055     P_hd_Payment_Tbl		   IN   ASO_QUOTE_PUB.Payment_Tbl_Type          := G_MISS_PAYMENT_TBL,
5056     P_hd_Shipment_Tbl		   IN   ASO_QUOTE_PUB.Shipment_Tbl_Type         := G_MISS_SHIPMENT_TBL,
5057     P_hd_Freight_Charge_Tbl	   IN   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type   := G_Miss_Freight_Charge_Tbl,
5058     P_hd_Tax_Detail_Tbl		   IN   ASO_QUOTE_PUB.Tax_Detail_Tbl_Type       := G_Miss_Tax_Detail_Tbl,
5059     P_hd_Attr_Ext_Tbl		   IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
5060     P_hd_Sales_Credit_Tbl        IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
5061     P_hd_Quote_Party_Tbl         IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
5062     P_Qte_Line_Tbl		        IN   Qte_Line_Tbl_Type                       := G_MISS_QTE_LINE_TBL,
5063     P_Qte_Line_Dtl_Tbl		   IN   Qte_Line_Dtl_Tbl_Type                   := G_MISS_QTE_LINE_DTL_TBL,
5064     P_Line_Attr_Ext_Tbl		   IN   Line_Attribs_Ext_Tbl_Type               := G_MISS_Line_Attribs_Ext_TBL,
5065     P_line_rltship_tbl		   IN   Line_Rltship_Tbl_Type                   := G_MISS_Line_Rltship_Tbl,
5066     P_Price_Adjustment_Tbl	   IN   Price_Adj_Tbl_Type                      := G_Miss_Price_Adj_Tbl,
5067     P_Price_Adj_Attr_Tbl	        IN   Price_Adj_Attr_Tbl_Type                 := G_Miss_PRICE_ADJ_ATTR_Tbl,
5068     P_Price_Adj_Rltship_Tbl	   IN   Price_Adj_Rltship_Tbl_Type              := G_Miss_Price_Adj_Rltship_Tbl,
5069     P_Ln_Price_Attributes_Tbl	   IN   Price_Attributes_Tbl_Type               := G_Miss_Price_Attributes_Tbl,
5070     P_Ln_Payment_Tbl		   IN   Payment_Tbl_Type                        := G_MISS_PAYMENT_TBL,
5071     P_Ln_Shipment_Tbl		   IN   Shipment_Tbl_Type                       := G_MISS_SHIPMENT_TBL,
5072     P_Ln_Freight_Charge_Tbl	   IN   Freight_Charge_Tbl_Type                 := G_Miss_Freight_Charge_Tbl,
5073     P_Ln_Tax_Detail_Tbl		   IN   Tax_Detail_Tbl_Type                     := G_Miss_Tax_Detail_Tbl,
5074     P_ln_Sales_Credit_Tbl        IN   Sales_Credit_Tbl_Type                   := G_MISS_Sales_Credit_Tbl,
5075     P_ln_Quote_Party_Tbl         IN   Quote_Party_Tbl_Type                    := G_MISS_Quote_Party_Tbl,
5076     P_Qte_Access_Tbl             IN   Qte_Access_Tbl_Type                     := G_MISS_QTE_ACCESS_TBL,
5077     P_Template_Tbl               IN   Template_Tbl_Type                       := G_MISS_TEMPLATE_TBL,
5078     P_Related_Obj_Tbl            IN   Related_Obj_Tbl_Type                    := G_MISS_RELATED_OBJ_TBL,
5079     x_Qte_Header_Rec		   OUT NOCOPY /* file.sql.39 change */  Qte_Header_Rec_Type,
5080     X_Qte_Line_Tbl		        OUT NOCOPY /* file.sql.39 change */  Qte_Line_Tbl_Type,
5081     X_Qte_Line_Dtl_Tbl		   OUT NOCOPY /* file.sql.39 change */  Qte_Line_Dtl_Tbl_Type,
5082     X_Hd_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
5083     X_Hd_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
5084     X_Hd_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
5085     X_Hd_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
5086     X_Hd_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
5087     X_hd_Attr_Ext_Tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
5088     X_hd_Sales_Credit_Tbl        OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
5089     X_hd_Quote_Party_Tbl         OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
5090     x_Line_Attr_Ext_Tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Attribs_Ext_Tbl_Type,
5091     X_line_rltship_tbl		   OUT NOCOPY /* file.sql.39 change */  Line_Rltship_Tbl_Type,
5092     X_Price_Adjustment_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Tbl_Type,
5093     X_Price_Adj_Attr_Tbl	        OUT NOCOPY /* file.sql.39 change */  Price_Adj_Attr_Tbl_Type,
5094     X_Price_Adj_Rltship_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Adj_Rltship_Tbl_Type,
5095     X_Ln_Price_Attributes_Tbl	   OUT NOCOPY /* file.sql.39 change */  Price_Attributes_Tbl_Type,
5096     X_Ln_Payment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Payment_Tbl_Type,
5097     X_Ln_Shipment_Tbl		   OUT NOCOPY /* file.sql.39 change */  Shipment_Tbl_Type,
5098     X_Ln_Freight_Charge_Tbl	   OUT NOCOPY /* file.sql.39 change */  Freight_Charge_Tbl_Type,
5099     X_Ln_Tax_Detail_Tbl		   OUT NOCOPY /* file.sql.39 change */  Tax_Detail_Tbl_Type,
5100     X_Ln_Sales_Credit_Tbl        OUT NOCOPY /* file.sql.39 change */  Sales_Credit_Tbl_Type,
5101     X_Ln_Quote_Party_Tbl         OUT NOCOPY /* file.sql.39 change */  Quote_Party_Tbl_Type,
5102     X_Qte_Access_Tbl             OUT NOCOPY /* file.sql.39 change */  Qte_Access_Tbl_Type,
5103     X_Template_Tbl               OUT NOCOPY /* file.sql.39 change */  Template_Tbl_Type,
5104     X_Related_Obj_Tbl            OUT NOCOPY /* file.sql.39 change */  Related_Obj_Tbl_Type,
5105     X_Return_Status              OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
5106     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */  NUMBER,
5107     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2
5108     )
5109 IS
5110     l_api_name                 CONSTANT VARCHAR2(30) := 'UPDATE_QUOTE';
5111     l_api_version_number       CONSTANT NUMBER       := 1.0;
5112     l_Qte_Header_Rec	      Qte_Header_Rec_Type;
5113     l_Qte_Header_Rec_Out       Qte_Header_Rec_Type;
5114     l_Qte_Line_Tbl	           Qte_Line_Tbl_Type;
5115     l_Qte_Line_Rec_Out	      Qte_Line_Rec_Type;
5116     l_hd_shipment_tbl	      Shipment_Tbl_Type;
5117     l_hd_shipment_rec_out      Shipment_Rec_Type;
5118     l_ln_shipment_tbl	      Shipment_Tbl_Type;
5119     l_ln_shipment_rec_out      Shipment_Rec_Type;
5120     l_hd_Payment_Tbl           Payment_Tbl_Type ;
5121     l_ln_Payment_Tbl           Payment_Tbl_Type ;
5122     l_Price_Adj_Tbl            Price_Adj_Tbl_Type;
5123     l_Qte_Line_Dtl_rec         Qte_Line_Dtl_rec_Type ;
5124     l_hd_Tax_Detail_Tbl        Tax_Detail_Tbl_Type;
5125     l_ln_Tax_Detail_Tbl        Tax_Detail_Tbl_Type;
5126     l_hd_Freight_Charge_Tbl    Freight_Charge_Tbl_Type;
5127     l_ln_Freight_Charge_Tbl    Freight_Charge_Tbl_Type;
5128     l_Line_Rltship_Tbl         Line_Rltship_Tbl_Type;
5129     l_hd_Price_Attributes_Tbl  Price_Attributes_Tbl_Type;
5130     l_ln_Price_Attributes_Tbl  Price_Attributes_Tbl_Type;
5131     l_Price_Adj_rltship_Tbl    Price_Adj_Rltship_Tbl_Type;
5132     l_Price_Adj_Attr_Tbl       Price_Adj_Attr_Tbl_Type;
5133     l_hd_Attribs_Ext_Tbl       Line_Attribs_Ext_Tbl_type;
5134     l_Line_Attribs_Ext_Tbl     Line_Attribs_Ext_Tbl_type;
5135     l_Qte_Line_Dtl_tbl         Qte_Line_Dtl_tbl_Type;
5136     l_hd_Sales_Credit_Tbl      Sales_Credit_Tbl_Type ;
5137     l_ln_Sales_Credit_Tbl      Sales_Credit_Tbl_Type ;
5138     l_hd_Quote_Party_Tbl       Quote_Party_Tbl_Type;
5139     l_ln_Quote_Party_Tbl       Quote_Party_Tbl_Type;
5140     l_Control_Rec              Control_rec_Type;
5141     l_validation_level         NUMBER;
5142     l_Qte_Access_Tbl           Qte_Access_Tbl_Type;
5143     l_Template_Tbl             Template_Tbl_Type;
5144     l_Related_Obj_Tbl          Related_Obj_Tbl_Type;
5145 
5146      l_quote_type                     VARCHAR2(1); -- bug 13801993
5147 
5148 BEGIN
5149       -- Standard Start of API savepoint
5150       SAVEPOINT UPDATE_QUOTE_PUB;
5151 
5152       aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
5153 
5154       -- Standard call to check for call compatibility.
5155       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
5156                          	             p_api_version_number,
5157                                            l_api_name,
5158                                            G_PKG_NAME) THEN
5159           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5160       END IF;
5161 
5162       -- Initialize message list if p_init_msg_list is set to TRUE.
5163       IF FND_API.to_Boolean( p_init_msg_list ) THEN
5164           FND_MSG_PUB.initialize;
5165       END IF;
5166 
5167       -- Initialize API return status to SUCCESS
5168       x_return_status := FND_API.G_RET_STS_SUCCESS;
5169 
5170       --
5171       -- API body
5172       --
5173       -- mapping to local variables
5174       l_qte_header_rec          := P_Qte_Header_Rec;
5175       l_hd_Price_Attributes_Tbl := P_hd_Price_Attributes_Tbl;
5176       l_hd_Payment_Tbl          := P_hd_Payment_Tbl;
5177       l_hd_shipment_tbl         := P_hd_Shipment_tbl;
5178       l_hd_Freight_Charge_Tbl   := P_hd_Freight_Charge_Tbl;
5179       l_hd_Tax_Detail_Tbl       := P_hd_Tax_Detail_Tbl;
5180       l_hd_Attribs_Ext_Tbl      := P_hd_Attr_Ext_Tbl;
5181       l_hd_Sales_Credit_Tbl     := P_hd_Sales_Credit_Tbl;
5182       l_hd_Quote_Party_Tbl      := P_hd_Quote_Party_Tbl;
5183       l_Qte_Line_tbl            := p_Qte_Line_tbl;
5184       l_hd_Payment_Tbl          := p_hd_Payment_Tbl;
5185       l_Price_Adj_Tbl           := P_Price_Adjustment_Tbl;
5186       l_Line_Rltship_Tbl        := p_Line_Rltship_Tbl;
5187    	 l_Price_Adj_rltship_Tbl   := p_Price_Adj_Rltship_Tbl;
5188       l_ln_Price_Attributes_Tbl := P_Ln_Price_Attributes_Tbl;
5189   	 l_Price_Adj_Attr_Tbl      := p_Price_Adj_Attr_Tbl;
5190       l_ln_Payment_Tbl          := P_Ln_Payment_Tbl;
5191       l_ln_shipment_tbl         := P_Ln_Shipment_Tbl;
5192       l_ln_Freight_Charge_Tbl   := P_Ln_Freight_Charge_Tbl;
5193       l_ln_Tax_Detail_Tbl       := P_Ln_Tax_Detail_Tbl;
5194       l_ln_Sales_Credit_Tbl     := P_ln_Sales_Credit_Tbl;
5195       l_ln_Quote_Party_Tbl      := P_ln_Quote_Party_Tbl;
5196     	 l_Line_Attribs_Ext_Tbl    := P_Line_Attr_Ext_Tbl ;
5197       l_Qte_Line_Dtl_tbl        := p_Qte_Line_Dtl_tbl;
5198       l_control_rec             := p_control_rec;
5199       l_validation_level        := P_Validation_Level;
5200 	 l_Qte_Access_Tbl          := P_Qte_Access_Tbl;
5201 	 l_Template_Tbl            := p_Template_Tbl;
5202 	 l_Related_Obj_Tbl         := p_Related_Obj_Tbl;
5203 
5204 	 /*** Start code fix for 12.1 bug 13801993 ***/
5205 	   select quote_type into l_quote_type
5206            from aso_quote_headers_all
5207            where quote_header_id = l_qte_header_rec.quote_header_id;
5208 
5209            if l_quote_type='T' then
5210                   l_control_rec.calculate_tax_flag  := 'N';
5211            end if;
5212 
5213 	 /*** End code fix for 12.1 bug 13801993 ***/
5214 
5215       --  call user hooks
5216       -- customer pre processing
5217 
5218       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'C')) THEN
5219 
5220           ASO_QUOTE_CUHK.update_quote_PRE(
5221                             P_Validation_Level 	    => l_validation_level ,
5222                             P_Control_Rec		    => l_control_rec ,
5223                             P_Qte_Header_Rec	         => l_qte_header_rec  ,
5224                             P_hd_Price_Attributes_Tbl => l_hd_Price_Attributes_Tbl  ,
5225                             P_hd_Payment_Tbl		    => l_hd_Payment_Tbl ,
5226                             P_hd_Shipment_tbl         => l_hd_shipment_tbl,
5227                             P_hd_Freight_Charge_Tbl   => l_hd_Freight_Charge_Tbl,
5228                             P_hd_Tax_Detail_Tbl	    => l_hd_Tax_Detail_Tbl ,
5229                             P_hd_Attr_Ext_Tbl         => l_hd_Attribs_Ext_Tbl,
5230                             P_hd_Sales_Credit_Tbl     => l_hd_Sales_Credit_Tbl ,
5231                             P_hd_Quote_Party_Tbl      => l_hd_Quote_Party_Tbl   ,
5232                             P_Qte_Line_Tbl		    => l_Qte_Line_Tbl,
5233                             P_Qte_Line_Dtl_Tbl        => l_Qte_Line_Dtl_tbl,
5234                             P_Line_Attr_Ext_Tbl       => l_Line_Attribs_Ext_Tbl,
5235                             P_line_rltship_tbl        => l_Line_Rltship_Tbl,
5236                             P_Price_Adjustment_Tbl    => l_Price_Adj_Tbl ,
5237                             P_Price_Adj_Attr_Tbl      => l_Price_Adj_Attr_Tbl    ,
5238                             P_Price_Adj_Rltship_Tbl   => l_Price_Adj_rltship_Tbl,
5239                             P_Ln_Price_Attributes_Tbl => l_ln_Price_Attributes_Tbl  ,
5240                             P_Ln_Payment_Tbl          => l_ln_Payment_Tbl ,
5241                             P_Ln_Shipment_Tbl         => l_ln_shipment_tbl ,
5242                             P_Ln_Freight_Charge_Tbl   => l_ln_Freight_Charge_Tbl,
5243                             P_Ln_Tax_Detail_Tbl       => l_ln_Tax_Detail_Tbl,
5244                             P_ln_Sales_Credit_Tbl     => l_ln_Sales_Credit_Tbl    ,
5245                             P_ln_Quote_Party_Tbl      => l_ln_Quote_Party_Tbl,
5246 					   /*
5247                             P_Qte_Access_Tbl          => l_Qte_Access_Tbl,
5248                             P_Template_Tbl            => l_Template_Tbl,
5249                             p_Related_Obj_Tbl         => l_Related_Obj_Tbl,
5250 					   */
5251                             X_Return_Status           => X_Return_Status,
5252                             X_Msg_Count               => X_Msg_Count,
5253                             X_Msg_Data                => X_Msg_Data
5254                             );
5255 
5256           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5257 
5258               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5259 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
5260 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.update_Quote_PRE', FALSE);
5261 		        FND_MSG_PUB.ADD;
5262               END IF;
5263 
5264               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5265                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5266               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
5267                    RAISE FND_API.G_EXC_ERROR;
5268               END IF;
5269 
5270           END IF;
5271 
5272       END IF; -- customer hook
5273 
5274       -- vertical hook
5275       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'B', 'V')) THEN
5276 
5277            ASO_QUOTE_VUHK.update_quote_PRE(
5278                             P_Validation_Level 	    => l_validation_level ,
5279                             P_Control_Rec		    => l_control_rec ,
5280                             P_Qte_Header_Rec	         => l_qte_header_rec  ,
5281                             P_hd_Price_Attributes_Tbl => l_hd_Price_Attributes_Tbl  ,
5282                             P_hd_Payment_Tbl		    => l_hd_Payment_Tbl ,
5283                             P_hd_Shipment_tbl         => l_hd_shipment_tbl,
5284                             P_hd_Freight_Charge_Tbl   => l_hd_Freight_Charge_Tbl,
5285                             P_hd_Tax_Detail_Tbl       => l_hd_Tax_Detail_Tbl ,
5286                             P_hd_Attr_Ext_Tbl         => l_hd_Attribs_Ext_Tbl,
5287                             P_hd_Sales_Credit_Tbl     => l_hd_Sales_Credit_Tbl ,
5288                             P_hd_Quote_Party_Tbl      => l_hd_Quote_Party_Tbl   ,
5289                             P_Qte_Line_Tbl		    => l_Qte_Line_Tbl,
5290                             P_Qte_Line_Dtl_Tbl        => l_Qte_Line_Dtl_tbl,
5291                             P_Line_Attr_Ext_Tbl       => l_Line_Attribs_Ext_Tbl,
5292                             P_line_rltship_tbl        => l_Line_Rltship_Tbl,
5293                             P_Price_Adjustment_Tbl    => l_Price_Adj_Tbl ,
5294                             P_Price_Adj_Attr_Tbl	    => l_Price_Adj_Attr_Tbl    ,
5295                             P_Price_Adj_Rltship_Tbl   => l_Price_Adj_rltship_Tbl,
5296                             P_Ln_Price_Attributes_Tbl => l_ln_Price_Attributes_Tbl  ,
5297                             P_Ln_Payment_Tbl	         => l_ln_Payment_Tbl ,
5298                             P_Ln_Shipment_Tbl         => l_ln_shipment_tbl ,
5299                             P_Ln_Freight_Charge_Tbl   => l_ln_Freight_Charge_Tbl,
5300                             P_Ln_Tax_Detail_Tbl       => l_ln_Tax_Detail_Tbl,
5301                             P_ln_Sales_Credit_Tbl     => l_ln_Sales_Credit_Tbl    ,
5302                             P_ln_Quote_Party_Tbl      => l_ln_Quote_Party_Tbl,
5303 					   /*
5304                             P_Qte_Access_Tbl          => l_Qte_Access_Tbl,
5305                             P_Template_Tbl            => l_Template_Tbl,
5306 					   p_Related_Obj_Tbl         => l_Related_Obj_Tbl,
5307 					   */
5308                             X_Return_Status           => X_Return_Status,
5309                             X_Msg_Count               => X_Msg_Count,
5310                             X_Msg_Data                => X_Msg_Data
5311                             );
5312 
5313            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5314 
5315                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5316 		         FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
5317 		         FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Update_Quote_PRE', FALSE);
5318 		         FND_MSG_PUB.ADD;
5319                END IF;
5320 
5321                IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5322                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5323                ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
5324                     RAISE FND_API.G_EXC_ERROR;
5325                END IF;
5326 
5327            END IF;
5328 
5329       END IF;
5330 
5331       -- Convert the values to ids
5332 
5333       Convert_Header_Values_To_Ids ( p_qte_header_rec   =>  l_qte_header_rec,
5334                                      x_qte_header_rec   =>  l_qte_header_rec_out );
5335 
5336 	 l_qte_header_rec := l_qte_header_rec_out;
5337 
5338       FOR i IN 1..p_qte_line_tbl.count LOOP
5339 
5340           Convert_Line_Values_To_Ids ( p_qte_line_rec	=> l_qte_line_tbl(i),
5341 	                                  x_qte_line_rec	=> l_qte_line_rec_out);
5342 
5343 	     l_qte_line_tbl(i) := l_qte_line_rec_out;
5344 
5345       END LOOP;
5346 
5347       FOR i IN 1..p_hd_shipment_tbl.count LOOP
5348 
5349           Convert_Shipment_Values_To_Ids ( p_shipment_rec	=> l_hd_shipment_tbl(i),
5350 	                                      x_shipment_rec	=> l_hd_shipment_rec_out);
5351 
5352 	     l_hd_shipment_tbl(i) := l_hd_shipment_rec_out;
5353 
5354       END LOOP;
5355 
5356       FOR i IN 1..p_ln_shipment_tbl.count LOOP
5357 
5358          Convert_Shipment_Values_To_Ids ( p_shipment_rec	=> l_ln_shipment_tbl(i),
5359 	                                    x_shipment_rec	=> l_ln_shipment_rec_out);
5360 
5361 	    l_ln_shipment_tbl(i) := l_ln_shipment_rec_out;
5362 
5363       END LOOP;
5364 
5365       ASO_QUOTE_HEADERS_PVT.update_quote(
5366 	                         P_Api_Version_Number	 => 1.0,
5367 	                         P_Init_Msg_List		 => FND_API.G_FALSE,
5368 	                         P_Commit			      => FND_API.G_FALSE,
5369 	                         p_validation_level		 => p_validation_level,
5370 	                         P_Control_Rec		      => l_control_rec,
5371 	                         P_qte_header_rec		 => l_qte_header_rec,
5372 	                         P_Hd_Price_Attributes_Tbl => l_hd_Price_Attributes_Tbl,
5373 	                         P_Hd_Payment_Tbl		 => l_hd_Payment_Tbl,
5374 	                         P_Hd_Shipment_tbl		 => l_Hd_Shipment_tbl,
5375 	                         P_Hd_Freight_Charge_Tbl	 => l_hd_Freight_Charge_Tbl,
5376 	                         P_Hd_Tax_Detail_Tbl		 => l_hd_Tax_Detail_Tbl ,
5377                               P_hd_Attr_Ext_Tbl         => l_hd_Attribs_Ext_Tbl,
5378                               P_hd_Sales_Credit_Tbl     => l_hd_Sales_Credit_Tbl ,
5379                               P_hd_Quote_Party_Tbl      => l_hd_Quote_Party_Tbl,
5380 	                         P_Qte_Line_Tbl		      => l_Qte_Line_Tbl,
5381 	                         P_Qte_Line_Dtl_Tbl		 => l_Qte_Line_Dtl_tbl,
5382 	                         P_Line_Attr_Ext_Tbl		 => l_Line_Attribs_Ext_Tbl,
5383 	                         P_Line_rltship_tbl		 => l_Line_Rltship_Tbl,
5384 	                         P_Price_Adjustment_Tbl	 => l_Price_Adj_Tbl,
5385 	                         P_Price_Adj_Attr_Tbl	 => l_Price_Adj_Attr_Tbl,
5386 	                         P_Price_Adj_Rltship_Tbl	 => l_Price_Adj_rltship_Tbl ,
5387 	                         P_Ln_Price_Attributes_Tbl => l_ln_Price_Attributes_Tbl ,
5388 	                         P_Ln_Payment_Tbl		 => l_Ln_Payment_Tbl,
5389 	                         P_Ln_Shipment_Tbl		 => l_Ln_Shipment_Tbl,
5390 	                         P_Ln_Freight_Charge_Tbl	 => l_Ln_Freight_Charge_Tbl,
5391 	                         P_Ln_Tax_Detail_Tbl		 => l_Ln_Tax_Detail_Tbl,
5392                               P_ln_Sales_Credit_Tbl     => l_ln_Sales_Credit_Tbl ,
5393                               P_ln_Quote_Party_Tbl      => l_ln_Quote_Party_Tbl,
5394                               P_Qte_Access_Tbl          => l_Qte_Access_Tbl,
5395                               P_Template_Tbl            => l_Template_Tbl,
5396 					     p_Related_Obj_Tbl         => l_Related_Obj_Tbl,
5397 	                         x_qte_header_rec		 => x_qte_header_rec,
5398 	                         X_Hd_Price_Attributes_Tbl => x_Hd_Price_Attributes_Tbl,
5399 	                         X_Hd_Payment_Tbl		 => x_Hd_Payment_Tbl,
5400 	                         X_hd_Shipment_Tbl		 => X_hd_Shipment_Tbl,
5401 	                         X_Hd_Freight_Charge_Tbl	 => x_Hd_Freight_Charge_Tbl,
5402 	                         X_Hd_Tax_Detail_Tbl		 => x_Hd_Tax_Detail_Tbl,
5403                               X_hd_Attr_Ext_Tbl         => X_hd_Attr_Ext_Tbl,
5404                               X_hd_Sales_Credit_Tbl     => X_hd_Sales_Credit_Tbl,
5405                               X_hd_Quote_Party_Tbl      => X_hd_Quote_Party_Tbl,
5406 	                         X_Qte_Line_Tbl		      => x_Qte_Line_Tbl,
5407 	                         X_Qte_Line_Dtl_Tbl		 => x_Qte_Line_Dtl_Tbl,
5408 	                         x_Line_Attr_Ext_Tbl		 => x_Line_Attr_Ext_Tbl,
5409 	                         X_Line_rltship_tbl		 => x_Line_Rltship_Tbl,
5410 	                         X_Price_Adjustment_Tbl	 => x_Price_Adjustment_Tbl,
5411 	                         x_Price_Adj_Attr_Tbl	 => x_Price_Adj_Attr_Tbl,
5412 	                         X_Price_Adj_Rltship_Tbl	 => x_Price_Adj_Rltship_Tbl,
5413 	                         X_Ln_Price_Attributes_Tbl => x_Ln_Price_Attributes_Tbl,
5414 	                         X_Ln_Payment_Tbl		 => x_Ln_Payment_Tbl,
5415 	                         X_Ln_Shipment_Tbl		 => x_Ln_Shipment_Tbl,
5416 	                         X_Ln_Freight_Charge_Tbl	 => x_Ln_Freight_Charge_Tbl,
5417 	                         X_Ln_Tax_Detail_Tbl		 => x_Ln_Tax_Detail_Tbl,
5418                               X_Ln_Sales_Credit_Tbl     => X_Ln_Sales_Credit_Tbl,
5419                               X_Ln_Quote_Party_Tbl      => X_Ln_Quote_Party_Tbl ,
5420                               X_Qte_Access_Tbl          => X_Qte_Access_Tbl,
5421                               X_Template_Tbl            => X_Template_Tbl,
5422 					     X_Related_Obj_Tbl         => X_Related_Obj_Tbl,
5423 	                         X_Return_Status           => x_return_status,
5424 	                         X_Msg_Count               => x_msg_count,
5425 	                         X_Msg_Data                => x_msg_data);
5426 
5427       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5428           aso_debug_pub.add('update_quote_pub: after update quote, starting user hooks (1)'||x_return_status,1, 'N');
5429 	 END IF;
5430 
5431       -- Check return status from the above procedure call
5432       IF x_return_status = FND_API.G_RET_STS_ERROR then
5433           raise FND_API.G_EXC_ERROR;
5434       elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
5435           raise FND_API.G_EXC_UNEXPECTED_ERROR;
5436       END IF;
5437 
5438       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'C')) THEN
5439 
5440            ASO_QUOTE_CUHK.Update_quote_POST(
5441                             P_Validation_Level        => l_validation_level ,
5442                             P_Control_Rec             => l_control_rec ,
5443                             P_Qte_Header_Rec	         => x_qte_header_rec  ,
5444                             P_hd_Price_Attributes_Tbl => x_hd_Price_Attributes_Tbl  ,
5445                             P_hd_Payment_Tbl	         => x_hd_Payment_Tbl ,
5446                             P_hd_Shipment_tbl         => x_hd_shipment_tbl,
5447                             P_hd_Freight_Charge_Tbl   => x_hd_Freight_Charge_Tbl,
5448                             P_hd_Tax_Detail_Tbl	    => x_hd_Tax_Detail_Tbl ,
5449                             P_hd_Attr_Ext_Tbl	    => x_hd_Attr_Ext_Tbl,
5450                             P_hd_Sales_Credit_Tbl     => x_hd_Sales_Credit_Tbl ,
5451                             P_hd_Quote_Party_Tbl      => x_hd_Quote_Party_Tbl   ,
5452                             P_Qte_Line_Tbl		    => x_Qte_Line_Tbl,
5453                             P_Qte_Line_Dtl_Tbl	    => x_Qte_Line_Dtl_tbl,
5454                             P_Line_Attr_Ext_Tbl	    => x_Line_Attr_Ext_Tbl,
5455                             P_line_rltship_tbl	    => x_Line_Rltship_Tbl,
5456                             P_Price_Adjustment_Tbl    => x_Price_Adjustment_Tbl ,
5457                             P_Price_Adj_Attr_Tbl	    => x_Price_Adj_Attr_Tbl    ,
5458                             P_Price_Adj_Rltship_Tbl   => x_Price_Adj_rltship_Tbl,
5459                             P_Ln_Price_Attributes_Tbl => x_ln_Price_Attributes_Tbl  ,
5460                             P_Ln_Payment_Tbl	         => x_ln_Payment_Tbl ,
5461                             P_Ln_Shipment_Tbl         => x_ln_shipment_tbl ,
5462                             P_Ln_Freight_Charge_Tbl   => x_ln_Freight_Charge_Tbl,
5463                             P_Ln_Tax_Detail_Tbl       => x_ln_Tax_Detail_Tbl,
5464                             P_ln_Sales_Credit_Tbl     => x_ln_Sales_Credit_Tbl    ,
5465                             P_ln_Quote_Party_Tbl      => x_ln_Quote_Party_Tbl,
5466 					   /*
5467                             P_Qte_Access_Tbl          => x_Qte_Access_Tbl,
5468                             P_Template_Tbl            => x_Template_Tbl,
5469 					   P_Related_Obj_Tbl         => x_Related_Obj_Tbl,
5470 					   */
5471                             X_Return_Status           => X_Return_Status,
5472                             X_Msg_Count               => X_Msg_Count,
5473                             X_Msg_Data                => X_Msg_Data
5474                             );
5475 
5476            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5477 
5478                IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5479 		         FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
5480 		         FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_CUHK.Update_Quote_POST', FALSE);
5481 		         FND_MSG_PUB.ADD;
5482                END IF;
5483 
5484                IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5485                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5486                ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
5487                     RAISE FND_API.G_EXC_ERROR;
5488                END IF;
5489 
5490            END IF;
5491 
5492       END IF; -- customer hook
5493 
5494       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5495 	     aso_debug_pub.add('aso_quote_vuhk: before if update quote post (1)'||x_return_status,1, 'N');
5496 	 END IF;
5497 
5498       IF (JTF_USR_HKS.ok_to_execute(G_PKG_NAME, l_api_name, 'A', 'V')) THEN
5499 
5500 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5501               aso_debug_pub.add('aso_quote_vuhk: inside if update quote post (1)'||x_return_status,1, 'N');
5502 	     END IF;
5503 
5504           ASO_QUOTE_VUHK.Update_quote_POST(
5505                            P_Validation_Level        => l_validation_level ,
5506                            P_Control_Rec             => l_control_rec ,
5507                            P_Qte_Header_Rec	        => x_qte_header_rec  ,
5508                            P_hd_Price_Attributes_Tbl => x_hd_Price_Attributes_Tbl  ,
5509                            P_hd_Payment_Tbl	        => x_hd_Payment_Tbl ,
5510                            P_hd_Shipment_tbl         => x_hd_shipment_tbl,
5511                            P_hd_Freight_Charge_Tbl   => x_hd_Freight_Charge_Tbl,
5512                            P_hd_Tax_Detail_Tbl       => x_hd_Tax_Detail_Tbl ,
5513                            P_hd_Attr_Ext_Tbl	        => x_hd_Attr_Ext_Tbl,
5514                            P_hd_Sales_Credit_Tbl     => x_hd_Sales_Credit_Tbl ,
5515                            P_hd_Quote_Party_Tbl      => x_hd_Quote_Party_Tbl   ,
5516                            P_Qte_Line_Tbl            => x_Qte_Line_Tbl,
5517                            P_Qte_Line_Dtl_Tbl        => x_Qte_Line_Dtl_tbl,
5518                            P_Line_Attr_Ext_Tbl       => x_Line_Attr_Ext_Tbl,
5519                            P_line_rltship_tbl        => x_Line_Rltship_Tbl,
5520                            P_Price_Adjustment_Tbl	   => x_Price_Adjustment_Tbl ,
5521                            P_Price_Adj_Attr_Tbl	   => x_Price_Adj_Attr_Tbl    ,
5522                            P_Price_Adj_Rltship_Tbl   => x_Price_Adj_rltship_Tbl,
5523                            P_Ln_Price_Attributes_Tbl => x_ln_Price_Attributes_Tbl  ,
5524                            P_Ln_Payment_Tbl		   => x_ln_Payment_Tbl ,
5525                            P_Ln_Shipment_Tbl		   => x_ln_shipment_tbl ,
5526                            P_Ln_Freight_Charge_Tbl   => x_ln_Freight_Charge_Tbl,
5527                            P_Ln_Tax_Detail_Tbl       => x_ln_Tax_Detail_Tbl,
5528                            P_ln_Sales_Credit_Tbl     => x_ln_Sales_Credit_Tbl    ,
5529                            P_ln_Quote_Party_Tbl      => x_ln_Quote_Party_Tbl,
5530 					  /*
5531                            P_Qte_Access_Tbl          => x_Qte_Access_Tbl,
5532                            P_Template_Tbl            => x_Template_Tbl,
5533 					  P_Related_Obj_Tbl         => x_Related_Obj_Tbl,
5534 					  */
5535                            X_Return_Status           => X_Return_Status,
5536                            X_Msg_Count               => X_Msg_Count,
5537                            X_Msg_Data                => X_Msg_Data
5538                            );
5539 
5540           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5541               aso_debug_pub.add('update_quote_pub: after vertical hooks'||x_return_status,1, 'N');
5542           END IF;
5543 
5544           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5545 
5546               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5547 		        FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
5548 		        FND_MESSAGE.Set_Token('API', 'ASO_QUOTE_VUHK.Update_Quote_POST', FALSE);
5549 		        FND_MSG_PUB.ADD;
5550               END IF;
5551 
5552               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5553                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5554               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
5555                    RAISE FND_API.G_EXC_ERROR;
5556               END IF;
5557 
5558           END IF;
5559 
5560       END IF; -- vertical hook
5561 
5562       --
5563       -- End of API body
5564       --
5565 
5566       -- Standard check for p_commit
5567       IF FND_API.to_Boolean( p_commit ) THEN
5568           COMMIT WORK;
5569       END IF;
5570 
5571       -- Standard call to get message count and if count is 1, get message info.
5572       FND_MSG_PUB.Count_And_Get (  p_count          =>   x_msg_count,
5573                                    p_data           =>   x_msg_data );
5574 
5575 
5576       EXCEPTION
5577 
5578           WHEN FND_API.G_EXC_ERROR THEN
5579               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
5580                    P_API_NAME => L_API_NAME
5581                   ,P_PKG_NAME => G_PKG_NAME
5582                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
5583                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
5584                   ,P_SQLCODE => SQLCODE
5585                   ,P_SQLERRM => SQLERRM
5586                   ,X_MSG_COUNT => X_MSG_COUNT
5587                   ,X_MSG_DATA => X_MSG_DATA
5588                   ,X_RETURN_STATUS => X_RETURN_STATUS);
5589 
5590           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5591               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
5592                    P_API_NAME => L_API_NAME
5593                   ,P_PKG_NAME => G_PKG_NAME
5594                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5595                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
5596                   ,P_SQLCODE => SQLCODE
5597                   ,P_SQLERRM => SQLERRM
5598                   ,X_MSG_COUNT => X_MSG_COUNT
5599                   ,X_MSG_DATA => X_MSG_DATA
5600                   ,X_RETURN_STATUS => X_RETURN_STATUS);
5601 
5602           WHEN OTHERS THEN
5603               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
5604                    P_API_NAME => L_API_NAME
5605                   ,P_PKG_NAME => G_PKG_NAME
5606                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
5607                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
5608                   ,P_SQLCODE => SQLCODE
5609                   ,P_SQLERRM => SQLERRM
5610                   ,X_MSG_COUNT => X_MSG_COUNT
5611                   ,X_MSG_DATA => X_MSG_DATA
5612                   ,X_RETURN_STATUS => X_RETURN_STATUS);
5613 END;
5614 
5615 -- ER 3177722
5616 Procedure validate_model_configuration
5617  (
5618     P_Api_Version_Number              IN             NUMBER,
5619     P_Init_Msg_List                   IN             VARCHAR2  := FND_API.G_TRUE,  -- rassharm
5620     P_Commit                          IN             VARCHAR2  := FND_API.G_FALSE,
5621     P_Quote_header_id                 IN   NUMBER,
5622     p_Quote_line_id                   IN   NUMBER := FND_API.G_MISS_NUM,
5623     P_UPDATE_QUOTE                    IN   VARCHAR2 := FND_API.G_FALSE,
5624     P_Config_EFFECTIVE_DATE		      IN   Date  := FND_API.G_MISS_DATE,
5625     P_Config_model_lookup_DATE               IN   Date  := FND_API.G_MISS_DATE,
5626     X_Config_tbl                      OUT NOCOPY /* file.sql.39 change */ Config_Vaild_Tbl_Type,
5627     X_Return_Status                   OUT NOCOPY /* file.sql.39 change */  VARCHAR2,
5628     X_Msg_Count                       OUT NOCOPY /* file.sql.39 change */  NUMBER,
5629     X_Msg_Data                        OUT NOCOPY /* file.sql.39 change */  VARCHAR2
5630  )
5631     as
5632      l_qte_line_rec                       aso_quote_pub.qte_line_rec_type;
5633      l_qte_line_tbl                        aso_quote_pub.qte_line_tbl_type;
5634      l_qte_line_dtl_tbl                 aso_quote_pub.qte_line_dtl_tbl_type;
5635      l_model_qte_line_tbl          aso_quote_pub.qte_line_tbl_type;
5636      l_model_qte_line_dtl_tbl    aso_quote_pub.qte_line_dtl_tbl_type;
5637      l_model_index                     number:=0;
5638 
5639      l_config_index                     number:=0;
5640      l_control_rec_bv            ASO_QUOTE_PUB.Control_Rec_Type;
5641 
5642      l_return_status      VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
5643      l_api_name                VARCHAR2(30) := 'VALIDATE_MODEL_CONFIGURATION'; -- removed CONSTANT as part of fix for Bug 12679929
5644      l_api_version_number      CONSTANT NUMBER   := 1.0;
5645      l_complete_configuration_flag  VARCHAR2(1);
5646      l_valid_configuration_flag     VARCHAR2(1);
5647      l_config_changed                    VARCHAR2(1);
5648      l_config_header_id number;
5649      l_config_revision_num number;
5650      l_new_config_hdr_id number;
5651 
5652 
5653     G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_QUOTE_PUB';
5654 
5655     CURSOR c_config_exist_in_cz (p_config_hdr_id number, p_config_rev_nbr number) IS
5656     select config_hdr_id
5657     from cz_config_details_v
5658     where config_hdr_id = p_config_hdr_id
5659     and config_rev_nbr = p_config_rev_nbr;
5660 
5661 -- variables used for messages
5662    l_changed_model_line_num VARCHAR2(4000);
5663    l_invalid_model_line_num VARCHAR2(4000);
5664    l_line_number VARCHAR2(4000);
5665 
5666    EXCP_USER_DEFINED   EXCEPTION;
5667 
5668    L_Return_X_Msg_data VARCHAR2(4000);
5669    --l_Init_Msg_List varchar2(1);
5670 
5671     l_In_Line_Number_Tbl                  ASO_LINE_NUM_INT.In_Line_Number_Tbl_Type;
5672     lx_Out_Line_Number_Tbl                 ASO_LINE_NUM_INT.Out_Line_Number_Tbl_Type;
5673 Begin
5674 
5675    SAVEPOINT validate_model_cfg_pub;
5676 
5677    aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
5678 
5679     --dbms_output.put_line('Testing in Progress');
5680     x_return_status := FND_API.G_RET_STS_SUCCESS;
5681 
5682 
5683     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5684         aso_debug_pub.add('ASO_QUOTE_PUB: Validate_Model_Configuration Begins', 1, 'Y');
5685         aso_debug_pub.add('ASO_QUOTE_PUB: Validate_Model_Configuration Begins'||p_init_msg_list,1,'Y');
5686     END IF;
5687 
5688     IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
5689 		 		                         p_api_version_number,
5690 					                     l_api_name,
5691 					                     G_PKG_NAME) THEN
5692 	        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5693     END IF;
5694 
5695     l_api_name := 'VALIDATE_MODEL_CFG'; -- Added for Bug 12679929
5696 
5697     IF FND_API.to_Boolean( p_init_msg_list ) THEN
5698        aso_debug_pub.add('ASO_QUOTE_PUB: p_init_msg_list true', 1, 'Y');
5699        FND_MSG_PUB.initialize;
5700     END IF;
5701 
5702 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5703    aso_debug_pub.add('Begin Validate_model_configuration pvt', 1, 'Y');
5704    aso_debug_pub.add('Begin quote_header_id'||P_Quote_header_id, 1, 'Y');
5705    aso_debug_pub.add('Begin quote_line_id'||P_Quote_line_id, 1, 'Y');
5706    aso_debug_pub.add('Begin p_update_quote'||p_update_quote, 1, 'Y');
5707    aso_debug_pub.add('Begin p_commit'||p_commit, 1, 'Y');
5708 end if;
5709 
5710 -- dbms_output.put_line('Entered quote line id  in Progress'||p_Quote_line_id);
5711 
5712 if (p_Quote_line_id <> FND_API.G_MISS_NUM)  then    -- Model line id is being sent
5713     -- dbms_output.put_line('Entered quote line id  in Progress');
5714      l_qte_line_rec:=ASO_UTILITY_PVT.Query_Qte_Line_Row(p_Quote_line_id);
5715       l_model_qte_line_tbl(1) :=l_qte_line_rec;
5716       l_qte_line_dtl_tbl:= ASO_UTILITY_PVT.Query_Line_Dtl_Rows(p_Quote_line_id);
5717       l_model_qte_line_dtl_tbl(1).config_header_id:= l_qte_line_dtl_tbl(1).config_header_id;
5718       l_model_qte_line_dtl_tbl(1).config_revision_num:= l_qte_line_dtl_tbl(1).config_revision_num;
5719 else
5720 --   dbms_output.put_line('Entered else  in Progress');
5721    l_qte_line_tbl:=ASO_UTILITY_PVT.Query_Qte_Line_Rows(P_Quote_header_id);
5722    for i in 1..l_qte_line_tbl.count loop
5723    -- query the quote for all the models and populate the model line id  and details table
5724        if l_qte_line_tbl(i).item_type_code='MDL' then
5725                l_qte_line_dtl_tbl:= ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_tbl(i).quote_line_id);
5726                IF aso_debug_pub.g_debug_flag = 'Y' THEN
5727                    aso_debug_pub.add('Validate_model_configuration detail table count l_qte_line_dtl_tbl'||l_qte_line_dtl_tbl.count, 1, 'Y');
5728                 End if;
5729 
5730 	       If l_qte_line_dtl_tbl.count = 0 then
5731                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5732                    aso_debug_pub.add('Set config header_id and config_rev_num to null if there is no model details ', 1, 'Y');
5733                 End if;
5734                 l_qte_line_dtl_tbl(1).config_header_id := Null;
5735                 l_qte_line_dtl_tbl(1).config_revision_num := Null;
5736               End if;
5737 	     --   dbms_output.put_line('After l_qte_line_dtl_tbl the mdl table'||l_qte_line_dtl_tbl.count);
5738               l_model_index := l_model_index + 1;
5739               l_model_qte_line_tbl(l_model_index):=l_qte_line_tbl(i);
5740 	      l_model_qte_line_dtl_tbl(l_model_index).config_header_id:= l_qte_line_dtl_tbl(1).config_header_id;
5741               l_model_qte_line_dtl_tbl(l_model_index).config_revision_num:= l_qte_line_dtl_tbl(1).config_revision_num;
5742 
5743      end if; -- Item type code MDL
5744    end loop;
5745  End if;  --End quote line id null or FND_API.G_MISS_NUM
5746 
5747  -- dbms_output.put_line('After populating the mdl table'||l_model_qte_line_tbl.count);
5748 /*
5749    Added by Arul to check no model lines in the Quote.
5750    Catherine will do this check in UI.
5751 
5752  IF nvl(l_model_qte_line_tbl.count,0) = 0 THEN
5753     FND_MESSAGE.Set_Name('ASO', 'ASO_NO_MODEL_LINE_QUOTE');
5754     FND_MSG_PUB.ADD;
5755     RAISE EXCP_USER_DEFINED;
5756  ELSE
5757 */
5758 
5759    FOR i IN 1..l_model_qte_line_tbl.count LOOP
5760        IF aso_debug_pub.g_debug_flag = 'Y' THEN
5761 	  aso_debug_pub.add('Validate_model_configuration: l_model_qte_line_tbl('||i||').quote_line_id: '||l_model_qte_line_tbl(i).quote_line_id,1,'N');
5762           aso_debug_pub.add('Validate_model_configuration: l_model_qte_line_dtl_tbl('||i||').config_header_id: '||l_model_qte_line_dtl_tbl(i).config_header_id,1,'N');
5763           aso_debug_pub.add('Validate_model_configuration: l_model_qte_line_dtl_tbl('||i||').config_revision_num: '||l_model_qte_line_dtl_tbl(i).config_revision_num,1,'N');
5764        END IF;
5765      --dbms_output.put_line('Validate_model_configuration: l_model_qte_line_tbl('||i||').quote_line_id: '||l_model_qte_line_tbl(i).quote_line_id);
5766      --dbms_output.put_line('Validate_model_configuration: l_model_qte_line_dtl_tbl('||i||').config_header_id: '||l_model_qte_line_dtl_tbl(i).config_header_id);
5767      --dbms_output.put_line('Validate_model_configuration: l_model_qte_line_dtl_tbl('||i||').config_revision_num: '||l_model_qte_line_dtl_tbl(i).config_revision_num);
5768 
5769  /*
5770  -- Sending modfied model line id and its details
5771  -- Discussed with CZ we need not send the line and details tables
5772 
5773        l_send_qte_line_tbl     := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
5774        l_send_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
5775        l_send_qte_line_tbl(1):=ASO_UTILITY_PVT.Query_Qte_Line_Row(l_model_qte_line_tbl(i).quote_line_id);
5776        l_send_qte_line_tbl(1).operation_code:='UPDATE';
5777        l_send_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_model_qte_line_tbl(i).quote_line_id);
5778  */
5779        l_control_rec_bv.header_pricing_event  :=  null;
5780        l_control_rec_bv.calculate_tax_flag    :=  'N';
5781        l_control_rec_bv.defaulting_fwk_flag   :=  'N';
5782 
5783 
5784         -- Call Batch Validation procedure
5785            IF aso_debug_pub.g_debug_flag = 'Y' THEN
5786 		 aso_debug_pub.add('ASO_QUOTE_PUB : Before call to ASO_BATCH_VALIDATE_CFG_PVT.Validate_Configuration'|| l_model_qte_line_tbl(i).quote_line_id,1,'N');
5787 		 END IF;
5788 
5789      /*FND_MSG_PUB.Count_And_Get
5790       ( p_encoded    => 'F',
5791         p_count      => x_msg_count,
5792         p_data       => x_msg_data
5793       );
5794       x_msg_data := fnd_msg_pub.get( p_msg_index => 1, p_encoded => 'F');
5795       */
5796     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5797         aso_debug_pub.add('ASO_QUOTE_PUB: Validate_Model_Configuration Begins', 1, 'Y');
5798        -- aso_debug_pub.add('rassharm Update_Quote: ASO_VALIDATE_CFG_PVT.Validate_Configuration Begins'||x_msg_count, 1, 'Y');
5799         --aso_debug_pub.add('rassharm Update_Quote: ASO_VALIDATE_CFG_PVT.Validate_Configuration Begins'||x_msg_data, 1, 'Y');
5800     END IF;
5801 
5802    -- Added  condition for unconfigured items
5803     if  (l_model_qte_line_dtl_tbl(i).config_header_id is not null) and ( l_model_qte_line_dtl_tbl(i).config_revision_num is not null) then
5804 
5805            ASO_VALIDATE_CFG_PVT.Validate_Configuration
5806                ( P_Api_Version_Number           =>  1.0,
5807                  P_Init_Msg_List                =>  FND_API.G_FALSE,
5808                  P_Commit                       =>  FND_API.G_FALSE,
5809                  p_control_rec                  =>  l_control_rec_bv,
5810                  P_model_line_id                =>  l_model_qte_line_tbl(i).quote_line_id,
5811                  P_Qte_Line_Tbl                 =>  ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL,
5812                  P_Qte_Line_Dtl_Tbl             => ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL,
5813 		 p_update_quote                      => p_update_quote,
5814 		 P_EFFECTIVE_DATE	 => P_Config_EFFECTIVE_DATE,
5815 		 P_model_lookup_DATE => P_Config_model_lookup_DATE,
5816                  X_config_header_id             =>  l_config_header_id,
5817                  X_config_revision_num          =>  l_config_revision_num,
5818                  X_valid_configuration_flag     =>  l_valid_configuration_flag,
5819                  X_complete_configuration_flag  =>  l_complete_configuration_flag,
5820 		 X_config_changed           =>   l_config_changed,
5821                  X_return_status                =>  l_return_status,
5822                  X_msg_count                    =>  x_msg_count,
5823                  X_msg_data                     =>  x_msg_data
5824                 );
5825 END IF;  -- end condition for unconfigured items
5826 
5827 -- Initializing the output parameters for unconfigured item else it would be assigned to previous value for null case since the private API is not called
5828 if  (l_model_qte_line_dtl_tbl(i).config_header_id is null) and ( l_model_qte_line_dtl_tbl(i).config_revision_num is  null) then
5829   l_config_header_id:=NULL;
5830   l_config_revision_num:=NULL;
5831  l_valid_configuration_flag:=NULL;
5832  l_complete_configuration_flag:='N';
5833  l_config_changed:=NULL;
5834  l_return_status := FND_API.G_RET_STS_SUCCESS;
5835 end if;
5836 
5837 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5838 		     aso_debug_pub.add('ASO_QUOTE_PUB: After call to Batch Validate_Configuration: l_return_status: '||l_return_status,1,'Y');
5839 		     aso_debug_pub.add('ASO_QUOTE_PUB: l_config_header_id:            '|| l_config_header_id,1,'N');
5840 		     aso_debug_pub.add('ASO_QUOTE_PUB: l_config_revision_num:         '|| l_config_revision_num,1,'N');
5841 		     aso_debug_pub.add('ASO_QUOTE_PUB: l_valid_configuration_flag:    '|| l_valid_configuration_flag,1,'N');
5842 		     aso_debug_pub.add('ASO_QUOTE_PUB: l_complete_configuration_flag: '|| l_complete_configuration_flag,1,'N');
5843 		     aso_debug_pub.add('ASO_QUOTE_PUB: l_config_changed:    '|| l_config_changed,1,'N');
5844 END IF;
5845        --dbms_output.put_line('ASO_QUOTE_PUB: After call to Batch Validate_Configuration: l_return_status: '||l_return_status);
5846        --dbms_output.put_line('ASO_QUOTE_PUB: l_config_header_id:            '|| l_config_header_id);
5847        --dbms_output.put_line('ASO_QUOTE_PUB: l_config_revision_num:         '|| l_config_revision_num);
5848        --dbms_output.put_line('ASO_QUOTE_PUB:  l_valid_configuration_flag:    '|| l_valid_configuration_flag);
5849        --dbms_output.put_line('ASO_QUOTE_PUB:  l_complete_configuration_flag: '|| l_complete_configuration_flag);
5850        --dbms_output.put_line('ASO_QUOTE_PUB: l_config_changed:    '|| l_config_changed);
5851 
5852            IF (l_return_status = FND_API.G_RET_STS_SUCCESS)  THEN
5853                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
5854                        aso_debug_pub.add('ASO Quote Pub : Batch Validate configuration success');
5855                    END IF;
5856                  -- code populate the cz rec type and set the changed flag
5857 		 l_config_index:=l_config_index+1;
5858 		 X_Config_tbl(l_config_index).quote_line_id:=  l_model_qte_line_tbl(i).quote_line_id;
5859                  X_Config_tbl(l_config_index).IS_CFG_CHANGED_FLAG:=l_config_changed;
5860 		 X_Config_tbl(l_config_index).IS_CFG_VALID:=l_valid_configuration_flag;
5861                  X_Config_tbl(l_config_index).IS_CFG_COMPLETE:=l_complete_configuration_flag;
5862 	   end if;
5863 
5864            IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)  THEN
5865 
5866                open c_config_exist_in_cz(l_config_header_id, l_config_revision_num);
5867                fetch c_config_exist_in_cz into l_new_config_hdr_id;
5868 
5869                if c_config_exist_in_cz%found then
5870 
5871                    close c_config_exist_in_cz;
5872 
5873                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5874                        aso_debug_pub.add('Update Quote: A higher version exist for this configuration so deleting it from CZ');
5875                    END IF;
5876 
5877                    ASO_CFG_INT.DELETE_CONFIGURATION_AUTO( P_API_VERSION_NUMBER  => 1.0,
5878                                                           P_INIT_MSG_LIST       => FND_API.G_FALSE,
5879                                                           P_CONFIG_HDR_ID       => l_config_header_id,
5880                                                           P_CONFIG_REV_NBR      => l_config_revision_num,
5881                                                           X_RETURN_STATUS       => x_return_status,
5882                                                           X_MSG_COUNT           => x_msg_count,
5883                                                           X_MSG_DATA            => x_msg_data);
5884 
5885                    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5886                        aso_debug_pub.add('After call to ASO_CFG_INT.DELETE_CONFIGURATION_AUTO: x_Return_Status: ' || x_Return_Status);
5887                    END IF;
5888 
5889                    IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5890 
5891                        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5892                           FND_MESSAGE.Set_Name('ASO', 'ASO_DELETE');
5893                           FND_MESSAGE.Set_Token('OBJECT', 'CONFIGURATION', FALSE);
5894                           FND_MSG_PUB.ADD;
5895                        END IF;
5896 
5897                        RAISE FND_API.G_EXC_ERROR;
5898 
5899                    END IF;
5900 
5901                else
5902                    close c_config_exist_in_cz;
5903                end if;
5904 
5905            END IF;
5906 
5907            IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5908                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5909                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5910            ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5911                x_return_status := FND_API.G_RET_STS_ERROR;
5912                RAISE FND_API.G_EXC_ERROR;
5913            END IF;
5914   --END IF;  -- end condition for unconfigured items
5915 
5916    END LOOP; --l_model_qte_line_tbl.count
5917 
5918  --End if;
5919 
5920    IF (l_return_status = FND_API.G_RET_STS_SUCCESS)  THEN
5921          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5922             aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration success'||X_Config_tbl.count);
5923          END IF;
5924 
5925           FOR i IN 1..X_Config_tbl.count LOOP
5926           IF aso_debug_pub.g_debug_flag = 'Y' THEN
5927             aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration success X_Config_tbl('||i||').QUOTE_LINE_ID:'||X_Config_tbl(i).QUOTE_LINE_ID);
5928             aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration success X_Config_tbl('||i||').IS_CFG_CHANGED_FLAG:'||X_Config_tbl(i).IS_CFG_CHANGED_FLAG);
5929             aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration success X_Config_tbl('||i||').IS_CFG_VALID:'||X_Config_tbl(i).IS_CFG_VALID);
5930             aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration success X_Config_tbl('||i||').IS_CFG_COMPLETE:'||X_Config_tbl(i).IS_CFG_COMPLETE);
5931           END IF;
5932 
5933               If  X_Config_tbl(i).IS_CFG_CHANGED_FLAG = 'Y' then
5934                 /* L_In_Line_Number_Tbl(1).Quote_Line_Id := X_Config_tbl(i).QUOTE_LINE_ID;
5935                  ASO_LINE_NUM_INT.ASO_UI_LINE_NUMBER(
5936                    P_In_Line_Number_Tbl => L_In_Line_Number_Tbl,
5937                    X_Out_Line_Number_Tbl =>l_Out_Line_Number_Tbl);
5938 
5939                   l_line_number:=l_Out_Line_Number_Tbl(X_Config_tbl(i).QUOTE_LINE_ID);
5940                   --l_line_number := ASO_LINE_NUM_INT.Get_UI_Line_Number (X_Config_tbl(i).QUOTE_LINE_ID);
5941 		  ASO_QUOTE_PUB_W.Get_UI_Line_Number(X_Config_tbl(i).QUOTE_LINE_ID,l_Line_Number);*/
5942 
5943                   ASO_LINE_NUM_INT.RESET_LINE_NUM;
5944 
5945                   l_In_Line_Number_Tbl(1).quote_line_id := X_Config_tbl(i).QUOTE_LINE_ID;
5946 
5947                   ASO_LINE_NUM_INT.ASO_UI_LINE_NUMBER (
5948                       P_In_Line_Number_Tbl   =>     l_In_Line_Number_Tbl,
5949                       X_Out_Line_Number_Tbl  =>     lx_Out_Line_Number_Tbl
5950                   );
5951 
5952                   L_Line_Number := ASO_LINE_NUM_INT.Get_UI_Line_Number(X_Config_tbl(i).QUOTE_LINE_ID);
5953 
5954 		   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5955                  aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration succes l_line_number'||l_line_number);
5956 		 end if;
5957                   If l_changed_model_line_num is Null then
5958                      l_changed_model_line_num := l_line_number;
5959                   Else
5960                      l_changed_model_line_num := l_changed_model_line_num ||', '|| l_line_number;
5961                   End if;
5962               End if;
5963 
5964               If X_Config_tbl(i).IS_CFG_VALID = 'N' or X_Config_tbl(i).IS_CFG_COMPLETE = 'N' then
5965 	         --ASO_QUOTE_PUB_W.Get_UI_Line_Number(X_Config_tbl(i).QUOTE_LINE_ID,l_Line_Number);
5966                  --l_line_number := ASO_LINE_NUM_INT.Get_UI_Line_Number (X_Config_tbl(i).QUOTE_LINE_ID);
5967 		 ASO_LINE_NUM_INT.RESET_LINE_NUM;
5968 
5969                   l_In_Line_Number_Tbl(1).quote_line_id := X_Config_tbl(i).QUOTE_LINE_ID;
5970 
5971                   ASO_LINE_NUM_INT.ASO_UI_LINE_NUMBER (
5972                       P_In_Line_Number_Tbl   =>     l_In_Line_Number_Tbl,
5973                       X_Out_Line_Number_Tbl  =>     lx_Out_Line_Number_Tbl
5974                   );
5975 
5976                   L_Line_Number := ASO_LINE_NUM_INT.Get_UI_Line_Number(X_Config_tbl(i).QUOTE_LINE_ID);
5977 
5978 		  IF aso_debug_pub.g_debug_flag = 'Y' THEN
5979                  aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration succes l_line_number'||l_line_number);
5980 		 end if;
5981                  If l_invalid_model_line_num is Null then
5982                     l_invalid_model_line_num := l_line_number;
5983                  Else
5984                     l_invalid_model_line_num := l_invalid_model_line_num ||', '||l_line_number;
5985                  End if;
5986               End if;
5987 
5988           END LOOP;
5989 /*
5990               If l_changed_model_line_num is Null AND l_invalid_model_line_num is Null then
5991                  FND_MESSAGE.Set_Name('ASO', 'ASO_MODEL_LINES_VALID_NOCHANGE');
5992                  FND_MSG_PUB.ADD;
5993               End if;
5994 */
5995 
5996         IF aso_debug_pub.g_debug_flag = 'Y' THEN
5997             aso_debug_pub.add('ASO Quote Pub1 : Batch Validate configuration success after X_Config_tbl loop');
5998          END IF;
5999 
6000               If l_changed_model_line_num is Not Null OR l_invalid_model_line_num is Not Null then
6001                  FND_MESSAGE.Set_Name('ASO', 'ASO_MODEL_LINES_VALID_NOCHANGE');
6002                  FND_MSG_PUB.ADD;
6003               End if;
6004 
6005               If l_changed_model_line_num is Not Null and P_UPDATE_QUOTE = 'T' then
6006                   FND_MESSAGE.Set_Name('ASO', 'ASO_CHANGED_MODEL_LINES_QUOTE');
6007                   FND_MESSAGE.Set_Token('CHANGED_MODEL_LINE_NUM', l_changed_model_line_num, FALSE);
6008                   FND_MSG_PUB.ADD;
6009               Elsif l_changed_model_line_num is Not Null and P_UPDATE_QUOTE = 'F' then
6010                   FND_MESSAGE.Set_Name('ASO', 'ASO_UPDATE_MODEL_LINES_QUOTE');
6011                   FND_MESSAGE.Set_Token('CHANGED_MODEL_LINE_NUM', l_changed_model_line_num, FALSE);
6012                   FND_MSG_PUB.ADD;
6013               End if;
6014 
6015               If l_invalid_model_line_num is not null then
6016                   FND_MESSAGE.Set_Name('ASO', 'ASO_INVALID_MODEL_LINES_QUOTE');
6017                   FND_MESSAGE.Set_Token('INVALID_MODEL_LINE_NUM', l_invalid_model_line_num, FALSE);
6018                   FND_MSG_PUB.ADD;
6019               End if;
6020 
6021              /*This needs to be done where the BV api is called during Place_Order
6022               If X_Config_tbl.count > 0 and X_Config_tbl(i).IS_CFG_CHANGED_FLAG = 'Y' then
6023                   FND_MESSAGE.Set_Name('ASO', 'ASO_CHANGED_MODEL_LINES_REVIEW');
6024                   FND_MSG_PUB.ADD;
6025               End if;
6026               */
6027         End if;
6028 
6029       x_return_status := l_return_status;
6030 
6031       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6032          aso_debug_pub.add('ASO Quote Pub : End Batch Validate configuration  x_return_status '|| x_return_status);
6033          aso_debug_pub.add('ASO Quote Pub : End Batch Validate configuration  X_Config_tbl.count '|| X_Config_tbl.count);
6034       End if;
6035 
6036       -- Standard check for p_commit
6037       IF FND_API.to_Boolean( p_commit ) THEN
6038           COMMIT WORK;
6039       END IF;
6040 
6041       /* Added this Function to return the x_msg_data */
6042       --L_Return_X_Msg_data := Return_X_Msg_data;
6043 
6044       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6045          aso_debug_pub.add('ASO Quote Pub : End Batch Validate configuration  L_Return_X_Msg_data '||L_Return_X_Msg_data, 1, 'Y');
6046       End if;
6047 
6048    -- Standard call to get message count and if count is 1, get message info.
6049      FND_MSG_PUB.Count_And_Get
6050       ( p_count      => x_msg_count,
6051         p_data       => x_msg_data
6052       );
6053 
6054       /* Assign the L_Return_X_Msg_data to the x_msg_data that can be shown in UI directly */
6055     -- x_msg_data := L_Return_X_Msg_data;
6056 
6057       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6058          aso_debug_pub.add('ASO Quote Pub : End Batch Validate configuration  x_msg_count '||x_msg_count, 1, 'Y');
6059       End if;
6060 
6061 
6062       EXCEPTION
6063             WHEN EXCP_USER_DEFINED THEN
6064                 x_return_status := FND_API.G_RET_STS_ERROR;
6065 
6066                 fnd_msg_pub.count_and_get
6067                 ( p_count => x_msg_count
6068                 , p_data  => x_msg_data);
6069 
6070           WHEN FND_API.G_EXC_ERROR THEN
6071               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6072                    P_API_NAME => L_API_NAME
6073                   ,P_PKG_NAME => G_PKG_NAME
6074                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
6075                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
6076                   ,X_MSG_COUNT => X_MSG_COUNT
6077                   ,X_MSG_DATA => X_MSG_DATA
6078                   ,X_RETURN_STATUS => X_RETURN_STATUS);
6079 
6080           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6081               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6082                    P_API_NAME => L_API_NAME
6083                   ,P_PKG_NAME => G_PKG_NAME
6084                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6085                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
6086                   ,X_MSG_COUNT => X_MSG_COUNT
6087                   ,X_MSG_DATA => X_MSG_DATA
6088                   ,X_RETURN_STATUS => X_RETURN_STATUS);
6089 
6090           WHEN OTHERS THEN
6091               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
6092                    P_API_NAME => L_API_NAME
6093                   ,P_PKG_NAME => G_PKG_NAME
6094                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
6095                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PUB
6096                   ,X_MSG_COUNT => X_MSG_COUNT
6097                   ,X_MSG_DATA => X_MSG_DATA
6098                   ,X_RETURN_STATUS => X_RETURN_STATUS);
6099 
6100 end validate_model_configuration;
6101 
6102 End ASO_QUOTE_PUB;