328: PO_LOG.proc_begin(d_module);
329: END IF;
330:
331: -- first reject lines which are duplicate in txn table
332: OPEN c_dup_lines_in_txn(PO_PDOI_PARAMS.g_processing_id,
333: PO_PDOI_PARAMS.g_current_round_num);
334:
335: d_position := 10;
336:
329: END IF;
330:
331: -- first reject lines which are duplicate in txn table
332: OPEN c_dup_lines_in_txn(PO_PDOI_PARAMS.g_processing_id,
333: PO_PDOI_PARAMS.g_current_round_num);
334:
335: d_position := 10;
336:
337: LOOP
397:
398: d_position := 60;
399:
400: -- next, reject lines which are duplicate of lines in draft table
401: OPEN c_dup_lines_in_draft(PO_PDOI_PARAMS.g_processing_id,
402: PO_PDOI_PARAMS.g_current_round_num);
403:
404: d_position := 70;
405:
398: d_position := 60;
399:
400: -- next, reject lines which are duplicate of lines in draft table
401: OPEN c_dup_lines_in_draft(PO_PDOI_PARAMS.g_processing_id,
402: PO_PDOI_PARAMS.g_current_round_num);
403:
404: d_position := 70;
405:
406: LOOP
525: PO_LOG.proc_begin(d_module);
526: END IF;
527:
528: -- get all invalid lines from cursor
529: OPEN c_invalid_action_lines(PO_PDOI_PARAMS.g_processing_id,
530: PO_PDOI_PARAMS.g_current_round_num);
531:
532: d_position := 10;
533:
526: END IF;
527:
528: -- get all invalid lines from cursor
529: OPEN c_invalid_action_lines(PO_PDOI_PARAMS.g_processing_id,
530: PO_PDOI_PARAMS.g_current_round_num);
531:
532: d_position := 10;
533:
534: FETCH c_invalid_action_lines
759: po_headers_draft_all draft_headers
760: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
761: AND intf_headers.draft_id = draft_headers.draft_id
762: AND intf_headers.po_header_id = draft_headers.po_header_id
763: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
764: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
765: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
766: AND intf_lines.interface_line_id > p_max_intf_line_id
767: AND intf_headers.action IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
760: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
761: AND intf_headers.draft_id = draft_headers.draft_id
762: AND intf_headers.po_header_id = draft_headers.po_header_id
763: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
764: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
765: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
766: AND intf_lines.interface_line_id > p_max_intf_line_id
767: AND intf_headers.action IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
768: PO_PDOI_CONSTANTS.g_ACTION_REPLACE)
761: AND intf_headers.draft_id = draft_headers.draft_id
762: AND intf_headers.po_header_id = draft_headers.po_header_id
763: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
764: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
765: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
766: AND intf_lines.interface_line_id > p_max_intf_line_id
767: AND intf_headers.action IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
768: PO_PDOI_CONSTANTS.g_ACTION_REPLACE)
769:
891: po_headers_interface intf_headers,
892: po_headers txn_headers
893: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
894: AND intf_headers.po_header_id = txn_headers.po_header_id
895: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
896: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
897: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
898: AND intf_lines.interface_line_id > p_max_intf_line_id
899: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
892: po_headers txn_headers
893: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
894: AND intf_headers.po_header_id = txn_headers.po_header_id
895: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
896: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
897: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
898: AND intf_lines.interface_line_id > p_max_intf_line_id
899: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
900: AND PO_PDOI_PARAMS.g_request.document_type = PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD
893: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
894: AND intf_headers.po_header_id = txn_headers.po_header_id
895: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
896: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
897: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
898: AND intf_lines.interface_line_id > p_max_intf_line_id
899: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
900: AND PO_PDOI_PARAMS.g_request.document_type = PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD
901: ORDER BY 1;
896: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
897: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
898: AND intf_lines.interface_line_id > p_max_intf_line_id
899: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
900: AND PO_PDOI_PARAMS.g_request.document_type = PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD
901: ORDER BY 1;
902: ELSIF (p_data_set_type = PO_PDOI_CONSTANTS.g_LINE_CSR_FORCE_ADD) THEN
903: d_position := 20;
904:
1025: po_headers_interface intf_headers,
1026: po_headers txn_headers
1027: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1028: AND intf_headers.po_header_id = txn_headers.po_header_id
1029: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1030: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1031: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1032: AND intf_lines.interface_line_id > p_max_intf_line_id
1033: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1026: po_headers txn_headers
1027: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1028: AND intf_headers.po_header_id = txn_headers.po_header_id
1029: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1030: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1031: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1032: AND intf_lines.interface_line_id > p_max_intf_line_id
1033: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1034: AND PO_PDOI_PARAMS.g_request.document_type IN
1027: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1028: AND intf_headers.po_header_id = txn_headers.po_header_id
1029: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1030: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1031: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1032: AND intf_lines.interface_line_id > p_max_intf_line_id
1033: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1034: AND PO_PDOI_PARAMS.g_request.document_type IN
1035: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1030: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1031: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1032: AND intf_lines.interface_line_id > p_max_intf_line_id
1033: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1034: AND PO_PDOI_PARAMS.g_request.document_type IN
1035: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1036: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)
1037: AND intf_lines.action = PO_PDOI_CONSTANTS.g_ACTION_ADD
1038: ORDER BY intf_lines.interface_line_id;
1162: po_headers_interface intf_headers,
1163: po_headers txn_headers
1164: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1165: AND intf_headers.po_header_id = txn_headers.po_header_id
1166: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1167: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1168: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1169: AND intf_lines.interface_line_id > p_max_intf_line_id
1170: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1163: po_headers txn_headers
1164: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1165: AND intf_headers.po_header_id = txn_headers.po_header_id
1166: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1167: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1168: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1169: AND intf_lines.interface_line_id > p_max_intf_line_id
1170: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1171: AND PO_PDOI_PARAMS.g_request.document_type IN
1164: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1165: AND intf_headers.po_header_id = txn_headers.po_header_id
1166: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1167: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1168: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1169: AND intf_lines.interface_line_id > p_max_intf_line_id
1170: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1171: AND PO_PDOI_PARAMS.g_request.document_type IN
1172: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1167: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1168: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1169: AND intf_lines.interface_line_id > p_max_intf_line_id
1170: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1171: AND PO_PDOI_PARAMS.g_request.document_type IN
1172: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1173: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)
1174: AND intf_lines.action IS NULL
1175: AND NOT (intf_lines.item IS NULL AND
1303: po_headers_interface intf_headers,
1304: po_headers txn_headers
1305: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1306: AND intf_headers.po_header_id = txn_headers.po_header_id
1307: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1308: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1309: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1310: AND intf_lines.interface_line_id > p_max_intf_line_id
1311: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1304: po_headers txn_headers
1305: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1306: AND intf_headers.po_header_id = txn_headers.po_header_id
1307: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1308: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1309: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1310: AND intf_lines.interface_line_id > p_max_intf_line_id
1311: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1312: AND PO_PDOI_PARAMS.g_request.document_type IN
1305: WHERE intf_lines.interface_header_id = intf_headers.interface_header_id
1306: AND intf_headers.po_header_id = txn_headers.po_header_id
1307: AND intf_lines.processing_id = PO_PDOI_PARAMS.g_processing_id
1308: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1309: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1310: AND intf_lines.interface_line_id > p_max_intf_line_id
1311: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1312: AND PO_PDOI_PARAMS.g_request.document_type IN
1313: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1308: AND intf_headers.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
1309: AND intf_headers.processing_id = PO_PDOI_PARAMS.g_processing_id
1310: AND intf_lines.interface_line_id > p_max_intf_line_id
1311: AND intf_headers.action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE
1312: AND PO_PDOI_PARAMS.g_request.document_type IN
1313: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1314: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)
1315: AND intf_lines.action IS NULL
1316: AND intf_lines.item IS NULL
1626:
1627:
1628: d_position := 70;
1629:
1630: IF (PO_PDOI_PARAMS.g_request.document_type IN
1631: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1632: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)) THEN
1633: -- derive IP category_id from IP category_name
1634: derive_ip_category_id
1715:
1716: -- derivation error for item_id
1717: IF (x_lines.item_tbl(i) IS NOT NULL AND
1718: x_lines.item_id_tbl(i) IS NULL AND
1719: PO_PDOI_PARAMS.g_request.create_items = 'N') THEN
1720: IF (PO_LOG.d_stmt) THEN
1721: PO_LOG.stmt(d_module, d_position, 'item id derivation failed');
1722: PO_LOG.stmt(d_module, d_position, 'item', x_lines.item_tbl(i));
1723: END IF;
1816: x_lines.error_flag_tbl(i) := FND_API.g_TRUE;
1817: END IF;
1818:
1819: -- derivation error for ip_category_id
1820: IF (PO_PDOI_PARAMS.g_request.document_type IN
1821: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1822: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)) THEN
1823: IF (x_lines.ip_category_tbl(i) IS NOT NULL AND
1824: x_lines.ip_category_id_tbl(i) IS NULL) THEN
2059: );
2060:
2061: d_position := 20;
2062:
2063: IF (PO_PDOI_PARAMS.g_request.document_type IN
2064: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
2065: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)) THEN
2066: -- derive IP category_id from IP category_name
2067: derive_ip_category_id
2140: x_lines.error_flag_tbl(i) := FND_API.g_TRUE;
2141: END IF;
2142:
2143: -- derivation error for ip_category_id
2144: IF (PO_PDOI_PARAMS.g_request.document_type IN
2145: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
2146: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)) THEN
2147: IF (x_lines.ip_category_tbl(i) IS NOT NULL AND
2148: x_lines.ip_category_id_tbl(i) IS NULL) THEN
2287: IF (PO_LOG.d_stmt) THEN
2288: PO_LOG.stmt(d_module, d_position, 'set default line type id on line index', i);
2289: END IF;
2290:
2291: x_lines.line_type_id_tbl(i) := PO_PDOI_PARAMS.g_sys.line_type_id;
2292: END IF;
2293:
2294: -- initialize l_index_tbl
2295: l_index_tbl(i) := i;
2351:
2352: l_ic_category_id_tbl := PO_TBL_NUMBER();
2353: l_ic_category_id_tbl.EXTEND(x_lines.rec_count);
2354:
2355: IF (PO_PDOI_PARAMS.g_request.document_type IN
2356: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
2357: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)) THEN
2358:
2359: d_position := 50;
2435: x_lines.category_id_tbl(i) :=
2436: COALESCE(x_lines.category_id_tbl(i), l_it_category_id_tbl(i),
2437: l_job_category_id_tbl(i), l_ic_category_id_tbl(i),
2438: l_li_category_id_tbl(i),
2439: PO_PDOI_PARAMS.g_sys.def_category_id);
2440:
2441: IF (PO_LOG.d_stmt) THEN
2442: PO_LOG.stmt(d_module, d_position, 'default category id',
2443: x_lines.category_id_tbl(i));
2455:
2456: d_position := 70;
2457:
2458: -- the following default logic is for BLANKET/STANDARD only
2459: IF (PO_PDOI_PARAMS.g_request.document_type IN
2460: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
2461: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD)) THEN
2462: d_position := 80;
2463:
2485: NVL(x_lines.capital_expense_flag_tbl(i), 'N');
2486:
2487: -- default min_release_amount, negotiated_flag and
2488: -- price_break_lookup_code for blanket
2489: IF (PO_PDOI_PARAMS.g_request.document_type =
2490: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET) THEN
2491: d_position := 90;
2492:
2493: IF (PO_LOG.d_stmt) THEN
2514: x_lines.purchase_basis_tbl(i) = 'SERVICES')) THEN
2515: x_lines.price_break_lookup_code_tbl(i) := NULL;
2516: ELSE
2517: x_lines.price_break_lookup_code_tbl(i) :=
2518: PO_PDOI_PARAMS.g_sys.price_break_lookup_code;
2519: END IF;
2520: END IF;
2521: ELSE
2522: -- default tax_attribute_update_code for SPO
2534: NVL(x_lines.allow_price_override_flag_tbl(i), 'N');
2535:
2536: -- default price_type
2537: x_lines.price_type_tbl(i) :=
2538: NVL(x_lines.price_type_tbl(i), PO_PDOI_PARAMS.g_sys.price_type_lookup_code);
2539:
2540: -- default closed_code
2541: x_lines.closed_code_tbl(i) :=
2542: NVL(x_lines.closed_code_tbl(i), 'OPEN');
2554: END IF;
2555: END LOOP;
2556:
2557:
2558: IF (PO_PDOI_PARAMS.g_request.document_type IN
2559: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
2560: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION)) THEN
2561:
2562: -- default ip category id from po category ids after all other defaulting
3004:
3005: IF (x_lines.line_loc_populated_flag_tbl(i) = 'S') THEN
3006: IF (PO_LOG.d_stmt) THEN
3007: PO_LOG.stmt(d_module, d_position, 'document type',
3008: PO_PDOI_PARAMS.g_request.document_type);
3009: PO_LOG.stmt(d_module, d_position, 'order_type_lookup_code',
3010: x_lines.order_type_lookup_code_tbl(i));
3011: PO_LOG.stmt(d_module, d_position, 'action',
3012: x_lines.action_tbl(i));
3015: PO_LOG.stmt(d_module, d_position, 'shipment_num',
3016: x_lines.shipment_num_tbl(i));
3017: END IF;
3018: -- set to TRUE in certain conditions
3019: IF (PO_PDOI_PARAMS.g_request.document_type =
3020: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET) THEN
3021: IF (x_lines.order_type_lookup_code_tbl(i) IN ('QUANTITY', 'RATE') AND
3022: x_lines.action_tbl(i) = PO_PDOI_CONSTANTS.g_ACTION_UPDATE AND
3023: (x_lines.quantity_tbl(i) > 0 OR x_lines.shipment_num_tbl(i) IS NOT NULL)) THEN
3022: x_lines.action_tbl(i) = PO_PDOI_CONSTANTS.g_ACTION_UPDATE AND
3023: (x_lines.quantity_tbl(i) > 0 OR x_lines.shipment_num_tbl(i) IS NOT NULL)) THEN
3024: x_lines.create_line_loc_tbl(i) := FND_API.g_TRUE;
3025: END IF;
3026: ELSIF (PO_PDOI_PARAMS.g_request.document_type =
3027: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
3028: IF (x_lines.order_type_lookup_code_tbl(i) IN ('FIXED PRICE', 'RATE') OR
3029: x_lines.quantity_tbl(i) > 0) THEN
3030: x_lines.create_line_loc_tbl(i) := FND_API.g_TRUE;
3028: IF (x_lines.order_type_lookup_code_tbl(i) IN ('FIXED PRICE', 'RATE') OR
3029: x_lines.quantity_tbl(i) > 0) THEN
3030: x_lines.create_line_loc_tbl(i) := FND_API.g_TRUE;
3031: END IF;
3032: ELSIF (PO_PDOI_PARAMS.g_request.document_type =
3033: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION) THEN
3034: IF (x_lines.order_type_lookup_code_tbl(i) = 'QUANTITY' AND
3035: (x_lines.quantity_tbl(i) > 0 OR x_lines.shipment_num_tbl(i) IS NOT NULL)) THEN
3036: x_lines.create_line_loc_tbl(i) := FND_API.g_TRUE;
3122: FOR i IN 1..x_lines.rec_count
3123: LOOP
3124: IF (NVL(x_lines.process_code_tbl(i), PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING)
3125: = PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING AND
3126: NVL(PO_PDOI_PARAMS.g_request.process_code, PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING) =
3127: PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING)
3128: OR
3129: (NVL(x_lines.process_code_tbl(i), PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING)
3130: = PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING AND
3127: PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING)
3128: OR
3129: (NVL(x_lines.process_code_tbl(i), PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING)
3130: = PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING AND
3131: NVL(PO_PDOI_PARAMS.g_request.process_code, PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING) =
3132: PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED) THEN
3133:
3134: IF (x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
3135: x_lines.need_to_reject_flag_tbl(i) = FND_API.g_FALSE) THEN
3337:
3338: -- If there is release shipment for a blanket line, and uom is changed,
3339: -- the existing matching line will be expired and the new line's action
3340: -- will be ADD instead of UPDATE
3341: IF (PO_PDOI_PARAMS.g_request.document_type =
3342: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET) THEN
3343: d_position := 80;
3344:
3345: -- derive unit_of_measure from uom_code
3639:
3640: l_inventory_org_id_tbl.EXTEND(x_lines.intf_line_id_tbl.COUNT);
3641:
3642: FOR i IN 1..x_lines.intf_line_id_tbl.COUNT LOOP
3643: l_inventory_org_id_tbl(i) := PO_PDOI_PARAMS.g_sys.master_inv_org_id;
3644: END LOOP;
3645: l_lines.inventory_org_id := l_inventory_org_id_tbl;
3646:
3647: d_position := 20;
3648:
3649: l_parameter_name_tbl.EXTEND(3);
3650: l_parameter_value_tbl.EXTEND(3);
3651: l_parameter_name_tbl(1) := 'CREATE_OR_UPDATE_ITEM';
3652: l_parameter_value_tbl(1) := PO_PDOI_PARAMS.g_request.create_items;
3653: l_parameter_name_tbl(2) := 'INVENTORY_ORG_ID';
3654: l_parameter_value_tbl(2) := PO_PDOI_PARAMS.g_sys.def_inv_org_id; -- bug5601416
3655: l_parameter_name_tbl(3) := 'DOC_TYPE';
3656: l_parameter_value_tbl(3) := PO_PDOI_PARAMS.g_request.document_type;
3650: l_parameter_value_tbl.EXTEND(3);
3651: l_parameter_name_tbl(1) := 'CREATE_OR_UPDATE_ITEM';
3652: l_parameter_value_tbl(1) := PO_PDOI_PARAMS.g_request.create_items;
3653: l_parameter_name_tbl(2) := 'INVENTORY_ORG_ID';
3654: l_parameter_value_tbl(2) := PO_PDOI_PARAMS.g_sys.def_inv_org_id; -- bug5601416
3655: l_parameter_name_tbl(3) := 'DOC_TYPE';
3656: l_parameter_value_tbl(3) := PO_PDOI_PARAMS.g_request.document_type;
3657:
3658: d_position := 30;
3652: l_parameter_value_tbl(1) := PO_PDOI_PARAMS.g_request.create_items;
3653: l_parameter_name_tbl(2) := 'INVENTORY_ORG_ID';
3654: l_parameter_value_tbl(2) := PO_PDOI_PARAMS.g_sys.def_inv_org_id; -- bug5601416
3655: l_parameter_name_tbl(3) := 'DOC_TYPE';
3656: l_parameter_value_tbl(3) := PO_PDOI_PARAMS.g_request.document_type;
3657:
3658: d_position := 30;
3659:
3660: PO_VALIDATIONS.validate_pdoi
3659:
3660: PO_VALIDATIONS.validate_pdoi
3661: (
3662: p_lines => l_lines,
3663: p_doc_type => PO_PDOI_PARAMS.g_request.document_type,
3664: p_action => p_action,
3665: p_parameter_name_tbl => l_parameter_name_tbl,
3666: p_parameter_value_tbl => l_parameter_value_tbl,
3667: x_result_type => l_result_type,
3830: FROM mtl_system_items_kfv
3831: WHERE p_item_tbl(i) IS NOT NULL
3832: AND x_item_id_tbl(i) IS NULL
3833: AND concatenated_segments = p_item_tbl(i)
3834: AND organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id;
3835:
3836: d_position := 10;
3837:
3838: -- derive based on vendor_product_num
3956: FOR i IN 1..p_item_id_tbl.COUNT
3957: LOOP
3958: IF (p_item_id_tbl(i) IS NULL AND
3959: X_item_revision_tbl(i) IS NOT NULL AND
3960: PO_PDOI_PARAMS.g_request.create_items = 'Y') THEN
3961: IF (PO_LOG.d_stmt) THEN
3962: PO_LOG.stmt(d_module, d_position, 'index', i);
3963: PO_LOG.stmt(d_module, d_position, 'new item revision set to empty');
3964: END IF;
4145: -- execute different queries to derive job_id depending on profile and
4146: -- value of job_business_group_id
4147: IF (PO_LOG.d_stmt) THEN
4148: PO_LOG.stmt(d_module, d_position, 'business group profile value',
4149: PO_PDOI_PARAMS.g_profile.xbg);
4150: PO_LOG.stmt(d_module, d_position, 'fsp business_group_id',
4151: PO_PDOI_PARAMS.g_sys.def_business_group_id);
4152: END IF;
4153:
4147: IF (PO_LOG.d_stmt) THEN
4148: PO_LOG.stmt(d_module, d_position, 'business group profile value',
4149: PO_PDOI_PARAMS.g_profile.xbg);
4150: PO_LOG.stmt(d_module, d_position, 'fsp business_group_id',
4151: PO_PDOI_PARAMS.g_sys.def_business_group_id);
4152: END IF;
4153:
4154: -- bug 5489942: derive job_id from job_name based on
4155: -- line level language
4152: END IF;
4153:
4154: -- bug 5489942: derive job_id from job_name based on
4155: -- line level language
4156: IF (NVL(PO_PDOI_PARAMS.g_profile.xbg, 'N') = 'N') THEN
4157: d_position := 10;
4158:
4159: -- derive job_id from job_name
4160: FORALL i IN 1..p_index_tbl.COUNT
4168: AND x_job_id_tbl(i) IS NULL
4169: AND jobs_b.job_id = jobs_tl.job_id
4170: AND jobs_tl.language = NVL(p_file_line_language_tbl(i), userenv('LANG'))
4171: AND jobs_tl.name = p_job_name_tbl(i)
4172: AND jobs_b.business_group_id = PO_PDOI_PARAMS.g_sys.def_business_group_id
4173: AND PO_PDOI_PARAMS.g_sys.def_business_group_id =
4174: DECODE(p_job_business_group_name_tbl(i), NULL,
4175: DECODE(x_job_business_group_id_tbl(i), NULL,
4176: PO_PDOI_PARAMS.g_sys.def_business_group_id,
4169: AND jobs_b.job_id = jobs_tl.job_id
4170: AND jobs_tl.language = NVL(p_file_line_language_tbl(i), userenv('LANG'))
4171: AND jobs_tl.name = p_job_name_tbl(i)
4172: AND jobs_b.business_group_id = PO_PDOI_PARAMS.g_sys.def_business_group_id
4173: AND PO_PDOI_PARAMS.g_sys.def_business_group_id =
4174: DECODE(p_job_business_group_name_tbl(i), NULL,
4175: DECODE(x_job_business_group_id_tbl(i), NULL,
4176: PO_PDOI_PARAMS.g_sys.def_business_group_id,
4177: x_job_business_group_id_tbl(i)), x_job_business_group_id_tbl(i))
4172: AND jobs_b.business_group_id = PO_PDOI_PARAMS.g_sys.def_business_group_id
4173: AND PO_PDOI_PARAMS.g_sys.def_business_group_id =
4174: DECODE(p_job_business_group_name_tbl(i), NULL,
4175: DECODE(x_job_business_group_id_tbl(i), NULL,
4176: PO_PDOI_PARAMS.g_sys.def_business_group_id,
4177: x_job_business_group_id_tbl(i)), x_job_business_group_id_tbl(i))
4178: AND TRUNC(sysdate) BETWEEN TRUNC(NVL(jobs_b.date_from, sysdate))
4179: AND TRUNC(NVL(jobs_b.date_to, sysdate));
4180: ELSE
4195: d_job_name_tbl);
4196: PO_LOG.stmt(d_module, d_position, 'debug: d_bg_id_tbl',
4197: d_bg_id_tbl);
4198: PO_LOG.stmt(d_module, d_position, 'debug: default bg id',
4199: PO_PDOI_PARAMS.g_sys.def_business_group_id);
4200: END IF;
4201:
4202: -- END OF info added for debugging purpose */
4203:
4214: AND x_job_business_group_id_tbl(i) IS NULL
4215: AND jobs_b.job_id = jobs_tl.job_id
4216: AND jobs_tl.language = NVL(p_file_line_language_tbl(i), userenv('LANG'))
4217: AND jobs_tl.name = p_job_name_tbl(i)
4218: AND jobs_b.business_group_id = PO_PDOI_PARAMS.g_sys.def_business_group_id
4219: AND PO_PDOI_PARAMS.g_sys.def_business_group_id =
4220: DECODE(p_job_business_group_name_tbl(i), NULL,
4221: PO_PDOI_PARAMS.g_sys.def_business_group_id,
4222: x_job_business_group_id_tbl(i))
4215: AND jobs_b.job_id = jobs_tl.job_id
4216: AND jobs_tl.language = NVL(p_file_line_language_tbl(i), userenv('LANG'))
4217: AND jobs_tl.name = p_job_name_tbl(i)
4218: AND jobs_b.business_group_id = PO_PDOI_PARAMS.g_sys.def_business_group_id
4219: AND PO_PDOI_PARAMS.g_sys.def_business_group_id =
4220: DECODE(p_job_business_group_name_tbl(i), NULL,
4221: PO_PDOI_PARAMS.g_sys.def_business_group_id,
4222: x_job_business_group_id_tbl(i))
4223: AND TRUNC(sysdate) BETWEEN TRUNC(NVL(jobs_b.date_from, sysdate))
4217: AND jobs_tl.name = p_job_name_tbl(i)
4218: AND jobs_b.business_group_id = PO_PDOI_PARAMS.g_sys.def_business_group_id
4219: AND PO_PDOI_PARAMS.g_sys.def_business_group_id =
4220: DECODE(p_job_business_group_name_tbl(i), NULL,
4221: PO_PDOI_PARAMS.g_sys.def_business_group_id,
4222: x_job_business_group_id_tbl(i))
4223: AND TRUNC(sysdate) BETWEEN TRUNC(NVL(jobs_b.date_from, sysdate))
4224: AND TRUNC(NVL(jobs_b.date_to, sysdate));
4225:
4272: X_job_id_tbl(i) IS NULL AND
4273: p_job_business_group_name_tbl(i) IS NULL AND
4274: x_job_business_group_id_tbl(i) IS NULL) THEN
4275: x_job_business_group_id_tbl(i) :=
4276: PO_PDOI_PARAMS.g_sys.def_business_group_id;
4277: END IF;
4278: END LOOP;
4279:
4280: d_position := 60;
4352: d_position := 10;
4353:
4354: l_result :=
4355: FND_FLEX_EXT.GET_CCID('INV', 'MCAT',
4356: PO_PDOI_PARAMS.g_sys.def_structure_id,
4357: to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),
4358: p_category_tbl(i));
4359:
4360: IF (PO_LOG.d_stmt) THEN
4936: WHERE p_template_name_tbl(i) IS NOT NULL
4937: AND x_template_id_tbl(i) IS NULL
4938: AND template_name = p_template_name_tbl(i)
4939: AND NVL(context_organization_id,
4940: PO_PDOI_PARAMS.g_sys.def_inv_org_id) =
4941: PO_PDOI_PARAMS.g_sys.def_inv_org_id;
4942:
4943: d_position := 10;
4944:
4937: AND x_template_id_tbl(i) IS NULL
4938: AND template_name = p_template_name_tbl(i)
4939: AND NVL(context_organization_id,
4940: PO_PDOI_PARAMS.g_sys.def_inv_org_id) =
4941: PO_PDOI_PARAMS.g_sys.def_inv_org_id;
4942:
4943: d_position := 10;
4944:
4945: -- read result from temp table, and delete the records from temp table
5247: mtl_units_of_measure uom
5248: WHERE item.inventory_item_id = p_item_id_tbl(i)
5249: AND item_tl.inventory_item_id = item.inventory_item_id
5250: AND item_cat.inventory_item_id = item.inventory_item_id
5251: AND item.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5252: AND item_tl.language = USERENV('LANG')
5253: AND item_tl.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5254: AND item_cat.category_set_id = PO_PDOI_PARAMS.g_sys.def_cat_set_id
5255: AND item_cat.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5249: AND item_tl.inventory_item_id = item.inventory_item_id
5250: AND item_cat.inventory_item_id = item.inventory_item_id
5251: AND item.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5252: AND item_tl.language = USERENV('LANG')
5253: AND item_tl.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5254: AND item_cat.category_set_id = PO_PDOI_PARAMS.g_sys.def_cat_set_id
5255: AND item_cat.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5256: AND item.secondary_uom_code = uom.uom_code(+);
5257:
5250: AND item_cat.inventory_item_id = item.inventory_item_id
5251: AND item.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5252: AND item_tl.language = USERENV('LANG')
5253: AND item_tl.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5254: AND item_cat.category_set_id = PO_PDOI_PARAMS.g_sys.def_cat_set_id
5255: AND item_cat.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5256: AND item.secondary_uom_code = uom.uom_code(+);
5257:
5258: d_position := 10;
5251: AND item.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5252: AND item_tl.language = USERENV('LANG')
5253: AND item_tl.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5254: AND item_cat.category_set_id = PO_PDOI_PARAMS.g_sys.def_cat_set_id
5255: AND item_cat.organization_id = PO_PDOI_PARAMS.g_sys.def_inv_org_id
5256: AND item.secondary_uom_code = uom.uom_code(+);
5257:
5258: d_position := 10;
5259:
5913: IF (x_lines.line_num_tbl(i) IS NULL) THEN
5914: IF (x_lines.hd_action_tbl(i) <> PO_PDOI_CONSTANTS.g_ACTION_UPDATE AND
5915: x_lines.error_flag_tbl(i) = FND_API.g_FALSE AND
5916: NOT (x_lines.order_type_lookup_code_tbl(i) = 'AMOUNT' AND
5917: PO_PDOI_PARAMS.g_request.document_type =
5918: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET)) THEN
5919: IF (PO_LOG.d_stmt) THEN
5920: PO_LOG.stmt(d_module, d_position, 'processing index', i);
5921: END IF;
6708: PO_LOG.proc_begin(d_module);
6709: END IF;
6710:
6711: -- get default master org id
6712: l_def_master_org_id := PO_PDOI_PARAMS.g_sys.master_inv_org_id;
6713:
6714: IF (PO_LOG.d_stmt) THEN
6715: PO_LOG.stmt(d_module, d_position, 'l_def_master_org_id',
6716: l_def_master_org_id);
7993: --Start of Comments
7994: --Name: handle_err_tolerance
7995: --Function: This procedure maintains line processing information for each
7996: -- document. It also handles the error tolerance for Catalog Upload.
7997: -- Update PO_PDOI_PARAMS.g_docs_info(intf_header_id).number_of_processed_lines
7998: -- for each line.
7999: --
8000: -- If line contains error, increment
8001: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).number_of_errored_lines
7997: -- Update PO_PDOI_PARAMS.g_docs_info(intf_header_id).number_of_processed_lines
7998: -- for each line.
7999: --
8000: -- If line contains error, increment
8001: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).number_of_errored_lines
8002: --
8003: -- If the number of errored lines exceeds the error tolerance, then set
8004: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).err_tolerance_exceeded to TRUE and
8005: -- set x_lines.need_to_reject_flag_tbl to TRUE.
8000: -- If line contains error, increment
8001: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).number_of_errored_lines
8002: --
8003: -- If the number of errored lines exceeds the error tolerance, then set
8004: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).err_tolerance_exceeded to TRUE and
8005: -- set x_lines.need_to_reject_flag_tbl to TRUE.
8006: --
8007: -- If the line does not have error, increment
8008: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).number_of_valid_lines
8004: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).err_tolerance_exceeded to TRUE and
8005: -- set x_lines.need_to_reject_flag_tbl to TRUE.
8006: --
8007: -- If the line does not have error, increment
8008: -- PO_PDOI_PARAMS.g_docs_info(intf_header_id).number_of_valid_lines
8009: --Parameters:
8010: --IN OUT:
8011: -- x_lines
8012: -- record which stores all the line rows within the batch;
8021: d_api_name CONSTANT VARCHAR2(30) := 'handle_err_tolerance';
8022: d_module CONSTANT VARCHAR2(255) := d_pkg_name || d_api_name || '.';
8023: d_position NUMBER;
8024:
8025: l_err_lines_tolerance NUMBER := PO_PDOI_PARAMS.g_request.err_lines_tolerance;
8026: l_intf_header_id NUMBER;
8027: l_num_errored_lines NUMBER;
8028: l_num_processed_lines NUMBER;
8029: l_num_valid_lines NUMBER;
8047: END IF;
8048:
8049: d_position := 10;
8050:
8051: IF (PO_PDOI_PARAMS.g_request.calling_module = PO_PDOI_CONSTANTS.g_call_mod_CATALOG_UPLOAD AND
8052: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).err_tolerance_exceeded = FND_API.G_TRUE ) THEN
8053: x_lines.need_to_reject_flag_tbl(i) := FND_API.g_TRUE;
8054:
8055: -- bug 5215781:
8048:
8049: d_position := 10;
8050:
8051: IF (PO_PDOI_PARAMS.g_request.calling_module = PO_PDOI_CONSTANTS.g_call_mod_CATALOG_UPLOAD AND
8052: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).err_tolerance_exceeded = FND_API.G_TRUE ) THEN
8053: x_lines.need_to_reject_flag_tbl(i) := FND_API.g_TRUE;
8054:
8055: -- bug 5215781:
8056: -- collect ids of lines for which errors on them would be removed from error interface
8057: -- table since error tolerance threshold is hit before them
8058: l_remove_err_line_tbl.EXTEND;
8059: l_remove_err_line_tbl(l_remove_err_line_tbl.COUNT) := x_lines.intf_line_id_tbl(i);
8060: ELSE
8061: l_num_processed_lines := PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_processed_lines + 1;
8062: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_processed_lines := l_num_processed_lines;
8063:
8064: IF (PO_LOG.d_stmt) THEN
8065: PO_LOG.stmt(d_module, d_position, 'num_processed_lines', l_num_processed_lines);
8058: l_remove_err_line_tbl.EXTEND;
8059: l_remove_err_line_tbl(l_remove_err_line_tbl.COUNT) := x_lines.intf_line_id_tbl(i);
8060: ELSE
8061: l_num_processed_lines := PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_processed_lines + 1;
8062: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_processed_lines := l_num_processed_lines;
8063:
8064: IF (PO_LOG.d_stmt) THEN
8065: PO_LOG.stmt(d_module, d_position, 'num_processed_lines', l_num_processed_lines);
8066: END IF;
8067:
8068: d_position := 20;
8069:
8070: IF x_lines.error_flag_tbl(i) = FND_API.g_TRUE THEN
8071: l_num_errored_lines := PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_errored_lines + 1;
8072: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_errored_lines := l_num_errored_lines;
8073:
8074: -- set corresponding line to ERROR
8075: PO_PDOI_PARAMS.g_errored_lines(x_lines.intf_line_id_tbl(i)) := 'Y';
8068: d_position := 20;
8069:
8070: IF x_lines.error_flag_tbl(i) = FND_API.g_TRUE THEN
8071: l_num_errored_lines := PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_errored_lines + 1;
8072: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_errored_lines := l_num_errored_lines;
8073:
8074: -- set corresponding line to ERROR
8075: PO_PDOI_PARAMS.g_errored_lines(x_lines.intf_line_id_tbl(i)) := 'Y';
8076:
8071: l_num_errored_lines := PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_errored_lines + 1;
8072: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_errored_lines := l_num_errored_lines;
8073:
8074: -- set corresponding line to ERROR
8075: PO_PDOI_PARAMS.g_errored_lines(x_lines.intf_line_id_tbl(i)) := 'Y';
8076:
8077: IF (PO_LOG.d_stmt) THEN
8078: PO_LOG.stmt(d_module, d_position, 'num_errored_lines', l_num_errored_lines);
8079: END IF;
8079: END IF;
8080:
8081: d_position := 30;
8082:
8083: IF (PO_PDOI_PARAMS.g_request.calling_module =
8084: PO_PDOI_CONSTANTS.g_call_mod_CATALOG_UPLOAD AND
8085: l_num_errored_lines = l_err_lines_tolerance) THEN
8086:
8087: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).err_tolerance_exceeded := FND_API.g_TRUE;
8083: IF (PO_PDOI_PARAMS.g_request.calling_module =
8084: PO_PDOI_CONSTANTS.g_call_mod_CATALOG_UPLOAD AND
8085: l_num_errored_lines = l_err_lines_tolerance) THEN
8086:
8087: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).err_tolerance_exceeded := FND_API.g_TRUE;
8088: END IF;
8089:
8090: d_position := 40;
8091: ELSE
8091: ELSE
8092: d_position := 50;
8093:
8094: -- maintain number of valid lines
8095: l_num_valid_lines := PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_valid_lines + 1;
8096: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_valid_lines := l_num_valid_lines;
8097:
8098: END IF;
8099: END IF;
8092: d_position := 50;
8093:
8094: -- maintain number of valid lines
8095: l_num_valid_lines := PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_valid_lines + 1;
8096: PO_PDOI_PARAMS.g_docs_info(l_intf_header_id).number_of_valid_lines := l_num_valid_lines;
8097:
8098: END IF;
8099: END IF;
8100: END LOOP;