protected int drawShift(Graphics g, ShiftForPrinting protocol) { PrinterGraphics printerG = new PrinterGraphics(g, protocol.PrinterFormat.PaperSize, protocol.PrinterFormat.Font, protocol.PrinterFormat.PaddingRight); decimal receivablePriceAll = 0, realPriceAll = 0; printerG.DrawStringLine($"交接班", protocol.PrinterFormat.ShiftBigFontSize, align: StringAlignment.Center); foreach (Shift shift in protocol.Shifts) { printerG.DrawStringLine($"班次: {shift.Id}", protocol.PrinterFormat.ShiftFontSize); printerG.DrawStringLine($"时间: {shift.DateTime.ToString("yyyy-MM-dd HH:mm:ss")}", protocol.PrinterFormat.ShiftFontSize); printGrid433(printerG, new string[] { "支付名称", "应收", "实收" }, protocol.PrinterFormat.ShiftSmallFontSize); foreach (ShiftDetail detail in shift.ShiftDetails) { receivablePriceAll += detail.ReceivablePrice; realPriceAll += detail.RealPrice; printGrid433(printerG, new string[] { detail.PayKind, $"¥{detail.ReceivablePrice}", $"¥{detail.RealPrice}" }, protocol.PrinterFormat.ShiftFontSize); } printHr(printerG); } printerG.DrawStringLine("总计:", protocol.PrinterFormat.ShiftSmallFontSize); printGrid55f(printerG, new string[] { "应收", $"¥{receivablePriceAll}" }, protocol.PrinterFormat.ShiftFontSize); printGrid55f(printerG, new string[] { "实收", $"¥{realPriceAll}" }, protocol.PrinterFormat.ShiftFontSize); printGrid55f(printerG, new string[] { "盈亏", $"¥{(realPriceAll - receivablePriceAll)}" }, protocol.PrinterFormat.ShiftFontSize); printEnd(printerG); g.Dispose(); return(printerG.GetHeight()); }
/// <summary> /// 根据Graphics绘制传菜单 /// </summary> protected int drawServeOrder(Graphics g, DineForPrinting protocol) { PrinterGraphics printerG = new PrinterGraphics(g, protocol.PrinterFormat.PaperSize, protocol.PrinterFormat.Font, protocol.PrinterFormat.PaddingRight); printerG.DrawStringLine(protocol.Dine.Desk.ServeDepartmentName, protocol.PrinterFormat.ServeOrderFontSize); printerG.DrawStringLine($"单号: {protocol.Dine.Id}", protocol.PrinterFormat.ServeOrderSmallFontSize); printerG.DrawStringLine($"时间: {protocol.Dine.BeginTime.ToString("M-d HH:mm")}", protocol.PrinterFormat.ServeOrderSmallFontSize); printerG.DrawStringLine($"餐桌: {protocol.Dine.Desk.Name}", protocol.PrinterFormat.ServeOrderFontSize); printHr(printerG); printGrid82(printerG, new string[] { "名称", "数量" }, protocol.PrinterFormat.ServeOrderSmallFontSize); printHr(printerG); foreach (DineMenu dineMenu in protocol.Dine.DineMenus.Where(p => p.Status != HotelDAO.Models.DineMenuStatus.Returned)) { // 打印具体菜品信息 printGrid82(printerG, new string[] { dineMenu.Menu.Name, dineMenu.Count.ToString() }, protocol.PrinterFormat.ServeOrderFontSize); // 如果菜品为套餐,则打印套餐包含的具体菜品信息 if (dineMenu.Menu.IsSetMeal) { List <SetMealMenu> setMealMenus = dineMenu.Menu.SetMealMenus; for (int i = 0; i < setMealMenus.Count; i++) { char tab = '├'; if (i == setMealMenus.Count - 1) { tab = '└'; } printGrid82(printerG, new string[] { $"{tab} {setMealMenus[i].Name}", setMealMenus[i].Count.ToString() }, protocol.PrinterFormat.ServeOrderFontSize); } } // 打印菜品的备注信息 var remarks = dineMenu.Remarks.ToList(); for (int i = 0; i < dineMenu.Remarks.Count; i++) { char tab = '├'; if (i == dineMenu.Remarks.Count - 1) { tab = '└'; } printGrid82(printerG, new string[] { $"{tab} {remarks[i].Name}", null, }, protocol.PrinterFormat.ServeOrderFontSize); } } ; printEnd(printerG); return(printerG.GetHeight()); }
/// <summary> /// 根据Graphics绘制厨房单 /// </summary> protected int drawKitchenOrder(Graphics g, DineForPrinting protocol, DineMenu dineMenu, SetMealMenu setMealMenu) { PrinterGraphics printerG = new PrinterGraphics(g, protocol.PrinterFormat.PaperSize, protocol.PrinterFormat.Font, protocol.PrinterFormat.PaddingRight); printerG.DrawStringLine(dineMenu.Menu.DepartmentName, protocol.PrinterFormat.KitchenOrderFontSize); printerG.DrawStringLine($"单号: {protocol.Dine.Id}", protocol.PrinterFormat.KitchenOrderSmallFontSize); printerG.DrawStringLine($"时间: {protocol.Dine.BeginTime.ToString("M-d HH:mm")}", protocol.PrinterFormat.KitchenOrderSmallFontSize); if (dineMenu.Status == HotelDAO.Models.DineMenuStatus.Returned) { string returnStr = "退菜"; if (dineMenu.ReturnedReason != null) { returnStr += $", 理由: {dineMenu.ReturnedReason}"; } printerG.DrawStringLine(returnStr, protocol.PrinterFormat.KitchenOrderFontSize); } printerG.DrawStringLine($"餐桌: {protocol.Dine.Desk.Name}", protocol.PrinterFormat.KitchenOrderFontSize); printGrid82(printerG, new string[] { dineMenu.Menu.Name, dineMenu.Count.ToString() }, protocol.PrinterFormat.KitchenOrderFontSize); if (setMealMenu != null) { printGrid82(printerG, new string[] { $"└ {setMealMenu.Name}", setMealMenu.Count.ToString() }, protocol.PrinterFormat.KitchenOrderFontSize); } // 打印菜品的备注信息 var remarks = dineMenu.Remarks.ToList(); for (int i = 0; i < dineMenu.Remarks.Count; i++) { char tab = '├'; if (i == dineMenu.Remarks.Count - 1) { tab = '└'; } printGrid82(printerG, new string[] { $"{tab} {remarks[i].Name}", null, }, protocol.PrinterFormat.KitchenOrderFontSize); } printEnd(printerG); return(printerG.GetHeight()); }
/// <summary> /// 根据Graphics绘制收银条 /// </summary> protected int drawRecipt(Graphics g, DineForPrinting protocol, bool isFullDineMenus) { PrinterGraphics printerG = new PrinterGraphics(g, protocol.PrinterFormat.PaperSize, protocol.PrinterFormat.Font, protocol.PrinterFormat.PaddingRight); printerG.DrawStringLine($"欢迎光临{protocol.Hotel.Name}", protocol.PrinterFormat.ReciptBigFontSize, align: StringAlignment.Center); printerG.DrawStringLine($"TEL: {protocol.Hotel.Tel}", protocol.PrinterFormat.ReciptSmallFontSize, align: StringAlignment.Center); printerG.DrawStringLine($"{protocol.Hotel.Address}", protocol.PrinterFormat.ReciptSmallFontSize, align: StringAlignment.Center); printerG.DrawStringLine($"收据", protocol.PrinterFormat.ReciptSmallFontSize, align: StringAlignment.Center); printerG.TrimY(5); printerG.DrawStringLine($"单号: {protocol.Dine.Id}", protocol.PrinterFormat.ReciptFontSize); printerG.DrawStringLine($"时间: {protocol.Dine.BeginTime.ToString("M-d HH:mm")}", protocol.PrinterFormat.ReciptFontSize); if (protocol.Dine.Type == HotelDAO.Models.DineType.ToStay) { printerG.DrawStringLine($"餐桌: {protocol.Dine.Desk.Name}", protocol.PrinterFormat.ReciptFontSize); } else if (protocol.Dine.Type == HotelDAO.Models.DineType.ToGo) { printerG.DrawStringLine($"外卖: {protocol.Dine.Desk.Name}", protocol.PrinterFormat.ReciptBigFontSize); if (protocol.Dine.TakeOut.RecordId != null) { printerG.DrawStringLine($"外卖平台编号: {protocol.Dine.TakeOut.RecordId}", protocol.PrinterFormat.ReciptBigFontSize); } printerG.DrawStringLine($"手机: {protocol.User.PhoneNumber}", protocol.PrinterFormat.ReciptBigFontSize); printerG.DrawStringLine($"地址: {protocol.Dine.TakeOut.Address}", protocol.PrinterFormat.ReciptBigFontSize); } printHr(printerG); printGridRecipt(printerG, new string[] { "名称", "数量", "单价", "折后小计" }, protocol.PrinterFormat.ReciptFontSize); printHr(printerG); decimal priceAll = 0m; foreach (DineMenu dineMenu in protocol.Dine.DineMenus.Where(p => p.Status != HotelDAO.Models.DineMenuStatus.Returned)) { // 打印具体菜品信息 printGridRecipt(printerG, new string[] { dineMenu.Menu.Name, dineMenu.Count.ToString(), dineMenu.OriPrice.ToString(), (dineMenu.Price * dineMenu.Count).ToString() }, protocol.PrinterFormat.ReciptFontSize); priceAll += dineMenu.Price * dineMenu.Count; // 如果菜品为套餐,则打印套餐包含的具体菜品信息 if (dineMenu.Menu.IsSetMeal) { List <SetMealMenu> setMealMenus = dineMenu.Menu.SetMealMenus; for (int i = 0; i < setMealMenus.Count; i++) { char tab = '├'; if (i == setMealMenus.Count - 1) { tab = '└'; } printGridRecipt(printerG, new string[] { $"{tab} {setMealMenus[i].Name}", setMealMenus[i].Count.ToString(), null, null }, protocol.PrinterFormat.ReciptFontSize); } } // 打印菜品的备注信息 var remarks = dineMenu.Remarks.ToList(); for (int i = 0; i < dineMenu.Remarks.Count; i++) { char tab = '├'; if (i == dineMenu.Remarks.Count - 1) { tab = '└'; } printGridRecipt(printerG, new string[] { $"{tab} {remarks[i].Name}", null, 0 == remarks[i].Price ? null : remarks[i].Price.ToString(), 0 == remarks[i].Price ? null : remarks[i].Price.ToString() }, protocol.PrinterFormat.ReciptFontSize); priceAll += remarks[i].Price; } } ; printHr(printerG); if (isFullDineMenus) { priceAll = protocol.Dine.Price; } printGrid55f(printerG, new string[] { "总计", priceAll.ToString() }, protocol.PrinterFormat.ReciptBigFontSize); if (protocol.Dine.Discount < 1) { printerG.DrawStringLine($"{protocol.Dine.DiscountName}: {protocol.Dine.Discount * 10}折", protocol.PrinterFormat.ReciptFontSize); } string paidWay = protocol.Dine.IsOnline ? "线上支付" : "线下支付"; printerG.DrawStringLine($"支付方式: {paidWay}", protocol.PrinterFormat.ReciptFontSize); foreach (DinePaidDetail dinePaidDetail in protocol.Dine.DinePaidDetails) { decimal dinePaidDetailPrice = dinePaidDetail.Price; if (dinePaidDetail.PayKind.Type == HotelDAO.Models.PayKindType.Cash) { dinePaidDetailPrice += protocol.Dine.Change; } printerG.DrawStringLine($"{dinePaidDetail.PayKind.Name}: ¥{dinePaidDetailPrice}", protocol.PrinterFormat.ReciptFontSize); } if (protocol.Dine.IsPaid) { printerG.DrawStringLine($"找零: ¥{protocol.Dine.Change}", protocol.PrinterFormat.ReciptFontSize); } else { printerG.DrawStringLine("未支付", protocol.PrinterFormat.ReciptFontSize); } printEnd(printerG); g.Dispose(); return(printerG.GetHeight()); }