69: END IF;
70:
71: PO_TIMING_UTL.start_time (PO_PDOI_CONSTANTS.g_T_PREPROCESSING);
72:
73: IF (PO_PDOI_PARAMS.g_request.document_type <>
74: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD
75: AND
76: PO_PDOI_PARAMS.g_request.process_code =
77: PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED) THEN
72:
73: IF (PO_PDOI_PARAMS.g_request.document_type <>
74: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD
75: AND
76: PO_PDOI_PARAMS.g_request.process_code =
77: PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED) THEN
78:
79: update_dependent_line_acc_flag; -- bug5149827 - Renamed the procedure
80: END IF;
175: IF (PO_LOG.d_proc) THEN
176: PO_LOG.proc_begin (d_module);
177: END IF;
178:
179: IF (PO_PDOI_PARAMS.g_request.interface_header_id IS NOT NULL) THEN
180:
181: -- (1) Update price break acceptance flag according to the acceptance
182: -- status of the parent line
183:
188: INTO l_intf_line_id_tbl,
189: l_price_chg_accept_flag_tbl,
190: l_price_break_flag_tbl
191: FROM po_lines_interface
192: WHERE interface_header_id = PO_PDOI_PARAMS.g_request.interface_header_id
193: AND NVL(process_code, PO_PDOI_CONSTANTS.g_process_code_PENDING) =
194: PO_PDOI_CONSTANTS.g_process_code_NOTIFIED
195: ORDER BY po_line_id, interface_line_id;
196:
242: ( SELECT parent_lines.price_chg_accept_flag
243: FROM po_lines_interface parent_lines
244: WHERE lines.parent_interface_line_id =
245: parent_lines.interface_line_id )
246: WHERE lines.interface_header_id = PO_PDOI_PARAMS.g_request.interface_header_id
247: AND NVL(lines.process_code, PO_PDOI_CONSTANTS.g_process_code_PENDING) =
248: PO_PDOI_CONSTANTS.g_process_code_NOTIFIED
249: AND lines.parent_interface_line_id IS NOT NULL;
250:
257:
258: -- Reject all records that have not been accepted
259: UPDATE po_lines_interface
260: SET process_code = PO_PDOI_CONSTANTS.g_PROCESS_CODE_REJECTED
261: WHERE interface_header_id = PO_PDOI_PARAMS.g_request.interface_header_id
262: AND process_code = PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED
263: AND price_chg_accept_flag = 'N';
264:
265: d_position := 30;
304: SELECT PHI.interface_header_id,
305: PHI.process_code,
306: PHI.request_id
307: FROM po_headers_interface PHI
308: WHERE PHI.org_id = PO_PDOI_PARAMS.g_request.org_id
309: AND NVL(PHI.process_code, PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING) <>
310: PO_PDOI_CONSTANTS.g_PROCESS_CODE_REJECTED
311: AND (PHI.batch_id = PO_PDOI_PARAMS.g_request.batch_id
312: OR
307: FROM po_headers_interface PHI
308: WHERE PHI.org_id = PO_PDOI_PARAMS.g_request.org_id
309: AND NVL(PHI.process_code, PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING) <>
310: PO_PDOI_CONSTANTS.g_PROCESS_CODE_REJECTED
311: AND (PHI.batch_id = PO_PDOI_PARAMS.g_request.batch_id
312: OR
313: PO_PDOI_PARAMS.g_request.batch_id IS NULL)
314: AND (PHI.process_code = PO_PDOI_PARAMS.g_request.process_code
315: OR
309: AND NVL(PHI.process_code, PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING) <>
310: PO_PDOI_CONSTANTS.g_PROCESS_CODE_REJECTED
311: AND (PHI.batch_id = PO_PDOI_PARAMS.g_request.batch_id
312: OR
313: PO_PDOI_PARAMS.g_request.batch_id IS NULL)
314: AND (PHI.process_code = PO_PDOI_PARAMS.g_request.process_code
315: OR
316: ( NVL(PO_PDOI_PARAMS.g_request.process_code,
317: PO_PDOI_CONSTANTS.g_process_code_PENDING) <>
310: PO_PDOI_CONSTANTS.g_PROCESS_CODE_REJECTED
311: AND (PHI.batch_id = PO_PDOI_PARAMS.g_request.batch_id
312: OR
313: PO_PDOI_PARAMS.g_request.batch_id IS NULL)
314: AND (PHI.process_code = PO_PDOI_PARAMS.g_request.process_code
315: OR
316: ( NVL(PO_PDOI_PARAMS.g_request.process_code,
317: PO_PDOI_CONSTANTS.g_process_code_PENDING) <>
318: PO_PDOI_CONSTANTS.g_process_code_NOTIFIED
312: OR
313: PO_PDOI_PARAMS.g_request.batch_id IS NULL)
314: AND (PHI.process_code = PO_PDOI_PARAMS.g_request.process_code
315: OR
316: ( NVL(PO_PDOI_PARAMS.g_request.process_code,
317: PO_PDOI_CONSTANTS.g_process_code_PENDING) <>
318: PO_PDOI_CONSTANTS.g_process_code_NOTIFIED
319: AND
320: PHI.process_code = PO_PDOI_CONSTANTS.g_process_code_IN_PROCESS)
319: AND
320: PHI.process_code = PO_PDOI_CONSTANTS.g_process_code_IN_PROCESS)
321: OR
322: PHI.process_code IS NULL)
323: AND (PHI.interface_header_id = PO_PDOI_PARAMS.g_request.interface_header_id
324: OR
325: PO_PDOI_PARAMS.g_request.interface_header_id IS NULL)
326: AND (PHI.document_type_code = PO_PDOI_PARAMS.g_request.document_type
327: OR
321: OR
322: PHI.process_code IS NULL)
323: AND (PHI.interface_header_id = PO_PDOI_PARAMS.g_request.interface_header_id
324: OR
325: PO_PDOI_PARAMS.g_request.interface_header_id IS NULL)
326: AND (PHI.document_type_code = PO_PDOI_PARAMS.g_request.document_type
327: OR
328: PHI.document_type_code IS NULL)
329: AND (PHI.processing_id IS NULL
322: PHI.process_code IS NULL)
323: AND (PHI.interface_header_id = PO_PDOI_PARAMS.g_request.interface_header_id
324: OR
325: PO_PDOI_PARAMS.g_request.interface_header_id IS NULL)
326: AND (PHI.document_type_code = PO_PDOI_PARAMS.g_request.document_type
327: OR
328: PHI.document_type_code IS NULL)
329: AND (PHI.processing_id IS NULL
330: OR
327: OR
328: PHI.document_type_code IS NULL)
329: AND (PHI.processing_id IS NULL
330: OR
331: PHI.processing_id <> PO_PDOI_PARAMS.g_processing_id)
332: -- bug5471513
333: -- Catalog uploaded records should only be processed by catalog upload
334: -- request
335: -- bug5463188
333: -- Catalog uploaded records should only be processed by catalog upload
334: -- request
335: -- bug5463188
336: -- Buyer acceptance process shouldn't worry about the calling module
337: AND ( PO_PDOI_PARAMS.g_request.process_code =
338: PO_PDOI_CONSTANTS.g_process_code_NOTIFIED
339: OR
340: DECODE (PHI.interface_source_code,
341: PO_PDOI_CONSTANTS.g_CALL_MOD_CATALOG_UPLOAD,
339: OR
340: DECODE (PHI.interface_source_code,
341: PO_PDOI_CONSTANTS.g_CALL_MOD_CATALOG_UPLOAD,
342: 1, 2) =
343: DECODE (PO_PDOI_PARAMS.g_request.calling_module,
344: PO_PDOI_CONSTANTS.g_CALL_MOD_CATALOG_UPLOAD,
345: 1, 2));
346:
347:
360: --
361: -- ECO 4420269
362: -- If batch id is specified, update the records that match the batch id but
363: -- do not have org_id specified.
364: IF (PO_PDOI_PARAMS.g_request.batch_id IS NOT NULL) THEN
365:
366: UPDATE po_headers_interface PHI
367: SET PHI.org_id = PO_PDOI_PARAMS.g_request.org_id
368: WHERE PHI.batch_id = PO_PDOI_PARAMS.g_request.batch_id
363: -- do not have org_id specified.
364: IF (PO_PDOI_PARAMS.g_request.batch_id IS NOT NULL) THEN
365:
366: UPDATE po_headers_interface PHI
367: SET PHI.org_id = PO_PDOI_PARAMS.g_request.org_id
368: WHERE PHI.batch_id = PO_PDOI_PARAMS.g_request.batch_id
369: AND PHI.org_id IS NULL;
370:
371: IF (PO_LOG.d_stmt) THEN
364: IF (PO_PDOI_PARAMS.g_request.batch_id IS NOT NULL) THEN
365:
366: UPDATE po_headers_interface PHI
367: SET PHI.org_id = PO_PDOI_PARAMS.g_request.org_id
368: WHERE PHI.batch_id = PO_PDOI_PARAMS.g_request.batch_id
369: AND PHI.org_id IS NULL;
370:
371: IF (PO_LOG.d_stmt) THEN
372: PO_LOG.stmt(d_module, d_position, 'updatec org id for ' ||
399: d_position := 30;
400: -- Header level assignment
401: FORALL i IN 1..l_intf_header_id_tbl.COUNT
402: UPDATE po_headers_interface
403: SET processing_id = PO_PDOI_PARAMS.g_processing_id,
404: process_code = PO_PDOI_CONSTANTS.g_process_code_IN_PROCESS,
405: processing_round_num = NULL, -- reset processing number
406: request_id = FND_GLOBAL.conc_request_id,
407: approval_status = NVL(approval_status,
404: process_code = PO_PDOI_CONSTANTS.g_process_code_IN_PROCESS,
405: processing_round_num = NULL, -- reset processing number
406: request_id = FND_GLOBAL.conc_request_id,
407: approval_status = NVL(approval_status,
408: PO_PDOI_PARAMS.g_request.approved_status)
409: WHERE interface_header_id = l_intf_header_id_tbl(i);
410:
411: IF (PO_LOG.d_stmt) THEN
412: PO_LOG.stmt(d_module, d_position, 'after header assignment. Updated ' ||
416: d_position := 40;
417: -- Line level assignment
418: FORALL i IN 1..l_intf_header_id_tbl.COUNT
419: UPDATE po_lines_interface
420: SET processing_id = PO_PDOI_PARAMS.g_processing_id,
421: action = DECODE (action,
422: PO_PDOI_CONSTANTS.g_action_ADD, action,
423: NULL), -- null out process code unless it is force add
424: process_code = DECODE (PO_PDOI_PARAMS.g_request.process_code,
420: SET processing_id = PO_PDOI_PARAMS.g_processing_id,
421: action = DECODE (action,
422: PO_PDOI_CONSTANTS.g_action_ADD, action,
423: NULL), -- null out process code unless it is force add
424: process_code = DECODE (PO_PDOI_PARAMS.g_request.process_code,
425: PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED,
426: PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING,
427: process_code) -- bug5149827
428: WHERE interface_header_id = l_intf_header_id_tbl(i)
425: PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED,
426: PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING,
427: process_code) -- bug5149827
428: WHERE interface_header_id = l_intf_header_id_tbl(i)
429: AND (PO_PDOI_PARAMS.g_request.process_code = process_code
430: OR
431: ( NVL(PO_PDOI_PARAMS.g_request.process_code,
432: PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING) <>
433: PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED AND
427: process_code) -- bug5149827
428: WHERE interface_header_id = l_intf_header_id_tbl(i)
429: AND (PO_PDOI_PARAMS.g_request.process_code = process_code
430: OR
431: ( NVL(PO_PDOI_PARAMS.g_request.process_code,
432: PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING) <>
433: PO_PDOI_CONSTANTS.g_PROCESS_CODE_NOTIFIED AND
434: NVL(process_code, PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING)
435: IN (PO_PDOI_CONSTANTS.g_PROCESS_CODE_PENDING,
451:
452: d_position := 50;
453: FORALL i IN 1..l_intf_line_id_tbl.COUNT
454: UPDATE po_line_locations_interface
455: SET processing_id = PO_PDOI_PARAMS.g_processing_id
456: WHERE interface_line_id = l_intf_line_id_tbl(i);
457:
458: IF (PO_LOG.d_stmt) THEN
459: PO_LOG.stmt(d_module, d_position, 'after line location assignment. ' ||
462:
463: d_position := 60;
464: FORALL i IN 1..l_intf_line_id_tbl.COUNT
465: UPDATE po_price_diff_interface
466: SET processing_id = PO_PDOI_PARAMS.g_processing_id
467: WHERE interface_line_id = l_intf_line_id_tbl(i);
468:
469: IF (PO_LOG.d_stmt) THEN
470: PO_LOG.stmt(d_module, d_position, 'after price diff assignment. ' ||
471: 'Updated ' || SQL%ROWCOUNT || ' records');
472: END IF;
473:
474: d_position := 70;
475: IF (PO_PDOI_PARAMS.g_request.document_type =
476: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
477: FORALL i IN 1..l_intf_line_id_tbl.COUNT
478: UPDATE po_distributions_interface
479: SET processing_id = PO_PDOI_PARAMS.g_processing_id
475: IF (PO_PDOI_PARAMS.g_request.document_type =
476: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
477: FORALL i IN 1..l_intf_line_id_tbl.COUNT
478: UPDATE po_distributions_interface
479: SET processing_id = PO_PDOI_PARAMS.g_processing_id
480: WHERE interface_line_id = l_intf_line_id_tbl(i);
481:
482: IF (PO_LOG.d_stmt) THEN
483: PO_LOG.stmt(d_module, d_position, 'after distirbution assignment. ' ||
485: END IF;
486: END IF;
487:
488: d_position := 80;
489: IF (PO_PDOI_PARAMS.g_request.document_type <>
490: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
491:
492: d_position := 90;
493: FORALL i IN 1..l_intf_line_id_tbl.COUNT
491:
492: d_position := 90;
493: FORALL i IN 1..l_intf_line_id_tbl.COUNT
494: UPDATE po_attr_values_interface
495: SET processing_id = PO_PDOI_PARAMS.g_processing_id
496: WHERE interface_line_id = l_intf_line_id_tbl(i);
497:
498: IF (PO_LOG.d_stmt) THEN
499: PO_LOG.stmt(d_module, d_position, 'after attr value assignment. ' ||
502:
503: d_position := 100;
504: FORALL i IN 1..l_intf_line_id_tbl.COUNT
505: UPDATE po_attr_values_tlp_interface
506: SET processing_id = PO_PDOI_PARAMS.g_processing_id
507: WHERE interface_line_id = l_intf_line_id_tbl(i);
508:
509: IF (PO_LOG.d_stmt) THEN
510: PO_LOG.stmt(d_module, d_position, 'after attr values tlp assignment.' ||
651: SELECT interface_header_id, action
652: BULK COLLECT
653: INTO l_reject_tbl, l_action_tbl
654: FROM po_headers_interface
655: WHERE processing_id = PO_PDOI_PARAMS.g_processing_id
656: AND (action IS NULL
657: OR
658: (PO_PDOI_PARAMS.g_request.document_type IN
659: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
654: FROM po_headers_interface
655: WHERE processing_id = PO_PDOI_PARAMS.g_processing_id
656: AND (action IS NULL
657: OR
658: (PO_PDOI_PARAMS.g_request.document_type IN
659: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
660: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION) AND
661: action NOT IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
662: PO_PDOI_CONSTANTS.g_ACTION_ADD,
662: PO_PDOI_CONSTANTS.g_ACTION_ADD,
663: PO_PDOI_CONSTANTS.g_ACTION_REPLACE,
664: PO_PDOI_CONSTANTS.g_ACTION_UPDATE))
665: OR
666: (PO_PDOI_PARAMS.g_request.document_type = PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD AND
667: action NOT IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
668: PO_PDOI_CONSTANTS.g_ACTION_ADD,
669: PO_PDOI_CONSTANTS.g_ACTION_UPDATE)));
670:
675: l_reject_tbl.COUNT);
676: END IF;
677:
678: FOR i IN 1..l_reject_tbl.COUNT LOOP
679: IF (PO_PDOI_PARAMS.g_request.document_type = PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD
680: AND
681: l_action_tbl(i) = PO_PDOI_CONSTANTS.g_ACTION_REPLACE) THEN
682:
683: l_message_name := 'PO_PDOI_STD_ACTION';
769: WHERE vendor_id IS NULL
770: AND po_header_id IS NULL -- if po_header_id is already provided,
771: -- skip vendor_id derivation as it is
772: -- not needed
773: AND processing_id = PO_PDOI_PARAMS.g_processing_id;
774:
775: d_position := 10;
776:
777: PO_PDOI_UTL.generate_ordered_num_list
903: vendor_doc_num
904: BULK COLLECT INTO l_interface_header_id_tbl, l_vendor_id_tbl,
905: l_start_date_tbl, l_end_date_tbl, l_vendor_doc_num_tbl
906: FROM po_headers_interface
907: WHERE processing_id = PO_PDOI_PARAMS.g_processing_id
908: AND action = PO_PDOI_CONSTANTS.g_ACTION_REPLACE;
909:
910: IF (l_interface_header_id_tbl IS NULL OR l_interface_header_id_tbl.COUNT = 0) THEN
911: d_position := 10;
956: d_position := 50;
957:
958: IF (l_valid = FND_API.G_TRUE) THEN
959:
960: IF (PO_PDOI_PARAMS.g_request.document_type =
961: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION) THEN
962:
963: d_position := 60;
964:
977: AND quote_vendor_quote_number = l_vendor_doc_num_tbl(i)
978: AND TRUNC(l_start_date_tbl(i)) >= TRUNC(NVL(start_date, SYSDATE))
979: AND TRUNC(NVL(l_end_date_tbl(i), SYSDATE)) <= TRUNC(NVL(end_date, SYSDATE));
980:
981: ELSIF (PO_PDOI_PARAMS.g_request.document_type =
982: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET) THEN
983:
984: d_position := 70;
985: -- Blanket: Match vendor doc num with vendor_order_num
1062: -- For blanket, make sure that all releases should not have release
1063: -- date greater than the start date of the newly replaced blanket, whcih
1064: -- is equivalent to the end date of the old blanket
1065:
1066: IF (PO_PDOI_PARAMS.g_request.document_type =
1067: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET) THEN
1068:
1069: d_position := 120;
1070: check_release_dates
1315: l_po_header_id_tbl,
1316: l_vendor_doc_num_tbl,
1317: l_document_num_tbl
1318: FROM po_headers_interface
1319: WHERE processing_id = PO_PDOI_PARAMS.g_processing_id
1320: AND action = PO_PDOI_CONSTANTS.g_ACTION_UPDATE;
1321:
1322: IF (l_interface_header_id_tbl IS NULL OR l_interface_header_id_tbl.COUNT = 0) THEN
1323: d_position := 10;
1323: d_position := 10;
1324: RETURN;
1325: END IF;
1326:
1327: IF (PO_PDOI_PARAMS.g_request.calling_module =
1328: PO_PDOI_CONSTANTS.g_call_mod_CATALOG_UPLOAD) THEN
1329: l_skip_cat_upload_chk := FND_API.G_TRUE;
1330: ELSE
1331: l_skip_cat_upload_chk := FND_API.G_FALSE;
1354: INTO l_existing_header,
1355: l_consigned_consumption_flag
1356: FROM po_headers POH
1357: WHERE POH.po_header_id = l_po_header_id_tbl(i)
1358: AND POH.type_lookup_code = PO_PDOI_PARAMS.g_request.document_type;
1359:
1360: IF (l_existing_header = 'N' OR l_consigned_consumption_flag = 'Y') THEN
1361:
1362: IF (PO_LOG.d_stmt) THEN
1369:
1370: d_position := 30;
1371:
1372: IF (l_valid = FND_API.g_TRUE) THEN
1373: IF (PO_PDOI_PARAMS.g_request.document_type IN
1374: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1375: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD)) THEN
1376:
1377: d_position := 40;
1387: p_document_type => l_doc_type,
1388: p_document_subtype => l_doc_subtype,
1389: p_mode => 'CHECK_UPDATEABLE',
1390: p_calling_module => PO_DRAFTS_PVT.g_call_mod_PDOI,
1391: p_role => PO_PDOI_PARAMS.g_request.role,
1392: p_skip_cat_upload_chk => l_skip_cat_upload_chk,
1393: x_po_status_rec => l_status_rec,
1394: x_return_status => l_return_status
1395: );
1408:
1409: IF (l_valid <> FND_API.g_TRUE) THEN
1410: d_position := 70;
1411:
1412: IF (PO_PDOI_PARAMS.g_request.document_type =
1413: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
1414: l_message_name := 'PO_PDOI_INVALID_ORIG_STD_PO';
1415: ELSE
1416: l_message_name := 'PO_PDOI_INVALID_ORIG_CATALOG';
1450:
1451: IF (l_vendor_doc_num_tbl(i) IS NOT NULL) THEN
1452: -- Definitely need to match vendor doc num. Matching document num
1453: -- will be performed, if provided
1454: IF (PO_PDOI_PARAMS.g_request.document_type IN
1455: (PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD,
1456: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET)) THEN
1457:
1458: d_position := 90;
1464: FROM po_headers POH
1465: WHERE POH.vendor_id = l_vendor_id_tbl(i)
1466: AND POH.vendor_order_num = l_vendor_doc_num_tbl(i)
1467: AND POH.segment1 = NVL(l_document_num_tbl(i), POH.segment1)
1468: AND POH.type_lookup_code = PO_PDOI_PARAMS.g_request.document_type
1469: AND (POH.type_lookup_code = 'STANDARD'
1470: OR
1471: (POH.type_lookup_code = 'BLANKET'
1472: AND TRUNC(NVL(l_start_date_tbl(i), SYSDATE)) >=
1475: TRUNC(nvl(POH.end_date, SYSDATE))))
1476: AND NVL(POH.closed_code, 'OPEN') <> 'FINALLY CLOSED'
1477: AND NVL(POH.cancel_flag, 'N') <> 'Y';
1478:
1479: ELSIF (PO_PDOI_PARAMS.g_request.document_type =
1480: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION) THEN
1481: d_position := 100;
1482: SELECT POH.po_header_id,
1483: NVL(POH.consigned_consumption_flag, 'N')
1487: FROM po_headers POH
1488: WHERE POH.vendor_id = l_vendor_id_tbl(i)
1489: AND POH.quote_vendor_quote_number = l_vendor_doc_num_tbl(i)
1490: AND POH.segment1 = NVL(l_document_num_tbl(i), POH.segment1)
1491: AND POH.type_lookup_code = PO_PDOI_PARAMS.g_request.document_type
1492: AND POH.type_lookup_code = 'QUOTATION'
1493: AND TRUNC(NVL(l_start_date_tbl(i), SYSDATE)) >=
1494: TRUNC(NVL(POH.start_date, SYSDATE))
1495: AND TRUNC(nvl(l_end_date_tbl(i), SYSDATE)) <=
1503: d_position := 110;
1504: -- Definitely need to match document num. Matching vendor doc num
1505: -- will be performed, if provided
1506:
1507: IF (PO_PDOI_PARAMS.g_request.document_type IN
1508: (PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD,
1509: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET)) THEN
1510:
1511: SELECT POH.po_header_id,
1518: AND NVL(POH.vendor_order_num, FND_API.G_MISS_CHAR) =
1519: NVL(l_vendor_doc_num_tbl(i),
1520: NVL(POH.vendor_order_num, FND_API.G_MISS_CHAR))
1521: AND POH.segment1 = l_document_num_tbl(i)
1522: AND POH.type_lookup_code = PO_PDOI_PARAMS.g_request.document_type
1523: AND (POH.type_lookup_code = 'STANDARD'
1524: OR
1525: (POH.type_lookup_code = 'BLANKET'
1526: AND TRUNC(NVL(l_start_date_tbl(i), SYSDATE)) >=
1529: TRUNC(nvl(POH.end_date, SYSDATE))))
1530: AND NVL(POH.closed_code, 'OPEN') <> 'FINALLY CLOSED'
1531: AND NVL(POH.cancel_flag, 'N') <> 'Y';
1532:
1533: ELSIF (PO_PDOI_PARAMS.g_request.document_type =
1534: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION) THEN
1535:
1536: SELECT POH.po_header_id,
1537: NVL(POH.consigned_consumption_flag, 'N')
1543: AND NVL(POH.quote_vendor_quote_number, FND_API.G_MISS_CHAR) =
1544: NVL(l_vendor_doc_num_tbl(i),
1545: NVL(POH.quote_vendor_quote_number, FND_API.G_MISS_CHAR))
1546: AND POH.segment1 = l_document_num_tbl(i)
1547: AND POH.type_lookup_code = PO_PDOI_PARAMS.g_request.document_type
1548: AND POH.type_lookup_code = 'QUOTATION'
1549: AND TRUNC(NVL(l_start_date_tbl(i), SYSDATE)) >=
1550: TRUNC(NVL(POH.start_date, SYSDATE))
1551: AND TRUNC(nvl(l_end_date_tbl(i), SYSDATE)) <=
1572: END IF;
1573:
1574: IF (l_orig_po_header_id_tbl.COUNT <> 1) THEN
1575: IF (l_orig_po_header_id_tbl.COUNT = 0) THEN
1576: IF (PO_PDOI_PARAMS.g_request.document_type =
1577: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
1578: l_message_name := 'PO_PDOI_INVALID_ORIG_STD_PO';
1579: ELSE
1580: l_message_name := 'PO_PDOI_INVALID_ORIG_CATALOG';
1579: ELSE
1580: l_message_name := 'PO_PDOI_INVALID_ORIG_CATALOG';
1581: END IF;
1582: ELSE
1583: IF (PO_PDOI_PARAMS.g_request.document_type =
1584: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
1585: l_message_name := 'PO_PDOI_MULTIPLE_STD_PO';
1586: ELSE
1587: l_message_name := 'PO_PDOI_INVALID_MULT_ORIG_CATG';
1602: l_valid := FND_API.g_FALSE;
1603: END IF;
1604:
1605: IF (l_valid = FND_API.g_TRUE) THEN
1606: IF (PO_PDOI_PARAMS.g_request.document_type IN
1607: (PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET,
1608: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD)) THEN
1609:
1610: d_position := 140;
1620: p_document_type => l_doc_type,
1621: p_document_subtype => l_doc_subtype,
1622: p_mode => 'CHECK_UPDATEABLE',
1623: p_calling_module => PO_DRAFTS_PVT.g_call_mod_PDOI,
1624: p_role => PO_PDOI_PARAMS.g_request.role,
1625: p_skip_cat_upload_chk => l_skip_cat_upload_chk,
1626: x_po_status_rec => l_status_rec,
1627: x_return_status => l_return_status
1628: );
1633: ELSE
1634: IF (l_orig_consumption_flag_tbl(1) = 'Y' OR
1635: l_status_rec.updatable_flag(1) = 'N') THEN
1636:
1637: IF (PO_PDOI_PARAMS.g_request.document_type =
1638: PO_PDOI_CONSTANTS.g_DOC_TYPE_STANDARD) THEN
1639: l_message_name := 'PO_PDOI_STD_PO_INVALID_STATUS';
1640: ELSE
1641: l_message_name := 'PO_PDOI_INVALID_ORIG_CATALOG';
1733: IF (PO_LOG.d_proc) THEN
1734: PO_LOG.proc_begin (d_module);
1735: END IF;
1736:
1737: IF (PO_PDOI_PARAMS.g_request.document_type =
1738: PO_PDOI_CONSTANTS.g_DOC_TYPE_QUOTATION) THEN
1739:
1740: SELECT POH.po_header_id,
1741: PHI.interface_header_id,
1753: AND TRUNC (NVL(PHI.expiration_date, SYSDATE)) <=
1754: TRUNC (NVL(POH.end_date, SYSDATE))
1755: AND NVL(POH.closed_code, 'OPEN') <> 'FINALLY CLOSED'
1756: AND NVL(POH.cancel_flag, 'N') <> 'Y'
1757: AND PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
1758: AND PHI.action IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
1759: PO_PDOI_CONSTANTS.g_ACTION_ADD);
1760:
1761: ELSIF (PO_PDOI_PARAMS.g_request.document_type =
1757: AND PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
1758: AND PHI.action IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
1759: PO_PDOI_CONSTANTS.g_ACTION_ADD);
1760:
1761: ELSIF (PO_PDOI_PARAMS.g_request.document_type =
1762: PO_PDOI_CONSTANTS.g_DOC_TYPE_BLANKET) THEN
1763:
1764: SELECT POH.po_header_id,
1765: PHI.interface_header_id,
1777: AND TRUNC (NVL(PHI.expiration_date, SYSDATE)) <=
1778: TRUNC (NVL(POH.end_date, SYSDATE))
1779: AND NVL(POH.closed_code, 'OPEN') <> 'FINALLY CLOSED'
1780: AND NVL(POH.cancel_flag, 'N') <> 'Y'
1781: AND PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
1782: AND PHI.action IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
1783: PO_PDOI_CONSTANTS.g_ACTION_ADD);
1784:
1785: END IF;
1851: -- For ORIGINAL, ADD or REPLACE action, new document will be created
1852: -- Need to assign a new po_header_id
1853: UPDATE po_headers_interface
1854: SET po_header_id = PO_HEADERS_S.nextval
1855: WHERE processing_id = PO_PDOI_PARAMS.g_processing_id
1856: AND po_header_id IS NULL
1857: AND action IN (PO_PDOI_CONSTANTS.g_ACTION_ORIGINAL,
1858: PO_PDOI_CONSTANTS.g_ACTION_ADD,
1859: PO_PDOI_CONSTANTS.g_ACTION_REPLACE);
1899: -- for processing later on
1900: CURSOR c_line_intf IS
1901: SELECT rowid
1902: FROM po_lines_interface
1903: WHERE processing_id = PO_PDOI_PARAMS.g_processing_id
1904: AND NVL(line_loc_populated_flag, 'N') = 'N';
1905:
1906: --SQL What: Get line location records that are just being populated
1907: --SQL Why: Need to populate interface_line_location_id to po distributions and
1911: SELECT PLLI.interface_line_id,
1912: PLLI.interface_line_location_id
1913: FROM po_line_locations_interface PLLI,
1914: po_lines_interface PLI
1915: WHERE PLLI.processing_id = PO_PDOI_PARAMS.g_processing_id
1916: AND PLLI.interface_line_id = PLI.interface_line_id
1917: AND NVL(PLI.line_loc_populated_flag, 'N') = 'N';
1918:
1919: l_rowid_tbl DBMS_SQL.urowid_table;
2145: -- Since the default line location has been populated,
2146: -- populate 'S' to line_loc_populated_flag
2147: UPDATE po_lines_interface
2148: SET line_loc_populated_flag = 'S'
2149: WHERE processing_id = PO_PDOI_PARAMS.g_processing_id
2150: AND NVL(line_loc_populated_flag, 'N') = 'N';
2151:
2152: IF (PO_LOG.d_proc) THEN
2153: PO_LOG.proc_end (d_module);