/// <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(); }
/// <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(); }