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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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