49: nullEmployeeRecord employeeRecord;
50:
51:
52: -- Updated Parsing and Formatting routines to be compatible with AME API 11.5.10.
53: PROCEDURE parse_ame_approver( p_approver_string IN VARCHAR2, p_approver OUT NOCOPY ame_util.approverRecord2 );
54: FUNCTION format_ame_approver( p_approver IN ame_util.approverRecord2 ) RETURN VARCHAR2;
55: FUNCTION format_ame_approver_list( p_approver_list IN ame_util.approversTable2 ) RETURN VARCHAR2;
56: FUNCTION is_old_approver_record( p_approver_string IN VARCHAR2 ) RETURN BOOLEAN;
57:
50:
51:
52: -- Updated Parsing and Formatting routines to be compatible with AME API 11.5.10.
53: PROCEDURE parse_ame_approver( p_approver_string IN VARCHAR2, p_approver OUT NOCOPY ame_util.approverRecord2 );
54: FUNCTION format_ame_approver( p_approver IN ame_util.approverRecord2 ) RETURN VARCHAR2;
55: FUNCTION format_ame_approver_list( p_approver_list IN ame_util.approversTable2 ) RETURN VARCHAR2;
56: FUNCTION is_old_approver_record( p_approver_string IN VARCHAR2 ) RETURN BOOLEAN;
57:
58: -- parsing and formatting routines
51:
52: -- Updated Parsing and Formatting routines to be compatible with AME API 11.5.10.
53: PROCEDURE parse_ame_approver( p_approver_string IN VARCHAR2, p_approver OUT NOCOPY ame_util.approverRecord2 );
54: FUNCTION format_ame_approver( p_approver IN ame_util.approverRecord2 ) RETURN VARCHAR2;
55: FUNCTION format_ame_approver_list( p_approver_list IN ame_util.approversTable2 ) RETURN VARCHAR2;
56: FUNCTION is_old_approver_record( p_approver_string IN VARCHAR2 ) RETURN BOOLEAN;
57:
58: -- parsing and formatting routines
59: PROCEDURE parse_approver(p_approver_string IN VARCHAR2,
56: FUNCTION is_old_approver_record( p_approver_string IN VARCHAR2 ) RETURN BOOLEAN;
57:
58: -- parsing and formatting routines
59: PROCEDURE parse_approver(p_approver_string IN VARCHAR2,
60: p_approver OUT NOCOPY ame_util.approverRecord);
61: PROCEDURE format_approver(p_approver IN ame_util.approverRecord,
62: p_approver_string OUT NOCOPY VARCHAR2);
63: PROCEDURE parse_approver_list(p_approver_list_string IN VARCHAR2,
64: p_approver_list OUT NOCOPY ame_util.approversTable);
57:
58: -- parsing and formatting routines
59: PROCEDURE parse_approver(p_approver_string IN VARCHAR2,
60: p_approver OUT NOCOPY ame_util.approverRecord);
61: PROCEDURE format_approver(p_approver IN ame_util.approverRecord,
62: p_approver_string OUT NOCOPY VARCHAR2);
63: PROCEDURE parse_approver_list(p_approver_list_string IN VARCHAR2,
64: p_approver_list OUT NOCOPY ame_util.approversTable);
65: PROCEDURE format_approver_list(p_approver_list IN ame_util.approversTable,
60: p_approver OUT NOCOPY ame_util.approverRecord);
61: PROCEDURE format_approver(p_approver IN ame_util.approverRecord,
62: p_approver_string OUT NOCOPY VARCHAR2);
63: PROCEDURE parse_approver_list(p_approver_list_string IN VARCHAR2,
64: p_approver_list OUT NOCOPY ame_util.approversTable);
65: PROCEDURE format_approver_list(p_approver_list IN ame_util.approversTable,
66: p_approver_list_string OUT NOCOPY VARCHAR2);
67: FUNCTION convert_to_ame_api_insertion(p_pon_api_insertion IN NUMBER) RETURN VARCHAR2;
68: FUNCTION convert_to_pon_api_insertion(p_ame_api_insertion IN VARCHAR2) RETURN NUMBER;
61: PROCEDURE format_approver(p_approver IN ame_util.approverRecord,
62: p_approver_string OUT NOCOPY VARCHAR2);
63: PROCEDURE parse_approver_list(p_approver_list_string IN VARCHAR2,
64: p_approver_list OUT NOCOPY ame_util.approversTable);
65: PROCEDURE format_approver_list(p_approver_list IN ame_util.approversTable,
66: p_approver_list_string OUT NOCOPY VARCHAR2);
67: FUNCTION convert_to_ame_api_insertion(p_pon_api_insertion IN NUMBER) RETURN VARCHAR2;
68: FUNCTION convert_to_pon_api_insertion(p_ame_api_insertion IN VARCHAR2) RETURN NUMBER;
69: FUNCTION convert_to_ame_authority(p_pon_authority IN NUMBER) RETURN VARCHAR2;
80: PROCEDURE get_employee_info_for_user(p_user_name IN VARCHAR2, p_employee OUT NOCOPY employeeRecord);
81: PROCEDURE get_employee_info_for_person(p_person_id IN NUMBER, p_employee OUT NOCOPY employeeRecord);
82:
83: -- function that returns true if two approvers match
84: FUNCTION approvers_match(p_approver1 ame_util.approverRecord,
85: p_approver2 ame_util.approverRecord) RETURN BOOLEAN;
86:
87: --procedure used for error reporting
88: PROCEDURE trim_error_code(p_error_code IN NUMBER,
81: PROCEDURE get_employee_info_for_person(p_person_id IN NUMBER, p_employee OUT NOCOPY employeeRecord);
82:
83: -- function that returns true if two approvers match
84: FUNCTION approvers_match(p_approver1 ame_util.approverRecord,
85: p_approver2 ame_util.approverRecord) RETURN BOOLEAN;
86:
87: --procedure used for error reporting
88: PROCEDURE trim_error_code(p_error_code IN NUMBER,
89: p_error_message_in IN VARCHAR2,
887: l_auction_header_id NUMBER;
888: l_transaction_id VARCHAR2(80);
889:
890: l_next_approver_employee employeeRecord;
891: l_next_approver_list ame_util.approversTable2;
892: l_next_approver ame_util.approverRecord2;
893: l_process_out varchar2(2);
894: l_person_id NUMBER;
895:
888: l_transaction_id VARCHAR2(80);
889:
890: l_next_approver_employee employeeRecord;
891: l_next_approver_list ame_util.approversTable2;
892: l_next_approver ame_util.approverRecord2;
893: l_process_out varchar2(2);
894: l_person_id NUMBER;
895:
896: l_next_approver_name VARCHAR2(240);
896: l_next_approver_name VARCHAR2(240);
897: l_next_approver_string VARCHAR2(240);
898: l_success_flag BOOLEAN;
899: l_source_type_out VARCHAR2(50);
900: l_idList ame_util.idList;
901:
902: l_current_log_level NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
903: l_exception_log_level NUMBER := FND_LOG.LEVEL_EXCEPTION;
904: l_statement_log_level NUMBER := FND_LOG.LEVEL_STATEMENT;
982: ame_api3.parseApproverSource( approverSourceIn => l_next_approver.source,
983: sourceDescriptionOut => l_source_type_out,
984: ruleIdListOut => l_idList);
985:
986: IF( l_next_approver.api_insertion = ame_util.apiAuthorityInsertion AND
987: l_source_type_out <> ame_util.forwardeeSource ) THEN
988: l_person_id := wf_engine.GetItemAttrNumber(itemtype => itemtype,
989: itemkey => itemkey,
990: aname => 'FIRST_AUTHORITY_APPROVER_ID');
983: sourceDescriptionOut => l_source_type_out,
984: ruleIdListOut => l_idList);
985:
986: IF( l_next_approver.api_insertion = ame_util.apiAuthorityInsertion AND
987: l_source_type_out <> ame_util.forwardeeSource ) THEN
988: l_person_id := wf_engine.GetItemAttrNumber(itemtype => itemtype,
989: itemkey => itemkey,
990: aname => 'FIRST_AUTHORITY_APPROVER_ID');
991: END IF;
1203: funcmode IN VARCHAR2,
1204: resultout OUT NOCOPY VARCHAR2) IS
1205: l_error_date DATE;
1206: l_oam_admin_user_name VARCHAR2(100);
1207: l_admin_approver ame_util.approverRecord2;
1208:
1209: l_current_log_level NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1210: l_exception_log_level NUMBER := FND_LOG.LEVEL_EXCEPTION;
1211: l_statement_log_level NUMBER := FND_LOG.LEVEL_STATEMENT;
1222: log_string(l_statement_log_level, l_current_log_level, l_module_name, 'calling ame_api2.getAdminApprover returns ' || fnd_global.newline || format_ame_approver(l_admin_approver));
1223:
1224: EXCEPTION
1225: WHEN OTHERS THEN
1226: l_admin_approver := ame_util.emptyApproverRecord2;
1227:
1228: log_string(l_exception_log_level, l_current_log_level, l_module_name, SQLERRM);
1229: END;
1230:
1382:
1383: l_approver_employee employeeRecord;
1384: l_person_id NUMBER;
1385:
1386: l_approver ame_util.approverRecord2;
1387: l_forwardee ame_util.approverRecord2;
1388: l_approver_old ame_util.approverRecord;
1389:
1390: l_forwardee_user_name VARCHAR2(100);
1383: l_approver_employee employeeRecord;
1384: l_person_id NUMBER;
1385:
1386: l_approver ame_util.approverRecord2;
1387: l_forwardee ame_util.approverRecord2;
1388: l_approver_old ame_util.approverRecord;
1389:
1390: l_forwardee_user_name VARCHAR2(100);
1391: l_forwardee_employee employeeRecord;
1384: l_person_id NUMBER;
1385:
1386: l_approver ame_util.approverRecord2;
1387: l_forwardee ame_util.approverRecord2;
1388: l_approver_old ame_util.approverRecord;
1389:
1390: l_forwardee_user_name VARCHAR2(100);
1391: l_forwardee_employee employeeRecord;
1392: l_action_type VARCHAR2(25);
1393: l_approval_status VARCHAR2(50);
1394: l_valid_response BOOLEAN;
1395: l_success_flag BOOLEAN;
1396: l_source_type_out VARCHAR2(50);
1397: l_idList ame_util.idList;
1398:
1399: l_current_log_level NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1400: l_exception_log_level NUMBER := FND_LOG.LEVEL_EXCEPTION;
1401: l_statement_log_level NUMBER := FND_LOG.LEVEL_STATEMENT;
1472:
1473: log_string( l_statement_log_level,
1474: l_current_log_level,
1475: l_module_name,
1476: 'It is_old_approver_record. So calling ame_util.apprRecordToApprRecord2' );
1477: parse_approver(l_approver_string, l_approver_old);
1478: ame_util.apprRecordToApprRecord2( approverRecordIn => l_approver_old,
1479: approverRecord2Out => l_approver );
1480: ELSE
1474: l_current_log_level,
1475: l_module_name,
1476: 'It is_old_approver_record. So calling ame_util.apprRecordToApprRecord2' );
1477: parse_approver(l_approver_string, l_approver_old);
1478: ame_util.apprRecordToApprRecord2( approverRecordIn => l_approver_old,
1479: approverRecord2Out => l_approver );
1480: ELSE
1481: parse_ame_approver(l_approver_string, l_approver);
1482: END IF;
1494: ame_api3.parseApproverSource( approverSourceIn => l_approver.source,
1495: sourceDescriptionOut => l_source_type_out,
1496: ruleIdListOut => l_idList);
1497:
1498: IF( l_approver.api_insertion = ame_util.apiAuthorityInsertion AND
1499: l_source_type_out <> ame_util.forwardeeSource ) THEN
1500: l_person_id := wf_engine.GetItemAttrNumber(itemtype => itemtype,
1501: itemkey => itemkey,
1502: aname => 'FIRST_AUTHORITY_APPROVER_ID');
1495: sourceDescriptionOut => l_source_type_out,
1496: ruleIdListOut => l_idList);
1497:
1498: IF( l_approver.api_insertion = ame_util.apiAuthorityInsertion AND
1499: l_source_type_out <> ame_util.forwardeeSource ) THEN
1500: l_person_id := wf_engine.GetItemAttrNumber(itemtype => itemtype,
1501: itemkey => itemkey,
1502: aname => 'FIRST_AUTHORITY_APPROVER_ID');
1503: END IF;
1629:
1630: -- determine approval status for response type
1631: -- set approver's approval status
1632: IF l_response_type = 'APPROVE' THEN
1633: l_approver.approval_status:= ame_util.approvedStatus;
1634: ELSIF l_response_type = 'REJECT' THEN
1635: l_approver.approval_status := ame_util.rejectStatus;
1636: ELSIF l_response_type = 'FORWARD' THEN
1637: l_approver.approval_status := ame_util.forwardStatus;
1631: -- set approver's approval status
1632: IF l_response_type = 'APPROVE' THEN
1633: l_approver.approval_status:= ame_util.approvedStatus;
1634: ELSIF l_response_type = 'REJECT' THEN
1635: l_approver.approval_status := ame_util.rejectStatus;
1636: ELSIF l_response_type = 'FORWARD' THEN
1637: l_approver.approval_status := ame_util.forwardStatus;
1638: ELSIF l_response_type = 'APPROVE_AND_FORWARD' THEN
1639: l_approver.approval_status := ame_util.approveAndForwardStatus;
1633: l_approver.approval_status:= ame_util.approvedStatus;
1634: ELSIF l_response_type = 'REJECT' THEN
1635: l_approver.approval_status := ame_util.rejectStatus;
1636: ELSIF l_response_type = 'FORWARD' THEN
1637: l_approver.approval_status := ame_util.forwardStatus;
1638: ELSIF l_response_type = 'APPROVE_AND_FORWARD' THEN
1639: l_approver.approval_status := ame_util.approveAndForwardStatus;
1640: END IF;
1641:
1635: l_approver.approval_status := ame_util.rejectStatus;
1636: ELSIF l_response_type = 'FORWARD' THEN
1637: l_approver.approval_status := ame_util.forwardStatus;
1638: ELSIF l_response_type = 'APPROVE_AND_FORWARD' THEN
1639: l_approver.approval_status := ame_util.approveAndForwardStatus;
1640: END IF;
1641:
1642: -- use forwardee's person id since person id is preferred
1643: IF l_forwardee_employee.person_id IS NOT NULL THEN
1645: l_forwardee.orig_system_id := l_forwardee_employee.person_id;
1646: l_forwardee.orig_system := l_approver.orig_system;
1647:
1648: -- set forwardee's api_insertion and authority fields
1649: IF l_approver.api_insertion IN (ame_util.oamGenerated, ame_util.apiAuthorityInsertion) AND
1650: l_approver.authority = ame_util.authorityApprover THEN
1651: l_forwardee.api_insertion := ame_util.apiAuthorityInsertion;
1652: ELSE
1653: l_forwardee.api_insertion := ame_util.apiInsertion;
1646: l_forwardee.orig_system := l_approver.orig_system;
1647:
1648: -- set forwardee's api_insertion and authority fields
1649: IF l_approver.api_insertion IN (ame_util.oamGenerated, ame_util.apiAuthorityInsertion) AND
1650: l_approver.authority = ame_util.authorityApprover THEN
1651: l_forwardee.api_insertion := ame_util.apiAuthorityInsertion;
1652: ELSE
1653: l_forwardee.api_insertion := ame_util.apiInsertion;
1654: END IF;
1647:
1648: -- set forwardee's api_insertion and authority fields
1649: IF l_approver.api_insertion IN (ame_util.oamGenerated, ame_util.apiAuthorityInsertion) AND
1650: l_approver.authority = ame_util.authorityApprover THEN
1651: l_forwardee.api_insertion := ame_util.apiAuthorityInsertion;
1652: ELSE
1653: l_forwardee.api_insertion := ame_util.apiInsertion;
1654: END IF;
1655:
1649: IF l_approver.api_insertion IN (ame_util.oamGenerated, ame_util.apiAuthorityInsertion) AND
1650: l_approver.authority = ame_util.authorityApprover THEN
1651: l_forwardee.api_insertion := ame_util.apiAuthorityInsertion;
1652: ELSE
1653: l_forwardee.api_insertion := ame_util.apiInsertion;
1654: END IF;
1655:
1656: IF l_forwardee.orig_system = 'POS' THEN
1657: select full_name into l_forwardee.display_name from per_all_people_f where person_id = l_forwardee.orig_system_id and TRUNC(sysdate) between effective_start_date and effective_end_date;
1686: RETURN;
1687: END IF;
1688: END IF;
1689:
1690: l_forwardee.approval_status := ame_util.nullStatus;
1691:
1692: l_forwardee.authority := l_approver.authority;
1693: l_forwardee.approver_category := l_approver.approver_category;
1694: l_forwardee.item_class := l_approver.item_class ;
1715:
1716: RETURN;
1717: END IF;
1718: ELSE
1719: l_forwardee := ame_util.emptyApproverRecord2;
1720: END IF;
1721:
1722: l_success_flag := TRUE;
1723:
1803: p_last_update_date IN DATE,
1804: p_approver_list_string OUT NOCOPY VARCHAR2,
1805: p_error_message OUT NOCOPY VARCHAR2) IS
1806:
1807: l_approver_list ame_util.approversTable2;
1808: l_approver ame_util.approverRecord2;
1809: l_available_insertion_list ame_util.insertionsTable2;
1810: l_insertion_order ame_util.insertionRecord2;
1811: l_process_out varchar2(2);
1804: p_approver_list_string OUT NOCOPY VARCHAR2,
1805: p_error_message OUT NOCOPY VARCHAR2) IS
1806:
1807: l_approver_list ame_util.approversTable2;
1808: l_approver ame_util.approverRecord2;
1809: l_available_insertion_list ame_util.insertionsTable2;
1810: l_insertion_order ame_util.insertionRecord2;
1811: l_process_out varchar2(2);
1812:
1805: p_error_message OUT NOCOPY VARCHAR2) IS
1806:
1807: l_approver_list ame_util.approversTable2;
1808: l_approver ame_util.approverRecord2;
1809: l_available_insertion_list ame_util.insertionsTable2;
1810: l_insertion_order ame_util.insertionRecord2;
1811: l_process_out varchar2(2);
1812:
1813: l_error_code NUMBER;
1806:
1807: l_approver_list ame_util.approversTable2;
1808: l_approver ame_util.approverRecord2;
1809: l_available_insertion_list ame_util.insertionsTable2;
1810: l_insertion_order ame_util.insertionRecord2;
1811: l_process_out varchar2(2);
1812:
1813: l_error_code NUMBER;
1814:
1840: -- that corresponds to the api insertion and authority value of the approver to be inserted into the approver list
1841:
1842: FOR i IN 1 .. l_available_insertion_list.COUNT LOOP
1843: IF l_available_insertion_list(i).order_type IN
1844: (ame_util.absoluteOrder, ame_util.afterApprover, ame_util.beforeApprover) AND
1845: l_available_insertion_list(i).api_insertion = l_approver.api_insertion AND
1846: l_available_insertion_list(i).authority = l_approver.authority THEN
1847:
1848: l_insertion_order := l_available_insertion_list(i);
1922: p_last_update_date IN DATE,
1923: p_approver_list_string OUT NOCOPY VARCHAR2,
1924: p_error_message OUT NOCOPY VARCHAR2) IS
1925:
1926: l_approver_list ame_util.approversTable2;
1927: l_approver ame_util.approverRecord2;
1928: l_process_out varchar2(2);
1929:
1930: l_error_code NUMBER;
1923: p_approver_list_string OUT NOCOPY VARCHAR2,
1924: p_error_message OUT NOCOPY VARCHAR2) IS
1925:
1926: l_approver_list ame_util.approversTable2;
1927: l_approver ame_util.approverRecord2;
1928: l_process_out varchar2(2);
1929:
1930: l_error_code NUMBER;
1931:
1991: p_last_update_date IN DATE,
1992: p_approver_list_string OUT NOCOPY VARCHAR2,
1993: p_error_message OUT NOCOPY VARCHAR2) IS
1994:
1995: l_approver_list ame_util.approversTable2;
1996: l_approver ame_util.approverRecord2;
1997: l_process_out VARCHAR2(1);
1998:
1999: insertion ame_util.insertionRecord2;
1992: p_approver_list_string OUT NOCOPY VARCHAR2,
1993: p_error_message OUT NOCOPY VARCHAR2) IS
1994:
1995: l_approver_list ame_util.approversTable2;
1996: l_approver ame_util.approverRecord2;
1997: l_process_out VARCHAR2(1);
1998:
1999: insertion ame_util.insertionRecord2;
2000: l_available_insertion_list ame_util.insertionsTable2;
1995: l_approver_list ame_util.approversTable2;
1996: l_approver ame_util.approverRecord2;
1997: l_process_out VARCHAR2(1);
1998:
1999: insertion ame_util.insertionRecord2;
2000: l_available_insertion_list ame_util.insertionsTable2;
2001: l_current_first_approver ame_util.approverRecord2;
2002:
2003: l_error_code NUMBER;
1996: l_approver ame_util.approverRecord2;
1997: l_process_out VARCHAR2(1);
1998:
1999: insertion ame_util.insertionRecord2;
2000: l_available_insertion_list ame_util.insertionsTable2;
2001: l_current_first_approver ame_util.approverRecord2;
2002:
2003: l_error_code NUMBER;
2004:
1997: l_process_out VARCHAR2(1);
1998:
1999: insertion ame_util.insertionRecord2;
2000: l_available_insertion_list ame_util.insertionsTable2;
2001: l_current_first_approver ame_util.approverRecord2;
2002:
2003: l_error_code NUMBER;
2004:
2005: l_current_log_level NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2028: approvalProcessCompleteYNOut => l_process_out,
2029: approversOut => l_approver_list);
2030:
2031: for i in 1 .. l_approver_list.count loop
2032: if( l_approver_list(i).authority = ame_util.authorityApprover
2033: and l_approver_list(i).group_or_chain_id < 3
2034: and l_approver_list(i).api_insertion = ame_util.oamGenerated) then
2035: l_current_first_approver := l_approver_list(i) ;
2036: log_string(l_statement_log_level, l_current_log_level, l_module_name,'authorityApprover: ' || l_current_first_approver.authority);
2030:
2031: for i in 1 .. l_approver_list.count loop
2032: if( l_approver_list(i).authority = ame_util.authorityApprover
2033: and l_approver_list(i).group_or_chain_id < 3
2034: and l_approver_list(i).api_insertion = ame_util.oamGenerated) then
2035: l_current_first_approver := l_approver_list(i) ;
2036: log_string(l_statement_log_level, l_current_log_level, l_module_name,'authorityApprover: ' || l_current_first_approver.authority);
2037:
2038: exit;
2067: END IF;
2068:
2069: -- set the mandatory default attributes for the first authority approver.
2070: -- this will make sure we have populated the correct values.
2071: l_approver.authority := ame_util.authorityApprover;
2072: l_approver.api_insertion := ame_util.apiAuthorityInsertion;
2073: l_approver.approval_status := ame_util.nullStatus;
2074: l_approver.approver_category := ame_util.approvalApproverCategory ;
2075: l_approver.item_class := l_current_first_approver.item_class ;
2068:
2069: -- set the mandatory default attributes for the first authority approver.
2070: -- this will make sure we have populated the correct values.
2071: l_approver.authority := ame_util.authorityApprover;
2072: l_approver.api_insertion := ame_util.apiAuthorityInsertion;
2073: l_approver.approval_status := ame_util.nullStatus;
2074: l_approver.approver_category := ame_util.approvalApproverCategory ;
2075: l_approver.item_class := l_current_first_approver.item_class ;
2076: l_approver.item_id := l_current_first_approver.item_id ;
2069: -- set the mandatory default attributes for the first authority approver.
2070: -- this will make sure we have populated the correct values.
2071: l_approver.authority := ame_util.authorityApprover;
2072: l_approver.api_insertion := ame_util.apiAuthorityInsertion;
2073: l_approver.approval_status := ame_util.nullStatus;
2074: l_approver.approver_category := ame_util.approvalApproverCategory ;
2075: l_approver.item_class := l_current_first_approver.item_class ;
2076: l_approver.item_id := l_current_first_approver.item_id ;
2077: l_approver.action_type_id := l_current_first_approver.action_type_id ;
2070: -- this will make sure we have populated the correct values.
2071: l_approver.authority := ame_util.authorityApprover;
2072: l_approver.api_insertion := ame_util.apiAuthorityInsertion;
2073: l_approver.approval_status := ame_util.nullStatus;
2074: l_approver.approver_category := ame_util.approvalApproverCategory ;
2075: l_approver.item_class := l_current_first_approver.item_class ;
2076: l_approver.item_id := l_current_first_approver.item_id ;
2077: l_approver.action_type_id := l_current_first_approver.action_type_id ;
2078: l_approver.group_or_chain_id := l_current_first_approver.group_or_chain_id ;
2091: ame_api2.setFirstAuthorityApprover(applicationIdIn => APPLICATION_ID,
2092: transactionIdIn => p_transaction_id,
2093: approverIn => l_approver,
2094: transactionTypeIn => AWARD_TRANSACTION_TYPE,
2095: clearChainStatusYNIn => ame_util.booleanTrue);
2096:
2097: -- recalculate approver list
2098: ame_api2.getAllApprovers7( applicationIdIn => APPLICATION_ID,
2099: transactionIdIn => p_transaction_id,
2135: p_approver_list_string OUT NOCOPY VARCHAR2,
2136: p_can_delete_oam_approvers OUT NOCOPY VARCHAR2,
2137: p_error_message OUT NOCOPY VARCHAR2) IS
2138:
2139: l_approver_list ame_util.approversTable2;
2140: l_attribute_value1 VARCHAR2(10);
2141: l_attribute_value2 VARCHAR2(10);
2142: l_attribute_value3 VARCHAR2(10);
2143: l_process_out VARCHAR2(10);
2172:
2173: p_approver_list_string := format_ame_approver_list(l_approver_list);
2174:
2175: -- determine whether OAM-generated approvers can be deleted
2176: log_string(l_statement_log_level, l_current_log_level, l_module_name, 'calling ame_api3.getAttributeValue with ' || ame_util.allowDeletingOamApprovers);
2177: ame_api3.getAttributeValue(applicationIdIn => APPLICATION_ID,
2178: transactionTypeIn => AWARD_TRANSACTION_TYPE,
2179: transactionIdIn => p_transaction_id,
2180: attributeNameIn => ame_util.allowDeletingOamApprovers,
2176: log_string(l_statement_log_level, l_current_log_level, l_module_name, 'calling ame_api3.getAttributeValue with ' || ame_util.allowDeletingOamApprovers);
2177: ame_api3.getAttributeValue(applicationIdIn => APPLICATION_ID,
2178: transactionTypeIn => AWARD_TRANSACTION_TYPE,
2179: transactionIdIn => p_transaction_id,
2180: attributeNameIn => ame_util.allowDeletingOamApprovers,
2181: itemIdIn => NULL,
2182: attributeValue1Out => l_attribute_value1,
2183: attributeValue2Out => l_attribute_value2,
2184: attributeValue3Out => l_attribute_value3);
2453:
2454: /*
2455: Returns true if p_approver1 and p_approver2 match; false otherwise.
2456: */
2457: FUNCTION approvers_match(p_approver1 ame_util.approverRecord,
2458: p_approver2 ame_util.approverRecord) RETURN BOOLEAN IS
2459: BEGIN
2460:
2461: RETURN
2454: /*
2455: Returns true if p_approver1 and p_approver2 match; false otherwise.
2456: */
2457: FUNCTION approvers_match(p_approver1 ame_util.approverRecord,
2458: p_approver2 ame_util.approverRecord) RETURN BOOLEAN IS
2459: BEGIN
2460:
2461: RETURN
2462: NVL(((p_approver1.user_id IS NULL AND p_approver2.user_id IS NULL) OR
2470:
2471: END approvers_match;
2472:
2473: /*
2474: Reconstructs an ame_util.approverRecord record from a string.
2475: */
2476: PROCEDURE parse_approver(p_approver_string IN VARCHAR2,
2477: p_approver OUT NOCOPY ame_util.approverRecord) IS
2478: l_start_index INTEGER;
2473: /*
2474: Reconstructs an ame_util.approverRecord record from a string.
2475: */
2476: PROCEDURE parse_approver(p_approver_string IN VARCHAR2,
2477: p_approver OUT NOCOPY ame_util.approverRecord) IS
2478: l_start_index INTEGER;
2479: l_end_index INTEGER;
2480: l_delimiter_length INTEGER;
2481: l_field_value VARCHAR2(80);
2551:
2552: END is_old_approver_record;
2553:
2554: /*
2555: Reconstructs an ame_util.approverRecord2 record from a string.
2556: */
2557: PROCEDURE parse_ame_approver( p_approver_string IN VARCHAR2, p_approver OUT NOCOPY ame_util.approverRecord2 ) IS
2558: l_start_index INTEGER;
2559: l_end_index INTEGER;
2553:
2554: /*
2555: Reconstructs an ame_util.approverRecord2 record from a string.
2556: */
2557: PROCEDURE parse_ame_approver( p_approver_string IN VARCHAR2, p_approver OUT NOCOPY ame_util.approverRecord2 ) IS
2558: l_start_index INTEGER;
2559: l_end_index INTEGER;
2560: l_delimiter_length INTEGER;
2561: l_field_value VARCHAR2(80);
2672: END parse_ame_approver;
2673:
2674:
2675: /*
2676: Creates a string representation of an ame_util.approverRecord record.
2677: */
2678: PROCEDURE format_approver(p_approver IN ame_util.approverRecord,
2679: p_approver_string OUT NOCOPY VARCHAR2) IS
2680: BEGIN
2674:
2675: /*
2676: Creates a string representation of an ame_util.approverRecord record.
2677: */
2678: PROCEDURE format_approver(p_approver IN ame_util.approverRecord,
2679: p_approver_string OUT NOCOPY VARCHAR2) IS
2680: BEGIN
2681:
2682: p_approver_string :=
2689:
2690: END format_approver;
2691:
2692: /*
2693: Creates a string representation of an ame_util.approverRecord record.
2694: */
2695: FUNCTION format_ame_approver(p_approver IN ame_util.approverRecord2) RETURN VARCHAR2 IS
2696:
2697: l_approver_string VARCHAR2(1500);
2691:
2692: /*
2693: Creates a string representation of an ame_util.approverRecord record.
2694: */
2695: FUNCTION format_ame_approver(p_approver IN ame_util.approverRecord2) RETURN VARCHAR2 IS
2696:
2697: l_approver_string VARCHAR2(1500);
2698:
2699: BEGIN
2727:
2728: END format_ame_approver;
2729:
2730: /*
2731: Reconstructs an ame_util.approversTable table from a string.
2732: */
2733: PROCEDURE parse_approver_list(p_approver_list_string IN VARCHAR2,
2734: p_approver_list OUT NOCOPY ame_util.approversTable) IS
2735: l_start_index INTEGER;
2730: /*
2731: Reconstructs an ame_util.approversTable table from a string.
2732: */
2733: PROCEDURE parse_approver_list(p_approver_list_string IN VARCHAR2,
2734: p_approver_list OUT NOCOPY ame_util.approversTable) IS
2735: l_start_index INTEGER;
2736: l_end_index INTEGER;
2737: l_list_string_length INTEGER;
2738: l_delimiter_length INTEGER;
2737: l_list_string_length INTEGER;
2738: l_delimiter_length INTEGER;
2739: l_list_index INTEGER;
2740: l_approver_string VARCHAR2(240);
2741: l_approver ame_util.approverRecord;
2742: BEGIN
2743:
2744: l_list_string_length := LENGTHB(p_approver_list_string);
2745: l_delimiter_length := LENGTHB(APPROVER_RECORD_DELIMITER);
2763:
2764: END parse_approver_list;
2765:
2766: /*
2767: Creates a string representation of an ame_util.approversTable table.
2768: */
2769: PROCEDURE format_approver_list(p_approver_list IN ame_util.approversTable,
2770: p_approver_list_string OUT NOCOPY VARCHAR2) IS
2771: l_approver_string VARCHAR2(240);
2765:
2766: /*
2767: Creates a string representation of an ame_util.approversTable table.
2768: */
2769: PROCEDURE format_approver_list(p_approver_list IN ame_util.approversTable,
2770: p_approver_list_string OUT NOCOPY VARCHAR2) IS
2771: l_approver_string VARCHAR2(240);
2772: BEGIN
2773:
2784:
2785: END format_approver_list;
2786:
2787: /*
2788: Creates a string representation of an ame_util.approversTable2 table.
2789: */
2790: FUNCTION format_ame_approver_list( p_approver_list IN ame_util.approversTable2) RETURN VARCHAR2 IS
2791: l_approver_list_string VARCHAR2(32000);
2792: l_approver_string VARCHAR2(1500);
2786:
2787: /*
2788: Creates a string representation of an ame_util.approversTable2 table.
2789: */
2790: FUNCTION format_ame_approver_list( p_approver_list IN ame_util.approversTable2) RETURN VARCHAR2 IS
2791: l_approver_list_string VARCHAR2(32000);
2792: l_approver_string VARCHAR2(1500);
2793: BEGIN
2794:
2810: END format_ame_approver_list;
2811:
2812:
2813: /*
2814: Converts the specified PON_AWARD_APPROVAL_PKG api_insertion code to a corresponding ame_util api_insertion code.
2815: */
2816: FUNCTION convert_to_ame_api_insertion(p_pon_api_insertion IN NUMBER) RETURN VARCHAR2 IS
2817: BEGIN
2818: IF p_pon_api_insertion = API_AUTHORITY_INSERTION THEN
2815: */
2816: FUNCTION convert_to_ame_api_insertion(p_pon_api_insertion IN NUMBER) RETURN VARCHAR2 IS
2817: BEGIN
2818: IF p_pon_api_insertion = API_AUTHORITY_INSERTION THEN
2819: RETURN ame_util.apiAuthorityInsertion;
2820: ELSIF p_pon_api_insertion = API_INSERTION THEN
2821: RETURN ame_util.apiInsertion;
2822: ELSIF p_pon_api_insertion = OAM_GENERATED THEN
2823: RETURN ame_util.oamGenerated;
2817: BEGIN
2818: IF p_pon_api_insertion = API_AUTHORITY_INSERTION THEN
2819: RETURN ame_util.apiAuthorityInsertion;
2820: ELSIF p_pon_api_insertion = API_INSERTION THEN
2821: RETURN ame_util.apiInsertion;
2822: ELSIF p_pon_api_insertion = OAM_GENERATED THEN
2823: RETURN ame_util.oamGenerated;
2824: ELSE
2825: RETURN NULL;
2819: RETURN ame_util.apiAuthorityInsertion;
2820: ELSIF p_pon_api_insertion = API_INSERTION THEN
2821: RETURN ame_util.apiInsertion;
2822: ELSIF p_pon_api_insertion = OAM_GENERATED THEN
2823: RETURN ame_util.oamGenerated;
2824: ELSE
2825: RETURN NULL;
2826: END IF;
2827: END convert_to_ame_api_insertion;
2826: END IF;
2827: END convert_to_ame_api_insertion;
2828:
2829: /*
2830: Converts the specified ame_util api_insertion code to a corresponding PON_AWARD_APPROVAL_PKG api_insertion code.
2831: */
2832: FUNCTION convert_to_pon_api_insertion(p_ame_api_insertion IN VARCHAR2) RETURN NUMBER IS
2833: BEGIN
2834: IF p_ame_api_insertion = ame_util.apiAuthorityInsertion THEN
2830: Converts the specified ame_util api_insertion code to a corresponding PON_AWARD_APPROVAL_PKG api_insertion code.
2831: */
2832: FUNCTION convert_to_pon_api_insertion(p_ame_api_insertion IN VARCHAR2) RETURN NUMBER IS
2833: BEGIN
2834: IF p_ame_api_insertion = ame_util.apiAuthorityInsertion THEN
2835: RETURN API_AUTHORITY_INSERTION;
2836: ELSIF p_ame_api_insertion = ame_util.apiInsertion THEN
2837: RETURN API_INSERTION;
2838: ELSIF p_ame_api_insertion = ame_util.oamGenerated THEN
2832: FUNCTION convert_to_pon_api_insertion(p_ame_api_insertion IN VARCHAR2) RETURN NUMBER IS
2833: BEGIN
2834: IF p_ame_api_insertion = ame_util.apiAuthorityInsertion THEN
2835: RETURN API_AUTHORITY_INSERTION;
2836: ELSIF p_ame_api_insertion = ame_util.apiInsertion THEN
2837: RETURN API_INSERTION;
2838: ELSIF p_ame_api_insertion = ame_util.oamGenerated THEN
2839: RETURN OAM_GENERATED;
2840: ELSE
2834: IF p_ame_api_insertion = ame_util.apiAuthorityInsertion THEN
2835: RETURN API_AUTHORITY_INSERTION;
2836: ELSIF p_ame_api_insertion = ame_util.apiInsertion THEN
2837: RETURN API_INSERTION;
2838: ELSIF p_ame_api_insertion = ame_util.oamGenerated THEN
2839: RETURN OAM_GENERATED;
2840: ELSE
2841: RETURN NULL;
2842: END IF;
2842: END IF;
2843: END convert_to_pon_api_insertion;
2844:
2845: /*
2846: Converts the specified PON_AWARD_APPROVAL_PKG authority code to a corresponding ame_util authority code.
2847: */
2848: FUNCTION convert_to_ame_authority(p_pon_authority IN NUMBER) RETURN VARCHAR2 IS
2849: BEGIN
2850: IF p_pon_authority = PRE_APPROVER THEN
2847: */
2848: FUNCTION convert_to_ame_authority(p_pon_authority IN NUMBER) RETURN VARCHAR2 IS
2849: BEGIN
2850: IF p_pon_authority = PRE_APPROVER THEN
2851: RETURN ame_util.preApprover;
2852: ELSIF p_pon_authority = AUTHORITY_APPROVER THEN
2853: RETURN ame_util.authorityApprover;
2854: ELSIF p_pon_authority = POST_APPROVER THEN
2855: RETURN ame_util.postApprover;
2849: BEGIN
2850: IF p_pon_authority = PRE_APPROVER THEN
2851: RETURN ame_util.preApprover;
2852: ELSIF p_pon_authority = AUTHORITY_APPROVER THEN
2853: RETURN ame_util.authorityApprover;
2854: ELSIF p_pon_authority = POST_APPROVER THEN
2855: RETURN ame_util.postApprover;
2856: ELSE
2857: RETURN NULL;
2851: RETURN ame_util.preApprover;
2852: ELSIF p_pon_authority = AUTHORITY_APPROVER THEN
2853: RETURN ame_util.authorityApprover;
2854: ELSIF p_pon_authority = POST_APPROVER THEN
2855: RETURN ame_util.postApprover;
2856: ELSE
2857: RETURN NULL;
2858: END IF;
2859: END convert_to_ame_authority;
2858: END IF;
2859: END convert_to_ame_authority;
2860:
2861: /*
2862: Converts the specified ame_util authority code to a corresponding PON_AWARD_APPROVAL_PKG authority code.
2863: */
2864: FUNCTION convert_to_pon_authority(p_ame_authority IN VARCHAR2) RETURN NUMBER IS
2865: BEGIN
2866: IF p_ame_authority = ame_util.preApprover THEN
2862: Converts the specified ame_util authority code to a corresponding PON_AWARD_APPROVAL_PKG authority code.
2863: */
2864: FUNCTION convert_to_pon_authority(p_ame_authority IN VARCHAR2) RETURN NUMBER IS
2865: BEGIN
2866: IF p_ame_authority = ame_util.preApprover THEN
2867: RETURN PRE_APPROVER;
2868: ELSIF p_ame_authority = ame_util.authorityApprover THEN
2869: RETURN AUTHORITY_APPROVER;
2870: ELSIF p_ame_authority = ame_util.postApprover THEN
2864: FUNCTION convert_to_pon_authority(p_ame_authority IN VARCHAR2) RETURN NUMBER IS
2865: BEGIN
2866: IF p_ame_authority = ame_util.preApprover THEN
2867: RETURN PRE_APPROVER;
2868: ELSIF p_ame_authority = ame_util.authorityApprover THEN
2869: RETURN AUTHORITY_APPROVER;
2870: ELSIF p_ame_authority = ame_util.postApprover THEN
2871: RETURN POST_APPROVER;
2872: ELSE
2866: IF p_ame_authority = ame_util.preApprover THEN
2867: RETURN PRE_APPROVER;
2868: ELSIF p_ame_authority = ame_util.authorityApprover THEN
2869: RETURN AUTHORITY_APPROVER;
2870: ELSIF p_ame_authority = ame_util.postApprover THEN
2871: RETURN POST_APPROVER;
2872: ELSE
2873: RETURN NULL;
2874: END IF;
2874: END IF;
2875: END convert_to_pon_authority;
2876:
2877: /*
2878: Converts the specified PON_AWARD_APPROVAL_PKG approval_status code to a corresponding ame_util approval_status code.
2879: */
2880: FUNCTION convert_to_ame_approval_status(p_pon_approval_status IN NUMBER) RETURN VARCHAR2 IS
2881: BEGIN
2882: IF p_pon_approval_status = APPROVE_AND_FORWARD_STATUS THEN
2879: */
2880: FUNCTION convert_to_ame_approval_status(p_pon_approval_status IN NUMBER) RETURN VARCHAR2 IS
2881: BEGIN
2882: IF p_pon_approval_status = APPROVE_AND_FORWARD_STATUS THEN
2883: RETURN ame_util.approveAndForwardStatus;
2884: ELSIF p_pon_approval_status = APPROVED_STATUS THEN
2885: RETURN ame_util.approvedStatus;
2886: ELSIF p_pon_approval_status = CLEAR_EXCEPTIONS_STATUS THEN
2887: RETURN ame_util.clearExceptionsStatus;
2881: BEGIN
2882: IF p_pon_approval_status = APPROVE_AND_FORWARD_STATUS THEN
2883: RETURN ame_util.approveAndForwardStatus;
2884: ELSIF p_pon_approval_status = APPROVED_STATUS THEN
2885: RETURN ame_util.approvedStatus;
2886: ELSIF p_pon_approval_status = CLEAR_EXCEPTIONS_STATUS THEN
2887: RETURN ame_util.clearExceptionsStatus;
2888: ELSIF p_pon_approval_status = EXCEPTION_STATUS THEN
2889: RETURN ame_util.exceptionStatus;
2883: RETURN ame_util.approveAndForwardStatus;
2884: ELSIF p_pon_approval_status = APPROVED_STATUS THEN
2885: RETURN ame_util.approvedStatus;
2886: ELSIF p_pon_approval_status = CLEAR_EXCEPTIONS_STATUS THEN
2887: RETURN ame_util.clearExceptionsStatus;
2888: ELSIF p_pon_approval_status = EXCEPTION_STATUS THEN
2889: RETURN ame_util.exceptionStatus;
2890: ELSIF p_pon_approval_status = FORWARD_STATUS THEN
2891: RETURN ame_util.forwardStatus;
2885: RETURN ame_util.approvedStatus;
2886: ELSIF p_pon_approval_status = CLEAR_EXCEPTIONS_STATUS THEN
2887: RETURN ame_util.clearExceptionsStatus;
2888: ELSIF p_pon_approval_status = EXCEPTION_STATUS THEN
2889: RETURN ame_util.exceptionStatus;
2890: ELSIF p_pon_approval_status = FORWARD_STATUS THEN
2891: RETURN ame_util.forwardStatus;
2892: ELSIF p_pon_approval_status = NO_RESPONSE_STATUS THEN
2893: RETURN ame_util.noResponseStatus;
2887: RETURN ame_util.clearExceptionsStatus;
2888: ELSIF p_pon_approval_status = EXCEPTION_STATUS THEN
2889: RETURN ame_util.exceptionStatus;
2890: ELSIF p_pon_approval_status = FORWARD_STATUS THEN
2891: RETURN ame_util.forwardStatus;
2892: ELSIF p_pon_approval_status = NO_RESPONSE_STATUS THEN
2893: RETURN ame_util.noResponseStatus;
2894: /*
2895: ELSIF p_pon_approval_status = NOTIFIED_STATUS THEN
2889: RETURN ame_util.exceptionStatus;
2890: ELSIF p_pon_approval_status = FORWARD_STATUS THEN
2891: RETURN ame_util.forwardStatus;
2892: ELSIF p_pon_approval_status = NO_RESPONSE_STATUS THEN
2893: RETURN ame_util.noResponseStatus;
2894: /*
2895: ELSIF p_pon_approval_status = NOTIFIED_STATUS THEN
2896: RETURN ame_util.notifiedStatus;
2897: */
2892: ELSIF p_pon_approval_status = NO_RESPONSE_STATUS THEN
2893: RETURN ame_util.noResponseStatus;
2894: /*
2895: ELSIF p_pon_approval_status = NOTIFIED_STATUS THEN
2896: RETURN ame_util.notifiedStatus;
2897: */
2898: ELSIF p_pon_approval_status = REJECT_STATUS THEN
2899: RETURN ame_util.rejectStatus;
2900: /*
2895: ELSIF p_pon_approval_status = NOTIFIED_STATUS THEN
2896: RETURN ame_util.notifiedStatus;
2897: */
2898: ELSIF p_pon_approval_status = REJECT_STATUS THEN
2899: RETURN ame_util.rejectStatus;
2900: /*
2901: ELSIF p_pon_approval_status = REPEATED_STATUS THEN
2902: RETURN ame_util.repeatedStatus;
2903: ELSIF p_pon_approval_status = SUPPRESSED_STATUS THEN
2898: ELSIF p_pon_approval_status = REJECT_STATUS THEN
2899: RETURN ame_util.rejectStatus;
2900: /*
2901: ELSIF p_pon_approval_status = REPEATED_STATUS THEN
2902: RETURN ame_util.repeatedStatus;
2903: ELSIF p_pon_approval_status = SUPPRESSED_STATUS THEN
2904: RETURN ame_util.suppressedStatus;
2905: */
2906: ELSIF p_pon_approval_status = NULL_STATUS THEN
2900: /*
2901: ELSIF p_pon_approval_status = REPEATED_STATUS THEN
2902: RETURN ame_util.repeatedStatus;
2903: ELSIF p_pon_approval_status = SUPPRESSED_STATUS THEN
2904: RETURN ame_util.suppressedStatus;
2905: */
2906: ELSIF p_pon_approval_status = NULL_STATUS THEN
2907: RETURN ame_util.nullStatus;
2908: ELSE
2903: ELSIF p_pon_approval_status = SUPPRESSED_STATUS THEN
2904: RETURN ame_util.suppressedStatus;
2905: */
2906: ELSIF p_pon_approval_status = NULL_STATUS THEN
2907: RETURN ame_util.nullStatus;
2908: ELSE
2909: RETURN NULL;
2910: END IF;
2911: END convert_to_ame_approval_status;
2910: END IF;
2911: END convert_to_ame_approval_status;
2912:
2913: /*
2914: Converts the specified ame_util approval_status code to a corresponding PON_AWARD_APPROVAL_PKG approval_status code.
2915: */
2916: FUNCTION convert_to_pon_approval_status(p_ame_approval_status IN VARCHAR2) RETURN NUMBER IS
2917: BEGIN
2918: IF p_ame_approval_status = ame_util.approveAndForwardStatus THEN
2914: Converts the specified ame_util approval_status code to a corresponding PON_AWARD_APPROVAL_PKG approval_status code.
2915: */
2916: FUNCTION convert_to_pon_approval_status(p_ame_approval_status IN VARCHAR2) RETURN NUMBER IS
2917: BEGIN
2918: IF p_ame_approval_status = ame_util.approveAndForwardStatus THEN
2919: RETURN APPROVE_AND_FORWARD_STATUS;
2920: ELSIF p_ame_approval_status = ame_util.approvedStatus THEN
2921: RETURN APPROVED_STATUS;
2922: ELSIF p_ame_approval_status = ame_util.clearExceptionsStatus THEN
2916: FUNCTION convert_to_pon_approval_status(p_ame_approval_status IN VARCHAR2) RETURN NUMBER IS
2917: BEGIN
2918: IF p_ame_approval_status = ame_util.approveAndForwardStatus THEN
2919: RETURN APPROVE_AND_FORWARD_STATUS;
2920: ELSIF p_ame_approval_status = ame_util.approvedStatus THEN
2921: RETURN APPROVED_STATUS;
2922: ELSIF p_ame_approval_status = ame_util.clearExceptionsStatus THEN
2923: RETURN CLEAR_EXCEPTIONS_STATUS;
2924: ELSIF p_ame_approval_status = ame_util.exceptionStatus THEN
2918: IF p_ame_approval_status = ame_util.approveAndForwardStatus THEN
2919: RETURN APPROVE_AND_FORWARD_STATUS;
2920: ELSIF p_ame_approval_status = ame_util.approvedStatus THEN
2921: RETURN APPROVED_STATUS;
2922: ELSIF p_ame_approval_status = ame_util.clearExceptionsStatus THEN
2923: RETURN CLEAR_EXCEPTIONS_STATUS;
2924: ELSIF p_ame_approval_status = ame_util.exceptionStatus THEN
2925: RETURN EXCEPTION_STATUS;
2926: ELSIF p_ame_approval_status = ame_util.forwardStatus THEN
2920: ELSIF p_ame_approval_status = ame_util.approvedStatus THEN
2921: RETURN APPROVED_STATUS;
2922: ELSIF p_ame_approval_status = ame_util.clearExceptionsStatus THEN
2923: RETURN CLEAR_EXCEPTIONS_STATUS;
2924: ELSIF p_ame_approval_status = ame_util.exceptionStatus THEN
2925: RETURN EXCEPTION_STATUS;
2926: ELSIF p_ame_approval_status = ame_util.forwardStatus THEN
2927: RETURN FORWARD_STATUS;
2928: ELSIF p_ame_approval_status = ame_util.noResponseStatus THEN
2922: ELSIF p_ame_approval_status = ame_util.clearExceptionsStatus THEN
2923: RETURN CLEAR_EXCEPTIONS_STATUS;
2924: ELSIF p_ame_approval_status = ame_util.exceptionStatus THEN
2925: RETURN EXCEPTION_STATUS;
2926: ELSIF p_ame_approval_status = ame_util.forwardStatus THEN
2927: RETURN FORWARD_STATUS;
2928: ELSIF p_ame_approval_status = ame_util.noResponseStatus THEN
2929: RETURN NO_RESPONSE_STATUS;
2930: /*
2924: ELSIF p_ame_approval_status = ame_util.exceptionStatus THEN
2925: RETURN EXCEPTION_STATUS;
2926: ELSIF p_ame_approval_status = ame_util.forwardStatus THEN
2927: RETURN FORWARD_STATUS;
2928: ELSIF p_ame_approval_status = ame_util.noResponseStatus THEN
2929: RETURN NO_RESPONSE_STATUS;
2930: /*
2931: ELSIF p_ame_approval_status = ame_util.notifiedStatus THEN
2932: RETURN NOTIFIED_STATUS;
2927: RETURN FORWARD_STATUS;
2928: ELSIF p_ame_approval_status = ame_util.noResponseStatus THEN
2929: RETURN NO_RESPONSE_STATUS;
2930: /*
2931: ELSIF p_ame_approval_status = ame_util.notifiedStatus THEN
2932: RETURN NOTIFIED_STATUS;
2933: */
2934: ELSIF p_ame_approval_status = ame_util.rejectStatus THEN
2935: RETURN REJECT_STATUS;
2930: /*
2931: ELSIF p_ame_approval_status = ame_util.notifiedStatus THEN
2932: RETURN NOTIFIED_STATUS;
2933: */
2934: ELSIF p_ame_approval_status = ame_util.rejectStatus THEN
2935: RETURN REJECT_STATUS;
2936: /*
2937: ELSIF p_ame_approval_status = ame_util.repeatedStatus THEN
2938: RETURN REPEATED_STATUS;
2933: */
2934: ELSIF p_ame_approval_status = ame_util.rejectStatus THEN
2935: RETURN REJECT_STATUS;
2936: /*
2937: ELSIF p_ame_approval_status = ame_util.repeatedStatus THEN
2938: RETURN REPEATED_STATUS;
2939: ELSIF p_ame_approval_status = ame_util.suppressedStatus THEN
2940: RETURN SUPPRESSED_STATUS;
2941: */
2935: RETURN REJECT_STATUS;
2936: /*
2937: ELSIF p_ame_approval_status = ame_util.repeatedStatus THEN
2938: RETURN REPEATED_STATUS;
2939: ELSIF p_ame_approval_status = ame_util.suppressedStatus THEN
2940: RETURN SUPPRESSED_STATUS;
2941: */
2942: ELSIF p_ame_approval_status IS NULL THEN
2943: RETURN NULL_STATUS;
3180: END log_string;
3181:
3182:
3183: /*
3184: Returns a string representation of an ame_util.insertionsTable.
3185: */
3186: FUNCTION get_insertion_list_string(p_insertion_list IN ame_util.insertionsTable2) RETURN VARCHAR2 IS
3187: l_insertion_list_string VARCHAR2(4000);
3188: BEGIN
3182:
3183: /*
3184: Returns a string representation of an ame_util.insertionsTable.
3185: */
3186: FUNCTION get_insertion_list_string(p_insertion_list IN ame_util.insertionsTable2) RETURN VARCHAR2 IS
3187: l_insertion_list_string VARCHAR2(4000);
3188: BEGIN
3189:
3190: FOR i IN 1 .. p_insertion_list.COUNT LOOP
3207:
3208: END get_insertion_list_string;
3209:
3210:
3211: FUNCTION get_insertion_string(p_approver IN ame_util.approverRecord2, p_order IN ame_util.insertionRecord2) RETURN VARCHAR2 IS
3212: BEGIN
3213:
3214: RETURN format_ame_approver(p_approver) || ' ' || '(' || get_order_type_string(p_order.order_type) || ', ' || get_parameter_string(p_order.parameter) || ')';
3215:
3215:
3216: END get_insertion_string;
3217:
3218: /*
3219: Returns a string representation of the value of an ame_util.approverRecord's api_insertion field.
3220: */
3221: FUNCTION get_api_insertion_string(p_api_insertion IN VARCHAR2) RETURN VARCHAR2 IS
3222: BEGIN
3223:
3220: */
3221: FUNCTION get_api_insertion_string(p_api_insertion IN VARCHAR2) RETURN VARCHAR2 IS
3222: BEGIN
3223:
3224: IF p_api_insertion = ame_util.oamGenerated THEN
3225: RETURN 'oamGenerated';
3226: ELSIF p_api_insertion = ame_util.apiAuthorityInsertion THEN
3227: RETURN 'apiAuthorityInsertion';
3228: ELSIF p_api_insertion = ame_util.apiInsertion THEN
3222: BEGIN
3223:
3224: IF p_api_insertion = ame_util.oamGenerated THEN
3225: RETURN 'oamGenerated';
3226: ELSIF p_api_insertion = ame_util.apiAuthorityInsertion THEN
3227: RETURN 'apiAuthorityInsertion';
3228: ELSIF p_api_insertion = ame_util.apiInsertion THEN
3229: RETURN 'apiInsertion';
3230: ELSE
3224: IF p_api_insertion = ame_util.oamGenerated THEN
3225: RETURN 'oamGenerated';
3226: ELSIF p_api_insertion = ame_util.apiAuthorityInsertion THEN
3227: RETURN 'apiAuthorityInsertion';
3228: ELSIF p_api_insertion = ame_util.apiInsertion THEN
3229: RETURN 'apiInsertion';
3230: ELSE
3231: RETURN NULL;
3232: END IF;
3233:
3234: END get_api_insertion_string;
3235:
3236: /*
3237: Returns a string representation of the value of an ame_util.approverRecord's authority field.
3238: */
3239: FUNCTION get_authority_string(p_authority IN VARCHAR2) RETURN VARCHAR2 IS
3240: BEGIN
3241:
3238: */
3239: FUNCTION get_authority_string(p_authority IN VARCHAR2) RETURN VARCHAR2 IS
3240: BEGIN
3241:
3242: IF p_authority = ame_util.preApprover THEN
3243: RETURN 'preApprover';
3244: ELSIF p_authority = ame_util.authorityApprover THEN
3245: RETURN 'authorityApprover';
3246: ELSIF p_authority = ame_util.postApprover THEN
3240: BEGIN
3241:
3242: IF p_authority = ame_util.preApprover THEN
3243: RETURN 'preApprover';
3244: ELSIF p_authority = ame_util.authorityApprover THEN
3245: RETURN 'authorityApprover';
3246: ELSIF p_authority = ame_util.postApprover THEN
3247: RETURN 'postApprover';
3248: ELSE
3242: IF p_authority = ame_util.preApprover THEN
3243: RETURN 'preApprover';
3244: ELSIF p_authority = ame_util.authorityApprover THEN
3245: RETURN 'authorityApprover';
3246: ELSIF p_authority = ame_util.postApprover THEN
3247: RETURN 'postApprover';
3248: ELSE
3249: RETURN NULL;
3250: END IF;
3251:
3252: END get_authority_string;
3253:
3254: /*
3255: Returns a string representation of the value of an ame_util.approverRecord's approval_status field.
3256: */
3257: FUNCTION get_approval_status_string(p_approval_status IN VARCHAR2) RETURN VARCHAR2 IS
3258: BEGIN
3259:
3256: */
3257: FUNCTION get_approval_status_string(p_approval_status IN VARCHAR2) RETURN VARCHAR2 IS
3258: BEGIN
3259:
3260: IF p_approval_status = ame_util.approveAndForwardStatus THEN
3261: RETURN 'approveAndForwardStatus';
3262: ELSIF p_approval_status = ame_util.approvedStatus THEN
3263: RETURN 'approvedStatus';
3264: ELSIF p_approval_status = ame_util.clearExceptionsStatus THEN
3258: BEGIN
3259:
3260: IF p_approval_status = ame_util.approveAndForwardStatus THEN
3261: RETURN 'approveAndForwardStatus';
3262: ELSIF p_approval_status = ame_util.approvedStatus THEN
3263: RETURN 'approvedStatus';
3264: ELSIF p_approval_status = ame_util.clearExceptionsStatus THEN
3265: RETURN 'clearExceptionsStatus';
3266: ELSIF p_approval_status = ame_util.exceptionStatus THEN
3260: IF p_approval_status = ame_util.approveAndForwardStatus THEN
3261: RETURN 'approveAndForwardStatus';
3262: ELSIF p_approval_status = ame_util.approvedStatus THEN
3263: RETURN 'approvedStatus';
3264: ELSIF p_approval_status = ame_util.clearExceptionsStatus THEN
3265: RETURN 'clearExceptionsStatus';
3266: ELSIF p_approval_status = ame_util.exceptionStatus THEN
3267: RETURN 'exceptionStatus';
3268: ELSIF p_approval_status = ame_util.forwardStatus THEN
3262: ELSIF p_approval_status = ame_util.approvedStatus THEN
3263: RETURN 'approvedStatus';
3264: ELSIF p_approval_status = ame_util.clearExceptionsStatus THEN
3265: RETURN 'clearExceptionsStatus';
3266: ELSIF p_approval_status = ame_util.exceptionStatus THEN
3267: RETURN 'exceptionStatus';
3268: ELSIF p_approval_status = ame_util.forwardStatus THEN
3269: RETURN 'forwardStatus';
3270: ELSIF p_approval_status = ame_util.noResponseStatus THEN
3264: ELSIF p_approval_status = ame_util.clearExceptionsStatus THEN
3265: RETURN 'clearExceptionsStatus';
3266: ELSIF p_approval_status = ame_util.exceptionStatus THEN
3267: RETURN 'exceptionStatus';
3268: ELSIF p_approval_status = ame_util.forwardStatus THEN
3269: RETURN 'forwardStatus';
3270: ELSIF p_approval_status = ame_util.noResponseStatus THEN
3271: RETURN 'noResponseStatus';
3272: /*
3266: ELSIF p_approval_status = ame_util.exceptionStatus THEN
3267: RETURN 'exceptionStatus';
3268: ELSIF p_approval_status = ame_util.forwardStatus THEN
3269: RETURN 'forwardStatus';
3270: ELSIF p_approval_status = ame_util.noResponseStatus THEN
3271: RETURN 'noResponseStatus';
3272: /*
3273: ELSIF p_approval_status = ame_util.notifiedStatus THEN
3274: RETURN 'notifiedStatus';
3269: RETURN 'forwardStatus';
3270: ELSIF p_approval_status = ame_util.noResponseStatus THEN
3271: RETURN 'noResponseStatus';
3272: /*
3273: ELSIF p_approval_status = ame_util.notifiedStatus THEN
3274: RETURN 'notifiedStatus';
3275: */
3276: ELSIF p_approval_status = ame_util.rejectStatus THEN
3277: RETURN 'rejectStatus';
3272: /*
3273: ELSIF p_approval_status = ame_util.notifiedStatus THEN
3274: RETURN 'notifiedStatus';
3275: */
3276: ELSIF p_approval_status = ame_util.rejectStatus THEN
3277: RETURN 'rejectStatus';
3278: /*
3279: ELSIF p_approval_status = ame_util.repeatedStatus THEN
3280: RETURN 'repeatedStatus';
3275: */
3276: ELSIF p_approval_status = ame_util.rejectStatus THEN
3277: RETURN 'rejectStatus';
3278: /*
3279: ELSIF p_approval_status = ame_util.repeatedStatus THEN
3280: RETURN 'repeatedStatus';
3281: ELSIF p_approval_status = ame_util.suppressedStatus THEN
3282: RETURN 'suppressedStatus';
3283: */
3277: RETURN 'rejectStatus';
3278: /*
3279: ELSIF p_approval_status = ame_util.repeatedStatus THEN
3280: RETURN 'repeatedStatus';
3281: ELSIF p_approval_status = ame_util.suppressedStatus THEN
3282: RETURN 'suppressedStatus';
3283: */
3284: ELSIF p_approval_status IS NULL THEN
3285: RETURN 'nullStatus';
3289:
3290: END get_approval_status_string;
3291:
3292: /*
3293: Returns a string representation of the value of an ame_util.orderRecord's or ame_util.insertionRecord's order_type field.
3294: */
3295: FUNCTION get_order_type_string(p_order_type IN VARCHAR2) RETURN VARCHAR2 IS
3296: BEGIN
3297:
3294: */
3295: FUNCTION get_order_type_string(p_order_type IN VARCHAR2) RETURN VARCHAR2 IS
3296: BEGIN
3297:
3298: IF p_order_type = ame_util.absoluteOrder THEN
3299: RETURN 'absoluteOrder';
3300: ELSIF p_order_type = ame_util.afterApprover THEN
3301: RETURN 'afterApprover';
3302: ELSIF p_order_type = ame_util.beforeApprover THEN
3296: BEGIN
3297:
3298: IF p_order_type = ame_util.absoluteOrder THEN
3299: RETURN 'absoluteOrder';
3300: ELSIF p_order_type = ame_util.afterApprover THEN
3301: RETURN 'afterApprover';
3302: ELSIF p_order_type = ame_util.beforeApprover THEN
3303: RETURN 'beforeApprover';
3304: ELSIF p_order_type = ame_util.firstAuthority THEN
3298: IF p_order_type = ame_util.absoluteOrder THEN
3299: RETURN 'absoluteOrder';
3300: ELSIF p_order_type = ame_util.afterApprover THEN
3301: RETURN 'afterApprover';
3302: ELSIF p_order_type = ame_util.beforeApprover THEN
3303: RETURN 'beforeApprover';
3304: ELSIF p_order_type = ame_util.firstAuthority THEN
3305: RETURN 'firstAuthority';
3306: ELSIF p_order_type = ame_util.firstPostApprover THEN
3300: ELSIF p_order_type = ame_util.afterApprover THEN
3301: RETURN 'afterApprover';
3302: ELSIF p_order_type = ame_util.beforeApprover THEN
3303: RETURN 'beforeApprover';
3304: ELSIF p_order_type = ame_util.firstAuthority THEN
3305: RETURN 'firstAuthority';
3306: ELSIF p_order_type = ame_util.firstPostApprover THEN
3307: RETURN 'firstPostApprover';
3308: ELSIF p_order_type = ame_util.firstPreApprover THEN
3302: ELSIF p_order_type = ame_util.beforeApprover THEN
3303: RETURN 'beforeApprover';
3304: ELSIF p_order_type = ame_util.firstAuthority THEN
3305: RETURN 'firstAuthority';
3306: ELSIF p_order_type = ame_util.firstPostApprover THEN
3307: RETURN 'firstPostApprover';
3308: ELSIF p_order_type = ame_util.firstPreApprover THEN
3309: RETURN 'firstPreApprover';
3310: ELSIF p_order_type = ame_util.lastPostApprover THEN
3304: ELSIF p_order_type = ame_util.firstAuthority THEN
3305: RETURN 'firstAuthority';
3306: ELSIF p_order_type = ame_util.firstPostApprover THEN
3307: RETURN 'firstPostApprover';
3308: ELSIF p_order_type = ame_util.firstPreApprover THEN
3309: RETURN 'firstPreApprover';
3310: ELSIF p_order_type = ame_util.lastPostApprover THEN
3311: RETURN 'lastPostApprover';
3312: ELSIF p_order_type = ame_util.lastPreApprover THEN
3306: ELSIF p_order_type = ame_util.firstPostApprover THEN
3307: RETURN 'firstPostApprover';
3308: ELSIF p_order_type = ame_util.firstPreApprover THEN
3309: RETURN 'firstPreApprover';
3310: ELSIF p_order_type = ame_util.lastPostApprover THEN
3311: RETURN 'lastPostApprover';
3312: ELSIF p_order_type = ame_util.lastPreApprover THEN
3313: RETURN 'lastPreApprover';
3314: ELSIF p_order_type IS NULL THEN
3308: ELSIF p_order_type = ame_util.firstPreApprover THEN
3309: RETURN 'firstPreApprover';
3310: ELSIF p_order_type = ame_util.lastPostApprover THEN
3311: RETURN 'lastPostApprover';
3312: ELSIF p_order_type = ame_util.lastPreApprover THEN
3313: RETURN 'lastPreApprover';
3314: ELSIF p_order_type IS NULL THEN
3315: RETURN 'nullOrderType';
3316: ELSE
3319:
3320: END get_order_type_string;
3321:
3322: /*
3323: Returns a string representation of the value of an ame_util.orderRecord's or ame_util.insertionRecord's parameter field.
3324: */
3325: FUNCTION get_parameter_string(p_parameter IN VARCHAR2) RETURN VARCHAR2 IS
3326: BEGIN
3327: