237: begin
238:
239:
240:
241: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,1);
242:
243: hr_utility.trace('** Parameter values ** ');
244: hr_utility.trace('p_assignment_id: '||p_assignment_id);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
239:
240:
241: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,1);
242:
243: hr_utility.trace('** Parameter values ** ');
244: hr_utility.trace('p_assignment_id: '||p_assignment_id);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
240:
241: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,1);
242:
243: hr_utility.trace('** Parameter values ** ');
244: hr_utility.trace('p_assignment_id: '||p_assignment_id);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
241: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,1);
242:
243: hr_utility.trace('** Parameter values ** ');
244: hr_utility.trace('p_assignment_id: '||p_assignment_id);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
242:
243: hr_utility.trace('** Parameter values ** ');
244: hr_utility.trace('p_assignment_id: '||p_assignment_id);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
243: hr_utility.trace('** Parameter values ** ');
244: hr_utility.trace('p_assignment_id: '||p_assignment_id);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
244: hr_utility.trace('p_assignment_id: '||p_assignment_id);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
245: hr_utility.trace('p_element_type_id: '||p_element_type_id);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
246: hr_utility.trace('p_business_group_id: '||p_business_group_id);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
247: hr_utility.trace('p_car_price: '||p_car_price);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
248: hr_utility.trace('p_reg_date: '||p_reg_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
249: hr_utility.trace('p_fuel_type: '||p_fuel_type);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
257: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
250: hr_utility.trace('p_engine_size: '||p_engine_size);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
257: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
258: hr_utility.trace('p_session_date: '||p_session_date);
251: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
257: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
258: hr_utility.trace('p_session_date: '||p_session_date);
259:
252: hr_utility.trace('p_payment: '||p_payment);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
257: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
258: hr_utility.trace('p_session_date: '||p_session_date);
259:
260: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,2);
253: hr_utility.trace('p_CO2_emissions: '||p_CO2_emissions);
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
257: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
258: hr_utility.trace('p_session_date: '||p_session_date);
259:
260: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,2);
261:
254: hr_utility.trace('p_start_date: '||p_start_date);
255: hr_utility.trace('p_end_date: '||p_end_date);
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
257: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
258: hr_utility.trace('p_session_date: '||p_session_date);
259:
260: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,2);
261:
262:
256: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
257: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
258: hr_utility.trace('p_session_date: '||p_session_date);
259:
260: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,2);
261:
262:
263: l_start_date := trunc(p_start_date);
264: l_end_date := trunc(p_end_date);
269: l_fuel_type := p_fuel_type;
270:
271:
272:
273: hr_utility.trace('l_start_date: '||l_start_date);
274: hr_utility.trace('l_end_date: '||l_end_date);
275: hr_utility.trace('l_reg_date: '||l_reg_date);
276: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
277: hr_utility.trace('p_session_date: '||p_session_date);
270:
271:
272:
273: hr_utility.trace('l_start_date: '||l_start_date);
274: hr_utility.trace('l_end_date: '||l_end_date);
275: hr_utility.trace('l_reg_date: '||l_reg_date);
276: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
277: hr_utility.trace('p_session_date: '||p_session_date);
278: hr_utility.trace('l_fuel_type: '||l_fuel_type);
271:
272:
273: hr_utility.trace('l_start_date: '||l_start_date);
274: hr_utility.trace('l_end_date: '||l_end_date);
275: hr_utility.trace('l_reg_date: '||l_reg_date);
276: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
277: hr_utility.trace('p_session_date: '||p_session_date);
278: hr_utility.trace('l_fuel_type: '||l_fuel_type);
279:
272:
273: hr_utility.trace('l_start_date: '||l_start_date);
274: hr_utility.trace('l_end_date: '||l_end_date);
275: hr_utility.trace('l_reg_date: '||l_reg_date);
276: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
277: hr_utility.trace('p_session_date: '||p_session_date);
278: hr_utility.trace('l_fuel_type: '||l_fuel_type);
279:
280: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,4);
273: hr_utility.trace('l_start_date: '||l_start_date);
274: hr_utility.trace('l_end_date: '||l_end_date);
275: hr_utility.trace('l_reg_date: '||l_reg_date);
276: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
277: hr_utility.trace('p_session_date: '||p_session_date);
278: hr_utility.trace('l_fuel_type: '||l_fuel_type);
279:
280: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,4);
281:
274: hr_utility.trace('l_end_date: '||l_end_date);
275: hr_utility.trace('l_reg_date: '||l_reg_date);
276: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
277: hr_utility.trace('p_session_date: '||p_session_date);
278: hr_utility.trace('l_fuel_type: '||l_fuel_type);
279:
280: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,4);
281:
282: /* Check if CO2 emissions figure is a multiple of 5, if not round down to nearest 5 */
276: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
277: hr_utility.trace('p_session_date: '||p_session_date);
278: hr_utility.trace('l_fuel_type: '||l_fuel_type);
279:
280: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,4);
281:
282: /* Check if CO2 emissions figure is a multiple of 5, if not round down to nearest 5 */
283: l_CO2_emissions := p_CO2_emissions;
284:
288: l_CO2_emissions := round_CO2_val(l_CO2_emissions);
289:
290: end if;
291:
292: hr_utility.trace('l_CO2_emissions: '||l_CO2_emissions);
293:
294: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,5);
295:
296: /* Get values for minimum and maximum percentage rates */
290: end if;
291:
292: hr_utility.trace('l_CO2_emissions: '||l_CO2_emissions);
293:
294: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,5);
295:
296: /* Get values for minimum and maximum percentage rates */
297:
298: open csr_min_percentage;
298: open csr_min_percentage;
299: fetch csr_min_percentage into l_min_percentage;
300: close csr_min_percentage;
301:
302: hr_utility.trace('l_min_percentage: '||l_min_percentage);
303:
304:
305: open csr_max_percentage;
306: fetch csr_max_percentage into l_max_percentage;
305: open csr_max_percentage;
306: fetch csr_max_percentage into l_max_percentage;
307: close csr_max_percentage;
308:
309: hr_utility.trace('l_max_percentage: '||l_max_percentage);
310:
311: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,6);
312:
313:
307: close csr_max_percentage;
308:
309: hr_utility.trace('l_max_percentage: '||l_max_percentage);
310:
311: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,6);
312:
313:
314: /* Determine percentage rate for car based on fuel type and emissions data */
315:
317: then
318: /* No CO2 emissions figure, deduct fixed discount from minimum percentage rate */
319:
320: l_percentage := l_min_percentage - get_discount(l_fuel_type,p_session_date);
321: hr_utility.trace('l_percentage: '||l_percentage);
322:
323: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,7);
324:
325: else
319:
320: l_percentage := l_min_percentage - get_discount(l_fuel_type,p_session_date);
321: hr_utility.trace('l_percentage: '||l_percentage);
322:
323: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,7);
324:
325: else
326: /* All other fuel types have CO2 emissions rating, find applicable percentage rate */
327: /* Calculation of discounts and percentage rates vary according to fuel type, check each in sequence */
329: if l_fuel_type in ('HYBRID_ELECTRIC','LPG_CNG') -- hybrid electric or LPG/CNG
330: then
331:
332: /* find minumum qualifying level for year, check if car CO2 rating on or below that level */
333: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,8);
334:
335: open csr_min_qual_level;
336: fetch csr_min_qual_level into l_min_qual_level;
337: close csr_min_qual_level;
335: open csr_min_qual_level;
336: fetch csr_min_qual_level into l_min_qual_level;
337: close csr_min_qual_level;
338:
339: hr_utility.trace('l_min_qual_level: '||l_min_qual_level);
340: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,9);
341:
342: if l_CO2_emissions < l_min_qual_level
343: then
336: fetch csr_min_qual_level into l_min_qual_level;
337: close csr_min_qual_level;
338:
339: hr_utility.trace('l_min_qual_level: '||l_min_qual_level);
340: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,9);
341:
342: if l_CO2_emissions < l_min_qual_level
343: then
344: /* Extra discount for every full 20 g/km below min qualifying level */
363:
364: if l_co2_emissions > l_max_level
365: then
366:
367: hr_utility.trace('Car CO2 emissions above max level for year, adjusting down');
368: l_co2_emissions := l_max_level;
369: p_message := p_message||'CO2 emissions adjusted down to max level.';
370:
371: end if;
370:
371: end if;
372:
373: l_percentage := get_CO2_percentage(p_business_group_id,l_co2_emissions,p_session_date);
374: hr_utility.trace('l_percentage: '||l_percentage);
375:
376:
377: hr_utility.trace('l_extra_discount: '||l_extra_discount);
378: /* Fixed discount varies according to fuel type */
373: l_percentage := get_CO2_percentage(p_business_group_id,l_co2_emissions,p_session_date);
374: hr_utility.trace('l_percentage: '||l_percentage);
375:
376:
377: hr_utility.trace('l_extra_discount: '||l_extra_discount);
378: /* Fixed discount varies according to fuel type */
379:
380: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,10);
381:
376:
377: hr_utility.trace('l_extra_discount: '||l_extra_discount);
378: /* Fixed discount varies according to fuel type */
379:
380: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,10);
381:
382: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
383:
384: hr_utility.trace('l_fixed_discount: '||l_fixed_discount);
380: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,10);
381:
382: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
383:
384: hr_utility.trace('l_fixed_discount: '||l_fixed_discount);
385: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,11);
386:
387: /* Calculate final discount amount, subtract from minimum percentage amount */
388:
381:
382: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
383:
384: hr_utility.trace('l_fixed_discount: '||l_fixed_discount);
385: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,11);
386:
387: /* Calculate final discount amount, subtract from minimum percentage amount */
388:
389: l_discount_total := l_fixed_discount + l_extra_discount;
389: l_discount_total := l_fixed_discount + l_extra_discount;
390: l_percentage := l_percentage - l_discount_total;
391:
392:
393: hr_utility.trace('l_percentage: '||l_percentage);
394: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,12);
395:
396: elsif l_fuel_type in ('LPG_CNG_PETROL', 'LPG_CNG_PETROL_CONV') -- bi-fuel (built as bi-fuel and converted)
397: then
390: l_percentage := l_percentage - l_discount_total;
391:
392:
393: hr_utility.trace('l_percentage: '||l_percentage);
394: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,12);
395:
396: elsif l_fuel_type in ('LPG_CNG_PETROL', 'LPG_CNG_PETROL_CONV') -- bi-fuel (built as bi-fuel and converted)
397: then
398:
395:
396: elsif l_fuel_type in ('LPG_CNG_PETROL', 'LPG_CNG_PETROL_CONV') -- bi-fuel (built as bi-fuel and converted)
397: then
398:
399: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,13);
400:
401: /* Calculation based on whether car built as bi-fuel or later converted */
402: /* Check when car first registered as calculation will differ based on registration date */
403:
405: and l_reg_date >= to_date('01/01/2000','DD/MM/YYYY')) -- registered on/after Jan 1 2000
406: or l_fuel_type = 'LPG_CNG_PETROL_CONV'
407: then
408:
409: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,14);
410: /* find minumum qualifying level for year, check if car CO2 rating on or below that level */
411:
412: open csr_min_qual_level;
413: fetch csr_min_qual_level into l_min_qual_level;
412: open csr_min_qual_level;
413: fetch csr_min_qual_level into l_min_qual_level;
414: close csr_min_qual_level;
415:
416: hr_utility.trace('l_min_qual_level: '||l_min_qual_level);
417: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,15);
418:
419: if l_CO2_emissions < l_min_qual_level
420: then
413: fetch csr_min_qual_level into l_min_qual_level;
414: close csr_min_qual_level;
415:
416: hr_utility.trace('l_min_qual_level: '||l_min_qual_level);
417: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,15);
418:
419: if l_CO2_emissions < l_min_qual_level
420: then
421: /* Extra discount for every full 20 g/km below min qualifying level */
440:
441: if l_co2_emissions > l_max_level
442: then
443:
444: hr_utility.trace('Car CO2 emissions above max level for year, adjusting down');
445: l_co2_emissions := l_max_level;
446: p_message := p_message||'CO2 emissions adjusted down to max level.';
447:
448: end if;
447:
448: end if;
449:
450: l_percentage := get_CO2_percentage(p_business_group_id,l_co2_emissions,p_session_date);
451: hr_utility.trace('l_percentage: '||l_percentage);
452:
453: hr_utility.trace('l_extra_discount: '||l_extra_discount);
454:
455: /* Find fixed discount */
449:
450: l_percentage := get_CO2_percentage(p_business_group_id,l_co2_emissions,p_session_date);
451: hr_utility.trace('l_percentage: '||l_percentage);
452:
453: hr_utility.trace('l_extra_discount: '||l_extra_discount);
454:
455: /* Find fixed discount */
456:
457: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
455: /* Find fixed discount */
456:
457: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
458:
459: hr_utility.trace('l_fixed_discount: '||l_fixed_discount);
460: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,16);
461:
462: /* Calculate final discount amount, subtract from minimum percentage amount */
463: l_discount_total := l_fixed_discount + l_extra_discount;
456:
457: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
458:
459: hr_utility.trace('l_fixed_discount: '||l_fixed_discount);
460: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,16);
461:
462: /* Calculate final discount amount, subtract from minimum percentage amount */
463: l_discount_total := l_fixed_discount + l_extra_discount;
464: l_percentage := l_percentage - l_discount_total;
462: /* Calculate final discount amount, subtract from minimum percentage amount */
463: l_discount_total := l_fixed_discount + l_extra_discount;
464: l_percentage := l_percentage - l_discount_total;
465:
466: hr_utility.trace('l_percentage: '||l_percentage);
467: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,17);
468:
469: /* Conversion bi-fuel cars and bi-fuel cars registered before Jan 1 2000 */
470:
463: l_discount_total := l_fixed_discount + l_extra_discount;
464: l_percentage := l_percentage - l_discount_total;
465:
466: hr_utility.trace('l_percentage: '||l_percentage);
467: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,17);
468:
469: /* Conversion bi-fuel cars and bi-fuel cars registered before Jan 1 2000 */
470:
471: elsif (l_fuel_type = 'LPG_CNG_PETROL' and l_reg_date < to_date('01/01/2000','DD/MM/YYYY'))
471: elsif (l_fuel_type = 'LPG_CNG_PETROL' and l_reg_date < to_date('01/01/2000','DD/MM/YYYY'))
472: then
473:
474: p_message := 'Bi-fuel car calculated as if converted to bi-fuel.';
475: hr_utility.trace('Calculating bi-fuel car as if converted');
476:
477: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,18);
478:
479: /* get percentage rating based on car's actual CO2 emissions */
473:
474: p_message := 'Bi-fuel car calculated as if converted to bi-fuel.';
475: hr_utility.trace('Calculating bi-fuel car as if converted');
476:
477: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,18);
478:
479: /* get percentage rating based on car's actual CO2 emissions */
480: /* if CO2 level below minimum level for year, adjust up to match minimum level */
481:
485:
486: if l_co2_emissions < l_min_qual_level
487: then
488:
489: hr_utility.trace('Car CO2 emissions below min level for year, adjusting up');
490: l_co2_emissions := l_min_qual_level;
491: p_message := p_message||'CO2 emissions adjusted up to min level.';
492:
493: end if;
502:
503: if l_co2_emissions > l_max_level
504: then
505:
506: hr_utility.trace('Car CO2 emissions above max level for year, adjusting down');
507: l_co2_emissions := l_max_level;
508: p_message := p_message||'CO2 emissions adjusted down to max level.';
509:
510: end if;
513: l_co2_emissions,
514: p_session_date);
515:
516:
517: hr_utility.trace('l_percentage: '||l_percentage);
518: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,19);
519:
520: /* fixed discount of 1% for this fuel type */
521:
514: p_session_date);
515:
516:
517: hr_utility.trace('l_percentage: '||l_percentage);
518: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,19);
519:
520: /* fixed discount of 1% for this fuel type */
521:
522: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
519:
520: /* fixed discount of 1% for this fuel type */
521:
522: l_fixed_discount := get_discount(l_fuel_type,p_session_date);
523: hr_utility.trace('l_fixed_discount: '||l_fixed_discount);
524:
525:
526: l_percentage := l_percentage - l_fixed_discount;
527:
533: then
534:
535: /* Find appropriate percentage charge for CO2 emissions rating */
536:
537: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,20);
538:
539: /* if CO2 level below minimum level for year, adjust up to match minimum level */
540:
541: open csr_min_qual_level;
544:
545: if l_co2_emissions < l_min_qual_level
546: then
547:
548: hr_utility.trace('Car CO2 emissions below min level for year, adjusting up');
549: l_co2_emissions := l_min_qual_level;
550: p_message := 'CO2 emissions adjusted up to min level.';
551:
552: end if;
561:
562: if l_co2_emissions > l_max_level
563: then
564:
565: hr_utility.trace('Car CO2 emissions above max level for year, adjusting down');
566: l_co2_emissions := l_max_level;
567: p_message := 'CO2 emissions adjusted down to max level.';
568:
569: end if;
571: l_percentage := get_CO2_percentage(p_business_group_id,
572: l_co2_emissions,
573: p_session_date);
574:
575: hr_utility.trace('l_percentage: '||l_percentage);
576: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,21);
577:
578: /* Extra supplements apply if fuel type is diesel */
579: /* Supplement varies according to percentage rate */
572: l_co2_emissions,
573: p_session_date);
574:
575: hr_utility.trace('l_percentage: '||l_percentage);
576: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,21);
577:
578: /* Extra supplements apply if fuel type is diesel */
579: /* Supplement varies according to percentage rate */
580:
580:
581: if l_fuel_type = 'DIESEL'
582: then
583:
584: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,22);
585:
586: if (l_percentage >= l_min_percentage and l_percentage <= 32)
587: then
588:
601: else l_diesel_supplement := 0;
602:
603: end if;
604:
605: hr_utility.trace('l_diesel_supplement: '||l_diesel_supplement);
606: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,23);
607:
608: l_percentage := l_percentage + l_diesel_supplement;
609:
602:
603: end if;
604:
605: hr_utility.trace('l_diesel_supplement: '||l_diesel_supplement);
606: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,23);
607:
608: l_percentage := l_percentage + l_diesel_supplement;
609:
610: end if;
617: /* Calculate final car benefit charge based on car list price and percentage rate */
618:
619: l_benefit_charge := l_car_price * (l_percentage/100);
620:
621: hr_utility.trace('l_benefit_charge: '||l_benefit_charge);
622: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,24);
623:
624: IF p_element_type_id IS NOT NULL
625: THEN
618:
619: l_benefit_charge := l_car_price * (l_percentage/100);
620:
621: hr_utility.trace('l_benefit_charge: '||l_benefit_charge);
622: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,24);
623:
624: IF p_element_type_id IS NOT NULL
625: THEN
626:
630: /* 2) least between entry end date, payroll period/ tax year end date, employee termination date */
631: /* Relevant dates set above */
632:
633:
634: hr_utility.trace('l_start_date: '||l_start_date);
635: hr_utility.trace('l_end_date: '||l_end_date);
636:
637: IF g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
638: l_days_available := trunc(l_end_date) - trunc(l_start_date) + 1; -- use actual number of days
631: /* Relevant dates set above */
632:
633:
634: hr_utility.trace('l_start_date: '||l_start_date);
635: hr_utility.trace('l_end_date: '||l_end_date);
636:
637: IF g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
638: l_days_available := trunc(l_end_date) - trunc(l_start_date) + 1; -- use actual number of days
639: ELSE
645: l_days_available := p_number_of_days;
646:
647: END IF;
648:
649: hr_utility.trace('l_days_available: '||l_days_available);
650: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,25);
651:
652: /* Deduct annual payment from annual benefit charge */
653:
646:
647: END IF;
648:
649: hr_utility.trace('l_days_available: '||l_days_available);
650: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,25);
651:
652: /* Deduct annual payment from annual benefit charge */
653:
654: hr_utility.trace('p_payment: '||p_payment);
650: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,25);
651:
652: /* Deduct annual payment from annual benefit charge */
653:
654: hr_utility.trace('p_payment: '||p_payment);
655:
656: l_benefit_charge := l_benefit_charge - p_payment;
657:
658:
655:
656: l_benefit_charge := l_benefit_charge - p_payment;
657:
658:
659: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,28);
660:
661: /* If result < 0, then benefit charge will be 0 */
662: if l_benefit_charge < 0
663: then
662: if l_benefit_charge < 0
663: then
664:
665: l_benefit_charge := 0;
666: hr_utility.trace('Benefit charge reset to 0');
667:
668: end if;
669:
670: hr_utility.trace('l_benefit_charge (after payment): '||l_benefit_charge);
666: hr_utility.trace('Benefit charge reset to 0');
667:
668: end if;
669:
670: hr_utility.trace('l_benefit_charge (after payment): '||l_benefit_charge);
671:
672: /* Pro-rate the benefit charge, based on the number of days available */
673:
674: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
671:
672: /* Pro-rate the benefit charge, based on the number of days available */
673:
674: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
675: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
676: hr_utility.trace('g_days_in_year = '||g_days_in_year);
677: hr_utility.trace('p_start_date: '||p_start_date);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
672: /* Pro-rate the benefit charge, based on the number of days available */
673:
674: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
675: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
676: hr_utility.trace('g_days_in_year = '||g_days_in_year);
677: hr_utility.trace('p_start_date: '||p_start_date);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
673:
674: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
675: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
676: hr_utility.trace('g_days_in_year = '||g_days_in_year);
677: hr_utility.trace('p_start_date: '||p_start_date);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
674: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
675: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
676: hr_utility.trace('g_days_in_year = '||g_days_in_year);
677: hr_utility.trace('p_start_date: '||p_start_date);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
675: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
676: hr_utility.trace('g_days_in_year = '||g_days_in_year);
677: hr_utility.trace('p_start_date: '||p_start_date);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
683: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
676: hr_utility.trace('g_days_in_year = '||g_days_in_year);
677: hr_utility.trace('p_start_date: '||p_start_date);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
683: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
684: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
677: hr_utility.trace('p_start_date: '||p_start_date);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
683: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
684: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
685: hr_utility.trace('l_fuel_type = '||l_fuel_type);
678: hr_utility.trace('p_end_date: '||p_end_date);
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
683: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
684: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
685: hr_utility.trace('l_fuel_type = '||l_fuel_type);
686:
679: hr_utility.trace('p_assignment_id = '||p_assignment_id);
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
683: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
684: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
685: hr_utility.trace('l_fuel_type = '||l_fuel_type);
686:
687: IF p_element_type_id IS NOT NULL
680: hr_utility.trace('p_element_type_id = '||p_element_type_id);
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
683: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
684: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
685: hr_utility.trace('l_fuel_type = '||l_fuel_type);
686:
687: IF p_element_type_id IS NOT NULL
688: THEN
681: hr_utility.trace('l_percentage = '||l_percentage);
682: hr_utility.trace('l_days_available = '||l_days_available);
683: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
684: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
685: hr_utility.trace('l_fuel_type = '||l_fuel_type);
686:
687: IF p_element_type_id IS NOT NULL
688: THEN
689:
690: /* Add on any fuel scale charges after pro-ration */
691: /* Use manually entered value if exists, else retrieve value from user table */
692: /* based on engine size and fuel type */
693: /* Value of p_fuel_scale parameter will be null unless overriden */
694: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
695:
696: /* Check inputs to see if fuel scale user table should be queried or not */
697:
698:
712: then
713: if l_fuel_type in ('HYBRID_ELECTRIC','PETROL','DIESEL','LPG_CNG','LPG_CNG_PETROL','LPG_CNG_PETROL_CONV','EURO_IV_DIESEL')
714: then
715:
716: hr_utility.trace('Fuel type: '||l_fuel_type);
717:
718:
719: if l_fuel_type in ('HYBRID_ELECTRIC','LPG_CNG','LPG_CNG_PETROL','LPG_CNG_PETROL_CONV')
720: then
733:
734: end if;
735:
736:
737: hr_utility.trace('Engine size: '||p_engine_size);
738: hr_utility.trace('Session date: '||p_session_date);
739: l_fuel_scale := fnd_number.canonical_to_number(hruserdt.get_table_value(p_business_group_id,
740: 'FUEL_SCALE',
741: l_fuel_type,
734: end if;
735:
736:
737: hr_utility.trace('Engine size: '||p_engine_size);
738: hr_utility.trace('Session date: '||p_session_date);
739: l_fuel_scale := fnd_number.canonical_to_number(hruserdt.get_table_value(p_business_group_id,
740: 'FUEL_SCALE',
741: l_fuel_type,
742: p_engine_size,
772:
773: END IF;
774:
775:
776: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
777: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,29);
778: IF nvl(p_fuel_scale, 0) = 0 and g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
779: l_fuel_scale := l_fuel_scale * (l_percentage/100);
780: END IF;
773: END IF;
774:
775:
776: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
777: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,29);
778: IF nvl(p_fuel_scale, 0) = 0 and g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
779: l_fuel_scale := l_fuel_scale * (l_percentage/100);
780: END IF;
781: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
777: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,29);
778: IF nvl(p_fuel_scale, 0) = 0 and g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
779: l_fuel_scale := l_fuel_scale * (l_percentage/100);
780: END IF;
781: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
782: l_benefit_charge:= l_benefit_charge + l_fuel_scale;
783:
784: hr_utility.trace('l_benefit_charge (after fuel scale): '||l_benefit_charge);
785: /* Check if message has been set, if not leave as null */
780: END IF;
781: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
782: l_benefit_charge:= l_benefit_charge + l_fuel_scale;
783:
784: hr_utility.trace('l_benefit_charge (after fuel scale): '||l_benefit_charge);
785: /* Check if message has been set, if not leave as null */
786:
787: p_message := nvl(p_message,null);
788:
789: /* Round down benefit charge to nearest pound */
790:
791: l_benefit_charge := trunc(l_benefit_charge);
792:
793: hr_utility.trace('l_benefit_charge (final): '||l_benefit_charge);
794:
795:
796: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,999);
797:
792:
793: hr_utility.trace('l_benefit_charge (final): '||l_benefit_charge);
794:
795:
796: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,999);
797:
798:
799:
800: /* Return final benefit charge */
876: begin
877:
878:
879:
880: hr_utility.set_location(g_package_name||'.'||l_function_name,100);
881:
882:
883: hr_utility.trace('** Parameter values ** ');
884: hr_utility.trace('p_assignment_id: '||p_assignment_id);
879:
880: hr_utility.set_location(g_package_name||'.'||l_function_name,100);
881:
882:
883: hr_utility.trace('** Parameter values ** ');
884: hr_utility.trace('p_assignment_id: '||p_assignment_id);
885: hr_utility.trace('p_element_type_id: '||p_element_type_id);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
880: hr_utility.set_location(g_package_name||'.'||l_function_name,100);
881:
882:
883: hr_utility.trace('** Parameter values ** ');
884: hr_utility.trace('p_assignment_id: '||p_assignment_id);
885: hr_utility.trace('p_element_type_id: '||p_element_type_id);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
881:
882:
883: hr_utility.trace('** Parameter values ** ');
884: hr_utility.trace('p_assignment_id: '||p_assignment_id);
885: hr_utility.trace('p_element_type_id: '||p_element_type_id);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
882:
883: hr_utility.trace('** Parameter values ** ');
884: hr_utility.trace('p_assignment_id: '||p_assignment_id);
885: hr_utility.trace('p_element_type_id: '||p_element_type_id);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
883: hr_utility.trace('** Parameter values ** ');
884: hr_utility.trace('p_assignment_id: '||p_assignment_id);
885: hr_utility.trace('p_element_type_id: '||p_element_type_id);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
884: hr_utility.trace('p_assignment_id: '||p_assignment_id);
885: hr_utility.trace('p_element_type_id: '||p_element_type_id);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
885: hr_utility.trace('p_element_type_id: '||p_element_type_id);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
886: hr_utility.trace('p_business_group_id: '||p_business_group_id);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
887: hr_utility.trace('p_car_price: '||p_car_price);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
895: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
888: hr_utility.trace('p_reg_date: '||p_reg_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
895: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
896: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
889: hr_utility.trace('p_fuel_type: '||p_fuel_type);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
895: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
896: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
897: hr_utility.trace('p_session_date: '||p_session_date);
890: hr_utility.trace('p_engine_size: '||p_engine_size);
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
895: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
896: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
897: hr_utility.trace('p_session_date: '||p_session_date);
898:
891: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
895: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
896: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
897: hr_utility.trace('p_session_date: '||p_session_date);
898:
899:
892: hr_utility.trace('p_payment: '||p_payment);
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
895: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
896: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
897: hr_utility.trace('p_session_date: '||p_session_date);
898:
899:
900:
893: hr_utility.trace('p_start_date: '||p_start_date);
894: hr_utility.trace('p_end_date: '||p_end_date);
895: hr_utility.trace('p_end_of_period_date: '||p_end_of_period_date);
896: hr_utility.trace('p_emp_term_date: '||p_emp_term_date);
897: hr_utility.trace('p_session_date: '||p_session_date);
898:
899:
900:
901: hr_utility.set_location(g_package_name||'.'||l_function_name,102);
897: hr_utility.trace('p_session_date: '||p_session_date);
898:
899:
900:
901: hr_utility.set_location(g_package_name||'.'||l_function_name,102);
902:
903: l_start_date := trunc(p_start_date);
904: l_end_date := trunc(p_end_date);
905: l_reg_date := trunc(p_reg_date);
907:
908: l_car_price := p_car_price;
909: l_fuel_type := p_fuel_type;
910:
911: hr_utility.trace('l_start_date: '||l_start_date);
912: hr_utility.trace('l_end_date: '||l_end_date);
913: hr_utility.trace('l_reg_date: '||l_reg_date);
914: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
915: hr_utility.trace('l_fuel_type: '||l_fuel_type);
908: l_car_price := p_car_price;
909: l_fuel_type := p_fuel_type;
910:
911: hr_utility.trace('l_start_date: '||l_start_date);
912: hr_utility.trace('l_end_date: '||l_end_date);
913: hr_utility.trace('l_reg_date: '||l_reg_date);
914: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
915: hr_utility.trace('l_fuel_type: '||l_fuel_type);
916: hr_utility.trace('p_session_date: '||p_session_date);
909: l_fuel_type := p_fuel_type;
910:
911: hr_utility.trace('l_start_date: '||l_start_date);
912: hr_utility.trace('l_end_date: '||l_end_date);
913: hr_utility.trace('l_reg_date: '||l_reg_date);
914: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
915: hr_utility.trace('l_fuel_type: '||l_fuel_type);
916: hr_utility.trace('p_session_date: '||p_session_date);
917:
910:
911: hr_utility.trace('l_start_date: '||l_start_date);
912: hr_utility.trace('l_end_date: '||l_end_date);
913: hr_utility.trace('l_reg_date: '||l_reg_date);
914: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
915: hr_utility.trace('l_fuel_type: '||l_fuel_type);
916: hr_utility.trace('p_session_date: '||p_session_date);
917:
918:
911: hr_utility.trace('l_start_date: '||l_start_date);
912: hr_utility.trace('l_end_date: '||l_end_date);
913: hr_utility.trace('l_reg_date: '||l_reg_date);
914: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
915: hr_utility.trace('l_fuel_type: '||l_fuel_type);
916: hr_utility.trace('p_session_date: '||p_session_date);
917:
918:
919:
912: hr_utility.trace('l_end_date: '||l_end_date);
913: hr_utility.trace('l_reg_date: '||l_reg_date);
914: hr_utility.trace('l_end_of_period_date: '||l_end_of_period_date);
915: hr_utility.trace('l_fuel_type: '||l_fuel_type);
916: hr_utility.trace('p_session_date: '||p_session_date);
917:
918:
919:
920: hr_utility.set_location(g_package_name||'.'||l_function_name,104);
916: hr_utility.trace('p_session_date: '||p_session_date);
917:
918:
919:
920: hr_utility.set_location(g_package_name||'.'||l_function_name,104);
921:
922:
923: /* Find percentage charge for vehicle */
924:
927: p_reg_date,
928: p_session_date);
929:
930:
931: hr_utility.trace('l_percentage: '||l_percentage);
932: hr_utility.set_location(g_package_name||'.'||l_function_name,106);
933:
934: /* Check if diesel supplements apply to that vehicle */
935:
928: p_session_date);
929:
930:
931: hr_utility.trace('l_percentage: '||l_percentage);
932: hr_utility.set_location(g_package_name||'.'||l_function_name,106);
933:
934: /* Check if diesel supplements apply to that vehicle */
935:
936: if (p_reg_date >= to_date('01/01/1998','DD/MM/YYYY')
951:
952:
953:
954: /* Add supplement to percentage */
955: hr_utility.trace('l_diesel_supplement: '||l_diesel_supplement);
956: hr_utility.set_location(g_package_name||'.'||l_function_name,106);
957:
958: l_percentage := l_percentage + l_diesel_supplement;
959:
952:
953:
954: /* Add supplement to percentage */
955: hr_utility.trace('l_diesel_supplement: '||l_diesel_supplement);
956: hr_utility.set_location(g_package_name||'.'||l_function_name,106);
957:
958: l_percentage := l_percentage + l_diesel_supplement;
959:
960: end if;
958: l_percentage := l_percentage + l_diesel_supplement;
959:
960: end if;
961:
962: hr_utility.set_location(g_package_name||'.'||l_function_name,107);
963:
964: /* Calculate car benefit charge */
965:
966: l_benefit_charge := l_car_price * (l_percentage/100);
964: /* Calculate car benefit charge */
965:
966: l_benefit_charge := l_car_price * (l_percentage/100);
967:
968: hr_utility.trace('l_benefit_charge: '||l_benefit_charge);
969: hr_utility.set_location(g_package_name||'.'||l_function_name,108);
970:
971: IF p_element_type_id is NOT NULL
972: THEN
965:
966: l_benefit_charge := l_car_price * (l_percentage/100);
967:
968: hr_utility.trace('l_benefit_charge: '||l_benefit_charge);
969: hr_utility.set_location(g_package_name||'.'||l_function_name,108);
970:
971: IF p_element_type_id is NOT NULL
972: THEN
973:
975: /* Need to find 1) greatest between start date of NI Car element entry or start of tax year */
976: /* 2) least between entry end date, payroll period/ tax year end date, employee termination date */
977: /* Relevant dates set above */
978:
979: hr_utility.trace('l_start_date: '||l_start_date);
980: hr_utility.trace('l_end_date: '||l_end_date);
981:
982: IF g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
983: l_days_available := trunc(l_end_date) - trunc(l_start_date) + 1; -- use actual number of days
976: /* 2) least between entry end date, payroll period/ tax year end date, employee termination date */
977: /* Relevant dates set above */
978:
979: hr_utility.trace('l_start_date: '||l_start_date);
980: hr_utility.trace('l_end_date: '||l_end_date);
981:
982: IF g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
983: l_days_available := trunc(l_end_date) - trunc(l_start_date) + 1; -- use actual number of days
984: ELSE
990: l_days_available := p_number_of_days;
991:
992: END IF;
993:
994: hr_utility.trace('l_days_available: '||l_days_available);
995: hr_utility.set_location(g_package_name||'.'||l_function_name,109);
996:
997: /* Deduct annual payment from annual benefit charge */
998:
991:
992: END IF;
993:
994: hr_utility.trace('l_days_available: '||l_days_available);
995: hr_utility.set_location(g_package_name||'.'||l_function_name,109);
996:
997: /* Deduct annual payment from annual benefit charge */
998:
999: hr_utility.trace('p_payment: '||p_payment);
995: hr_utility.set_location(g_package_name||'.'||l_function_name,109);
996:
997: /* Deduct annual payment from annual benefit charge */
998:
999: hr_utility.trace('p_payment: '||p_payment);
1000:
1001: l_benefit_charge := l_benefit_charge - p_payment;
1002:
1003:
1000:
1001: l_benefit_charge := l_benefit_charge - p_payment;
1002:
1003:
1004: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,110);
1005:
1006: /* If result < 0, then benefit charge will be 0 */
1007: if l_benefit_charge < 0
1008: then
1007: if l_benefit_charge < 0
1008: then
1009:
1010: l_benefit_charge := 0;
1011: hr_utility.trace('Benefit charge reset to 0');
1012:
1013: end if;
1014:
1015: hr_utility.trace('l_benefit_charge (after payment): '||l_benefit_charge);
1011: hr_utility.trace('Benefit charge reset to 0');
1012:
1013: end if;
1014:
1015: hr_utility.trace('l_benefit_charge (after payment): '||l_benefit_charge);
1016:
1017: /* Pro-rate the benefit charge, based on the number of days available */
1018:
1019: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
1016:
1017: /* Pro-rate the benefit charge, based on the number of days available */
1018:
1019: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
1020: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
1021: hr_utility.trace('g_days_in_year = '||g_days_in_year);
1022: hr_utility.trace('p_start_date: '||p_start_date);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1017: /* Pro-rate the benefit charge, based on the number of days available */
1018:
1019: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
1020: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
1021: hr_utility.trace('g_days_in_year = '||g_days_in_year);
1022: hr_utility.trace('p_start_date: '||p_start_date);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1018:
1019: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
1020: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
1021: hr_utility.trace('g_days_in_year = '||g_days_in_year);
1022: hr_utility.trace('p_start_date: '||p_start_date);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1019: l_benefit_charge := (l_benefit_charge / g_days_in_year) * l_days_available;
1020: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
1021: hr_utility.trace('g_days_in_year = '||g_days_in_year);
1022: hr_utility.trace('p_start_date: '||p_start_date);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1020: hr_utility.trace('l_benefit_charge (pro-rated): '||l_benefit_charge);
1021: hr_utility.trace('g_days_in_year = '||g_days_in_year);
1022: hr_utility.trace('p_start_date: '||p_start_date);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1028: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
1021: hr_utility.trace('g_days_in_year = '||g_days_in_year);
1022: hr_utility.trace('p_start_date: '||p_start_date);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1028: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
1029: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
1022: hr_utility.trace('p_start_date: '||p_start_date);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1028: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
1029: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
1030: hr_utility.trace('l_fuel_type = '||l_fuel_type);
1023: hr_utility.trace('p_end_date: '||p_end_date);
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1028: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
1029: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
1030: hr_utility.trace('l_fuel_type = '||l_fuel_type);
1031:
1024: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1028: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
1029: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
1030: hr_utility.trace('l_fuel_type = '||l_fuel_type);
1031:
1032: IF p_element_type_id is NOT NULL
1025: hr_utility.trace('p_element_type_id = '||p_element_type_id);
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1028: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
1029: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
1030: hr_utility.trace('l_fuel_type = '||l_fuel_type);
1031:
1032: IF p_element_type_id is NOT NULL
1033: THEN
1026: hr_utility.trace('l_percentage = '||l_percentage);
1027: hr_utility.trace('l_days_available = '||l_days_available);
1028: hr_utility.trace('g_ignore_fuel_opt_out = '||g_ignore_fuel_opt_out);
1029: hr_utility.trace('g_last_opt_out_date = '||to_char(g_last_opt_out_date, 'DD/MM/YYYY'));
1030: hr_utility.trace('l_fuel_type = '||l_fuel_type);
1031:
1032: IF p_element_type_id is NOT NULL
1033: THEN
1034:
1035: /* Add on any fuel scale charges after pro-ration */
1036: /* Use manually entered value if exists, else retrieve value from user table */
1037: /* based on engine size and fuel type */
1038: /* Value of p_fuel_scale parameter will be null unless overriden */
1039: hr_utility.trace('p_fuel_scale: '||p_fuel_scale);
1040:
1041: /* Check inputs to see if fuel scale user table should be queried or not */
1042:
1043: /* If fuel scale > 0 then manual user-entered input */
1058: then
1059: if l_fuel_type in ('HYBRID_ELECTRIC','PETROL','DIESEL','LPG_CNG','LPG_CNG_PETROL','LPG_CNG_PETROL_CONV','EURO_IV_DIESEL')
1060: then
1061:
1062: hr_utility.trace('Fuel type: '||l_fuel_type);
1063:
1064:
1065: if l_fuel_type in ('HYBRID_ELECTRIC','LPG_CNG','LPG_CNG_PETROL','LPG_CNG_PETROL_CONV')
1066: then
1078:
1079: end if;
1080:
1081:
1082: hr_utility.trace('Engine size: '||p_engine_size);
1083: hr_utility.trace('Session date: '||p_session_date);
1084: l_fuel_scale := fnd_number.canonical_to_number(hruserdt.get_table_value(p_business_group_id,
1085: 'FUEL_SCALE',
1086: l_fuel_type,
1079: end if;
1080:
1081:
1082: hr_utility.trace('Engine size: '||p_engine_size);
1083: hr_utility.trace('Session date: '||p_session_date);
1084: l_fuel_scale := fnd_number.canonical_to_number(hruserdt.get_table_value(p_business_group_id,
1085: 'FUEL_SCALE',
1086: l_fuel_type,
1087: p_engine_size,
1118:
1119: END IF;
1120:
1121:
1122: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
1123: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,113);
1124:
1125: IF nvl(p_fuel_scale, 0) = 0 and g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
1126: l_fuel_scale := l_fuel_scale * (l_percentage/100);
1119: END IF;
1120:
1121:
1122: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
1123: hr_utility.SET_LOCATION(g_package_name||'.'||l_function_name,113);
1124:
1125: IF nvl(p_fuel_scale, 0) = 0 and g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
1126: l_fuel_scale := l_fuel_scale * (l_percentage/100);
1127: END IF;
1124:
1125: IF nvl(p_fuel_scale, 0) = 0 and g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN -- Effective from year 2003-04
1126: l_fuel_scale := l_fuel_scale * (l_percentage/100);
1127: END IF;
1128: hr_utility.trace('l_fuel_scale: '||l_fuel_scale);
1129: l_benefit_charge:= l_benefit_charge + l_fuel_scale;
1130:
1131:
1132: /* Return final benefit charge */
1130:
1131:
1132: /* Return final benefit charge */
1133:
1134: hr_utility.trace('l_benefit_charge (after fuel scale): '||l_benefit_charge);
1135:
1136:
1137:
1138: /* Round down benefit charge to nearest pound */
1137:
1138: /* Round down benefit charge to nearest pound */
1139:
1140: l_benefit_charge := trunc(l_benefit_charge);
1141: hr_utility.trace('l_benefit_charge (final): '||l_benefit_charge);
1142:
1143: /* Set p_message parameter to null */
1144: p_message := null;
1145:
1142:
1143: /* Set p_message parameter to null */
1144: p_message := null;
1145:
1146: hr_utility.set_location(g_package_name||'.'||l_function_name,999);
1147:
1148: return l_benefit_charge;
1149:
1150: exception
1164: l_value NUMBER;
1165:
1166: begin
1167:
1168: hr_utility.set_location(g_package_name||'.'||l_function_name,1);
1169:
1170: l_value := p_value;
1171: hr_utility.trace('Value before rounding: '||l_value);
1172:
1167:
1168: hr_utility.set_location(g_package_name||'.'||l_function_name,1);
1169:
1170: l_value := p_value;
1171: hr_utility.trace('Value before rounding: '||l_value);
1172:
1173: loop
1174:
1175: l_value := l_value - 1;
1176:
1177: exit when mod(l_value,5) = 0;
1178: end loop;
1179:
1180: hr_utility.trace('Value after rounding: '||l_value);
1181: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1182:
1183: return l_value;
1184:
1177: exit when mod(l_value,5) = 0;
1178: end loop;
1179:
1180: hr_utility.trace('Value after rounding: '||l_value);
1181: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1182:
1183: return l_value;
1184:
1185: end round_CO2_val;
1199: e_invalid_input EXCEPTION;
1200:
1201: begin
1202:
1203: hr_utility.set_location(g_package_name||'.'||l_function_name,1);
1204:
1205: /* Validate inputs */
1206:
1207: if p_business_group_id is null
1212: raise e_invalid_input;
1213:
1214: end if;
1215:
1216: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1217: hr_utility.trace('p_co2_emissions: '||p_co2_emissions);
1218: hr_utility.trace('p_session_date: '||p_session_date);
1219:
1220: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1213:
1214: end if;
1215:
1216: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1217: hr_utility.trace('p_co2_emissions: '||p_co2_emissions);
1218: hr_utility.trace('p_session_date: '||p_session_date);
1219:
1220: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1221:
1214: end if;
1215:
1216: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1217: hr_utility.trace('p_co2_emissions: '||p_co2_emissions);
1218: hr_utility.trace('p_session_date: '||p_session_date);
1219:
1220: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1221:
1222: l_co2_emissions := p_co2_emissions;
1216: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1217: hr_utility.trace('p_co2_emissions: '||p_co2_emissions);
1218: hr_utility.trace('p_session_date: '||p_session_date);
1219:
1220: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1221:
1222: l_co2_emissions := p_co2_emissions;
1223:
1224: /* Get table value */
1229: p_session_date));
1230:
1231:
1232:
1233: hr_utility.set_location(g_package_name||'.'||l_function_name,4);
1234:
1235: return l_percentage;
1236:
1237: exception
1237: exception
1238:
1239: when e_invalid_input
1240: then
1241: hr_utility.trace('ERROR: Input into get_CO2_percentage invalid');
1242: hr_utility.trace('Business group id: '||p_business_group_id);
1243: hr_utility.trace('CO2 emissions figure: '||p_co2_emissions);
1244: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
1245: raise;
1238:
1239: when e_invalid_input
1240: then
1241: hr_utility.trace('ERROR: Input into get_CO2_percentage invalid');
1242: hr_utility.trace('Business group id: '||p_business_group_id);
1243: hr_utility.trace('CO2 emissions figure: '||p_co2_emissions);
1244: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
1245: raise;
1246:
1239: when e_invalid_input
1240: then
1241: hr_utility.trace('ERROR: Input into get_CO2_percentage invalid');
1242: hr_utility.trace('Business group id: '||p_business_group_id);
1243: hr_utility.trace('CO2 emissions figure: '||p_co2_emissions);
1244: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
1245: raise;
1246:
1247: when too_many_rows
1240: then
1241: hr_utility.trace('ERROR: Input into get_CO2_percentage invalid');
1242: hr_utility.trace('Business group id: '||p_business_group_id);
1243: hr_utility.trace('CO2 emissions figure: '||p_co2_emissions);
1244: hr_utility.trace('Session date: '||to_char(p_session_date,'DD/MM/YYYY'));
1245: raise;
1246:
1247: when too_many_rows
1248: then
1245: raise;
1246:
1247: when too_many_rows
1248: then
1249: hr_utility.trace('ERROR: Retrieving CO2 percentage from user table retrieved too many rows');
1250: raise;
1251:
1252:
1253: when no_data_found
1251:
1252:
1253: when no_data_found
1254: then
1255: hr_utility.trace('ERROR: Call to GB_CO2_EMISSIONS user table retrieved no value');
1256: raise;
1257:
1258: when others
1259: then raise;
1276:
1277:
1278: begin
1279:
1280: hr_utility.set_location(g_package_name||'.'||l_function_name,1);
1281:
1282: /* Check to see what registration date is as value retrieved will differ */
1283:
1284: if p_reg_date < to_date('01/01/1998','DD/MM/YYYY')
1291: l_column_name := 'ON_AFTER_JAN_1_1998';
1292:
1293: end if;
1294:
1295: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1296:
1297: l_percentage := fnd_number.canonical_to_number(hruserdt.get_table_value(p_business_group_id,
1298: 'GB_CC_SCALE',
1299: l_column_name,
1300: p_engine_size,
1301: p_session_date));
1302:
1303:
1304: hr_utility.set_location(g_package_name||'.'||l_function_name,3);
1305:
1306: return l_percentage;
1307:
1308: exception
1308: exception
1309:
1310: when too_many_rows
1311: then
1312: hr_utility.trace('ERROR: Retrieving CC percentage from user table retrieved too many rows');
1313: raise;
1314:
1315: when no_data_found
1316: then
1313: raise;
1314:
1315: when no_data_found
1316: then
1317: hr_utility.trace('ERROR: Retrieving CC percentage from user table retrieved no value');
1318: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1319: hr_utility.trace('p_engine_size: '||p_engine_size);
1320: hr_utility.trace('p_session_date: '||p_session_date);
1321: raise;
1314:
1315: when no_data_found
1316: then
1317: hr_utility.trace('ERROR: Retrieving CC percentage from user table retrieved no value');
1318: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1319: hr_utility.trace('p_engine_size: '||p_engine_size);
1320: hr_utility.trace('p_session_date: '||p_session_date);
1321: raise;
1322:
1315: when no_data_found
1316: then
1317: hr_utility.trace('ERROR: Retrieving CC percentage from user table retrieved no value');
1318: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1319: hr_utility.trace('p_engine_size: '||p_engine_size);
1320: hr_utility.trace('p_session_date: '||p_session_date);
1321: raise;
1322:
1323:
1316: then
1317: hr_utility.trace('ERROR: Retrieving CC percentage from user table retrieved no value');
1318: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1319: hr_utility.trace('p_engine_size: '||p_engine_size);
1320: hr_utility.trace('p_session_date: '||p_session_date);
1321: raise;
1322:
1323:
1324: when others
1353:
1354:
1355: begin
1356:
1357: hr_utility.set_location(g_package_name||'.'||l_function_name,1);
1358:
1359: /* Check which fuel type is being used */
1360:
1361: if p_fuel_type = 'BATTERY_ELECTRIC' -- Battery electric
1379: l_global_name := 'NI_CAR_LPG_DISCOUNT';
1380:
1381: end if;
1382:
1383: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1384:
1385: /* Get value of the global based on its name */
1386:
1387: open csr_global_value;
1388: fetch csr_global_value into l_global_value;
1389: close csr_global_value;
1390:
1391:
1392: hr_utility.set_location(g_package_name||'.'||l_function_name,10);
1393:
1394: l_discount := to_number(l_global_value) * 100;
1395:
1396: return l_discount;
1398: exception
1399:
1400: when too_many_rows
1401: then
1402: hr_utility.trace('ERROR: Retrieving global value for '||l_global_name||' retrieved too many rows');
1403: raise;
1404:
1405: when no_data_found
1406: then
1403: raise;
1404:
1405: when no_data_found
1406: then
1407: hr_utility.trace('ERROR: Retrieving global value for '||l_global_name||' retrieved no value');
1408: hr_utility.trace('p_fuel_type: '||p_fuel_type);
1409: hr_utility.trace('p_session_date: '||p_session_date);
1410: raise;
1411:
1404:
1405: when no_data_found
1406: then
1407: hr_utility.trace('ERROR: Retrieving global value for '||l_global_name||' retrieved no value');
1408: hr_utility.trace('p_fuel_type: '||p_fuel_type);
1409: hr_utility.trace('p_session_date: '||p_session_date);
1410: raise;
1411:
1412:
1405: when no_data_found
1406: then
1407: hr_utility.trace('ERROR: Retrieving global value for '||l_global_name||' retrieved no value');
1408: hr_utility.trace('p_fuel_type: '||p_fuel_type);
1409: hr_utility.trace('p_session_date: '||p_session_date);
1410: raise;
1411:
1412:
1413: when others
1681:
1682: --
1683: --
1684: BEGIN
1685: -- hr_utility.trace_on(null,'NICAR');
1686:
1687: hr_utility.set_location(g_package_name||'.'||l_function_name,1);
1688:
1689:
1683: --
1684: BEGIN
1685: -- hr_utility.trace_on(null,'NICAR');
1686:
1687: hr_utility.set_location(g_package_name||'.'||l_function_name,1);
1688:
1689:
1690: --
1691: -- Get the session date
1699: g_tax_year_start := hr_gbnicar.uk_tax_yr_start(csr0_session_date);
1700: g_tax_year_end := hr_gbnicar.uk_tax_yr_end(csr0_session_date);
1701: g_days_in_year := trunc(g_tax_year_end) - trunc(g_tax_year_start) + 1;
1702:
1703: hr_utility.set_location(g_package_name||'.'||l_function_name,2);
1704:
1705:
1706:
1707: open csr_period_type;
1766:
1767: end if;
1768:
1769:
1770: hr_utility.set_location(g_package_name||'.'||l_function_name,3);
1771: --
1772: --
1773: -- Get the max allowable price, and the contrib rate
1774: --
1771: --
1772: --
1773: -- Get the max allowable price, and the contrib rate
1774: --
1775: hr_utility.set_location(g_package_name||'.'||l_function_name,10);
1776: open csr1_globals;
1777: hr_utility.set_location(g_package_name||'.'||l_function_name,20);
1778: fetch csr1_globals
1779: into csr1_price_max
1773: -- Get the max allowable price, and the contrib rate
1774: --
1775: hr_utility.set_location(g_package_name||'.'||l_function_name,10);
1776: open csr1_globals;
1777: hr_utility.set_location(g_package_name||'.'||l_function_name,20);
1778: fetch csr1_globals
1779: into csr1_price_max
1780: , csr1_ni_rate;
1781: close csr1_globals;
1779: into csr1_price_max
1780: , csr1_ni_rate;
1781: close csr1_globals;
1782:
1783: hr_utility.trace('csr1_price_max: '||csr1_price_max);
1784: hr_utility.trace('csr1_ni_rate: '||csr1_ni_rate);
1785: --
1786: --
1787: -- Get the element_name for the element type id, and all the associated
1780: , csr1_ni_rate;
1781: close csr1_globals;
1782:
1783: hr_utility.trace('csr1_price_max: '||csr1_price_max);
1784: hr_utility.trace('csr1_ni_rate: '||csr1_ni_rate);
1785: --
1786: --
1787: -- Get the element_name for the element type id, and all the associated
1788: -- input value ids.
1786: --
1787: -- Get the element_name for the element type id, and all the associated
1788: -- input value ids.
1789: --
1790: hr_utility.set_location(g_package_name||'.'||l_function_name,30);
1791: open csr2_pri_sec;
1792: hr_utility.set_location(g_package_name||'.'||l_function_name,40);
1793: fetch csr2_pri_sec
1794: into csr2_element_name
1788: -- input value ids.
1789: --
1790: hr_utility.set_location(g_package_name||'.'||l_function_name,30);
1791: open csr2_pri_sec;
1792: hr_utility.set_location(g_package_name||'.'||l_function_name,40);
1793: fetch csr2_pri_sec
1794: into csr2_element_name
1795: , csr2_pr
1796: , csr2_rd
1804:
1805: close csr2_pri_sec;
1806:
1807: g_ignore_fuel_opt_out := 'N';
1808: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1809: hr_utility.trace('g_tax_year_start = '||to_char(g_tax_year_start, 'DD-MON-YYYY'));
1810: hr_utility.trace('g_tax_year_end = '||to_char(g_tax_year_end, 'DD-MON-YYYY'));
1811: -- Find out if employee has opted back into free fuel part way through the
1812: -- tax year. If yes then fuel scale will be charged for full availability
1805: close csr2_pri_sec;
1806:
1807: g_ignore_fuel_opt_out := 'N';
1808: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1809: hr_utility.trace('g_tax_year_start = '||to_char(g_tax_year_start, 'DD-MON-YYYY'));
1810: hr_utility.trace('g_tax_year_end = '||to_char(g_tax_year_end, 'DD-MON-YYYY'));
1811: -- Find out if employee has opted back into free fuel part way through the
1812: -- tax year. If yes then fuel scale will be charged for full availability
1813: -- for the car.
1806:
1807: g_ignore_fuel_opt_out := 'N';
1808: hr_utility.trace('p_assignment_id = '||p_assignment_id);
1809: hr_utility.trace('g_tax_year_start = '||to_char(g_tax_year_start, 'DD-MON-YYYY'));
1810: hr_utility.trace('g_tax_year_end = '||to_char(g_tax_year_end, 'DD-MON-YYYY'));
1811: -- Find out if employee has opted back into free fuel part way through the
1812: -- tax year. If yes then fuel scale will be charged for full availability
1813: -- for the car.
1814: IF g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN --Effective from year 2003
1811: -- Find out if employee has opted back into free fuel part way through the
1812: -- tax year. If yes then fuel scale will be charged for full availability
1813: -- for the car.
1814: IF g_tax_year_start >= to_date('06-04-2003', 'DD-MM-YYYY') THEN --Effective from year 2003
1815: hr_utility.trace('Opening csr_ignore_opt_out.');
1816: open csr_ignore_fuel_opt_out;
1817: fetch csr_ignore_fuel_opt_out into g_ignore_fuel_opt_out;
1818: close csr_ignore_fuel_opt_out;
1819: --
1816: open csr_ignore_fuel_opt_out;
1817: fetch csr_ignore_fuel_opt_out into g_ignore_fuel_opt_out;
1818: close csr_ignore_fuel_opt_out;
1819: --
1820: hr_utility.trace('Opening csr_last_opt_out_date.');
1821: open csr_last_opt_out_date;
1822: fetch csr_last_opt_out_date into g_last_opt_out_date;
1823: close csr_last_opt_out_date;
1824: END IF;
1822: fetch csr_last_opt_out_date into g_last_opt_out_date;
1823: close csr_last_opt_out_date;
1824: END IF;
1825: --
1826: hr_utility.trace('g_ignore_fuel_out_out = '||g_ignore_fuel_opt_out);
1827: hr_utility.trace('g_last_opt_out_date = '||g_last_opt_out_date);
1828: --
1829: --
1830: -- Get the required details for all company car benefits for the assignment
1823: close csr_last_opt_out_date;
1824: END IF;
1825: --
1826: hr_utility.trace('g_ignore_fuel_out_out = '||g_ignore_fuel_opt_out);
1827: hr_utility.trace('g_last_opt_out_date = '||g_last_opt_out_date);
1828: --
1829: --
1830: -- Get the required details for all company car benefits for the assignment
1831: --
1828: --
1829: --
1830: -- Get the required details for all company car benefits for the assignment
1831: --
1832: hr_utility.set_location(g_package_name||'.'||l_function_name,50);
1833: open csr3_nicar;
1834: --
1835: hr_utility.set_location(g_package_name||'.'||l_function_name,60);
1836:
1831: --
1832: hr_utility.set_location(g_package_name||'.'||l_function_name,50);
1833: open csr3_nicar;
1834: --
1835: hr_utility.set_location(g_package_name||'.'||l_function_name,60);
1836:
1837:
1838:
1839: loop
1868: /* whichever is the least */
1869:
1870: l_end_date := least(csr3_end_date,l_end_of_period_date,p_emp_term_date);
1871:
1872: hr_utility.set_location(g_package_name||'.'||l_function_name,70);
1873:
1874: /* Check all parameters are valid */
1875:
1876: if csr3_price <0
1874: /* Check all parameters are valid */
1875:
1876: if csr3_price <0
1877: then
1878: hr_utility.set_message(800,'HR_7361_LOC_INVALID_PRICE');
1879: hr_utility.raise_error;
1880:
1881: elsif csr3_reg_date > g_tax_year_end
1882: then
1875:
1876: if csr3_price <0
1877: then
1878: hr_utility.set_message(800,'HR_7361_LOC_INVALID_PRICE');
1879: hr_utility.raise_error;
1880:
1881: elsif csr3_reg_date > g_tax_year_end
1882: then
1883: hr_utility.set_message(800,'HR_7367_LOC_INVALID_REG_DATE');
1879: hr_utility.raise_error;
1880:
1881: elsif csr3_reg_date > g_tax_year_end
1882: then
1883: hr_utility.set_message(800,'HR_7367_LOC_INVALID_REG_DATE');
1884: hr_utility.raise_error;
1885:
1886: elsif csr3_reg_date > l_start_date
1887: then
1880:
1881: elsif csr3_reg_date > g_tax_year_end
1882: then
1883: hr_utility.set_message(800,'HR_7367_LOC_INVALID_REG_DATE');
1884: hr_utility.raise_error;
1885:
1886: elsif csr3_reg_date > l_start_date
1887: then
1888: hr_utility.set_message(800,'HR_7367_LOC_INVALID_REG_DATE');
1884: hr_utility.raise_error;
1885:
1886: elsif csr3_reg_date > l_start_date
1887: then
1888: hr_utility.set_message(800,'HR_7367_LOC_INVALID_REG_DATE');
1889: hr_utility.raise_error;
1890:
1891: elsif csr3_fuel_scale <0
1892: then
1885:
1886: elsif csr3_reg_date > l_start_date
1887: then
1888: hr_utility.set_message(800,'HR_7367_LOC_INVALID_REG_DATE');
1889: hr_utility.raise_error;
1890:
1891: elsif csr3_fuel_scale <0
1892: then
1893: hr_utility.set_message(800,'HR_7368_LOC_INVALID_FUELCHG');
1889: hr_utility.raise_error;
1890:
1891: elsif csr3_fuel_scale <0
1892: then
1893: hr_utility.set_message(800,'HR_7368_LOC_INVALID_FUELCHG');
1894: hr_utility.raise_error;
1895:
1896: elsif csr3_payment <0
1897: then
1890:
1891: elsif csr3_fuel_scale <0
1892: then
1893: hr_utility.set_message(800,'HR_7368_LOC_INVALID_FUELCHG');
1894: hr_utility.raise_error;
1895:
1896: elsif csr3_payment <0
1897: then
1898: hr_utility.set_message(800,'HR_7369_LOC_INVALID_ANN_PAY');
1894: hr_utility.raise_error;
1895:
1896: elsif csr3_payment <0
1897: then
1898: hr_utility.set_message(800,'HR_7369_LOC_INVALID_ANN_PAY');
1899: hr_utility.raise_error;
1900: end if;
1901:
1902: hr_utility.set_location(g_package_name||'.'||l_function_name,80);
1895:
1896: elsif csr3_payment <0
1897: then
1898: hr_utility.set_message(800,'HR_7369_LOC_INVALID_ANN_PAY');
1899: hr_utility.raise_error;
1900: end if;
1901:
1902: hr_utility.set_location(g_package_name||'.'||l_function_name,80);
1903:
1898: hr_utility.set_message(800,'HR_7369_LOC_INVALID_ANN_PAY');
1899: hr_utility.raise_error;
1900: end if;
1901:
1902: hr_utility.set_location(g_package_name||'.'||l_function_name,80);
1903:
1904: /* Check car price does not exceed the price cap */
1905: if csr3_price > csr1_price_max
1906: then
1905: if csr3_price > csr1_price_max
1906: then
1907:
1908: csr3_price := csr1_price_max;
1909: hr_utility.trace('Price cap applied to car list price.');
1910: l_message := 'Price Cap applied to car price.';
1911:
1912: end if;
1913:
1915: if csr3_fuel_type is null
1916: then
1917:
1918: csr3_fuel_type := 'DIESEL';
1919: hr_utility.trace('Fuel type defaulted to Diesel.');
1920: l_message := l_message||'Fuel type defaulted to Diesel.';
1921:
1922: end if;
1923:
1925: if csr3_engine_cc is null
1926: then
1927:
1928: csr3_engine_cc := 9999;
1929: hr_utility.trace('Defaulted engine size to 9999cc');
1930: l_message := l_message||'Engine size defaulted to 9999cc.';
1931:
1932: end if;
1933:
1932: end if;
1933:
1934:
1935:
1936: hr_utility.set_location(g_package_name||'.'||l_function_name,90);
1937:
1938: hr_utility.trace('***************************');
1939: hr_utility.trace('Input parameters to calculation: ');
1940: hr_utility.trace('p_assignment_id: '||p_assignment_id);
1934:
1935:
1936: hr_utility.set_location(g_package_name||'.'||l_function_name,90);
1937:
1938: hr_utility.trace('***************************');
1939: hr_utility.trace('Input parameters to calculation: ');
1940: hr_utility.trace('p_assignment_id: '||p_assignment_id);
1941: hr_utility.trace('p_element_type_id: '||p_element_type_id);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1935:
1936: hr_utility.set_location(g_package_name||'.'||l_function_name,90);
1937:
1938: hr_utility.trace('***************************');
1939: hr_utility.trace('Input parameters to calculation: ');
1940: hr_utility.trace('p_assignment_id: '||p_assignment_id);
1941: hr_utility.trace('p_element_type_id: '||p_element_type_id);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1943:
1936: hr_utility.set_location(g_package_name||'.'||l_function_name,90);
1937:
1938: hr_utility.trace('***************************');
1939: hr_utility.trace('Input parameters to calculation: ');
1940: hr_utility.trace('p_assignment_id: '||p_assignment_id);
1941: hr_utility.trace('p_element_type_id: '||p_element_type_id);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1943:
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1937:
1938: hr_utility.trace('***************************');
1939: hr_utility.trace('Input parameters to calculation: ');
1940: hr_utility.trace('p_assignment_id: '||p_assignment_id);
1941: hr_utility.trace('p_element_type_id: '||p_element_type_id);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1943:
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1938: hr_utility.trace('***************************');
1939: hr_utility.trace('Input parameters to calculation: ');
1940: hr_utility.trace('p_assignment_id: '||p_assignment_id);
1941: hr_utility.trace('p_element_type_id: '||p_element_type_id);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1943:
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1940: hr_utility.trace('p_assignment_id: '||p_assignment_id);
1941: hr_utility.trace('p_element_type_id: '||p_element_type_id);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1943:
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1941: hr_utility.trace('p_element_type_id: '||p_element_type_id);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1943:
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1942: hr_utility.trace('p_business_group_id: '||p_business_group_id);
1943:
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1943:
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1944: hr_utility.trace('csr3_start_date: '||l_start_date);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1952: hr_utility.trace('csr3_payment: '||csr3_payment);
1945: hr_utility.trace('csr3_end_date: '||l_end_date);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1952: hr_utility.trace('csr3_payment: '||csr3_payment);
1953: hr_utility.trace('csr3_co2_emissions: '||csr3_co2_emissions);
1946: hr_utility.trace('csr3_price: '||csr3_price);
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1952: hr_utility.trace('csr3_payment: '||csr3_payment);
1953: hr_utility.trace('csr3_co2_emissions: '||csr3_co2_emissions);
1954: hr_utility.trace('***************************');
1947: hr_utility.trace('csr3_reg_date: '||csr3_reg_date);
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1952: hr_utility.trace('csr3_payment: '||csr3_payment);
1953: hr_utility.trace('csr3_co2_emissions: '||csr3_co2_emissions);
1954: hr_utility.trace('***************************');
1955:
1948: hr_utility.trace('csr3_mileage_band: '||csr3_mileage_band);
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1952: hr_utility.trace('csr3_payment: '||csr3_payment);
1953: hr_utility.trace('csr3_co2_emissions: '||csr3_co2_emissions);
1954: hr_utility.trace('***************************');
1955:
1956: IF (csr3_co2_emissions is null AND csr3_fuel_type <> 'BATTERY_ELECTRIC')
1949: hr_utility.trace('csr3_fuel_type: '||csr3_fuel_type);
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1952: hr_utility.trace('csr3_payment: '||csr3_payment);
1953: hr_utility.trace('csr3_co2_emissions: '||csr3_co2_emissions);
1954: hr_utility.trace('***************************');
1955:
1956: IF (csr3_co2_emissions is null AND csr3_fuel_type <> 'BATTERY_ELECTRIC')
1957: OR (csr3_reg_date < l_reg_date_lower_limit AND csr3_fuel_type <> 'BATTERY_ELECTRIC')
1950: hr_utility.trace('csr3_engine_cc: '||csr3_engine_cc);
1951: hr_utility.trace('csr3_fuel_scale: '||csr3_fuel_scale);
1952: hr_utility.trace('csr3_payment: '||csr3_payment);
1953: hr_utility.trace('csr3_co2_emissions: '||csr3_co2_emissions);
1954: hr_utility.trace('***************************');
1955:
1956: IF (csr3_co2_emissions is null AND csr3_fuel_type <> 'BATTERY_ELECTRIC')
1957: OR (csr3_reg_date < l_reg_date_lower_limit AND csr3_fuel_type <> 'BATTERY_ELECTRIC')
1958: THEN
1956: IF (csr3_co2_emissions is null AND csr3_fuel_type <> 'BATTERY_ELECTRIC')
1957: OR (csr3_reg_date < l_reg_date_lower_limit AND csr3_fuel_type <> 'BATTERY_ELECTRIC')
1958: THEN
1959: /* Calculate nicable value based on engine size */
1960: hr_utility.trace('Engine size calc');
1961:
1962: l_nicable_benefit := pay_gb_nicar_06042002.nicar_nicable_value_non_CO2
1963: ( p_assignment_id => p_assignment_id,
1964: p_element_type_id => p_element_type_id,
1977: p_message => l_cc_message);
1978:
1979: else
1980: /* Calculate nicable value based on CO2 emissions */
1981: hr_utility.trace('CO2 emissions calc');
1982:
1983: l_nicable_benefit := pay_gb_nicar_06042002.nicar_nicable_value_CO2
1984: ( p_assignment_id => p_assignment_id,
1985: p_element_type_id => p_element_type_id,
1999: p_message => l_co2_message);
2000:
2001: end if;
2002:
2003: hr_utility.set_location(g_package_name||'.'||l_function_name,100);
2004:
2005: l_nicable_benefit := trunc((l_nicable_benefit * csr1_ni_rate),2);
2006:
2007: hr_utility.trace('l_nicable_benefit: '||l_nicable_benefit);
2003: hr_utility.set_location(g_package_name||'.'||l_function_name,100);
2004:
2005: l_nicable_benefit := trunc((l_nicable_benefit * csr1_ni_rate),2);
2006:
2007: hr_utility.trace('l_nicable_benefit: '||l_nicable_benefit);
2008:
2009: l_running_total := l_running_total + l_nicable_benefit;
2010:
2011:
2039: end loop;
2040: --
2041: close csr3_nicar;
2042: --
2043: hr_utility.set_location(g_package_name||'.'||l_function_name,110);
2044:
2045:
2046: /* Deal with any messages produced by calculation runs */
2047: /* If 5 or more messages produced then output first 3 messages plus generic message */
2046: /* Deal with any messages produced by calculation runs */
2047: /* If 5 or more messages produced then output first 3 messages plus generic message */
2048: /* otherwise output messages to 1 to 4 to fast formula */
2049:
2050: hr_utility.trace('Message lines: '||tbl_msg_table.COUNT);
2051:
2052: if tbl_msg_table.COUNT >= 5
2053: then
2054:
2051:
2052: if tbl_msg_table.COUNT >= 5
2053: then
2054:
2055: hr_utility.trace('In messages(1)');
2056:
2057: p_message_1 := tbl_msg_table(1);
2058: p_message_2 := tbl_msg_table(2);
2059: p_message_3 := tbl_msg_table(3);
2063:
2064:
2065: else
2066:
2067: hr_utility.trace('In messages(2)');
2068:
2069: for i in 1..tbl_msg_table.COUNT loop
2070:
2071: if i = 1
2093: end if;
2094:
2095:
2096:
2097: hr_utility.trace('l_running_total: '||l_running_total);
2098:
2099:
2100:
2101: --
2098:
2099:
2100:
2101: --
2102: hr_utility.set_location(g_package_name||'.'||l_function_name,999);
2103:
2104: --hr_utility.trace_off;
2105:
2106: return l_running_total;
2100:
2101: --
2102: hr_utility.set_location(g_package_name||'.'||l_function_name,999);
2103:
2104: --hr_utility.trace_off;
2105:
2106: return l_running_total;
2107:
2108: