//上钟时如果有预约,删除预约 public static string del_reservation(string roomId, string seatId) { try { var db = new BathDBDataContext(connectionString); var info = new List<string>(); var t = db.TechReservation.FirstOrDefault(x => x.roomId == roomId && x.seatId == seatId && !x.proceeded.Value); if (t == null) return "null"; db.TechReservation.DeleteOnSubmit(t); db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
private void do_work() { try { if (cl.GetItemChecked(0))//账单记录 { db.Account.DeleteAllOnSubmit(db.Account.Where(x => x.payTime > st && x.payTime < et)); } if (cl.GetItemChecked(1))//吧台消息记录 { db.BarMsg.DeleteAllOnSubmit(db.BarMsg.Where(x => x.time > st && x.time < et)); } if (cl.GetItemChecked(2))//售卡充值记录 { db.CardSale.DeleteAllOnSubmit(db.CardSale.Where(x => x.payTime > st && x.payTime < et)); } if (cl.GetItemChecked(3))//前台打印时间记录 { db.CashPrintTime.DeleteAllOnSubmit(db.CashPrintTime.Where(x => x.time > st && x.time < et)); } if (cl.GetItemChecked(4))//优惠券设置记录 { db.Coupon.DeleteAllOnSubmit(db.Coupon.Where(x => x.issueDate > st && x.issueDate < et)); } if (cl.GetItemChecked(5))//团购记录 { db.GroupBuy.DeleteAllOnSubmit(db.GroupBuy.Where(x => x.issueDate > st && x.issueDate < et)); } if (cl.GetItemChecked(6))//支出记录 { db.Expense.DeleteAllOnSubmit(db.Expense.Where(x => x.inputDate > st && x.inputDate < et)); } if (cl.GetItemChecked(7))//订单记录 { db.HisOrders.DeleteAllOnSubmit(db.HisOrders.Where(x => x.inputTime > st && x.inputTime < et)); } if (cl.GetItemChecked(8))//异常操作记录 { db.Operation.DeleteAllOnSubmit(db.Operation.Where(x => x.opTime > st && x.opTime < et)); } if (cl.GetItemChecked(9))//摄像头录像消息记录 { db.ExecuteCommand("truncate table paymsg"); } if (cl.GetItemChecked(10))//催钟记录 { db.ExecuteCommand("truncate table roomcall"); } if (cl.GetItemChecked(11))//房间预警记录 { db.ExecuteCommand("truncate table roomwarn"); } if (cl.GetItemChecked(12))//鞋吧消息记录 { db.ExecuteCommand("truncate table shoemsg"); } db.SubmitChanges(); } catch (System.Exception e) { this.Invoke(new print_msg_delegate(BathClass.printErrorMsg), new object[] { e.ToString() }); } finally { if (m_form != null) { this.Invoke(new no_par_delegate(close_form)); } } }
//F6开牌 private void tool_open_seat() { if (tSeat.Text == "") { return; } BathDBDataContext db_new = new BathDBDataContext(LogIn.connectionString); string text = tSeat.Text; tSeat.Text = ""; var seat1 = db_new.HotelRoom.FirstOrDefault(x => x.text == text); var seat2 = db_new.HotelRoom.FirstOrDefault(x => x.oId == text); if (seat1 == null && seat2 == null) { BathClass.printErrorMsg("手牌不可用!"); return; } if (seat1 != null) { var mtype = db_new.HotelRoomType.FirstOrDefault(x => x.id == seat1.typeId); switch (seat1.status) { case 1: //可用 case 3: //已经结账 if (!BathClass.ToBool(db_new.Options.FirstOrDefault().允许手工输入手牌号开牌) && mtype.menuId != null) { BathClass.printErrorMsg("不允许手工输入手牌号开牌!"); break; } open_seat(seat1, db_new); break; case 2: //正在使用 case 7: //押金离场 if (!BathClass.getAuthority(db_new, LogIn.m_User, "完整点单") && !BathClass.getAuthority(db_new, LogIn.m_User, "可见本人点单")) { BathClass.printErrorMsg("权限不够"); break; } seat1.ordering = true; db_new.SubmitChanges(); var orderForm = new HotelRoomOrderForm(m_Seat); orderForm.ShowDialog(); seat1.ordering = false; db_new.SubmitChanges(); break; case 4: //锁定 BathClass.printErrorMsg("台位已经锁定!"); break; case 5: //停用 BathClass.printErrorMsg("台位已经停用!"); break; case 6: //警告 var orderCheckForm = new HotelRoomOrderCheckForm(m_Seat); orderCheckForm.ShowDialog(); break; case 8: BathClass.printErrorMsg("补救台位不能录单"); break; default: break; } } else if (seat2 != null) { var mtype = db_new.HotelRoomType.FirstOrDefault(x => x.id == seat2.typeId); switch (seat2.status) { case 1: //可用 case 3: //已经结账 open_seat(seat2, db_new); break; case 2: //正在使用 case 7: //押金离场 if (!BathClass.getAuthority(db_new, LogIn.m_User, "完整点单") && !BathClass.getAuthority(db_new, LogIn.m_User, "可见本人点单")) { BathClass.printErrorMsg("权限不够"); break; } seat2.ordering = true; db_new.SubmitChanges(); var orderForm = new HotelRoomOrderForm(m_Seat); orderForm.ShowDialog(); seat2.ordering = false; db_new.SubmitChanges(); break; case 4: //锁定 BathClass.printErrorMsg("台位已经锁定!"); break; case 5: //停用 BathClass.printErrorMsg("台位已经停用!"); break; case 6: //警告 var orderCheckForm = new HotelRoomOrderCheckForm(m_Seat); orderCheckForm.ShowDialog(); break; case 8: BathClass.printErrorMsg("补救台位不能录单"); break; default: break; } } }
private void cancel_open(BathDBDataContext db_new, HotelRoom seat) { InputEmployeeByPwd inputEmployee = new InputEmployeeByPwd(); if (BathClass.getAuthority(db_new, LogIn.m_User, "取消开牌") || (inputEmployee.ShowDialog() != DialogResult.OK && BathClass.getAuthority(db_new, inputEmployee.employee, "取消开牌"))) { if (seat.status != 2) { BathClass.printErrorMsg("该台位不在使用中,不能取消开台!"); return; } if (db_new.Options.Count() != 0) { Options options = db_new.Options.ToList()[0]; var q = options.取消开牌时限; if (q != null && BathClass.Now(LogIn.connectionString) - seat.openTime >= TimeSpan.Parse("00:" + q.ToString() + ":00")) { BathClass.printErrorMsg("已超过取消开牌时限!"); return; } } var orders = db_new.Orders.Where(x => x.systemId == seat.systemId); if (orders.Count() > 2) { BathClass.printErrorMsg("已经点单,不能取消开台"); return; } if (BathClass.printAskMsg("确认取消开台?") != DialogResult.Yes) { return; } Operation op = new Operation(); if (inputEmployee.employee != null) { op.employee = inputEmployee.employee.id; } else { op.employee = LogIn.m_User.id; } op.seat = seat.text; op.openEmployee = seat.openEmployee; op.openTime = seat.openTime; op.explain = "取消开牌"; op.opTime = BathClass.Now(LogIn.connectionString); db_new.Operation.InsertOnSubmit(op); db_new.Orders.DeleteAllOnSubmit(db_new.Orders.Where(x => x.systemId == seat.systemId)); BathClass.reset_seat(seat); db_new.SubmitChanges(); dgv_shoe_show(); } else { BathClass.printErrorMsg("不具有取消开牌权限!"); } }
//定时轮询 private void detect_msg() { while (true) { try { var dc = new BathDBDataContext(connectionString); var job = dc.Job.FirstOrDefault(x => x.ip == m_ip); if (job == null) { m_msg = dc.TechMsg.FirstOrDefault(x => !x.read); } else { m_msg = dc.TechMsg.FirstOrDefault(x => !x.read && (x.techType == job.name || (x.techId != null && x.techId != "" && dc.Employee.FirstOrDefault(y => y.id == x.techId).jobId == job.id))); } if (m_msg == null) { this.Invoke(new delegate_no_param(unable_msg_btn), null); continue; } var tech = dc.Employee.FirstOrDefault(x => x.msgId == m_msg.id); if (tech == null && job != null) { tech = dc.Employee.FirstOrDefault(x => x.id == m_msg.techId); if (tech == null) { if (m_msg.gender == null || m_msg.gender.Trim() == "" || m_msg.gender == "无" || m_msg.gender == "女") { var tLst = dc.TechIndex.FirstOrDefault(x => x.dutyid == job.id && x.gender == "女").ids.Split('%').ToList(); foreach (var techIds in tLst) { var tech_id = techIds.Split('='); if (tech_id[1] == "F") { continue; } var tmp_tech = dc.Employee.FirstOrDefault(x => x.id == tech_id[0]); if (tmp_tech.techStatus == "空闲" || tmp_tech.techStatus == null) { tech = tmp_tech; tech.techStatus = "待钟"; tech.techMenu = m_msg.menu; tech.room = m_msg.room; tech.seat = m_msg.seat; tech.msgId = m_msg.id; m_msg.techId = tech.id; dc.SubmitChanges(); this.Invoke(new delegate_create_tech_panel_gender(create_tech_panel_gender), new object[] { dc, "女", SplitGender.Panel1 }); //this.Invoke(new delegate_no_param(create_tech_panel)); break; } } } else if (m_msg.gender == "男") { var tLst = dc.TechIndex.FirstOrDefault(x => x.dutyid == job.id && x.gender == "男").ids.Split('%').ToList(); foreach (var techIds in tLst) { var tech_id = techIds.Split('='); if (tech_id[1] == "F") { continue; } var tmp_tech = dc.Employee.FirstOrDefault(x => x.id == tech_id[0]); if (tmp_tech.techStatus == "空闲" || tmp_tech.techStatus == null) { tech = tmp_tech; tech.techStatus = "待钟"; tech.techMenu = m_msg.menu; tech.room = m_msg.room; tech.seat = m_msg.seat; tech.msgId = m_msg.id; m_msg.techId = tech.id; dc.SubmitChanges(); this.Invoke(new delegate_create_tech_panel_gender(create_tech_panel_gender), new object[] { dc, "男", SplitGender.Panel2 }); //this.Invoke(new delegate_no_param(create_tech_panel)); break; } } } } else { tech.techStatus = "待钟"; tech.techMenu = m_msg.menu; tech.room = m_msg.room; tech.seat = m_msg.seat; tech.msgId = m_msg.id; m_msg.techId = tech.id; dc.SubmitChanges(); Control sp = SplitGender.Panel1; if (tech.gender == "男") { sp = SplitGender.Panel2; } this.Invoke(new delegate_create_tech_panel_gender(create_tech_panel_gender), new object[] { dc, tech.gender, sp }); //this.Invoke(new delegate_no_param(create_tech_panel)); } } this.Invoke(new delegate_no_param(showMessage)); play(); if (print_tech_msg) { print_msg(dc); } } catch { } } }
//上传ClearTable数据 private void run_clearTable() { while (true) { try { var db = new BathDBDataContext(connectionString); long maxId = -1; DateTime clearTime = DateTime.Now; var uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "ClearTable"); if (uploadRecords != null) { maxId = MConvert <long> .ToTypeOrDefault(uploadRecords.maxId, -1); clearTime = MConvert <DateTime> .ToTypeOrDefault(uploadRecords.clearTime, clearTime); } else { uploadRecords = new UploadRecords(); uploadRecords.tableName = "ClearTable"; db.UploadRecords.InsertOnSubmit(uploadRecords); db.SubmitChanges(); } var clearTables = db.ClearTable.Where(x => x.id > maxId); var _clearTables = db.ClearTable.Where(x => x.id == maxId && x.clearTime != clearTime); clearTables = clearTables.Union(_clearTables).Distinct(); bool changed = false; foreach (var clearTable in clearTables) { bool sucess = false; while (!sucess) { sucess = upload_json(BathClass.ConvertToJsonString(clearTable), "ClearTable"); if (sucess) { changed = true; if (maxId < clearTable.id) { maxId = clearTable.id; uploadRecords.maxId = clearTable.id; } if (clearTable.clearTime != clearTime) { clearTime = clearTable.clearTime; uploadRecords.clearTime = clearTable.clearTime; } db.SubmitChanges(); } } } if (changed) { db.SubmitChanges(); } } catch (System.Exception ex) { } } }
//上传会员卡销售 private void run_cardSale() { while (true) { try { var db = new BathDBDataContext(connectionString); long maxId = -1; var abandonIds = new List <long>(); var uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "CardSale"); if (uploadRecords != null) { maxId = MConvert <long> .ToTypeOrDefault(uploadRecords.maxId, -1); if (uploadRecords.abandonId != null) { var idArray = uploadRecords.abandonId.Split(Constants.SplitChar); abandonIds = Array.ConvertAll <string, long>(idArray, delegate(string s) { return(MConvert <long> .ToTypeOrDefault(s, -1)); }).ToList(); } } else { uploadRecords = new UploadRecords(); uploadRecords.tableName = "CardSale"; db.UploadRecords.InsertOnSubmit(uploadRecords); db.SubmitChanges(); } #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长 var maxTime = DateTime.Parse("2013-01-01 00:00:00"); if (db.ClearTable.Any()) { maxTime = db.ClearTable.Max(x => x.clearTime); } var max_passed_id = db.CardSale.Where(x => x.payTime <= maxTime).Max(x => x.id); abandonIds.RemoveAll(x => x <= max_passed_id); var _idArray = Array.ConvertAll <long, string>(abandonIds.ToArray(), delegate(long s) { return(s.ToString()); }); uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray); db.SubmitChanges(); #endregion var cardSales = db.CardSale.Where(x => x.id > maxId); var _cardSales = db.CardSale.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id)); cardSales = cardSales.Union(_cardSales).Distinct(); bool changed = false; foreach (var cardSale in cardSales) { bool sucess = false; while (!sucess) { sucess = upload_json(BathClass.ConvertToJsonString(cardSale), "CardSale"); if (sucess) { changed = true; if (maxId < cardSale.id) { maxId = cardSale.id; uploadRecords.maxId = cardSale.id; } if (cardSale.abandon != null && cardSale.id >= max_passed_id) { uploadRecords.abandonId += Constants.SplitChar + cardSale.id.ToString(); } } } } if (changed) { db.SubmitChanges(); } } catch (System.Exception ex) { } } }
//每隔1秒监听一次 private void watch_Timer_Elapsed(object sender, EventArgs e) { Thread.CurrentThread.IsBackground = true; BathDBDataContext dc = new BathDBDataContext(connectionString); if (dc.PayMsg.Count() != 0) { watch_Timer.Interval = ts.Seconds * 1000; PayMsg msg = dc.PayMsg.ToList().Last(); string path = dir + GeneralClass.Now.ToShortDateString() + "\\" + msg.systemId + ".avi"; recording = true; video.StartKinescope(path); recordTime = GeneralClass.Now; dc.PayMsg.DeleteAllOnSubmit(dc.PayMsg.ToArray()); dc.SubmitChanges(); } if (recording && GeneralClass.Now - recordTime >= ts) { watch_Timer.Interval = 100; recording = false; video.StopKinescope(); } }
//点单 //public static string set_seat_orderObjects(string seat_text, string infor, string user, string order_techId) public static string set_seat_orderObjects(string roomId, string seat_text, string infor, string user, string order_techId) { try { var db = new BathDBDataContext(connectionString); var m_Seat = db.Seat.FirstOrDefault(x => x.text == seat_text); string[] strs = infor.Split('|'); for (int i = 0; i < strs.Length; i = i + 7) { int id = Convert.ToInt32(strs[i]); string menu = strs[i + 1]; string tech = strs[i + 2]; double number = Convert.ToDouble(strs[i + 3]); double money = Convert.ToDouble(strs[i + 4]); string billId = strs[i + 5]; string st = strs[i + 6].ToString(); Orders order; if (id == -1) { order = new Orders(); order.menu = menu; order.text = seat_text; order.systemId = m_Seat.systemId; order.inputTime = DateTime.Now; order.inputEmployee = user; order.paid = false; //if (roomId != "" && roomId != "null") // order.roomId = roomId; if (tech != "" && tech != "null") { order.technician = tech; if (order_techId != "null" && tech == order_techId) order.techType = "点钟"; } if (billId != "" && billId != "null") order.billId = billId; if (st != "null") order.startTime = Convert.ToDateTime(st); } else order = db.Orders.FirstOrDefault(x => x.id == id); if (order == null) continue; order.number = number; order.money = money; if (id == -1) { var _order = db.Orders.FirstOrDefault(x => x.menu == order.menu && x.money == order.money && x.inputEmployee == order.inputEmployee && x.number == order.number && x.systemId == order.systemId && x.text == order.text); if (_order != null && (order.inputTime - _order.inputTime).TotalSeconds <= 40) continue; db.Orders.InsertOnSubmit(order); //Thread td = new Thread(delegate() { print_kitchen(order); }); //td.IsBackground = true; //td.Start(); } db.SubmitChanges(); } //find_combo(db, m_Seat); return "true"; } catch (System.Exception ex) { insert_file("time=" + DateTime.Now.ToString()+"\n"); insert_file(infor); insert_file("error=" + ex.ToString()); insert_file("\n"); return "false"; } }
//设置接收到客房预警信息 public static string set_room_warned(string roomId) { try { var db = new BathDBDataContext(connectionString); var warn = db.RoomWarn.FirstOrDefault(x => x.room == null || (x.room != null && !x.room.Contains(roomId))); if (warn != null) { if (warn.room == null) warn.room = roomId; else warn.room += "|" + roomId; } db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
//设置客房催钟已读 public static string set_room_called(string roomId, string seatId) { try { var db = new BathDBDataContext(connectionString); var call = db.RoomCall.FirstOrDefault(x => x.roomId == roomId && x.seatId == seatId && !x.read); if (call == null) return "null"; call.read = true; db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
//发送消息给技师房 public static string send_tech_msg(string techId, string serveType, string techType, string number, string roomId, string seatId,string gender) { try { var db = new BathDBDataContext(connectionString); var m_TechMsg = new TechMsg(); m_TechMsg.time = DateTime.Now; m_TechMsg.techId = techId; m_TechMsg.type = serveType; m_TechMsg.room = roomId; m_TechMsg.seat = seatId; m_TechMsg.techType = techType; m_TechMsg.gender = gender; //m_TechMsg.number = Convert.ToInt32(number); m_TechMsg.menu = number; m_TechMsg.read = false; db.TechMsg.InsertOnSubmit(m_TechMsg); db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
public static string send_log(string msg, string depart, string sender, string img1Url,string img2Url,string img3Url) { string res = "T"; try { var db = new BathDBDataContext(connectionString); var log = new DepartmentLog(); log.date = DateTime.Now; log.departId = db.Department.FirstOrDefault(x => x.name == depart).id; log.msg = msg; if (sender != "F") log.sender = db.Employee.FirstOrDefault(x => x.id == sender).name; if (img1Url != "F") log.imgUrl = img1Url; if (img2Url != "F") log.img2Url = img2Url; if (img3Url != "F") log.img3Url = img3Url; db.DepartmentLog.InsertOnSubmit(log); db.SubmitChanges(); res = log.id.ToString(); } catch (System.Exception e) { res = "F"; } return res; }
//给吧台发送消息 public static string send_barMsg(string roomId, string seatId, string msg, string time) { try { var db = new BathDBDataContext(connectionString); var barMsg = new BarMsg(); barMsg.roomId = roomId; barMsg.seatId = seatId; barMsg.msg = msg; barMsg.read = false; barMsg.time = Convert.ToDateTime(time); db.BarMsg.InsertOnSubmit(barMsg); db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
//确定 private void btnOk_Click(object sender, EventArgs e) { if (catId.Text == "") { BathClass.printErrorMsg("需要选择商品类别"); return; } m_goods.name = name.Text.Trim(); try { m_goods.minAmount = Convert.ToInt32(minAmount.Text.Trim()); } catch { m_goods.minAmount = null; } m_goods.note = note.Text.Trim(); m_goods.goodsCatId = db.GoodsCat.FirstOrDefault(x => x.name == catId.Text).id; if (newGoods) { if (db.StorageList.FirstOrDefault(x => x.name == m_goods.name) != null) { BathClass.printErrorMsg("已经存在此名称的商品!"); name.SelectAll(); return; } db.StorageList.InsertOnSubmit(m_goods); } if (amount.Text.Trim() != "") { if (amount.Text.Trim() == "") { BathClass.printErrorMsg("需要输入数量!"); return; } if (stock.Text == "") { BathClass.printErrorMsg("需要选择仓库!"); return; } StockIn inStock = new StockIn(); inStock.name = name.Text; if (cost.Text != "") { inStock.cost = Convert.ToDouble(cost.Text); } inStock.amount = Convert.ToDouble(amount.Text); inStock.stockId = db.Stock.FirstOrDefault(x => x.name == stock.Text).id; inStock.note = stockNote.Text; inStock.date = DateTime.Now; inStock.transactor = LogIn.m_User.id; inStock.checker = LogIn.m_User.id; string unit_text = ComboUnit.Text.Trim(); if (unit_text != "") { inStock.unit = unit_text; if (!db.Unit.Any(x => x.name == unit_text)) { var unit_instance = new Unit(); unit_instance.name = unit_text; db.Unit.InsertOnSubmit(unit_instance); } } if (money.Text.Trim() != "") { inStock.money = Convert.ToDouble(money.Text.Trim()); } db.StockIn.InsertOnSubmit(inStock); } db.SubmitChanges(); if (newGoods) { name.Text = ""; catId.SelectedIndex = -1; provider.SelectedIndex = -1; minAmount.Text = ""; note.Text = ""; cost.Text = ""; amount.Text = ""; stock.SelectedIndex = -1; stockNote.Text = ""; money.Text = ""; name.Focus(); db.SubmitChanges(); m_form.dgv_show(); m_goods = new StorageList(); } else { this.DialogResult = DialogResult.OK; this.Close(); } }
//上传会员卡销售 private void run_cardSale() { while (true) { try { var db = new BathDBDataContext(connectionString); long maxId = -1; var abandonIds = new List<long>(); var uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "CardSale"); if (uploadRecords != null) { maxId = MConvert<long>.ToTypeOrDefault(uploadRecords.maxId, -1); if (uploadRecords.abandonId != null) { var idArray = uploadRecords.abandonId.Split(Constants.SplitChar); abandonIds = Array.ConvertAll<string, long>(idArray, delegate(string s) { return MConvert<long>.ToTypeOrDefault(s, -1); }).ToList(); } } else { uploadRecords = new UploadRecords(); uploadRecords.tableName = "CardSale"; db.UploadRecords.InsertOnSubmit(uploadRecords); db.SubmitChanges(); } #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长 var maxTime = DateTime.Parse("2013-01-01 00:00:00"); if (db.ClearTable.Any()) maxTime = db.ClearTable.Max(x => x.clearTime); var max_passed_id = db.CardSale.Where(x => x.payTime <= maxTime).Max(x => x.id); abandonIds.RemoveAll(x => x <= max_passed_id); var _idArray = Array.ConvertAll<long, string>(abandonIds.ToArray(), delegate(long s) { return s.ToString(); }); uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray); db.SubmitChanges(); #endregion var cardSales = db.CardSale.Where(x => x.id > maxId); var _cardSales = db.CardSale.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id)); cardSales = cardSales.Union(_cardSales).Distinct(); bool changed = false; foreach (var cardSale in cardSales) { bool sucess = false; while (!sucess) { sucess = upload_json(BathClass.ConvertToJsonString(cardSale), "CardSale"); if (sucess) { changed = true; if (maxId < cardSale.id) { maxId = cardSale.id; uploadRecords.maxId = cardSale.id; } if (cardSale.abandon != null && cardSale.id >= max_passed_id) { uploadRecords.abandonId += Constants.SplitChar + cardSale.id.ToString(); } } } } if (changed) db.SubmitChanges(); } catch (System.Exception ex) { } } }
//上传账单数据 private void run_account() { while (true) { try { var db = new BathDBDataContext(connectionString); long maxId = -1; var abandonIds = new List<long>(); var account_uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "Account"); if (account_uploadRecords != null) { maxId = MConvert<long>.ToTypeOrDefault(account_uploadRecords.maxId, -1); if (account_uploadRecords.abandonId != null) { var idArray = account_uploadRecords.abandonId.Split(Constants.SplitChar); abandonIds = Array.ConvertAll<string, long>(idArray, delegate(string s) { return MConvert<long>.ToTypeOrDefault(s, -1); }).ToList(); } } else { account_uploadRecords = new UploadRecords(); account_uploadRecords.tableName = "Account"; db.UploadRecords.InsertOnSubmit(account_uploadRecords); db.SubmitChanges(); } #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长 var maxTime = DateTime.Parse("2013-01-01 00:00:00"); if (db.ClearTable.Any()) maxTime = db.ClearTable.Max(x => x.clearTime); var max_passed_account_id = db.Account.Where(x => x.payTime <= maxTime).Max(x => x.id); abandonIds.RemoveAll(x => x <= max_passed_account_id); var _idArray = Array.ConvertAll<long, string>(abandonIds.ToArray(), delegate(long s) { return s.ToString(); }); account_uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray); db.SubmitChanges(); #endregion var accounts = db.Account.Where(x => x.id > maxId); var _accounts = db.Account.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id)); accounts = accounts.Union(_accounts).Distinct(); bool changed = false; foreach (var account in accounts) { bool sucess = false; while (!sucess) { sucess = upload_json(BathClass.ConvertToJsonString(account), "account"); if (sucess) { changed = true; if (maxId < account.id) { maxId = account.id; account_uploadRecords.maxId = account.id; } if (account.abandon != null && account.id >= max_passed_account_id) { account_uploadRecords.abandonId += Constants.SplitChar + account.id.ToString(); } } } } if (changed) db.SubmitChanges(); } catch (System.Exception ex) { IOUtil.insert_file(BathClass.getErrorFileName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "run_account" + ex.Message); } } }
//查找套餐 public static void find_combo(BathDBDataContext db, Seat m_Seat) { db.Orders.DeleteAllOnSubmit(db.Orders.Where(x => x.systemId == m_Seat.systemId && x.menu.Contains("套餐"))); var orders = db.Orders.Where(x => x.systemId == m_Seat.systemId && x.deleteEmployee == null); orders = orders.Where(x => !x.inputEmployee.Contains("电脑") && !x.menu.Contains("套餐")); foreach (Orders tmp_order in orders) { if (tmp_order.comboId != null) { tmp_order.comboId = null; tmp_order.money = db.Menu.FirstOrDefault(x => x.name == tmp_order.menu).price * tmp_order.number; } } db.SubmitChanges(); var order_menus = orders.Where(x => x.comboId == null).Select(x => x.menu); var menus = db.Menu; var comboList = db.Combo.OrderByDescending(x => x.freePrice); foreach (Combo combo in comboList) { if (combo.priceType == "消费满免项目") { if (get_seat_expense_for_combo(db, combo, m_Seat) < combo.expenseUpTo) continue; var freeIds = disAssemble(combo.freeMenuIds); var combo_menus = menus.Where(x => freeIds.Contains(x.id)).Select(x => x.name); foreach (var combo_menu in combo_menus) { var tmp_order = orders.FirstOrDefault(x => x.menu == combo_menu); if (tmp_order == null) continue; tmp_order.comboId = combo.id; tmp_order.money = 0; } } else { List<int> menuIds = disAssemble(combo.menuIds); var combo_menus = menus.Where(x => menuIds.Contains(x.id)).Select(x => x.name); if (combo_menus.All(x => order_menus.Any(y => y == x))) { foreach (var combo_menu in combo_menus) { var tmp_order = orders.FirstOrDefault(x => x.menu == combo_menu); tmp_order.comboId = combo.id; if (combo.priceType == "免项目") { var freeIds = disAssemble(combo.freeMenuIds); var freeMenus = db.Menu.Where(x => freeIds.Contains(x.id)).Select(x => x.name); if (freeMenus.Contains(tmp_order.menu)) tmp_order.money = 0; } } if (combo.priceType == "减金额") { Orders comboOrder = new Orders(); comboOrder.menu = "套餐" + combo.id.ToString() + "优惠"; comboOrder.text = m_Seat.text; comboOrder.systemId = m_Seat.systemId; comboOrder.number = 1; comboOrder.inputTime = DateTime.Now; comboOrder.inputEmployee = "套餐"; comboOrder.paid = false; comboOrder.comboId = combo.id; comboOrder.money = Convert.ToDouble(combo.price) - combo.originPrice; db.Orders.InsertOnSubmit(comboOrder); } } } } db.SubmitChanges(); }
//确定 private void okBtn_Click(object sender, EventArgs e) { if (name.Text == "") { BathClass.printErrorMsg("需要选择商品名称"); return; } if (amount.Text.Trim() == "") { BathClass.printErrorMsg("需要输入数量!"); return; } if (stock.Text == "") { BathClass.printErrorMsg("需要选择仓库!"); return; } if (transactor.Text == "") { BathClass.printErrorMsg("需要输入经手人!"); return; } if (checker.Text == "") { BathClass.printErrorMsg("需要输入审核!"); return; } if (provider.Text.Trim() == "") { BathClass.printErrorMsg("需要选择供应商!"); return; } stockin.name = name.Text; stockin.cost = MConvert <double> .ToTypeOrDefault(cost.Text.Trim(), 0); stockin.amount = MConvert <double> .ToTypeOrDefault(amount.Text.Trim(), 0); stockin.unit = unit.Text; stockin.stockId = db.Stock.FirstOrDefault(x => x.name == stock.Text).id; stockin.note = note.Text; stockin.date = dtPickerIntoStock.Value; stockin.transactor = transactor.Text; stockin.checker = checker.Text; stockin.money = totalmoney; //StockIn inStock = new StockIn(); if (newStockin) { if (db.Unit.Where(x => x.name == unit.Text.Trim()).Count() == 0) { Unit u = new Unit(); u.name = unit.Text.Trim(); db.Unit.InsertOnSubmit(u); db.SubmitChanges(); } var p = db.Provider.FirstOrDefault(x => x.name == provider.Text.Trim()); if (p == null) { p = new Provider(); p.name = provider.Text.Trim(); var form = new ProviderForm(db, p); if (form.ShowDialog() != DialogResult.OK) { return; } db.Provider.InsertOnSubmit(p); db.SubmitChanges(); } stockin.providerId = p.id; db.StockIn.InsertOnSubmit(stockin); db.SubmitChanges(); stockin = new StockIn(); goodsCat.SelectedIndex = -1; name.Text = ""; stock.SelectedIndex = -1; unit.Text = ""; amount.Text = ""; provider.SelectedIndex = -1; cost.Text = ""; money.Text = ""; checker.Text = ""; transactor.Text = ""; note.Text = ""; checker.Text = LogIn.m_User.name; transactor.Text = LogIn.m_User.name; } else { db.SubmitChanges(); this.DialogResult = DialogResult.OK; this.Close(); } }
//输入小费 public static string make_tip(string seatTxt, string tech, string money) { try { var db = new BathDBDataContext(connectionString); var m_Seat = db.Seat.FirstOrDefault(x => x.text == seatTxt); var menu = db.Menu.FirstOrDefault(x => x.name == "小费"); Orders order = new Orders(); order.menu = menu.name; order.text = m_Seat.text; order.systemId = m_Seat.systemId; order.number = 1; order.money = Convert.ToDouble(money); order.inputTime = DateTime.Now; order.inputEmployee = tech; order.paid = false; order.technician = tech; db.Orders.InsertOnSubmit(order); db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
//上传账单数据 private void run_account() { while (true) { try { var db = new BathDBDataContext(connectionString); long maxId = -1; var abandonIds = new List <long>(); var account_uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "Account"); if (account_uploadRecords != null) { maxId = MConvert <long> .ToTypeOrDefault(account_uploadRecords.maxId, -1); if (account_uploadRecords.abandonId != null) { var idArray = account_uploadRecords.abandonId.Split(Constants.SplitChar); abandonIds = Array.ConvertAll <string, long>(idArray, delegate(string s) { return(MConvert <long> .ToTypeOrDefault(s, -1)); }).ToList(); } } else { account_uploadRecords = new UploadRecords(); account_uploadRecords.tableName = "Account"; db.UploadRecords.InsertOnSubmit(account_uploadRecords); db.SubmitChanges(); } #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长 var maxTime = DateTime.Parse("2013-01-01 00:00:00"); if (db.ClearTable.Any()) { maxTime = db.ClearTable.Max(x => x.clearTime); } var max_passed_account_id = db.Account.Where(x => x.payTime <= maxTime).Max(x => x.id); abandonIds.RemoveAll(x => x <= max_passed_account_id); var _idArray = Array.ConvertAll <long, string>(abandonIds.ToArray(), delegate(long s) { return(s.ToString()); }); account_uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray); db.SubmitChanges(); #endregion var accounts = db.Account.Where(x => x.id > maxId); var _accounts = db.Account.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id)); accounts = accounts.Union(_accounts).Distinct(); bool changed = false; foreach (var account in accounts) { bool sucess = false; while (!sucess) { sucess = upload_json(BathClass.ConvertToJsonString(account), "account"); if (sucess) { changed = true; if (maxId < account.id) { maxId = account.id; account_uploadRecords.maxId = account.id; } if (account.abandon != null && account.id >= max_passed_account_id) { account_uploadRecords.abandonId += Constants.SplitChar + account.id.ToString(); } } } } if (changed) { db.SubmitChanges(); } } catch (System.Exception ex) { IOUtil.insert_file(BathClass.getErrorFileName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "run_account" + ex.Message); } } }
//处理预约 public static string proceed_reservation(string techId, string seatId, string accept) { try { var db = new BathDBDataContext(connectionString); var tr = db.TechReservation.FirstOrDefault(x => !x.proceeded.Value && x.techId == techId && x.seatId == seatId); if (tr == null) tr = db.TechReservation.FirstOrDefault(x => !x.proceeded.Value && x.techId == "轮钟" && x.seatId == seatId); if (tr == null) return "null"; tr.proceeded = true; if (accept == "true") tr.accept = true; else tr.accept = false; db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
//宾客付款 private void payTool_Click(object sender, EventArgs e) { BathDBDataContext dc = new BathDBDataContext(LogIn.connectionString); HintForm hintForm = new HintForm("请插入会员卡..."); if (hintForm.ShowDialog() != DialogResult.OK) { return; } MemberCardUsingForm memberCardUsingForm = new MemberCardUsingForm(Convert.ToDouble(moneyPayable.Text)); if (memberCardUsingForm.ShowDialog() != DialogResult.OK) { return; } if (m_Member == null) { m_Member = memberCardUsingForm.m_member; } Account account = new Account(); account.text = m_Seat.text; account.systemId = m_Seat.systemId; account.openTime = m_Seat.openTime.ToString(); account.openEmployee = m_Seat.openEmployee; account.payTime = DateTime.Now; account.payEmployee = LogIn.m_User.id.ToString(); account.macAddress = PCUtil.getMacAddr_Local(); if (m_promotion_Member != null) { account.promotionMemberId = m_promotion_Member.CI_CardNo; account.promotionAmount = discount_money; } if (m_Member != null) { account.memberId = memberCardUsingForm.m_member.CI_CardNo; } account.creditCard = Convert.ToInt32(moneyPayable.Text); db.Account.InsertOnSubmit(account); db.SubmitChanges(); var orderList = db.Orders.Where(x => x.systemId == m_Seat.systemId && !x.paid); foreach (Orders order in orderList) { order.paid = true; order.accountId = account.id; } m_Seat.status = 3; var room = db.Room.FirstOrDefault(x => x.seat == m_Seat.text); if (room != null) { room.status = "等待清洁"; } insert_member_infor(account); db.SubmitChanges(); var act_old = dc.Account.FirstOrDefault(x => x.systemId == m_Seat.systemId && x.abandon != null); if (act_old == null) { printTool_Click("结账单"); printTool_Click("存根单"); } else { printTool_Click("补救单"); } var act = dc.Account.FirstOrDefault(x => x.systemId == m_Seat.systemId && x.abandon == null); }
//预约技师 public static string reserve_tech(string techId, string seatId, string roomId, string time, string gender) { try { var db = new BathDBDataContext(connectionString); var tr = new TechReservation(); tr.techId = techId; tr.seatId = seatId; tr.roomId = roomId; tr.time = Convert.ToDateTime(time); tr.gender = gender; tr.proceeded = false; db.TechReservation.InsertOnSubmit(tr); db.SubmitChanges(); return "true"; } catch (System.Exception e) { return "false"; } }
//确定 private void okBtn_Click(object sender, EventArgs e) { if (name.Text == "" || phone.Text == "") { GeneralClass.printErrorMsg("需要输入姓名和电话"); return; } if (newEmployee) { if (db.Employee.FirstOrDefault(x => x.id.ToString() == id.Text) != null) { GeneralClass.printErrorMsg("已经存在此工号"); id.SelectAll(); id.Focus(); return; } } m_Employee.id = id.Text; m_Employee.idCard = idCard.Text; m_Employee.name = name.Text; m_Employee.cardId = cardId.Text; m_Employee.jobId = db.Job.FirstOrDefault(x => x.name == job.Text).id; m_Employee.onDuty = onDuty.Checked; m_Employee.phone = phone.Text; m_Employee.note = note.Text; m_Employee.salary = salary.Text; m_Employee.gender = gender.Text; m_Employee.entryDate = Convert.ToDateTime(entryDate.Value.ToShortDateString()); m_Employee.email = email.Text; m_Employee.birthday = Convert.ToDateTime(birthday.Value.ToShortDateString()); m_Employee.address = address.Text; if (newEmployee) { m_Employee.password = IOUtil.GetMD5("12345678"); db.Employee.InsertOnSubmit(m_Employee); db.SubmitChanges(); m_Form.dgv_show(); id.Text = (m_Employee.id + 1).ToString(); name.Text = ""; cardId.Text = ""; phone.Text = ""; onDuty.Checked = true; salary.Text = ""; idCard.Text = ""; email.Text = ""; address.Text = ""; note.Text = ""; //gender.Text = "男"; //job.Text = job.Items[0].ToString(); name.Focus(); m_Employee = new Employee(); return; } else { db.SubmitChanges(); this.DialogResult = DialogResult.OK; } }
//修改技师状态 public static string save_tech(string techId, string room, string seat, string status, string serverTime, string startTime) { //StringBuilder sb = new StringBuilder(); try { //insert_file("enter save tech"); //var dbLayer = new DBLayer(connectionString); //sb.Append("update [Employee] set techStatus='" + status + "'"); var db = new BathDBDataContext(connectionString); var tech = db.Employee.FirstOrDefault(x => x.id.ToString() == techId); if (tech == null) return "null"; string old_status = tech.techStatus.Trim(); if (room != "null") // sb.Append(",room='" + room + "'"); tech.room = room; else // sb.Append(",room=null"); tech.room = null; if (seat == "null") //sb.Append(",seat=null"); tech.seat = null; else //sb.Append(",seat='" + seat + "'"); tech.seat = seat; //insert_file(status.Trim()); tech.techStatus = status.Trim(); if (serverTime != "null") //sb.Append(",serverTime=" + serverTime); tech.serverTime = Convert.ToInt32(serverTime); else //sb.Append(",serverTime=null"); tech.serverTime = null; if (startTime != "null") //sb.Append(",startTime='" + startTime + "'"); tech.startTime = Convert.ToDateTime(startTime); else //sb.Append(",startTime=null"); tech.startTime = null; var tech_index = db.TechIndex.FirstOrDefault(x => x.dutyid == tech.jobId && x.gender == tech.gender); List<string> old_index = null; if (tech_index != null) { old_index = tech_index.ids.Split('%').ToList(); var tech_str = old_index.FirstOrDefault(x => x.Contains(tech.id + "=")); var tech_str_index = old_index.IndexOf(tech_str); if (tech_str_index != -1) { if (tech.techStatus == "空闲") { if (old_status == "点钟") { old_index[tech_str_index] = tech.id + "=T"; tech_index.ids = string.Join("%", old_index.ToArray()); } else { old_index.RemoveAt(tech_str_index); old_index.Add(tech.id + "=T"); tech_index.ids = string.Join("%", old_index.ToArray()); } } else if (tech.techStatus == "点钟" || tech.techStatus == "轮钟" || tech.techStatus == "上钟") { old_index[tech_str_index] = tech.id + "=F"; tech_index.ids = string.Join("%", old_index.ToArray()); } } else { if (tech.techStatus == "空闲") { old_index.Add(tech.id + "=T"); tech_index.ids = string.Join("%", old_index.ToArray()); } } } db.SubmitChanges(); //insert_file("finish save tech"); return "true"; } catch(Exception e) { insert_file(e.Message); return "false"; } }
//点击台位按钮 private void btn_Click(object sender, EventArgs e) { Button btn = sender as Button; btn.Enabled = false; btn.Enabled = true; BathDBDataContext db_new = new BathDBDataContext(LogIn.connectionString); m_Seat = db_new.HotelRoom.FirstOrDefault(x => x.text == btn.Text); var mtype = db_new.HotelRoomType.FirstOrDefault(x => x.id == m_Seat.typeId); switch (m_Seat.status) { case 1: //可用 case 3: //已经结账 if (!BathClass.ToBool(db_new.Options.FirstOrDefault().允许手工输入手牌号开牌) && mtype.menuId != null) { BathClass.printErrorMsg("不允许手工输入手牌号开牌!"); break; } open_seat(m_Seat, db_new); break; case 2: //正在使用 case 7: //押金离场 if (!BathClass.getAuthority(db_new, LogIn.m_User, "完整点单") && !BathClass.getAuthority(db_new, LogIn.m_User, "可见本人点单")) { BathClass.printErrorMsg("权限不够"); break; } m_Seat.ordering = true; db_new.SubmitChanges(); var orderForm = new HotelRoomOrderForm(m_Seat); orderForm.ShowDialog(); m_Seat.ordering = false; db_new.SubmitChanges(); break; case 4: //锁定 break; case 5: //停用 BathClass.printErrorMsg("台位已经停用!"); break; case 6: //警告 var orderCheckForm = new HotelRoomOrderCheckForm(m_Seat); orderCheckForm.ShowDialog(); break; case 8: //重新结账 BathClass.printErrorMsg("补救台位不能录单"); break; default: break; } }
//宾客付款 private void payTool_Click(object sender, EventArgs e) { BathDBDataContext dc = new BathDBDataContext(LogIn.connectionString); var seats = new List <HotelRoom>(); seats = m_Seats; List <bool> keeps = new List <bool>(); foreach (DataGridViewRow r in dgvChain.Rows) { keeps.Add(r.Cells[1].EditedFormattedValue.ToString() == "True"); } PayForm payForm = new PayForm(seats, keeps, m_Member, discount_money); if (payForm.ShowDialog() != DialogResult.OK) { return; } var ids = string.Join("|", m_Seats.OrderBy(x => x.text).Select(x => x.systemId).ToArray()); var act_old = dc.Account.FirstOrDefault(x => x.systemId == ids && x.abandon != null); var act = dc.Account.FirstOrDefault(x => x.systemId == ids && x.abandon == null); if (act_old == null) { if (printBill) { printTool_Click(dc, "结账单"); } if (printStubBill) { printTool_Click(dc, "存根单"); } if (printShoe) { List <string> seat_texts = new List <string>(); var ts = act.text.Split('|').ToList(); foreach (var tx in ts) { var s = m_Seats.FirstOrDefault(x => x.text == tx); if (s == null) { continue; } int i = m_Seats.IndexOf(s); if (dgvChain.Rows[i].Cells[1].EditedFormattedValue.ToString() == "False") { seat_texts.Add(tx); } } PrintShoeMsg.Print_DataGridView(seat_texts, act.payEmployee, act.payTime.ToString(), companyName); } } else { printTool_Click(dc, "补救单"); } sendMessageToShoes(act); //处理留牌 bool kept = false; for (int i = 0; i < m_Seats.Count; i++) { if (dgvChain.Rows[i].Cells[1].EditedFormattedValue.ToString() == "False") { continue; } kept = true; var s = m_Seats[i]; var seat = dc.HotelRoom.FirstOrDefault(x => x.systemId == s.systemId); var orders = dc.Orders.Where(x => x.systemId == seat.systemId && x.priceType == "每小时"); foreach (var order in orders) { order.inputTime = GeneralClass.Now; order.paid = false; order.accountId = null; } seat.status = 2; } if (kept) { dc.SubmitChanges(); } //if (seats == m_Seats) this.DialogResult = DialogResult.OK; //else //{ // m_Seats.Remove(m_Seat); // dgvChain_show(); // dgvChain.CurrentCell = null; // chain = true; // dgvExpense_show(); // setStatus(); //} }
//确定 private void btnOk_Click(object sender, EventArgs e) { if (db.CardInfo.FirstOrDefault(x => x.CI_CardNo == id.Text) != null) { BathClass.printErrorMsg("已经发行卡号为" + id.Text + "的卡"); return; } bool st = false; var ct = db.MemberSetting.FirstOrDefault().cardType; if (ct == "SLE4442") { st = ICCard.destribute_card_4442(company_code, id.Text); } else if (ct == "M1") { st = ICCard.destribute_card_M1(company_code, id.Text); } else if (ct == "CT") { st = true; } if (!st) { return; } CardInfo m_Element = new CardInfo(); m_Element.CI_CardNo = id.Text; m_Element.CI_CardTypeNo = db.MemberType.FirstOrDefault(x => x.name == memberType.Text).id; m_Element.state = "入库"; db.CardInfo.InsertOnSubmit(m_Element); CardCharge cardCharge = new CardCharge(); cardCharge.CC_CardNo = m_Element.CI_CardNo; cardCharge.CC_ItemExplain = "售卡收"; if (money.Text != "") { cardCharge.CC_DebitSum = Convert.ToDouble(money.Text); } cardCharge.CC_LenderSum = 0; cardCharge.CC_InputOperator = LogIn.m_User.id.ToString(); cardCharge.CC_InputDate = DateTime.Now; db.CardCharge.InsertOnSubmit(cardCharge); //if (money.Text != "") //{ // int sale_money = find_card_sale(); // if (sale_money != 0) // { // //CardCharge cardChargeSale = new CardCharge(); // //cardChargeSale.CC_CardNo = m_Element.CI_CardNo; // //cardChargeSale.CC_ItemExplain = "优惠送"; // //cardChargeSale.CC_DebitSum = sale_money; // //cardChargeSale.CC_LenderSum = 0; // //cardChargeSale.CC_InputOperator = LogIn.m_User.id.ToString(); // //cardChargeSale.CC_InputDate = GeneralClass.Now; // //cardChargeSale.systemId = m_Seat.systemId; // //db.CardCharge.InsertOnSubmit(cardChargeSale); // BathClass.printInformation("送" + sale_money + "元"); // } // //CardSale cardSale = new CardSale(); // //cardSale.memberId = m_Element.CI_CardNo; // //cardSale.balance = 0; // //if (payType.Text == "现金") // //cardSale.cash = Convert.ToDouble(money.Text); // //else if (payType.Text == "银联") // //cardSale.bankUnion = Convert.ToDouble(money.Text); // //cardSale.payTime = GeneralClass.Now; // //cardSale.payEmployee = LogIn.m_User.id.ToString(); // //cardSale.macAddress = PCUtil.getMacAddr_Local(); // //db.CardSale.InsertOnSubmit(cardSale); // //var menu = db.Menu.FirstOrDefault(x => x.name == memberType.Text); // //Orders order = new Orders(); // //order.menu = menu.name; // //order.text = m_Seat.text; // //order.systemId = m_Seat.systemId; // //order.number = 1; // //order.inputTime = BathClass.Now(LogIn.connectionString); // //order.inputEmployee = LogIn.m_User.id.ToString(); // //order.paid = false; // //if (money.Text == "") // // order.money = menu.price; // //else // //order.money = Convert.ToDouble(money.Text); // //db.Orders.InsertOnSubmit(order); //} db.SubmitChanges(); //this.DialogResult = DialogResult.OK; id.Text = ""; money.Text = ""; }
//手工打折 private void discountTool_Click(object sender, EventArgs e) { var dc = new BathDBDataContext(LogIn.connectionString); Employee oper = null; if (BathClass.getAuthority(dc, LogIn.m_User, "手工打折")) { oper = LogIn.m_User; } if (oper == null) { InputEmployeeByPwd inputEmployee = new InputEmployeeByPwd(); if (inputEmployee.ShowDialog() != DialogResult.OK) { return; } if (BathClass.getAuthority(dc, inputEmployee.employee, "手工打折")) { oper = inputEmployee.employee; } else { BathClass.printErrorMsg("没有手工打折权限"); return; } } if (oper == null) { return; } InputNumber inputNumberForm = new InputNumber("输入折扣率(<10)"); if (inputNumberForm.ShowDialog() != DialogResult.OK) { return; } double number = inputNumberForm.number; double discountRate = 0; if (number < 1) { discountRate = number; } else { discountRate = number / 10.0; } var os = dc.Orders.Where(x => m_Seats.Select(y => y.systemId).Contains(x.systemId) && x.deleteEmployee == null); foreach (Orders o in os) { o.money = Math.Round(o.money * discountRate); } foreach (HotelRoom seat in m_Seats) { seat.discount = inputNumberForm.number; seat.discountEmployee = oper.id; } Operation op = new Operation(); op.employee = oper.name; op.seat = string.Join("|", m_Seats.Select(y => y.text).ToArray()); op.openEmployee = string.Join("|", m_Seats.Select(y => y.openEmployee).ToArray()); //op.openTime = seat.openTime; op.explain = "手工打折"; op.note1 = number.ToString(); op.note2 = string.Join("|", m_Seats.Select(y => y.systemId).ToArray()); op.opTime = BathClass.Now(LogIn.connectionString); dc.Operation.InsertOnSubmit(op); dc.SubmitChanges(); dgvExpense_show(dc); setStatus(dc); }
public static void find_combo_duplicated(string con_str, string systemId, string text) { var db = new BathDBDataContext(con_str); db.Orders.DeleteAllOnSubmit(db.Orders.Where(x => x.systemId == systemId && x.menu.Contains("套餐"))); var orders = db.Orders.Where(x => x.systemId == systemId && x.deleteEmployee == null); orders = orders.Where(x => !x.inputEmployee.Contains("电脑") && !x.menu.Contains("套餐")); foreach (Orders tmp_order in orders) { if (tmp_order.comboId != null) { tmp_order.comboId = null; tmp_order.money = db.Menu.FirstOrDefault(x => x.name == tmp_order.menu).price *tmp_order.number; } } db.SubmitChanges(); var menus = db.Menu; var comboList = db.Combo.OrderByDescending(x => x.freePrice); List <int> ids = new List <int>(); foreach (Combo combo in comboList) { if (combo.priceType == "消费满免项目") { if (get_seat_expense_for_combo(db, combo, systemId) < combo.expenseUpTo) { continue; } var freeIds = BathClass.disAssemble(combo.freeMenuIds); var combo_menus = menus.Where(x => freeIds.Contains(x.id)).Select(x => x.name); foreach (var combo_menu in combo_menus) { var tmp_order = orders.FirstOrDefault(x => x.menu == combo_menu && !ids.Contains(x.id)); if (tmp_order == null) { continue; } tmp_order.comboId = combo.id; tmp_order.money = 0; ids.Add(tmp_order.id); } } else { List <int> menuIds = disAssemble(combo.menuIds); var combo_menus = menus.Where(x => menuIds.Contains(x.id)).Select(x => x.name); var order_menus = orders.Where(x => !ids.Contains(x.id)).Select(x => x.menu); if (combo_menus.All(x => order_menus.Any(y => y == x))) { foreach (var combo_menu in combo_menus) { var tmp_order = orders.FirstOrDefault(x => x.menu == combo_menu); tmp_order.comboId = combo.id; ids.Add(tmp_order.id); if (combo.priceType == "免项目") { var freeIds = BathClass.disAssemble(combo.freeMenuIds); var freeMenus = db.Menu.Where(x => freeIds.Contains(x.id)).Select(x => x.name); if (freeMenus.Contains(tmp_order.menu)) { tmp_order.money = 0; } } } if (combo.priceType == "减金额") { Orders comboOrder = new Orders(); comboOrder.menu = "套餐" + combo.id.ToString() + "优惠"; comboOrder.text = text; comboOrder.systemId = systemId; comboOrder.number = 1; comboOrder.inputTime = DateTime.Now; comboOrder.inputEmployee = "套餐"; comboOrder.paid = false; comboOrder.comboId = combo.id; comboOrder.money = Convert.ToDouble(combo.price) - combo.originPrice; db.Orders.InsertOnSubmit(comboOrder); } } } } db.SubmitChanges(); }
//确定 private void okBtn_Click(object sender, EventArgs e) { if (priceType.SelectedIndex == 1 && price.Text == "") { GeneralClass.printErrorMsg("需要输入价格"); return; } if (priceType.SelectedIndex == 0 && dgvFreeItems.Rows.Count == 0) { GeneralClass.printErrorMsg("需要输入减免项目"); return; } if (priceType.SelectedIndex == 2 && upTo.Text == "") { GeneralClass.printErrorMsg("需要输入价格"); return; } if (priceType.SelectedIndex == 2 && dgvFreeItems3.Rows.Count == 0) { GeneralClass.printErrorMsg("需要输入减免项目"); return; } if (priceType.SelectedIndex == 0 || priceType.SelectedIndex == 1) { m_Combo.menuIds = ComboManagementForm.assembleCombo(menuIdList); m_Combo.originPrice = ComboManagementForm.getComboOriginPrice(db, menuIdList); } if (priceType.SelectedIndex == 0) { m_Combo.priceType = "免项目"; m_Combo.freeMenuIds = ComboManagementForm.assembleCombo(freeIdList); m_Combo.price = m_Combo.originPrice - BathClass.get_combo_price(db, m_Combo); } else if (priceType.SelectedIndex == 1) { m_Combo.priceType = "减金额"; m_Combo.freeMenuIds = null; m_Combo.price = Convert.ToDouble(price.Text); } else if (priceType.SelectedIndex == 2) { m_Combo.priceType = "消费满免项目"; m_Combo.menuIds = ComboManagementForm.assembleCombo(menuIdList); m_Combo.freeMenuIds = ComboManagementForm.assembleCombo(freeIdList); m_Combo.expenseUpTo = Convert.ToDouble(upTo.Text); } m_Combo.freePrice = BathClass.get_combo_price(db, m_Combo); if (newCombo) { db.Combo.InsertOnSubmit(m_Combo); } db.SubmitChanges(); this.DialogResult = DialogResult.OK; this.Close(); }
//上传ClearTable数据 private void run_clearTable() { while (true) { try { var db = new BathDBDataContext(connectionString); long maxId = -1; DateTime clearTime = DateTime.Now; var uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "ClearTable"); if (uploadRecords != null) { maxId = MConvert<long>.ToTypeOrDefault(uploadRecords.maxId, -1); clearTime = MConvert<DateTime>.ToTypeOrDefault(uploadRecords.clearTime, clearTime); } else { uploadRecords = new UploadRecords(); uploadRecords.tableName = "ClearTable"; db.UploadRecords.InsertOnSubmit(uploadRecords); db.SubmitChanges(); } var clearTables = db.ClearTable.Where(x => x.id > maxId); var _clearTables = db.ClearTable.Where(x => x.id == maxId && x.clearTime != clearTime); clearTables = clearTables.Union(_clearTables).Distinct(); bool changed = false; foreach (var clearTable in clearTables) { bool sucess = false; while (!sucess) { sucess = upload_json(BathClass.ConvertToJsonString(clearTable), "ClearTable"); if (sucess) { changed = true; if (maxId < clearTable.id) { maxId = clearTable.id; uploadRecords.maxId = clearTable.id; } if (clearTable.clearTime != clearTime) { clearTime = clearTable.clearTime; uploadRecords.clearTime = clearTable.clearTime; } db.SubmitChanges(); } } } if (changed) db.SubmitChanges(); } catch (System.Exception ex) { } } }
//取消开牌 private void CtxCancelOpen_Click(object sender, EventArgs e) { BathDBDataContext db_new = new BathDBDataContext(LogIn.connectionString); var seat = getContextSenderSeat(db_new, sender); InputEmployeeByPwd inputEmployee = new InputEmployeeByPwd(); if (inputEmployee.ShowDialog() != DialogResult.OK) { return; } if (!BathClass.getAuthority(db_new, inputEmployee.employee, "取消开牌")) { BathClass.printErrorMsg(inputEmployee.employee.id + "不具有取消开台权限!"); return; } if (seat.status != 2) { BathClass.printErrorMsg("该台位不在使用中,不能取消开台!"); return; } var options = db_new.Options.FirstOrDefault(); if (options != null) { var q = options.取消开牌时限; if (q != null && GeneralClass.Now - seat.openTime >= TimeSpan.Parse("00:" + q.ToString() + ":00")) { BathClass.printErrorMsg("已超过取消开牌时限!"); return; } } var orders = db_new.Orders.Where(x => x.systemId == seat.systemId); if (orders.Count() > 2) { BathClass.printErrorMsg("已经点单,不能取消开台"); return; } if (BathClass.printAskMsg("确认取消开台?") != DialogResult.Yes) { return; } Operation op = new Operation(); op.employee = inputEmployee.employee.id; op.seat = seat.text; op.openEmployee = seat.openEmployee; op.openTime = seat.openTime; op.explain = "取消开牌"; op.opTime = BathClass.Now(LogIn.connectionString); db_new.Operation.InsertOnSubmit(op); db_new.Orders.DeleteAllOnSubmit(db_new.Orders.Where(x => x.systemId == seat.systemId)); BathClass.reset_seat(seat); db_new.SubmitChanges(); }
//确定 private void okBtn_Click(object sender, EventArgs e) { int newId = Convert.ToInt32(id.Text); m_job.id = newId; m_job.name = name.Text; m_job.note = note.Text; if (ip.Text == "") { m_job.ip = null; } else { m_job.ip = ip.Text; } if (ComboJobList.Text.Trim() != "") { var job_leader = db.Job.FirstOrDefault(x => x.name == ComboJobList.Text); if (job_leader != null) { m_job.leaderId = job_leader.id; } } if (ComboDeparts.Text != "") { var depart = db.Department.FirstOrDefault(x => x.name == ComboDeparts.Text); if (depart != null) { m_job.departId = depart.id; } } m_Authority.jobId = newId; foreach (Control p in cts) { foreach (Control ct in p.Controls) { if (ct.GetType() == typeof(CheckBox)) { var pro = m_Authority.GetType().GetProperty(ct.Text); if (pro == null) { continue; } if (BathClass.getAuthority(db, LogIn.m_User, ct.Text)) { pro.SetValue(m_Authority, ((CheckBox)ct).Checked, null); } } } } if (newJob) { db.Job.InsertOnSubmit(m_job); db.Authority.InsertOnSubmit(m_Authority); } db.SubmitChanges(); this.DialogResult = DialogResult.OK; }
private void btnOk_Click(object sender, EventArgs e) { if (name.Text == "") { BathClass.printErrorMsg("需要选择商品名称"); return; } if (amount.Text.Trim() == "") { BathClass.printErrorMsg("需要输入数量!"); return; } if (stock.Text == "") { BathClass.printErrorMsg("需要选择仓库!"); return; } if (transactor.Text == "") { BathClass.printErrorMsg("需要输入经手人!"); return; } if (checker.Text == "") { BathClass.printErrorMsg("需要输入审核!"); return; } if (provider.Text.Trim() == "") { BathClass.printErrorMsg("需要选择供应商!"); return; } //StockIn inStock = new StockIn(); inStock.name = name.Text; if (cost.Text != "") { inStock.cost = Convert.ToDouble(cost.Text); } inStock.amount = Convert.ToDouble(amount.Text); if (unit.Text != "") { inStock.unit = unit.Text; } inStock.stockId = db.Stock.FirstOrDefault(x => x.name == stock.Text).id; inStock.note = note.Text; inStock.date = dtPickerIntoStock.Value; inStock.transactor = transactor.Text; inStock.checker = checker.Text; inStock.money = totalmoney; var p = db.Provider.FirstOrDefault(x => x.name == provider.Text.Trim()); if (p == null) { p = new Provider(); p.name = provider.Text.Trim(); var form = new ProviderForm(db, p); if (form.ShowDialog() != DialogResult.OK) { return; } db.Provider.InsertOnSubmit(p); db.SubmitChanges(); } inStock.providerId = p.id; db.SubmitChanges(); this.DialogResult = DialogResult.OK; }
private void MainWindow_Load(object sender, EventArgs e) { connectionIP = IOUtil.get_config_by_key(ConfigKeys.KEY_CONNECTION_IP); if (connectionIP == "") { PCListForm pCListForm = new PCListForm(); if (pCListForm.ShowDialog() != DialogResult.OK) { this.Close(); return; } connectionIP = pCListForm.ip; IOUtil.set_config_by_key(ConfigKeys.KEY_CONNECTION_IP, connectionIP); } db = new BathDBDataContext(connectionString); if (!db.DatabaseExists()) { GeneralClass.printErrorMsg("连接IP不对或者网络不通,请重试!"); connectionIP = ""; IOUtil.set_config_by_key(ConfigKeys.KEY_CONNECTION_IP, connectionIP); this.Close(); return; } dir = IOUtil.get_config_by_key(ConfigKeys.KEY_VIDEO_SAVE_DIR); if (dir == "") set_dir(); if (dir == "") { this.Close(); return; } if (!dir.EndsWith("\\")) dir += "\\"; serverIp.Text = connectionIP; cacheDir.Text = dir; string pvs = IOUtil.get_config_by_key(ConfigKeys.KEY_VIDEO_TIMESPAN); if (pvs != "") { seconds.Text = pvs; ts = TimeSpan.Parse("00:00:" + pvs); } else { pvs = "30"; seconds.Text = pvs; ts = TimeSpan.Parse("00:00:" + pvs); IOUtil.set_config_by_key(ConfigKeys.KEY_VIDEO_TIMESPAN, pvs); } db.PayMsg.DeleteAllOnSubmit(db.PayMsg.ToArray()); db.SubmitChanges(); video = new cVideo(panel1.Handle, panel1.Width, panel1.Height); if (video.StartWebCam()) { video.get(); video.Capparms.fYield = true; video.Capparms.fAbortLeftMouse = false; video.Capparms.fAbortRightMouse = false; video.Capparms.fCaptureAudio = false; video.Capparms.dwRequestMicroSecPerFrame = 0x9C40; // 设定帧率25fps: 1*1000000/25 = 0x9C40 video.set(); } watch_Timer = new System.Timers.Timer(100); watch_Timer.Elapsed += new ElapsedEventHandler(watch_Timer_Elapsed); watch_Timer.Start(); watch_Timer.Enabled = true; }
//确定重新结账 private void btnOk_Click(object sender, EventArgs e) { if (dgv.CurrentCell == null) { BathClass.printErrorMsg("未选中账单号"); return; } var db_new = new BathDBDataContext(LogIn.connectionString); var act = db_new.Account.FirstOrDefault(x => x.id.ToString() == dgv.CurrentRow.Cells[0].Value.ToString()); if (act == null) { if (BathClass.printAskMsg("手牌未结账,是否直接恢复手牌?") != DialogResult.Yes) { return; } } var texts = act.text.Split('|'); var ids = act.systemId.Split('|'); //var seats = db_new.HotelRoom.Where(x => texts.Contains(x.text)); for (int i = 0; i < texts.Count(); i++) { var s = db_new.HotelRoom.FirstOrDefault(x => x.text == texts[i]); if (s == null) { continue; } if (s.status == 2 || s.status == 6 || s.status == 7) { BathClass.printErrorMsg("手牌: " + s.text + "已经重新开牌,请先更换手牌"); return; } s.status = 8; s.systemId = ids[i]; var orders = db_new.HisOrders.Where(x => x.systemId == s.systemId); foreach (var order in orders) { var ho = new Orders(); ho.menu = order.menu; ho.text = order.text; ho.systemId = order.systemId; ho.number = order.number; ho.priceType = order.priceType; ho.money = order.money; ho.technician = order.technician; ho.techType = order.techType; ho.inputTime = order.inputTime; ho.inputEmployee = order.inputEmployee; ho.deleteEmployee = order.deleteEmployee; ho.donorEmployee = order.donorEmployee; ho.comboId = order.comboId; ho.paid = false; ho.accountId = order.accountId; ho.billId = order.billId; ho.stopTiming = true; ho.departmentId = 1; db_new.HisOrders.DeleteOnSubmit(order); db_new.Orders.InsertOnSubmit(ho); } } act.abandon = m_user.id; var cc = db_new.CardCharge.Where(x => act.id.ToString() == x.CC_AccountNo); if (cc.Any()) { db_new.CardCharge.DeleteAllOnSubmit(cc); } db_new.SubmitChanges(); this.DialogResult = DialogResult.OK; }