84: CURSOR get_inventory_item_id_cur(p_line_index NUMBER) IS
85: SELECT value_from
86: FROM qp_npreq_line_attrs_tmp
87: WHERE line_index = p_line_index
88: AND attribute_type = QP_PREQ_GRP.G_PRODUCT_TYPE
89: AND context = 'ITEM'
90: AND attribute = 'PRICING_ATTRIBUTE1'
91: AND pricing_status_code = QP_PREQ_GRP.G_STATUS_UNCHANGED;
92:
87: WHERE line_index = p_line_index
88: AND attribute_type = QP_PREQ_GRP.G_PRODUCT_TYPE
89: AND context = 'ITEM'
90: AND attribute = 'PRICING_ATTRIBUTE1'
91: AND pricing_status_code = QP_PREQ_GRP.G_STATUS_UNCHANGED;
92:
93: l_product_uom_code VARCHAR2(30);
94: l_attribute VARCHAR2(30);
95: l_inventory_item_id VARCHAR2(30);
94: l_attribute VARCHAR2(30);
95: l_inventory_item_id VARCHAR2(30);
96: l_list_line_id NUMBER;
97:
98: g_precedence_tbl QP_PREQ_GRP.NUMBER_TYPE;
99: g_qual_precedence_tbl QP_PREQ_GRP.NUMBER_TYPE;
100: g_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
101: v_number NUMBER;
102: v_routine_name CONSTANT VARCHAR2(40) := 'Precedence_For_Price_List_Line';
95: l_inventory_item_id VARCHAR2(30);
96: l_list_line_id NUMBER;
97:
98: g_precedence_tbl QP_PREQ_GRP.NUMBER_TYPE;
99: g_qual_precedence_tbl QP_PREQ_GRP.NUMBER_TYPE;
100: g_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
101: v_number NUMBER;
102: v_routine_name CONSTANT VARCHAR2(40) := 'Precedence_For_Price_List_Line';
103:
96: l_list_line_id NUMBER;
97:
98: g_precedence_tbl QP_PREQ_GRP.NUMBER_TYPE;
99: g_qual_precedence_tbl QP_PREQ_GRP.NUMBER_TYPE;
100: g_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
101: v_number NUMBER;
102: v_routine_name CONSTANT VARCHAR2(40) := 'Precedence_For_Price_List_Line';
103:
104: type refcur is ref cursor;
111: l_exit_status VARCHAR2(1) := 'F';
112: nROWS number := 1000;
113:
114: BEGIN
115: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
116:
117: IF (p_order_uom_code IS NOT NULL) THEN
118:
119: IF l_debug = FND_API.G_TRUE THEN
116:
117: IF (p_order_uom_code IS NOT NULL) THEN
118:
119: IF l_debug = FND_API.G_TRUE THEN
120: QP_PREQ_GRP.engine_debug('Opening Order Uom Cur : ' || p_order_uom_code);
121:
122: END IF;
123: -- Method to derive QUAL_PRECED
124: --In first select of 2 way UNION , there is a qualifier on primary price list , it will be -99999 as prim pl as high preced
141: AND b.PRICING_STATUS_CODE = 'N'
142: AND b.LINE_INDEX = p_line_index
143: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
144: AND b.PRICING_PHASE_ID = 1
145: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
146: AND b.PRODUCT_UOM_CODE = p_order_uom_code
147: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
148: AND b.list_line_id = a.LIST_LINE_ID
149: /* AND EXISTS (SELECT 'X' -- uom match, shulin
143: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
144: AND b.PRICING_PHASE_ID = 1
145: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
146: AND b.PRODUCT_UOM_CODE = p_order_uom_code
147: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
148: AND b.list_line_id = a.LIST_LINE_ID
149: /* AND EXISTS (SELECT 'X' -- uom match, shulin
150: FROM qp_npreq_line_attrs_tmp b
151: WHERE LINE_INDEX = p_line_index
151: WHERE LINE_INDEX = p_line_index
152: AND PRICING_STATUS_CODE = 'N'
153: AND INCOMPATABILITY_GRP_CODE = 'EXCL'
154: AND PRICING_PHASE_ID = 1
155: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
156: AND PRODUCT_UOM_CODE = p_order_uom_code
157: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
158: AND a.LIST_LINE_ID = b.LIST_LINE_ID) */
159: AND a.LINE_DETAIL_INDEX = c.LINE_DETAIL_INDEX
153: AND INCOMPATABILITY_GRP_CODE = 'EXCL'
154: AND PRICING_PHASE_ID = 1
155: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
156: AND PRODUCT_UOM_CODE = p_order_uom_code
157: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
158: AND a.LIST_LINE_ID = b.LIST_LINE_ID) */
159: AND a.LINE_DETAIL_INDEX = c.LINE_DETAIL_INDEX
160: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
161:
156: AND PRODUCT_UOM_CODE = p_order_uom_code
157: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
158: AND a.LIST_LINE_ID = b.LIST_LINE_ID) */
159: AND a.LINE_DETAIL_INDEX = c.LINE_DETAIL_INDEX
160: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
161:
162: UNION
163: SELECT z.PRECED , z.LIST_LINE_ID , z.QUALIFIER_PRECEDENCE QUAL_PRECED
164: FROM (
166: nvl(b.PRODUCT_PRECEDENCE,5000) PRECED , c.LIST_LINE_ID , nvl(c.QUALIFIER_PRECEDENCE,-99999) QUALIFIER_PRECEDENCE
167: FROM qp_npreq_line_attrs_tmp c,qp_npreq_ldets_tmp b
168: WHERE c.PRICING_PHASE_ID = L_PRICE_LIST_PHASE_ID
169: AND c.PRODUCT_UOM_CODE = p_order_uom_code
170: AND c.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
171: AND c.LINE_INDEX = p_line_index
172: AND c.INCOMPATABILITY_GRP_CODE = 'EXCL'
173: AND c.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
174: AND c.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
169: AND c.PRODUCT_UOM_CODE = p_order_uom_code
170: AND c.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
171: AND c.LINE_INDEX = p_line_index
172: AND c.INCOMPATABILITY_GRP_CODE = 'EXCL'
173: AND c.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
174: AND c.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
175: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
176: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
177: ORDER BY 3,1) z
171: AND c.LINE_INDEX = p_line_index
172: AND c.INCOMPATABILITY_GRP_CODE = 'EXCL'
173: AND c.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
174: AND c.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
175: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
176: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
177: ORDER BY 3,1) z
178: ORDER BY 3,1;
179: ELSE
172: AND c.INCOMPATABILITY_GRP_CODE = 'EXCL'
173: AND c.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
174: AND c.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
175: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
176: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
177: ORDER BY 3,1) z
178: ORDER BY 3,1;
179: ELSE
180:
178: ORDER BY 3,1;
179: ELSE
180:
181: IF l_debug = FND_API.G_TRUE THEN
182: QP_PREQ_GRP.engine_debug('Opening Primary Uom Cur');
183:
184: END IF;
185: /* Modified cursor l_precedence_for_line_cur for 2780293 */
186: OPEN l_precedence_for_line_cur FOR
194: AND b.PRICING_STATUS_CODE = 'N'
195: AND b.LINE_INDEX = p_line_index
196: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
197: AND b.PRICING_PHASE_ID = 1
198: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
199: AND b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
200: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
201: AND b.list_line_id = a.LIST_LINE_ID
202: AND a.LINE_DETAIL_INDEX = c.LINE_DETAIL_INDEX
195: AND b.LINE_INDEX = p_line_index
196: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
197: AND b.PRICING_PHASE_ID = 1
198: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
199: AND b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
200: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
201: AND b.list_line_id = a.LIST_LINE_ID
202: AND a.LINE_DETAIL_INDEX = c.LINE_DETAIL_INDEX
203: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
196: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
197: AND b.PRICING_PHASE_ID = 1
198: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
199: AND b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
200: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
201: AND b.list_line_id = a.LIST_LINE_ID
202: AND a.LINE_DETAIL_INDEX = c.LINE_DETAIL_INDEX
203: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
204:
199: AND b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
200: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
201: AND b.list_line_id = a.LIST_LINE_ID
202: AND a.LINE_DETAIL_INDEX = c.LINE_DETAIL_INDEX
203: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
204:
205:
206: UNION
207: SELECT z.PRECED , z.LIST_LINE_ID , z.QUALIFIER_PRECEDENCE QUAL_PRECED
208: FROM(
209: SELECT /*+ ORDERED USE_NL(c d) index(b qp_preq_line_attrs_tmp_N5) rec_exist_with_pri_flag_cur */
210: nvl(c.PRODUCT_PRECEDENCE,5000) PRECED , b.LIST_LINE_ID , nvl(b.QUALIFIER_PRECEDENCE ,-99999) QUALIFIER_PRECEDENCE
211: FROM qp_npreq_line_attrs_tmp b,qp_npreq_ldets_tmp c
212: WHERE b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
213: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
214: AND b.CONTEXT = 'ITEM'
215: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
216: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
209: SELECT /*+ ORDERED USE_NL(c d) index(b qp_preq_line_attrs_tmp_N5) rec_exist_with_pri_flag_cur */
210: nvl(c.PRODUCT_PRECEDENCE,5000) PRECED , b.LIST_LINE_ID , nvl(b.QUALIFIER_PRECEDENCE ,-99999) QUALIFIER_PRECEDENCE
211: FROM qp_npreq_line_attrs_tmp b,qp_npreq_ldets_tmp c
212: WHERE b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
213: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
214: AND b.CONTEXT = 'ITEM'
215: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
216: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
217: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
211: FROM qp_npreq_line_attrs_tmp b,qp_npreq_ldets_tmp c
212: WHERE b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
213: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
214: AND b.CONTEXT = 'ITEM'
215: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
216: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
217: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
218: AND b.LINE_INDEX = p_line_index
219: AND b.PRICING_PHASE_ID = L_PRICE_LIST_PHASE_ID
212: WHERE b.PRIMARY_UOM_FLAG = QP_PREQ_GRP.G_YES
213: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
214: AND b.CONTEXT = 'ITEM'
215: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRODUCT_TYPE
216: AND b.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
217: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
218: AND b.LINE_INDEX = p_line_index
219: AND b.PRICING_PHASE_ID = L_PRICE_LIST_PHASE_ID
220: AND c.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
217: AND b.INCOMPATABILITY_GRP_CODE = 'EXCL'
218: AND b.LINE_INDEX = p_line_index
219: AND b.PRICING_PHASE_ID = L_PRICE_LIST_PHASE_ID
220: AND c.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
221: AND c.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
222: ORDER BY 3,1) z
223: ORDER BY 3,1;
224: END IF;
225:
234:
235: IF (g_list_line_id_tbl.count > 0) THEN
236:
237: IF l_debug = FND_API.G_TRUE THEN
238: QP_PREQ_GRP.engine_debug('List Line Table Count: ' || g_list_line_id_tbl.count);
239:
240: END IF;
241: FOR j in g_list_line_id_tbl.first .. g_list_line_id_tbl.last -- Inner Loop
242: LOOP
246: l_prev_qual_precedence := g_qual_precedence_tbl(j);
247: END IF;
248:
249: IF l_debug = FND_API.G_TRUE THEN
250: QP_PREQ_GRP.engine_debug('High Qual Preced Is : ' || g_qual_precedence_tbl(j));
251: QP_PREQ_GRP.engine_debug('High Prod Preced Is : ' || g_precedence_tbl(j) || ' List Line Id: ' || g_list_line_id_tbl(j));
252:
253: END IF;
254: -- Load all list lines with same precedence and if different exit out
247: END IF;
248:
249: IF l_debug = FND_API.G_TRUE THEN
250: QP_PREQ_GRP.engine_debug('High Qual Preced Is : ' || g_qual_precedence_tbl(j));
251: QP_PREQ_GRP.engine_debug('High Prod Preced Is : ' || g_precedence_tbl(j) || ' List Line Id: ' || g_list_line_id_tbl(j));
252:
253: END IF;
254: -- Load all list lines with same precedence and if different exit out
255: -- On change of either qualifier and product precedence stop
275: FETCH get_inventory_item_id_cur INTO l_inventory_item_id;
276: CLOSE get_inventory_item_id_cur;
277:
278: IF l_debug = FND_API.G_TRUE THEN
279: QP_PREQ_GRP.engine_debug('Attribute Is : ' || l_attribute);
280: QP_PREQ_GRP.engine_debug('Inventory Item Id For Item Specific : ' || l_inventory_item_id);
281:
282: END IF;
283: IF (l_inventory_item_id IS NULL) THEN
276: CLOSE get_inventory_item_id_cur;
277:
278: IF l_debug = FND_API.G_TRUE THEN
279: QP_PREQ_GRP.engine_debug('Attribute Is : ' || l_attribute);
280: QP_PREQ_GRP.engine_debug('Inventory Item Id For Item Specific : ' || l_inventory_item_id);
281:
282: END IF;
283: IF (l_inventory_item_id IS NULL) THEN
284: IF l_debug = FND_API.G_TRUE THEN
281:
282: END IF;
283: IF (l_inventory_item_id IS NULL) THEN
284: IF l_debug = FND_API.G_TRUE THEN
285: QP_PREQ_GRP.engine_debug('Could not find Item Specific. Doing generic conversion');
286: END IF;
287: x_precedence_tbl(j).inventory_item_id := 0;
288: ELSE
289: x_precedence_tbl(j).inventory_item_id := l_inventory_item_id;
290: END IF;
291:
292: ELSE -- IF (l_attribute <> 'PRICING_ATTRIBUTE1')
293: IF l_debug = FND_API.G_TRUE THEN
294: QP_PREQ_GRP.engine_debug('Inventory Item Id For Item: ' || l_inventory_item_id);
295: END IF;
296: x_precedence_tbl(j).inventory_item_id := l_inventory_item_id;
297: END IF; -- IF (l_attribute <> 'PRICING_ATTRIBUTE1')
298:
298:
299: END IF; -- (p_primary_uom_flag IS NOT NULL)
300: ELSE -- l_prev_precedence = g_precedence_tbl(j)
301: IF l_debug = FND_API.G_TRUE THEN
302: QP_PREQ_GRP.engine_debug('Exiting the inner loop after loading the higher precedence list lines');
303: END IF;
304: l_exit_status := 'T';
305: EXIT; -- Inner Loop
306: END IF; -- l_prev_precedence = g_precedence_tbl(j)
308: END LOOP;
309:
310: IF (l_exit_status = 'T') THEN
311: IF l_debug = FND_API.G_TRUE THEN
312: QP_PREQ_GRP.engine_debug('Exiting the outer loop after loading the higher precedence list lines');
313: END IF;
314: EXIT; -- Outer Main Loop
315: END IF;
316:
322: IF (x_precedence_tbl.COUNT > 0) THEN
323: FOR k in x_precedence_tbl.FIRST .. x_precedence_tbl.LAST
324: LOOP
325: IF l_debug = FND_API.G_TRUE THEN
326: QP_PREQ_GRP.engine_debug('PPL List Line Id : ' || x_precedence_tbl(k).created_from_list_line_id);
327: QP_PREQ_GRP.engine_debug('PPL Precedence : ' || x_precedence_tbl(k).product_precedence);
328: QP_PREQ_GRP.engine_debug('PPL Inventory Item Id: ' || x_precedence_tbl(k).inventory_item_id);
329: QP_PREQ_GRP.engine_debug('PPL Product Uom : ' || x_precedence_tbl(k).product_uom_code);
330: END IF;
323: FOR k in x_precedence_tbl.FIRST .. x_precedence_tbl.LAST
324: LOOP
325: IF l_debug = FND_API.G_TRUE THEN
326: QP_PREQ_GRP.engine_debug('PPL List Line Id : ' || x_precedence_tbl(k).created_from_list_line_id);
327: QP_PREQ_GRP.engine_debug('PPL Precedence : ' || x_precedence_tbl(k).product_precedence);
328: QP_PREQ_GRP.engine_debug('PPL Inventory Item Id: ' || x_precedence_tbl(k).inventory_item_id);
329: QP_PREQ_GRP.engine_debug('PPL Product Uom : ' || x_precedence_tbl(k).product_uom_code);
330: END IF;
331: END LOOP;
324: LOOP
325: IF l_debug = FND_API.G_TRUE THEN
326: QP_PREQ_GRP.engine_debug('PPL List Line Id : ' || x_precedence_tbl(k).created_from_list_line_id);
327: QP_PREQ_GRP.engine_debug('PPL Precedence : ' || x_precedence_tbl(k).product_precedence);
328: QP_PREQ_GRP.engine_debug('PPL Inventory Item Id: ' || x_precedence_tbl(k).inventory_item_id);
329: QP_PREQ_GRP.engine_debug('PPL Product Uom : ' || x_precedence_tbl(k).product_uom_code);
330: END IF;
331: END LOOP;
332: END IF;
325: IF l_debug = FND_API.G_TRUE THEN
326: QP_PREQ_GRP.engine_debug('PPL List Line Id : ' || x_precedence_tbl(k).created_from_list_line_id);
327: QP_PREQ_GRP.engine_debug('PPL Precedence : ' || x_precedence_tbl(k).product_precedence);
328: QP_PREQ_GRP.engine_debug('PPL Inventory Item Id: ' || x_precedence_tbl(k).inventory_item_id);
329: QP_PREQ_GRP.engine_debug('PPL Product Uom : ' || x_precedence_tbl(k).product_uom_code);
330: END IF;
331: END LOOP;
332: END IF;
333:
333:
334: EXCEPTION
335: WHEN OTHERS THEN
336: IF l_debug = FND_API.G_TRUE THEN
337: QP_PREQ_GRP.engine_debug('In Routine Precedence_For_Price_List_Line : ' || SQLERRM);
338: END IF;
339: x_return_status := FND_API.G_RET_STS_ERROR;
340: x_return_status_text := v_routine_name || ' ' || SQLERRM;
341: END Precedence_For_Price_List_Line;
395: INDX,QP_Resolve_Incompatability_PVTRUN.update_invalid_list_lines.upd1,qp_npreq_lines_tmp_N1,LINE_INDEX,1
396: INDX,QP_Resolve_Incompatability_PVTRUN.update_invalid_list_lines.upd2,qp_npreq_lines_tmp_N1,LINE_INDEX,1
397: */
398:
399: IF p_status_code IN (QP_PREQ_GRP.G_STATUS_DUP_PRICE_LIST,QP_PREQ_GRP.G_STATUS_INVALID_UOM_CONV) THEN
400: UPDATE qp_npreq_lines_tmp -- upd1
401: SET PRICING_STATUS_CODE = p_status_code,
402: PRICING_STATUS_TEXT = p_status_text,
403: PROCESSED_CODE = NULL -- To prevent big search from hapenning , if failed in mini search due to above reasons
401: SET PRICING_STATUS_CODE = p_status_code,
402: PRICING_STATUS_TEXT = p_status_text,
403: PROCESSED_CODE = NULL -- To prevent big search from hapenning , if failed in mini search due to above reasons
404: WHERE LINE_INDEX = p_line_index;
405: ELSIF (p_status_code = QP_PREQ_GRP.G_STATUS_INVALID_UOM) THEN
406: UPDATE qp_npreq_lines_tmp -- upd2
407: SET PROCESSED_CODE = QP_PREQ_GRP.G_STS_LHS_NOT_FOUND,
408: PRICING_STATUS_CODE = p_status_code,
409: PRICING_STATUS_TEXT = p_status_text
403: PROCESSED_CODE = NULL -- To prevent big search from hapenning , if failed in mini search due to above reasons
404: WHERE LINE_INDEX = p_line_index;
405: ELSIF (p_status_code = QP_PREQ_GRP.G_STATUS_INVALID_UOM) THEN
406: UPDATE qp_npreq_lines_tmp -- upd2
407: SET PROCESSED_CODE = QP_PREQ_GRP.G_STS_LHS_NOT_FOUND,
408: PRICING_STATUS_CODE = p_status_code,
409: PRICING_STATUS_TEXT = p_status_text
410: WHERE LINE_INDEX = p_line_index;
411: END IF;
420: SET PRICING_STATUS_CODE = p_status_code
421: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_code
422: AND LINE_INDEX = p_line_index
423: AND PRICING_PHASE_ID = p_pricing_phase_id
424: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
425:
426: /* UPDATE qp_npreq_line_attrs_tmp a
427: SET a.PRICING_STATUS_CODE = p_status_code
428: WHERE a.LIST_LINE_ID
463: b.PROCESSING_ORDER,b.UOM_QUANTITY, b.CONTRACT_START_DATE, b.CONTRACT_END_DATE
464: FROM qp_npreq_lines_tmp b , qp_npreq_ldets_tmp a
465: WHERE a.INCOMPATABILITY_GRP_CODE IS NOT NULL
466: AND a.PRICING_PHASE_ID = p_pricing_phase_id
467: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
468: AND a.LINE_INDEX = b.LINE_INDEX
469: --AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
470: ORDER BY a.LINE_INDEX;
471:
465: WHERE a.INCOMPATABILITY_GRP_CODE IS NOT NULL
466: AND a.PRICING_PHASE_ID = p_pricing_phase_id
467: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
468: AND a.LINE_INDEX = b.LINE_INDEX
469: --AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
470: ORDER BY a.LINE_INDEX;
471:
472: /*
473: INDX,QP_Resolve_Incompatability_PVTRUN.determine_pricing_uom_and_qty.get_attribute_count_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
479: SELECT COUNT(*) ATTRIBUTE_COUNT
480: FROM qp_npreq_line_attrs_tmp
481: WHERE LIST_LINE_ID = p_list_line_id
482: AND LINE_INDEX = p_line_index
483: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRICING_TYPE
484: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
485:
486:
487:
480: FROM qp_npreq_line_attrs_tmp
481: WHERE LIST_LINE_ID = p_list_line_id
482: AND LINE_INDEX = p_line_index
483: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRICING_TYPE
484: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
485:
486:
487:
488: v_list_line_id NUMBER;
533: l_old_line_index NUMBER := -9999;
534:
535: v_routine_name CONSTANT VARCHAR2(240):='Routine:QP_Resolve_Incompatability_PVTRUN.Determine_Pricing_UOM_And_Qty';
536:
537: l_line_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE;
538: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
539: l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
534:
535: v_routine_name CONSTANT VARCHAR2(240):='Routine:QP_Resolve_Incompatability_PVTRUN.Determine_Pricing_UOM_And_Qty';
536:
537: l_line_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE;
538: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
539: l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
535: v_routine_name CONSTANT VARCHAR2(240):='Routine:QP_Resolve_Incompatability_PVTRUN.Determine_Pricing_UOM_And_Qty';
536:
537: l_line_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE;
538: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
539: l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
536:
537: l_line_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE;
538: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
539: l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
537: l_line_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE;
538: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
539: l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
545:
538: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
539: l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
545:
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
539: l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
545:
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
540: l_priced_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
541: l_uom_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
545:
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
548: l_line_uom_code_tbl_m QP_PREQ_GRP.VARCHAR_TYPE;
542: l_order_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
545:
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
548: l_line_uom_code_tbl_m QP_PREQ_GRP.VARCHAR_TYPE;
549: l_priced_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
550: l_uom_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
543: l_upd_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
545:
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
548: l_line_uom_code_tbl_m QP_PREQ_GRP.VARCHAR_TYPE;
549: l_priced_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
550: l_uom_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
551: l_order_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
544: l_upd_priced_qty_tbl QP_PREQ_GRP.NUMBER_TYPE; -- 3773652
545:
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
548: l_line_uom_code_tbl_m QP_PREQ_GRP.VARCHAR_TYPE;
549: l_priced_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
550: l_uom_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
551: l_order_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
552:
545:
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
548: l_line_uom_code_tbl_m QP_PREQ_GRP.VARCHAR_TYPE;
549: l_priced_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
550: l_uom_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
551: l_order_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
552:
553: m PLS_INTEGER := 1;
546: l_line_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
548: l_line_uom_code_tbl_m QP_PREQ_GRP.VARCHAR_TYPE;
549: l_priced_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
550: l_uom_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
551: l_order_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
552:
553: m PLS_INTEGER := 1;
554: n PLS_INTEGER := 1; -- 3773652
547: l_line_index_tbl_m QP_PREQ_GRP.NUMBER_TYPE;
548: l_line_uom_code_tbl_m QP_PREQ_GRP.VARCHAR_TYPE;
549: l_priced_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
550: l_uom_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
551: l_order_quantity_tbl_m QP_PREQ_GRP.NUMBER_TYPE; --shu_latest
552:
553: m PLS_INTEGER := 1;
554: n PLS_INTEGER := 1; -- 3773652
555: l_list_header_id NUMBER := -9999;
565: DUPLICATE_PRICE_LIST EXCEPTION;
566: INVALID_UOM_CONVERSION EXCEPTION;
567:
568: BEGIN
569: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
570: IF l_debug = FND_API.G_TRUE THEN
571: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM');
572:
573: QP_PREQ_GRP.engine_debug( 'After Determine_Pricing_UOM');
567:
568: BEGIN
569: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
570: IF l_debug = FND_API.G_TRUE THEN
571: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM');
572:
573: QP_PREQ_GRP.engine_debug( 'After Determine_Pricing_UOM');
574: QP_PREQ_GRP.engine_debug( 'Pricing Phase Id:'|| p_pricing_phase_id);
575:
569: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
570: IF l_debug = FND_API.G_TRUE THEN
571: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM');
572:
573: QP_PREQ_GRP.engine_debug( 'After Determine_Pricing_UOM');
574: QP_PREQ_GRP.engine_debug( 'Pricing Phase Id:'|| p_pricing_phase_id);
575:
576: END IF;
577: -- shulin
570: IF l_debug = FND_API.G_TRUE THEN
571: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM');
572:
573: QP_PREQ_GRP.engine_debug( 'After Determine_Pricing_UOM');
574: QP_PREQ_GRP.engine_debug( 'Pricing Phase Id:'|| p_pricing_phase_id);
575:
576: END IF;
577: -- shulin
578: --IF l_debug = FND_API.G_TRUE THEN
575:
576: END IF;
577: -- shulin
578: --IF l_debug = FND_API.G_TRUE THEN
579: --QP_PREQ_GRP.engine_debug('QP_TIME_UOM_CONVERSION Profile Setting: ' ||l_qp_time_uom_conversion);
580: --END IF;
581:
582: FOR i IN incomp_cur
583: LOOP
627: l_duration_passed := 'N';
628: END IF;
629:
630: IF l_debug = FND_API.G_TRUE THEN
631: QP_PREQ_GRP.engine_debug('Constract start/end dates '||
632: l_date_passed||
633: 'passed in ==> qp_time_uom_conversion = '||
634: l_qp_time_uom_conversion);
635: END IF;
634: l_qp_time_uom_conversion);
635: END IF;
636:
637: IF l_debug = FND_API.G_TRUE THEN
638: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM1');
639: QP_PREQ_GRP.engine_debug( I.INCOMPATABILITY_GRP_CODE);
640: QP_PREQ_GRP.engine_debug( 'Line Index:'|| i.line_index);
641:
642: END IF;
635: END IF;
636:
637: IF l_debug = FND_API.G_TRUE THEN
638: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM1');
639: QP_PREQ_GRP.engine_debug( I.INCOMPATABILITY_GRP_CODE);
640: QP_PREQ_GRP.engine_debug( 'Line Index:'|| i.line_index);
641:
642: END IF;
643: Precedence_For_Price_List_Line(i.line_index,i.line_uom_code,NULL,l_precedence_tbl,l_status,l_status_text);
636:
637: IF l_debug = FND_API.G_TRUE THEN
638: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM1');
639: QP_PREQ_GRP.engine_debug( I.INCOMPATABILITY_GRP_CODE);
640: QP_PREQ_GRP.engine_debug( 'Line Index:'|| i.line_index);
641:
642: END IF;
643: Precedence_For_Price_List_Line(i.line_index,i.line_uom_code,NULL,l_precedence_tbl,l_status,l_status_text);
644:
642: END IF;
643: Precedence_For_Price_List_Line(i.line_index,i.line_uom_code,NULL,l_precedence_tbl,l_status,l_status_text);
644:
645: IF l_debug = FND_API.G_TRUE THEN
646: QP_PREQ_GRP.engine_debug( ' Debug Point #0');
647:
648: QP_PREQ_GRP.engine_debug('Count : ' || l_precedence_tbl.count);
649:
650: END IF;
644:
645: IF l_debug = FND_API.G_TRUE THEN
646: QP_PREQ_GRP.engine_debug( ' Debug Point #0');
647:
648: QP_PREQ_GRP.engine_debug('Count : ' || l_precedence_tbl.count);
649:
650: END IF;
651: -- Sort the table(not needed as it would have only the price list lines with least precedence)
652: /* IF (l_precedence_tbl.COUNT > 0 ) THEN
658: v_total_count := l_precedence_tbl.COUNT;
659: v_count := 0;
660: v_list_line_count1 := NULL;
661: IF l_debug = FND_API.G_TRUE THEN
662: QP_PREQ_GRP.engine_debug( 'Precedence Table Count Line : '|| i.line_index ||' Cnt:'|| l_precedence_tbl.count);
663: END IF;
664: FOR j IN l_precedence_tbl.FIRST .. l_precedence_tbl.LAST
665: LOOP
666: IF l_debug = FND_API.G_TRUE THEN
663: END IF;
664: FOR j IN l_precedence_tbl.FIRST .. l_precedence_tbl.LAST
665: LOOP
666: IF l_debug = FND_API.G_TRUE THEN
667: QP_PREQ_GRP.engine_debug( 'Determine_Pricing_UOM2');
668: END IF;
669: IF (v_count = 0) THEN
670: v_list_line_id := l_precedence_tbl(j).created_from_list_line_id;
671: v_list_precedence := l_precedence_tbl(j).product_precedence;
673:
674: IF (v_count > 0 ) THEN
675:
676: IF l_debug = FND_API.G_TRUE THEN
677: QP_PREQ_GRP.engine_debug( 'Precedence 1 : '|| v_list_precedence);
678: QP_PREQ_GRP.engine_debug( 'Precedence 2 : '|| l_precedence_tbl(j).product_precedence);
679:
680: END IF;
681: -- If precedence matches match pricing attributes count
674: IF (v_count > 0 ) THEN
675:
676: IF l_debug = FND_API.G_TRUE THEN
677: QP_PREQ_GRP.engine_debug( 'Precedence 1 : '|| v_list_precedence);
678: QP_PREQ_GRP.engine_debug( 'Precedence 2 : '|| l_precedence_tbl(j).product_precedence);
679:
680: END IF;
681: -- If precedence matches match pricing attributes count
682: IF (v_list_precedence = l_precedence_tbl(j).product_precedence) THEN
690: CLOSE get_attribute_count_cur;
691: END IF;
692:
693: IF l_debug = FND_API.G_TRUE THEN
694: QP_PREQ_GRP.engine_debug( 'Precedence Matched . Attribute Count1 : ' || v_list_line_id || ' ' || v_list_line_count1);
695:
696: END IF;
697: OPEN get_attribute_count_cur(i.line_index,l_precedence_tbl(j).created_from_list_line_id); -- For Second Line
698: FETCH get_attribute_count_cur INTO v_list_line_count2;
698: FETCH get_attribute_count_cur INTO v_list_line_count2;
699: CLOSE get_attribute_count_cur;
700:
701: IF l_debug = FND_API.G_TRUE THEN
702: QP_PREQ_GRP.engine_debug( 'Precedence Matched . Attribute Count2 : ' || l_precedence_tbl(j).created_from_list_line_id || ' ' || v_list_line_count2);
703:
704: END IF;
705: -- Update the status to duplicate list lines , only after comparing the attribute counts for all list lines
706: -- That is why the extra condition v_total_cout = v_count+1
723: l_status_text:= FND_MESSAGE.GET;
724: -- end fix bug 2746019
725:
726: Update_Invalid_List_Lines(i.INCOMPATABILITY_GRP_CODE,i.line_index,p_pricing_phase_id,
727: QP_PREQ_GRP.G_STATUS_DUP_PRICE_LIST,l_status_text, v_return_status,
728: v_return_status_text);
729: GOTO NEXT_LINE;
730:
731: --RAISE DUPLICATE_PRICE_LIST;
741: END LOOP;
742: END IF;
743:
744: IF l_debug = FND_API.G_TRUE THEN
745: QP_PREQ_GRP.engine_debug('List Line Id:' || v_list_line_id);
746:
747: END IF;
748: IF (v_list_line_id IS NOT NULL) THEN -- Successful in finding pll in order uom
749: -- Update all the other list lines to status 'U'
752: INDX,QP_Resolve_Incompatability_PVTRUN.determine_pricing_uom_and_qty.upd1,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
753: INDX,QP_Resolve_Incompatability_PVTRUN.determine_pricing_uom_and_qty.upd1,qp_npreq_lines_tmp_N2,LINE_INDEX,3
754: */
755: UPDATE qp_npreq_ldets_tmp -- upd1
756: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UOM_FAILURE
757: WHERE INCOMPATABILITY_GRP_CODE = i.INCOMPATABILITY_GRP_CODE
758: AND LINE_INDEX = i.line_index
759: AND PRICING_PHASE_ID = p_pricing_phase_id
760: AND CREATED_FROM_LIST_LINE_ID <> v_list_line_id
757: WHERE INCOMPATABILITY_GRP_CODE = i.INCOMPATABILITY_GRP_CODE
758: AND LINE_INDEX = i.line_index
759: AND PRICING_PHASE_ID = p_pricing_phase_id
760: AND CREATED_FROM_LIST_LINE_ID <> v_list_line_id
761: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
762:
763: /* UPDATE qp_npreq_line_attrs_tmp a
764: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UOM_FAILURE
765: WHERE a.LIST_LINE_ID
760: AND CREATED_FROM_LIST_LINE_ID <> v_list_line_id
761: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
762:
763: /* UPDATE qp_npreq_line_attrs_tmp a
764: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UOM_FAILURE
765: WHERE a.LIST_LINE_ID
766: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
767: FROM qp_npreq_ldets_tmp b
768: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UOM_FAILURE
764: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UOM_FAILURE
765: WHERE a.LIST_LINE_ID
766: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
767: FROM qp_npreq_ldets_tmp b
768: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UOM_FAILURE
769: AND b.PRICING_PHASE_ID = p_pricing_phase_id
770: AND b.INCOMPATABILITY_GRP_CODE = i.INCOMPATABILITY_GRP_CODE
771: AND b.CREATED_FROM_LIST_LINE_ID <> v_list_line_id
772: AND b.LINE_INDEX = i.line_index)
783:
784: -- begin shulin bug 1829731
785: -- use OKS API to calculate pricing_qty based on order_uom if profile set to 'ORACLE_CONTRACTS'
786: IF l_debug = FND_API.G_TRUE THEN
787: QP_PREQ_GRP.engine_debug('no uom conversion ...');
788: END IF;
789: IF l_qp_time_uom_conversion = 'ORACLE_CONTRACTS' THEN
790:
791: IF l_debug = FND_API.G_TRUE THEN
788: END IF;
789: IF l_qp_time_uom_conversion = 'ORACLE_CONTRACTS' THEN
790:
791: IF l_debug = FND_API.G_TRUE THEN
792: QP_PREQ_GRP.engine_debug( 'contract_start_date :' || i.contract_start_date);
793: QP_PREQ_GRP.engine_debug( 'contract_end_date :' || i.contract_end_date);
794: QP_PREQ_GRP.engine_debug( 'line_uom_code/order uom :' || i.line_uom_code); -- order_uom
795: END IF;
796:
789: IF l_qp_time_uom_conversion = 'ORACLE_CONTRACTS' THEN
790:
791: IF l_debug = FND_API.G_TRUE THEN
792: QP_PREQ_GRP.engine_debug( 'contract_start_date :' || i.contract_start_date);
793: QP_PREQ_GRP.engine_debug( 'contract_end_date :' || i.contract_end_date);
794: QP_PREQ_GRP.engine_debug( 'line_uom_code/order uom :' || i.line_uom_code); -- order_uom
795: END IF;
796:
797: --IF i.contract_start_date IS NOT NULL AND i.contract_end_date IS NOT NULL THEN
790:
791: IF l_debug = FND_API.G_TRUE THEN
792: QP_PREQ_GRP.engine_debug( 'contract_start_date :' || i.contract_start_date);
793: QP_PREQ_GRP.engine_debug( 'contract_end_date :' || i.contract_end_date);
794: QP_PREQ_GRP.engine_debug( 'line_uom_code/order uom :' || i.line_uom_code); -- order_uom
795: END IF;
796:
797: --IF i.contract_start_date IS NOT NULL AND i.contract_end_date IS NOT NULL THEN
798: -- OKS_TIME_MEASURES_PUB replaced with OKS_OMINT_PUB in R12
797: --IF i.contract_start_date IS NOT NULL AND i.contract_end_date IS NOT NULL THEN
798: -- OKS_TIME_MEASURES_PUB replaced with OKS_OMINT_PUB in R12
799: /* [julin/4285975/4662388] removing dynamic SQL, unnecessary and causes error
800: * when env language has ',' delimiter
801: l_sql_stmt := 'select ' || nvl(ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date, i.contract_end_date, i.line_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999) ||' from dual';
802: IF l_debug = FND_API.G_TRUE THEN
803: QP_PREQ_GRP.engine_debug('l_sql_stmt:' || l_sql_stmt);
804: END IF; -- end debug
805: execute immediate l_sql_stmt INTO l_oks_qty;
799: /* [julin/4285975/4662388] removing dynamic SQL, unnecessary and causes error
800: * when env language has ',' delimiter
801: l_sql_stmt := 'select ' || nvl(ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date, i.contract_end_date, i.line_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999) ||' from dual';
802: IF l_debug = FND_API.G_TRUE THEN
803: QP_PREQ_GRP.engine_debug('l_sql_stmt:' || l_sql_stmt);
804: END IF; -- end debug
805: execute immediate l_sql_stmt INTO l_oks_qty;
806: */
807: --END IF;
806: */
807: --END IF;
808: --bug 4900095
809: IF l_duration_passed = 'N' THEN --call OKS API for OKS calls where uom_quantity is passed as null
810: -- l_oks_qty := nvl(ROUND (OKS_OMINT_PUB.get_target_quantity (i.contract_start_date, i.contract_end_date, i.line_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999);
811: --bug 4900095
812: l_oks_qty := nvl(round(OKS_OMINT_PUB.get_target_duration( p_start_date => i.contract_start_date,
813: p_end_date => i.contract_end_date,
814: p_source_uom => i.line_uom_code,
813: p_end_date => i.contract_end_date,
814: p_source_uom => i.line_uom_code,
815: p_source_duration => i.uom_quantity,
816: p_target_uom => i.line_uom_code,/*Default Month*/
817: p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999);
818: ELSE
819: l_oks_qty := null;
820: END IF;--l_duration_passed = 'N'
821:
819: l_oks_qty := null;
820: END IF;--l_duration_passed = 'N'
821:
822: IF l_debug = FND_API.G_TRUE THEN
823: QP_PREQ_GRP.engine_debug('l_oks_qty:' || l_oks_qty);
824: END IF; -- end debug
825: -- when contract_start_date or contract_end_date is null, or uom is 'MO' instead of 'MTH', l_oks_qty = 0
826: -- when uom is not time_related or invalid to oks API, i.e. 'EA', 'MI', l_oks_qty = NULL
827:
831: v_pricing_qty := round(l_oks_qty , l_max_decimal_digits);
832: l_order_qty := v_pricing_qty; -- shu_latest, this is to correct if user enter order_qty not matching the start_date end_date
833: l_uom_quantity :=1;
834: IF l_debug = FND_API.G_TRUE THEN
835: QP_PREQ_GRP.engine_debug('Pric_Qty OKS_API Conv based on Order_UOM :' || v_pricing_qty);
836: END IF; --end debug
837:
838: ELSE -- oks fail, make v_pricing_qty as line_quantity just like STANDARD conversion
839: v_pricing_qty := i.line_quantity; -- STANDARD
840: --l_uom_quantity :=1;
841: l_uom_quantity := nvl(i.uom_quantity, 1); -- to back support OM, SL BUG FOUND
842: -- no need to update l_order_qty, since it has been initialized to i.line_quantity
843: IF l_debug = FND_API.G_TRUE THEN
844: QP_PREQ_GRP.engine_debug('pric_qty same as order_qty :' || v_pricing_qty); --shu 12/26/2001
845: QP_PREQ_GRP.engine_debug('uom_qty passed :' || l_uom_quantity); --shu 12/26/2001
846: END IF; -- end debug
847:
848: END IF; -- END IF (l_oks_qty IS NOT NULL AND l_oks_qty <> 0)
841: l_uom_quantity := nvl(i.uom_quantity, 1); -- to back support OM, SL BUG FOUND
842: -- no need to update l_order_qty, since it has been initialized to i.line_quantity
843: IF l_debug = FND_API.G_TRUE THEN
844: QP_PREQ_GRP.engine_debug('pric_qty same as order_qty :' || v_pricing_qty); --shu 12/26/2001
845: QP_PREQ_GRP.engine_debug('uom_qty passed :' || l_uom_quantity); --shu 12/26/2001
846: END IF; -- end debug
847:
848: END IF; -- END IF (l_oks_qty IS NOT NULL AND l_oks_qty <> 0)
849: ELSE -- l_qp_time_uom_conversion = 'STANDARD' THEN
852: v_pricing_qty := ROUND(i.line_quantity,l_max_decimal_digits); --added ROUND for 9977712 smbalara
853: -- no need to update l_order_qty, since it has been initialized to i.line_quantity
854: l_uom_quantity := nvl(i.uom_quantity, 1); -- to back support OM, for case user order 2 of 6 MTH service
855: IF l_debug = FND_API.G_TRUE THEN
856: QP_PREQ_GRP.engine_debug('pric_qty same as order_qty :' || v_pricing_qty);
857: END IF;
858: END IF;
859: -- end shulin bug 1829731
860:
890: /* IF (l_precedence_tbl.COUNT > 0) THEN
891: FOR j IN l_precedence_tbl.FIRST .. l_precedence_tbl.LAST
892: LOOP
893: IF l_debug = FND_API.G_TRUE THEN
894: QP_PREQ_GRP.engine_debug('List Line Id : ' || l_precedence_tbl(j).created_from_list_line_id);
895: QP_PREQ_GRP.engine_debug('Precedence : ' || l_precedence_tbl(j).product_precedence);
896: QP_PREQ_GRP.engine_debug('Inventory Item Id: ' || l_precedence_tbl(j).inventory_item_id);
897: QP_PREQ_GRP.engine_debug('Product Uom : ' || l_precedence_tbl(j).product_uom_code);
898: END IF;
891: FOR j IN l_precedence_tbl.FIRST .. l_precedence_tbl.LAST
892: LOOP
893: IF l_debug = FND_API.G_TRUE THEN
894: QP_PREQ_GRP.engine_debug('List Line Id : ' || l_precedence_tbl(j).created_from_list_line_id);
895: QP_PREQ_GRP.engine_debug('Precedence : ' || l_precedence_tbl(j).product_precedence);
896: QP_PREQ_GRP.engine_debug('Inventory Item Id: ' || l_precedence_tbl(j).inventory_item_id);
897: QP_PREQ_GRP.engine_debug('Product Uom : ' || l_precedence_tbl(j).product_uom_code);
898: END IF;
899: END LOOP;
892: LOOP
893: IF l_debug = FND_API.G_TRUE THEN
894: QP_PREQ_GRP.engine_debug('List Line Id : ' || l_precedence_tbl(j).created_from_list_line_id);
895: QP_PREQ_GRP.engine_debug('Precedence : ' || l_precedence_tbl(j).product_precedence);
896: QP_PREQ_GRP.engine_debug('Inventory Item Id: ' || l_precedence_tbl(j).inventory_item_id);
897: QP_PREQ_GRP.engine_debug('Product Uom : ' || l_precedence_tbl(j).product_uom_code);
898: END IF;
899: END LOOP;
900: END IF; */
893: IF l_debug = FND_API.G_TRUE THEN
894: QP_PREQ_GRP.engine_debug('List Line Id : ' || l_precedence_tbl(j).created_from_list_line_id);
895: QP_PREQ_GRP.engine_debug('Precedence : ' || l_precedence_tbl(j).product_precedence);
896: QP_PREQ_GRP.engine_debug('Inventory Item Id: ' || l_precedence_tbl(j).inventory_item_id);
897: QP_PREQ_GRP.engine_debug('Product Uom : ' || l_precedence_tbl(j).product_uom_code);
898: END IF;
899: END LOOP;
900: END IF; */
901:
905: v_list_line_count1 := NULL;
906: FOR j IN l_precedence_tbl.FIRST .. l_precedence_tbl.LAST
907: LOOP
908: IF l_debug = FND_API.G_TRUE THEN
909: QP_PREQ_GRP.engine_debug('pri flag');
910: END IF;
911: IF (v_count = 0) THEN
912: v_list_line_id := l_precedence_tbl(j).created_from_list_line_id;
913: v_list_precedence := l_precedence_tbl(j).product_precedence;
927: CLOSE get_attribute_count_cur;
928: END IF;
929:
930: IF l_debug = FND_API.G_TRUE THEN
931: QP_PREQ_GRP.engine_debug( 'Precedence Matched . Attribute Count Pri1 : ' || v_list_line_id || ' ' || v_list_line_count1);
932:
933: END IF;
934: OPEN get_attribute_count_cur(i.line_index,l_precedence_tbl(j).created_from_list_line_id); -- For Second Line
935: FETCH get_attribute_count_cur INTO v_list_line_count2;
935: FETCH get_attribute_count_cur INTO v_list_line_count2;
936: CLOSE get_attribute_count_cur;
937:
938: IF l_debug = FND_API.G_TRUE THEN
939: QP_PREQ_GRP.engine_debug( 'Precedence Matched . Attribute Count Pri2 : ' || l_precedence_tbl(j).created_from_list_line_id || ' ' || v_list_line_count2);
940:
941: END IF;
942: IF (nvl(v_list_line_count1,0) = nvl(v_list_line_count2,0) and v_total_count = v_count + 1) THEN
943:
959: l_status_text:= FND_MESSAGE.GET;
960: -- end fix bug 2746019
961:
962: Update_Invalid_List_Lines(i.INCOMPATABILITY_GRP_CODE,i.line_index,p_pricing_phase_id,
963: QP_PREQ_GRP.G_STATUS_DUP_PRICE_LIST,l_status_text, v_return_status,
964: v_return_status_text);
965: GOTO NEXT_LINE;
966: --RAISE DUPLICATE_PRICE_LIST;
967: ELSE
976: END LOOP;
977: END IF; -- v_list_line_id IS NOT NULL
978:
979: IF l_debug = FND_API.G_TRUE THEN
980: QP_PREQ_GRP.engine_debug('Pri Flag List Line Id:' || v_list_line_id);
981:
982: END IF;
983: IF (v_list_line_id IS NOT NULL) THEN
984: /*
987: INDX,QP_Resolve_Incompatability_PVTRUN.determine_pricing_uom_and_qty.upd2,qp_npreq_lines_tmp_N2,LINE_INDEX,3
988: */
989: -- Update all the other list lines to status 'P'
990: UPDATE qp_npreq_ldets_tmp -- upd2
991: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
992: WHERE INCOMPATABILITY_GRP_CODE = i.INCOMPATABILITY_GRP_CODE
993: AND LINE_INDEX = i.line_index
994: AND PRICING_PHASE_ID = p_pricing_phase_id
995: AND CREATED_FROM_LIST_LINE_ID <> v_list_line_id
992: WHERE INCOMPATABILITY_GRP_CODE = i.INCOMPATABILITY_GRP_CODE
993: AND LINE_INDEX = i.line_index
994: AND PRICING_PHASE_ID = p_pricing_phase_id
995: AND CREATED_FROM_LIST_LINE_ID <> v_list_line_id
996: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
997:
998:
999: /* UPDATE qp_npreq_line_attrs_tmp a
1000: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
996: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
997:
998:
999: /* UPDATE qp_npreq_line_attrs_tmp a
1000: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1001: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1002: FROM qp_npreq_ldets_tmp b
1003: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1004: AND b.CREATED_FROM_LIST_LINE_ID <> v_list_line_id
999: /* UPDATE qp_npreq_line_attrs_tmp a
1000: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1001: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1002: FROM qp_npreq_ldets_tmp b
1003: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1004: AND b.CREATED_FROM_LIST_LINE_ID <> v_list_line_id
1005: AND b.LINE_INDEX = i.line_index)
1006: AND a.LINE_INDEX = i.line_index; */
1007:
1005: AND b.LINE_INDEX = i.line_index)
1006: AND a.LINE_INDEX = i.line_index; */
1007:
1008: /* UPDATE qp_npreq_line_attrs_tmp a
1009: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1010: WHERE a.LIST_LINE_ID
1011: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1012: FROM qp_npreq_ldets_tmp b
1013: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1009: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1010: WHERE a.LIST_LINE_ID
1011: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1012: FROM qp_npreq_ldets_tmp b
1013: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_PRIMARY_UOM_FLAG
1014: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1015: AND b.INCOMPATABILITY_GRP_CODE = i.INCOMPATABILITY_GRP_CODE
1016: AND b.CREATED_FROM_LIST_LINE_ID <> v_list_line_id
1017: AND b.LINE_INDEX = i.line_index)
1026: */
1027: -- end shu fix bug 2453250
1028:
1029: IF l_debug = FND_API.G_TRUE THEN
1030: QP_PREQ_GRP.engine_debug('Data Updated');
1031: QP_PREQ_GRP.engine_debug('Order Uom:' || i.line_uom_code);
1032: QP_PREQ_GRP.engine_debug('Prim UOM:' || v_primary_uom_code);
1033: QP_PREQ_GRP.engine_debug('Inventory Id:' || v_inventory_item_id);
1034: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1027: -- end shu fix bug 2453250
1028:
1029: IF l_debug = FND_API.G_TRUE THEN
1030: QP_PREQ_GRP.engine_debug('Data Updated');
1031: QP_PREQ_GRP.engine_debug('Order Uom:' || i.line_uom_code);
1032: QP_PREQ_GRP.engine_debug('Prim UOM:' || v_primary_uom_code);
1033: QP_PREQ_GRP.engine_debug('Inventory Id:' || v_inventory_item_id);
1034: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1035: END IF;
1028:
1029: IF l_debug = FND_API.G_TRUE THEN
1030: QP_PREQ_GRP.engine_debug('Data Updated');
1031: QP_PREQ_GRP.engine_debug('Order Uom:' || i.line_uom_code);
1032: QP_PREQ_GRP.engine_debug('Prim UOM:' || v_primary_uom_code);
1033: QP_PREQ_GRP.engine_debug('Inventory Id:' || v_inventory_item_id);
1034: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1035: END IF;
1036:
1029: IF l_debug = FND_API.G_TRUE THEN
1030: QP_PREQ_GRP.engine_debug('Data Updated');
1031: QP_PREQ_GRP.engine_debug('Order Uom:' || i.line_uom_code);
1032: QP_PREQ_GRP.engine_debug('Prim UOM:' || v_primary_uom_code);
1033: QP_PREQ_GRP.engine_debug('Inventory Id:' || v_inventory_item_id);
1034: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1035: END IF;
1036:
1037: -- begin Bug 1829731 fix, shulin
1030: QP_PREQ_GRP.engine_debug('Data Updated');
1031: QP_PREQ_GRP.engine_debug('Order Uom:' || i.line_uom_code);
1032: QP_PREQ_GRP.engine_debug('Prim UOM:' || v_primary_uom_code);
1033: QP_PREQ_GRP.engine_debug('Inventory Id:' || v_inventory_item_id);
1034: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1035: END IF;
1036:
1037: -- begin Bug 1829731 fix, shulin
1038: IF l_debug = FND_API.G_TRUE THEN
1035: END IF;
1036:
1037: -- begin Bug 1829731 fix, shulin
1038: IF l_debug = FND_API.G_TRUE THEN
1039: QP_PREQ_GRP.engine_debug('uom conversion...');
1040: END IF;
1041: l_uom_quantity := i.uom_quantity; --shu_latest, to back support OM, either from usr input or null
1042: -- shulin, do OKS conversion if profile set to 'ORCALE_CONTRACTS'
1043: IF (l_qp_time_uom_conversion = 'ORACLE_CONTRACTS') THEN -- do oks conversion
1042: -- shulin, do OKS conversion if profile set to 'ORCALE_CONTRACTS'
1043: IF (l_qp_time_uom_conversion = 'ORACLE_CONTRACTS') THEN -- do oks conversion
1044:
1045: IF l_debug = FND_API.G_TRUE THEN
1046: QP_PREQ_GRP.engine_debug( 'contract_start_date :' || i.contract_start_date);
1047: QP_PREQ_GRP.engine_debug( 'contract_end_date :' || i.contract_end_date);
1048: QP_PREQ_GRP.engine_debug( 'primary_uom_code :' || v_primary_uom_code);
1049: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1050: END IF;
1043: IF (l_qp_time_uom_conversion = 'ORACLE_CONTRACTS') THEN -- do oks conversion
1044:
1045: IF l_debug = FND_API.G_TRUE THEN
1046: QP_PREQ_GRP.engine_debug( 'contract_start_date :' || i.contract_start_date);
1047: QP_PREQ_GRP.engine_debug( 'contract_end_date :' || i.contract_end_date);
1048: QP_PREQ_GRP.engine_debug( 'primary_uom_code :' || v_primary_uom_code);
1049: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1050: END IF;
1051: -- when contract_start_date or contract_end_date is null, or uom is 'MO' instead of 'MTH', l_oks_qty = 0
1044:
1045: IF l_debug = FND_API.G_TRUE THEN
1046: QP_PREQ_GRP.engine_debug( 'contract_start_date :' || i.contract_start_date);
1047: QP_PREQ_GRP.engine_debug( 'contract_end_date :' || i.contract_end_date);
1048: QP_PREQ_GRP.engine_debug( 'primary_uom_code :' || v_primary_uom_code);
1049: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1050: END IF;
1051: -- when contract_start_date or contract_end_date is null, or uom is 'MO' instead of 'MTH', l_oks_qty = 0
1052: -- when uom is not time_related or invalid to oks API, i.e. 'EA', 'MI', l_oks_qty = NULL
1045: IF l_debug = FND_API.G_TRUE THEN
1046: QP_PREQ_GRP.engine_debug( 'contract_start_date :' || i.contract_start_date);
1047: QP_PREQ_GRP.engine_debug( 'contract_end_date :' || i.contract_end_date);
1048: QP_PREQ_GRP.engine_debug( 'primary_uom_code :' || v_primary_uom_code);
1049: QP_PREQ_GRP.engine_debug('v_pricing_qty:' || v_pricing_qty);
1050: END IF;
1051: -- when contract_start_date or contract_end_date is null, or uom is 'MO' instead of 'MTH', l_oks_qty = 0
1052: -- when uom is not time_related or invalid to oks API, i.e. 'EA', 'MI', l_oks_qty = NULL
1053:
1055: -- OKS_TIME_MEASURES_PUB replaced with OKS_OMINT_PUB in R12
1056: /* [julin/4285975/4662388] removing dynamic SQL, unnecessary and causes error
1057: * when env language has ',' delimiter
1058: l_sql_stmt := 'select ' || ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date,
1059: i.contract_end_date, v_primary_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits) ||' from dual';
1060: execute immediate l_sql_stmt INTO l_oks_qty; -- shulin
1061: */
1062: --END IF;
1063: -- l_oks_qty := ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date, i.contract_end_date, v_primary_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits);
1059: i.contract_end_date, v_primary_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits) ||' from dual';
1060: execute immediate l_sql_stmt INTO l_oks_qty; -- shulin
1061: */
1062: --END IF;
1063: -- l_oks_qty := ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date, i.contract_end_date, v_primary_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits);
1064: --bug 4900095
1065: l_oks_qty := nvl(round(OKS_OMINT_PUB.get_target_duration( p_start_date => i.contract_start_date,
1066: p_end_date => i.contract_end_date,
1067: p_source_uom => i.line_uom_code,
1066: p_end_date => i.contract_end_date,
1067: p_source_uom => i.line_uom_code,
1068: p_source_duration => i.uom_quantity,
1069: p_target_uom => v_primary_uom_code,/*Default Month*/
1070: p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999);
1071:
1072: IF l_debug = FND_API.G_TRUE THEN
1073: QP_PREQ_GRP.engine_debug('l_oks_qty1:' || l_oks_qty);
1074: END IF; -- end debug
1069: p_target_uom => v_primary_uom_code,/*Default Month*/
1070: p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999);
1071:
1072: IF l_debug = FND_API.G_TRUE THEN
1073: QP_PREQ_GRP.engine_debug('l_oks_qty1:' || l_oks_qty);
1074: END IF; -- end debug
1075:
1076: IF (l_oks_qty IS NOT NULL OR l_oks_qty <> 0)
1077: --bug 4900095
1080: -- order_qty is based on odr_uom
1081: /* [julin/4285975/4662388] removing dynamic SQL, unnecessary and causes error
1082: * when env language has ',' delimiter
1083: l_sql_stmt := 'select ' || ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date,
1084: i.contract_end_date, i.line_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits) ||' from dual';
1085: execute immediate l_sql_stmt INTO l_order_qty; -- shu_latest
1086: */
1087: -- l_order_qty := ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date, i.contract_end_date, i.line_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits);
1088: --bug 4900095
1083: l_sql_stmt := 'select ' || ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date,
1084: i.contract_end_date, i.line_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits) ||' from dual';
1085: execute immediate l_sql_stmt INTO l_order_qty; -- shu_latest
1086: */
1087: -- l_order_qty := ROUND (OKS_OMINT_PUB.get_quantity (i.contract_start_date, i.contract_end_date, i.line_uom_code, QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits);
1088: --bug 4900095
1089: l_order_qty := nvl(round(OKS_OMINT_PUB.get_target_duration( p_start_date => i.contract_start_date,
1090: p_end_date => i.contract_end_date,
1091: p_source_uom => i.line_uom_code,
1090: p_end_date => i.contract_end_date,
1091: p_source_uom => i.line_uom_code,
1092: p_source_duration => i.uom_quantity,
1093: p_target_uom => i.line_uom_code,/*Default Month*/
1094: p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999);
1095: IF l_debug = FND_API.G_TRUE THEN
1096: QP_PREQ_GRP.engine_debug('l_oks_qty2:' || l_oks_qty);
1097: END IF; -- end debug
1098:
1092: p_source_duration => i.uom_quantity,
1093: p_target_uom => i.line_uom_code,/*Default Month*/
1094: p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), l_max_decimal_digits), -999999);
1095: IF l_debug = FND_API.G_TRUE THEN
1096: QP_PREQ_GRP.engine_debug('l_oks_qty2:' || l_oks_qty);
1097: END IF; -- end debug
1098:
1099: v_pricing_qty := round (l_oks_qty , l_max_decimal_digits);
1100:
1099: v_pricing_qty := round (l_oks_qty , l_max_decimal_digits);
1100:
1101: l_uom_quantity := 1; --shulin
1102: IF l_debug = FND_API.G_TRUE THEN
1103: QP_PREQ_GRP.engine_debug('OKS_API conversion...');
1104: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1105: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1106: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1107: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1100:
1101: l_uom_quantity := 1; --shulin
1102: IF l_debug = FND_API.G_TRUE THEN
1103: QP_PREQ_GRP.engine_debug('OKS_API conversion...');
1104: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1105: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1106: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1107: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1108: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1101: l_uom_quantity := 1; --shulin
1102: IF l_debug = FND_API.G_TRUE THEN
1103: QP_PREQ_GRP.engine_debug('OKS_API conversion...');
1104: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1105: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1106: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1107: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1108: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1109: END IF;
1102: IF l_debug = FND_API.G_TRUE THEN
1103: QP_PREQ_GRP.engine_debug('OKS_API conversion...');
1104: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1105: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1106: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1107: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1108: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1109: END IF;
1110:
1103: QP_PREQ_GRP.engine_debug('OKS_API conversion...');
1104: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1105: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1106: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1107: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1108: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1109: END IF;
1110:
1111: ELSIF (l_oks_qty <> -999999 AND l_oks_qty <> 0) -- OM/ASO/IBE call for service line duration/uom_quantity is not null
1104: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1105: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1106: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1107: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1108: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1109: END IF;
1110:
1111: ELSIF (l_oks_qty <> -999999 AND l_oks_qty <> 0) -- OM/ASO/IBE call for service line duration/uom_quantity is not null
1112: --bug 4900095
1118: --l_uom_quantity := ROUND( i.uom_quantity * v_uom_rate, l_max_decimal_digits); -- do not nvl uom_quantity
1119: l_uom_quantity :=1; -- reset to 1, so the unit price by pricing uom does not change
1120: l_order_qty := i.line_quantity;
1121: IF l_debug = FND_API.G_TRUE THEN
1122: QP_PREQ_GRP.engine_debug('OKS_API conversion for OM...');
1123: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1124: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1125: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1126: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1119: l_uom_quantity :=1; -- reset to 1, so the unit price by pricing uom does not change
1120: l_order_qty := i.line_quantity;
1121: IF l_debug = FND_API.G_TRUE THEN
1122: QP_PREQ_GRP.engine_debug('OKS_API conversion for OM...');
1123: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1124: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1125: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1126: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1127: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1120: l_order_qty := i.line_quantity;
1121: IF l_debug = FND_API.G_TRUE THEN
1122: QP_PREQ_GRP.engine_debug('OKS_API conversion for OM...');
1123: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1124: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1125: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1126: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1127: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1128: END IF;
1121: IF l_debug = FND_API.G_TRUE THEN
1122: QP_PREQ_GRP.engine_debug('OKS_API conversion for OM...');
1123: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1124: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1125: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1126: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1127: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1128: END IF;
1129: END IF; --oks succeed
1122: QP_PREQ_GRP.engine_debug('OKS_API conversion for OM...');
1123: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1124: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1125: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1126: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1127: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1128: END IF;
1129: END IF; --oks succeed
1130: END IF; -- end profile is ORACLE_CONTRACTS
1123: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1124: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1125: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1126: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1127: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1128: END IF;
1129: END IF; --oks succeed
1130: END IF; -- end profile is ORACLE_CONTRACTS
1131:
1133: IF (l_qp_time_uom_conversion = 'STANDARD') OR (l_oks_qty = -999999 OR l_oks_qty = 0) THEN
1134:
1135: IF (l_qp_time_uom_conversion = 'ORACLE_CONTRACTS') then
1136: IF l_debug = FND_API.G_TRUE THEN
1137: QP_PREQ_GRP.engine_debug('oks conversion had failed...');
1138: END IF;
1139: END IF; -- for debug, to distinglish if it is oks failed case or if profile set to standard case
1140:
1141: -- Get the conversion rate based on prclist's primary_uom
1145: v_uom_rate);
1146: IF (v_uom_rate = -99999) THEN
1147: l_status_text := 'invalid conversion rate from ' || l_order_uom_code || ' to ' || v_primary_uom_code;
1148: Update_Invalid_List_Lines(i.INCOMPATABILITY_GRP_CODE,i.line_index,p_pricing_phase_id,
1149: QP_PREQ_GRP.G_STATUS_INVALID_UOM_CONV,l_status_text, v_return_status,
1150: v_return_status_text);
1151: -- [julin/4330147/4335995]
1152: l_uom_conv_success := 'N';
1153: --RAISE INVALID_UOM_CONVERSION;
1157: v_pricing_qty := ROUND( i.line_quantity * v_uom_rate, l_max_decimal_digits);
1158: l_uom_quantity := 1; --shu_latest
1159: l_order_qty := i.line_quantity;
1160: IF l_debug = FND_API.G_TRUE THEN
1161: QP_PREQ_GRP.engine_debug('Standard uom conversion, non-service line...');
1162: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1163: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1164: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1165: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1158: l_uom_quantity := 1; --shu_latest
1159: l_order_qty := i.line_quantity;
1160: IF l_debug = FND_API.G_TRUE THEN
1161: QP_PREQ_GRP.engine_debug('Standard uom conversion, non-service line...');
1162: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1163: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1164: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1165: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1166: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1159: l_order_qty := i.line_quantity;
1160: IF l_debug = FND_API.G_TRUE THEN
1161: QP_PREQ_GRP.engine_debug('Standard uom conversion, non-service line...');
1162: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1163: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1164: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1165: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1166: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1167: END IF;
1160: IF l_debug = FND_API.G_TRUE THEN
1161: QP_PREQ_GRP.engine_debug('Standard uom conversion, non-service line...');
1162: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1163: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1164: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1165: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1166: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1167: END IF;
1168:
1161: QP_PREQ_GRP.engine_debug('Standard uom conversion, non-service line...');
1162: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1163: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1164: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1165: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1166: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1167: END IF;
1168:
1169: ELSE -- service line, l_uom_quantity matters
1162: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1163: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1164: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1165: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1166: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1167: END IF;
1168:
1169: ELSE -- service line, l_uom_quantity matters
1170:
1172: v_pricing_qty := ROUND( i.line_quantity * v_uom_rate, l_max_decimal_digits);
1173: l_uom_quantity := 1;
1174: l_order_qty := i.line_quantity;
1175: IF l_debug = FND_API.G_TRUE THEN
1176: QP_PREQ_GRP.engine_debug('Standard uom conversion (oks failed), service line...');
1177: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1178: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1179: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1180: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1173: l_uom_quantity := 1;
1174: l_order_qty := i.line_quantity;
1175: IF l_debug = FND_API.G_TRUE THEN
1176: QP_PREQ_GRP.engine_debug('Standard uom conversion (oks failed), service line...');
1177: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1178: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1179: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1180: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1181: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1174: l_order_qty := i.line_quantity;
1175: IF l_debug = FND_API.G_TRUE THEN
1176: QP_PREQ_GRP.engine_debug('Standard uom conversion (oks failed), service line...');
1177: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1178: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1179: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1180: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1181: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1182: END IF;
1175: IF l_debug = FND_API.G_TRUE THEN
1176: QP_PREQ_GRP.engine_debug('Standard uom conversion (oks failed), service line...');
1177: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1178: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1179: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1180: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1181: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1182: END IF;
1183:
1176: QP_PREQ_GRP.engine_debug('Standard uom conversion (oks failed), service line...');
1177: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1178: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1179: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1180: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1181: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1182: END IF;
1183:
1184: ELSE -- from profile being standard case, l_uom_quantity matters for OM
1177: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1178: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1179: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1180: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1181: QP_PREQ_GRP.engine_debug('uom_quantity:' || l_uom_quantity);
1182: END IF;
1183:
1184: ELSE -- from profile being standard case, l_uom_quantity matters for OM
1185: -- assuming OM pass l_uom_quantity is converted to order uom like the following
1184: ELSE -- from profile being standard case, l_uom_quantity matters for OM
1185: -- assuming OM pass l_uom_quantity is converted to order uom like the following
1186: -- 1 of 2 YR services, order_uom=YR, l_uom_quantity = 2 (YR)
1187: IF l_debug = FND_API.G_TRUE THEN
1188: QP_PREQ_GRP.engine_debug('uom_quantity from calling application:' || i.uom_quantity);
1189: END IF;
1190: v_pricing_qty := ROUND( i.line_quantity * v_uom_rate * nvl(i.uom_quantity,1), l_max_decimal_digits) ; -- nvl is case we only have line_quantity
1191: --l_uom_quantity := ROUND( i.uom_quantity * v_uom_rate, l_max_decimal_digits); -- do not nvl uom_quantity
1192: l_uom_quantity :=1; -- reset to 1, so the unit price by pricing uom does not change
1192: l_uom_quantity :=1; -- reset to 1, so the unit price by pricing uom does not change
1193: l_order_qty := i.line_quantity;
1194:
1195: IF l_debug = FND_API.G_TRUE THEN
1196: QP_PREQ_GRP.engine_debug('Standard uom conversion, service line...');
1197: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1198: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1199: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1200: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1193: l_order_qty := i.line_quantity;
1194:
1195: IF l_debug = FND_API.G_TRUE THEN
1196: QP_PREQ_GRP.engine_debug('Standard uom conversion, service line...');
1197: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1198: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1199: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1200: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1201: END IF;
1194:
1195: IF l_debug = FND_API.G_TRUE THEN
1196: QP_PREQ_GRP.engine_debug('Standard uom conversion, service line...');
1197: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1198: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1199: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1200: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1201: END IF;
1202:
1195: IF l_debug = FND_API.G_TRUE THEN
1196: QP_PREQ_GRP.engine_debug('Standard uom conversion, service line...');
1197: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1198: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1199: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1200: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1201: END IF;
1202:
1203: END IF;
1196: QP_PREQ_GRP.engine_debug('Standard uom conversion, service line...');
1197: QP_PREQ_GRP.engine_debug('pricing_qty:' || v_pricing_qty);
1198: QP_PREQ_GRP.engine_debug('pricing_uom:' || v_primary_uom_code);
1199: QP_PREQ_GRP.engine_debug('order_qty:' || l_order_qty);
1200: QP_PREQ_GRP.engine_debug('order_uom:' || l_order_uom_code);
1201: END IF;
1202:
1203: END IF;
1204:
1239: END IF;
1240: ELSE -- No record found in primary uom and also in order uom, else IF (v_list_line_id IS NOT NULL)
1241: l_status_text := 'Could not find a price list in Ordered UOM or Primary UOM';
1242: IF l_debug = FND_API.G_TRUE THEN
1243: QP_PREQ_GRP.engine_debug(l_status_text);
1244: END IF;
1245: Update_Invalid_List_Lines(i.INCOMPATABILITY_GRP_CODE,i.line_index,p_pricing_phase_id,
1246: QP_PREQ_GRP.G_STATUS_INVALID_UOM,l_status_text, v_return_status,
1247: v_return_status_text);
1242: IF l_debug = FND_API.G_TRUE THEN
1243: QP_PREQ_GRP.engine_debug(l_status_text);
1244: END IF;
1245: Update_Invalid_List_Lines(i.INCOMPATABILITY_GRP_CODE,i.line_index,p_pricing_phase_id,
1246: QP_PREQ_GRP.G_STATUS_INVALID_UOM,l_status_text, v_return_status,
1247: v_return_status_text);
1248: GOTO NEXT_LINE;
1249: -- RAISE INVALID_UOM;
1250: END IF;
1280: FORALL i in 1..l_upd_line_index_tbl.COUNT
1281: UPDATE qp_npreq_line_attrs_tmp
1282: SET VALUE_FROM = qp_number.number_to_canonical(l_upd_priced_qty_tbl(i))
1283: WHERE LINE_INDEX = l_upd_line_index_tbl(i)
1284: AND CONTEXT = QP_PREQ_GRP.G_PRIC_VOLUME_CONTEXT
1285: AND ATTRIBUTE = QP_PREQ_GRP.G_QUANTITY_ATTRIBUTE
1286: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRICING_TYPE
1287: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED;
1288: l_upd_line_index_tbl := l_line_index_tbl_m;
1281: UPDATE qp_npreq_line_attrs_tmp
1282: SET VALUE_FROM = qp_number.number_to_canonical(l_upd_priced_qty_tbl(i))
1283: WHERE LINE_INDEX = l_upd_line_index_tbl(i)
1284: AND CONTEXT = QP_PREQ_GRP.G_PRIC_VOLUME_CONTEXT
1285: AND ATTRIBUTE = QP_PREQ_GRP.G_QUANTITY_ATTRIBUTE
1286: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRICING_TYPE
1287: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED;
1288: l_upd_line_index_tbl := l_line_index_tbl_m;
1289: l_upd_priced_qty_tbl := l_priced_quantity_tbl_m;
1282: SET VALUE_FROM = qp_number.number_to_canonical(l_upd_priced_qty_tbl(i))
1283: WHERE LINE_INDEX = l_upd_line_index_tbl(i)
1284: AND CONTEXT = QP_PREQ_GRP.G_PRIC_VOLUME_CONTEXT
1285: AND ATTRIBUTE = QP_PREQ_GRP.G_QUANTITY_ATTRIBUTE
1286: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRICING_TYPE
1287: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED;
1288: l_upd_line_index_tbl := l_line_index_tbl_m;
1289: l_upd_priced_qty_tbl := l_priced_quantity_tbl_m;
1290:
1283: WHERE LINE_INDEX = l_upd_line_index_tbl(i)
1284: AND CONTEXT = QP_PREQ_GRP.G_PRIC_VOLUME_CONTEXT
1285: AND ATTRIBUTE = QP_PREQ_GRP.G_QUANTITY_ATTRIBUTE
1286: AND ATTRIBUTE_TYPE = QP_PREQ_GRP.G_PRICING_TYPE
1287: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED;
1288: l_upd_line_index_tbl := l_line_index_tbl_m;
1289: l_upd_priced_qty_tbl := l_priced_quantity_tbl_m;
1290:
1291: IF l_debug = FND_API.G_TRUE THEN
1288: l_upd_line_index_tbl := l_line_index_tbl_m;
1289: l_upd_priced_qty_tbl := l_priced_quantity_tbl_m;
1290:
1291: IF l_debug = FND_API.G_TRUE THEN
1292: QP_PREQ_GRP.engine_debug('Incomp Return Status : ' || v_return_status);
1293: END IF;
1294: v_return_status := x_return_status;
1295: EXCEPTION
1296: WHEN INVALID_UOM_CONVERSION THEN
1294: v_return_status := x_return_status;
1295: EXCEPTION
1296: WHEN INVALID_UOM_CONVERSION THEN
1297: IF l_debug = FND_API.G_TRUE THEN
1298: QP_PREQ_GRP.engine_debug(v_routine_name ||' Invalid Unit of Measure Conversion'|| l_order_uom_code || ','
1299: || v_primary_uom_code);
1300: END IF;
1301: x_return_status_txt := l_order_uom_code || ',' || v_primary_uom_code;
1302: v_return_status := QP_PREQ_GRP.G_STATUS_INVALID_UOM_CONV;
1298: QP_PREQ_GRP.engine_debug(v_routine_name ||' Invalid Unit of Measure Conversion'|| l_order_uom_code || ','
1299: || v_primary_uom_code);
1300: END IF;
1301: x_return_status_txt := l_order_uom_code || ',' || v_primary_uom_code;
1302: v_return_status := QP_PREQ_GRP.G_STATUS_INVALID_UOM_CONV;
1303: x_return_status := v_return_status;
1304: x_list_line_id := NULL;
1305: WHEN DUPLICATE_PRICE_LIST THEN
1306: IF l_debug = FND_API.G_TRUE THEN
1303: x_return_status := v_return_status;
1304: x_list_line_id := NULL;
1305: WHEN DUPLICATE_PRICE_LIST THEN
1306: IF l_debug = FND_API.G_TRUE THEN
1307: QP_PREQ_GRP.engine_debug(v_routine_name || ' Duplicate Price List '|| v_list_line_id || ',' || v_dup_list_line_id);
1308: END IF;
1309: v_return_msg := v_list_line_id || ',' || v_dup_list_line_id ;
1310: IF l_debug = FND_API.G_TRUE THEN
1311: QP_PREQ_GRP.engine_debug(v_return_msg);
1307: QP_PREQ_GRP.engine_debug(v_routine_name || ' Duplicate Price List '|| v_list_line_id || ',' || v_dup_list_line_id);
1308: END IF;
1309: v_return_msg := v_list_line_id || ',' || v_dup_list_line_id ;
1310: IF l_debug = FND_API.G_TRUE THEN
1311: QP_PREQ_GRP.engine_debug(v_return_msg);
1312: END IF;
1313: x_return_status_txt := v_return_msg;
1314: v_return_status := QP_PREQ_GRP.G_STATUS_DUP_PRICE_LIST;
1315: x_return_status := v_return_status;
1310: IF l_debug = FND_API.G_TRUE THEN
1311: QP_PREQ_GRP.engine_debug(v_return_msg);
1312: END IF;
1313: x_return_status_txt := v_return_msg;
1314: v_return_status := QP_PREQ_GRP.G_STATUS_DUP_PRICE_LIST;
1315: x_return_status := v_return_status;
1316: x_list_line_id := NULL;
1317: WHEN INVALID_UOM THEN
1318: IF l_debug = FND_API.G_TRUE THEN
1315: x_return_status := v_return_status;
1316: x_list_line_id := NULL;
1317: WHEN INVALID_UOM THEN
1318: IF l_debug = FND_API.G_TRUE THEN
1319: QP_PREQ_GRP.engine_debug(v_routine_name || ' Could not find a price list in Ordered UOM or Primary UOM');
1320: END IF;
1321: x_return_status_txt := 'Could not find a price list in Ordered UOM or Primary UOM';
1322: v_return_status := QP_PREQ_GRP.G_STATUS_INVALID_UOM;
1323: x_return_status := v_return_status;
1318: IF l_debug = FND_API.G_TRUE THEN
1319: QP_PREQ_GRP.engine_debug(v_routine_name || ' Could not find a price list in Ordered UOM or Primary UOM');
1320: END IF;
1321: x_return_status_txt := 'Could not find a price list in Ordered UOM or Primary UOM';
1322: v_return_status := QP_PREQ_GRP.G_STATUS_INVALID_UOM;
1323: x_return_status := v_return_status;
1324: x_list_line_id := NULL;
1325: WHEN OTHERS THEN
1326: IF l_debug = FND_API.G_TRUE THEN
1323: x_return_status := v_return_status;
1324: x_list_line_id := NULL;
1325: WHEN OTHERS THEN
1326: IF l_debug = FND_API.G_TRUE THEN
1327: QP_PREQ_GRP.engine_debug(v_routine_name || 'Unexpected Error');
1328: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
1329: END IF;
1330: v_return_status := FND_API.G_RET_STS_ERROR;
1331: x_return_status := v_return_status;
1324: x_list_line_id := NULL;
1325: WHEN OTHERS THEN
1326: IF l_debug = FND_API.G_TRUE THEN
1327: QP_PREQ_GRP.engine_debug(v_routine_name || 'Unexpected Error');
1328: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
1329: END IF;
1330: v_return_status := FND_API.G_RET_STS_ERROR;
1331: x_return_status := v_return_status;
1332: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1376: b.modifier_level_code
1377: FROM QP_LIST_LINES a, qp_npreq_ldets_tmp b, qp_npreq_line_attrs_tmp c
1378: WHERE a.LIST_HEADER_ID = b.CREATED_FROM_LIST_HEADER_ID
1379: AND a.LIST_LINE_ID = b.CREATED_FROM_LIST_LINE_ID
1380: AND b.CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1381: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1382: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1383: AND b.LINE_INDEX = p_line_index
1384: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1380: AND b.CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1381: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1382: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1383: AND b.LINE_INDEX = p_line_index
1384: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1385: AND ((b.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES)
1386: OR p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1387: AND c.LIST_LINE_ID(+) = a.LIST_LINE_ID
1388: AND c.LIST_HEADER_ID(+) = a.LIST_HEADER_ID
1381: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1382: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1383: AND b.LINE_INDEX = p_line_index
1384: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1385: AND ((b.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES)
1386: OR p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1387: AND c.LIST_LINE_ID(+) = a.LIST_LINE_ID
1388: AND c.LIST_HEADER_ID(+) = a.LIST_HEADER_ID
1389: AND c.ATTRIBUTE_TYPE(+) = 'QUALIFIER'
1382: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1383: AND b.LINE_INDEX = p_line_index
1384: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1385: AND ((b.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES)
1386: OR p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1387: AND c.LIST_LINE_ID(+) = a.LIST_LINE_ID
1388: AND c.LIST_HEADER_ID(+) = a.LIST_HEADER_ID
1389: AND c.ATTRIBUTE_TYPE(+) = 'QUALIFIER'
1390: AND c.INCOMPATABILITY_GRP_CODE(+) = p_incomp_grp_id
1400: a.BENEFIT_PRICE_LIST_LINE_ID,a.PRICE_BREAK_TYPE_CODE,b.GROUP_QUANTITY,b.GROUP_AMOUNT
1401: FROM QP_LIST_LINES a, qp_npreq_ldets_tmp b
1402: WHERE a.LIST_HEADER_ID = b.CREATED_FROM_LIST_HEADER_ID
1403: AND a.LIST_LINE_ID = b.CREATED_FROM_LIST_LINE_ID
1404: AND b.CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1405: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1406: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1407: AND b.LINE_INDEX = p_line_index
1408: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1404: AND b.CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1405: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1406: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1407: AND b.LINE_INDEX = p_line_index
1408: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1409: AND ((b.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1410: p_manual_dis_flag = QP_PREQ_GRP.G_NO);
1411: */
1412: /*
1405: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1406: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1407: AND b.LINE_INDEX = p_line_index
1408: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1409: AND ((b.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1410: p_manual_dis_flag = QP_PREQ_GRP.G_NO);
1411: */
1412: /*
1413: INDX,QP_Resolve_Incompatability_PVTRUN.best_price_evaluation.get_request_qty_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1*/
1406: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1407: AND b.LINE_INDEX = p_line_index
1408: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1409: AND ((b.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1410: p_manual_dis_flag = QP_PREQ_GRP.G_NO);
1411: */
1412: /*
1413: INDX,QP_Resolve_Incompatability_PVTRUN.best_price_evaluation.get_request_qty_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1*/
1414:
1424: CURSOR get_list_price_cur(p_list_line_id NUMBER) IS
1425: SELECT OPERAND
1426: FROM QP_LIST_LINES
1427: WHERE LIST_LINE_ID = p_list_line_id
1428: AND ARITHMETIC_OPERATOR = QP_PREQ_GRP.G_UNIT_PRICE;
1429:
1430: /*
1431: INDX,QP_Resolve_Incompatability_PVTRUN.best_price_evaluation.get_list_lines_in_order,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
1432: INDX,QP_Resolve_Incompatability_PVTRUN.best_price_evaluation.get_list_lines_in_order,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
1436: -- For bug 2661540
1437: CURSOR get_list_lines_in_order IS
1438: SELECT a.CREATED_FROM_LIST_LINE_ID
1439: FROM qp_npreq_ldets_tmp a, qp_npreq_line_attrs_tmp b
1440: WHERE a.CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1441: AND a.PRICING_PHASE_ID = p_pricing_phase_id
1442: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1443: AND a.LINE_INDEX = p_line_index
1444: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1440: WHERE a.CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1441: AND a.PRICING_PHASE_ID = p_pricing_phase_id
1442: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1443: AND a.LINE_INDEX = p_line_index
1444: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1445: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1446: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1447: AND b.LIST_LINE_ID(+) = a.CREATED_FROM_LIST_LINE_ID
1448: AND b.LIST_HEADER_ID(+) = a.CREATED_FROM_LIST_HEADER_ID
1441: AND a.PRICING_PHASE_ID = p_pricing_phase_id
1442: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1443: AND a.LINE_INDEX = p_line_index
1444: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1445: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1446: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1447: AND b.LIST_LINE_ID(+) = a.CREATED_FROM_LIST_LINE_ID
1448: AND b.LIST_HEADER_ID(+) = a.CREATED_FROM_LIST_HEADER_ID
1449: AND b.ATTRIBUTE_TYPE(+) = 'QUALIFIER'
1442: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1443: AND a.LINE_INDEX = p_line_index
1444: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1445: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1446: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1447: AND b.LIST_LINE_ID(+) = a.CREATED_FROM_LIST_LINE_ID
1448: AND b.LIST_HEADER_ID(+) = a.CREATED_FROM_LIST_HEADER_ID
1449: AND b.ATTRIBUTE_TYPE(+) = 'QUALIFIER'
1450: AND b.INCOMPATABILITY_GRP_CODE(+) = p_incomp_grp_id
1457: /* Commented for Bug 2661540
1458: CURSOR get_list_lines_in_order IS
1459: SELECT CREATED_FROM_LIST_LINE_ID
1460: FROM qp_npreq_ldets_tmp
1461: WHERE CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1462: AND PRICING_PHASE_ID = p_pricing_phase_id
1463: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1464: AND LINE_INDEX = p_line_index
1465: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1461: WHERE CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1462: AND PRICING_PHASE_ID = p_pricing_phase_id
1463: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1464: AND LINE_INDEX = p_line_index
1465: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1466: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1467: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1468: ORDER BY BEST_PERCENT DESC;
1469: */
1462: AND PRICING_PHASE_ID = p_pricing_phase_id
1463: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1464: AND LINE_INDEX = p_line_index
1465: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1466: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1467: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1468: ORDER BY BEST_PERCENT DESC;
1469: */
1470:
1463: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1464: AND LINE_INDEX = p_line_index
1465: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1466: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
1467: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
1468: ORDER BY BEST_PERCENT DESC;
1469: */
1470:
1471: --[julin/5456188]
1474: l_volume_attribute VARCHAR2(240);
1475: l_calc_quantity NUMBER;
1476:
1477: BEGIN
1478: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1479: FOR i IN get_list_lines_cur
1480: LOOP
1481: /*IF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT) THEN
1482: IF l_debug = FND_API.G_TRUE THEN
1477: BEGIN
1478: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1479: FOR i IN get_list_lines_cur
1480: LOOP
1481: /*IF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT) THEN
1482: IF l_debug = FND_API.G_TRUE THEN
1483: QP_PREQ_GRP.engine_debug('Benefit Price List Line Id is Very important: ' || i.BENEFIT_PRICE_LIST_LINE_ID);
1484: END IF;
1485: OPEN get_list_price_cur(i.BENEFIT_PRICE_LIST_LINE_ID);
1479: FOR i IN get_list_lines_cur
1480: LOOP
1481: /*IF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT) THEN
1482: IF l_debug = FND_API.G_TRUE THEN
1483: QP_PREQ_GRP.engine_debug('Benefit Price List Line Id is Very important: ' || i.BENEFIT_PRICE_LIST_LINE_ID);
1484: END IF;
1485: OPEN get_list_price_cur(i.BENEFIT_PRICE_LIST_LINE_ID);
1486: FETCH get_list_price_cur INTO v_list_price;
1487: CLOSE get_list_price_cur;
1484: END IF;
1485: OPEN get_list_price_cur(i.BENEFIT_PRICE_LIST_LINE_ID);
1486: FETCH get_list_price_cur INTO v_list_price;
1487: CLOSE get_list_price_cur;
1488: IF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_PERCENT_DISCOUNT) THEN
1489: v_benefit_price := (v_list_price) * (i.OPERAND_VALUE / 100);
1490: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_AMOUNT_DISCOUNT) THEN
1491: v_benefit_price := (v_list_price - i.OPERAND_VALUE);
1492: ELSIF (i.OPERAND_CALCULATION_CODE IS NULL) THEN
1486: FETCH get_list_price_cur INTO v_list_price;
1487: CLOSE get_list_price_cur;
1488: IF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_PERCENT_DISCOUNT) THEN
1489: v_benefit_price := (v_list_price) * (i.OPERAND_VALUE / 100);
1490: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_AMOUNT_DISCOUNT) THEN
1491: v_benefit_price := (v_list_price - i.OPERAND_VALUE);
1492: ELSIF (i.OPERAND_CALCULATION_CODE IS NULL) THEN
1493: v_benefit_price := v_list_price;
1494: END IF; */
1491: v_benefit_price := (v_list_price - i.OPERAND_VALUE);
1492: ELSIF (i.OPERAND_CALCULATION_CODE IS NULL) THEN
1493: v_benefit_price := v_list_price;
1494: END IF; */
1495: IF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_ITEM_UPGRADE,QP_PREQ_GRP.G_TERMS_SUBSTITUTION,
1496: QP_PREQ_GRP.G_COUPON_ISSUE,QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT,
1497: QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)) THEN
1498: v_benefit_price := nvl(i.ESTIM_GL_VALUE,0);
1499: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE,QP_PREQ_GRP.G_FREIGHT_CHARGE)) THEN
1492: ELSIF (i.OPERAND_CALCULATION_CODE IS NULL) THEN
1493: v_benefit_price := v_list_price;
1494: END IF; */
1495: IF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_ITEM_UPGRADE,QP_PREQ_GRP.G_TERMS_SUBSTITUTION,
1496: QP_PREQ_GRP.G_COUPON_ISSUE,QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT,
1497: QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)) THEN
1498: v_benefit_price := nvl(i.ESTIM_GL_VALUE,0);
1499: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE,QP_PREQ_GRP.G_FREIGHT_CHARGE)) THEN
1500:
1493: v_benefit_price := v_list_price;
1494: END IF; */
1495: IF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_ITEM_UPGRADE,QP_PREQ_GRP.G_TERMS_SUBSTITUTION,
1496: QP_PREQ_GRP.G_COUPON_ISSUE,QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT,
1497: QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)) THEN
1498: v_benefit_price := nvl(i.ESTIM_GL_VALUE,0);
1499: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE,QP_PREQ_GRP.G_FREIGHT_CHARGE)) THEN
1500:
1501: IF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_DISCOUNT) THEN
1495: IF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_ITEM_UPGRADE,QP_PREQ_GRP.G_TERMS_SUBSTITUTION,
1496: QP_PREQ_GRP.G_COUPON_ISSUE,QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT,
1497: QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)) THEN
1498: v_benefit_price := nvl(i.ESTIM_GL_VALUE,0);
1499: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE,QP_PREQ_GRP.G_FREIGHT_CHARGE)) THEN
1500:
1501: IF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_DISCOUNT) THEN
1502: l_sign := 1;
1503: ELSE
1497: QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)) THEN
1498: v_benefit_price := nvl(i.ESTIM_GL_VALUE,0);
1499: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE,QP_PREQ_GRP.G_FREIGHT_CHARGE)) THEN
1500:
1501: IF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_DISCOUNT) THEN
1502: l_sign := 1;
1503: ELSE
1504: l_sign := -1;
1505: END IF;
1504: l_sign := -1;
1505: END IF;
1506:
1507: IF l_debug = FND_API.G_TRUE THEN
1508: QP_PREQ_GRP.engine_debug('List Price For Best Price Eval: ' || p_list_price);
1509:
1510: END IF;
1511:
1512: IF(i.modifier_level_code <> 'ORDER') THEN -- bug 4234043
1509:
1510: END IF;
1511:
1512: IF(i.modifier_level_code <> 'ORDER') THEN -- bug 4234043
1513: IF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_PERCENT_DISCOUNT) THEN
1514: v_benefit_price := l_sign * p_list_price * (i.OPERAND_VALUE / 100);
1515: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_AMOUNT_DISCOUNT) THEN
1516: v_benefit_price := l_sign * i.OPERAND_VALUE;
1517: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_NEWPRICE_DISCOUNT) THEN
1511:
1512: IF(i.modifier_level_code <> 'ORDER') THEN -- bug 4234043
1513: IF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_PERCENT_DISCOUNT) THEN
1514: v_benefit_price := l_sign * p_list_price * (i.OPERAND_VALUE / 100);
1515: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_AMOUNT_DISCOUNT) THEN
1516: v_benefit_price := l_sign * i.OPERAND_VALUE;
1517: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_NEWPRICE_DISCOUNT) THEN
1518: l_sign := 1; -- For NEWPRICE l_sign will always be 1 irrespective of whether it is a discount or surcharge
1519: v_benefit_price := l_sign * (p_list_price - i.OPERAND_VALUE);
1513: IF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_PERCENT_DISCOUNT) THEN
1514: v_benefit_price := l_sign * p_list_price * (i.OPERAND_VALUE / 100);
1515: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_AMOUNT_DISCOUNT) THEN
1516: v_benefit_price := l_sign * i.OPERAND_VALUE;
1517: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_NEWPRICE_DISCOUNT) THEN
1518: l_sign := 1; -- For NEWPRICE l_sign will always be 1 irrespective of whether it is a discount or surcharge
1519: v_benefit_price := l_sign * (p_list_price - i.OPERAND_VALUE);
1520: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_LUMPSUM_DISCOUNT) THEN
1521: OPEN get_request_qty_cur;
1516: v_benefit_price := l_sign * i.OPERAND_VALUE;
1517: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_NEWPRICE_DISCOUNT) THEN
1518: l_sign := 1; -- For NEWPRICE l_sign will always be 1 irrespective of whether it is a discount or surcharge
1519: v_benefit_price := l_sign * (p_list_price - i.OPERAND_VALUE);
1520: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_LUMPSUM_DISCOUNT) THEN
1521: OPEN get_request_qty_cur;
1522: FETCH get_request_qty_cur INTO v_request_qty;
1523: CLOSE get_request_qty_cur;
1524: IF (i.modifier_level_code = QP_PREQ_GRP.G_LINE_GROUP) THEN
1520: ELSIF (i.OPERAND_CALCULATION_CODE = QP_PREQ_GRP.G_LUMPSUM_DISCOUNT) THEN
1521: OPEN get_request_qty_cur;
1522: FETCH get_request_qty_cur INTO v_request_qty;
1523: CLOSE get_request_qty_cur;
1524: IF (i.modifier_level_code = QP_PREQ_GRP.G_LINE_GROUP) THEN
1525: l_calc_quantity := nvl(nvl(i.group_quantity, i.group_amount), v_request_qty);
1526: ELSE
1527: l_calc_quantity := v_request_qty;
1528: END IF;
1528: END IF;
1529: v_benefit_price := l_sign * i.OPERAND_VALUE/l_calc_quantity;
1530: END IF;
1531: ELSE ---- modifier_level_code='ORDER'
1532: IF (i.OPERAND_CALCULATION_CODE IN (QP_PREQ_GRP.G_PERCENT_DISCOUNT)) THEN
1533: v_benefit_price := l_sign * i.OPERAND_VALUE;
1534: END IF;
1535: END IF;
1536:
1533: v_benefit_price := l_sign * i.OPERAND_VALUE;
1534: END IF;
1535: END IF;
1536:
1537: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_PRICE_BREAK_TYPE) THEN
1538:
1539: IF l_debug = FND_API.G_TRUE THEN
1540: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Line Quantity : ' || i.line_quantity); --[julin/4240067/4307242]
1541: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Group Quantity : ' || i.group_quantity);
1536:
1537: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_PRICE_BREAK_TYPE) THEN
1538:
1539: IF l_debug = FND_API.G_TRUE THEN
1540: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Line Quantity : ' || i.line_quantity); --[julin/4240067/4307242]
1541: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Group Quantity : ' || i.group_quantity);
1542: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Group Amount : ' || i.group_amount);
1543:
1544: END IF;
1537: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = QP_PREQ_GRP.G_PRICE_BREAK_TYPE) THEN
1538:
1539: IF l_debug = FND_API.G_TRUE THEN
1540: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Line Quantity : ' || i.line_quantity); --[julin/4240067/4307242]
1541: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Group Quantity : ' || i.group_quantity);
1542: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Group Amount : ' || i.group_amount);
1543:
1544: END IF;
1545: --[julin/4240067/4307242] using i.line_quantity
1538:
1539: IF l_debug = FND_API.G_TRUE THEN
1540: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Line Quantity : ' || i.line_quantity); --[julin/4240067/4307242]
1541: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Group Quantity : ' || i.group_quantity);
1542: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Group Amount : ' || i.group_amount);
1543:
1544: END IF;
1545: --[julin/4240067/4307242] using i.line_quantity
1546: l_request_qty := nvl(nvl(i.group_quantity,i.group_amount),i.line_quantity);
1545: --[julin/4240067/4307242] using i.line_quantity
1546: l_request_qty := nvl(nvl(i.group_quantity,i.group_amount),i.line_quantity);
1547:
1548: IF l_debug = FND_API.G_TRUE THEN
1549: QP_PREQ_GRP.engine_debug('Best Price Eval For Price Break Qualifier Value : ' || l_request_qty);
1550:
1551: END IF;
1552:
1553: /* Added for 3244060 */
1550:
1551: END IF;
1552:
1553: /* Added for 3244060 */
1554: IF QP_PREQ_GRP.G_PUBLIC_API_CALL_FLAG = 'Y' THEN
1555: l_line_id :=i.line_detail_index;
1556: ELSE
1557: l_line_id :=i.created_from_list_line_id;
1558: END IF;
1566: select pricing_attribute
1567: into l_volume_attribute
1568: from qp_pricing_attributes
1569: where list_line_id = i.created_from_list_line_id
1570: and pricing_attribute_context = QP_PREQ_GRP.G_PRIC_VOLUME_CONTEXT
1571: and excluder_flag='N'; --3607956
1572: EXCEPTION
1573: When OTHERS Then
1574: l_volume_attribute := null;
1614: v_benefit_price := x_benefit_amount;
1615: END IF;
1616:
1617: IF l_debug = FND_API.G_TRUE THEN
1618: QP_PREQ_GRP.engine_debug('Benefit Price For Best Price Eval: ' || v_benefit_price);
1619:
1620: END IF;
1621: IF (i.modifier_level_code <> 'ORDER') THEN --bug 4234043
1622: IF (p_list_price > 0) THEN
1631: v_benefit_percent :=v_benefit_price;
1632: END IF;
1633:
1634: IF l_debug = FND_API.G_TRUE THEN
1635: QP_PREQ_GRP.engine_debug('Benefit Percent For Best Price Eval: ' || v_benefit_percent);
1636:
1637: END IF;
1638: /*
1639: INDX,QP_Resolve_Incompatability_PVTRUN.best_price_evaluation.upd1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
1647: WHERE CREATED_FROM_LIST_HEADER_ID = i.CREATED_FROM_LIST_HEADER_ID
1648: AND CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
1649: AND PRICING_PHASE_ID = p_pricing_phase_id
1650: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1651: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1652: AND LINE_INDEX = p_line_index;
1653:
1654: END LOOP;
1655:
1663: INDX,QP_Resolve_Incompatability_PVTRUN.best_price_evaluation.upd2,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
1664: */
1665:
1666: UPDATE qp_npreq_ldets_tmp -- upd2
1667: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1668: WHERE CREATED_FROM_LIST_LINE_ID <> v_list_line_id
1669: AND CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1670: AND PRICING_PHASE_ID = p_pricing_phase_id
1671: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1665:
1666: UPDATE qp_npreq_ldets_tmp -- upd2
1667: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1668: WHERE CREATED_FROM_LIST_LINE_ID <> v_list_line_id
1669: AND CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1670: AND PRICING_PHASE_ID = p_pricing_phase_id
1671: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1672: AND LINE_INDEX = p_line_index
1673: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1669: AND CREATED_FROM_LIST_TYPE_CODE not in (QP_PREQ_GRP.G_PRICE_LIST_HEADER,QP_PREQ_GRP.G_AGR_LIST_HEADER)
1670: AND PRICING_PHASE_ID = p_pricing_phase_id
1671: AND INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1672: AND LINE_INDEX = p_line_index
1673: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1674:
1675:
1676: --smbalara start 11924159 START :issue PBH child lines not getting updated to status B, hence best price not working correctly when PBH
1677: --line is involved
1675:
1676: --smbalara start 11924159 START :issue PBH child lines not getting updated to status B, hence best price not working correctly when PBH
1677: --line is involved
1678: IF l_debug = FND_API.G_TRUE THEN
1679: QP_PREQ_GRP.engine_debug('Number of parent lines updated with status B :' || SQL%ROWCOUNT);
1680: END IF;
1681: -- print_tmp_tabs();
1682:
1683: UPDATE qp_npreq_ldets_tmp x-- upd2
1680: END IF;
1681: -- print_tmp_tabs();
1682:
1683: UPDATE qp_npreq_ldets_tmp x-- upd2
1684: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1685: WHERE CREATED_FROM_LIST_LINE_ID in
1686: (select RELATED_LIST_LINE_ID
1687: FROM QP_NPREQ_RLTD_LINES_TMP y,qp_npreq_ldets_tmp z
1688: WHERE y.LIST_LINE_ID =z.CREATED_FROM_LIST_LINE_ID
1686: (select RELATED_LIST_LINE_ID
1687: FROM QP_NPREQ_RLTD_LINES_TMP y,qp_npreq_ldets_tmp z
1688: WHERE y.LIST_LINE_ID =z.CREATED_FROM_LIST_LINE_ID
1689: AND y.LINE_DETAIL_INDEX = z.LINE_DETAIL_INDEX
1690: AND z.PRICING_STATUS_CODE=QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1691: );
1692:
1693: IF l_debug = FND_API.G_TRUE THEN
1694: QP_PREQ_GRP.engine_debug('Number of lines child updated with status B :' || SQL%ROWCOUNT);
1690: AND z.PRICING_STATUS_CODE=QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1691: );
1692:
1693: IF l_debug = FND_API.G_TRUE THEN
1694: QP_PREQ_GRP.engine_debug('Number of lines child updated with status B :' || SQL%ROWCOUNT);
1695: END IF;
1696: --print_tmp_tabs();
1697: --smbalara start 11924159 END
1698:
1696: --print_tmp_tabs();
1697: --smbalara start 11924159 END
1698:
1699: /* UPDATE qp_npreq_line_attrs_tmp a
1700: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1701: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1702: FROM qp_npreq_ldets_tmp b
1703: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1704: AND b.CREATED_FROM_LIST_LINE_ID <> v_list_line_id
1699: /* UPDATE qp_npreq_line_attrs_tmp a
1700: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1701: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1702: FROM qp_npreq_ldets_tmp b
1703: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1704: AND b.CREATED_FROM_LIST_LINE_ID <> v_list_line_id
1705: AND b.LINE_INDEX = p_line_index)
1706: AND a.LINE_INDEX = p_line_index; */
1707:
1705: AND b.LINE_INDEX = p_line_index)
1706: AND a.LINE_INDEX = p_line_index; */
1707:
1708: /* UPDATE qp_npreq_line_attrs_tmp a
1709: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1710: WHERE a.LIST_LINE_ID
1711: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1712: FROM qp_npreq_ldets_tmp b
1713: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1709: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1710: WHERE a.LIST_LINE_ID
1711: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1712: FROM qp_npreq_ldets_tmp b
1713: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
1714: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1715: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1716: AND b.CREATED_FROM_LIST_LINE_ID <> v_list_line_id
1717: AND b.LINE_INDEX = p_line_index)
1718: AND a.LINE_INDEX = p_line_index; */
1719:
1720: x_list_line_id := v_list_line_id;
1721: IF l_debug = FND_API.G_TRUE THEN
1722: QP_PREQ_GRP.engine_debug('Best List line Id: ' || v_list_line_id);
1723:
1724: END IF;
1725: x_return_status := v_return_status; -- SUCCESS
1726:
1726:
1727: EXCEPTION
1728: WHEN OTHERS THEN
1729: IF l_debug = FND_API.G_TRUE THEN
1730: QP_PREQ_GRP.engine_debug(v_routine_name || 'Unexpected Error');
1731: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
1732: END IF;
1733: v_return_status := FND_API.G_RET_STS_ERROR;
1734: x_return_status := v_return_status;
1727: EXCEPTION
1728: WHEN OTHERS THEN
1729: IF l_debug = FND_API.G_TRUE THEN
1730: QP_PREQ_GRP.engine_debug(v_routine_name || 'Unexpected Error');
1731: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
1732: END IF;
1733: v_return_status := FND_API.G_RET_STS_ERROR;
1734: x_return_status := v_return_status;
1735: END Best_Price_Evaluation;
1733: v_return_status := FND_API.G_RET_STS_ERROR;
1734: x_return_status := v_return_status;
1735: END Best_Price_Evaluation;
1736:
1737: PROCEDURE Delete_Lines_Complete (p_line_index_tbl IN QP_PREQ_GRP.NUMBER_TYPE,
1738: p_pricing_status_text IN VARCHAR2,
1739: x_return_status OUT NOCOPY VARCHAR2,
1740: x_return_status_txt OUT NOCOPY VARCHAR2) AS
1741: BEGIN
1738: p_pricing_status_text IN VARCHAR2,
1739: x_return_status OUT NOCOPY VARCHAR2,
1740: x_return_status_txt OUT NOCOPY VARCHAR2) AS
1741: BEGIN
1742: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1743: IF l_debug = FND_API.G_TRUE THEN
1744: QP_PREQ_GRP.engine_debug('deleting lines/ldets/attrs/rltd:'||p_pricing_status_text);
1745: END IF;
1746:
1740: x_return_status_txt OUT NOCOPY VARCHAR2) AS
1741: BEGIN
1742: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1743: IF l_debug = FND_API.G_TRUE THEN
1744: QP_PREQ_GRP.engine_debug('deleting lines/ldets/attrs/rltd:'||p_pricing_status_text);
1745: END IF;
1746:
1747: FORALL i IN p_line_index_tbl.FIRST..p_line_index_tbl.LAST
1748: UPDATE qp_npreq_lines_tmp
1769: x_return_status := FND_API.G_RET_STS_ERROR;
1770: x_return_status_txt := 'Unexpected error in QP_Resolve_Incompatability_PVT.Delete_Lines_Complete: ' || SQLERRM;
1771: END Delete_Lines_Complete;
1772:
1773: PROCEDURE Delete_Ldets_Complete (p_line_detail_index_tbl IN QP_PREQ_GRP.NUMBER_TYPE,
1774: p_pricing_status_text IN VARCHAR2,
1775: x_return_status OUT NOCOPY VARCHAR2,
1776: x_return_status_txt OUT NOCOPY VARCHAR2) AS
1777: BEGIN
1774: p_pricing_status_text IN VARCHAR2,
1775: x_return_status OUT NOCOPY VARCHAR2,
1776: x_return_status_txt OUT NOCOPY VARCHAR2) AS
1777: BEGIN
1778: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1779: IF l_debug = FND_API.G_TRUE THEN
1780: QP_PREQ_GRP.engine_debug('deleting ldets/rltd:'||p_pricing_status_text);
1781: END IF;
1782:
1776: x_return_status_txt OUT NOCOPY VARCHAR2) AS
1777: BEGIN
1778: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1779: IF l_debug = FND_API.G_TRUE THEN
1780: QP_PREQ_GRP.engine_debug('deleting ldets/rltd:'||p_pricing_status_text);
1781: END IF;
1782:
1783: FORALL i IN p_line_detail_index_tbl.FIRST..p_line_detail_index_tbl.LAST
1784: UPDATE qp_npreq_ldets_tmp a
1819: WHERE ldets.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1820: AND ldets.LINE_INDEX = p_line_index
1821: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1822: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1823: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1824: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)
1825: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1826: AND rltd.LINE_INDEX = p_line_index;
1827:
1820: AND ldets.LINE_INDEX = p_line_index
1821: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1822: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1823: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1824: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)
1825: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1826: AND rltd.LINE_INDEX = p_line_index;
1827:
1828: -- [prarasto/4141235] find loser prg line indexes to be deleted, incompatibility group
1833: WHERE ldets.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1834: AND ldets.LINE_INDEX = p_line_index
1835: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1836: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1837: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1838: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT)
1839: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1840: AND rltd.LINE_INDEX = p_line_index;
1841:
1834: AND ldets.LINE_INDEX = p_line_index
1835: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1836: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1837: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1838: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT)
1839: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1840: AND rltd.LINE_INDEX = p_line_index;
1841:
1842: -- [prarasto/4141235] find loser prg line indexes to be deleted, incompatibility group
1846: FROM qp_npreq_ldets_tmp ldets, qp_npreq_rltd_lines_tmp rltd
1847: WHERE ldets.LINE_INDEX = p_line_index
1848: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1849: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1850: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1851: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)
1852: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1853: AND rltd.LINE_INDEX = p_line_index;
1854:
1847: WHERE ldets.LINE_INDEX = p_line_index
1848: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1849: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1850: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1851: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_PROMO_GOODS_DISCOUNT)
1852: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1853: AND rltd.LINE_INDEX = p_line_index;
1854:
1855: -- [prarasto/4141235] find loser prg line indexes to be deleted, incompatibility group
1859: FROM qp_npreq_ldets_tmp ldets, qp_npreq_rltd_lines_tmp rltd
1860: WHERE ldets.LINE_INDEX = p_line_index
1861: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1862: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1863: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1864: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT)
1865: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1866: AND rltd.LINE_INDEX = p_line_index;
1867:
1860: WHERE ldets.LINE_INDEX = p_line_index
1861: AND ldets.PRICING_PHASE_ID = p_pricing_phase_id
1862: AND ldets.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1863: AND ldets.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
1864: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT)
1865: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1866: AND rltd.LINE_INDEX = p_line_index;
1867:
1868: l_del_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
1864: AND ldets.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_OTHER_ITEM_DISCOUNT)
1865: AND ldets.CREATED_FROM_LIST_LINE_ID = rltd.LIST_LINE_ID
1866: AND rltd.LINE_INDEX = p_line_index;
1867:
1868: l_del_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
1869:
1870: l_status_code VARCHAR2(30);
1871: l_status_text VARCHAR2(240);
1872:
1873: v_return_status VARCHAR2(30) := FND_API.G_RET_STS_SUCCESS;
1874: v_routine_name CONSTANT VARCHAR2(240):='Routine:QP_Resolve_Incompatability_PVTRUN.Delete_Incompatible_Lines';
1875:
1876: BEGIN
1877: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1878:
1879: IF l_debug = FND_API.G_TRUE THEN
1880: QP_PREQ_GRP.engine_debug('Enter Delete_Incompatible_Lines:'||p_line_index||':'||p_incomp_grp_id||':'||p_list_line_id||':'||p_manual_dis_flag);
1881: END IF;
1876: BEGIN
1877: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1878:
1879: IF l_debug = FND_API.G_TRUE THEN
1880: QP_PREQ_GRP.engine_debug('Enter Delete_Incompatible_Lines:'||p_line_index||':'||p_incomp_grp_id||':'||p_list_line_id||':'||p_manual_dis_flag);
1881: END IF;
1882:
1883: IF (p_manual_dis_flag = QP_PREQ_GRP.G_YES) THEN
1884: IF (p_excl_discount = FALSE) THEN
1879: IF l_debug = FND_API.G_TRUE THEN
1880: QP_PREQ_GRP.engine_debug('Enter Delete_Incompatible_Lines:'||p_line_index||':'||p_incomp_grp_id||':'||p_list_line_id||':'||p_manual_dis_flag);
1881: END IF;
1882:
1883: IF (p_manual_dis_flag = QP_PREQ_GRP.G_YES) THEN
1884: IF (p_excl_discount = FALSE) THEN
1885:
1886: /*
1887: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
1889: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd1,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
1890: */
1891:
1892: UPDATE qp_npreq_ldets_tmp --upd1
1893: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
1894: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1895: AND LINE_INDEX = p_line_index
1896: AND PRICING_PHASE_ID = p_pricing_phase_id
1897: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1894: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1895: AND LINE_INDEX = p_line_index
1896: AND PRICING_PHASE_ID = p_pricing_phase_id
1897: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1898: AND CREATED_FROM_LIST_LINE_TYPE NOT IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1899: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1900: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1901:
1902: --Begin Bug No: 7691661
1895: AND LINE_INDEX = p_line_index
1896: AND PRICING_PHASE_ID = p_pricing_phase_id
1897: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1898: AND CREATED_FROM_LIST_LINE_TYPE NOT IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1899: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1900: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1901:
1902: --Begin Bug No: 7691661
1903: UPDATE qp_npreq_ldets_tmp
1896: AND PRICING_PHASE_ID = p_pricing_phase_id
1897: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1898: AND CREATED_FROM_LIST_LINE_TYPE NOT IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1899: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1900: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1901:
1902: --Begin Bug No: 7691661
1903: UPDATE qp_npreq_ldets_tmp
1904: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
1900: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1901:
1902: --Begin Bug No: 7691661
1903: UPDATE qp_npreq_ldets_tmp
1904: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
1905: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1906: AND LINE_INDEX = p_line_index
1907: AND PRICING_PHASE_ID = p_pricing_phase_id
1908: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1905: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1906: AND LINE_INDEX = p_line_index
1907: AND PRICING_PHASE_ID = p_pricing_phase_id
1908: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1909: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1910: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1911: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1912: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1913: --End Bug No: 7691661
1906: AND LINE_INDEX = p_line_index
1907: AND PRICING_PHASE_ID = p_pricing_phase_id
1908: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1909: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1910: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1911: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1912: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1913: --End Bug No: 7691661
1914:
1907: AND PRICING_PHASE_ID = p_pricing_phase_id
1908: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1909: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1910: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1911: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1912: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1913: --End Bug No: 7691661
1914:
1915:
1908: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1909: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1910: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1911: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1912: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1913: --End Bug No: 7691661
1914:
1915:
1916: /*
1921: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd2,qp_npreq_ldets_tmp_N3,PRICING_STATUS_CODE,5
1922: */
1923:
1924: UPDATE qp_npreq_ldets_tmp --upd2
1925: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW,
1926: AUTOMATIC_FLAG = QP_PREQ_GRP.G_NO,
1927: APPLIED_FLAG = QP_PREQ_GRP.G_NO
1928: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1929: AND LINE_INDEX = p_line_index
1922: */
1923:
1924: UPDATE qp_npreq_ldets_tmp --upd2
1925: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW,
1926: AUTOMATIC_FLAG = QP_PREQ_GRP.G_NO,
1927: APPLIED_FLAG = QP_PREQ_GRP.G_NO
1928: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1929: AND LINE_INDEX = p_line_index
1930: AND PRICING_PHASE_ID = p_pricing_phase_id
1923:
1924: UPDATE qp_npreq_ldets_tmp --upd2
1925: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW,
1926: AUTOMATIC_FLAG = QP_PREQ_GRP.G_NO,
1927: APPLIED_FLAG = QP_PREQ_GRP.G_NO
1928: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1929: AND LINE_INDEX = p_line_index
1930: AND PRICING_PHASE_ID = p_pricing_phase_id
1931: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1928: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1929: AND LINE_INDEX = p_line_index
1930: AND PRICING_PHASE_ID = p_pricing_phase_id
1931: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1932: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1933: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1934: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1935: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1936:
1929: AND LINE_INDEX = p_line_index
1930: AND PRICING_PHASE_ID = p_pricing_phase_id
1931: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1932: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1933: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1934: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1935: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1936:
1937: /* UPDATE qp_npreq_line_attrs_tmp a
1930: AND PRICING_PHASE_ID = p_pricing_phase_id
1931: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1932: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1933: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1934: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1935: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1936:
1937: /* UPDATE qp_npreq_line_attrs_tmp a
1938: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1931: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1932: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1933: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1934: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1935: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1936:
1937: /* UPDATE qp_npreq_line_attrs_tmp a
1938: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1939: WHERE a.LIST_LINE_ID
1934: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1935: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1936:
1937: /* UPDATE qp_npreq_line_attrs_tmp a
1938: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1939: WHERE a.LIST_LINE_ID
1940: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1941: FROM qp_npreq_ldets_tmp b
1942: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1938: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1939: WHERE a.LIST_LINE_ID
1940: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
1941: FROM qp_npreq_ldets_tmp b
1942: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1943: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1944: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1945: AND b.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1946: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1942: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1943: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1944: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1945: AND b.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1946: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1947: AND b.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1948: AND b.LINE_INDEX = p_line_index)
1949: AND a.LINE_INDEX = p_line_index; */
1950:
1943: AND b.PRICING_PHASE_ID = p_pricing_phase_id
1944: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
1945: AND b.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1946: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1947: AND b.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1948: AND b.LINE_INDEX = p_line_index)
1949: AND a.LINE_INDEX = p_line_index; */
1950:
1951: ELSE
1955: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd3,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
1956: */
1957:
1958: UPDATE qp_npreq_ldets_tmp --upd3
1959: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
1960: WHERE LINE_INDEX = p_line_index
1961: AND PRICING_PHASE_ID = p_pricing_phase_id
1962: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1963: AND CREATED_FROM_LIST_LINE_TYPE NOT IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1959: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
1960: WHERE LINE_INDEX = p_line_index
1961: AND PRICING_PHASE_ID = p_pricing_phase_id
1962: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1963: AND CREATED_FROM_LIST_LINE_TYPE NOT IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1964: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1965: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1966:
1967: /*
1960: WHERE LINE_INDEX = p_line_index
1961: AND PRICING_PHASE_ID = p_pricing_phase_id
1962: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1963: AND CREATED_FROM_LIST_LINE_TYPE NOT IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1964: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1965: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1966:
1967: /*
1968: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd4,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
1961: AND PRICING_PHASE_ID = p_pricing_phase_id
1962: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1963: AND CREATED_FROM_LIST_LINE_TYPE NOT IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1964: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1965: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
1966:
1967: /*
1968: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd4,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
1969: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd4,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
1972: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd4,qp_npreq_ldets_tmp_N3,PRICING_STATUS_CODE,5
1973: */
1974: --Begin Bug No: 7691661
1975: UPDATE qp_npreq_ldets_tmp
1976: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
1977: WHERE LINE_INDEX = p_line_index
1978: AND PRICING_PHASE_ID = p_pricing_phase_id
1979: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1980: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1976: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
1977: WHERE LINE_INDEX = p_line_index
1978: AND PRICING_PHASE_ID = p_pricing_phase_id
1979: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1980: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1981: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1982: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1983: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1984: --End Bug No: 7691661
1977: WHERE LINE_INDEX = p_line_index
1978: AND PRICING_PHASE_ID = p_pricing_phase_id
1979: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1980: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1981: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1982: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1983: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1984: --End Bug No: 7691661
1985:
1978: AND PRICING_PHASE_ID = p_pricing_phase_id
1979: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1980: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1981: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1982: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1983: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1984: --End Bug No: 7691661
1985:
1986:
1979: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1980: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
1981: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1982: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1983: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1984: --End Bug No: 7691661
1985:
1986:
1987: UPDATE qp_npreq_ldets_tmp --upd4
1984: --End Bug No: 7691661
1985:
1986:
1987: UPDATE qp_npreq_ldets_tmp --upd4
1988: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW,
1989: AUTOMATIC_FLAG = QP_PREQ_GRP.G_NO,
1990: APPLIED_FLAG = QP_PREQ_GRP.G_NO
1991: WHERE LINE_INDEX = p_line_index
1992: AND PRICING_PHASE_ID = p_pricing_phase_id
1985:
1986:
1987: UPDATE qp_npreq_ldets_tmp --upd4
1988: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW,
1989: AUTOMATIC_FLAG = QP_PREQ_GRP.G_NO,
1990: APPLIED_FLAG = QP_PREQ_GRP.G_NO
1991: WHERE LINE_INDEX = p_line_index
1992: AND PRICING_PHASE_ID = p_pricing_phase_id
1993: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1986:
1987: UPDATE qp_npreq_ldets_tmp --upd4
1988: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW,
1989: AUTOMATIC_FLAG = QP_PREQ_GRP.G_NO,
1990: APPLIED_FLAG = QP_PREQ_GRP.G_NO
1991: WHERE LINE_INDEX = p_line_index
1992: AND PRICING_PHASE_ID = p_pricing_phase_id
1993: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1994: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1990: APPLIED_FLAG = QP_PREQ_GRP.G_NO
1991: WHERE LINE_INDEX = p_line_index
1992: AND PRICING_PHASE_ID = p_pricing_phase_id
1993: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1994: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1995: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1996: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1997: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1998:
1991: WHERE LINE_INDEX = p_line_index
1992: AND PRICING_PHASE_ID = p_pricing_phase_id
1993: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1994: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1995: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1996: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1997: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1998:
1999: /* UPDATE qp_npreq_line_attrs_tmp a
1992: AND PRICING_PHASE_ID = p_pricing_phase_id
1993: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1994: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1995: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1996: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1997: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1998:
1999: /* UPDATE qp_npreq_line_attrs_tmp a
2000: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
1993: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
1994: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
1995: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
1996: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1997: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1998:
1999: /* UPDATE qp_npreq_line_attrs_tmp a
2000: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2001: WHERE a.LIST_LINE_ID
1996: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
1997: AND PRICING_STATUS_CODE IN (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL);
1998:
1999: /* UPDATE qp_npreq_line_attrs_tmp a
2000: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2001: WHERE a.LIST_LINE_ID
2002: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2003: FROM qp_npreq_ldets_tmp b
2004: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2000: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2001: WHERE a.LIST_LINE_ID
2002: IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2003: FROM qp_npreq_ldets_tmp b
2004: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2005: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2006: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2007: AND b.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2008: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
2004: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2005: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2006: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2007: AND b.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2008: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
2009: AND b.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
2010: AND b.LINE_INDEX = p_line_index)
2011: AND a.LINE_INDEX = p_line_index; */
2012:
2005: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2006: AND b.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2007: AND b.CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2008: AND ASK_FOR_FLAG = QP_PREQ_GRP.G_NO
2009: AND b.CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT,QP_PREQ_GRP.G_SURCHARGE)
2010: AND b.LINE_INDEX = p_line_index)
2011: AND a.LINE_INDEX = p_line_index; */
2012:
2013: END IF; --p_exclusive_discount = TRUE
2020: INDX,QP_Resolve_Incompatability_PVTRUN.delete_incompatible_lines.upd5,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
2021: */
2022:
2023: UPDATE qp_npreq_ldets_tmp --upd5
2024: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2025: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2026: AND LINE_INDEX = p_line_index
2027: AND PRICING_PHASE_ID = p_pricing_phase_id
2028: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2025: WHERE INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2026: AND LINE_INDEX = p_line_index
2027: AND PRICING_PHASE_ID = p_pricing_phase_id
2028: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2029: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
2030: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2031: ELSE
2032: UPDATE qp_npreq_ldets_tmp
2033: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2026: AND LINE_INDEX = p_line_index
2027: AND PRICING_PHASE_ID = p_pricing_phase_id
2028: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2029: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
2030: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2031: ELSE
2032: UPDATE qp_npreq_ldets_tmp
2033: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2034: WHERE LINE_INDEX = p_line_index
2029: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
2030: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2031: ELSE
2032: UPDATE qp_npreq_ldets_tmp
2033: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2034: WHERE LINE_INDEX = p_line_index
2035: AND PRICING_PHASE_ID = p_pricing_phase_id
2036: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2037: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
2033: SET PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2034: WHERE LINE_INDEX = p_line_index
2035: AND PRICING_PHASE_ID = p_pricing_phase_id
2036: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2037: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
2038: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2039: END IF; -- p_exclusive_discount = FALSE
2040: END IF;
2041:
2034: WHERE LINE_INDEX = p_line_index
2035: AND PRICING_PHASE_ID = p_pricing_phase_id
2036: AND CREATED_FROM_LIST_LINE_ID <> p_list_line_id
2037: AND LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE -- Don't delete PBH Children any time
2038: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2039: END IF; -- p_exclusive_discount = FALSE
2040: END IF;
2041:
2042: IF (p_excl_discount = FALSE) THEN
2041:
2042: IF (p_excl_discount = FALSE) THEN
2043:
2044: IF l_debug = FND_API.G_TRUE THEN
2045: QP_PREQ_GRP.engine_debug('Checking for PRG/OID losers in incompatibility group '||p_incomp_grp_id);
2046: END IF;
2047:
2048: -- [prarasto/4141235] delete loser prg/oid lines/ldets/attrs/rltd
2049: --frontported fix done in 41340888
2069:
2070: ELSE
2071:
2072: IF l_debug = FND_API.G_TRUE THEN
2073: QP_PREQ_GRP.engine_debug('Checking for PRG/OID losers to exclusive group line' );
2074: END IF;
2075:
2076: -- [prarasto/4141235] delete loser prg/oid lines/ldets/attrs/rltd, exclusive winner
2077: --frontported fix done in 41340888
2100: x_return_status := v_return_status;
2101: EXCEPTION
2102: WHEN OTHERS THEN
2103: IF l_debug = FND_API.G_TRUE THEN
2104: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
2105: END IF;
2106: v_return_status := FND_API.G_RET_STS_ERROR;
2107: x_return_status := v_return_status;
2108: END Delete_Incompatible_Lines;
2125: FROM qp_npreq_ldets_tmp
2126: WHERE PRICING_PHASE_ID = p_pricing_phase_id
2127: AND INCOMPATABILITY_GRP_CODE IS NOT NULL
2128: AND LINE_INDEX = p_line_index
2129: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2130: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
2131: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2132:
2133:
2126: WHERE PRICING_PHASE_ID = p_pricing_phase_id
2127: AND INCOMPATABILITY_GRP_CODE IS NOT NULL
2128: AND LINE_INDEX = p_line_index
2129: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2130: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
2131: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2132:
2133:
2134: x_list_line_id NUMBER;
2127: AND INCOMPATABILITY_GRP_CODE IS NOT NULL
2128: AND LINE_INDEX = p_line_index
2129: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND p_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2130: p_manual_dis_flag = QP_PREQ_GRP.G_NO)
2131: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW;
2132:
2133:
2134: x_list_line_id NUMBER;
2135: v_return_status VARCHAR2(30) := FND_API.G_RET_STS_SUCCESS;
2134: x_list_line_id NUMBER;
2135: v_return_status VARCHAR2(30) := FND_API.G_RET_STS_SUCCESS;
2136: x_ret_status VARCHAR2(30);
2137: v_excl_flag BOOLEAN := FALSE;
2138: v_manual_dis_flag VARCHAR2(1) := nvl(QP_PREQ_GRP.G_MANUAL_DISCOUNT_FLAG,'Y');
2139:
2140: INVALID_BEST_PRICE EXCEPTION;
2141:
2142: v_routine_name CONSTANT VARCHAR2(240) := 'Routine:QP_Resolve_Incompatability_PVTRUN.Best_Price_For_Phase';
2141:
2142: v_routine_name CONSTANT VARCHAR2(240) := 'Routine:QP_Resolve_Incompatability_PVTRUN.Best_Price_For_Phase';
2143:
2144: BEGIN
2145: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
2146:
2147: --[julin/4116856] moved deletion of un-asked-for promotions to QP_PREQ_GRP
2148:
2149: /* UPDATE qp_npreq_line_attrs_tmp a
2143:
2144: BEGIN
2145: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
2146:
2147: --[julin/4116856] moved deletion of un-asked-for promotions to QP_PREQ_GRP
2148:
2149: /* UPDATE qp_npreq_line_attrs_tmp a
2150: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
2151: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2146:
2147: --[julin/4116856] moved deletion of un-asked-for promotions to QP_PREQ_GRP
2148:
2149: /* UPDATE qp_npreq_line_attrs_tmp a
2150: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
2151: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2152: FROM qp_npreq_ldets_tmp b
2153: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
2154: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2149: /* UPDATE qp_npreq_line_attrs_tmp a
2150: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
2151: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2152: FROM qp_npreq_ldets_tmp b
2153: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
2154: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2155: AND b.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2156: AND b.LINE_INDEX = p_line_index)
2157: AND a.LINE_INDEX = p_line_index; */
2151: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2152: FROM qp_npreq_ldets_tmp b
2153: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL
2154: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2155: AND b.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2156: AND b.LINE_INDEX = p_line_index)
2157: AND a.LINE_INDEX = p_line_index; */
2158:
2159: FOR i IN incomp_cur(v_manual_dis_flag)
2160: LOOP
2161: IF (v_excl_flag = FALSE) THEN
2162: -- Best Price Evaluation
2163: IF l_debug = FND_API.G_TRUE THEN
2164: QP_PREQ_GRP.engine_debug('Best Price For Phase .....');
2165: END IF;
2166: Best_Price_Evaluation(p_list_price,
2167: p_line_index,
2168: p_pricing_phase_id,
2175: RAISE INVALID_BEST_PRICE;
2176: END IF;
2177: END IF;
2178: -- Incomp_grp_id ='EXCL' has the highest priority(exclusivity)
2179: IF (i.INCOMPATABILITY_GRP_CODE = QP_PREQ_GRP.G_INCOMP_EXCLUSIVE) THEN
2180: v_excl_flag := TRUE;
2181: END IF;
2182: IF (v_excl_flag = FALSE) THEN
2183: Delete_Incompatible_Lines(p_pricing_phase_id,
2202: END IF;
2203: EXCEPTION
2204: WHEN INVALID_BEST_PRICE THEN
2205: IF l_debug = FND_API.G_TRUE THEN
2206: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
2207: END IF;
2208: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
2209: v_return_status := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR;
2210: x_return_status := v_return_status;
2205: IF l_debug = FND_API.G_TRUE THEN
2206: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
2207: END IF;
2208: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
2209: v_return_status := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR;
2210: x_return_status := v_return_status;
2211: WHEN OTHERS THEN
2212: IF l_debug = FND_API.G_TRUE THEN
2213: QP_PREQ_GRP.engine_debug(v_routine_name || 'Unexpected Error');
2209: v_return_status := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR;
2210: x_return_status := v_return_status;
2211: WHEN OTHERS THEN
2212: IF l_debug = FND_API.G_TRUE THEN
2213: QP_PREQ_GRP.engine_debug(v_routine_name || 'Unexpected Error');
2214: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
2215: END IF;
2216: v_return_status := FND_API.G_RET_STS_ERROR;
2217: x_return_status := v_return_status;
2210: x_return_status := v_return_status;
2211: WHEN OTHERS THEN
2212: IF l_debug = FND_API.G_TRUE THEN
2213: QP_PREQ_GRP.engine_debug(v_routine_name || 'Unexpected Error');
2214: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
2215: END IF;
2216: v_return_status := FND_API.G_RET_STS_ERROR;
2217: x_return_status := v_return_status;
2218: END Best_Price_For_Phase;
2236: SELECT DISTINCT INCOMPATABILITY_GRP_CODE , PRICING_STATUS_CODE
2237: FROM qp_npreq_ldets_tmp
2238: WHERE PRICING_PHASE_ID = p_pricing_phase_id
2239: AND INCOMPATABILITY_GRP_CODE IS NOT NULL
2240: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2241: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2242: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2243: AND LINE_INDEX = p_line_index;
2244:
2237: FROM qp_npreq_ldets_tmp
2238: WHERE PRICING_PHASE_ID = p_pricing_phase_id
2239: AND INCOMPATABILITY_GRP_CODE IS NOT NULL
2240: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2241: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2242: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2243: AND LINE_INDEX = p_line_index;
2244:
2245: /*
2238: WHERE PRICING_PHASE_ID = p_pricing_phase_id
2239: AND INCOMPATABILITY_GRP_CODE IS NOT NULL
2240: AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2241: AND ((AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2242: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2243: AND LINE_INDEX = p_line_index;
2244:
2245: /*
2246: INDX,QP_Resolve_Incompatability_PVTRUN.resolve_incompatability.each_incomp_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
2268: FROM qp_npreq_ldets_tmp a
2269: WHERE EXISTS (SELECT 'X'
2270: FROM qp_npreq_line_attrs_tmp b
2271: WHERE a.LINE_INDEX = b.LINE_INDEX
2272: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_QUALIFIER_TYPE
2273: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
2274: AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
2275: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2269: WHERE EXISTS (SELECT 'X'
2270: FROM qp_npreq_line_attrs_tmp b
2271: WHERE a.LINE_INDEX = b.LINE_INDEX
2272: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_QUALIFIER_TYPE
2273: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
2274: AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
2275: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2270: FROM qp_npreq_line_attrs_tmp b
2271: WHERE a.LINE_INDEX = b.LINE_INDEX
2272: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_QUALIFIER_TYPE
2273: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
2274: AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
2275: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2271: WHERE a.LINE_INDEX = b.LINE_INDEX
2272: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_QUALIFIER_TYPE
2273: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
2274: AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
2275: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2279: QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
2272: AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_QUALIFIER_TYPE
2273: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
2274: AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
2275: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2279: QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
2280: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
2273: AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
2274: AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
2275: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2279: QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
2280: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
2281: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6,to_char(a.CREATED_FROM_LIST_HEADER_ID)))
2275: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2279: QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
2280: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
2281: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6,to_char(a.CREATED_FROM_LIST_HEADER_ID)))
2282: AND a.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2283: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2276: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2279: QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
2280: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
2281: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6,to_char(a.CREATED_FROM_LIST_HEADER_ID)))
2282: AND a.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2283: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2284: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2277: AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2279: QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
2280: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
2281: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6,to_char(a.CREATED_FROM_LIST_HEADER_ID)))
2282: AND a.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2283: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2284: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2285: AND a.LINE_INDEX = p_line_index
2278: AND b.VALUE_FROM = decode(b.ATTRIBUTE,
2279: QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
2280: QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
2281: QP_PREQ_GRP.G_QUAL_ATTRIBUTE6,to_char(a.CREATED_FROM_LIST_HEADER_ID)))
2282: AND a.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2283: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2284: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2285: AND a.LINE_INDEX = p_line_index
2286: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2282: AND a.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2283: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2284: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2285: AND a.LINE_INDEX = p_line_index
2286: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2287: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2288: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2289: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2290: UNION
2283: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2284: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2285: AND a.LINE_INDEX = p_line_index
2286: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2287: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2288: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2289: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2290: UNION
2291: SELECT a.CREATED_FROM_LIST_HEADER_ID,a.CREATED_FROM_LIST_LINE_ID,a.INCOMPATABILITY_GRP_CODE,'N' ASK_FOR_FLAG
2284: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2285: AND a.LINE_INDEX = p_line_index
2286: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2287: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2288: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2289: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2290: UNION
2291: SELECT a.CREATED_FROM_LIST_HEADER_ID,a.CREATED_FROM_LIST_LINE_ID,a.INCOMPATABILITY_GRP_CODE,'N' ASK_FOR_FLAG
2292: FROM qp_npreq_ldets_tmp a
2285: AND a.LINE_INDEX = p_line_index
2286: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2287: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2288: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2289: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2290: UNION
2291: SELECT a.CREATED_FROM_LIST_HEADER_ID,a.CREATED_FROM_LIST_LINE_ID,a.INCOMPATABILITY_GRP_CODE,'N' ASK_FOR_FLAG
2292: FROM qp_npreq_ldets_tmp a
2293: WHERE a.ASK_FOR_FLAG = QP_PREQ_GRP.G_NO -- Removed NVL , expect some issues
2289: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2290: UNION
2291: SELECT a.CREATED_FROM_LIST_HEADER_ID,a.CREATED_FROM_LIST_LINE_ID,a.INCOMPATABILITY_GRP_CODE,'N' ASK_FOR_FLAG
2292: FROM qp_npreq_ldets_tmp a
2293: WHERE a.ASK_FOR_FLAG = QP_PREQ_GRP.G_NO -- Removed NVL , expect some issues
2294: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2295: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2296: AND a.LINE_INDEX = p_line_index
2297: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2293: WHERE a.ASK_FOR_FLAG = QP_PREQ_GRP.G_NO -- Removed NVL , expect some issues
2294: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2295: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2296: AND a.LINE_INDEX = p_line_index
2297: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2298: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2299: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2300: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2301: ORDER BY 4 desc;
2294: AND a.INCOMPATABILITY_GRP_CODE = p_incomp_grp_id
2295: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2296: AND a.LINE_INDEX = p_line_index
2297: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2298: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2299: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2300: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2301: ORDER BY 4 desc;
2302:
2295: AND a.PRICING_PHASE_ID = p_pricing_phase_id
2296: AND a.LINE_INDEX = p_line_index
2297: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2298: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2299: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2300: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2301: ORDER BY 4 desc;
2302:
2303: v_this_is_the_list_line_id NUMBER;
2296: AND a.LINE_INDEX = p_line_index
2297: AND a.LINE_DETAIL_TYPE_CODE <> QP_PREQ_GRP.G_CHILD_DETAIL_TYPE
2298: AND a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
2299: AND ((a.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES AND l_manual_dis_flag = QP_PREQ_GRP.G_YES) OR
2300: l_manual_dis_flag = QP_PREQ_GRP.G_NO)
2301: ORDER BY 4 desc;
2302:
2303: v_this_is_the_list_line_id NUMBER;
2304: v_first_list_line_id NUMBER;
2311: x_best_list_line_id NUMBER;
2312: x_ret_status VARCHAR2(30);
2313: v_return_status VARCHAR2(30) := FND_API.G_RET_STS_SUCCESS;
2314: v_routine_name CONSTANT VARCHAR2(240):='Routine:QP_Resolve_Incompatability_PVTRUN.Resolve_Incompatability';
2315: p_manual_dis_flag VARCHAR2(1) := nvl(QP_PREQ_GRP.G_MANUAL_DISCOUNT_FLAG,'Y');
2316: v_ask_for_constant CONSTANT NUMBER := -100000;
2317:
2318:
2319: l_precedence_tbl precedence_tbl_type;
2324: INVALID_INCOMPATIBILITY EXCEPTION;
2325: INVALID_BEST_PRICE EXCEPTION;
2326:
2327: BEGIN
2328: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
2329: IF l_debug = FND_API.G_TRUE THEN
2330: QP_PREQ_GRP.engine_debug ('S1');
2331:
2332: END IF;
2326:
2327: BEGIN
2328: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
2329: IF l_debug = FND_API.G_TRUE THEN
2330: QP_PREQ_GRP.engine_debug ('S1');
2331:
2332: END IF;
2333:
2334: -- [julin/4116856] moved deletion of un-asked-for promotions to QP_PREQ_GRP
2330: QP_PREQ_GRP.engine_debug ('S1');
2331:
2332: END IF;
2333:
2334: -- [julin/4116856] moved deletion of un-asked-for promotions to QP_PREQ_GRP
2335:
2336:
2337: /* UPDATE qp_npreq_line_attrs_tmp a
2338: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2334: -- [julin/4116856] moved deletion of un-asked-for promotions to QP_PREQ_GRP
2335:
2336:
2337: /* UPDATE qp_npreq_line_attrs_tmp a
2338: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2339: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2340: FROM qp_npreq_ldets_tmp b
2341: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2342: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2337: /* UPDATE qp_npreq_line_attrs_tmp a
2338: SET a.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2339: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2340: FROM qp_npreq_ldets_tmp b
2341: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2342: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2343: AND b.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2344: AND b.LINE_INDEX = p_line_index)
2345: AND a.LINE_INDEX = p_line_index; */
2339: WHERE a.LIST_LINE_ID IN (SELECT b.CREATED_FROM_LIST_LINE_ID
2340: FROM qp_npreq_ldets_tmp b
2341: WHERE b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC
2342: AND b.PRICING_PHASE_ID = p_pricing_phase_id
2343: AND b.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
2344: AND b.LINE_INDEX = p_line_index)
2345: AND a.LINE_INDEX = p_line_index; */
2346:
2347:
2347:
2348: FOR i IN incomp_cur(p_manual_dis_flag)
2349: LOOP
2350: IF l_debug = FND_API.G_TRUE THEN
2351: QP_PREQ_GRP.engine_debug ('#2');
2352:
2353: END IF;
2354: l_precedence_tbl.delete;
2355: v_counter := 0;
2362: l_precedence_tbl(v_counter).created_from_list_line_id := j.created_from_list_line_id;
2363: l_precedence_tbl(v_counter).incompatability_grp_code := j.incompatability_grp_code;
2364: l_precedence_tbl(v_counter).ask_for_flag := j.ask_for_flag;
2365: l_precedence_tbl(v_counter).original_precedence := v_precedence;
2366: IF (j.ask_for_flag = QP_PREQ_GRP.G_YES) THEN
2367: v_precedence := v_precedence + v_ask_for_constant;
2368: END IF;
2369: l_precedence_tbl(v_counter).product_precedence := v_precedence;
2370: END LOOP;
2378: IF (l_precedence_tbl.COUNT > 0) THEN
2379: FOR j IN l_precedence_tbl.FIRST .. l_precedence_tbl.LAST
2380: LOOP
2381: IF l_debug = FND_API.G_TRUE THEN
2382: QP_PREQ_GRP.engine_debug ('#3');
2383:
2384: END IF;
2385: -- Store the first list_line_id
2386: IF (v_count = 0) THEN
2385: -- Store the first list_line_id
2386: IF (v_count = 0) THEN
2387: v_first_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2388: IF l_debug = FND_API.G_TRUE THEN
2389: QP_PREQ_GRP.engine_debug('The First List Line Id : ' || v_first_list_line_id);
2390: QP_PREQ_GRP.engine_debug('Pricing Status Code: ' || i.pricing_status_code);
2391: END IF;
2392: v_high_precedence := l_precedence_tbl(j).ORIGINAL_PRECEDENCE;
2393: v_ask_for_flag := l_precedence_tbl(j).ASK_FOR_FLAG;
2386: IF (v_count = 0) THEN
2387: v_first_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2388: IF l_debug = FND_API.G_TRUE THEN
2389: QP_PREQ_GRP.engine_debug('The First List Line Id : ' || v_first_list_line_id);
2390: QP_PREQ_GRP.engine_debug('Pricing Status Code: ' || i.pricing_status_code);
2391: END IF;
2392: v_high_precedence := l_precedence_tbl(j).ORIGINAL_PRECEDENCE;
2393: v_ask_for_flag := l_precedence_tbl(j).ASK_FOR_FLAG;
2394: END IF;
2392: v_high_precedence := l_precedence_tbl(j).ORIGINAL_PRECEDENCE;
2393: v_ask_for_flag := l_precedence_tbl(j).ASK_FOR_FLAG;
2394: END IF;
2395: IF l_debug = FND_API.G_TRUE THEN
2396: QP_PREQ_GRP.engine_debug ('#4');
2397:
2398: END IF;
2399: -- Incomp_grp_id ='EXCL' has the highest priority(exclusivity)
2400: IF (i.INCOMPATABILITY_GRP_CODE = QP_PREQ_GRP.G_INCOMP_EXCLUSIVE) THEN
2396: QP_PREQ_GRP.engine_debug ('#4');
2397:
2398: END IF;
2399: -- Incomp_grp_id ='EXCL' has the highest priority(exclusivity)
2400: IF (i.INCOMPATABILITY_GRP_CODE = QP_PREQ_GRP.G_INCOMP_EXCLUSIVE) THEN
2401: IF(v_count = 0) THEN
2402: v_this_is_the_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2403: v_excl_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2404: --v_others_flag := FALSE;
2405: v_excl_flag := TRUE;
2406: ELSE -- If there are multiple list lines in EXCL incomp
2407: IF (v_others_flag = TRUE) THEN
2408: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2409: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2410: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2411: -- Best Price Evaluation
2412: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2413: IF l_debug = FND_API.G_TRUE THEN
2406: ELSE -- If there are multiple list lines in EXCL incomp
2407: IF (v_others_flag = TRUE) THEN
2408: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2409: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2410: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2411: -- Best Price Evaluation
2412: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2413: IF l_debug = FND_API.G_TRUE THEN
2414: QP_PREQ_GRP.engine_debug ('Best Price Evaluation');
2408: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2409: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2410: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2411: -- Best Price Evaluation
2412: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2413: IF l_debug = FND_API.G_TRUE THEN
2414: QP_PREQ_GRP.engine_debug ('Best Price Evaluation');
2415: END IF;
2416: IF (p_list_price IS NOT NULL) THEN
2410: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2411: -- Best Price Evaluation
2412: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2413: IF l_debug = FND_API.G_TRUE THEN
2414: QP_PREQ_GRP.engine_debug ('Best Price Evaluation');
2415: END IF;
2416: IF (p_list_price IS NOT NULL) THEN
2417: Best_Price_Evaluation(p_list_price,
2418: p_line_index,
2422: p_manual_dis_flag,
2423: x_best_list_line_id,
2424: x_ret_status);
2425: IF l_debug = FND_API.G_TRUE THEN
2426: QP_PREQ_GRP.engine_debug('Successful Best Price Eval');
2427: END IF;
2428: IF x_ret_status in (QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR,FND_API.G_RET_STS_ERROR) THEN
2429: RAISE INVALID_BEST_PRICE;
2430: END IF;
2424: x_ret_status);
2425: IF l_debug = FND_API.G_TRUE THEN
2426: QP_PREQ_GRP.engine_debug('Successful Best Price Eval');
2427: END IF;
2428: IF x_ret_status in (QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR,FND_API.G_RET_STS_ERROR) THEN
2429: RAISE INVALID_BEST_PRICE;
2430: END IF;
2431: v_this_is_the_list_line_id := x_best_list_line_id;
2432: v_excl_list_line_id := x_best_list_line_id;
2432: v_excl_list_line_id := x_best_list_line_id;
2433: v_others_flag := FALSE;
2434: END IF;
2435: END IF;
2436: ELSIF (v_ask_for_flag=QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) THEN
2437: v_this_is_the_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2438: v_excl_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2439: v_others_flag := FALSE;
2440: END IF;
2438: v_excl_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2439: v_others_flag := FALSE;
2440: END IF;
2441: ELSE
2442: IF (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) THEN
2443: v_this_is_the_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2444: v_excl_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2445: v_others_flag := FALSE;
2446: END IF;
2448: END IF;
2449: END IF;
2450: END IF;
2451: IF l_debug = FND_API.G_TRUE THEN
2452: QP_PREQ_GRP.engine_debug ('#5');
2453:
2454: END IF;
2455: IF (v_others_flag = TRUE and v_excl_flag = FALSE) THEN
2456: IF l_debug = FND_API.G_TRUE THEN
2453:
2454: END IF;
2455: IF (v_others_flag = TRUE and v_excl_flag = FALSE) THEN
2456: IF l_debug = FND_API.G_TRUE THEN
2457: QP_PREQ_GRP.engine_debug('Others_Flag: TRUE');
2458: END IF;
2459: null;
2460: ELSE
2461: IF l_debug = FND_API.G_TRUE THEN
2458: END IF;
2459: null;
2460: ELSE
2461: IF l_debug = FND_API.G_TRUE THEN
2462: QP_PREQ_GRP.engine_debug('Others_Flag: FALSE');
2463: END IF;
2464: null;
2465: END IF;
2466: IF l_debug = FND_API.G_TRUE THEN
2463: END IF;
2464: null;
2465: END IF;
2466: IF l_debug = FND_API.G_TRUE THEN
2467: QP_PREQ_GRP.engine_debug ('#6');
2468: QP_PREQ_GRP.engine_debug('Count: ' || v_count);
2469:
2470: END IF;
2471: IF (v_others_flag = TRUE) THEN
2464: null;
2465: END IF;
2466: IF l_debug = FND_API.G_TRUE THEN
2467: QP_PREQ_GRP.engine_debug ('#6');
2468: QP_PREQ_GRP.engine_debug('Count: ' || v_count);
2469:
2470: END IF;
2471: IF (v_others_flag = TRUE) THEN
2472: -- If it is an asked for promo
2471: IF (v_others_flag = TRUE) THEN
2472: -- If it is an asked for promo
2473: IF (v_count > 0) THEN -- Do not compare the first time for the first record
2474: IF l_debug = FND_API.G_TRUE THEN
2475: QP_PREQ_GRP.engine_debug ('Precedence1:' || v_high_precedence);
2476: QP_PREQ_GRP.engine_debug ('Precedence2:' || l_precedence_tbl(j).ORIGINAL_PRECEDENCE);
2477: QP_PREQ_GRP.engine_debug ('Ask_For_Flag1:' || v_ask_for_flag);
2478: QP_PREQ_GRP.engine_debug ('Ask_For_FLag2:' || l_precedence_tbl(j).ASK_FOR_FLAG);
2479: QP_PREQ_GRP.engine_debug ('Second List Line Id:' || l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID);
2472: -- If it is an asked for promo
2473: IF (v_count > 0) THEN -- Do not compare the first time for the first record
2474: IF l_debug = FND_API.G_TRUE THEN
2475: QP_PREQ_GRP.engine_debug ('Precedence1:' || v_high_precedence);
2476: QP_PREQ_GRP.engine_debug ('Precedence2:' || l_precedence_tbl(j).ORIGINAL_PRECEDENCE);
2477: QP_PREQ_GRP.engine_debug ('Ask_For_Flag1:' || v_ask_for_flag);
2478: QP_PREQ_GRP.engine_debug ('Ask_For_FLag2:' || l_precedence_tbl(j).ASK_FOR_FLAG);
2479: QP_PREQ_GRP.engine_debug ('Second List Line Id:' || l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID);
2480: QP_PREQ_GRP.engine_debug ('#7');
2473: IF (v_count > 0) THEN -- Do not compare the first time for the first record
2474: IF l_debug = FND_API.G_TRUE THEN
2475: QP_PREQ_GRP.engine_debug ('Precedence1:' || v_high_precedence);
2476: QP_PREQ_GRP.engine_debug ('Precedence2:' || l_precedence_tbl(j).ORIGINAL_PRECEDENCE);
2477: QP_PREQ_GRP.engine_debug ('Ask_For_Flag1:' || v_ask_for_flag);
2478: QP_PREQ_GRP.engine_debug ('Ask_For_FLag2:' || l_precedence_tbl(j).ASK_FOR_FLAG);
2479: QP_PREQ_GRP.engine_debug ('Second List Line Id:' || l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID);
2480: QP_PREQ_GRP.engine_debug ('#7');
2481: END IF;
2474: IF l_debug = FND_API.G_TRUE THEN
2475: QP_PREQ_GRP.engine_debug ('Precedence1:' || v_high_precedence);
2476: QP_PREQ_GRP.engine_debug ('Precedence2:' || l_precedence_tbl(j).ORIGINAL_PRECEDENCE);
2477: QP_PREQ_GRP.engine_debug ('Ask_For_Flag1:' || v_ask_for_flag);
2478: QP_PREQ_GRP.engine_debug ('Ask_For_FLag2:' || l_precedence_tbl(j).ASK_FOR_FLAG);
2479: QP_PREQ_GRP.engine_debug ('Second List Line Id:' || l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID);
2480: QP_PREQ_GRP.engine_debug ('#7');
2481: END IF;
2482: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2475: QP_PREQ_GRP.engine_debug ('Precedence1:' || v_high_precedence);
2476: QP_PREQ_GRP.engine_debug ('Precedence2:' || l_precedence_tbl(j).ORIGINAL_PRECEDENCE);
2477: QP_PREQ_GRP.engine_debug ('Ask_For_Flag1:' || v_ask_for_flag);
2478: QP_PREQ_GRP.engine_debug ('Ask_For_FLag2:' || l_precedence_tbl(j).ASK_FOR_FLAG);
2479: QP_PREQ_GRP.engine_debug ('Second List Line Id:' || l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID);
2480: QP_PREQ_GRP.engine_debug ('#7');
2481: END IF;
2482: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2483: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2476: QP_PREQ_GRP.engine_debug ('Precedence2:' || l_precedence_tbl(j).ORIGINAL_PRECEDENCE);
2477: QP_PREQ_GRP.engine_debug ('Ask_For_Flag1:' || v_ask_for_flag);
2478: QP_PREQ_GRP.engine_debug ('Ask_For_FLag2:' || l_precedence_tbl(j).ASK_FOR_FLAG);
2479: QP_PREQ_GRP.engine_debug ('Second List Line Id:' || l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID);
2480: QP_PREQ_GRP.engine_debug ('#7');
2481: END IF;
2482: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2483: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2484: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2479: QP_PREQ_GRP.engine_debug ('Second List Line Id:' || l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID);
2480: QP_PREQ_GRP.engine_debug ('#7');
2481: END IF;
2482: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2483: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2484: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2485: -- Best Price Evaluation
2486: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2487: IF l_debug = FND_API.G_TRUE THEN
2480: QP_PREQ_GRP.engine_debug ('#7');
2481: END IF;
2482: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2483: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2484: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2485: -- Best Price Evaluation
2486: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2487: IF l_debug = FND_API.G_TRUE THEN
2488: QP_PREQ_GRP.engine_debug ('Best Price Evaluation');
2482: IF (v_high_precedence = l_precedence_tbl(j).ORIGINAL_PRECEDENCE) THEN
2483: IF ((v_ask_for_flag = QP_PREQ_GRP.G_YES and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) OR
2484: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2485: -- Best Price Evaluation
2486: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2487: IF l_debug = FND_API.G_TRUE THEN
2488: QP_PREQ_GRP.engine_debug ('Best Price Evaluation');
2489: END IF;
2490: IF (p_list_price IS NOT NULL) THEN
2484: (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_NO)) THEN
2485: -- Best Price Evaluation
2486: IF (p_processing_flag = QP_PREQ_GRP.G_DISCOUNT_PROCESSING) THEN
2487: IF l_debug = FND_API.G_TRUE THEN
2488: QP_PREQ_GRP.engine_debug ('Best Price Evaluation');
2489: END IF;
2490: IF (p_list_price IS NOT NULL) THEN
2491: Best_Price_Evaluation(p_list_price,
2492: p_line_index,
2496: p_manual_dis_flag,
2497: x_best_list_line_id,
2498: x_ret_status);
2499: IF l_debug = FND_API.G_TRUE THEN
2500: QP_PREQ_GRP.engine_debug('Successful Best Price Eval1');
2501: END IF;
2502: IF x_ret_status in (QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR,FND_API.G_RET_STS_ERROR) THEN
2503: RAISE INVALID_BEST_PRICE;
2504: END IF;
2498: x_ret_status);
2499: IF l_debug = FND_API.G_TRUE THEN
2500: QP_PREQ_GRP.engine_debug('Successful Best Price Eval1');
2501: END IF;
2502: IF x_ret_status in (QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR,FND_API.G_RET_STS_ERROR) THEN
2503: RAISE INVALID_BEST_PRICE;
2504: END IF;
2505: v_this_is_the_list_line_id := x_best_list_line_id;
2506: v_others_flag := FALSE;
2507: END IF;
2508: ELSE -- PRICE_LIST
2509: RAISE INVALID_INCOMPATIBILITY;
2510: END IF;
2511: ELSIF (v_ask_for_flag=QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) THEN
2512: v_this_is_the_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2513: v_others_flag := FALSE;
2514: END IF;
2515: ELSE
2512: v_this_is_the_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2513: v_others_flag := FALSE;
2514: END IF;
2515: ELSE
2516: IF (v_ask_for_flag = QP_PREQ_GRP.G_NO and l_precedence_tbl(j).ASK_FOR_FLAG = QP_PREQ_GRP.G_YES) THEN
2517: v_this_is_the_list_line_id := l_precedence_tbl(j).CREATED_FROM_LIST_LINE_ID;
2518: v_others_flag := FALSE;
2519: END IF;
2520: END IF;
2520: END IF;
2521: END IF;
2522: END IF;
2523: IF l_debug = FND_API.G_TRUE THEN
2524: QP_PREQ_GRP.engine_debug ('#8');
2525: END IF;
2526: v_count := v_count + 1;
2527: END LOOP;
2528: END IF; -- l_precedence_tbl.COUNT > 0
2531: v_others_flag := TRUE;
2532: IF (v_this_is_the_list_line_id IS NOT NULL) THEN
2533: v_first_list_line_id := v_this_is_the_list_line_id;
2534: IF l_debug = FND_API.G_TRUE THEN
2535: QP_PREQ_GRP.engine_debug('The List Line Id : ' || v_first_list_line_id);
2536: END IF;
2537: END IF;
2538: v_this_is_the_list_line_id := null; -- Reset
2539:
2537: END IF;
2538: v_this_is_the_list_line_id := null; -- Reset
2539:
2540: IF l_debug = FND_API.G_TRUE THEN
2541: QP_PREQ_GRP.engine_debug('Before Update ......');
2542: QP_PREQ_GRP.engine_debug('Incomp Grp Code:' || i.INCOMPATABILITY_GRP_CODE);
2543: QP_PREQ_GRP.engine_debug('List Line Id:' || v_first_list_line_id);
2544: QP_PREQ_GRP.engine_debug('Pricing Phase Id:' || p_pricing_phase_id);
2545: QP_PREQ_GRP.engine_debug ('#9');
2538: v_this_is_the_list_line_id := null; -- Reset
2539:
2540: IF l_debug = FND_API.G_TRUE THEN
2541: QP_PREQ_GRP.engine_debug('Before Update ......');
2542: QP_PREQ_GRP.engine_debug('Incomp Grp Code:' || i.INCOMPATABILITY_GRP_CODE);
2543: QP_PREQ_GRP.engine_debug('List Line Id:' || v_first_list_line_id);
2544: QP_PREQ_GRP.engine_debug('Pricing Phase Id:' || p_pricing_phase_id);
2545: QP_PREQ_GRP.engine_debug ('#9');
2546:
2539:
2540: IF l_debug = FND_API.G_TRUE THEN
2541: QP_PREQ_GRP.engine_debug('Before Update ......');
2542: QP_PREQ_GRP.engine_debug('Incomp Grp Code:' || i.INCOMPATABILITY_GRP_CODE);
2543: QP_PREQ_GRP.engine_debug('List Line Id:' || v_first_list_line_id);
2544: QP_PREQ_GRP.engine_debug('Pricing Phase Id:' || p_pricing_phase_id);
2545: QP_PREQ_GRP.engine_debug ('#9');
2546:
2547: END IF;
2540: IF l_debug = FND_API.G_TRUE THEN
2541: QP_PREQ_GRP.engine_debug('Before Update ......');
2542: QP_PREQ_GRP.engine_debug('Incomp Grp Code:' || i.INCOMPATABILITY_GRP_CODE);
2543: QP_PREQ_GRP.engine_debug('List Line Id:' || v_first_list_line_id);
2544: QP_PREQ_GRP.engine_debug('Pricing Phase Id:' || p_pricing_phase_id);
2545: QP_PREQ_GRP.engine_debug ('#9');
2546:
2547: END IF;
2548: -- Update all the other list lines to status 'I' for each incomp grp
2541: QP_PREQ_GRP.engine_debug('Before Update ......');
2542: QP_PREQ_GRP.engine_debug('Incomp Grp Code:' || i.INCOMPATABILITY_GRP_CODE);
2543: QP_PREQ_GRP.engine_debug('List Line Id:' || v_first_list_line_id);
2544: QP_PREQ_GRP.engine_debug('Pricing Phase Id:' || p_pricing_phase_id);
2545: QP_PREQ_GRP.engine_debug ('#9');
2546:
2547: END IF;
2548: -- Update all the other list lines to status 'I' for each incomp grp
2549: IF (v_excl_flag = FALSE) THEN
2555: p_manual_dis_flag,
2556: x_ret_status);
2557: END IF;
2558: IF l_debug = FND_API.G_TRUE THEN
2559: QP_PREQ_GRP.engine_debug ('#10');
2560: END IF;
2561: END LOOP;
2562: IF (v_excl_flag = TRUE) THEN
2563: Delete_Incompatible_Lines(p_pricing_phase_id,
2571: x_return_status := v_return_status; -- SUCCESS
2572: EXCEPTION
2573: WHEN INVALID_INCOMPATIBILITY THEN
2574: IF l_debug = FND_API.G_TRUE THEN
2575: QP_PREQ_GRP.engine_debug(v_routine_name || ' Multiple Price Lists cannot have same precedence
2576: and cannot be asked for');
2577: END IF;
2578: x_return_status_txt := v_routine_name || ' Multiple Price Lists cannot have same precedence
2579: and cannot be asked for';
2576: and cannot be asked for');
2577: END IF;
2578: x_return_status_txt := v_routine_name || ' Multiple Price Lists cannot have same precedence
2579: and cannot be asked for';
2580: v_return_status := QP_PREQ_GRP.G_STATUS_INVALID_INCOMP;
2581: x_return_status := v_return_status;
2582: WHEN INVALID_BEST_PRICE THEN
2583: IF l_debug = FND_API.G_TRUE THEN
2584: QP_PREQ_GRP.engine_debug(v_routine_name || 'Best Price Evaluation Has Error');
2580: v_return_status := QP_PREQ_GRP.G_STATUS_INVALID_INCOMP;
2581: x_return_status := v_return_status;
2582: WHEN INVALID_BEST_PRICE THEN
2583: IF l_debug = FND_API.G_TRUE THEN
2584: QP_PREQ_GRP.engine_debug(v_routine_name || 'Best Price Evaluation Has Error');
2585: END IF;
2586: x_return_status_txt := v_routine_name || 'Best Price Evaluation Has Error';
2587: v_return_status := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR;
2588: x_return_status := v_return_status;
2583: IF l_debug = FND_API.G_TRUE THEN
2584: QP_PREQ_GRP.engine_debug(v_routine_name || 'Best Price Evaluation Has Error');
2585: END IF;
2586: x_return_status_txt := v_routine_name || 'Best Price Evaluation Has Error';
2587: v_return_status := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR;
2588: x_return_status := v_return_status;
2589: WHEN OTHERS THEN
2590: IF l_debug = FND_API.G_TRUE THEN
2591: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
2587: v_return_status := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR;
2588: x_return_status := v_return_status;
2589: WHEN OTHERS THEN
2590: IF l_debug = FND_API.G_TRUE THEN
2591: QP_PREQ_GRP.engine_debug(v_routine_name || ' ' || SQLERRM);
2592: END IF;
2593: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
2594: v_return_status := FND_API.G_RET_STS_ERROR;
2595: x_return_status := v_return_status;