201: -- bug 6743283 added a condition to check the action, so that only for update
202: -- we made the line notified if call comes from catalog admin.
203: FOR i IN 1..x_lines.rec_count
204: LOOP
205: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
206: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE AND
207: x_lines.action_tbl(i) = 'UPDATE') THEN
208: x_lines.process_code_tbl(i) := PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED;
209:
202: -- we made the line notified if call comes from catalog admin.
203: FOR i IN 1..x_lines.rec_count
204: LOOP
205: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
206: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE AND
207: x_lines.action_tbl(i) = 'UPDATE') THEN
208: x_lines.process_code_tbl(i) := PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED;
209:
210: --Bug 13906472 fix. Header level attribute has_lines_to_notify flag should be set to TRUE when the lines are notified.
208: x_lines.process_code_tbl(i) := PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED;
209:
210: --Bug 13906472 fix. Header level attribute has_lines_to_notify flag should be set to TRUE when the lines are notified.
211: -- set status on header level for notified lines
212: PO_PDOI_PARAMS.g_docs_info(x_lines.intf_header_id_tbl(1)).has_lines_to_notify := FND_API.g_TRUE;
213: END IF;
214: END LOOP;
215:
216:
219:
220: -- populate value of has_lines_updated in g_doc_info for each document
221: FOR i IN 1..x_lines.rec_count
222: LOOP
223: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
224: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
225: PO_PDOI_PARAMS.g_docs_info(x_lines.intf_header_id_tbl(i)).has_lines_updated := 'Y';
226: END IF;
227: END LOOP;
220: -- populate value of has_lines_updated in g_doc_info for each document
221: FOR i IN 1..x_lines.rec_count
222: LOOP
223: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
224: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
225: PO_PDOI_PARAMS.g_docs_info(x_lines.intf_header_id_tbl(i)).has_lines_updated := 'Y';
226: END IF;
227: END LOOP;
228:
390: FOR i IN 1..x_lines.rec_count
391: LOOP
392: l_po_line_id := x_lines.po_line_id_tbl(i);
393:
394: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
395: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
396: IF (l_line_ref_tbl.EXISTS(l_po_line_id) = FALSE) THEN
397: l_count := l_count + 1;
398: l_po_line_id_tbl.EXTEND;
391: LOOP
392: l_po_line_id := x_lines.po_line_id_tbl(i);
393:
394: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
395: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
396: IF (l_line_ref_tbl.EXISTS(l_po_line_id) = FALSE) THEN
397: l_count := l_count + 1;
398: l_po_line_id_tbl.EXTEND;
399: l_draft_id_tbl.EXTEND;
573:
574: -- bug5107324
575: -- Only process lines that do not contain error or destined to get
576: -- rejected.
577: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
578: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
579:
580: IF (PO_LOG.d_stmt) THEN
581: PO_LOG.stmt(d_module, d_position, 'po_line_id', x_lines.po_line_id_tbl(i));
574: -- bug5107324
575: -- Only process lines that do not contain error or destined to get
576: -- rejected.
577: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
578: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
579:
580: IF (PO_LOG.d_stmt) THEN
581: PO_LOG.stmt(d_module, d_position, 'po_line_id', x_lines.po_line_id_tbl(i));
582: PO_LOG.stmt(d_module, d_position, 'reference',
638: --Extending l_ip_category_id_tbl for avoiding ORA-06533
639: l_ip_category_id_tbl.EXTEND;
640:
641:
642: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
643: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
644: IF (PO_LOG.d_stmt) THEN
645: PO_LOG.stmt(d_module, d_position, 'update line on index', i);
646: END IF;
639: l_ip_category_id_tbl.EXTEND;
640:
641:
642: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
643: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
644: IF (PO_LOG.d_stmt) THEN
645: PO_LOG.stmt(d_module, d_position, 'update line on index', i);
646: END IF;
647:
645: PO_LOG.stmt(d_module, d_position, 'update line on index', i);
646: END IF;
647:
648: -- reset variables
649: l_uom_different := FND_API.g_FALSE;
650: l_exceed_tolerance := FND_API.g_FALSE;
651:
652: -- get index reference in existing value tables
653: l_index := l_line_ref_tbl(x_lines.po_line_id_tbl(i));
646: END IF;
647:
648: -- reset variables
649: l_uom_different := FND_API.g_FALSE;
650: l_exceed_tolerance := FND_API.g_FALSE;
651:
652: -- get index reference in existing value tables
653: l_index := l_line_ref_tbl(x_lines.po_line_id_tbl(i));
654:
662: -- check whether uom has been changed
663: IF (x_lines.unit_of_measure_tbl(i) IS NOT NULL AND
664: x_lines.order_type_lookup_code_tbl(i) <> 'FIXED PRICE' AND
665: x_lines.unit_of_measure_tbl(i) <> l_unit_of_measure_tbl(l_index)) THEN
666: l_uom_different := FND_API.g_TRUE;
667:
668: IF (PO_LOG.d_stmt) THEN
669: PO_LOG.stmt(d_module, d_position, 'uom_different',
670: l_uom_different);
731: IF (PO_LOG.d_stmt) THEN
732: PO_LOG.stmt(d_module, d_position, 'orig_intf_line_id exists');
733: END IF;
734:
735: l_exceed_tolerance := FND_API.G_TRUE;
736: x_lines.parent_interface_line_id_tbl(i) := l_orig_intf_line_id_tbl(l_index);
737:
738: -- check unit price
739: ELSIF (x_lines.create_line_loc_tbl(i) = FND_API.g_FALSE AND
735: l_exceed_tolerance := FND_API.G_TRUE;
736: x_lines.parent_interface_line_id_tbl(i) := l_orig_intf_line_id_tbl(l_index);
737:
738: -- check unit price
739: ELSIF (x_lines.create_line_loc_tbl(i) = FND_API.g_FALSE AND
740: x_lines.unit_price_tbl(i) IS NOT NULL AND
741: x_lines.unit_price_tbl(i) <> NVL(l_unit_price_tbl(l_index), -1)) THEN
742:
743: IF (x_lines.unit_price_tbl(i) <> PO_PDOI_CONSTANTS.g_NULLIFY_NUM) THEN
762: NVL(x_lines.hd_global_agreement_flag_tbl(i), 'N') = 'Y')) THEN
763:
764: d_position := 110;
765: -- only perform tolerance checking when uom is not changed
766: IF (l_uom_different = FND_API.g_FALSE AND
767: x_lines.unit_price_tbl(i) <> l_unit_price_tbl(l_index)) THEN
768: -- check whether new price exceeds the tolerance
769: l_exceed_tolerance :=
770: PO_PDOI_PRICE_TOLERANCE_PVT.exceed_tolerance_check
787: d_position := 120;
788:
789: -- update unit_price, base_unit_price and retroactive_date
790: -- if price does not exceed tolerance
791: IF (l_exceed_tolerance = FND_API.g_FALSE) THEN
792: -- When we update an existing blanket with a new unit_price,
793: -- retroactive_date in po_lines must be updated with the timestamp.
794: -- This has to be done for non-cumulative blanket lines only.
795: IF (PO_PDOI_PARAMS.g_request.document_type = PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET AND
821: d_position := 150;
822:
823: -- bug5149827
824: -- Move the handling of exceed tolerance = T to here
825: IF (l_exceed_tolerance = FND_API.g_TRUE) THEN
826:
827: IF (PO_LOG.d_stmt) THEN
828: PO_LOG.stmt(d_module, d_position, 'set line to be notified', i);
829: PO_LOG.stmt(d_module, d_position, 'notified intf header id',
833: -- set process_code to be 'NOTIFIED' for this line;
834: x_lines.process_code_tbl(i) := PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED;
835:
836: -- set status on header level for notified lines
837: PO_PDOI_PARAMS.g_docs_info(x_lines.intf_header_id_tbl(i)).has_lines_to_notify := FND_API.g_TRUE;
838:
839: END IF; -- l_exceed_tolerance = true
840:
841: -- check check expiration_date
839: END IF; -- l_exceed_tolerance = true
840:
841: -- check check expiration_date
842: -- do the following update only when price does not exceed tolerance
843: IF (l_exceed_tolerance = FND_API.g_FALSE) THEN
844: -- If the new value is '#DEL', we null out the expiration_date
845: IF (PO_PDOI_PARAMS.g_request.document_type IN (
846: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET, PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION) AND --bug10132621
847: x_lines.expiration_date_tbl(i) IS NOT NULL) THEN
1045:
1046: d_position := 250;
1047:
1048: -- set has_lines_updated flag in g_docs_info
1049: IF (l_exceed_tolerance = FND_API.g_FALSE) THEN
1050: PO_PDOI_PARAMS.g_docs_info(x_lines.intf_header_id_tbl(i)).has_lines_updated := 'Y';
1051:
1052: IF (PO_LOG.d_stmt) THEN
1053: PO_LOG.stmt(d_module, d_position, 'line updated for document',
1054: x_lines.intf_header_id_tbl(i));
1055: END IF;
1056: END IF;
1057:
1058: END IF; -- IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE)
1059: END LOOP;
1060:
1061: d_position := 260;
1062:
1076: LOOP
1077: EGO_ITEM_PUB.Process_Item
1078: (
1079: p_api_version => 1.0,
1080: p_init_msg_list => FND_API.g_TRUE,
1081: p_commit => FND_API.g_TRUE,
1082: p_Transaction_Type => 'UPDATE',
1083: p_Inventory_Item_Id => x_lines.item_id_tbl(l_index),
1084: p_Organization_Id => PO_PDOI_PARAMS.g_sys.def_inv_org_id,
1077: EGO_ITEM_PUB.Process_Item
1078: (
1079: p_api_version => 1.0,
1080: p_init_msg_list => FND_API.g_TRUE,
1081: p_commit => FND_API.g_TRUE,
1082: p_Transaction_Type => 'UPDATE',
1083: p_Inventory_Item_Id => x_lines.item_id_tbl(l_index),
1084: p_Organization_Id => PO_PDOI_PARAMS.g_sys.def_inv_org_id,
1085: p_description => NVL(x_lines.item_desc_tbl(l_index), EGO_ITEM_PUB.G_MISS_CHAR),
1097: PO_LOG.stmt(d_module, d_position, 'return status for item update',
1098: l_return_status);
1099: END IF;
1100:
1101: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1102: -- error handling
1103: Error_Handler.GET_MESSAGE_LIST
1104: (
1105: x_message_list => l_message_list
1135: p_column_value => NULL
1136: );
1137: END LOOP;
1138:
1139: x_lines.error_flag_tbl(l_index) := FND_API.g_TRUE;
1140:
1141: PO_TIMING_UTL.stop_time(PO_PDOI_CONSTANTS.g_T_LINE_UPDATE);
1142:
1143: IF (PO_LOG.d_proc) THEN
1531: p_line_locs.draft_id_tbl(i),
1532: 'Y'
1533: FROM po_line_locations
1534: WHERE po_line_id = p_line_locs.ln_po_line_id_tbl(i)
1535: AND p_line_locs.error_flag_tbl(i) = FND_API.g_FALSE;
1536:
1537: d_position := 20;
1538:
1539: DELETE FROM po_session_gt
1779: p_attr_values.ln_po_line_id_tbl(i),
1780: p_attr_values.ln_ip_category_id_tbl(i),
1781: p_attr_values.ln_item_id_tbl(i)
1782: FROM DUAL
1783: WHERE p_attr_values.error_flag_tbl(i) = FND_API.g_FALSE;
1784:
1785: d_position := 20;
1786:
1787: -- merge values from interface tables to draft tables
1901: p_attr_values_tlp.ln_item_id_tbl(i),
1902: p_attr_values_tlp.ln_item_desc_tbl(i),
1903: p_attr_values_tlp.ln_item_long_desc_tbl(i) -- Bug7722053
1904: FROM DUAL
1905: WHERE p_attr_values_tlp.error_flag_tbl(i) = FND_API.g_FALSE;
1906:
1907: d_position := 20;
1908:
1909: -- insert or update attribute values rows into po_attribute_values_draft
1969:
1970: IF (PO_LOG.d_stmt) THEN
1971: FOR i IN 1..p_headers.rec_count
1972: LOOP
1973: IF (p_headers.error_flag_tbl(i) = FND_API.G_FALSE) THEN
1974: l_valid_intf_header_id_tbl.EXTEND(1);
1975: l_count := l_valid_intf_header_id_tbl.COUNT;
1976: l_valid_intf_header_id_tbl(l_count) :=
1977: p_headers.intf_header_id_tbl(i);
2240: p_headers.fon_ref_id_tbl(i),
2241: p_headers.clm_contract_officer_tbl(i)
2242: FROM po_headers_interface
2243: WHERE interface_header_id = p_headers.intf_header_id_tbl(i)
2244: AND p_headers.error_flag_tbl(i) = FND_API.g_FALSE;
2245:
2246: IF (PO_LOG.d_proc) THEN
2247: PO_LOG.proc_end (d_module);
2248: END IF;
2326: p_headers.creation_date_tbl(i),
2327: p_headers.created_by_tbl(i)
2328: FROM po_headers_interface
2329: WHERE interface_header_id = p_headers.intf_header_id_tbl(i)
2330: AND p_headers.error_flag_tbl(i) = FND_API.g_FALSE
2331: AND p_headers.doc_type_tbl(i) = PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET
2332: AND COALESCE(global_agreement_flag, PO_PDOI_PARAMS.g_request.ga_flag, 'N') = 'Y';
2333: END IF;
2334:
2449: FND_GLOBAL.prog_appl_id,
2450: FND_GLOBAL.conc_program_id,
2451: sysdate
2452: FROM DUAL
2453: WHERE p_headers.error_flag_tbl(i) = FND_API.g_FALSE
2454: AND p_headers.encumbrance_required_flag_tbl(i) = 'Y';
2455: END IF;
2456:
2457: IF (PO_LOG.d_proc) THEN
2514:
2515: IF (PO_LOG.d_stmt) THEN
2516: FOR i IN 1..p_dists.rec_count
2517: LOOP
2518: IF (p_dists.error_flag_tbl(i) = FND_API.g_FALSE) THEN
2519: l_valid_intf_dist_id_tbl.EXTEND(1);
2520: l_count := l_count + 1;
2521: l_valid_intf_dist_id_tbl(l_count) :=
2522: p_dists.intf_dist_id_tbl(i);
2736: p_dists.amount_funded_tbl(i),
2737: p_dists.clm_misc_loa_tbl(i)
2738: FROM po_distributions_interface
2739: WHERE interface_distribution_id = p_dists.intf_dist_id_tbl(i)
2740: AND p_dists.error_flag_tbl(i) = FND_API.g_FALSE;
2741:
2742: IF (PO_LOG.d_proc) THEN
2743: PO_LOG.proc_end (d_module);
2744: END IF;
2792: IF (PO_LOG.d_stmt) THEN
2793:
2794: FOR i IN 1..p_lines.rec_count
2795: LOOP
2796: IF (p_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
2797: p_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
2798: PO_LOG.stmt(d_module, d_position, 'interface line id', p_lines.intf_line_id_tbl(i));
2799: PO_LOG.stmt(d_module, d_position, 'po_header_id', p_lines.po_header_id_tbl(i));
2800: PO_LOG.stmt(d_module, d_position, 'line_num', p_lines.line_num_tbl(i));
2793:
2794: FOR i IN 1..p_lines.rec_count
2795: LOOP
2796: IF (p_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
2797: p_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
2798: PO_LOG.stmt(d_module, d_position, 'interface line id', p_lines.intf_line_id_tbl(i));
2799: PO_LOG.stmt(d_module, d_position, 'po_header_id', p_lines.po_header_id_tbl(i));
2800: PO_LOG.stmt(d_module, d_position, 'line_num', p_lines.line_num_tbl(i));
2801: PO_LOG.stmt(d_module, d_position, 'draft_id', p_lines.draft_id_tbl(i));
3082: --p_lines.clm_period_perf_end_date_tbl(i)
3083: --p_lines.clm_period_perf_start_date_tbl(i)
3084: FROM po_lines_interface
3085: WHERE interface_line_id = p_lines.intf_line_id_tbl(i)
3086: AND p_lines.error_flag_tbl(i) = FND_API.g_FALSE
3087: AND p_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE;
3088:
3089: IF (PO_LOG.d_proc) THEN
3090: PO_LOG.proc_end (d_module);
3083: --p_lines.clm_period_perf_start_date_tbl(i)
3084: FROM po_lines_interface
3085: WHERE interface_line_id = p_lines.intf_line_id_tbl(i)
3086: AND p_lines.error_flag_tbl(i) = FND_API.g_FALSE
3087: AND p_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE;
3088:
3089: IF (PO_LOG.d_proc) THEN
3090: PO_LOG.proc_end (d_module);
3091: END IF;
3138:
3139: IF (PO_LOG.d_stmt) THEN
3140: FOR i IN 1..p_line_locs.rec_count
3141: LOOP
3142: IF (p_line_locs.error_flag_tbl(i) = FND_API.g_FALSE) THEN
3143: l_valid_intf_loc_id_tbl.EXTEND(1);
3144: l_count := l_count + 1;
3145: l_valid_intf_loc_id_tbl(l_count) :=
3146: p_line_locs.intf_line_loc_id_tbl(i);
3377: p_line_locs.payment_type_tbl(i), -- PDOI for Complex PO Project
3378: p_line_locs.ln_item_desc_tbl(i) -- PDOI for Complex PO Project
3379: FROM po_line_locations_interface
3380: WHERE interface_line_location_id = p_line_locs.intf_line_loc_id_tbl(i)
3381: AND p_line_locs.error_flag_tbl(i) = FND_API.g_FALSE;
3382:
3383: IF (PO_LOG.d_proc) THEN
3384: PO_LOG.proc_end (d_module);
3385: END IF;
3432:
3433: IF (PO_LOG.d_stmt) THEN
3434: FOR i IN 1..p_price_diffs.rec_count
3435: LOOP
3436: IF (p_price_diffs.error_flag_tbl(i) = FND_API.g_FALSE) THEN
3437: l_valid_intf_diff_id_tbl.EXTEND(1);
3438: l_count := l_count + 1;
3439: l_valid_intf_diff_id_tbl(l_count) :=
3440: p_price_diffs.intf_price_diff_id_tbl(i);
3485: NVL(creation_date, sysdate),
3486: NVL(created_by, FND_GLOBAL.user_id)
3487: FROM po_price_diff_interface
3488: WHERE price_diff_interface_id = p_price_diffs.intf_price_diff_id_tbl(i)
3489: AND p_price_diffs.error_flag_tbl(i) = FND_API.g_FALSE;
3490:
3491: IF (PO_LOG.d_proc) THEN
3492: PO_LOG.proc_end (d_module);
3493: END IF;