|
|
|
|
using DevComponents.DotNetBar;
|
|
|
|
|
using DevComponents.DotNetBar.Controls;
|
|
|
|
|
using DevComponents.DotNetBar.SuperGrid;
|
|
|
|
|
using POSV.Component;
|
|
|
|
|
using POSV.PayApi;
|
|
|
|
|
using POSV.Payment.Saobei;
|
|
|
|
|
using POSV.Payment.Saobei.Parameter;
|
|
|
|
|
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.GuangChang
|
|
|
|
|
{
|
|
|
|
|
public partial class GuangChangForm : BusinessForm
|
|
|
|
|
{
|
|
|
|
|
public int orderType = 0;
|
|
|
|
|
|
|
|
|
|
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
|
|
|
|
|
|
public List<VposOrderPay> orderPayInfo = null;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 订单内容
|
|
|
|
|
/// </summary>
|
|
|
|
|
public List<VposOrderProduct> orderProductInfo = null;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 做法内容
|
|
|
|
|
/// </summary>
|
|
|
|
|
public List<VposOrderProductMake> orderProductMake = null;
|
|
|
|
|
|
|
|
|
|
public GuangChangForm()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
this.controlBox1.Text = "美食广场小程序订单查询";
|
|
|
|
|
this.controlBox1.ShowApplicationVersion = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnLoad(e);
|
|
|
|
|
|
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
|
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.mobile.Focus();
|
|
|
|
|
this.mobile.SelectAll();
|
|
|
|
|
this.ActiveControl = this.mobile;
|
|
|
|
|
//获得当前页
|
|
|
|
|
int cur = pagerControl1.CurrentPage;
|
|
|
|
|
//获得每页显示的记录数
|
|
|
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
|
QueryTicket(cur, rows);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BtnQueryClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//获得当前页
|
|
|
|
|
int cur = pagerControl1.CurrentPage;
|
|
|
|
|
//获得每页显示的记录数
|
|
|
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
|
QueryTicket(cur, rows);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void QueryTicket(int PageNum, int pageSize)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var request = new VposOrderListRequest();
|
|
|
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request.Status = orderType;
|
|
|
|
|
request.PageNumber = PageNum;
|
|
|
|
|
request.PageSize = pageSize;
|
|
|
|
|
request.StartTime = this.startPicker.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
request.EndTime = this.endPicker.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
request.Mobile = this.mobile.Text;
|
|
|
|
|
request.SeqNo = this.seqNo.Text;
|
|
|
|
|
|
|
|
|
|
var response = GuangChangUtils.VposOrderList(request);
|
|
|
|
|
//成功
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
List<VposOrder> cardPointChangeResponse = response.Item3.List;
|
|
|
|
|
this.pagerControl1.TotalPage = response.Item3.PageCount;
|
|
|
|
|
this.pagerControl1.CurrentPage = response.Item3.PageNumber;
|
|
|
|
|
this.pagerControl1.RecordCount = response.Item3.TotalCount;
|
|
|
|
|
this.pagerControl1.RowsPerPage = response.Item3.PageSize;
|
|
|
|
|
foreach (VposOrder vposOrder in cardPointChangeResponse)
|
|
|
|
|
{
|
|
|
|
|
if (vposOrder.Status == 0)
|
|
|
|
|
{
|
|
|
|
|
vposOrder.StatusDesc = "待支付";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrder.Status == 1)
|
|
|
|
|
{
|
|
|
|
|
vposOrder.StatusDesc = "已支付";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrder.Status == 2)
|
|
|
|
|
{
|
|
|
|
|
vposOrder.StatusDesc = "已退单";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrder.Status == 3)
|
|
|
|
|
{
|
|
|
|
|
vposOrder.StatusDesc = "已取消";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrder.Status == 4)
|
|
|
|
|
{
|
|
|
|
|
vposOrder.StatusDesc = "已完成";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrder.BusMode == 0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
vposOrder.OrderTypeDesc = "堂食";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrder.BusMode == 1)
|
|
|
|
|
{
|
|
|
|
|
vposOrder.OrderTypeDesc = "外带";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
salesListTable.PrimaryGrid.DataSource = cardPointChangeResponse;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
List<VposOrder> list = new List<VposOrder>();
|
|
|
|
|
salesListTable.PrimaryGrid.DataSource = list;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "订单记录获取异常");
|
|
|
|
|
|
|
|
|
|
LOGGER.Error(ex, "订单记录获取异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BtnBackTicketClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string permissionCode = "10043";
|
|
|
|
|
|
|
|
|
|
var action = new Action(() =>
|
|
|
|
|
{
|
|
|
|
|
var panel = salesListTable.PrimaryGrid;
|
|
|
|
|
if (panel.ActiveRow == null)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "请选择要操作的单据");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//提示
|
|
|
|
|
var row = panel.ActiveRow as GridRow;
|
|
|
|
|
var tradeNo = row.Cells["no"].Value.ToString();
|
|
|
|
|
var seqNo = row.Cells["seqNo"].Value.ToString();
|
|
|
|
|
var receivable = row.Cells["receivable"].Value.ToString();
|
|
|
|
|
|
|
|
|
|
bool allowBackPayHistory = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CASHIER_ALLOW_BACKPAY_HISTORY, true);
|
|
|
|
|
//不允许退历史单据
|
|
|
|
|
if (!allowBackPayHistory)
|
|
|
|
|
{
|
|
|
|
|
//判断是否是隔天的单据
|
|
|
|
|
var finishDate = row.Cells["saleDate"].Value.ToString();
|
|
|
|
|
string ticketDate = DateTime.Parse(finishDate).ToString("yyyy-MM-dd");
|
|
|
|
|
if (!ticketDate.Equals(DateTime.Now.ToString("yyyy-MM-dd")))
|
|
|
|
|
{
|
|
|
|
|
//不是同一天,查询设置
|
|
|
|
|
this.ShowToastNotify(this, "只能退款当日单据!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//if ("已退单".Equals(row.Cells["status"].Value.ToString()))
|
|
|
|
|
//{
|
|
|
|
|
// this.ShowToastNotify(this, "订单已完全退单");
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
if ("已取消".Equals(row.Cells["status"].Value.ToString()))
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "订单已已取消,不能进行退款");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if ("待支付".Equals(row.Cells["status"].Value.ToString()))
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "订单未支付");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var refundFrom = new GuangChangRefundForm(orderProductInfo, orderProductMake);
|
|
|
|
|
|
|
|
|
|
refundFrom.AcceptButtonClick += (o, args) =>
|
|
|
|
|
{
|
|
|
|
|
List<VposOrderProduct> backList = (List<VposOrderProduct>)args.Data;
|
|
|
|
|
decimal rTotalAmount = 0.00M;
|
|
|
|
|
foreach (VposOrderProduct product in backList)
|
|
|
|
|
{
|
|
|
|
|
rTotalAmount = rTotalAmount + product.RfAmount;
|
|
|
|
|
}
|
|
|
|
|
//获取支付订单
|
|
|
|
|
if (orderPayInfo == null || orderPayInfo.Count <= 0)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "支付订单获取失败");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
VposOrderPay vposOrderPay = orderPayInfo[0];
|
|
|
|
|
int PayChannel = vposOrderPay.PayChannel;
|
|
|
|
|
if (PayChannel == (int)PayChannelEnum.扫呗支付)
|
|
|
|
|
{
|
|
|
|
|
//进行退单请求
|
|
|
|
|
var res = SaobeiApi.GetSaobeiParameter(AccountTypeEnum.门店);
|
|
|
|
|
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() : "";
|
|
|
|
|
SaobeiRefundParam request = new SaobeiRefundParam();
|
|
|
|
|
string payType = "020";
|
|
|
|
|
if ("04".Equals(vposOrderPay.PayTypeNo))
|
|
|
|
|
{
|
|
|
|
|
payType = "020";
|
|
|
|
|
}
|
|
|
|
|
else if ("05".Equals(vposOrderPay.PayTypeNo))
|
|
|
|
|
{
|
|
|
|
|
payType = "010";
|
|
|
|
|
}
|
|
|
|
|
request.Pay_type = payType;
|
|
|
|
|
request.Terminal_trace = tradeNo;
|
|
|
|
|
request.Refund_fee = string.Format("{0}", Convert.ToInt32(Math.Abs(rTotalAmount) * 100));
|
|
|
|
|
request.Out_trade_no = vposOrderPay.VoucherNo;
|
|
|
|
|
this.ShowToastNotify(this, "正在进行退款...请勿关闭!", 30000);
|
|
|
|
|
Task.Factory.StartNew(() =>
|
|
|
|
|
{
|
|
|
|
|
var upayPayment = SaobeiUtils.SaobeiRefund(merchant_no, terminal_id, signKey, gatewayUrl, request);
|
|
|
|
|
|
|
|
|
|
if (!upayPayment.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, upayPayment.Item2);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
VposStoreBusinessTicketRefundPart refundPart = new VposStoreBusinessTicketRefundPart();
|
|
|
|
|
refundPart.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
refundPart.StoreName = Global.Instance.Authc.StoreName;
|
|
|
|
|
refundPart.StoreNo = Global.Instance.Authc.StoreNo;
|
|
|
|
|
refundPart.WorkNo = Global.Instance.BusinessPlanLog.WorkerNo;
|
|
|
|
|
refundPart.SaleDate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
|
|
|
|
|
refundPart.DeviceName = DeviceUtils.Instance.ComputerName;
|
|
|
|
|
refundPart.DeviceMac = DeviceUtils.Instance.MacAddress;
|
|
|
|
|
refundPart.DeviceIp = DeviceUtils.Instance.IPAddress;
|
|
|
|
|
refundPart.PosNo = Global.Instance.BusinessPlanLog.PosNo;
|
|
|
|
|
List<VposStoreOrderProductRefundPart> orderProduct = new List<VposStoreOrderProductRefundPart>();
|
|
|
|
|
|
|
|
|
|
foreach (VposOrderProduct product in backList)
|
|
|
|
|
{
|
|
|
|
|
VposStoreOrderProductRefundPart item = new VposStoreOrderProductRefundPart();
|
|
|
|
|
item.Id = product.Id;
|
|
|
|
|
item.ClientId = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
item.ProductId = product.ProductId;
|
|
|
|
|
item.ProductNo = product.ProductNo;
|
|
|
|
|
item.ProductName = product.ProductName;
|
|
|
|
|
item.ProductUnitId = product.ProductUnitId;
|
|
|
|
|
item.ProductUnitName = product.ProductUnitName;
|
|
|
|
|
item.SeriesId = product.SeriesId;
|
|
|
|
|
item.SeriesName = product.SeriesName;
|
|
|
|
|
item.TypePath = product.TypePath;
|
|
|
|
|
item.TypeId = product.TypeId;
|
|
|
|
|
item.TypeName = product.TypeName;
|
|
|
|
|
item.SpecId = product.SpecId;
|
|
|
|
|
item.SpecName = product.SpecName;
|
|
|
|
|
item.Count = product.Count;
|
|
|
|
|
item.Rcount = product.Rcount;
|
|
|
|
|
item.Price = product.Price;
|
|
|
|
|
item.Brcount = product.RfCount;
|
|
|
|
|
item.Amount = product.RfAmount;
|
|
|
|
|
List<VposStoreOrderProductMakeRefundPart> tempList = new List<VposStoreOrderProductMakeRefundPart>();
|
|
|
|
|
List<VposOrderProductMake> makeList = product.MakeInfo;
|
|
|
|
|
if (makeList != null && makeList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (VposOrderProductMake make in makeList)
|
|
|
|
|
{
|
|
|
|
|
VposStoreOrderProductMakeRefundPart makeRefundPart = new VposStoreOrderProductMakeRefundPart();
|
|
|
|
|
makeRefundPart.ClientId = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
makeRefundPart.OrderItemId = item.ClientId;
|
|
|
|
|
makeRefundPart.MakeId = make.MakeId;
|
|
|
|
|
makeRefundPart.MakeName = make.MakeName;
|
|
|
|
|
makeRefundPart.AddPrice = make.AddPrice;
|
|
|
|
|
makeRefundPart.Brcount = product.RfCount;
|
|
|
|
|
tempList.Add(makeRefundPart);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
item.ProductMake = tempList;
|
|
|
|
|
orderProduct.Add(item);
|
|
|
|
|
}
|
|
|
|
|
refundPart.OrderProduct = orderProduct;
|
|
|
|
|
List<VposStorePayRefundPart> orderPay = new List<VposStorePayRefundPart>();
|
|
|
|
|
VposStorePayRefundPart vposStorePayRefundPart = new VposStorePayRefundPart();
|
|
|
|
|
vposStorePayRefundPart.ClientId = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
vposStorePayRefundPart.PayNo = vposOrderPay.PayNo;
|
|
|
|
|
vposStorePayRefundPart.PayTypeNo = vposOrderPay.PayTypeNo;
|
|
|
|
|
vposStorePayRefundPart.PayType = vposOrderPay.PayType;
|
|
|
|
|
vposStorePayRefundPart.Paid = rTotalAmount;
|
|
|
|
|
vposStorePayRefundPart.Money = rTotalAmount;
|
|
|
|
|
vposStorePayRefundPart.VoucherNo = upayPayment.Item3.Out_refund_no;
|
|
|
|
|
vposStorePayRefundPart.PayDate = refundPart.SaleDate;
|
|
|
|
|
vposStorePayRefundPart.Cardno = vposOrderPay.Cardno;
|
|
|
|
|
vposStorePayRefundPart.CardYe = vposOrderPay.CardYe;
|
|
|
|
|
vposStorePayRefundPart.CardJf = vposOrderPay.CardJf;
|
|
|
|
|
vposStorePayRefundPart.IncomeFlag = vposOrderPay.IncomeFlag;
|
|
|
|
|
vposStorePayRefundPart.OtherRateType = vposOrderPay.OtherRateType;
|
|
|
|
|
vposStorePayRefundPart.OtherRateValue = vposOrderPay.OtherRateValue;
|
|
|
|
|
vposStorePayRefundPart.OtherRate = vposOrderPay.OtherRate;
|
|
|
|
|
vposStorePayRefundPart.PayChannel = vposOrderPay.PayChannel;
|
|
|
|
|
orderPay.Add(vposStorePayRefundPart);
|
|
|
|
|
refundPart.OrderPay = orderPay;
|
|
|
|
|
var request1 = new VposOrderRefundPartRequest();
|
|
|
|
|
request1.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request1.TradeNo = tradeNo;
|
|
|
|
|
request1.PayRefundNo = upayPayment.Item3.Out_refund_no;
|
|
|
|
|
request1.RefundPart = refundPart;
|
|
|
|
|
var response = GuangChangUtils.VposOrderRefundPart(request1);
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "退款成功");
|
|
|
|
|
|
|
|
|
|
//获得当前页
|
|
|
|
|
int cur = pagerControl1.CurrentPage;
|
|
|
|
|
//获得每页显示的记录数
|
|
|
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
|
QueryTicket(cur, rows);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//会员退款
|
|
|
|
|
if (vposOrderPay.PayTypeNo.Equals("02"))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Proxy.Member.Trade.MemberTradeProxy _proxy = new Proxy.Member.Trade.MemberTradeProxy();
|
|
|
|
|
Card.CardTradeRefundRequest _request = new Card.CardTradeRefundRequest();
|
|
|
|
|
|
|
|
|
|
_request.TradeVoucherNo = vposOrderPay.VoucherNo;
|
|
|
|
|
_request.WorkerNo = Global.Instance.Worker.No;
|
|
|
|
|
_request.TradeNo = tradeNo;
|
|
|
|
|
_request.TotalPoint = 0;
|
|
|
|
|
_request.TotalAmount = (int)vposOrderPay.Money * 100;
|
|
|
|
|
_request.TicketNo = vposOrderPay.TicketId;
|
|
|
|
|
_request.SourceSign = "pos";
|
|
|
|
|
_request.ShopNo = Global.Instance.BusinessPlanLog.StoreNo;
|
|
|
|
|
_request.Reason = "";
|
|
|
|
|
_request.PosNo = Global.Instance.Authc.PosNo;
|
|
|
|
|
|
|
|
|
|
_request.CardInfo = new List<Card.CardInfo>()
|
|
|
|
|
{
|
|
|
|
|
new Card.CardInfo()
|
|
|
|
|
{
|
|
|
|
|
Amount = (int)vposOrderPay.Money * 100,
|
|
|
|
|
CardNo = vposOrderPay.Cardno
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var _data = _proxy.MemberTradeRefund(_request);
|
|
|
|
|
|
|
|
|
|
if (!_data.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, _data.Item2);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VposStoreBusinessTicketRefundPart refundPart = new VposStoreBusinessTicketRefundPart();
|
|
|
|
|
refundPart.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
refundPart.StoreName = Global.Instance.Authc.StoreName;
|
|
|
|
|
refundPart.StoreNo = Global.Instance.Authc.StoreNo;
|
|
|
|
|
refundPart.WorkNo = Global.Instance.BusinessPlanLog.WorkerNo;
|
|
|
|
|
refundPart.SaleDate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
|
|
|
|
|
refundPart.DeviceName = DeviceUtils.Instance.ComputerName;
|
|
|
|
|
refundPart.DeviceMac = DeviceUtils.Instance.MacAddress;
|
|
|
|
|
refundPart.DeviceIp = DeviceUtils.Instance.IPAddress;
|
|
|
|
|
refundPart.PosNo = Global.Instance.BusinessPlanLog.PosNo;
|
|
|
|
|
List<VposStoreOrderProductRefundPart> orderProduct = new List<VposStoreOrderProductRefundPart>();
|
|
|
|
|
|
|
|
|
|
foreach (VposOrderProduct product in backList)
|
|
|
|
|
{
|
|
|
|
|
VposStoreOrderProductRefundPart item = new VposStoreOrderProductRefundPart();
|
|
|
|
|
item.Id = product.Id;
|
|
|
|
|
item.ClientId = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
item.ProductId = product.ProductId;
|
|
|
|
|
item.ProductNo = product.ProductNo;
|
|
|
|
|
item.ProductName = product.ProductName;
|
|
|
|
|
item.ProductUnitId = product.ProductUnitId;
|
|
|
|
|
item.ProductUnitName = product.ProductUnitName;
|
|
|
|
|
item.SeriesId = product.SeriesId;
|
|
|
|
|
item.SeriesName = product.SeriesName;
|
|
|
|
|
item.TypePath = product.TypePath;
|
|
|
|
|
item.TypeId = product.TypeId;
|
|
|
|
|
item.TypeName = product.TypeName;
|
|
|
|
|
item.SpecId = product.SpecId;
|
|
|
|
|
item.SpecName = product.SpecName;
|
|
|
|
|
item.Count = product.Count;
|
|
|
|
|
item.Rcount = product.Rcount;
|
|
|
|
|
item.Price = product.Price;
|
|
|
|
|
item.Brcount = product.RfCount;
|
|
|
|
|
item.Amount = product.RfAmount;
|
|
|
|
|
List<VposStoreOrderProductMakeRefundPart> tempList = new List<VposStoreOrderProductMakeRefundPart>();
|
|
|
|
|
List<VposOrderProductMake> makeList = product.MakeInfo;
|
|
|
|
|
if (makeList != null && makeList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (VposOrderProductMake make in makeList)
|
|
|
|
|
{
|
|
|
|
|
VposStoreOrderProductMakeRefundPart makeRefundPart = new VposStoreOrderProductMakeRefundPart();
|
|
|
|
|
makeRefundPart.ClientId = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
makeRefundPart.OrderItemId = item.ClientId;
|
|
|
|
|
makeRefundPart.MakeId = make.MakeId;
|
|
|
|
|
makeRefundPart.MakeName = make.MakeName;
|
|
|
|
|
makeRefundPart.AddPrice = make.AddPrice;
|
|
|
|
|
makeRefundPart.Brcount = product.RfCount;
|
|
|
|
|
tempList.Add(makeRefundPart);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
item.ProductMake = tempList;
|
|
|
|
|
orderProduct.Add(item);
|
|
|
|
|
}
|
|
|
|
|
refundPart.OrderProduct = orderProduct;
|
|
|
|
|
List<VposStorePayRefundPart> orderPay = new List<VposStorePayRefundPart>();
|
|
|
|
|
VposStorePayRefundPart vposStorePayRefundPart = new VposStorePayRefundPart();
|
|
|
|
|
vposStorePayRefundPart.ClientId = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
vposStorePayRefundPart.PayNo = vposOrderPay.PayNo;
|
|
|
|
|
vposStorePayRefundPart.PayTypeNo = vposOrderPay.PayTypeNo;
|
|
|
|
|
vposStorePayRefundPart.PayType = vposOrderPay.PayType;
|
|
|
|
|
vposStorePayRefundPart.Paid = rTotalAmount;
|
|
|
|
|
vposStorePayRefundPart.Money = rTotalAmount;
|
|
|
|
|
vposStorePayRefundPart.VoucherNo = _data.Item3.RefNo;
|
|
|
|
|
vposStorePayRefundPart.PayDate = refundPart.SaleDate;
|
|
|
|
|
vposStorePayRefundPart.Cardno = vposOrderPay.Cardno;
|
|
|
|
|
vposStorePayRefundPart.CardYe = vposOrderPay.CardYe;
|
|
|
|
|
vposStorePayRefundPart.CardJf = vposOrderPay.CardJf;
|
|
|
|
|
vposStorePayRefundPart.IncomeFlag = vposOrderPay.IncomeFlag;
|
|
|
|
|
vposStorePayRefundPart.OtherRateType = vposOrderPay.OtherRateType;
|
|
|
|
|
vposStorePayRefundPart.OtherRateValue = vposOrderPay.OtherRateValue;
|
|
|
|
|
vposStorePayRefundPart.OtherRate = vposOrderPay.OtherRate;
|
|
|
|
|
vposStorePayRefundPart.PayChannel = vposOrderPay.PayChannel;
|
|
|
|
|
orderPay.Add(vposStorePayRefundPart);
|
|
|
|
|
refundPart.OrderPay = orderPay;
|
|
|
|
|
|
|
|
|
|
var request1 = new VposOrderRefundPartRequest();
|
|
|
|
|
request1.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request1.TradeNo = tradeNo;
|
|
|
|
|
request1.PayRefundNo = _data.Item3.RefNo;
|
|
|
|
|
request1.RefundPart = refundPart;
|
|
|
|
|
var response = GuangChangUtils.VposOrderRefundPart(request1);
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, "退款成功");
|
|
|
|
|
|
|
|
|
|
//获得当前页
|
|
|
|
|
int cur = pagerControl1.CurrentPage;
|
|
|
|
|
//获得每页显示的记录数
|
|
|
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
|
QueryTicket(cur, rows);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
var trans = new TransparentForm(this, refundFrom);
|
|
|
|
|
trans.Show(this);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var ret = AuthzUtils.Instance.CheckAuthz(this, "退单", permissionCode, action);
|
|
|
|
|
|
|
|
|
|
if (!ret.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.ShowToastNotify(this, ret.Item2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BtnExitClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OnCloseTouchClick(sender, e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BtnTimeClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var obj = sender as ButtonX;
|
|
|
|
|
var typeStr = obj.Tag as string;
|
|
|
|
|
var type = (ReportQuickDate)Enum.Parse(typeof(ReportQuickDate), typeStr);
|
|
|
|
|
var res = DateTimeUtils.CalculateBusinessPlanDate(type, this.startPicker.Value, this.endPicker.Value);
|
|
|
|
|
this.startPicker.Value = res.Item1;
|
|
|
|
|
this.endPicker.Value = res.Item2;
|
|
|
|
|
//获得当前页
|
|
|
|
|
int cur = pagerControl1.CurrentPage;
|
|
|
|
|
//获得每页显示的记录数
|
|
|
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
|
QueryTicket(cur, rows);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnBind(object sender, DevComponents.DotNetBar.SuperGrid.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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnTicketRowActivated(object sender, DevComponents.DotNetBar.SuperGrid.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["no"].Value.ToString();
|
|
|
|
|
|
|
|
|
|
var request = new VposOrderDetailRequest();
|
|
|
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request.TradeNo = tradeNo;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var response = GuangChangUtils.VposOrderDetail(request);
|
|
|
|
|
//商品数据
|
|
|
|
|
if (response.Item3.Data.OrderProduct != null)
|
|
|
|
|
{
|
|
|
|
|
List<VposOrderProduct> list = response.Item3.Data.OrderProduct;
|
|
|
|
|
foreach (VposOrderProduct vposOrderProduct in list)
|
|
|
|
|
{
|
|
|
|
|
if (vposOrderProduct.IsSuit == 1)
|
|
|
|
|
{
|
|
|
|
|
vposOrderProduct.RowState = "普通菜";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrderProduct.IsSuit == 2)
|
|
|
|
|
{
|
|
|
|
|
vposOrderProduct.RowState = "套餐主菜";
|
|
|
|
|
}
|
|
|
|
|
if (vposOrderProduct.IsSuit == 3)
|
|
|
|
|
{
|
|
|
|
|
vposOrderProduct.RowState = "明细菜";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
productListTable.PrimaryGrid.DataSource = list;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
productListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
}
|
|
|
|
|
//做法信息
|
|
|
|
|
if (response.Item3.Data.MakeInfo != null)
|
|
|
|
|
{
|
|
|
|
|
productMakeListTable.PrimaryGrid.DataSource = response.Item3.Data.MakeInfo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
productMakeListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
}
|
|
|
|
|
//支付信息
|
|
|
|
|
if (response.Item3.Data.PayInfo != null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
payListTable.PrimaryGrid.DataSource = response.Item3.Data.PayInfo;
|
|
|
|
|
orderPayInfo = response.Item3.Data.PayInfo;
|
|
|
|
|
orderProductInfo = response.Item3.Data.OrderProduct;
|
|
|
|
|
orderProductMake = response.Item3.Data.MakeInfo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
payListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
orderPayInfo = null;
|
|
|
|
|
orderProductInfo = null;
|
|
|
|
|
orderProductMake = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
productListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
productMakeListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
payListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
orderPayInfo = null;
|
|
|
|
|
orderProductInfo = null;
|
|
|
|
|
orderProductMake = null;
|
|
|
|
|
this.ShowToastNotify(this, "订单详情获取异常");
|
|
|
|
|
|
|
|
|
|
LOGGER.Error(ex, "订单详情获取异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
productListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
productMakeListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
payListTable.PrimaryGrid.Rows.Clear();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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 OnControlBoxMinClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.WindowState = FormWindowState.Minimized;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CbChangeClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var obj = sender as CheckBoxX;
|
|
|
|
|
var indexT = obj.Tag as string;
|
|
|
|
|
if ("全部".Equals(indexT))
|
|
|
|
|
{
|
|
|
|
|
orderType = 0;
|
|
|
|
|
}
|
|
|
|
|
if ("待付款".Equals(indexT))
|
|
|
|
|
{
|
|
|
|
|
orderType = 1;
|
|
|
|
|
}
|
|
|
|
|
if ("已完成".Equals(indexT))
|
|
|
|
|
{
|
|
|
|
|
orderType = 2;
|
|
|
|
|
}
|
|
|
|
|
this.mobile.Focus();
|
|
|
|
|
this.mobile.SelectAll();
|
|
|
|
|
|
|
|
|
|
//获得当前页
|
|
|
|
|
int cur = pagerControl1.CurrentPage;
|
|
|
|
|
//获得每页显示的记录数
|
|
|
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
|
QueryTicket(cur, rows);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnQueryPageChangeWithObject(object obj)
|
|
|
|
|
{
|
|
|
|
|
//获得当前页
|
|
|
|
|
int cur = pagerControl1.CurrentPage;
|
|
|
|
|
//获得每页显示的记录数
|
|
|
|
|
int rows = pagerControl1.RowsPerPage;
|
|
|
|
|
|
|
|
|
|
PagerControl pager = obj as PagerControl;
|
|
|
|
|
if (pager != null)
|
|
|
|
|
{
|
|
|
|
|
QueryTicket(cur, rows);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|