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