APITester.Program.AddItemsOutOfOrderTest C# (CSharp) Метод

AddItemsOutOfOrderTest() статический приватный Метод

static private AddItemsOutOfOrderTest ( ) : void
Результат void
        static void AddItemsOutOfOrderTest()
        {
            try
            {
                SalesAPI api = new SalesAPI();

                pcAmerica.DesktopPOS.API.Client.SalesService.Context context = new pcAmerica.DesktopPOS.API.Client.SalesService.Context();
                context.CashierID = "01";
                context.StoreID = "1001";
                context.StationID = "02";

                // StartNewInvoice - this also automatically locks an invoice so it can't be opened by a terminal
                Invoice inv = api.StartNewInvoice(context, Guid.NewGuid().ToString().Substring(0, 8), "XXOPEN TABS");
                Console.WriteLine(String.Format("Started new invoice with #: {0}", inv.InvoiceNumber));

                // GetInvoiceHeader
                inv = api.GetInvoiceHeader(context, inv.InvoiceNumber);
                Console.WriteLine(String.Format("GetInvoiceHeader with #: {0}", inv.InvoiceNumber));

                // GetInvoice
                inv = api.GetInvoice(context, inv.InvoiceNumber);
                Console.WriteLine(String.Format("GetInvoice with #: {0}", inv.InvoiceNumber));

                Guid parent1 = Guid.NewGuid();
                Guid parent2 = Guid.NewGuid();

                // ModifyItems
                inv.LineItems.Add(new LineItem() { Id = parent1, ItemName = "All American Meatloaf", ItemNumber = "All American Meat", Price = 6.00M, Quantity = 1, State = EntityState.Added });
                inv.LineItems.Add(new LineItem() { Id = parent2, ItemName = "Green St. Greek Salad", ItemNumber = "Greek Salad", Price = 6.50M, Quantity = 2, State = EntityState.Added });
                inv.LineItems.Add(new LineItem() { Id = Guid.NewGuid(), ItemName = "Lobster Roll", ItemNumber = "Lobster", Price = 13.50M, Quantity = 2, State = EntityState.Added });

                inv.LineItems.Add(new LineItem() { Id = Guid.NewGuid(), ItemName = "Avocado", ItemNumber = "Avocado FREE", ParentId = parent2, State = EntityState.Added });
                inv.LineItems.Add(new LineItem() { Id = Guid.NewGuid(), ItemName = "Add", ItemNumber = "ADD", ParentId = parent2, State = EntityState.Added });
                inv.LineItems.Add(new LineItem() { Id = Guid.NewGuid(), ItemName = "No Blue Cheese", ItemNumber = "NO Blue Cheese", ParentId = parent2, State = EntityState.Added });

                inv.LineItems.Add(new LineItem() { Id = Guid.NewGuid(), ItemName = "Bulkie", ItemNumber = "Bulkie", ParentId = parent1, State = EntityState.Added });
                inv.LineItems.Add(new LineItem() { Id = Guid.NewGuid(), ItemName = "Blue Cheese", ItemNumber = "BLUE CHEESE", ParentId = parent1, State = EntityState.Added });
                inv.LineItems.Add(new LineItem() { Id = Guid.NewGuid(), ItemName = "Avocado", ItemNumber = "Avocado FREE", ParentId = parent1, State = EntityState.Added });

                inv = api.ModifyItems(context, inv.InvoiceNumber, inv.LineItems);

                Invoice inv2 = api.GetInvoice(context, inv.InvoiceNumber);

                //We see all the modifier items now have the parentID set to the Lobster item which is incorrect:
                foreach (LineItem item in inv2.LineItems)
                {
                    Console.WriteLine("item name:{0}, id:{1}, parentId:{2}", item.ItemName, item.Id, item.ParentId);
                }
                //Also in addition sometimes there is exception "Can't add item "some item" to the invoice"

                api.UnLockInvoice(context, inv2.InvoiceNumber);

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                Console.WriteLine("PRESS ENTER TO CONTINUE...");
                Console.ReadLine();
            }
        }