예제 #1
0
        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();
        }
예제 #2
0
        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();
        }