[Home] [Help]
PACKAGE BODY: APPS.AME_SUBSTITUTION_HANDLER
Source
1 package body ame_substitution_handler as
2 /* $Header: ameesbha.pkb 120.1 2005/08/08 05:07:30 ubhat noship $ */
3 procedure handler as
4 actionParameters ame_util.stringList;
5 actionTypeId integer;
6 lastForwardeeIndexes ame_util.idList;
7 listModParameterOnes ame_util.stringList;
8 listModParameterTwos ame_util.longStringList;
9 ruleIds ame_util.idList;
10 ruleIndexes ame_util.idList;
11 tempApproverIndexes ame_util.idList;
12 begin
13 /*
14 1. Rule usages for substitution rules don't have approver categories. Instead,
15 substitutions must preserve the approver categories of the target approvers.
16 2. All approvers in an approval group or a chain of authority matching an LM
17 condition must be replaced.
18 3. A substitution only changes the following approverRecord2 fields: name,
19 orig_system, orig_system_id, display_name, action_type_id, occurrence, source.
20 */
21 ame_engine.getHandlerRules3(ruleIdsOut => ruleIds,
22 ruleIndexesOut => ruleIndexes,
23 parametersOut => actionParameters,
24 listModParameterOnesOut => listModParameterOnes,
25 listModParameterTwosOut => listModParameterTwos);
26 actionTypeId := ame_engine.getHandlerActionTypeId;
27 for i in 1 .. ruleIds.count loop
28 tempApproverIndexes.delete;
29 ame_engine.getHandlerLMApprovers(listModParameterOneIn => listModParameterOnes(i),
30 listModParameterTwoIn => listModParameterTwos(i),
31 includeFyiApproversIn => true,
32 includeApprovalGroupsIn => true,
33 returnForwardeesIn => false,
34 approverIndexesOut => tempApproverIndexes,
35 lastForwardeeIndexesOut => lastForwardeeIndexes /* not used here */);
36 for j in 1 .. tempApproverIndexes.count loop
37 /*
38 substituteApprover looks up the orig_system, orig_system_id, and display_name
39 values corresponding to nameIn. It calculates the occurrence value, and it
40 appends ruleIdIn to the existing source value.
41 */
42 ame_engine.substituteApprover(approverIndexIn => tempApproverIndexes(j),
43 nameIn => actionParameters(i),
44 actionTypeIdIn => actionTypeId,
45 ruleIdIn => ruleIds(i));
46 end loop;
47 if tempApproverIndexes.count > 0 then
48 ame_engine.setRuleApplied(ruleIndexIn => ruleIndexes(i));
49 end if;
50 end loop;
51 exception
52 when others then
53 ame_util.runtimeException(packageNameIn => 'ame_substitution_handler',
54 routineNameIn => 'handler',
55 exceptionNumberIn => sqlcode,
56 exceptionStringIn => sqlerrm);
57 raise;
58 end handler;
59 end ame_substitution_handler;