//无此商品 private void NoThisGoods() { WintecIDT700.Beep(100); System.Threading.Thread.Sleep(50); WintecIDT700.Beep(100); System.Threading.Thread.Sleep(50); WintecIDT700.Beep(100); //ClearSet(); }
/// <summary> /// 写卡 /// </summary> private bool WriteCard(decimal money, int i, out string msg) { if (i >= 3) { msg = "3次写卡失败。请联系管理员。"; return(false); } try { #region 校验卡号 if (PubGlobal.BussinessVar.card.InCardno == CardStrFormater.GetCardNo(icCard.ReadIC("0", "1", PubGlobal.SysConfig.CzkPassword), PubGlobal.SysConfig.CzkLen)) { #region 写金额 msg = "写卡成功"; bool ok = icCard.WriteIC("1", "0", PubGlobal.SysConfig.CzkPassword, CardStrFormater.FormateMoney(money)); if (ok) { WintecIDT700.Beep(100); return(true); } else { return(false); } #endregion } else { throw new Exception("写卡失败"); } #endregion } catch { return(WriteCard(money, i++, out msg)); } }
//打印 private void PrintBill() { WintecIDT700.DrawerOpen(); //打印小票头 int lineCount = 6; int index = -1; if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnHeader1)) { lineCount++; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnHeader2)) { lineCount++; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnHeader3)) { lineCount++; } string[] printHeader = new string[lineCount]; if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnHeader1)) { printHeader[++index] = PubGlobal.SysConfig.PrnHeader1; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnHeader2)) { printHeader[++index] = PubGlobal.SysConfig.PrnHeader2; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnHeader3)) { printHeader[++index] = PubGlobal.SysConfig.PrnHeader3; } printHeader[++index] = "收款员:" + PubGlobal.SysConfig.User.UserCode; printHeader[++index] = "流水号:" + PubGlobal.BussinessVar.payFlowList[0].SerialNo; printHeader[++index] = "时间:" + PubGlobal.BussinessVar.payFlowList[0].Sa_date.ToString("yyyy-MM-dd") + " " + PubGlobal.BussinessVar.payFlowList[0].Sa_time; printHeader[++index] = "菜品名称 "; printHeader[++index] = " 单价 数量 金额"; printHeader[++index] = "==============="; WintecIDT700.PrintLineStr(printHeader, lineCount, 3); //打印小票体 index = 0; int printeLineOnetime = 60; string[] printStr = new string[printeLineOnetime]; foreach (Model.MSaleFlow saleFlow in PubGlobal.BussinessVar.saleFlowList) { printStr[index++] = saleFlow.Fname; printStr[index++] = " " + saleFlow.Price.ToString("F2").PadLeft(9, ' ') + saleFlow.Qty.ToString("F2").PadLeft(9, ' ') + saleFlow.Total.ToString("F2").PadLeft(9, ' '); if (index == printeLineOnetime) { WintecIDT700.PrintLineStr(printStr, printeLineOnetime, 1); index = 0; for (int i = 0; i < printeLineOnetime; i++) { printStr[i] = string.Empty; } } } if (index > 0) { WintecIDT700.PrintLineStr(printStr, index, 3); } //打印小票尾 index = -1; lineCount = 5; if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnFooter1)) { lineCount++; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnFooter2)) { lineCount++; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnFooter3)) { lineCount++; } string[] printEnd = new string[lineCount]; printEnd[++index] = "==============="; printEnd[++index] = "合 计:" + PubGlobal.BussinessVar.Total.ToString("F2"); printEnd[++index] = "会员卡号:" + PubGlobal.BussinessVar.card.OutCardNo; printEnd[++index] = "余 额:" + PubGlobal.BussinessVar.card.Total.ToString("F2"); printEnd[++index] = "==============="; if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnFooter1)) { printEnd[++index] = PubGlobal.SysConfig.PrnFooter1; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnFooter2)) { printEnd[++index] = PubGlobal.SysConfig.PrnFooter2; } if (!string.IsNullOrEmpty(PubGlobal.SysConfig.PrnFooter3)) { printEnd[++index] = PubGlobal.SysConfig.PrnFooter3; } WintecIDT700.PrintLineStr(printEnd, lineCount, 3); WintecIDT700.FeedPaper(200); }
static Mutex readCardStatus = new Mutex(true);//读卡状态标志 /// <summary> /// 读卡 /// </summary> private void ReadCard() { icCard = new ICCard("com2");//初始化 string inCardNo, msg; while (true) // { readCardStatus.WaitOne(); //等待窗口开启 #region 寻卡 if (!readSuccess && icCard.SearchIC()) { Thread.Sleep(100); #region 读卡号 try { inCardNo = CardStrFormater.GetCardNo(icCard.ReadIC("0", "1", PubGlobal.SysConfig.CzkPassword), PubGlobal.SysConfig.CzkLen); if (!string.IsNullOrEmpty(inCardNo)) { readSuccess = true; WintecIDT700.Beep(100); } } catch { //读卡失败,释放资源,重新读卡 //this.Invoke(dlgShowErrorMsgBox, "读卡错误"); readCardStatus.ReleaseMutex(); readSuccess = false; continue; } #endregion Thread.Sleep(100); this.Invoke(dlgShowWaitMsg, "正在读取金额"); #region 读金额 if (!TransModule.GetCzCard(inCardNo, out msg)) { //读取金额失败 this.Invoke(dlgShowErrorMsgBox, "读取金额失败\r\n错误原因:" + msg); this.Invoke(dlgHideWaitMsg); readSuccess = false; readCardStatus.ReleaseMutex(); continue; } #endregion if (!WriteCard(PubGlobal.BussinessVar.card.Total - PubGlobal.BussinessVar.Total, 1, out msg)) { MessageBox.Show("写金额失败"); } Thread.Sleep(100); this.Invoke(dlgShowWaitMsg, "正在交易"); #region 交易 //PubGlobal.BussinessVar.card.Total = CardStrFormater.GetMoney(icCard.ReadIC("1", "0", PubGlobal.SysConfig.CzkPassword)); //WintecIDT700.Beep(100); if (Trade(out msg)) { this.Invoke(dlgShowInfoMsgBox, "交易成功\r\n卡余额:" + PubGlobal.BussinessVar.card.Total); tradeSuccess = true; } else { this.Invoke(dlgShowErrorMsgBox, "交易失败\r\n失败原因:" + msg); //交易失败 if (!WriteCard(PubGlobal.BussinessVar.card.Total, 1, out msg)) { MessageBox.Show("写卡失败"); } PubGlobal.BussinessVar.card = null; } #endregion this.Invoke(dlgHideWaitMsg); } #endregion readCardStatus.ReleaseMutex(); //释放阻塞 this.Invoke(dlgCloseForm); //关闭窗口 Thread.Sleep(500); //线程休眠500毫秒 } }