220: --p_po_header_id
221: -- unique identifier for document with the draft changes
222: --p_delete_processed_draft
223: -- indicates whether draft changes should be removed after the process
224: -- If FND_API.G_TRUE, draft records will be removed after the process
225: -- If FND_API.G_FALSE, draft records will retain after the process
226: -- If 'X', drafts records except for the one in PO_DRAFTS will be removed
227: -- after the process
228: --IN OUT:
221: -- unique identifier for document with the draft changes
222: --p_delete_processed_draft
223: -- indicates whether draft changes should be removed after the process
224: -- If FND_API.G_TRUE, draft records will be removed after the process
225: -- If FND_API.G_FALSE, draft records will retain after the process
226: -- If 'X', drafts records except for the one in PO_DRAFTS will be removed
227: -- after the process
228: --IN OUT:
229: --OUT:
278: p_delete_processed_draft);
279: PO_LOG.proc_begin(d_module, 'p_acceptance_action', p_acceptance_action);
280: END IF;
281:
282: IF (FND_API.to_boolean(p_init_msg_list)) THEN
283: FND_MSG_PUB.initialize;
284: END IF;
285:
286: IF (NOT FND_API.Compatible_API_Call
282: IF (FND_API.to_boolean(p_init_msg_list)) THEN
283: FND_MSG_PUB.initialize;
284: END IF;
285:
286: IF (NOT FND_API.Compatible_API_Call
287: ( p_current_version_number => d_api_version
288: , p_caller_version_number => p_api_version
289: , p_api_name => d_api_name
290: , p_pkg_name => d_pkg_name
290: , p_pkg_name => d_pkg_name
291: )
292: ) THEN
293:
294: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
295: END IF; -- not compatible_api
296:
297: x_return_status := FND_API.G_RET_STS_SUCCESS;
298:
293:
294: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
295: END IF; -- not compatible_api
296:
297: x_return_status := FND_API.G_RET_STS_SUCCESS;
298:
299: -- if acceptance action is specified, we need to propogate the action to
300: -- all levels
301: IF (p_acceptance_action IS NOT NULL) THEN
556: ( p_pkg_name => d_pkg_name,
557: p_procedure_name => d_api_name || '.' || d_position
558: );
559:
560: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
561: END transfer_draft_to_txn;
562:
563:
564: -----------------------------------------------------------------------
575: --p_draft_id
576: -- draft unique identifier
577: --p_exclude_ctrl_tbl
578: -- determines whether control table should be excluded from deletion
579: -- FND_API.G_TRUE if PO_DRAFTS should be excluded
580: -- FND_API.G_FALSE if PO_DRAFTS should not be excluded
581: --IN OUT:
582: --OUT:
583: --x_return_status
576: -- draft unique identifier
577: --p_exclude_ctrl_tbl
578: -- determines whether control table should be excluded from deletion
579: -- FND_API.G_TRUE if PO_DRAFTS should be excluded
580: -- FND_API.G_FALSE if PO_DRAFTS should not be excluded
581: --IN OUT:
582: --OUT:
583: --x_return_status
584: -- return status of the procedure
604: IF (PO_LOG.d_proc) THEN
605: PO_LOG.proc_begin(d_module);
606: END IF;
607:
608: x_return_status := FND_API.G_RET_STS_SUCCESS;
609:
610: PO_HEADERS_DRAFT_PKG.delete_rows
611: ( p_draft_id => p_draft_id,
612: p_po_header_id => NULL
690: );
691: --
692:
693: d_position := 90;
694: IF (NVL(p_exclude_ctrl_tbl, FND_API.G_FALSE) = FND_API.G_FALSE) THEN
695: -- delete draft control table as well
696: DELETE FROM po_drafts
697: WHERE draft_id = p_draft_id;
698: END IF;
707: ( p_pkg_name => d_pkg_name,
708: p_procedure_name => d_api_name || '.' || d_position
709: );
710:
711: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
712: END remove_draft_changes;
713:
714:
715:
763:
764: -- SQL What: Check whether po_header_id specified already
765: -- exists in PO_HEADERS_ALL
766: -- SQL Why: Need to see whether it is a new document being created
767: SELECT NVL(MAX(FND_API.G_FALSE), FND_API.G_TRUE)
768: INTO x_draft_info.new_document
769: FROM po_headers_all POH
770: WHERE POH.po_header_id = p_po_header_id;
771:
768: INTO x_draft_info.new_document
769: FROM po_headers_all POH
770: WHERE POH.po_header_id = p_po_header_id;
771:
772: IF (x_draft_info.new_document = FND_API.G_TRUE) THEN
773: d_position := 10;
774: SELECT PHD.type_lookup_code,
775: PHD.quote_type_lookup_code,
776: NVL(PHD.global_agreement_flag, 'N')
950: PO_MESSAGE_S.add_exc_msg
951: ( p_pkg_name => d_pkg_name,
952: p_procedure_name => d_api_name || '.' || d_position
953: );
954: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
955: END populate_draft_info;
956:
957: -- bug4176111
958: -----------------------------------------------------------------------
1005: PO_MESSAGE_S.add_exc_msg
1006: ( p_pkg_name => d_pkg_name,
1007: p_procedure_name => d_api_name || '.' || d_position
1008: );
1009: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1010: END pre_apply;
1011:
1012:
1013:
1176: PO_MESSAGE_S.add_exc_msg
1177: ( p_pkg_name => d_pkg_name,
1178: p_procedure_name => d_api_name || '.' || d_position
1179: );
1180: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1181: END get_request_id;
1182:
1183: -----------------------------------------------------------------------
1184: --Start of Comments
1352: IF (PO_LOG.d_proc) THEN
1353: PO_LOG.proc_begin(d_module);
1354: END IF;
1355:
1356: x_update_allowed := FND_API.G_TRUE;
1357: x_locking_applicable := FND_API.G_TRUE;
1358: x_unlock_required := FND_API.G_FALSE;
1359:
1360: -- Default calling module if one is not specified
1353: PO_LOG.proc_begin(d_module);
1354: END IF;
1355:
1356: x_update_allowed := FND_API.G_TRUE;
1357: x_locking_applicable := FND_API.G_TRUE;
1358: x_unlock_required := FND_API.G_FALSE;
1359:
1360: -- Default calling module if one is not specified
1361: l_calling_module := NVL(p_calling_module, g_call_mod_UNKNOWN);
1354: END IF;
1355:
1356: x_update_allowed := FND_API.G_TRUE;
1357: x_locking_applicable := FND_API.G_TRUE;
1358: x_unlock_required := FND_API.G_FALSE;
1359:
1360: -- Default calling module if one is not specified
1361: l_calling_module := NVL(p_calling_module, g_call_mod_UNKNOWN);
1362:
1418: -- bug 5358300
1419: -- Added g_call_mod_HTML_UI_SAVE to the list as we would allow online save operations on the document
1420: IF ( l_calling_module NOT IN (g_call_mod_HTML_UI, g_call_mod_HTML_UI_SAVE, g_call_mod_PDOI, g_call_mod_FORMS_PO_SUMMARY)) THEN
1421: x_message := 'PO_DOC_LOCKED';
1422: x_update_allowed := FND_API.G_FALSE;
1423: RETURN;
1424: END IF;
1425:
1426: -- Disallow update if one of the following is true
1430: -- (status = PDOI PROCESSING may mean that there was an unhandled
1431: -- exception during PDOI. Within PDOI there is code to handle
1432: -- such case to recover the document so we do not want to prevent
1433: -- PDOI from processing this document here)
1434: IF (l_draft_status = g_status_IN_PROCESS AND x_locking_applicable = FND_API.G_TRUE ) THEN
1435: x_message := 'PO_BUYER_ACCEPTANCE_PENDING';
1436: x_update_allowed := FND_API.G_FALSE;
1437: RETURN;
1438:
1432: -- such case to recover the document so we do not want to prevent
1433: -- PDOI from processing this document here)
1434: IF (l_draft_status = g_status_IN_PROCESS AND x_locking_applicable = FND_API.G_TRUE ) THEN
1435: x_message := 'PO_BUYER_ACCEPTANCE_PENDING';
1436: x_update_allowed := FND_API.G_FALSE;
1437: RETURN;
1438:
1439: ELSIF (l_draft_status = g_status_PDOI_PROCESSING AND
1440: l_calling_module <> g_call_mod_PDOI ) THEN
1439: ELSIF (l_draft_status = g_status_PDOI_PROCESSING AND
1440: l_calling_module <> g_call_mod_PDOI ) THEN
1441:
1442: x_message := 'PO_UPLOAD_PENDING_RUNNING';
1443: x_update_allowed := FND_API.G_FALSE;
1444: RETURN;
1445:
1446: -- Bug 12700941 :
1447: -- if the lock owner is same as current role and there is error, he should face error
1455: AND l_calling_module <> g_call_mod_PDOI) THEN
1456:
1457: if(l_current_lock_owner_role = p_role OR l_current_lock_owner_role IS NULL) THEN
1458: x_message := 'PO_UPLOAD_ERROR';
1459: x_update_allowed := FND_API.G_FALSE;
1460: RETURN;
1461: ELSE
1462: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1463: IF(p_role <> PO_GLOBAL.g_role_BUYER) THEN
1460: RETURN;
1461: ELSE
1462: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1463: IF(p_role <> PO_GLOBAL.g_role_BUYER) THEN
1464: x_update_allowed := FND_API.G_FALSE;
1465: ELSE
1466: x_unlock_required := FND_API.G_TRUE;
1467: END IF;
1468: -- Bug 12700941 ends
1462: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1463: IF(p_role <> PO_GLOBAL.g_role_BUYER) THEN
1464: x_update_allowed := FND_API.G_FALSE;
1465: ELSE
1466: x_unlock_required := FND_API.G_TRUE;
1467: END IF;
1468: -- Bug 12700941 ends
1469: RETURN;
1470: END IF;
1473: END IF;
1474:
1475: d_position := 40;
1476:
1477: IF ( NVL(p_skip_cat_upload_chk, FND_API.G_FALSE) = FND_API.G_FALSE) THEN
1478: -- Call iP API to see if there is catalog uploading activity. If so,
1479: -- Prevent locking
1480:
1481: -- bug5014131
1489: x_upload_job_number => l_upload_job_number,
1490: x_upload_status_display => l_upload_status_display
1491: );
1492:
1493: IF (l_upload_in_progress = FND_API.G_TRUE) THEN
1494: IF (l_upload_status_code IN (g_upload_status_PENDING, g_upload_status_RUNNING)) THEN
1495: IF (PO_LOG.d_stmt) THEN
1496: PO_LOG.stmt (d_module, d_position, 'in progress catalog upload');
1497: END IF;
1496: PO_LOG.stmt (d_module, d_position, 'in progress catalog upload');
1497: END IF;
1498:
1499: x_message := 'PO_UPLOAD_PENDING_RUNNING';
1500: x_update_allowed := FND_API.G_FALSE;
1501: RETURN;
1502: ELSIF (l_upload_status_code = g_upload_status_ERROR) THEN
1503: IF (PO_LOG.d_stmt) THEN
1504: PO_LOG.stmt (d_module, d_position, 'errored catalog upload');
1512: -- the user should get a warning and he can break the lock and continue
1513:
1514: if(l_upload_requestor_role = p_role) THEN
1515: x_message := 'PO_UPLOAD_ERROR';
1516: x_update_allowed := FND_API.G_FALSE;
1517: RETURN;
1518: ELSE
1519: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1520: IF(p_role <> PO_GLOBAL.g_role_BUYER) THEN
1517: RETURN;
1518: ELSE
1519: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1520: IF(p_role <> PO_GLOBAL.g_role_BUYER) THEN
1521: x_update_allowed := FND_API.G_FALSE;
1522: ELSE
1523: x_unlock_required := FND_API.G_TRUE;
1524: END IF;
1525:
1519: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1520: IF(p_role <> PO_GLOBAL.g_role_BUYER) THEN
1521: x_update_allowed := FND_API.G_FALSE;
1522: ELSE
1523: x_unlock_required := FND_API.G_TRUE;
1524: END IF;
1525:
1526: RETURN;
1527: END IF;
1531: -- Bug 12700941 ends
1532:
1533:
1534:
1535: IF (x_locking_applicable = FND_API.G_FALSE) THEN
1536: IF (PO_LOG.d_stmt) THEN
1537: PO_LOG.stmt (d_module, d_position, 'locking is not applicable');
1538: END IF;
1539:
1553: -- supplier is allowed to get the lock only if the document is enabled
1554: -- for supplier authoring
1555: IF (NVL(l_supplier_auth_enabled, 'N') = 'N') THEN
1556: x_message := 'PO_UPDATE_NOT_ALLOWED';
1557: x_update_allowed := FND_API.G_FALSE;
1558: RETURN;
1559: END IF;
1560: END IF;
1561:
1568: -- cat admin is allowed to get the lock only if the document is enabled
1569: -- for Cat Admin authoring
1570: IF (NVL(l_cat_admin_auth_enabled, 'N') = 'N') THEN
1571: x_message := 'PO_UPDATE_NOT_ALLOWED';
1572: x_update_allowed := FND_API.G_FALSE;
1573: RETURN;
1574: END IF;
1575: END IF;
1576:
1592: 'in this status');
1593: END IF;
1594:
1595: x_message := 'PO_AUTH_STATUS_ERROR';
1596: x_update_allowed := FND_API.G_FALSE;
1597: RETURN;
1598: END IF;
1599:
1600: -- bug5532550 START
1605: ( p_po_header_id => p_po_header_id,
1606: p_role => p_role
1607: );
1608:
1609: IF ( l_updatable_state = FND_API.G_FALSE ) THEN
1610: x_message := 'PO_ALL_CADM_DOC_CANT_BE_OPENED';
1611: x_update_allowed := FND_API.G_FALSE;
1612: RETURN;
1613: END IF;
1607: );
1608:
1609: IF ( l_updatable_state = FND_API.G_FALSE ) THEN
1610: x_message := 'PO_ALL_CADM_DOC_CANT_BE_OPENED';
1611: x_update_allowed := FND_API.G_FALSE;
1612: RETURN;
1613: END IF;
1614:
1615: -- bug5532550 END
1628: -- the same role is currently locking the document OR
1629: -- nobody is locking the document
1630:
1631: -- In such cases, we can simply take the default value of the
1632: -- update_allowed_flag (FND_API.G_TRUE)
1633: NULL;
1634: ELSIF (p_role = PO_GLOBAL.g_role_BUYER) THEN
1635: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1636: -- if role is buyer and the role currently locking the document
1634: ELSIF (p_role = PO_GLOBAL.g_role_BUYER) THEN
1635: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1636: -- if role is buyer and the role currently locking the document
1637: -- is different, we need to unlock the document first
1638: x_unlock_required := FND_API.G_TRUE;
1639: RETURN;
1640: ELSE
1641: -- cannot update - role is not BUYER and it is currently locked
1642: -- by somebody else
1640: ELSE
1641: -- cannot update - role is not BUYER and it is currently locked
1642: -- by somebody else
1643: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1644: x_update_allowed := FND_API.G_FALSE;
1645: RETURN;
1646: END IF;
1647:
1648: ELSIF (l_calling_module in (g_call_mod_HTML_UI_SAVE)) THEN
1655: -- if document is currently locked by some other role
1656:
1657: IF (p_role <> l_current_lock_owner_role) THEN
1658: x_message := 'PO_DOC_LOCKED_BY_OTHER_ROLE';
1659: x_update_allowed := FND_API.G_FALSE;
1660: RETURN;
1661: END IF;
1662:
1663: ELSE
1667: -- if document is currently locked by some other role
1668:
1669: IF (p_role <> l_current_lock_owner_role) THEN
1670: x_message := 'PO_DOC_LOCKED';
1671: x_update_allowed := FND_API.G_FALSE;
1672: RETURN;
1673: END IF;
1674:
1675: END IF;
1683: PO_MESSAGE_S.add_exc_msg
1684: ( p_pkg_name => d_pkg_name,
1685: p_procedure_name => d_api_name || '.' || d_position
1686: );
1687: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1688: END update_permission_check;
1689:
1690: -- update_permission_check - 2
1691: PROCEDURE update_permission_check
1718:
1719: x_token_name_tbl := PO_TBL_VARCHAR30();
1720: x_token_value_tbl := PO_TBL_VARCHAR2000();
1721:
1722: IF (x_update_allowed = FND_API.G_TRUE) THEN
1723: RETURN;
1724: END IF;
1725:
1726: l_style_name := PO_DOC_STYLE_PVT.get_style_display_name
1766: x_token_name_tbl => l_token_name_tbl,
1767: x_token_value_tbl => l_token_value_tbl
1768: );
1769:
1770: IF (x_update_allowed = FND_API.G_TRUE) THEN
1771: RETURN;
1772: END IF;
1773:
1774: FND_MESSAGE.set_name ('PO', x_message);
1829: END IF;
1830:
1831: PO_DRAFTS_PVT.remove_draft_changes
1832: ( p_draft_id => l_draft_id,
1833: p_exclude_ctrl_tbl => FND_API.G_FALSE,
1834: x_return_status => l_return_status
1835: );
1836:
1837: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1833: p_exclude_ctrl_tbl => FND_API.G_FALSE,
1834: x_return_status => l_return_status
1835: );
1836:
1837: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1838: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1839: END IF;
1840: END IF;
1841:
1834: x_return_status => l_return_status
1835: );
1836:
1837: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1838: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1839: END IF;
1840: END IF;
1841:
1842: -- unlock document by setting lock owner role to NULL
1898: ( p_po_header_id => p_po_header_id,
1899: p_role => p_role
1900: );
1901:
1902: IF (l_locking_applicable = FND_API.G_FALSE) THEN
1903: RETURN;
1904: END IF;
1905:
1906: IF (p_unlock_current = FND_API.G_TRUE) THEN
1902: IF (l_locking_applicable = FND_API.G_FALSE) THEN
1903: RETURN;
1904: END IF;
1905:
1906: IF (p_unlock_current = FND_API.G_TRUE) THEN
1907: unlock_document
1908: ( p_po_header_id => p_po_header_id
1909: );
1910: END IF;
1943: d_api_name CONSTANT VARCHAR2(30) := 'is_locking_applicable';
1944: d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
1945: d_position NUMBER;
1946:
1947: l_applicable VARCHAR2(1) := FND_API.G_TRUE;
1948:
1949: l_type_lookup_code PO_HEADERS_ALL.type_lookup_code%TYPE;
1950: l_ga_flag PO_HEADERS_ALL.global_agreement_flag%TYPE;
1951: l_approved_date PO_HEADERS_ALL.approved_date%TYPE;
1974:
1975: -- locking is applicable only for global blanket agreement
1976: --
1977: IF (NOT (l_type_lookup_code = 'BLANKET' AND l_ga_flag = 'Y')
1978: OR is_mod_enabled(p_po_header_id) = FND_API.G_TRUE) THEN
1979:
1980: l_applicable := FND_API.G_FALSE;
1981:
1982: ELSIF ( l_current_lock_owner_role IS NULL AND
1976: --
1977: IF (NOT (l_type_lookup_code = 'BLANKET' AND l_ga_flag = 'Y')
1978: OR is_mod_enabled(p_po_header_id) = FND_API.G_TRUE) THEN
1979:
1980: l_applicable := FND_API.G_FALSE;
1981:
1982: ELSIF ( l_current_lock_owner_role IS NULL AND
1983: p_role = PO_GLOBAL.g_role_BUYER AND
1984: l_approved_date IS NULL ) THEN
1982: ELSIF ( l_current_lock_owner_role IS NULL AND
1983: p_role = PO_GLOBAL.g_role_BUYER AND
1984: l_approved_date IS NULL ) THEN
1985:
1986: l_applicable := FND_API.G_FALSE;
1987: END IF;
1988:
1989: IF (PO_LOG.d_proc) THEN
1990: PO_LOG.proc_end(d_module, 'l_applicable', l_applicable);
1993: RETURN l_applicable;
1994:
1995: EXCEPTION
1996: WHEN NO_DATA_FOUND THEN
1997: l_applicable := FND_API.G_FALSE;
1998: RETURN l_applicable;
1999: END is_locking_applicable;
2000:
2001: -----------------------------------------------------------------------
2019: d_api_name CONSTANT VARCHAR2(30) := 'is_draft_applicable';
2020: d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
2021: d_position NUMBER;
2022:
2023: l_applicable VARCHAR2(1) := FND_API.G_TRUE;
2024:
2025: l_type_lookup_code PO_HEADERS_ALL.type_lookup_code%TYPE;
2026: l_ga_flag PO_HEADERS_ALL.global_agreement_flag%TYPE;
2027: BEGIN
2045:
2046: -- locking is applicable only for global blanket agreement
2047: IF (NOT (l_type_lookup_code = 'BLANKET' AND l_ga_flag = 'Y')) THEN
2048:
2049: l_applicable := FND_API.G_FALSE;
2050:
2051: ELSIF ( p_role = PO_GLOBAL.g_role_BUYER) THEN
2052:
2053: l_applicable := FND_API.G_FALSE;
2049: l_applicable := FND_API.G_FALSE;
2050:
2051: ELSIF ( p_role = PO_GLOBAL.g_role_BUYER) THEN
2052:
2053: l_applicable := FND_API.G_FALSE;
2054: END IF;
2055:
2056: IF (PO_LOG.d_proc) THEN
2057: PO_LOG.proc_end(d_module, 'l_applicable', l_applicable);
2060: RETURN l_applicable;
2061:
2062: EXCEPTION
2063: WHEN NO_DATA_FOUND THEN
2064: l_applicable := FND_API.G_FALSE;
2065: RETURN l_applicable;
2066: END is_draft_applicable;
2067:
2068:
2128:
2129:
2130: -- if locking is not allowed, do not need to continue to lock the
2131: -- document
2132: IF (l_locking_applicable = FND_API.G_FALSE OR
2133: x_locking_allowed = FND_API.G_FALSE) THEN
2134: RETURN;
2135: END IF;
2136:
2129:
2130: -- if locking is not allowed, do not need to continue to lock the
2131: -- document
2132: IF (l_locking_applicable = FND_API.G_FALSE OR
2133: x_locking_allowed = FND_API.G_FALSE) THEN
2134: RETURN;
2135: END IF;
2136:
2137: d_position := 10;
2213: --l_draft_id PO_DRAFTS.draft_id%TYPE;
2214: --l_draft_status PO_DRAFTS.status%TYPE;
2215: --l_draft_owner_role PO_DRAFTS.owner_role%TYPE;
2216:
2217: l_pending_changes_exist VARCHAR2(1) := FND_API.G_FALSE;
2218: BEGIN
2219:
2220: d_position := 0;
2221: IF (PO_LOG.d_proc) THEN
2229: x_draft_owner_role => l_draft_owner_role
2230: );
2231:
2232: IF (l_draft_id IS NOT NULL) THEN
2233: l_pending_changes_exist := FND_API.G_TRUE;
2234: END IF;*/
2235:
2236: --
2237: -- Do not call find_draft. Execute separate query.
2235:
2236: --
2237: -- Do not call find_draft. Execute separate query.
2238: -- Exclude entries with draft_type = 'MOD'/'ARCHIVE'
2239: SELECT FND_API.G_TRUE
2240: INTO l_pending_changes_exist
2241: FROM dual
2242: WHERE EXISTS (SELECT 'Draft Exists'
2243: FROM po_drafts
2252: RETURN l_pending_changes_exist;
2253:
2254: EXCEPTION
2255: WHEN NO_DATA_FOUND THEN
2256: l_pending_changes_exist := FND_API.G_FALSE;
2257: IF (PO_LOG.d_proc) THEN
2258: PO_LOG.proc_end(d_module, 'NO_DATA_FOUND: l_pending_changes_exist', l_pending_changes_exist);
2259: END IF;
2260: RETURN l_pending_changes_exist;
2264: --Start of Comments
2265: --Name: changes_exist_for_draft
2266: --Function:
2267: -- Given the draft id table, check whether there exist any draft changes
2268: -- at any entity for each draft id. FND_API.G_TRUE will be populated to
2269: -- the corresponding entry in the returned table
2270: --Parameters:
2271: --IN:
2272: --p_draft_id_tbl
2317: p_po_line_id_tbl => l_null_id_tbl
2318: );
2319:
2320: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2321: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2322: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2323: END IF;
2324: END LOOP;
2325:
2318: );
2319:
2320: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2321: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2322: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2323: END IF;
2324: END LOOP;
2325:
2326: d_position := 30;
2331: p_line_location_id_tbl => l_null_id_tbl
2332: );
2333:
2334: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2335: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2336: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2337: END IF;
2338: END LOOP;
2339:
2332: );
2333:
2334: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2335: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2336: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2337: END IF;
2338: END LOOP;
2339:
2340: d_position := 40;
2345: p_po_distribution_id_tbl => l_null_id_tbl
2346: );
2347:
2348: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2349: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2350: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2351: END IF;
2352: END LOOP;
2353:
2346: );
2347:
2348: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2349: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2350: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2351: END IF;
2352: END LOOP;
2353:
2354: d_position := 50;
2359: p_org_assignment_id_tbl => l_null_id_tbl
2360: );
2361:
2362: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2363: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2364: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2365: END IF;
2366: END LOOP;
2367:
2360: );
2361:
2362: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2363: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2364: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2365: END IF;
2366: END LOOP;
2367:
2368: d_position := 60;
2373: p_price_differential_id_tbl => l_null_id_tbl
2374: );
2375:
2376: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2377: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2378: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2379: END IF;
2380: END LOOP;
2381:
2374: );
2375:
2376: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2377: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2378: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2379: END IF;
2380: END LOOP;
2381:
2382: d_position := 70;
2387: p_notification_id_tbl => l_null_id_tbl
2388: );
2389:
2390: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2391: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2392: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2393: END IF;
2394: END LOOP;
2395:
2388: );
2389:
2390: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2391: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2392: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2393: END IF;
2394: END LOOP;
2395:
2396: d_position := 80;
2401: p_attribute_values_id_tbl => l_null_id_tbl
2402: );
2403:
2404: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2405: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2406: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2407: END IF;
2408: END LOOP;
2409:
2402: );
2403:
2404: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2405: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2406: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2407: END IF;
2408: END LOOP;
2409:
2410: d_position := 90;
2415: p_attribute_values_tlp_id_tbl => l_null_id_tbl
2416: );
2417:
2418: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2419: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2420: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2421: END IF;
2422: END LOOP;
2423:
2416: );
2417:
2418: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2419: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2420: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2421: END IF;
2422: END LOOP;
2423:
2424: --
2430: p_price_adjustment_id_tbl => l_null_id_tbl
2431: );
2432:
2433: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2434: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2435: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2436: END IF;
2437: END LOOP;
2438: --
2431: );
2432:
2433: FOR i IN 1..l_master_chg_exist_tbl.COUNT LOOP
2434: IF (l_chg_exist_tbl(i) = FND_API.G_TRUE) THEN
2435: l_master_chg_exist_tbl(i) := FND_API.G_TRUE;
2436: END IF;
2437: END LOOP;
2438: --
2439:
2471: l_draft_id PO_DRAFTS.draft_id%TYPE;
2472: l_draft_status PO_DRAFTS.status%TYPE;
2473: l_draft_owner_role PO_DRAFTS.owner_role%TYPE;
2474:
2475: l_pending_acceptance VARCHAR2(1) := FND_API.G_FALSE;
2476: BEGIN
2477:
2478: d_position := 0;
2479: IF (PO_LOG.d_proc) THEN
2487: x_draft_owner_role => l_draft_owner_role
2488: );
2489:
2490: IF (l_draft_status = g_status_IN_PROCESS) THEN
2491: l_pending_acceptance := FND_API.G_TRUE;
2492: END IF;
2493:
2494: IF (PO_LOG.d_proc) THEN
2495: PO_LOG.proc_end(d_module, 'l_pending_acceptance', l_pending_acceptance);
2533: INVALID_VIEW_NAME_EXC EXCEPTION;
2534: RESOURCE_BUSY_EXC EXCEPTION;
2535: PRAGMA EXCEPTION_INIT (RESOURCE_BUSY_EXC, -54);
2536:
2537: l_success VARCHAR2(1) := FND_API.G_TRUE;
2538:
2539: BEGIN
2540:
2541: d_position := 0;
2689: IF (PO_LOG.d_proc) THEN
2690: PO_LOG.proc_end(d_module);
2691: END IF;
2692:
2693: RETURN FND_API.G_TRUE;
2694:
2695: EXCEPTION
2696: WHEN RESOURCE_BUSY_EXC THEN
2697: -- come here if database locking cannot be acquired
2694:
2695: EXCEPTION
2696: WHEN RESOURCE_BUSY_EXC THEN
2697: -- come here if database locking cannot be acquired
2698: l_success := FND_API.G_FALSE;
2699: RETURN FND_API.G_FALSE;
2700:
2701: WHEN INVALID_VIEW_NAME_EXC THEN
2702: IF (PO_LOG.d_exc) THEN
2695: EXCEPTION
2696: WHEN RESOURCE_BUSY_EXC THEN
2697: -- come here if database locking cannot be acquired
2698: l_success := FND_API.G_FALSE;
2699: RETURN FND_API.G_FALSE;
2700:
2701: WHEN INVALID_VIEW_NAME_EXC THEN
2702: IF (PO_LOG.d_exc) THEN
2703: PO_LOG.exc(d_module, d_position, 'Invalid view name');
2702: IF (PO_LOG.d_exc) THEN
2703: PO_LOG.exc(d_module, d_position, 'Invalid view name');
2704: END IF;
2705:
2706: l_success := FND_API.G_FALSE;
2707: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2708: WHEN OTHERS THEN
2709: l_success := FND_API.G_FALSE;
2710:
2703: PO_LOG.exc(d_module, d_position, 'Invalid view name');
2704: END IF;
2705:
2706: l_success := FND_API.G_FALSE;
2707: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2708: WHEN OTHERS THEN
2709: l_success := FND_API.G_FALSE;
2710:
2711: PO_MESSAGE_S.add_exc_msg
2705:
2706: l_success := FND_API.G_FALSE;
2707: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2708: WHEN OTHERS THEN
2709: l_success := FND_API.G_FALSE;
2710:
2711: PO_MESSAGE_S.add_exc_msg
2712: ( p_pkg_name => d_pkg_name,
2713: p_procedure_name => d_api_name || '.' || d_position
2813: SET supplier_auth_enabled_flag
2814: = p_supplier_auth_enabled_flag
2815: WHERE po_header_id = p_po_header_id;
2816:
2817: return FND_API.G_RET_STS_SUCCESS;
2818:
2819: EXCEPTION
2820: WHEN no_data_found THEN
2821: RETURN FND_API.G_RET_STS_ERROR;
2817: return FND_API.G_RET_STS_SUCCESS;
2818:
2819: EXCEPTION
2820: WHEN no_data_found THEN
2821: RETURN FND_API.G_RET_STS_ERROR;
2822: WHEN others THEN
2823: po_message_s.sql_error('get_supp_auth_enabled_flag',d_position, sqlcode);
2824: raise;
2825:
2919: SET cat_admin_auth_enabled_flag
2920: = p_cat_admin_auth_enable_flag
2921: WHERE po_header_id = p_po_header_id;
2922:
2923: return FND_API.G_RET_STS_SUCCESS;
2924:
2925: EXCEPTION
2926: WHEN no_data_found THEN
2927: RETURN FND_API.G_RET_STS_ERROR;
2923: return FND_API.G_RET_STS_SUCCESS;
2924:
2925: EXCEPTION
2926: WHEN no_data_found THEN
2927: RETURN FND_API.G_RET_STS_ERROR;
2928: WHEN others THEN
2929: po_message_s.sql_error('get_cat_admin_auth_enable_flag',d_position, sqlcode);
2930: raise;
2931:
3004: --p_role
3005: -- role of the user
3006: --IN OUT:
3007: --OUT:
3008: -- upload_in_progress: FND_API.G_TRUE if there's one upload that's not yet
3009: -- complete
3010: -- upload_status_code
3011: -- upload_requestor_role
3012: -- upload_requestor_role_id id of the role
3027: x_upload_status_display OUT NOCOPY VARCHAR2
3028: ) IS
3029:
3030: BEGIN
3031: x_upload_in_progress := FND_API.G_FALSE;
3032:
3033: -- return the upload status for any upload that's considered 'IN PROGRESS'
3034: -- Bug 12700941, Role was not being fetched, so fetched it and used it later
3035: SELECT job_status,
3048: g_upload_status_RUNNING,
3049: g_upload_status_ERROR)
3050: AND ROWNUM = 1;
3051:
3052: x_upload_in_progress := FND_API.G_TRUE;
3053:
3054: EXCEPTION
3055: WHEN NO_DATA_FOUND THEN
3056: NULL;
3061: -- bug5090429 START
3062: -- Overloaded procedure for another one. All the parameters required by
3063: -- the other one can be derived from p_po_header_id
3064: PROCEDURE unlock_document_and_send_notif
3065: ( p_commit IN VARCHAR2 := FND_API.G_FALSE,
3066: p_po_header_id IN NUMBER
3067: ) IS
3068:
3069: d_api_name CONSTANT VARCHAR2(30) := 'unlock_document_and_send_notif';
3260: );
3261:
3262: d_pos := 60;
3263: --Commit the changes
3264: IF p_commit = FND_API.G_TRUE THEN
3265: COMMIT WORK;
3266: END IF;
3267:
3268: IF (PO_LOG.d_proc) THEN
3326: AND NVL(closed_code, 'OPEN') NOT IN ('CLOSED', 'FINALLY CLOSED')
3327: AND NVL(frozen_flag, 'N') <> 'Y'
3328: AND NVL(user_hold_flag, 'N') <> 'Y';
3329:
3330: RETURN FND_API.G_TRUE;
3331: ELSE
3332: RETURN FND_API.G_TRUE;
3333: END IF;
3334:
3328: AND NVL(user_hold_flag, 'N') <> 'Y';
3329:
3330: RETURN FND_API.G_TRUE;
3331: ELSE
3332: RETURN FND_API.G_TRUE;
3333: END IF;
3334:
3335: IF (PO_LOG.d_proc) THEN
3336: PO_LOG.proc_end(d_module);
3336: PO_LOG.proc_end(d_module);
3337: END IF;
3338: EXCEPTION
3339: WHEN NO_DATA_FOUND THEN
3340: RETURN FND_API.G_FALSE;
3341: END is_doc_in_updatable_state;
3342:
3343: -----------------------------------------------------------------------
3344: --Start of Comments
3460: PO_MESSAGE_S.add_exc_msg
3461: ( p_pkg_name => d_pkg_name,
3462: p_procedure_name => d_api_name || '.' || d_position
3463: );
3464: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3465: END apply_changes;
3466:
3467:
3468: -----------------------------------------------------------------------
3509: IF (PO_LOG.d_proc) THEN
3510: PO_LOG.proc_begin(d_module);
3511: END IF;
3512:
3513: IF (p_draft_info.new_document = FND_API.G_TRUE) THEN
3514: RETURN;
3515: END IF;
3516:
3517: SELECT PH.revision_num
3520: WHERE PH.po_header_id = p_draft_info.po_header_id;
3521:
3522: d_position := 10;
3523: -- determine which level(s) do we need to check for revision change
3524: IF (p_draft_info.headers_changed = FND_API.G_TRUE
3525: OR p_draft_info.ga_org_assign_changed = FND_API.G_TRUE) THEN
3526:
3527: l_index := l_index +1;
3528: l_rev_check_level_tbl(l_index) := 'HEADER';
3521:
3522: d_position := 10;
3523: -- determine which level(s) do we need to check for revision change
3524: IF (p_draft_info.headers_changed = FND_API.G_TRUE
3525: OR p_draft_info.ga_org_assign_changed = FND_API.G_TRUE) THEN
3526:
3527: l_index := l_index +1;
3528: l_rev_check_level_tbl(l_index) := 'HEADER';
3529: END IF;
3528: l_rev_check_level_tbl(l_index) := 'HEADER';
3529: END IF;
3530:
3531: d_position := 20;
3532: IF (p_draft_info.lines_changed = FND_API.G_TRUE) THEN
3533: l_index := l_index +1;
3534: l_rev_check_level_tbl(l_index) := 'LINES';
3535: END IF;
3536:
3534: l_rev_check_level_tbl(l_index) := 'LINES';
3535: END IF;
3536:
3537: d_position := 30;
3538: IF (p_draft_info.line_locations_changed = FND_API.G_TRUE) THEN
3539: l_index := l_index +1;
3540: l_rev_check_level_tbl(l_index) := 'SHIPMENTS';
3541: END IF;
3542:
3540: l_rev_check_level_tbl(l_index) := 'SHIPMENTS';
3541: END IF;
3542:
3543: d_position := 40;
3544: IF (p_draft_info.distributions_changed = FND_API.G_TRUE) THEN
3545: l_index := l_index +1;
3546: l_rev_check_level_tbl(l_index) := 'DISTRIBUTIONS';
3547: END IF;
3548:
3546: l_rev_check_level_tbl(l_index) := 'DISTRIBUTIONS';
3547: END IF;
3548:
3549: d_position := 50;
3550: IF (p_draft_info.price_diff_changed = FND_API.G_TRUE) THEN
3551: l_index := l_index +1;
3552: l_rev_check_level_tbl(l_index) := 'PO_LINE_PRICE_DIFF';
3553:
3554: IF (p_draft_info.doc_subtype = 'BLANKET') THEN
3575: );
3576:
3577: d_position := 80;
3578: IF (l_return_status <> 'S') THEN
3579: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3580: END IF;
3581:
3582: IF (l_orig_revision_num <> l_new_revision_num) THEN
3583: d_position := 90;
3628: PO_MESSAGE_S.add_exc_msg
3629: ( p_pkg_name => d_pkg_name,
3630: p_procedure_name => d_api_name || '.' || d_position
3631: );
3632: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3633: END set_new_revision;
3634:
3635:
3636: -----------------------------------------------------------------------
3648: --p_draft_info
3649: -- record structure that holds draft information
3650: --p_delete_draft
3651: -- flag to indicate whether draft changes should get removed from draft
3652: -- tables. Possible values are FND_API.G_TRUE, FND_API.G_FALSE, 'X'
3653: --IN OUT:
3654: --OUT:
3655: --Returns:
3656: --Notes:
3677:
3678: -- delete_draft = 'X' means that the PO_DRAFTS table should be
3679: -- excluded from deletion. We should just mark it as 'COMPLETED'
3680:
3681: IF (p_delete_draft = FND_API.G_FALSE OR
3682: p_delete_draft = 'X') THEN
3683:
3684: d_position := 10;
3685:
3689: );
3690:
3691: END IF;
3692:
3693: IF (p_delete_draft = FND_API.G_TRUE OR
3694: p_delete_draft = 'X') THEN
3695:
3696: IF (p_delete_draft = FND_API.G_TRUE) THEN
3697: l_exclude_ctrl_tbl := FND_API.G_FALSE;
3692:
3693: IF (p_delete_draft = FND_API.G_TRUE OR
3694: p_delete_draft = 'X') THEN
3695:
3696: IF (p_delete_draft = FND_API.G_TRUE) THEN
3697: l_exclude_ctrl_tbl := FND_API.G_FALSE;
3698: ELSIF (p_delete_draft = 'X') THEN
3699: l_exclude_ctrl_tbl := FND_API.G_TRUE;
3700: END IF;
3693: IF (p_delete_draft = FND_API.G_TRUE OR
3694: p_delete_draft = 'X') THEN
3695:
3696: IF (p_delete_draft = FND_API.G_TRUE) THEN
3697: l_exclude_ctrl_tbl := FND_API.G_FALSE;
3698: ELSIF (p_delete_draft = 'X') THEN
3699: l_exclude_ctrl_tbl := FND_API.G_TRUE;
3700: END IF;
3701:
3695:
3696: IF (p_delete_draft = FND_API.G_TRUE) THEN
3697: l_exclude_ctrl_tbl := FND_API.G_FALSE;
3698: ELSIF (p_delete_draft = 'X') THEN
3699: l_exclude_ctrl_tbl := FND_API.G_TRUE;
3700: END IF;
3701:
3702: d_position := 20;
3703: remove_draft_changes
3705: p_exclude_ctrl_tbl => l_exclude_ctrl_tbl,
3706: x_return_status => l_return_status
3707: );
3708:
3709: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
3710: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3711: END IF;
3712: END IF;
3713:
3706: x_return_status => l_return_status
3707: );
3708:
3709: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
3710: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3711: END IF;
3712: END IF;
3713:
3714: d_position := 30;
3720: PO_MESSAGE_S.add_exc_msg
3721: ( p_pkg_name => d_pkg_name,
3722: p_procedure_name => d_api_name || '.' || d_position
3723: );
3724: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3725: END complete_transfer;
3726:
3727:
3728: -----------------------------------------------------------------------
3849: PO_MESSAGE_S.add_exc_msg
3850: ( p_pkg_name => d_pkg_name,
3851: p_procedure_name => d_api_name || '.' || d_position
3852: );
3853: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3854: END update_acceptance_status;
3855:
3856: -----------------------------------------------------------------------
3857: --Start of Comments
3872: d_api_name CONSTANT VARCHAR2(30) := 'is_draft_exist';
3873: d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
3874: d_position NUMBER;
3875:
3876: l_is_draft_exist VARCHAR2(1) := FND_API.G_FALSE;
3877: l_draft_count NUMBER;
3878:
3879: BEGIN
3880:
3889: WHERE document_id=p_po_header_id
3890: AND draft_type='MOD';
3891:
3892: IF (l_draft_count > 0 ) THEN
3893: l_is_draft_exist := FND_API.G_TRUE;
3894: END IF;
3895:
3896: IF (PO_LOG.d_proc) THEN
3897: PO_LOG.proc_end(d_module, 'l_is_draft_exist', l_is_draft_exist);
3921: d_api_name CONSTANT VARCHAR2(30) := 'is_mod_enabled';
3922: d_module CONSTANT VARCHAR2(2000) := d_pkg_name || d_api_name || '.';
3923: d_position NUMBER;
3924:
3925: l_is_mod_enabled VARCHAR2(1) := FND_API.G_FALSE;
3926: l_mod_flag VARCHAR2(1):= 'N';
3927:
3928: BEGIN
3929:
3949: l_mod_flag :='N';
3950: END;
3951:
3952: IF (l_mod_flag = 'Y' ) THEN
3953: l_is_mod_enabled := FND_API.G_TRUE;
3954: END IF;
3955:
3956:
3957: IF (PO_LOG.d_proc) THEN
4133: PO_LOG.stmt(d_module,d_position,'After Check_Uda_Enabled with x_return_status : ' || l_return_status_uda);
4134: END IF;
4135:
4136:
4137: IF l_return_status_uda = FND_API.G_RET_STS_UNEXP_ERROR THEN
4138: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4139: END IF;
4140:
4141: IF l_enabled_flag = 'Y' THEN
4134: END IF;
4135:
4136:
4137: IF l_return_status_uda = FND_API.G_RET_STS_UNEXP_ERROR THEN
4138: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4139: END IF;
4140:
4141: IF l_enabled_flag = 'Y' THEN
4142: identify_uda_header_locks (p_draft_id =>p_draft_id);
4153: END IF;
4154:
4155: EXCEPTION
4156: WHEN OTHERS THEN
4157: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4158: RAISE;
4159: END lock_entities;
4160:
4161: --------------------------------------------------------------------------------
7991: l_entity_type VARCHAR2(30);
7992:
7993: BEGIN
7994:
7995: x_return_status := FND_API.G_RET_STS_SUCCESS;
7996: x_results := PO_VALIDATION_RESULTS_TYPE.new_instance();
7997: l_lock_by_mod_num_tbl:=PO_TBL_VARCHAR100();
7998:
7999: d_position:=0;
8150: p_token1_value => l_token1_value,
8151: p_column_name => NULL
8152: );
8153:
8154: x_return_status := FND_API.G_RET_STS_ERROR;
8155: END LOOP;
8156:
8157: d_position:=60;
8158: IF (PO_LOG.d_proc) THEN
8159: PO_LOG.proc_end(d_module);
8160: END IF;
8161: EXCEPTION
8162: WHEN OTHERS THEN
8163: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8164: IF (PO_LOG.d_exc) THEN
8165: PO_LOG.exc(d_module,d_position,SQLCODE || SQLERRM);
8166: END IF;
8167: RAISE;
8288:
8289: --
8290: PO_MOD_CONTROL_PVT.update_header_dummy_req(p_draft_id);
8291:
8292: x_return_status := FND_API.G_RET_STS_SUCCESS;
8293: EXCEPTION
8294: WHEN OTHERS THEN
8295: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8296: IF (PO_LOG.d_exc) THEN
8291:
8292: x_return_status := FND_API.G_RET_STS_SUCCESS;
8293: EXCEPTION
8294: WHEN OTHERS THEN
8295: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8296: IF (PO_LOG.d_exc) THEN
8297: PO_LOG.exc(d_module,SQLCODE || SQLERRM);
8298: END IF;
8299: RAISE;
8364: IF (PO_LOG.d_stmt) THEN
8365: PO_LOG.stmt(d_module,d_position ,'Deleted po_entity_locks');
8366: PO_LOG.stmt(d_module,d_position ,'number of rows deleted ',SQL%ROWCOUNT);
8367: END IF;
8368: x_return_status := FND_API.G_RET_STS_SUCCESS;
8369:
8370: EXCEPTION
8371: WHEN OTHERS THEN
8372: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8368: x_return_status := FND_API.G_RET_STS_SUCCESS;
8369:
8370: EXCEPTION
8371: WHEN OTHERS THEN
8372: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8373: IF (PO_LOG.d_exc) THEN
8374: PO_LOG.exc(d_module,SQLCODE || SQLERRM);
8375: END IF;
8376: RAISE;
8465: d_position := 20;
8466:
8467: revert_dist_action(p_po_draft_id,po_distribution_id_tbl,x_return_status);
8468:
8469: x_return_status := FND_API.G_RET_STS_SUCCESS;
8470:
8471: EXCEPTION
8472: WHEN OTHERS THEN
8473: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8469: x_return_status := FND_API.G_RET_STS_SUCCESS;
8470:
8471: EXCEPTION
8472: WHEN OTHERS THEN
8473: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8474: IF (PO_LOG.d_exc) THEN
8475: PO_LOG.exc(d_module,SQLCODE || SQLERRM);
8476: END IF;
8477: RAISE;
8576: AND pk1_value = -p_po_draft_id);
8577:
8578: d_position := 20;
8579: revert_shipment_action(p_po_draft_id,po_line_location_id_tbl,x_return_status);
8580: x_return_status := FND_API.G_RET_STS_SUCCESS;
8581:
8582: --Bug 13938456
8583: --Delete line level attachments other than modifictaion specific attachments
8584: FOR itr IN 1..po_line_ids_tbl.Count LOOP
8600: END LOOP;
8601:
8602: EXCEPTION
8603: WHEN OTHERS THEN
8604: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8605: IF (PO_LOG.d_exc) THEN
8606: PO_LOG.exc(d_module,SQLCODE || SQLERRM);
8607: END IF;
8608: RAISE;