You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
394 lines
14 KiB
C#
394 lines
14 KiB
C#
using POSV.Bean;
|
|
using POSV.Card;
|
|
using POSV.Helper;
|
|
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 CardMergeForm2 : BusinessForm
|
|
{
|
|
public CardMergeForm2()
|
|
{
|
|
InitializeComponent();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 线上会员
|
|
/// </summary>
|
|
private MemberInfoQueryResponse Onlinemember = null;
|
|
|
|
/// <summary>
|
|
/// 线下会员
|
|
/// </summary>
|
|
private MemberInfoQueryResponse Offlinemember = null;
|
|
|
|
|
|
/// <summary>
|
|
/// 会员卡信息
|
|
/// </summary>
|
|
private MemberInfoQueryResponse CardInfoMessage(string property, string txtInput)
|
|
{
|
|
try
|
|
{
|
|
var request = new MemberInfoQueryRequest();
|
|
request.Property = property;
|
|
request.Keyword = txtInput;
|
|
request.ShopNo = Global.Instance.Authc.StoreNo;
|
|
request.PosNo = Global.Instance.Authc.PosNo;
|
|
request.WorkerNo = Global.Instance.Worker.No;
|
|
var response = CardUtils.MemberInfoQuery(request);
|
|
|
|
//成功
|
|
if (response.Item1)
|
|
{
|
|
ShowMessage(this.lblInfo, response.Item2, false);
|
|
MemberInfoQueryResponse memberInfoQueryResponse = response.Item3;
|
|
//label7.Text = memberInfoQueryResponse.Name;
|
|
//label5.Text = memberInfoQueryResponse.LinkPhone;
|
|
//label9.Text = memberInfoQueryResponse.CurrentCard.AvailableAmount.ToString("0.00");
|
|
//label11.Text = memberInfoQueryResponse.CurrentCard.TotalPoint.ToString("0.00");
|
|
|
|
return memberInfoQueryResponse;
|
|
}
|
|
else
|
|
{
|
|
ShowMessage(this.lblInfo, response.Item2, true);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ShowMessage(this.lblInfo, "会员卡信息查询异常", true);
|
|
|
|
LOGGER.Error(ex, "会员卡信息查询异常");
|
|
}
|
|
|
|
return null;
|
|
}
|
|
private void btnOnlineCard_Click(object sender, EventArgs e)
|
|
{
|
|
var _voucherNo = this.numericTextBox1.Text;
|
|
var way = CardUtils.JudgeCardWay(Global.Instance.Worker.TenantId, _voucherNo);
|
|
if (way == MemberCardNoType.未知)
|
|
{
|
|
this.ShowMessage(this.lblInfo, "无法识别的卡号,请确认", true);
|
|
return;
|
|
}
|
|
|
|
//if (way != MemberCardNoType.电子卡号)
|
|
//{
|
|
// this.ShowMessage(this.lblInfo, "请扫描客户手机上的会员码", true);
|
|
// return;
|
|
//}
|
|
|
|
string Property = string.Empty;
|
|
switch (way)
|
|
{
|
|
case MemberCardNoType.电子卡号:
|
|
{
|
|
Property = "scanCode";
|
|
}
|
|
break;
|
|
case MemberCardNoType.真实卡号:
|
|
{
|
|
Property = "cardNo";
|
|
}
|
|
break;
|
|
case MemberCardNoType.手机号:
|
|
{
|
|
Property = "mobile";
|
|
}
|
|
break;
|
|
case MemberCardNoType.卡面号:
|
|
{
|
|
Property = "surfaceNo";
|
|
}
|
|
break;
|
|
}
|
|
|
|
|
|
var _data = CardInfoMessage(Property, _voucherNo);
|
|
|
|
if (_data == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
this.Onlinemember = _data;
|
|
|
|
label7.Text = _data.Name;
|
|
label5.Text = _data.Mobile;
|
|
label9.Text = _data.CardList[0].AvailableAmount.ToString("0.00");
|
|
label11.Text = _data.CardList[0].TotalPoint.ToString("0.00");
|
|
label1.Text = _data.CardList[0].CardNo;
|
|
return;
|
|
}
|
|
|
|
private void txtInput_ButtonCustomClick(object sender, EventArgs e)
|
|
{
|
|
var result = CardOperateUtils.Instance.ReadCardNo();
|
|
|
|
if (result.Item1)
|
|
{
|
|
this.txtInput.Text = result.Item2;
|
|
|
|
btnOfflineCard_Click(null, null);
|
|
}
|
|
else
|
|
{
|
|
result = CardOperateUtilsOther.Instance.ReadCardNo();
|
|
if (result.Item1)
|
|
{
|
|
this.txtInput.Text = result.Item2;
|
|
btnOfflineCard_Click(null, null);
|
|
}
|
|
else
|
|
{
|
|
this.ShowMessage(lblInfo, result.Item2);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void txtInput_OnEnterClick(object sender, Component.EnterEventArg e)
|
|
{
|
|
txtInput_ButtonCustomClick(null, null);
|
|
}
|
|
|
|
private void btnOfflineCard_Click(object sender, EventArgs e)
|
|
{
|
|
var _voucherNo = this.txtInput.Text;
|
|
var way = CardUtils.JudgeCardWay(Global.Instance.Worker.TenantId, _voucherNo);
|
|
if (way == MemberCardNoType.未知)
|
|
{
|
|
this.ShowMessage(this.lblInfo, "无法识别的卡号,请确认", true);
|
|
return;
|
|
}
|
|
|
|
string property = "";
|
|
switch (way)
|
|
{
|
|
case MemberCardNoType.电子卡号:
|
|
{
|
|
property = "scanCode";
|
|
}
|
|
break;
|
|
case MemberCardNoType.真实卡号:
|
|
{
|
|
property = "cardNo";
|
|
}
|
|
break;
|
|
case MemberCardNoType.手机号:
|
|
{
|
|
property = "mobile";
|
|
}
|
|
break;
|
|
case MemberCardNoType.卡面号:
|
|
{
|
|
property = "surfaceNo";
|
|
}
|
|
break;
|
|
}
|
|
//switch (way)
|
|
//{
|
|
// case MemberCardNoType.真实卡号:
|
|
// {
|
|
// property = ("cardNo");
|
|
// }
|
|
// break;
|
|
// case MemberCardNoType.卡面号:
|
|
// {
|
|
// property = ("surfaceNo");
|
|
// }
|
|
// break;
|
|
//}
|
|
|
|
var _data = CardInfoMessage(property, _voucherNo);
|
|
|
|
if (_data == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
this.Offlinemember = _data;
|
|
|
|
label23.Text = _data.Name;
|
|
label21.Text = _data.Mobile;
|
|
label19.Text = _data.CardList[0].AvailableAmount.ToString("0.00");
|
|
label17.Text = _data.CardList[0].TotalPoint.ToString("0.00");
|
|
label3.Text = _data.CardList[0].CardNo;
|
|
}
|
|
|
|
private void buttonX3_Click(object sender, EventArgs e)
|
|
{
|
|
if (Onlinemember == null)
|
|
{
|
|
this.ShowMessage(this.lblInfo, "请扫描客户手机上的会员码", true);
|
|
return;
|
|
}
|
|
|
|
if (Offlinemember == null)
|
|
{
|
|
this.ShowMessage(this.lblInfo, "请刷实体卡会员", true);
|
|
return;
|
|
}
|
|
|
|
CardMergeRequest cardMerge = new CardMergeRequest();
|
|
cardMerge.WxcardNo = Onlinemember.LinkPhone;
|
|
cardMerge.ShopNo = Global.Instance.Authc.StoreNo;
|
|
cardMerge.PosNo = Global.Instance.Authc.PosNo;
|
|
cardMerge.WorkerNo = Global.Instance.Worker.No;
|
|
cardMerge.CardNo = Offlinemember.CardList[0].CardNo;
|
|
cardMerge.WxcardNo = Onlinemember.CardList[0].CardNo;
|
|
var _CardMerge = CardUtils.CardMerge(cardMerge, true);
|
|
|
|
|
|
if (_CardMerge.Item1)
|
|
{
|
|
{
|
|
System.Threading.Tasks.Task.Factory.StartNew(() =>
|
|
{
|
|
try
|
|
{
|
|
CardMergePrintModel _printData = new CardMergePrintModel();
|
|
_printData.Balance = _CardMerge.Item3.TotalAmount;
|
|
_printData.ElectronicCardNo = Onlinemember.CardList[0].CardNo;
|
|
_printData.CashierCode = Global.Instance.Worker.No;
|
|
_printData.CashierName = Global.Instance.Worker.Name;
|
|
_printData.NewCardNo = _CardMerge.Item3.CardNo;
|
|
_printData.Phone = _CardMerge.Item3.Mobile;
|
|
_printData.Name = Onlinemember.Name;
|
|
_printData.StoreName = Global.Instance.Worker.StoreInfo.Name;
|
|
_printData.StoreCode = Global.Instance.Worker.StoreInfo.No;
|
|
_printData.PosNo = Global.Instance.Authc.PosNo;
|
|
_printData.Integral = _CardMerge.Item3.TotalPoint;
|
|
|
|
//label23.Text = _data.Name;
|
|
//label21.Text = _data.Mobile;
|
|
//label19.Text = _data.CardList[0].AvailableAmount.ToString("0.00");
|
|
//label17.Text = _data.CardList[0].TotalPoint.ToString("0.00");
|
|
//label3.Text = _data.CardList[0].CardNo;
|
|
_printData.EntityCardCardPNo = Offlinemember.CardList[0].CardNo;
|
|
_printData.EntityCardCardPhone = Offlinemember.Mobile;
|
|
_printData.EntityCardCardName = Offlinemember.Name;
|
|
_printData.EntityCardCardIntegral = Offlinemember.CardList[0].TotalPoint.ToString("0.00");
|
|
_printData.EntityCardBalance = Offlinemember.CardList[0].TotalAmount.ToString("0.00");
|
|
_printData.ElectronicCardPhone = Onlinemember.Mobile;
|
|
_printData.ElectronicCardNo = Onlinemember.CardList[0].CardNo;
|
|
_printData.ElectronicCardName = Onlinemember.Name;
|
|
_printData.ElectronicCardIntegral = Onlinemember.CardList[0].TotalPoint.ToString("0.00");
|
|
_printData.ElectronicCardBalance = Onlinemember.CardList[0].TotalAmount.ToString("0.00");
|
|
|
|
|
|
var _Variable = CardHelper.CardMergeVariable(_printData);
|
|
|
|
|
|
//充值打印份数
|
|
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("会员卡合并", _Variable, true, false, ticketCount, delaySecond);
|
|
|
|
this.ShowToastNotify(this, string.Format("{0}", result.Item2));
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
this.ShowToastNotify(this, "打印失败" + ex.Message);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
var _mess = string.Format("会员ID:{0}\t\n会员卡号:{3}\t\n合并后金额:{1}\t\n手机号:{2}\t\n", _CardMerge.Item3.MemberId, _CardMerge.Item3.TotalAmount, _CardMerge.Item3.Mobile, _CardMerge.Item3.CardNo);
|
|
|
|
DialogForm dialog = new DialogForm("合并成功", _mess, MessageBoxIcon.None, MessageBoxButtons.OK);
|
|
dialog.ButtonOK.Text = "完成";
|
|
dialog.ShowDialog();
|
|
LOGGER.Info(_mess);
|
|
|
|
|
|
controlBox_CloseClick(null, null);
|
|
}
|
|
else
|
|
{
|
|
this.ShowMessage(this.lblInfo, _CardMerge.Item2, true);
|
|
return;
|
|
}
|
|
|
|
}
|
|
|
|
private void ButtonCancel_Click(object sender, EventArgs e)
|
|
{
|
|
//先关闭父窗体
|
|
if (this.Owner != null)
|
|
{
|
|
this.Owner.Close();
|
|
}
|
|
//再关闭当前窗体
|
|
this.Close();
|
|
}
|
|
|
|
private void controlBox_CloseClick(object sender, EventArgs e)
|
|
{
|
|
ButtonCancel_Click(null, null);
|
|
}
|
|
|
|
private void controlBox_KeyboardClick(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, "打开屏幕键盘异常");
|
|
}
|
|
}
|
|
|
|
private void CardMergeForm2_Load(object sender, EventArgs e)
|
|
{
|
|
System.Threading.Tasks.Task.Factory.StartNew(() =>
|
|
{
|
|
System.Threading.Thread.Sleep(500);
|
|
this.Invoke((EventHandler)delegate
|
|
{
|
|
this.numericTextBox1.Focus();
|
|
});
|
|
});
|
|
|
|
}
|
|
|
|
private void numericTextBox1_OnEnterClick(object sender, Component.EnterEventArg e)
|
|
{
|
|
btnOnlineCard_Click(null, null);
|
|
}
|
|
}
|
|
}
|