Exemple #1
0
        /// <summary>
        /// 生成卡片外车场停车收费记录
        /// </summary>
        /// <param name="card">卡片</param>
        /// <param name="ts">停车场费率设置</param>
        /// <param name="tos" >收费设置选项</param>
        /// <param name="chargeDateTime">收费时间</param>
        /// <returns></returns>
        public static CardPaymentInfo CreateCardPaymentRecord(CardInfo card, TariffSetting ts, Byte carType, DateTime chargeDateTime)
        {
            CardPaymentInfo cardPayment = new CardPaymentInfo();

            cardPayment.CardID          = card.CardID;
            cardPayment.OwnerName       = card.OwnerName;
            cardPayment.CardCertificate = card.CardCertificate;
            cardPayment.CarPlate        = card.LastCarPlate;
            cardPayment.CardType        = card.CardType;
            cardPayment.CarType         = carType;
            cardPayment.EnterDateTime   = card.LastDateTime;
            cardPayment.ChargeDateTime  = chargeDateTime;

            //如果卡片的已缴费用与收费记录不一致,以卡片的数据为准
            if ((cardPayment.LastTotalFee + cardPayment.LastTotalDiscount) != card.TotalPaidFee)
            {
                cardPayment.LastTotalPaid     = card.TotalPaidFee;
                cardPayment.LastTotalDiscount = 0;
                cardPayment.LastStationID     = string.Empty;
            }

            ParkAccountsInfo parkFee = ts.CalculateCardParkFee(card, carType, chargeDateTime);

            cardPayment.Accounts   = parkFee.Accounts;
            cardPayment.TariffType = parkFee.TariffType;

            cardPayment.ParkFee     = parkFee.ParkFee;
            cardPayment.PaymentCode = PaymentCode.Computer;
            return(cardPayment);
        }
