コード例 #1
0
        /// <summary>
        /// Maps StoreStock EF object to StoreStock Model Object and
        /// returns the StoreStock model object.
        /// </summary>
        /// <param name="result">EF StoreStock object to be mapped.</param>
        /// <returns>StoreStock Model Object.</returns>
        public StoreStock MapEFToModel(EF.Models.StoreStock data)
        {
            var stock = GetStock(data.StockId);

            var storeStock = new StoreStock()
            {
                SectorId     = data.SectorId,
                SectorName   = data.Sector != null ? data.Sector.Name : "",
                ProductId    = data.ProductId,
                ProductName  = data.Product != null ? data.Product.Name : "",
                BranchName   = data.Branch != null ? data.Branch.Name : "",
                BranchId     = data.BranchId,
                StockId      = data.StockId,
                Quantity     = data.Quantity,
                StockBalance = data.StockBalance,
                StartStock   = data.StartStock,
                StoreStockId = data.StoreStockId,
                BatchNumber  = stock.BatchNumber,
                StockInOrOut = stock.StockInOrOut,

                StoreId   = data.StoreId,
                StoreName = data.Store != null ? data.Store.Name : "",
                TimeStamp = data.TimeStamp,
            };

            return(storeStock);
        }
コード例 #2
0
        /// <summary>
        /// Maps StoreStock EF object to StoreStock Model Object and
        /// returns the StoreStock model object.
        /// </summary>
        /// <param name="result">EF StoreStock object to be mapped.</param>
        /// <returns>StoreStock Model Object.</returns>
        public StoreStock MapEFToModel(EF.Models.StoreStock data)
        {
            var stock = GetStock(data.StockId);

            var storeStock = new StoreStock()
            {
                SectorId     = data.SectorId,
                SectorName   = data.Sector != null ? data.Sector.Name : "",
                ProductId    = data.ProductId,
                ProductName  = data.Product != null ? data.Product.Name : "",
                BranchName   = data.Branch != null ? data.Branch.Name : "",
                BranchId     = data.BranchId,
                StockId      = data.StockId,
                InOrOut      = data.InOrOut,
                Quantity     = data.Quantity,
                StockBalance = data.StockBalance,
                StartStock   = data.StartStock,
                Balance      = (data.Balance != null)? data.Balance:0,
                StoreStockId = data.StoreStockId,
                BatchNumber  = stock.BatchNumber,
                StockInOrOut = (data.InOrOut == true) ? "Stock In" : "Stock Out",
                SoldOut      = data.SoldOut,
                SoldOutOrNot = (data.SoldOut == true)? "Stock Sold Out":"Not Yet Done",
                SoldAmount   = (data.SoldAmount != null)? data.SoldAmount : 0,
                StoreId      = data.StoreId,
                StoreName    = data.Store != null ? data.Store.Name : "",
                TimeStamp    = data.TimeStamp,
                Stock        = stock,
            };

            return(storeStock);
        }
コード例 #3
0
        protected void LoadGridPanelStock()
        {
            string SQLT_SELECT_ALL         = @"
                    SELECT invs_id, invs_ctg, invs_name, invs_inamt, invs_outamt, invs_invamt, invs_minstock, price, cost, invs_lastupdate
                    FROM inventory_stock 
                    WHERE invs_status='Y' 
                    ORDER BY invs_id;";
            string SQLT_SELECT_BY_CATEGORY = @"
                    SELECT invs_id, invs_ctg, invs_name, invs_inamt, invs_outamt, invs_invamt, invs_minstock, price, cost, invs_lastupdate 
                    FROM inventory_stock
                    WHERE invs_category={0}
                    ORDER BY invs_id;";
            string sSql  = null;
            string cbSel = (string)cbInvCategory.Value;

            if (cbSel == null || cbSel == "0")
            {
                sSql = SQLT_SELECT_ALL;
            }
            else
            {
                sSql = string.Format(SQLT_SELECT_BY_CATEGORY, cbSel);
            }

            DataTable dt = db.Query(sSql);

            StoreStock.DataSource = db.GetDataArray_AddRowNum(dt);
            StoreStock.DataBind();
        }
