using DevComponents.DotNetBar; using DevComponents.DotNetBar.Controls; using DevComponents.DotNetBar.SuperGrid; using POSV.Card; using POSV.Component; using POSV.Entity; using POSV.Helper; using POSV.PayApi; using POSV.Payment.AllinPay; using POSV.Payment.AllinPay.Models.ParamModels; using POSV.Payment.Saobei; using POSV.Payment.Saobei.Parameter; using POSV.Printer; using POSV.ServiceCenter; using POSV.ShoppingCart; using POSV.Utils; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace POSV.Report { public partial class MSaleDetail : BusinessForm { public int orderType = -1; private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); public MSaleDetail() { InitializeComponent(); //this.controlBox1.Text = "营业单据查询"; //this.controlBox1.ShowApplicationVersion = false; } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (this.DesignMode) return; //初始化表格样式 LoadTablStyle(); this.startPicker.Value = DateTime.Parse(Global.Instance.BusinessPlan.StartTimeSimple); this.endPicker.Value = DateTime.Parse(Global.Instance.BusinessPlan.EndTimeSimple); this.checkBoxX1.Checked = true; this.Focus(); this.txtTradeNo.Focus(); this.txtTradeNo.SelectAll(); this.ActiveControl = this.txtTradeNo; //第一步获取订单列表 List detail = getBusTicketList(this.startPicker.Value.ToString("yyyy-MM-dd HH:mm:ss"), this.endPicker.Value.ToString("yyyy-MM-dd HH:mm:ss")); salesListTable.PrimaryGrid.DataSource = detail; } #region /// /// 表格样式 /// public void LoadTablStyle() { //第一步是主单样式 var cellStyles1 = salesListTable.DefaultVisualStyles.CellStyles; //设置选中以背景色、行字体颜色 cellStyles1.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles1.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles1.Selected.TextColor = ColorTranslator.FromHtml("#000000"); //设置鼠标经过背景色、行字体颜色 cellStyles1.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles1.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles1.SelectedMouseOver.TextColor = ColorTranslator.FromHtml("#000000"); var rowStyles1 = salesListTable.DefaultVisualStyles.RowStyles; //设置选中以后行头部、底部背景色、头部字体颜色 rowStyles1.Selected.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles1.Selected.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles1.Selected.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles1.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles1.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //设置鼠标经过行头部、底部背景色、头部字体颜色 rowStyles1.SelectedMouseOver.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles1.SelectedMouseOver.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles1.SelectedMouseOver.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles1.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles1.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //第二步是销售明细样式 var cellStyles2 = productListTable.DefaultVisualStyles.CellStyles; //设置选中以背景色、行字体颜色 cellStyles2.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles2.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles2.Selected.TextColor = ColorTranslator.FromHtml("#000000"); //设置鼠标经过背景色、行字体颜色 cellStyles2.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles2.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles2.SelectedMouseOver.TextColor = ColorTranslator.FromHtml("#000000"); var rowStyles2 = productListTable.DefaultVisualStyles.RowStyles; //设置选中以后行头部、底部背景色、头部字体颜色 rowStyles2.Selected.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles2.Selected.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles2.Selected.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles2.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles2.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //设置鼠标经过行头部、底部背景色、头部字体颜色 rowStyles2.SelectedMouseOver.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles2.SelectedMouseOver.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles2.SelectedMouseOver.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles2.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles2.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //第三步是做法明细样式 var cellStyles3 = productMakeListTable.DefaultVisualStyles.CellStyles; //设置选中以背景色、行字体颜色 cellStyles3.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles3.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles3.Selected.TextColor = ColorTranslator.FromHtml("#000000"); //设置鼠标经过背景色、行字体颜色 cellStyles3.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles3.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles3.SelectedMouseOver.TextColor = ColorTranslator.FromHtml("#000000"); var rowStyles3 = productMakeListTable.DefaultVisualStyles.RowStyles; //设置选中以后行头部、底部背景色、头部字体颜色 rowStyles3.Selected.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles3.Selected.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles3.Selected.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles3.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles3.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //设置鼠标经过行头部、底部背景色、头部字体颜色 rowStyles3.SelectedMouseOver.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles3.SelectedMouseOver.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles3.SelectedMouseOver.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles3.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles3.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //第四部是支付明细样式 var cellStyles4 = payListTable.DefaultVisualStyles.CellStyles; //设置选中以背景色、行字体颜色 cellStyles4.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles4.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles4.Selected.TextColor = ColorTranslator.FromHtml("#000000"); //设置鼠标经过背景色、行字体颜色 cellStyles4.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles4.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); cellStyles4.SelectedMouseOver.TextColor = ColorTranslator.FromHtml("#000000"); var rowStyles4 = payListTable.DefaultVisualStyles.RowStyles; //设置选中以后行头部、底部背景色、头部字体颜色 rowStyles4.Selected.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles4.Selected.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles4.Selected.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles4.Selected.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles4.Selected.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //设置鼠标经过行头部、底部背景色、头部字体颜色 rowStyles4.SelectedMouseOver.RowHeaderStyle.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles4.SelectedMouseOver.RowHeaderStyle.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles4.SelectedMouseOver.RowHeaderStyle.TextColor = ColorTranslator.FromHtml("#000000"); rowStyles4.SelectedMouseOver.Background.Color1 = ColorTranslator.FromHtml("#E7EAF1"); rowStyles4.SelectedMouseOver.Background.Color2 = ColorTranslator.FromHtml("#E7EAF1"); //按钮样式 TodayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); TodayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); TodayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } #endregion public List getBusTicketList(string startTime, string endTime) { List list = null; string busNo = StringUtils.GetString(this.txtTradeNo.Text); string orderNo = StringUtils.GetString(this.txtOrderNo.Text); try { using (var db = Global.Instance.OpenDataBase) { StringBuilder sqlBuld = new StringBuilder(); sqlBuld.Append(" select * "); sqlBuld.Append(" from pos_order "); sqlBuld.Append(" where finishDate >= '{0}' and finishDate <= '{1}'"); if (busNo != null && !"".Equals(busNo)) { sqlBuld.Append(" and tradeNo like '%" + busNo + "%' "); } if (orderType >= 0) { sqlBuld.Append(" and orderType = " + orderType + " "); } if (!string.IsNullOrEmpty(orderNo)) { sqlBuld.Append(" and orderNo = " + orderNo + " "); } if (this.thischeckBoxX9.Checked) { sqlBuld.Append(" and shiftNo = '" + Global.Instance.BusinessPlanLog.No + "' "); } sqlBuld.Append(" order by finishDate desc"); string sql = string.Format(sqlBuld.ToString(), startTime, endTime); list = db.Query(sql).ToList(); } } catch (Exception ex) { LOGGER.Error(ex); } if (list == null) { list = new List(); } foreach (BusinessTicket ticket in list) { if (!string.IsNullOrEmpty(ticket.OrgTradeNo)) { ticket.OrderStatus = 2; } } return list; } public List getOrderProductListByTradeNo(string tradeNo) { List list = null; try { using (var db = Global.Instance.OpenDataBase) { StringBuilder sqlBuld = new StringBuilder(); sqlBuld.Append(" select * "); sqlBuld.Append(" from pos_order_item "); sqlBuld.Append(" where tradeNo = '{0}' "); sqlBuld.Append(" order by orderNo "); string sql = string.Format(sqlBuld.ToString(), tradeNo); list = db.Query(sql).ToList(); } } catch (Exception ex) { LOGGER.Error(ex); } if (list == null) { list = new List(); } return list; } public List getOrderPayListByTradeNo(string tradeNo) { List list = null; try { using (var db = Global.Instance.OpenDataBase) { StringBuilder sqlBuld = new StringBuilder(); sqlBuld.Append(" select * "); sqlBuld.Append(" from pos_order_pay "); sqlBuld.Append(" where tradeNo = '{0}' "); string sql = string.Format(sqlBuld.ToString(), tradeNo); list = db.Query(sql).ToList(); } } catch (Exception ex) { LOGGER.Error(ex); } if (list == null) { list = new List(); } return list; } public List getOrderMakeListByItemId(string itemId) { List list = null; try { using (var db = Global.Instance.OpenDataBase) { StringBuilder sqlBuld = new StringBuilder(); sqlBuld.Append(" select * "); sqlBuld.Append(" from pos_order_item_make "); sqlBuld.Append(" where itemId = '{0}' "); string sql = string.Format(sqlBuld.ToString(), itemId); list = db.Query(sql).ToList(); } } catch (Exception ex) { LOGGER.Error(ex); } if (list == null) { list = new List(); } return list; } public List getOrderInfoListByItemId(string orderId) { List list = null; try { using (var db = Global.Instance.OpenDataBase) { StringBuilder sqlBuld = new StringBuilder(); sqlBuld.Append(" select * "); sqlBuld.Append(" from pos_order_item_promotion "); sqlBuld.Append(" where orderId = '{0}' "); string sql = string.Format(sqlBuld.ToString(), orderId); list = db.Query(sql).ToList(); } } catch (Exception ex) { LOGGER.Error(ex); } if (list == null) { list = new List(); } return list; } private void OnControlBoxCloseClick(object sender, EventArgs e) { OnCloseTouchClick(sender, e); } private void OnCloseTouchClick(object sender, EventArgs e) { //先关闭父窗体 if (this.Owner != null) { this.Owner.Close(); } //再关闭当前窗体 this.Close(); } private void OnTicketRowActivated(object sender, GridRowActivatedEventArgs e) { GridPanel grid = e.GridPanel; if (e.NewActiveRow != null) { productListTable.PrimaryGrid.Rows.Clear(); payListTable.PrimaryGrid.Rows.Clear(); //先清除其他表数据 GridRow row = e.NewActiveRow as GridRow; grid.SetSelected(e.NewActiveRow, false); grid.SetActiveRow(e.NewActiveRow); var tradeNo = row.Cells["busNo"].Value.ToString(); List products = getOrderProductListByTradeNo(tradeNo); productListTable.PrimaryGrid.DataSource = products; List pays = getOrderPayListByTradeNo(tradeNo); payListTable.PrimaryGrid.DataSource = pays; } else { productListTable.PrimaryGrid.Rows.Clear(); payListTable.PrimaryGrid.Rows.Clear(); } } private void OnOrderRowActivated(object sender, GridRowActivatedEventArgs e) { GridPanel grid = e.GridPanel; if (e.NewActiveRow != null) { productMakeListTable.PrimaryGrid.Rows.Clear(); //先清除其他表数据 GridRow row = e.NewActiveRow as GridRow; grid.SetSelected(e.NewActiveRow, false); grid.SetActiveRow(e.NewActiveRow); var itemId = row.Cells["itemId"].Value.ToString(); List makes = getOrderMakeListByItemId(itemId); productMakeListTable.PrimaryGrid.DataSource = makes; } else { productMakeListTable.PrimaryGrid.Rows.Clear(); } } private void btn_exit_Click(object sender, EventArgs e) { OnCloseTouchClick(sender, e); } /// /// 查询按钮 /// /// /// private void btn_query_Click(object sender, EventArgs e) { } public void QueryTicket() { //获取选择的订单 List detail = getBusTicketList(this.startPicker.Value.ToString("yyyy-MM-dd HH:mm:ss"), this.endPicker.Value.ToString("yyyy-MM-dd HH:mm:ss")); salesListTable.PrimaryGrid.DataSource = detail; } private void RefundOrderCheck() { var panel = salesListTable.PrimaryGrid; if (panel.ActiveRow == null) { this.ShowToastNotify(this, "请选择要操作的单据"); return; } //练习模式不能进行退单操作 if (Global.Instance.IsStudyMode()) { this.ShowToastNotify(this, "练习模式不能退单!"); return; } //提示 var row = panel.ActiveRow as GridRow; var tradeNo = row.Cells["busNo"].Value.ToString(); bool allowBackPayHistory = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CASHIER_ALLOW_BACKPAY_HISTORY, true); //不允许退历史单据 if (!allowBackPayHistory) { //判断是否是隔天的单据 var finishDate = row.Cells["finishDate"].Value.ToString(); string ticketDate = DateTime.Parse(finishDate).ToString("yyyy-MM-dd"); if (!ticketDate.Equals(DateTime.Now.ToString("yyyy-MM-dd"))) { //不是同一天,查询设置 this.ShowToastNotify(this, "只能退款当日单据!"); return; } } bool allowMemberBackTicket = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CASHIER_ALLOW_MEMBER_BACKTICKET, false); //不允许退有会员消费的单据 if (allowMemberBackTicket) { OrderObject orderObject = OrderUtils.getOrderObjectByTranNo(tradeNo); bool isCoupon = false; if (orderObject.Promotions != null) { var couponPromList = orderObject.Promotions.FindAll(x => x.PromotionType == PromotionType.电子代金券 || x.PromotionType == PromotionType.电子折扣券).ToList(); if (couponPromList.Count > 0) { isCoupon = true; } } if (orderObject.Items != null) { foreach (OrderItem item in orderObject.Items) { if (item.Promotions != null) { var couponPromList = item.Promotions.FindAll(x => x.PromotionType == PromotionType.电子兑换券).ToList(); if (couponPromList.Count > 0) { isCoupon = true; } } } } if (isCoupon) { DialogForm dialog = new DialogForm("退款提醒", "该订单使用了电子卡券,不允许退单!", MessageBoxIcon.Warning, MessageBoxButtons.OK); dialog.TopLevel = true; dialog.ShowDialog(this); return; } } var causeForm = new RefundCauseSelectForm(); causeForm.AcceptButtonClick += (o, args) => { RefundOrder(tradeNo, args.Data.ToString()); }; var trans = new TransparentForm(this, causeForm); trans.Show(this); } private void RefundOrder(string tradeNo, string refundCause) { Task.Factory.StartNew(() => { return DoRefund(tradeNo, refundCause); }).ContinueWith(task => { if (task.IsFaulted) { LOGGER.Error(task.Exception.GetBaseException()); } else { if (!task.Result.Item1) { this.ShowToastNotify(this, "退款失败!"); LOGGER.Info("退单失败![{0}]", task.Result.Item2); if (this.IsDisposed || !this.IsHandleCreated) return; this.Invoke(new Action(() => { DialogForm dialog = new DialogForm("退款提醒", "退款失败!" + task.Result.Item2, MessageBoxIcon.Warning, MessageBoxButtons.OK); dialog.TopLevel = true; dialog.ShowDialog(this); })); } else { this.ShowToastNotify(this, "退单成功!"); LOGGER.Info("退单交易完成"); if (this.IsDisposed || !this.IsHandleCreated) return; this.Invoke(new Action(() => { DialogForm dialog = new DialogForm("退款提醒", "退款成功(金额原路退回)!", MessageBoxIcon.Warning, MessageBoxButtons.OK); dialog.TopLevel = true; dialog.ShowDialog(this); QueryTicket(); })); } } }); } private Tuple DoRefund(string tradeNo, string refundCause) { try { OrderObject _OrderObject = OrderUtils.getOrderObjectByTranNo(tradeNo); //交班订单不允许退款判断 if (Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_SHIFTISALLOWREFUND, false)) { if (!_OrderObject.ShiftNo.Equals(Global.Instance.BusinessPlanLog.No)) { return new Tuple(false, "系统已设置交班后的订单不允许退款"); ; } } if (_OrderObject != null) { if (_OrderObject.OrgTradeNo != null && !"".Equals(_OrderObject.OrgTradeNo)) { return new Tuple(false, "订单已完全退单"); } #region subin 20230916 将原始的微信点餐退款条件去掉,将原微信点餐“同意退款"修改为门店销售订单退款。 //if (OrderType.微信点餐 == _OrderObject.OrderType || OrderType.百度外卖 == _OrderObject.OrderType || OrderType.美团外卖 == _OrderObject.OrderType || OrderType.饿了么 == _OrderObject.OrderType) //{ // return new Tuple(false, "只有 堂食、外带、餐桌 模式的单据的才能在此退单"); //} if (OrderType.百度外卖 == _OrderObject.OrderType || OrderType.美团外卖 == _OrderObject.OrderType || OrderType.饿了么 == _OrderObject.OrderType) { return new Tuple(false, "只有 堂食、外带、餐桌 模式的单据的才能在此退单"); } #endregion if (OrderType.电话外卖 == _OrderObject.OrderType) { if (_OrderObject.Delivery != null && _OrderObject.Delivery.Status == 2) { return new Tuple(false, "电话外卖已交单,退款失败!"); } } //生成新单 OrderObject _BackOrderObject = ObjectUtils.Copy(_OrderObject); string finishDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //=========更新原单内容 //录入原单号 _BackOrderObject.Id = IdWorkerUtils.Instance.NextId(); //操作员工号 _BackOrderObject.WorkerNo = Global.Instance.Worker.No; //操作员名称 _BackOrderObject.WorkerName = Global.Instance.Worker.Name; _BackOrderObject.SaleDate = finishDate; //班次名称 _BackOrderObject.ShiftName = Global.Instance.BusinessPlanLog.Name; //班次编号 _BackOrderObject.ShiftNo = Global.Instance.BusinessPlanLog.No; //订单标识为 新建状态 _BackOrderObject.OrderStatus = OrderStatus.已退单; //订单创建时间 _BackOrderObject.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //订单创建人 _BackOrderObject.CreateUser = Global.Instance.Worker.Name; string[] day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; string weeker = day[Convert.ToInt32(DateTime.Now.DayOfWeek.ToString("d"))].ToString(); //星期 _BackOrderObject.Weeker = weeker; //天气 _BackOrderObject.Weather = string.Empty; _BackOrderObject.ObjectId = ObjectId.GenerateNewStringId(); var ticket = OrderUtils.Instance.GenerateTicketNoEx(); if (ticket.Item1) { _BackOrderObject.TradeNo = ticket.Item3; } else { return new Tuple(false, "生成票号失败,退款失败!"); } _BackOrderObject.FinishDate = finishDate; _BackOrderObject.Amount = 0 - _OrderObject.Amount; _BackOrderObject.DiscountAmount = 0 - _OrderObject.DiscountAmount; _BackOrderObject.ReceivableAmount = 0 - _OrderObject.ReceivableAmount; _BackOrderObject.PaidAmount = 0 - _OrderObject.PaidAmount; _BackOrderObject.ReceivedAmount = 0 - _OrderObject.ReceivedAmount; _BackOrderObject.MalingAmount = 0 - _OrderObject.MalingAmount; _BackOrderObject.ChangeAmount = 0 - _OrderObject.ChangeAmount; _BackOrderObject.InvoicedAmount = 0 - _OrderObject.InvoicedAmount; _BackOrderObject.SyncStatus = 0; _BackOrderObject.PrintStatus = 0; _BackOrderObject.AddPoint = 0 - _OrderObject.AddPoint; _BackOrderObject.UploadStatus = 0; _BackOrderObject.UploadMessage = ""; _BackOrderObject.TicketId = ""; _BackOrderObject.OrgTradeNo = _OrderObject.TradeNo; _BackOrderObject.RefundCause = refundCause; //电话外送 if (OrderType.电话外卖 == _BackOrderObject.OrderType) { _OrderObject.OrderStatus = OrderStatus.已完成; _OrderObject.PaymentStatus = OrderPaymentStatus.已付款; //电话外卖退单后原单重新上传 _OrderObject.SyncStatus = 0; _OrderObject.UploadErrors = 0; var _backDelivery = _BackOrderObject.Delivery; if (_backDelivery != null) { _backDelivery.Id = IdWorkerUtils.Instance.NextId(); _backDelivery.OrderId = _BackOrderObject.Id; _backDelivery.TradeNo = _BackOrderObject.TradeNo; _backDelivery.ShiftNo = Global.Instance.BusinessPlanLog.No; _backDelivery.ShiftName = Global.Instance.BusinessPlanLog.Name; _backDelivery.Status = 2; if (!string.IsNullOrEmpty(_backDelivery.SendDate)) { _backDelivery.SendDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } _backDelivery.SettlementDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } } //整单优惠 foreach (PromotionOrder promotion in _BackOrderObject.Promotions) { promotion.Id = IdWorkerUtils.Instance.NextId(); promotion.OrderId = _BackOrderObject.Id; promotion.TradeNo = _BackOrderObject.TradeNo; promotion.Amount = 0 - promotion.Amount; promotion.DiscountAmount = 0 - promotion.DiscountAmount; promotion.ReceivableAmount = 0 - promotion.ReceivableAmount; promotion.FinishDate = finishDate; } //====== 更新明细内容 foreach (OrderItem item in _BackOrderObject.Items) { item.Id = IdWorkerUtils.Instance.NextId(); item.OrderId = _BackOrderObject.Id; item.TradeNo = _BackOrderObject.TradeNo; //单品优惠 foreach (PromotionItem promotion in item.Promotions) { promotion.Id = IdWorkerUtils.Instance.NextId(); promotion.OrderId = _BackOrderObject.Id; promotion.ItemId = item.Id; promotion.TradeNo = _BackOrderObject.TradeNo; promotion.Amount = 0 - promotion.Amount; promotion.DiscountAmount = 0 - promotion.DiscountAmount; promotion.ReceivableAmount = 0 - promotion.ReceivableAmount; promotion.FinishDate = finishDate; promotion.RelationId = promotion.RelationId == "0" ? string.Empty : promotion.RelationId; } //做法信息 foreach (FlavorItem flavor in item.Flavors) { flavor.Id = IdWorkerUtils.Instance.NextId(); flavor.OrderId = _BackOrderObject.Id; flavor.ItemId = item.Id; flavor.TradeNo = _BackOrderObject.TradeNo; flavor.RefundQuantity = flavor.Quantity; flavor.Amount = 0 - flavor.Amount; flavor.Quantity = 0; flavor.DiscountAmount = 0 - flavor.DiscountAmount; flavor.FinishDate = finishDate; flavor.isBackTicket = true; } item.RefundQuantity = item.Quantity; item.Quantity = 0; item.Amount = 0 - item.Amount; item.FlavorAmount = 0 - item.FlavorAmount; item.FlavorDiscountAmount = 0 - item.FlavorDiscountAmount; item.FlavorReceivableAmount = 0 - item.FlavorReceivableAmount; item.TotalAmonut = 0 - item.TotalAmonut; item.SuitAddPrice = 0 - item.SuitAddPrice; item.SuitAmount = 0 - item.SuitAmount; item.SaleDate = finishDate; item.ChudaQty = 0; item.ChupinQty = 0; item.ChuxianQty = 0; item.KdsChupinQty = 0; item.FinishDate = finishDate; } //支付方式遍历 foreach (PayItem pay in _BackOrderObject.Pays) { switch (pay.No) { case "02"://会员卡 { this.ShowToastNotify(this, "正在进行会员卡退款...请勿关闭!", 30000); CardTradeCancelRequest cardRequest = new CardTradeCancelRequest(); cardRequest.TradeNo = _OrderObject.TradeNo; cardRequest.TicketNo = _BackOrderObject.TradeNo; cardRequest.Reason = "正常退款"; cardRequest.ShopNo = Global.Instance.Authc.StoreNo; cardRequest.WorkerNo = Global.Instance.Worker.No; cardRequest.PosNo = Global.Instance.Authc.PosNo; var result = CardUtils.CardTradeCancel(cardRequest); if (result.Item1) { if (result.Item2 == "0061此单已撤销") { pay.Memo = "0061此单已撤销(重复退单的结果)"; } else { var cancelObj = result.Item3; pay.TradeVoucherNo = cancelObj.RefNo; _BackOrderObject.PrePoint = cancelObj.PreTotalPoint; _BackOrderObject.AddPoint = 0 - cancelObj.TotalPoint; _BackOrderObject.AftPoint = cancelObj.AftTotalPoint; foreach (var cancelItem in cancelObj.CardList) { var card = _BackOrderObject.Pays.Find(x => x.CardNo == cancelItem.CardNo); if (card != null) { card.CardAftAmount = cancelItem.AftAmount; card.CardBeforeBalance = cancelItem.PreAmount; } } } } else { return new Tuple(false, result.Item2); } } break; case "04"://支付宝 { this.ShowToastNotify(this, "正在进行支付宝退款...请勿关闭!", 30000); switch (pay.PayChannel) { case PayChannelEnum.原生支付: { var result = AlipayApi.RefundAndQuery(AccountTypeEnum.门店, pay.OutTradeNo, pay.Amount, _BackOrderObject.TradeNo, "正常退款"); if (!result.Item1) { return new Tuple(false, result.Item2); } } break; case PayChannelEnum.扫呗支付: { var res = SaobeiApi.GetSaobeiParameter(AccountTypeEnum.门店); if (res.Item1) { var parameter = res.Item3; //银联商务支付参数 string merchant_no = parameter.ContainsKey("merchant_no") ? parameter["merchant_no"].ToString() : ""; string terminal_id = parameter.ContainsKey("terminal_id") ? parameter["terminal_id"].ToString() : ""; string signKey = parameter.ContainsKey("signKey") ? parameter["signKey"].ToString() : ""; string gatewayUrl = parameter.ContainsKey("gatewayUrl") ? parameter["gatewayUrl"].ToString() : ""; string requestNum = string.Format("{0}_{1}", Global.Instance.Authc.StoreNo, _OrderObject.TradeNo); SaobeiRefundParam request = new SaobeiRefundParam(); request.Pay_type = "020"; request.Terminal_trace = _BackOrderObject.TradeNo; request.Refund_fee = string.Format("{0}", Convert.ToInt16(Math.Abs(pay.Amount) * 100)); request.Out_trade_no = pay.TradeVoucherNo; var upayPayment = SaobeiUtils.SaobeiRefund(merchant_no, terminal_id, signKey, gatewayUrl, request); if (!upayPayment.Item1) { return new Tuple(false, upayPayment.Item2); } else { pay.Memo = "扫呗支付:该订单已全额退款,"; } } else { return new Tuple(false, res.Item2); } } break; default: { return new Tuple(false, "暂未开放该渠道退款"); } break; } } break; case "05"://微信支付 { this.ShowToastNotify(this, "正在进行微信退款...时间很长,预计1-2分钟,请勿关闭!", 100000); switch (pay.PayChannel) { case PayChannelEnum.原生支付: { var result = WeixinApi.RefundAndQuery(AccountTypeEnum.门店, pay.OutTradeNo, pay.Amount, pay.Amount, _BackOrderObject.TradeNo, "正常退款", 100); if (!result.Item1) { return new Tuple(false, result.Item2); } } break; case PayChannelEnum.扫呗支付: { var res = SaobeiApi.GetSaobeiParameter(AccountTypeEnum.门店); if (res.Item1) { var parameter = res.Item3; //银联商务支付参数 string merchant_no = parameter.ContainsKey("merchant_no") ? parameter["merchant_no"].ToString() : ""; string terminal_id = parameter.ContainsKey("terminal_id") ? parameter["terminal_id"].ToString() : ""; string signKey = parameter.ContainsKey("signKey") ? parameter["signKey"].ToString() : ""; string gatewayUrl = parameter.ContainsKey("gatewayUrl") ? parameter["gatewayUrl"].ToString() : ""; string requestNum = string.Format("{0}_{1}", Global.Instance.Authc.StoreNo, _OrderObject.TradeNo); SaobeiRefundParam request = new SaobeiRefundParam(); request.Pay_type = "010"; request.Terminal_trace = _BackOrderObject.TradeNo; request.Refund_fee = string.Format("{0}", Convert.ToInt16(Math.Abs(pay.Amount) * 100)); request.Out_trade_no = pay.TradeVoucherNo; var upayPayment = SaobeiUtils.SaobeiRefund(merchant_no, terminal_id, signKey, gatewayUrl, request); if (!upayPayment.Item1) { return new Tuple(false, upayPayment.Item2); } else { pay.Memo = "扫呗支付:该订单已全额退款,"; } } else { return new Tuple(false, res.Item2); } } break; default: { return new Tuple(false, "暂未开放该渠道退款"); } break; } } break; #region subin 2023-06-30 add case "50": { var _payUserId = ""; if (_BackOrderObject.OrderType == OrderType.微信点餐) { _payUserId = pay.OpenId; } #region subin 20230918 由前端支付到统一账号,退款从统一账号退款改为分店账号收款分店账号退款 //subin 20230918 注释掉,由前端支付到统一账号,退款从统一账号退款改为分店账号收款分店账号退款 var result = AllinApi.RefundAndQuery(AccountTypeEnum.门店, _BackOrderObject.TradeNo, Convert.ToInt32(_OrderObject.PaidAmount * 100), Convert.ToInt32(pay.Amount * 100), _OrderObject.TradeNo, _BackOrderObject.RefundCause, _BackOrderObject.OrderType, _payUserId); //subin 20230920 注释掉,恢复原前端支付到统一账号,退款从统一账号退款 //var result = AllinApi.RefundAndQuery(AccountTypeEnum.门店, _BackOrderObject, _OrderObject.StoreNo + "_" + _OrderObject.TradeNo, Convert.ToInt32(_OrderObject.PaidAmount * 100), _payUserId); #endregion if (!result.Item1) { return new Tuple(false, result.Item2); } else { pay.Memo = "通联支付:该订单已全额退款,"; } } break; #endregion } pay.Id = IdWorkerUtils.Instance.NextId(); pay.TradeNo = _BackOrderObject.TradeNo; pay.PayNo = OrderUtils.Instance.GeneratePayNo(); pay.OrderId = _BackOrderObject.Id; pay.Amount = 0 - pay.Amount; pay.PaidAmount = 0 - pay.PaidAmount; pay.ChangeAmount = 0 - pay.ChangeAmount; pay.PayTime = finishDate; pay.FinishDate = finishDate; pay.OverAmount = 0 - pay.OverAmount; pay.ShiftName = _BackOrderObject.ShiftName; pay.ShiftNo = _BackOrderObject.ShiftNo; } //使用会员卡增加了积分,但是没有使用会员卡支付,需要单独调用退积分功能 if (_BackOrderObject.AddPoint < 0 && !_BackOrderObject.Pays.Exists(x => x.No == "02")) { this.ShowToastNotify(this, "正在进行会员卡退积分...请勿关闭!", 30000); CardTradeCancelRequest cardRequest = new CardTradeCancelRequest(); cardRequest.TradeNo = _OrderObject.TradeNo; cardRequest.TicketNo = _BackOrderObject.TradeNo; cardRequest.Reason = "正常退款"; cardRequest.ShopNo = Global.Instance.Authc.StoreNo; cardRequest.WorkerNo = Global.Instance.Worker.No; cardRequest.PosNo = Global.Instance.Authc.PosNo; var result = CardUtils.CardTradeCancel(cardRequest); if (result.Item1) { var cancelObj = result.Item3; _BackOrderObject.PrePoint = cancelObj.PreTotalPoint; _BackOrderObject.AddPoint = 0 - cancelObj.TotalPoint; _BackOrderObject.AftPoint = cancelObj.AftTotalPoint; } else { return new Tuple(false, result.Item2); } } var isException = OrderUtils.Instance.SaveOrderObject(_BackOrderObject); if (!isException) { _OrderObject.OrgTradeNo = _BackOrderObject.TradeNo; using (var db = Global.Instance.OpenDataBase) { using (var trans = db.GetTransaction()) { db.Update(_OrderObject); trans.Complete(); } } LOGGER.Info("开始打印"); this.ShowToastNotify(this, "正在打印退款单..."); //开始打印 _BackOrderObject.PrintType = 1; _BackOrderObject.RPrint = false; //退单厨打开关 bool allowChuda = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_KITCHEN_ALLOW_TUIDAN_CHUDA, false); List printList = new List(); printList.Add(PrintTypeEnum.小票); if (allowChuda) { printList.Add(PrintTypeEnum.厨打); } //退单出品开关 bool allowChupin = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_KITCHEN_ALLOW_TUIDAN_CHUPIN, false); if (allowChupin) { printList.Add(PrintTypeEnum.出品); } this.PrintOrderObject(_BackOrderObject, printList); return new Tuple(true, "退单完成"); } else { return new Tuple(false, "退单保存失败!"); } } else { return new Tuple(false, "获取订单信息异常"); } } catch (Exception ex) { logger.Error(ex, "退单发生异常"); return new Tuple(false, "退单发生异常"); } } /// /// 退单 /// /// /// private void btn_backTicket_Click(object sender, EventArgs e) { } private void Reprinter() { var panel = salesListTable.PrimaryGrid; if (panel.ActiveRow == null) { this.ShowToastNotify(this, "请选择要操作的单据"); return; } //选择补打的内容 RePrintSelectForm form = new RePrintSelectForm(); form.AcceptButtonClick += (o, args) => { var printType = (PrintTypeEnum)Enum.Parse(typeof(PrintTypeEnum), args.Data.ToString()); var row = panel.ActiveRow as GridRow; var tradeNo = row.Cells["busNo"].Value.ToString(); OrderObject _OrderObject = OrderUtils.getOrderObjectByTranNo(tradeNo); if (_OrderObject.OrderType == OrderType.美团外卖 || _OrderObject.OrderType == OrderType.饿了么 || _OrderObject.OrderType == OrderType.百度外卖) { this.ShowToastNotify(this, "第三方外卖的单据请到外卖历史订单补打!"); return; } if (_OrderObject.OrderType == OrderType.微信点餐) { this.ShowToastNotify(this, "微信点餐的单据请到微信历史订单补打!"); return; } if (_OrderObject != null) { _OrderObject.PrintType = 0; _OrderObject.RPrint = true; List printList = new List(); printList.Add(printType); this.PrintOrderObject(_OrderObject, printList); } else { this.ShowToastNotify(this, "获取订单信息异常"); } }; form.ShowDialog(); } /// /// 补打账单 /// /// /// private void btn_TicketPrint_Click(object sender, EventArgs e) { } private void OnControlBoxMinClick(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; } /// /// 营业模式变化 /// /// /// private void cb_change_click(object sender, EventArgs e) { var obj = sender as CheckBoxX; var indexT = obj.Tag as string; if ("全部".Equals(indexT)) { orderType = -1; } if ("堂食".Equals(indexT)) { orderType = 0; } if ("外带".Equals(indexT)) { orderType = 1; } if ("电话外卖".Equals(indexT)) { orderType = 2; } if ("餐桌".Equals(indexT)) { orderType = 3; } if ("美团外卖".Equals(indexT)) { orderType = 4; } if ("饿了么".Equals(indexT)) { orderType = 5; } if ("百度外卖".Equals(indexT)) { orderType = 6; } if ("微信点餐".Equals(indexT)) { orderType = 7; } this.txtTradeNo.Focus(); this.txtTradeNo.SelectAll(); QueryTicket(); } /// /// 输入单号查询 /// /// /// private void OnFinishedClick(object sender, Component.EnterEventArg e) { QueryTicket(); } /// /// 打印订单 /// /// /// private bool PrintOrderObject(OrderObject orderObject, List typeList) { bool isException = false; try { foreach (var type in typeList) { switch (type) { case PrintTypeEnum.小票: { logger.Info(string.Format("收银员<{0}>补打订单小票<{1}>", Global.Instance.Worker.No, orderObject.TradeNo)); //收银小票打印 Task.Factory.StartNew(() => { //构建收银小票模版参数 List vars = null; if (orderObject.PrintType == 0 && orderObject.OrderType == OrderType.电话外卖) { //补打电话外卖结账单,退单走普通 vars = PrintHelper.BuilderDeliveryTicketVariable(orderObject); } else { vars = PrintHelper.BuilderTicketVariable(orderObject); } //自动切纸 bool cutPager = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_CASHIER_ALLOW_CUT_PAGER, false); //是否允许打开钱箱 补打单、退单不开钱箱 bool openCashbox = false; //票头空白行 int headerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_HEADER_EMPTY, 0); //票尾空白行 int footerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_FOOTER_EMPTY, 0); if (orderObject.PrintType == 0) { //执行收银小票打印 switch (orderObject.OrderType) { case OrderType.电话外卖: { logger.Info("开始打印电话外送小票<{0}>", orderObject.TradeNo); var prt = PrintHelper.PrinterTicket("电话外卖", vars, cutPager, false, headerLine, footerLine); logger.Info("补打电话外送小票打印结果<{0},{1},{2}>", orderObject.TradeNo, prt.Item1, prt.Item2); } break; default: { logger.Info("开始打印收银小票<{0}>", orderObject.TradeNo); var prt = PrintHelper.PrinterTicket("收银小票", vars, cutPager, openCashbox, headerLine, footerLine); logger.Info("补打小票打印结果<{0},{1},{2}>", orderObject.TradeNo, prt.Item1, prt.Item2); } break; } } else { //退单统一走结账单小票模板 logger.Info("开始打印退款收银小票<{0}>", orderObject.TradeNo); var prt = PrintHelper.PrinterTicket("收银小票", vars, cutPager, openCashbox, headerLine, footerLine); logger.Info("退款小票打印结果<{0},{1},{2}>", orderObject.TradeNo, prt.Item1, prt.Item2); } }); } break; case PrintTypeEnum.标签: { //打印标签 logger.Info(string.Format("收银员<{0}>补打订单标签<{1}>", Global.Instance.Worker.No, orderObject.TradeNo)); Task.Factory.StartNew(() => { LabelPrintHelper.PrintOrderLabel(orderObject); }); } break; case PrintTypeEnum.厨打: { //厨打小票打印 logger.Info(string.Format("收银员<{0}>补打订单厨打<{1}>", Global.Instance.Worker.No, orderObject.TradeNo)); Task.Factory.StartNew(() => { ChuDaHelper.KitchenPrinter(orderObject); }); } break; case PrintTypeEnum.厨打标签: { //厨打小票打印 logger.Info(string.Format("收银员<{0}>补打订单厨打标签<{1}>", Global.Instance.Worker.No, orderObject.TradeNo)); Task.Factory.StartNew(() => { ChuDaHelper.KitchenLabelPrinter(orderObject); }); } break; case PrintTypeEnum.出品: { //出品小票打印 logger.Info(string.Format("收银员<{0}>补打订单出品<{1}>", Global.Instance.Worker.No, orderObject.TradeNo)); Task.Factory.StartNew(() => { ChuDaHelper.MadePrinter(orderObject); }); } break; case PrintTypeEnum.厨显: { //通知厨显 logger.Info(string.Format("收银员<{0}>补打订单厨显<{1}>", Global.Instance.Worker.No, orderObject.TradeNo)); Task.Factory.StartNew(() => { UploadSCNewOrder.UploadNewOrder2SC4KDS(orderObject); }); } break; } } } catch (Exception ex) { isException = true; LOGGER.Error(ex, "打印订单信息异常"); } return isException; } /// /// 加载绑定数据 /// /// /// private void OnBind(object sender, GridDataBindingCompleteEventArgs e) { var panel = e.GridPanel; foreach (var r in panel.Rows) { var row = r as GridRow; //设置单据内容字体颜色 if ("已退单".Equals(row.Cells["status"].Value.ToString())) { row.CellStyles.Default.TextColor = Color.Red; } else { row.CellStyles.Default.TextColor = Color.Black; } //var payTypeNo = row.Cells["payTypeNo"].Value.ToString(); //if ("合计".Equals(payTypeNo)) //{ // row.CellStyles.Default.Background.Color1 = Color.AliceBlue; // row.CellStyles.Default.Font = new Font("宋体", 14.75f, FontStyle.Bold, GraphicsUnit.Pixel); //} } } private void btn_time_touch_Click(object sender, EventArgs e) { var obj = sender as TouchLabelXX; var typeStr = obj.Tag as string; var type = (ReportQuickDate)Enum.Parse(typeof(ReportQuickDate), typeStr); //按钮样式 //今天 TodayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#FFFFFF"); TodayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#FFFFFF"); TodayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#000000"); //昨天 YesdayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#FFFFFF"); YesdayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#FFFFFF"); YesdayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#000000"); //上一天 BefdayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#FFFFFF"); BefdayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#FFFFFF"); BefdayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#000000"); //本周 ToWeekTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#FFFFFF"); ToWeekTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#FFFFFF"); ToWeekTouchButtonX.ForeColor = ColorTranslator.FromHtml("#000000"); //上周 BefWeekTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#FFFFFF"); BefWeekTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#FFFFFF"); BefWeekTouchButtonX.ForeColor = ColorTranslator.FromHtml("#000000"); //本月 ToMonthTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#FFFFFF"); ToMonthTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#FFFFFF"); ToMonthTouchButtonX.ForeColor = ColorTranslator.FromHtml("#000000"); //上月 BefMonthTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#FFFFFF"); BefMonthTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#FFFFFF"); BefMonthTouchButtonX.ForeColor = ColorTranslator.FromHtml("#000000"); switch (type) { case ReportQuickDate.今天: { TodayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); TodayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); TodayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; case ReportQuickDate.昨天: { YesdayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); YesdayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); YesdayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; case ReportQuickDate.前一天: { BefdayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); BefdayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); BefdayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; case ReportQuickDate.本周: { ToWeekTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); ToWeekTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); ToWeekTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; case ReportQuickDate.上周: { BefWeekTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); BefWeekTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); BefWeekTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; case ReportQuickDate.本月: { ToMonthTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); ToMonthTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); ToMonthTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; case ReportQuickDate.上月: { BefMonthTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); BefMonthTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); BefMonthTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; default: { TodayTouchButtonX.BackgroundStyle.BackColor = ColorTranslator.FromHtml("#00C7BA"); TodayTouchButtonX.BackgroundStyle.BackColor2 = ColorTranslator.FromHtml("#00C7BA"); TodayTouchButtonX.ForeColor = ColorTranslator.FromHtml("#FFFFFF"); } break; } var res = DateTimeUtils.CalculateBusinessPlanDate(type, this.startPicker.Value, this.endPicker.Value); this.startPicker.Value = res.Item1; this.endPicker.Value = res.Item2; List detail = getBusTicketList(this.startPicker.Value.ToString("yyyy-MM-dd HH:mm:ss"), this.endPicker.Value.ToString("yyyy-MM-dd HH:mm:ss")); salesListTable.PrimaryGrid.DataSource = detail; } private void btn_exit_touch_Click(object sender, TouchEventArgs e) { OnCloseTouchClick(sender, e); } private void btn_query_touch_Click(object sender, TouchEventArgs e) { QueryTicket(); } private void btn_TicketPrint_touch_Click(object sender, TouchEventArgs e) { string permissionCode = "10044"; var action = new Action(() => { this.Reprinter(); }); var ret = AuthzUtils.Instance.CheckAuthz(this, "补打", permissionCode, action); if (!ret.Item1) { this.ShowToastNotify(this, ret.Item2); } } private void btn_backTicket_Touch_Click(object sender, TouchEventArgs e) { string permissionCode = "10043"; var action = new Action(() => { this.RefundOrderCheck(); }); var ret = AuthzUtils.Instance.CheckAuthz(this, "退单", permissionCode, action); if (!ret.Item1) { this.ShowToastNotify(this, ret.Item2); } } } }