DBA Data[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;