1: package body ame_non_final_handler as
2: /* $Header: ameenfha.pkb 120.1 2005/08/08 05:15:00 ubhat noship $ */
3: actionParameters ame_util.stringList;
4: allRuleIds ame_util.idList;
5: allRuleIndexes ame_util.idList;
6: currentRuleIdcount integer;
7: listModParameterOnes ame_util.stringList;
1: package body ame_non_final_handler as
2: /* $Header: ameenfha.pkb 120.1 2005/08/08 05:15:00 ubhat noship $ */
3: actionParameters ame_util.stringList;
4: allRuleIds ame_util.idList;
5: allRuleIndexes ame_util.idList;
6: currentRuleIdcount integer;
7: listModParameterOnes ame_util.stringList;
8: listModParameterTwos ame_util.longStringList;
1: package body ame_non_final_handler as
2: /* $Header: ameenfha.pkb 120.1 2005/08/08 05:15:00 ubhat noship $ */
3: actionParameters ame_util.stringList;
4: allRuleIds ame_util.idList;
5: allRuleIndexes ame_util.idList;
6: currentRuleIdcount integer;
7: listModParameterOnes ame_util.stringList;
8: listModParameterTwos ame_util.longStringList;
9: parametersCount integer;
3: actionParameters ame_util.stringList;
4: allRuleIds ame_util.idList;
5: allRuleIndexes ame_util.idList;
6: currentRuleIdcount integer;
7: listModParameterOnes ame_util.stringList;
8: listModParameterTwos ame_util.longStringList;
9: parametersCount integer;
10: parameterNumbers ame_util.idList;
11: parameterSigns ame_util.charList;
4: allRuleIds ame_util.idList;
5: allRuleIndexes ame_util.idList;
6: currentRuleIdcount integer;
7: listModParameterOnes ame_util.stringList;
8: listModParameterTwos ame_util.longStringList;
9: parametersCount integer;
10: parameterNumbers ame_util.idList;
11: parameterSigns ame_util.charList;
12: parameters ame_util.stringList;
6: currentRuleIdcount integer;
7: listModParameterOnes ame_util.stringList;
8: listModParameterTwos ame_util.longStringList;
9: parametersCount integer;
10: parameterNumbers ame_util.idList;
11: parameterSigns ame_util.charList;
12: parameters ame_util.stringList;
13: ruleIds ame_util.idList;
14: ruleIndexes ame_util.idList;
7: listModParameterOnes ame_util.stringList;
8: listModParameterTwos ame_util.longStringList;
9: parametersCount integer;
10: parameterNumbers ame_util.idList;
11: parameterSigns ame_util.charList;
12: parameters ame_util.stringList;
13: ruleIds ame_util.idList;
14: ruleIndexes ame_util.idList;
15: ruleSatisfiedYN ame_util.charList;
8: listModParameterTwos ame_util.longStringList;
9: parametersCount integer;
10: parameterNumbers ame_util.idList;
11: parameterSigns ame_util.charList;
12: parameters ame_util.stringList;
13: ruleIds ame_util.idList;
14: ruleIndexes ame_util.idList;
15: ruleSatisfiedYN ame_util.charList;
16: threshholdJobLevel integer;
9: parametersCount integer;
10: parameterNumbers ame_util.idList;
11: parameterSigns ame_util.charList;
12: parameters ame_util.stringList;
13: ruleIds ame_util.idList;
14: ruleIndexes ame_util.idList;
15: ruleSatisfiedYN ame_util.charList;
16: threshholdJobLevel integer;
17: topDogFound boolean;
10: parameterNumbers ame_util.idList;
11: parameterSigns ame_util.charList;
12: parameters ame_util.stringList;
13: ruleIds ame_util.idList;
14: ruleIndexes ame_util.idList;
15: ruleSatisfiedYN ame_util.charList;
16: threshholdJobLevel integer;
17: topDogFound boolean;
18: topDogPersonId integer;
11: parameterSigns ame_util.charList;
12: parameters ame_util.stringList;
13: ruleIds ame_util.idList;
14: ruleIndexes ame_util.idList;
15: ruleSatisfiedYN ame_util.charList;
16: threshholdJobLevel integer;
17: topDogFound boolean;
18: topDogPersonId integer;
19: /* forward declaration */
59: end if;
60: end loop;
61: exception
62: when others then
63: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
64: routineNameIn => 'getNextTargetApprover',
65: exceptionNumberIn => sqlcode,
66: exceptionStringIn => sqlerrm);
67: raise;
76: sourceOut out nocopy varchar2,
77: hasFinalAuthorityYNOut out nocopy varchar2,
78: supervisorJobLevelOut out nocopy integer,
79: nextSupervisorIdOut out nocopy integer) is
80: hasFinalAuthorityYN ame_util.charType;
81: source ame_util.longStringType;
82: supervisorJobLevel integer;
83: tempRuleRequiresApprover boolean;
84: tempRuleSatisfied boolean;
77: hasFinalAuthorityYNOut out nocopy varchar2,
78: supervisorJobLevelOut out nocopy integer,
79: nextSupervisorIdOut out nocopy integer) is
80: hasFinalAuthorityYN ame_util.charType;
81: source ame_util.longStringType;
82: supervisorJobLevel integer;
83: tempRuleRequiresApprover boolean;
84: tempRuleSatisfied boolean;
85: begin
95: 2. An approver has final authority if the approver satisfies all the rules.
96: (The handler procedure proper takes care of adding subsequent approvers at
97: the same job level, if the relevant mandatory attribute so requires.)
98: */
99: hasFinalAuthorityYN := ame_util.booleanTrue;
100: for i in 1 .. parametersCount loop
101: /* Determine whether the approver satisfies the current rule. */
102: if(personIdIn = topDogPersonId) then
103: tempRuleSatisfied := true;
124: end if;
125: end if;
126: /* Update hasFinalAuthorityYN as needed. */
127: if(not tempRuleSatisfied and
128: hasFinalAuthorityYN = ame_util.booleanTrue) then
129: hasFinalAuthorityYN := ame_util.booleanFalse;
130: end if;
131: /* Determine whether the current rule requires the approver. */
132: tempRuleRequiresApprover := false;
125: end if;
126: /* Update hasFinalAuthorityYN as needed. */
127: if(not tempRuleSatisfied and
128: hasFinalAuthorityYN = ame_util.booleanTrue) then
129: hasFinalAuthorityYN := ame_util.booleanFalse;
130: end if;
131: /* Determine whether the current rule requires the approver. */
132: tempRuleRequiresApprover := false;
133: if(ruleSatisfiedYN(i) = ame_util.booleanTrue) then
129: hasFinalAuthorityYN := ame_util.booleanFalse;
130: end if;
131: /* Determine whether the current rule requires the approver. */
132: tempRuleRequiresApprover := false;
133: if(ruleSatisfiedYN(i) = ame_util.booleanTrue) then
134: if(not tempRuleSatisfied) then
135: tempRuleRequiresApprover := true;
136: end if;
137: else
136: end if;
137: else
138: tempRuleRequiresApprover := true;
139: if(tempRuleSatisfied) then
140: ruleSatisfiedYN(i) := ame_util.booleanTrue;
141: end if;
142: end if;
143: if(tempRuleRequiresApprover )
144: then
142: end if;
143: if(tempRuleRequiresApprover )
144: then
145: /* Update source. */
146: ame_util.appendRuleIdToSource(ruleIdIn => ruleIds(i),
147: sourceInOut => source);
148: end if;
149: end loop;
150: hasFinalAuthorityYNOut := hasFinalAuthorityYN;
152: exception
153: when others then
154: hasFinalAuthorityYNOut := null;
155: sourceOut := null;
156: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
157: routineNameIn => 'getSourceAndAuthority',
158: exceptionNumberIn => sqlcode,
159: exceptionStringIn => sqlerrm);
160: raise;
163: insertCount integer;
164: lowerLimit integer;
165: tempRuleId integer;
166: tempRuleIndex integer;
167: tempActionParameter ame_util.stringType;
168: tempListModParameterTwo ame_util.stringType;
169: tempListModParameterOne ame_util.stringType;
170: tempParameterCount integer;
171: begin
164: lowerLimit integer;
165: tempRuleId integer;
166: tempRuleIndex integer;
167: tempActionParameter ame_util.stringType;
168: tempListModParameterTwo ame_util.stringType;
169: tempListModParameterOne ame_util.stringType;
170: tempParameterCount integer;
171: begin
172: tempParameterCount := listModParameterTwos.count;
165: tempRuleId integer;
166: tempRuleIndex integer;
167: tempActionParameter ame_util.stringType;
168: tempListModParameterTwo ame_util.stringType;
169: tempListModParameterOne ame_util.stringType;
170: tempParameterCount integer;
171: begin
172: tempParameterCount := listModParameterTwos.count;
173: for i in 1 .. tempParameterCount loop
197: end loop;
198: end loop;
199: exception
200: when others then
201: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
202: routineNameIn => 'groupRules',
203: exceptionNumberIn => sqlcode,
204: exceptionStringIn => sqlerrm);
205: raise;
205: raise;
206: end groupRules;
207: procedure handler as
208: badParameterException exception;
209: COAInsertee ame_util.approverRecord2;
210: errorCode integer;
211: errorMessage ame_util.longestStringType;
212: extensionApprovers ame_util.approversTable2;
213: extIndex integer;
207: procedure handler as
208: badParameterException exception;
209: COAInsertee ame_util.approverRecord2;
210: errorCode integer;
211: errorMessage ame_util.longestStringType;
212: extensionApprovers ame_util.approversTable2;
213: extIndex integer;
214: finalAuthorityNotFound boolean;
215: finalAuthorityFound boolean;
208: badParameterException exception;
209: COAInsertee ame_util.approverRecord2;
210: errorCode integer;
211: errorMessage ame_util.longestStringType;
212: extensionApprovers ame_util.approversTable2;
213: extIndex integer;
214: finalAuthorityNotFound boolean;
215: finalAuthorityFound boolean;
216: finalAuthoritySource ame_util.longStringType;
212: extensionApprovers ame_util.approversTable2;
213: extIndex integer;
214: finalAuthorityNotFound boolean;
215: finalAuthorityFound boolean;
216: finalAuthoritySource ame_util.longStringType;
217: includeAllJobLevelApprovers boolean;
218: insertionThreshhold integer;
219: lastForwardeeIndexes ame_util.idList;
220: noSupervisorException exception;
215: finalAuthorityFound boolean;
216: finalAuthoritySource ame_util.longStringType;
217: includeAllJobLevelApprovers boolean;
218: insertionThreshhold integer;
219: lastForwardeeIndexes ame_util.idList;
220: noSupervisorException exception;
221: nullFirstIdException exception;
222: requestorId integer;
223: source ame_util.longStringType;
219: lastForwardeeIndexes ame_util.idList;
220: noSupervisorException exception;
221: nullFirstIdException exception;
222: requestorId integer;
223: source ame_util.longStringType;
224: startingPointId integer;
225: tempApprovers ame_util.approversTable2;
226: tempApproverIndexes ame_util.idList;
227: tempHasFinalAuthorityYN ame_util.charType;
221: nullFirstIdException exception;
222: requestorId integer;
223: source ame_util.longStringType;
224: startingPointId integer;
225: tempApprovers ame_util.approversTable2;
226: tempApproverIndexes ame_util.idList;
227: tempHasFinalAuthorityYN ame_util.charType;
228: tempIndex integer;
229: tempJobLevel integer;
222: requestorId integer;
223: source ame_util.longStringType;
224: startingPointId integer;
225: tempApprovers ame_util.approversTable2;
226: tempApproverIndexes ame_util.idList;
227: tempHasFinalAuthorityYN ame_util.charType;
228: tempIndex integer;
229: tempJobLevel integer;
230: tempLength integer;
223: source ame_util.longStringType;
224: startingPointId integer;
225: tempApprovers ame_util.approversTable2;
226: tempApproverIndexes ame_util.idList;
227: tempHasFinalAuthorityYN ame_util.charType;
228: tempIndex integer;
229: tempJobLevel integer;
230: tempLength integer;
231: tempMemberOrderNumber integer;
235: tempNextSupervisorId integer;
236: begin
237: /* Populate some of the package variables. */
238: includeAllJobLevelApprovers := null;
239: topDogPersonId := to_number(ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.topSupPersonIdAttribute));
240: ame_engine.getHandlerRules3(ruleIdsOut => allRuleIds,
241: ruleIndexesOut => allRuleIndexes,
242: parametersOut => actionParameters,
243: listModParameterOnesOut => listModParameterOnes,
270: /* Get the approver list. This should be inside the loop so that we get the latest list*/
271: ame_engine.getApprovers(approversOut => tempApprovers);
272: /* Check that the action type id of the target is based on job level handler */
273: if (tempApprovers(tempIndex).action_type_id =
274: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.absoluteJobLevelTypeName) or
275: tempApprovers(tempIndex).action_type_id =
276: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
277: tempApprovers(tempIndex).action_type_id =
278: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
272: /* Check that the action type id of the target is based on job level handler */
273: if (tempApprovers(tempIndex).action_type_id =
274: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.absoluteJobLevelTypeName) or
275: tempApprovers(tempIndex).action_type_id =
276: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
277: tempApprovers(tempIndex).action_type_id =
278: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
279: tempApprovers(tempIndex).action_type_id =
280: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
274: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.absoluteJobLevelTypeName) or
275: tempApprovers(tempIndex).action_type_id =
276: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
277: tempApprovers(tempIndex).action_type_id =
278: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
279: tempApprovers(tempIndex).action_type_id =
280: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
281: tempApprovers(tempIndex).action_type_id =
282: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
276: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
277: tempApprovers(tempIndex).action_type_id =
278: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
279: tempApprovers(tempIndex).action_type_id =
280: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
281: tempApprovers(tempIndex).action_type_id =
282: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
283: tempApprovers(tempIndex).action_type_id =
284: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
278: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
279: tempApprovers(tempIndex).action_type_id =
280: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
281: tempApprovers(tempIndex).action_type_id =
282: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
283: tempApprovers(tempIndex).action_type_id =
284: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
285: then
286: if(includeAllJobLevelApprovers is null) then
280: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
281: tempApprovers(tempIndex).action_type_id =
282: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
283: tempApprovers(tempIndex).action_type_id =
284: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
285: then
286: if(includeAllJobLevelApprovers is null) then
287: includeAllJobLevelApprovers :=
288: ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.includeAllApproversAttribute) =
284: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
285: then
286: if(includeAllJobLevelApprovers is null) then
287: includeAllJobLevelApprovers :=
288: ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.includeAllApproversAttribute) =
289: ame_util.booleanAttributeTrue;
290: end if;
291: /* First, get the orig_system_id and job level of the target approver. */
292: if tempApprovers(tempIndex).orig_system_id is null then
285: then
286: if(includeAllJobLevelApprovers is null) then
287: includeAllJobLevelApprovers :=
288: ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.includeAllApproversAttribute) =
289: ame_util.booleanAttributeTrue;
290: end if;
291: /* First, get the orig_system_id and job level of the target approver. */
292: if tempApprovers(tempIndex).orig_system_id is null then
293: ame_approver_type_pkg.getApproverOrigSystemAndId(nameIn =>tempApprovers(tempIndex).name,
300: supervisorIdOut => tempSupervisorId);
301: threshholdJobLevel := tempJobLevel;
302: parseAndSortRules;
303: for i in 1 .. ruleIds.count loop
304: ruleSatisfiedYN(i) := ame_util.booleanFalse;
305: ame_engine.setRuleApplied(ruleIndexIn => ruleIndexes(i));
306: end loop;
307: /*
308: Third, walk the chain starting with the target and ending with the last forwardee,
323: sourceOut => source,
324: hasFinalAuthorityYNOut => tempHasFinalAuthorityYN,
325: supervisorJobLevelOut => tempSupervisorJobLevel,
326: nextSupervisorIdOut => tempNextSupervisorId);
327: if(tempHasFinalAuthorityYN = ame_util.booleanTrue) then
328: finalAuthorityNotFound := false;
329: exit;
330: end if;
331: end loop;
348: ame_absolute_job_level_handler.getJobLevelAndSupervisor(
349: personIdIn => extensionApprovers(extIndex).orig_system_id,
350: jobLevelOut => tempJobLevel,
351: supervisorIdOut => tempSupervisorId);
352: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
353: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
354: -- preserve the action_type_ID and action_type_order_number values of the original chains
355: extensionApprovers(extIndex).action_type_id := tempApprovers(tempIndex).action_type_id;
356: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
349: personIdIn => extensionApprovers(extIndex).orig_system_id,
350: jobLevelOut => tempJobLevel,
351: supervisorIdOut => tempSupervisorId);
352: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
353: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
354: -- preserve the action_type_ID and action_type_order_number values of the original chains
355: extensionApprovers(extIndex).action_type_id := tempApprovers(tempIndex).action_type_id;
356: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
357: extensionApprovers(extIndex).item_id := tempApprovers(tempIndex).item_id;
360: extensionApprovers(extIndex).sub_list_order_number := tempApprovers(tempIndex).sub_list_order_number;
361: extensionApprovers(extIndex).action_type_order_number := tempApprovers(tempIndex).action_type_order_number;
362: extensionApprovers(extIndex).group_or_chain_order_number := tempApprovers(tempIndex).group_or_chain_order_number;
363: extensionApprovers(extIndex).group_or_chain_id := tempApprovers(tempIndex).group_or_chain_id;
364: extensionApprovers(extIndex).approver_category := ame_util.approvalApproverCategory;
365: extensionApprovers(extIndex).api_insertion := ame_util.oamGenerated;
366: getSourceAndAuthority(personIdIn => extensionApprovers(extIndex).orig_system_id,
367: jobLevelIn => tempJobLevel,
368: supervisorIdIn => tempSupervisorId,
361: extensionApprovers(extIndex).action_type_order_number := tempApprovers(tempIndex).action_type_order_number;
362: extensionApprovers(extIndex).group_or_chain_order_number := tempApprovers(tempIndex).group_or_chain_order_number;
363: extensionApprovers(extIndex).group_or_chain_id := tempApprovers(tempIndex).group_or_chain_id;
364: extensionApprovers(extIndex).approver_category := ame_util.approvalApproverCategory;
365: extensionApprovers(extIndex).api_insertion := ame_util.oamGenerated;
366: getSourceAndAuthority(personIdIn => extensionApprovers(extIndex).orig_system_id,
367: jobLevelIn => tempJobLevel,
368: supervisorIdIn => tempSupervisorId,
369: sourceOut => extensionApprovers(extIndex).source,
370: hasFinalAuthorityYNOut => tempHasFinalAuthorityYN,
371: supervisorJobLevelOut => tempSupervisorJobLevel,
372: nextSupervisorIdOut => tempNextSupervisorId);
373: if(not finalAuthorityFound and
374: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
375: finalAuthorityFound := true;
376: finalAuthoritySource := extensionApprovers(extIndex).source;
377: end if;
378: if (extensionApprovers(extIndex).source is null and
378: if (extensionApprovers(extIndex).source is null and
379: finalAuthoritySource is not null ) then
380: extensionApprovers(extIndex).source := finalAuthoritySource;
381: end if;
382: ame_approver_type_pkg.getWfRolesNameAndDisplayName(origSystemIn => ame_util.perOrigSystem,
383: origSystemIdIn => extensionApprovers(extIndex).orig_system_id,
384: nameOut => extensionApprovers(extIndex).name,
385: displayNameOut => extensionApprovers(extIndex).display_name);
386: extensionApprovers(extIndex).occurrence := ame_engine.getHandlerOccurrence(
398: insertion is found, keep checking till no more COA insertions. The check
399: for final authority will need to be done again. */
400: loop
401: /* Initialize COAInsertee approverRecord2 */
402: COAInsertee := ame_util.emptyApproverRecord2;
403: /* Check if there are any COAInsertions */
404: ame_engine.getHandlerCOAInsertion(nameIn => extensionApprovers(extIndex).name,
405: itemClassIn => extensionApprovers(extIndex).item_class,
406: itemIdIn => extensionApprovers(extIndex).item_id,
424: ame_absolute_job_level_handler.getJobLevelAndSupervisor(personIdIn => extensionApprovers(extIndex).orig_system_id,
425: jobLevelOut => tempJobLevel,
426: supervisorIdOut => tempSupervisorId);
427: extensionApprovers(extIndex).orig_system_id := tempSupervisorId;
428: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
429: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
430: extensionApprovers(extIndex).action_type_id := ame_engine.getHandlerActionTypeId;
431: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
432: extensionApprovers(extIndex).item_id := tempApprovers(tempIndex).item_id;
425: jobLevelOut => tempJobLevel,
426: supervisorIdOut => tempSupervisorId);
427: extensionApprovers(extIndex).orig_system_id := tempSupervisorId;
428: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
429: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
430: extensionApprovers(extIndex).action_type_id := ame_engine.getHandlerActionTypeId;
431: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
432: extensionApprovers(extIndex).item_id := tempApprovers(tempIndex).item_id;
433: extensionApprovers(extIndex).item_class_order_number := tempApprovers(tempIndex).item_class_order_number;
443: hasFinalAuthorityYNOut => tempHasFinalAuthorityYN,
444: supervisorJobLevelOut => tempSupervisorJobLevel,
445: nextSupervisorIdOut => tempNextSupervisorId);
446: extensionApprovers(extIndex).source := COAInsertee.source;
447: extensionApprovers(extIndex).api_insertion := ame_util.apiAuthorityInsertion;
448: tempMemberOrderNumber := tempMemberOrderNumber + 1;
449: extensionApprovers(extIndex).member_order_number := tempMemberOrderNumber;
450: extensionApprovers(extIndex).occurrence := ame_engine.getHandlerOccurrence(
451: nameIn => extensionApprovers(extIndex).name,
454: actionTypeIdIn => extensionApprovers(extIndex).action_type_id,
455: groupOrChainIdIn => extensionApprovers(extIndex).group_or_chain_id);
456: extensionApprovers(extIndex).approval_status :=
457: ame_engine.getHandlerApprovalStatus(approverIn => extensionApprovers(extIndex));
458: /* If approver has a status of ame_util.approve or
459: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
460: if approver could have final authority */
461: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
462: ame_util.nullStatus)
455: groupOrChainIdIn => extensionApprovers(extIndex).group_or_chain_id);
456: extensionApprovers(extIndex).approval_status :=
457: ame_engine.getHandlerApprovalStatus(approverIn => extensionApprovers(extIndex));
458: /* If approver has a status of ame_util.approve or
459: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
460: if approver could have final authority */
461: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
462: ame_util.nullStatus)
463: then
457: ame_engine.getHandlerApprovalStatus(approverIn => extensionApprovers(extIndex));
458: /* If approver has a status of ame_util.approve or
459: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
460: if approver could have final authority */
461: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
462: ame_util.nullStatus)
463: then
464: if(not finalAuthorityFound and
465: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
458: /* If approver has a status of ame_util.approve or
459: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
460: if approver could have final authority */
461: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
462: ame_util.nullStatus)
463: then
464: if(not finalAuthorityFound and
465: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
466: finalAuthorityFound := true;
461: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
462: ame_util.nullStatus)
463: then
464: if(not finalAuthorityFound and
465: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
466: finalAuthorityFound := true;
467: tempOldJobLevel := tempJobLevel;
468: end if;
469: end if;
510: end loop;
511: exception
512: when badParameterException then
513: errorCode := -20001;
514: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
515: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
516: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
517: routineNameIn => 'handler',
518: exceptionNumberIn => errorCode,
512: when badParameterException then
513: errorCode := -20001;
514: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
515: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
516: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
517: routineNameIn => 'handler',
518: exceptionNumberIn => errorCode,
519: exceptionStringIn => errorMessage);
520: raise_application_error(errorCode,
520: raise_application_error(errorCode,
521: errorMessage);
522: when noSupervisorException then
523: errorCode := -20001;
524: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
525: messageNameIn => 'AME_400232_HAN_NO_SUPVSR_ID',
526: tokenNameOneIn => 'PERSON_ID',
527: tokenValueOneIn =>extensionApprovers(extIndex).orig_system_id);
528: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
524: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
525: messageNameIn => 'AME_400232_HAN_NO_SUPVSR_ID',
526: tokenNameOneIn => 'PERSON_ID',
527: tokenValueOneIn =>extensionApprovers(extIndex).orig_system_id);
528: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
529: routineNameIn => 'handler',
530: exceptionNumberIn => errorCode,
531: exceptionStringIn => errorMessage);
532: raise_application_error(errorCode,
533: errorMessage);
534: when nullFirstIdException then
535: errorCode := -20001;
536: errorMessage :=
537: ame_util.getMessage(applicationShortNameIn => 'PER',
538: messageNameIn => 'AME_400233_HAN_NO_TRANS_PER_ID');
539: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
540: routineNameIn => 'handler',
541: exceptionNumberIn => errorCode,
535: errorCode := -20001;
536: errorMessage :=
537: ame_util.getMessage(applicationShortNameIn => 'PER',
538: messageNameIn => 'AME_400233_HAN_NO_TRANS_PER_ID');
539: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
540: routineNameIn => 'handler',
541: exceptionNumberIn => errorCode,
542: exceptionStringIn => errorMessage);
543: raise_application_error(errorCode,
542: exceptionStringIn => errorMessage);
543: raise_application_error(errorCode,
544: errorMessage);
545: when others then
546: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
547: routineNameIn => 'handler',
548: exceptionNumberIn => sqlcode,
549: exceptionStringIn => sqlerrm);
550: raise;
551: end handler;
552: procedure parseAndSortRules is
553: badParameterException exception;
554: errorCode integer;
555: errorMessage ame_util.longestStringType;
556: tempCategory ame_util.charType;
557: tempLength integer;
558: tempNumber integer;
559: tempRuleId integer;
552: procedure parseAndSortRules is
553: badParameterException exception;
554: errorCode integer;
555: errorMessage ame_util.longestStringType;
556: tempCategory ame_util.charType;
557: tempLength integer;
558: tempNumber integer;
559: tempRuleId integer;
560: tempRuleIndex integer;
557: tempLength integer;
558: tempNumber integer;
559: tempRuleId integer;
560: tempRuleIndex integer;
561: tempSign ame_util.charType;
562: upperLimit integer;
563: begin
564: parametersCount := parameters.count;
565: /* Parse. */
602: end loop;
603: exception
604: when badParameterException then
605: errorCode := -20001;
606: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
607: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
608: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
609: routineNameIn => 'parseAndSortRules',
610: exceptionNumberIn => errorCode,
604: when badParameterException then
605: errorCode := -20001;
606: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
607: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
608: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
609: routineNameIn => 'parseAndSortRules',
610: exceptionNumberIn => errorCode,
611: exceptionStringIn => errorMessage);
612: raise_application_error(errorCode,
611: exceptionStringIn => errorMessage);
612: raise_application_error(errorCode,
613: errorMessage);
614: when others then
615: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
616: routineNameIn => 'parseAndSortRules',
617: exceptionNumberIn => sqlcode,
618: exceptionStringIn => sqlerrm);
619: raise;