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(); } /// /// 线上会员 /// private MemberInfoQueryResponse Onlinemember = null; /// /// 线下会员 /// private MemberInfoQueryResponse Offlinemember = null; /// /// 会员卡信息 /// 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 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); } } }