Example #1
0
 private static void MapRaHireGroupInsuranceCharge(RaHireGroupInsurance raHireGroupInsurance,
                                                   RaHireGroupInsurance insurance)
 {
     raHireGroupInsurance.InsuranceRate   = insurance.InsuranceRate;
     raHireGroupInsurance.InsuranceCharge = insurance.InsuranceCharge;
     raHireGroupInsurance.TariffType      = insurance.TariffType;
     raHireGroupInsurance.ChargedDay      = insurance.ChargedDay;
     raHireGroupInsurance.ChargedHour     = insurance.ChargedHour;
     raHireGroupInsurance.ChargedMinute   = insurance.ChargedMinute;
 }
Example #2
0
 /// <summary>
 ///  Create web model from entity
 /// </summary>
 public static DomainModels.RaHireGroupInsurance CreateFrom(this RaHireGroupInsurance source)
 {
     return(new DomainModels.RaHireGroupInsurance
     {
         RaHireGroupInsuranceId = source.RaHireGroupInsuranceId,
         RaHireGroupId = source.RaHireGroupId,
         ChargedDay = source.ChargedDay,
         ChargedHour = source.ChargedHour,
         ChargedMinute = source.ChargedMinute,
         InsuranceCharge = source.InsuranceCharge,
         InsuranceRate = source.InsuranceRate,
         StartDtTime = source.StartDtTime,
         EndDtTime = source.EndDtTime,
         InsuranceTypeId = source.InsuranceTypeId,
         TariffType = source.TariffType
     });
 }
Example #3
0
        public override RaHireGroupInsurance CalculateInsuranceCharge(DateTime StartDate, DateTime EndDate, InsuranceRt InsRate)
        {
            RaHireGroupInsurance oInsuranceCharge = null;
            //calculate total rental duration as a time span object
            TimeSpan dtSpan = EndDate - StartDate;

            //convert rental duration to minutes for standardization
            float InsDurationInMinutes = GetDurationInMinutes(dtSpan, Convert.ToInt32(TariffType.MeasurementUnitId));
            //convert tariff type FromDuration to Minute for standardization
            float TariffDurationFrom = GetDurationInMinutes(TariffType.DurationFrom, Convert.ToInt32(TariffType.MeasurementUnitId));
            //convert tariff type ToDuration to Minute for standardization
            float TariffDurationTo = GetDurationInMinutes(TariffType.DurationTo, Convert.ToInt32(TariffType.MeasurementUnitId));
            //convert tariff type GracePeriod to Minute for standardization
            float TariffGracePeriod = GetDurationInMinutes((float)TariffType.GracePeriod, Convert.ToInt32(TariffType.MeasurementUnitId));

            //set rental charge object common parameters
            oInsuranceCharge            = new RaHireGroupInsurance();
            oInsuranceCharge.TariffType = this.TariffType.TariffTypeCode;
            if (InsDurationInMinutes >= TariffDurationFrom && InsDurationInMinutes <= TariffDurationTo)
            {
                oInsuranceCharge.InsuranceRate   = InsRate.InsuranceRate;
                oInsuranceCharge.InsuranceCharge = InsRate.InsuranceRate;
                oInsuranceCharge.ChargedDay      = dtSpan.Days;
                oInsuranceCharge.ChargedHour     = dtSpan.Hours;
                oInsuranceCharge.ChargedMinute   = dtSpan.Minutes;
            }
            else
            {
                float ChargeDuration = GetDurationInMinutes(dtSpan, Convert.ToInt32(TariffType.MeasurementUnitId));
                oInsuranceCharge.InsuranceCharge = (float)Math.Round((ChargeDuration / TariffDurationTo) * InsRate.InsuranceRate, base.DecimalRounding, MidpointRounding.AwayFromZero);

                oInsuranceCharge.InsuranceRate = InsRate.InsuranceRate;
                //excess milage charge for edit case
                oInsuranceCharge.ChargedDay    = dtSpan.Days;
                oInsuranceCharge.ChargedHour   = dtSpan.Hours;
                oInsuranceCharge.ChargedMinute = dtSpan.Minutes;
            }
            return(oInsuranceCharge);
        }
