Пример #1
0
        /// <summary>
        /// Calculate Insurance Charge for Ra Billing
        /// </summary>
        public RaHireGroupInsurance CalculateCharge(DateTime raRecCreatedDate, DateTime stDate, DateTime eDate, long operationId,
                                                    long hireGroupDetailId, short insuranceTypeId, List <TariffType> oTariffTypeList)
        {
            Helpers.PricingStrategy objPs = PricingStrategyFactory.GetPricingStrategy(raRecCreatedDate, stDate, eDate, operationId, oTariffTypeList);
            if (objPs == null)
            {
                throw new CaresException(Resources.RentalAgreement.RentalAgreement.TariffTypeNotDefinedForHireGroupInsurance, null);
            }

            List <InsuranceRt> insuranceRts = insuranceRtRepository.
                                              GetForRaBilling(objPs.TariffType.TariffTypeCode, hireGroupDetailId, insuranceTypeId, raRecCreatedDate).ToList();

            if (insuranceRts.Count == 0)
            {
                throw new CaresException(Resources.RentalAgreement.RentalAgreement.InsuranceRateNotDefinedForHireGroupInsurance);
            }

            InsuranceRt oInsRate = insuranceRts[0];

            return(objPs.CalculateInsuranceCharge(stDate, eDate, oInsRate));
        }
Пример #2
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);
        }
