77: d_position := 30;
78:
79: -- If lines for a particular catalog name will get expired, move those
80: -- records to draft table and set expiration date for those lines
81: IF (PO_PDOI_PARAMS.g_request.calling_module =
82: PO_PDOI_CONSTANTS.g_CALL_MOD_CATALOG_UPLOAD
83: AND
84: PO_PDOI_PARAMS.g_request.catalog_to_expire IS NOT NULL) THEN
85:
80: -- records to draft table and set expiration date for those lines
81: IF (PO_PDOI_PARAMS.g_request.calling_module =
82: PO_PDOI_CONSTANTS.g_CALL_MOD_CATALOG_UPLOAD
83: AND
84: PO_PDOI_PARAMS.g_request.catalog_to_expire IS NOT NULL) THEN
85:
86: expire_lines_by_catalog_name;
87: END IF;
88: END IF;
155:
156: x_all_headers_processed := FND_API.G_FALSE;
157:
158: -- Increment round number
159: PO_PDOI_PARAMS.g_current_round_num := PO_PDOI_PARAMS.g_current_round_num + 1;
160:
161: IF (PO_LOG.d_stmt) THEN
162: PO_LOG.stmt(d_module, d_position, 'Current Round Number: ' ||
163: PO_PDOI_PARAMS.g_current_round_num);
159: PO_PDOI_PARAMS.g_current_round_num := PO_PDOI_PARAMS.g_current_round_num + 1;
160:
161: IF (PO_LOG.d_stmt) THEN
162: PO_LOG.stmt(d_module, d_position, 'Current Round Number: ' ||
163: PO_PDOI_PARAMS.g_current_round_num);
164: END IF;
165:
166: IF (PO_PDOI_PARAMS.g_original_doc_processed = FND_API.G_FALSE) THEN
167: d_position := 10;
162: PO_LOG.stmt(d_module, d_position, 'Current Round Number: ' ||
163: PO_PDOI_PARAMS.g_current_round_num);
164: END IF;
165:
166: IF (PO_PDOI_PARAMS.g_original_doc_processed = FND_API.G_FALSE) THEN
167: d_position := 10;
168:
169: -- First, we need to process NEW documents
170:
173: INTO l_intf_header_id_tbl
174: FROM (SELECT interface_header_id
175: FROM po_headers_interface
176: WHERE processing_round_num IS NULL
177: AND processing_id = PO_PDOI_PARAMS.g_processing_id
178: AND action IN (PO_PDOI_CONSTANTS.g_action_ORIGINAL,
179: PO_PDOI_CONSTANTS.g_action_ADD)
180: ORDER BY interface_header_id)
181: WHERE rownum <= PO_PDOI_PARAMS.g_request.batch_size;
177: AND processing_id = PO_PDOI_PARAMS.g_processing_id
178: AND action IN (PO_PDOI_CONSTANTS.g_action_ORIGINAL,
179: PO_PDOI_CONSTANTS.g_action_ADD)
180: ORDER BY interface_header_id)
181: WHERE rownum <= PO_PDOI_PARAMS.g_request.batch_size;
182:
183: IF (SQL%ROWCOUNT = 0) THEN
184: d_position := 20;
185:
184: d_position := 20;
185:
186: -- mark g_original_doc_processed to TRUE so that we won't process
187: -- NEW documents the next time we come here
188: PO_PDOI_PARAMS.g_original_doc_processed := FND_API.G_TRUE;
189:
190: IF (PO_LOG.d_stmt) THEN
191: PO_LOG.stmt(d_module, d_position, 'Finished progressing doc with ' ||
192: 'action = original ');
200: d_position := 30;
201:
202: FORALL i IN 1..l_intf_header_id_tbl.COUNT
203: UPDATE po_headers_interface
204: SET processing_round_num = PO_PDOI_PARAMS.g_current_round_num
205: WHERE interface_header_id = l_intf_header_id_tbl(i);
206:
207: IF (PO_LOG.d_stmt) THEN
208: PO_LOG.stmt(d_module, d_position, 'updated ' || SQL%ROWCOUNT ||
229: INTO l_intf_header_id_tbl,
230: l_po_header_id_tbl
231: FROM po_headers_interface
232: WHERE processing_round_num IS NULL
233: AND processing_id = PO_PDOI_PARAMS.g_processing_id
234: AND po_header_id IS NOT NULL
235: AND action IN (PO_PDOI_CONSTANTS.g_action_UPDATE,
236: PO_PDOI_CONSTANTS.g_action_REPLACE)
237: ORDER BY interface_header_id;
248: NOT l_process_list.EXISTS(l_po_header_id_tbl(i))) THEN
249: l_process_list(l_po_header_id_tbl(i)) := l_intf_header_id_tbl(i);
250: END IF;
251:
252: IF (l_process_list.COUNT >= PO_PDOI_PARAMS.g_request.batch_size) THEN
253: IF (PO_LOG.d_stmt) THEN
254: PO_LOG.stmt(d_module, d_position, '# of documents to process has ' ||
255: 'reached the limit. Wait for the next round');
256: END IF;
266: IF (l_process_list.COUNT > 0) THEN
267: -- assign round number for those in process list
268: FORALL i IN INDICES OF l_process_list
269: UPDATE po_headers_interface
270: SET processing_round_num = PO_PDOI_PARAMS.g_current_round_num
271: WHERE interface_header_id = l_process_list(i);
272:
273: IF (PO_LOG.d_stmt) THEN
274: PO_LOG.stmt(d_module, d_position, 'updated ' || SQL%ROWCOUNT ||
366: l_action_tbl,
367: l_revision_num_tbl
368: FROM po_headers_interface PHI,
369: po_headers_all PH
370: WHERE PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
371: AND PHI.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
372: AND PHI.po_header_id = PH.po_header_id(+)
373: FOR UPDATE OF PH.po_header_id;
374:
367: l_revision_num_tbl
368: FROM po_headers_interface PHI,
369: po_headers_all PH
370: WHERE PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
371: AND PHI.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
372: AND PHI.po_header_id = PH.po_header_id(+)
373: FOR UPDATE OF PH.po_header_id;
374:
375: d_position := 10;
517: FORALL i IN 1..l_intf_header_id_tbl.COUNT
518: UPDATE po_headers_interface
519: SET draft_id = l_draft_id_tbl(i)
520: WHERE interface_header_id = l_intf_header_id_tbl(i)
521: AND processing_id = PO_PDOI_PARAMS.g_processing_id;
522:
523: d_position := 130;
524:
525: -- Since DB 10g (bug4340345) has probems using VALUES OF against EMPTY
547: ( l_draft_id_tbl(i),
548: l_po_header_id_tbl(i),
549: l_revision_num_tbl(i),
550: FND_GLOBAL.user_id,
551: PO_PDOI_PARAMS.g_request.role,
552: l_status,
553: SYSDATE,
554: FND_GLOBAL.user_id,
555: FND_GLOBAL.login_id,
565: FOR i IN 1..l_new_dft_idx_tbl.COUNT LOOP
566: -- get the interface header id that creates the new draft, and set
567: -- the new draft flag
568: l_intf_hdr_id := l_intf_header_id_tbl ( l_new_dft_idx_tbl(i) );
569: PO_PDOI_PARAMS.g_docs_info(l_intf_hdr_id).new_draft := FND_API.G_TRUE;
570:
571: END LOOP;
572:
573: d_position := 150;
645: INTO l_draft_id_tbl,
646: l_line_id_tbl
647: FROM po_headers_interface PHI,
648: po_lines_all POL
649: WHERE PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
650: AND PHI.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
651: AND PHI.po_header_id = POL.po_header_id
652: AND POL.catalog_name = PO_PDOI_PARAMS.g_request.catalog_to_expire
653: AND NVL(POL.cancel_flag, 'N') = 'N'
646: l_line_id_tbl
647: FROM po_headers_interface PHI,
648: po_lines_all POL
649: WHERE PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
650: AND PHI.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
651: AND PHI.po_header_id = POL.po_header_id
652: AND POL.catalog_name = PO_PDOI_PARAMS.g_request.catalog_to_expire
653: AND NVL(POL.cancel_flag, 'N') = 'N'
654: AND NVL(POL.closed_code, 'OPEN') <> 'FINALLY CLOSED'
648: po_lines_all POL
649: WHERE PHI.processing_id = PO_PDOI_PARAMS.g_processing_id
650: AND PHI.processing_round_num = PO_PDOI_PARAMS.g_current_round_num
651: AND PHI.po_header_id = POL.po_header_id
652: AND POL.catalog_name = PO_PDOI_PARAMS.g_request.catalog_to_expire
653: AND NVL(POL.cancel_flag, 'N') = 'N'
654: AND NVL(POL.closed_code, 'OPEN') <> 'FINALLY CLOSED'
655: AND NVL(POL.expiration_date, SYSDATE+1) > SYSDATE;
656:
731: IF (PO_LOG.d_proc) THEN
732: PO_LOG.proc_begin (d_module);
733: END IF;
734:
735: PO_PDOI_PARAMS.g_docs_info.DELETE;
736:
737: d_position := 10;
738:
739: FOR i IN 1..p_intf_header_id_tbl.COUNT LOOP
748: FROM po_lines_interface PLI
749: WHERE PLI.interface_header_id = p_intf_header_id_tbl(i)
750: AND PLI.process_code = PO_PDOI_CONSTANTS.g_PROCESS_CODE_REJECTED;
751:
752: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_processed_lines :=
753: l_reject_count;
754: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_errored_lines :=
755: l_reject_count;
756: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_valid_lines := 0;
750: AND PLI.process_code = PO_PDOI_CONSTANTS.g_PROCESS_CODE_REJECTED;
751:
752: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_processed_lines :=
753: l_reject_count;
754: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_errored_lines :=
755: l_reject_count;
756: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_valid_lines := 0;
757: PO_PDOI_PARAMS.g_docs_info(l_id).err_tolerance_exceeded := FND_API.G_FALSE;
758: PO_PDOI_PARAMS.g_docs_info(l_id).has_errors := FND_API.G_FALSE;
752: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_processed_lines :=
753: l_reject_count;
754: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_errored_lines :=
755: l_reject_count;
756: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_valid_lines := 0;
757: PO_PDOI_PARAMS.g_docs_info(l_id).err_tolerance_exceeded := FND_API.G_FALSE;
758: PO_PDOI_PARAMS.g_docs_info(l_id).has_errors := FND_API.G_FALSE;
759: PO_PDOI_PARAMS.g_docs_info(l_id).has_lines_to_notify := FND_API.G_FALSE;
760: PO_PDOI_PARAMS.g_docs_info(l_id).new_draft := FND_API.G_FALSE; -- bug5129752
753: l_reject_count;
754: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_errored_lines :=
755: l_reject_count;
756: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_valid_lines := 0;
757: PO_PDOI_PARAMS.g_docs_info(l_id).err_tolerance_exceeded := FND_API.G_FALSE;
758: PO_PDOI_PARAMS.g_docs_info(l_id).has_errors := FND_API.G_FALSE;
759: PO_PDOI_PARAMS.g_docs_info(l_id).has_lines_to_notify := FND_API.G_FALSE;
760: PO_PDOI_PARAMS.g_docs_info(l_id).new_draft := FND_API.G_FALSE; -- bug5129752
761: END LOOP;
754: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_errored_lines :=
755: l_reject_count;
756: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_valid_lines := 0;
757: PO_PDOI_PARAMS.g_docs_info(l_id).err_tolerance_exceeded := FND_API.G_FALSE;
758: PO_PDOI_PARAMS.g_docs_info(l_id).has_errors := FND_API.G_FALSE;
759: PO_PDOI_PARAMS.g_docs_info(l_id).has_lines_to_notify := FND_API.G_FALSE;
760: PO_PDOI_PARAMS.g_docs_info(l_id).new_draft := FND_API.G_FALSE; -- bug5129752
761: END LOOP;
762:
755: l_reject_count;
756: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_valid_lines := 0;
757: PO_PDOI_PARAMS.g_docs_info(l_id).err_tolerance_exceeded := FND_API.G_FALSE;
758: PO_PDOI_PARAMS.g_docs_info(l_id).has_errors := FND_API.G_FALSE;
759: PO_PDOI_PARAMS.g_docs_info(l_id).has_lines_to_notify := FND_API.G_FALSE;
760: PO_PDOI_PARAMS.g_docs_info(l_id).new_draft := FND_API.G_FALSE; -- bug5129752
761: END LOOP;
762:
763: IF (PO_LOG.d_proc) THEN
756: PO_PDOI_PARAMS.g_docs_info(l_id).number_of_valid_lines := 0;
757: PO_PDOI_PARAMS.g_docs_info(l_id).err_tolerance_exceeded := FND_API.G_FALSE;
758: PO_PDOI_PARAMS.g_docs_info(l_id).has_errors := FND_API.G_FALSE;
759: PO_PDOI_PARAMS.g_docs_info(l_id).has_lines_to_notify := FND_API.G_FALSE;
760: PO_PDOI_PARAMS.g_docs_info(l_id).new_draft := FND_API.G_FALSE; -- bug5129752
761: END LOOP;
762:
763: IF (PO_LOG.d_proc) THEN
764: PO_LOG.proc_end (d_module);