Esempio n. 1
0
        public void Delete(Model.StockCheck StockCheck)
        {
            foreach (Model.StockCheckDetail item in StockCheck.Details)
            {
                Model.Product product = item.Product;
                Model.Stock   stock   = stockManager.GetStockByProductIdAndDepotPositionId(item.ProductId, item.DepotPositionId);

                if (stock != null)
                {
                    stock.StockQuantity1 = Convert.ToDouble(stock.StockQuantity1) + Convert.ToDouble(item.StockCheckQuantityDiff);
                    stock.IsNotUpdate    = true;
                    stockManager.Update(stock);
                }
                else
                {
                    stock = new Book.Model.Stock();
                    stock.StockCheckDate   = StockCheck.StockCheckDate;
                    stock.StockId          = Guid.NewGuid().ToString();
                    stock.DepotPositionId  = item.DepotPositionId;
                    stock.DepotId          = StockCheck.DepotId;
                    stock.ProductId        = item.ProductId;
                    stock.StockQuantityOld = 0;
                    stock.StockQuantity1   = Convert.ToDouble(item.StockCheckQuantityDiff);
                    stock.IsNotUpdate      = true;
                    stockManager.Insert(stock);
                }
                productmanager.UpdateProduct_Stock(item.Product);
            }
            accessor.Delete(StockCheck.StockCheckId);
        }
Esempio n. 2
0
        /// <summary>
        /// Update a StockCheck.
        /// </summary>
        public void Update(Model.StockCheck stockCheck)
        {
            try
            {
                BL.V.BeginTransaction();

                stockCheck.UpdateTime = DateTime.Now;
                if (stockCheck.Employee0 != null)
                {
                    stockCheck.Employee0Id = stockCheck.Employee0.EmployeeId;
                }

                accessor.Update(stockCheck);

                //13.10.10曹瑞修改:校正不直接修改库存为校正数量,而是当前库存加上差异数量
                IList <Model.StockCheckDetail> detailList = stockCheckDetailAccessor.Select(stockCheck);
                foreach (Model.StockCheckDetail item in detailList)
                {
                    Model.Stock stock = new Book.Model.Stock();
                    stock = stockManager.GetStockByProductIdAndDepotPositionId(item.ProductId, item.DepotPositionId);
                    if (stock != null)
                    {
                        stock.StockQuantity1 = (stock.StockQuantity1 == null ? 0 : stock.StockQuantity1) + (item.StockCheckQuantityDiff == null ? 0 : item.StockCheckQuantityDiff);
                        stock.IsNotUpdate    = true;
                        stockManager.Update(stock);
                    }
                    productmanager.UpdateProduct_Stock(item.Product);
                    stockCheckDetailAccessor.Delete(item.StockCheckDetailId);
                }

                foreach (Model.StockCheckDetail details in stockCheck.Details)
                {
                    if (details.Product == null || string.IsNullOrEmpty(details.Product.ProductId))
                    {
                        continue;
                    }
                    stockCheckDetailAccessor.Insert(details);

                    Model.Stock stock = stockManager.GetStockByProductIdAndDepotPositionId(details.ProductId, details.DepotPositionId);
                    if (stock == null)
                    {
                        stock = new Book.Model.Stock();
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.StockId          = Guid.NewGuid().ToString();
                        stock.DepotPositionId  = details.DepotPositionId;
                        stock.DepotId          = stockCheck.DepotId;
                        stock.ProductId        = details.ProductId;
                        stock.StockQuantityOld = 0;
                        stock.StockQuantity1   = details.StockCheckQuantity;
                        stock.IsNotUpdate      = true;
                        stockManager.Insert(stock);
                    }
                    else
                    {
                        stock.StockCheckDate   = stockCheck.StockCheckDate;
                        stock.DepotPositionId  = details.DepotPositionId;
                        stock.StockQuantityOld = stock.StockQuantity1 == null ? 0 : stock.StockQuantity1;
                        stock.StockQuantity1   = (stock.StockQuantity1 == null ? 0 : stock.StockQuantity1) - (details.StockCheckQuantityDiff == null ? 0 : details.StockCheckQuantityDiff);
                        stock.IsNotUpdate      = true;
                        stockManager.Update(stock);
                    }

                    //  product.StocksQuantity = stockManager.GetTheCount1OfProductByProductId(product, dic[productId].Depot);
                    //details.Product.StocksQuantity = details.StockCheckQuantity;
                    //修改產品
                    //productmanager.UpdateProduct_Stock(details.Product);
                    details.Product.StocksQuantity    = stockManager.GetTheCountByProduct(details.Product);
                    details.Product.LastStockTakeTime = DateTime.Now;
                    productmanager.update(details.Product);
                }

                BL.V.CommitTransaction();
            }
            catch
            {
                BL.V.RollbackTransaction();
                throw;
            }
        }