Example #4
0
        /// <summary>
        /// Calculate HireGroup Charges
        /// </summary>
        public void CalculateHireGroupCharges(DateTime RACreatedDate, DateTime StartDate, DateTime EndDate, Int64 OperationID, ref List <RaHireGroup> RAHireGroupList, List <TariffType> oTariffTypeList)
        {
            Int32       OutOdometer = 0, InOdometer = 0;
            Int64       DesiredHireGroupID = 0;
            RaHireGroup oRAHGDesired       = GetDesiredHireGroup(RAHireGroupList);

            if (oRAHGDesired != null)
            {
                DesiredHireGroupID = oRAHGDesired.HireGroupDetailId;
            }
            foreach (RaHireGroup item in RAHireGroupList)
            {
                if (item.IsDeleted != true)
                {
                    VehicleMovement vehicleMovementOut = item.VehicleMovements.FirstOrDefault(vm => vm.Status == Convert.ToBoolean(VehicleMovementEnum.Out));
                    VehicleMovement vehicleMovementIn  = item.VehicleMovements.FirstOrDefault(vm => vm.Status == Convert.ToBoolean(VehicleMovementEnum.In));
                    if (vehicleMovementOut != null && vehicleMovementOut.Odometer != null)
                    {
                        OutOdometer = Convert.ToInt32(vehicleMovementOut.Odometer);
                    }
                    if (vehicleMovementIn != null && vehicleMovementIn.Odometer != null)
                    {
                        InOdometer = Convert.ToInt32(vehicleMovementIn.Odometer);
                    }
                    if (vehicleMovementIn != null && vehicleMovementOut != null)
                    {
                        RaHireGroup chargeHireGroup = rentalCharge.CalculateCharge(RACreatedDate, StartDate, EndDate,
                                                                                   Convert.ToDateTime(vehicleMovementOut.DtTime),
                                                                                   Convert.ToDateTime(vehicleMovementIn.DtTime), OperationID,
                                                                                   (item.AllocationStatusId == (short)AllocationStatusEnum.Upgraded ?
                                                                                    DesiredHireGroupID : item.HireGroupDetailId), OutOdometer, InOdometer, oTariffTypeList);

                        MapRaHireGroupCharge(item, chargeHireGroup);
                    }

                    List <RaHireGroupInsurance> RAHireGroupInsList = item.RaHireGroupInsurances.ToList();
                    foreach (RaHireGroupInsurance raHireGroupInsurance in RAHireGroupInsList)
                    {
                        if (raHireGroupInsurance.IsDeleted)
                        {
                            continue;
                        }


                        RaHireGroupInsurance insurance = insuranceRateService.CalculateCharge(RACreatedDate, Convert.ToDateTime(raHireGroupInsurance.StartDtTime),
                                                                                              Convert.ToDateTime(raHireGroupInsurance.EndDtTime), OperationID, item.HireGroupDetailId,
                                                                                              raHireGroupInsurance.InsuranceTypeId, oTariffTypeList);

                        MapRaHireGroupInsuranceCharge(raHireGroupInsurance, insurance);
                    }
                    //Discount Scheme change
                    RaHireGroupDiscount standardDiscount = item.RaHireGroupDiscounts.
                                                           FirstOrDefault(discount => discount.DiscountKey == (short)DiscountTypeEnum.StandardDiscount);
                    RaHireGroupDiscount seasonalDiscount = item.RaHireGroupDiscounts.
                                                           FirstOrDefault(discount => discount.DiscountKey == (short)DiscountTypeEnum.SeasonalDiscount);

                    if (seasonalDiscount != null)
                    {
                        seasonalDiscount.DiscountAmount = CalculateDiscount(item.TotalStandardCharge, seasonalDiscount.DiscountPerc);
                    }
                    if (standardDiscount != null)
                    {
                        standardDiscount.DiscountAmount = CalculateDiscount(item.TotalStandardCharge, standardDiscount.DiscountPerc);
                    }
                }
            }
        }