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; }
/// <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 }); }
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); }
/// <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); } } } }