[Home] [Help]
PACKAGE BODY: APPS.AME_TEST_UTILITY_PKG
Source
1 package body ame_test_utility_pkg as
2 /* $Header: ametestutility.pkb 120.4.12010000.2 2008/08/05 05:15:44 ubhat ship $ */
3 --+
4 function isValidApprover(attributeIdIn in number
5 ,attributeValueIn in varchar2)
6 return varchar2 as
7 approverTypeId number;
8 approverName wf_roles.display_name%type;
9 begin
10 approverTypeId := ame_attribute_pkg.getApproverTypeId
11 (attributeIdIn => attributeIdIn);
12 if(approverTypeId is not null and attributeValueIn is not null)
13 then
14 approverName := AME_APPROVER_TYPE_PKG.getWfRolesName
15 (origSystemIn => approverTypeId
16 ,origSystemIdIn => attributeValueIn
17 ,raiseNoDataFoundIn => 'true');
18 end if;
19 return '';
20 exception
21 when others then
22 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
23 routineNameIn => 'isValidApprover',
24 exceptionNumberIn => sqlcode,
25 exceptionStringIn => sqlerrm);
26 return sqlerrm || ' ';
27 end;
28 --+
29 function getActionTypeName(actionTypeIdIn in integer) return varchar2 as
30 actionTypeName ame_action_types_vl.user_action_type_name%type;
31 begin
32 if (actionTypeIdIn = -1) then
33 return ame_util.getMessage('PER','AME_400637_TEXT_NONE');
34 end if;
35 select user_action_type_name
36 into actionTypeName
37 from ame_action_types_vl
38 where action_type_id = actionTypeIdIn
39 and sysdate between start_date
40 and nvl(end_date - ame_util.oneSecond, sysdate);
41 return actionTypeName;
42 exception
43 when others then
44 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
45 routineNameIn => 'getActionTypeName',
46 exceptionNumberIn => sqlcode,
47 exceptionStringIn => sqlerrm);
48 raise;
49 return actionTypeName;
50 end getActionTypeName;
51 --+
52 function getApproverGroupName(groupIdIn in integer) return varchar2 as
53 actionTypeName ame_action_types_vl.user_action_type_name%type;
54 begin
55 select user_approval_group_name
56 into actionTypeName
57 from ame_approval_groups_vl
58 where approval_group_id = groupIdIn
59 and sysdate between start_date and nvl(end_date - ame_util.oneSecond, sysdate);
60 return actionTypeName;
61 exception
62 when others then
63 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
64 routineNameIn => 'getApproverGroupName',
65 exceptionNumberIn => sqlcode,
66 exceptionStringIn => sqlerrm);
67 raise;
68 return actionTypeName;
69 end getApproverGroupName;
70 --+
71 function getApprovalStatusDesc(statusIn in varchar2) return varchar2 as
72 approvalStatusDesc fnd_lookups.meaning%type;
73 begin
74 return statusIn;
75 exception
76 when others then
77 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
78 routineNameIn => 'getApprovalStatusDesc',
79 exceptionNumberIn => sqlcode,
80 exceptionStringIn => sqlerrm);
81 raise;
82 return statusIn;
83 end getApprovalStatusDesc;
84 --+
85 function getApprovalCategoryDesc(categoryIn in varchar2) return varchar2 as
86 approvalCategoryDesc fnd_lookups.meaning%type;
87 begin
88 select meaning
89 into approvalCategoryDesc
90 from fnd_lookups fl
91 where fl.lookup_type = 'AME_APPROVER_CATEGORY'
92 and fl.enabled_flag = 'Y'
93 and fl.lookup_code = categoryIn
94 and trunc(sysdate) between start_date_active
95 and nvl(end_date_active, trunc(sysdate));
96 return approvalCategoryDesc;
97 exception
98 when no_data_found then
99 return null;
100 when others then
101 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
102 routineNameIn => 'getApprovalCategoryDesc',
103 exceptionNumberIn => sqlcode,
104 exceptionStringIn => sqlerrm);
105 raise;
106 return approvalCategoryDesc;
107 end getApprovalCategoryDesc;
108 --+
109 function getAuthorityDesc(authorityIn in varchar2) return varchar2 as
110 authorityDesc fnd_lookups.meaning%type;
111 begin
112 select meaning
113 into authorityDesc
114 from fnd_lookups fl
115 where fl.lookup_type = 'AME_SUBLIST_TYPES'
116 and fl.enabled_flag = 'Y'
117 and fl.lookup_code = authorityIn
118 and trunc(sysdate) between start_date_active
119 and nvl(end_date_active, trunc(sysdate));
120 return(authorityDesc);
121 exception
122 when others then
123 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
124 routineNameIn => 'getAuthorityDesc',
125 exceptionNumberIn => sqlcode,
126 exceptionStringIn => sqlerrm);
127 raise;
128 return 'Not a valid';
129 end getAuthorityDesc;
130 --+
131 function getApiInsertionDesc(apiInsertionIn in varchar2) return varchar2 as
132 apiInsertionDesc fnd_lookups.meaning%type;
133 begin
134 return apiInsertionIn;
135 exception
136 when others then
137 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
138 routineNameIn => 'getApiInsertionDesc',
139 exceptionNumberIn => sqlcode,
140 exceptionStringIn => sqlerrm);
141 raise;
142 return apiInsertionIn;
143 end getApiInsertionDesc;
144 --+
145 function getOrigSystemDesc(origSystemIn in varchar2) return varchar2 as
146 origSystemDesc fnd_lookups.meaning%type;
147 begin
148 select meaning
149 into origSystemDesc
150 from fnd_lookups fl
151 where fl.lookup_type = 'FND_WF_ORIG_SYSTEMS'
152 and fl.lookup_code = origSystemIn
153 and trunc(sysdate) between start_date_active
154 and nvl(end_date_active, trunc(sysdate));
155 return origSystemDesc;
156 exception
157 when others then
158 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
159 routineNameIn => 'getOrigSystemDesc',
160 exceptionNumberIn => sqlcode,
161 exceptionStringIn => sqlerrm);
162 raise;
163 return origSystemDesc;
164 end getOrigSystemDesc;
165 --+
166 function getRuleTypeDesc(ruleTypeIn in varchar2) return varchar2 as
167 ruleTypeDesc fnd_lookups.meaning%type;
168 begin
169 select meaning
170 into ruleTypeDesc
171 from fnd_lookups fl
172 where fl.lookup_type = 'AME_RULE_TYPE'
173 and fl.enabled_flag = 'Y'
174 and fl.lookup_code = ruleTypeIn
175 and trunc(sysdate) between start_date_active
176 and nvl(end_date_active, trunc(sysdate));
177 return ruleTypeDesc;
178 exception
179 when others then
180 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
181 routineNameIn => 'getRuleTypeDesc',
182 exceptionNumberIn => sqlcode,
183 exceptionStringIn => sqlerrm);
184 raise;
185 return ruleTypeDesc;
186 end getRuleTypeDesc;
187 --+
188 function getRuleType(ruleIdIn in integer
189 ,effectiveDateIn in date) return varchar2 as
190 ruleTypeCode varchar2(1);
191 ruleTypeDesc fnd_lookups.meaning%type;
192 begin
193 select rule_type
194 into ruleTypeCode
195 from ame_rules
196 where rule_id = ruleIdIn
197 and effectiveDateIn between start_date
198 and nvl(end_date - ame_util.oneSecond, sysdate);
199 return getApprovalCategoryDesc(ruleTypeCode);
200 exception
201 when others then
202 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
203 routineNameIn => 'getRuleType',
204 exceptionNumberIn => sqlcode,
205 exceptionStringIn => sqlerrm);
206 raise;
207 return getApprovalCategoryDesc(ruleTypeCode);
208 end getRuleType;
209 --+
210 function getRuleCategory(ruleIdIn in integer
211 ,applicationIdIn in integer
212 ,effectiveDateIn in date) return varchar2 as
213 categoryCode varchar2(1);
214 cagegoryDesc fnd_lookups.meaning%type;
215 begin
216 begin
217 select approver_category
218 into categoryCode
219 from ame_rule_usages
220 where rule_id = ruleIdIn
221 and item_id = applicationIdIn
222 and effectiveDateIn between start_date
223 and nvl(end_date - ame_util.oneSecond, sysdate);
224 exception
225 when no_data_found then
226 categoryCode := 'A';
227 end;
228 return getApprovalCategoryDesc(categoryCode);
229 exception
230 when others then
231 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
232 routineNameIn => 'getRuleCategory',
233 exceptionNumberIn => sqlcode,
234 exceptionStringIn => sqlerrm);
235 raise;
236 return null;
237 end getRuleCategory;
238 --+
239 function getConditionsList(ruleIdIn in integer
240 ,effectiveDateIn in date) return varchar2 as
241 cursor getCondtitionsCursor(ruleIdIn in integer
242 ,effectiveDateIn in date) is
243 select condition_id
244 from ame_condition_usages
245 where rule_id = ruleIdIn
246 and effectiveDateIn between start_date
247 and nvl(end_date - ame_util.oneSecond, sysdate);
248 conditionsList ame_util.longestStringType;
249 conditionIdList ame_util.idList;
250 begin
251 open getCondtitionsCursor(ruleIdIn => ruleIdIn
252 ,effectiveDateIn => effectiveDateIn);
253 fetch getCondtitionsCursor bulk collect
254 into conditionIdList;
255 close getCondtitionsCursor;
256 for x in 1 .. conditionIdList.count loop
257 if x > 1 then
258 conditionsList := conditionsList || fnd_global.local_chr(ascii_chr => 13);
259 end if;
260 conditionsList := conditionsList
261 || ame_utility_pkg.get_condition_description(p_condition_id => conditionIdList(x));
262 end loop;
263 return conditionsList;
264 exception
265 when others then
266 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
267 routineNameIn => 'getConditionsList',
268 exceptionNumberIn => sqlcode,
269 exceptionStringIn => sqlerrm);
270 raise;
271 return null;
272 end getConditionsList;
273 --+
274 function getItemClassNameById(itemClassIdIn in integer) return varchar2 as
275 itemName ame_item_classes.name%type;
276 begin
277 select user_item_class_name
278 into itemName
279 from ame_item_classes_vl
280 where item_class_id = itemClassIdIn and
281 sysdate between start_date and
282 nvl(end_date - ame_util.oneSecond, sysdate) ;
283 return(itemName);
284 exception
285 when others then
286 rollback;
287 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
288 routineNameIn => 'getItemClassNameById',
289 exceptionNumberIn => sqlcode,
290 exceptionStringIn => sqlerrm);
291 raise;
292 return null;
293 end getItemClassNameById;
294 --+
295 function getItemClassName(itemClassNameIn in varchar2) return varchar2 as
296 itemName ame_item_classes.name%type;
297 begin
298 select user_item_class_name
299 into itemName
300 from ame_item_classes_vl
301 where trim(name) = trim(itemClassNameIn) and
302 sysdate between start_date and
303 nvl(end_date - ame_util.oneSecond, sysdate) ;
304 return(itemName);
305 exception
306 when others then
307 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
308 routineNameIn => 'getItemClassName',
309 exceptionNumberIn => sqlcode,
310 exceptionStringIn => sqlerrm);
311 raise;
312 return null;
313 end getItemClassName;
314 --+
315 function getActionsList(ruleIdIn in integer
316 ,effectiveDateIn in date) return varchar2 as
317 cursor getActionsCursor(ruleIdIn in integer
318 ,effectiveDateIn in date) is
319 select action_id
320 from ame_action_usages
321 where rule_id = ruleIdIn
322 and effectiveDateIn between start_date
323 and nvl(end_date - ame_util.oneSecond, sysdate);
324 actionsList ame_util.longestStringType;
325 actionIdList ame_util.idList;
326 begin
327 open getActionsCursor(ruleIdIn => ruleIdIn
328 ,effectiveDateIn => effectiveDateIn);
329 fetch getActionsCursor bulk collect
330 into actionIdList;
331 close getActionsCursor;
332 for x in 1 .. actionIdList.count loop
333 if x <> 1 then
334 actionsList := actionsList || fnd_global.local_chr(ascii_chr => 13);
335 end if;
336 actionsList := actionsList
337 || ame_utility_pkg.get_action_description(p_action_id => actionIdList(x));
338 end loop;
339 return actionsList;
340 exception
341 when others then
342 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
343 routineNameIn => 'getActionsList',
344 exceptionNumberIn => sqlcode,
345 exceptionStringIn => sqlerrm);
346 raise;
347 return null;
348 end getActionsList;
349 --+
350 function getRuleDescription(ruleIdIn in integer,effectiveRuleDate in date) return varchar2 as
351 ruleDesc ame_rules_vl.description%type;
352 begin
353 select description
354 into ruleDesc
355 from ame_rules_vl
356 where rule_id = ruleIdIn
357 and effectiveRuleDate between start_date
358 and nvl(end_date - ame_util.oneSecond, sysdate);
359 return ruleDesc;
360 exception
361 when others then
362 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
363 routineNameIn => 'getRuleDescription',
364 exceptionNumberIn => sqlcode,
365 exceptionStringIn => sqlerrm);
366 raise;
367 return null;
368 end getRuleDescription;
369 --+
370 function getSourceDesc(sourceIn in varchar2, effectiveRuleDate in date) return varchar2 as
371 sourceDesc ame_util.longestStringType;
372 ruleIdList ame_util.idList;
373 sourceDescription ame_util.stringType;
374 begin
375 ame_util.parseSourceValue(sourceValueIn => sourceIn
376 ,sourceDescriptionOut => sourceDescription
377 ,ruleIdListOut => ruleIdList);
378 for x in 1 .. ruleIdList.count loop
379 if x > 1 then
380 sourceDesc := sourceDesc || fnd_global.local_chr(ascii_chr => 13);
381 end if;
382 sourceDesc := sourceDesc || getRuleDescription(ruleIdList(x),effectiveRuleDate);
383 end loop;
384 return sourceDesc;
385 exception
386 when others then
387 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
388 routineNameIn => 'getSourceDesc',
389 exceptionNumberIn => sqlcode,
390 exceptionStringIn => sqlerrm);
391 raise;
392 return null;
393 end getSourceDesc;
394 --+
395 function isAttributesExist(applicationIdIn in number
396 ,itemClassIdIn in number)
397 return varchar2 as
398 retValue varchar2(10) := 'Disabled';
399 atrCount number;
400 begin
401 select count(1)
402 into atrCount
403 from ame_attributes,
404 ame_attribute_usages
405 where ame_attribute_usages.attribute_id = ame_attributes.attribute_id
406 and ame_attribute_usages.application_id = applicationIdIn
407 and ame_attributes.item_class_id = itemClassIdIn
408 and sysdate between ame_attribute_usages.start_date and
409 nvl(ame_attribute_usages.end_date - ame_util.oneSecond,sysdate)
410 and sysdate between ame_attributes.start_date and
411 nvl(ame_attributes.end_date - ame_util.oneSecond,sysdate);
412 if(atrCount > 0) then
413 retValue := 'Enabled';
414 end if;
415 return retValue;
416 exception
417 When others then
418 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
419 routineNameIn => 'isAttributesExist',
420 exceptionNumberIn => sqlcode,
421 exceptionStringIn => sqlerrm);
422 raise;
423 return retValue;
424 end isAttributesExist;
425 --+
426 /*************************************************************************************
427 procedures
428 *************************************************************************************/
429 procedure setErrorMessage(attributeNameIn in varchar2
430 ,attributeItemTypeIn in varchar2
431 ,itemClassIdIn in number default null
432 ,itemIdIn in varchar2 default null
433 ,approverTypeIdIn in number default null) is
434 itemClassName varchar2(100);
435 begin
436 if attributeItemTypeIn = 'MANDATORY_ATTR' then
437 fnd_message.set_name('PER','AME_400824_INV_MAND_ATTR_USG');
438 fnd_message.set_token('ATTRIBUTE_NAME',attributeNameIn);
439 hr_multi_message.add (p_associated_column1 => 'ATTR_NAME'
440 , p_message_type => hr_multi_message.g_warning_msg);
441 elsif attributeItemTypeIn = 'HEADER_ATTR' then
442 if approverTypeIdIn is not null then
443 fnd_message.set_name('PER','AME_400821_INVAL_APR_ATTR_USG');
444 fnd_message.set_token('ATTRIBUTE_NAME',attributeNameIn);
445 hr_multi_message.add (p_associated_column1 => 'ATTR_NAME');
446 else
447 fnd_message.set_name('PER','AME_400820_INVAL_HDR_ATTR_USG');
448 fnd_message.set_token('ATTRIBUTE_NAME',attributeNameIn);
449 hr_multi_message.add (p_associated_column1 => 'ATTR_NAME'
450 , p_message_type => hr_multi_message.g_warning_msg);
451 end if;
452 else
453 itemClassName := getItemClassNameById(itemClassIdIn=> itemClassIdIn);
454 if approverTypeIdIn is not null then
455 fnd_message.set_name('PER','AME_400823_INV_APR_LN_ATR_USG');
456 fnd_message.set_token('ATTRIBUTE_NAME',attributeNameIn);
457 fnd_message.set_token('ITEM_ID',itemIdIn);
458 fnd_message.set_token('ITEM_CLASS',itemClassName);
459 hr_multi_message.add (p_associated_column1 => 'ATTR_NAME');
460 else
461 fnd_message.set_name('PER','AME_400822_INVAL_LNE_ATTR_USG');
462 fnd_message.set_token('ATTRIBUTE_NAME',attributeNameIn);
463 fnd_message.set_token('ITEM_ID',itemIdIn);
464 fnd_message.set_token('ITEM_CLASS',itemClassName);
465 hr_multi_message.add (p_associated_column1 => 'ATTR_NAME'
466 ,p_message_type => hr_multi_message.g_warning_msg
467 );
468 end if;
469 end if;
470 end setErrorMessage;
471
472 function checkConversionError(attributeNameIn in varchar2
473 ,attributeItemTypeIn in varchar2
474 ,attributeValue1In in varchar2
475 ,attributeValue2In in varchar2 default null
476 ,attributeValue3In in varchar2 default null
477 ,attributeTypeIn in varchar2
478 ,approverTypeIdIn in number default null
479 ,itemClassIdIn in number default null
480 ,itemIdIn in varchar2 default null
481 ) return varchar2 is
482 dummy_num number;
483 dummy_date date;
484 dummy_curr_code boolean := true;
485 dummy_conv_type boolean := true ;
486 begin
487 if attributeTypeIn = ame_util.numberAttributeType then
488 -- number attribute validation
489 begin
490 dummy_num := to_number(attributeValue1In);
491 exception
492 when others then
493 begin
494 if (approverTypeIdIn is not null) then
495 setErrorMessage(attributeNameIn => attributeNameIn
496 ,attributeItemTypeIn => attributeItemTypeIn
497 ,itemIdIn => itemIdIn
498 ,itemClassIdIn => itemClassIdIn
499 ,approverTypeIdIn => approverTypeIdIn);
500 return 'APPR_ATTR_ERROR';
501 else
502 setErrorMessage(attributeNameIn => attributeNameIn
503 ,attributeItemTypeIn => attributeItemTypeIn
504 ,itemClassIdIn => itemClassIdIn
505 ,itemIdIn => itemIdIn
506 );
507 return 'ERROR_EXIST';
508 end if;
509 exception
510 when others then
511 setErrorMessage(attributeNameIn => attributeNameIn
512 ,attributeItemTypeIn => attributeItemTypeIn
513 ,itemClassIdIn => itemClassIdIn
514 ,itemIdIn => itemIdIn
515 );
516 return 'ERROR_EXIST';
517 end;
518 end;
519 elsif attributeTypeIn = ame_util.dateAttributeType then
520 --date validation
521 begin
522 dummy_date := to_date(attributeValue1In, ame_util.versionDateFormatModel);
523 exception
524 when others then
525 setErrorMessage(attributeNameIn => attributeNameIn
526 ,attributeItemTypeIn => attributeItemTypeIn
527 ,itemClassIdIn => itemClassIdIn
528 ,itemIdIn => itemIdIn
529 );
530 return 'ERROR_EXIST';
531 end;
532 elsif attributeTypeIn = ame_util.booleanAttributeType then
533 --boolean attribute validation
534 if trim(attributeValue1In) <> ame_util.booleanAttributeTrue and
535 trim(attributeValue1In) <> ame_util.booleanAttributeFalse then
536 setErrorMessage(attributeNameIn => attributeNameIn
537 ,attributeItemTypeIn => attributeItemTypeIn
538 ,itemClassIdIn => itemClassIdIn
539 ,itemIdIn => itemIdIn
540 );
541 return 'ERROR_EXIST';
542 end if;
543 elsif attributeTypeIn = ame_util.currencyAttributeType then
544 -- Currency attr validation
545 begin
546 dummy_num := to_number(attributeValue1In);
547 dummy_curr_code := ame_util.isCurrencyCodeValid(currencyCodeIn => attributeValue2In);
548 dummy_conv_type := ame_util.isConversionTypeValid(conversionTypeIn => attributeValue3In);
549 if (dummy_curr_code is not null and dummy_curr_code = false) or
550 (dummy_curr_code is not null and dummy_conv_type = false )then
551 setErrorMessage(attributeNameIn => attributeNameIn
552 ,attributeItemTypeIn => attributeItemTypeIn
553 ,itemClassIdIn => itemClassIdIn
554 ,itemIdIn => itemIdIn
555 );
556 return 'ERROR_EXIST';
557 end if;
558 exception
559 when others then
560 setErrorMessage(attributeNameIn => attributeNameIn
561 ,attributeItemTypeIn => attributeItemTypeIn
562 ,itemClassIdIn => itemClassIdIn
563 ,itemIdIn => itemIdIn
564 );
565 return 'ERROR_EXIST';
566 end;
567 end if;
568 return 'NO_ERROR';
569 end checkConversionError;
570
571 procedure getNonMandAttributes(applicationIdIn in integer,
572 itemClassIdIn in integer,
573 attributeIdOut out nocopy ame_util.stringList,
574 attributeNameOut out nocopy ame_util.stringList,
575 attributeTypeOut out nocopy ame_util.stringList,
576 approverTypeIdOut out nocopy ame_util.idList) as
577 cursor attributeCursor(applicationIdIn in integer,
578 headerItemClassIdIn in integer) is
579 select
580 ame_attributes.attribute_id,
581 ame_attributes.name,
582 ame_attributes.attribute_type,
583 ame_attributes.approver_type_id
584 from
585 ame_attributes,
586 ame_attribute_usages,
587 ame_item_classes
588 where
589 ame_attributes.attribute_id = ame_attribute_usages.attribute_id and
590 ame_attributes.item_class_id = ame_item_classes.item_class_id and
591 ame_item_classes.item_class_id = headerItemClassIdIn and
592 ame_attribute_usages.application_id = applicationIdIn and
593 nvl(ame_attributes.line_item, ame_util.booleanFalse) = ame_util.booleanFalse and
594 ame_attributes.attribute_id not in
595 (select attribute_id from ame_mandatory_attributes
596 where action_type_id = -1 and
597 sysdate between ame_mandatory_attributes.start_date and
598 nvl(ame_mandatory_attributes.end_date - ame_util.oneSecond, sysdate) ) and
599 sysdate between ame_attributes.start_date and
600 nvl(ame_attributes.end_date - ame_util.oneSecond, sysdate) and
601 sysdate between ame_attribute_usages.start_date and
602 nvl(ame_attribute_usages.end_date - ame_util.oneSecond, sysdate) and
603 sysdate between ame_item_classes.start_date and
604 nvl(ame_item_classes.end_date - ame_util.oneSecond, sysdate)
605 order by ame_attributes.name;
606 tempIndex integer;
607 begin
608 tempIndex := 1;
609 for tempAttributeUsage in attributeCursor(applicationIdIn => applicationIdIn,
610 headerItemClassIdIn => itemClassIdIn) loop
611 /* The explicit conversion below lets nocopy work. */
612 attributeIdOut(tempIndex) := to_char(tempAttributeUsage.attribute_id);
613 attributeNameOut(tempIndex) := tempAttributeUsage.name;
614 attributeTypeOut(tempIndex) := tempAttributeUsage.attribute_type;
615 approverTypeIdOut(tempIndex) := tempAttributeUsage.approver_type_id;
616 tempIndex := tempIndex + 1;
617 end loop;
618 exception
619 when others then
620 rollback;
621 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
622 routineNameIn => 'getNonMandAttributes',
623 exceptionNumberIn => sqlcode,
624 exceptionStringIn => '(application ID ' ||
625 applicationIdIn||
626 ') ' ||
627 sqlerrm);
628 raise;
629 end getNonMandAttributes;
630
631 procedure populateRealTransAttributes(applicationIdIn in number
632 ,transactionIdIn in varchar2
633 ,errString out nocopy varchar2) as
634
635 cursor getVariantAttributes(applicationIdIn in number) is
636 select atr.attribute_id
637 ,atr.name
638 ,atr.attribute_type
639 ,atr.approver_type_id
640 from ame_attributes atr
641 ,ame_attribute_usages atu
642 where atr.name in (ame_util.jobLevelStartingPointAttribute
643 ,ame_util.nonDefStartingPointPosAttr
644 ,ame_util.nonDefPosStructureAttr
645 ,ame_util.supStartingPointAttribute
646 ,ame_util.firstStartingPointAttribute
647 ,ame_util.secondStartingPointAttribute
648 )
649 and atr.attribute_id = atu.attribute_id
650 and atu.application_id = applicationIdIn
651 and sysdate between atr.start_date and nvl(atr.end_date - (1/86400), sysdate)
652 and sysdate between atu.start_date and nvl(atu.end_date - (1/86400), sysdate);
653
654 attributeIds ame_util.stringList;
655 attributeIds2 ame_util.stringList;
656 attributeNames ame_util.stringList;
657 attributeTypes ame_util.stringList;
658 attributeValue1 ame_util.attributeValueType;
659 attributeValue2 ame_util.attributeValueType;
660 attributeValue3 ame_util.attributeValueType;
661 itemClassIdsList ame_util.stringList;
662 itemClassNamesList ame_util.stringList;
663 itemIds ame_util.stringList;
664 upperLimit integer;
665 workflowItemKey wf_item_activity_statuses.item_key%type;
666 workflowItemType wf_item_activity_statuses.item_type%type;
667 variantAttributeIds ame_util.idList;
668 variantAttributeNames ame_util.stringList;
669 variantAttributeTypes ame_util.stringList;
670 variantAttributeApprType ame_util.idList;
671 approverTypeIdList ame_util.idList;
672 itemClassName varchar2(100);
673 convErrYes boolean;
674 purgeValueYes boolean;
675 begin
676 errString := 'NO_ERROR';
677 hr_multi_message.enable_message_list;
678 ame_engine.updateTransactionState(isTestTransactionIn => false
679 ,isLocalTransactionIn => true
680 ,fetchConfigVarsIn => true
681 ,fetchOldApproversIn => false
682 ,fetchInsertionsIn => false
683 ,fetchDeletionsIn => false
684 ,fetchAttributeValuesIn => true
685 ,fetchInactiveAttValuesIn => true
686 ,processProductionActionsIn => false
687 ,processProductionRulesIn => false
688 ,updateCurrentApproverListIn => false
689 ,updateOldApproverListIn => false
690 ,processPrioritiesIn => false
691 ,prepareItemDataIn => false
692 ,prepareRuleIdsIn => false
693 ,prepareRuleDescsIn => false
694 ,transactionIdIn => transactionIdIn
695 ,ameApplicationIdIn => applicationIdIn
696 ,fndApplicationIdIn => null
697 ,transactionTypeIdIn => null);
698 --+
699 open getVariantAttributes(applicationIdIn => applicationIdIn);
700 fetch getVariantAttributes bulk collect into variantAttributeIds
701 ,variantAttributeNames
702 ,variantAttributeTypes
703 ,variantAttributeApprType;
704 close getVariantAttributes;
705 --+
706
707 --+
708 --+
709 --+
710 delete from ame_temp_trans_att_values
711 where application_id = applicationIdIn
712 and transaction_id = transactionIdIn;
713 --+
714 --+ mandatory attributes
715 --+
716 ame_attribute_pkg.getMandatoryAttributes2(applicationIdIn => applicationIdIn
717 ,attributeIdOut => attributeIds
718 ,attributeNameOut => attributeNames
719 ,attributeTypeOut => attributeTypes);
720 upperLimit := attributeIds.count;
721 ame_util.getWorkflowAttributeValues(applicationIdIn => applicationIdIn,
722 transactionIdIn => transactionIdIn,
723 workflowItemKeyOut => workflowItemKey,
724 workflowItemTypeOut => workflowItemType);
725 --+
726 for i in 1 .. upperLimit loop
727 --+
728 if attributeNames(i) = ame_util.workflowItemKeyAttribute then
729 attributeValue1 := workflowItemKey;
730 attributeValue2 := null;
731 attributeValue3 := null;
732 elsif attributeNames(i) = ame_util.workflowItemTypeAttribute then
733 attributeValue1 := workflowItemType;
734 attributeValue2 := null;
735 attributeValue3 := null;
736 else
737 ame_engine.getHeaderAttValues1(attributeIdIn => to_number(attributeIds(i))
738 ,attributeValue1Out => attributeValue1
739 ,attributeValue2Out => attributeValue2
740 ,attributeValue3Out => attributeValue3);
741 end if;
742 --+
743 errString:= checkConversionError(attributeNameIn => attributeNames(i)
744 ,attributeItemTypeIn => 'MANDATORY_ATTR'
745 ,attributeValue1In => attributeValue1
746 ,attributeValue2In => attributeValue2
747 ,attributeValue3In => attributeValue3
748 ,attributeTypeIn => attributeTypes(i)
749 ,approverTypeIdIn => null
750 );
751 if errString = 'ERROR_EXIST' then
752 convErrYes := true;
753 end if;
754
755 --+
756 insert into ame_temp_trans_att_values(application_id
757 ,transaction_id
758 ,row_timestamp
759 ,attribute_id
760 ,attribute_name
761 ,attribute_type
762 ,is_mandatory
763 ,attribute_value_1
764 ,attribute_value_2
765 ,attribute_value_3
766 ,item_id
767 ,item_class_id)
768 values(applicationIdIn
769 ,transactionIdIn
770 ,sysdate
771 ,attributeIds(i)
772 ,attributeNames(i)
773 ,attributeTypes(i)
774 ,'Y'
775 ,attributeValue1
776 ,attributeValue2
777 ,attributeValue3
778 ,transactionIdIn
779 ,1);
780 end loop;
781 --+
782 --+ non mandatory header attributes
783 --+
784 getNonMandAttributes(applicationIdIn => applicationIdIn
785 ,itemClassIdIn => ame_admin_pkg.getItemClassIdByName(itemClassNameIn => ame_util.headerItemClassName)
786 ,attributeIdOut => attributeIds
787 ,attributeNameOut => attributeNames
788 ,attributeTypeOut => attributeTypes
789 ,approverTypeIdOut => approverTypeIdList);
790 upperLimit := attributeIds.count;
791 --+
792 for i in 1 .. upperLimit loop
793 --+
794 ame_engine.getHeaderAttValues1(attributeIdIn => to_number(attributeIds(i))
795 ,attributeValue1Out => attributeValue1
796 ,attributeValue2Out => attributeValue2
797 ,attributeValue3Out => attributeValue3);
798
799 --+
800 errString := checkConversionError(attributeNameIn => attributeNames(i)
801 ,attributeItemTypeIn => 'HEADER_ATTR'
802 ,attributeValue1In => attributeValue1
803 ,attributeValue2In => attributeValue2
804 ,attributeValue3In => attributeValue3
805 ,attributeTypeIn => attributeTypes(i)
806 ,approverTypeIdIn => approverTypeIdList(i)
807 );
808 if errString = 'ERROR_EXIST' then
809 convErrYes := true;
810 end if;
811 if errString = 'APPR_ATTR_ERROR' then
812 purgeValueYes := true;
813 end if;
814 --+
815 insert into ame_temp_trans_att_values(application_id
816 ,transaction_id
817 ,row_timestamp
818 ,attribute_id
819 ,attribute_name
820 ,attribute_type
821 ,is_mandatory
822 ,attribute_value_1
823 ,attribute_value_2
824 ,attribute_value_3
825 ,item_id
826 ,item_class_id)
827 values(applicationIdIn
828 ,transactionIdIn
829 ,sysdate
830 ,attributeIds(i)
831 ,attributeNames(i)
832 ,attributeTypes(i)
833 ,'N'
834 ,attributeValue1
835 ,attributeValue2
836 ,attributeValue3
837 ,transactionIdIn
838 ,1);
839 end loop;
840 --+
841 ame_admin_pkg.getTransTypeItemClasses4(applicationIdIn => applicationIdIn
842 ,itemClassIdsOut => itemClassIdsList
843 ,itemClassNamesOut => itemClassNamesList);
844 upperLimit := itemClassIdsList.count;
845 --+
846 for i in 1 .. upperLimit loop
847 --+
848 ame_engine.getItemClassItemIds(itemClassIdIn => itemClassIdsList(i)
849 ,itemIdsOut => itemIds);
850 getNonMandAttributes(applicationIdIn => applicationIdIn
851 ,itemClassIdIn => to_number(itemClassIdsList(i))
852 ,attributeIdOut => attributeIds2
853 ,attributeNameOut => attributeNames
854 ,attributeTypeOut => attributeTypes
855 ,approverTypeIdOut => approverTypeIdList);
856 for j in 1 .. itemIds.count loop
857 --+
858 for k in 1 .. attributeIds2.count loop
859 --+
860 ame_engine.getItemAttValues1(attributeIdIn => attributeIds2(k)
861 ,itemIdIn => itemIds(j)
862 ,attributeValue1Out => attributeValue1
863 ,attributeValue2Out => attributeValue2
864 ,attributeValue3Out => attributeValue3);
865
866 --+
867 errString := checkConversionError(attributeNameIn => attributeNames(k)
868 ,attributeItemTypeIn => 'OTHER_ATTR'
869 ,attributeValue1In => attributeValue1
870 ,attributeValue2In => attributeValue2
871 ,attributeValue3In => attributeValue3
872 ,attributeTypeIn => attributeTypes(k)
873 ,approverTypeIdIn => approverTypeIdList(k)
874 ,itemClassIdIn => itemClassIdsList(i)
875 ,itemIdIn => itemIds(j)
876 );
877 if errString = 'ERROR_EXIST' then
878 convErrYes := true;
879 end if;
880 if errString = 'APPR_ATTR_ERROR' then
881 purgeValueYes := true;
882 end if;
883 --+
884 insert into ame_temp_trans_att_values(application_id
885 ,transaction_id
886 ,row_timestamp
887 ,attribute_id
888 ,attribute_name
889 ,attribute_type
890 ,is_mandatory
891 ,attribute_value_1
892 ,attribute_value_2
893 ,attribute_value_3
894 ,item_id
895 ,item_class_id)
896 values(applicationIdIn
897 ,transactionIdIn
898 ,sysdate
899 ,attributeIds2(k)
900 ,attributeNames(k)
901 ,attributeTypes(k)
902 ,'N'
903 ,attributeValue1
904 ,attributeValue2
905 ,attributeValue3
906 ,itemIds(j)
907 ,itemClassIdsList(i));
908 end loop;
909 -- Add by srpurani for variant attribute enhancement
910 attributeValue2 := null;
911 attributeValue3 := null;
912 for k in 1..variantAttributeIds.count loop
913 --+
914 begin
915 attributeValue1 := null;
916 attributeValue1 := ame_engine.getVariantAttributeValue(attributeIdIn => variantAttributeIds(k),
917 itemClassIn => itemClassNamesList(i),
918 itemIdIn => itemIds(j));
919 exception
920 When others then
921 if attributeValue1 is null then
922 attributeValue1 := 'null';
923 end if;
924 errString := checkConversionError(
925 attributeNameIn => variantAttributeNames(k)
926 ,attributeItemTypeIn => 'OTHER_ATTR'
927 ,attributeValue1In => attributeValue1
928 ,attributeValue2In => attributeValue2
929 ,attributeValue3In => attributeValue3
930 ,attributeTypeIn => variantAttributeTypes(k)
931 ,approverTypeIdIn => variantAttributeApprType(k)
932 ,itemClassIdIn => itemClassIdsList(i)
933 ,itemIdIn => itemIds(j)
934 );
935 if errString = 'ERROR_EXIST' then
936 convErrYes := true;
937 end if;
938 if errString = 'APPR_ATTR_ERROR' then
939 purgeValueYes := true;
940 end if;
941 end;
942 --+
943 insert into ame_temp_trans_att_values(application_id
944 ,transaction_id
945 ,row_timestamp
946 ,attribute_id
947 ,attribute_name
948 ,attribute_type
949 ,is_mandatory
950 ,attribute_value_1
951 ,attribute_value_2
952 ,attribute_value_3
953 ,item_id
954 ,item_class_id)
955 values(applicationIdIn
956 ,transactionIdIn
957 ,sysdate
958 ,variantAttributeIds(k)
959 ,variantAttributeNames(k)
960 ,variantAttributeTypes(k)
961 ,'N'
962 ,attributeValue1
963 ,attributeValue2
964 ,attributeValue3
965 ,itemIds(j)
966 ,itemClassIdsList(i));
967 --+
968 end loop;
969 --+
970 end loop;
971 --+
972 end loop;
973 --+
974 if purgeValueYes then
975 delete from ame_temp_trans_att_values
976 where application_id = applicationIdIn
977 and transaction_id = transactionIdIn;
978 errString := 'APPR_ATTR_ERROR';
979 return;
980 end if;
981 if convErrYes then
982 errString := 'AME_CONV_ERROR';
983 return;
984 end if;
985 exception
986 When others then
987 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
988 routineNameIn => 'populateRealTransAttributes',
989 exceptionNumberIn => sqlcode,
990 exceptionStringIn => sqlerrm);
991 if sqlcode = -20001 then
992 errString := sqlerrm;
993 errString:= substr(errString,11);
994 else
995 fnd_message.set_name('PER','AME_400754_TEST_REALTX_ATT_ERR');
996 hr_multi_message.add (p_associated_column1 => 'ATTR_NAME');
997 errString := 'ERROR_EXIST';
998 end if;
999 end populateRealTransAttributes;
1000 --+
1001 procedure getApplicableRules(applicationIdIn in number
1002 ,transactionIdIn in varchar2
1003 ,isRealTransaction in varchar2 -- 'Y' for a real transaction
1004 -- 'N' for a test transaction
1005 ,processPriorities in varchar2
1006 ,rulesOut out nocopy ame_rules_list
1007 ,errString out nocopy varchar2) as
1008 ruleItemClassIds ame_util.idList;
1009 itemClassIds ame_util.idList;
1010 itemIds ame_util.stringList;
1011 ruleTypes ame_util.idList;
1012 ruleDescriptions ame_util.stringList;
1013 ruleIds ame_util.idList;
1014 rulesList ame_rules_list := ame_rules_list();
1015 ruleObject ame_rule;
1016 effectiveRuleDate date;
1017 effecitveRuleDateString ame_util.stringType;
1018 itemClassName varchar2(100);
1019 begin
1020 errString := 'NO_ERROR';
1021 ame_engine.updateTransactionState(isTestTransactionIn => isRealTransaction = 'N'
1022 ,isLocalTransactionIn => true
1023 ,fetchConfigVarsIn => true
1024 ,fetchOldApproversIn => false
1025 ,fetchInsertionsIn => false
1026 ,fetchDeletionsIn => false
1027 ,fetchAttributeValuesIn => true
1028 ,fetchInactiveAttValuesIn => false
1029 ,processProductionActionsIn => false
1030 ,processProductionRulesIn => true
1031 ,updateCurrentApproverListIn => false
1032 ,updateOldApproverListIn => false
1033 ,processPrioritiesIn => processPriorities = 'Y'
1034 ,prepareItemDataIn => false
1035 ,prepareRuleIdsIn => false
1036 ,prepareRuleDescsIn => false
1037 ,transactionIdIn => transactionIdIn
1038 ,ameApplicationIdIn => applicationIdIn
1039 ,fndApplicationIdIn => null
1040 ,transactionTypeIdIn => null);
1041 effectiveRuleDate := ame_engine.getEffectiveRuleDate;
1042 ame_engine.getTestTransApplicableRules(ruleItemClassIdsOut => ruleItemClassIds
1043 ,itemClassIdsOut => itemClassIds
1044 ,itemIdsOut => itemIds
1045 ,ruleIdsOut => ruleIds
1046 ,ruleTypesOut => ruleTypes
1047 ,ruleDescriptionsOut => ruleDescriptions);
1048
1049 for i in 1 .. itemIds.count loop
1050 if(ruleItemClassIds(i) is not null) then
1051 itemClassName := ame_test_utility_pkg.getItemClassNameById(ruleItemClassIds(i));
1052 else
1053 itemClassName := null;
1054 end if;
1055 ruleObject := ame_rule(ruleIds(i)
1056 ,ruleDescriptions(i)
1057 ,ruleItemClassIds(i)
1058 ,itemClassName
1059 ,itemIds(i)
1060 ,getRuleTypeDesc(ruleTypes(i))
1061 ,ruleTypes(i)
1062 ,getRuleCategory(ruleIds(i),applicationIdIn,effectiveRuleDate)
1063 ,ame_rule_pkg.getEffectiveStartDateUsage
1064 (applicationIdIn => applicationIdIn
1065 ,ruleIdIn => ruleIds(i)
1066 ,effectiveDateIn => effectiveRuleDate)
1067 ,ame_rule_pkg.getEffectiveEndDateUsage
1068 (applicationIdIn => applicationIdIn
1069 ,ruleIdIn => ruleIds(i)
1070 ,effectiveDateIn => effectiveRuleDate)
1071 ,getConditionsList(ruleIds(i),effectiveRuleDate)
1072 ,getActionsList(ruleIds(i),effectiveRuleDate)
1073 );
1074 rulesList.extend;
1075 rulesList(i) := ruleObject;
1076 end loop;
1077 rulesOut := rulesList;
1078 exception
1079 When others then
1080 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
1081 routineNameIn => 'getApplicableRules',
1082 exceptionNumberIn => sqlcode,
1083 exceptionStringIn => sqlerrm);
1084 if sqlcode = -20001 then
1085 errString := sqlerrm;
1086 errString:= substr(errString,11);
1087 else
1088 fnd_message.set_name('PER','AME_400692_ENGINE_ERROR');
1089 errString := fnd_message.get;
1090 end if;
1091 end getApplicableRules;
1092 --+
1093 procedure getApprovers(applicationIdIn in number
1094 ,transactionIdIn in varchar2
1095 ,isRealTransaction in varchar2 -- 'Y' for a real transaction
1096 -- 'N' for a test transaction
1097 ,approverListStageIn in integer
1098 ,approversOut out nocopy ame_approvers_list
1099 ,errString out nocopy varchar2) as
1100 approverList ame_util.approversTable2;
1101 productionIndexes ame_util.idList;
1102 variableNames ame_util.stringList;
1103 variableValues ame_util.stringList;
1104 approverObjList ame_approvers_list := ame_approvers_list();
1105 approver ame_approver;
1106 effectiveRuleDate date;
1107 tempActionTypeName ame_util.stringType;
1108 tempGroupName ame_util.stringType;
1109 approverSource varchar2(500);
1110 productionsList varchar2(4000);
1111 ruleIdList ame_util.idList;
1112 l_app_count number;
1113 begin
1114 l_app_count :=0;
1115 errString:= 'NO_ERROR';
1116 ame_engine.getTestTransApprovers(isTestTransactionIn => isRealTransaction = 'N'
1117 ,transactionIdIn => transactionIdIn
1118 ,ameApplicationIdIn => applicationIdIn
1119 ,approverListStageIn => approverListStageIn
1120 ,approversOut => approverList
1121 ,productionIndexesOut => productionIndexes
1122 ,variableNamesOut => variableNames
1123 ,variableValuesOut => variableValues);
1124 --+
1125 effectiveRuleDate := ame_engine.getEffectiveRuleDate;
1126 --+
1127 for i in 1 .. approverList.count loop
1128 tempActionTypeName := getActionTypeName(approverList(i).action_type_id);
1129 if(tempActionTypeName in (ame_util.groupChainApprovalTypeName
1130 ,ame_util.preApprovalTypeName
1131 ,ame_util.postApprovalTypeName))then
1132 tempGroupName := getApproverGroupName(approverList(i).group_or_chain_id);
1133 else
1134 tempGroupName := 'Chain '||approverList(i).group_or_chain_id;
1135 end if;
1136 ame_util.parseSourceValue(sourceValueIn => approverList(i).source
1137 ,sourceDescriptionOut => approverSource
1138 ,ruleIdListOut => ruleIdList);
1139 productionsList := '';
1140 for j in 1 .. productionIndexes.count
1141 loop
1142 if(productionIndexes(j) = i) then
1143 if (j <> 1) then
1144 productionsList := productionsList || fnd_global.local_chr(ascii_chr => 13);
1145 end if;
1146 productionsList := productionsList ||
1147 variableNames(j)|| ' : ' ||
1148 variableValues(j);
1149 end if;
1150 end loop;
1151 if ((approverList(i).approval_status is null) or
1152 (approverList(i).approval_status not like '%'||ame_util.repeatedStatus) or
1153 (approverListStageIn < 6)) then
1154 if approverListStageIn = 1 and
1155 approverList(i).approval_status like '%'||ame_util.repeatedStatus then
1156 approverList(i).approval_status :=null;
1157 end if;
1158 if approverListStageIn = 5 and
1159 approverList(i).approval_status like '%'||ame_util.repeatedStatus then
1160 approverList(i).approval_status :=ame_util.repeatedStatus;
1161 end if;
1162 approver := ame_approver(approverList(i).name
1163 ,approverList(i).orig_system
1164 ,approverList(i).orig_system_id
1165 ,approverList(i).display_name
1166 ,approverList(i).approver_category
1167 ,approverList(i).api_insertion
1168 ,approverList(i).authority
1169 ,approverList(i).approval_status
1170 ,approverList(i).action_type_id
1171 ,approverList(i).group_or_chain_id
1172 ,approverList(i).occurrence
1173 ,approverSource
1174 ,getItemClassName(approverList(i).item_class)
1175 ,approverList(i).item_id
1176 ,approverList(i).item_class_order_number
1177 ,approverList(i).item_order_number
1178 ,approverList(i).sub_list_order_number
1179 ,approverList(i).action_type_order_number
1180 ,approverList(i).group_or_chain_order_number
1181 ,approverList(i).member_order_number
1182 ,approverList(i).approver_order_number
1183 ,tempActionTypeName
1184 ,getOrigSystemDesc(approverList(i).orig_system)
1185 ,tempGroupName
1186 ,getAuthorityDesc(approverList(i).authority)
1187 ,getApiInsertionDesc(approverList(i).api_insertion)
1188 ,getApprovalStatusDesc(approverList(i).approval_status)
1189 ,getApprovalCategoryDesc(approverList(i).approver_category)
1190 ,getSourceDesc(approverList(i).source,effectiveRuleDate)
1191 ,productionsList);
1192 l_app_count := l_app_count + 1;
1193 approverObjList.extend;
1194 approverObjList(l_app_count) := approver;
1195 end if;
1196 end loop;
1197 approversOut := approverObjList;
1198 exception
1199 When others then
1200 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
1201 routineNameIn => 'getApprovers',
1202 exceptionNumberIn => sqlcode,
1203 exceptionStringIn => sqlerrm);
1204
1205 if sqlcode = -20001 then
1206 errString := sqlerrm;
1207 errString:= substr(errString,11);
1208 else
1209 fnd_message.set_name('PER','AME_400692_ENGINE_ERROR');
1210 errString := fnd_message.get;
1211 end if;
1212 --+
1213 end getApprovers;
1214 --+
1215 procedure getTransactionProductions(applicationIdIn in number
1216 ,transactionIdIn in varchar2
1217 ,isRealTransaction in varchar2 -- 'Y' for a real transaction
1218 -- 'N' for a test transaction
1219 ,processPriorities in varchar2
1220 ,productionsOut out nocopy ame_productions_list
1221 ,errString out nocopy varchar2) as
1222 variableNames ame_util.stringList;
1223 variableValues ame_util.stringList;
1224 productionNVPair ame_production_name_value_pair;
1225 productionsList ame_util2.productionsTable ;--:= ame_util2.productionsTable();
1226
1227 begin
1228 errString := 'NO_ERROR';
1229 ame_engine.updateTransactionState(isTestTransactionIn => isRealTransaction = 'N',
1230 isLocalTransactionIn => true,
1231 fetchConfigVarsIn => true,
1232 fetchOldApproversIn => false,
1233 fetchInsertionsIn => false,
1234 fetchDeletionsIn => false,
1235 fetchAttributeValuesIn => true,
1236 fetchInactiveAttValuesIn => false,
1237 processProductionActionsIn => false,
1238 processProductionRulesIn => true,
1239 updateCurrentApproverListIn => true,
1240 updateOldApproverListIn => false,
1241 processPrioritiesIn => processPriorities = 'Y',
1242 prepareItemDataIn => false,
1243 prepareRuleIdsIn => false,
1244 prepareRuleDescsIn => false,
1245 transactionIdIn => transactionIdIn,
1246 ameApplicationIdIn => applicationIdIn,
1247 fndApplicationIdIn => null,
1248 transactionTypeIdIn => null);
1249 ame_engine.getAllProductions(productionsOut => productionsList);
1250 productionsOut := ame_productions_list();
1251 for i in 1 .. productionsList.count loop
1252 productionsOut.extend();
1253 productionsOut(i) := ame_production_name_value_pair(null,null,null,null);
1254 productionsOut(i).name := productionsList(i).variable_name;
1255 productionsOut(i).value := productionsList(i).variable_value;
1256 productionsOut(i).item_class := getItemClassName(productionsList(i).item_class);
1257 productionsOut(i).item_id := productionsList(i).item_id;
1258
1259 end loop;
1260 exception
1261 When others then
1262 ame_util.runtimeException(packageNameIn => 'ame_test_utility_pkg',
1263 routineNameIn => 'getTransactionProductions',
1264 exceptionNumberIn => sqlcode,
1265 exceptionStringIn => sqlerrm);
1266 if sqlcode = -20001 then
1267 errString := sqlerrm;
1268 errString:= substr(errString,11);
1269 else
1270 fnd_message.set_name('PER','AME_400692_ENGINE_ERROR');
1271 errString := fnd_message.get;
1272 end if;
1273 end getTransactionProductions;
1274 end ame_test_utility_pkg;