The following lines contain the word 'select', 'insert', 'update' or 'delete':
procedure clearInsertion(applicationIdIn in number,
transactionTypeIn in varchar2,
transactionIdIn in varchar2,
approverIn in ame_util.approverRecord2) as
ameAppId integer;
cursor getAnchorInsertions (parameterIn varchar2) is
(select name
from ame_temp_insertions
where application_id = ame_engine.getAmeApplicationId
and transaction_id = transactionIdIn
and parameter = parameterIn);
cmpParameter ame_temp_insertions.parameter%type;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
approvers(i).api_insertion = ame_util.apiInsertion then
anchorName := approvers(i).name;
open getAnchorInsertions(cmpParameter);
fetch getAnchorInsertions bulk collect into nameList;
close getAnchorInsertions;
close getAnchorInsertions;
ame_engine.updateInsertions(indexIn => i);
delete from ame_temp_insertions
where
application_id = ameAppId and
transaction_id = transactionIdIn and
name = approverIn.name and
item_class = approverIn.item_class and
item_id = approverIn.item_id ;
routineNameIn => 'clearInsertion',
exceptionNumberIn => errorCode,
exceptionStringIn => errorMessage);
routineNameIn => 'clearInsertion',
exceptionNumberIn => errorCode,
exceptionStringIn => errorMessage);
routineNameIn => 'clearInsertion',
exceptionNumberIn => sqlcode,
exceptionStringIn => sqlerrm);
end clearInsertion;
procedure clearInsertions(applicationIdIn in integer,
transactionTypeIn in varchar2,
transactionIdIn in varchar2) as
ameAppId integer;
delete from ame_temp_insertions
where
application_id = ameAppId and
transaction_id = transactionIdIn ;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
routineNameIn => 'clearInsertions',
exceptionNumberIn => sqlcode,
exceptionStringIn => sqlerrm);
end clearInsertions;
delete from ame_temp_deletions
where
application_id = ameAppId and
transaction_id = transactionIdIn and
name = approverIn.name and
item_class = approverIn.item_class and
item_id = approverIn.item_id and
action_type_id = approverIn.action_type_id and
group_or_chain_id = approverIn.group_or_chain_id ;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
delete from ame_temp_deletions
where
application_id = ameAppId and
transaction_id = transactionIdIn ;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
select approval_group_id, name
from ame_approval_groups
where end_date is null
order by name;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => processProductionRules,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => true,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => processProductionRules,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => true,
prepareRuleDescsIn => true,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => processProductionRules,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => true,
prepareRuleDescsIn => true,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn);
select approval_group_id
into groupIdOut
from ame_approval_groups
where name = groupNameIn
and end_date is null;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => false,
fetchOldApproversIn => false,
fetchInsertionsIn => false,
fetchDeletionsIn => false,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => true,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => false,
updateOldApproverListIn => false,
processPrioritiesIn => false,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
getAvailableInsertions limits its output to insertions available for the order type orderTypeIn,
if this is null; otherwise getAvailableInsertions outputs insertions available for all order types.
Chain-of-authority insertees (those having authority = ame_util.authorityApprover and
api_insertion = ame_util.apiAuthorityInsertion) must have the approver_category value
ame_util.approvalApproverCategory. Ad-hoc insertees may be of either approver category.
*/
procedure getAvailableInsertions(applicationIdIn in number,
transactionTypeIn in varchar2,
transactionIdIn in varchar2,
positionIn in number,
orderTypeIn in varchar2 default null,
availableInsertionsOut out nocopy ame_util.insertionsTable2) as
begin
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => false,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
ame_engine.getInsertions
(positionIn => positionIn
,coaInsertionsYNIn => ame_util.booleanTrue
,orderTypeIn => orderTypeIn
,availableInsertionsOut => availableInsertionsOut
);
,routineNameIn => 'getAvailableInsertions'
,exceptionNumberIn => sqlcode
,exceptionStringIn => sqlerrm
);
end getAvailableInsertions;
select
ame_attributes.name,
ame_attributes.attribute_type,
ame_attributes.description,
ame_conditions.parameter_one,
ame_conditions.parameter_two,
ame_conditions.include_lower_limit,
ame_conditions.include_upper_limit,
ame_conditions.parameter_three
into
attributeNameOut,
attributeTypeOut,
attributeDescriptionOut,
lowerLimitOut,
upperLimitOut,
includeLowerLimitOut,
includeUpperLimitOut,
currencyCodeOut
from
ame_attributes,
ame_conditions
where
ame_attributes.attribute_id = ame_conditions.attribute_id and
ame_conditions.condition_id = conditionIdIn and
sysdate between
ame_attributes.start_date and
nvl(ame_attributes.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_conditions.start_date and
nvl(ame_conditions.end_date - ame_util.oneSecond, sysdate);
select
parameter,
upper(parameter_name),
query_string,
orig_system,
orig_system_id
from ame_approval_group_members
where
approval_group_id = groupIdIn
order by order_number;
memberDisplayNamesOut.delete;
memberDisplayNamesOut.delete;
memberDisplayNamesOut.delete;
memberDisplayNamesOut.delete;
select
parameter,
upper(parameter_name),
query_string,
orig_system,
orig_system_id
from ame_approval_group_members
where
approval_group_id = groupIdIn
order by order_number;
memberDisplayNamesOut.delete;
select
parameter,
upper(parameter_name),
query_string,
order_number,
orig_system,
orig_system_id
from ame_approval_group_members
where
approval_group_id = groupIdIn
order by order_number;
memberDisplayNamesOut.delete;
select
orig_system,
orig_system_id,
parameter,
upper(parameter_name),
query_string,
order_number
from ame_approval_group_members
where
approval_group_id = groupIdIn
order by order_number;
memberDisplayNamesOut.delete;
select
display_name,
orig_system,
orig_system_id
into
displayNameOut,
origSystemOut,
origSystemIdOut
from wf_roles
where
name = nameIn and
status = 'ACTIVE' and
(expiration_date is null or
sysdate < expiration_date) and
rownum < 2;
select
display_name,
orig_system,
orig_system_id
into
displayNameOut,
origSystemOut,
origSystemIdOut
from wf_local_roles
where
name = nameIn and
rownum < 2;
select
name,
item_class,
item_id,
approver_category,
api_insertion,
authority,
approval_status,
action_type_id,
group_or_chain_id,
occurrence
from ame_temp_old_approver_lists
where
application_id = applicationIdIn and
transaction_id = transactionIdIn
order by order_number;
oldApproversOut(tempIndex).api_insertion := tempOldApprover.api_insertion;
oldApproversOut.delete;
select
ame_action_types.name,
ame_action_types.description,
ame_actions.description
from
ame_action_usages,
ame_action_types,
ame_actions
where
ame_action_usages.rule_id = ruleIdIn and
ame_actions.action_id = ame_action_usages.action_id and
ame_action_types.action_type_id = ame_actions.action_type_id and
sysdate between
ame_action_usages.start_date and
nvl(ame_action_usages.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_action_types.start_date and
nvl(ame_action_types.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_actions.start_date and
nvl(ame_actions.end_date - ame_util.oneSecond, sysdate);
select condition_id
from ame_condition_usages
where
ame_condition_usages.rule_id = ruleIdIn and
sysdate between
start_date and
nvl(end_date - ame_util.oneSecond, sysdate);
select
ame_rules.rule_type,
ame_rules.description
from
ame_rules
where
ame_rules.rule_id = ruleIdIn and
sysdate between
ame_rules.start_date and
nvl(ame_rules.end_date - ame_util.oneSecond, sysdate) ;
conditionIdsOut.delete;
select
ame_action_types.name,
ame_action_types.description,
ame_actions.description
from
ame_action_usages,
ame_action_types,
ame_actions
where
ame_action_usages.rule_id = ruleIdIn and
ame_actions.action_id = ame_action_usages.action_id and
ame_action_types.action_type_id = ame_actions.action_type_id and
sysdate between
ame_action_usages.start_date and
nvl(ame_action_usages.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_action_types.start_date and
nvl(ame_action_types.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_actions.start_date and
nvl(ame_actions.end_date - ame_util.oneSecond, sysdate);
select ame_condition_pkg.getDescription(ame_condition_usages.condition_id)
from ame_condition_usages
where
ame_condition_usages.rule_id = ruleIdIn and
sysdate between
ame_condition_usages.start_date and
nvl(ame_condition_usages.end_date - ame_util.oneSecond, sysdate);
select
ame_rules.rule_type,
ame_rules.description
from
ame_rules
where
ame_rules.rule_id = ruleIdIn and
sysdate between
ame_rules.start_date and
nvl(ame_rules.end_date - ame_util.oneSecond, sysdate) ;
conditionDescriptionsOut.delete;
select
ame_action_types.name,
ame_action_types.description,
ame_actions.description
from
ame_action_usages,
ame_action_types,
ame_actions
where
ame_action_usages.rule_id = ruleIdIn and
ame_actions.action_id = ame_action_usages.action_id and
ame_action_types.action_type_id = ame_actions.action_type_id and
sysdate between
ame_action_usages.start_date and
nvl(ame_action_usages.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_action_types.start_date and
nvl(ame_action_types.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_actions.start_date and
nvl(ame_actions.end_date - ame_util.oneSecond, sysdate);
select
ame_conditions.condition_id,
ame_condition_pkg.getDescription(ame_conditions.condition_id),
decode(ame_attributes.attribute_type,
ame_util.stringAttributeType, ame_util.booleanTrue,
/* default */ ame_util.booleanFalse)
from
ame_conditions,
ame_condition_usages,
ame_attributes
where
ame_condition_usages.rule_id = ruleIdIn and
ame_conditions.condition_id = ame_condition_usages.condition_id and
ame_attributes.attribute_id = ame_conditions.attribute_id and
sysdate between
ame_condition_usages.start_date and
nvl(ame_condition_usages.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_conditions.start_date and
nvl(ame_conditions.end_date - ame_util.oneSecond, sysdate) and
sysdate between
ame_attributes.start_date and
nvl(ame_attributes.end_date - ame_util.oneSecond, sysdate);
select
ame_rules.rule_type,
ame_rules.description
from
ame_rules
where
ame_rules.rule_id = ruleIdIn and
sysdate between
ame_rules.start_date and
nvl(ame_rules.end_date - ame_util.oneSecond, sysdate) ;
conditionDescriptionsOut.delete;
conditionIdsOut.delete;
conditionHasLOVsOut.delete;
procedure insertApprover( applicationIdIn in number,
transactionTypeIn in varchar2,
transactionIdIn in varchar2,
approverIn in ame_util.approverRecord2,
positionIn in number,
insertionIn in ame_util.insertionRecord2) as
ameApplicationId integer;
availableInsertions ame_util.insertionsTable2;
badInsertionTypeException exception;
insertionOrder integer;
insertionTypeNotFound boolean;
if insertionIn.item_class is null or
insertionIn.parameter is null then
raise incompatibleApproverException;
/* Make sure that the approverIn and insertionsIn relate to the same chain */
if (approverIn.item_class <> insertionIn.item_class ) or
(approverIn.item_id <> insertionIn.item_id) or
(approverIn.action_type_id <> insertionIn.action_type_id) or
(approverIn.group_or_chain_id <> insertionIn.group_or_chain_id) or
(approverIn.api_insertion <> insertionIn.api_insertion) or
(approverIn.authority <> insertionIn.authority) then
raise incompatibleApproverException;
if(insertionIn.order_type = ame_util.firstAuthority) then
ame_api2.setFirstAuthorityApprover(applicationIdIn => applicationIdIn,
transactionTypeIn => transactionTypeIn,
transactionIdIn => transactionIdIn,
approverIn => approverIn,
clearChainStatusYNIn => ame_util.booleanFalse);
/* Make sure approverIn.api_insertion is of the right type. */
if(approverIn.api_insertion = ame_util.oamGenerated) then
raise badInsertionTypeException;
Check that only allowed insertion-order and approver-type values are passed, by calling
getAvailableInsertions and comparing values.
*/
getAvailableInsertions(applicationIdIn => applicationIdIn,
transactionTypeIn => transactionTypeIn,
transactionIdIn => transactionIdIn,
positionIn => positionIn,
orderTypeIn => insertionIn.order_type,
availableInsertionsOut => availableInsertions);
tempCount := availableInsertions.count;
insertionTypeNotFound := true;
/* Check if insertionIn is a valid insertion in availableInsertions */
for i in 1 .. tempCount loop
if(availableInsertions(i).order_type = insertionIn.order_type and
availableInsertions(i).parameter = insertionIn.parameter and
availableInsertions(i).api_insertion = insertionIn.api_insertion and
availableInsertions(i).authority = insertionIn.authority) then
insertionTypeNotFound := false;
if(insertionTypeNotFound) then
raise badInsertionTypeException;
/* Perform the insertion. */
insertionOrder := ame_engine.getNextInsertionOrder;
insert into ame_temp_insertions(
transaction_id,
application_id,
insertion_order,
order_type,
parameter,
description,
name,
item_class,
item_id,
approver_category,
api_insertion,
authority,
effective_date,
reason) values(
transactionIdIn,
ameApplicationId,
insertionOrder,
insertionIn.order_type,
insertionIn.parameter,
insertionIn.description,
approverIn.name,
approverIn.item_class,
approverIn.item_id,
approverIn.approver_category,
insertionIn.api_insertion,
insertionIn.authority,
sysdate,
ame_approver_deviation_pkg.insertReason
);
/* Cycle the engine to account for changes in the insertions table. */
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
routineNameIn => 'insertApprover',
exceptionNumberIn => errorCode,
exceptionStringIn => errorMessage);
when badInsertionTypeException then
ame_engine.unlockTransaction(fndApplicationIdIn => applicationIdIn,
transactionIdIn => transactionIdIn,
transactionTypeIdIn => transactionTypeIn);
routineNameIn => 'insertApprover',
exceptionNumberIn => errorCode,
exceptionStringIn => errorMessage);
routineNameIn => 'insertApprover',
exceptionNumberIn => errorCode,
exceptionStringIn => errorMessage);
routineNameIn => 'insertApprover',
exceptionNumberIn => errorCode,
exceptionStringIn => errorMessage);
routineNameIn => 'insertApprover',
exceptionNumberIn => errorCode,
exceptionStringIn => errorMessage);
routineNameIn => 'insertApprover',
exceptionNumberIn => sqlcode,
exceptionStringIn => sqlerrm);
end insertApprover;
Type temp_insList is TABLE OF ame_temp_insertions%rowtype index by binary_integer;
select *
from ame_temp_insertions
where application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and nvl(end_date,sysdate)
and transaction_type_id = c_txnTypeId
and fnd_application_id = c_applId)
and transaction_id = c_txnId
and parameter like p_approverIn.name||'%'
order by insertion_order;
select parameter,
order_type,
description
from ame_temp_insertions
where application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and nvl(end_date,sysdate)
and transaction_type_id = c_txnTypeId
and fnd_application_id = c_applId)
and transaction_id = c_txnId
and name = p_approverIn.name;
update ame_temp_insertions
set parameter = l_parameter,
order_type = l_order_type,
description = l_description
where name = anchorList(1).name
and parameter = anchorList(1).parameter
and item_class = anchorList(1).item_class
and item_id = anchorList(1).item_id
and insertion_order = anchorList(1).insertion_order
and transaction_id = p_transactionIdIn
and application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and nvl(end_date,sysdate)
and transaction_type_id = p_transactionTypeIn
and fnd_application_id = p_applicationIdIn);
update ame_temp_insertions
set parameter = l_parameter_new
where name = anchorList(i).name
and parameter = anchorList(i).parameter
and item_class = anchorList(i).item_class
and item_id = anchorList(i).item_id
and insertion_order = anchorList(i).insertion_order
and transaction_id = p_transactionIdIn
and application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and nvl(end_date,sysdate)
and transaction_type_id = p_transactionTypeIn
and fnd_application_id = p_applicationIdIn);
select name
bulk collect into nameList
from ame_temp_insertions
where application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and nvl(end_Date,sysdate)
and transaction_type_id = transactionTypeIn
and fnd_application_id = applicationIdIn)
and transaction_id = transactionIdIn
and parameter like nameIn||'%';
delete from ame_temp_insertions
where parameter like nameIn||'%'
and application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and nvl(end_Date,sysdate)
and transaction_type_id = transactionTypeIn
and fnd_application_id = applicationIdIn)
and transaction_id = transactionIdIn;
tempOrderType ame_temp_insertions.order_type%type;
tempParameter ame_temp_insertions.parameter%type;
cursor getAnchorInsertions (parameterIn varchar2) is
(select name
from ame_temp_insertions
where application_id = ame_engine.getAmeApplicationId
and transaction_id = transactionIdIn
and parameter = parameterIn);
cmpParameter ame_temp_insertions.parameter%type;
select count(*)
into l_count
from ame_temp_insertions
where parameter like approverIn.name||'%'
and application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and end_date
and fnd_application_id = applicationIdIn
and transaction_type_id = transactionTypeIn)
and transaction_id = transactionIdIn;
select order_type
into l_orderType
from ame_temp_insertions
where transaction_id = transactionIdIn
and application_id =
(select application_id
from ame_calling_apps
where sysdate between start_date and nvl(end_Date,sysdate)
and transaction_type_id = transactionTypeIn
and fnd_application_id = applicationIdIn)
and name = approverIn.name;
delete from ame_temp_insertions
where
application_id = (select application_id
from ame_calling_apps
where sysdate between start_date and end_date
and fnd_application_id = applicationIdIn
and transaction_type_id = transactionTypeIn) and
transaction_id = transactionIdIn and
name = approverIn.name;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => false,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );
if approvers(approverIndex).api_insertion = ame_util.apiInsertion then
anchorName := approvers(i).name;
open getAnchorInsertions(cmpParameter);
fetch getAnchorInsertions bulk collect into nameList;
close getAnchorInsertions;
close getAnchorInsertions;
if(approvers(approverIndex).api_insertion = ame_util.oamGenerated or
sourceDescription = ame_util.ruleGeneratedSource or
sourceDescription = ame_util.surrogateSource) then
allowDeletingOamApprovers :=
ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.allowDeletingOamApprovers);
insert into ame_temp_deletions(
transaction_id,
application_id,
name,
item_class,
item_id,
approver_category,
action_type_id,
group_or_chain_id,
occurrence,
effective_date,
reason) values(
transactionIdIn,
ameApplicationId,
approvers(approverIndex).name,
approvers(approverIndex).item_class,
approvers(approverIndex).item_id,
approvers(approverIndex).approver_category,
approvers(approverIndex).action_type_id,
approvers(approverIndex).group_or_chain_id,
approvers(approverIndex).occurrence,
sysdate,
ame_approver_deviation_pkg.suppressReason
);
ame_engine.updateInsertions(indexIn => i);
delete from ame_temp_insertions
where
application_id = ameApplicationId and
transaction_id = transactionIdIn and
name = approvers(approverIndex).name and
item_class = approvers(approverIndex).item_class and
item_id = approvers(approverIndex).item_id ;
ame_engine.updateTransactionState(isTestTransactionIn => false,
isLocalTransactionIn => false,
fetchConfigVarsIn => true,
fetchOldApproversIn => true,
fetchInsertionsIn => true,
fetchDeletionsIn => true,
fetchAttributeValuesIn => true,
fetchInactiveAttValuesIn => false,
processProductionActionsIn => false,
processProductionRulesIn => false,
updateCurrentApproverListIn => true,
updateOldApproverListIn => true,
processPrioritiesIn => true,
prepareItemDataIn => false,
prepareRuleIdsIn => false,
prepareRuleDescsIn => false,
transactionIdIn => transactionIdIn,
ameApplicationIdIn => null,
fndApplicationIdIn => applicationIdIn,
transactionTypeIdIn => transactionTypeIn );