602: l_debug := hr_utility.debug_enabled;
603:
604:
605: IF l_debug THEN
606: pqp_utilities.debug(' p_business_group_id is ' || p_business_group_id );
607: pqp_utilities.debug(' p_date_earned is ' || p_date_earned );
608: pqp_utilities.debug(' p_assignment_id is ' || p_assignment_id );
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
603:
604:
605: IF l_debug THEN
606: pqp_utilities.debug(' p_business_group_id is ' || p_business_group_id );
607: pqp_utilities.debug(' p_date_earned is ' || p_date_earned );
608: pqp_utilities.debug(' p_assignment_id is ' || p_assignment_id );
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
604:
605: IF l_debug THEN
606: pqp_utilities.debug(' p_business_group_id is ' || p_business_group_id );
607: pqp_utilities.debug(' p_date_earned is ' || p_date_earned );
608: pqp_utilities.debug(' p_assignment_id is ' || p_assignment_id );
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
605: IF l_debug THEN
606: pqp_utilities.debug(' p_business_group_id is ' || p_business_group_id );
607: pqp_utilities.debug(' p_date_earned is ' || p_date_earned );
608: pqp_utilities.debug(' p_assignment_id is ' || p_assignment_id );
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
606: pqp_utilities.debug(' p_business_group_id is ' || p_business_group_id );
607: pqp_utilities.debug(' p_date_earned is ' || p_date_earned );
608: pqp_utilities.debug(' p_assignment_id is ' || p_assignment_id );
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
614: pqp_utilities.debug(' p_prorated_amount is ' || p_prorated_amount );
607: pqp_utilities.debug(' p_date_earned is ' || p_date_earned );
608: pqp_utilities.debug(' p_assignment_id is ' || p_assignment_id );
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
614: pqp_utilities.debug(' p_prorated_amount is ' || p_prorated_amount );
615: pqp_utilities.debug(' p_error_message is ' || p_error_message );
608: pqp_utilities.debug(' p_assignment_id is ' || p_assignment_id );
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
614: pqp_utilities.debug(' p_prorated_amount is ' || p_prorated_amount );
615: pqp_utilities.debug(' p_error_message is ' || p_error_message );
616: pqp_utilities.debug(' p_payroll_period_prorate is ' || p_payroll_period_prorate);
609: pqp_utilities.debug(' p_amount is ' || p_amount );
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
614: pqp_utilities.debug(' p_prorated_amount is ' || p_prorated_amount );
615: pqp_utilities.debug(' p_error_message is ' || p_error_message );
616: pqp_utilities.debug(' p_payroll_period_prorate is ' || p_payroll_period_prorate);
617: END IF;
610: pqp_utilities.debug(' p_payroll_period is ' || p_payroll_period );
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
614: pqp_utilities.debug(' p_prorated_amount is ' || p_prorated_amount );
615: pqp_utilities.debug(' p_error_message is ' || p_error_message );
616: pqp_utilities.debug(' p_payroll_period_prorate is ' || p_payroll_period_prorate);
617: END IF;
618:
611: pqp_utilities.debug(' l_payroll_period is ' || l_payroll_period );
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
614: pqp_utilities.debug(' p_prorated_amount is ' || p_prorated_amount );
615: pqp_utilities.debug(' p_error_message is ' || p_error_message );
616: pqp_utilities.debug(' p_payroll_period_prorate is ' || p_payroll_period_prorate);
617: END IF;
618:
619:
612: pqp_utilities.debug(' p_work_pattern is ' || p_work_pattern );
613: pqp_utilities.debug(' p_conversion_rule is ' || p_conversion_rule );
614: pqp_utilities.debug(' p_prorated_amount is ' || p_prorated_amount );
615: pqp_utilities.debug(' p_error_message is ' || p_error_message );
616: pqp_utilities.debug(' p_payroll_period_prorate is ' || p_payroll_period_prorate);
617: END IF;
618:
619:
620:
864:
865: END IF;
866:
867: IF l_debug THEN
868: pqp_utilities.debug(' l_pay_prorate_period '|| l_pay_prorate_period, 4);
869: pqp_utilities.debug(' l_pay_period ' || l_pay_period, 5);
870: pqp_utilities.debug(' l_ret_val ' || l_ret_val, 5);
871: END IF;
872:
865: END IF;
866:
867: IF l_debug THEN
868: pqp_utilities.debug(' l_pay_prorate_period '|| l_pay_prorate_period, 4);
869: pqp_utilities.debug(' l_pay_period ' || l_pay_period, 5);
870: pqp_utilities.debug(' l_ret_val ' || l_ret_val, 5);
871: END IF;
872:
873: -- IF the pay period is not the same as the proration period
866:
867: IF l_debug THEN
868: pqp_utilities.debug(' l_pay_prorate_period '|| l_pay_prorate_period, 4);
869: pqp_utilities.debug(' l_pay_period ' || l_pay_period, 5);
870: pqp_utilities.debug(' l_ret_val ' || l_ret_val, 5);
871: END IF;
872:
873: -- IF the pay period is not the same as the proration period
874: -- then no calculation to be done.
883: AND l_pay_end_dt IS NOT NULL)THEN
884: CLOSE c_get_start_end_date;
885:
886: IF l_debug THEN
887: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 60);
888: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 70);
889: END IF;
890: END IF;
891: -- bug 3122357
884: CLOSE c_get_start_end_date;
885:
886: IF l_debug THEN
887: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 60);
888: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 70);
889: END IF;
890: END IF;
891: -- bug 3122357
892: -- get average days in the payroll
900: CLOSE c_no_of_days;
901: END IF;
902:
903: IF l_debug THEN
904: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 80);
905: END IF;
906:
907: -- 0 corresponds to Average working days
908: IF p_conversion_rule = '0' THEN
915: IF (c_get_assign_start_date%FOUND
916: AND l_ass_start_dt IS NOT NULL)THEN
917: CLOSE c_get_assign_start_date;
918: IF l_debug THEN
919: pqp_utilities.debug(' l_ass_start_dt is '|| l_ass_start_dt , 91);
920: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
921: END IF;
922: ELSE
923: CLOSE c_get_assign_start_date;
916: AND l_ass_start_dt IS NOT NULL)THEN
917: CLOSE c_get_assign_start_date;
918: IF l_debug THEN
919: pqp_utilities.debug(' l_ass_start_dt is '|| l_ass_start_dt , 91);
920: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
921: END IF;
922: ELSE
923: CLOSE c_get_assign_start_date;
924: p_prorated_amount := 0;
941: IF (c_get_asg_end_date%FOUND)THEN
942: CLOSE c_get_asg_end_date;
943: l_term_date := l_next_term_date;
944: IF l_debug THEN
945: pqp_utilities.debug(' l_next_term_date is '|| l_next_term_date , 92);
946: END IF;
947: ELSE
948: CLOSE c_get_asg_end_date;
949: END IF; -- assignment end date found
949: END IF; -- assignment end date found
950: END IF;-- term date is not null
951:
952: IF l_debug THEN
953: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
954: END IF;
955:
956: /* -- get termination date
957: OPEN c_get_ass_term_date(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
958: FETCH c_get_ass_term_date into l_term_date;
959: IF (c_get_ass_term_date%FOUND AND l_term_date IS NOT NULL)THEN
960: CLOSE c_get_ass_term_date;
961: IF l_debug THEN
962: pqp_utilities.debug(' l_term_date is '|| l_term_date , 101);
963: END IF;
964: ELSE
965: CLOSE c_get_ass_term_date;
966: END IF;-- get termination dt
972: FETCH c_no_of_days into l_days;
973: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
974: CLOSE c_no_of_days;
975: l_actual_work_days := l_days;
976: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 105);
977: ELSE
978: CLOSE c_no_of_days;
979: END IF;
980: ELSE
982: FETCH c_no_of_days into l_days;
983: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
984: CLOSE c_no_of_days;
985: l_actual_work_days := l_days;
986: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 106);
987: pqp_utilities.debug(' l_days is '|| l_days , 107);
988: ELSE
989: CLOSE c_no_of_days;
990: END IF;
983: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
984: CLOSE c_no_of_days;
985: l_actual_work_days := l_days;
986: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 106);
987: pqp_utilities.debug(' l_days is '|| l_days , 107);
988: ELSE
989: CLOSE c_no_of_days;
990: END IF;
991: END IF;
1013: l_pay_end_dt := l_term_date;
1014: END IF;
1015:
1016: IF l_debug THEN
1017: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1018: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1019: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1020: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1021: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1014: END IF;
1015:
1016: IF l_debug THEN
1017: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1018: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1019: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1020: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1021: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1022: END IF;
1015:
1016: IF l_debug THEN
1017: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1018: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1019: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1020: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1021: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1022: END IF;
1023:
1016: IF l_debug THEN
1017: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1018: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1019: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1020: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1021: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1022: END IF;
1023:
1024: -- assignment level overrides
1017: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1018: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1019: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1020: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1021: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1022: END IF;
1023:
1024: -- assignment level overrides
1025: OPEN c_get_avg_si_assignment(p_assignment_id);
1029: AND l_override_method IS NOT NULL)THEN
1030: CLOSE c_get_avg_si_assignment;
1031:
1032: IF l_debug THEN
1033: pqp_utilities.debug(' c_get_avg_si_assignment found ', 4);
1034: pqp_utilities.debug(' l_override_method ' || l_override_method, 5);
1035: pqp_utilities.debug(' l_overridden_avgsi_assignment ' || l_overridden_avgsi_assignment ,6);
1036: END IF;
1037:
1030: CLOSE c_get_avg_si_assignment;
1031:
1032: IF l_debug THEN
1033: pqp_utilities.debug(' c_get_avg_si_assignment found ', 4);
1034: pqp_utilities.debug(' l_override_method ' || l_override_method, 5);
1035: pqp_utilities.debug(' l_overridden_avgsi_assignment ' || l_overridden_avgsi_assignment ,6);
1036: END IF;
1037:
1038: IF (l_override_method = 0) THEN --'Manual Entry'
1031:
1032: IF l_debug THEN
1033: pqp_utilities.debug(' c_get_avg_si_assignment found ', 4);
1034: pqp_utilities.debug(' l_override_method ' || l_override_method, 5);
1035: pqp_utilities.debug(' l_overridden_avgsi_assignment ' || l_overridden_avgsi_assignment ,6);
1036: END IF;
1037:
1038: IF (l_override_method = 0) THEN --'Manual Entry'
1039: l_average_days_multiplier := l_overridden_avgsi_assignment;
1075: l_average_days_multiplier :=
1076: l_max_si_days * l_overridden_avgsi_assignment/100;
1077:
1078: IF l_debug THEN
1079: pqp_utilities.debug(' l_max_si_method ' || l_max_si_method, 5);
1080: pqp_utilities.debug(' l_max_si_days ' || l_max_si_days ,6);
1081: END IF;
1082: END IF;
1083:
1076: l_max_si_days * l_overridden_avgsi_assignment/100;
1077:
1078: IF l_debug THEN
1079: pqp_utilities.debug(' l_max_si_method ' || l_max_si_method, 5);
1080: pqp_utilities.debug(' l_max_si_days ' || l_max_si_days ,6);
1081: END IF;
1082: END IF;
1083:
1084: END IF;
1083:
1084: END IF;
1085:
1086: IF l_debug THEN
1087: pqp_utilities.debug(' l_average_days_multiplier found '|| l_average_days_multiplier,7);
1088: END IF;
1089:
1090: ELSIF (c_get_avg_si_assignment%FOUND
1091: AND
1111: l_average_days_multiplier := (l_average_days_multiplier/l_payroll_days * l_actual_work_days);
1112: END IF;
1113:
1114: IF l_debug THEN
1115: pqp_utilities.debug(' c_get_avg_si_assignment not found ', 4);
1116: END IF;
1117: END IF;-- check for override at assignment level.
1118:
1119:
1131: AND l_pay_end_dt IS NOT NULL)THEN
1132: CLOSE c_get_start_end_date;
1133:
1134: IF l_debug THEN
1135: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 60);
1136: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 70);
1137: END IF;
1138:
1139:
1132: CLOSE c_get_start_end_date;
1133:
1134: IF l_debug THEN
1135: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 60);
1136: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 70);
1137: END IF;
1138:
1139:
1140: -- get average days in the payroll
1148: CLOSE c_no_of_days;
1149: END IF;
1150:
1151: IF l_debug THEN
1152: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 80);
1153: END IF;
1154:
1155: -- check if the assignment has started in this payroll period.
1156: OPEN c_get_assign_start_date(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1158: IF (c_get_assign_start_date%FOUND
1159: AND l_ass_start_dt IS NOT NULL)THEN
1160: CLOSE c_get_assign_start_date;
1161: IF l_debug THEN
1162: pqp_utilities.debug(' l_ass_start_dt is '|| l_ass_start_dt , 92);
1163: END IF;
1164: ELSE
1165: CLOSE c_get_assign_start_date;
1166: p_prorated_amount := 0;
1181: IF (c_get_asg_end_date%FOUND)THEN
1182: CLOSE c_get_asg_end_date;
1183: l_term_date := l_next_term_date;
1184: IF l_debug THEN
1185: pqp_utilities.debug(' l_next_term_date is '|| l_next_term_date , 92);
1186: END IF;
1187: ELSE
1188: CLOSE c_get_asg_end_date;
1189: END IF; -- assignment end date found
1189: END IF; -- assignment end date found
1190: END IF;-- term date is not null
1191:
1192: IF l_debug THEN
1193: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
1194: END IF;
1195:
1196: /* -- get termination date
1197: OPEN c_get_ass_term_date(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1198: FETCH c_get_ass_term_date into l_term_date;
1199: IF (c_get_ass_term_date%FOUND AND l_term_date IS NOT NULL)THEN
1200: CLOSE c_get_ass_term_date;
1201: IF l_debug THEN
1202: pqp_utilities.debug(' l_term_date is '|| l_term_date , 102);
1203: END IF;
1204: ELSE
1205: CLOSE c_get_ass_term_date;
1206: END IF;-- get termination dt
1215: FETCH c_no_of_days into l_days;
1216: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
1217: CLOSE c_no_of_days;
1218: l_actual_work_days := l_days;
1219: pqp_utilities.debug(' l_actual_work_days 1 is '|| l_actual_work_days , 105);
1220: ELSE
1221: CLOSE c_no_of_days;
1222: END IF;
1223: ELSE
1225: FETCH c_no_of_days into l_days;
1226: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
1227: CLOSE c_no_of_days;
1228: l_actual_work_days := l_days;
1229: pqp_utilities.debug(' l_actual_work_days 0 is '|| l_actual_work_days , 105);
1230: pqp_utilities.debug(' l_days 0 is '|| l_days , 105);
1231: ELSE
1232: CLOSE c_no_of_days;
1233: END IF;
1226: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
1227: CLOSE c_no_of_days;
1228: l_actual_work_days := l_days;
1229: pqp_utilities.debug(' l_actual_work_days 0 is '|| l_actual_work_days , 105);
1230: pqp_utilities.debug(' l_days 0 is '|| l_days , 105);
1231: ELSE
1232: CLOSE c_no_of_days;
1233: END IF;
1234: END IF;
1256: l_pay_end_dt := l_term_date;
1257: END IF;
1258:
1259: IF l_debug THEN
1260: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 150);
1261: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 160);
1262: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 170);
1263: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 172);
1264: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 175);
1257: END IF;
1258:
1259: IF l_debug THEN
1260: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 150);
1261: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 160);
1262: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 170);
1263: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 172);
1264: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 175);
1265: END IF;
1258:
1259: IF l_debug THEN
1260: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 150);
1261: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 160);
1262: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 170);
1263: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 172);
1264: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 175);
1265: END IF;
1266:
1259: IF l_debug THEN
1260: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 150);
1261: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 160);
1262: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 170);
1263: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 172);
1264: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 175);
1265: END IF;
1266:
1267: -- assignment level overrides
1260: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 150);
1261: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 160);
1262: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 170);
1263: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 172);
1264: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 175);
1265: END IF;
1266:
1267: -- assignment level overrides
1268: OPEN c_get_avg_si_assignment(p_assignment_id);
1272: AND l_override_method IS NOT NULL)THEN
1273: CLOSE c_get_avg_si_assignment;
1274:
1275: IF l_debug THEN
1276: pqp_utilities.debug(' c_get_avg_si_assignment found ', 4);
1277: pqp_utilities.debug(' l_override_method ' || l_override_method, 5);
1278: pqp_utilities.debug(' l_overridden_avgsi_assignment ' || l_overridden_avgsi_assignment ,6);
1279: END IF;
1280:
1273: CLOSE c_get_avg_si_assignment;
1274:
1275: IF l_debug THEN
1276: pqp_utilities.debug(' c_get_avg_si_assignment found ', 4);
1277: pqp_utilities.debug(' l_override_method ' || l_override_method, 5);
1278: pqp_utilities.debug(' l_overridden_avgsi_assignment ' || l_overridden_avgsi_assignment ,6);
1279: END IF;
1280:
1281: IF (l_override_method = 0) THEN --'Manual Entry'
1274:
1275: IF l_debug THEN
1276: pqp_utilities.debug(' c_get_avg_si_assignment found ', 4);
1277: pqp_utilities.debug(' l_override_method ' || l_override_method, 5);
1278: pqp_utilities.debug(' l_overridden_avgsi_assignment ' || l_overridden_avgsi_assignment ,6);
1279: END IF;
1280:
1281: IF (l_override_method = 0) THEN --'Manual Entry'
1282: l_average_days_multiplier := l_overridden_avgsi_assignment;
1320: l_max_si_days * l_overridden_avgsi_assignment/100;
1321:
1322:
1323: IF l_debug THEN
1324: pqp_utilities.debug(' l_max_si_method ' || l_max_si_method, 5);
1325: pqp_utilities.debug(' l_max_si_days ' || l_max_si_days ,6);
1326: END IF;
1327:
1328: END IF;
1321:
1322:
1323: IF l_debug THEN
1324: pqp_utilities.debug(' l_max_si_method ' || l_max_si_method, 5);
1325: pqp_utilities.debug(' l_max_si_days ' || l_max_si_days ,6);
1326: END IF;
1327:
1328: END IF;
1329: END IF;
1328: END IF;
1329: END IF;
1330:
1331: IF l_debug THEN
1332: pqp_utilities.debug(' l_average_days_multiplier found '|| l_average_days_multiplier,7);
1333: END IF;
1334:
1335: ELSIF (c_get_avg_si_assignment%FOUND
1336: AND
1353: CLOSE c_get_avg_si_assignment;
1354: END IF;-- check for override at assignment level.
1355:
1356: IF l_debug THEN
1357: pqp_utilities.debug(' l_average_days_multiplier found '|| l_average_days_multiplier,7);
1358: END IF;
1359:
1360: IF(bFlagAvgDays= true) THEN
1361:
1365: IF c_get_work_pattern%FOUND AND l_work_pattern IS NOT NULL THEN
1366: CLOSE c_get_work_pattern;
1367:
1368: IF l_debug THEN
1369: pqp_utilities.debug(' l_work_pattern is '|| l_work_pattern , 190);
1370: END IF;
1371:
1372: l_working_work_pattern_days := pay_nl_si_pkg.Get_Working_Work_Pattern_days(p_assignment_id) ;
1373: l_total_work_pattern_days := pay_nl_si_pkg.Get_Total_Work_Pattern_days(p_assignment_id) ;
1372: l_working_work_pattern_days := pay_nl_si_pkg.Get_Working_Work_Pattern_days(p_assignment_id) ;
1373: l_total_work_pattern_days := pay_nl_si_pkg.Get_Total_Work_Pattern_days(p_assignment_id) ;
1374:
1375: IF l_debug THEN
1376: pqp_utilities.debug(' l_working_work_pattern_days is '|| l_working_work_pattern_days , 200);
1377: pqp_utilities.debug(' l_total_work_pattern_days is '|| l_total_work_pattern_days , 210);
1378: END IF;
1379:
1380: -- si factor = working pattern days/total work days * average period days.
1373: l_total_work_pattern_days := pay_nl_si_pkg.Get_Total_Work_Pattern_days(p_assignment_id) ;
1374:
1375: IF l_debug THEN
1376: pqp_utilities.debug(' l_working_work_pattern_days is '|| l_working_work_pattern_days , 200);
1377: pqp_utilities.debug(' l_total_work_pattern_days is '|| l_total_work_pattern_days , 210);
1378: END IF;
1379:
1380: -- si factor = working pattern days/total work days * average period days.
1381:
1406:
1407: END IF;
1408:
1409: IF l_debug THEN
1410: pqp_utilities.debug(' p_error_message is '|| p_error_message , 230);
1411: END IF;
1412:
1413: IF (l_ret_val = 0 ) THEN
1414: IF(l_total_work_pattern_days <> 0) THEN
1413: IF (l_ret_val = 0 ) THEN
1414: IF(l_total_work_pattern_days <> 0) THEN
1415:
1416: IF l_debug THEN
1417: pqp_utilities.debug(' l_average_period_days is '|| l_average_period_days , 215);
1418: END IF;
1419: l_average_ws_si_days := l_working_work_pattern_days/l_total_work_pattern_days * l_average_period_days;
1420:
1421: IF l_debug THEN
1418: END IF;
1419: l_average_ws_si_days := l_working_work_pattern_days/l_total_work_pattern_days * l_average_period_days;
1420:
1421: IF l_debug THEN
1422: pqp_utilities.debug(' l_average_ws_si_days is '|| l_average_ws_si_days , 220);
1423: END IF;
1424:
1425: --prorate the average_ws_si_days value for actual days worked
1426: IF (l_payroll_days <> 0 and l_actual_work_days <> -99) THEN
1427: l_average_ws_si_days := (l_average_ws_si_days/l_payroll_days * l_actual_work_days);
1428: END IF;
1429:
1430: IF l_debug THEN
1431: pqp_utilities.debug(' l_average_ws_si_days is '|| l_average_ws_si_days , 225);
1432: END IF;
1433:
1434: -- get non si days
1435: l_non_si_days := pay_nl_si_pkg.Get_Non_SI_Days(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1434: -- get non si days
1435: l_non_si_days := pay_nl_si_pkg.Get_Non_SI_Days(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1436:
1437: IF l_debug THEN
1438: pqp_utilities.debug(' l_non_si_days is '|| l_non_si_days , 230);
1439: END IF;
1440:
1441: -- avg. work schedule si days = avg. work schedule si days - non si days
1442: l_average_ws_si_days := l_average_ws_si_days - l_non_si_days;
1490: (c_get_max_si_values%FOUND AND l_overridden_realsi_assignment IS NULL ))THEN
1491: CLOSE c_get_max_si_values;
1492:
1493: IF l_debug THEN
1494: pqp_utilities.debug(' c_get_max_si_values not found ', 4);
1495: END IF;
1496:
1497: OPEN c_get_start_end_date(p_assignment_id,p_date_earned);
1498: FETCH c_get_start_end_date into l_pay_start_dt,l_pay_end_dt;
1499: IF c_get_start_end_date%FOUND THEN
1500: CLOSE c_get_start_end_date;
1501:
1502: IF l_debug THEN
1503: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 10);
1504: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 15);
1505: END IF;
1506:
1507: -- check if the assignment has started in this payroll period.
1500: CLOSE c_get_start_end_date;
1501:
1502: IF l_debug THEN
1503: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 10);
1504: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 15);
1505: END IF;
1506:
1507: -- check if the assignment has started in this payroll period.
1508: OPEN c_get_assign_start_date(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1510: IF (c_get_assign_start_date%FOUND AND l_ass_start_dt IS NOT NULL)THEN
1511: CLOSE c_get_assign_start_date;
1512: l_ret_val := 0;
1513: IF l_debug THEN
1514: pqp_utilities.debug(' l_ass_start_dt is '|| l_ass_start_dt , 20);
1515: END IF;
1516: ELSE
1517: CLOSE c_get_assign_start_date;
1518: --p_error_message := 'Error: Unable to find the assignment start date for the person ';
1533: IF (c_get_asg_end_date%FOUND)THEN
1534: CLOSE c_get_asg_end_date;
1535: l_term_date := l_next_term_date;
1536: IF l_debug THEN
1537: pqp_utilities.debug(' l_next_term_date is '|| l_next_term_date , 92);
1538: END IF;
1539: ELSE
1540: CLOSE c_get_asg_end_date;
1541: END IF; -- assignment end date found
1541: END IF; -- assignment end date found
1542: END IF;-- term date is not null
1543:
1544: IF l_debug THEN
1545: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
1546: END IF;
1547: /* -- get termination date
1548: OPEN c_get_ass_term_date(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1549: FETCH c_get_ass_term_date into l_term_date;
1550: IF (c_get_ass_term_date%FOUND AND l_term_date IS NOT NULL)THEN
1551: CLOSE c_get_ass_term_date;
1552:
1553: IF l_debug THEN
1554: pqp_utilities.debug(' l_term_date is '|| l_term_date , 30);
1555: END IF;
1556: ELSE
1557: CLOSE c_get_ass_term_date;
1558: END IF;-- term date check
1560:
1561:
1562:
1563: IF l_debug THEN
1564: pqp_utilities.debug(' l_ret_val is '|| l_ret_val , 31);
1565: END IF;
1566:
1567: IF (l_ret_val = 0 )THEN
1568: IF(l_ass_start_dt IS NOT NULL AND l_ass_start_dt > l_pay_start_dt) THEN
1573: l_pay_end_dt := l_term_date;
1574: END IF;
1575:
1576: IF l_debug THEN
1577: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 32);
1578: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 33);
1579: END IF;
1580:
1581: -- check if employee is attached to a work pattern.
1574: END IF;
1575:
1576: IF l_debug THEN
1577: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 32);
1578: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 33);
1579: END IF;
1580:
1581: -- check if employee is attached to a work pattern.
1582: OPEN c_get_work_pattern(p_assignment_id,p_date_earned);
1584: IF (c_get_work_pattern%FOUND AND l_work_pattern IS NOT NULL)THEN
1585: CLOSE c_get_work_pattern;
1586:
1587: IF l_debug THEN
1588: pqp_utilities.debug(' l_work_pattern is '|| l_work_pattern , 40);
1589: END IF;
1590:
1591: l_working_work_pattern_days := pqp_schedule_calculation_pkg.get_days_worked
1592: ( p_assignment_id => p_assignment_id
1598: ,p_override_wp => l_work_pattern
1599: );
1600:
1601: IF l_debug THEN
1602: pqp_utilities.debug(' l_working_work_pattern_days is '|| l_working_work_pattern_days , 50);
1603: END IF;
1604:
1605: IF (l_max_si_method = 0 ) THEN -- 1 indicates 'Payroll Period' 0 indicates Weeks worked.
1606: l_max_si_days := pay_nl_si_pkg.Get_Max_SI_Days(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1608: l_max_si_days := pay_nl_si_pkg.Get_Week_Days(l_pay_start_dt,l_pay_end_dt);
1609: END IF;
1610:
1611: IF l_debug THEN
1612: pqp_utilities.debug(' l_max_si_days is '|| l_max_si_days , 60);
1613: END IF;
1614:
1615: l_non_si_days := pay_nl_si_pkg.Get_Non_SI_Days(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1616:
1614:
1615: l_non_si_days := pay_nl_si_pkg.Get_Non_SI_Days(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1616:
1617: IF l_debug THEN
1618: pqp_utilities.debug(' l_non_si_days is '|| l_non_si_days , 70);
1619: END IF;
1620:
1621: IF (l_working_work_pattern_days > l_max_si_days ) THEN
1622: l_real_si_days := l_max_si_days;
1624: l_real_si_days := l_working_work_pattern_days;
1625: END IF;
1626:
1627: IF l_debug THEN
1628: pqp_utilities.debug(' l_real_si_days is '|| l_real_si_days , 80);
1629: END IF;
1630:
1631: l_real_si_days := l_real_si_days - l_non_si_days;
1632:
1652: ELSE
1653: CLOSE c_get_max_si_values;
1654: l_average_days_multiplier := l_overridden_realsi_assignment;
1655: IF l_debug THEN
1656: pqp_utilities.debug(' l_overridden_realsi_assignment ' || l_overridden_realsi_assignment, 90);
1657: END IF;
1658: END IF;-- check for max si days
1659: END IF; -- ret val is zero.
1660:
1670: IF (c_get_assign_start_date%FOUND
1671: AND l_ass_start_dt IS NOT NULL)THEN
1672: CLOSE c_get_assign_start_date;
1673: IF l_debug THEN
1674: pqp_utilities.debug(' l_ass_start_dt is '|| l_ass_start_dt , 91);
1675: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
1676: END IF;
1677: ELSE
1678: CLOSE c_get_assign_start_date;
1671: AND l_ass_start_dt IS NOT NULL)THEN
1672: CLOSE c_get_assign_start_date;
1673: IF l_debug THEN
1674: pqp_utilities.debug(' l_ass_start_dt is '|| l_ass_start_dt , 91);
1675: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
1676: END IF;
1677: ELSE
1678: CLOSE c_get_assign_start_date;
1679: p_prorated_amount := 0;
1696: IF (c_get_asg_end_date%FOUND)THEN
1697: CLOSE c_get_asg_end_date;
1698: l_term_date := l_next_term_date;
1699: IF l_debug THEN
1700: pqp_utilities.debug(' l_next_term_date is '|| l_next_term_date , 92);
1701: END IF;
1702: ELSE
1703: CLOSE c_get_asg_end_date;
1704: END IF; -- assignment end date found
1704: END IF; -- assignment end date found
1705: END IF;-- term date is not null
1706:
1707: IF l_debug THEN
1708: pqp_utilities.debug(' l_term_date is '|| l_term_date , 91);
1709: END IF;
1710:
1711: /* -- get termination date
1712: OPEN c_get_ass_term_date(p_assignment_id,l_pay_start_dt,l_pay_end_dt);
1713: FETCH c_get_ass_term_date into l_term_date;
1714: IF (c_get_ass_term_date%FOUND AND l_term_date IS NOT NULL)THEN
1715: CLOSE c_get_ass_term_date;
1716: IF l_debug THEN
1717: pqp_utilities.debug(' l_term_date is '|| l_term_date , 101);
1718: END IF;
1719: ELSE
1720: CLOSE c_get_ass_term_date;
1721: END IF;-- get termination dt
1727: FETCH c_no_of_days into l_days;
1728: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
1729: CLOSE c_no_of_days;
1730: l_actual_work_days := l_days;
1731: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 105);
1732: ELSE
1733: CLOSE c_no_of_days;
1734: END IF;
1735: ELSE
1737: FETCH c_no_of_days into l_days;
1738: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
1739: CLOSE c_no_of_days;
1740: l_actual_work_days := l_days;
1741: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 106);
1742: pqp_utilities.debug(' l_days is '|| l_days , 107);
1743: ELSE
1744: CLOSE c_no_of_days;
1745: END IF;
1738: IF (c_no_of_days%FOUND AND l_days IS NOT NULL)THEN
1739: CLOSE c_no_of_days;
1740: l_actual_work_days := l_days;
1741: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 106);
1742: pqp_utilities.debug(' l_days is '|| l_days , 107);
1743: ELSE
1744: CLOSE c_no_of_days;
1745: END IF;
1746: END IF;
1768: l_pay_end_dt := l_term_date;
1769: END IF;
1770:
1771: IF l_debug THEN
1772: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1773: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1774: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1775: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1776: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1769: END IF;
1770:
1771: IF l_debug THEN
1772: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1773: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1774: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1775: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1776: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1777: END IF;
1770:
1771: IF l_debug THEN
1772: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1773: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1774: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1775: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1776: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1777: END IF;
1778:
1771: IF l_debug THEN
1772: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1773: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1774: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1775: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1776: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1777: END IF;
1778:
1779: l_average_days_multiplier := l_periods_per_yr;
1772: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 151);
1773: pqp_utilities.debug(' l_payroll_days is '|| l_payroll_days , 161);
1774: pqp_utilities.debug(' l_actual_work_days is '|| l_actual_work_days , 171);
1775: pqp_utilities.debug(' l_pay_start_dt is '|| l_pay_start_dt , 173);
1776: pqp_utilities.debug(' l_pay_end_dt is '|| l_pay_end_dt , 176);
1777: END IF;
1778:
1779: l_average_days_multiplier := l_periods_per_yr;
1780:
1799:
1800: IF l_ret_val = 0 THEN
1801:
1802: IF l_debug THEN
1803: pqp_utilities.debug(' l_average_days_multiplier is '|| l_average_days_multiplier , 250);
1804: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 260);
1805: END IF;
1806:
1807: p_prorated_amount := (p_amount/l_average_days_divisor) * l_average_days_multiplier;
1800: IF l_ret_val = 0 THEN
1801:
1802: IF l_debug THEN
1803: pqp_utilities.debug(' l_average_days_multiplier is '|| l_average_days_multiplier , 250);
1804: pqp_utilities.debug(' l_average_days_divisor is '|| l_average_days_divisor , 260);
1805: END IF;
1806:
1807: p_prorated_amount := (p_amount/l_average_days_divisor) * l_average_days_multiplier;
1808: p_prorated_amount := ROUND(p_prorated_amount,2);
1807: p_prorated_amount := (p_amount/l_average_days_divisor) * l_average_days_multiplier;
1808: p_prorated_amount := ROUND(p_prorated_amount,2);
1809:
1810: IF l_debug THEN
1811: pqp_utilities.debug(' p_prorated_amount is '|| p_prorated_amount , 300);
1812: END IF;
1813:
1814: END IF;
1815: