11: CURSOR determine_context_cur IS
12: SELECT CONTEXT , ATTRIBUTE
13: FROM qp_npreq_line_attrs_tmp
14: WHERE LINE_INDEX = p_line_index
15: AND ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
16: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
17: AND LIST_HEADER_ID = p_list_header_id
18: AND LIST_LINE_ID = p_list_line_id
19: AND CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT;
12: SELECT CONTEXT , ATTRIBUTE
13: FROM qp_npreq_line_attrs_tmp
14: WHERE LINE_INDEX = p_line_index
15: AND ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
16: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
17: AND LIST_HEADER_ID = p_list_header_id
18: AND LIST_LINE_ID = p_list_line_id
19: AND CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT;
20:
15: AND ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
16: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
17: AND LIST_HEADER_ID = p_list_header_id
18: AND LIST_LINE_ID = p_list_line_id
19: AND CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT;
20:
21: /*CURSOR get_total_qty_cur(p_pricing_attribute VARCHAR2) IS
22: SELECT a.VALUE_FROM,a.GROUP_QUANTITY,a.GROUP_AMOUNT
23: FROM qp_npreq_line_attrs_tmp a
21: /*CURSOR get_total_qty_cur(p_pricing_attribute VARCHAR2) IS
22: SELECT a.VALUE_FROM,a.GROUP_QUANTITY,a.GROUP_AMOUNT
23: FROM qp_npreq_line_attrs_tmp a
24: WHERE a.LINE_INDEX = p_line_index
25: AND a.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
26: AND a.ATTRIBUTE = p_pricing_attribute
27: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
28: AND a.PRICING_STATUS_CODE in (qp_preq_grp.G_STATUS_UNCHANGED,qp_preq_grp.G_STATUS_NEW);*/
29:
23: FROM qp_npreq_line_attrs_tmp a
24: WHERE a.LINE_INDEX = p_line_index
25: AND a.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
26: AND a.ATTRIBUTE = p_pricing_attribute
27: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
28: AND a.PRICING_STATUS_CODE in (qp_preq_grp.G_STATUS_UNCHANGED,qp_preq_grp.G_STATUS_NEW);*/
29:
30: CURSOR get_total_qty_cur IS
31: SELECT LINE_QUANTITY,GROUP_QUANTITY,GROUP_AMOUNT
24: WHERE a.LINE_INDEX = p_line_index
25: AND a.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
26: AND a.ATTRIBUTE = p_pricing_attribute
27: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
28: AND a.PRICING_STATUS_CODE in (qp_preq_grp.G_STATUS_UNCHANGED,qp_preq_grp.G_STATUS_NEW);*/
29:
30: CURSOR get_total_qty_cur IS
31: SELECT LINE_QUANTITY,GROUP_QUANTITY,GROUP_AMOUNT
32: FROM qp_npreq_ldets_tmp
31: SELECT LINE_QUANTITY,GROUP_QUANTITY,GROUP_AMOUNT
32: FROM qp_npreq_ldets_tmp
33: WHERE CREATED_FROM_LIST_LINE_ID = p_list_line_id
34: AND LINE_INDEX = p_line_index
35: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
36:
37: CURSOR get_base_qty_cur(p_pricing_attribute VARCHAR2) IS
38: SELECT a.SETUP_VALUE_FROM , b.CREATED_FROM_LIST_LINE_TYPE,b.OPERAND_VALUE,b.BENEFIT_QTY
39: FROM qp_npreq_line_attrs_tmp a , qp_npreq_ldets_tmp b
39: FROM qp_npreq_line_attrs_tmp a , qp_npreq_ldets_tmp b
40: WHERE a.LINE_INDEX = p_line_index
41: AND a.LINE_INDEX = b.LINE_INDEX
42: AND a.LIST_LINE_ID = b.CREATED_FROM_LIST_LINE_ID
43: AND a.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
44: AND a.ATTRIBUTE = p_pricing_attribute
45: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
46: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
47: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
41: AND a.LINE_INDEX = b.LINE_INDEX
42: AND a.LIST_LINE_ID = b.CREATED_FROM_LIST_LINE_ID
43: AND a.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
44: AND a.ATTRIBUTE = p_pricing_attribute
45: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
46: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
47: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
48: AND a.LIST_LINE_ID = p_list_line_id
49: AND a.LIST_HEADER_ID = p_list_header_id
42: AND a.LIST_LINE_ID = b.CREATED_FROM_LIST_LINE_ID
43: AND a.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
44: AND a.ATTRIBUTE = p_pricing_attribute
45: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
46: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
47: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
48: AND a.LIST_LINE_ID = p_list_line_id
49: AND a.LIST_HEADER_ID = p_list_header_id
50: AND b.created_from_list_line_id = p_list_line_id -- sql repos
43: AND a.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
44: AND a.ATTRIBUTE = p_pricing_attribute
45: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
46: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
47: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
48: AND a.LIST_LINE_ID = p_list_line_id
49: AND a.LIST_HEADER_ID = p_list_header_id
50: AND b.created_from_list_line_id = p_list_line_id -- sql repos
51: AND b.created_from_list_header_id = p_list_header_id; -- sql repos
83:
84: INVALID_CONTEXT EXCEPTION;
85:
86: BEGIN
87: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
88: x_return_status := FND_API.G_RET_STS_SUCCESS;
89: IF l_debug = FND_API.G_TRUE THEN
90: qp_preq_grp.engine_debug ('List Line Id: ' || p_list_line_id);
91: END IF;
86: BEGIN
87: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
88: x_return_status := FND_API.G_RET_STS_SUCCESS;
89: IF l_debug = FND_API.G_TRUE THEN
90: qp_preq_grp.engine_debug ('List Line Id: ' || p_list_line_id);
91: END IF;
92:
93: OPEN get_modifier_level_code_cur;
94: FETCH get_modifier_level_code_cur INTO v_modifier_level_code;
99: CLOSE determine_context_cur;
100:
101: v_qualifying_attribute := v_pricing_attribute;
102:
103: IF (v_pricing_attr_context = qp_preq_grp.G_PRIC_VOLUME_CONTEXT) THEN
104: -- shu 2118147, need to fix this, v_group_amount is amt_per_unit
105: OPEN get_total_qty_cur;
106: FETCH get_total_qty_cur INTO v_total_base_qty,v_group_qty,v_group_amount ;
107: CLOSE get_total_qty_cur;
106: FETCH get_total_qty_cur INTO v_total_base_qty,v_group_qty,v_group_amount ;
107: CLOSE get_total_qty_cur;
108: ELSE
109: IF l_debug = FND_API.G_TRUE THEN
110: qp_preq_grp.engine_debug('context : ' || v_pricing_attr_context);
111: END IF;
112: RAISE INVALID_CONTEXT;
113: END IF;
114:
112: RAISE INVALID_CONTEXT;
113: END IF;
114:
115: IF l_debug = FND_API.G_TRUE THEN
116: qp_preq_grp.engine_debug('v_total_base_qty: ' || v_total_base_qty);
117: qp_preq_grp.engine_debug('v_group_qty: ' ||v_group_qty);
118: END IF;
119:
120: OPEN get_base_qty_cur(v_pricing_attribute);
113: END IF;
114:
115: IF l_debug = FND_API.G_TRUE THEN
116: qp_preq_grp.engine_debug('v_total_base_qty: ' || v_total_base_qty);
117: qp_preq_grp.engine_debug('v_group_qty: ' ||v_group_qty);
118: END IF;
119:
120: OPEN get_base_qty_cur(v_pricing_attribute);
121: FETCH get_base_qty_cur INTO v_base_qty ,v_list_line_type_code,v_operand,v_benefit_qty ;
121: FETCH get_base_qty_cur INTO v_base_qty ,v_list_line_type_code,v_operand,v_benefit_qty ;
122: CLOSE get_base_qty_cur;
123:
124: IF l_debug = FND_API.G_TRUE THEN
125: qp_preq_grp.engine_debug('Total Setup Qty: ' || v_base_qty);
126: qp_preq_grp.engine_debug('Operand: ' || v_operand);
127: qp_preq_grp.engine_debug('List Line Type Code: ' || v_list_line_type_code);
128: END IF;
129:
122: CLOSE get_base_qty_cur;
123:
124: IF l_debug = FND_API.G_TRUE THEN
125: qp_preq_grp.engine_debug('Total Setup Qty: ' || v_base_qty);
126: qp_preq_grp.engine_debug('Operand: ' || v_operand);
127: qp_preq_grp.engine_debug('List Line Type Code: ' || v_list_line_type_code);
128: END IF;
129:
130: IF (p_benefit_line_id IS NOT NULL) THEN
123:
124: IF l_debug = FND_API.G_TRUE THEN
125: qp_preq_grp.engine_debug('Total Setup Qty: ' || v_base_qty);
126: qp_preq_grp.engine_debug('Operand: ' || v_operand);
127: qp_preq_grp.engine_debug('List Line Type Code: ' || v_list_line_type_code);
128: END IF;
129:
130: IF (p_benefit_line_id IS NOT NULL) THEN
131: OPEN get_list_line_attrs_cur(p_benefit_line_id);
132: FETCH get_list_line_attrs_cur INTO v_list_line_type,v_operand,v_benefit_qty;
133: CLOSE get_list_line_attrs_cur;
134: END IF;
135:
136: IF(v_list_line_type_code in(qp_preq_grp.G_DISCOUNT,qp_preq_grp.G_SURCHARGE)) THEN
137: l_benefit_Qty := v_operand;
138: ELSIF(v_list_line_type_code = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
139: l_benefit_qty := v_benefit_qty;
140: ELSIF(v_list_line_type_code = qp_preq_grp.G_COUPON_ISSUE) THEN
134: END IF;
135:
136: IF(v_list_line_type_code in(qp_preq_grp.G_DISCOUNT,qp_preq_grp.G_SURCHARGE)) THEN
137: l_benefit_Qty := v_operand;
138: ELSIF(v_list_line_type_code = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
139: l_benefit_qty := v_benefit_qty;
140: ELSIF(v_list_line_type_code = qp_preq_grp.G_COUPON_ISSUE) THEN
141: l_benefit_qty := 1; -- Need not look at the benefit part
142: END IF;
136: IF(v_list_line_type_code in(qp_preq_grp.G_DISCOUNT,qp_preq_grp.G_SURCHARGE)) THEN
137: l_benefit_Qty := v_operand;
138: ELSIF(v_list_line_type_code = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
139: l_benefit_qty := v_benefit_qty;
140: ELSIF(v_list_line_type_code = qp_preq_grp.G_COUPON_ISSUE) THEN
141: l_benefit_qty := 1; -- Need not look at the benefit part
142: END IF;
143:
144: -- Determine Qualifying Quantity
145: IF (v_modifier_level_code IN ('LINE','ORDER')) THEN
146: v_qualifying_qty := v_total_base_qty; --from ldets_tmp.line_quantity
147: ELSE
148: -- If LINEGROUP
149: IF (v_qualifying_attribute = qp_preq_grp.G_QUANTITY_ATTRIBUTE) THEN
150: v_qualifying_qty := v_group_qty; --from ldets_tmp.group_quantity
151: ELSE
152: --v_qualifying_qty := v_group_amount; -- shu 2388011, this is wrong, should be from ldets_tmp.line_quantity
153: v_qualifying_qty := v_total_base_qty; -- shu 2388011, --from ldets_tmp.line_quantity
153: v_qualifying_qty := v_total_base_qty; -- shu 2388011, --from ldets_tmp.line_quantity
154: END IF;
155: END IF;
156: IF l_debug = FND_API.G_TRUE THEN
157: qp_preq_grp.engine_debug('Modifier Level Code: '|| v_modifier_level_code);
158: qp_preq_grp.engine_debug('Qualifying Attribute : ' || v_qualifying_attribute);
159: qp_preq_grp.engine_debug('v_qualifying_qty: ' || v_qualifying_qty);
160: qp_preq_grp.engine_debug('v_base_qty: ' || v_base_qty);
161: qp_preq_grp.engine_debug('l_benefit_qty: ' || l_benefit_qty);
154: END IF;
155: END IF;
156: IF l_debug = FND_API.G_TRUE THEN
157: qp_preq_grp.engine_debug('Modifier Level Code: '|| v_modifier_level_code);
158: qp_preq_grp.engine_debug('Qualifying Attribute : ' || v_qualifying_attribute);
159: qp_preq_grp.engine_debug('v_qualifying_qty: ' || v_qualifying_qty);
160: qp_preq_grp.engine_debug('v_base_qty: ' || v_base_qty);
161: qp_preq_grp.engine_debug('l_benefit_qty: ' || l_benefit_qty);
162: END IF;
155: END IF;
156: IF l_debug = FND_API.G_TRUE THEN
157: qp_preq_grp.engine_debug('Modifier Level Code: '|| v_modifier_level_code);
158: qp_preq_grp.engine_debug('Qualifying Attribute : ' || v_qualifying_attribute);
159: qp_preq_grp.engine_debug('v_qualifying_qty: ' || v_qualifying_qty);
160: qp_preq_grp.engine_debug('v_base_qty: ' || v_base_qty);
161: qp_preq_grp.engine_debug('l_benefit_qty: ' || l_benefit_qty);
162: END IF;
163: v_total_benefit_qty := TRUNC((v_qualifying_qty / v_base_qty)) * l_benefit_qty;
156: IF l_debug = FND_API.G_TRUE THEN
157: qp_preq_grp.engine_debug('Modifier Level Code: '|| v_modifier_level_code);
158: qp_preq_grp.engine_debug('Qualifying Attribute : ' || v_qualifying_attribute);
159: qp_preq_grp.engine_debug('v_qualifying_qty: ' || v_qualifying_qty);
160: qp_preq_grp.engine_debug('v_base_qty: ' || v_base_qty);
161: qp_preq_grp.engine_debug('l_benefit_qty: ' || l_benefit_qty);
162: END IF;
163: v_total_benefit_qty := TRUNC((v_qualifying_qty / v_base_qty)) * l_benefit_qty;
164: IF l_debug = FND_API.G_TRUE THEN
157: qp_preq_grp.engine_debug('Modifier Level Code: '|| v_modifier_level_code);
158: qp_preq_grp.engine_debug('Qualifying Attribute : ' || v_qualifying_attribute);
159: qp_preq_grp.engine_debug('v_qualifying_qty: ' || v_qualifying_qty);
160: qp_preq_grp.engine_debug('v_base_qty: ' || v_base_qty);
161: qp_preq_grp.engine_debug('l_benefit_qty: ' || l_benefit_qty);
162: END IF;
163: v_total_benefit_qty := TRUNC((v_qualifying_qty / v_base_qty)) * l_benefit_qty;
164: IF l_debug = FND_API.G_TRUE THEN
165: qp_preq_grp.engine_debug('Total Benefit Qty: ' || v_total_benefit_qty);
161: qp_preq_grp.engine_debug('l_benefit_qty: ' || l_benefit_qty);
162: END IF;
163: v_total_benefit_qty := TRUNC((v_qualifying_qty / v_base_qty)) * l_benefit_qty;
164: IF l_debug = FND_API.G_TRUE THEN
165: qp_preq_grp.engine_debug('Total Benefit Qty: ' || v_total_benefit_qty);
166: END IF;
167: x_benefit_line_qty := v_total_benefit_qty;
168:
169: EXCEPTION
168:
169: EXCEPTION
170: WHEN INVALID_CONTEXT THEN
171: IF l_debug = FND_API.G_TRUE THEN
172: qp_preq_grp.engine_debug(v_routine_name || ' Invalid Context Specified.. Could Not Calculate Recurring Qty');
173: END IF;
174: x_return_status_txt := v_routine_name ||' Invalid Context Specified ..Could Not Calculate Recurring Qty';
175: v_return_status := FND_API.G_RET_STS_ERROR;
176: x_return_status := v_return_status;
174: x_return_status_txt := v_routine_name ||' Invalid Context Specified ..Could Not Calculate Recurring Qty';
175: v_return_status := FND_API.G_RET_STS_ERROR;
176: x_return_status := v_return_status;
177: IF l_debug = FND_API.G_TRUE THEN
178: qp_preq_grp.engine_debug(x_return_status_txt);
179: END IF;
180: WHEN OTHERS THEN
181: IF l_debug = FND_API.G_TRUE THEN
182: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
178: qp_preq_grp.engine_debug(x_return_status_txt);
179: END IF;
180: WHEN OTHERS THEN
181: IF l_debug = FND_API.G_TRUE THEN
182: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
183: END IF;
184: x_return_status := FND_API.G_RET_STS_ERROR;
185: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
186: END Calculate_Recurring_Quantity;
196: QPLT.CREATED_FROM_LIST_HEADER_ID,
197: QPLT.LINE_INDEX
198: FROM qp_npreq_ldets_tmp QPLT
199: WHERE PRICING_PHASE_ID = p_pricing_phase_id
200: AND QPLT.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES -- 5632314
201: AND QPLT.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
202: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT, QP_PREQ_GRP.G_SURCHARGE, QP_PREQ_GRP.G_FREIGHT_CHARGE)
203: AND PRICE_BREAK_TYPE_CODE = QP_PREQ_GRP.G_RECURRING_BREAK;
204:
197: QPLT.LINE_INDEX
198: FROM qp_npreq_ldets_tmp QPLT
199: WHERE PRICING_PHASE_ID = p_pricing_phase_id
200: AND QPLT.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES -- 5632314
201: AND QPLT.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
202: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT, QP_PREQ_GRP.G_SURCHARGE, QP_PREQ_GRP.G_FREIGHT_CHARGE)
203: AND PRICE_BREAK_TYPE_CODE = QP_PREQ_GRP.G_RECURRING_BREAK;
204:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
198: FROM qp_npreq_ldets_tmp QPLT
199: WHERE PRICING_PHASE_ID = p_pricing_phase_id
200: AND QPLT.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES -- 5632314
201: AND QPLT.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
202: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT, QP_PREQ_GRP.G_SURCHARGE, QP_PREQ_GRP.G_FREIGHT_CHARGE)
203: AND PRICE_BREAK_TYPE_CODE = QP_PREQ_GRP.G_RECURRING_BREAK;
204:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
206: l_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
199: WHERE PRICING_PHASE_ID = p_pricing_phase_id
200: AND QPLT.AUTOMATIC_FLAG = QP_PREQ_GRP.G_YES -- 5632314
201: AND QPLT.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
202: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT, QP_PREQ_GRP.G_SURCHARGE, QP_PREQ_GRP.G_FREIGHT_CHARGE)
203: AND PRICE_BREAK_TYPE_CODE = QP_PREQ_GRP.G_RECURRING_BREAK;
204:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
206: l_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
207: l_list_header_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
201: AND QPLT.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
202: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT, QP_PREQ_GRP.G_SURCHARGE, QP_PREQ_GRP.G_FREIGHT_CHARGE)
203: AND PRICE_BREAK_TYPE_CODE = QP_PREQ_GRP.G_RECURRING_BREAK;
204:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
206: l_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
207: l_list_header_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
208: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
209: l_benefit_line_qty_tbl QP_PREQ_GRP.NUMBER_TYPE;
202: AND CREATED_FROM_LIST_LINE_TYPE IN (QP_PREQ_GRP.G_DISCOUNT, QP_PREQ_GRP.G_SURCHARGE, QP_PREQ_GRP.G_FREIGHT_CHARGE)
203: AND PRICE_BREAK_TYPE_CODE = QP_PREQ_GRP.G_RECURRING_BREAK;
204:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
206: l_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
207: l_list_header_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
208: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
209: l_benefit_line_qty_tbl QP_PREQ_GRP.NUMBER_TYPE;
210: l_return_status VARCHAR2(240);
203: AND PRICE_BREAK_TYPE_CODE = QP_PREQ_GRP.G_RECURRING_BREAK;
204:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
206: l_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
207: l_list_header_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
208: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
209: l_benefit_line_qty_tbl QP_PREQ_GRP.NUMBER_TYPE;
210: l_return_status VARCHAR2(240);
211: l_status_text VARCHAR2(240);
204:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
206: l_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
207: l_list_header_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
208: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
209: l_benefit_line_qty_tbl QP_PREQ_GRP.NUMBER_TYPE;
210: l_return_status VARCHAR2(240);
211: l_status_text VARCHAR2(240);
212:
205: l_line_detail_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
206: l_list_line_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
207: l_list_header_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
208: l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
209: l_benefit_line_qty_tbl QP_PREQ_GRP.NUMBER_TYPE;
210: l_return_status VARCHAR2(240);
211: l_status_text VARCHAR2(240);
212:
213: BEGIN
210: l_return_status VARCHAR2(240);
211: l_status_text VARCHAR2(240);
212:
213: BEGIN
214: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
215:
216: IF l_debug = FND_API.G_TRUE THEN
217: QP_PREQ_GRP.engine_debug('Calculate_Recurring_Quantity-PHASE='||p_pricing_phase_id);
218: END IF;
213: BEGIN
214: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
215:
216: IF l_debug = FND_API.G_TRUE THEN
217: QP_PREQ_GRP.engine_debug('Calculate_Recurring_Quantity-PHASE='||p_pricing_phase_id);
218: END IF;
219:
220: OPEN get_recurring_details_cur;
221: LOOP
228:
229: FOR I in l_line_detail_index_tbl.first .. l_line_detail_index_tbl.last
230: LOOP
231: IF l_debug = FND_API.G_TRUE THEN
232: QP_PREQ_GRP.engine_debug('In Recurring Routine --- #1');
233: QP_PREQ_GRP.engine_debug('List Header Id: ' || l_LIST_HEADER_ID_TBL(I) );
234: QP_PREQ_GRP.engine_debug('List Line Id: ' || l_LIST_LINE_ID_TBL(I) );
235: QP_PREQ_GRP.engine_debug('List Line Index: ' || l_LINE_INDEX_TBL(I) );
236: END IF;
229: FOR I in l_line_detail_index_tbl.first .. l_line_detail_index_tbl.last
230: LOOP
231: IF l_debug = FND_API.G_TRUE THEN
232: QP_PREQ_GRP.engine_debug('In Recurring Routine --- #1');
233: QP_PREQ_GRP.engine_debug('List Header Id: ' || l_LIST_HEADER_ID_TBL(I) );
234: QP_PREQ_GRP.engine_debug('List Line Id: ' || l_LIST_LINE_ID_TBL(I) );
235: QP_PREQ_GRP.engine_debug('List Line Index: ' || l_LINE_INDEX_TBL(I) );
236: END IF;
237:
230: LOOP
231: IF l_debug = FND_API.G_TRUE THEN
232: QP_PREQ_GRP.engine_debug('In Recurring Routine --- #1');
233: QP_PREQ_GRP.engine_debug('List Header Id: ' || l_LIST_HEADER_ID_TBL(I) );
234: QP_PREQ_GRP.engine_debug('List Line Id: ' || l_LIST_LINE_ID_TBL(I) );
235: QP_PREQ_GRP.engine_debug('List Line Index: ' || l_LINE_INDEX_TBL(I) );
236: END IF;
237:
238: -- Call Recurring Routine
231: IF l_debug = FND_API.G_TRUE THEN
232: QP_PREQ_GRP.engine_debug('In Recurring Routine --- #1');
233: QP_PREQ_GRP.engine_debug('List Header Id: ' || l_LIST_HEADER_ID_TBL(I) );
234: QP_PREQ_GRP.engine_debug('List Line Id: ' || l_LIST_LINE_ID_TBL(I) );
235: QP_PREQ_GRP.engine_debug('List Line Index: ' || l_LINE_INDEX_TBL(I) );
236: END IF;
237:
238: -- Call Recurring Routine
239: QP_Process_Other_Benefits_PVT.Calculate_Recurring_Quantity(
245: l_return_status,
246: l_status_text);
247:
248: IF l_debug = FND_API.G_TRUE THEN
249: QP_PREQ_GRP.engine_debug('Return Status Text : ' || l_status_text);
250: END IF;
251:
252: IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
253: RAISE FND_API.G_EXC_ERROR;
259: SET operand_value = l_benefit_line_qty_tbl(I)
260: WHERE LINE_DETAIL_INDEX = l_line_detail_index_tbl(I);
261:
262: IF l_debug = FND_API.G_TRUE THEN
263: QP_PREQ_GRP.engine_debug('Updated count: ' || l_line_detail_index_tbl.count);
264: END IF;
265: END LOOP;
266:
267: IF l_debug = FND_API.G_TRUE THEN
264: END IF;
265: END LOOP;
266:
267: IF l_debug = FND_API.G_TRUE THEN
268: QP_PREQ_GRP.engine_debug('End Calculate_Recurring_Quantity-PHASE='||p_pricing_phase_id);
269: END IF;
270:
271: EXCEPTION
272: WHEN OTHERS THEN
270:
271: EXCEPTION
272: WHEN OTHERS THEN
273: IF l_debug = FND_API.G_TRUE THEN
274: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
275: END IF;
276: x_return_status := FND_API.G_RET_STS_ERROR;
277: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
278: END Calculate_Recurring_Quantity;
299: a.PRICING_PHASE_ID , a.AUTOMATIC_FLAG,a.LIST_HEADER_ID
300: FROM QP_LIST_LINES a, QP_RLTD_MODIFIERS b,qp_npreq_ldets_tmp c
301: WHERE a.LIST_LINE_ID = b.FROM_RLTD_MODIFIER_ID
302: AND a.LIST_LINE_ID = c.CREATED_FROM_LIST_LINE_ID
303: AND b.RLTD_MODIFIER_GRP_TYPE = qp_preq_grp.G_BENEFIT_TYPE
304: AND c.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT
305: AND c.PRICING_PHASE_ID = p_pricing_phase_id
306: AND c.LINE_INDEX = p_line_index
307: AND a.LIST_LINE_ID = p_list_line_id
300: FROM QP_LIST_LINES a, QP_RLTD_MODIFIERS b,qp_npreq_ldets_tmp c
301: WHERE a.LIST_LINE_ID = b.FROM_RLTD_MODIFIER_ID
302: AND a.LIST_LINE_ID = c.CREATED_FROM_LIST_LINE_ID
303: AND b.RLTD_MODIFIER_GRP_TYPE = qp_preq_grp.G_BENEFIT_TYPE
304: AND c.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT
305: AND c.PRICING_PHASE_ID = p_pricing_phase_id
306: AND c.LINE_INDEX = p_line_index
307: AND a.LIST_LINE_ID = p_list_line_id
308: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
304: AND c.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT
305: AND c.PRICING_PHASE_ID = p_pricing_phase_id
306: AND c.LINE_INDEX = p_line_index
307: AND a.LIST_LINE_ID = p_list_line_id
308: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
309:
310: CURSOR get_related_lines_cur(p_related_modifier_id NUMBER) IS
311: SELECT a.LIST_TYPE_CODE,b.LIST_HEADER_ID,b.LIST_LINE_ID,b.LIST_LINE_TYPE_CODE,
312: b.PRICING_GROUP_SEQUENCE, b.ARITHMETIC_OPERATOR,b.OPERAND,b.PRICING_PHASE_ID,
321: CURSOR get_benefit_line_index_cur(p_list_line_id NUMBER, p_line_index NUMBER) IS
322: SELECT CREATED_FROM_LIST_LINE_ID
323: FROM qp_npreq_ldets_tmp c
324: WHERE c.CREATED_FROM_LIST_LINE_ID = p_list_line_id
325: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW
326: AND c.LINE_INDEX = p_line_index ;
327:
328:
329: CURSOR get_list_price_cur(p_line_id NUMBER) IS
330: SELECT a.LIST_HEADER_ID,a.LIST_LINE_ID,a.OPERAND,b.ROUNDING_FACTOR
331: FROM QP_LIST_LINES a ,QP_LIST_HEADERS_B b
332: WHERE a.LIST_LINE_ID = p_line_id
333: AND a.LIST_HEADER_ID = b.LIST_HEADER_ID
334: AND a.ARITHMETIC_OPERATOR = qp_preq_grp.G_UNIT_PRICE;
335:
336: CURSOR get_request_type_code_cur IS
337: SELECT REQUEST_TYPE_CODE
338: FROM qp_npreq_lines_tmp
355: FROM qp_npreq_rltd_lines_tmp a, qp_npreq_lines_tmp b
356: WHERE a.LIST_LINE_ID = p_list_line_id
357: AND b.line_index = a.related_line_index
358: AND (instr(b.PROCESS_STATUS,'FREEGOOD')=0)
359: AND a.RELATIONSHIP_TYPE_CODE = qp_preq_grp.G_GENERATED_LINE
360: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
361: -- AND ROWNUM = 1;
362:
363:
356: WHERE a.LIST_LINE_ID = p_list_line_id
357: AND b.line_index = a.related_line_index
358: AND (instr(b.PROCESS_STATUS,'FREEGOOD')=0)
359: AND a.RELATIONSHIP_TYPE_CODE = qp_preq_grp.G_GENERATED_LINE
360: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
361: -- AND ROWNUM = 1;
362:
363:
364: v_line_index NUMBER;
383:
384: x_return_status := FND_API.G_RET_STS_SUCCESS;
385: v_benefit_exists := FALSE;
386:
387: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
388:
389: l_rltd_line_detail_index := NULL;
390:
391: -- Ravi (If it is a LINEGROUP PRG) Then Just create the relationship
394: -- If record does not exist go thru the regular prg processing
395:
396:
397: IF l_debug = FND_API.G_TRUE THEN
398: qp_preq_grp.engine_debug('Modifier Level Code: ' || p_modifier_level_code);
399: END IF;
400:
401: IF (p_modifier_level_code = 'LINEGROUP') THEN
402: -- OPEN get_rltd_line_detail_index;
408:
409: FOR j IN get_rltd_line_detail_index
410: LOOP
411: IF l_debug = FND_API.G_TRUE THEN
412: qp_preq_grp.engine_debug('Linegroup Related Line Detail Index: ' || j.related_line_detail_index);
413: END IF;
414: l_rltd_line_detail_index := j.related_line_detail_index;
415:
416: INSERT INTO qp_npreq_rltd_lines_tmp
425: ,related_list_line_id) -- bug 2979447
426: VALUES
427: (v_request_type_code
428: ,p_line_detail_index
429: ,qp_preq_grp.G_GENERATED_LINE
430: ,j.related_line_detail_index
431: ,qp_preq_grp.G_STATUS_NEW
432: ,p_list_line_id
433: ,p_line_index
427: (v_request_type_code
428: ,p_line_detail_index
429: ,qp_preq_grp.G_GENERATED_LINE
430: ,j.related_line_detail_index
431: ,qp_preq_grp.G_STATUS_NEW
432: ,p_list_line_id
433: ,p_line_index
434: ,j.related_line_index
435: ,j.related_list_line_id); -- bug 2979447
434: ,j.related_line_index
435: ,j.related_list_line_id); -- bug 2979447
436:
437: IF l_debug = FND_API.G_TRUE THEN
438: qp_preq_grp.engine_debug('Only relationship is getting created'
439: ||' for LineGroup discounts');
440: qp_preq_grp.engine_debug('New Related Line Detail-Line Detail Created');
441: END IF;
442: END LOOP;--get_rltd_line_detail_index
436:
437: IF l_debug = FND_API.G_TRUE THEN
438: qp_preq_grp.engine_debug('Only relationship is getting created'
439: ||' for LineGroup discounts');
440: qp_preq_grp.engine_debug('New Related Line Detail-Line Detail Created');
441: END IF;
442: END LOOP;--get_rltd_line_detail_index
443: END IF;--p_modifier_level_code
444: -- ELSE
445:
446: IF l_rltd_line_detail_index IS NULL THEN
447:
448: IF l_debug = FND_API.G_TRUE THEN
449: qp_preq_grp.engine_debug('Regular PRG processing');
450: END IF;
451:
452: OPEN get_max_line_index_cur;
453: FETCH get_max_line_index_cur INTO v_line_index;
452: OPEN get_max_line_index_cur;
453: FETCH get_max_line_index_cur INTO v_line_index;
454: CLOSE get_max_line_index_cur;
455:
456: v_detail_line_index := qp_preq_grp.G_LINE_DETAIL_INDEX;
457:
458: FOR j IN get_related_modifier_id_cur
459: LOOP
460: FOR i IN get_related_lines_cur(j.TO_RLTD_MODIFIER_ID)
460: FOR i IN get_related_lines_cur(j.TO_RLTD_MODIFIER_ID)
461: LOOP
462: v_line_index := v_line_index + 1; -- Temporary
463:
464: IF (j.PRICE_BREAK_TYPE_CODE = qp_preq_grp.G_RECURRING_BREAK) THEN
465: Calculate_Recurring_Quantity(j.FROM_RLTD_MODIFIER_ID,
466: j.LIST_HEADER_ID,
467: p_line_index,
468: j.TO_RLTD_MODIFIER_ID,
477: RAISE FND_API.G_EXC_ERROR;
478: END IF;
479:
480: IF l_debug = FND_API.G_TRUE THEN
481: qp_preq_grp.engine_debug('Total Benefit Qty:' || x_total_benefit_qty);
482: END IF;
483:
484: -- Find the Price of the DIS for PRG Line Vivek
485: -- Only LIST_PRICE column on BENEFIT_PRICE_LIST_LINE_ID
484: -- Find the Price of the DIS for PRG Line Vivek
485: -- Only LIST_PRICE column on BENEFIT_PRICE_LIST_LINE_ID
486:
487: IF l_debug = FND_API.G_TRUE THEN
488: qp_preq_grp.engine_debug('Benefit Price List Line Id:' || i.BENEFIT_PRICE_LIST_LINE_ID);
489: END IF;
490:
491: OPEN get_list_price_cur(i.BENEFIT_PRICE_LIST_LINE_ID);
492: FETCH get_list_price_cur
493: INTO v_list_header_id,v_list_line_id,v_list_price,v_rounding_factor;
494: CLOSE get_list_price_cur;
495:
496: IF l_debug = FND_API.G_TRUE THEN
497: qp_preq_grp.engine_debug('PRG Line Rounding Factor :' || v_rounding_factor);
498: END IF;
499:
500: OPEN get_request_type_code_cur;
501: FETCH get_request_type_code_cur INTO v_request_type_code;
501: FETCH get_request_type_code_cur INTO v_request_type_code;
502: CLOSE get_request_type_code_cur;
503:
504: IF l_debug = FND_API.G_TRUE THEN
505: qp_preq_grp.engine_debug('List Price of DIS Line:' || v_list_price);
506: END IF;
507:
508: OPEN get_benefit_line_index_cur(i.LIST_LINE_ID,v_line_index);
509: FETCH get_benefit_line_index_cur INTO l_list_line_id;
547: , PRICING_EFFECTIVE_DATE
548: , x_total_benefit_qty
549: , i.BENEFIT_UOM_CODE
550: , CURRENCY_CODE
551: , qp_preq_grp.G_STATUS_UNCHANGED
552: , PROCESSED_FLAG
553: , v_list_price
554: , qp_preq_grp.G_NO
555: , v_list_price
550: , CURRENCY_CODE
551: , qp_preq_grp.G_STATUS_UNCHANGED
552: , PROCESSED_FLAG
553: , v_list_price
554: , qp_preq_grp.G_NO
555: , v_list_price
556: , REQUEST_TYPE_CODE
557: , i.BENEFIT_UOM_CODE
558: , x_total_benefit_qty
555: , v_list_price
556: , REQUEST_TYPE_CODE
557: , i.BENEFIT_UOM_CODE
558: , x_total_benefit_qty
559: , qp_preq_grp.G_BY_ENGINE
560: , v_rounding_factor
561: , qp_preq_grp.G_YES
562: , qp_preq_grp.G_STATUS_NEW
563: , LINE_CATEGORY
557: , i.BENEFIT_UOM_CODE
558: , x_total_benefit_qty
559: , qp_preq_grp.G_BY_ENGINE
560: , v_rounding_factor
561: , qp_preq_grp.G_YES
562: , qp_preq_grp.G_STATUS_NEW
563: , LINE_CATEGORY
564: FROM qp_npreq_lines_tmp
565: WHERE LINE_INDEX = p_line_index;
558: , x_total_benefit_qty
559: , qp_preq_grp.G_BY_ENGINE
560: , v_rounding_factor
561: , qp_preq_grp.G_YES
562: , qp_preq_grp.G_STATUS_NEW
563: , LINE_CATEGORY
564: FROM qp_npreq_lines_tmp
565: WHERE LINE_INDEX = p_line_index;
566:
564: FROM qp_npreq_lines_tmp
565: WHERE LINE_INDEX = p_line_index;
566:
567: IF l_debug = FND_API.G_TRUE THEN
568: qp_preq_grp.engine_debug('New Line Created');
569: END IF;
570:
571: -- Ravi remove line to line relationship ie comment out the insert below
572: /* INSERT INTO qp_npreq_rltd_lines_tmp(REQUEST_TYPE_CODE, LINE_INDEX,RELATIONSHIP_TYPE_CODE,
570:
571: -- Ravi remove line to line relationship ie comment out the insert below
572: /* INSERT INTO qp_npreq_rltd_lines_tmp(REQUEST_TYPE_CODE, LINE_INDEX,RELATIONSHIP_TYPE_CODE,
573: RELATED_LINE_INDEX, PRICING_STATUS_CODE) VALUES
574: (v_request_type_code,p_line_index,qp_preq_grp.G_GENERATED_LINE,v_line_index,
575: qp_preq_grp.G_STATUS_NEW);
576: IF l_debug = FND_API.G_TRUE THEN
577: qp_preq_grp.engine_debug('New Line-Line Created');
578: END IF; */
571: -- Ravi remove line to line relationship ie comment out the insert below
572: /* INSERT INTO qp_npreq_rltd_lines_tmp(REQUEST_TYPE_CODE, LINE_INDEX,RELATIONSHIP_TYPE_CODE,
573: RELATED_LINE_INDEX, PRICING_STATUS_CODE) VALUES
574: (v_request_type_code,p_line_index,qp_preq_grp.G_GENERATED_LINE,v_line_index,
575: qp_preq_grp.G_STATUS_NEW);
576: IF l_debug = FND_API.G_TRUE THEN
577: qp_preq_grp.engine_debug('New Line-Line Created');
578: END IF; */
579:
573: RELATED_LINE_INDEX, PRICING_STATUS_CODE) VALUES
574: (v_request_type_code,p_line_index,qp_preq_grp.G_GENERATED_LINE,v_line_index,
575: qp_preq_grp.G_STATUS_NEW);
576: IF l_debug = FND_API.G_TRUE THEN
577: qp_preq_grp.engine_debug('New Line-Line Created');
578: END IF; */
579:
580: v_detail_line_index := v_detail_line_index + 1; -- Temporary
581:
597: ,ROUNDING_FACTOR
598: ,PROCESS_CODE)
599: VALUES
600: (v_detail_line_index
601: ,qp_preq_grp.G_GENERATED_LINE
602: ,v_line_index
603: ,v_list_header_id
604: ,v_list_line_id
605: ,qp_preq_grp.G_PRICE_LIST_TYPE
601: ,qp_preq_grp.G_GENERATED_LINE
602: ,v_line_index
603: ,v_list_header_id
604: ,v_list_line_id
605: ,qp_preq_grp.G_PRICE_LIST_TYPE
606: ,0
607: ,qp_preq_grp.G_UNIT_PRICE
608: ,v_list_price
609: ,qp_preq_grp.G_NO
603: ,v_list_header_id
604: ,v_list_line_id
605: ,qp_preq_grp.G_PRICE_LIST_TYPE
606: ,0
607: ,qp_preq_grp.G_UNIT_PRICE
608: ,v_list_price
609: ,qp_preq_grp.G_NO
610: ,qp_preq_grp.G_PRICE_LIST_HEADER
611: ,qp_preq_grp.G_STATUS_NEW
605: ,qp_preq_grp.G_PRICE_LIST_TYPE
606: ,0
607: ,qp_preq_grp.G_UNIT_PRICE
608: ,v_list_price
609: ,qp_preq_grp.G_NO
610: ,qp_preq_grp.G_PRICE_LIST_HEADER
611: ,qp_preq_grp.G_STATUS_NEW
612: ,x_total_benefit_qty
613: ,v_rounding_factor
606: ,0
607: ,qp_preq_grp.G_UNIT_PRICE
608: ,v_list_price
609: ,qp_preq_grp.G_NO
610: ,qp_preq_grp.G_PRICE_LIST_HEADER
611: ,qp_preq_grp.G_STATUS_NEW
612: ,x_total_benefit_qty
613: ,v_rounding_factor
614: ,qp_preq_grp.G_STATUS_NEW);
607: ,qp_preq_grp.G_UNIT_PRICE
608: ,v_list_price
609: ,qp_preq_grp.G_NO
610: ,qp_preq_grp.G_PRICE_LIST_HEADER
611: ,qp_preq_grp.G_STATUS_NEW
612: ,x_total_benefit_qty
613: ,v_rounding_factor
614: ,qp_preq_grp.G_STATUS_NEW);
615:
610: ,qp_preq_grp.G_PRICE_LIST_HEADER
611: ,qp_preq_grp.G_STATUS_NEW
612: ,x_total_benefit_qty
613: ,v_rounding_factor
614: ,qp_preq_grp.G_STATUS_NEW);
615:
616: IF l_debug = FND_API.G_TRUE THEN
617: qp_preq_grp.engine_debug('New PLL Line Created');
618: END IF;
613: ,v_rounding_factor
614: ,qp_preq_grp.G_STATUS_NEW);
615:
616: IF l_debug = FND_API.G_TRUE THEN
617: qp_preq_grp.engine_debug('New PLL Line Created');
618: END IF;
619:
620: v_detail_line_index := v_detail_line_index + 1; -- Temporary
621:
642: ,MODIFIER_LEVEL_CODE
643: ,CALCULATION_CODE)
644: VALUES
645: (v_detail_line_index
646: ,qp_preq_grp.G_GENERATED_LINE
647: ,v_line_index
648: ,i.LIST_HEADER_ID
649: ,i.LIST_LINE_ID
650: ,i.LIST_LINE_TYPE_CODE
651: ,i.PRICING_GROUP_SEQUENCE
652: ,i.ARITHMETIC_OPERATOR
653: ,j.PRICING_PHASE_ID
654: ,i.OPERAND
655: ,qp_preq_grp.G_NO
656: ,j.AUTOMATIC_FLAG
657: ,qp_preq_grp.G_YES
658: ,nvl(i.ACCRUAL_FLAG ,'N')
659: ,i.LIST_TYPE_CODE
653: ,j.PRICING_PHASE_ID
654: ,i.OPERAND
655: ,qp_preq_grp.G_NO
656: ,j.AUTOMATIC_FLAG
657: ,qp_preq_grp.G_YES
658: ,nvl(i.ACCRUAL_FLAG ,'N')
659: ,i.LIST_TYPE_CODE
660: ,qp_preq_grp.G_STATUS_NEW
661: ,x_total_benefit_qty
656: ,j.AUTOMATIC_FLAG
657: ,qp_preq_grp.G_YES
658: ,nvl(i.ACCRUAL_FLAG ,'N')
659: ,i.LIST_TYPE_CODE
660: ,qp_preq_grp.G_STATUS_NEW
661: ,x_total_benefit_qty
662: ,qp_preq_grp.G_STATUS_NEW
663: ,i.MODIFIER_LEVEL_CODE
664: --fix for bug 2988476
658: ,nvl(i.ACCRUAL_FLAG ,'N')
659: ,i.LIST_TYPE_CODE
660: ,qp_preq_grp.G_STATUS_NEW
661: ,x_total_benefit_qty
662: ,qp_preq_grp.G_STATUS_NEW
663: ,i.MODIFIER_LEVEL_CODE
664: --fix for bug 2988476
665: ,QP_PREQ_PUB.G_FREEGOOD);
666:
664: --fix for bug 2988476
665: ,QP_PREQ_PUB.G_FREEGOOD);
666:
667: IF l_debug = FND_API.G_TRUE THEN
668: qp_preq_grp.engine_debug('New Adjustment Line Created');
669: END IF;
670:
671: INSERT INTO qp_npreq_rltd_lines_tmp
672: (REQUEST_TYPE_CODE,
687: )
688: VALUES
689: (v_request_type_code,
690: j.LINE_DETAIL_INDEX,
691: qp_preq_grp.G_GENERATED_LINE,
692: v_detail_line_index,
693: qp_preq_grp.G_STATUS_NEW,
694: p_list_line_id,
695: -- begin shu,side fix bug 2491158,missing data in qp_npreq_rltd_lines_tmp
689: (v_request_type_code,
690: j.LINE_DETAIL_INDEX,
691: qp_preq_grp.G_GENERATED_LINE,
692: v_detail_line_index,
693: qp_preq_grp.G_STATUS_NEW,
694: p_list_line_id,
695: -- begin shu,side fix bug 2491158,missing data in qp_npreq_rltd_lines_tmp
696: p_line_index,
697: v_line_index,
703: -- end shu, side fix bug 2491158, missing data in qp_npreq_rltd_lines_tmp
704: );
705:
706: IF l_debug = FND_API.G_TRUE THEN
707: qp_preq_grp.engine_debug('New Related Line Detail-Line Detail Created');
708: END IF;
709:
710: -- Insert into Line Attributes table qp_npreq_line_attrs_tmp
711: INSERT INTO qp_npreq_line_attrs_tmp
724: VALUES
725: (i.LIST_LINE_ID
726: ,v_line_index
727: ,v_detail_line_index
728: ,qp_preq_grp.G_PRIC_ITEM_CONTEXT
729: ,qp_preq_grp.G_PRIC_ATTRIBUTE1
730: ,i.PRODUCT_ATTR_VALUE
731: ,i.PRODUCT_ATTR_VALUE
732: ,qp_preq_grp.G_NO
725: (i.LIST_LINE_ID
726: ,v_line_index
727: ,v_detail_line_index
728: ,qp_preq_grp.G_PRIC_ITEM_CONTEXT
729: ,qp_preq_grp.G_PRIC_ATTRIBUTE1
730: ,i.PRODUCT_ATTR_VALUE
731: ,i.PRODUCT_ATTR_VALUE
732: ,qp_preq_grp.G_NO
733: ,i.PRODUCT_UOM_CODE
728: ,qp_preq_grp.G_PRIC_ITEM_CONTEXT
729: ,qp_preq_grp.G_PRIC_ATTRIBUTE1
730: ,i.PRODUCT_ATTR_VALUE
731: ,i.PRODUCT_ATTR_VALUE
732: ,qp_preq_grp.G_NO
733: ,i.PRODUCT_UOM_CODE
734: ,qp_preq_grp.G_LINE_LEVEL
735: ,qp_preq_grp.G_PRODUCT_TYPE
736: ,qp_preq_grp.G_STATUS_NEW); --Item
730: ,i.PRODUCT_ATTR_VALUE
731: ,i.PRODUCT_ATTR_VALUE
732: ,qp_preq_grp.G_NO
733: ,i.PRODUCT_UOM_CODE
734: ,qp_preq_grp.G_LINE_LEVEL
735: ,qp_preq_grp.G_PRODUCT_TYPE
736: ,qp_preq_grp.G_STATUS_NEW); --Item
737:
738: IF l_debug = FND_API.G_TRUE THEN
731: ,i.PRODUCT_ATTR_VALUE
732: ,qp_preq_grp.G_NO
733: ,i.PRODUCT_UOM_CODE
734: ,qp_preq_grp.G_LINE_LEVEL
735: ,qp_preq_grp.G_PRODUCT_TYPE
736: ,qp_preq_grp.G_STATUS_NEW); --Item
737:
738: IF l_debug = FND_API.G_TRUE THEN
739: qp_preq_grp.engine_debug('New Attribute Line Created');
732: ,qp_preq_grp.G_NO
733: ,i.PRODUCT_UOM_CODE
734: ,qp_preq_grp.G_LINE_LEVEL
735: ,qp_preq_grp.G_PRODUCT_TYPE
736: ,qp_preq_grp.G_STATUS_NEW); --Item
737:
738: IF l_debug = FND_API.G_TRUE THEN
739: qp_preq_grp.engine_debug('New Attribute Line Created');
740: END IF;
735: ,qp_preq_grp.G_PRODUCT_TYPE
736: ,qp_preq_grp.G_STATUS_NEW); --Item
737:
738: IF l_debug = FND_API.G_TRUE THEN
739: qp_preq_grp.engine_debug('New Attribute Line Created');
740: END IF;
741: END IF; -- l_list_line_id;
742:
743: -- Ravi Do not delete the PRG Lines ie uncomment the update below
745: -- adjustments/benefits even thou x_qualifier_flag=TRUE
746:
747: /* IF (v_benefit_exists = FALSE) THEN
748: UPDATE qp_npreq_ldets_tmp --upd1
749: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
750: WHERE PRICING_PHASE_ID = p_pricing_phase_id
751: AND LINE_INDEX = p_line_index
752: AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
753: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
749: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
750: WHERE PRICING_PHASE_ID = p_pricing_phase_id
751: AND LINE_INDEX = p_line_index
752: AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
753: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
754:
755: -- This statement can be commented out
756: UPDATE qp_npreq_line_attrs_tmp
757: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
753: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
754:
755: -- This statement can be commented out
756: UPDATE qp_npreq_line_attrs_tmp
757: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
758: WHERE LINE_INDEX = p_line_index
759: AND LIST_LINE_ID = p_list_line_id
760: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
761:
756: UPDATE qp_npreq_line_attrs_tmp
757: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
758: WHERE LINE_INDEX = p_line_index
759: AND LIST_LINE_ID = p_list_line_id
760: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
761:
762: END IF; */
763:
764: END LOOP;--get_related_lines_cur
762: END IF; */
763:
764: END LOOP;--get_related_lines_cur
765: END LOOP;--get_related_modifier_id_cur
766: qp_preq_grp.G_LINE_DETAIL_INDEX := v_detail_line_index;
767: END IF;--l_rltd_line_detail_index
768: EXCEPTION
769: WHEN OTHERS THEN
770: IF l_debug = FND_API.G_TRUE THEN
767: END IF;--l_rltd_line_detail_index
768: EXCEPTION
769: WHEN OTHERS THEN
770: IF l_debug = FND_API.G_TRUE THEN
771: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
772: END IF;
773: x_return_status := FND_API.G_RET_STS_ERROR;
774: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
775: IF l_debug = FND_API.G_TRUE THEN
772: END IF;
773: x_return_status := FND_API.G_RET_STS_ERROR;
774: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
775: IF l_debug = FND_API.G_TRUE THEN
776: qp_preq_grp.engine_debug('Process_PRG: ' || SQLERRM);
777: END IF;
778: END Process_PRG;
779:
780: PROCEDURE Process_OID(p_line_index NUMBER,
797: a.PRICING_PHASE_ID , a.AUTOMATIC_FLAG
798: FROM QP_LIST_LINES a, QP_RLTD_MODIFIERS b,qp_npreq_ldets_tmp c
799: WHERE a.LIST_LINE_ID = b.FROM_RLTD_MODIFIER_ID
800: AND a.LIST_LINE_ID = c.CREATED_FROM_LIST_LINE_ID
801: AND b.RLTD_MODIFIER_GRP_TYPE = qp_preq_grp.G_BENEFIT_TYPE
802: AND c.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT
803: AND c.PRICING_PHASE_ID = p_pricing_phase_id
804: AND c.LINE_INDEX = p_line_index
805: AND a.LIST_LINE_ID = p_list_line_id
798: FROM QP_LIST_LINES a, QP_RLTD_MODIFIERS b,qp_npreq_ldets_tmp c
799: WHERE a.LIST_LINE_ID = b.FROM_RLTD_MODIFIER_ID
800: AND a.LIST_LINE_ID = c.CREATED_FROM_LIST_LINE_ID
801: AND b.RLTD_MODIFIER_GRP_TYPE = qp_preq_grp.G_BENEFIT_TYPE
802: AND c.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT
803: AND c.PRICING_PHASE_ID = p_pricing_phase_id
804: AND c.LINE_INDEX = p_line_index
805: AND a.LIST_LINE_ID = p_list_line_id
806: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
802: AND c.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT
803: AND c.PRICING_PHASE_ID = p_pricing_phase_id
804: AND c.LINE_INDEX = p_line_index
805: AND a.LIST_LINE_ID = p_list_line_id
806: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
807:
808: CURSOR get_related_lines_cur(p_related_modifier_id NUMBER) IS
809: SELECT distinct a.LIST_TYPE_CODE,b.LIST_HEADER_ID,b.LIST_LINE_ID,b.LIST_LINE_TYPE_CODE,
810: b.PRICING_GROUP_SEQUENCE, b.ARITHMETIC_OPERATOR,b.OPERAND,b.AUTOMATIC_FLAG,
830: WHERE a.LINE_INDEX = b.LINE_INDEX
831: AND a.CONTEXT = p_context
832: AND a.ATTRIBUTE = p_attribute
833: AND a.VALUE_FROM = p_value
834: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
835: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
836: AND b.LINE_TYPE_CODE <> qp_preq_grp.G_ORDER_LEVEL
837: AND NOT EXISTS ( SELECT /*+ index(c qp_preq_ldets_tmp_n1) */ 'x'
838: FROM qp_npreq_ldets_tmp c
831: AND a.CONTEXT = p_context
832: AND a.ATTRIBUTE = p_attribute
833: AND a.VALUE_FROM = p_value
834: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
835: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
836: AND b.LINE_TYPE_CODE <> qp_preq_grp.G_ORDER_LEVEL
837: AND NOT EXISTS ( SELECT /*+ index(c qp_preq_ldets_tmp_n1) */ 'x'
838: FROM qp_npreq_ldets_tmp c
839: WHERE c.LINE_INDEX = a.LINE_INDEX
832: AND a.ATTRIBUTE = p_attribute
833: AND a.VALUE_FROM = p_value
834: AND a.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
835: AND a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
836: AND b.LINE_TYPE_CODE <> qp_preq_grp.G_ORDER_LEVEL
837: AND NOT EXISTS ( SELECT /*+ index(c qp_preq_ldets_tmp_n1) */ 'x'
838: FROM qp_npreq_ldets_tmp c
839: WHERE c.LINE_INDEX = a.LINE_INDEX
840: AND c.CREATED_FROM_LIST_LINE_ID = p_list_line_id
837: AND NOT EXISTS ( SELECT /*+ index(c qp_preq_ldets_tmp_n1) */ 'x'
838: FROM qp_npreq_ldets_tmp c
839: WHERE c.LINE_INDEX = a.LINE_INDEX
840: AND c.CREATED_FROM_LIST_LINE_ID = p_list_line_id
841: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW);
842:
843: CURSOR get_request_type_code_cur IS
844: SELECT REQUEST_TYPE_CODE
845: FROM qp_npreq_lines_tmp
868:
869: x_return_status := FND_API.G_RET_STS_SUCCESS;
870: v_benefit_exists := FALSE;
871:
872: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
873:
874: OPEN get_request_type_code_cur;
875: FETCH get_request_type_code_cur INTO v_request_type_code;
876: CLOSE get_request_type_code_cur;
874: OPEN get_request_type_code_cur;
875: FETCH get_request_type_code_cur INTO v_request_type_code;
876: CLOSE get_request_type_code_cur;
877:
878: v_detail_line_index := qp_preq_grp.G_LINE_DETAIL_INDEX;
879:
880: FOR j IN get_related_modifier_id_cur
881: LOOP
882: FOR i IN get_related_lines_cur(j.TO_RLTD_MODIFIER_ID)
881: LOOP
882: FOR i IN get_related_lines_cur(j.TO_RLTD_MODIFIER_ID)
883: LOOP
884: IF l_debug = FND_API.G_TRUE THEN
885: qp_preq_grp.engine_debug('Loop Count');
886: END IF;
887: IF l_debug = FND_API.G_TRUE THEN
888: qp_preq_grp.engine_debug ('FROM RLTD MODIFIER ID : ' || j.FROM_RLTD_MODIFIER_ID);
889: qp_preq_grp.engine_debug ('TO RLTD MODIFIER ID : ' || j.TO_RLTD_MODIFIER_ID);
884: IF l_debug = FND_API.G_TRUE THEN
885: qp_preq_grp.engine_debug('Loop Count');
886: END IF;
887: IF l_debug = FND_API.G_TRUE THEN
888: qp_preq_grp.engine_debug ('FROM RLTD MODIFIER ID : ' || j.FROM_RLTD_MODIFIER_ID);
889: qp_preq_grp.engine_debug ('TO RLTD MODIFIER ID : ' || j.TO_RLTD_MODIFIER_ID);
890: END IF;
891:
892: -- Verify the qualification for the benefit line also
885: qp_preq_grp.engine_debug('Loop Count');
886: END IF;
887: IF l_debug = FND_API.G_TRUE THEN
888: qp_preq_grp.engine_debug ('FROM RLTD MODIFIER ID : ' || j.FROM_RLTD_MODIFIER_ID);
889: qp_preq_grp.engine_debug ('TO RLTD MODIFIER ID : ' || j.TO_RLTD_MODIFIER_ID);
890: END IF;
891:
892: -- Verify the qualification for the benefit line also
893: Find_Qualification_For_Benefit(p_line_index,
891:
892: -- Verify the qualification for the benefit line also
893: Find_Qualification_For_Benefit(p_line_index,
894: j.TO_RLTD_MODIFIER_ID,
895: qp_preq_grp.G_BENEFIT_TYPE,
896: qp_preq_grp.G_OTHER_ITEM_DISCOUNT,
897: x_qualifier_flag,
898: x_ret_status,
899: x_ret_status_txt);
892: -- Verify the qualification for the benefit line also
893: Find_Qualification_For_Benefit(p_line_index,
894: j.TO_RLTD_MODIFIER_ID,
895: qp_preq_grp.G_BENEFIT_TYPE,
896: qp_preq_grp.G_OTHER_ITEM_DISCOUNT,
897: x_qualifier_flag,
898: x_ret_status,
899: x_ret_status_txt);
900:
903: END IF;
904:
905: IF (x_qualifier_flag = TRUE) THEN
906: IF l_debug = FND_API.G_TRUE THEN
907: qp_preq_grp.engine_debug('The qualifier flag:' || 'TRUE');
908: END IF;
909: ELSE
910:
911: IF l_debug = FND_API.G_TRUE THEN
908: END IF;
909: ELSE
910:
911: IF l_debug = FND_API.G_TRUE THEN
912: qp_preq_grp.engine_debug('Failed in Qualification:' || j.TO_RLTD_MODIFIER_ID);
913: END IF;
914:
915: UPDATE qp_npreq_ldets_tmp --upd1
916: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
912: qp_preq_grp.engine_debug('Failed in Qualification:' || j.TO_RLTD_MODIFIER_ID);
913: END IF;
914:
915: UPDATE qp_npreq_ldets_tmp --upd1
916: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
917: WHERE PRICING_PHASE_ID = p_pricing_phase_id
918: AND LINE_INDEX = p_line_index
919: AND CREATED_FROM_LIST_LINE_ID = j.FROM_RLTD_MODIFIER_ID
920: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
916: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
917: WHERE PRICING_PHASE_ID = p_pricing_phase_id
918: AND LINE_INDEX = p_line_index
919: AND CREATED_FROM_LIST_LINE_ID = j.FROM_RLTD_MODIFIER_ID
920: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
921:
922: --This statement is not needed
923: /* UPDATE qp_npreq_line_attrs_tmp
924: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
920: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
921:
922: --This statement is not needed
923: /* UPDATE qp_npreq_line_attrs_tmp
924: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
925: WHERE LIST_LINE_ID = j.FROM_RLTD_MODIFIER_ID
926: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW; */
927:
928: END IF;
922: --This statement is not needed
923: /* UPDATE qp_npreq_line_attrs_tmp
924: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
925: WHERE LIST_LINE_ID = j.FROM_RLTD_MODIFIER_ID
926: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW; */
927:
928: END IF;
929:
930:
968: PROCESS_CODE,
969: MODIFIER_LEVEL_CODE)
970: VALUES
971: (v_detail_line_index,
972: qp_preq_grp.G_GENERATED_LINE,
973: m.line_index,
974: i.LIST_HEADER_ID,
975: i.LIST_LINE_ID,
976: i.LIST_LINE_TYPE_CODE,
976: i.LIST_LINE_TYPE_CODE,
977: i.PRICING_GROUP_SEQUENCE,
978: i.ARITHMETIC_OPERATOR,
979: i.OPERAND,
980: qp_preq_grp.G_NO,
981: j.AUTOMATIC_FLAG,
982: qp_preq_grp.G_YES,nvl(i.ACCRUAL_FLAG,'N'),
983: j.PRICING_PHASE_ID,
984: i.LIST_TYPE_CODE,
978: i.ARITHMETIC_OPERATOR,
979: i.OPERAND,
980: qp_preq_grp.G_NO,
981: j.AUTOMATIC_FLAG,
982: qp_preq_grp.G_YES,nvl(i.ACCRUAL_FLAG,'N'),
983: j.PRICING_PHASE_ID,
984: i.LIST_TYPE_CODE,
985: qp_preq_grp.G_STATUS_NEW,
986: m.LINE_QUANTITY,
981: j.AUTOMATIC_FLAG,
982: qp_preq_grp.G_YES,nvl(i.ACCRUAL_FLAG,'N'),
983: j.PRICING_PHASE_ID,
984: i.LIST_TYPE_CODE,
985: qp_preq_grp.G_STATUS_NEW,
986: m.LINE_QUANTITY,
987: qp_preq_grp.G_STATUS_NEW,
988: i.MODIFIER_LEVEL_CODE);
989:
983: j.PRICING_PHASE_ID,
984: i.LIST_TYPE_CODE,
985: qp_preq_grp.G_STATUS_NEW,
986: m.LINE_QUANTITY,
987: qp_preq_grp.G_STATUS_NEW,
988: i.MODIFIER_LEVEL_CODE);
989:
990: -- shu, begin fix bug 2491158
991: IF l_debug = FND_API.G_TRUE THEN
988: i.MODIFIER_LEVEL_CODE);
989:
990: -- shu, begin fix bug 2491158
991: IF l_debug = FND_API.G_TRUE THEN
992: qp_preq_grp.engine_debug ('debug data going to qp_npreq_rltd_lines_tmp .........');
993: qp_preq_grp.engine_debug ('OID line_index: '||p_line_index);
994: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
989:
990: -- shu, begin fix bug 2491158
991: IF l_debug = FND_API.G_TRUE THEN
992: qp_preq_grp.engine_debug ('debug data going to qp_npreq_rltd_lines_tmp .........');
993: qp_preq_grp.engine_debug ('OID line_index: '||p_line_index);
994: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
990: -- shu, begin fix bug 2491158
991: IF l_debug = FND_API.G_TRUE THEN
992: qp_preq_grp.engine_debug ('debug data going to qp_npreq_rltd_lines_tmp .........');
993: qp_preq_grp.engine_debug ('OID line_index: '||p_line_index);
994: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
998: qp_preq_grp.engine_debug ('Benifit OPERAND: '||i.OPERAND);
991: IF l_debug = FND_API.G_TRUE THEN
992: qp_preq_grp.engine_debug ('debug data going to qp_npreq_rltd_lines_tmp .........');
993: qp_preq_grp.engine_debug ('OID line_index: '||p_line_index);
994: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
998: qp_preq_grp.engine_debug ('Benifit OPERAND: '||i.OPERAND);
999: qp_preq_grp.engine_debug ('Benifit ARITHMETIC_OPERATOR: '||i.ARITHMETIC_OPERATOR);
992: qp_preq_grp.engine_debug ('debug data going to qp_npreq_rltd_lines_tmp .........');
993: qp_preq_grp.engine_debug ('OID line_index: '||p_line_index);
994: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
998: qp_preq_grp.engine_debug ('Benifit OPERAND: '||i.OPERAND);
999: qp_preq_grp.engine_debug ('Benifit ARITHMETIC_OPERATOR: '||i.ARITHMETIC_OPERATOR);
1000: qp_preq_grp.engine_debug ('Benifit LINE_QUANTITY: '||m.LINE_QUANTITY);
993: qp_preq_grp.engine_debug ('OID line_index: '||p_line_index);
994: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
998: qp_preq_grp.engine_debug ('Benifit OPERAND: '||i.OPERAND);
999: qp_preq_grp.engine_debug ('Benifit ARITHMETIC_OPERATOR: '||i.ARITHMETIC_OPERATOR);
1000: qp_preq_grp.engine_debug ('Benifit LINE_QUANTITY: '||m.LINE_QUANTITY);
1001: END IF;
994: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
998: qp_preq_grp.engine_debug ('Benifit OPERAND: '||i.OPERAND);
999: qp_preq_grp.engine_debug ('Benifit ARITHMETIC_OPERATOR: '||i.ARITHMETIC_OPERATOR);
1000: qp_preq_grp.engine_debug ('Benifit LINE_QUANTITY: '||m.LINE_QUANTITY);
1001: END IF;
1002:
995: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
998: qp_preq_grp.engine_debug ('Benifit OPERAND: '||i.OPERAND);
999: qp_preq_grp.engine_debug ('Benifit ARITHMETIC_OPERATOR: '||i.ARITHMETIC_OPERATOR);
1000: qp_preq_grp.engine_debug ('Benifit LINE_QUANTITY: '||m.LINE_QUANTITY);
1001: END IF;
1002:
1003: INSERT INTO qp_npreq_rltd_lines_tmp
996: qp_preq_grp.engine_debug ('Benifit list_line_id: '||i.list_line_id);
997: qp_preq_grp.engine_debug ('Benifit list_line_type_code: '||i.list_line_type_code);
998: qp_preq_grp.engine_debug ('Benifit OPERAND: '||i.OPERAND);
999: qp_preq_grp.engine_debug ('Benifit ARITHMETIC_OPERATOR: '||i.ARITHMETIC_OPERATOR);
1000: qp_preq_grp.engine_debug ('Benifit LINE_QUANTITY: '||m.LINE_QUANTITY);
1001: END IF;
1002:
1003: INSERT INTO qp_npreq_rltd_lines_tmp
1004: (REQUEST_TYPE_CODE,
1017: )
1018: VALUES
1019: (v_request_type_code,
1020: j.LINE_DETAIL_INDEX,
1021: qp_preq_grp.G_GENERATED_LINE,
1022: v_detail_line_index,
1023: qp_preq_grp.G_STATUS_NEW,
1024: p_line_index, -- begin shu, fix 2491158, missing data in qp_npreq_rltd_lines_tmp
1025: m.line_index,
1019: (v_request_type_code,
1020: j.LINE_DETAIL_INDEX,
1021: qp_preq_grp.G_GENERATED_LINE,
1022: v_detail_line_index,
1023: qp_preq_grp.G_STATUS_NEW,
1024: p_line_index, -- begin shu, fix 2491158, missing data in qp_npreq_rltd_lines_tmp
1025: m.line_index,
1026: p_list_line_id,
1027: i.list_line_id,
1039: --Begin Bug No: 7323590
1040: /* commented out for bug No: 7323590
1041: IF (v_benefit_exists = FALSE) THEN
1042: UPDATE qp_npreq_ldets_tmp --upd2
1043: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1044: WHERE PRICING_PHASE_ID = p_pricing_phase_id
1045: AND LINE_INDEX = p_line_index
1046: AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
1047: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1043: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1044: WHERE PRICING_PHASE_ID = p_pricing_phase_id
1045: AND LINE_INDEX = p_line_index
1046: AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
1047: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1048:
1049: -- This statement is not needed
1050: /* UPDATE qp_npreq_line_attrs_tmp
1051: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1047: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1048:
1049: -- This statement is not needed
1050: /* UPDATE qp_npreq_line_attrs_tmp
1051: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1052: WHERE LINE_INDEX = p_line_index
1053: AND LIST_LINE_ID = p_list_line_id
1054: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1055: END IF;
1050: /* UPDATE qp_npreq_line_attrs_tmp
1051: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1052: WHERE LINE_INDEX = p_line_index
1053: AND LIST_LINE_ID = p_list_line_id
1054: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1055: END IF;
1056: */ -- commenting end
1057: --End Bug No: 7323590
1058: END IF;
1057: --End Bug No: 7323590
1058: END IF;
1059: END LOOP;
1060: END LOOP;
1061: qp_preq_grp.G_LINE_DETAIL_INDEX := v_detail_line_index;
1062: EXCEPTION
1063: WHEN OTHERS THEN
1064: IF l_debug = FND_API.G_TRUE THEN
1065: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1061: qp_preq_grp.G_LINE_DETAIL_INDEX := v_detail_line_index;
1062: EXCEPTION
1063: WHEN OTHERS THEN
1064: IF l_debug = FND_API.G_TRUE THEN
1065: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1066: END IF;
1067: x_return_status := FND_API.G_RET_STS_ERROR;
1068: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1069: IF l_debug = FND_API.G_TRUE THEN
1066: END IF;
1067: x_return_status := FND_API.G_RET_STS_ERROR;
1068: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1069: IF l_debug = FND_API.G_TRUE THEN
1070: qp_preq_grp.engine_debug(SQLERRM);
1071: END IF;
1072: END Process_OID;
1073:
1074: PROCEDURE Find_Qualification_For_Benefit(p_line_index NUMBER,
1111: qp_npreq_lines_tmp d
1112: WHERE b.CONTEXT = c.PRODUCT_ATTRIBUTE_CONTEXT
1113: AND b.ATTRIBUTE = c.PRODUCT_ATTRIBUTE
1114: AND b.VALUE_FROM = c.PRODUCT_ATTR_VALUE
1115: AND b.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
1116: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1117: AND a.LINE_INDEX = b.LINE_INDEX
1118: AND a.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1119: AND instr(a.PROCESS_STATUS, QP_PREQ_PUB.G_FREEGOOD) = 0 -- bug 3006670
1112: WHERE b.CONTEXT = c.PRODUCT_ATTRIBUTE_CONTEXT
1113: AND b.ATTRIBUTE = c.PRODUCT_ATTRIBUTE
1114: AND b.VALUE_FROM = c.PRODUCT_ATTR_VALUE
1115: AND b.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
1116: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1117: AND a.LINE_INDEX = b.LINE_INDEX
1118: AND a.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1119: AND instr(a.PROCESS_STATUS, QP_PREQ_PUB.G_FREEGOOD) = 0 -- bug 3006670
1120: AND a.PRICED_UOM_CODE = nvl(c.PRODUCT_UOM_CODE, a.PRICED_UOM_CODE)
1114: AND b.VALUE_FROM = c.PRODUCT_ATTR_VALUE
1115: AND b.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
1116: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1117: AND a.LINE_INDEX = b.LINE_INDEX
1118: AND a.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1119: AND instr(a.PROCESS_STATUS, QP_PREQ_PUB.G_FREEGOOD) = 0 -- bug 3006670
1120: AND a.PRICED_UOM_CODE = nvl(c.PRODUCT_UOM_CODE, a.PRICED_UOM_CODE)
1121: AND d.LINE_INDEX = p_line_index
1122: AND d.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1118: AND a.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1119: AND instr(a.PROCESS_STATUS, QP_PREQ_PUB.G_FREEGOOD) = 0 -- bug 3006670
1120: AND a.PRICED_UOM_CODE = nvl(c.PRODUCT_UOM_CODE, a.PRICED_UOM_CODE)
1121: AND d.LINE_INDEX = p_line_index
1122: AND d.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1123: AND nvl(d.LINE_CATEGORY,'ORDER') = nvl(a.LINE_CATEGORY,'ORDER'))
1124: UNION
1125: -- 10g/R12 performance fixes for 5573393
1126: SELECT distinct a.LIST_LINE_ID -- Index N7 can be replaced with N2
1137: qp_npreq_lines_tmp e
1138: WHERE b.CONTEXT = a.PRODUCT_ATTRIBUTE_CONTEXT
1139: AND b.ATTRIBUTE = a.PRODUCT_ATTRIBUTE
1140: AND b.VALUE_FROM = a.PRODUCT_ATTR_VALUE
1141: AND b.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
1142: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1143: AND d.PRICED_UOM_CODE = nvl(a.PRODUCT_UOM_CODE, d.PRICED_UOM_CODE)
1144: AND d.LINE_INDEX = b.LINE_INDEX
1145: AND d.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1138: WHERE b.CONTEXT = a.PRODUCT_ATTRIBUTE_CONTEXT
1139: AND b.ATTRIBUTE = a.PRODUCT_ATTRIBUTE
1140: AND b.VALUE_FROM = a.PRODUCT_ATTR_VALUE
1141: AND b.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
1142: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1143: AND d.PRICED_UOM_CODE = nvl(a.PRODUCT_UOM_CODE, d.PRICED_UOM_CODE)
1144: AND d.LINE_INDEX = b.LINE_INDEX
1145: AND d.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1146: AND b.LINE_INDEX = c.LINE_INDEX
1141: AND b.ATTRIBUTE_TYPE = qp_preq_grp.G_PRODUCT_TYPE
1142: AND b.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1143: AND d.PRICED_UOM_CODE = nvl(a.PRODUCT_UOM_CODE, d.PRICED_UOM_CODE)
1144: AND d.LINE_INDEX = b.LINE_INDEX
1145: AND d.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1146: AND b.LINE_INDEX = c.LINE_INDEX
1147: AND instr(d.PROCESS_STATUS, QP_PREQ_PUB.G_FREEGOOD) = 0 -- bug 3006670
1148: AND c.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
1149: AND c.CONTEXT = a.PRICING_ATTRIBUTE_CONTEXT
1144: AND d.LINE_INDEX = b.LINE_INDEX
1145: AND d.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1146: AND b.LINE_INDEX = c.LINE_INDEX
1147: AND instr(d.PROCESS_STATUS, QP_PREQ_PUB.G_FREEGOOD) = 0 -- bug 3006670
1148: AND c.CONTEXT = qp_preq_grp.G_PRIC_VOLUME_CONTEXT
1149: AND c.CONTEXT = a.PRICING_ATTRIBUTE_CONTEXT
1150: AND c.ATTRIBUTE = a.PRICING_ATTRIBUTE
1151: AND qp_number.canonical_to_number(c.VALUE_FROM) BETWEEN
1152: nvl(a.PRICING_ATTR_VALUE_FROM,qp_number.canonical_to_number(c.VALUE_FROM)) AND
1150: AND c.ATTRIBUTE = a.PRICING_ATTRIBUTE
1151: AND qp_number.canonical_to_number(c.VALUE_FROM) BETWEEN
1152: nvl(a.PRICING_ATTR_VALUE_FROM,qp_number.canonical_to_number(c.VALUE_FROM)) AND
1153: nvl(a.PRICING_ATTR_VALUE_TO,qp_number.canonical_to_number(c.VALUE_FROM))
1154: AND c.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
1155: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1156: AND e.LINE_INDEX = p_line_index
1157: AND e.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1158: AND nvl(e.LINE_CATEGORY,'ORDER') = nvl(d.LINE_CATEGORY,'ORDER'));
1151: AND qp_number.canonical_to_number(c.VALUE_FROM) BETWEEN
1152: nvl(a.PRICING_ATTR_VALUE_FROM,qp_number.canonical_to_number(c.VALUE_FROM)) AND
1153: nvl(a.PRICING_ATTR_VALUE_TO,qp_number.canonical_to_number(c.VALUE_FROM))
1154: AND c.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
1155: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1156: AND e.LINE_INDEX = p_line_index
1157: AND e.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1158: AND nvl(e.LINE_CATEGORY,'ORDER') = nvl(d.LINE_CATEGORY,'ORDER'));
1159:
1153: nvl(a.PRICING_ATTR_VALUE_TO,qp_number.canonical_to_number(c.VALUE_FROM))
1154: AND c.ATTRIBUTE_TYPE = qp_preq_grp.G_PRICING_TYPE
1155: AND c.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_UNCHANGED
1156: AND e.LINE_INDEX = p_line_index
1157: AND e.LINE_TYPE_CODE = QP_PREQ_GRP.G_LINE_LEVEL
1158: AND nvl(e.LINE_CATEGORY,'ORDER') = nvl(d.LINE_CATEGORY,'ORDER'));
1159:
1160: v_count NUMBER := 0;
1161: v_qualified_flag BOOLEAN := FALSE;
1166: v_routine_name CONSTANT VARCHAR2(240):='Routine:QP_Process_Other_Benefits.Find_Qualification_For_Benefit';
1167: BEGIN
1168:
1169: x_return_status := FND_API.G_RET_STS_SUCCESS;
1170: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1171:
1172: IF (p_rltd_modifier_type = qp_preq_grp.G_QUALIFIER_TYPE) THEN -- Do group checking
1173:
1174: IF l_debug = FND_API.G_TRUE THEN
1168:
1169: x_return_status := FND_API.G_RET_STS_SUCCESS;
1170: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1171:
1172: IF (p_rltd_modifier_type = qp_preq_grp.G_QUALIFIER_TYPE) THEN -- Do group checking
1173:
1174: IF l_debug = FND_API.G_TRUE THEN
1175: qp_preq_grp.engine_debug('QUALIFIER QUALIFICATION');
1176: END IF;
1171:
1172: IF (p_rltd_modifier_type = qp_preq_grp.G_QUALIFIER_TYPE) THEN -- Do group checking
1173:
1174: IF l_debug = FND_API.G_TRUE THEN
1175: qp_preq_grp.engine_debug('QUALIFIER QUALIFICATION');
1176: END IF;
1177:
1178: FOR i IN no_rltd_modifiers_in_grp_cur
1179: LOOP
1177:
1178: FOR i IN no_rltd_modifiers_in_grp_cur
1179: LOOP
1180: IF l_debug = FND_API.G_TRUE THEN
1181: qp_preq_grp.engine_debug('Group no: ' || i.RLTD_MODIFIER_GRP_NO);
1182: END IF;
1183:
1184: v_count := 0; --satisfied group cnt re-init on group change -- #2725979
1185:
1185:
1186: FOR j IN rltd_modifiers_cur(i.RLTD_MODIFIER_GRP_NO)
1187: LOOP
1188: IF l_debug = FND_API.G_TRUE THEN
1189: qp_preq_grp.engine_debug('To Modifier Id: ' || j.TO_RLTD_MODIFIER_ID);
1190: END IF;
1191:
1192: FOR k IN check_rltd_mods_passed_cur(j.TO_RLTD_MODIFIER_ID)
1193: LOOP
1191:
1192: FOR k IN check_rltd_mods_passed_cur(j.TO_RLTD_MODIFIER_ID)
1193: LOOP
1194: IF l_debug = FND_API.G_TRUE THEN
1195: qp_preq_grp.engine_debug('Qualification Succeeded for Rltd Modifier:' || j.TO_RLTD_MODIFIER_ID ||
1196: k.list_line_id);
1197: END IF;
1198:
1199: IF(j.TO_RLTD_MODIFIER_ID = k.LIST_LINE_ID) THEN
1205:
1206: v_no_of_mods_in_grp := i.NO_OF_MODIFIERS_IN_GRP; -- Store the no of modifiers count
1207:
1208: IF l_debug = FND_API.G_TRUE THEN
1209: qp_preq_grp.engine_debug('No of modifiers in grp :' || v_no_of_mods_in_grp);
1210: qp_preq_grp.engine_debug('Count :' || v_count);
1211: END IF;
1212:
1213: IF(v_no_of_mods_in_grp = v_count) THEN
1206: v_no_of_mods_in_grp := i.NO_OF_MODIFIERS_IN_GRP; -- Store the no of modifiers count
1207:
1208: IF l_debug = FND_API.G_TRUE THEN
1209: qp_preq_grp.engine_debug('No of modifiers in grp :' || v_no_of_mods_in_grp);
1210: qp_preq_grp.engine_debug('Count :' || v_count);
1211: END IF;
1212:
1213: IF(v_no_of_mods_in_grp = v_count) THEN
1214: v_qualified_flag := TRUE;
1225: -- only BENEFIT line
1226:
1227: IF (v_no_of_mods_in_grp = 0 and v_count = 0 ) THEN
1228: IF l_debug = FND_API.G_TRUE THEN
1229: qp_preq_grp.engine_debug(v_no_of_mods_in_grp);
1230: qp_preq_grp.engine_debug(v_count);
1231: END IF;
1232: x_qualified_flag := TRUE;
1233: END IF;
1226:
1227: IF (v_no_of_mods_in_grp = 0 and v_count = 0 ) THEN
1228: IF l_debug = FND_API.G_TRUE THEN
1229: qp_preq_grp.engine_debug(v_no_of_mods_in_grp);
1230: qp_preq_grp.engine_debug(v_count);
1231: END IF;
1232: x_qualified_flag := TRUE;
1233: END IF;
1234: ELSE -- Benefit -- If there on the order give it
1233: END IF;
1234: ELSE -- Benefit -- If there on the order give it
1235:
1236: IF l_debug = FND_API.G_TRUE THEN
1237: qp_preq_grp.engine_debug('BENEFIT QUALIFICATION');
1238: END IF;
1239:
1240: FOR k IN check_rltd_mods_passed_cur(p_list_line_id)
1241: LOOP
1239:
1240: FOR k IN check_rltd_mods_passed_cur(p_list_line_id)
1241: LOOP
1242: IF l_debug = FND_API.G_TRUE THEN
1243: qp_preq_grp.engine_debug('Passed List line id:' || p_list_line_id);
1244: qp_preq_grp.engine_debug('Matching List Line Id:' || k.list_line_id);
1245: END IF;
1246:
1247: IF(k.LIST_LINE_ID = p_list_line_id) THEN
1240: FOR k IN check_rltd_mods_passed_cur(p_list_line_id)
1241: LOOP
1242: IF l_debug = FND_API.G_TRUE THEN
1243: qp_preq_grp.engine_debug('Passed List line id:' || p_list_line_id);
1244: qp_preq_grp.engine_debug('Matching List Line Id:' || k.list_line_id);
1245: END IF;
1246:
1247: IF(k.LIST_LINE_ID = p_list_line_id) THEN
1248: v_count := v_count + 1;
1259: x_qualified_flag := v_qualified_flag;
1260: END IF;
1261:
1262: IF l_debug = FND_API.G_TRUE THEN
1263: qp_preq_grp.engine_debug('Benefit Record Count:' || v_count);
1264: END IF;
1265:
1266: IF (v_update_flag = TRUE) THEN
1267: UPDATE qp_npreq_ldets_tmp --upd1
1264: END IF;
1265:
1266: IF (v_update_flag = TRUE) THEN
1267: UPDATE qp_npreq_ldets_tmp --upd1
1268: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1269: WHERE CREATED_FROM_LIST_LINE_ID = p_list_line_id;
1270:
1271: -- This statement is not needed
1272: /* UPDATE qp_npreq_line_attrs_tmp a
1269: WHERE CREATED_FROM_LIST_LINE_ID = p_list_line_id;
1270:
1271: -- This statement is not needed
1272: /* UPDATE qp_npreq_line_attrs_tmp a
1273: SET a.PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1274: WHERE a.LINE_DETAIL_INDEX IN (SELECT b.LINE_DETAIL_INDEX
1275: FROM qp_npreq_ldets_tmp b
1276: WHERE b.CREATED_FROM_LIST_LINE_ID = p_list_line_id); */
1277:
1275: FROM qp_npreq_ldets_tmp b
1276: WHERE b.CREATED_FROM_LIST_LINE_ID = p_list_line_id); */
1277:
1278: IF l_debug = FND_API.G_TRUE THEN
1279: qp_preq_grp.engine_debug ('BENEFIT STATUS UPDATED');
1280: END IF;
1281: END IF;
1282: --v_count := 0; -- Reinitialize for each grp(done on change of group earlier)
1283: EXCEPTION
1282: --v_count := 0; -- Reinitialize for each grp(done on change of group earlier)
1283: EXCEPTION
1284: WHEN OTHERS THEN
1285: IF l_debug = FND_API.G_TRUE THEN
1286: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1287: END IF;
1288: x_return_status := FND_API.G_RET_STS_ERROR;
1289: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1290: IF l_debug = FND_API.G_TRUE THEN
1287: END IF;
1288: x_return_status := FND_API.G_RET_STS_ERROR;
1289: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1290: IF l_debug = FND_API.G_TRUE THEN
1291: qp_preq_grp.engine_debug ('Error in Proc');
1292: END IF;
1293: END Find_Qualification_For_Benefit;
1294:
1295: PROCEDURE Process_Other_Benefits(p_line_index NUMBER,
1304: CURSOR get_list_lines_cur IS
1305: SELECT /*+ index (ldets qp_preq_ldets_tmp_N2) */
1306: CREATED_FROM_LIST_LINE_ID,CREATED_FROM_LIST_LINE_TYPE,LINE_DETAIL_INDEX , MODIFIER_LEVEL_CODE
1307: FROM qp_npreq_ldets_tmp ldets
1308: WHERE CREATED_FROM_LIST_LINE_TYPE IN (qp_preq_grp.G_OTHER_ITEM_DISCOUNT, qp_preq_grp.G_PROMO_GOODS_DISCOUNT,
1309: qp_preq_grp.G_COUPON_ISSUE)
1310: AND PRICING_PHASE_ID = p_pricing_phase_id
1311: AND LINE_INDEX = p_line_index
1312: AND ASK_FOR_FLAG IN (qp_preq_grp.G_YES,qp_preq_grp.G_NO)
1305: SELECT /*+ index (ldets qp_preq_ldets_tmp_N2) */
1306: CREATED_FROM_LIST_LINE_ID,CREATED_FROM_LIST_LINE_TYPE,LINE_DETAIL_INDEX , MODIFIER_LEVEL_CODE
1307: FROM qp_npreq_ldets_tmp ldets
1308: WHERE CREATED_FROM_LIST_LINE_TYPE IN (qp_preq_grp.G_OTHER_ITEM_DISCOUNT, qp_preq_grp.G_PROMO_GOODS_DISCOUNT,
1309: qp_preq_grp.G_COUPON_ISSUE)
1310: AND PRICING_PHASE_ID = p_pricing_phase_id
1311: AND LINE_INDEX = p_line_index
1312: AND ASK_FOR_FLAG IN (qp_preq_grp.G_YES,qp_preq_grp.G_NO)
1313: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1308: WHERE CREATED_FROM_LIST_LINE_TYPE IN (qp_preq_grp.G_OTHER_ITEM_DISCOUNT, qp_preq_grp.G_PROMO_GOODS_DISCOUNT,
1309: qp_preq_grp.G_COUPON_ISSUE)
1310: AND PRICING_PHASE_ID = p_pricing_phase_id
1311: AND LINE_INDEX = p_line_index
1312: AND ASK_FOR_FLAG IN (qp_preq_grp.G_YES,qp_preq_grp.G_NO)
1313: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1314:
1315: x_qualifier_flag BOOLEAN;
1316:
1309: qp_preq_grp.G_COUPON_ISSUE)
1310: AND PRICING_PHASE_ID = p_pricing_phase_id
1311: AND LINE_INDEX = p_line_index
1312: AND ASK_FOR_FLAG IN (qp_preq_grp.G_YES,qp_preq_grp.G_NO)
1313: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1314:
1315: x_qualifier_flag BOOLEAN;
1316:
1317: v_routine_name CONSTANT VARCHAR2(240) := 'Routine:QP_Process_Other_Benefits.Process_Other_Benefits';
1320:
1321: BEGIN
1322:
1323: x_return_status := FND_API.G_RET_STS_SUCCESS;
1324: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1325:
1326: FOR i IN get_list_lines_cur
1327: LOOP
1328:
1326: FOR i IN get_list_lines_cur
1327: LOOP
1328:
1329: IF l_debug = FND_API.G_TRUE THEN
1330: qp_preq_grp.engine_debug('Qualifying List Line Id: ' || i.CREATED_FROM_LIST_LINE_ID);
1331: qp_preq_grp.engine_debug('List Line Type: ' || i.CREATED_FROM_LIST_LINE_TYPE);
1332: END IF;
1333:
1334: Find_Qualification_For_Benefit(p_line_index,
1327: LOOP
1328:
1329: IF l_debug = FND_API.G_TRUE THEN
1330: qp_preq_grp.engine_debug('Qualifying List Line Id: ' || i.CREATED_FROM_LIST_LINE_ID);
1331: qp_preq_grp.engine_debug('List Line Type: ' || i.CREATED_FROM_LIST_LINE_TYPE);
1332: END IF;
1333:
1334: Find_Qualification_For_Benefit(p_line_index,
1335: i.CREATED_FROM_LIST_LINE_ID,
1332: END IF;
1333:
1334: Find_Qualification_For_Benefit(p_line_index,
1335: i.CREATED_FROM_LIST_LINE_ID,
1336: qp_preq_grp.G_QUALIFIER_TYPE,
1337: i.CREATED_FROM_LIST_LINE_TYPE,
1338: x_qualifier_flag,
1339: x_ret_status,
1340: x_ret_status_txt);
1344: END IF;
1345:
1346: IF (x_qualifier_flag = TRUE) THEN
1347: IF l_debug = FND_API.G_TRUE THEN
1348: qp_preq_grp.engine_debug('QUALIFICATION SUCCEDED');
1349: qp_preq_grp.engine_debug('List Line Type : ' || i.created_from_list_line_type);
1350: END IF;
1351: IF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT) THEN
1352: Process_OID(p_line_index,i.CREATED_FROM_LIST_LINE_ID,p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1345:
1346: IF (x_qualifier_flag = TRUE) THEN
1347: IF l_debug = FND_API.G_TRUE THEN
1348: qp_preq_grp.engine_debug('QUALIFICATION SUCCEDED');
1349: qp_preq_grp.engine_debug('List Line Type : ' || i.created_from_list_line_type);
1350: END IF;
1351: IF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT) THEN
1352: Process_OID(p_line_index,i.CREATED_FROM_LIST_LINE_ID,p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1353: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1347: IF l_debug = FND_API.G_TRUE THEN
1348: qp_preq_grp.engine_debug('QUALIFICATION SUCCEDED');
1349: qp_preq_grp.engine_debug('List Line Type : ' || i.created_from_list_line_type);
1350: END IF;
1351: IF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT) THEN
1352: Process_OID(p_line_index,i.CREATED_FROM_LIST_LINE_ID,p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1353: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1354: RAISE FND_API.G_EXC_ERROR;
1355: END IF;
1352: Process_OID(p_line_index,i.CREATED_FROM_LIST_LINE_ID,p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1353: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1354: RAISE FND_API.G_EXC_ERROR;
1355: END IF;
1356: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
1357: Process_PRG(p_line_index,i.line_detail_index,i.modifier_level_code,i.CREATED_FROM_LIST_LINE_ID,
1358: p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1359: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1360: RAISE FND_API.G_EXC_ERROR;
1358: p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1359: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1360: RAISE FND_API.G_EXC_ERROR;
1361: END IF;
1362: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_COUPON_ISSUE)
1363: AND (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_NO
1364: or (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_YES --bug 3859759
1365: and qp_preq_grp.G_TEMP_TABLE_INSERT_FLAG = qp_preq_grp.G_YES)) THEN
1366: QP_COUPON_PVT.PROCESS_COUPON_ISSUE(i.line_detail_index,
1359: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1360: RAISE FND_API.G_EXC_ERROR;
1361: END IF;
1362: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_COUPON_ISSUE)
1363: AND (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_NO
1364: or (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_YES --bug 3859759
1365: and qp_preq_grp.G_TEMP_TABLE_INSERT_FLAG = qp_preq_grp.G_YES)) THEN
1366: QP_COUPON_PVT.PROCESS_COUPON_ISSUE(i.line_detail_index,
1367: p_pricing_phase_id,
1360: RAISE FND_API.G_EXC_ERROR;
1361: END IF;
1362: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_COUPON_ISSUE)
1363: AND (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_NO
1364: or (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_YES --bug 3859759
1365: and qp_preq_grp.G_TEMP_TABLE_INSERT_FLAG = qp_preq_grp.G_YES)) THEN
1366: QP_COUPON_PVT.PROCESS_COUPON_ISSUE(i.line_detail_index,
1367: p_pricing_phase_id,
1368: p_line_quantity,
1361: END IF;
1362: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_COUPON_ISSUE)
1363: AND (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_NO
1364: or (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_YES --bug 3859759
1365: and qp_preq_grp.G_TEMP_TABLE_INSERT_FLAG = qp_preq_grp.G_YES)) THEN
1366: QP_COUPON_PVT.PROCESS_COUPON_ISSUE(i.line_detail_index,
1367: p_pricing_phase_id,
1368: p_line_quantity,
1369: p_simulation_flag,
1374: RAISE FND_API.G_EXC_ERROR;
1375: END IF;
1376:
1377: /* redeem coupon should not be called here. Because coupon benefits could be of
1378: any type, moved to qp_preq_grp package
1379: QP_COUPON_PVT.REDEEM_COUPONS(p_simulation_flag, x_ret_status, x_ret_status_txt);
1380:
1381: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1382: RAISE FND_API.G_EXC_ERROR;
1385:
1386: END IF;
1387: ELSE
1388: UPDATE qp_npreq_ldets_tmp --upd1
1389: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1390: WHERE PRICING_PHASE_ID = p_pricing_phase_id
1391: AND LINE_INDEX = p_line_index
1392: AND CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
1393: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1389: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1390: WHERE PRICING_PHASE_ID = p_pricing_phase_id
1391: AND LINE_INDEX = p_line_index
1392: AND CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
1393: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1394:
1395: -- This statement is not needed
1396: /* UPDATE qp_npreq_line_attrs_tmp
1397: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1393: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW;
1394:
1395: -- This statement is not needed
1396: /* UPDATE qp_npreq_line_attrs_tmp
1397: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1398: WHERE LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
1399: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW; */
1400: END IF;
1401: END LOOP;
1395: -- This statement is not needed
1396: /* UPDATE qp_npreq_line_attrs_tmp
1397: SET PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_OTHER_ITEM_BENEFITS
1398: WHERE LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
1399: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW; */
1400: END IF;
1401: END LOOP;
1402: EXCEPTION
1403: WHEN FND_API.G_EXC_ERROR THEN
1401: END LOOP;
1402: EXCEPTION
1403: WHEN FND_API.G_EXC_ERROR THEN
1404: IF l_debug = FND_API.G_TRUE THEN
1405: qp_preq_grp.engine_debug(v_routine_name || ' ' || x_ret_status_txt);
1406: END IF;
1407: x_return_status := FND_API.G_RET_STS_ERROR;
1408: x_return_status_txt := x_ret_status_txt;
1409: WHEN OTHERS THEN
1407: x_return_status := FND_API.G_RET_STS_ERROR;
1408: x_return_status_txt := x_ret_status_txt;
1409: WHEN OTHERS THEN
1410: IF l_debug = FND_API.G_TRUE THEN
1411: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1412: END IF;
1413: x_return_status := FND_API.G_RET_STS_ERROR;
1414: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1415: END Process_Other_Benefits;