The following lines contain the word 'select', 'insert', 'update' or 'delete':
/* Update hasFinalAuthorityYN as needed. */
if(not tempRuleSatisfied and
hasFinalAuthorityYN = ame_util.booleanTrue) then
hasFinalAuthorityYN := ame_util.booleanFalse;
/* Update source. */
ame_util.appendRuleIdToSource(ruleIdIn => ruleIds(i),
sourceInOut => source);
/* Update category as needed. */
if(category = ame_util.fyiApproverCategory and
approverCategories(i) = ame_util.approvalApproverCategory) then
category := ame_util.approvalApproverCategory;
COAInsertee ame_util.approverRecord2;
/* Check for COA 'firstAuthority' insertions */
ame_engine.getHandlerCOAFirstApprover(itemClassIn => tempApprover.item_class,
itemIdIn => tempApprover.item_id,
actionTypeIdIn => tempApprover.action_type_id,
groupOrChainIdIn => tempApprover.group_or_chain_id,
nameOut => COAInsertee.name,
origSystemOut => COAInsertee.orig_system,
origSystemIdOut => COAInsertee.orig_system_id,
displayNameOut => COAInsertee.display_name,
sourceOut => COAInsertee.source);
if COAInsertee.name is null then
/* Fetch some of the required attributes. */
startingPointId :=
to_number(ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.jobLevelStartingPointAttribute));
tempApprover.api_insertion := ame_util.oamGenerated;
tempApprover.name := COAInsertee.name;
tempApprover.orig_system := COAInsertee.orig_system;
tempApprover.orig_system_id := COAInsertee.orig_system_id;
tempApprover.display_name := COAInsertee.display_name;
firstApproverSource := COAInsertee.source;
tempApprover.api_insertion := ame_util.apiAuthorityInsertion;
But in case of no COAInsertion and no startingPointId, the chain must start from requestor's manager. This could
not be set above as the threshhold has to be the requestor's approval authority. */
if(COAInsertee.name is null and
startingPointId is null )
then
/* Check to make sure requestor is not the topDogPersonId, if yes check for autoapproval */
if (requestorId = topDogPersonId ) then
if(ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.allowAutoApprovalAttribute)
= ame_util.booleanAttributeTrue) then
/* insert the requestor into the chain set the requestor's status to approved
end the chain with the requestor */
tempApprover.orig_system_id := requestorId;
tempApprover.api_insertion := ame_util.oamGenerated;
/* reassign the value of source in case approver was a firstAuthority insertee */
if firstApproverSource is not null then
tempApprover.source := firstApproverSource;
tempApprover.api_insertion := ame_util.oamGenerated;
/* check to see if there is a COA insertion after this approver. If a COA insertion is
found, keep checking till no more COA insertions. The check for final authority will need to be
done again.
*/
loop
/* Initialize COAInsertee approverRecord2 */
COAInsertee := ame_util.emptyApproverRecord2;
/* Check if there are any COAInsertions */
ame_engine.getHandlerCOAInsertion(nameIn => tempApprover.name,
itemClassIn => tempApprover.item_class,
itemIdIn => tempApprover.item_id,
actionTypeIdIn => tempApprover.action_type_id,
groupOrChainIdIn => tempApprover.group_or_chain_id,
occurrenceIn => tempApprover.occurrence,
approvalStatusIn => tempApprover.approval_status,
nameOut => COAInsertee.name,
origSystemOut => COAInsertee.orig_system,
origSystemIdOut => COAInsertee.orig_system_id,
displayNameOut => COAInsertee.display_name,
sourceOut => COAInsertee.source);
if COAInsertee.name is null then
exit;
tempApprover.name := COAInsertee.name;
tempApprover.orig_system := COAInsertee.orig_system;
tempApprover.orig_system_id := COAInsertee.orig_system_id;
tempApprover.display_name := COAInsertee.display_name;
tempApprover.source := COAInsertee.source;
tempApprover.api_insertion := ame_util.apiAuthorityInsertion;