1: PACKAGE BODY PO_LINES_DRAFT_PKG AS
2: /* $Header: PO_LINES_DRAFT_PKG.plb 120.8 2006/09/28 23:04:15 bao noship $ */
3:
4: d_pkg_name CONSTANT varchar2(50) :=
5: PO_LOG.get_package_base('PO_LINES_DRAFT_PKG');
6:
7: -----------------------------------------------------------------------
8: --Start of Comments
9: --Name: delete_rows
40: d_position NUMBER;
41:
42: BEGIN
43: d_position := 0;
44: IF (PO_LOG.d_proc) THEN
45: PO_LOG.proc_begin(d_module);
46: END IF;
47:
48: DELETE FROM po_lines_draft_all
41:
42: BEGIN
43: d_position := 0;
44: IF (PO_LOG.d_proc) THEN
45: PO_LOG.proc_begin(d_module);
46: END IF;
47:
48: DELETE FROM po_lines_draft_all
49: WHERE draft_id = p_draft_id
103: l_duplicate_flag_tbl PO_TBL_VARCHAR1 := PO_TBL_VARCHAR1();
104:
105: BEGIN
106: d_position := 0;
107: IF (PO_LOG.d_proc) THEN
108: PO_LOG.proc_begin(d_module);
109: END IF;
110:
111: x_record_already_exist_tbl :=
104:
105: BEGIN
106: d_position := 0;
107: IF (PO_LOG.d_proc) THEN
108: PO_LOG.proc_begin(d_module);
109: END IF;
110:
111: x_record_already_exist_tbl :=
112: PO_LINES_DRAFT_PVT.draft_changes_exist
141: -- bug5471513 END
142:
143:
144: d_position := 10;
145: IF (PO_LOG.d_stmt) THEN
146: PO_LOG.stmt(d_module, d_position, 'transfer records from txn to dft');
147: END IF;
148:
149: FORALL i IN 1..p_po_line_id_tbl.COUNT
142:
143:
144: d_position := 10;
145: IF (PO_LOG.d_stmt) THEN
146: PO_LOG.stmt(d_module, d_position, 'transfer records from txn to dft');
147: END IF;
148:
149: FORALL i IN 1..p_po_line_id_tbl.COUNT
150: INSERT INTO po_lines_draft_all
454: AND x_record_already_exist_tbl(i) = FND_API.G_FALSE
455: AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
456:
457: d_position := 20;
458: IF (PO_LOG.d_stmt) THEN
459: PO_LOG.stmt(d_module, d_position, 'transfer count = ' || SQL%ROWCOUNT);
460: END IF;
461:
462: FORALL i IN 1..p_po_line_id_tbl.COUNT
455: AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
456:
457: d_position := 20;
458: IF (PO_LOG.d_stmt) THEN
459: PO_LOG.stmt(d_module, d_position, 'transfer count = ' || SQL%ROWCOUNT);
460: END IF;
461:
462: FORALL i IN 1..p_po_line_id_tbl.COUNT
463: UPDATE po_lines_draft_all
468: AND x_record_already_exist_tbl(i) = FND_API.G_TRUE;
469:
470: d_position := 30;
471:
472: IF (PO_LOG.d_stmt) THEN
473: PO_LOG.stmt(d_module, d_position, 'update draft records that are already' ||
474: ' in draft table. Count = ' || SQL%ROWCOUNT);
475: END IF;
476:
469:
470: d_position := 30;
471:
472: IF (PO_LOG.d_stmt) THEN
473: PO_LOG.stmt(d_module, d_position, 'update draft records that are already' ||
474: ' in draft table. Count = ' || SQL%ROWCOUNT);
475: END IF;
476:
477: d_position := 40;
475: END IF;
476:
477: d_position := 40;
478:
479: IF (PO_LOG.d_proc) THEN
480: PO_LOG.proc_end(d_module);
481: END IF;
482:
483: EXCEPTION
476:
477: d_position := 40;
478:
479: IF (PO_LOG.d_proc) THEN
480: PO_LOG.proc_end(d_module);
481: END IF;
482:
483: EXCEPTION
484: WHEN OTHERS THEN
532: l_record_already_exist_tbl PO_TBL_VARCHAR1;
533:
534: BEGIN
535: d_position := 0;
536: IF (PO_LOG.d_proc) THEN
537: PO_LOG.proc_begin(d_module);
538: PO_LOG.proc_begin(d_module, 'p_po_line_id', p_po_line_id);
539: END IF;
540:
533:
534: BEGIN
535: d_position := 0;
536: IF (PO_LOG.d_proc) THEN
537: PO_LOG.proc_begin(d_module);
538: PO_LOG.proc_begin(d_module, 'p_po_line_id', p_po_line_id);
539: END IF;
540:
541: sync_draft_from_txn
534: BEGIN
535: d_position := 0;
536: IF (PO_LOG.d_proc) THEN
537: PO_LOG.proc_begin(d_module);
538: PO_LOG.proc_begin(d_module, 'p_po_line_id', p_po_line_id);
539: END IF;
540:
541: sync_draft_from_txn
542: ( p_po_line_id_tbl => PO_TBL_NUMBER(p_po_line_id),
547:
548: x_record_already_exist := l_record_already_exist_tbl(1);
549:
550: d_position := 10;
551: IF (PO_LOG.d_proc) THEN
552: PO_LOG.proc_end(d_module);
553: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
554: END IF;
555:
548: x_record_already_exist := l_record_already_exist_tbl(1);
549:
550: d_position := 10;
551: IF (PO_LOG.d_proc) THEN
552: PO_LOG.proc_end(d_module);
553: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
554: END IF;
555:
556: EXCEPTION
549:
550: d_position := 10;
551: IF (PO_LOG.d_proc) THEN
552: PO_LOG.proc_end(d_module);
553: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
554: END IF;
555:
556: EXCEPTION
557: WHEN OTHERS THEN
595: d_position NUMBER;
596:
597: BEGIN
598: d_position := 0;
599: IF (PO_LOG.d_proc) THEN
600: PO_LOG.proc_begin(d_module);
601: END IF;
602:
603: -- Since putting DELETE within MERGE statement is causing database
596:
597: BEGIN
598: d_position := 0;
599: IF (PO_LOG.d_proc) THEN
600: PO_LOG.proc_begin(d_module);
601: END IF;
602:
603: -- Since putting DELETE within MERGE statement is causing database
604: -- to thrown internal error, for now we just separate the DELETE statement.
1264: l_dummy NUMBER;
1265:
1266: BEGIN
1267: d_position := 0;
1268: IF (PO_LOG.d_proc) THEN
1269: PO_LOG.proc_begin(d_module);
1270: END IF;
1271:
1272: SELECT 1
1265:
1266: BEGIN
1267: d_position := 0;
1268: IF (PO_LOG.d_proc) THEN
1269: PO_LOG.proc_begin(d_module);
1270: END IF;
1271:
1272: SELECT 1
1273: INTO l_dummy
1275: WHERE po_line_id = p_po_line_id
1276: AND draft_id = p_draft_id
1277: FOR UPDATE NOWAIT;
1278:
1279: IF (PO_LOG.d_proc) THEN
1280: PO_LOG.proc_end(d_module);
1281: END IF;
1282:
1283: EXCEPTION
1276: AND draft_id = p_draft_id
1277: FOR UPDATE NOWAIT;
1278:
1279: IF (PO_LOG.d_proc) THEN
1280: PO_LOG.proc_end(d_module);
1281: END IF;
1282:
1283: EXCEPTION
1284: WHEN NO_DATA_FOUND THEN
1308: l_dummy NUMBER;
1309:
1310: BEGIN
1311: d_position := 0;
1312: IF (PO_LOG.d_proc) THEN
1313: PO_LOG.proc_begin(d_module);
1314: END IF;
1315:
1316: SELECT 1
1309:
1310: BEGIN
1311: d_position := 0;
1312: IF (PO_LOG.d_proc) THEN
1313: PO_LOG.proc_begin(d_module);
1314: END IF;
1315:
1316: SELECT 1
1317: INTO l_dummy
1318: FROM po_lines_all
1319: WHERE po_line_id = p_po_line_id
1320: FOR UPDATE NOWAIT;
1321:
1322: IF (PO_LOG.d_proc) THEN
1323: PO_LOG.proc_end(d_module);
1324: END IF;
1325:
1326: EXCEPTION
1319: WHERE po_line_id = p_po_line_id
1320: FOR UPDATE NOWAIT;
1321:
1322: IF (PO_LOG.d_proc) THEN
1323: PO_LOG.proc_end(d_module);
1324: END IF;
1325:
1326: EXCEPTION
1327: WHEN NO_DATA_FOUND THEN