81: INVALID_CONTEXT EXCEPTION;
82:
83: BEGIN
84: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
85: x_return_status := FND_API.G_RET_STS_SUCCESS;
86: IF l_debug = FND_API.G_TRUE THEN
87: qp_preq_grp.engine_debug ('List Line Id: ' || p_list_line_id);
88: END IF;
89:
82:
83: BEGIN
84: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
85: x_return_status := FND_API.G_RET_STS_SUCCESS;
86: IF l_debug = FND_API.G_TRUE THEN
87: qp_preq_grp.engine_debug ('List Line Id: ' || p_list_line_id);
88: END IF;
89:
90: OPEN get_modifier_level_code_cur;
102: OPEN get_total_qty_cur;
103: FETCH get_total_qty_cur INTO v_total_base_qty,v_group_qty,v_group_amount ;
104: CLOSE get_total_qty_cur;
105: ELSE
106: IF l_debug = FND_API.G_TRUE THEN
107: qp_preq_grp.engine_debug('context : ' || v_pricing_attr_context);
108: END IF;
109: RAISE INVALID_CONTEXT;
110: END IF;
108: END IF;
109: RAISE INVALID_CONTEXT;
110: END IF;
111:
112: IF l_debug = FND_API.G_TRUE THEN
113: qp_preq_grp.engine_debug('v_total_base_qty: ' || v_total_base_qty);
114: qp_preq_grp.engine_debug('v_group_qty: ' ||v_group_qty);
115: END IF;
116:
116:
117: OPEN get_base_qty_cur(v_pricing_attribute);
118: FETCH get_base_qty_cur INTO v_base_qty ,v_list_line_type_code,v_operand,v_benefit_qty;
119: CLOSE get_base_qty_cur;
120: IF l_debug = FND_API.G_TRUE THEN
121: qp_preq_grp.engine_debug('Total Setup Qty: ' || v_base_qty);
122: qp_preq_grp.engine_debug('Operand: ' || v_operand);
123: qp_preq_grp.engine_debug('List Line Type Code: ' || v_list_line_type_code);
124: END IF;
148: --v_qualifying_qty := v_group_amount; -- shu 2388011, this is wrong, should be from ldets_tmp.line_quantity
149: v_qualifying_qty := v_total_base_qty; -- shu 2388011, --from ldets_tmp.line_quantity
150: END IF;
151: END IF;
152: IF l_debug = FND_API.G_TRUE THEN
153: qp_preq_grp.engine_debug('Modifier Level Code: '|| v_modifier_level_code);
154: qp_preq_grp.engine_debug('Qualifying Attribute : ' || v_qualifying_attribute);
155: qp_preq_grp.engine_debug('v_qualifying_qty: ' || v_qualifying_qty);
156: qp_preq_grp.engine_debug('v_base_qty: ' || v_base_qty);
164: v_total_benefit_qty := (v_qualifying_qty / v_base_qty) * l_benefit_qty;
165: END IF;
166: v_total_benefit_qty := TRUNC(v_total_benefit_qty,3);
167: --10394643
168: IF l_debug = FND_API.G_TRUE THEN
169: qp_preq_grp.engine_debug('Total Benefit Qty: ' || v_total_benefit_qty);
170: END IF;
171: x_benefit_line_qty := v_total_benefit_qty;
172:
171: x_benefit_line_qty := v_total_benefit_qty;
172:
173: EXCEPTION
174: WHEN INVALID_CONTEXT THEN
175: IF l_debug = FND_API.G_TRUE THEN
176: qp_preq_grp.engine_debug(v_routine_name || ' Invalid Context Specified.. Could Not Calculate Recurring Qty');
177: END IF;
178: x_return_status_txt := v_routine_name ||' Invalid Context Specified ..Could Not Calculate Recurring Qty';
179: v_return_status := FND_API.G_RET_STS_ERROR;
175: IF l_debug = FND_API.G_TRUE THEN
176: qp_preq_grp.engine_debug(v_routine_name || ' Invalid Context Specified.. Could Not Calculate Recurring Qty');
177: END IF;
178: x_return_status_txt := v_routine_name ||' Invalid Context Specified ..Could Not Calculate Recurring Qty';
179: v_return_status := FND_API.G_RET_STS_ERROR;
180: x_return_status := v_return_status;
181: IF l_debug = FND_API.G_TRUE THEN
182: qp_preq_grp.engine_debug(x_return_status_txt);
183: END IF;
177: END IF;
178: x_return_status_txt := v_routine_name ||' Invalid Context Specified ..Could Not Calculate Recurring Qty';
179: v_return_status := FND_API.G_RET_STS_ERROR;
180: x_return_status := v_return_status;
181: IF l_debug = FND_API.G_TRUE THEN
182: qp_preq_grp.engine_debug(x_return_status_txt);
183: END IF;
184: WHEN OTHERS THEN
185: IF l_debug = FND_API.G_TRUE THEN
181: IF l_debug = FND_API.G_TRUE THEN
182: qp_preq_grp.engine_debug(x_return_status_txt);
183: END IF;
184: WHEN OTHERS THEN
185: IF l_debug = FND_API.G_TRUE THEN
186: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
187: END IF;
188: x_return_status := FND_API.G_RET_STS_ERROR;
189: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
184: WHEN OTHERS THEN
185: IF l_debug = FND_API.G_TRUE THEN
186: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
187: END IF;
188: x_return_status := FND_API.G_RET_STS_ERROR;
189: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
190: END Calculate_Recurring_Quantity;
191:
192: PROCEDURE Calculate_Recurring_Quantity(p_pricing_phase_id NUMBER,
216:
217: BEGIN
218: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
219:
220: IF l_debug = FND_API.G_TRUE THEN
221: QP_PREQ_GRP.engine_debug('Calculate_Recurring_Quantity-PHASE='||p_pricing_phase_id);
222: END IF;
223:
224: OPEN get_recurring_details_cur;
231: EXIT WHEN l_line_detail_index_tbl.COUNT = 0;
232:
233: FOR I in l_line_detail_index_tbl.first .. l_line_detail_index_tbl.last
234: LOOP
235: IF l_debug = FND_API.G_TRUE THEN
236: QP_PREQ_GRP.engine_debug('In Recurring Routine --- #1');
237: QP_PREQ_GRP.engine_debug('List Header Id: ' || l_LIST_HEADER_ID_TBL(I) );
238: QP_PREQ_GRP.engine_debug('List Line Id: ' || l_LIST_LINE_ID_TBL(I) );
239: QP_PREQ_GRP.engine_debug('List Line Index: ' || l_LINE_INDEX_TBL(I) );
248: l_benefit_line_qty_tbl(I),
249: l_return_status,
250: l_status_text);
251:
252: IF l_debug = FND_API.G_TRUE THEN
253: QP_PREQ_GRP.engine_debug('Return Status Text : ' || l_status_text);
254: END IF;
255:
256: IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
252: IF l_debug = FND_API.G_TRUE THEN
253: QP_PREQ_GRP.engine_debug('Return Status Text : ' || l_status_text);
254: END IF;
255:
256: IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
257: RAISE FND_API.G_EXC_ERROR;
258: END IF;
259: END LOOP;
260:
253: QP_PREQ_GRP.engine_debug('Return Status Text : ' || l_status_text);
254: END IF;
255:
256: IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
257: RAISE FND_API.G_EXC_ERROR;
258: END IF;
259: END LOOP;
260:
261: FORALL I IN l_line_detail_index_tbl.first..l_line_detail_index_tbl.last
262: UPDATE qp_npreq_ldets_tmp --upd1
263: SET operand_value = l_benefit_line_qty_tbl(I)
264: WHERE LINE_DETAIL_INDEX = l_line_detail_index_tbl(I);
265:
266: IF l_debug = FND_API.G_TRUE THEN
267: QP_PREQ_GRP.engine_debug('Updated count: ' || l_line_detail_index_tbl.count);
268: END IF;
269: END LOOP;
270:
267: QP_PREQ_GRP.engine_debug('Updated count: ' || l_line_detail_index_tbl.count);
268: END IF;
269: END LOOP;
270:
271: IF l_debug = FND_API.G_TRUE THEN
272: QP_PREQ_GRP.engine_debug('End Calculate_Recurring_Quantity-PHASE='||p_pricing_phase_id);
273: END IF;
274:
275: EXCEPTION
273: END IF;
274:
275: EXCEPTION
276: WHEN OTHERS THEN
277: IF l_debug = FND_API.G_TRUE THEN
278: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
279: END IF;
280: x_return_status := FND_API.G_RET_STS_ERROR;
281: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
276: WHEN OTHERS THEN
277: IF l_debug = FND_API.G_TRUE THEN
278: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
279: END IF;
280: x_return_status := FND_API.G_RET_STS_ERROR;
281: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
282: END Calculate_Recurring_Quantity;
283:
284: PROCEDURE Process_PRG(p_line_index NUMBER,
395: l_arithmetic_operator VARCHAR2(20); -- service project
396: v_routine_name CONSTANT VARCHAR2(240) := 'Routine:QP_Process_Other_Benefits.Process_PRG';
397: BEGIN
398:
399: x_return_status := FND_API.G_RET_STS_SUCCESS;
400: v_benefit_exists := FALSE;
401:
402: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
403:
408: -- from qp_npreq_rltd_lines_tmp and create a relationship between the line_detail_index and the rltd_line_detail_index
409: -- If record does not exist go thru the regular prg processing
410:
411:
412: IF l_debug = FND_API.G_TRUE THEN
413: qp_preq_grp.engine_debug('Modifier Level Code: ' || p_modifier_level_code);
414: END IF;
415:
416: IF (p_modifier_level_code = 'LINEGROUP') THEN
422: --qualifying for the linegroup modifier
423:
424: FOR j IN get_rltd_line_detail_index
425: LOOP
426: IF l_debug = FND_API.G_TRUE THEN
427: qp_preq_grp.engine_debug('Linegroup Related Line Detail Index: ' || j.related_line_detail_index);
428: END IF;
429: l_rltd_line_detail_index := j.related_line_detail_index;
430:
448: ,p_line_index
449: ,j.related_line_index
450: ,j.related_list_line_id); -- bug 2979447
451:
452: IF l_debug = FND_API.G_TRUE THEN
453: qp_preq_grp.engine_debug('Only relationship is getting created'
454: ||' for LineGroup discounts');
455: qp_preq_grp.engine_debug('New Related Line Detail-Line Detail Created');
456: END IF;
459: -- ELSE
460:
461: IF l_rltd_line_detail_index IS NULL THEN
462:
463: IF l_debug = FND_API.G_TRUE THEN
464: qp_preq_grp.engine_debug('Regular PRG processing');
465: END IF;
466:
467: OPEN get_max_line_index_cur;
487: ELSE--j.PRICE_BREAK_TYPE_CODE
488: x_total_benefit_qty := i.BENEFIT_QTY;
489: END IF;--j.PRICE_BREAK_TYPE_CODE
490:
491: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
492: RAISE FND_API.G_EXC_ERROR;
493: END IF;
494:
495: IF l_debug = FND_API.G_TRUE THEN
488: x_total_benefit_qty := i.BENEFIT_QTY;
489: END IF;--j.PRICE_BREAK_TYPE_CODE
490:
491: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
492: RAISE FND_API.G_EXC_ERROR;
493: END IF;
494:
495: IF l_debug = FND_API.G_TRUE THEN
496: qp_preq_grp.engine_debug('Total Benefit Qty:' || x_total_benefit_qty);
491: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
492: RAISE FND_API.G_EXC_ERROR;
493: END IF;
494:
495: IF l_debug = FND_API.G_TRUE THEN
496: qp_preq_grp.engine_debug('Total Benefit Qty:' || x_total_benefit_qty);
497: END IF;
498:
499: -- Find the Price of the DIS for PRG Line Vivek
498:
499: -- Find the Price of the DIS for PRG Line Vivek
500: -- Only LIST_PRICE column on BENEFIT_PRICE_LIST_LINE_ID
501:
502: IF l_debug = FND_API.G_TRUE THEN
503: qp_preq_grp.engine_debug('Benefit Price List Line Id:' || i.BENEFIT_PRICE_LIST_LINE_ID);
504: END IF;
505:
506: OPEN get_list_price_cur(i.BENEFIT_PRICE_LIST_LINE_ID);
507: FETCH get_list_price_cur
508: INTO v_list_header_id,v_list_line_id,v_list_price,v_rounding_factor,l_arithmetic_operator;
509: CLOSE get_list_price_cur;
510:
511: IF l_debug = FND_API.G_TRUE THEN
512: qp_preq_grp.engine_debug('PRG Line Rounding Factor :' || v_rounding_factor);
513: END IF;
514:
515: OPEN get_request_type_code_cur;
515: OPEN get_request_type_code_cur;
516: FETCH get_request_type_code_cur INTO v_request_type_code;
517: CLOSE get_request_type_code_cur;
518:
519: IF l_debug = FND_API.G_TRUE THEN
520: qp_preq_grp.engine_debug('List Price of DIS Line:' || v_list_price);
521: END IF;
522:
523: OPEN get_benefit_line_index_cur(i.LIST_LINE_ID,v_line_index);
533: p_source_uom => i.SERVICE_PERIOD,
534: p_source_duration => i.SERVICE_DURATION,
535: p_target_uom => i.BENEFIT_UOM_CODE,/*Default Month*/
536: p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT), 2), -999999);
537: IF l_debug = FND_API.G_TRUE THEN
538: qp_preq_grp.engine_debug('Service Quantity - ' || l_ser_qty);
539: END IF;
540: IF(l_arithmetic_operator='PERCENT_PRICE') THEN
541: OPEN get_parent_list_price_cur;
603: , LINE_CATEGORY
604: FROM qp_npreq_lines_tmp
605: WHERE LINE_INDEX = p_line_index;
606:
607: IF l_debug = FND_API.G_TRUE THEN
608: qp_preq_grp.engine_debug('New Line Created');
609: END IF;
610:
611: -- Ravi remove line to line relationship ie comment out the insert below
612: /* INSERT INTO qp_npreq_rltd_lines_tmp(REQUEST_TYPE_CODE, LINE_INDEX,RELATIONSHIP_TYPE_CODE,
613: RELATED_LINE_INDEX, PRICING_STATUS_CODE) VALUES
614: (v_request_type_code,p_line_index,qp_preq_grp.G_GENERATED_LINE,v_line_index,
615: qp_preq_grp.G_STATUS_NEW);
616: IF l_debug = FND_API.G_TRUE THEN
617: qp_preq_grp.engine_debug('New Line-Line Created');
618: END IF; */
619:
620: v_detail_line_index := v_detail_line_index + 1; -- Temporary
652: ,x_total_benefit_qty
653: ,v_rounding_factor
654: ,qp_preq_grp.G_STATUS_NEW);
655:
656: IF l_debug = FND_API.G_TRUE THEN
657: qp_preq_grp.engine_debug('New PLL Line Created');
658: END IF;
659:
660: v_detail_line_index := v_detail_line_index + 1; -- Temporary
703: ,i.MODIFIER_LEVEL_CODE
704: --fix for bug 2988476
705: ,QP_PREQ_PUB.G_FREEGOOD);
706:
707: IF l_debug = FND_API.G_TRUE THEN
708: qp_preq_grp.engine_debug('New Adjustment Line Created');
709: END IF;
710:
711: INSERT INTO qp_npreq_rltd_lines_tmp
742: x_total_benefit_qty
743: -- end shu, side fix bug 2491158, missing data in qp_npreq_rltd_lines_tmp
744: );
745:
746: IF l_debug = FND_API.G_TRUE THEN
747: qp_preq_grp.engine_debug('New Related Line Detail-Line Detail Created');
748: END IF;
749:
750: -- Insert into Line Attributes table qp_npreq_line_attrs_tmp
774: ,qp_preq_grp.G_LINE_LEVEL
775: ,qp_preq_grp.G_PRODUCT_TYPE
776: ,qp_preq_grp.G_STATUS_NEW); --Item
777:
778: IF l_debug = FND_API.G_TRUE THEN
779: qp_preq_grp.engine_debug('New Attribute Line Created');
780: END IF;
781: END IF; -- l_list_line_id;
782:
806: qp_preq_grp.G_LINE_DETAIL_INDEX := v_detail_line_index;
807: END IF;--l_rltd_line_detail_index
808: EXCEPTION
809: WHEN OTHERS THEN
810: IF l_debug = FND_API.G_TRUE THEN
811: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
812: END IF;
813: x_return_status := FND_API.G_RET_STS_ERROR;
814: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
809: WHEN OTHERS THEN
810: IF l_debug = FND_API.G_TRUE THEN
811: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
812: END IF;
813: x_return_status := FND_API.G_RET_STS_ERROR;
814: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
815: IF l_debug = FND_API.G_TRUE THEN
816: qp_preq_grp.engine_debug('Process_PRG: ' || SQLERRM);
817: END IF;
811: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
812: END IF;
813: x_return_status := FND_API.G_RET_STS_ERROR;
814: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
815: IF l_debug = FND_API.G_TRUE THEN
816: qp_preq_grp.engine_debug('Process_PRG: ' || SQLERRM);
817: END IF;
818: END Process_PRG;
819:
905: v_benefit_exists BOOLEAN;
906:
907: BEGIN
908:
909: x_return_status := FND_API.G_RET_STS_SUCCESS;
910: v_benefit_exists := FALSE;
911:
912: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
913:
920: FOR j IN get_related_modifier_id_cur
921: LOOP
922: FOR i IN get_related_lines_cur(j.TO_RLTD_MODIFIER_ID)
923: LOOP
924: IF l_debug = FND_API.G_TRUE THEN
925: qp_preq_grp.engine_debug('Loop Count');
926: END IF;
927: IF l_debug = FND_API.G_TRUE THEN
928: qp_preq_grp.engine_debug ('FROM RLTD MODIFIER ID : ' || j.FROM_RLTD_MODIFIER_ID);
923: LOOP
924: IF l_debug = FND_API.G_TRUE THEN
925: qp_preq_grp.engine_debug('Loop Count');
926: END IF;
927: IF l_debug = FND_API.G_TRUE THEN
928: qp_preq_grp.engine_debug ('FROM RLTD MODIFIER ID : ' || j.FROM_RLTD_MODIFIER_ID);
929: qp_preq_grp.engine_debug ('TO RLTD MODIFIER ID : ' || j.TO_RLTD_MODIFIER_ID);
930: END IF;
931:
937: x_qualifier_flag,
938: x_ret_status,
939: x_ret_status_txt);
940:
941: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
942: RAISE FND_API.G_EXC_ERROR;
943: END IF;
944:
945: IF (x_qualifier_flag = TRUE) THEN
938: x_ret_status,
939: x_ret_status_txt);
940:
941: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
942: RAISE FND_API.G_EXC_ERROR;
943: END IF;
944:
945: IF (x_qualifier_flag = TRUE) THEN
946: IF l_debug = FND_API.G_TRUE THEN
942: RAISE FND_API.G_EXC_ERROR;
943: END IF;
944:
945: IF (x_qualifier_flag = TRUE) THEN
946: IF l_debug = FND_API.G_TRUE THEN
947: qp_preq_grp.engine_debug('The qualifier flag:' || 'TRUE');
948: END IF;
949: ELSE
950:
947: qp_preq_grp.engine_debug('The qualifier flag:' || 'TRUE');
948: END IF;
949: ELSE
950:
951: IF l_debug = FND_API.G_TRUE THEN
952: qp_preq_grp.engine_debug('Failed in Qualification:' || j.TO_RLTD_MODIFIER_ID);
953: END IF;
954:
955: UPDATE qp_npreq_ldets_tmp --upd1
1027: qp_preq_grp.G_STATUS_NEW,
1028: i.MODIFIER_LEVEL_CODE);
1029:
1030: -- shu, begin fix bug 2491158
1031: IF l_debug = FND_API.G_TRUE THEN
1032: qp_preq_grp.engine_debug ('debug data going to qp_npreq_rltd_lines_tmp .........');
1033: qp_preq_grp.engine_debug ('OID line_index: '||p_line_index);
1034: qp_preq_grp.engine_debug ('OID list_line_id: '||p_list_line_id);
1035: qp_preq_grp.engine_debug ('Benifit line_index: '||m.line_index);
1100: END LOOP;
1101: qp_preq_grp.G_LINE_DETAIL_INDEX := v_detail_line_index;
1102: EXCEPTION
1103: WHEN OTHERS THEN
1104: IF l_debug = FND_API.G_TRUE THEN
1105: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1106: END IF;
1107: x_return_status := FND_API.G_RET_STS_ERROR;
1108: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1103: WHEN OTHERS THEN
1104: IF l_debug = FND_API.G_TRUE THEN
1105: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1106: END IF;
1107: x_return_status := FND_API.G_RET_STS_ERROR;
1108: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1109: IF l_debug = FND_API.G_TRUE THEN
1110: qp_preq_grp.engine_debug(SQLERRM);
1111: END IF;
1105: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1106: END IF;
1107: x_return_status := FND_API.G_RET_STS_ERROR;
1108: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1109: IF l_debug = FND_API.G_TRUE THEN
1110: qp_preq_grp.engine_debug(SQLERRM);
1111: END IF;
1112: END Process_OID;
1113:
1205: v_update_flag BOOLEAN := FALSE;
1206: v_routine_name CONSTANT VARCHAR2(240):='Routine:QP_Process_Other_Benefits.Find_Qualification_For_Benefit';
1207: BEGIN
1208:
1209: x_return_status := FND_API.G_RET_STS_SUCCESS;
1210: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1211:
1212: IF (p_rltd_modifier_type = qp_preq_grp.G_QUALIFIER_TYPE) THEN -- Do group checking
1213:
1210: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1211:
1212: IF (p_rltd_modifier_type = qp_preq_grp.G_QUALIFIER_TYPE) THEN -- Do group checking
1213:
1214: IF l_debug = FND_API.G_TRUE THEN
1215: qp_preq_grp.engine_debug('QUALIFIER QUALIFICATION');
1216: END IF;
1217:
1218: FOR i IN no_rltd_modifiers_in_grp_cur
1216: END IF;
1217:
1218: FOR i IN no_rltd_modifiers_in_grp_cur
1219: LOOP
1220: IF l_debug = FND_API.G_TRUE THEN
1221: qp_preq_grp.engine_debug('Group no: ' || i.RLTD_MODIFIER_GRP_NO);
1222: END IF;
1223:
1224: v_count := 0; --satisfied group cnt re-init on group change -- #2725979
1224: v_count := 0; --satisfied group cnt re-init on group change -- #2725979
1225:
1226: FOR j IN rltd_modifiers_cur(i.RLTD_MODIFIER_GRP_NO)
1227: LOOP
1228: IF l_debug = FND_API.G_TRUE THEN
1229: qp_preq_grp.engine_debug('To Modifier Id: ' || j.TO_RLTD_MODIFIER_ID);
1230: END IF;
1231:
1232: FOR k IN check_rltd_mods_passed_cur(j.TO_RLTD_MODIFIER_ID)
1230: END IF;
1231:
1232: FOR k IN check_rltd_mods_passed_cur(j.TO_RLTD_MODIFIER_ID)
1233: LOOP
1234: IF l_debug = FND_API.G_TRUE THEN
1235: qp_preq_grp.engine_debug('Qualification Succeeded for Rltd Modifier:' || j.TO_RLTD_MODIFIER_ID ||
1236: k.list_line_id);
1237: END IF;
1238:
1244: END LOOP; --j
1245:
1246: v_no_of_mods_in_grp := i.NO_OF_MODIFIERS_IN_GRP; -- Store the no of modifiers count
1247:
1248: IF l_debug = FND_API.G_TRUE THEN
1249: qp_preq_grp.engine_debug('No of modifiers in grp :' || v_no_of_mods_in_grp);
1250: qp_preq_grp.engine_debug('Count :' || v_count);
1251: END IF;
1252:
1264: -- This is the case wherin there is no QUALIFIER Record .. Ex: Buy A , get 20% of B.There is
1265: -- only BENEFIT line
1266:
1267: IF (v_no_of_mods_in_grp = 0 and v_count = 0 ) THEN
1268: IF l_debug = FND_API.G_TRUE THEN
1269: qp_preq_grp.engine_debug(v_no_of_mods_in_grp);
1270: qp_preq_grp.engine_debug(v_count);
1271: END IF;
1272: x_qualified_flag := TRUE;
1272: x_qualified_flag := TRUE;
1273: END IF;
1274: ELSE -- Benefit -- If there on the order give it
1275:
1276: IF l_debug = FND_API.G_TRUE THEN
1277: qp_preq_grp.engine_debug('BENEFIT QUALIFICATION');
1278: END IF;
1279:
1280: FOR k IN check_rltd_mods_passed_cur(p_list_line_id)
1278: END IF;
1279:
1280: FOR k IN check_rltd_mods_passed_cur(p_list_line_id)
1281: LOOP
1282: IF l_debug = FND_API.G_TRUE THEN
1283: qp_preq_grp.engine_debug('Passed List line id:' || p_list_line_id);
1284: qp_preq_grp.engine_debug('Matching List Line Id:' || k.list_line_id);
1285: END IF;
1286:
1298: END IF;
1299: x_qualified_flag := v_qualified_flag;
1300: END IF;
1301:
1302: IF l_debug = FND_API.G_TRUE THEN
1303: qp_preq_grp.engine_debug('Benefit Record Count:' || v_count);
1304: END IF;
1305:
1306: IF (v_update_flag = TRUE) THEN
1314: WHERE a.LINE_DETAIL_INDEX IN (SELECT b.LINE_DETAIL_INDEX
1315: FROM qp_npreq_ldets_tmp b
1316: WHERE b.CREATED_FROM_LIST_LINE_ID = p_list_line_id); */
1317:
1318: IF l_debug = FND_API.G_TRUE THEN
1319: qp_preq_grp.engine_debug ('BENEFIT STATUS UPDATED');
1320: END IF;
1321: END IF;
1322: --v_count := 0; -- Reinitialize for each grp(done on change of group earlier)
1321: END IF;
1322: --v_count := 0; -- Reinitialize for each grp(done on change of group earlier)
1323: EXCEPTION
1324: WHEN OTHERS THEN
1325: IF l_debug = FND_API.G_TRUE THEN
1326: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1327: END IF;
1328: x_return_status := FND_API.G_RET_STS_ERROR;
1329: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1324: WHEN OTHERS THEN
1325: IF l_debug = FND_API.G_TRUE THEN
1326: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1327: END IF;
1328: x_return_status := FND_API.G_RET_STS_ERROR;
1329: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1330: IF l_debug = FND_API.G_TRUE THEN
1331: qp_preq_grp.engine_debug ('Error in Proc');
1332: END IF;
1326: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1327: END IF;
1328: x_return_status := FND_API.G_RET_STS_ERROR;
1329: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1330: IF l_debug = FND_API.G_TRUE THEN
1331: qp_preq_grp.engine_debug ('Error in Proc');
1332: END IF;
1333: END Find_Qualification_For_Benefit;
1334:
1359: x_ret_status_txt VARCHAR2(240);
1360:
1361: BEGIN
1362:
1363: x_return_status := FND_API.G_RET_STS_SUCCESS;
1364: l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
1365:
1366: FOR i IN get_list_lines_cur
1367: LOOP
1365:
1366: FOR i IN get_list_lines_cur
1367: LOOP
1368:
1369: IF l_debug = FND_API.G_TRUE THEN
1370: qp_preq_grp.engine_debug('Qualifying List Line Id: ' || i.CREATED_FROM_LIST_LINE_ID);
1371: qp_preq_grp.engine_debug('List Line Type: ' || i.CREATED_FROM_LIST_LINE_TYPE);
1372: END IF;
1373:
1378: x_qualifier_flag,
1379: x_ret_status,
1380: x_ret_status_txt);
1381:
1382: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1383: RAISE FND_API.G_EXC_ERROR;
1384: END IF;
1385:
1386: IF (x_qualifier_flag = TRUE) THEN
1379: x_ret_status,
1380: x_ret_status_txt);
1381:
1382: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1383: RAISE FND_API.G_EXC_ERROR;
1384: END IF;
1385:
1386: IF (x_qualifier_flag = TRUE) THEN
1387: IF l_debug = FND_API.G_TRUE THEN
1383: RAISE FND_API.G_EXC_ERROR;
1384: END IF;
1385:
1386: IF (x_qualifier_flag = TRUE) THEN
1387: IF l_debug = FND_API.G_TRUE THEN
1388: qp_preq_grp.engine_debug('QUALIFICATION SUCCEDED');
1389: qp_preq_grp.engine_debug('List Line Type : ' || i.created_from_list_line_type);
1390: END IF;
1391: IF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT) THEN
1389: qp_preq_grp.engine_debug('List Line Type : ' || i.created_from_list_line_type);
1390: END IF;
1391: IF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT) THEN
1392: Process_OID(p_line_index,i.CREATED_FROM_LIST_LINE_ID,p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1393: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1394: RAISE FND_API.G_EXC_ERROR;
1395: END IF;
1396: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
1397: Process_PRG(p_line_index,i.line_detail_index,i.modifier_level_code,i.CREATED_FROM_LIST_LINE_ID,
1390: END IF;
1391: IF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_OTHER_ITEM_DISCOUNT) THEN
1392: Process_OID(p_line_index,i.CREATED_FROM_LIST_LINE_ID,p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1393: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1394: RAISE FND_API.G_EXC_ERROR;
1395: END IF;
1396: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
1397: Process_PRG(p_line_index,i.line_detail_index,i.modifier_level_code,i.CREATED_FROM_LIST_LINE_ID,
1398: p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1395: END IF;
1396: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
1397: Process_PRG(p_line_index,i.line_detail_index,i.modifier_level_code,i.CREATED_FROM_LIST_LINE_ID,
1398: p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1399: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1400: RAISE FND_API.G_EXC_ERROR;
1401: END IF;
1402: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_COUPON_ISSUE)
1403: AND (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_NO
1396: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_PROMO_GOODS_DISCOUNT) THEN
1397: Process_PRG(p_line_index,i.line_detail_index,i.modifier_level_code,i.CREATED_FROM_LIST_LINE_ID,
1398: p_pricing_phase_id,x_ret_status,x_ret_status_txt);
1399: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1400: RAISE FND_API.G_EXC_ERROR;
1401: END IF;
1402: ELSIF (i.CREATED_FROM_LIST_LINE_TYPE = qp_preq_grp.G_COUPON_ISSUE)
1403: AND (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_NO
1404: or (qp_preq_grp.G_PUBLIC_API_CALL_FLAG = qp_preq_grp.G_YES --bug 3859759
1409: p_simulation_flag,
1410: x_ret_status,
1411: x_ret_status_txt);
1412:
1413: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1414: RAISE FND_API.G_EXC_ERROR;
1415: END IF;
1416:
1417: /* redeem coupon should not be called here. Because coupon benefits could be of
1410: x_ret_status,
1411: x_ret_status_txt);
1412:
1413: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1414: RAISE FND_API.G_EXC_ERROR;
1415: END IF;
1416:
1417: /* redeem coupon should not be called here. Because coupon benefits could be of
1418: any type, moved to qp_preq_grp package
1417: /* redeem coupon should not be called here. Because coupon benefits could be of
1418: any type, moved to qp_preq_grp package
1419: QP_COUPON_PVT.REDEEM_COUPONS(p_simulation_flag, x_ret_status, x_ret_status_txt);
1420:
1421: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1422: RAISE FND_API.G_EXC_ERROR;
1423: END IF;
1424: */
1425:
1418: any type, moved to qp_preq_grp package
1419: QP_COUPON_PVT.REDEEM_COUPONS(p_simulation_flag, x_ret_status, x_ret_status_txt);
1420:
1421: IF(x_ret_status = FND_API.G_RET_STS_ERROR) THEN
1422: RAISE FND_API.G_EXC_ERROR;
1423: END IF;
1424: */
1425:
1426: END IF;
1439: AND PRICING_STATUS_CODE = qp_preq_grp.G_STATUS_NEW; */
1440: END IF;
1441: END LOOP;
1442: EXCEPTION
1443: WHEN FND_API.G_EXC_ERROR THEN
1444: IF l_debug = FND_API.G_TRUE THEN
1445: qp_preq_grp.engine_debug(v_routine_name || ' ' || x_ret_status_txt);
1446: END IF;
1447: x_return_status := FND_API.G_RET_STS_ERROR;
1440: END IF;
1441: END LOOP;
1442: EXCEPTION
1443: WHEN FND_API.G_EXC_ERROR THEN
1444: IF l_debug = FND_API.G_TRUE THEN
1445: qp_preq_grp.engine_debug(v_routine_name || ' ' || x_ret_status_txt);
1446: END IF;
1447: x_return_status := FND_API.G_RET_STS_ERROR;
1448: x_return_status_txt := x_ret_status_txt;
1443: WHEN FND_API.G_EXC_ERROR THEN
1444: IF l_debug = FND_API.G_TRUE THEN
1445: qp_preq_grp.engine_debug(v_routine_name || ' ' || x_ret_status_txt);
1446: END IF;
1447: x_return_status := FND_API.G_RET_STS_ERROR;
1448: x_return_status_txt := x_ret_status_txt;
1449: WHEN OTHERS THEN
1450: IF l_debug = FND_API.G_TRUE THEN
1451: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1446: END IF;
1447: x_return_status := FND_API.G_RET_STS_ERROR;
1448: x_return_status_txt := x_ret_status_txt;
1449: WHEN OTHERS THEN
1450: IF l_debug = FND_API.G_TRUE THEN
1451: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1452: END IF;
1453: x_return_status := FND_API.G_RET_STS_ERROR;
1454: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1449: WHEN OTHERS THEN
1450: IF l_debug = FND_API.G_TRUE THEN
1451: qp_preq_grp.engine_debug(v_routine_name || ' ' || SQLERRM);
1452: END IF;
1453: x_return_status := FND_API.G_RET_STS_ERROR;
1454: x_return_status_txt := v_routine_name || ' ' || SQLERRM;
1455: END Process_Other_Benefits;
1456: END QP_Process_Other_Benefits_PVT;