/// <summary>
        /// 折扣
        /// </summary>
        /// <param name="recordInfo"></param>
        public decimal Discount(ProcessRecord recordInfo, CRPreferentialDetails details)
        {
            decimal disMoney = 1;

            decimal.TryParse(details.PREFERENTIAL_CONTENT.ToString(), out disMoney);
            return(recordInfo.INOUT_RECODE.CHARGE_MONEY * (1 - disMoney));
        }
Beispiel #2
0
        /// <summary>
        /// 现金减免
        /// </summary>
        /// <param name="recordInfo"></param>
        public decimal Discount(ProcessRecord recordInfo, CRPreferentialDetails details)
        {
            decimal disMoney = 0;

            decimal.TryParse(details.PREFERENTIAL_CONTENT.ToString(), out disMoney);
            return(disMoney);
        }
        /// <summary>
        /// 计?算?优??惠Y值|ì
        /// </summary>
        /// <param name="recordInfo"></param>
        private void ReDiscount()
        {
            #region _____统a3计?优??惠Y信?息?é_____
            decimal totalperMoney = 0;
            /////////////////手工优惠//////////////////////////
            decimal perMoney = 0;
            string  Pident   = "manual-0001";
            decimal.TryParse(this.tbPreMoney.Text, out perMoney);
            ListDiscount.Remove(ListDiscount.Where(x => x.PREFERENTIA_IDENT == Pident).FirstOrDefault());
            decimal tbChargeMoney = chargeMoney;
            if (perMoney > 0 && perMoney <= tbChargeMoney)
            {
                CRPreferentialDetails details = new CRPreferentialDetails();
                details.PREFERENTIAL_NAME    = "手工优惠";
                details.MODEL_NAME           = "现金优惠";
                details.PREFERENTIA_IDENT    = Pident;
                details.PREFERENTIAL_CONTENT = perMoney;
                details.PREFERENTIAL_MONEY   = perMoney;
                details.PREFERENTIAL_TYPE    = enumPreferentialType.CASH_TICKET;
                ListDiscount.Add(details);
            }
            foreach (var temp in ListDiscount.OrderBy(x => x.CR_LEVEL))
            {
                var     discount  = EngineContext.Current.Resolve <IDiscount>(temp.PREFERENTIAL_TYPE.ToString());
                decimal tempMoney = discount.Discount(recordInfo, temp);
                totalperMoney          += tempMoney;
                temp.PREFERENTIAL_MONEY = tempMoney;
            }
            recordInfo.ListDiscount = ListDiscount;
            totalperMoney           = totalperMoney > chargeMoney ? chargeMoney : totalperMoney;
            this.lbChargeMoney.Text = (chargeMoney - totalperMoney) < 0 ? "0" : (chargeMoney - totalperMoney).ToString("#0.00");
            this.lbPreMoney.Text    = (PreMoney + totalperMoney).ToString("#0.00");
            #endregion

            #region ___优??惠Y打?¨°折?后¨?放¤?行D_____
            //优惠后需要缴纳的费用小于零,直接放行
            //if (recordInfo.INOUT_RECODE.CHARGE_MONEY <= 0)
            //{
            //    recordInfo.OpenGate = true;
            //    this.Close();
            //}
            dgDiscount.DataSource = ListDiscount.ToArray();

            recordInfo.INOUT_RECODE.DUE_MONEY    = decimal.Parse(this.lbDueMoney.Text.Trim());
            recordInfo.INOUT_RECODE.CHARGE_MONEY = decimal.Parse(this.lbChargeMoney.Text.Trim());
            recordInfo.INOUT_RECODE.PRE_MONEY    = decimal.Parse(this.lbPreMoney.Text.Trim());
            recordInfo.INOUT_RECODE.PRE_MONEY    = recordInfo.INOUT_RECODE.PRE_MONEY > recordInfo.INOUT_RECODE.DUE_MONEY ? recordInfo.INOUT_RECODE.DUE_MONEY : recordInfo.INOUT_RECODE.PRE_MONEY;
            this.tbQRcode.Text = string.Empty;
            ////////////////免费放行//////////////
            if (recordInfo.IsFree)
            {
                CRPreferentialDetails details = new CRPreferentialDetails();
                details.PREFERENTIAL_NAME    = "手工全免";
                details.MODEL_NAME           = "现金优惠";
                details.PREFERENTIA_IDENT    = Pident;
                details.PREFERENTIAL_CONTENT = recordInfo.INOUT_RECODE.DUE_MONEY;
                details.PREFERENTIAL_MONEY   = recordInfo.INOUT_RECODE.DUE_MONEY;
                details.PREFERENTIAL_TYPE    = enumPreferentialType.CASH_TICKET;
                ListDiscount.Add(details);
            }
            #endregion
        }
 public decimal Discount(ProcessRecord recordInfo, CRPreferentialDetails details)
 {
     return(details.PREFERENTIAL_CONTENT);
 }