9: begin
10: return(ame_api3.getRuleDescription(ruleIdIn => ruleIdIn));
11: exception
12: when others then
13: ame_util.runtimeException(packageNameIn => 'ame_api',
14: routineNameIn => 'getRuleDescription',
15: exceptionNumberIn => sqlcode,
16: exceptionStringIn => sqlerrm);
17: raise;
16: exceptionStringIn => sqlerrm);
17: raise;
18: return(null);
19: end getRuleDescription;
20: function validateApprover(approverIn in ame_util.approverRecord) return boolean as
21: approver ame_util.approverRecord2;
22: begin
23: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
24: itemIdIn=> null,
17: raise;
18: return(null);
19: end getRuleDescription;
20: function validateApprover(approverIn in ame_util.approverRecord) return boolean as
21: approver ame_util.approverRecord2;
22: begin
23: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
24: itemIdIn=> null,
25: approverRecord2Out =>approver);
19: end getRuleDescription;
20: function validateApprover(approverIn in ame_util.approverRecord) return boolean as
21: approver ame_util.approverRecord2;
22: begin
23: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
24: itemIdIn=> null,
25: approverRecord2Out =>approver);
26: if approver.name is null then
27: return(false);
29: return(ame_api2.validateApprover(approverIn=>approver));
30: end if;
31: exception
32: when others then
33: ame_util.runtimeException(packageNameIn => 'ame_api',
34: routineNameIn => 'validateApprover',
35: exceptionNumberIn => sqlcode,
36: exceptionStringIn => sqlerrm);
37: raise;
45: tempNum number;
46: parallelizationFoundException exception;
47: ameApplicationId integer;
48: errorCode integer;
49: errorMessage ame_util.longestStringType;
50: itemClassId number;
51: tempAMEObject varchar2(100);
52: --+
53: cursor chkItemClassNonSerialPar(applicationIdIn in number,
55: select 'Y'
56: from ame_item_class_usages
57: where application_id = applicationIdIn
58: and item_class_id = itemClassIdIn
59: and item_class_sublist_mode <> ame_util.serialSublists
60: and sysdate between start_date and
61: nvl(end_date - ame_util.oneSecond, sysdate);
62: --+
63: cursor chkItemClassNonUniqueOrder(applicationIdIn in number) is
57: where application_id = applicationIdIn
58: and item_class_id = itemClassIdIn
59: and item_class_sublist_mode <> ame_util.serialSublists
60: and sysdate between start_date and
61: nvl(end_date - ame_util.oneSecond, sysdate);
62: --+
63: cursor chkItemClassNonUniqueOrder(applicationIdIn in number) is
64: select 'Y'
65: from (select (count(item_class_order_number) - count(distinct item_class_order_number)) uniq
65: from (select (count(item_class_order_number) - count(distinct item_class_order_number)) uniq
66: from ame_item_class_usages
67: where application_id = applicationIdIn
68: and sysdate between start_date and
69: nvl(end_date - ame_util.oneSecond, sysdate)
70: )
71: where uniq <> 0;
72: --+
73: cursor chkActionTypeNonSerialPar(applicationIdIn in number) is
73: cursor chkActionTypeNonSerialPar(applicationIdIn in number) is
74: select 'Y'
75: from ame_action_type_config
76: where application_id = applicationIdIn
77: and (chain_ordering_mode <> ame_util.serialChainsMode
78: or ( voting_regime is not null and
79: voting_regime <> ame_util.serializedVoting
80: )
81: )
75: from ame_action_type_config
76: where application_id = applicationIdIn
77: and (chain_ordering_mode <> ame_util.serialChainsMode
78: or ( voting_regime is not null and
79: voting_regime <> ame_util.serializedVoting
80: )
81: )
82: and sysdate between start_date and
83: nvl(end_date - ame_util.oneSecond, sysdate);
79: voting_regime <> ame_util.serializedVoting
80: )
81: )
82: and sysdate between start_date and
83: nvl(end_date - ame_util.oneSecond, sysdate);
84: --+
85: cursor chkActionTypeNonUniqueOrder(applicationIdIn in number) is
86: select 'Y'
87: from (select distinct (count(order_number) - count(distinct order_number)) uniq
89: ame_action_type_usages axu
90: where acf.application_id = applicationIdIn
91: and acf.action_type_id = axu.action_type_id
92: and sysdate between acf.start_date and
93: nvl(acf.end_Date - ame_util.oneSecond, sysdate)
94: and sysdate between axu.start_date and
95: nvl(axu.end_Date - ame_util.oneSecond, sysdate)
96: group by rule_type
97: )
91: and acf.action_type_id = axu.action_type_id
92: and sysdate between acf.start_date and
93: nvl(acf.end_Date - ame_util.oneSecond, sysdate)
94: and sysdate between axu.start_date and
95: nvl(axu.end_Date - ame_util.oneSecond, sysdate)
96: group by rule_type
97: )
98: where uniq <> 0;
99: --+
100: cursor chkApprovalGrpNonSerialPar(applicationIdIn in number) is
101: select 'Y'
102: from ame_approval_group_config
103: where application_id = applicationIdIn
104: and (voting_regime = ame_util.consensusVoting
105: or voting_regime = ame_util.firstApproverVoting)
106: and sysdate between start_date and
107: nvl(end_date - ame_util.oneSecond, sysdate);
108: --+
101: select 'Y'
102: from ame_approval_group_config
103: where application_id = applicationIdIn
104: and (voting_regime = ame_util.consensusVoting
105: or voting_regime = ame_util.firstApproverVoting)
106: and sysdate between start_date and
107: nvl(end_date - ame_util.oneSecond, sysdate);
108: --+
109: cursor chkApprovalGrpNonUniqueOrder(applicationIdIn in number) is
103: where application_id = applicationIdIn
104: and (voting_regime = ame_util.consensusVoting
105: or voting_regime = ame_util.firstApproverVoting)
106: and sysdate between start_date and
107: nvl(end_date - ame_util.oneSecond, sysdate);
108: --+
109: cursor chkApprovalGrpNonUniqueOrder(applicationIdIn in number) is
110: select 'Y'
111: from (select (count(order_number) - count(distinct order_number)) uniq
111: from (select (count(order_number) - count(distinct order_number)) uniq
112: from ame_approval_group_config
113: where application_id = applicationIdIn
114: and sysdate between start_date and
115: nvl(end_date - ame_util.oneSecond, sysdate)
116: )
117: where uniq <> 0;
118: --+
119: cursor chkApprovalGrpMemberOrder(applicationIdIn in number) is
120: select gpi.approval_group_id group_id
121: from ame_approval_groups apg,
122: ame_approval_group_config gcf,
123: ame_approval_group_items gpi
124: where apg.is_static = ame_util.booleanTrue
125: and gcf.application_id = applicationIdIn
126: and gcf.approval_group_id = apg.approval_group_id
127: and gcf.voting_regime = ame_util.orderNumberVoting
128: and gpi.approval_group_id = apg.approval_group_id
123: ame_approval_group_items gpi
124: where apg.is_static = ame_util.booleanTrue
125: and gcf.application_id = applicationIdIn
126: and gcf.approval_group_id = apg.approval_group_id
127: and gcf.voting_regime = ame_util.orderNumberVoting
128: and gpi.approval_group_id = apg.approval_group_id
129: and sysdate between apg.start_date and
130: nvl(apg.end_date - ame_util.oneSecond, sysdate)
131: and sysdate between gcf.start_date and
126: and gcf.approval_group_id = apg.approval_group_id
127: and gcf.voting_regime = ame_util.orderNumberVoting
128: and gpi.approval_group_id = apg.approval_group_id
129: and sysdate between apg.start_date and
130: nvl(apg.end_date - ame_util.oneSecond, sysdate)
131: and sysdate between gcf.start_date and
132: nvl(gcf.end_date - ame_util.oneSecond, sysdate)
133: and sysdate between gpi.start_date and
134: nvl(gpi.end_date - ame_util.oneSecond, sysdate)
128: and gpi.approval_group_id = apg.approval_group_id
129: and sysdate between apg.start_date and
130: nvl(apg.end_date - ame_util.oneSecond, sysdate)
131: and sysdate between gcf.start_date and
132: nvl(gcf.end_date - ame_util.oneSecond, sysdate)
133: and sysdate between gpi.start_date and
134: nvl(gpi.end_date - ame_util.oneSecond, sysdate)
135: group by(gpi.approval_group_id)
136: having (count(gpi.order_number) - count(distinct gpi.order_number)) <> 0;
130: nvl(apg.end_date - ame_util.oneSecond, sysdate)
131: and sysdate between gcf.start_date and
132: nvl(gcf.end_date - ame_util.oneSecond, sysdate)
133: and sysdate between gpi.start_date and
134: nvl(gpi.end_date - ame_util.oneSecond, sysdate)
135: group by(gpi.approval_group_id)
136: having (count(gpi.order_number) - count(distinct gpi.order_number)) <> 0;
137: --+
138: cursor chkGrpActionInCurrentTxn(groupIdIn in varchar2
162: --Do not check item_class_par_mode for header item class since it will always have 1 item.
163: --Do not check usages for other item classes since we throw error if allowAllItemClasses
164: --is true in one of the checks below.
165: --+
166: itemClassId := ame_admin_pkg.getItemClassIdByName(ame_util.headerItemClassName);
167: tempAMEObject := 'Item class non serail mode';
168: open chkItemClassNonSerialPar(applicationIdIn => ameApplicationId,
169: itemClassIdIn => itemClassId);
170: fetch chkItemClassNonSerialPar into tempChar;
256: --The following checks ensure that allowAllItemClasses, allowAllItemClassRules,
257: --allowAllApproverTypes, productionFunctionality are turned off.
258: --+
259: tempAMEObject := 'AME config vars, allowAllRuleConfigvar';
260: if(ame_util.getConfigVar(variableNameIn => ame_util.allowAllICRulesConfigVar,
261: applicationIdIn => ameApplicationId)
262: = ame_util.yes) then
263: raise parallelizationFoundException;
264: end if;
258: --+
259: tempAMEObject := 'AME config vars, allowAllRuleConfigvar';
260: if(ame_util.getConfigVar(variableNameIn => ame_util.allowAllICRulesConfigVar,
261: applicationIdIn => ameApplicationId)
262: = ame_util.yes) then
263: raise parallelizationFoundException;
264: end if;
265: --+
266: tempAMEObject := 'AME config vars, fyi notification';
263: raise parallelizationFoundException;
264: end if;
265: --+
266: tempAMEObject := 'AME config vars, fyi notification';
267: if(ame_util.getConfigVar(variableNameIn => ame_util.allowFyiNotificationsConfigVar,
268: applicationIdIn => ameApplicationId)
269: = ame_util.yes) then
270: raise parallelizationFoundException;
271: end if;
265: --+
266: tempAMEObject := 'AME config vars, fyi notification';
267: if(ame_util.getConfigVar(variableNameIn => ame_util.allowFyiNotificationsConfigVar,
268: applicationIdIn => ameApplicationId)
269: = ame_util.yes) then
270: raise parallelizationFoundException;
271: end if;
272: --+
273: tempAMEObject := 'AME config vars allow all approver types';
270: raise parallelizationFoundException;
271: end if;
272: --+
273: tempAMEObject := 'AME config vars allow all approver types';
274: if(ame_util.getConfigVar(variableNameIn => ame_util.allowAllApproverTypesConfigVar,
275: applicationIdIn => ameApplicationId)
276: = ame_util.yes) then
277: raise parallelizationFoundException;
278: end if;
272: --+
273: tempAMEObject := 'AME config vars allow all approver types';
274: if(ame_util.getConfigVar(variableNameIn => ame_util.allowAllApproverTypesConfigVar,
275: applicationIdIn => ameApplicationId)
276: = ame_util.yes) then
277: raise parallelizationFoundException;
278: end if;
279: --+
280: tempAMEObject := 'AME config vars, production rules';
277: raise parallelizationFoundException;
278: end if;
279: --+
280: tempAMEObject := 'AME config vars, production rules';
281: if(ame_util.getConfigVar(variableNameIn => ame_util.productionConfigVar,
282: applicationIdIn => ameApplicationId)
283: <> ame_util.noProductions) then
284: raise parallelizationFoundException;
285: end if;
279: --+
280: tempAMEObject := 'AME config vars, production rules';
281: if(ame_util.getConfigVar(variableNameIn => ame_util.productionConfigVar,
282: applicationIdIn => ameApplicationId)
283: <> ame_util.noProductions) then
284: raise parallelizationFoundException;
285: end if;
286: --+
287: exception
286: --+
287: exception
288: when parallelizationFoundException then
289: errorCode := -20001;
290: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
291: messageNameIn => 'AME_400679_API_PARALLEL_CONFIG');
292: ame_util.runtimeException(packageNameIn => 'ame_api',
293: routineNameIn => 'check11510',
294: exceptionNumberIn => errorCode,
288: when parallelizationFoundException then
289: errorCode := -20001;
290: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
291: messageNameIn => 'AME_400679_API_PARALLEL_CONFIG');
292: ame_util.runtimeException(packageNameIn => 'ame_api',
293: routineNameIn => 'check11510',
294: exceptionNumberIn => errorCode,
295: exceptionStringIn => 'ameApplicationId:'||ameApplicationId||
296: ':'||tempAMEObject||':'||errorMessage);
296: ':'||tempAMEObject||':'||errorMessage);
297: raise_application_error(errorCode,
298: errorMessage);
299: when others then
300: ame_util.runtimeException(packageNameIn => 'ame_api',
301: routineNameIn => 'check11510',
302: exceptionNumberIn => sqlcode,
303: exceptionStringIn => sqlerrm);
304: raise;
313: transactionIdIn => transactionIdIn,
314: transactionTypeIn => transactionTypeIn);
315: exception
316: when others then
317: ame_util.runtimeException(packageNameIn => 'ame_api',
318: routineNameIn => 'clearAllApprovals',
319: exceptionNumberIn => sqlcode,
320: exceptionStringIn => sqlerrm);
321: raise;
319: exceptionNumberIn => sqlcode,
320: exceptionStringIn => sqlerrm);
321: raise;
322: end clearAllApprovals;
323: procedure clearDeletion(approverIn in ame_util.approverRecord,
324: applicationIdIn in integer,
325: transactionIdIn in varchar2,
326: transactionTypeIn in varchar2 default null) as
327: approver ame_util.approverRecord2;
323: procedure clearDeletion(approverIn in ame_util.approverRecord,
324: applicationIdIn in integer,
325: transactionIdIn in varchar2,
326: transactionTypeIn in varchar2 default null) as
327: approver ame_util.approverRecord2;
328: begin
329: check11510(applicationIdIn => applicationIdIn,
330: transactionTypeIn => transactionTypeIn);
331: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
327: approver ame_util.approverRecord2;
328: begin
329: check11510(applicationIdIn => applicationIdIn,
330: transactionTypeIn => transactionTypeIn);
331: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
332: itemIdIn => transactionIdIn,
333: approverRecord2Out =>approver);
334: ame_api3.clearSuppression(approverIn => approver,
335: applicationIdIn => applicationIdIn,
336: transactionIdIn => transactionIdIn,
337: transactionTypeIn => transactionTypeIn);
338: exception
339: when others then
340: ame_util.runtimeException(packageNameIn => 'ame_api',
341: routineNameIn => 'clearDeletion',
342: exceptionNumberIn => sqlcode,
343: exceptionStringIn => sqlerrm);
344: raise;
353: transactionIdIn => transactionIdIn,
354: transactionTypeIn => transactionTypeIn);
355: exception
356: when others then
357: ame_util.runtimeException(packageNameIn => 'ame_api',
358: routineNameIn => 'clearDeletions',
359: exceptionNumberIn => sqlcode,
360: exceptionStringIn => sqlerrm);
361: raise;
359: exceptionNumberIn => sqlcode,
360: exceptionStringIn => sqlerrm);
361: raise;
362: end clearDeletions;
363: procedure clearInsertion(approverIn in ame_util.approverRecord,
364: applicationIdIn in integer,
365: transactionIdIn in varchar2,
366: transactionTypeIn in varchar2 default null) as
367: approver ame_util.approverRecord2;
363: procedure clearInsertion(approverIn in ame_util.approverRecord,
364: applicationIdIn in integer,
365: transactionIdIn in varchar2,
366: transactionTypeIn in varchar2 default null) as
367: approver ame_util.approverRecord2;
368: begin
369: check11510(applicationIdIn => applicationIdIn,
370: transactionTypeIn => transactionTypeIn);
371: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
367: approver ame_util.approverRecord2;
368: begin
369: check11510(applicationIdIn => applicationIdIn,
370: transactionTypeIn => transactionTypeIn);
371: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
372: itemIdIn => transactionIdIn,
373: approverRecord2Out =>approver);
374: ame_api3.clearInsertion(approverIn => approver,
375: applicationIdIn => applicationIdIn,
376: transactionIdIn => transactionIdIn,
377: transactionTypeIn => transactionTypeIn);
378: exception
379: when others then
380: ame_util.runtimeException(packageNameIn => 'ame_api',
381: routineNameIn => 'clearInsertion',
382: exceptionNumberIn => sqlcode,
383: exceptionStringIn => sqlerrm);
384: raise;
393: transactionIdIn => transactionIdIn,
394: transactionTypeIn => transactionTypeIn);
395: exception
396: when others then
397: ame_util.runtimeException(packageNameIn => 'ame_api',
398: routineNameIn => 'clearInsertions',
399: exceptionNumberIn => sqlcode,
400: exceptionStringIn => sqlerrm);
401: raise;
401: raise;
402: end clearInsertions;
403: procedure deleteApprover(applicationIdIn in integer,
404: transactionIdIn in varchar2,
405: approverIn in ame_util.approverRecord,
406: transactionTypeIn in varchar2 default null) as
407: approver ame_util.approverRecord2;
408: approvers ame_util.approversTable2;
409: approverIndex integer;
403: procedure deleteApprover(applicationIdIn in integer,
404: transactionIdIn in varchar2,
405: approverIn in ame_util.approverRecord,
406: transactionTypeIn in varchar2 default null) as
407: approver ame_util.approverRecord2;
408: approvers ame_util.approversTable2;
409: approverIndex integer;
410: errorCode integer;
411: errorMessage ame_util.longStringType;
404: transactionIdIn in varchar2,
405: approverIn in ame_util.approverRecord,
406: transactionTypeIn in varchar2 default null) as
407: approver ame_util.approverRecord2;
408: approvers ame_util.approversTable2;
409: approverIndex integer;
410: errorCode integer;
411: errorMessage ame_util.longStringType;
412: noMatchException exception;
407: approver ame_util.approverRecord2;
408: approvers ame_util.approversTable2;
409: approverIndex integer;
410: errorCode integer;
411: errorMessage ame_util.longStringType;
412: noMatchException exception;
413: begin
414: check11510(applicationIdIn => applicationIdIn,
415: transactionTypeIn => transactionTypeIn);
412: noMatchException exception;
413: begin
414: check11510(applicationIdIn => applicationIdIn,
415: transactionTypeIn => transactionTypeIn);
416: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
417: itemIdIn => transactionIdIn,
418: approverRecord2Out =>approver);
419: if (approver.action_type_id is null or
420: approver.group_or_chain_id is null or
447: approverIndex := null;
448: for i in 1 .. approvers.count loop
449: if((approvers(i).approval_status is null or
450: approvers(i).approval_status in
451: (ame_util.exceptionStatus,
452: ame_util.notifiedStatus,
453: ame_util.noResponseStatus,
454: ame_util.rejectStatus)) and
455: approver.name = approvers(i).name) then
448: for i in 1 .. approvers.count loop
449: if((approvers(i).approval_status is null or
450: approvers(i).approval_status in
451: (ame_util.exceptionStatus,
452: ame_util.notifiedStatus,
453: ame_util.noResponseStatus,
454: ame_util.rejectStatus)) and
455: approver.name = approvers(i).name) then
456: approverIndex := i;
449: if((approvers(i).approval_status is null or
450: approvers(i).approval_status in
451: (ame_util.exceptionStatus,
452: ame_util.notifiedStatus,
453: ame_util.noResponseStatus,
454: ame_util.rejectStatus)) and
455: approver.name = approvers(i).name) then
456: approverIndex := i;
457: exit;
450: approvers(i).approval_status in
451: (ame_util.exceptionStatus,
452: ame_util.notifiedStatus,
453: ame_util.noResponseStatus,
454: ame_util.rejectStatus)) and
455: approver.name = approvers(i).name) then
456: approverIndex := i;
457: exit;
458: end if;
471: transactionTypeIn => transactionTypeIn);
472: exception
473: when noMatchException then
474: errorCode := -20302;
475: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
476: messageNameIn => 'AME_400237_API_NO MATCH_APPR');
477: ame_util.runtimeException(packageNameIn => 'ame_api',
478: routineNameIn => 'deleteApprover',
479: exceptionNumberIn => errorCode,
473: when noMatchException then
474: errorCode := -20302;
475: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
476: messageNameIn => 'AME_400237_API_NO MATCH_APPR');
477: ame_util.runtimeException(packageNameIn => 'ame_api',
478: routineNameIn => 'deleteApprover',
479: exceptionNumberIn => errorCode,
480: exceptionStringIn => errorMessage);
481: raise_application_error(errorCode,
480: exceptionStringIn => errorMessage);
481: raise_application_error(errorCode,
482: errorMessage);
483: when others then
484: ame_util.runtimeException(packageNameIn => 'ame_api',
485: routineNameIn => 'deleteApprover',
486: exceptionNumberIn => sqlcode,
487: exceptionStringIn => sqlerrm);
488: raise;
488: raise;
489: end deleteApprover;
490: procedure deleteApprovers(applicationIdIn in integer,
491: transactionIdIn in varchar2,
492: approversIn in ame_util.approversTable,
493: transactionTypeIn in varchar2 default null) as
494: currentApproverInIndex integer;
495: lastApproverInIndex integer;
496: nextApproverInIndex integer;
514: currentApproverInIndex := approversIn.next(currentApproverInIndex);
515: end loop;
516: exception
517: when others then
518: ame_util.runtimeException(packageNameIn => 'ame_api',
519: routineNameIn => 'deleteApprovers',
520: exceptionNumberIn => sqlcode,
521: exceptionStringIn => sqlerrm);
522: raise;
522: raise;
523: end deleteApprovers;
524: procedure getAdminApprover(applicationIdIn in integer default null,
525: transactionTypeIn in varchar2 default null,
526: adminApproverOut out nocopy ame_util.approverRecord) as
527: adminApprover ame_util.approverRecord2;
528: begin
529: ame_api2.getAdminApprover(applicationIdIn => applicationIdIn,
530: transactionTypeIn => transactionTypeIn,
523: end deleteApprovers;
524: procedure getAdminApprover(applicationIdIn in integer default null,
525: transactionTypeIn in varchar2 default null,
526: adminApproverOut out nocopy ame_util.approverRecord) as
527: adminApprover ame_util.approverRecord2;
528: begin
529: ame_api2.getAdminApprover(applicationIdIn => applicationIdIn,
530: transactionTypeIn => transactionTypeIn,
531: adminApproverOut => adminApprover);
531: adminApproverOut => adminApprover);
532: if adminApprover.name is null then
533: return;
534: else
535: ame_util.apprRecord2ToApprRecord(approverRecord2In => adminApprover,
536: approverRecordOut => adminApproverOut);
537: end if;
538: exception
539: when others then
536: approverRecordOut => adminApproverOut);
537: end if;
538: exception
539: when others then
540: ame_util.runtimeException(packageNameIn => 'ame_api',
541: routineNameIn => 'getAdminApprover',
542: exceptionNumberIn => sqlcode,
543: exceptionStringIn => sqlerrm);
544: raise;
545: end getAdminApprover;
546: procedure getAllApprovers(applicationIdIn in integer,
547: transactionIdIn in varchar2,
548: transactionTypeIn in varchar2 default null,
549: approversOut out nocopy ame_util.approversTable) as
550: approvalProcessCompleteYN ame_util.charType;
551: approvers ame_util.approversTable2;
552: tempCount integer;
553: begin
546: procedure getAllApprovers(applicationIdIn in integer,
547: transactionIdIn in varchar2,
548: transactionTypeIn in varchar2 default null,
549: approversOut out nocopy ame_util.approversTable) as
550: approvalProcessCompleteYN ame_util.charType;
551: approvers ame_util.approversTable2;
552: tempCount integer;
553: begin
554: check11510(applicationIdIn => applicationIdIn,
547: transactionIdIn in varchar2,
548: transactionTypeIn in varchar2 default null,
549: approversOut out nocopy ame_util.approversTable) as
550: approvalProcessCompleteYN ame_util.charType;
551: approvers ame_util.approversTable2;
552: tempCount integer;
553: begin
554: check11510(applicationIdIn => applicationIdIn,
555: transactionTypeIn => transactionTypeIn);
557: transactionTypeIn => transactionTypeIn,
558: transactionIdIn => transactionIdIn,
559: approvalProcessCompleteYNOut => approvalProcessCompleteYN,
560: approversOut => approvers);
561: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
562: approversTableOut => approversOut);
563: exception
564: when others then
565: ame_util.runtimeException(packageNameIn => 'ame_api',
561: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
562: approversTableOut => approversOut);
563: exception
564: when others then
565: ame_util.runtimeException(packageNameIn => 'ame_api',
566: routineNameIn => 'getAllApprovers',
567: exceptionNumberIn => sqlcode,
568: exceptionStringIn => sqlerrm);
569: approversOut.delete;
566: routineNameIn => 'getAllApprovers',
567: exceptionNumberIn => sqlcode,
568: exceptionStringIn => sqlerrm);
569: approversOut.delete;
570: approversOut(1) := ame_util.emptyApproverRecord;
571: getAdminApprover(applicationIdIn => applicationIdIn,
572: transactionTypeIn => transactionTypeIn,
573: adminApproverOut => approversOut(1));
574: raise;
575: end getAllApprovers;
576: procedure getAndRecordAllApprovers(applicationIdIn in integer,
577: transactionIdIn in varchar2,
578: transactionTypeIn in varchar2 default null,
579: approversOut out nocopy ame_util.approversTable) as
580: approvalProcessCompleteYN ame_util.charType;
581: approvers ame_util.approversTable2;
582: itemClasses ame_util.stringList;
583: itemIndexes ame_util.idList;
576: procedure getAndRecordAllApprovers(applicationIdIn in integer,
577: transactionIdIn in varchar2,
578: transactionTypeIn in varchar2 default null,
579: approversOut out nocopy ame_util.approversTable) as
580: approvalProcessCompleteYN ame_util.charType;
581: approvers ame_util.approversTable2;
582: itemClasses ame_util.stringList;
583: itemIndexes ame_util.idList;
584: itemIds ame_util.stringList;
577: transactionIdIn in varchar2,
578: transactionTypeIn in varchar2 default null,
579: approversOut out nocopy ame_util.approversTable) as
580: approvalProcessCompleteYN ame_util.charType;
581: approvers ame_util.approversTable2;
582: itemClasses ame_util.stringList;
583: itemIndexes ame_util.idList;
584: itemIds ame_util.stringList;
585: itemSources ame_util.longStringList;
578: transactionTypeIn in varchar2 default null,
579: approversOut out nocopy ame_util.approversTable) as
580: approvalProcessCompleteYN ame_util.charType;
581: approvers ame_util.approversTable2;
582: itemClasses ame_util.stringList;
583: itemIndexes ame_util.idList;
584: itemIds ame_util.stringList;
585: itemSources ame_util.longStringList;
586: begin
579: approversOut out nocopy ame_util.approversTable) as
580: approvalProcessCompleteYN ame_util.charType;
581: approvers ame_util.approversTable2;
582: itemClasses ame_util.stringList;
583: itemIndexes ame_util.idList;
584: itemIds ame_util.stringList;
585: itemSources ame_util.longStringList;
586: begin
587: check11510(applicationIdIn => applicationIdIn,
580: approvalProcessCompleteYN ame_util.charType;
581: approvers ame_util.approversTable2;
582: itemClasses ame_util.stringList;
583: itemIndexes ame_util.idList;
584: itemIds ame_util.stringList;
585: itemSources ame_util.longStringList;
586: begin
587: check11510(applicationIdIn => applicationIdIn,
588: transactionTypeIn => transactionTypeIn);
581: approvers ame_util.approversTable2;
582: itemClasses ame_util.stringList;
583: itemIndexes ame_util.idList;
584: itemIds ame_util.stringList;
585: itemSources ame_util.longStringList;
586: begin
587: check11510(applicationIdIn => applicationIdIn,
588: transactionTypeIn => transactionTypeIn);
589: ame_api2.getAndRecordAllApprovers(applicationIdIn => applicationIdIn,
594: itemIndexesOut => itemIndexes,
595: itemClassesOut => itemClasses,
596: itemIdsOut => itemIds,
597: itemSourcesOut => itemSources);
598: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
599: approversTableOut => approversOut);
600: exception
601: when others then
602: ame_util.runtimeException(packageNameIn => 'ame_api',
598: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
599: approversTableOut => approversOut);
600: exception
601: when others then
602: ame_util.runtimeException(packageNameIn => 'ame_api',
603: routineNameIn => 'getAndRecordAllApprovers',
604: exceptionNumberIn => sqlcode,
605: exceptionStringIn => sqlerrm);
606: approversOut.delete;
611: end getAndRecordAllApprovers;
612: procedure getApplicableRules1(applicationIdIn in integer,
613: transactionIdIn in varchar2,
614: transactionTypeIn in varchar2 default null,
615: ruleIdsOut out nocopy ame_util.idList) as
616: begin
617: check11510(applicationIdIn => applicationIdIn,
618: transactionTypeIn => transactionTypeIn);
619: ame_api3.getApplicableRules1(applicationIdIn => applicationIdIn,
621: transactionTypeIn => transactionTypeIn,
622: ruleIdsOut => ruleIdsOut);
623: exception
624: when others then
625: ame_util.runtimeException(packageNameIn => 'ame_api',
626: routineNameIn => 'getApplicableRules1',
627: exceptionNumberIn => sqlcode,
628: exceptionStringIn => sqlerrm);
629: raise;
630: end getApplicableRules1;
631: procedure getApplicableRules2(applicationIdIn in integer,
632: transactionIdIn in varchar2,
633: transactionTypeIn in varchar2 default null,
634: ruleDescriptionsOut out nocopy ame_util.stringList) as
635: begin
636: check11510(applicationIdIn => applicationIdIn,
637: transactionTypeIn => transactionTypeIn);
638: ame_api3.getApplicableRules2(applicationIdIn => applicationIdIn,
640: transactionTypeIn => transactionTypeIn,
641: ruleDescriptionsOut => ruleDescriptionsOut);
642: exception
643: when others then
644: ame_util.runtimeException(packageNameIn => 'ame_api',
645: routineNameIn => 'getApplicableRules2',
646: exceptionNumberIn => sqlcode,
647: exceptionStringIn => sqlerrm);
648: raise;
649: end getApplicableRules2;
650: procedure getApplicableRules3(applicationIdIn in integer,
651: transactionIdIn in varchar2,
652: transactionTypeIn in varchar2 default null,
653: ruleIdsOut out nocopy ame_util.idList,
654: ruleDescriptionsOut out nocopy ame_util.stringList) as
655: begin
656: check11510(applicationIdIn => applicationIdIn,
657: transactionTypeIn => transactionTypeIn);
650: procedure getApplicableRules3(applicationIdIn in integer,
651: transactionIdIn in varchar2,
652: transactionTypeIn in varchar2 default null,
653: ruleIdsOut out nocopy ame_util.idList,
654: ruleDescriptionsOut out nocopy ame_util.stringList) as
655: begin
656: check11510(applicationIdIn => applicationIdIn,
657: transactionTypeIn => transactionTypeIn);
658: ame_api3.getApplicableRules3(applicationIdIn => applicationIdIn,
661: ruleIdsOut => ruleIdsOut,
662: ruleDescriptionsOut => ruleDescriptionsOut);
663: exception
664: when others then
665: ame_util.runtimeException(packageNameIn => 'ame_api',
666: routineNameIn => 'getApplicableRules3',
667: exceptionNumberIn => sqlcode,
668: exceptionStringIn => sqlerrm);
669: raise;
670: end getApplicableRules3;
671: procedure getApproversAndRules1(applicationIdIn in integer,
672: transactionIdIn in varchar2,
673: transactionTypeIn in varchar2 default null,
674: approversOut out nocopy ame_util.approversTable,
675: ruleIdsOut out nocopy ame_util.idList) as
676: approvalProcessCompleteYN ame_util.charType;
677: approvers ame_util.approversTable2;
678: begin
671: procedure getApproversAndRules1(applicationIdIn in integer,
672: transactionIdIn in varchar2,
673: transactionTypeIn in varchar2 default null,
674: approversOut out nocopy ame_util.approversTable,
675: ruleIdsOut out nocopy ame_util.idList) as
676: approvalProcessCompleteYN ame_util.charType;
677: approvers ame_util.approversTable2;
678: begin
679: check11510(applicationIdIn => applicationIdIn,
672: transactionIdIn in varchar2,
673: transactionTypeIn in varchar2 default null,
674: approversOut out nocopy ame_util.approversTable,
675: ruleIdsOut out nocopy ame_util.idList) as
676: approvalProcessCompleteYN ame_util.charType;
677: approvers ame_util.approversTable2;
678: begin
679: check11510(applicationIdIn => applicationIdIn,
680: transactionTypeIn => transactionTypeIn);
673: transactionTypeIn in varchar2 default null,
674: approversOut out nocopy ame_util.approversTable,
675: ruleIdsOut out nocopy ame_util.idList) as
676: approvalProcessCompleteYN ame_util.charType;
677: approvers ame_util.approversTable2;
678: begin
679: check11510(applicationIdIn => applicationIdIn,
680: transactionTypeIn => transactionTypeIn);
681: ame_api2.getAllApprovers7(applicationIdIn => applicationIdIn,
686: ame_api3.getApplicableRules1(applicationIdIn => applicationIdIn,
687: transactionIdIn => transactionIdIn,
688: transactionTypeIn => transactionTypeIn,
689: ruleIdsOut => ruleIdsOut);
690: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
691: approversTableOut => approversOut);
692: exception
693: when others then
694: ame_util.runtimeException(packageNameIn => 'ame_api',
690: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
691: approversTableOut => approversOut);
692: exception
693: when others then
694: ame_util.runtimeException(packageNameIn => 'ame_api',
695: routineNameIn => 'getApproversAndRules1',
696: exceptionNumberIn => sqlcode,
697: exceptionStringIn => sqlerrm);
698: approversOut.delete;
704: end getApproversAndRules1;
705: procedure getApproversAndRules2(applicationIdIn in integer,
706: transactionIdIn in varchar2,
707: transactionTypeIn in varchar2 default null,
708: approversOut out nocopy ame_util.approversTable,
709: ruleDescriptionsOut out nocopy ame_util.stringList) as
710: approvalProcessCompleteYN ame_util.charType;
711: approvers ame_util.approversTable2;
712: begin
705: procedure getApproversAndRules2(applicationIdIn in integer,
706: transactionIdIn in varchar2,
707: transactionTypeIn in varchar2 default null,
708: approversOut out nocopy ame_util.approversTable,
709: ruleDescriptionsOut out nocopy ame_util.stringList) as
710: approvalProcessCompleteYN ame_util.charType;
711: approvers ame_util.approversTable2;
712: begin
713: check11510(applicationIdIn => applicationIdIn,
706: transactionIdIn in varchar2,
707: transactionTypeIn in varchar2 default null,
708: approversOut out nocopy ame_util.approversTable,
709: ruleDescriptionsOut out nocopy ame_util.stringList) as
710: approvalProcessCompleteYN ame_util.charType;
711: approvers ame_util.approversTable2;
712: begin
713: check11510(applicationIdIn => applicationIdIn,
714: transactionTypeIn => transactionTypeIn);
707: transactionTypeIn in varchar2 default null,
708: approversOut out nocopy ame_util.approversTable,
709: ruleDescriptionsOut out nocopy ame_util.stringList) as
710: approvalProcessCompleteYN ame_util.charType;
711: approvers ame_util.approversTable2;
712: begin
713: check11510(applicationIdIn => applicationIdIn,
714: transactionTypeIn => transactionTypeIn);
715: ame_api2.getAllApprovers7(applicationIdIn => applicationIdIn,
720: ame_api3.getApplicableRules2(applicationIdIn => applicationIdIn,
721: transactionIdIn => transactionIdIn,
722: transactionTypeIn => transactionTypeIn,
723: ruleDescriptionsOut => ruleDescriptionsOut);
724: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
725: approversTableOut => approversOut);
726: exception
727: when others then
728: ame_util.runtimeException(packageNameIn => 'ame_api',
724: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
725: approversTableOut => approversOut);
726: exception
727: when others then
728: ame_util.runtimeException(packageNameIn => 'ame_api',
729: routineNameIn => 'getApproversAndRules2',
730: exceptionNumberIn => sqlcode,
731: exceptionStringIn => sqlerrm);
732: approversOut.delete;
738: end getApproversAndRules2;
739: procedure getApproversAndRules3(applicationIdIn in integer,
740: transactionIdIn in varchar2,
741: transactionTypeIn in varchar2 default null,
742: approversOut out nocopy ame_util.approversTable,
743: ruleIdsOut out nocopy ame_util.idList,
744: ruleDescriptionsOut out nocopy ame_util.stringList) as
745: approvalProcessCompleteYN ame_util.charType;
746: approvers ame_util.approversTable2;
739: procedure getApproversAndRules3(applicationIdIn in integer,
740: transactionIdIn in varchar2,
741: transactionTypeIn in varchar2 default null,
742: approversOut out nocopy ame_util.approversTable,
743: ruleIdsOut out nocopy ame_util.idList,
744: ruleDescriptionsOut out nocopy ame_util.stringList) as
745: approvalProcessCompleteYN ame_util.charType;
746: approvers ame_util.approversTable2;
747: begin
740: transactionIdIn in varchar2,
741: transactionTypeIn in varchar2 default null,
742: approversOut out nocopy ame_util.approversTable,
743: ruleIdsOut out nocopy ame_util.idList,
744: ruleDescriptionsOut out nocopy ame_util.stringList) as
745: approvalProcessCompleteYN ame_util.charType;
746: approvers ame_util.approversTable2;
747: begin
748: check11510(applicationIdIn => applicationIdIn,
741: transactionTypeIn in varchar2 default null,
742: approversOut out nocopy ame_util.approversTable,
743: ruleIdsOut out nocopy ame_util.idList,
744: ruleDescriptionsOut out nocopy ame_util.stringList) as
745: approvalProcessCompleteYN ame_util.charType;
746: approvers ame_util.approversTable2;
747: begin
748: check11510(applicationIdIn => applicationIdIn,
749: transactionTypeIn => transactionTypeIn);
742: approversOut out nocopy ame_util.approversTable,
743: ruleIdsOut out nocopy ame_util.idList,
744: ruleDescriptionsOut out nocopy ame_util.stringList) as
745: approvalProcessCompleteYN ame_util.charType;
746: approvers ame_util.approversTable2;
747: begin
748: check11510(applicationIdIn => applicationIdIn,
749: transactionTypeIn => transactionTypeIn);
750: ame_api2.getAllApprovers7(applicationIdIn => applicationIdIn,
756: transactionIdIn => transactionIdIn,
757: transactionTypeIn => transactionTypeIn,
758: ruleIdsOut => ruleIdsOut,
759: ruleDescriptionsOut => ruleDescriptionsOut);
760: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
761: approversTableOut => approversOut);
762: exception
763: when others then
764: ame_util.runtimeException(packageNameIn => 'ame_api',
760: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
761: approversTableOut => approversOut);
762: exception
763: when others then
764: ame_util.runtimeException(packageNameIn => 'ame_api',
765: routineNameIn => 'getApproversAndRules3',
766: exceptionNumberIn => sqlcode,
767: exceptionStringIn => sqlerrm);
768: approversOut.delete;
776: procedure getAvailableInsertions(applicationIdIn in integer,
777: transactionIdIn in varchar2,
778: positionIn in integer,
779: transactionTypeIn in varchar2 default null,
780: availableInsertionsOut out nocopy ame_util.insertionsTable) as
781: i integer;
782: tempParameter ame_util.longestStringType;
783: availableInsertions ame_util.insertionsTable2;
784: begin
778: positionIn in integer,
779: transactionTypeIn in varchar2 default null,
780: availableInsertionsOut out nocopy ame_util.insertionsTable) as
781: i integer;
782: tempParameter ame_util.longestStringType;
783: availableInsertions ame_util.insertionsTable2;
784: begin
785: check11510(applicationIdIn => applicationIdIn,
786: transactionTypeIn => transactionTypeIn);
779: transactionTypeIn in varchar2 default null,
780: availableInsertionsOut out nocopy ame_util.insertionsTable) as
781: i integer;
782: tempParameter ame_util.longestStringType;
783: availableInsertions ame_util.insertionsTable2;
784: begin
785: check11510(applicationIdIn => applicationIdIn,
786: transactionTypeIn => transactionTypeIn);
787: ame_api3.getAvailableInsertions(applicationIdIn => applicationIdIn,
788: transactionIdIn => transactionIdIn,
789: positionIn => positionIn,
790: transactionTypeIn => transactionTypeIn,
791: availableInsertionsOut => availableInsertions);
792: ame_util.insTable2ToInsTable(insertionsTable2In => availableInsertions,
793: insertionsTableOut => availableInsertionsOut);
794: exception
795: when others then
796: ame_util.runtimeException(packageNameIn => 'ame_api',
792: ame_util.insTable2ToInsTable(insertionsTable2In => availableInsertions,
793: insertionsTableOut => availableInsertionsOut);
794: exception
795: when others then
796: ame_util.runtimeException(packageNameIn => 'ame_api',
797: routineNameIn => 'getAvailableInsertions',
798: exceptionNumberIn => sqlcode,
799: exceptionStringIn => sqlerrm);
800: raise;
802: procedure getAvailableOrders(applicationIdIn in integer,
803: transactionIdIn in varchar2,
804: positionIn in integer,
805: transactionTypeIn in varchar2 default null,
806: availableOrdersOut out nocopy ame_util.ordersTable) as
807: approvers ame_util.approversTable2;
808: approversCount integer;
809: availableOrdersIndex integer; /* pre-increment */
810: errorCode integer;
803: transactionIdIn in varchar2,
804: positionIn in integer,
805: transactionTypeIn in varchar2 default null,
806: availableOrdersOut out nocopy ame_util.ordersTable) as
807: approvers ame_util.approversTable2;
808: approversCount integer;
809: availableOrdersIndex integer; /* pre-increment */
810: errorCode integer;
811: errorMessage ame_util.longestStringType;
807: approvers ame_util.approversTable2;
808: approversCount integer;
809: availableOrdersIndex integer; /* pre-increment */
810: errorCode integer;
811: errorMessage ame_util.longestStringType;
812: invalidPositionException exception;
813: nextApproverDescription varchar2(100);
814: prevApproverDescription varchar2(100);
815: ruleIdList ame_util.idList;
811: errorMessage ame_util.longestStringType;
812: invalidPositionException exception;
813: nextApproverDescription varchar2(100);
814: prevApproverDescription varchar2(100);
815: ruleIdList ame_util.idList;
816: sourceDescription ame_util.stringType;
817: tempBoolean boolean;
818: tempInsertionDoesNotExist boolean;
819: tempOrigSystem ame_util.stringType;
812: invalidPositionException exception;
813: nextApproverDescription varchar2(100);
814: prevApproverDescription varchar2(100);
815: ruleIdList ame_util.idList;
816: sourceDescription ame_util.stringType;
817: tempBoolean boolean;
818: tempInsertionDoesNotExist boolean;
819: tempOrigSystem ame_util.stringType;
820: tempOrigSystemId integer;
815: ruleIdList ame_util.idList;
816: sourceDescription ame_util.stringType;
817: tempBoolean boolean;
818: tempInsertionDoesNotExist boolean;
819: tempOrigSystem ame_util.stringType;
820: tempOrigSystemId integer;
821: tempParameter ame_temp_insertions.parameter%type;
822: begin
823: check11510(applicationIdIn => applicationIdIn,
846: approversCount := approvers.count;
847: /* Check that positionIn is in bounds. */
848: if(positionIn < 1 or
849: positionIn > approversCount + 1 or
850: not ame_util.isANonNegativeInteger(stringIn => positionIn)) then
851: raise invalidPositionException;
852: end if;
853: availableOrdersIndex := 0;
854: /*
855: ORDER TYPE: absoluteOrder
856: absoluteOrder is always available.
857: */
858: tempParameter := positionIn;
859: if(not ame_engine.insertionExists(orderTypeIn => ame_util.absoluteOrder,
860: parameterIn => tempParameter)) then
861: availableOrdersIndex := availableOrdersIndex + 1;
862: availableOrdersOut(availableOrdersIndex).order_type := ame_util.absoluteOrder;
863: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
858: tempParameter := positionIn;
859: if(not ame_engine.insertionExists(orderTypeIn => ame_util.absoluteOrder,
860: parameterIn => tempParameter)) then
861: availableOrdersIndex := availableOrdersIndex + 1;
862: availableOrdersOut(availableOrdersIndex).order_type := ame_util.absoluteOrder;
863: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
864: availableOrdersOut(availableOrdersIndex).description :=
865: ame_util.absoluteOrderDescription || positionIn || '. ';
866: end if;
861: availableOrdersIndex := availableOrdersIndex + 1;
862: availableOrdersOut(availableOrdersIndex).order_type := ame_util.absoluteOrder;
863: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
864: availableOrdersOut(availableOrdersIndex).description :=
865: ame_util.absoluteOrderDescription || positionIn || '. ';
866: end if;
867: /*
868: ORDER TYPE: afterApprover
869: Ad-hoc afterApprover is available if positionIn > 1.
875: ame_approver_type_pkg.getOrigSystemIdAndDisplayName(nameIn =>approvers(positionIn - 1).name,
876: origSystemOut => tempOrigSystem,
877: origSystemIdOut => tempOrigSystemId,
878: displayNameOut => prevApproverDescription);
879: if tempOrigSystem = ame_util.perOrigSystem then
880: tempOrigSystem := 'person_id';
881: elsif tempOrigSystem = ame_util.fndUserOrigSystem then
882: tempOrigSystem := 'user_id';
883: end if;
877: origSystemIdOut => tempOrigSystemId,
878: displayNameOut => prevApproverDescription);
879: if tempOrigSystem = ame_util.perOrigSystem then
880: tempOrigSystem := 'person_id';
881: elsif tempOrigSystem = ame_util.fndUserOrigSystem then
882: tempOrigSystem := 'user_id';
883: end if;
884: tempParameter := tempOrigSystem || ':' || tempOrigSystemId || ':' ||
885: approvers(positionIn - 1).action_type_id || ':' ||
884: tempParameter := tempOrigSystem || ':' || tempOrigSystemId || ':' ||
885: approvers(positionIn - 1).action_type_id || ':' ||
886: approvers(positionIn - 1).group_or_chain_id ||':' ||
887: approvers(positionIn - 1).occurrence;
888: tempInsertionDoesNotExist := not ame_engine.insertionExists(orderTypeIn => ame_util.afterApprover,
889: parameterIn => tempParameter);
890: if(tempInsertionDoesNotExist) then
891: availableOrdersIndex := availableOrdersIndex + 1;
892: availableOrdersOut(availableOrdersIndex).order_type := ame_util.afterApprover;
888: tempInsertionDoesNotExist := not ame_engine.insertionExists(orderTypeIn => ame_util.afterApprover,
889: parameterIn => tempParameter);
890: if(tempInsertionDoesNotExist) then
891: availableOrdersIndex := availableOrdersIndex + 1;
892: availableOrdersOut(availableOrdersIndex).order_type := ame_util.afterApprover;
893: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
894: availableOrdersOut(availableOrdersIndex).description := ame_util.afterApproverDescription ||
895: prevApproverDescription;
896: end if;
890: if(tempInsertionDoesNotExist) then
891: availableOrdersIndex := availableOrdersIndex + 1;
892: availableOrdersOut(availableOrdersIndex).order_type := ame_util.afterApprover;
893: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
894: availableOrdersOut(availableOrdersIndex).description := ame_util.afterApproverDescription ||
895: prevApproverDescription;
896: end if;
897: end if;
898: /*
906: ame_approver_type_pkg.getOrigSystemIdAndDisplayName(nameIn =>approvers(positionIn).name,
907: origSystemOut => tempOrigSystem,
908: origSystemIdOut => tempOrigSystemId,
909: displayNameOut => nextApproverDescription);
910: if tempOrigSystem = ame_util.perOrigSystem then
911: tempOrigSystem := 'person_id';
912: elsif tempOrigSystem = ame_util.fndUserOrigSystem then
913: tempOrigSystem := 'user_id';
914: end if;
908: origSystemIdOut => tempOrigSystemId,
909: displayNameOut => nextApproverDescription);
910: if tempOrigSystem = ame_util.perOrigSystem then
911: tempOrigSystem := 'person_id';
912: elsif tempOrigSystem = ame_util.fndUserOrigSystem then
913: tempOrigSystem := 'user_id';
914: end if;
915: tempParameter := tempOrigSystem || ':' || tempOrigSystemId || ':' ||
916: approvers(positionIn).action_type_id || ':' ||
915: tempParameter := tempOrigSystem || ':' || tempOrigSystemId || ':' ||
916: approvers(positionIn).action_type_id || ':' ||
917: approvers(positionIn).group_or_chain_id ||':' ||
918: approvers(positionIn).occurrence;
919: if(not ame_engine.insertionExists(orderTypeIn => ame_util.beforeApprover,
920: parameterIn => tempParameter)) then
921: availableOrdersIndex := availableOrdersIndex + 1;
922: availableOrdersOut(availableOrdersIndex).order_type := ame_util.beforeApprover;
923: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
918: approvers(positionIn).occurrence;
919: if(not ame_engine.insertionExists(orderTypeIn => ame_util.beforeApprover,
920: parameterIn => tempParameter)) then
921: availableOrdersIndex := availableOrdersIndex + 1;
922: availableOrdersOut(availableOrdersIndex).order_type := ame_util.beforeApprover;
923: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
924: availableOrdersOut(availableOrdersIndex).description :=
925: ame_util.beforeApproverDescription || nextApproverDescription;
926: end if;
921: availableOrdersIndex := availableOrdersIndex + 1;
922: availableOrdersOut(availableOrdersIndex).order_type := ame_util.beforeApprover;
923: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
924: availableOrdersOut(availableOrdersIndex).description :=
925: ame_util.beforeApproverDescription || nextApproverDescription;
926: end if;
927: end if;
928: /*
929: ORDER TYPE: firstAuthority
929: ORDER TYPE: firstAuthority
930: firstAuthority is available if the approver you're at is the first COA approver in a chain.
931: */
932: if(positionIn < approversCount + 1 and
933: approvers(positionIn).authority = ame_util.authorityApprover and
934: approvers(positionIn).api_insertion <> ame_util.apiInsertion ) then
935: tempBoolean := true; /* tempBoolean remains true if no previous authority is found. */
936: for i in reverse 1..positionIn - 1 loop
937: if(approvers(i).group_or_chain_id <> approvers(positionIn).group_or_chain_id or
930: firstAuthority is available if the approver you're at is the first COA approver in a chain.
931: */
932: if(positionIn < approversCount + 1 and
933: approvers(positionIn).authority = ame_util.authorityApprover and
934: approvers(positionIn).api_insertion <> ame_util.apiInsertion ) then
935: tempBoolean := true; /* tempBoolean remains true if no previous authority is found. */
936: for i in reverse 1..positionIn - 1 loop
937: if(approvers(i).group_or_chain_id <> approvers(positionIn).group_or_chain_id or
938: approvers(i).action_type_id <> approvers(positionIn).action_type_id or
939: approvers(i).item_id <> approvers(positionIn).item_id or
940: approvers(i).item_class <> approvers(positionIn).item_class) then
941: exit;
942: end if;
943: if(approvers(i).authority = ame_util.authorityApprover and
944: approvers(i).api_insertion <> ame_util.apiInsertion) then
945: tempBoolean := false;
946: exit;
947: end if;
940: approvers(i).item_class <> approvers(positionIn).item_class) then
941: exit;
942: end if;
943: if(approvers(i).authority = ame_util.authorityApprover and
944: approvers(i).api_insertion <> ame_util.apiInsertion) then
945: tempBoolean := false;
946: exit;
947: end if;
948: end loop;
946: exit;
947: end if;
948: end loop;
949: if(tempBoolean) then
950: tempParameter := ame_util.firstAuthorityParameter ;
951: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstAuthority,
952: parameterIn => tempParameter)) then
953: availableOrdersIndex := availableOrdersIndex + 1;
954: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstAuthority;
947: end if;
948: end loop;
949: if(tempBoolean) then
950: tempParameter := ame_util.firstAuthorityParameter ;
951: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstAuthority,
952: parameterIn => tempParameter)) then
953: availableOrdersIndex := availableOrdersIndex + 1;
954: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstAuthority;
955: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
950: tempParameter := ame_util.firstAuthorityParameter ;
951: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstAuthority,
952: parameterIn => tempParameter)) then
953: availableOrdersIndex := availableOrdersIndex + 1;
954: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstAuthority;
955: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
956: availableOrdersOut(availableOrdersIndex).description := ame_util.firstAuthorityDescription;
957: end if;
958: end if;
952: parameterIn => tempParameter)) then
953: availableOrdersIndex := availableOrdersIndex + 1;
954: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstAuthority;
955: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
956: availableOrdersOut(availableOrdersIndex).description := ame_util.firstAuthorityDescription;
957: end if;
958: end if;
959: end if;
960: /*
984: end if
985: end if
986: end if
987: */
988: tempParameter := ame_util.firstPostParameter ;
989: if(approversCount = 0) then
990: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
991: parameterIn => tempParameter)) then
992: availableOrdersIndex := availableOrdersIndex + 1;
986: end if
987: */
988: tempParameter := ame_util.firstPostParameter ;
989: if(approversCount = 0) then
990: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
991: parameterIn => tempParameter)) then
992: availableOrdersIndex := availableOrdersIndex + 1;
993: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
994: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
989: if(approversCount = 0) then
990: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
991: parameterIn => tempParameter)) then
992: availableOrdersIndex := availableOrdersIndex + 1;
993: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
994: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
995: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
996: end if;
997: elsif(positionIn = approversCount + 1) then
991: parameterIn => tempParameter)) then
992: availableOrdersIndex := availableOrdersIndex + 1;
993: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
994: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
995: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
996: end if;
997: elsif(positionIn = approversCount + 1) then
998: if(approvers(approversCount).authority <> ame_util.postApprover) then
999: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
994: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
995: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
996: end if;
997: elsif(positionIn = approversCount + 1) then
998: if(approvers(approversCount).authority <> ame_util.postApprover) then
999: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1000: parameterIn => tempParameter)) then
1001: availableOrdersIndex := availableOrdersIndex + 1;
1002: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
995: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
996: end if;
997: elsif(positionIn = approversCount + 1) then
998: if(approvers(approversCount).authority <> ame_util.postApprover) then
999: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1000: parameterIn => tempParameter)) then
1001: availableOrdersIndex := availableOrdersIndex + 1;
1002: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1003: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
998: if(approvers(approversCount).authority <> ame_util.postApprover) then
999: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1000: parameterIn => tempParameter)) then
1001: availableOrdersIndex := availableOrdersIndex + 1;
1002: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1003: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1004: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1005: end if;
1006: end if;
1000: parameterIn => tempParameter)) then
1001: availableOrdersIndex := availableOrdersIndex + 1;
1002: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1003: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1004: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1005: end if;
1006: end if;
1007: elsif(positionIn = 1) then
1008: if(approvers(1).authority = ame_util.postApprover) then
1004: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1005: end if;
1006: end if;
1007: elsif(positionIn = 1) then
1008: if(approvers(1).authority = ame_util.postApprover) then
1009: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1010: parameterIn => tempParameter)) then
1011: availableOrdersIndex := availableOrdersIndex + 1;
1012: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1005: end if;
1006: end if;
1007: elsif(positionIn = 1) then
1008: if(approvers(1).authority = ame_util.postApprover) then
1009: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1010: parameterIn => tempParameter)) then
1011: availableOrdersIndex := availableOrdersIndex + 1;
1012: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1013: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1008: if(approvers(1).authority = ame_util.postApprover) then
1009: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1010: parameterIn => tempParameter)) then
1011: availableOrdersIndex := availableOrdersIndex + 1;
1012: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1013: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1014: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1015: end if;
1016: end if;
1010: parameterIn => tempParameter)) then
1011: availableOrdersIndex := availableOrdersIndex + 1;
1012: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1013: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1014: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1015: end if;
1016: end if;
1017: else
1018: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1016: end if;
1017: else
1018: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1019: approvers(positionIn - 1).item_class = approvers(positionIn).item_class) then
1020: if(approvers(positionIn - 1).authority <> ame_util.postApprover and
1021: approvers(positionIn).authority = ame_util.postApprover) then
1022: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1023: parameterIn => tempParameter)) then
1024: availableOrdersIndex := availableOrdersIndex + 1;
1017: else
1018: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1019: approvers(positionIn - 1).item_class = approvers(positionIn).item_class) then
1020: if(approvers(positionIn - 1).authority <> ame_util.postApprover and
1021: approvers(positionIn).authority = ame_util.postApprover) then
1022: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1023: parameterIn => tempParameter)) then
1024: availableOrdersIndex := availableOrdersIndex + 1;
1025: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1018: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1019: approvers(positionIn - 1).item_class = approvers(positionIn).item_class) then
1020: if(approvers(positionIn - 1).authority <> ame_util.postApprover and
1021: approvers(positionIn).authority = ame_util.postApprover) then
1022: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1023: parameterIn => tempParameter)) then
1024: availableOrdersIndex := availableOrdersIndex + 1;
1025: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1026: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1021: approvers(positionIn).authority = ame_util.postApprover) then
1022: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1023: parameterIn => tempParameter)) then
1024: availableOrdersIndex := availableOrdersIndex + 1;
1025: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1026: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1027: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1028: end if;
1029: end if;
1023: parameterIn => tempParameter)) then
1024: availableOrdersIndex := availableOrdersIndex + 1;
1025: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1026: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1027: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1028: end if;
1029: end if;
1030: else
1031: if(approvers(positionIn).authority = ame_util.postApprover) then
1027: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1028: end if;
1029: end if;
1030: else
1031: if(approvers(positionIn).authority = ame_util.postApprover) then
1032: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1033: parameterIn => tempParameter)) then
1034: availableOrdersIndex := availableOrdersIndex + 1;
1035: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1028: end if;
1029: end if;
1030: else
1031: if(approvers(positionIn).authority = ame_util.postApprover) then
1032: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1033: parameterIn => tempParameter)) then
1034: availableOrdersIndex := availableOrdersIndex + 1;
1035: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1036: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1031: if(approvers(positionIn).authority = ame_util.postApprover) then
1032: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1033: parameterIn => tempParameter)) then
1034: availableOrdersIndex := availableOrdersIndex + 1;
1035: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1036: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1037: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1038: end if;
1039: end if;
1033: parameterIn => tempParameter)) then
1034: availableOrdersIndex := availableOrdersIndex + 1;
1035: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1036: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1037: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1038: end if;
1039: end if;
1040: if(approvers(positionIn - 1).authority <> ame_util.postApprover) then
1041: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1036: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1037: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1038: end if;
1039: end if;
1040: if(approvers(positionIn - 1).authority <> ame_util.postApprover) then
1041: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1042: parameterIn => tempParameter)) then
1043: availableOrdersIndex := availableOrdersIndex + 1;
1044: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1037: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1038: end if;
1039: end if;
1040: if(approvers(positionIn - 1).authority <> ame_util.postApprover) then
1041: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1042: parameterIn => tempParameter)) then
1043: availableOrdersIndex := availableOrdersIndex + 1;
1044: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1045: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1040: if(approvers(positionIn - 1).authority <> ame_util.postApprover) then
1041: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPostApprover,
1042: parameterIn => tempParameter)) then
1043: availableOrdersIndex := availableOrdersIndex + 1;
1044: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1045: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1046: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1047: end if;
1048: end if;
1042: parameterIn => tempParameter)) then
1043: availableOrdersIndex := availableOrdersIndex + 1;
1044: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPostApprover;
1045: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1046: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPostApproverDescription;
1047: end if;
1048: end if;
1049: end if;
1050: end if;
1063: allow a first-pre-approver insertion for the second approver's item
1064: end if
1065: end if
1066: */
1067: tempParameter := ame_util.firstPreApprover ;
1068: if(approversCount = 0) then
1069: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1070: parameterIn => tempParameter)) then
1071: availableOrdersIndex := availableOrdersIndex + 1;
1065: end if
1066: */
1067: tempParameter := ame_util.firstPreApprover ;
1068: if(approversCount = 0) then
1069: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1070: parameterIn => tempParameter)) then
1071: availableOrdersIndex := availableOrdersIndex + 1;
1072: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1073: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1068: if(approversCount = 0) then
1069: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1070: parameterIn => tempParameter)) then
1071: availableOrdersIndex := availableOrdersIndex + 1;
1072: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1073: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1074: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPreApproverDescription;
1075: end if;
1076: elsif(positionIn = 1) then
1070: parameterIn => tempParameter)) then
1071: availableOrdersIndex := availableOrdersIndex + 1;
1072: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1073: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1074: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPreApproverDescription;
1075: end if;
1076: elsif(positionIn = 1) then
1077: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1078: parameterIn => tempParameter)) then
1073: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1074: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPreApproverDescription;
1075: end if;
1076: elsif(positionIn = 1) then
1077: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1078: parameterIn => tempParameter)) then
1079: availableOrdersIndex := availableOrdersIndex + 1;
1080: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1081: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1076: elsif(positionIn = 1) then
1077: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1078: parameterIn => tempParameter)) then
1079: availableOrdersIndex := availableOrdersIndex + 1;
1080: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1081: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1082: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPreApproverDescription;
1083: end if;
1084: elsif(positionIn < approversCount + 1) then
1078: parameterIn => tempParameter)) then
1079: availableOrdersIndex := availableOrdersIndex + 1;
1080: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1081: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1082: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPreApproverDescription;
1083: end if;
1084: elsif(positionIn < approversCount + 1) then
1085: if(approvers(positionIn - 1).item_id <> approvers(positionIn).item_id or
1086: approvers(positionIn - 1).item_class <> approvers(positionIn).item_class) then
1083: end if;
1084: elsif(positionIn < approversCount + 1) then
1085: if(approvers(positionIn - 1).item_id <> approvers(positionIn).item_id or
1086: approvers(positionIn - 1).item_class <> approvers(positionIn).item_class) then
1087: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1088: parameterIn => tempParameter)) then
1089: availableOrdersIndex := availableOrdersIndex + 1;
1090: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1091: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1086: approvers(positionIn - 1).item_class <> approvers(positionIn).item_class) then
1087: if(not ame_engine.insertionExists(orderTypeIn => ame_util.firstPreApprover,
1088: parameterIn => tempParameter)) then
1089: availableOrdersIndex := availableOrdersIndex + 1;
1090: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1091: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1092: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPreApproverDescription;
1093: end if;
1094: end if;
1088: parameterIn => tempParameter)) then
1089: availableOrdersIndex := availableOrdersIndex + 1;
1090: availableOrdersOut(availableOrdersIndex).order_type := ame_util.firstPreApprover;
1091: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1092: availableOrdersOut(availableOrdersIndex).description := ame_util.firstPreApproverDescription;
1093: end if;
1094: end if;
1095: end if;
1096: /*
1107: allow last-post-approver insertion for the former approver's item
1108: end if
1109: end if
1110: */
1111: tempParameter := ame_util.lastPostApprover ;
1112: if(approversCount = 0) then
1113: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1114: parameterIn => tempParameter)) then
1115: availableOrdersIndex := availableOrdersIndex + 1;
1109: end if
1110: */
1111: tempParameter := ame_util.lastPostApprover ;
1112: if(approversCount = 0) then
1113: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1114: parameterIn => tempParameter)) then
1115: availableOrdersIndex := availableOrdersIndex + 1;
1116: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1117: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1112: if(approversCount = 0) then
1113: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1114: parameterIn => tempParameter)) then
1115: availableOrdersIndex := availableOrdersIndex + 1;
1116: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1117: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1118: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPostApproverDescription;
1119: end if;
1120: elsif(positionIn = approversCount + 1) then
1114: parameterIn => tempParameter)) then
1115: availableOrdersIndex := availableOrdersIndex + 1;
1116: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1117: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1118: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPostApproverDescription;
1119: end if;
1120: elsif(positionIn = approversCount + 1) then
1121: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1122: parameterIn => tempParameter)) then
1117: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1118: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPostApproverDescription;
1119: end if;
1120: elsif(positionIn = approversCount + 1) then
1121: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1122: parameterIn => tempParameter)) then
1123: availableOrdersIndex := availableOrdersIndex + 1;
1124: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1125: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1120: elsif(positionIn = approversCount + 1) then
1121: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1122: parameterIn => tempParameter)) then
1123: availableOrdersIndex := availableOrdersIndex + 1;
1124: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1125: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1126: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPostApproverDescription;
1127: end if;
1128: elsif(positionIn > 1) then
1122: parameterIn => tempParameter)) then
1123: availableOrdersIndex := availableOrdersIndex + 1;
1124: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1125: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1126: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPostApproverDescription;
1127: end if;
1128: elsif(positionIn > 1) then
1129: if(approvers(positionIn - 1).item_id <> approvers(positionIn).item_id or
1130: approvers(positionIn - 1).item_class <> approvers(positionIn).item_class) then
1127: end if;
1128: elsif(positionIn > 1) then
1129: if(approvers(positionIn - 1).item_id <> approvers(positionIn).item_id or
1130: approvers(positionIn - 1).item_class <> approvers(positionIn).item_class) then
1131: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1132: parameterIn => tempParameter)) then
1133: availableOrdersIndex := availableOrdersIndex + 1;
1134: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1135: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1130: approvers(positionIn - 1).item_class <> approvers(positionIn).item_class) then
1131: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPostApprover,
1132: parameterIn => tempParameter)) then
1133: availableOrdersIndex := availableOrdersIndex + 1;
1134: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1135: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1136: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPostApproverDescription;
1137: end if;
1138: end if;
1132: parameterIn => tempParameter)) then
1133: availableOrdersIndex := availableOrdersIndex + 1;
1134: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPostApprover;
1135: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1136: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPostApproverDescription;
1137: end if;
1138: end if;
1139: end if;
1140: /*
1160: end if
1161: end if
1162: end if
1163: */
1164: tempParameter := ame_util.lastPreApprover ;
1165: if(approversCount = 0) then
1166: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1167: parameterIn => tempParameter)) then
1168: availableOrdersIndex := availableOrdersIndex + 1;
1162: end if
1163: */
1164: tempParameter := ame_util.lastPreApprover ;
1165: if(approversCount = 0) then
1166: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1167: parameterIn => tempParameter)) then
1168: availableOrdersIndex := availableOrdersIndex + 1;
1169: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1170: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1165: if(approversCount = 0) then
1166: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1167: parameterIn => tempParameter)) then
1168: availableOrdersIndex := availableOrdersIndex + 1;
1169: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1170: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1171: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1172: end if;
1173: elsif(positionIn = 1) then
1167: parameterIn => tempParameter)) then
1168: availableOrdersIndex := availableOrdersIndex + 1;
1169: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1170: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1171: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1172: end if;
1173: elsif(positionIn = 1) then
1174: if(approvers(1).authority <> ame_util.preApprover) then
1175: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1170: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1171: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1172: end if;
1173: elsif(positionIn = 1) then
1174: if(approvers(1).authority <> ame_util.preApprover) then
1175: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1176: parameterIn => tempParameter)) then
1177: availableOrdersIndex := availableOrdersIndex + 1;
1178: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1171: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1172: end if;
1173: elsif(positionIn = 1) then
1174: if(approvers(1).authority <> ame_util.preApprover) then
1175: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1176: parameterIn => tempParameter)) then
1177: availableOrdersIndex := availableOrdersIndex + 1;
1178: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1179: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1174: if(approvers(1).authority <> ame_util.preApprover) then
1175: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1176: parameterIn => tempParameter)) then
1177: availableOrdersIndex := availableOrdersIndex + 1;
1178: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1179: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1180: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1181: end if;
1182: end if;
1176: parameterIn => tempParameter)) then
1177: availableOrdersIndex := availableOrdersIndex + 1;
1178: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1179: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1180: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1181: end if;
1182: end if;
1183: elsif(positionIn <= approversCount) then
1184: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1182: end if;
1183: elsif(positionIn <= approversCount) then
1184: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1185: approvers(positionIn - 1).item_class = approvers(positionIn).item_class) then
1186: if(approvers(positionIn - 1).authority = ame_util.preApprover and
1187: approvers(positionIn).authority <> ame_util.preApprover) then
1188: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1189: parameterIn => tempParameter)) then
1190: availableOrdersIndex := availableOrdersIndex + 1;
1183: elsif(positionIn <= approversCount) then
1184: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1185: approvers(positionIn - 1).item_class = approvers(positionIn).item_class) then
1186: if(approvers(positionIn - 1).authority = ame_util.preApprover and
1187: approvers(positionIn).authority <> ame_util.preApprover) then
1188: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1189: parameterIn => tempParameter)) then
1190: availableOrdersIndex := availableOrdersIndex + 1;
1191: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1184: if(approvers(positionIn - 1).item_id = approvers(positionIn).item_id and
1185: approvers(positionIn - 1).item_class = approvers(positionIn).item_class) then
1186: if(approvers(positionIn - 1).authority = ame_util.preApprover and
1187: approvers(positionIn).authority <> ame_util.preApprover) then
1188: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1189: parameterIn => tempParameter)) then
1190: availableOrdersIndex := availableOrdersIndex + 1;
1191: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1192: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1187: approvers(positionIn).authority <> ame_util.preApprover) then
1188: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1189: parameterIn => tempParameter)) then
1190: availableOrdersIndex := availableOrdersIndex + 1;
1191: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1192: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1193: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1194: end if;
1195: end if;
1189: parameterIn => tempParameter)) then
1190: availableOrdersIndex := availableOrdersIndex + 1;
1191: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1192: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1193: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1194: end if;
1195: end if;
1196: else
1197: if(approvers(positionIn).authority <> ame_util.preApprover) then
1193: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1194: end if;
1195: end if;
1196: else
1197: if(approvers(positionIn).authority <> ame_util.preApprover) then
1198: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1199: parameterIn => tempParameter)) then
1200: availableOrdersIndex := availableOrdersIndex + 1;
1201: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1194: end if;
1195: end if;
1196: else
1197: if(approvers(positionIn).authority <> ame_util.preApprover) then
1198: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1199: parameterIn => tempParameter)) then
1200: availableOrdersIndex := availableOrdersIndex + 1;
1201: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1202: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1197: if(approvers(positionIn).authority <> ame_util.preApprover) then
1198: if(not ame_engine.insertionExists(orderTypeIn => ame_util.lastPreApprover,
1199: parameterIn => tempParameter)) then
1200: availableOrdersIndex := availableOrdersIndex + 1;
1201: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1202: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1203: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1204: end if;
1205: end if;
1199: parameterIn => tempParameter)) then
1200: availableOrdersIndex := availableOrdersIndex + 1;
1201: availableOrdersOut(availableOrdersIndex).order_type := ame_util.lastPreApprover;
1202: availableOrdersOut(availableOrdersIndex).parameter := tempParameter;
1203: availableOrdersOut(availableOrdersIndex).description := ame_util.lastPreApproverDescription;
1204: end if;
1205: end if;
1206: end if;
1207: end if;
1207: end if;
1208: exception
1209: when invalidPositionException then
1210: errorCode := -20211;
1211: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
1212: messageNameIn => 'AME_400418_INVALID_INSERTION');
1213: ame_util.runtimeException(packageNameIn => 'ame_api',
1214: routineNameIn => 'getAvailableOrders',
1215: exceptionNumberIn => errorCode,
1209: when invalidPositionException then
1210: errorCode := -20211;
1211: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
1212: messageNameIn => 'AME_400418_INVALID_INSERTION');
1213: ame_util.runtimeException(packageNameIn => 'ame_api',
1214: routineNameIn => 'getAvailableOrders',
1215: exceptionNumberIn => errorCode,
1216: exceptionStringIn => errorMessage);
1217: raise_application_error(errorCode,
1216: exceptionStringIn => errorMessage);
1217: raise_application_error(errorCode,
1218: errorMessage);
1219: when others then
1220: ame_util.runtimeException(packageNameIn => 'ame_api',
1221: routineNameIn => 'getAvailableOrders',
1222: exceptionNumberIn => sqlcode,
1223: exceptionStringIn => sqlerrm);
1224: raise;
1231: upperLimitOut out nocopy varchar2,
1232: includeLowerLimitOut out nocopy varchar2,
1233: includeUpperLimitOut out nocopy varchar2,
1234: currencyCodeOut out nocopy varchar2,
1235: allowedValuesOut out nocopy ame_util.longestStringList) as
1236: begin
1237: ame_api3.getConditionDetails(conditionIdIn => conditionIdIn,
1238: attributeNameOut => attributeNameOut,
1239: attributeTypeOut => attributeTypeOut,
1245: currencyCodeOut => currencyCodeOut,
1246: allowedValuesOut => allowedValuesOut);
1247: exception
1248: when others then
1249: ame_util.runtimeException(packageNameIn => 'ame_api',
1250: routineNameIn => 'getConditionDetails',
1251: exceptionNumberIn => sqlcode,
1252: exceptionStringIn => sqlerrm);
1253: raise;
1255: procedure getGroupMembers(applicationIdIn in number,
1256: transactionTypeIn in varchar2,
1257: transactionIdIn in varchar2,
1258: groupIdIn in number,
1259: memberOrderNumbersOut out nocopy ame_util.idList,
1260: memberPersonIdsOut out nocopy ame_util.idList,
1261: memberUserIdsOut out nocopy ame_util.idList) as
1262: begin
1263: null;
1256: transactionTypeIn in varchar2,
1257: transactionIdIn in varchar2,
1258: groupIdIn in number,
1259: memberOrderNumbersOut out nocopy ame_util.idList,
1260: memberPersonIdsOut out nocopy ame_util.idList,
1261: memberUserIdsOut out nocopy ame_util.idList) as
1262: begin
1263: null;
1264: end getGroupMembers;
1257: transactionIdIn in varchar2,
1258: groupIdIn in number,
1259: memberOrderNumbersOut out nocopy ame_util.idList,
1260: memberPersonIdsOut out nocopy ame_util.idList,
1261: memberUserIdsOut out nocopy ame_util.idList) as
1262: begin
1263: null;
1264: end getGroupMembers;
1265: procedure getNextApprover(applicationIdIn in integer,
1264: end getGroupMembers;
1265: procedure getNextApprover(applicationIdIn in integer,
1266: transactionIdIn in varchar2,
1267: transactionTypeIn in varchar2 default null,
1268: nextApproverOut out nocopy ame_util.approverRecord) as
1269: ameApplicationId integer;
1270: approvalProcessCompleteYN ame_util.charType;
1271: counter integer;
1272: nextApprovers ame_util.approversTable2;
1266: transactionIdIn in varchar2,
1267: transactionTypeIn in varchar2 default null,
1268: nextApproverOut out nocopy ame_util.approverRecord) as
1269: ameApplicationId integer;
1270: approvalProcessCompleteYN ame_util.charType;
1271: counter integer;
1272: nextApprovers ame_util.approversTable2;
1273: parallelizationFoundException exception;
1274: errorCode integer;
1268: nextApproverOut out nocopy ame_util.approverRecord) as
1269: ameApplicationId integer;
1270: approvalProcessCompleteYN ame_util.charType;
1271: counter integer;
1272: nextApprovers ame_util.approversTable2;
1273: parallelizationFoundException exception;
1274: errorCode integer;
1275: errorMessage ame_util.longestStringType;
1276: begin
1271: counter integer;
1272: nextApprovers ame_util.approversTable2;
1273: parallelizationFoundException exception;
1274: errorCode integer;
1275: errorMessage ame_util.longestStringType;
1276: begin
1277: check11510(applicationIdIn => applicationIdIn,
1278: transactionTypeIn => transactionTypeIn);
1279: loop
1276: begin
1277: check11510(applicationIdIn => applicationIdIn,
1278: transactionTypeIn => transactionTypeIn);
1279: loop
1280: ame_util2.detailedApprovalStatusFlagYN := ame_util.booleanTrue;
1281: ame_api2.getNextApprovers4(applicationIdIn => applicationIdIn,
1282: transactionTypeIn => transactionTypeIn,
1283: transactionIdIn => transactionIdIn,
1284: flagApproversAsNotifiedIn => ame_util.booleanFalse,
1280: ame_util2.detailedApprovalStatusFlagYN := ame_util.booleanTrue;
1281: ame_api2.getNextApprovers4(applicationIdIn => applicationIdIn,
1282: transactionTypeIn => transactionTypeIn,
1283: transactionIdIn => transactionIdIn,
1284: flagApproversAsNotifiedIn => ame_util.booleanFalse,
1285: approvalProcessCompleteYNOut => approvalProcessCompleteYN,
1286: nextApproversOut => nextApprovers);
1287: if ameApplicationId is null then
1288: ameApplicationId := ame_engine.getAmeApplicationId;
1286: nextApproversOut => nextApprovers);
1287: if ameApplicationId is null then
1288: ameApplicationId := ame_engine.getAmeApplicationId;
1289: end if;
1290: if approvalProcessCompleteYN = ame_util2.completeFullyApproved or
1291: approvalProcessCompleteYN = ame_util2.completeFullyRejected or
1292: approvalProcessCompleteYN = ame_util2.completePartiallyApproved or
1293: approvalProcessCompleteYN = ame_util2.completeNoApprovers then
1294: nextApproverOut := ame_util.emptyApproverRecord;
1287: if ameApplicationId is null then
1288: ameApplicationId := ame_engine.getAmeApplicationId;
1289: end if;
1290: if approvalProcessCompleteYN = ame_util2.completeFullyApproved or
1291: approvalProcessCompleteYN = ame_util2.completeFullyRejected or
1292: approvalProcessCompleteYN = ame_util2.completePartiallyApproved or
1293: approvalProcessCompleteYN = ame_util2.completeNoApprovers then
1294: nextApproverOut := ame_util.emptyApproverRecord;
1295: exit;
1288: ameApplicationId := ame_engine.getAmeApplicationId;
1289: end if;
1290: if approvalProcessCompleteYN = ame_util2.completeFullyApproved or
1291: approvalProcessCompleteYN = ame_util2.completeFullyRejected or
1292: approvalProcessCompleteYN = ame_util2.completePartiallyApproved or
1293: approvalProcessCompleteYN = ame_util2.completeNoApprovers then
1294: nextApproverOut := ame_util.emptyApproverRecord;
1295: exit;
1296: else
1289: end if;
1290: if approvalProcessCompleteYN = ame_util2.completeFullyApproved or
1291: approvalProcessCompleteYN = ame_util2.completeFullyRejected or
1292: approvalProcessCompleteYN = ame_util2.completePartiallyApproved or
1293: approvalProcessCompleteYN = ame_util2.completeNoApprovers then
1294: nextApproverOut := ame_util.emptyApproverRecord;
1295: exit;
1296: else
1297: if(nextApprovers.count > 1) then
1290: if approvalProcessCompleteYN = ame_util2.completeFullyApproved or
1291: approvalProcessCompleteYN = ame_util2.completeFullyRejected or
1292: approvalProcessCompleteYN = ame_util2.completePartiallyApproved or
1293: approvalProcessCompleteYN = ame_util2.completeNoApprovers then
1294: nextApproverOut := ame_util.emptyApproverRecord;
1295: exit;
1296: else
1297: if(nextApprovers.count > 1) then
1298: raise parallelizationFoundException;
1298: raise parallelizationFoundException;
1299: end if;
1300: counter := 0;
1301: for i in 1 .. nextApprovers.count loop
1302: if nextApprovers(i).approver_category = ame_util.approvalApproverCategory then
1303: counter := i;
1304: exit;
1305: else
1306: update ame_temp_old_approver_lists
1303: counter := i;
1304: exit;
1305: else
1306: update ame_temp_old_approver_lists
1307: set approval_status = ame_util.notifiedStatus
1308: where item_class = nextApprovers(i).item_class and
1309: item_id = nextApprovers(i).item_id and
1310: name = nextApprovers(i).name and
1311: action_type_id = nextApprovers(i).action_type_id and
1315: application_id = ameApplicationId;
1316: end if;
1317: end loop;
1318: if counter <> 0 then
1319: ame_util.apprRecord2ToApprRecord(approverRecord2In => nextApprovers(counter),
1320: approverRecordOut => nextApproverOut);
1321: exit;
1322: end if;
1323: end if;
1325: /* delete after talking to TM and SS - nsoni
1326: ame_api2.getNextApprovers4(applicationIdIn => applicationIdIn,
1327: transactionTypeIn => transactionTypeIn,
1328: transactionIdIn => transactionIdIn,
1329: flagApproversAsNotifiedIn => ame_util.booleanFalse,
1330: approvalProcessCompleteYNOut => approvalProcessCompleteYN,
1331: nextApproversOut => nextApprovers);
1332: if approvalProcessCompleteYN = ame_util.booleanTrue then
1333: nextApproverOut := ame_util.emptyApproverRecord;
1328: transactionIdIn => transactionIdIn,
1329: flagApproversAsNotifiedIn => ame_util.booleanFalse,
1330: approvalProcessCompleteYNOut => approvalProcessCompleteYN,
1331: nextApproversOut => nextApprovers);
1332: if approvalProcessCompleteYN = ame_util.booleanTrue then
1333: nextApproverOut := ame_util.emptyApproverRecord;
1334: else
1335: ame_util.apprRecord2ToApprRecord(approverRecord2In => nextApprovers(1),
1336: approverRecordOut => nextApproverOut);
1329: flagApproversAsNotifiedIn => ame_util.booleanFalse,
1330: approvalProcessCompleteYNOut => approvalProcessCompleteYN,
1331: nextApproversOut => nextApprovers);
1332: if approvalProcessCompleteYN = ame_util.booleanTrue then
1333: nextApproverOut := ame_util.emptyApproverRecord;
1334: else
1335: ame_util.apprRecord2ToApprRecord(approverRecord2In => nextApprovers(1),
1336: approverRecordOut => nextApproverOut);
1337: end if;
1331: nextApproversOut => nextApprovers);
1332: if approvalProcessCompleteYN = ame_util.booleanTrue then
1333: nextApproverOut := ame_util.emptyApproverRecord;
1334: else
1335: ame_util.apprRecord2ToApprRecord(approverRecord2In => nextApprovers(1),
1336: approverRecordOut => nextApproverOut);
1337: end if;
1338: */
1339: exception
1338: */
1339: exception
1340: when parallelizationFoundException then
1341: errorCode := -20001;
1342: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
1343: messageNameIn => 'AME_400679_API_PARALLEL_CONFIG');
1344: ame_util.runtimeException(packageNameIn => 'ame_api',
1345: routineNameIn => 'getNextApprover',
1346: exceptionNumberIn => errorCode,
1340: when parallelizationFoundException then
1341: errorCode := -20001;
1342: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
1343: messageNameIn => 'AME_400679_API_PARALLEL_CONFIG');
1344: ame_util.runtimeException(packageNameIn => 'ame_api',
1345: routineNameIn => 'getNextApprover',
1346: exceptionNumberIn => errorCode,
1347: exceptionStringIn => errorMessage);
1348: raise_application_error(errorCode,
1347: exceptionStringIn => errorMessage);
1348: raise_application_error(errorCode,
1349: errorMessage);
1350: when others then
1351: ame_util.runtimeException(packageNameIn => 'ame_api',
1352: routineNameIn => 'getNextApprover',
1353: exceptionNumberIn => sqlcode,
1354: exceptionStringIn => sqlerrm);
1355: getAdminApprover(applicationIdIn => applicationIdIn,
1359: end getNextApprover;
1360: procedure getOldApprovers(applicationIdIn in integer,
1361: transactionIdIn in varchar2,
1362: transactionTypeIn in varchar2 default null,
1363: oldApproversOut out nocopy ame_util.approversTable) as
1364: approvers ame_util.approversTable2;
1365: begin
1366: ame_api3.getOldApprovers(applicationIdIn => applicationIdIn,
1367: transactionIdIn => transactionIdIn,
1360: procedure getOldApprovers(applicationIdIn in integer,
1361: transactionIdIn in varchar2,
1362: transactionTypeIn in varchar2 default null,
1363: oldApproversOut out nocopy ame_util.approversTable) as
1364: approvers ame_util.approversTable2;
1365: begin
1366: ame_api3.getOldApprovers(applicationIdIn => applicationIdIn,
1367: transactionIdIn => transactionIdIn,
1368: transactionTypeIn => transactionTypeIn,
1366: ame_api3.getOldApprovers(applicationIdIn => applicationIdIn,
1367: transactionIdIn => transactionIdIn,
1368: transactionTypeIn => transactionTypeIn,
1369: oldApproversOut => approvers);
1370: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
1371: approversTableOut => oldApproversOut);
1372: exception
1373: when others then
1374: ame_util.runtimeException(packageNameIn => 'ame_api',
1370: ame_util.apprTable2ToApprTable(approversTable2In => approvers,
1371: approversTableOut => oldApproversOut);
1372: exception
1373: when others then
1374: ame_util.runtimeException(packageNameIn => 'ame_api',
1375: routineNameIn => 'getOldApprovers',
1376: exceptionNumberIn => sqlcode,
1377: exceptionStringIn => sqlerrm);
1378: oldApproversOut.delete;
1383: end getOldApprovers;
1384: procedure getRuleDetails1(ruleIdIn in integer,
1385: ruleTypeOut out nocopy varchar2,
1386: ruleDescriptionOut out nocopy varchar2,
1387: conditionIdsOut out nocopy ame_util.idList,
1388: approvalTypeNameOut out nocopy varchar2,
1389: approvalTypeDescriptionOut out nocopy varchar2,
1390: approvalDescriptionOut out nocopy varchar2) as
1391: approvalTypeNames ame_util.stringList;
1387: conditionIdsOut out nocopy ame_util.idList,
1388: approvalTypeNameOut out nocopy varchar2,
1389: approvalTypeDescriptionOut out nocopy varchar2,
1390: approvalDescriptionOut out nocopy varchar2) as
1391: approvalTypeNames ame_util.stringList;
1392: approvalTypeDescriptions ame_util.stringList;
1393: approvalDescriptions ame_util.stringList;
1394: begin
1395: ame_api3.getRuleDetails1(ruleIdIn => ruleIdIn,
1388: approvalTypeNameOut out nocopy varchar2,
1389: approvalTypeDescriptionOut out nocopy varchar2,
1390: approvalDescriptionOut out nocopy varchar2) as
1391: approvalTypeNames ame_util.stringList;
1392: approvalTypeDescriptions ame_util.stringList;
1393: approvalDescriptions ame_util.stringList;
1394: begin
1395: ame_api3.getRuleDetails1(ruleIdIn => ruleIdIn,
1396: ruleTypeOut => ruleTypeOut,
1389: approvalTypeDescriptionOut out nocopy varchar2,
1390: approvalDescriptionOut out nocopy varchar2) as
1391: approvalTypeNames ame_util.stringList;
1392: approvalTypeDescriptions ame_util.stringList;
1393: approvalDescriptions ame_util.stringList;
1394: begin
1395: ame_api3.getRuleDetails1(ruleIdIn => ruleIdIn,
1396: ruleTypeOut => ruleTypeOut,
1397: ruleDescriptionOut => ruleDescriptionOut,
1409: approvalDescriptionOut := approvalDescriptions(1);
1410: end if;
1411: exception
1412: when others then
1413: ame_util.runtimeException(packageNameIn => 'ame_api',
1414: routineNameIn => 'getRuleDetails1',
1415: exceptionNumberIn => sqlcode,
1416: exceptionStringIn => sqlerrm);
1417: conditionIdsOut.delete;
1419: end getRuleDetails1;
1420: procedure getRuleDetails2(ruleIdIn in integer,
1421: ruleTypeOut out nocopy varchar2,
1422: ruleDescriptionOut out nocopy varchar2,
1423: conditionDescriptionsOut out nocopy ame_util.longestStringList,
1424: approvalTypeNameOut out nocopy varchar2,
1425: approvalTypeDescriptionOut out nocopy varchar2,
1426: approvalDescriptionOut out nocopy varchar2) as
1427: approvalTypeNames ame_util.stringList;
1423: conditionDescriptionsOut out nocopy ame_util.longestStringList,
1424: approvalTypeNameOut out nocopy varchar2,
1425: approvalTypeDescriptionOut out nocopy varchar2,
1426: approvalDescriptionOut out nocopy varchar2) as
1427: approvalTypeNames ame_util.stringList;
1428: approvalTypeDescriptions ame_util.stringList;
1429: approvalDescriptions ame_util.stringList;
1430: begin
1431: ame_api3.getRuleDetails2(ruleIdIn => ruleIdIn,
1424: approvalTypeNameOut out nocopy varchar2,
1425: approvalTypeDescriptionOut out nocopy varchar2,
1426: approvalDescriptionOut out nocopy varchar2) as
1427: approvalTypeNames ame_util.stringList;
1428: approvalTypeDescriptions ame_util.stringList;
1429: approvalDescriptions ame_util.stringList;
1430: begin
1431: ame_api3.getRuleDetails2(ruleIdIn => ruleIdIn,
1432: ruleTypeOut => ruleTypeOut,
1425: approvalTypeDescriptionOut out nocopy varchar2,
1426: approvalDescriptionOut out nocopy varchar2) as
1427: approvalTypeNames ame_util.stringList;
1428: approvalTypeDescriptions ame_util.stringList;
1429: approvalDescriptions ame_util.stringList;
1430: begin
1431: ame_api3.getRuleDetails2(ruleIdIn => ruleIdIn,
1432: ruleTypeOut => ruleTypeOut,
1433: ruleDescriptionOut => ruleDescriptionOut,
1445: approvalDescriptionOut := approvalDescriptions(1);
1446: end if;
1447: exception
1448: when others then
1449: ame_util.runtimeException(packageNameIn => 'ame_api',
1450: routineNameIn => 'getRuleDetails2',
1451: exceptionNumberIn => sqlcode,
1452: exceptionStringIn => sqlerrm);
1453: conditionDescriptionsOut.delete;
1455: end getRuleDetails2;
1456: procedure getRuleDetails3(ruleIdIn in integer,
1457: ruleTypeOut out nocopy varchar2,
1458: ruleDescriptionOut out nocopy varchar2,
1459: conditionIdsOut out nocopy ame_util.idList,
1460: conditionDescriptionsOut out nocopy ame_util.longestStringList,
1461: conditionHasLOVsOut out nocopy ame_util.charList,
1462: /* Each value is ame_util.booleanTrue or ame_util.booleanFalse. */
1463: approvalTypeNameOut out nocopy varchar2,
1456: procedure getRuleDetails3(ruleIdIn in integer,
1457: ruleTypeOut out nocopy varchar2,
1458: ruleDescriptionOut out nocopy varchar2,
1459: conditionIdsOut out nocopy ame_util.idList,
1460: conditionDescriptionsOut out nocopy ame_util.longestStringList,
1461: conditionHasLOVsOut out nocopy ame_util.charList,
1462: /* Each value is ame_util.booleanTrue or ame_util.booleanFalse. */
1463: approvalTypeNameOut out nocopy varchar2,
1464: approvalTypeDescriptionOut out nocopy varchar2,
1457: ruleTypeOut out nocopy varchar2,
1458: ruleDescriptionOut out nocopy varchar2,
1459: conditionIdsOut out nocopy ame_util.idList,
1460: conditionDescriptionsOut out nocopy ame_util.longestStringList,
1461: conditionHasLOVsOut out nocopy ame_util.charList,
1462: /* Each value is ame_util.booleanTrue or ame_util.booleanFalse. */
1463: approvalTypeNameOut out nocopy varchar2,
1464: approvalTypeDescriptionOut out nocopy varchar2,
1465: approvalDescriptionOut out nocopy varchar2) as
1458: ruleDescriptionOut out nocopy varchar2,
1459: conditionIdsOut out nocopy ame_util.idList,
1460: conditionDescriptionsOut out nocopy ame_util.longestStringList,
1461: conditionHasLOVsOut out nocopy ame_util.charList,
1462: /* Each value is ame_util.booleanTrue or ame_util.booleanFalse. */
1463: approvalTypeNameOut out nocopy varchar2,
1464: approvalTypeDescriptionOut out nocopy varchar2,
1465: approvalDescriptionOut out nocopy varchar2) as
1466: approvalTypeNames ame_util.stringList;
1462: /* Each value is ame_util.booleanTrue or ame_util.booleanFalse. */
1463: approvalTypeNameOut out nocopy varchar2,
1464: approvalTypeDescriptionOut out nocopy varchar2,
1465: approvalDescriptionOut out nocopy varchar2) as
1466: approvalTypeNames ame_util.stringList;
1467: approvalTypeDescriptions ame_util.stringList;
1468: approvalDescriptions ame_util.stringList;
1469: begin
1470: ame_api3.getRuleDetails3(ruleIdIn => ruleIdIn,
1463: approvalTypeNameOut out nocopy varchar2,
1464: approvalTypeDescriptionOut out nocopy varchar2,
1465: approvalDescriptionOut out nocopy varchar2) as
1466: approvalTypeNames ame_util.stringList;
1467: approvalTypeDescriptions ame_util.stringList;
1468: approvalDescriptions ame_util.stringList;
1469: begin
1470: ame_api3.getRuleDetails3(ruleIdIn => ruleIdIn,
1471: ruleTypeOut => ruleTypeOut,
1464: approvalTypeDescriptionOut out nocopy varchar2,
1465: approvalDescriptionOut out nocopy varchar2) as
1466: approvalTypeNames ame_util.stringList;
1467: approvalTypeDescriptions ame_util.stringList;
1468: approvalDescriptions ame_util.stringList;
1469: begin
1470: ame_api3.getRuleDetails3(ruleIdIn => ruleIdIn,
1471: ruleTypeOut => ruleTypeOut,
1472: ruleDescriptionOut => ruleDescriptionOut,
1486: approvalDescriptionOut := approvalDescriptions(1);
1487: end if;
1488: exception
1489: when others then
1490: ame_util.runtimeException(packageNameIn => 'ame_api',
1491: routineNameIn => 'getRuleDetails3',
1492: exceptionNumberIn => sqlcode,
1493: exceptionStringIn => sqlerrm);
1494: conditionIdsOut.delete;
1507: transactionTypeIn => transactionTypeIn,
1508: recordApproverListIn => recordApproverListIn);
1509: exception
1510: when others then
1511: ame_util.runtimeException(packageNameIn => 'ame_api',
1512: routineNameIn => 'initializeApprovalProcess',
1513: exceptionNumberIn => sqlcode,
1514: exceptionStringIn => sqlerrm);
1515: raise;
1515: raise;
1516: end initializeApprovalProcess;
1517: procedure insertApprover(applicationIdIn in integer,
1518: transactionIdIn in varchar2,
1519: approverIn in ame_util.approverRecord,
1520: positionIn in integer,
1521: orderIn in ame_util.orderRecord,
1522: transactionTypeIn in varchar2 default null) as
1523: approver ame_util.approverRecord2;
1517: procedure insertApprover(applicationIdIn in integer,
1518: transactionIdIn in varchar2,
1519: approverIn in ame_util.approverRecord,
1520: positionIn in integer,
1521: orderIn in ame_util.orderRecord,
1522: transactionTypeIn in varchar2 default null) as
1523: approver ame_util.approverRecord2;
1524: i integer;
1525: tempParameter ame_util.longestStringType;
1519: approverIn in ame_util.approverRecord,
1520: positionIn in integer,
1521: orderIn in ame_util.orderRecord,
1522: transactionTypeIn in varchar2 default null) as
1523: approver ame_util.approverRecord2;
1524: i integer;
1525: tempParameter ame_util.longestStringType;
1526: insertion ame_util.insertionRecord2;
1527: begin
1521: orderIn in ame_util.orderRecord,
1522: transactionTypeIn in varchar2 default null) as
1523: approver ame_util.approverRecord2;
1524: i integer;
1525: tempParameter ame_util.longestStringType;
1526: insertion ame_util.insertionRecord2;
1527: begin
1528: check11510(applicationIdIn => applicationIdIn,
1529: transactionTypeIn => transactionTypeIn);
1522: transactionTypeIn in varchar2 default null) as
1523: approver ame_util.approverRecord2;
1524: i integer;
1525: tempParameter ame_util.longestStringType;
1526: insertion ame_util.insertionRecord2;
1527: begin
1528: check11510(applicationIdIn => applicationIdIn,
1529: transactionTypeIn => transactionTypeIn);
1530: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1526: insertion ame_util.insertionRecord2;
1527: begin
1528: check11510(applicationIdIn => applicationIdIn,
1529: transactionTypeIn => transactionTypeIn);
1530: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1531: itemIdIn => transactionIdIn,
1532: approverRecord2Out =>approver);
1533: ame_util.ordRecordToInsRecord2(orderRecordIn => orderIn,
1534: transactionIdIn => transactionIdIn,
1529: transactionTypeIn => transactionTypeIn);
1530: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1531: itemIdIn => transactionIdIn,
1532: approverRecord2Out =>approver);
1533: ame_util.ordRecordToInsRecord2(orderRecordIn => orderIn,
1534: transactionIdIn => transactionIdIn,
1535: approverIn => approverIn,
1536: insertionRecord2Out => insertion );
1537: approver.action_type_id := insertion.action_type_id;
1543: positionIn => positionIn,
1544: insertionIn =>insertion );
1545: exception
1546: when others then
1547: ame_util.runtimeException(packageNameIn => 'ame_api',
1548: routineNameIn => 'insertApprover',
1549: exceptionNumberIn => sqlcode,
1550: exceptionStringIn => sqlerrm);
1551: raise;
1551: raise;
1552: end insertApprover;
1553: procedure setFirstAuthorityApprover(applicationIdIn in integer,
1554: transactionIdIn in varchar2,
1555: approverIn in ame_util.approverRecord,
1556: transactionTypeIn in varchar2 default null) as
1557: approver ame_util.approverRecord2;
1558: approversCount integer;
1559: approvalProcessCompleteYN ame_util.charType;
1553: procedure setFirstAuthorityApprover(applicationIdIn in integer,
1554: transactionIdIn in varchar2,
1555: approverIn in ame_util.approverRecord,
1556: transactionTypeIn in varchar2 default null) as
1557: approver ame_util.approverRecord2;
1558: approversCount integer;
1559: approvalProcessCompleteYN ame_util.charType;
1560: approvers ame_util.approversTable2;
1561: chainToBeInserted boolean;
1555: approverIn in ame_util.approverRecord,
1556: transactionTypeIn in varchar2 default null) as
1557: approver ame_util.approverRecord2;
1558: approversCount integer;
1559: approvalProcessCompleteYN ame_util.charType;
1560: approvers ame_util.approversTable2;
1561: chainToBeInserted boolean;
1562: currentActionTypeId integer;
1563: currentGroupOrChainId integer;
1556: transactionTypeIn in varchar2 default null) as
1557: approver ame_util.approverRecord2;
1558: approversCount integer;
1559: approvalProcessCompleteYN ame_util.charType;
1560: approvers ame_util.approversTable2;
1561: chainToBeInserted boolean;
1562: currentActionTypeId integer;
1563: currentGroupOrChainId integer;
1564: errorCode integer;
1561: chainToBeInserted boolean;
1562: currentActionTypeId integer;
1563: currentGroupOrChainId integer;
1564: errorCode integer;
1565: errorMessage ame_util.longestStringType;
1566: newChainFound boolean;
1567: tempCount integer;
1568: tooLateException exception;
1569: begin
1598: currentActionTypeId := null;
1599: currentGroupOrChainId := null;
1600: for i in 1 .. approvers.count loop
1601: newChainFound := false;
1602: if (approvers(i).authority = ame_util.authorityApprover and
1603: approvers(i).item_class = ame_util.headerItemClassName and
1604: approvers(i).item_id = transactionIdIn ) then
1605: if (currentActionTypeId is null and
1606: currentGroupOrChainId is null ) then
1599: currentGroupOrChainId := null;
1600: for i in 1 .. approvers.count loop
1601: newChainFound := false;
1602: if (approvers(i).authority = ame_util.authorityApprover and
1603: approvers(i).item_class = ame_util.headerItemClassName and
1604: approvers(i).item_id = transactionIdIn ) then
1605: if (currentActionTypeId is null and
1606: currentGroupOrChainId is null ) then
1607: currentActionTypeId := approvers(i).action_type_id;
1625: from ame_approver_type_usages
1626: where action_type_id = currentActionTypeId
1627: and approver_type_id not in (select approver_type_id
1628: from ame_approver_types
1629: where orig_system = ame_util.perOrigSystem) ;
1630: if tempCount = 0 then
1631: chainToBeInserted := true;
1632: else
1633: chainToBeInserted := false;
1638: when others then
1639: chainToBeInserted := false;
1640: end;
1641: if chainToBeInserted then
1642: /* convert approverIn to ame_util.approverRecord2, set action_type_id
1643: and group_or_chain_id. Call ame_api2.setFirstAuthorityApprover*/
1644: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1645: itemIdIn => transactionIdIn,
1646: approverRecord2Out =>approver);
1640: end;
1641: if chainToBeInserted then
1642: /* convert approverIn to ame_util.approverRecord2, set action_type_id
1643: and group_or_chain_id. Call ame_api2.setFirstAuthorityApprover*/
1644: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1645: itemIdIn => transactionIdIn,
1646: approverRecord2Out =>approver);
1647: approver.action_type_id := currentActionTypeId;
1648: approver.group_or_chain_id := currentGroupOrChainId;
1657: end loop;
1658: exception
1659: when tooLateException then
1660: errorCode := -20001;
1661: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
1662: messageNameIn => 'AME_400244_API_CHN_AUTH_TRANS');
1663: ame_util.runtimeException(packageNameIn => 'ame_api',
1664: routineNameIn => 'setFirstAuthorityApprover',
1665: exceptionNumberIn => errorCode,
1659: when tooLateException then
1660: errorCode := -20001;
1661: errorMessage := ame_util.getMessage(applicationShortNameIn =>'PER',
1662: messageNameIn => 'AME_400244_API_CHN_AUTH_TRANS');
1663: ame_util.runtimeException(packageNameIn => 'ame_api',
1664: routineNameIn => 'setFirstAuthorityApprover',
1665: exceptionNumberIn => errorCode,
1666: exceptionStringIn => errorMessage);
1667: raise_application_error(errorCode,
1666: exceptionStringIn => errorMessage);
1667: raise_application_error(errorCode,
1668: errorMessage);
1669: when others then
1670: ame_util.runtimeException(packageNameIn => 'ame_api',
1671: routineNameIn => 'setFirstAuthorityApprover',
1672: exceptionNumberIn => sqlcode,
1673: exceptionStringIn => sqlerrm);
1674: raise;
1674: raise;
1675: end setFirstAuthorityApprover;
1676: procedure updateApprovalStatus(applicationIdIn in integer,
1677: transactionIdIn in varchar2,
1678: approverIn in ame_util.approverRecord,
1679: transactionTypeIn in varchar2 default null,
1680: forwardeeIn in ame_util.approverRecord default ame_util.emptyApproverRecord) as
1681: approver ame_util.approverRecord2;
1682: forwardee ame_util.approverRecord2;
1676: procedure updateApprovalStatus(applicationIdIn in integer,
1677: transactionIdIn in varchar2,
1678: approverIn in ame_util.approverRecord,
1679: transactionTypeIn in varchar2 default null,
1680: forwardeeIn in ame_util.approverRecord default ame_util.emptyApproverRecord) as
1681: approver ame_util.approverRecord2;
1682: forwardee ame_util.approverRecord2;
1683: begin
1684: check11510(applicationIdIn => applicationIdIn,
1677: transactionIdIn in varchar2,
1678: approverIn in ame_util.approverRecord,
1679: transactionTypeIn in varchar2 default null,
1680: forwardeeIn in ame_util.approverRecord default ame_util.emptyApproverRecord) as
1681: approver ame_util.approverRecord2;
1682: forwardee ame_util.approverRecord2;
1683: begin
1684: check11510(applicationIdIn => applicationIdIn,
1685: transactionTypeIn => transactionTypeIn);
1678: approverIn in ame_util.approverRecord,
1679: transactionTypeIn in varchar2 default null,
1680: forwardeeIn in ame_util.approverRecord default ame_util.emptyApproverRecord) as
1681: approver ame_util.approverRecord2;
1682: forwardee ame_util.approverRecord2;
1683: begin
1684: check11510(applicationIdIn => applicationIdIn,
1685: transactionTypeIn => transactionTypeIn);
1686: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1682: forwardee ame_util.approverRecord2;
1683: begin
1684: check11510(applicationIdIn => applicationIdIn,
1685: transactionTypeIn => transactionTypeIn);
1686: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1687: itemIdIn => transactionIdIn,
1688: approverRecord2Out =>approver);
1689: if (forwardeeIn.person_id is null and forwardeeIn.user_id is null) then
1690: forwardee := ame_util.emptyApproverRecord2;
1686: ame_util.apprRecordToApprRecord2(approverRecordIn => approverIn,
1687: itemIdIn => transactionIdIn,
1688: approverRecord2Out =>approver);
1689: if (forwardeeIn.person_id is null and forwardeeIn.user_id is null) then
1690: forwardee := ame_util.emptyApproverRecord2;
1691: else
1692: ame_util.apprRecordToApprRecord2(approverRecordIn => forwardeeIn,
1693: itemIdIn => transactionIdIn,
1694: approverRecord2Out =>forwardee);
1688: approverRecord2Out =>approver);
1689: if (forwardeeIn.person_id is null and forwardeeIn.user_id is null) then
1690: forwardee := ame_util.emptyApproverRecord2;
1691: else
1692: ame_util.apprRecordToApprRecord2(approverRecordIn => forwardeeIn,
1693: itemIdIn => transactionIdIn,
1694: approverRecord2Out =>forwardee);
1695: end if;
1696: ame_api2.updateApprovalStatus(applicationIdIn => applicationIdIn,
1699: transactionTypeIn => transactionTypeIn,
1700: forwardeeIn => forwardee);
1701: exception
1702: when others then
1703: ame_util.runtimeException(packageNameIn => 'ame_api',
1704: routineNameIn => 'updateApprovalStatus',
1705: exceptionNumberIn => sqlcode,
1706: exceptionStringIn => sqlerrm);
1707: raise;
1711: approvalStatusIn in varchar2,
1712: approverPersonIdIn in integer default null,
1713: approverUserIdIn in integer default null,
1714: transactionTypeIn in varchar2 default null,
1715: forwardeeIn in ame_util.approverRecord default ame_util.emptyApproverRecord,
1716: approvalTypeIdIn in integer default null,
1717: groupOrChainIdIn in integer default null,
1718: occurrenceIn in integer default null) as
1719: forwardee ame_util.approverRecord2;
1715: forwardeeIn in ame_util.approverRecord default ame_util.emptyApproverRecord,
1716: approvalTypeIdIn in integer default null,
1717: groupOrChainIdIn in integer default null,
1718: occurrenceIn in integer default null) as
1719: forwardee ame_util.approverRecord2;
1720: approverOrigSystem ame_util.stringType;
1721: approverOrigSystemId integer;
1722: approverName ame_util.stringType;
1723: begin
1716: approvalTypeIdIn in integer default null,
1717: groupOrChainIdIn in integer default null,
1718: occurrenceIn in integer default null) as
1719: forwardee ame_util.approverRecord2;
1720: approverOrigSystem ame_util.stringType;
1721: approverOrigSystemId integer;
1722: approverName ame_util.stringType;
1723: begin
1724: check11510(applicationIdIn => applicationIdIn,
1718: occurrenceIn in integer default null) as
1719: forwardee ame_util.approverRecord2;
1720: approverOrigSystem ame_util.stringType;
1721: approverOrigSystemId integer;
1722: approverName ame_util.stringType;
1723: begin
1724: check11510(applicationIdIn => applicationIdIn,
1725: transactionTypeIn => transactionTypeIn);
1726: if approverPersonIdIn is not null then
1723: begin
1724: check11510(applicationIdIn => applicationIdIn,
1725: transactionTypeIn => transactionTypeIn);
1726: if approverPersonIdIn is not null then
1727: approverOrigSystem := ame_util.perOrigSystem;
1728: approverOrigSystemId := approverPersonIdIn;
1729: else
1730: approverOrigSystem := ame_util.fndUserOrigSystem;
1731: approverOrigSystemId := approverUserIdIn;
1726: if approverPersonIdIn is not null then
1727: approverOrigSystem := ame_util.perOrigSystem;
1728: approverOrigSystemId := approverPersonIdIn;
1729: else
1730: approverOrigSystem := ame_util.fndUserOrigSystem;
1731: approverOrigSystemId := approverUserIdIn;
1732: end if;
1733: approverName := ame_approver_type_pkg.getWfRolesName(origSystemIn => approverOrigSystem,
1734: origSystemIdIn => approverOrigSystemId);
1732: end if;
1733: approverName := ame_approver_type_pkg.getWfRolesName(origSystemIn => approverOrigSystem,
1734: origSystemIdIn => approverOrigSystemId);
1735: if (forwardeeIn.person_id is null and forwardeeIn.user_id is null) then
1736: forwardee := ame_util.emptyApproverRecord2;
1737: else
1738: ame_util.apprRecordToApprRecord2(approverRecordIn => forwardeeIn,
1739: itemIdIn => transactionIdIn,
1740: approverRecord2Out =>forwardee);
1734: origSystemIdIn => approverOrigSystemId);
1735: if (forwardeeIn.person_id is null and forwardeeIn.user_id is null) then
1736: forwardee := ame_util.emptyApproverRecord2;
1737: else
1738: ame_util.apprRecordToApprRecord2(approverRecordIn => forwardeeIn,
1739: itemIdIn => transactionIdIn,
1740: approverRecord2Out =>forwardee);
1741: end if;
1742: ame_api2.updateApprovalStatus2(applicationIdIn => applicationIdIn,
1743: transactionTypeIn => transactionTypeIn,
1744: transactionIdIn => transactionIdIn,
1745: approvalStatusIn => approvalStatusIn,
1746: approverNameIn=> approverName,
1747: itemClassIn => ame_util.headerItemClassName,
1748: itemIdIn => transactionIdIn,
1749: actionTypeIdIn => approvalTypeIdIn,
1750: groupOrChainIdIn => groupOrChainIdIn,
1751: occurrenceIn => occurrenceIn,
1751: occurrenceIn => occurrenceIn,
1752: forwardeeIn => forwardee);
1753: exception
1754: when others then
1755: ame_util.runtimeException(packageNameIn => 'ame_api',
1756: routineNameIn => 'updateApprovalStatus2',
1757: exceptionNumberIn => sqlcode,
1758: exceptionStringIn => sqlerrm);
1759: raise;