Beispiel #1
0
        public void Add100ItemsToRegisterAndChange1Price100Times()
        {
            // setup
            Register r = new Register();

            for (int i = 0; i < 100; i++)
            {
                var s1 = new SoldLineItem();
                // create a sale item
                s1.ItemID = TestInventoryItem;
                s1.Price = TestPrice * i;
                s1.Quantity = TestQuantity * i;
                s1.Description = TestDescription;

                // trigger
                r.Add(s1);
                s1 = null;
            }

            for (int i = 5; i < 55; i++)
            {
                r.Update(i, 23.4, 3);
            }

            for (int i = 45; i < 60; i++)
            {
                r.DeleteRow(i);
            }

            double subTotal = r.SubTotal();
            // validate
            int registerCount = r.RegisterCount();
            Assert.AreEqual(registerCount, 85, "expected register to have only 85 items");
            Assert.AreEqual(277765.14999999997, subTotal, "expected different subtotal");
        }
Beispiel #2
0
        /// <summary>
        /// Prepares the register for the sale
        /// </summary>
        /// <param name="SalesRegister"></param>
        /// <param name="SaleType"></param>
        /// <param name="SubTotal"></param>
        /// <param name="Discount"></param>
        /// <param name="Taxes"></param>
        /// <param name="TotalSale"></param>
        /// <returns></returns>
        public bool PrintSale(Register SalesRegister, int SaleType, double SubTotal, double Discount, double Taxes, double TotalSale)
        {
            System.DateTime  dDateTime = System.DateTime.Now;
            int InvoiceID = -1;
            InvoiceID = RecordSale(SaleType, SubTotal, Discount, Taxes, TotalSale, dDateTime);
            if (InvoiceID != -1)
            {
                bool bResult = false;
                foreach (SoldLineItem item in SalesRegister.Sale)
                {
                    bResult = RecordSaleDetails(InvoiceID, item.LineItemID, item.ItemID, item.Description, item.Price, item.Quantity, item.Extended);
                    if (bResult == false)
                    {
                        return bResult;
                    }
                    bResult = RecordOldSale(item.ItemID, item.Price);
                    if (bResult == false)
                    {
                        return bResult;
                    }
                }

                PrintTape(InvoiceID, SalesRegister, SaleType, SubTotal, Discount, Taxes, TotalSale, dDateTime);
                return true;
            }
            else
            {
                return false;
            }
        }
Beispiel #3
0
        public void AddItemRemoveItem()
        {
            // setup
            Register r = new Register();
            var s1 = new SoldLineItem();

            // create a sale item
            s1.ItemID = TestInventoryItem;
            s1.Price = TestPrice;
            s1.Quantity = TestQuantity;
            s1.Description = TestDescription;

            // trigger
            r.Add(s1);
            var registerLine = new SoldLineItem();

            registerLine = r.GetOneLine(0);
            // validate
            Assert.AreSame(TestDescription, registerLine.Description, "expected same descriptions");
            Assert.AreEqual(TestInventoryItem, registerLine.ItemID, "expected same inventory item id");
            Assert.AreEqual(TestPrice, registerLine.Price, "expected same price");
            Assert.AreEqual(TestQuantity, registerLine.Quantity, "expected same quantity");
            Assert.AreEqual((TestPrice * TestQuantity), registerLine.Extended, "expected same extension");
            Assert.AreEqual(0, registerLine.LineItemID, "expected first line item");
        }
Beispiel #4
0
 /// <summary>
 /// Prints a register tape
 /// </summary>
 /// <param name="invoiceid"></param>
 /// <param name="SalesRegister"></param>
 /// <param name="Saletype"></param>
 /// <param name="SubTotal"></param>
 /// <param name="Discount"></param>
 /// <param name="Taxes"></param>
 /// <param name="TotalSale"></param>
 /// <param name="dDateTime"></param>
 public void PrintTape(int invoiceid, Register SalesRegister, int Saletype, double SubTotal, double Discount, double Taxes, double TotalSale , DateTime dDateTime)
 {
     RegisterPrint rp = new RegisterPrint();
     string PrinterName = GlobalClass.RegisterPrinter;
     rp.Print(invoiceid, SalesRegister, Saletype, SubTotal, Discount, Taxes, TotalSale, dDateTime, PrinterName);
 }
Beispiel #5
0
        public void AddOneItemToRegister()
        {
            // setup
            Register r = new Register();
            var s1 = new SoldLineItem();

            // create a sale item
            s1.ItemID = TestInventoryItem;
            s1.Price = TestPrice;
            s1.Quantity = TestQuantity;
            s1.Description = TestDescription;

            // trigger
            r.Add(s1);

            // validate
            int registerCount = r.RegisterCount();
            double extended = s1.Extended;
            double subTotal = r.SubTotal();
            Assert.AreEqual(registerCount, 1, "expected register to have only 1 item");
            Assert.AreEqual(ExpectedSubtotal, subTotal, "expected different subtotal for 1 item");
            Assert.AreEqual(ExpectedExtended, extended, "expected different subtotal for 1 item");
        }
Beispiel #6
0
        public void RemoveFirstItem()
        {
            // setup
            Register r = new Register();

            for (int i = 0; i < 3; i++)
            {
                var s1 = new SoldLineItem();

                // create a sale item
                s1.LineItemID = i;
                s1.ItemID = TestInventoryItem;
                s1.Price = TestPrice;
                s1.Quantity = TestQuantity;
                s1.Description = TestDescription;

                // trigger
                r.Add(s1);
            }

            r.DeleteRow(0);

            Assert.AreEqual(r.RegisterCount(), 2, "expected 2 items");
            Assert.AreEqual(r.Sale[0].LineItemID, 0, "expected first item 0");
            Assert.AreEqual(r.Sale[1].LineItemID, 1, "expected second item 2");
        }
