52: l_ee_eligibility DATE;
53: --
54: BEGIN
55: --
56: hr_utility.set_location('pyhkudfs get_retro_mpf', 01);
57: --
58: l_cum_mpf_arrs := 0;
59: l_cum_mpf_ri := 0;
60: l_old_period_id := 0;
86: IF l_period_id <> l_old_period_id THEN -- dealing with new period
87: /*
88: ** Get the MPF RI LIMITS that were in force at the period end date
89: */
90: hr_utility.set_location('pyhkudfs get_retro_mpf', 02);
91: IF p_pay_basis <> 'Year' and
92: p_pay_basis <> 'Semi-Year' and
93: p_pay_basis <> 'Semi-Month' and /* Bug 7171659, based on Day rate times days*/
94: p_pay_basis <> 'Lunar Month' THEN
122: ** apply the capping to the periodic RI based on p_calc_method
123: */
124:
125:
126: hr_utility.trace('l_cum_mpf_arrs' || to_char(l_cum_mpf_arrs));
127: hr_utility.trace('l_value' || to_char(l_value));
128: hr_utility.trace('l_min_ri' || to_char(l_min_ri));
129: hr_utility.trace('l_max_ri' || to_char(l_max_ri));
130: hr_utility.trace('p_percentage' || to_char(p_percentage));
123: */
124:
125:
126: hr_utility.trace('l_cum_mpf_arrs' || to_char(l_cum_mpf_arrs));
127: hr_utility.trace('l_value' || to_char(l_value));
128: hr_utility.trace('l_min_ri' || to_char(l_min_ri));
129: hr_utility.trace('l_max_ri' || to_char(l_max_ri));
130: hr_utility.trace('p_percentage' || to_char(p_percentage));
131: hr_utility.trace('p_calc_method' ||p_calc_method);
124:
125:
126: hr_utility.trace('l_cum_mpf_arrs' || to_char(l_cum_mpf_arrs));
127: hr_utility.trace('l_value' || to_char(l_value));
128: hr_utility.trace('l_min_ri' || to_char(l_min_ri));
129: hr_utility.trace('l_max_ri' || to_char(l_max_ri));
130: hr_utility.trace('p_percentage' || to_char(p_percentage));
131: hr_utility.trace('p_calc_method' ||p_calc_method);
132:
125:
126: hr_utility.trace('l_cum_mpf_arrs' || to_char(l_cum_mpf_arrs));
127: hr_utility.trace('l_value' || to_char(l_value));
128: hr_utility.trace('l_min_ri' || to_char(l_min_ri));
129: hr_utility.trace('l_max_ri' || to_char(l_max_ri));
130: hr_utility.trace('p_percentage' || to_char(p_percentage));
131: hr_utility.trace('p_calc_method' ||p_calc_method);
132:
133: IF p_calc_method = 'RI' THEN
126: hr_utility.trace('l_cum_mpf_arrs' || to_char(l_cum_mpf_arrs));
127: hr_utility.trace('l_value' || to_char(l_value));
128: hr_utility.trace('l_min_ri' || to_char(l_min_ri));
129: hr_utility.trace('l_max_ri' || to_char(l_max_ri));
130: hr_utility.trace('p_percentage' || to_char(p_percentage));
131: hr_utility.trace('p_calc_method' ||p_calc_method);
132:
133: IF p_calc_method = 'RI' THEN
134: hr_utility.set_location('pyhkudfs get_retro_mpf', 10);
127: hr_utility.trace('l_value' || to_char(l_value));
128: hr_utility.trace('l_min_ri' || to_char(l_min_ri));
129: hr_utility.trace('l_max_ri' || to_char(l_max_ri));
130: hr_utility.trace('p_percentage' || to_char(p_percentage));
131: hr_utility.trace('p_calc_method' ||p_calc_method);
132:
133: IF p_calc_method = 'RI' THEN
134: hr_utility.set_location('pyhkudfs get_retro_mpf', 10);
135: l_cum_mpf_ri := l_cum_mpf_ri + l_value;
130: hr_utility.trace('p_percentage' || to_char(p_percentage));
131: hr_utility.trace('p_calc_method' ||p_calc_method);
132:
133: IF p_calc_method = 'RI' THEN
134: hr_utility.set_location('pyhkudfs get_retro_mpf', 10);
135: l_cum_mpf_ri := l_cum_mpf_ri + l_value;
136: ELSIF p_calc_method = 'ER' THEN
137: hr_utility.set_location('pyhkudfs get_retro_mpf', 15);
138: /* Bug 2798013. Added the following proration logic to calculate
133: IF p_calc_method = 'RI' THEN
134: hr_utility.set_location('pyhkudfs get_retro_mpf', 10);
135: l_cum_mpf_ri := l_cum_mpf_ri + l_value;
136: ELSIF p_calc_method = 'ER' THEN
137: hr_utility.set_location('pyhkudfs get_retro_mpf', 15);
138: /* Bug 2798013. Added the following proration logic to calculate
139: Retro MPF Liability */
140: IF p_date_from <= l_period_start_date and
141: p_date_to >= l_period_end_date and
178:
179: ELSE
180: l_er_prorator := 1;
181: END IF;
182: hr_utility.trace('Anu ER p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
183: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
184: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
185: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
186: hr_utility.trace('p_ER_Liability_Start_Date' || to_char(p_ER_Liability_Start_Date,'DD/MM/YYYY'));
179: ELSE
180: l_er_prorator := 1;
181: END IF;
182: hr_utility.trace('Anu ER p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
183: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
184: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
185: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
186: hr_utility.trace('p_ER_Liability_Start_Date' || to_char(p_ER_Liability_Start_Date,'DD/MM/YYYY'));
187: hr_utility.trace('l_er_prorator' || to_char(l_er_prorator));
180: l_er_prorator := 1;
181: END IF;
182: hr_utility.trace('Anu ER p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
183: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
184: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
185: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
186: hr_utility.trace('p_ER_Liability_Start_Date' || to_char(p_ER_Liability_Start_Date,'DD/MM/YYYY'));
187: hr_utility.trace('l_er_prorator' || to_char(l_er_prorator));
188:
181: END IF;
182: hr_utility.trace('Anu ER p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
183: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
184: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
185: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
186: hr_utility.trace('p_ER_Liability_Start_Date' || to_char(p_ER_Liability_Start_Date,'DD/MM/YYYY'));
187: hr_utility.trace('l_er_prorator' || to_char(l_er_prorator));
188:
189: /* Bug 2753292. Removed the check for min RI threshold */
182: hr_utility.trace('Anu ER p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
183: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
184: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
185: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
186: hr_utility.trace('p_ER_Liability_Start_Date' || to_char(p_ER_Liability_Start_Date,'DD/MM/YYYY'));
187: hr_utility.trace('l_er_prorator' || to_char(l_er_prorator));
188:
189: /* Bug 2753292. Removed the check for min RI threshold */
190: l_cum_mpf_arrs := l_cum_mpf_arrs +
183: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
184: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
185: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
186: hr_utility.trace('p_ER_Liability_Start_Date' || to_char(p_ER_Liability_Start_Date,'DD/MM/YYYY'));
187: hr_utility.trace('l_er_prorator' || to_char(l_er_prorator));
188:
189: /* Bug 2753292. Removed the check for min RI threshold */
190: l_cum_mpf_arrs := l_cum_mpf_arrs +
191: least(((l_value * l_er_prorator) * p_percentage / 100)
195: /*
196: ** Establish if its a full period RI,
197: ** if not, derive prorator for qualifying days
198: */
199: hr_utility.set_location('pyhkudfs get_retro_mpf', 20);
200:
201:
202: /* Bug 2753272. Added p_hire_date condition */
203: /* Bug# 4314140 Modified the partial period waiver logic so that partial period waiver should be applicable only for the month
251: (l_period_end_date-l_period_start_date+1);
252: END IF;
253: END IF;
254:
255: hr_utility.trace('p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
256: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
257: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
258: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
259: hr_utility.trace('l_prorator' || to_char(l_prorator));
252: END IF;
253: END IF;
254:
255: hr_utility.trace('p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
256: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
257: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
258: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
259: hr_utility.trace('l_prorator' || to_char(l_prorator));
260:
253: END IF;
254:
255: hr_utility.trace('p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
256: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
257: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
258: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
259: hr_utility.trace('l_prorator' || to_char(l_prorator));
260:
261: /*
254:
255: hr_utility.trace('p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
256: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
257: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
258: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
259: hr_utility.trace('l_prorator' || to_char(l_prorator));
260:
261: /*
262: ** Bug #2270318 - Check the RI with prorated value of Minimum Threshold
255: hr_utility.trace('p_date_from' || to_char(p_date_from,'DD/MM/YYYY'));
256: hr_utility.trace('p_date_to' || to_char(p_date_to,'DD/MM/YYYY'));
257: hr_utility.trace('l_period_start_date' || to_char(l_period_start_date,'DD/MM/YYYY'));
258: hr_utility.trace('l_period_end_date' || to_char(l_period_end_date,'DD/MM/YYYY'));
259: hr_utility.trace('l_prorator' || to_char(l_prorator));
260:
261: /*
262: ** Bug #2270318 - Check the RI with prorated value of Minimum Threshold
263: ** Also prorate the Maximum Threshold Value
274: END IF;
275: END LOOP;
276: CLOSE get_prev_periods;
277: IF p_calc_method = 'RI' THEN
278: hr_utility.set_location('pyhkudfs get_retro_mpf', 50);
279: RETURN l_cum_mpf_ri;
280: ELSE
281: hr_utility.set_location('pyhkudfs get_retro_mpf', 55);
282: RETURN l_cum_mpf_arrs;
277: IF p_calc_method = 'RI' THEN
278: hr_utility.set_location('pyhkudfs get_retro_mpf', 50);
279: RETURN l_cum_mpf_ri;
280: ELSE
281: hr_utility.set_location('pyhkudfs get_retro_mpf', 55);
282: RETURN l_cum_mpf_arrs;
283: END IF;
284: END get_retro_mpf;
285: --
300: and d.org_information_context = 'HK_MPF_SCHEMES';
301: --
302: BEGIN
303: --
304: hr_utility.set_location('pyhkudfs hk_scheme_val', 01);
305: --
306: v_valid_scheme := 'E';
307: open check_source (p_bus_grp_id, p_entry_value);
308: fetch check_source into v_valid_scheme;
307: open check_source (p_bus_grp_id, p_entry_value);
308: fetch check_source into v_valid_scheme;
309: close check_source;
310: --
311: hr_utility.set_location('pyhkudfs hk_scheme_val', 03);
312: --
313: RETURN v_valid_scheme;
314: --
315: END hk_scheme_val;
329: and d.aei_information_category = 'HR_QUARTERS_INFO_HK';
330: --
331: BEGIN
332: --
333: hr_utility.set_location('pyhkudfs hk_quarters_val', 01);
334: --
335: v_valid_quarters := 'E';
336: open check_source (p_assignment_id, p_entry_value);
337: fetch check_source into v_valid_quarters;
336: open check_source (p_assignment_id, p_entry_value);
337: fetch check_source into v_valid_quarters;
338: close check_source;
339: --
340: hr_utility.set_location('pyhkudfs hk_quarters_val', 03);
341: --
342: RETURN v_valid_quarters;
343: --
344: END hk_quarters_val;