public IHttpActionResult Allowance(Labour labour)
 {
     SmallQuoteEstimator.Australia.LabourEstimator.Allowance(labour);
     return Ok(new
     {
         data = labour
     });
 }
Пример #2
0
        /// <summary>
        /// return allowance cost per week
        /// </summary>
        /// <param name="labour"></param>
        /// <returns></returns>
        public decimal Allowance(Labour labour)
        {
            labour.ToiletAllowancePw = AllowanceFormula.PerWeek(labour.ToiletAllowance.GetValueOrDefault(),
                                                                labour.AllowanceRate.ToiletAllowPerShift);

            labour.LeadingHandSmallPw = AllowanceFormula.PerWeek(labour.LeadingHandSmall.GetValueOrDefault(),
                                                                 labour.AllowanceRate.LeadingHandSmallGroup);

            labour.LeadingHandLargePw = AllowanceFormula.PerWeek(labour.LeadingHandLarge.GetValueOrDefault(),
                                                                 labour.AllowanceRate.LeadingHandLargeGroup);

            labour.OtherAllowancePw = AllowanceFormula.PerWeek(labour.OtherAllowance.GetValueOrDefault(),
                                                               labour.OtherAllowanceRate.GetValueOrDefault());

            return labour.ToiletAllowancePw.GetValueOrDefault() +
                   labour.LeadingHandSmallPw.GetValueOrDefault() +
                   labour.LeadingHandLargePw.GetValueOrDefault() +
                   labour.OtherAllowancePw.GetValueOrDefault() +
                   labour.LeapYearPw.GetValueOrDefault() +
                   labour.PicnicDayPw.GetValueOrDefault();
        }
 public IHttpActionResult Total(Labour labour)
 {
     SmallQuoteEstimator.Australia.LabourEstimator.Total(labour);
     return Ok(new
     {
         data = labour
     });
 }
Пример #4
0
        /// <summary>
        /// return total labour cost including wage, periodical, allowance as well as other expenses such as superannuation, compensation, long services and tax etc.
        /// </summary>
        /// <param name="labour"></param>
        /// <returns></returns>
        public virtual decimal Total(Labour labour)
        {
            if (labour == null)
                return 0;

            decimal labourTotal = 0;
            decimal labourTotalWithoutHoliday = 0;
            if (labour.LabourEstimations != null)
            {

                labourTotal = labour.LabourEstimations.Sum(x => Wage(x));
                labourTotalWithoutHoliday = labour.LabourEstimations.Sum(x => x.WeekdayTotal.GetValueOrDefault() +
                                                                                  x.SaturdayTotal.GetValueOrDefault() +
                                                                                  x.SundayTotal.GetValueOrDefault());
            }

            decimal periodicalTotal = 0;
            if (labour.LabourPeriodicals != null)
                periodicalTotal = labour.LabourPeriodicals.Sum(x => Periodical(x));

            var allowance = Allowance(labour);

            var subTotalWithoutHoliday = labourTotalWithoutHoliday +
                                         periodicalTotal +
                                         allowance;

            labour.SickPayPw = OnCostFormula.Cost(labour.OnCostRate.HolidayPay, subTotalWithoutHoliday);
            labour.HolidayPayPw = OnCostFormula.Cost(labour.OnCostRate.SickPay, subTotalWithoutHoliday);

            var subTotal = labourTotal +
                           periodicalTotal +
                           allowance +
                           labour.SickPayPw.GetValueOrDefault() +
                           labour.HolidayPayPw.GetValueOrDefault();

            labour.LongServicesLeavePw = subTotal * labour.OnCostRate.LongService;

            labour.SuperannuationPw = subTotal * labour.OnCostRate.Superannuation;

            labour.WorkerCompensationPw = (subTotal + labour.SuperannuationPw.GetValueOrDefault()) *
                                          labour.OnCostRate.WorkerCompensation;

            labour.PayrollTaxPw = (subTotal + labour.SuperannuationPw.GetValueOrDefault()) * labour.OnCostRate.PayrollTax;

            return subTotal +
                   labour.LongServicesLeavePw.GetValueOrDefault() +
                   labour.SuperannuationPw.GetValueOrDefault() +
                   labour.WorkerCompensationPw.GetValueOrDefault() +
                   labour.PayrollTaxPw.GetValueOrDefault();
        }