Ejemplo n.º 1
0
        /// <summary>
        /// 账单结算保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            tm_TabieUsingInfo tabieUsingInfo = Core.Container.Instance.Resolve <IServiceTabieUsingInfo>().GetEntity(TabieUsingID);
            //保存就餐结算完成时间
            string strPayType = rblPayType.SelectedValue;    //支付方式

            //检查是否有原付款信息,有删除原付款信息
            IList <ICriterion> qrylist = new List <ICriterion>();

            qrylist.Add(Expression.Eq("TabieUsingID", tabieUsingInfo.ID));
            IList <tm_TabiePayInfo> PayEntityList = Core.Container.Instance.Resolve <IServiceTabiePayInfo>().GetAllByKeys(qrylist);

            foreach (tm_TabiePayInfo payObj in PayEntityList)
            {
                Core.Container.Instance.Resolve <IServiceTabiePayInfo>().Delete(payObj);
            }

            //结算处理
            if (strPayType == "1")                           //正常支付结算
            {
                //保存结算付款信息
                decimal?        Amount    = 0;
                tm_TabiePayInfo PayEntity = new tm_TabiePayInfo();
                PayEntity.PayTime      = tabieUsingInfo.ClearTime;
                PayEntity.TabieUsingID = TabieUsingID;

                if (!string.IsNullOrEmpty(nbxVip.Text) && decimal.Parse(nbxVip.Text) > 0)   //会员卡支付
                {
                    //检查会员卡余额
                    if (decimal.Parse(nbxVip.Text) > decimal.Parse(lblVipMoney.Text))
                    {
                        Alert.Show("会员卡余额不足!");
                        return;
                    }
                    PayEntity.VipcardMoneys = decimal.Parse(nbxVip.Text);
                    PayEntity.PayWayVipcard = "1";
                    PayEntity.VipCardNO     = txtVip.Text;
                    Amount += decimal.Parse(nbxVip.Text);
                }
                if (!string.IsNullOrEmpty(nbCash.Text) && decimal.Parse(nbCash.Text) > 0)   //现金支付
                {
                    PayEntity.CashMoneys = decimal.Parse(nbCash.Text);
                    PayEntity.PayWayCash = "1";
                    Amount += decimal.Parse(nbCash.Text);
                }
                if (!string.IsNullOrEmpty(nbCard.Text) && decimal.Parse(nbCard.Text) > 0)   //刷卡支付
                {
                    PayEntity.CreditMoneys = decimal.Parse(nbCard.Text);
                    PayEntity.PayWayCredit = "1";
                    Amount += decimal.Parse(nbCard.Text);
                }
                if (!string.IsNullOrEmpty(nbWX.Text) && decimal.Parse(nbWX.Text) > 0)       //微信支付
                {
                    PayEntity.OnlineMoneys = decimal.Parse(nbWX.Text);
                    PayEntity.PayWayOnline = "1";
                    Amount += decimal.Parse(nbWX.Text);
                }
                if (!string.IsNullOrEmpty(nbZFB.Text) && decimal.Parse(nbZFB.Text) > 0)     //支付宝支付
                {
                    PayEntity.ZFBMoneys = decimal.Parse(nbZFB.Text);
                    PayEntity.PayWayZFB = "1";
                    Amount += decimal.Parse(nbZFB.Text);
                }
                if (!string.IsNullOrEmpty(nbML.Text) && decimal.Parse(nbML.Text) > 0)       //抹零金额
                {
                    tabieUsingInfo.Erasing = decimal.Parse(nbML.Text);
                    Amount += decimal.Parse(nbML.Text);
                }
                if (!string.IsNullOrEmpty(tabieUsingInfo.GroupName))                        //团购金额
                {
                    PayEntity.GroupCardNO = tabieUsingInfo.GroupCardNO;
                    PayEntity.PayWayGroup = "1";
                    PayEntity.GroupMoneys = tabieUsingInfo.GroupMoneys;
                }
                //判断填写的实际支付金额和应付金额是否一致
                if (Amount != tabieUsingInfo.FactPrice)
                {
                    Alert.ShowInTop("录入的金额总数与实付金额不匹配", "错误提示", MessageBoxIcon.Warning);
                    return;
                }
                //保存结算支付信息
                Core.Container.Instance.Resolve <IServiceTabiePayInfo>().Create(PayEntity);
                //设置就餐信息状态为已结账
                tabieUsingInfo.OrderState = "2";
            }
            else if (strPayType == "2")                //免单处理
            {
                tabieUsingInfo.FreeReason = ddlFreeReason.SelectedValue;
                //设置就餐信息状态为免单
                tabieUsingInfo.OrderState = "3";
            }
            else                                       //挂账处理
            {
                if (ddlChargeReason.SelectedValue.Equals("0") && string.IsNullOrEmpty(txbChargeReason.Text))
                {
                    Alert.ShowInTop("请选择或填入挂账人信息", "错误提示", MessageBoxIcon.Warning);
                    return;
                }
                //如果是手填的挂账人,保存
                if (!string.IsNullOrEmpty(txbChargeReason.Text.Trim()))
                {
                    tabieUsingInfo.Charge = txbChargeReason.Text.Trim();
                    //如果是填写的挂账人,保存到挂账人信息表
                    tm_Charge chargeInfo = new tm_Charge();
                    chargeInfo.ChargeName = txbChargeReason.Text.Trim();
                    chargeInfo.Remark     = txbChargeReason.Text.Trim();
                    Core.Container.Instance.Resolve <IServiceCharge>().Create(chargeInfo);
                }
                else
                {
                    tabieUsingInfo.Charge = ddlChargeReason.SelectedText;
                }
                //设置就餐信息状态为挂账
                tabieUsingInfo.OrderState = "4";
            }
            Core.Container.Instance.Resolve <IServiceTabieUsingInfo>().Update(tabieUsingInfo);
            //单元结算单
            LocalPrint();

            //检查系统设置是否做库存处理
            bool IsStock = bool.Parse(ConfigurationManager.AppSettings["IsStock"]);

            if (IsStock)
            {
                //库存冲减
                StockProcess();
            }
            //清台并返回餐台列表
            CloseTabie();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 账单结算保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            //获取合并餐台信息
            List <ICriterion> qrylist = new List <ICriterion>();

            qrylist.Add(Expression.Eq("MergeNO", MergeNO));
            IList <tm_TabieUsingInfo> listTabieUsingInfo = Core.Container.Instance.Resolve <IServiceTabieUsingInfo>().Query(qrylist);

            string        strPayType  = rblPayType.SelectedValue; //支付方式
            StringBuilder groupCard   = new StringBuilder();
            decimal       groupMoney  = 0;
            StringBuilder groupName   = new StringBuilder();
            decimal       totalAmount = 0;

            //检查是否有原付款信息,有删除原付款信息
            qrylist = new List <ICriterion>();
            qrylist.Add(Expression.Eq("MergeNO", MergeNO));
            IList <tm_TabiePayInfo> PayEntityList = Core.Container.Instance.Resolve <IServiceTabiePayInfo>().GetAllByKeys(qrylist);

            foreach (tm_TabiePayInfo payObj in PayEntityList)
            {
                Core.Container.Instance.Resolve <IServiceTabiePayInfo>().Delete(payObj);
            }

            int index = 0;

            //记录付款信息
            foreach (tm_TabieUsingInfo tabieUsingInfo in listTabieUsingInfo)
            {
                //保存就餐结算完成时间
                tabieUsingInfo.ClearTime = DateTime.Parse(dltCloseTabie.Text);
                //结算处理
                if (strPayType == "1")                           //正常支付结算
                {
                    if (index == 0)
                    {
                        //保存抹零金额,计入第一个餐台信息中
                        if (!string.IsNullOrEmpty(nbML.Text) && decimal.Parse(nbML.Text) > 0)
                        {
                            tabieUsingInfo.Erasing = decimal.Parse(nbML.Text);
                        }
                    }
                    //设置就餐信息状态为已结账
                    tabieUsingInfo.OrderState = "2";
                }
                else if (strPayType == "2")                //免单处理
                {
                    tabieUsingInfo.FreeReason = ddlFreeReason.SelectedValue;
                    //设置就餐信息状态为免单
                    tabieUsingInfo.OrderState = "3";
                }
                else                                       //挂账处理
                {
                    if (ddlChargeReason.SelectedValue.Equals("0") && string.IsNullOrEmpty(txbChargeReason.Text))
                    {
                        Alert.ShowInTop("请选择或填入挂账人信息", "错误提示", MessageBoxIcon.Warning);
                        return;
                    }
                    //如果是手填的挂账人,保存
                    if (!string.IsNullOrEmpty(txbChargeReason.Text.Trim()))
                    {
                        tabieUsingInfo.Charge = txbChargeReason.Text.Trim();
                        //如果是填写的挂账人,保存到挂账人信息表
                        tm_Charge chargeInfo = new tm_Charge();
                        chargeInfo.ChargeName = txbChargeReason.Text.Trim();
                        chargeInfo.Remark     = txbChargeReason.Text.Trim();
                        Core.Container.Instance.Resolve <IServiceCharge>().Create(chargeInfo);
                    }
                    else
                    {
                        tabieUsingInfo.Charge = ddlChargeReason.SelectedText;
                    }
                    //设置就餐信息状态为挂账
                    tabieUsingInfo.OrderState = "4";
                }
                Core.Container.Instance.Resolve <IServiceTabieUsingInfo>().Update(tabieUsingInfo);

                //团购金额
                if (!string.IsNullOrEmpty(tabieUsingInfo.GroupName))
                {
                    groupCard.AppendFormat("{0},", tabieUsingInfo.GroupCardNO);
                    groupMoney += tabieUsingInfo.GroupMoneys;
                    groupName.AppendFormat("{0},", tabieUsingInfo.GroupName);
                }
                ////计算应付总额
                //totalAmount += tabieUsingInfo.FactPrice;
                index++;
            }
            //计算应付总额
            totalAmount = decimal.Parse(labFactPrice.Text);
            //-----------------------------结算处理-----------------------------------
            if (strPayType == "1")                           //正常支付结算
            {
                //保存结算付款信息
                decimal?        Amount    = 0;
                tm_TabiePayInfo PayEntity = new tm_TabiePayInfo();
                PayEntity.PayTime      = DateTime.Parse(dltCloseTabie.Text);
                PayEntity.TabieUsingID = 0;
                PayEntity.MergeNO      = MergeNO;

                if (!string.IsNullOrEmpty(nbxVip.Text) && decimal.Parse(nbxVip.Text) > 0)   //会员卡支付
                {
                    //检查会员卡余额
                    if (decimal.Parse(nbxVip.Text) > decimal.Parse(lblVipMoney.Text))
                    {
                        Alert.Show("会员卡余额不足!");
                        return;
                    }

                    PayEntity.VipcardMoneys = decimal.Parse(nbxVip.Text);
                    PayEntity.PayWayVipcard = "1";
                    PayEntity.VipCardNO     = txtVip.Text;
                    Amount += decimal.Parse(nbxVip.Text);
                }
                if (!string.IsNullOrEmpty(nbCash.Text) && decimal.Parse(nbCash.Text) > 0)   //现金支付
                {
                    PayEntity.CashMoneys = decimal.Parse(nbCash.Text);
                    PayEntity.PayWayCash = "1";
                    Amount += decimal.Parse(nbCash.Text);
                }
                if (!string.IsNullOrEmpty(nbCard.Text) && decimal.Parse(nbCard.Text) > 0)   //刷卡支付
                {
                    PayEntity.CreditMoneys = decimal.Parse(nbCard.Text);
                    PayEntity.PayWayCredit = "1";
                    Amount += decimal.Parse(nbCard.Text);
                }
                if (!string.IsNullOrEmpty(nbWX.Text) && decimal.Parse(nbWX.Text) > 0)       //微信支付
                {
                    PayEntity.OnlineMoneys = decimal.Parse(nbWX.Text);
                    PayEntity.PayWayOnline = "1";
                    Amount += decimal.Parse(nbWX.Text);
                }
                if (!string.IsNullOrEmpty(nbZFB.Text) && decimal.Parse(nbZFB.Text) > 0)     //支付宝支付
                {
                    PayEntity.ZFBMoneys = decimal.Parse(nbZFB.Text);
                    PayEntity.PayWayZFB = "1";
                    Amount += decimal.Parse(nbZFB.Text);
                }
                if (!string.IsNullOrEmpty(nbML.Text) && decimal.Parse(nbML.Text) > 0)       //抹零金额
                {
                    Amount += decimal.Parse(nbML.Text);
                }
                if (!string.IsNullOrEmpty(groupCard.ToString()))                        //团购金额
                {
                    PayEntity.GroupCardNO = groupCard.ToString();
                    PayEntity.PayWayGroup = "1";
                    PayEntity.GroupMoneys = groupMoney;
                }
                //判断填写的实际支付金额和应付金额是否一致
                if (Amount != totalAmount)
                {
                    Alert.ShowInTop("录入的金额总数与实付金额不匹配", "错误提示", MessageBoxIcon.Warning);
                    return;
                }
                //保存结算支付信息
                Core.Container.Instance.Resolve <IServiceTabiePayInfo>().Create(PayEntity);
            }
            //单元结算单
            LocalPrint(groupCard.ToString(), groupName.ToString());
            //库存冲减
            StockProcess();
            //清台并返回餐台列表
            CloseTabie();
        }