Пример #3
0
        /// <summary>
        /// Add/Edit Insurance Rate
        /// </summary>
        /// <param name="insuranceRtMain"></param>
        /// <returns></returns>
        public InsuranceRtMainContent SaveInsuranceRate(InsuranceRtMain insuranceRtMain)
        {
            TariffType tariffType = tariffTypeRepository.Find(long.Parse(insuranceRtMain.TariffTypeCode));

            insuranceRtMain.TariffTypeCode = tariffType.TariffTypeCode;

            InsuranceRtMain insuranceRtMainDbVersion = insuranceRtMainRepository.Find(insuranceRtMain.InsuranceRtMainId);

            #region Add
            if (insuranceRtMainDbVersion == null)
            {
                ValidateInsuranceRate(insuranceRtMain, true);
                insuranceRtMain.UserDomainKey    = insuranceRtMainRepository.UserDomainKey;
                insuranceRtMain.IsActive         = true;
                insuranceRtMain.IsDeleted        = false;
                insuranceRtMain.IsPrivate        = false;
                insuranceRtMain.IsReadOnly       = false;
                insuranceRtMain.RecCreatedDt     = DateTime.Now;
                insuranceRtMain.RecLastUpdatedDt = DateTime.Now;
                insuranceRtMain.RecCreatedBy     = insuranceRtMainRepository.LoggedInUserIdentity;
                insuranceRtMain.RecLastUpdatedBy = insuranceRtMainRepository.LoggedInUserIdentity;
                insuranceRtMain.RowVersion       = 0;
                //insuranceRtMainRepository.Add(insuranceRtMain);
                //set child (Insurance Rate in Insurance Rate Main) properties

                #region Insurance Rate in Insurance Rate Main

                if (insuranceRtMain.InsuranceRates != null)
                {
                    // set properties
                    foreach (InsuranceRt item in insuranceRtMain.InsuranceRates)
                    {
                        item.IsActive         = true;
                        item.IsDeleted        = false;
                        item.IsPrivate        = false;
                        item.IsReadOnly       = false;
                        item.RecCreatedDt     = DateTime.Now;
                        item.RecLastUpdatedDt = DateTime.Now;
                        item.RecCreatedBy     = insuranceRtMainRepository.LoggedInUserIdentity;
                        item.RecLastUpdatedBy = insuranceRtMainRepository.LoggedInUserIdentity;
                        item.UserDomainKey    = insuranceRtMainRepository.UserDomainKey;
                    }
                }

                #endregion

                insuranceRtMainRepository.Add(insuranceRtMain);
                insuranceRtMainRepository.SaveChanges();
            }
            #endregion
            #region Edit
            else
            {
                ValidateInsuranceRate(insuranceRtMain, false);
                insuranceRtMainDbVersion.RecLastUpdatedDt = DateTime.Now;
                insuranceRtMainDbVersion.RecLastUpdatedBy = insuranceRtMainRepository.LoggedInUserIdentity;
                insuranceRtMainDbVersion.StartDt          = insuranceRtMain.StartDt;

                //add new Insurance Rate items
                if (insuranceRtMain.InsuranceRates != null)
                {
                    foreach (InsuranceRt insuranceRt in insuranceRtMain.InsuranceRates)
                    {
                        if (
                            insuranceRtMainDbVersion.InsuranceRates.All(
                                x => x.InsuranceRtId != insuranceRt.InsuranceRtId) ||
                            insuranceRt.InsuranceRtId == 0)
                        {
                            // set properties
                            insuranceRt.IsActive          = true;
                            insuranceRt.IsDeleted         = false;
                            insuranceRt.IsPrivate         = false;
                            insuranceRt.IsReadOnly        = false;
                            insuranceRt.RecCreatedDt      = DateTime.Now;
                            insuranceRt.RecLastUpdatedDt  = DateTime.Now;
                            insuranceRt.RecCreatedBy      = insuranceRtMainRepository.LoggedInUserIdentity;
                            insuranceRt.RecLastUpdatedBy  = insuranceRtMainRepository.LoggedInUserIdentity;
                            insuranceRt.UserDomainKey     = insuranceRtMainRepository.UserDomainKey;
                            insuranceRt.InsuranceRtMainId = insuranceRtMain.InsuranceRtMainId;
                            insuranceRtMainDbVersion.InsuranceRates.Add(insuranceRt);
                        }
                        else
                        {
                            insuranceRt.IsActive          = true;
                            insuranceRt.IsDeleted         = false;
                            insuranceRt.IsPrivate         = false;
                            insuranceRt.IsReadOnly        = false;
                            insuranceRt.RecCreatedDt      = DateTime.Now;
                            insuranceRt.RecLastUpdatedDt  = DateTime.Now;
                            insuranceRt.RecCreatedBy      = insuranceRtMainRepository.LoggedInUserIdentity;
                            insuranceRt.RecLastUpdatedBy  = insuranceRtMainRepository.LoggedInUserIdentity;
                            insuranceRt.UserDomainKey     = insuranceRtMainRepository.UserDomainKey;
                            insuranceRt.InsuranceRtMainId = insuranceRtMain.InsuranceRtMainId;
                            long oldRecordId = insuranceRt.InsuranceRtId;
                            insuranceRt.InsuranceRtId  = 0;
                            insuranceRt.RevisionNumber = insuranceRt.RevisionNumber + 1;
                            insuranceRtRepository.Add(insuranceRt);
                            insuranceRtRepository.SaveChanges();
                            InsuranceRt oldInsuranceRt = insuranceRtRepository.Find(oldRecordId);
                            oldInsuranceRt.ChildInsuranceRtId = insuranceRt.InsuranceRtId;
                            insuranceRtRepository.SaveChanges();
                        }
                    }
                }
            }

            #endregion
            insuranceRtMainRepository.SaveChanges();
            return(new InsuranceRtMainContent
            {
                TariffTypeCodeName = tariffType.TariffTypeCode + " - " + tariffType.TariffTypeName,
                TariffTypeId = tariffType.TariffTypeId,
                OperationId = tariffType.Operation.OperationId,
                OperationCodeName = tariffType.Operation.OperationCode + " - " + tariffType.Operation.OperationName,
                InsuranceRtMainId = insuranceRtMain.InsuranceRtMainId,
                InsuranceRtMainCode = insuranceRtMain.InsuranceRtMainCode,
                InsuranceRtName = insuranceRtMain.InsuranceRtMainCode,
                InsuranceRtMainDescription = insuranceRtMain.InsuranceRtMainDescription,
                StartDt = insuranceRtMain.StartDt
            });
        }
Пример #4
0
 public abstract RaHireGroupInsurance CalculateInsuranceCharge(DateTime StartDate, DateTime EndDate, InsuranceRt InsRate);