/// <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); }
/// <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); }
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(); }
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(); } } }
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); } }
public OrderBuilderTest() { var testProduct = new Product { Name = "Test" }; var testStock = new StoreStock { Product = testProduct, ProductQuantity = 100 }; mTestStore = new Store { StoreStock = { testStock } }; mOrderBuilder = new OrderBuilder(); }
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(); }
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); }
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); }
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); }
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); } } } } } } }
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); } } } }
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); }
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); }
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); }