private void ClaimPOSDevices() { // open (if not already opened), claim and enable the cash drawer and receipt printer. ICashDrawer drawer = _posDeviceManager.GetCashDrawer(); drawer.Claim(); drawer.Enable(); IReceiptPrinter printer = _posDeviceManager.GetReceiptPrinter(); printer.Claim(); printer.Enable(); }
public void PrintReceipt() { var prnt = _posDeviceManager.GetReceiptPrinter(); // print heading prnt.PrintStoredLogo(1); prnt.PrintLine("\x1b|cAThis came from BBQRMS!!!!"); prnt.PrintLine("\x1b|cA" + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); // print order number prnt.PrintLine(""); prnt.PrintLine("\x1b|2C\x1b|cAOrder #: " + Order.Number); // print out items foreach (OrderItem item in Order.OrderItems) { prnt.PrintLine(item.Name); var itemPriceLine = FormatReceiptItemLine(item); prnt.PrintLine(itemPriceLine); } // print out discounts if (Order.Discounts.Any()) { prnt.PrintLine(""); foreach (Discount discount in Order.Discounts) { prnt.PrintLine(string.Format("\x1b|rA\x1b|bCDiscount: \x1b|N{0:C}", discount.Amount)); } } // print out totals prnt.PrintLine(string.Format("\x1b|rA\x1b|2CSubtotal:\x1b|1C {0:C}", SubTotal)); prnt.PrintLine(string.Format("\x1b|rATax: {0:C}", TaxAmount)); prnt.PrintLine(string.Format("\x1b|rA\x1b|2CTotal: {0:C}", TotalPrice)); // print out payments prnt.PrintLine(""); foreach (var paymentByType in Order.Payments.GroupBy(p => p.PaymentTypeId)) { string desc = "Paid"; switch (paymentByType.Key) { //TODO: a better lookup case PaymentTypes.Cash: desc = "Cash"; break; case PaymentTypes.CreditCard: desc = "Credit"; break; case PaymentTypes.Check: desc = "Check"; break; } var totalForType = paymentByType.Sum(pmt => pmt.Amount); prnt.PrintLine(string.Format("\x1b|rA{0}: {1:C}", desc, totalForType)); } // print out change due. decimal totalPaid = Order.Payments.Sum(p => p.Amount); if (totalPaid > TotalPrice) { decimal change = totalPaid - TotalPrice; prnt.PrintLine(string.Format("\x1b|rA\x1b|2CChange due: \x1b|1C{0:C}", change)); } prnt.FeedToCut(); prnt.Cut(); }