コード例 #4
0
        public void SaveStockStore(StoreStockDTO storeStockDTO)
        {
            if (storeStockDTO.StoreStockId == 0)
            {
                var storeStock = new StoreStock()
                {
                    StoreStockId = storeStockDTO.StoreStockId,
                    StockId      = storeStockDTO.StockId,
                    Balance      = storeStockDTO.Quantity,
                    StockBalance = storeStockDTO.StockBalance,
                    ProductId    = storeStockDTO.ProductId,
                    StoreId      = storeStockDTO.StoreId,
                    BranchId     = storeStockDTO.BranchId,
                    InOrOut      = storeStockDTO.InOrOut,
                    StartStock   = storeStockDTO.StartStock,
                    SectorId     = storeStockDTO.SectorId,
                    Quantity     = storeStockDTO.Quantity,
                    TimeStamp    = DateTime.Now,
                    SoldAmount   = storeStockDTO.SoldAmount,
                    SoldOut      = storeStockDTO.SoldOut,
                    CreatedOn    = DateTime.Now,
                };
                this.UnitOfWork.Get <StoreStock>().AddNew(storeStock);
                this.UnitOfWork.SaveChanges();
            }


            else
            {
                var result = this.UnitOfWork.Get <StoreStock>().AsQueryable()
                             .FirstOrDefault(e => e.StoreStockId == storeStockDTO.StoreStockId);
                if (result != null)
                {
                    result.StoreStockId = storeStockDTO.StoreStockId;
                    result.StoreId      = storeStockDTO.StoreId;
                    result.StockId      = storeStockDTO.StockId;
                    result.SectorId     = storeStockDTO.SectorId;
                    result.SoldAmount   = storeStockDTO.SoldAmount;
                    result.ProductId    = storeStockDTO.ProductId;
                    result.BranchId     = storeStockDTO.BranchId;
                    result.StoreId      = storeStockDTO.StoreId;
                    result.InOrOut      = storeStockDTO.InOrOut;
                    result.CreatedOn    = storeStockDTO.CreatedOn;
                    result.Balance      = storeStockDTO.Balance;
                    result.StartStock   = storeStockDTO.StartStock;
                    result.SoldOut      = storeStockDTO.SoldOut;
                    result.StockBalance = storeStockDTO.StockBalance;
                    result.TimeStamp    = DateTime.Now;
                    this.UnitOfWork.Get <StoreStock>().Update(result);
                    this.UnitOfWork.SaveChanges();
                }
            }
        }
コード例 #5
0
        public StoreStock GetLatestStockForAParticularStore(long storeId, long productId)
        {
            StoreStock storeStock  = new StoreStock();
            var        storeStocks = this.UnitOfWork.Get <StoreStock>().AsQueryable().Where(e => e.StoreId == storeId && e.ProductId == productId);

            if (storeStocks.Any())
            {
                storeStock = storeStocks.AsQueryable().OrderByDescending(e => e.CreatedOn).First();
                return(storeStock);
            }
            else
            {
                return(storeStock);
            }
        }
コード例 #6
0
        public OrderBuilderTest()
        {
            var testProduct = new Product {
                Name = "Test"
            };

            var testStock = new StoreStock {
                Product         = testProduct,
                ProductQuantity = 100
            };

            mTestStore = new Store {
                StoreStock = { testStock }
            };

            mOrderBuilder = new OrderBuilder();
        }
コード例 #7
0
        public void SaveStockStore(StoreStockDTO storeStockDTO)
        {
            var storeStock = new StoreStock()
            {
                StockId      = storeStockDTO.StockId,
                StockBalance = storeStockDTO.StockBalance,
                ProductId    = storeStockDTO.ProductId,
                StoreId      = storeStockDTO.StoreId,
                BranchId     = storeStockDTO.BranchId,
                StartStock   = storeStockDTO.StartStock,
                SectorId     = storeStockDTO.SectorId,
                Quantity     = storeStockDTO.Quantity,
                TimeStamp    = DateTime.Now
            };

            this.UnitOfWork.Get <StoreStock>().AddNew(storeStock);
            this.UnitOfWork.SaveChanges();
        }
コード例 #8
0
        public StoreStock GetStockForAParticularStoreForDelivery(long storeId, long productId, long batchId)
        {
            StoreStock storeStock = new StoreStock();
            var        stock      = GetStockForAParticularBatchAndProduct(batchId, productId, storeId);

            if (stock != null)
            {
                var storeStocks = this.UnitOfWork.Get <StoreStock>().AsQueryable().Where(e => e.StockId == stock.StockId && e.SoldOut == false);
                if (storeStocks.Any())
                {
                    storeStock = storeStocks.AsQueryable().OrderBy(e => e.CreatedOn).FirstOrDefault();
                    return(storeStock);
                }
                else
                {
                    return(storeStock);
                }
            }
            return(storeStock);
        }
コード例 #9
0
        public void SaveStoreStock(StoreStock storeStock, bool inOrOut)
        {
            double startStock      = 0;
            double OldStockBalance = 0;
            double NewStockBalance = 0;


            OldStockBalance = GetStockBalanceForLastStockTransaction(storeStock.StoreId, storeStock.ProductId);
            startStock      = OldStockBalance;


            if (inOrOut == true)
            {
                NewStockBalance = OldStockBalance + storeStock.Quantity;
            }
            else
            {
                NewStockBalance = OldStockBalance - storeStock.Quantity;
            }

            var storeStockDTO = new DTO.StoreStockDTO()
            {
                StoreStockId = storeStock.StoreStockId,
                StoreId      = storeStock.StoreId,
                StartStock   = startStock,
                StockId      = storeStock.StockId,
                ProductId    = storeStock.ProductId,
                StockBalance = NewStockBalance,
                BranchId     = storeStock.BranchId,
                Quantity     = storeStock.Quantity,
                SectorId     = storeStock.SectorId,
                TimeStamp    = storeStock.TimeStamp,
                InOrOut      = inOrOut,
                Balance      = storeStock.Balance,
                CreatedOn    = storeStock.CreatedOn,
                SoldOut      = storeStock.SoldOut,
                SoldAmount   = storeStock.SoldAmount,
            };

            this._dataService.SaveStockStore(storeStockDTO);
        }
