[Home] [Help]
PACKAGE BODY: APPS.ASO_QUOTE_TMPL_PVT
Source
1 PACKAGE BODY ASO_QUOTE_TMPL_PVT AS
2 /* $Header: asovqtmb.pls 120.13 2012/01/31 06:40:04 vidsrini ship $ */
3
4 -- Start of Comments
5 -- Package name : ASO_QUOTE_TMPL_PVT
6 -- Purpose :
7 -- End of Comments
8
9
10
11 G_PKG_NAME CONSTANT VARCHAR2(30) := 'ASO_QUOTE_TMPL_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovqtmb.pls';
13
14
15
16
17
18
19 PROCEDURE Add_Template_To_Quote(
20 P_API_VERSION_NUMBER IN NUMBER,
21 P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
22 P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
23 P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
24 P_UPDATE_FLAG IN VARCHAR2 := 'Y',
25 P_TEMPLATE_ID_TBL IN ASO_QUOTE_TMPL_INT.LIST_TEMPLATE_TBL_TYPE,
26 P_QTE_HEADER_REC IN ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
27 P_CONTROL_REC IN ASO_QUOTE_PUB.CONTROL_REC_TYPE := ASO_QUOTE_PUB.G_MISS_control_REC,
28 x_Qte_Line_Tbl OUT NOCOPY /* file.sql.39 change */ ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
29 x_Qte_Line_Dtl_Tbl OUT NOCOPY /* file.sql.39 change */ ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type,
30 X_RETURN_STATUS OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
31 X_MSG_COUNT OUT NOCOPY /* file.sql.39 change */ NUMBER,
32 X_MSG_DATA OUT NOCOPY /* file.sql.39 change */ VARCHAR2
33 )
34 IS
35
36 G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
37 G_LOGIN_ID NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
38
39 L_API_NAME VARCHAR2(50) := 'Add_Template_To_Quote';
40 L_API_VERSION CONSTANT NUMBER := 1.0;
41
42 l_template_line_count NUMBER := 0;
43 l_conc_segments VARCHAR2(40);
44 l_top_model_line_id NUMBER := FND_API.G_MISS_NUM;
45 l_dropped_flag VARCHAR2(1) := 'N';
46 l_service_flag VARCHAR2(1) := 'N';
47 l_config_header_id NUMBER;
48 l_config_rev_number NUMBER;
49 lx_config_header_id NUMBER;
50 lx_config_rev_number NUMBER;
51 lx_line_relationship_id NUMBER;
52
53 l_dropped_line_id_tbl ASO_QUOTE_TMPL_INT.List_Template_Tbl_Type := ASO_QUOTE_TMPL_INT.G_Miss_List_Template_Tbl;
54 l_search_line_id_tbl ASO_QUOTE_TMPL_INT.List_Template_Tbl_Type := ASO_QUOTE_TMPL_INT.G_Miss_List_Template_Tbl;
55 l_temp_line_dtl_tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
56 l_cfg_control_rec ASO_CFG_INT.Control_rec_Type := ASO_CFG_INT.G_Miss_Control_Rec;
57 l_line_rltship_rec ASO_QUOTE_PUB.Line_Rltship_Rec_Type := ASO_QUOTE_PUB.G_Miss_Line_Rltship_Rec;
58
59 -- Variables to hold values to be passed to ASO_VALIDATE_PRICING_PVT.Validate_Pricing_Order()
60 l_pricing_control_rec ASO_PRICING_INT.Pricing_Control_Rec_Type;
61 lp_Qte_Line_Tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type := ASO_QUOTE_PUB.G_Miss_Qte_Line_Tbl;
62 lpx_Qte_Header_Rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
63 lpx_Qte_Line_Tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
64 lpx_Qte_Line_Dtl_Tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
65 lpx_Price_Adjustment_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
66 lpx_Price_Adj_Attr_Tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
67 lpx_Price_Adj_Rltship_Tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
68
69 -- Variables to hold values to be passed to ASO_QUOTE_PUB.Update_Quote()
70 l_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec;
71 l_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type := ASO_QUOTE_PUB.G_Miss_Qte_Line_Tbl;
72 l_qte_line_dtl_tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
73 X_Qte_Header_Rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
74 --X_Qte_Line_Tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
75 --X_Qte_Line_Dtl_Tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
76 X_Hd_Price_Attributes_Tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
77 X_Hd_Payment_Tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
78 X_Hd_Shipment_Tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
79 X_Hd_Freight_Charge_Tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
80 X_Hd_Tax_Detail_Tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
81 X_Line_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
82 X_line_rltship_tbl ASO_QUOTE_PUB.Line_Rltship_Tbl_Type;
83 X_Price_Adjustment_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
84 X_Price_Adj_Attr_Tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
85 X_Price_Adj_Rltship_Tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type;
86 X_Ln_Price_Attributes_Tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
87 X_Ln_Payment_Tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
88 X_Ln_Shipment_Tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
89 X_Ln_Freight_Charge_Tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
90 X_Ln_Tax_Detail_Tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
91 lx_orig_item_id_tbl CZ_API_PUB.number_tbl_type;
92 lx_new_item_id_tbl CZ_API_PUB.number_tbl_type;
93
94 TYPE search_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
95 l_orig_config_id_tbl search_type;
96
97 -- ER 9433340
98 l_validate_item boolean;
99 l_tmpl_org_id number;
100 l_prof_temp_filter varchar2(1):=nvl(fnd_profile.value('ASO_FILTER_QUOTE_TEMPLATE_BY'),'Q');
101 l_qte_organization_id number;
102
103 CURSOR c_conc_segments (l_inventory_item_id NUMBER) IS
104 SELECT concatenated_segments
105 FROM MTL_SYSTEM_ITEMS_VL
106 WHERE inventory_item_id = l_inventory_item_id;
107
108 CURSOR c_config_lines (l_quote_line_id NUMBER) IS
109 SELECT A.quote_line_id
110 FROM ASO_QUOTE_LINE_DETAILS A
111 WHERE (config_header_id, config_revision_num) = ( SELECT config_header_id, config_revision_num FROM ASO_QUOTE_LINE_DETAILS WHERE quote_line_id = l_quote_line_id );
112
113 CURSOR c_service_lines (l_quote_line_id NUMBER) IS
114 SELECT quote_line_id
115 FROM ASO_QUOTE_LINE_DETAILS
116 WHERE service_ref_line_id = l_quote_line_id;
117
118 CURSOR c_service_items (l_inventory_item_id NUMBER, l_organization_id NUMBER) IS
119 SELECT service_item_flag
120 FROM MTL_SYSTEM_ITEMS_VL
121 WHERE inventory_item_id = l_inventory_item_id
122 AND organization_id = l_organization_id;
123
124 CURSOR c_get_org_id ( l_qte_hdr_id NUMBER) IS
125 SELECT org_id
126 FROM aso_quote_headers_all
127 WHERE quote_header_id = l_qte_hdr_id;
128
129 BEGIN
130
131 -- Standard Start of API savepoint
132 SAVEPOINT Add_Template_To_Quote_PVT;
133
134 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
135
136 IF aso_debug_pub.g_debug_flag = 'Y' THEN
137 aso_debug_pub.add('****** Start of Add_Template_To_Quote API ******', 1, 'Y');
138 END IF;
139
140 -- Standard call to check for call compatibility.
141 IF NOT FND_API.Compatible_API_Call(
142 L_API_VERSION ,
143 P_API_VERSION_NUMBER,
144 L_API_NAME ,
145 G_PKG_NAME
146 ) THEN
147 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
148 END IF;
149
150 -- Initialize message list if p_init_msg_list is set to TRUE.
151 IF FND_API.To_Boolean(p_init_msg_list) THEN
152 FND_Msg_Pub.initialize;
153 END IF;
154
155 -- Initialize API return status to success
156 x_return_status := FND_API.G_RET_STS_SUCCESS;
157
158 -- API body
159 l_qte_header_rec := p_qte_header_rec;
160
161 IF (p_qte_header_rec.org_id is null or p_qte_header_rec.org_id = fnd_api.g_miss_num ) then
162 IF aso_debug_pub.g_debug_flag = 'Y' THEN
163 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Input ogr_id is null or g_miss', 1, 'Y');
164 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: p_qte_header_rec.quote_header_id: ' || p_qte_header_rec.quote_header_id, 1, 'Y');
165 END IF;
166
167 open c_get_org_id(p_qte_header_rec.quote_header_id);
168 fetch c_get_org_id into l_qte_header_rec.org_id;
169 close c_get_org_id;
170
171
172
173 END IF;
174
175 IF aso_debug_pub.g_debug_flag = 'Y' THEN
176 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: l_qte_header_rec.org_id: '|| l_qte_header_rec.org_id, 1, 'Y');
177 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: p_qte_header_rec.org_id: '|| p_qte_header_rec.org_id, 1, 'Y');
178 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT:template filter profile value: '|| l_prof_temp_filter, 1, 'Y');
179 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: before setting org context '||p_template_id_tbl.count);
180 END IF;
181
182
183
184 FOR i IN 1..p_template_id_tbl.count LOOP
185 -- ER 9433340
186 if l_prof_temp_filter<>'Q' then
187
188 -- Setting MOAC to pick lines data from other org
189 select org_id into l_tmpl_org_id from aso_quote_headers_all
190 where quote_header_id=p_template_id_tbl(i);
191 mo_global.set_policy_context('S', l_tmpl_org_id);
192 end if;
193 l_qte_line_tbl := ASO_UTILITY_PVT.Query_Qte_Line_Rows_sort(p_template_id_tbl(i));
194 -- ER 9433340
195 if l_tmpl_org_id=l_qte_header_rec.org_id then -- same org id
196 l_prof_temp_filter:='Q';
197 end if;
198
199 FOR j IN 1..l_qte_line_tbl.count LOOP
200 -- Quote operating unit is same as template operating unit
201 if l_prof_temp_filter='Q' then
202 l_validate_item:=true;
203 else
204 --aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: entered else of profile');
205 -- validate item based on new operating unit
206 l_validate_item:=Validate_Item(
207 p_qte_header_rec => l_qte_header_rec,
208 p_quote_line_id => l_qte_line_tbl(j).quote_line_id,
209 p_inventory_item_id => l_qte_line_tbl(j).inventory_item_id,
210 --p_organization_id => l_qte_line_tbl(j).organization_id,
211 p_quantity => l_qte_line_tbl(j).quantity,
212 p_uom_code => l_qte_line_tbl(j).uom_code);
213 end if;
214
215 if l_validate_item = true then
216 l_template_line_count := l_template_line_count + 1;
217 lp_qte_line_tbl(l_template_line_count) := l_qte_line_tbl(j);
218 -- Updating the lines table with new organization id in case operating unit is different
219 if l_prof_temp_filter<>'Q' then
220 if l_qte_header_rec.org_id<>l_tmpl_org_id then
221 mo_global.set_policy_context('S', l_qte_header_rec.org_id);
222 end if;
223 l_qte_organization_id:=oe_sys_parameters.value(param_name => 'MASTER_ORGANIZATION_ID',p_org_id => l_qte_header_rec.org_id);
224 lp_qte_line_tbl(l_template_line_count).organization_id:=l_qte_organization_id;
225 lp_qte_line_tbl(l_template_line_count).org_id:=l_qte_header_rec.org_id;
226 end if;
227 end if;
228 END LOOP;
229 l_qte_line_tbl := ASO_QUOTE_PUB.G_Miss_Qte_Line_Tbl;
230 END LOOP;
231
232 l_pricing_control_rec.request_type := 'ASO';
233 l_pricing_control_rec.pricing_event := 'BATCH';
234
235 IF aso_debug_pub.g_debug_flag = 'Y' THEN
236 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: before Validate_Pricing_Order', 1, 'Y');
237 END IF;
238
239 ASO_VALIDATE_PRICING_PVT.Validate_Pricing_Order(
240 p_api_version_number => 1.0,
241 p_init_msg_list => FND_API.G_FALSE,
242 p_commit => FND_API.G_FALSE,
243 p_control_rec => l_pricing_control_rec,
244 p_qte_header_rec => l_qte_header_rec,
245 p_qte_line_tbl => lp_qte_line_tbl,
246 x_qte_header_rec => lpx_qte_header_rec,
247 x_qte_line_tbl => lpx_qte_line_tbl,
248 x_qte_line_dtl_tbl => lpx_qte_line_dtl_tbl,
249 x_price_adj_tbl => lpx_price_adjustment_tbl,
250 x_price_adj_attr_tbl => lpx_price_adj_attr_tbl,
251 x_price_adj_rltship_tbl => lpx_price_adj_rltship_tbl,
252 x_return_status => x_return_status,
253 x_msg_count => x_msg_count,
254 x_msg_data => x_msg_data
255 );
256
257 IF aso_debug_pub.g_debug_flag = 'Y' THEN
258 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Validate_Pricing_Order', 1, 'Y');
259 END IF;
260
261 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
262 RAISE FND_API.G_EXC_ERROR;
263 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
264 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
265 END IF;
266
267 IF aso_debug_pub.g_debug_flag = 'Y' THEN
268 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: start validated lines loop', 1, 'Y');
269 END IF;
270
271 FOR i IN 1..lpx_qte_line_tbl.count LOOP
272 IF lpx_qte_line_tbl(i).pricing_status_code <> FND_API.G_RET_STS_SUCCESS THEN
273 l_dropped_line_id_tbl(lpx_qte_line_tbl(i).quote_line_id) := lpx_qte_line_tbl(i).quote_line_id;
274
275 FOR conc_segments_rec IN c_conc_segments(lpx_qte_line_tbl(i).inventory_item_id) LOOP
276 l_conc_segments := conc_segments_rec.concatenated_segments;
277 END LOOP;
278
279 IF aso_debug_pub.g_debug_flag = 'Y' THEN
280 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: item has pricing error: ' || lpx_qte_line_tbl(i).pricing_status_text, 1, 'N');
281 END IF;
282 FND_MESSAGE.Set_Name('ASO', 'ASO_QTM_INVALID_PRICELIST');
283 FND_MESSAGE.Set_Token('INVITEM', l_conc_segments, FALSE);
284 FND_MSG_PUB.ADD;
285
286 IF lpx_qte_line_tbl(i).item_type_code IN ('MDL','CFG') THEN
287 FOR config_lines_rec IN c_config_lines(lpx_qte_line_tbl(i).quote_line_id) LOOP
288 IF config_lines_rec.quote_line_id <> lpx_qte_line_tbl(i).quote_line_id THEN
289 l_dropped_line_id_tbl(config_lines_rec.quote_line_id) := config_lines_rec.quote_line_id;
290 END IF;
291 END LOOP;
292 END IF;
293
294 FOR service_lines_rec IN c_service_lines(lpx_qte_line_tbl(i).quote_line_id) LOOP
295 l_dropped_line_id_tbl(service_lines_rec.quote_line_id) := service_lines_rec.quote_line_id;
296 END LOOP;
297 END IF;
298 END LOOP;
299
300 IF aso_debug_pub.g_debug_flag = 'Y' THEN
301 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: end validated lines loop', 1, 'Y');
302 END IF;
303
304 l_template_line_count := 0;
305
306 IF aso_debug_pub.g_debug_flag = 'Y' THEN
307 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: start drop items loop', 1, 'Y');
308 END IF;
309
310 FOR i IN 1..lpx_qte_line_tbl.count LOOP
311 l_dropped_flag := 'N';
312
313 IF l_dropped_line_id_tbl.EXISTS(lpx_qte_line_tbl(i).quote_line_id) THEN
314 l_dropped_flag := 'Y';
315 END IF;
316
317 IF l_dropped_flag = 'N' THEN
318 l_template_line_count := l_template_line_count + 1;
319 l_qte_line_tbl(l_template_line_count) := lpx_qte_line_tbl(i);
320 l_search_line_id_tbl(lpx_qte_line_tbl(i).quote_line_id) := l_template_line_count;
321 END IF;
322 END LOOP;
323
324 IF aso_debug_pub.g_debug_flag = 'Y' THEN
325 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: end drop items loop', 1, 'Y');
326 END IF;
327
328 l_template_line_count := 0;
329
330 IF aso_debug_pub.g_debug_flag = 'Y' THEN
331 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: start line details loop', 1, 'Y');
332 END IF;
333
334 FOR i IN 1..l_qte_line_tbl.count LOOP
335 IF l_qte_line_tbl(i).item_type_code IN ('MDL','CFG') THEN
336 l_temp_line_dtl_tbl := ASO_QUOTE_PUB.G_Miss_Qte_Line_Dtl_Tbl;
337 l_temp_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_tbl(i).quote_line_id);
338
339 IF l_temp_line_dtl_tbl.count > 0 THEN
340 l_template_line_count := l_template_line_count + 1;
341 l_qte_line_dtl_tbl(l_template_line_count) := l_temp_line_dtl_tbl(1);
342 l_qte_line_dtl_tbl(l_template_line_count).operation_code := 'CREATE';
343 l_qte_line_dtl_tbl(l_template_line_count).qte_line_index := i;
344 l_qte_line_dtl_tbl(l_template_line_count).quote_line_id := NULL;
345
346 IF l_search_line_id_tbl.EXISTS(l_qte_line_dtl_tbl(l_template_line_count).ref_line_id) THEN
347 l_qte_line_dtl_tbl(l_template_line_count).ref_line_index := l_search_line_id_tbl(l_qte_line_dtl_tbl(l_template_line_count).ref_line_id);
348 l_qte_line_dtl_tbl(l_template_line_count).ref_line_id := NULL;
349 END IF;
350
351 -- P1 10261431
352 IF l_search_line_id_tbl.EXISTS(l_qte_line_dtl_tbl(l_template_line_count).top_model_line_id) THEN
353 l_qte_line_dtl_tbl(l_template_line_count).top_model_line_index := l_search_line_id_tbl(l_qte_line_dtl_tbl(l_template_line_count).top_model_line_id);
354 l_qte_line_dtl_tbl(l_template_line_count).top_model_line_id := NULL;
355 END IF;
356 -- P1 10261431
357 IF l_search_line_id_tbl.EXISTS(l_qte_line_dtl_tbl(l_template_line_count).ato_line_id) THEN
358 l_qte_line_dtl_tbl(l_template_line_count).ato_line_index := l_search_line_id_tbl(l_qte_line_dtl_tbl(l_template_line_count).ato_line_id);
359 l_qte_line_dtl_tbl(l_template_line_count).ato_line_id := NULL;
360 END IF;
361
362 END IF;
363 ELSE
364 l_service_flag := 'N';
365
366 FOR service_items_rec in c_service_items(l_qte_line_tbl(i).inventory_item_id, l_qte_line_tbl(i).organization_id) LOOP
367 l_service_flag := service_items_rec.service_item_flag;
368 END LOOP;
369
370 IF l_service_flag = 'Y' THEN
371 l_temp_line_dtl_tbl := ASO_QUOTE_PUB.G_Miss_Qte_Line_Dtl_Tbl;
372 l_temp_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_tbl(i).quote_line_id);
373
374 IF l_temp_line_dtl_tbl.count > 0 THEN
375 l_template_line_count := l_template_line_count + 1;
376 l_qte_line_dtl_tbl(l_template_line_count) := l_temp_line_dtl_tbl(1);
377 l_qte_line_dtl_tbl(l_template_line_count).qte_line_index := i;
378 l_qte_line_dtl_tbl(l_template_line_count).operation_code := 'CREATE';
379 l_qte_line_dtl_tbl(l_template_line_count).quote_line_id := NULL;
380 l_qte_line_dtl_tbl(l_template_line_count).quote_line_detail_id := NULL;
381
382 IF l_search_line_id_tbl.EXISTS(l_qte_line_dtl_tbl(l_template_line_count).service_ref_line_id) THEN
383 l_qte_line_dtl_tbl(l_template_line_count).service_ref_qte_line_index := l_search_line_id_tbl(l_qte_line_dtl_tbl(l_template_line_count).service_ref_line_id);
384 l_qte_line_dtl_tbl(l_template_line_count).service_ref_line_id := NULL;
385 END IF;
386 END IF;
387
388 l_qte_line_tbl(i).start_date_active := sysdate;
389 l_qte_line_tbl(i).end_date_active := null;
390
391 END IF;
392 END IF;
393
394 END LOOP;
395
396 IF aso_debug_pub.g_debug_flag = 'Y' THEN
397 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: end line details loop', 1, 'Y');
398 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: start copy configuration loop', 1, 'Y');
399 END IF;
400
401 FOR i IN 1..l_qte_line_tbl.count LOOP
402 IF l_qte_line_tbl(i).item_type_code = 'MDL' THEN
403 FOR j IN 1..l_qte_line_dtl_tbl.count LOOP
404 IF l_qte_line_dtl_tbl(j).qte_line_index = i THEN
405 IF (l_qte_line_dtl_tbl(j).config_header_id <> FND_API.G_MISS_NUM AND l_qte_line_dtl_tbl(j).config_header_id IS NOT NULL) AND
406 (l_qte_line_dtl_tbl(j).config_revision_num <> FND_API.G_MISS_NUM AND l_qte_line_dtl_tbl(j).config_revision_num IS NOT NULL) THEN
407
408 l_config_header_id := l_qte_line_dtl_tbl(j).config_header_id;
409 l_config_rev_number := l_qte_line_dtl_tbl(j).config_revision_num;
410
411
412 IF aso_debug_pub.g_debug_flag = 'Y' THEN
413 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: before Copy_Configuration', 1, 'Y');
414 END IF;
415
416
417 /*ASO_CFG_INT.Copy_Configuration(
418 p_api_version_number => 1.0,
419 p_control_rec => l_cfg_control_rec,
420 p_config_hdr_id => l_config_header_id,
421 p_config_rev_nbr => l_config_rev_number,
422 x_config_hdr_id => lx_config_header_id,
423 x_config_rev_nbr => lx_config_rev_number,
424 x_return_status => x_return_status,
425 x_msg_count => x_msg_count,
426 x_msg_data => x_msg_data
427 );*/
428
429 ASO_CFG_INT.Copy_Configuration(
430 p_api_version_number => 1.0,
431 p_init_msg_list => FND_API.G_FALSE,
432 p_commit => FND_API.G_FALSE,
433 p_config_header_id => l_config_header_id,
434 p_config_revision_num => l_config_rev_number,
435 p_copy_mode => CZ_API_PUB.G_NEW_HEADER_COPY_MODE,
436 p_handle_deleted_flag => NULL,
437 p_new_name => NULL,
438 x_config_header_id => lx_config_header_id,
439 x_config_revision_num => lx_config_rev_number,
440 x_orig_item_id_tbl => lx_orig_item_id_tbl,
441 x_new_item_id_tbl => lx_new_item_id_tbl,
442 x_return_status => x_return_status,
443 x_msg_count => x_msg_count,
444 x_msg_data => x_msg_data
445 );
446
447 IF aso_debug_pub.g_debug_flag = 'Y' THEN
448 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Copy_Configuration', 1, 'Y');
449 END IF;
450
451 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
452 RAISE FND_API.G_EXC_ERROR;
453 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
454 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
455 END IF;
456
457 -- Changes for Config item Id
458
459 IF (lx_orig_item_id_tbl.count > 0) AND (lx_new_item_id_tbl.count > 0) THEN
460 FOR i IN lx_orig_item_id_tbl.FIRST ..lx_orig_item_id_tbl.LAST LOOP
461 IF (lx_orig_item_id_tbl.exists(i)) and (lx_orig_item_id_tbl(i) is not null) THEN
462 l_orig_config_id_tbl(lx_new_item_id_tbl(i)) := lx_new_item_id_tbl(i);
463 END IF;
464 END LOOP;
465 end if;
466
467
468 FOR k IN 1..l_qte_line_dtl_tbl.count LOOP
469 IF l_qte_line_dtl_tbl(k).config_header_id = l_config_header_id AND l_qte_line_dtl_tbl(k).config_revision_num = l_config_rev_number THEN
470 l_qte_line_dtl_tbl(k).config_header_id := lx_config_header_id;
471 l_qte_line_dtl_tbl(k).config_revision_num := lx_config_rev_number;
472 l_qte_line_dtl_tbl(k).quote_line_detail_id := null;
473 IF l_orig_config_id_tbl.exists(l_qte_line_dtl_tbl(k).config_item_id) THEN
474 l_qte_line_dtl_tbl(k).config_item_id := l_orig_config_id_tbl(l_qte_line_dtl_tbl(k).config_item_id);
475 end if;
476 END IF;
477 END LOOP;-- loop to assign new header and rev
478
479 END IF;
480 END IF;
481 END LOOP; -- loop on line detail tbl
482 END IF;
483
484 l_qte_line_tbl(i).quote_header_id := p_qte_header_rec.quote_header_id;
485 l_qte_line_tbl(i).operation_code := 'CREATE';
486 l_qte_line_tbl(i).quote_line_id := NULL;
487 l_qte_line_tbl(i).line_number := FND_API.G_MISS_NUM;
488 END LOOP;
489
490 -- Template Manager Changes
491 IF p_update_flag = 'N' THEN
492 x_qte_line_tbl := l_qte_line_tbl;
493 x_qte_line_dtl_tbl := l_qte_line_dtl_tbl;
494 ELSE
495
496 IF aso_debug_pub.g_debug_flag = 'Y' THEN
497 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: end copy configuration loop', 1, 'Y');
498 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: before Update_Quote', 1, 'Y');
499
500 END IF;
501
502 --mo_global.set_policy_context('S', l_qte_header_rec.org_id);
503 ASO_QUOTE_PUB.Update_Quote(
504 P_Api_Version_Number => 1.0,
505 P_Init_Msg_List => FND_API.G_FALSE,
506 P_Commit => FND_API.G_FALSE,
507 P_Control_Rec => p_control_rec,
508 P_Qte_Header_Rec => l_qte_header_rec,
509 P_Qte_Line_Tbl => l_qte_line_tbL,
510 P_Qte_Line_Dtl_Tbl => l_qte_line_dtl_tbl,
511 X_Qte_Header_Rec => X_Qte_Header_Rec,
512 X_Qte_Line_Tbl => X_Qte_Line_Tbl,
513 X_Qte_Line_Dtl_Tbl => X_Qte_Line_Dtl_Tbl,
514 X_Hd_Price_Attributes_Tbl => X_Hd_Price_Attributes_Tbl,
515 X_Hd_Payment_Tbl => X_Hd_Payment_Tbl,
516 X_Hd_Shipment_Tbl => X_Hd_Shipment_Tbl,
517 X_Hd_Freight_Charge_Tbl => X_Hd_Freight_Charge_Tbl,
518 X_Hd_Tax_Detail_Tbl => X_Hd_Tax_Detail_Tbl,
519 X_Line_Attr_Ext_Tbl => X_Line_Attr_Ext_Tbl,
520 X_line_rltship_tbl => X_line_rltship_tbl,
521 X_Price_Adjustment_Tbl => X_Price_Adjustment_Tbl,
522 X_Price_Adj_Attr_Tbl => X_Price_Adj_Attr_Tbl,
523 X_Price_Adj_Rltship_Tbl => X_Price_Adj_Rltship_Tbl,
524 X_Ln_Price_Attributes_Tbl => X_Ln_Price_Attributes_Tbl,
525 X_Ln_Payment_Tbl => X_Ln_Payment_Tbl,
526 X_Ln_Shipment_Tbl => X_Ln_Shipment_Tbl,
527 X_Ln_Freight_Charge_Tbl => X_Ln_Freight_Charge_Tbl,
528 X_Ln_Tax_Detail_Tbl => X_Ln_Tax_Detail_Tbl,
529 X_Return_Status => x_return_status,
530 X_Msg_Count => x_msg_count,
531 X_Msg_Data => x_msg_data
532 );
533
534 --mo_global.set_policy_context('M', null);
535
536 IF aso_debug_pub.g_debug_flag = 'Y' THEN
537 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Update_Quote', 1, 'Y');
538 END IF;
539
540 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
541 RAISE FND_API.G_EXC_ERROR;
542 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
543 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
544 END IF;
545
546 -- Commented for bug no 6731701 so that only the record for newly inserted line go into relationship table
547 /* x_qte_line_tbl := ASO_QUOTE_PUB.G_Miss_Qte_Line_Tbl;
548 x_qte_line_tbl := ASO_UTILITY_PVT.Query_Qte_Line_Rows_sort(p_qte_header_rec.quote_header_id);
549 */
550 IF aso_debug_pub.g_debug_flag = 'Y' THEN
551 For l in x_qte_line_tbl.FIRST..x_qte_line_tbl.LAST LOOP
552 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT:quote line id :'||x_qte_line_tbl(l).quote_line_id,1,'Y');
553 END LOOP;
554 end if;
555
556 IF aso_debug_pub.g_debug_flag = 'Y' THEN
557 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: start line relationships loop', 1, 'Y');
558 END IF;
559
560 FOR i in 1..x_qte_line_tbl.count LOOP
561 l_line_rltship_rec := ASO_QUOTE_PUB.G_Miss_Line_Rltship_Rec;
562 x_qte_line_dtl_tbl := ASO_QUOTE_PUB.G_Miss_Qte_Line_Dtl_Tbl;
563 x_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(x_qte_line_tbl(i).quote_line_id);
564
565 IF x_qte_line_dtl_tbl.count > 0 THEN
566
567 IF aso_debug_pub.g_debug_flag = 'Y' THEN
568 For k in x_qte_line_dtl_tbl.FIRST..x_qte_line_dtl_tbl.LAST LOOP
569 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT:quote line detail id :'||x_qte_line_dtl_tbl(k).quote_line_detail_id,1,'Y');
570 END LOOP;
571 end if;
572
573
574
575 IF x_qte_line_dtl_tbl(1).ref_line_id IS NOT NULL AND x_qte_line_dtl_tbl(1).ref_line_id <> FND_API.G_MISS_NUM THEN
576 l_line_rltship_rec.OPERATION_CODE := 'CREATE';
577 l_line_rltship_rec.QUOTE_LINE_ID := x_qte_line_dtl_tbl(1).ref_line_id;
578 l_line_rltship_rec.RELATED_QUOTE_LINE_ID := x_qte_line_dtl_tbl(1).quote_line_id;
579 l_line_rltship_rec.RELATIONSHIP_TYPE_CODE := 'CONFIG';
580
581 IF aso_debug_pub.g_debug_flag = 'Y' THEN
582 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: before Create_Line_Rltship', 1, 'Y');
583 END IF;
584
585 ASO_LINE_RLTSHIP_PVT.Create_Line_Rltship(
586 P_Api_Version_Number => 1.0,
587 P_Init_Msg_List => FND_API.G_FALSE,
588 P_Commit => FND_API.G_FALSE,
589 P_Validation_Level => p_validation_level,
590 P_Line_Rltship_Rec => l_line_rltship_rec,
591 X_LINE_RELATIONSHIP_ID => lx_line_relationship_id,
592 X_Return_Status => x_return_status,
593 X_Msg_Count => x_msg_count,
594 X_Msg_Data => x_msg_data
595 );
596
597 IF aso_debug_pub.g_debug_flag = 'Y' THEN
598 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Create_Line_Rltship: lx_line_relationship_id: '||lx_line_relationship_id, 1, 'Y');
599 END IF;
600
601 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
602 RAISE FND_API.G_EXC_ERROR;
603 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
604 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
605 END IF;
606 END IF;
607 END IF;
608 END LOOP;
609
610 IF aso_debug_pub.g_debug_flag = 'Y' THEN
611 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: end line relationships loop', 1, 'Y');
612
613 END IF;
614 END IF;--Template manager
615
616
617 -- End of API body
618 IF aso_debug_pub.g_debug_flag = 'Y' THEN
619 aso_debug_pub.add('****** End of Add_Template_To_Quote API ******', 1, 'Y');
620 END IF;
621
622 -- Standard check of p_commit
623 IF FND_API.To_Boolean(p_commit) THEN
624 COMMIT WORK;
625 END IF;
626
627 -- Standard call to get message count and if count is 1, get message info
628 FND_Msg_Pub.Count_And_Get(
629 p_encoded => FND_API.G_FALSE,
630 p_count => x_msg_count ,
631 p_data => x_msg_data
632 );
633
634 EXCEPTION
635 WHEN FND_API.G_EXC_ERROR THEN
636 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
637 P_API_NAME => L_API_NAME,
638 P_PKG_NAME => G_PKG_NAME,
639 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
640 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT,
641 P_SQLCODE => SQLCODE,
642 P_SQLERRM => SQLERRM,
643 X_MSG_COUNT => X_MSG_COUNT,
644 X_MSG_DATA => X_MSG_DATA,
645 X_RETURN_STATUS => X_RETURN_STATUS
646 );
647
648 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
649 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
650 P_API_NAME => L_API_NAME,
651 P_PKG_NAME => G_PKG_NAME,
652 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
653 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT,
654 P_SQLCODE => SQLCODE,
655 P_SQLERRM => SQLERRM,
656 X_MSG_COUNT => X_MSG_COUNT,
657 X_MSG_DATA => X_MSG_DATA,
658 X_RETURN_STATUS => X_RETURN_STATUS
659 );
660
661 WHEN OTHERS THEN
662 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
663 P_API_NAME => L_API_NAME,
664 P_PKG_NAME => G_PKG_NAME,
665 P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS,
666 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT,
667 P_SQLCODE => SQLCODE,
668 P_SQLERRM => SQLERRM,
669 X_MSG_COUNT => X_MSG_COUNT,
670 X_MSG_DATA => X_MSG_DATA,
671 X_RETURN_STATUS => X_RETURN_STATUS
672 );
673
674 END Add_Template_To_Quote;
675
676 -- 9433340 Suner2
677 FUNCTION Validate_Item(
678 p_qte_header_rec IN ASO_QUOTE_PUB.Qte_Header_Rec_Type,
679 p_quote_line_id IN NUMBER,
680 p_inventory_item_id IN NUMBER,
681 --p_organization_id IN NUMBER,
682 p_quantity IN NUMBER,
683 p_uom_code IN VARCHAR2
684 ) RETURN BOOLEAN
685 is
686 CURSOR c_conc_segments (l_inventory_item_id NUMBER) IS
687 SELECT concatenated_segments
688 FROM MTL_SYSTEM_ITEMS_VL
689 WHERE inventory_item_id = l_inventory_item_id;
690
691 CURSOR c_orderable_items (l_inventory_item_id NUMBER, l_organization_id NUMBER) IS
692 SELECT bom_item_type,
693 primary_uom_code,
694 service_item_flag
695 FROM MTL_SYSTEM_ITEMS_VL
696 WHERE inventory_item_id = l_inventory_item_id
697 AND organization_id = l_organization_id
698 AND customer_order_enabled_flag = 'Y'
699 AND bom_item_type <> 2
700 AND NVL(start_date_active, SYSDATE) <= SYSDATE
701 AND NVL(end_date_active, SYSDATE) >= SYSDATE;
702
703 cursor c_in_org_in_master_org(l_inventory_item_id NUMBER, l_organization_id NUMBER) IS
704 select segment1
705 from mtl_system_items_vl
706 WHERE inventory_item_id = l_inventory_item_id
707 AND organization_id = l_organization_id;
708
709 l_conc_segments VARCHAR2(40);
710 l_orderable_flag VARCHAR2(1) := 'N';
711 l_uom_code MTL_SYSTEM_ITEMS_B.primary_uom_code%TYPE;
712 l_resp_id NUMBER;
713 l_resp_appl_id NUMBER;
714 l_ui_def_id NUMBER;
715 l_output_qty NUMBER;
716 l_primary_qty NUMBER;
717 l_return_status VARCHAR2(30);
718
719 lx_return_status VARCHAR2(50);
720 lx_msg_count NUMBER;
721 lx_msg_data VARCHAR2(2000);
722 l_master_organization_id NUMBER;
723 l_segment1 VARCHAR2(240);
724
725 cursor c_service_ref_quote (l_Quote_line_id number) is
726 select service_ref_line_id
727 from aso_quote_line_Details
728 where quote_line_id= l_Quote_line_id
729 and service_ref_type_code ='QUOTE';
730
731 cursor c_service_ref_quote_line (l_Quote_line_id number) is
732 select inventory_item_id
733 from aso_quote_lines_All
734 where quote_line_id = l_quote_line_id;
735
736
737 lprof varchar2(10) := nvl(fnd_profile.value('ASO_FILTER_SERVICE_RF_END_CUST'),'N');
738 l_inv_id number;
739 l_service_ref_line_id number;
740 l_check_service_rec ASO_SERVICE_CONTRACTS_INT.CHECK_SERVICE_REC_TYPE;
741 l_cust number;
742 l_Available_YN VARCHAR2(1);
743
744
745
746 -- end service items
747
748 begin
749 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
750
751 IF aso_debug_pub.g_debug_flag = 'Y' THEN
752 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: *** Start of API body ***', 1, 'Y');
753 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: p_inventory_item_id: '|| p_inventory_item_id, 1, 'N');
754 --aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: p_organization_id: '|| p_organization_id, 1, 'N');
755 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: p_quantity: '|| p_quantity, 1, 'N');
756 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: p_uom_code: '|| p_uom_code, 1, 'N');
757 END IF;
758
759
760 FOR conc_segments_rec IN c_conc_segments(p_inventory_item_id) LOOP
761 l_conc_segments := conc_segments_rec.concatenated_segments;
762 END LOOP;
763
764
765 l_master_organization_id := oe_sys_parameters.value(param_name => 'MASTER_ORGANIZATION_ID',
766 p_org_id => p_qte_header_rec.org_id);
767
768 IF aso_debug_pub.g_debug_flag = 'Y' THEN
769 aso_debug_pub.add('l_master_organization_id: ' || l_master_organization_id);
770 aso_debug_pub.add(' p_qte_header_rec.org_id: ' || p_qte_header_rec.org_id);
771 END IF;
772
773 open c_in_org_in_master_org(p_inventory_item_id,l_master_organization_id);
774 fetch c_in_org_in_master_org into l_segment1;
775 if c_in_org_in_master_org%NOTFOUND THEN
776 IF aso_debug_pub.g_debug_flag = 'Y' THEN
777 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Item does not exist in the master org',1,'N');
778 END IF;
779
780 RETURN FALSE;
781
782 end if;
783 close c_in_org_in_master_org;
784
785
786 FOR orderable_items_rec IN c_orderable_items(p_inventory_item_id, l_master_organization_id) LOOP
787 l_orderable_flag := 'Y';
788 IF p_uom_code IS NULL THEN
789 l_uom_code := orderable_items_rec.primary_uom_code;
790
791 ELSIF p_uom_code IS NOT NULL AND p_uom_code <> FND_API.G_MISS_CHAR THEN
792 l_uom_code := p_uom_code;
793
794 END IF;
795
796
797 IF orderable_items_rec.service_item_flag = 'Y' THEN
798 IF (fnd_profile.value('ASO_REQUIRE_SERVICE_REFERENCE') <> 'N') OR (fnd_profile.value('ASO_REQUIRE_SERVICE_REFERENCE') is null) THEN
799 IF aso_debug_pub.g_debug_flag = 'Y' THEN
800 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: item is of type service:' || p_inventory_item_id, 1, 'N');
801 END IF;
802 open c_service_ref_quote(p_quote_line_id);
803 fetch c_service_ref_quote into l_service_ref_line_id;
804 close c_service_ref_quote;
805
806 if l_service_ref_line_id is not null then
807 open c_service_ref_quote_line(l_service_ref_line_id);
808 fetch c_service_ref_quote_line into l_inv_id;
809 close c_service_ref_quote_line;
810 end if;
811
812 if lprof='Y' then
813 l_cust :=p_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID;
814 if l_cust is null then
815 l_cust := p_qte_header_rec.cust_account_id;
816 end if;
817 else
818 l_cust := p_qte_header_rec.cust_account_id;
819 end if;
820
821 l_check_service_rec.product_item_id := l_inv_id;
822 l_check_service_rec.service_item_id := p_inventory_item_id;
823 l_check_service_rec.customer_id := l_cust;
824 ASO_SERVICE_CONTRACTS_INT.Is_Service_Available(
825 P_Api_Version_Number => 1.0 ,
826 P_init_msg_list =>FND_API.G_FALSE,
827 X_msg_Count => lx_msg_count ,
828 X_msg_Data => lx_msg_data ,
829 X_Return_Status => lx_return_status ,
830 p_check_service_rec => l_check_service_rec,
831 X_Available_YN => l_Available_YN
832 );
833 IF l_Available_YN = 'N' THEN
834 IF aso_debug_pub.g_debug_flag = 'Y' THEN
835 aso_debug_pub.add('UPDATE_QUOTE:SERVICE_not available');
836 END IF;
837 return false;
838 end if;
839
840 end if;
841
842 END IF;
843
844 -- Top model item
845 IF orderable_items_rec.bom_item_type = 1 THEN
846 l_resp_id := FND_PROFILE.Value('RESP_ID');
847 l_resp_appl_id := FND_PROFILE.Value('RESP_APPL_ID');
848 l_ui_def_id := CZ_CF_API.UI_FOR_ITEM(
849 p_inventory_item_id,
850 l_master_organization_id,
851 SYSDATE,
852 'APPLET',
853 FND_API.G_MISS_NUM,
854 FND_PROFILE.Value('RESP_ID'),
855 FND_PROFILE.Value('RESP_APPL_ID')
856 );
857
858 IF l_ui_def_id IS NULL THEN
859 IF aso_debug_pub.g_debug_flag = 'Y' THEN
860 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: item does not have a configurable ui:'
861 || p_inventory_item_id, 1, 'N');
862 END IF;
863
864
865 RETURN FALSE;
866 END IF;
867 END IF;
868
869 INV_DECIMALS_PUB.Validate_Quantity(
870 p_inventory_item_id,
871 l_master_organization_id,
872 p_quantity,
873 l_uom_code,
874 l_output_qty,
875 l_primary_qty,
876 l_return_status
877 );
878 IF aso_debug_pub.g_debug_flag = 'Y' THEN
879 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item:p_quantity'|| p_quantity, 1, 'N');
880 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item:l_return_status'|| l_return_status, 1, 'N');
881 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item:l_uom_code'|| l_uom_code, 1, 'N');
882 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item:l_output_qty'|| l_output_qty, 1, 'N');
883 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item:l_primary_qty'|| l_primary_qty, 1, 'N');
884 END IF;
885
886 IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR p_quantity <= 0 THEN
887 IF aso_debug_pub.g_debug_flag = 'Y' THEN
888 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: item has invalid quantity:'
889 || p_inventory_item_id, 1, 'N');
890 END IF;
891
892
893 RETURN FALSE;
894 END IF;
895
896 END LOOP;
897
898 /*IF l_orderable_flag = 'N' THEN
899 IF aso_debug_pub.g_debug_flag = 'Y' THEN
900 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: item not orderable:'|| p_inventory_item_id, 1, 'N');
901 END IF;
902 RETURN FALSE;
903 END IF;
904 */
905
906 IF aso_debug_pub.g_debug_flag = 'Y' THEN
907 aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: *** End of API body ***', 1, 'Y');
908 END IF;
909
910 return true;
911 end Validate_Item;
912
913 END ASO_QUOTE_TMPL_PVT;
914