Exemplo n.º 1
0
        /// <summary>
        /// Calculate Ra Driver Charge
        /// </summary>
        public RaDriver CalculateCharge(DateTime rACreatedDate, DateTime startDtTime, DateTime endDtTime, long desigGradeId, bool isChauffer,
                                        long operationId, List <TariffType> oTariffTypeList)
        {
            PricingStrategy objPs = PricingStrategyFactory.GetPricingStrategy(rACreatedDate, startDtTime, endDtTime, operationId, oTariffTypeList);

            if (objPs == null)
            {
                throw new CaresException(Resources.RentalAgreement.RentalAgreement.TariffTypeNotDefinedForRaDriver, null);
            }

            RaDriver tmp;

            if (isChauffer)
            {
                List <ChaufferCharge> chaufferCharges = chaufferChargeRepository.
                                                        GetForRaBilling(objPs.TariffType.TariffTypeCode, Convert.ToInt64(desigGradeId), rACreatedDate).ToList();

                if (chaufferCharges.Count == 0)
                {
                    throw new CaresException(Resources.RentalAgreement.RentalAgreement.ChaufferRateNotDefinedForChauffer, null);
                }

                ChaufferCharge oChfRate = chaufferCharges[0];

                tmp = objPs.CalculateChaufferCharge(startDtTime, endDtTime, oChfRate);
            }
            else
            {
                List <AdditionalDriverCharge> additionalDriverCharges = additionalDriverChargeRepository.
                                                                        GetForRaBilling(objPs.TariffType.TariffTypeCode, rACreatedDate).ToList();

                if (additionalDriverCharges.Count == 0)
                {
                    throw new CaresException(Resources.RentalAgreement.RentalAgreement.DriverChargeNotDefined, null);
                }

                AdditionalDriverCharge oAddDrvRate = additionalDriverCharges[0];

                tmp = objPs.CalculateAddDriverCharge(startDtTime, endDtTime, oAddDrvRate);
            }

            return(tmp);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Save Chauffer Charge Main
        /// </summary>
        /// <param name="chaufferChargeMain"></param>
        /// <returns></returns>
        public ChaufferChargeMainContent SaveChaufferCharge(ChaufferChargeMain chaufferChargeMain)
        {
            ChaufferChargeMain chaufferChargeMainDbVersion =
                chaufferChargeMainRepository.Find(chaufferChargeMain.ChaufferChargeMainId);
            TariffType tariffType = tariffTypeRepository.Find(long.Parse(chaufferChargeMain.TariffTypeCode));

            chaufferChargeMain.TariffTypeCode = tariffType.TariffTypeCode;
            if (chaufferChargeMainDbVersion == null) //Add Case
            {
                //Validate Chauffer Charge Main
                ChaufferChargeValidation(chaufferChargeMain, true);
                chaufferChargeMain.IsActive         = true;
                chaufferChargeMain.IsDeleted        =
                    chaufferChargeMain.IsPrivate    = chaufferChargeMain.IsReadOnly = false;
                chaufferChargeMain.RecLastUpdatedBy =
                    chaufferChargeMain.RecCreatedBy = chaufferChargeMainRepository.LoggedInUserIdentity;
                chaufferChargeMain.RecCreatedDt     = chaufferChargeMain.RecLastUpdatedDt = DateTime.Now;
                chaufferChargeMain.RowVersion       = 0;
                chaufferChargeMain.UserDomainKey    = chaufferChargeMainRepository.UserDomainKey;

                if (chaufferChargeMain.ChaufferCharges != null)
                {
                    foreach (var item in chaufferChargeMain.ChaufferCharges)
                    {
                        item.IsActive         = true;
                        item.IsDeleted        = item.IsPrivate = item.IsReadOnly = false;
                        item.RecLastUpdatedBy = item.RecCreatedBy = chaufferChargeMainRepository.LoggedInUserIdentity;
                        item.RecCreatedDt     = item.RecLastUpdatedDt = DateTime.Now;
                        item.RowVersion       = 0;
                        item.RevisionNumber   = 0;
                        item.UserDomainKey    = chaufferChargeMainRepository.UserDomainKey;
                    }
                }
                chaufferChargeMainRepository.Add(chaufferChargeMain);
            }
            else //Update
            {
                chaufferChargeMainDbVersion.RecLastUpdatedBy = chaufferChargeMainRepository.LoggedInUserIdentity;
                chaufferChargeMainDbVersion.RecLastUpdatedDt = DateTime.Now;
                chaufferChargeMainDbVersion.StartDt          = chaufferChargeMain.StartDt;
                if (chaufferChargeMain.ChaufferCharges != null)
                {
                    //Validate Chauffer Charge Main
                    ChaufferChargeValidation(chaufferChargeMain, false);

                    foreach (var item in chaufferChargeMain.ChaufferCharges)
                    {
                        if (
                            chaufferChargeMainDbVersion.ChaufferCharges.All(
                                x =>
                                x.ChaufferChargeId != item.ChaufferChargeId ||
                                item.ChaufferChargeId == 0))
                        {
                            item.IsActive         = true;
                            item.IsDeleted        = item.IsPrivate = item.IsReadOnly = false;
                            item.RecLastUpdatedBy =
                                item.RecCreatedBy = chaufferChargeMainRepository.LoggedInUserIdentity;
                            item.RecCreatedDt     = item.RecLastUpdatedDt = DateTime.Now;
                            item.RowVersion       = 0;
                            item.RevisionNumber   = 0;
                            item.UserDomainKey    = chaufferChargeMainRepository.UserDomainKey;
                            chaufferChargeMainDbVersion.ChaufferCharges.Add(item);
                        }
                        else
                        {
                            if (chaufferChargeMainDbVersion.ChaufferCharges.Any(
                                    x =>
                                    x.ChaufferChargeId == item.ChaufferChargeId))
                            {
                                ChaufferCharge chaufferChargeDbVesion =
                                    chaufferChargeMainDbVersion.ChaufferCharges.First(
                                        x => x.ChaufferChargeId == item.ChaufferChargeId);
                                if (chaufferChargeDbVesion.DesigGradeId != item.DesigGradeId ||
                                    chaufferChargeDbVesion.StartDt != item.StartDt
                                    // ReSharper disable once CompareOfFloatsByEqualityOperator
                                    || chaufferChargeDbVesion.ChaufferChargeRate != item.ChaufferChargeRate)
                                {
                                    item.IsActive             = true;
                                    item.IsDeleted            = item.IsPrivate = item.IsReadOnly = false;
                                    item.RecLastUpdatedBy     =
                                        item.RecCreatedBy     = chaufferChargeMainRepository.LoggedInUserIdentity;
                                    item.RecCreatedDt         = item.RecLastUpdatedDt = DateTime.Now;
                                    item.RowVersion           = 0;
                                    item.ChaufferChargeMainId = chaufferChargeMain.ChaufferChargeMainId;
                                    item.RevisionNumber       = chaufferChargeDbVesion.RevisionNumber + 1;
                                    item.ChaufferChargeId     = 0;
                                    item.UserDomainKey        = chaufferChargeMainRepository.UserDomainKey;
                                    chaufferChargeRepository.Add(item);
                                    chaufferChargeRepository.SaveChanges();
                                    chaufferChargeDbVesion.ChildChaufferChargeId = item.ChaufferChargeMainId;
                                }
                            }
                        }
                    }
                }
            }
            chaufferChargeMainRepository.SaveChanges();
            return(new ChaufferChargeMainContent
            {
                ChaufferChargeMainId = chaufferChargeMain.ChaufferChargeMainId,
                Code = chaufferChargeMain.ChaufferChargeMainCode,
                Name = chaufferChargeMain.ChaufferChargeMainName,
                Description = chaufferChargeMain.ChaufferChargeMainDescription,
                StartDate = chaufferChargeMain.StartDt,
                TariffTypeId = tariffType.TariffTypeId,
                CompanyId = tariffType.Operation.Department.Company.CompanyId,
                CompanyCodeName = tariffType.Operation.Department.Company.CompanyCode + " - " + tariffType.Operation.Department.Company.CompanyName,
                DepartmentId = tariffType.Operation.Department.DepartmentId,
                TariffTypeCodeName = tariffType.TariffTypeCode + " - " + tariffType.TariffTypeName,
                OperationId = tariffType.OperationId,
                OperationCodeName = tariffType.Operation.OperationCode + " - " + tariffType.Operation.OperationName,
            });
        }
Exemplo n.º 3
0
        public override RaDriver CalculateChaufferCharge(DateTime StartDate, DateTime EndDate, ChaufferCharge ChfRate)
        {
            RaDriver oRADriver = null;
            //calculate total rental duration as a time span object
            TimeSpan dtSpan = EndDate - StartDate;

            //convert rental duration to minutes for standardization
            float ChaufferDurationInMinutes = 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
            oRADriver            = new RaDriver();
            oRADriver.TariffType = this.TariffType.TariffTypeCode;
            if (ChaufferDurationInMinutes >= TariffDurationFrom && ChaufferDurationInMinutes <= TariffDurationTo)
            {
                oRADriver.Rate          = ChfRate.ChaufferChargeRate;
                oRADriver.TotalCharge   = ChfRate.ChaufferChargeRate;
                oRADriver.ChargedDay    = dtSpan.Days;
                oRADriver.ChargedHour   = dtSpan.Hours;
                oRADriver.ChargedMinute = dtSpan.Minutes;
            }
            else
            {
                float ChargeDuration = GetDurationInMinutes(dtSpan, Convert.ToInt32(TariffType.MeasurementUnitId));
                oRADriver.TotalCharge = (float)Math.Round((ChargeDuration / TariffDurationTo) * ChfRate.ChaufferChargeRate, base.DecimalRounding, MidpointRounding.AwayFromZero);

                oRADriver.Rate = ChfRate.ChaufferChargeRate;
                //excess milage charge for edit case
                oRADriver.ChargedDay    = dtSpan.Days;
                oRADriver.ChargedHour   = dtSpan.Hours;
                oRADriver.ChargedMinute = dtSpan.Minutes;
            }
            return(oRADriver);
        }
Exemplo n.º 4
0
 public abstract RaDriver CalculateChaufferCharge(DateTime StartDate, DateTime EndDate, ChaufferCharge ChfRate);