78:
79:
80: begin
81:
82: --hr_utility.trace_on(null,'FOT');
83:
84: hr_utility.trace('ENTERING: pay_gb_paye_calc.free_pay');
85:
86: hr_utility.trace('***********************');
80: begin
81:
82: --hr_utility.trace_on(null,'FOT');
83:
84: hr_utility.trace('ENTERING: pay_gb_paye_calc.free_pay');
85:
86: hr_utility.trace('***********************');
87: hr_utility.trace('INPUT values: ');
88: hr_utility.trace('Amount: '||p_amount);
82: --hr_utility.trace_on(null,'FOT');
83:
84: hr_utility.trace('ENTERING: pay_gb_paye_calc.free_pay');
85:
86: hr_utility.trace('***********************');
87: hr_utility.trace('INPUT values: ');
88: hr_utility.trace('Amount: '||p_amount);
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
83:
84: hr_utility.trace('ENTERING: pay_gb_paye_calc.free_pay');
85:
86: hr_utility.trace('***********************');
87: hr_utility.trace('INPUT values: ');
88: hr_utility.trace('Amount: '||p_amount);
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
91: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
84: hr_utility.trace('ENTERING: pay_gb_paye_calc.free_pay');
85:
86: hr_utility.trace('***********************');
87: hr_utility.trace('INPUT values: ');
88: hr_utility.trace('Amount: '||p_amount);
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
91: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
92: hr_utility.trace('Current pay period: '||p_current_period);
85:
86: hr_utility.trace('***********************');
87: hr_utility.trace('INPUT values: ');
88: hr_utility.trace('Amount: '||p_amount);
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
91: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
92: hr_utility.trace('Current pay period: '||p_current_period);
93: hr_utility.trace('***********************');
86: hr_utility.trace('***********************');
87: hr_utility.trace('INPUT values: ');
88: hr_utility.trace('Amount: '||p_amount);
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
91: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
92: hr_utility.trace('Current pay period: '||p_current_period);
93: hr_utility.trace('***********************');
94:
87: hr_utility.trace('INPUT values: ');
88: hr_utility.trace('Amount: '||p_amount);
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
91: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
92: hr_utility.trace('Current pay period: '||p_current_period);
93: hr_utility.trace('***********************');
94:
95: l_amount := p_amount;
88: hr_utility.trace('Amount: '||p_amount);
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
91: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
92: hr_utility.trace('Current pay period: '||p_current_period);
93: hr_utility.trace('***********************');
94:
95: l_amount := p_amount;
96:
89: hr_utility.trace('Tax code: '||p_tax_code);
90: hr_utility.trace('Tax basis: '||p_tax_basis);
91: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
92: hr_utility.trace('Current pay period: '||p_current_period);
93: hr_utility.trace('***********************');
94:
95: l_amount := p_amount;
96:
97: /* Check for Scottish tax code, S prefix, strip off S prefix if present */
122: l_num_code := to_number(substrb(l_tax_code,1,length(l_tax_code) -1 ));
123:
124: end if;
125:
126: hr_utility.trace('Numeric component: '||l_num_code);
127:
128:
129: /* Check if numeric component > 500 */
130: if l_num_code > 500
140: l_ann_value := (l_num_code * 10) + 9;
141:
142: end if;
143:
144: hr_utility.trace('Annual free/additional pay: '||l_ann_value);
145:
146:
147:
148: /* Calculate free/additional pay for period 1, apply rounding rules*/
158:
159: end if;
160:
161:
162: hr_utility.trace('Free/additional pay for period 1: '||l_period1_pay);
163:
164:
165: /* If tax basis is cumulative, find free/additional pay for year to date */
166: /* else just use free/additional pay for period 1 */
180:
181: end if;
182:
183:
184: hr_utility.trace('Free/additional pay : '||l_free_or_add_pay);
185:
186:
187:
188: /* Now calculate the taxable pay to date by subtracting/adding free/additional pay */
194:
195: if (l_k_code)
196: then
197:
198: hr_utility.trace('K code is TRUE');
199: l_taxable_pay := l_amount + l_free_or_add_pay;
200:
201: else
202:
199: l_taxable_pay := l_amount + l_free_or_add_pay;
200:
201: else
202:
203: hr_utility.trace('K code is FALSE');
204:
205: if (l_free_or_add_pay >= l_amount)
206: then
207:
204:
205: if (l_free_or_add_pay >= l_amount)
206: then
207:
208: hr_utility.trace('Free pay exceeds taxable pay for this period - setting taxable pay to 0');
209: l_taxable_pay := 0;
210:
211: else
212:
215: end if;
216:
217: end if;
218:
219: hr_utility.trace('********************');
220: hr_utility.trace('OUTPUT values: ');
221: hr_utility.trace('Taxable pay: '||l_taxable_pay);
222: hr_utility.trace('********************');
223:
216:
217: end if;
218:
219: hr_utility.trace('********************');
220: hr_utility.trace('OUTPUT values: ');
221: hr_utility.trace('Taxable pay: '||l_taxable_pay);
222: hr_utility.trace('********************');
223:
224: hr_utility.trace('LEAVING: pay_gb_paye_calc.free_pay');
217: end if;
218:
219: hr_utility.trace('********************');
220: hr_utility.trace('OUTPUT values: ');
221: hr_utility.trace('Taxable pay: '||l_taxable_pay);
222: hr_utility.trace('********************');
223:
224: hr_utility.trace('LEAVING: pay_gb_paye_calc.free_pay');
225:
218:
219: hr_utility.trace('********************');
220: hr_utility.trace('OUTPUT values: ');
221: hr_utility.trace('Taxable pay: '||l_taxable_pay);
222: hr_utility.trace('********************');
223:
224: hr_utility.trace('LEAVING: pay_gb_paye_calc.free_pay');
225:
226: --hr_utility.trace_off;
220: hr_utility.trace('OUTPUT values: ');
221: hr_utility.trace('Taxable pay: '||l_taxable_pay);
222: hr_utility.trace('********************');
223:
224: hr_utility.trace('LEAVING: pay_gb_paye_calc.free_pay');
225:
226: --hr_utility.trace_off;
227:
228: return l_taxable_pay;
222: hr_utility.trace('********************');
223:
224: hr_utility.trace('LEAVING: pay_gb_paye_calc.free_pay');
225:
226: --hr_utility.trace_off;
227:
228: return l_taxable_pay;
229:
230: exception
304:
305:
306: begin
307:
308: --hr_utility.trace_on(null,'FOT');
309:
310: hr_utility.trace('ENTERING: pay_gb_paye_calc.tax_to_date');
311:
312: hr_utility.trace('*********************');
306: begin
307:
308: --hr_utility.trace_on(null,'FOT');
309:
310: hr_utility.trace('ENTERING: pay_gb_paye_calc.tax_to_date');
311:
312: hr_utility.trace('*********************');
313: hr_utility.trace('INPUT values: ');
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
308: --hr_utility.trace_on(null,'FOT');
309:
310: hr_utility.trace('ENTERING: pay_gb_paye_calc.tax_to_date');
311:
312: hr_utility.trace('*********************');
313: hr_utility.trace('INPUT values: ');
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
309:
310: hr_utility.trace('ENTERING: pay_gb_paye_calc.tax_to_date');
311:
312: hr_utility.trace('*********************');
313: hr_utility.trace('INPUT values: ');
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
310: hr_utility.trace('ENTERING: pay_gb_paye_calc.tax_to_date');
311:
312: hr_utility.trace('*********************');
313: hr_utility.trace('INPUT values: ');
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
318: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
311:
312: hr_utility.trace('*********************');
313: hr_utility.trace('INPUT values: ');
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
318: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
319: hr_utility.trace('Current pay period: '||p_current_period);
312: hr_utility.trace('*********************');
313: hr_utility.trace('INPUT values: ');
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
318: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
319: hr_utility.trace('Current pay period: '||p_current_period);
320: hr_utility.trace('*********************');
313: hr_utility.trace('INPUT values: ');
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
318: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
319: hr_utility.trace('Current pay period: '||p_current_period);
320: hr_utility.trace('*********************');
321:
314: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
318: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
319: hr_utility.trace('Current pay period: '||p_current_period);
320: hr_utility.trace('*********************');
321:
322: l_taxable_pay := p_taxable_pay;
315: hr_utility.trace('Taxable Pay: '||p_taxable_pay);
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
318: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
319: hr_utility.trace('Current pay period: '||p_current_period);
320: hr_utility.trace('*********************');
321:
322: l_taxable_pay := p_taxable_pay;
323:
316: hr_utility.trace('Tax code: '||p_tax_code);
317: hr_utility.trace('Tax basis: '||p_tax_basis);
318: hr_utility.trace('Stat annual periods: '||p_stat_annual_periods);
319: hr_utility.trace('Current pay period: '||p_current_period);
320: hr_utility.trace('*********************');
321:
322: l_taxable_pay := p_taxable_pay;
323:
324:
325: /* Convert down to nearest pound */
326:
327: l_taxable_pay := floor(l_taxable_pay);
328:
329: hr_utility.trace('Rounded taxable pay: '||l_taxable_pay);
330:
331:
332: /* Check for Scottish tax code, S prefix */
333:
340:
341: if not g_table_inited
342: then
343:
344: hr_utility.trace('Initing PAYE table...');
345:
346: for r_paye in csr_paye loop
347:
348: l_row_num := l_row_num + 1;
405:
406: for loop_count in 1..tbl_paye_table.count loop
407:
408:
409: hr_utility.trace('*************************');
410: hr_utility.trace('Tax band '||loop_count);
411: hr_utility.trace('*************************');
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
406: for loop_count in 1..tbl_paye_table.count loop
407:
408:
409: hr_utility.trace('*************************');
410: hr_utility.trace('Tax band '||loop_count);
411: hr_utility.trace('*************************');
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
407:
408:
409: hr_utility.trace('*************************');
410: hr_utility.trace('Tax band '||loop_count);
411: hr_utility.trace('*************************');
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
408:
409: hr_utility.trace('*************************');
410: hr_utility.trace('Tax band '||loop_count);
411: hr_utility.trace('*************************');
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
416: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
409: hr_utility.trace('*************************');
410: hr_utility.trace('Tax band '||loop_count);
411: hr_utility.trace('*************************');
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
416: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
417: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
410: hr_utility.trace('Tax band '||loop_count);
411: hr_utility.trace('*************************');
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
416: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
417: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
418: hr_utility.trace('************************');
411: hr_utility.trace('*************************');
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
416: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
417: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
418: hr_utility.trace('************************');
419:
412: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
416: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
417: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
418: hr_utility.trace('************************');
419:
420:
413: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
416: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
417: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
418: hr_utility.trace('************************');
419:
420:
421: if p_tax_basis = 'C'
414: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
415: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
416: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
417: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
418: hr_utility.trace('************************');
419:
420:
421: if p_tax_basis = 'C'
422: then
439: if (l_taxable_pay <= ceil(l_td_net_high)
440: AND l_taxable_pay >= ceil(l_td_net_low))
441: then
442:
443: hr_utility.trace('Band/loop count: '||loop_count);
444: hr_utility.trace('TD NL: '||l_td_net_low);
445: hr_utility.trace('TD NH: '||l_td_net_high);
446: hr_utility.trace('TD TC: '||l_td_tax_col);
447:
440: AND l_taxable_pay >= ceil(l_td_net_low))
441: then
442:
443: hr_utility.trace('Band/loop count: '||loop_count);
444: hr_utility.trace('TD NL: '||l_td_net_low);
445: hr_utility.trace('TD NH: '||l_td_net_high);
446: hr_utility.trace('TD TC: '||l_td_tax_col);
447:
448: l_tax_liable := l_td_tax_col +
441: then
442:
443: hr_utility.trace('Band/loop count: '||loop_count);
444: hr_utility.trace('TD NL: '||l_td_net_low);
445: hr_utility.trace('TD NH: '||l_td_net_high);
446: hr_utility.trace('TD TC: '||l_td_tax_col);
447:
448: l_tax_liable := l_td_tax_col +
449: (((l_taxable_pay - l_td_net_low) * (tbl_paye_table(loop_count).g_rate/100))
442:
443: hr_utility.trace('Band/loop count: '||loop_count);
444: hr_utility.trace('TD NL: '||l_td_net_low);
445: hr_utility.trace('TD NH: '||l_td_net_high);
446: hr_utility.trace('TD TC: '||l_td_tax_col);
447:
448: l_tax_liable := l_td_tax_col +
449: (((l_taxable_pay - l_td_net_low) * (tbl_paye_table(loop_count).g_rate/100))
450: * (100/tbl_paye_table(loop_count).g_gross_denom));
468:
469: if not g_table_inited
470: then
471:
472: hr_utility.trace('Initing PAYE table...');
473:
474: for r_scot_paye in csr_scot_paye loop
475:
476: l_row_num := l_row_num + 1;
534:
535: for loop_count in 1..tbl_paye_table.count loop
536:
537:
538: hr_utility.trace('*************************');
539: hr_utility.trace('Tax band '||loop_count);
540: hr_utility.trace('*************************');
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
535: for loop_count in 1..tbl_paye_table.count loop
536:
537:
538: hr_utility.trace('*************************');
539: hr_utility.trace('Tax band '||loop_count);
540: hr_utility.trace('*************************');
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
536:
537:
538: hr_utility.trace('*************************');
539: hr_utility.trace('Tax band '||loop_count);
540: hr_utility.trace('*************************');
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
537:
538: hr_utility.trace('*************************');
539: hr_utility.trace('Tax band '||loop_count);
540: hr_utility.trace('*************************');
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
545: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
538: hr_utility.trace('*************************');
539: hr_utility.trace('Tax band '||loop_count);
540: hr_utility.trace('*************************');
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
545: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
546: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
539: hr_utility.trace('Tax band '||loop_count);
540: hr_utility.trace('*************************');
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
545: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
546: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
547: hr_utility.trace('************************');
540: hr_utility.trace('*************************');
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
545: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
546: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
547: hr_utility.trace('************************');
548:
541: hr_utility.trace('Gross low: '||tbl_paye_table(loop_count).g_gross_low_value||' Gross high: '||tbl_paye_table(loop_count).g_gross_high_value);
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
545: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
546: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
547: hr_utility.trace('************************');
548:
549:
542: hr_utility.trace('Rate: '||tbl_paye_table(loop_count).g_rate);
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
545: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
546: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
547: hr_utility.trace('************************');
548:
549:
550:
543: hr_utility.trace('Gross denominator: '||tbl_paye_table(loop_count).g_gross_denom);
544: hr_utility.trace('Net low: '||tbl_paye_table(loop_count).g_net_low_value||' Net high: '||tbl_paye_table(loop_count).g_net_high_value);
545: hr_utility.trace('Tax deduct: '||tbl_paye_table(loop_count).g_tax_deduct);
546: hr_utility.trace('Tax column: '||tbl_paye_table(loop_count).g_tax_column);
547: hr_utility.trace('************************');
548:
549:
550:
551: if p_tax_basis = 'C'
568: if (l_taxable_pay <= ceil(l_td_net_high)
569: AND l_taxable_pay >= ceil(l_td_net_low))
570: then
571:
572: hr_utility.trace('Band/loop count: '||loop_count);
573: hr_utility.trace('TD NL: '||l_td_net_low);
574: hr_utility.trace('TD NH: '||l_td_net_high);
575: hr_utility.trace('TD TC: '||l_td_tax_col);
576:
569: AND l_taxable_pay >= ceil(l_td_net_low))
570: then
571:
572: hr_utility.trace('Band/loop count: '||loop_count);
573: hr_utility.trace('TD NL: '||l_td_net_low);
574: hr_utility.trace('TD NH: '||l_td_net_high);
575: hr_utility.trace('TD TC: '||l_td_tax_col);
576:
577: l_tax_liable := l_td_tax_col +
570: then
571:
572: hr_utility.trace('Band/loop count: '||loop_count);
573: hr_utility.trace('TD NL: '||l_td_net_low);
574: hr_utility.trace('TD NH: '||l_td_net_high);
575: hr_utility.trace('TD TC: '||l_td_tax_col);
576:
577: l_tax_liable := l_td_tax_col +
578: (((l_taxable_pay - l_td_net_low) * (tbl_paye_table(loop_count).g_rate/100))
571:
572: hr_utility.trace('Band/loop count: '||loop_count);
573: hr_utility.trace('TD NL: '||l_td_net_low);
574: hr_utility.trace('TD NH: '||l_td_net_high);
575: hr_utility.trace('TD TC: '||l_td_tax_col);
576:
577: l_tax_liable := l_td_tax_col +
578: (((l_taxable_pay - l_td_net_low) * (tbl_paye_table(loop_count).g_rate/100))
579: * (100/tbl_paye_table(loop_count).g_gross_denom));
595: l_tax_liable := round(l_tax_liable,4);
596:
597: l_tax_liable := trunc(l_tax_liable,2);
598:
599: hr_utility.trace('Tax liability: '||l_tax_liable);
600:
601:
602: if (l_scots_code)
603: then
601:
602: if (l_scots_code)
603: then
604:
605: hr_utility.trace('Scots code : TRUE');
606:
607: else
608:
609: hr_utility.trace('Scots code : FALSE');
605: hr_utility.trace('Scots code : TRUE');
606:
607: else
608:
609: hr_utility.trace('Scots code : FALSE');
610:
611: end if;
612:
613:
610:
611: end if;
612:
613:
614: hr_utility.trace('********************');
615: hr_utility.trace('OUTPUT values: ');
616: hr_utility.trace('Tax liability to date: '||l_tax_liable);
617: hr_utility.trace('********************');
618:
611: end if;
612:
613:
614: hr_utility.trace('********************');
615: hr_utility.trace('OUTPUT values: ');
616: hr_utility.trace('Tax liability to date: '||l_tax_liable);
617: hr_utility.trace('********************');
618:
619: hr_utility.trace('LEAVING: pay_gb_paye_calc.tax_to_date');
612:
613:
614: hr_utility.trace('********************');
615: hr_utility.trace('OUTPUT values: ');
616: hr_utility.trace('Tax liability to date: '||l_tax_liable);
617: hr_utility.trace('********************');
618:
619: hr_utility.trace('LEAVING: pay_gb_paye_calc.tax_to_date');
620:
613:
614: hr_utility.trace('********************');
615: hr_utility.trace('OUTPUT values: ');
616: hr_utility.trace('Tax liability to date: '||l_tax_liable);
617: hr_utility.trace('********************');
618:
619: hr_utility.trace('LEAVING: pay_gb_paye_calc.tax_to_date');
620:
621: --hr_utility.trace_off;
615: hr_utility.trace('OUTPUT values: ');
616: hr_utility.trace('Tax liability to date: '||l_tax_liable);
617: hr_utility.trace('********************');
618:
619: hr_utility.trace('LEAVING: pay_gb_paye_calc.tax_to_date');
620:
621: --hr_utility.trace_off;
622:
623: return l_tax_liable;
617: hr_utility.trace('********************');
618:
619: hr_utility.trace('LEAVING: pay_gb_paye_calc.tax_to_date');
620:
621: --hr_utility.trace_off;
622:
623: return l_tax_liable;
624:
625: exception
638: cursor csr_get_request_details is
639: select request_id from fnd_concurrent_requests
640: where request_id = FND_GLOBAL.CONC_REQUEST_ID;
641: BEGIN
642: hr_utility.set_location('Entering: is_this_retro ', 10);
643: open csr_get_request_details;
644: fetch csr_get_request_details into l_request_id;
645: close csr_get_request_details;
646:
643: open csr_get_request_details;
644: fetch csr_get_request_details into l_request_id;
645: close csr_get_request_details;
646:
647: hr_utility.set_location(' l_request_id '||l_request_id , 20);
648: BEGIN
649: SELECT 1
650: INTO l_retro_status
651: FROM PAY_PAYROLL_ACTIONS
650: INTO l_retro_status
651: FROM PAY_PAYROLL_ACTIONS
652: WHERE request_id = l_request_id
653: AND ACTION_TYPE IN ('L','G','O');
654: hr_utility.set_location('**** This is retro ' , 30);
655: hr_utility.set_location(' Value of l_retro_status is : '||l_retro_status , 40);
656: EXCEPTION
657: WHEN NO_DATA_FOUND THEN
658: hr_utility.set_location('**** This is Normal Payroll ' , 50);
651: FROM PAY_PAYROLL_ACTIONS
652: WHERE request_id = l_request_id
653: AND ACTION_TYPE IN ('L','G','O');
654: hr_utility.set_location('**** This is retro ' , 30);
655: hr_utility.set_location(' Value of l_retro_status is : '||l_retro_status , 40);
656: EXCEPTION
657: WHEN NO_DATA_FOUND THEN
658: hr_utility.set_location('**** This is Normal Payroll ' , 50);
659: l_retro_status := 0;
654: hr_utility.set_location('**** This is retro ' , 30);
655: hr_utility.set_location(' Value of l_retro_status is : '||l_retro_status , 40);
656: EXCEPTION
657: WHEN NO_DATA_FOUND THEN
658: hr_utility.set_location('**** This is Normal Payroll ' , 50);
659: l_retro_status := 0;
660: hr_utility.set_location(' Value of l_retro_status is : '||l_retro_status , 60);
661: END;
662: RETURN l_retro_status;
656: EXCEPTION
657: WHEN NO_DATA_FOUND THEN
658: hr_utility.set_location('**** This is Normal Payroll ' , 50);
659: l_retro_status := 0;
660: hr_utility.set_location(' Value of l_retro_status is : '||l_retro_status , 60);
661: END;
662: RETURN l_retro_status;
663: END IS_THIS_RETRO;
664: --
881: begin
882: l_return:=0;
883:
884:
885: hr_utility.set_location('Enter CHECK_TAX_REF',10);
886: hr_utility.set_location(' payroll action id '||p_payroll_action_id , 20);
887:
888:
889: /*PAYE Details check for bug 6018309*/
882: l_return:=0;
883:
884:
885: hr_utility.set_location('Enter CHECK_TAX_REF',10);
886: hr_utility.set_location(' payroll action id '||p_payroll_action_id , 20);
887:
888:
889: /*PAYE Details check for bug 6018309*/
890:
935: from pay_payroll_actions ppa
936: where ppa.payroll_action_id=p_payroll_action_id;
937:
938:
939: hr_utility.set_location('effetive date:'||to_char(l_effective_date),12);
940:
941: If l_effective_date >=to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) Then
942: l_date_soy := to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
943: l_date_eoy := to_date('05-04-'||to_char(to_number(substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4))+1 ),'DD-MM-YYYY') ;
945: l_date_soy := to_date('06-04-'||to_char(to_number(substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4))-1 ),'DD-MM-YYYY') ;
946: l_date_eoy := to_date('05-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
947: End If;
948:
949: hr_utility.set_location('effetive date:'||to_char(l_effective_date)||'l_date_soy'||to_char(l_date_soy)||'l_date_eoy'||to_char(l_date_eoy),12);
950:
951: open cur_assgt_first_eff_start_date(p_assignment_id);
952: fetch cur_assgt_first_eff_start_date into l_assgt_creation_date;
953:
950:
951: open cur_assgt_first_eff_start_date(p_assignment_id);
952: fetch cur_assgt_first_eff_start_date into l_assgt_creation_date;
953:
954: hr_utility.set_location('Payroll_id'||to_char(p_payroll_id)||'Assignment_id:'||to_char(p_assignment_id),13);
955:
956: open cur_check_aggregated_asg(p_assignment_id);
957: fetch cur_check_aggregated_asg into l_cur_check_aggregated_asg;
958:
962: close cur_check_aggregated_asg;
963:
964: -- 12662579 begin
965: begin
966: hr_utility.set_location('Before fetching tax references for this Assignment ',11);
967: --This will fetch the PAYE reference for the Assignment in the current Tax year
968: select distinct scl.segment1 into l_old_tax_reference
969: from pay_payroll_actions ppa,
970: pay_assignment_actions paa,
978: and ppa.effective_date <= l_date_eoy
979: and pap.payroll_id = ppa.payroll_id
980: and pap.soft_coding_keyflex_id = scl.soft_coding_keyflex_id
981: and ppa.effective_date between pap.effective_start_date and pap.effective_end_date;
982: hr_utility.set_location('After fetching tax references for this Assignment '||l_old_tax_reference,12);
983: exception
984: when too_many_rows then
985: hr_utility.set_location('Error - Multiple PAYE references for this Assignment ',13);
986: l_return :=1;
981: and ppa.effective_date between pap.effective_start_date and pap.effective_end_date;
982: hr_utility.set_location('After fetching tax references for this Assignment '||l_old_tax_reference,12);
983: exception
984: when too_many_rows then
985: hr_utility.set_location('Error - Multiple PAYE references for this Assignment ',13);
986: l_return :=1;
987: when no_data_found then
988: --first payroll run in the tax year . No issues
989: null;
993: for l_cur_check_payroll_tax_ref in cur_check_payroll_tax_ref(l_old_tax_reference , p_payroll_id)
994: loop
995: --This is to check the current payroll action's PAYE reference is same as the earlier PAYE reference
996: if ( l_cur_check_payroll_tax_ref.l_exist =0) then
997: hr_utility.set_location('Error - PAYE reference for this Assignment is changed ',13);
998: l_return :=1;
999: exit when l_return<>0;
1000: end if ;
1001: end loop;
1004: --
1005: /*
1006: for l_cur_chk_pay_actions in cur_chk_pay_actions(p_payroll_action_id,p_assignment_id)
1007: loop
1008: hr_utility.set_location('Old payroll Id:'||to_char(l_cur_chk_pay_actions.old_payroll_id)||' New payroll:'||to_char(p_payroll_id)||'l_return:'||to_char(l_return)||'Rows'||to_char(cur_chk_pay_actions%ROWCOUNT),13);
1009: exit when l_return<>0;
1010:
1011: for l_cur_check_payroll_tax_ref in cur_check_payroll_tax_ref(l_cur_chk_pay_actions.old_payroll_id , p_payroll_id)
1012: loop
1021: end loop;
1022: 12662579 end */
1023:
1024:
1025: hr_utility.set_location('L_return '||to_char(l_return)||'l_date_soy:'||to_char(l_date_soy)||'l_date_eoy:'||to_char(l_date_eoy),13);
1026:
1027: hr_utility.set_location('Exit CHECK_TAX_REF',15);
1028:
1029: close cur_assgt_first_eff_start_date;
1023:
1024:
1025: hr_utility.set_location('L_return '||to_char(l_return)||'l_date_soy:'||to_char(l_date_soy)||'l_date_eoy:'||to_char(l_date_eoy),13);
1026:
1027: hr_utility.set_location('Exit CHECK_TAX_REF',15);
1028:
1029: close cur_assgt_first_eff_start_date;
1030:
1031: /*DWP fix start- Bug 16489664*/
1033: select 1 into l_record
1034: from PAY_PATCH_STATUS
1035: where PATCH_NAME = 'DWP_RETRO_VAL_SKIP';
1036:
1037: hr_utility.set_location(' l_record if dwp record exist: '||l_record , 20);
1038: exception
1039: when NO_DATA_FOUND then
1040: hr_utility.set_location(' l_record if no dwp record : '||l_record , 25);
1041: end;
1036:
1037: hr_utility.set_location(' l_record if dwp record exist: '||l_record , 20);
1038: exception
1039: when NO_DATA_FOUND then
1040: hr_utility.set_location(' l_record if no dwp record : '||l_record , 25);
1041: end;
1042:
1043:
1044: if l_return = 1 then
1042:
1043:
1044: if l_return = 1 then
1045: if (is_this_retro() = 1 and l_record = 1) then
1046: hr_utility.set_location(' skipping paye ref change validation for dwp retro-process ', 30);
1047: l_return :=0;
1048: end if;
1049: end if ;
1050: /*DWP fix end - Bug 16489664*/
1093:
1094:
1095: BEGIN
1096:
1097: hr_utility.set_location('tax_year_of_pensioners_death',0);
1098:
1099: l_pay_date := to_number( to_char( p_pay_run_date ,'DD' ) ) ;
1100: l_pay_month := to_number( to_char( p_pay_run_date ,'MM' ) ) ;
1101:
1124: else
1125: l_return :=0;
1126: end if;
1127:
1128: hr_utility.set_location('tax_year_of_pensioners_death',99);
1129: return(l_return);
1130:
1131: END tax_year_of_pensioners_death;
1132: