public void SaveStoreGradeSize(StoreGradeSizeDTO storeGradeSizeDTO)
        {
            double sizeQuantity = 0;
            var    result       = this.UnitOfWork.Get <StoreGradeSize>().AsQueryable()
                                  .FirstOrDefault(e => e.StoreId == storeGradeSizeDTO.StoreId && e.GradeId == storeGradeSizeDTO.GradeId && e.SizeId == storeGradeSizeDTO.SizeId);


            if (result == null)
            {
                var storeGradeSize = new StoreGradeSize()
                {
                    GradeId   = storeGradeSizeDTO.GradeId,
                    SizeId    = storeGradeSizeDTO.SizeId,
                    StoreId   = storeGradeSizeDTO.StoreId,
                    Quantity  = storeGradeSizeDTO.Quantity,
                    TimeStamp = DateTime.Now
                };
                this.UnitOfWork.Get <StoreGradeSize>().AddNew(storeGradeSize);
                this.UnitOfWork.SaveChanges();
            }

            else
            {
                sizeQuantity = result.Quantity + storeGradeSizeDTO.Quantity;

                result.StoreId   = storeGradeSizeDTO.StoreId;
                result.SizeId    = storeGradeSizeDTO.SizeId;
                result.GradeId   = storeGradeSizeDTO.GradeId;
                result.Quantity  = sizeQuantity;
                result.TimeStamp = DateTime.Now;
                this.UnitOfWork.Get <StoreGradeSize>().Update(result);
                this.UnitOfWork.SaveChanges();
            }
        }
Exemplo n.º 2
0
        public long SaveStock(Stock stock, string userId)
        {
            //saves stock object into stock table
            var stockDTO = new DTO.StockDTO()
            {
                InOrOut       = stock.InOrOut,
                ProductId     = stock.ProductId,
                BatchId       = stock.BatchId,
                BranchId      = stock.BranchId,
                SectorId      = stock.SectorId,
                Deleted       = stock.Deleted,
                StoreId       = stock.StoreId,
                CreatedBy     = stock.CreatedBy,
                CreatedOn     = stock.CreatedOn,
                ProductOutPut = stock.ProductOutPut,
            };

            var stockId = this._dataService.SaveStock(stockDTO, userId);


            if (stock.StockGradeSize != null)
            {
                List <StockGradeSize> stockGradeSizeList = new List <StockGradeSize>();

                foreach (var stockGradeSize in stock.StockGradeSize)
                {
                    var stockGrade_Size = new StockGradeSize()
                    {
                        StockId  = stockId,
                        GradeId  = stockGradeSize.GradeId,
                        SizeId   = stockGradeSize.SizeId,
                        Quantity = stockGradeSize.Quantity,
                    };

                    stockGradeSizeList.Add(stockGrade_Size);

                    //Method that adds flour output into storeGradeSize table(store flour stock)
                    var storeGradeSize = new StoreGradeSizeDTO()
                    {
                        StoreId  = stock.StoreId,
                        GradeId  = stockGradeSize.GradeId,
                        SizeId   = stockGradeSize.SizeId,
                        Quantity = stockGradeSize.Quantity,
                    };

                    this._dataService.SaveStoreGradeSize(storeGradeSize);
                }

                this._dataService.PurgeStockGradeSize(stockId);
                this.SaveStockGradeSizeList(stockGradeSizeList);
            }
            //save stock and productId into stockproduct table
            var stockProductDTO = new StockProductDTO()
            {
                StockId   = stockId,
                ProductId = stockDTO.ProductId,
                Quantity  = stockDTO.ProductOutPut,
            };

            this._dataService.PurgeStockProduct(stockId);
            this._dataService.SaveStockProduct(stockProductDTO);

            var storeStock = new StoreStock()
            {
                StoreId   = stock.StoreId,
                ProductId = stock.ProductId,
                BranchId  = stock.BranchId,
                StockId   = stockId,
                Quantity  = stock.ProductOutPut,
                SectorId  = stock.SectorId,
            };

            SaveStoreStock(storeStock, stock.InOrOut);
            return(stockId);
        }
Exemplo n.º 3
0
        private MakeDelivery MakeFlourDeliveryRecord(long storeId, Delivery delivery, string userId)
        {
            var                   soldOut = false;
            var                   stockReduced = false;
            double                balance = 0, totalBalance = 0;
            List <long>           orderGradeIds   = new List <long>();
            List <long>           stockGradeIds   = new List <long>();
            List <StoreGradeSize> storeGradeSizes = new List <StoreGradeSize>();
            List <OrderGradeSize> orderGradeSizes = new List <OrderGradeSize>();

            var makeDelivery = new MakeDelivery();
            var storeStock   = _stockService.GetStockForAParticularStoreForDelivery(storeId, delivery.ProductId, delivery.BatchId);
            var order        = _orderService.GetOrder(delivery.OrderId);

            if (storeStock != null)
            {
                if (delivery.Grades != null)
                {
                    foreach (var grade in delivery.Grades)
                    {
                        orderGradeIds.Add(grade.GradeId);
                    }

                    foreach (var stockGrade in storeStock.Stock.Grades)
                    {
                        stockGradeIds.Add(stockGrade.GradeId);
                    }
                    foreach (var orderGradeId in orderGradeIds)
                    {
                        if (CheckIfStockHasOrderGrade(orderGradeId, stockGradeIds))
                        {
                            storeGradeSizes = _stockService.GetStoreGradeSizeForParticularGradeAtAStore(orderGradeId, storeStock.StoreId).ToList();
                            orderGradeSizes = GetOrderGradeSizes(order, orderGradeId);
                            if (orderGradeSizes.Any())
                            {
                                foreach (var orderGradeSize in orderGradeSizes)
                                {
                                    if (storeGradeSizes.Any())
                                    {
                                        foreach (var storeGradeSize in storeGradeSizes)
                                        {
                                            if (orderGradeSize.SizeId == storeGradeSize.SizeId)
                                            {
                                                balance = storeGradeSize.Quantity - orderGradeSize.Quantity;
                                                if (balance < 0)
                                                {
                                                    //store doesn't have enough stock to cover this denomination
                                                }
                                                else
                                                {
                                                    var storeGradeSizeDTO = new StoreGradeSizeDTO()
                                                    {
                                                        GradeId  = storeGradeSize.GradeId,
                                                        StoreId  = storeGradeSize.StoreId,
                                                        SizeId   = storeGradeSize.SizeId,
                                                        Quantity = orderGradeSize.Quantity,
                                                    };
                                                    _stockDataService.SaveStoreGradeSize(storeGradeSizeDTO, false);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        //store doesn't have that Grade
                                    }
                                }
                            }
                            stockReduced = true;
                            makeDelivery = new MakeDelivery()
                            {
                                StockId              = storeStock.StockId,
                                StockReduced         = stockReduced,
                                OrderQuantityBalance = totalBalance,
                            };
                        }
                    }
                    return(makeDelivery);
                }
                else
                {
                    return(makeDelivery);
                }
            }
            else
            {
                return(makeDelivery);
            }

            return(makeDelivery);
        }