Beispiel #7
0
        public void AddTwoRemoveOneAddAgainUpdateLast()
        {
            // setup
            Register r = new Register();

            for (int i = 0; i < 2; i++)
            {
                var s1 = new SoldLineItem();

                // create a sale item
                s1.LineItemID = i;
                s1.ItemID = TestInventoryItem;
                s1.Price = i;
                s1.Quantity = i;
                s1.Description = TestDescription;

                // trigger
                r.Add(s1);
            }
            int removeIndex = r.RegisterCount();
            r.DeleteRow(removeIndex -1);

            var s2 = new SoldLineItem();

            // create a sale item
            s2.LineItemID = 3;
            s2.ItemID = TestInventoryItem;
            s2.Price = 3;
            s2.Quantity = 3;
            s2.Description = TestDescription;
            r.Add(s2);

            r.Update(2, 5, 5);
            Assert.AreEqual(r.RegisterCount(), 2, "expected 2 items");
            Assert.AreEqual(r.Sale[0].LineItemID, 0, "expected 0 for first");
            Assert.AreEqual(r.Sale[1].LineItemID, 3, "expected 3 for last");
        }
Beispiel #8
0
        public void AddTenItemsToRegister()
        {
            // setup
            Register r = new Register();
            for (int i = 0; i < 10; i++)
            {
                var s1 = new SoldLineItem();

                // create a sale item
                s1.Description = TestDescription;
                s1.ItemID = TestInventoryItem;
                s1.Price = TestPrice;
                s1.Quantity = TestQuantity;

                // trigger
                r.Add(s1);
                s1 = null;
            }

            // validate
            int registerCount = r.RegisterCount();
            double subTotal = r.SubTotal();
            Assert.AreEqual(registerCount, 10, "expected register to have only 10 items");
            Assert.AreEqual(subTotal, 10.1, "expected different subtotal for 10 item");
        }
Beispiel #9
0
        public void AddOneThousandDifferentItemsToRegister()
        {
            // setup
            Register r = new Register();
            for (int i = 0; i < 1000; i++)
            {
                var s1 = new SoldLineItem();

                // create a sale item
                s1.ItemID = TestInventoryItem;
                s1.Price = TestPrice * i;
                s1.Quantity = TestQuantity * i;

                // trigger
                r.Add(s1);
                s1 = null;
            }

            // validate
            int registerCount = r.RegisterCount();
            double subTotal = r.SubTotal();
            Assert.AreEqual(registerCount, 1000, "expected register to have only 10 items");
            Assert.AreEqual(subTotal, 336161835.0, "expected different subtotal for 10 item");
        }
Beispiel #10
0
        public void Print(int invoiceid, Register SalesRegister, int Saletype, double SubTotal, double Discount, double Taxes, double TotalSale, DateTime dDateTime, string printerName)
        {
            const int PadSize = 11;
            const string RH = "S A L E S    R E G I S T E R";
            const string sSubTotal = "SubTotal";
            const string sDiscount = "Discount";
            const string sTaxes = "Taxes";
            const string sTotalSale = "Total Sale";

            string CompanyName = Settings.Default.CompanyName;
            string AddressLine1 = Settings.Default.AddressLine1;
            string AddressLine2 = Settings.Default.AddressLine2;
            string AddressLine3 = Settings.Default.AddressLine3;
            string FooterLine1 = Settings.Default.FooterLine1;
            string FooterLine2 = Settings.Default.FooterLine2;
            string RegisterHeader = RH;
            StringBuilder sb;

            if (printerName == null)
            {
                throw new ArgumentNullException("printerName");
            }

            sb = new StringBuilder();

            // Top of the page
            sb.AppendLine(CompanyName);
            sb.AppendLine(AddressLine1);
            sb.AppendLine(AddressLine2);
            sb.AppendLine(string.Empty);
            sb.AppendLine(RegisterHeader);
            sb.AppendLine(dDateTime.ToString().PadLeft(9) + " Receipt #: " + invoiceid.ToString());
            sb.AppendLine(string.Empty);
            sb.AppendLine(string.Empty);

            foreach (SoldLineItem item in SalesRegister.Sale)
            {
                if (item.Description.Length > 40)
                {
                    sb.AppendLine(item.Description.Substring(0, 40));
                }
                else
                {
                    sb.AppendLine(item.Description);
                }

                sb.AppendLine(item.ItemID.ToString().PadRight(15) + item.Price.ToString("c").PadLeft(PadSize) +  item.Quantity.ToString().PadLeft(5) + item.Extended.ToString("c").PadLeft(PadSize));

            }
            sb.AppendLine("------------------------------------------");
            sb.AppendLine(sSubTotal.PadRight(22) + SubTotal.ToString("c").PadLeft(20));
            sb.AppendLine(sDiscount.PadRight(22) + Discount.ToString("c").PadLeft(20));
            sb.AppendLine(sTaxes.PadRight(22) + Taxes.ToString("c").PadLeft(20));
            sb.AppendLine("                      --------------------");
            sb.AppendLine(sTotalSale.PadRight(22) + TotalSale.ToString("c").PadLeft(20));
            sb.AppendLine("                      ====================");

            //End of the Page
            sb.AppendLine(FooterLine1);
            sb.AppendLine(FooterLine2);
            for (int i = 0; i < 5; i++)
            {
                sb.AppendLine(string.Empty);
            }

            string GS = Convert.ToString((char)29);
            string ESC = Convert.ToString((char)27);

            Debug.Write(sb.ToString());
            sb.AppendLine(ESC + "@");
            sb.AppendLine(GS + "V" + (char)1);

            RawPrinterHelper.SendStringToPrinter(printerName, sb.ToString());
        }