You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1472 lines
72 KiB
C#

9 months ago
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<BusinessTicket> 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
/// <summary>
/// 表格样式
/// </summary>
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<BusinessTicket> getBusTicketList(string startTime, string endTime)
{
List<BusinessTicket> 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<BusinessTicket>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
if (list == null)
{
list = new List<BusinessTicket>();
}
foreach (BusinessTicket ticket in list)
{
if (!string.IsNullOrEmpty(ticket.OrgTradeNo))
{
ticket.OrderStatus = 2;
}
}
return list;
}
public List<OrderProduct> getOrderProductListByTradeNo(string tradeNo)
{
List<OrderProduct> 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<OrderProduct>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
if (list == null)
{
list = new List<OrderProduct>();
}
return list;
}
public List<OrderPay> getOrderPayListByTradeNo(string tradeNo)
{
List<OrderPay> 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<OrderPay>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
if (list == null)
{
list = new List<OrderPay>();
}
return list;
}
public List<OrderMake> getOrderMakeListByItemId(string itemId)
{
List<OrderMake> 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<OrderMake>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
if (list == null)
{
list = new List<OrderMake>();
}
return list;
}
public List<OrderInfo> getOrderInfoListByItemId(string orderId)
{
List<OrderInfo> 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<OrderInfo>(sql).ToList();
}
}
catch (Exception ex)
{
LOGGER.Error(ex);
}
if (list == null)
{
list = new List<OrderInfo>();
}
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<OrderProduct> products = getOrderProductListByTradeNo(tradeNo);
productListTable.PrimaryGrid.DataSource = products;
List<OrderPay> 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<OrderMake> makes = getOrderMakeListByItemId(itemId);
productMakeListTable.PrimaryGrid.DataSource = makes;
}
else
{
productMakeListTable.PrimaryGrid.Rows.Clear();
}
}
private void btn_exit_Click(object sender, EventArgs e)
{
OnCloseTouchClick(sender, e);
}
/// <summary>
/// 查询按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_query_Click(object sender, EventArgs e)
{
}
public void QueryTicket()
{
//获取选择的订单
List<BusinessTicket> 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<bool, string> 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<bool, string>(false, "系统已设置交班后的订单不允许退款"); ;
}
}
if (_OrderObject != null)
{
if (_OrderObject.OrgTradeNo != null && !"".Equals(_OrderObject.OrgTradeNo))
{
return new Tuple<bool, string>(false, "订单已完全退单");
}
#region subin 20230916 将原始的微信点餐退款条件去掉,将原微信点餐“同意退款"修改为门店销售订单退款。
//if (OrderType.微信点餐 == _OrderObject.OrderType || OrderType.百度外卖 == _OrderObject.OrderType || OrderType.美团外卖 == _OrderObject.OrderType || OrderType.饿了么 == _OrderObject.OrderType)
//{
// return new Tuple<bool, string>(false, "只有 堂食、外带、餐桌 模式的单据的才能在此退单");
//}
if (OrderType. == _OrderObject.OrderType || OrderType. == _OrderObject.OrderType || OrderType.饿 == _OrderObject.OrderType)
{
return new Tuple<bool, string>(false, "只有 堂食、外带、餐桌 模式的单据的才能在此退单");
}
#endregion
if (OrderType. == _OrderObject.OrderType)
{
if (_OrderObject.Delivery != null && _OrderObject.Delivery.Status == 2)
{
return new Tuple<bool, string>(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<bool, string>(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<bool, string>(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<bool, string>(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<bool, string>(false, upayPayment.Item2);
}
else
{
pay.Memo = "扫呗支付:该订单已全额退款,";
}
}
else
{
return new Tuple<bool, string>(false, res.Item2);
}
}
break;
default:
{
return new Tuple<bool, string>(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<bool, string>(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<bool, string>(false, upayPayment.Item2);
}
else
{
pay.Memo = "扫呗支付:该订单已全额退款,";
}
}
else
{
return new Tuple<bool, string>(false, res.Item2);
}
}
break;
default:
{
return new Tuple<bool, string>(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<bool, string>(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<bool, string>(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<PrintTypeEnum> printList = new List<PrintTypeEnum>();
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<bool, string>(true, "退单完成");
}
else
{
return new Tuple<bool, string>(false, "退单保存失败!");
}
}
else
{
return new Tuple<bool, string>(false, "获取订单信息异常");
}
}
catch (Exception ex)
{
logger.Error(ex, "退单发生异常");
return new Tuple<bool, string>(false, "退单发生异常");
}
}
/// <summary>
/// 退单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<PrintTypeEnum> printList = new List<PrintTypeEnum>();
printList.Add(printType);
this.PrintOrderObject(_OrderObject, printList);
}
else
{
this.ShowToastNotify(this, "获取订单信息异常");
}
};
form.ShowDialog();
}
/// <summary>
/// 补打账单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_TicketPrint_Click(object sender, EventArgs e)
{
}
private void OnControlBoxMinClick(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
/// <summary>
/// 营业模式变化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
/// <summary>
/// 输入单号查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnFinishedClick(object sender, Component.EnterEventArg e)
{
QueryTicket();
}
/// <summary>
/// 打印订单
/// </summary>
/// <param name="orderObject"></param>
/// <returns></returns>
private bool PrintOrderObject(OrderObject orderObject, List<PrintTypeEnum> 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<VariableValue> 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;
}
/// <summary>
/// 加载绑定数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<BusinessTicket> 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);
}
}
}
}