Пример #1
0
        public void Scanned_items_contain_multiple_items_and_quantities()
        {
            var ScanItems = new ScanItems();

            Item          tesco     = new Item("A99");
            OffersPricing TestOffer = new OffersPricing(3, 1.35M);

            tesco.ApplySpecialOffers(TestOffer);

            ItemDetail itemDetail = new ItemDetail(tesco, 3);

            ScanItems.Add(itemDetail);

            decimal totalPrice = ScanItems.GetTotalPrice();

            Assert.AreEqual(totalPrice, TestOffer.GetSKuPrice() * 3);
        }
 private void InitializeSharlayan()
 {
     _lastScan = new ScanItems
     {
         FirstScan          = true,
         PreviousArrayIndex = 0,
         PreviousOffset     = 0,
         ActorId            = 0,
         ConfigId           = "",
         Instrument         = Instrument.None,
         PlayerName         = "Unknown",
         IsBard             = true,
         World        = "",
         PartyMembers = new SortedDictionary <uint, string>(),
         ChatOpen     = false
     };
     _reader ??= new Reader.Reader(new MemoryHandler(new Scanner(), ReaderHandler.Game.GameRegion));
     _reader.MemoryHandler.SetProcess(new ProcessModel {
         Process = ReaderHandler.Game.Process
     });
     _reader.MemoryHandler.SignaturesFoundEvent += SignaturesFound;
     _reader.MemoryHandler.ExceptionEvent       += ExceptionEvent;
 }
        public bool Find(int OrderID, string PackID, String SectionID)
        {
            String Sql = "";

            //Detail
            //Detail.Clear();
            //Items.Clear();
            LocalItems = 0;

            DataView tDetail = new DataView();

            if (PackID != "0" && PackID != "")
            {
                Sql     = "Select d.ProductID,d.Quantity, p.Description,p.BarCode,p.BarCode_2,p.BarCode_3,p.InvCode  From OrderDetail as d Left Join Product as p On d.ProductID=p.ProductID And d.CompanyID=p.CompanyID Where OrderID='" + base.OrderID + "' And PackID='" + PackID + "' And p.SectionID='" + SectionID + "'";
                tDetail = oMySql.GetDataView(Sql, "Detail");
                //tDetail = oMySql.GetDataView("Select d.ProductID,d.Quantity, p.Description,p.BarCode,p.BarCode_2,p.BarCode_3,p.InvCode  From OrderDetail as d Left Join Product as p On d.ProductID=p.ProductID And d.CompanyID=p.CompanyID Left Join Card c On d.CompanyID=c.CompanyID And d.ProductID=c.ProductID  Where OrderID='" + ID + "' And PackID='" + PackID + "' And c.ProductID is null", "Detail");
            }
            else
            {
                tDetail = oMySql.GetDataView("Select d.ProductID,d.Quantity, p.Description,p.BarCode,p.BarCode_2,p.BarCode_3,p.InvCode  From OrderDetail as d Left Join Product as p On d.ProductID=p.ProductID And d.CompanyID=p.CompanyID Where OrderID='" + ID + "'", "Detail");
            }


            ///Adding Prizes
            oPrize.Find(oCustomer.PrizeID);
            if (oPrize.PackID != PackID)
            {
                return(true);
            }


            DataView dvPrizes = oPrize.GetItems(oCustomer.PrizeID, NoItems, SectionID);

            foreach (DataRow Row in dvPrizes.Table.Rows)
            {
                DataRow row = tDetail.Table.NewRow();
                row["ProductID"] = Row["ProductID"];
                row["InvCode"]   = Row["InvCode"];

                row["Quantity"]    = 1;
                row["BarCode"]     = Row["BarCode"];
                row["BarCode_2"]   = Row["BarCode_2"];
                row["BarCode_3"]   = Row["BarCode_3"];
                row["Description"] = Row["Description"];
                tDetail.Table.Rows.Add(row);
            }

            foreach (DataRow Row in tDetail.Table.Rows)
            {
                ScanItem Detail = new ScanItem();



                Detail.CompanyID   = CompanyID;
                Detail.CustomerID  = CustomerID;
                Detail.ProductID   = Row["ProductID"].ToString();
                Detail.Packed      = Row["ProductID"].ToString();
                Detail.Quantity    = (int)Row["Quantity"];
                Detail.Description = Row["Description"].ToString();
                Detail.BarCode     = Row["BarCode"].ToString(); //Row["ProductID"].ToString();
                Detail.Scanned     = 0;
                Detail.InvCode     = Row["InvCode"].ToString();
                Detail.BarCode2    = Row["BarCode_2"].ToString();
                Detail.BarCode3    = Row["BarCode_3"].ToString();

                if (Detail.BarCode.Trim() == "")
                {
                    Global.ShowNotifier("This Product doesn't have BarCode : " + Row["ProductID"].ToString());
                    ScanItems.Add(Row["ProductID"].ToString(), Detail);
                }
                else if (ScanItems.Contains(Detail.BarCode))
                {
                    Global.ShowNotifier("This same BarCode is already in this order: " + Row["ProductID"].ToString());
                    ScanItems.Add(Row["ProductID"].ToString(), Detail);
                }
                else
                {
                    ScanItems.Add(Row["BarCode"].ToString(), Detail);
                }

                LocalItems += Detail.Quantity;
            }
            oPrize.Find(oCustomer.PrizeID);
            //if (oPrize.PackID != PackID)
            //    return true;

            /*
             * if (SectionID == "X")
             * {
             *
             *  DataView dvPrizes = oPrize.GetItems(oCustomer.PrizeID, base.NoItems, SectionID);
             *
             *  foreach (DataRow Row in dvPrizes.Table.Rows)
             *  {
             *      if (!((Boolean)Row["IsCompound"]))
             *      {
             *          ScanItem Detail = new ScanItem();
             *
             *          Detail.Description = Row["Description"].ToString();
             *          Detail.CompanyID = CompanyID;
             *          Detail.CustomerID = CustomerID;
             *          Detail.ProductID = Row["ProductID"].ToString();
             *          //Detail.Packed = Row["ProductID"].ToString();
             *          Detail.Quantity = Convert.ToInt32(Row["Quantity"].ToString());
             *          Detail.BarCode = Row["BarCode"].ToString(); //Row["ProductID"].ToString();
             *          Detail.BarCode2 = Row["BarCode_2"].ToString();
             *          Detail.BarCode3 = Row["BarCode_3"].ToString();
             *          Detail.InvCode = Row["InvCode"].ToString();
             *          Detail.Scanned = 0;
             *          if (Detail.BarCode.Trim() == "")
             *          {
             *              Global.ShowNotifier("This Product doesn't have BarCode : " + Row["ProductID"].ToString());
             *              ScanItems.Add(Row["ProductID"].ToString(), Detail);
             *          }
             *          else if (ScanItems.Contains(Detail.BarCode))
             *          {
             *              Global.ShowNotifier("This BarCode is already in this order: " + Row["ProductID"].ToString());
             *              ScanItems.Add(Row["ProductID"].ToString(), Detail);
             *          }
             *          else
             *              ScanItems.Add(Row["BarCode"].ToString(), Detail);
             *
             *          LocalItems += Detail.Quantity;
             *      }
             *      else
             *      {
             *          //Prizes compound products
             *
             *          DataView dvCompoundPrizes = this.oProduct.Items.GetTable(Row["ProductID"].ToString());
             *          foreach (DataRow row in dvCompoundPrizes.Table.Rows)
             *          {
             *
             *              ScanItem _Detail = new ScanItem();
             *
             *              _Detail.Description = row["Description"].ToString();
             *              _Detail.CompanyID = CompanyID;
             *              _Detail.CustomerID = CustomerID;
             *              _Detail.ProductID = row["ProductID"].ToString();
             *              //Detail.Packed = Row["ProductID"].ToString();
             *              _Detail.Quantity = 1;
             *              _Detail.BarCode = row["BarCode"].ToString(); //Row["ProductID"].ToString();
             *              _Detail.BarCode2 = row["BarCode_2"].ToString();
             *              _Detail.BarCode3 = row["BarCode_3"].ToString();
             *              _Detail.InvCode = row["InvCode"].ToString();
             *              _Detail.Scanned = 0;
             *              if (_Detail.BarCode.Trim() == "")
             *              {
             *                  Global.ShowNotifier("This Product doesn't have BarCode : " + row["ProductID"].ToString());
             *                  ScanItems.Add(row["ProductID"].ToString(), _Detail);
             *              }
             *              else if (ScanItems.Contains(_Detail.BarCode))
             *              {
             *                  Global.ShowNotifier("This BarCode is already in this order: " + row["ProductID"].ToString());
             *                  ScanItems.Add(row["ProductID"].ToString(), _Detail);
             *              }
             *              else
             *                  ScanItems.Add(row["BarCode"].ToString(), _Detail);
             *
             *              LocalItems += _Detail.Quantity;
             *          }
             *      }
             *  }
             * }*/
            return(true);
        }