1: PACKAGE BODY PO_LINE_LOCATIONS_DRAFT_PKG AS
2: /* $Header: PO_LINE_LOCATIONS_DRAFT_PKG.plb 120.8 2006/09/28 23:03:51 bao noship $ */
3:
4: d_pkg_name CONSTANT varchar2(50) :=
5: PO_LOG.get_package_base('PO_LINE_LOCATIONS_DRAFT_PKG');
6:
7: -----------------------------------------------------------------------
8: --Start of Comments
9: --Name: delete_rows
39: d_position NUMBER;
40:
41: BEGIN
42: d_position := 0;
43: IF (PO_LOG.d_proc) THEN
44: PO_LOG.proc_begin(d_module);
45: END IF;
46:
47: DELETE FROM po_line_locations_draft_all
40:
41: BEGIN
42: d_position := 0;
43: IF (PO_LOG.d_proc) THEN
44: PO_LOG.proc_begin(d_module);
45: END IF;
46:
47: DELETE FROM po_line_locations_draft_all
48: 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_LINE_LOCATIONS_DRAFT_PVT.draft_changes_exist
140: END LOOP;
141: -- bug5471513 END
142:
143: d_position := 10;
144: IF (PO_LOG.d_stmt) THEN
145: PO_LOG.stmt(d_module, d_position, 'transfer records from txn to dft');
146: END IF;
147:
148: FORALL i IN 1..p_line_location_id_tbl.COUNT
141: -- bug5471513 END
142:
143: d_position := 10;
144: IF (PO_LOG.d_stmt) THEN
145: PO_LOG.stmt(d_module, d_position, 'transfer records from txn to dft');
146: END IF;
147:
148: FORALL i IN 1..p_line_location_id_tbl.COUNT
149: INSERT INTO po_line_locations_draft_all
490: AND x_record_already_exist_tbl(i) = FND_API.G_FALSE
491: AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
492:
493: d_position := 20;
494: IF (PO_LOG.d_stmt) THEN
495: PO_LOG.stmt(d_module, d_position, 'transfer count = ' || SQL%ROWCOUNT);
496: END IF;
497:
498: FORALL i IN 1..p_line_location_id_tbl.COUNT
491: AND l_duplicate_flag_tbl(i) = FND_API.G_FALSE;
492:
493: d_position := 20;
494: IF (PO_LOG.d_stmt) THEN
495: PO_LOG.stmt(d_module, d_position, 'transfer count = ' || SQL%ROWCOUNT);
496: END IF;
497:
498: FORALL i IN 1..p_line_location_id_tbl.COUNT
499: UPDATE po_line_locations_draft_all
504: AND x_record_already_exist_tbl(i) = FND_API.G_TRUE;
505:
506: d_position := 30;
507:
508: IF (PO_LOG.d_stmt) THEN
509: PO_LOG.stmt(d_module, d_position, 'update draft records that are already' ||
510: ' in draft table. Count = ' || SQL%ROWCOUNT);
511: END IF;
512:
505:
506: d_position := 30;
507:
508: IF (PO_LOG.d_stmt) THEN
509: PO_LOG.stmt(d_module, d_position, 'update draft records that are already' ||
510: ' in draft table. Count = ' || SQL%ROWCOUNT);
511: END IF;
512:
513: d_position := 40;
511: END IF;
512:
513: d_position := 40;
514:
515: IF (PO_LOG.d_proc) THEN
516: PO_LOG.proc_end(d_module);
517: END IF;
518:
519: EXCEPTION
512:
513: d_position := 40;
514:
515: IF (PO_LOG.d_proc) THEN
516: PO_LOG.proc_end(d_module);
517: END IF;
518:
519: EXCEPTION
520: WHEN OTHERS THEN
567: l_record_already_exist_tbl PO_TBL_VARCHAR1;
568:
569: BEGIN
570: d_position := 0;
571: IF (PO_LOG.d_proc) THEN
572: PO_LOG.proc_begin(d_module);
573: PO_LOG.proc_begin(d_module, 'p_line_location_id', p_line_location_id);
574: END IF;
575:
568:
569: BEGIN
570: d_position := 0;
571: IF (PO_LOG.d_proc) THEN
572: PO_LOG.proc_begin(d_module);
573: PO_LOG.proc_begin(d_module, 'p_line_location_id', p_line_location_id);
574: END IF;
575:
576: sync_draft_from_txn
569: BEGIN
570: d_position := 0;
571: IF (PO_LOG.d_proc) THEN
572: PO_LOG.proc_begin(d_module);
573: PO_LOG.proc_begin(d_module, 'p_line_location_id', p_line_location_id);
574: END IF;
575:
576: sync_draft_from_txn
577: ( p_line_location_id_tbl => PO_TBL_NUMBER(p_line_location_id),
582:
583: x_record_already_exist := l_record_already_exist_tbl(1);
584:
585: d_position := 10;
586: IF (PO_LOG.d_proc) THEN
587: PO_LOG.proc_end(d_module);
588: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
589: END IF;
590:
583: x_record_already_exist := l_record_already_exist_tbl(1);
584:
585: d_position := 10;
586: IF (PO_LOG.d_proc) THEN
587: PO_LOG.proc_end(d_module);
588: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
589: END IF;
590:
591: EXCEPTION
584:
585: d_position := 10;
586: IF (PO_LOG.d_proc) THEN
587: PO_LOG.proc_end(d_module);
588: PO_LOG.proc_end(d_module, 'x_record_already_exist', x_record_already_exist);
589: END IF;
590:
591: EXCEPTION
592: WHEN OTHERS THEN
631:
632: BEGIN
633:
634: d_position := 0;
635: IF (PO_LOG.d_proc) THEN
636: PO_LOG.proc_begin(d_module);
637: END IF;
638:
639: -- Since putting DELETE within MERGE statement is causing database
632: BEGIN
633:
634: d_position := 0;
635: IF (PO_LOG.d_proc) THEN
636: PO_LOG.proc_begin(d_module);
637: END IF;
638:
639: -- Since putting DELETE within MERGE statement is causing database
640: -- to thrown internal error, for now we just separate the DELETE statement.
1377: l_dummy NUMBER;
1378:
1379: BEGIN
1380: d_position := 0;
1381: IF (PO_LOG.d_proc) THEN
1382: PO_LOG.proc_begin(d_module);
1383: END IF;
1384:
1385: SELECT 1
1378:
1379: BEGIN
1380: d_position := 0;
1381: IF (PO_LOG.d_proc) THEN
1382: PO_LOG.proc_begin(d_module);
1383: END IF;
1384:
1385: SELECT 1
1386: INTO l_dummy
1388: WHERE line_location_id = p_line_location_id
1389: AND draft_id = p_draft_id
1390: FOR UPDATE NOWAIT;
1391:
1392: IF (PO_LOG.d_proc) THEN
1393: PO_LOG.proc_end(d_module);
1394: END IF;
1395:
1396: EXCEPTION
1389: AND draft_id = p_draft_id
1390: FOR UPDATE NOWAIT;
1391:
1392: IF (PO_LOG.d_proc) THEN
1393: PO_LOG.proc_end(d_module);
1394: END IF;
1395:
1396: EXCEPTION
1397: WHEN NO_DATA_FOUND THEN
1421: l_dummy NUMBER;
1422:
1423: BEGIN
1424: d_position := 0;
1425: IF (PO_LOG.d_proc) THEN
1426: PO_LOG.proc_begin(d_module);
1427: END IF;
1428:
1429: SELECT 1
1422:
1423: BEGIN
1424: d_position := 0;
1425: IF (PO_LOG.d_proc) THEN
1426: PO_LOG.proc_begin(d_module);
1427: END IF;
1428:
1429: SELECT 1
1430: INTO l_dummy
1431: FROM po_line_locations_all
1432: WHERE line_location_id = p_line_location_id
1433: FOR UPDATE NOWAIT;
1434:
1435: IF (PO_LOG.d_proc) THEN
1436: PO_LOG.proc_end(d_module);
1437: END IF;
1438:
1439: EXCEPTION
1432: WHERE line_location_id = p_line_location_id
1433: FOR UPDATE NOWAIT;
1434:
1435: IF (PO_LOG.d_proc) THEN
1436: PO_LOG.proc_end(d_module);
1437: END IF;
1438:
1439: EXCEPTION
1440: WHEN NO_DATA_FOUND THEN