コード例 #10
0
        public Error GetStockOnHand(EAPI api,
                                    Store store,
                                    int unixDate)           // Changes since last run date
        {
            var error = new Error();

            try {
                int pageSize       = 100,
                    pageNo         = 1,
                    numStockOnHand = 0;
                string request     = "getProductStock";

                if (store.RangeId == null)
                {
                    LogService.WriteLog(TransType.StockOnHand, store.Id, null, "Warning: Not updating Stock on Hand for Erply store: " + store.Name + " because it has no Range set");
                }
                else
                {
                    LogService.WriteLog(TransType.StockOnHand, store.Id, null, "Updating Stock on Hand for Erply store: " + store.Name);

                    var dict = createGetStockOnHandParameters(store, pageNo, pageSize, unixDate);

                    JObject json = api.sendRequest(request, dict);
                    if (json != null)
                    {
                        error = GetError(json["status"]["errorCode"].ToString(), json["status"]["responseStatus"].ToString());

                        int totalRecs = (int)json["status"]["recordsTotal"];
                        int numPages  = totalRecs / pageSize;
                        if (numPages * pageSize < totalRecs)
                        {
                            numPages++;
                        }

                        LogService.WriteLog(TransType.StockOnHand, store.Id, null, $"{totalRecs} records(s) in {numPages} page(s) found");

                        while (!error.IsError && pageNo <= numPages)
                        {
                            int numRecs = (int)json["status"]["recordsInResponse"];

                            for (int i = 0; i < numRecs; i++)
                            {
                                int productId = Convert.ToInt32((int)json["records"][i]["productID"]);
                                var product   = db.FindProduct(productId);
                                if (product == null)
                                {
                                    LogService.WriteLog(TransType.StockOnHand, store.Id, productId, $"Product Id #{productId} does not exist - creating it");

                                    product = new Product {
                                        Id          = productId,
                                        ProductCode = productId.ToString(),
                                        ProductName = "Erply Product Id:" + productId.ToString(),
                                        PackSize    = 1,
                                        Mpl         = 0
                                    };

                                    var oopsProduct = ropesDb.FindProduct(product.ProductCode);
                                    if (oopsProduct != null)
                                    {
                                        product.PackSize = oopsProduct.MSQ;
                                    }

                                    db.InsertOrUpdateProduct(product, true);
                                }

                                var storeStock = db.FindStoreStock(store.Id, productId);
                                if (storeStock == null)
                                {
                                    storeStock = new StoreStock {
                                        StoreId = store.Id, ProductId = productId, StockinTransit = 0
                                    }
                                }
                                ;

                                var stockOnHand = (int)Convert.ToDecimal(json["records"][i]["amountInStock"]);
                                //if (stockOnHand < 0) stockOnHand = 0;   // Erply can return negative values
                                storeStock.StockOnHand = stockOnHand;
                                db.InsertOrUpdateStoreStock(storeStock);
                                numStockOnHand++;

                                LogService.WriteLog(TransType.StockOnHand, store.Id, productId, $"  {store.Name} / {product.ProductCode} {product.ProductName}: {storeStock.StockOnHand}");
                            }

                            pageNo++;
                            if (pageNo <= numPages)
                            {
                                // Get the next page
                                dict = createGetStockOnHandParameters(store, pageNo, pageSize, unixDate);

                                json = api.sendRequest(request, dict);
                                if (json != null)
                                {
                                    error     = GetError(json["status"]["errorCode"].ToString(), json["status"]["responseStatus"].ToString());
                                    totalRecs = (int)json["status"]["recordsTotal"];
                                    numPages  = totalRecs / pageSize;
                                    if (numPages * pageSize < totalRecs)
                                    {
                                        numPages++;
                                    }
                                }
                                else
                                {
                                    error.SetError($"Error: A NULL JSON object was returned by {request}!");
                                }
                            }
                        }
                        LogService.WriteLog(TransType.StockOnHand, store.Id, null, $"{numStockOnHand} Stock on Hand record(s) retrieved");
                    }
                    else
                    {
                        error.SetError($"Error: A NULL JSON object was returned by {request}!");
                    }
                }
            } catch (Exception e) {
                error.SetError(e);
            }
            return(error);
        }
