Exemplo n.º 1
0
 /// <summary>
 /// Resets the actual Level
 /// </summary>
 public void ResetLevel()
 {
     SpikeList.Clear();
     SlowList.Clear();
     CoinList.Clear();
     RollList.Clear();
     SpeedList.Clear();
     BrettList.Clear();
     ResetScore();
     ResetPhase();
 }
 public StickerRollerVisitor(RollList list)
 {
     this.rollList = list;
 }
Exemplo n.º 3
0
        public void LoadOrderData()
        {
            DataTable OrderDT       = new DataTable();
            DataTable OrderItemDT   = new DataTable();
            DataTable FailInvoiceDT = new DataTable();

            //儲位所在地
            int _areaId = int.Parse(Area.WmsAreaXml("Area"));

            StoreNo = _areaId.ToString("D3");
            if (!string.IsNullOrEmpty(Date))
            {
                OrderDT       = Order.GetOrderMapingInvoiceRollByDate(Date);
                OrderItemDT   = Order.GetOrderItemByDate(Date, PosNo);
                FailInvoiceDT = Order.GetFailInvoiceRollByDate(Date);
            }

            var OrderList = OrderDT.AsEnumerable().Select(r => new
            {
                OrderID        = r["OrderID"],
                InvoiceNo      = r["InvoiceNo"],
                Amount         = (int)r["Amount"],
                PayType        = (int)r["PayType"],
                StartingNumber = r["StartingNumber"],
                EndingNumber   = r["EndingNumber"],
                PosNo          = r["PosNo"],
                RowNo          = Convert.ToInt32(r["RowNo"])
            }).ToList();

            var FailInvoiceOrderList = FailInvoiceDT.AsEnumerable().Select(r => new
            {
                RowNo          = r["RowNo"],
                OrderID        = r["OrderID"],
                InvoiceNo      = r["InvoiceNo"],
                Amount         = (int)r["Amount"],
                PayType        = (int)r["PayType"],
                StartingNumber = r["StartingNumber"],
                EndingNumber   = r["EndingNumber"],
                PosNo          = r["PosNo"],
                Status         = (int)r["Status"]
            }).ToList();


            var OrderListByStartNo = (from a in OrderList
                                      where (PosNo != "All" ? a.PosNo.ToString() == PosNo : true)
                                      select a).ToList();

            var OrderListCash = (from a in OrderListByStartNo
                                 where a.PayType.ToString() == "1"
                                 select new { OrderID = a.OrderID, Amount = a.Amount }).Distinct().ToList();

            var OrderListCreidt = (from a in OrderListByStartNo
                                   where a.PayType.ToString() == "2"
                                   select new { OrderID = a.OrderID, Amount = a.Amount }).Distinct().ToList();

            var FailInvoiceOrderListByPosNo = (from a in FailInvoiceOrderList
                                               where (PosNo != "All" ? a.PosNo.ToString() == PosNo : true)
                                               select new { RowNo = Convert.ToInt32(a.RowNo), OrderID = a.OrderID, Amount = (int)a.Amount, PayType = (int)a.PayType, InvoiceNo = a.InvoiceNo, StartNo = a.StartingNumber, Status = a.Status }).Distinct().ToList();

            //總訂單數量
            TotalOrderNum = (from a in OrderListByStartNo
                             select new { OrderID = a.OrderID, Amount = a.Amount }).Distinct().ToList().Count;


            #region 計算訂單金額
            if (TotalOrderNum > 0)
            {
                var InvoiceRollList = (from o in OrderList
                                       where (PosNo != "All" ? o.PosNo.ToString() == PosNo : true)
                                       group o by new { startNo = o.StartingNumber, endNo = o.EndingNumber, PosNo = o.PosNo }
                                       into RollList
                                       select new
                {
                    startNo = RollList.Key.startNo,
                    endNo = RollList.Key.endNo,
                    PosNo = RollList.Key.PosNo,
                    InvList = RollList.ToList()
                });

                StartOrderID = int.Parse(OrderListByStartNo.First().OrderID.ToString()).ToString("D9");
                EndOrderID   = int.Parse(OrderListByStartNo.Last().OrderID.ToString()).ToString("D9");

                #region 計算起始發票號碼
                foreach (var r in InvoiceRollList)
                {
                    InvoiceRoll roll = new InvoiceRoll();
                    roll.StartInvoice = r.InvList.First().InvoiceNo.ToString();
                    roll.EndInvoice   = r.InvList.Last().InvoiceNo.ToString();
                    roll.Cash         = (from x in r.InvList
                                         where x.PayType == 1 && x.RowNo == 1
                                         select new { OrderID = x.OrderID, Amount = x.Amount, RowNo = x.RowNo }).Sum(y => y.Amount);

                    roll.Credit = (from x in r.InvList
                                   where x.PayType == 2 && x.RowNo == 1
                                   select new { OrderID = x.OrderID, Amount = x.Amount, RowNo = x.RowNo }).Sum(y => y.Amount);

                    foreach (var a in FailInvoiceOrderListByPosNo)
                    {
                        //如果作廢發票在同一捆
                        if (a.StartNo.Equals(r.startNo))
                        {
                            //把OrderID=0 的單獨作廢的發票,判斷是否比今天這一捆的頭還前面,如果是就取代
                            if (int.Parse(a.InvoiceNo.ToString().Substring(2, 8)) < int.Parse(roll.StartInvoice.Substring(2, 8)) && int.Parse(a.OrderID.ToString()) == 0)
                            {
                                roll.StartInvoice = a.InvoiceNo.ToString();
                            }
                            //把OrderID=0 的單獨作廢的發票,判斷是否比今天這一捆的頭還後面,如果是就取代
                            if (int.Parse(a.InvoiceNo.ToString().Substring(2, 8)) > int.Parse(roll.EndInvoice.Substring(2, 8)) && int.Parse(a.OrderID.ToString()) == 0)
                            {
                                roll.EndInvoice = a.InvoiceNo.ToString();
                            }
                        }
                    }

                    InvoiceList.Add(roll);
                }

                #endregion

                TotalOrderAmount = (from a in OrderListByStartNo
                                    select new { OrderID = a.OrderID, Amount = a.Amount }).Distinct().ToList().Sum(x => x.Amount);

                CashIncome        = OrderListCash.Sum(x => x.Amount);
                TotalCashOrderNum = OrderListCash.Count;
                CardIncome        = OrderListCreidt.Sum(x => x.Amount);
                TotalCardOrderNum = OrderListCreidt.Count;
            }

            foreach (DataRow row in OrderItemDT.Rows)
            {
                TotalQuantity += int.Parse(row["Quantity"].ToString());
            }

            #endregion

            #region 作廢訂單計算
            FailCashInvoiceList = (from a in FailInvoiceOrderListByPosNo
                                   where a.PayType.ToString() == "1" && a.Status == 2
                                   select new Order.FailInvoice {
                RowNo = Convert.ToInt32(a.RowNo), InvoiceNo = a.InvoiceNo.ToString(), InvoiceNoAmount = (Convert.ToInt32(a.RowNo) == 1) ? a.Amount.ToString() : "0"
            }).OrderBy(x => x.InvoiceNo).ToList();

            FailCardInvoiceList = (from a in FailInvoiceOrderListByPosNo
                                   where a.PayType.ToString() == "2" && a.Status == 2
                                   select new Order.FailInvoice {
                RowNo = Convert.ToInt32(a.RowNo), InvoiceNo = a.InvoiceNo.ToString(), InvoiceNoAmount = (Convert.ToInt32(a.RowNo) == 1) ? a.Amount.ToString() : "0"
            }).OrderBy(x => x.InvoiceNo).ToList();

            FailOhterInvoiceList = (from a in FailInvoiceOrderListByPosNo
                                    where a.Status == 0
                                    select new Order.FailInvoice {
                RowNo = Convert.ToInt32(a.RowNo), InvoiceNo = a.InvoiceNo.ToString(), InvoiceNoAmount = a.Amount.ToString()
            }).OrderBy(x => x.InvoiceNo).ToList();

            FailOrderNum = (from a in FailInvoiceOrderListByPosNo
                            where a.RowNo == 1 && (a.Status == 2 || a.Status == 6)
                            select a).ToList().Count;

            FailInvoiceNum = FailInvoiceOrderListByPosNo.Count;

            ReturnTotalAmount = (from a in FailInvoiceOrderListByPosNo
                                 where a.RowNo == 1 && a.Status == 2
                                 select a).ToList().Sum(x => x.Amount);

            ReturnTotalCashAmount = (from a in FailInvoiceOrderListByPosNo
                                     where a.PayType == 1 && a.RowNo == 1 && a.Status == 2
                                     select a
                                     ).ToList().Sum(x => x.Amount);

            ReturnTotalCardAmount = (from a in FailInvoiceOrderListByPosNo
                                     where a.PayType == 2 && a.RowNo == 1 && a.Status == 2
                                     select a
                                     ).ToList().Sum(x => x.Amount);

            #endregion

            #region 折讓訂單計算
            AllowancesCashList = (from a in FailInvoiceOrderListByPosNo
                                  where a.PayType.ToString() == "1" && a.Status == 6
                                  select new Order.FailInvoice {
                RowNo = Convert.ToInt32(a.RowNo), InvoiceNo = a.InvoiceNo.ToString(), InvoiceNoAmount = (Convert.ToInt32(a.RowNo) == 1) ? a.Amount.ToString() : "0"
            }).OrderBy(x => x.InvoiceNo).ToList();

            AllowancesCardList = (from a in FailInvoiceOrderListByPosNo
                                  where a.PayType.ToString() == "2" && a.Status == 6
                                  select new Order.FailInvoice {
                RowNo = Convert.ToInt32(a.RowNo), InvoiceNo = a.InvoiceNo.ToString(), InvoiceNoAmount = (Convert.ToInt32(a.RowNo) == 1) ? a.Amount.ToString() : "0"
            }).OrderBy(x => x.InvoiceNo).ToList();

            AllowancesCashAmount = (from a in FailInvoiceOrderListByPosNo
                                    where a.PayType == 1 && a.RowNo == 1 && a.Status == 6
                                    select a
                                    ).ToList().Sum(x => x.Amount);

            AllowancesCardAmount = (from a in FailInvoiceOrderListByPosNo
                                    where a.PayType == 2 && a.RowNo == 1 && a.Status == 6
                                    select a
                                    ).ToList().Sum(x => x.Amount);
            #endregion
        }