Exemple #2
0
        /// <summary>
        /// 生成卡片外车场停车收费记录
        /// </summary>
        /// <param name="card">卡片</param>
        /// <param name="ts">停车场费率设置</param>
        /// <param name="tos" >收费设置选项</param>
        /// <param name="chargeDateTime">收费时间</param>
        /// <returns></returns>
        public static CardPaymentInfo CreateCardPaymentRecord(CardInfo card, TariffSetting ts, Byte carType, DateTime chargeDateTime)
        {
            CardPaymentInfo cardPayment = new CardPaymentInfo();

            cardPayment.CardID          = card.CardID;
            cardPayment.OwnerName       = card.OwnerName;
            cardPayment.CardCertificate = card.CardCertificate;
            cardPayment.CarPlate        = card.IsCarPlateList ? card.CarPlate : card.LastCarPlate;//如果是名单车牌,以车牌号为准
            cardPayment.CardType        = card.CardType;
            cardPayment.CarType         = carType;
            cardPayment.EnterDateTime   = card.LastDateTime;
            cardPayment.ChargeDateTime  = chargeDateTime;

            //计算应收费用
            if (card.LastPayment != null)
            {
                cardPayment.LastTotalPaid     = card.LastPayment.TotalPaid;
                cardPayment.LastTotalDiscount = card.LastPayment.TotalDiscount;
                cardPayment.LastStationID     = card.LastPayment.StationID;
            }
            //如果卡片的已缴费用与收费记录不一致,以卡片的数据为准
            if (cardPayment.LastTotalFee != card.TotalPaidFee)
            {
                cardPayment.LastTotalPaid     = card.TotalPaidFee;
                cardPayment.LastTotalDiscount = 0;
                cardPayment.LastStationID     = string.Empty;
            }

            ParkAccountsInfo parkFee = ts.CalculateCardParkFee(card, carType, chargeDateTime);

            cardPayment.Accounts   = parkFee.Accounts;
            cardPayment.TariffType = parkFee.TariffType;

            cardPayment.ParkFee     = parkFee.ParkFee;
            cardPayment.PaymentCode = PaymentCode.Computer;

            if (card.EnableHotelApp && card.FreeDateTime.HasValue)
            {
                cardPayment.Memo = string.Format("{0} {1}", Resouce.Resource1.CardPaymentInfoFactory_Free, card.FreeDateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
            }

            return(cardPayment);
        }
        public static CardEventDetailReport CreateExitEvent(CardInfo card, EntranceInfo entrance, TariffSetting ts)
        {
            CardEventDetailReport report = new CardEventDetailReport();
            DateTime eventDateTime       = DateTime.Now;

            report.ParkID   = entrance.ParkID;
            report.Address  = entrance.Address;
            report.Entrance = entrance;
            report.CardType = card.CardType;
            report.CarType  = card.CarType;
            if (!card.CardType.IsMonthCard)
            {
                ParkAccountsInfo parkFee = TariffSetting.Current.CalculateCardParkFee(card, card.CarType, eventDateTime);
                report.Accounts   = parkFee.Accounts;
                report.TariffType = parkFee.TariffType;
            }
            report.CardID        = card.CardID;
            report.EventDateTime = eventDateTime;
            report.EventStatus   = 0;
            report.LastAddress   = card.LastAddress;
            report.LastDateTime  = card.LastDateTime;
            report.CarPlate      = card.LastCarPlate;
            if (card.CardType.IsPrepayCard)
            {
                if (card.Balance < report.Accounts) //余额不足,当成临时卡收费
                {
                    report.ParkingStatus = card.ParkingStatus | ParkingStatus.BIT_AsTempCard;
                    report.Balance       = card.Balance;
                }
                else
                {
                    report.ParkingStatus = card.ParkingStatus;
                    report.Balance       = card.Balance - report.Accounts;
                }
            }
            else
            {
                report.ParkingStatus = card.ParkingStatus;
            }
            return(report);
        }
Exemple #4
0
        public static CardPaymentInfo CreateCardPaymentRecord(int?parkID, CardInfo card, TariffSetting ts, Byte carType, DateTime chargeDateTime)
        {
            CardPaymentInfo cardPayment = new CardPaymentInfo();

            cardPayment.CardID          = card.CardID;
            cardPayment.OwnerName       = card.OwnerName;
            cardPayment.CardCertificate = card.CardCertificate;
            cardPayment.CarPlate        = card.IsCarPlateList ? card.CarPlate : card.LastCarPlate;//如果是车牌名单,车牌号码为名单车牌
            cardPayment.CardType        = card.CardType;
            cardPayment.CarType         = carType;
            cardPayment.EnterDateTime   = card.LastDateTime;
            cardPayment.ChargeDateTime  = chargeDateTime;

            //计算应收费用
            if (card.LastPayment != null)
            {
                cardPayment.LastTotalPaid     = card.LastPayment.TotalPaid;
                cardPayment.LastTotalDiscount = card.LastPayment.TotalDiscount;
                cardPayment.LastStationID     = card.LastPayment.StationID;
            }
            //如果卡片的已缴费用与收费记录不一致,以卡片的数据为准
            if (cardPayment.LastTotalFee != card.TotalPaidFee)
            {
                cardPayment.LastTotalPaid     = card.TotalPaidFee;
                cardPayment.LastTotalDiscount = 0;
                cardPayment.LastStationID     = string.Empty;
            }

            ParkAccountsInfo parkFee = ts.CalculateCardParkFee(parkID, card, carType, chargeDateTime);

            cardPayment.Accounts   = parkFee.Accounts;
            cardPayment.TariffType = parkFee.TariffType;

            cardPayment.ParkFee     = parkFee.ParkFee;
            cardPayment.PaymentCode = PaymentCode.Computer;

            //从入场时间截止本次收费时间的优惠金额
            int     currentWorkHour = 0;                                                            //本次优惠时数
            int     usedHour        = card.LastPayment != null ? card.LastPayment.DiscountHour : 0; //已使用的优惠时数
            decimal discountMoney   = ts.CalculateCardDiscountMoney(parkID, card, carType, chargeDateTime, usedHour, out currentWorkHour);

            //如果计算出的优惠金额大于应收费用时,优惠金额为应收费用
            cardPayment.Discount         = cardPayment.Accounts < discountMoney ? cardPayment.Accounts : discountMoney;
            cardPayment.DiscountHour     = usedHour + currentWorkHour; //累计已优惠时数=已使用优惠时数+本次优惠时数
            cardPayment.CurrDiscountHour = currentWorkHour;            //本次优惠时数

            //cardPayment.Discount = (discountMoney - cardPayment.LastTotalDiscount) > parkFee.Accounts ? parkFee.Accounts : (discountMoney - cardPayment.LastTotalDiscount) > 0 ? (discountMoney - cardPayment.LastTotalDiscount) : 0; //本次折扣额 = 【入场~收费时间】优惠金额-累计折扣
            //cardPayment.DiscountHour = currentWorkHour; //累计已优惠时数=计算优惠时数
            //if (card.LastPayment != null)
            //    cardPayment.CurrDiscountHour = cardPayment.DiscountHour - card.LastPayment.CurrHasPaidDiscountHour;
            //else
            //    cardPayment.CurrDiscountHour = currentWorkHour;


            if (card.EnableHotelApp && card.FreeDateTime.HasValue)
            {
                cardPayment.Memo = string.Format("{0} {1};", Resouce.Resource1.CardPaymentInfoFactory_Free, card.FreeDateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
            }

            if (card.DiscountHour > 0 && card.PreferentialTime.HasValue)
            {
                //yyyy-MM-dd HH:mm:ss 优惠 n 小时
                cardPayment.Memo += string.Format("{0} {1} {2} {3};", card.PreferentialTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), Resouce.Resource1.Preferential, card.DiscountHour, Resouce.Resource1.Hour);
            }

            return(cardPayment);
        }