コード例 #11
0
ファイル: Save.cs プロジェクト: 2002-feb24-net/paule-project0
        private void SaveStoreStock()
        {
            Dictionary <string, Store> MyManagedStores = MyStoreManager.GetManagedStores();

            using (PersonDbContext context = new PersonDbContext())
            {
                var DataTopics       = context.Topics;
                var DataStoreStock   = context.StoreStock;
                var DataGeneralStock = context.GeneralStock
                                       .Include(p => p.StoreStock);

                foreach (var val1 in MyManagedStores)
                {
                    Dictionary <string, List <Stock> > MyCurrentTopicStock = val1.Value.GetStock();
                    foreach (var val2 in MyCurrentTopicStock)
                    {
                        List <Stock> MyCurrentStock = val2.Value;
                        foreach (var val3 in MyCurrentStock)
                        {
                            var MyQuery = context.GeneralStock
                                          .FirstOrDefault(Stock => Stock.StockName == val3.GetName());

                            if (MyQuery == null)
                            {
                                int NewStockId;
                                int NewStoreStockId;

                                try
                                {
                                    NewStockId = context.GeneralStock.Max(stock => stock.StockId) + 1;
                                }
                                catch (Exception)
                                {
                                    //null, no general stock exist
                                    NewStockId = 1;
                                }

                                try
                                {
                                    NewStoreStockId = context.StoreStock.Max(stock => stock.StoreStockId) + 1;
                                }
                                catch (Exception)
                                {
                                    //null, no store stock exist
                                    NewStoreStockId = 1;
                                }
                                GeneralStock gensto = new GeneralStock
                                {
                                    StockId          = NewStockId,
                                    TopicId          = context.Topics.First(p => p.TopicName == val3.GetTopic()).TopicId,
                                    StockName        = val3.GetName(),
                                    Price            = Convert.ToDecimal(val3.GetPrice()),
                                    StockDescription = val3.GetDescription(),
                                    OrderStockId     = null,
                                    StoreStockId     = NewStoreStockId
                                };

                                StoreStock stosto = new StoreStock
                                {
                                    StoreStockId = NewStoreStockId,
                                    LocationId   = context.Locations.First(p => p.LocationName == val1.Key).LocationId
                                };


                                context.StoreStock.Add(stosto);
                                context.GeneralStock.Add(gensto);
                                try
                                {
                                    context.SaveChanges();
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e);
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #12
0
ファイル: Save.cs プロジェクト: 2002-feb24-net/paule-project0
        public void SwapToStore(string x)
        {
            using (PersonDbContext context = new PersonDbContext())
            {
                var DataGeneralStock = context.GeneralStock
                                       .FirstOrDefault(p => p.StockName == x);
                var DataLocation = context.Locations
                                   .ToList();
                var DataPeople = context.People
                                 .ToList();

                if (DataGeneralStock == null)
                {
                    Console.WriteLine("Error! Item Not found!");
                    Console.ReadLine();
                }
                else
                {
                    var count = (from storsto in context.StoreStock select storsto.StoreStockId).Count();
                    if (count == 0)
                    {
                        var q = context.OrderStock
                                .First(p => p.OrderStockId == DataGeneralStock.OrderStockId);
                        context.OrderStock.Remove(q);
                        DataGeneralStock.OrderStockId = null;
                        var e = DataPeople
                                .First(p => p.Username == MyPersonManager.GetCurrentUser().GetLocation()).LocationId;
                        var w = DataLocation
                                .First(p => p.LocationId == e);
                        StoreStock storsto = new StoreStock
                        {
                            StoreStockId = 1,
                            LocationId   = w.LocationId
                        };
                        DataGeneralStock.StoreStockId = storsto.StoreStockId;
                        context.StoreStock.Add(storsto);
                    }
                    else
                    {
                        var q = context.OrderStock
                                .First(p => p.OrderStockId == DataGeneralStock.OrderStockId);
                        context.OrderStock.Remove(q);
                        DataGeneralStock.OrderStockId = null;
                        var e = DataLocation
                                .First(p => p.LocationName == MyPersonManager.GetCurrentUser().GetLocation()).LocationId;
                        var w = DataPeople
                                .First(p => p.LocationId == e);
                        StoreStock storsto = new StoreStock
                        {
                            StoreStockId = context.StoreStock.Max(stock => stock.StoreStockId) + 1,
                            LocationId   = w.LocationId
                        };
                        DataGeneralStock.StoreStockId = storsto.StoreStockId;
                        context.StoreStock.Add(storsto);
                    }

                    try
                    {
                        context.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
        }
コード例 #13
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);
        }
コード例 #14
0
        public Error GetStockInTransit(EAPI api, int unixDate, int warehouseId)           // Changes since last run date
        {
            var error = new Error();

            try {
                int pageSize          = 100,
                    pageNo            = 1,
                    numStockInTransit = 0;
                string request        = "getPurchaseDocuments";

                LogService.WriteLog(TransType.StockInTransit, null, null, "Updating Stock in Transit from Erply");

                var dict = createGetStockInTransitParameters(pageNo, pageSize, unixDate, warehouseId);

                JObject json = api.sendRequest(request, dict);
                if (json != null)
                {
                    error = GetError(json["status"]["errorCode"].ToString(), json["status"]["responseStatus"].ToString());

                    int totalRecs = (int)json["status"]["recordsTotal"];
                    int numPages  = totalRecs / pageSize;
                    if (numPages * pageSize < totalRecs)
                    {
                        numPages++;
                    }

                    LogService.WriteLog(TransType.StockInTransit, null, null, $"{totalRecs} records(s) in {numPages} page(s) found");

                    while (!error.IsError && pageNo <= numPages)
                    {
                        int numRecs = (int)json["status"]["recordsInResponse"];

                        for (int i = 0; i < numRecs; i++)
                        {
                            int row       = 0;
                            int productId = 1;
                            while (productId > 0)
                            {
                                try {
                                    productId = Convert.ToInt32((int)json["records"][i]["rows"][row]["productID"]);
                                } catch {
                                    productId = -1;
                                }
                                if (productId > 0)
                                {
                                    int storeId = Convert.ToInt32((int)json["records"][i]["warehouseID"]);
                                    var store   = db.FindStore(storeId);

                                    var product = db.FindProduct(productId);
                                    if (product == null)
                                    {
                                        product = new Product {
                                            Id          = productId,
                                            ProductCode = json["records"][i]["rows"][row]["code"].ToString(),
                                            ProductName = json["records"][i]["rows"][row]["itemName"].ToString(),
                                            PackSize    = 1,
                                            Mpl         = 0
                                        };

                                        var oopsProduct = ropesDb.FindProduct(product.ProductCode);
                                        if (oopsProduct != null)
                                        {
                                            product.PackSize = oopsProduct.MSQ;
                                        }

                                        db.InsertOrUpdateProduct(product, true);
                                    }

                                    var storeStock = db.FindStoreStock(storeId, productId);
                                    if (storeStock == null)
                                    {
                                        storeStock = new StoreStock {
                                            StoreId = storeId, ProductId = productId, StockOnHand = 0
                                        }
                                    }
                                    ;

                                    var stockInTransit = Convert.ToInt32(json["records"][i]["rows"][row]["amount"]);
                                    if (stockInTransit < 0)
                                    {
                                        stockInTransit = 0;
                                    }
                                    storeStock.StockinTransit = stockInTransit;
                                    db.InsertOrUpdateStoreStock(storeStock);
                                    numStockInTransit++;

                                    LogService.WriteLog(TransType.StockInTransit, storeId, productId, $"  {(store != null ? store.Name : "[Unknown Store]")} / {product.ProductCode} {product.ProductName}: {storeStock.StockinTransit}");
                                }
                                row++;
                            }
                        }

                        pageNo++;
                        if (pageNo <= numPages)
                        {
                            // Get the next page
                            dict = createGetStockInTransitParameters(pageNo, pageSize, unixDate, warehouseId);

                            json = api.sendRequest(request, dict);
                            if (json != null)
                            {
                                error     = GetError(json["status"]["errorCode"].ToString(), json["status"]["responseStatus"].ToString());
                                totalRecs = (int)json["status"]["recordsTotal"];
                                numPages  = totalRecs / pageSize;
                                if (numPages * pageSize < totalRecs)
                                {
                                    numPages++;
                                }
                            }
                            else
                            {
                                error.SetError($"Error: A NULL JSON object was returned by {request}!");
                            }
                        }
                    }
                    LogService.WriteLog(TransType.StockInTransit, null, null, $"{numStockInTransit} Stock in Transit record(s) retrieved");
                }
                else
                {
                    error.SetError($"Error: A NULL JSON object was returned by {request}!");
                }
            } catch (Exception e) {
                error.SetError(e);
            }
            return(error);
        }
コード例 #15
0
        private MakeDelivery MakeBrandDeliveryRecord(long storeId, Delivery delivery, string userId)
        {
            var    soldOut      = false;
            var    stockReduced = false;
            double balance      = 0;
            var    makeDelivery = new MakeDelivery();

            var storeStock = _stockService.GetStockForAParticularStoreForDelivery(storeId, delivery.ProductId, delivery.BatchId);

            if (storeStock != null)
            {
                if (storeStock.Balance == delivery.Quantity)
                {
                    soldOut = true;
                    if (storeStock.Balance != 0 || storeStock.Balance != null)
                    {
                        balance = Convert.ToDouble(storeStock.Balance) - Convert.ToDouble(delivery.Quantity);
                    }
                    else
                    {
                        balance = storeStock.Quantity - Convert.ToDouble(delivery.Quantity);
                    }

                    UpdateStoreStockDetailsOnDelivery(storeId, delivery.ProductId, userId, soldOut, storeStock.StockId);
                    var storeStockObject = new StoreStock()
                    {
                        StoreId      = storeStock.StoreId,
                        ProductId    = storeStock.ProductId,
                        BranchId     = storeStock.BranchId,
                        StockId      = storeStock.StockId,
                        Quantity     = storeStock.Quantity,
                        SectorId     = storeStock.SectorId,
                        StockBalance = storeStock.StockBalance,
                        StartStock   = storeStock.StartStock,
                        StoreStockId = storeStock.StoreStockId,
                        Balance      = balance,
                        SoldAmount   = delivery.Quantity,
                        CreatedOn    = storeStock.CreatedOn,
                        SoldOut      = soldOut,
                    };
                    _stockService.SaveStoreStock(storeStockObject, false);
                    stockReduced = true;
                    makeDelivery = new MakeDelivery()
                    {
                        StockId              = storeStock.StockId,
                        StockReduced         = stockReduced,
                        OrderQuantityBalance = balance,
                    };
                    return(makeDelivery);
                }
                else if (storeStock.Balance > delivery.Quantity)
                {
                    if (storeStock.Balance != 0 || storeStock.Balance != null)
                    {
                        balance = Convert.ToDouble(storeStock.Balance) - Convert.ToDouble(delivery.Quantity);
                    }
                    else
                    {
                        balance = storeStock.Quantity - Convert.ToDouble(delivery.Quantity);
                    }

                    var storeStockObject = new StoreStock()
                    {
                        StoreId      = storeStock.StoreId,
                        ProductId    = storeStock.ProductId,
                        BranchId     = storeStock.BranchId,
                        StockId      = storeStock.StockId,
                        Quantity     = storeStock.Quantity,
                        SectorId     = storeStock.SectorId,
                        StoreStockId = storeStock.StoreStockId,
                        StockBalance = storeStock.StockBalance,
                        StartStock   = storeStock.StartStock,
                        Balance      = balance,
                        SoldAmount   = delivery.Quantity,
                        CreatedOn    = storeStock.CreatedOn,
                        SoldOut      = storeStock.SoldOut,
                    };
                    _stockService.SaveStoreStock(storeStockObject, false);
                    stockReduced = true;
                    makeDelivery = new MakeDelivery()
                    {
                        StockId              = storeStock.StockId,
                        StockReduced         = stockReduced,
                        OrderQuantityBalance = 0,
                    };
                    return(makeDelivery);
                }
                else
                {
                    double stockBalance = 0, deliverQuantity = 0, newOrderQuantity = 0;

                    if (storeStock.Balance != 0 || storeStock.Balance != null)
                    {
                        balance = Convert.ToDouble(storeStock.Balance) - Convert.ToDouble(delivery.Quantity);
                    }
                    else
                    {
                        balance = storeStock.Quantity - Convert.ToDouble(delivery.Quantity);
                    }
                    if (stockBalance < 0)
                    {
                        balance          = 0;
                        deliverQuantity  = storeStock.Quantity;
                        newOrderQuantity = Convert.ToDouble(delivery.Quantity) - storeStock.Quantity;
                    }

                    soldOut = true;
                    UpdateStoreStockDetailsOnDelivery(storeId, delivery.ProductId, userId, soldOut, storeStock.StockId);
                    var storeStockObject = new StoreStock()
                    {
                        StoreId      = storeStock.StoreId,
                        ProductId    = storeStock.ProductId,
                        BranchId     = storeStock.BranchId,
                        StockId      = storeStock.StockId,
                        Quantity     = storeStock.Quantity,
                        SectorId     = storeStock.SectorId,
                        StoreStockId = storeStock.StoreStockId,
                        StockBalance = storeStock.StockBalance,
                        StartStock   = storeStock.StartStock,
                        Balance      = balance,
                        SoldAmount   = deliverQuantity,
                        CreatedOn    = storeStock.CreatedOn,
                        SoldOut      = soldOut,
                    };
                    _stockService.SaveStoreStock(storeStockObject, false);
                    stockReduced = true;
                    makeDelivery = new MakeDelivery()
                    {
                        StockId              = storeStock.StockId,
                        StockReduced         = stockReduced,
                        OrderQuantityBalance = stockBalance,
                    };
                    return(makeDelivery);
                }
            }
            else
            {
                // we dont have stock in store
                stockReduced = false;
            }
            return(makeDelivery);
        }