|
|
|
|
using DevComponents.DotNetBar.Controls;
|
|
|
|
|
using NLog;
|
|
|
|
|
using POSV.Card;
|
|
|
|
|
using POSV.Component;
|
|
|
|
|
using POSV.Entity;
|
|
|
|
|
using POSV.Helper;
|
|
|
|
|
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.Reflection;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
namespace POSV.Member
|
|
|
|
|
{
|
|
|
|
|
public partial class GiftCardForm : BusinessForm
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private static Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
|
|
|
|
|
|
private List<PayMode> payTypeList = new List<PayMode>();
|
|
|
|
|
|
|
|
|
|
private string payTypeNo = "";
|
|
|
|
|
private string payTypeName = "请选择支付方式";
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 支付渠道
|
|
|
|
|
/// </summary>
|
|
|
|
|
private PayChannelEnum _payChannel = PayChannelEnum.无;
|
|
|
|
|
|
|
|
|
|
//充值单号
|
|
|
|
|
private string outTradeNo = null;
|
|
|
|
|
|
|
|
|
|
private QueryGiftCardDetailResponse queryGiftCardDetailResponse;
|
|
|
|
|
|
|
|
|
|
public GiftCardForm()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
this.controlBox.Text = "礼品卡销售";
|
|
|
|
|
this.controlBox.ShowApplicationVersion = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnLoad(e);
|
|
|
|
|
|
|
|
|
|
if (this.DesignMode) return;
|
|
|
|
|
this.Focus();
|
|
|
|
|
this.txtInput.Focus();
|
|
|
|
|
this.txtInput.SelectAll();
|
|
|
|
|
this.ActiveControl = this.txtInput;
|
|
|
|
|
//填充支付方式
|
|
|
|
|
InitPayType();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void InitPayType()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sqlBuf = new StringBuilder();
|
|
|
|
|
sqlBuf.Append(" select no,name from pos_paymode where rechargeFlag = 1 ");
|
|
|
|
|
sqlBuf.Append(" order by no;");
|
|
|
|
|
List<PayMode> list = db.Fetch<PayMode>(sqlBuf.ToString());
|
|
|
|
|
List<PayMode> listCommon = new List<PayMode>();
|
|
|
|
|
List<PayMode> listSaoMa = new List<PayMode>();
|
|
|
|
|
foreach (PayMode payMode in list)
|
|
|
|
|
{
|
|
|
|
|
if (payMode.No.Equals("04") || payMode.No.Equals("05"))
|
|
|
|
|
{
|
|
|
|
|
listSaoMa.Add(payMode);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
listCommon.Add(payMode);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
PayMode defaultPayMode = new PayMode();
|
|
|
|
|
defaultPayMode.Name = "请选择支付方式";
|
|
|
|
|
payTypeList.Add(defaultPayMode);
|
|
|
|
|
if (listSaoMa != null && listSaoMa.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
PayMode saomaPayMode = new PayMode();
|
|
|
|
|
saomaPayMode.No = "04";
|
|
|
|
|
saomaPayMode.Name = "扫码支付";
|
|
|
|
|
payTypeList.Add(saomaPayMode);
|
|
|
|
|
}
|
|
|
|
|
if (listCommon != null && listCommon.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
payTypeList.AddRange(listCommon);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOGGER.Error(ex);
|
|
|
|
|
}
|
|
|
|
|
this.payTypeCheckBox.DisplayMember = "name";
|
|
|
|
|
this.payTypeCheckBox.ValueMember = "no";
|
|
|
|
|
this.payTypeCheckBox.DataSource = payTypeList;
|
|
|
|
|
this.payTypeCheckBox.SelectedIndexChanged += OnPayTypeSelectedIndexChanged;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnPayTypeSelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var obj = sender as ComboBoxEx;
|
|
|
|
|
payTypeNo = StringUtils.GetString(obj.SelectedValue);
|
|
|
|
|
PayMode payMode = payTypeList.Find(x => payTypeNo.Equals(x.No));
|
|
|
|
|
if (payMode != null)
|
|
|
|
|
{
|
|
|
|
|
payTypeName = payMode.Name;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
payTypeName = "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 关闭窗口
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void OnCloseTouchClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//先关闭父窗体
|
|
|
|
|
if (this.Owner != null)
|
|
|
|
|
{
|
|
|
|
|
this.Owner.Close();
|
|
|
|
|
}
|
|
|
|
|
//再关闭当前窗体
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 打开键盘
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void OnControlBoxKeyboardClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
KeyboardType keyboardType = KeyboardType.数字;
|
|
|
|
|
Type type = this.ActiveControl.GetType();
|
|
|
|
|
PropertyInfo pinfo = type.GetProperty("Keyboard");
|
|
|
|
|
if (pinfo != null)
|
|
|
|
|
{
|
|
|
|
|
keyboardType = (KeyboardType)pinfo.GetValue(this.ActiveControl, null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var keyboard = Application.OpenForms["VirtualKeyboard"];
|
|
|
|
|
if (keyboard == null)
|
|
|
|
|
{
|
|
|
|
|
keyboard = new VirtualKeyboard(keyboardType);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
((VirtualKeyboard)keyboard).ShowVirtualKeyboard(this, keyboardType);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOGGER.Error(ex, "打开屏幕键盘异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 读卡
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void OnReadCardClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var result = CardOperateUtils.Instance.ReadCardNo();
|
|
|
|
|
|
|
|
|
|
if (result.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.txtInput.Text = result.Item2;
|
|
|
|
|
//读卡成功,模拟回车事件
|
|
|
|
|
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result = CardOperateUtilsOther.Instance.ReadCardNo();
|
|
|
|
|
if (result.Item1)
|
|
|
|
|
{
|
|
|
|
|
this.txtInput.Text = result.Item2;
|
|
|
|
|
//读卡成功,模拟回车事件
|
|
|
|
|
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.ShowMessage(lblInfo, result.Item2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 回车键
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void OnFinishedClick(object sender, EnterEventArg e)
|
|
|
|
|
{
|
|
|
|
|
var isVerify = InputVerify();
|
|
|
|
|
if (isVerify)
|
|
|
|
|
{
|
|
|
|
|
var voucherNo = this.txtInput.Text;
|
|
|
|
|
CardGiftMessage(voucherNo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 礼品卡信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void CardGiftMessage(string cardNo)
|
|
|
|
|
{
|
|
|
|
|
queryGiftCardDetailResponse = null;
|
|
|
|
|
this.labelX7.Text = "";//礼品卡方案
|
|
|
|
|
this.labelX5.Text = "";//礼品卡面额
|
|
|
|
|
this.labelX6.Text = "";//礼品卡建议零售价
|
|
|
|
|
this.numericTextBox1.Text = "";//礼品卡付款金额
|
|
|
|
|
//第一步先校验礼品卡是否卡销售
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var requestCheck = new CheckSaleGiftCardRequest();
|
|
|
|
|
requestCheck.CardNo = cardNo;
|
|
|
|
|
requestCheck.ShopNo = Global.Instance.Authc.StoreNo;
|
|
|
|
|
requestCheck.PosNo = Global.Instance.Authc.PosNo;
|
|
|
|
|
requestCheck.WorkerNo = Global.Instance.Worker.No;
|
|
|
|
|
var responseCheck = CardUtils.CheckSaleGiftCard(requestCheck);
|
|
|
|
|
if (responseCheck.Item1)
|
|
|
|
|
{
|
|
|
|
|
var request = new QueryGiftCardDetailRequest();
|
|
|
|
|
request.CardNo = cardNo;
|
|
|
|
|
request.ShopNo = Global.Instance.Authc.StoreNo;
|
|
|
|
|
request.PosNo = Global.Instance.Authc.PosNo;
|
|
|
|
|
request.WorkerNo = Global.Instance.Worker.No;
|
|
|
|
|
var response = CardUtils.QueryGiftCardDetail(request);
|
|
|
|
|
//成功
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
queryGiftCardDetailResponse = response.Item3.Data;
|
|
|
|
|
this.labelX7.Text = queryGiftCardDetailResponse.SchemeName;//礼品卡方案
|
|
|
|
|
this.labelX5.Text = string.Format("{0}", queryGiftCardDetailResponse.FaceValue);//礼品卡面额
|
|
|
|
|
this.labelX6.Text = string.Format("{0}", queryGiftCardDetailResponse.RetailPrice);//礼品卡建议零售价
|
|
|
|
|
this.numericTextBox1.Text = string.Format("{0}", queryGiftCardDetailResponse.RetailPrice);//礼品卡付款金额
|
|
|
|
|
ShowMessage(this.lblInfo, response.Item2, false);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, response.Item2, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
ShowMessage(this.lblInfo, responseCheck.Item2, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, "礼品卡信息查询异常", true);
|
|
|
|
|
|
|
|
|
|
LOGGER.Error(ex, "礼品卡信息查询异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 输入是否验证通过
|
|
|
|
|
/// </summary>
|
|
|
|
|
private bool InputVerify()
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(this.txtInput.Text.Trim()))
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, "请输入卡号信息", false);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 退出按钮
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void BtnExitClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OnCloseTouchClick(sender, e);
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 数字键
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void OnBtnCustomClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var item = sender as NumericTextBox;
|
|
|
|
|
|
|
|
|
|
NumericKeyboard.ShowKeyboard(this, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BtnQueryClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var isVerify = InputVerify();
|
|
|
|
|
if (isVerify)
|
|
|
|
|
{
|
|
|
|
|
var voucherNo = this.txtInput.Text;
|
|
|
|
|
CardGiftMessage(voucherNo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 确定销售
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void BtnClickOk(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (queryGiftCardDetailResponse != null)
|
|
|
|
|
{
|
|
|
|
|
decimal money = StringUtils.GetDecimal(this.numericTextBox1.Text);
|
|
|
|
|
if (queryGiftCardDetailResponse.CardNo == null || "".Equals(queryGiftCardDetailResponse.CardNo))
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, "请输入先获取卡号", true);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (money <= 0)
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, "请输入充值金额", true);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if ("".Equals(payTypeNo))
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, "请选择支付方式", true);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ShowMessage(this.lblInfo, "正在销售", true);
|
|
|
|
|
this.outTradeNo = string.Format("{0}_{1}{2}", Global.Instance.Authc.StoreNo, Global.Instance.Authc.PosNo, DateTime.Now.ToString("yyyyMMddHHmmss"));
|
|
|
|
|
//第一步,发起充值
|
|
|
|
|
if ("04".Equals(payTypeNo) || "05".Equals(payTypeNo))
|
|
|
|
|
{
|
|
|
|
|
//如果选择支付宝或者微信,先去扣钱
|
|
|
|
|
var form = new GiftCardSaomaForm(queryGiftCardDetailResponse.CardNo, money, this.outTradeNo);
|
|
|
|
|
form.OnSaomaResultClick += Form_OnSaomaResultClick;
|
|
|
|
|
TransparentForm trans = new TransparentForm(this, form);
|
|
|
|
|
trans.Show(this);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DoSale(outTradeNo, money);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
ShowMessage(this.lblInfo, "请先刷卡", true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Form_OnSaomaResultClick(GiftCardSaomaEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Tuple<bool, CardSaomaResult> saomaResult = e.SaomaResult;
|
|
|
|
|
//如果支付成功则进行充值
|
|
|
|
|
if (saomaResult.Item1)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
this.payTypeNo = saomaResult.Item2.PayModeNo;
|
|
|
|
|
this.payTypeName = saomaResult.Item2.PayModeName;
|
|
|
|
|
this._payChannel = saomaResult.Item2.PayChannel;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
lock (Global.Instance.SyncLock)
|
|
|
|
|
{
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
using (var transaction = db.GetTransaction())
|
|
|
|
|
{
|
|
|
|
|
logger.Info("单号:[{0}]更改扫码支付状态 payStatus==>1......开始", saomaResult.Item2.OutTradeNo);
|
|
|
|
|
string sql = "update pos_saoma_pay_ticket set payStatus =1 where orderNo = '{0}'";
|
|
|
|
|
sql = string.Format(sql, saomaResult.Item2.OutTradeNo);
|
|
|
|
|
db.Execute(sql, null);
|
|
|
|
|
transaction.Complete();
|
|
|
|
|
logger.Info("单号:[{0}]更改扫码支付状态 payStatus==>1......更新成功", saomaResult.Item2.OutTradeNo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOGGER.Error(ex);
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(saomaResult.Item2.OutTradeNo))
|
|
|
|
|
{
|
|
|
|
|
DoSale(saomaResult.Item2.OutTradeNo, saomaResult.Item2.PayMoney, saomaResult.Item2.Out_trade_no);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DoSale(saomaResult.Item2.OutTradeNo, saomaResult.Item2.PayMoney);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void DoSale(string payVoucherNo,decimal SaleAmount ,string OutTradeNo = "") {
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var request = new SaleGiftCardRecordRequest();
|
|
|
|
|
request.CardNo = queryGiftCardDetailResponse.CardNo;
|
|
|
|
|
request.SaleAmount = SaleAmount;
|
|
|
|
|
request.PayTypeNo = payTypeNo;
|
|
|
|
|
request.PayType = payTypeName;
|
|
|
|
|
request.PayVoucherNo = payVoucherNo;
|
|
|
|
|
request.ShopNo = Global.Instance.Authc.StoreNo;
|
|
|
|
|
request.PosNo = Global.Instance.Authc.PosNo;
|
|
|
|
|
request.WorkerNo = Global.Instance.Worker.No;
|
|
|
|
|
var response = CardUtils.SaleGiftCardRecord(request);
|
|
|
|
|
//成功
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
SaleGiftCardRecordResponse saleGiftCardRecordResponse = response.Item3.Data;
|
|
|
|
|
ShowMessage(this.lblInfo, response.Item2, true);
|
|
|
|
|
SaveSaleTickt(request, saleGiftCardRecordResponse, OutTradeNo);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, response.Item2, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ShowMessage(this.lblInfo, "礼品卡销售异常", true);
|
|
|
|
|
|
|
|
|
|
LOGGER.Error(ex, "礼品卡销售异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SaveSaleTickt(SaleGiftCardRecordRequest request,SaleGiftCardRecordResponse response,string out_trade_no = "") {
|
|
|
|
|
string busNo = this.outTradeNo.Split('_')[1];
|
|
|
|
|
CardSale entity = new CardSale();
|
|
|
|
|
entity.Id = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
entity.TenantId = Global.Instance.BusinessPlanLog.TenantId;
|
|
|
|
|
entity.StoreId = Global.Instance.BusinessPlanLog.StoreId;
|
|
|
|
|
entity.StoreNo = Global.Instance.BusinessPlanLog.StoreNo;
|
|
|
|
|
entity.StoreName = Global.Instance.Authc.StoreName;
|
|
|
|
|
entity.WorkerId = Global.Instance.BusinessPlanLog.WorkerId;
|
|
|
|
|
entity.WorkerName = Global.Instance.BusinessPlanLog.WorkerName;
|
|
|
|
|
entity.WorkerNo = Global.Instance.BusinessPlanLog.WorkerNo;
|
|
|
|
|
entity.PosNo = Global.Instance.Authc.PosNo;
|
|
|
|
|
entity.ShiftName = Global.Instance.BusinessPlanLog.Name;
|
|
|
|
|
entity.ShiftNo = Global.Instance.BusinessPlanLog.No;
|
|
|
|
|
entity.PlanNo = response.SchemeNo;
|
|
|
|
|
entity.PlanName = response.SchemeName;
|
|
|
|
|
entity.CardNo = response.CardNo;
|
|
|
|
|
entity.BusNo = busNo;
|
|
|
|
|
entity.TicketNo = response.TicketNo;
|
|
|
|
|
entity.PayStatus = 1;//付款成功
|
|
|
|
|
entity.AuthCode = "";
|
|
|
|
|
entity.RetailPrice = response.RetailPrice;
|
|
|
|
|
entity.RealAmount = response.RealAmount;
|
|
|
|
|
entity.Money = request.SaleAmount;
|
|
|
|
|
|
|
|
|
|
string data = JsonUtils.Serialize(request);
|
|
|
|
|
entity.RequestMessage = data;
|
|
|
|
|
List<CardSalePay> pay = new List<CardSalePay>();
|
|
|
|
|
CardSalePay cardSalePay = new CardSalePay();
|
|
|
|
|
cardSalePay.Amount = request.SaleAmount;
|
|
|
|
|
cardSalePay.TicketId = entity.Id;
|
|
|
|
|
cardSalePay.PayName = payTypeName;
|
|
|
|
|
cardSalePay.PayNo = payTypeNo;
|
|
|
|
|
cardSalePay.TenantId = Global.Instance.BusinessPlanLog.TenantId;
|
|
|
|
|
cardSalePay.VoucherNo = this.outTradeNo;
|
|
|
|
|
cardSalePay.Id = IdWorkerUtils.Instance.NextId();
|
|
|
|
|
cardSalePay.PayChannel = this._payChannel;
|
|
|
|
|
cardSalePay.Memo = out_trade_no;
|
|
|
|
|
pay.Add(cardSalePay);
|
|
|
|
|
entity.Pay = pay;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
lock (Global.Instance.SyncLock)
|
|
|
|
|
{
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
using (var transaction = db.GetTransaction())
|
|
|
|
|
{
|
|
|
|
|
logger.Info("单号:[{0}]保存礼品卡销售订单......开始", entity.BusNo);
|
|
|
|
|
// 保存主单数据
|
|
|
|
|
db.Save<CardSale>(entity);
|
|
|
|
|
// 保存支付明细
|
|
|
|
|
List<CardSalePay> detail = entity.Pay;
|
|
|
|
|
if (detail != null && detail.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (CardSalePay detailEntity in detail)
|
|
|
|
|
{
|
|
|
|
|
db.Save<CardSalePay>(detailEntity);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
transaction.Complete();
|
|
|
|
|
logger.Info("单号:[{0}]保存礼品卡销售订单......成功", entity.BusNo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOGGER.Error(ex);
|
|
|
|
|
}
|
|
|
|
|
//成功以后打印
|
|
|
|
|
this.ShowToastNotify(this, "开始打印");
|
|
|
|
|
//构建收银小票模版参数打印
|
|
|
|
|
var vars = CardHelper.BuilderGiftCardVariable(request, response,false,false);
|
|
|
|
|
//现金充值开钱箱
|
|
|
|
|
bool openCashbox = false;
|
|
|
|
|
if ("01".Equals(request.PayTypeNo))
|
|
|
|
|
{
|
|
|
|
|
openCashbox = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//充值打印份数
|
|
|
|
|
int ticketCount = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_RECHARGE_COUNT, 1);
|
|
|
|
|
//打印延迟
|
|
|
|
|
int delaySecond = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_CARD_PRINT_DELAY, 1);
|
|
|
|
|
|
|
|
|
|
//执行收银小票打印
|
|
|
|
|
Tuple<bool, string> result = CardHelper.PrinterTicket("礼品卡销售", vars, true, openCashbox, ticketCount, delaySecond);
|
|
|
|
|
|
|
|
|
|
this.ShowToastNotify(this, string.Format("{0}", result.Item2));
|
|
|
|
|
//打开提示界面
|
|
|
|
|
var form = new GiftCardResultForm(request, response);
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
|
|
|
|
|
//先关闭父窗体
|
|
|
|
|
if (this.Owner != null)
|
|
|
|
|
{
|
|
|
|
|
this.Owner.Close();
|
|
|
|
|
}
|
|
|
|
|
//再关闭当前窗体
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|