1: package body ame_non_final_handler as
2: /* $Header: ameenfha.pkb 120.6 2011/05/17 11:39:35 nchinnam ship $ */
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.6 2011/05/17 11:39:35 nchinnam ship $ */
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.6 2011/05/17 11:39:35 nchinnam ship $ */
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;
236: l_error_code number;
237: begin
238: /* Populate some of the package variables. */
239: includeAllJobLevelApprovers := null;
240: topDogPersonId := to_number(ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.topSupPersonIdAttribute));
241: ame_engine.getHandlerRules3(ruleIdsOut => allRuleIds,
242: ruleIndexesOut => allRuleIndexes,
243: parametersOut => actionParameters,
244: listModParameterOnesOut => listModParameterOnes,
271: /* Get the approver list. This should be inside the loop so that we get the latest list*/
272: ame_engine.getApprovers(approversOut => tempApprovers);
273: /* Check that the action type id of the target is based on job level handler */
274: if (tempApprovers(tempIndex).action_type_id =
275: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.absoluteJobLevelTypeName) or
276: tempApprovers(tempIndex).action_type_id =
277: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
278: tempApprovers(tempIndex).action_type_id =
279: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
273: /* Check that the action type id of the target is based on job level handler */
274: if (tempApprovers(tempIndex).action_type_id =
275: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.absoluteJobLevelTypeName) or
276: tempApprovers(tempIndex).action_type_id =
277: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
278: tempApprovers(tempIndex).action_type_id =
279: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
280: tempApprovers(tempIndex).action_type_id =
281: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
275: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.absoluteJobLevelTypeName) or
276: tempApprovers(tempIndex).action_type_id =
277: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
278: tempApprovers(tempIndex).action_type_id =
279: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
280: tempApprovers(tempIndex).action_type_id =
281: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
282: tempApprovers(tempIndex).action_type_id =
283: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
277: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.relativeJobLevelTypeName) or
278: tempApprovers(tempIndex).action_type_id =
279: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
280: tempApprovers(tempIndex).action_type_id =
281: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
282: tempApprovers(tempIndex).action_type_id =
283: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
284: tempApprovers(tempIndex).action_type_id =
285: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
279: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.managerFinalApproverTypeName) or
280: tempApprovers(tempIndex).action_type_id =
281: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
282: tempApprovers(tempIndex).action_type_id =
283: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
284: tempApprovers(tempIndex).action_type_id =
285: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
286: then
287: if(includeAllJobLevelApprovers is null) then
281: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.finalApproverOnlyTypeName) or
282: tempApprovers(tempIndex).action_type_id =
283: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.lineItemJobLevelTypeName) or
284: tempApprovers(tempIndex).action_type_id =
285: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
286: then
287: if(includeAllJobLevelApprovers is null) then
288: includeAllJobLevelApprovers :=
289: ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.includeAllApproversAttribute) =
285: ame_engine.getActionTypeId(actionTypeNameIn => ame_util.dualChainsAuthorityTypeName) )
286: then
287: if(includeAllJobLevelApprovers is null) then
288: includeAllJobLevelApprovers :=
289: ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.includeAllApproversAttribute) =
290: ame_util.booleanAttributeTrue;
291: end if;
292: /* First, get the orig_system_id and job level of the target approver. */
293: if tempApprovers(tempIndex).orig_system_id is null then
286: then
287: if(includeAllJobLevelApprovers is null) then
288: includeAllJobLevelApprovers :=
289: ame_engine.getHeaderAttValue2(attributeNameIn => ame_util.includeAllApproversAttribute) =
290: ame_util.booleanAttributeTrue;
291: end if;
292: /* First, get the orig_system_id and job level of the target approver. */
293: if tempApprovers(tempIndex).orig_system_id is null then
294: errorCode :=1;
302: supervisorIdOut => tempSupervisorId);
303: threshholdJobLevel := tempJobLevel;
304: parseAndSortRules;
305: for i in 1 .. ruleIds.count loop
306: ruleSatisfiedYN(i) := ame_util.booleanFalse;
307: ame_engine.setRuleApplied(ruleIndexIn => ruleIndexes(i));
308: end loop;
309: /*
310: Third, walk the chain starting with the target and ending with the last forwardee,
325: sourceOut => source,
326: hasFinalAuthorityYNOut => tempHasFinalAuthorityYN,
327: supervisorJobLevelOut => tempSupervisorJobLevel,
328: nextSupervisorIdOut => tempNextSupervisorId);
329: if(tempHasFinalAuthorityYN = ame_util.booleanTrue) then
330: finalAuthorityNotFound := false;
331: exit;
332: end if;
333: end loop;
350: ame_absolute_job_level_handler.getJobLevelAndSupervisor(
351: personIdIn => extensionApprovers(extIndex).orig_system_id,
352: jobLevelOut => tempJobLevel,
353: supervisorIdOut => tempSupervisorId);
354: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
355: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
356: -- preserve the action_type_ID and action_type_order_number values of the original chains
357: extensionApprovers(extIndex).action_type_id := tempApprovers(tempIndex).action_type_id;
358: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
351: personIdIn => extensionApprovers(extIndex).orig_system_id,
352: jobLevelOut => tempJobLevel,
353: supervisorIdOut => tempSupervisorId);
354: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
355: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
356: -- preserve the action_type_ID and action_type_order_number values of the original chains
357: extensionApprovers(extIndex).action_type_id := tempApprovers(tempIndex).action_type_id;
358: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
359: extensionApprovers(extIndex).item_id := tempApprovers(tempIndex).item_id;
362: extensionApprovers(extIndex).sub_list_order_number := tempApprovers(tempIndex).sub_list_order_number;
363: extensionApprovers(extIndex).action_type_order_number := tempApprovers(tempIndex).action_type_order_number;
364: extensionApprovers(extIndex).group_or_chain_order_number := tempApprovers(tempIndex).group_or_chain_order_number;
365: extensionApprovers(extIndex).group_or_chain_id := tempApprovers(tempIndex).group_or_chain_id;
366: extensionApprovers(extIndex).approver_category := ame_util.approvalApproverCategory;
367: extensionApprovers(extIndex).api_insertion := ame_util.oamGenerated;
368: getSourceAndAuthority(personIdIn => extensionApprovers(extIndex).orig_system_id,
369: jobLevelIn => tempJobLevel,
370: supervisorIdIn => tempSupervisorId,
363: extensionApprovers(extIndex).action_type_order_number := tempApprovers(tempIndex).action_type_order_number;
364: extensionApprovers(extIndex).group_or_chain_order_number := tempApprovers(tempIndex).group_or_chain_order_number;
365: extensionApprovers(extIndex).group_or_chain_id := tempApprovers(tempIndex).group_or_chain_id;
366: extensionApprovers(extIndex).approver_category := ame_util.approvalApproverCategory;
367: extensionApprovers(extIndex).api_insertion := ame_util.oamGenerated;
368: getSourceAndAuthority(personIdIn => extensionApprovers(extIndex).orig_system_id,
369: jobLevelIn => tempJobLevel,
370: supervisorIdIn => tempSupervisorId,
371: sourceOut => extensionApprovers(extIndex).source,
372: hasFinalAuthorityYNOut => tempHasFinalAuthorityYN,
373: supervisorJobLevelOut => tempSupervisorJobLevel,
374: nextSupervisorIdOut => tempNextSupervisorId);
375: if(not finalAuthorityFound and
376: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
377: finalAuthorityFound := true;
378: finalAuthoritySource := extensionApprovers(extIndex).source;
379: end if;
380: if (extensionApprovers(extIndex).source is null and
381: finalAuthoritySource is not null ) then
382: extensionApprovers(extIndex).source := finalAuthoritySource;
383: end if;
384: errorCode := 2;
385: ame_approver_type_pkg.getWfRolesNameAndDisplayName(origSystemIn => ame_util.perOrigSystem,
386: origSystemIdIn => extensionApprovers(extIndex).orig_system_id,
387: nameOut => extensionApprovers(extIndex).name,
388: displayNameOut => extensionApprovers(extIndex).display_name);
389: extensionApprovers(extIndex).occurrence := ame_engine.getHandlerOccurrence(
401: insertion is found, keep checking till no more COA insertions. The check
402: for final authority will need to be done again. */
403: loop
404: /* Initialize COAInsertee approverRecord2 */
405: COAInsertee := ame_util.emptyApproverRecord2;
406: /* Check if there are any COAInsertions */
407: ame_engine.getHandlerCOAInsertion(nameIn => extensionApprovers(extIndex).name,
408: itemClassIn => extensionApprovers(extIndex).item_class,
409: itemIdIn => extensionApprovers(extIndex).item_id,
427: ame_absolute_job_level_handler.getJobLevelAndSupervisor(personIdIn => extensionApprovers(extIndex).orig_system_id,
428: jobLevelOut => tempJobLevel,
429: supervisorIdOut => tempSupervisorId);
430: extensionApprovers(extIndex).orig_system_id := tempSupervisorId;
431: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
432: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
433: extensionApprovers(extIndex).action_type_id := ame_engine.getHandlerActionTypeId;
434: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
435: extensionApprovers(extIndex).item_id := tempApprovers(tempIndex).item_id;
428: jobLevelOut => tempJobLevel,
429: supervisorIdOut => tempSupervisorId);
430: extensionApprovers(extIndex).orig_system_id := tempSupervisorId;
431: extensionApprovers(extIndex).orig_system := ame_util.perOrigSystem;
432: extensionApprovers(extIndex).authority := ame_util.authorityApprover;
433: extensionApprovers(extIndex).action_type_id := ame_engine.getHandlerActionTypeId;
434: extensionApprovers(extIndex).item_class := tempApprovers(tempIndex).item_class;
435: extensionApprovers(extIndex).item_id := tempApprovers(tempIndex).item_id;
436: extensionApprovers(extIndex).item_class_order_number := tempApprovers(tempIndex).item_class_order_number;
446: hasFinalAuthorityYNOut => tempHasFinalAuthorityYN,
447: supervisorJobLevelOut => tempSupervisorJobLevel,
448: nextSupervisorIdOut => tempNextSupervisorId);
449: extensionApprovers(extIndex).source := COAInsertee.source;
450: extensionApprovers(extIndex).api_insertion := ame_util.apiAuthorityInsertion;
451: tempMemberOrderNumber := tempMemberOrderNumber + 1;
452: extensionApprovers(extIndex).member_order_number := tempMemberOrderNumber;
453: extensionApprovers(extIndex).occurrence := ame_engine.getHandlerOccurrence(
454: nameIn => extensionApprovers(extIndex).name,
457: actionTypeIdIn => extensionApprovers(extIndex).action_type_id,
458: groupOrChainIdIn => extensionApprovers(extIndex).group_or_chain_id);
459: extensionApprovers(extIndex).approval_status :=
460: ame_engine.getHandlerApprovalStatus(approverIn => extensionApprovers(extIndex));
461: /* If approver has a status of ame_util.approve or
462: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
463: if approver could have final authority */
464: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
465: ame_util.nullStatus)
458: groupOrChainIdIn => extensionApprovers(extIndex).group_or_chain_id);
459: extensionApprovers(extIndex).approval_status :=
460: ame_engine.getHandlerApprovalStatus(approverIn => extensionApprovers(extIndex));
461: /* If approver has a status of ame_util.approve or
462: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
463: if approver could have final authority */
464: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
465: ame_util.nullStatus)
466: then
460: ame_engine.getHandlerApprovalStatus(approverIn => extensionApprovers(extIndex));
461: /* If approver has a status of ame_util.approve or
462: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
463: if approver could have final authority */
464: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
465: ame_util.nullStatus)
466: then
467: if(not finalAuthorityFound and
468: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
461: /* If approver has a status of ame_util.approve or
462: ame_util.approveAndForwardStatus or ame_util.nullStatus check to see
463: if approver could have final authority */
464: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
465: ame_util.nullStatus)
466: then
467: if(not finalAuthorityFound and
468: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
469: finalAuthorityFound := true;
464: if extensionApprovers(extIndex).approval_status in (ame_util.approvedStatus, ame_util.approveAndForwardStatus,
465: ame_util.nullStatus)
466: then
467: if(not finalAuthorityFound and
468: tempHasFinalAuthorityYN = ame_util.booleanTrue) then
469: finalAuthorityFound := true;
470: tempOldJobLevel := tempJobLevel;
471: end if;
472: end if;
513: end loop;
514: exception
515: when badParameterException then
516: errorCode := -20001;
517: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
518: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
519: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
520: routineNameIn => 'handler',
521: exceptionNumberIn => errorCode,
515: when badParameterException then
516: errorCode := -20001;
517: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
518: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
519: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
520: routineNameIn => 'handler',
521: exceptionNumberIn => errorCode,
522: exceptionStringIn => errorMessage);
523: raise_application_error(errorCode,
523: raise_application_error(errorCode,
524: errorMessage);
525: when noSupervisorException then
526: errorCode := -20105;
527: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
528: messageNameIn => 'AME_400232_HAN_NO_SUPVSR_ID',
529: tokenNameOneIn => 'PERSON_ID',
530: tokenValueOneIn =>extensionApprovers(extIndex).orig_system_id);
531: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
527: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
528: messageNameIn => 'AME_400232_HAN_NO_SUPVSR_ID',
529: tokenNameOneIn => 'PERSON_ID',
530: tokenValueOneIn =>extensionApprovers(extIndex).orig_system_id);
531: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
532: routineNameIn => 'handler',
533: exceptionNumberIn => errorCode,
534: exceptionStringIn => errorMessage);
535: raise_application_error(errorCode,
536: errorMessage);
537: when nullFirstIdException then
538: errorCode := -20106;
539: errorMessage :=
540: ame_util.getMessage(applicationShortNameIn => 'PER',
541: messageNameIn => 'AME_400233_HAN_NO_TRANS_PER_ID');
542: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
543: routineNameIn => 'handler',
544: exceptionNumberIn => errorCode,
538: errorCode := -20106;
539: errorMessage :=
540: ame_util.getMessage(applicationShortNameIn => 'PER',
541: messageNameIn => 'AME_400233_HAN_NO_TRANS_PER_ID');
542: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
543: routineNameIn => 'handler',
544: exceptionNumberIn => errorCode,
545: exceptionStringIn => errorMessage);
546: raise_application_error(errorCode,
545: exceptionStringIn => errorMessage);
546: raise_application_error(errorCode,
547: errorMessage);
548: when others then
549: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
550: routineNameIn => 'handler',
551: exceptionNumberIn => sqlcode,
552: exceptionStringIn => sqlerrm);
553: l_error_code := sqlcode;
552: exceptionStringIn => sqlerrm);
553: l_error_code := sqlcode;
554: if l_error_code = -20213 then
555: if errorCode = 1 then
556: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
557: messageNameIn => 'AME_400833_INV_HANDLR_APR',
558: tokenNameOneIn => 'ACTION_TYPE_NAME',
559: tokenValueOneIn => ame_engine.getActionTypeId(actionTypeNameIn => ame_util.nonFinalAuthority),
560: tokenNameTwoIn => 'NAME',
555: if errorCode = 1 then
556: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
557: messageNameIn => 'AME_400833_INV_HANDLR_APR',
558: tokenNameOneIn => 'ACTION_TYPE_NAME',
559: tokenValueOneIn => ame_engine.getActionTypeId(actionTypeNameIn => ame_util.nonFinalAuthority),
560: tokenNameTwoIn => 'NAME',
561: tokenValueTwoIn => tempApprovers(tempIndex).name);
562: end if;
563: if errorCode = 2 then
560: tokenNameTwoIn => 'NAME',
561: tokenValueTwoIn => tempApprovers(tempIndex).name);
562: end if;
563: if errorCode = 2 then
564: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
565: messageNameIn => 'AME_400834_INV_HANDLR_APR',
566: tokenNameOneIn => 'ACTION_TYPE_NAME',
567: tokenValueOneIn => ame_engine.getActionTypeId(actionTypeNameIn => ame_util.nonFinalAuthority),
568: tokenNameTwoIn => 'ORIG_SYSTEM',
563: if errorCode = 2 then
564: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
565: messageNameIn => 'AME_400834_INV_HANDLR_APR',
566: tokenNameOneIn => 'ACTION_TYPE_NAME',
567: tokenValueOneIn => ame_engine.getActionTypeId(actionTypeNameIn => ame_util.nonFinalAuthority),
568: tokenNameTwoIn => 'ORIG_SYSTEM',
569: tokenValueTwoIn => ame_util.perOrigSystem,
570: tokenNameThreeIn => 'ORIG_SYSEM_ID',
571: tokenValueThreeIn => extensionApprovers(extIndex).orig_system_id);
565: messageNameIn => 'AME_400834_INV_HANDLR_APR',
566: tokenNameOneIn => 'ACTION_TYPE_NAME',
567: tokenValueOneIn => ame_engine.getActionTypeId(actionTypeNameIn => ame_util.nonFinalAuthority),
568: tokenNameTwoIn => 'ORIG_SYSTEM',
569: tokenValueTwoIn => ame_util.perOrigSystem,
570: tokenNameThreeIn => 'ORIG_SYSEM_ID',
571: tokenValueThreeIn => extensionApprovers(extIndex).orig_system_id);
572: end if;
573: errorCode := -20244;
575: raise_application_error(errorCode,errorMessage);
576: end if;
577: if l_error_code = -20204 then
578: errorCode := -20105;
579: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
580: messageNameIn => 'AME_400232_HAN_NO_SUPVSR_ID',
581: tokenNameOneIn => 'PERSON_ID',
582: tokenValueOneIn =>extensionApprovers(extIndex).orig_system_id);
583: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
579: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
580: messageNameIn => 'AME_400232_HAN_NO_SUPVSR_ID',
581: tokenNameOneIn => 'PERSON_ID',
582: tokenValueOneIn =>extensionApprovers(extIndex).orig_system_id);
583: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
584: routineNameIn => 'handler',
585: exceptionNumberIn => errorCode,
586: exceptionStringIn => errorMessage);
587: raise_application_error(errorCode,
591: end handler;
592: procedure parseAndSortRules is
593: badParameterException exception;
594: errorCode integer;
595: errorMessage ame_util.longestStringType;
596: tempCategory ame_util.charType;
597: tempLength integer;
598: tempNumber integer;
599: tempRuleId integer;
592: procedure parseAndSortRules is
593: badParameterException exception;
594: errorCode integer;
595: errorMessage ame_util.longestStringType;
596: tempCategory ame_util.charType;
597: tempLength integer;
598: tempNumber integer;
599: tempRuleId integer;
600: tempRuleIndex integer;
597: tempLength integer;
598: tempNumber integer;
599: tempRuleId integer;
600: tempRuleIndex integer;
601: tempSign ame_util.charType;
602: upperLimit integer;
603: begin
604: parametersCount := parameters.count;
605: /* Parse. */
642: end loop;
643: exception
644: when badParameterException then
645: errorCode := -20001;
646: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
647: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
648: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
649: routineNameIn => 'parseAndSortRules',
650: exceptionNumberIn => errorCode,
644: when badParameterException then
645: errorCode := -20001;
646: errorMessage := ame_util.getMessage(applicationShortNameIn => 'PER',
647: messageNameIn => 'AME_400234_HAN_ACT_PAR_SIGN');
648: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
649: routineNameIn => 'parseAndSortRules',
650: exceptionNumberIn => errorCode,
651: exceptionStringIn => errorMessage);
652: raise_application_error(errorCode,
651: exceptionStringIn => errorMessage);
652: raise_application_error(errorCode,
653: errorMessage);
654: when others then
655: ame_util.runtimeException(packageNameIn => 'ame_non_final_handler',
656: routineNameIn => 'parseAndSortRules',
657: exceptionNumberIn => sqlcode,
658: exceptionStringIn => sqlerrm);
659: raise;