510: hr_util_misc_web.validate_session(p_person_id => gn_person_id);
511:
512:
513: -- get AME related WF attribute values
514: c_application_id :=wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
515: itemkey => p_item_key,
516: aname => 'HR_AME_APP_ID_ATTR');
517:
518: c_application_id := nvl(c_application_id,800);
517:
518: c_application_id := nvl(c_application_id,800);
519:
520:
521: c_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
522: itemkey => p_item_key,
523: aname => 'TRANSACTION_ID');
524:
525:
523: aname => 'TRANSACTION_ID');
524:
525:
526:
527: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
528: itemkey => p_item_key,
529: aname => 'HR_AME_TRAN_TYPE_ATTR');
530:
531: hr_utility.trace('Going into (FOR I IN 1..p_approver_name.count LOOP): '|| l_proc);
688: gv_language_code := icx_sec.getID(icx_sec.PV_LANGUAGE_CODE);
689:
690: -- check if we need to call AME
691: -- get the AME transaction type value from WF item attributes
692: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
693: itemkey => p_item_key,
694: aname => 'HR_AME_TRAN_TYPE_ATTR');
695:
696:
717: IF csr_wiav%notfound then
718: null;
719: ELSE
720: -- set the item attribute text value to DELETED
721: wf_engine.SetItemAttrText
722: (itemtype => p_item_type,
723: itemkey => p_item_key,
724: aname => lv_item_name,
725: avalue => 'DELETED');
759: hr_approval_wf.create_item_attrib_if_notexist
760: (p_item_type => p_item_type,
761: p_item_key => p_item_key,
762: p_name => lv_item_name);
763: wf_engine.SetItemAttrNumber
764: (itemtype => p_item_type,
765: itemkey => p_item_key,
766: aname => lv_item_name,
767: avalue => ln_person_id);
764: (itemtype => p_item_type,
765: itemkey => p_item_key,
766: aname => lv_item_name,
767: avalue => ln_person_id);
768: wf_engine.SetItemAttrText
769: (itemtype => p_item_type,
770: itemkey => p_item_key,
771: aname => lv_item_name,
772: avalue => 'VALID');
770: itemkey => p_item_key,
771: aname => lv_item_name,
772: avalue => 'VALID');
773: ELSE
774: wf_engine.SetItemAttrNumber
775: (itemtype => p_item_type,
776: itemkey => p_item_key,
777: aname => lv_item_name,
778: avalue => ln_person_id);
775: (itemtype => p_item_type,
776: itemkey => p_item_key,
777: aname => lv_item_name,
778: avalue => ln_person_id);
779: wf_engine.SetItemAttrText
780: (itemtype => p_item_type,
781: itemkey => p_item_key,
782: aname => lv_item_name,
783: avalue => 'VALID');
801: (p_item_type => p_item_type
802: ,p_item_key => p_item_key
803: ,p_name => 'ADDITIONAL_APPROVERS_NUMBER');
804:
805: wf_engine.SetItemAttrNumber
806: (itemtype => p_item_type,
807: itemkey => p_item_key,
808: aname => 'ADDITIONAL_APPROVERS_NUMBER',
809: avalue => ln_addntl_approvers );
807: itemkey => p_item_key,
808: aname => 'ADDITIONAL_APPROVERS_NUMBER',
809: avalue => ln_addntl_approvers );
810: ELSE
811: wf_engine.SetItemAttrNumber
812: (itemtype => p_item_type,
813: itemkey => p_item_key,
814: aname => 'ADDITIONAL_APPROVERS_NUMBER',
815: avalue => ln_addntl_approvers );
847: hr_approval_wf.create_item_attrib_if_notexist
848: (p_item_type => p_item_type,
849: p_item_key => p_item_key,
850: p_name => lv_item_name);
851: wf_engine.SetItemAttrNumber
852: (itemtype => p_item_type,
853: itemkey => p_item_key,
854: aname => lv_item_name,
855: avalue => ln_person_id);
854: aname => lv_item_name,
855: avalue => ln_person_id);
856:
857: ELSE
858: wf_engine.SetItemAttrNumber
859: (itemtype => p_item_type,
860: itemkey => p_item_key,
861: aname => lv_item_name,
862: avalue => ln_person_id);
896: hr_utility.trace('Out of ( FOR K IN 1..p_notify_onapproval_flag.count): '|| l_proc);
897: lv_notify:= lv_notify||lv_exists;
898:
899: -- set the notification flag for this notifier
900: wf_engine.SetItemAttrText
901: (itemtype => p_item_type,
902: itemkey => p_item_key,
903: aname => lv_item_name,
904: avalue => lv_notify);
918: (p_item_type => p_item_type
919: ,p_item_key => p_item_key
920: ,p_name => 'NOTIFIERS_NUMBER');
921:
922: wf_engine.SetItemAttrNumber
923: (itemtype => p_item_type,
924: itemkey => p_item_key,
925: aname => 'NOTIFIERS_NUMBER',
926: avalue => ln_notifiers );
924: itemkey => p_item_key,
925: aname => 'NOTIFIERS_NUMBER',
926: avalue => ln_notifiers );
927: ELSE
928: wf_engine.SetItemAttrNumber
929: (itemtype => p_item_type,
930: itemkey => p_item_key,
931: aname => 'NOTIFIERS_NUMBER',
932: avalue => ln_notifiers );
943: (p_item_type => p_item_type
944: ,p_item_key => p_item_key
945: ,p_name => 'APPROVAL_ENTRY_MODE');
946:
947: wf_engine.SetItemAttrText
948: (itemtype => p_item_type,
949: itemkey => p_item_key,
950: aname => 'APPROVAL_ENTRY_MODE',
951: avalue => 'RE-ENTER');
949: itemkey => p_item_key,
950: aname => 'APPROVAL_ENTRY_MODE',
951: avalue => 'RE-ENTER');
952: ELSE
953: wf_engine.SetItemAttrText
954: (itemtype => p_item_type,
955: itemkey => p_item_key,
956: aname => 'APPROVAL_ENTRY_MODE',
957: avalue => 'RE-ENTER');
972: (p_item_type => p_item_type
973: ,p_item_key => p_item_key
974: ,p_name => 'LAST_DEFAULT_APPROVER');
975:
976: wf_engine.SetItemAttrNumber
977: (itemtype => p_item_type,
978: itemkey => p_item_key,
979: aname => 'LAST_DEFAULT_APPROVER',
980: avalue => NULL);
978: itemkey => p_item_key,
979: aname => 'LAST_DEFAULT_APPROVER',
980: avalue => NULL);
981: ELSE
982: wf_engine.SetItemAttrNumber
983: (itemtype => p_item_type,
984: itemkey => p_item_key,
985: aname => 'LAST_DEFAULT_APPROVER',
986: avalue => NULL);
995: IF csr_wfaav%notfound THEN
996: ln_approval_level :=NULL;
997: ELSE
998: ln_approval_level :=
999: wf_engine.GetActivityAttrNumber(
1000: itemtype => p_item_type,
1001: itemkey => p_item_key,
1002: actid => p_act_id,
1003: aname => 'HR_DYNA_APPR_LEVEL_ATR');
1018: END IF;
1019: CLOSE csr_wiav;
1020: -- set the process level approval level
1021: IF ln_approval_level IS NOT NULL THEN
1022: wf_engine.SetItemAttrNumber
1023: (itemtype => p_item_type,
1024: itemkey => p_item_key,
1025: aname => 'APPROVAL_LEVEL',
1026: avalue => ln_approval_level);
1037: (p_item_type => p_item_type
1038: ,p_item_key => p_item_key
1039: ,p_name => 'CURRENT_DEF_APPR_INDEX');
1040:
1041: wf_engine.SetItemAttrNumber
1042: (itemtype => p_item_type,
1043: itemkey => p_item_key,
1044: aname => 'CURRENT_DEF_APPR_INDEX',
1045: avalue => 0);
1043: itemkey => p_item_key,
1044: aname => 'CURRENT_DEF_APPR_INDEX',
1045: avalue => 0);
1046: ELSE
1047: wf_engine.SetItemAttrNumber
1048: (itemtype => p_item_type,
1049: itemkey => p_item_key,
1050: aname => 'CURRENT_DEF_APPR_INDEX',
1051: avalue => 0);
1065: (p_item_type => p_item_type
1066: ,p_item_key => p_item_key
1067: ,p_name => 'CURRENT_APPROVER_INDEX');
1068:
1069: wf_engine.SetItemAttrNumber
1070: (itemtype => p_item_type,
1071: itemkey => p_item_key,
1072: aname => 'CURRENT_APPROVER_INDEX',
1073: avalue => 0);
1071: itemkey => p_item_key,
1072: aname => 'CURRENT_APPROVER_INDEX',
1073: avalue => 0);
1074: ELSE
1075: wf_engine.SetItemAttrNumber
1076: (itemtype => p_item_type,
1077: itemkey => p_item_key,
1078: aname => 'CURRENT_APPROVER_INDEX',
1079: avalue => 0);
1090: (p_item_type => p_item_type
1091: ,p_item_key => p_item_key
1092: ,p_name => 'CURRENT_ONSUBMIT_INDEX');
1093:
1094: wf_engine.SetItemAttrNumber
1095: (itemtype => p_item_type,
1096: itemkey => p_item_key,
1097: aname => 'CURRENT_ONSUBMIT_INDEX',
1098: avalue => 0);
1096: itemkey => p_item_key,
1097: aname => 'CURRENT_ONSUBMIT_INDEX',
1098: avalue => 0);
1099: ELSE
1100: wf_engine.SetItemAttrNumber
1101: (itemtype => p_item_type,
1102: itemkey => p_item_key,
1103: aname => 'CURRENT_ONSUBMIT_INDEX',
1104: avalue => 0);
1115: (p_item_type => p_item_type
1116: ,p_item_key => p_item_key
1117: ,p_name => 'CURRENT_ONAPPROVAL_INDEX');
1118:
1119: wf_engine.SetItemAttrNumber
1120: (itemtype => p_item_type,
1121: itemkey => p_item_key,
1122: aname => 'CURRENT_ONAPPROVAL_INDEX',
1123: avalue => 0);
1121: itemkey => p_item_key,
1122: aname => 'CURRENT_ONAPPROVAL_INDEX',
1123: avalue => 0);
1124: ELSE
1125: wf_engine.SetItemAttrNumber
1126: (itemtype => p_item_type,
1127: itemkey => p_item_key,
1128: aname => 'CURRENT_ONAPPROVAL_INDEX',
1129: avalue => 0);
1198: -- get session language code
1199: gv_language_code := icx_sec.getID(icx_sec.PV_LANGUAGE_CODE);
1200:
1201: -- get effective date from Workflow Item Attribute
1202: gv_effective_date := wf_engine.getItemAttrText(
1203: itemtype => p_item_type,
1204: itemkey => p_item_key,
1205: aname => 'CURRENT_EFFECTIVE_DATE');
1206:
1376: -- get session language code
1377: gv_language_code := icx_sec.getID(icx_sec.PV_LANGUAGE_CODE);
1378:
1379: -- get effective date from Workflow Item Attribute
1380: gv_effective_date := wf_engine.getItemAttrText(
1381: itemtype => p_item_type,
1382: itemkey => p_item_key,
1383: aname => 'CURRENT_EFFECTIVE_DATE');
1384:
1527: p_web_page_section_code => ln_approval_level
1528: );
1529: END IF;
1530: -- The hr_mee_workflow_service.get_web_page_code is not returning values
1531: -- need to invesitgate further and debug. Making a direct call to wf_engine
1532: -- package.
1533: -- check if the acitvity attribute for approval level exists
1534: OPEN csr_wfaav(ln_approval_level,p_actid );
1535: hr_utility.trace('Going into Fetch after ( OPEN csr_wfaav(ln_approval_level,p_actid ) ): '|| l_proc);
1537: IF csr_wfaav%notfound THEN
1538: grt_wf_attributes_rec.approval_level :=NULL;
1539: ELSE
1540: grt_wf_attributes_rec.approval_level :=
1541: wf_engine.GetActivityAttrNumber(
1542: itemtype => p_item_type,
1543: itemkey => p_item_key,
1544: actid => p_actid,
1545: aname => ln_approval_level);
1615:
1616: BEGIN
1617: hr_utility.set_location('Entering: '|| l_proc,5);
1618:
1619: gn_person_id := wf_engine.GetItemAttrNumber
1620: (itemtype => p_item_type
1621: ,itemkey => p_item_key
1622: ,aname => 'CREATOR_PERSON_ID');
1623:
1622: ,aname => 'CREATOR_PERSON_ID');
1623:
1624: -- Get AME related data from WF attributes
1625: -- get the AME transaction type and app id
1626: c_application_id :=wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
1627: itemkey => p_item_key,
1628: aname => 'HR_AME_APP_ID_ATTR');
1629:
1630:
1629:
1630:
1631: c_application_id := nvl(c_application_id,800);
1632:
1633: c_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
1634: itemkey => p_item_key,
1635: aname => 'TRANSACTION_ID');
1636:
1637:
1635: aname => 'TRANSACTION_ID');
1636:
1637:
1638:
1639: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
1640: itemkey => p_item_key,
1641: aname => 'HR_AME_TRAN_TYPE_ATTR');
1642:
1643:
1769: hr_utility.trace('In (IF gv_mode=RE-ENTER): '|| l_proc);
1770:
1771: -- Get AME related data from WF attributes
1772: -- get the AME transaction type and app id
1773: c_application_id :=wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
1774: itemkey => p_item_key,
1775: aname => 'HR_AME_APP_ID_ATTR');
1776:
1777:
1776:
1777:
1778: c_application_id := nvl(c_application_id,800);
1779:
1780: c_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
1781: itemkey => p_item_key,
1782: aname => 'TRANSACTION_ID');
1783:
1784:
1782: aname => 'TRANSACTION_ID');
1783:
1784:
1785:
1786: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
1787: itemkey => p_item_key,
1788: aname => 'HR_AME_TRAN_TYPE_ATTR');
1789:
1790:
2108: -- validate the session
2109: -- ******************************************************************************
2110: -- commented out for v 4 by pzwalker - replaced with GetItemAttrNumber call
2111: -- hr_util_misc_web.validate_session(p_person_id => gn_person_id);
2112: gn_person_id := wf_engine.GetItemAttrNumber
2113: (itemtype => p_item_type
2114: ,itemkey => p_item_key
2115: ,aname => 'CREATOR_PERSON_ID');
2116:
2116:
2117:
2118: -- Get AME related data from WF attributes
2119: -- get the AME transaction type and app id
2120: c_application_id :=wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
2121: itemkey => p_item_key,
2122: aname => 'HR_AME_APP_ID_ATTR');
2123:
2124:
2123:
2124:
2125: c_application_id := nvl(c_application_id,800);
2126:
2127: c_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
2128: itemkey => p_item_key,
2129: aname => 'TRANSACTION_ID');
2130:
2131:
2129: aname => 'TRANSACTION_ID');
2130:
2131:
2132:
2133: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
2134: itemkey => p_item_key,
2135: aname => 'HR_AME_TRAN_TYPE_ATTR');
2136:
2137:
2153:
2154: end if;
2155:
2156: -- bug # 1964924
2157: ln_approval_level:= wf_engine.GetItemAttrNumber
2158: (itemtype => p_item_type
2159: ,itemkey => p_item_key
2160: ,aname => 'APPROVAL_LEVEL');
2161:
2327: IF gv_mode='RE-ENTER' THEN
2328: hr_utility.trace('In (IF gv_mode=RE-ENTER): '|| l_proc);
2329: -- check if we need to call AME
2330: -- get the AME transaction type value from WF item attributes
2331: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
2332: itemkey => p_item_key,
2333: aname => 'HR_AME_TRAN_TYPE_ATTR');
2334:
2335:
2360: (p_item_type => p_item_type
2361: ,p_item_key => p_item_key
2362: ,p_name => 'ADDITIONAL_APPROVERS_NUMBER') then
2363: -- get the attribute value
2364: ln_num_of_add_apprs := wf_engine.GetItemAttrNumber
2365: (itemtype => p_item_type,
2366: itemkey => p_item_key,
2367: aname => 'ADDITIONAL_APPROVERS_NUMBER');
2368:
2366: itemkey => p_item_key,
2367: aname => 'ADDITIONAL_APPROVERS_NUMBER');
2368:
2369: else
2370: wf_engine.additemattr
2371: (itemtype => p_item_type
2372: ,itemkey => p_item_key
2373: ,aname => 'ADDITIONAL_APPROVERS_NUMBER');
2374:
2371: (itemtype => p_item_type
2372: ,itemkey => p_item_key
2373: ,aname => 'ADDITIONAL_APPROVERS_NUMBER');
2374:
2375: wf_engine.SetItemAttrNumber (itemtype => p_item_type,
2376: itemkey => p_item_key,
2377: aname => 'ADDITIONAL_APPROVERS_NUMBER',
2378: avalue => 0);
2379: end if;
2394: lv_default_approver := 'Y';
2395: ELSE
2396: lv_default_approver := 'N';
2397: -- check if this additional index has been removed by the user
2398: lv_approver_deleted := wf_engine.GetItemAttrText
2399: (itemtype => p_item_type,
2400: itemkey => p_item_key,
2401: aname => lv_item_name);
2402: lv_approver_deleted := NVL(lv_approver_deleted,' ');
2414: grt_approver_details_table(I).job_title := gv_error_table(ln_error_count).job_title;
2415: grt_approver_details_table(I).error_exists:= gv_error_table(ln_error_count).error_exists;
2416: ln_error_count := ln_error_count + 1;
2417: ELSE
2418: ln_person_id := wf_engine.GetItemAttrNumber
2419: (itemtype => p_item_type,
2420: itemkey => p_item_key,
2421: aname => lv_item_name);
2422:
2754:
2755: -- get all the additional approvers
2756: -- get number of additional approvers
2757: gn_additional_approvers :=
2758: wf_engine.GetItemAttrNumber(itemtype => p_item_type,
2759: itemkey => p_item_key,
2760: aname => 'ADDITIONAL_APPROVERS_NUMBER');
2761:
2762:
2785: -- Find the last approver , get his ID and update the flag to DELETED
2786:
2787: IF ln_curr_add_appr_index=1 AND lv_exist = 'Y' THEN
2788: -- get the status of this approver index
2789: lv_valid_approver := wf_engine.GetItemAttrText
2790: (itemtype => p_item_type,
2791: itemkey => p_item_key,
2792: aname => lv_item_name);
2793:
2792: aname => lv_item_name);
2793:
2794: IF lv_valid_approver<>'DELETED' THEN
2795: -- get the person_id for this index
2796: ln_from_index_id := wf_engine.GetItemAttrNumber
2797: (itemtype => p_item_type,
2798: itemkey => p_item_key,
2799: aname => lv_item_name);
2800:
2798: itemkey => p_item_key,
2799: aname => lv_item_name);
2800:
2801: -- set the flag to DELETED and person_id to NULL
2802: wf_engine.SetItemAttrNumber
2803: (itemtype => p_item_type,
2804: itemkey => p_item_key,
2805: aname => lv_item_name,
2806: avalue => NULL);
2803: (itemtype => p_item_type,
2804: itemkey => p_item_key,
2805: aname => lv_item_name,
2806: avalue => NULL);
2807: wf_engine.SetItemAttrText
2808: (itemtype => p_item_type,
2809: itemkey => p_item_key,
2810: aname => lv_item_name,
2811: avalue => 'DELETED');
2816: ln_curr_add_appr_index := 0;
2817: END IF;
2818: ELSIF ln_curr_add_appr_index>1 AND lv_exist = 'Y' THEN
2819: -- get the person_id for this index
2820: ln_from_index_id := wf_engine.GetItemAttrNumber
2821: (itemtype => p_item_type,
2822: itemkey => p_item_key,
2823: aname => lv_item_name);
2824: -- reset it with the new value
2821: (itemtype => p_item_type,
2822: itemkey => p_item_key,
2823: aname => lv_item_name);
2824: -- reset it with the new value
2825: wf_engine.SetItemAttrNumber
2826: (itemtype => p_item_type,
2827: itemkey => p_item_key,
2828: aname => lv_item_name,
2829: avalue => ln_to_index_id);
2834: END LOOP;
2835:
2836: -- reset the index for the number of additional approvers
2837: gn_additional_approvers := (gn_additional_approvers -1);
2838: wf_engine.SetItemAttrNumber
2839: (itemtype => p_item_type,
2840: itemkey => p_item_key,
2841: aname => 'ADDITIONAL_APPROVERS_NUMBER',
2842: avalue => gn_additional_approvers);
2864: end if;
2865:
2866: END LOOP;
2867: hr_utility.trace('Out of ( FOR I IN 1..p_approver_name.count): '|| l_proc);
2868: wf_engine.SetItemAttrNumber
2869: (itemtype => p_item_type,
2870: itemkey => p_item_key,
2871: aname => 'ADDITIONAL_APPROVERS_NUMBER',
2872: avalue => gn_additional_approvers);
3128: IF csr_wiav%notfound THEN
3129: gn_notifiers := 0;
3130: ELSE
3131: gn_notifiers :=
3132: wf_engine.GetItemAttrNumber(itemtype => p_item_type,
3133: itemkey => p_item_key,
3134: aname => 'NOTIFIERS_NUMBER');
3135: END IF;
3136: CLOSE csr_wiav;
3149: IF csr_wiav%notfound THEN
3150: lv_exist := 'N';
3151: ELSE
3152: lv_exist := 'Y';
3153: ln_person_id:= wf_engine.GetItemAttrNumber
3154: (itemtype => p_item_type,
3155: itemkey => p_item_key,
3156: aname => lv_item_name
3157: );
3154: (itemtype => p_item_type,
3155: itemkey => p_item_key,
3156: aname => lv_item_name
3157: );
3158: lv_notify := wf_engine.GetItemAttrText
3159: (itemtype => p_item_type,
3160: itemkey => p_item_key,
3161: aname => lv_item_name
3162: );
3356: FETCH csr_wiav into l_dummy;
3357: IF csr_wiav%notfound THEN
3358: NULL;
3359: ELSE
3360: wf_engine.SetItemAttrText
3361: (itemtype => p_item_type,
3362: itemkey => p_item_key,
3363: aname => lv_item_name,
3364: avalue => lv_response
3417: BEGIN
3418: hr_utility.set_location('Entering: '|| l_proc,5);
3419: ln_approver_index := gn_approver_index - 1;
3420: -- get the additional approvers number
3421: ln_num_of_add_apprs := wf_engine.GetItemAttrNumber
3422: (itemtype => p_item_type,
3423: itemkey => p_item_key,
3424: aname => 'ADDITIONAL_APPROVERS_NUMBER');
3425:
3444: ELSE
3445: lv_default_approver := 'N';
3446: -- check if this additional index has been removed by the user
3447:
3448: lv_approver_deleted := wf_engine.GetItemAttrText
3449: (itemtype => p_item_type,
3450: itemkey => p_item_key,
3451: aname => lv_item_name);
3452: lv_approver_deleted := NVL(lv_approver_deleted,' ');
3456:
3457: -- delete proper record.
3458: IF lv_default_approver <> 'Y' AND lv_approver_deleted <>'DELETED' THEN
3459: -- get the approver ID for this index
3460: ln_person_id := wf_engine.GetItemAttrNumber
3461: (itemtype => p_item_type,
3462: itemkey => p_item_key,
3463: aname => lv_item_name);
3464: IF ln_person_id IS NULL THEN
3548: hr_utility.trace('In (if ( funmode = RUN )):'|| l_proc);
3549:
3550: -- get the current forward from person
3551: l_current_forward_from_id :=
3552: nvl(wf_engine.GetItemAttrNumber
3553: (itemtype => itemtype
3554: ,itemkey => itemkey
3555: ,aname => 'FORWARD_FROM_PERSON_ID'),
3556: wf_engine.GetItemAttrNumber
3552: nvl(wf_engine.GetItemAttrNumber
3553: (itemtype => itemtype
3554: ,itemkey => itemkey
3555: ,aname => 'FORWARD_FROM_PERSON_ID'),
3556: wf_engine.GetItemAttrNumber
3557: (itemtype => itemtype
3558: ,itemkey => itemkey
3559: ,aname => 'CREATOR_PERSON_ID'));
3560: -- get the current forward to person
3558: ,itemkey => itemkey
3559: ,aname => 'CREATOR_PERSON_ID'));
3560: -- get the current forward to person
3561: l_current_forward_to_id :=
3562: nvl(wf_engine.GetItemAttrNumber
3563: (itemtype => itemtype
3564: ,itemkey => itemkey
3565: ,aname => 'FORWARD_TO_PERSON_ID'),
3566: wf_engine.GetItemAttrNumber
3562: nvl(wf_engine.GetItemAttrNumber
3563: (itemtype => itemtype
3564: ,itemkey => itemkey
3565: ,aname => 'FORWARD_TO_PERSON_ID'),
3566: wf_engine.GetItemAttrNumber
3567: (itemtype => itemtype
3568: ,itemkey => itemkey
3569: ,aname => 'CREATOR_PERSON_ID'));
3570:
3569: ,aname => 'CREATOR_PERSON_ID'));
3570:
3571:
3572: -- get the AME transaction type and app id
3573: c_application_id :=wf_engine.GetItemAttrNumber(itemtype => itemtype ,
3574: itemkey => itemkey,
3575: aname => 'HR_AME_APP_ID_ATTR');
3576:
3577:
3576:
3577:
3578: c_application_id := nvl(c_application_id,800);
3579:
3580: c_transaction_id := wf_engine.GetItemAttrNumber(itemtype => itemtype ,
3581: itemkey => itemkey,
3582: aname => 'TRANSACTION_ID');
3583:
3584:
3582: aname => 'TRANSACTION_ID');
3583:
3584:
3585:
3586: c_transaction_type := wf_engine.GetItemAttrText(itemtype => itemtype ,
3587: itemkey => itemkey,
3588: aname => 'HR_AME_TRAN_TYPE_ATTR');
3589:
3590:
3604: --
3605:
3606:
3607: -- get the total number of additional approvers for this transaction
3608: ln_addntl_approvers := NVL(wf_engine.GetItemAttrNumber
3609: (itemtype => itemtype
3610: ,itemkey => itemkey
3611: ,aname => 'ADDITIONAL_APPROVERS_NUMBER'),
3612: 0);
3623: (p_item_type => itemtype
3624: ,p_item_key => itemkey
3625: ,p_name => 'CURRENT_APPROVER_INDEX');
3626:
3627: wf_engine.SetItemAttrNumber
3628: (itemtype => itemtype,
3629: itemkey => itemkey,
3630: aname => 'CURRENT_APPROVER_INDEX',
3631: avalue => NULL);
3637:
3638:
3639:
3640: -- get the current_approver_index
3641: ln_current_approver_index := NVL(wf_engine.GetItemAttrNumber
3642: (itemtype => itemtype
3643: ,itemkey => itemkey
3644: ,aname => 'CURRENT_APPROVER_INDEX'),
3645: 0);
3657: IF csr_wiav%notfound THEN
3658: lv_exists := 'N';
3659: ELSE
3660: lv_exists := 'Y';
3661: lv_isvalid := wf_engine.GetItemAttrText
3662: (itemtype => itemtype,
3663: itemkey => itemkey,
3664: aname => lv_item_name);
3665: lv_isvalid := NVL(lv_isvalid,' ');
3674:
3675: IF lv_exists <>'N' AND lv_isvalid <>'DELETED' THEN
3676: hr_utility.trace('In ( IF lv_exists <>N AND lv_isvalid <>DELETED):'|| l_proc);
3677: l_forward_to_person_id :=
3678: wf_engine.GetItemAttrNumber
3679: (itemtype => itemtype,
3680: itemkey => itemkey,
3681: aname => lv_item_name
3682: );
3684: ELSE
3685: hr_utility.trace('In else of ( IF lv_exists <>N AND lv_isvalid <>DELETED):'|| l_proc);
3686: -- get the last default approver index
3687:
3688: ln_last_default_approver_id := wf_engine.GetItemAttrNumber
3689: (itemtype => itemtype,
3690: itemkey => itemkey,
3691: aname => 'LAST_DEFAULT_APPROVER');
3692:
3698: -- now the from column will show the last approver approved.
3699: l_forward_to_person_id :=
3700: hr_approval_custom.Get_Next_Approver
3701: (p_person_id => NVL(ln_last_default_approver_id,
3702: wf_engine.GetItemAttrNumber
3703: (itemtype => itemtype
3704: ,itemkey => itemkey
3705: ,aname => 'CREATOR_PERSON_ID')));
3706: -- set the last default approver id
3704: ,itemkey => itemkey
3705: ,aname => 'CREATOR_PERSON_ID')));
3706: -- set the last default approver id
3707: -- 'LAST_DEFAULT_APPROVER'
3708: wf_engine.SetItemAttrNumber
3709: (itemtype => itemtype,
3710: itemkey => itemkey,
3711: aname => 'LAST_DEFAULT_APPROVER',
3712: avalue => l_forward_to_person_id);
3720: (p_item_type => itemtype
3721: ,p_item_key => itemkey
3722: ,p_name => 'CURRENT_DEF_APPR_INDEX');
3723:
3724: wf_engine.SetItemAttrNumber
3725: (itemtype => itemtype,
3726: itemkey => itemkey,
3727: aname => 'CURRENT_DEF_APPR_INDEX',
3728: avalue => 0);
3727: aname => 'CURRENT_DEF_APPR_INDEX',
3728: avalue => 0);
3729: ELSE
3730: ln_curr_def_appr_index :=
3731: wf_engine.GetItemAttrNumber
3732: (itemtype => itemtype,
3733: itemkey => itemkey,
3734: aname => 'CURRENT_DEF_APPR_INDEX'
3735: );
3734: aname => 'CURRENT_DEF_APPR_INDEX'
3735: );
3736: -- increment it and update the item attribute value
3737: ln_curr_def_appr_index := ln_curr_def_appr_index + 1;
3738: wf_engine.SetItemAttrNumber
3739: (itemtype => itemtype,
3740: itemkey => itemkey,
3741: aname => 'CURRENT_DEF_APPR_INDEX',
3742: avalue => ln_curr_def_appr_index);
3745:
3746: END IF;
3747:
3748: -- set the current_approver_index
3749: wf_engine.SetItemAttrNumber (itemtype => itemtype
3750: ,itemkey => itemkey
3751: ,aname => 'CURRENT_APPROVER_INDEX'
3752: ,avalue => (ln_current_approver_index + 1));
3753:
3786: ,p_name => l_forward_to_username
3787: ,p_display_name => l_forward_to_disp_name);
3788:
3789: --
3790: wf_engine.SetItemAttrNumber
3791: (itemtype => itemtype
3792: ,itemkey => itemkey
3793: ,aname => 'FORWARD_TO_PERSON_ID'
3794: ,avalue => l_forward_to_person_id);
3792: ,itemkey => itemkey
3793: ,aname => 'FORWARD_TO_PERSON_ID'
3794: ,avalue => l_forward_to_person_id);
3795: --
3796: wf_engine.SetItemAttrText
3797: (itemtype => itemtype
3798: ,itemkey => itemkey
3799: ,aname => 'FORWARD_TO_USERNAME'
3800: ,avalue => l_forward_to_username);
3798: ,itemkey => itemkey
3799: ,aname => 'FORWARD_TO_USERNAME'
3800: ,avalue => l_forward_to_username);
3801: --
3802: Wf_engine.SetItemAttrText
3803: (itemtype => itemtype
3804: ,itemkey => itemkey
3805: ,aname => 'FORWARD_TO_DISPLAY_NAME'
3806: ,avalue => l_forward_to_disp_name);
3806: ,avalue => l_forward_to_disp_name);
3807: --
3808: -- set forward from to old forward to
3809: --
3810: wf_engine.SetItemAttrNumber
3811: (itemtype => itemtype
3812: ,itemkey => itemkey
3813: ,aname => 'FORWARD_FROM_PERSON_ID'
3814: ,avalue => l_current_forward_to_id);
3821: ,p_orig_system_id => l_current_forward_to_id
3822: ,p_name => l_forward_from_username
3823: ,p_display_name => l_forward_from_disp_name);
3824: --
3825: wf_engine.SetItemAttrText
3826: (itemtype => itemtype
3827: ,itemkey => itemkey
3828: ,aname => 'FORWARD_FROM_USERNAME'
3829: ,avalue => l_forward_from_username);
3827: ,itemkey => itemkey
3828: ,aname => 'FORWARD_FROM_USERNAME'
3829: ,avalue => l_forward_from_username);
3830: --
3831: wf_engine.SetItemAttrText
3832: (itemtype => itemtype
3833: ,itemkey => itemkey
3834: ,aname => 'FORWARD_FROM_DISPLAY_NAME'
3835: ,avalue => l_forward_from_disp_name);
3901: if ( funmode = 'RUN' ) then
3902: hr_utility.trace('In(if ( funmode = RUN )): '|| l_proc);
3903: --
3904: --
3905: l_creator_person_id := wf_engine.GetItemAttrNumber
3906: (itemtype => p_item_type
3907: ,itemkey => p_item_key
3908: ,aname => 'CREATOR_PERSON_ID');
3909: --
3906: (itemtype => p_item_type
3907: ,itemkey => p_item_key
3908: ,aname => 'CREATOR_PERSON_ID');
3909: --
3910: l_forward_to_person_id := wf_engine.GetItemAttrNumber
3911: (itemtype => p_item_type
3912: ,itemkey => p_item_key
3913: ,aname =>'FORWARD_TO_PERSON_ID');
3914:
3913: ,aname =>'FORWARD_TO_PERSON_ID');
3914:
3915: -- get the current forward to person
3916: l_current_forward_to_id :=
3917: nvl(wf_engine.GetItemAttrNumber
3918: (itemtype => p_item_type
3919: ,itemkey => p_item_key
3920: ,aname => 'FORWARD_TO_PERSON_ID'),
3921: wf_engine.GetItemAttrNumber
3917: nvl(wf_engine.GetItemAttrNumber
3918: (itemtype => p_item_type
3919: ,itemkey => p_item_key
3920: ,aname => 'FORWARD_TO_PERSON_ID'),
3921: wf_engine.GetItemAttrNumber
3922: (itemtype => p_item_type
3923: ,itemkey => p_item_key
3924: ,aname => 'CREATOR_PERSON_ID'));
3925:
3924: ,aname => 'CREATOR_PERSON_ID'));
3925:
3926:
3927:
3928: c_application_id :=wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
3929: itemkey => p_item_key,
3930: aname => 'HR_AME_APP_ID_ATTR');
3931:
3932:
3930: aname => 'HR_AME_APP_ID_ATTR');
3931:
3932:
3933: c_application_id := nvl(c_application_id,800);
3934: c_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
3935: itemkey => p_item_key,
3936: aname => 'TRANSACTION_ID');
3937:
3938:
3936: aname => 'TRANSACTION_ID');
3937:
3938:
3939:
3940: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
3941: itemkey => p_item_key,
3942: aname => 'HR_AME_TRAN_TYPE_ATTR');
3943:
3944: if(c_transaction_type is not null) then
3942: aname => 'HR_AME_TRAN_TYPE_ATTR');
3943:
3944: if(c_transaction_type is not null) then
3945: hr_utility.trace('In(if ( if(c_transaction_type is not null))): '|| l_proc);
3946: l_current_forward_to_username:= Wf_engine.GetItemAttrText(itemtype => p_item_type
3947: ,itemkey => p_item_key
3948: ,aname => 'FORWARD_TO_USERNAME');
3949: l_current_forward_to_username := nvl(l_current_forward_to_username,wf_engine.GetItemAttrText(itemtype => p_item_type ,
3950: itemkey => p_item_key,
3945: hr_utility.trace('In(if ( if(c_transaction_type is not null))): '|| l_proc);
3946: l_current_forward_to_username:= Wf_engine.GetItemAttrText(itemtype => p_item_type
3947: ,itemkey => p_item_key
3948: ,aname => 'FORWARD_TO_USERNAME');
3949: l_current_forward_to_username := nvl(l_current_forward_to_username,wf_engine.GetItemAttrText(itemtype => p_item_type ,
3950: itemkey => p_item_key,
3951: aname => 'RETURN_TO_USERNAME'));
3952: -- fix for bug#2677648
3953: if(l_forward_to_person_id is not null) then
4016: (p_item_type => p_item_type
4017: ,p_item_key => p_item_key
4018: ,p_name => 'LAST_DEFAULT_APPROVER');
4019:
4020: wf_engine.SetItemAttrNumber
4021: (itemtype => p_item_type,
4022: itemkey => p_item_key,
4023: aname => 'LAST_DEFAULT_APPROVER',
4024: avalue => NULL);
4027: CLOSE csr_wiav;
4028:
4029:
4030: -- 'LAST_DEFAULT_APPROVER'
4031: ln_last_def_approver:= wf_engine.GetItemAttrNumber
4032: (itemtype => p_item_type,
4033: itemkey => p_item_key,
4034: aname => 'LAST_DEFAULT_APPROVER'
4035: );
4069: FETCH csr_wiav into l_dummy;
4070: IF csr_wiav%notfound THEN
4071: ln_approval_level := 0;
4072: ELSE
4073: ln_approval_level := wf_engine.GetItemAttrNumber
4074: (itemtype => p_item_type,
4075: itemkey => p_item_key,
4076: aname => 'APPROVAL_LEVEL');
4077: END IF; -- for csr_wiav%notfound
4088: FETCH csr_wiav into l_dummy;
4089: IF csr_wiav%notfound THEN
4090: NULL;
4091: ELSE
4092: ln_curr_def_appr_index := wf_engine.GetItemAttrNumber
4093: (itemtype => p_item_type,
4094: itemkey => p_item_key,
4095: aname => 'CURRENT_DEF_APPR_INDEX');
4096: END IF;-- for csr_wiav%notfound
4179: IF csr_wiav%notfound THEN
4180: ln_number_of_notifiers := 0;
4181: ELSE
4182: ln_number_of_notifiers:=
4183: wf_engine.GetItemAttrNumber
4184: (itemtype => itemtype,
4185: itemkey => itemkey,
4186: aname => 'NOTIFIERS_NUMBER'
4187: );
4198: ln_current_index := 1;
4199:
4200: ELSE
4201: ln_current_index:=
4202: NVL( wf_engine.GetItemAttrNumber
4203: (itemtype => itemtype,
4204: itemkey => itemkey,
4205: aname => 'CURRENT_ONSUBMIT_INDEX')
4206: ,0);
4226: IF csr_wiav%notfound THEN
4227: lv_exists := 'N';
4228: ELSE
4229: lv_exists := 'Y';
4230: lv_notify := wf_engine.GetItemAttrText
4231: (itemtype => itemtype,
4232: itemkey => itemkey,
4233: aname => lv_item_name
4234: );
4315: IF csr_wiav%notfound THEN
4316: ln_number_of_notifiers := 0;
4317: ELSE
4318: ln_number_of_notifiers:=
4319: wf_engine.GetItemAttrNumber
4320: (itemtype => itemtype,
4321: itemkey => itemkey,
4322: aname => 'NOTIFIERS_NUMBER'
4323: );
4334: ln_current_index := 1;
4335:
4336: ELSE
4337: ln_current_index:=
4338: NVL(wf_engine.GetItemAttrNumber
4339: (itemtype => itemtype,
4340: itemkey => itemkey,
4341: aname => 'CURRENT_ONAPPROVAL_INDEX'
4342: ),0);
4365:
4366: lv_exists := 'N';
4367: ELSE
4368: lv_exists := 'Y';
4369: lv_notify := wf_engine.GetItemAttrText
4370: (itemtype => itemtype,
4371: itemkey => itemkey,
4372: aname => lv_item_name
4373: );
4466: hr_utility.set_location('Entering: '|| l_proc,5);
4467: if ( funmode = 'RUN' ) then
4468: hr_utility.trace('In (if ( funmode = RUN )): '|| l_proc);
4469: -- get the total number ofnotifiers
4470: ln_notifiers := wf_engine.GetItemAttrNumber
4471: (itemtype => itemtype,
4472: itemkey => itemkey,
4473: aname => 'NOTIFIERS_NUMBER'
4474: );
4474: );
4475: IF ln_notifiers > 0 THEN
4476: -- get the current index
4477: ln_current_onsubmit_index :=
4478: NVL(wf_engine.GetItemAttrNumber
4479: (itemtype => itemtype
4480: ,itemkey => itemkey
4481: ,aname => 'CURRENT_ONSUBMIT_INDEX'),0);
4482:
4506: IF csr_wiav%notfound THEN
4507: lv_exists := 'N';
4508: ELSE
4509: lv_exists := 'Y';
4510: ln_person_id:= wf_engine.GetItemAttrNumber
4511: (itemtype => itemtype,
4512: itemkey => itemkey,
4513: aname => lv_item_name
4514: );
4511: (itemtype => itemtype,
4512: itemkey => itemkey,
4513: aname => lv_item_name
4514: );
4515: lv_notify := wf_engine.GetItemAttrText
4516: (itemtype => itemtype,
4517: itemkey => itemkey,
4518: aname => lv_item_name
4519: );
4523: IF lv_exists = 'Y' THEN
4524: hr_utility.trace('In ( IF lv_exists = Y): '|| l_proc);
4525: lv_onsubmit := SUBSTR(lv_notify,1,1);
4526: IF lv_onsubmit= 'Y' THEN
4527: wf_engine.SetItemAttrNumber
4528: (itemtype => itemtype,
4529: itemkey => itemkey,
4530: aname => 'CURRENT_ONSUBMIT_INDEX',
4531: avalue => I
4566: (p_item_type => itemtype
4567: ,p_item_key => itemkey
4568: ,p_name => 'ONSUB_FWD_TO_PERSON_ID');
4569:
4570: wf_engine.SetItemAttrNumber
4571: (itemtype => itemtype
4572: ,itemkey => itemkey
4573: ,aname => 'ONSUB_FWD_TO_PERSON_ID'
4574: ,avalue => l_forward_to_person_id);
4577: (p_item_type => itemtype
4578: ,p_item_key => itemkey
4579: ,p_name => 'ONSUB_FWD_TO_USERNAME');
4580:
4581: wf_engine.SetItemAttrText
4582: (itemtype => itemtype
4583: ,itemkey => itemkey
4584: ,aname => 'ONSUB_FWD_TO_USERNAME'
4585: ,avalue => l_forward_to_username);
4588: hr_approval_wf.create_item_attrib_if_notexist
4589: (p_item_type => itemtype
4590: ,p_item_key => itemkey
4591: ,p_name => 'ONSUB_FWD_TO_DISPLAY_NAME');
4592: wf_engine.SetItemAttrText
4593: (itemtype => itemtype
4594: ,itemkey => itemkey
4595: ,aname => 'ONSUB_FWD_TO_DISPLAY_NAME'
4596: ,avalue => l_forward_to_disp_name);
4669: if ( funmode = 'RUN' ) then
4670: hr_utility.trace('In (if ( funmode = RUN) ): '|| l_proc);
4671:
4672: -- get the total number ofnotifiers
4673: ln_notifiers := wf_engine.GetItemAttrNumber
4674: (itemtype => itemtype,
4675: itemkey => itemkey,
4676: aname => 'NOTIFIERS_NUMBER'
4677: );
4678: IF ln_notifiers > 0 THEN
4679:
4680: -- get the current index
4681: ln_current_onapproval_index :=
4682: NVL(wf_engine.GetItemAttrNumber
4683: (itemtype => itemtype
4684: ,itemkey => itemkey
4685: ,aname => 'CURRENT_ONAPPROVAL_INDEX'),0);
4686:
4711: IF csr_wiav%notfound THEN
4712: lv_exists := 'N';
4713: ELSE
4714: lv_exists := 'Y';
4715: ln_person_id:= wf_engine.GetItemAttrNumber
4716: (itemtype => itemtype,
4717: itemkey => itemkey,
4718: aname => lv_item_name
4719: );
4716: (itemtype => itemtype,
4717: itemkey => itemkey,
4718: aname => lv_item_name
4719: );
4720: lv_notify := wf_engine.GetItemAttrText
4721: (itemtype => itemtype,
4722: itemkey => itemkey,
4723: aname => lv_item_name
4724: );
4729: hr_utility.trace('In (IF lv_exists = Y): '|| l_proc);
4730: lv_onapproval := SUBSTR(lv_notify,3,3);
4731: IF lv_onapproval= 'Y' THEN
4732: hr_utility.trace('In (IF lv_onapproval = Y): '|| l_proc);
4733: wf_engine.SetItemAttrNumber
4734: (itemtype => itemtype,
4735: itemkey => itemkey,
4736: aname => 'CURRENT_ONAPPROVAL_INDEX',
4737: avalue => I
4771: hr_approval_wf.create_item_attrib_if_notexist
4772: (p_item_type => itemtype
4773: ,p_item_key => itemkey
4774: ,p_name => 'ONAPPR_FWD_TO_PERSON_ID');
4775: wf_engine.SetItemAttrNumber
4776: (itemtype => itemtype
4777: ,itemkey => itemkey
4778: ,aname => 'ONAPPR_FWD_TO_PERSON_ID'
4779: ,avalue => l_forward_to_person_id);
4781: hr_approval_wf.create_item_attrib_if_notexist
4782: (p_item_type => itemtype
4783: ,p_item_key => itemkey
4784: ,p_name => 'ONAPPR_FWD_TO_USERNAME');
4785: wf_engine.SetItemAttrText
4786: (itemtype => itemtype
4787: ,itemkey => itemkey
4788: ,aname => 'ONAPPR_FWD_TO_USERNAME'
4789: ,avalue => l_forward_to_username);
4791: hr_approval_wf.create_item_attrib_if_notexist
4792: (p_item_type => itemtype
4793: ,p_item_key => itemkey
4794: ,p_name => 'ONAPPR_FWD_TO_DISPLAY_NAME');
4795: wf_engine.SetItemAttrText
4796: (itemtype => itemtype
4797: ,itemkey => itemkey
4798: ,aname => 'ONAPPR_FWD_TO_DISPLAY_NAME'
4799: ,avalue => l_forward_to_disp_name);
4799: ,avalue => l_forward_to_disp_name);
4800: --
4801: -- set forward from to old forward to
4802: --
4803: wf_engine.SetItemAttrNumber
4804: (itemtype => itemtype
4805: ,itemkey => itemkey
4806: ,aname => 'ONAPPR_FWD_FROM_PERSON_ID'
4807: ,avalue => l_current_forward_to_id);
4861: --
4862: --
4863: -- get the total number of notifiers
4864: ln_notifiers :=
4865: wf_engine.GetItemAttrNumber(itemtype => itemtype,
4866: itemkey => itemkey,
4867: aname => 'NOTIFIERS_NUMBER');
4868: -- loop through the notifiers to get the first on submit notifier
4869: hr_utility.trace('Going into( FOR I IN 1..ln_notifiers): '|| l_proc);
4876: IF csr_wiav%notfound THEN
4877: lv_exist := 'N';
4878: ELSE
4879: lv_exist := 'Y';
4880: ln_person_id:= wf_engine.GetItemAttrNumber
4881: (itemtype => itemtype,
4882: itemkey => itemkey,
4883: aname => lv_item_name
4884: );
4881: (itemtype => itemtype,
4882: itemkey => itemkey,
4883: aname => lv_item_name
4884: );
4885: lv_notify := wf_engine.GetItemAttrText
4886: (itemtype => itemtype,
4887: itemkey => itemkey,
4888: aname => lv_item_name
4889: );
4894: lv_onsubmit := SUBSTR(lv_notify,1,1);
4895: IF lv_onsubmit= 'Y' THEN
4896: hr_utility.trace('In (IF lv_onsubmit= Y): '|| l_proc);
4897: -- set the person id and start index
4898: wf_engine.SetItemAttrNumber
4899: (itemtype => itemtype,
4900: itemkey => itemkey,
4901: aname => 'ONSUBMIT_START_INDEX',
4902: avalue => I
4901: aname => 'ONSUBMIT_START_INDEX',
4902: avalue => I
4903: );
4904:
4905: wf_engine.SetItemAttrNumber
4906: (itemtype => itemtype,
4907: itemkey => itemkey,
4908: aname => 'ONSUBMIT_START_PERSON_ID',
4909: avalue => ln_person_id
4963: --
4964: --
4965: -- get the total number of notifiers
4966: ln_notifiers :=
4967: wf_engine.GetItemAttrNumber(itemtype => itemtype,
4968: itemkey => itemkey,
4969: aname => 'NOTIFIERS_NUMBER');
4970: -- loop through the notifiers to get the first on submit notifier
4971: hr_utility.trace('Going into (FOR I IN 1..ln_notifiers): '|| l_proc);
4978: IF csr_wiav%notfound THEN
4979: lv_exist := 'N';
4980: ELSE
4981: lv_exist := 'Y';
4982: ln_person_id:= wf_engine.GetItemAttrNumber
4983: (itemtype => itemtype,
4984: itemkey => itemkey,
4985: aname => lv_item_name
4986: );
4983: (itemtype => itemtype,
4984: itemkey => itemkey,
4985: aname => lv_item_name
4986: );
4987: lv_notify := wf_engine.GetItemAttrText
4988: (itemtype => itemtype,
4989: itemkey => itemkey,
4990: aname => lv_item_name
4991: );
4997: lv_onsubmit :=SUBSTR(lv_notify,3,3);
4998: IF lv_onsubmit= 'Y' THEN
4999: hr_utility.trace('In(IF lv_onsubmit = Y): '|| l_proc);
5000: -- set the person id and start index
5001: wf_engine.SetItemAttrNumber
5002: (itemtype => itemtype,
5003: itemkey => itemkey,
5004: aname => 'ONAPPROVAL_START_INDEX',
5005: avalue => I
5004: aname => 'ONAPPROVAL_START_INDEX',
5005: avalue => I
5006: );
5007:
5008: wf_engine.SetItemAttrNumber
5009: (itemtype => itemtype,
5010: itemkey => itemkey,
5011: aname => 'ONAPPROVAL_START_PERSON_ID',
5012: avalue => ln_person_id
5100: (p_item_type => itemtype
5101: ,p_item_key => itemkey
5102: ,p_name => 'CURRENT_DEF_APPR_INDEX');
5103:
5104: wf_engine.SetItemAttrNumber
5105: (itemtype => itemtype,
5106: itemkey => itemkey,
5107: aname => 'CURRENT_DEF_APPR_INDEX',
5108: avalue => 0);
5106: itemkey => itemkey,
5107: aname => 'CURRENT_DEF_APPR_INDEX',
5108: avalue => 0);
5109: ELSE
5110: wf_engine.SetItemAttrNumber
5111: (itemtype => itemtype,
5112: itemkey => itemkey,
5113: aname => 'CURRENT_DEF_APPR_INDEX',
5114: avalue => 0);
5266: -- local variables
5267: l_proc constant varchar2(100) := g_package || ' set_ame_attributes';
5268: begin
5269: hr_utility.set_location('Entering: '|| l_proc,5);
5270: wf_engine.SetItemAttrNumber(itemtype => itemtype ,
5271: itemkey => itemkey,
5272: aname => 'HR_AME_APP_ID_ATTR',
5273: avalue=>800);
5274:
5272: aname => 'HR_AME_APP_ID_ATTR',
5273: avalue=>800);
5274:
5275:
5276: wf_engine.SetItemAttrText(itemtype => itemtype ,
5277: itemkey => itemkey,
5278: aname => 'HR_AME_TRAN_TYPE_ATTR',
5279: avalue=> 'SSHRMS');
5280:
5316: hr_utility.set_location('Entering: '|| l_proc,5);
5317:
5318:
5319: -- Do nothing in cancel or timeout mode
5320: if (funcmode <> wf_engine.eng_run) then
5321: resultout := wf_engine.eng_null;
5322: hr_utility.set_location('Leaving: '|| l_proc,10);
5323: return;
5324: end if;
5317:
5318:
5319: -- Do nothing in cancel or timeout mode
5320: if (funcmode <> wf_engine.eng_run) then
5321: resultout := wf_engine.eng_null;
5322: hr_utility.set_location('Leaving: '|| l_proc,10);
5323: return;
5324: end if;
5325:
5324: end if;
5325:
5326:
5327: --PERFORMER
5328: prole := wf_engine.GetActivityAttrText(
5329: itemtype => itemtype,
5330: itemkey => itemkey,
5331: actid => actid,
5332: aname => 'PERFORMER');
5338: Wf_Core.Raise('WFENG_NOTIFICATION_PERFORMER');
5339: end if;
5340:
5341: -- message name and expand roles will be null. Get these from attributes
5342: avalue := upper(Wf_Engine.GetActivityAttrText(itemtype, itemkey,
5343: actid, 'MESSAGE'));
5344:
5345: -- let notification_send catch a missing message name.
5346: expand_role := nvl(Wf_Engine.GetActivityAttrText(itemtype, itemkey,
5342: avalue := upper(Wf_Engine.GetActivityAttrText(itemtype, itemkey,
5343: actid, 'MESSAGE'));
5344:
5345: -- let notification_send catch a missing message name.
5346: expand_role := nvl(Wf_Engine.GetActivityAttrText(itemtype, itemkey,
5347: actid, 'EXPANDROLES'),'N');
5348:
5349: -- parse out the message type if given
5350: colon := instr(avalue, ':');
5356: msg := substr(avalue, colon + 1);
5357: end if;
5358:
5359: -- Actually send the notification
5360: Wf_Engine_Util.Notification_Send(itemtype, itemkey, actid,
5361: msg, msgtype, prole, expand_role,
5362: resultout);
5363:
5364:
5466: -- Needed this for fixing bug# 2337022
5467: */
5468: -- get the creator person id
5469: hr_utility.trace('getting the creator person id from WF attr');
5470: /*ln_creator_person_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
5471: itemkey => p_item_key,
5472: aname => 'CREATOR_PERSON_ID');
5473: */
5474: ln_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
5470: /*ln_creator_person_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
5471: itemkey => p_item_key,
5472: aname => 'CREATOR_PERSON_ID');
5473: */
5474: ln_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
5475: itemkey => p_item_key,
5476: aname => 'TRANSACTION_ID');
5477:
5478: ln_creator_person_id := hr_workflow_ss.getApprStartingPointPersonId(ln_transaction_id);
5535:
5536: BEGIN
5537: hr_utility.set_location('Entering: '|| l_proc,5);
5538: -- get AME related WF attribute values
5539: c_application_id :=wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
5540: itemkey => p_item_key,
5541: aname => 'HR_AME_APP_ID_ATTR');
5542:
5543: c_application_id := nvl(c_application_id,800);
5542:
5543: c_application_id := nvl(c_application_id,800);
5544:
5545:
5546: c_transaction_id := wf_engine.GetItemAttrNumber(itemtype => p_item_type ,
5547: itemkey => p_item_key,
5548: aname => 'TRANSACTION_ID');
5549:
5550:
5548: aname => 'TRANSACTION_ID');
5549:
5550:
5551:
5552: c_transaction_type := wf_engine.GetItemAttrText(itemtype => p_item_type ,
5553: itemkey => p_item_key,
5554: aname => 'HR_AME_TRAN_TYPE_ATTR');
5555:
5556:
5682: IF csr_wiav%notfound THEN
5683: gn_notifiers := 0;
5684: ELSE
5685: gn_notifiers :=
5686: wf_engine.GetItemAttrNumber(itemtype => p_item_type,
5687: itemkey => p_item_key,
5688: aname => 'NOTIFIERS_NUMBER');
5689: END IF;
5690: CLOSE csr_wiav;
5704: IF csr_wiav%notfound THEN
5705: lv_exist := 'N';
5706: ELSE
5707: lv_exist := 'Y';
5708: ln_person_id:= wf_engine.GetItemAttrNumber
5709: (itemtype => p_item_type,
5710: itemkey => p_item_key,
5711: aname => lv_item_name
5712: );
5709: (itemtype => p_item_type,
5710: itemkey => p_item_key,
5711: aname => lv_item_name
5712: );
5713: lv_notify := wf_engine.GetItemAttrText
5714: (itemtype => p_item_type,
5715: itemkey => p_item_key,
5716: aname => lv_item_name
5717: );