public ActionResult DeleteConfirmed(int id) { WarehouseProduct warehouseProduct = db.WarehouseProducts.Find(id); db.WarehouseProducts.Remove(warehouseProduct); db.SaveChanges(); return(RedirectToAction("Index")); }
public IActionResult UpdateProductInWarehouse(WarehouseProduct warehouseProduct) { if (warehouseProduct != null) { warehouseProductService.Update(warehouseProduct); return(Ok()); } return(BadRequest()); }
public ActionResult RemoveWarehouseProduct(long?id) { WarehouseProduct p = db.WarehouseProducts.Find(id); db.WarehouseProducts.Remove(p); db.SaveChanges(); Session["success"] = "The product has been removed from the warehouse"; return(Redirect(Request.UrlReferrer.ToString())); }
public ActionResult ChangePrice(long id, long pid, decimal newVal) { // Доступные склады var warehouses = CurrentUser.IsAdmin() ? DataContext.Warehouses.ToList() : CurrentUser.WarehouseKeepers.Select(wk => wk.Warehouse).ToList(); // Ищем склад и тип продукта var warehouse = warehouses.FirstOrDefault(w => w.Id == id); if (warehouse == null) { return(Json(new { success = false, msg = "Такой склад не найден" })); } if (warehouse.Project.ProductTypes.All(p => p.Id != pid)) { return(Json(new { success = false, msg = "Такой тип продукта не найден" })); } if (newVal < 0) { newVal = 0; } // Ищем или создаем var warehouseProduct = warehouse.WarehouseProducts.FirstOrDefault(wp => wp.ProductId == pid); if (warehouseProduct == null) { warehouseProduct = new WarehouseProduct() { DateCreated = DateTime.Now, Price = 0, Quantity = 0, ProductId = pid, Warehouse = warehouse }; warehouse.WarehouseProducts.Add(warehouseProduct); } warehouseProduct.Price = newVal; warehouseProduct.DateModified = DateTime.Now; // Сохраняем try { DataContext.SubmitChanges(); } catch (Exception e) { return(Json(new { success = false, msg = "Ошибка сохранения в базу: " + e.Message })); } return(Json(new { success = true })); }
public ActionResult Edit([Bind(Include = "WarehouseProductID,WarehouseID,ProductID,QuantityInStock,MaxQuantity")] WarehouseProduct warehouseProduct) { if (ModelState.IsValid) { db.Entry(warehouseProduct).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.ProductID = new SelectList(db.Products, "ProductID", "Name", warehouseProduct.ProductID); ViewBag.WarehouseID = new SelectList(db.Warehouses, "WarehouseID", "WarehouseID", warehouseProduct.WarehouseID); return(View(warehouseProduct)); }
public IActionResult GetProductInWarehouse(string id) { if (id != null) { WarehouseProduct warehouseProduct = warehouseProductService.Get(id, "id"); if (warehouseProduct != null) { return(Ok(warehouseProduct)); } } return(BadRequest()); }
public ActionResult EditWarehouseItem() { var id = Int64.Parse(Request.Form["ProductId"]); var reoderLevel = int.Parse(Request.Form["ReorderLevel"]); WarehouseProduct p = db.WarehouseProducts.Find(id); p.ReorderLevel = reoderLevel; p.UpdatedAt = DateTime.Now; db.SaveChanges(); return(Redirect(Request.UrlReferrer.ToString())); }
public IActionResult Delete(string id, string propertyName) { if (id != null) { if (warehouseProductService.IsWarehouseProductsExist(id, propertyName)) { WarehouseProduct warehouseProduct = warehouseProductService.Get(id, propertyName); warehouseProductService.Delete(warehouseProduct.id); } service.Delete(id); return(Ok()); } return(BadRequest()); }
// GET: WarehouseProduct/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WarehouseProduct warehouseProduct = db.WarehouseProducts.Find(id); if (warehouseProduct == null) { return(HttpNotFound()); } return(View(warehouseProduct)); }
public IActionResult Get(string id, string propertyName) { if (id != null && propertyName != null) { string warehouse; Product products = service.Get(id, propertyName); WarehouseProduct warehouseProduct = warehouseProductService.Get(id, "Prod" + propertyName); if (products != null) { warehouse = warehouseProduct.WarehouseName; return(Ok(new { products, warehouse })); } } return(BadRequest()); }
// GET: WarehouseProduct/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WarehouseProduct warehouseProduct = db.WarehouseProducts.Find(id); if (warehouseProduct == null) { return(HttpNotFound()); } ViewBag.ProductID = new SelectList(db.Products, "ProductID", "Name", warehouseProduct.ProductID); ViewBag.WarehouseID = new SelectList(db.Warehouses, "WarehouseID", "WarehouseID", warehouseProduct.WarehouseID); return(View(warehouseProduct)); }
public IActionResult Add([FromBody] Product product, string warehouseNameFromwWarehouseProduct, int countProductFromwWarehouseProduct, string propertyName) { if (product != null) { if (!service.IsProductExist(product.Name, propertyName)) { service.Create(product); WarehouseProduct warehouseProduct = new WarehouseProduct { id = Guid.NewGuid().ToString(), WarehouseName = warehouseNameFromwWarehouseProduct, ProdBarcodeNumber = product.BarcodeNumber, Count = countProductFromwWarehouseProduct }; warehouseProductService.Create(warehouseProduct); } return(Ok()); } return(BadRequest()); }
private void UpdateProductDetail(Purchase purchase) { if (purchase.PurchaseDetails != null) { var collection = purchase.PurchaseDetails.Select(x => x.ProductDetailId).ToList(); foreach (var id in collection) { double purchased = Repository.Db.Set <PurchaseDetail>() .Where(x => x.ProductDetailId == id) .Sum(y => y.Quantity); ProductDetail productDetail = Repository.Db.Set <ProductDetail>().Find(id); if (productDetail != null) { productDetail.Purchased = purchased; productDetail.OnHand = productDetail.Purchased + productDetail.StartingInventory - productDetail.Sold; } var warehouseProduct = this.Repository.Db.Set <WarehouseProduct>().FirstOrDefault( x => x.ShopId == purchase.ShopId && x.ProductDetailId == id && x.WarehouseId == purchase.WarehouseId); if (warehouseProduct == null) { warehouseProduct = new WarehouseProduct { ShopId = purchase.ShopId, WarehouseId = purchase.WarehouseId, MinimumStockToNotify = productDetail.MinimumStockToNotify, ProductDetailId = productDetail.Id, }; this.AddCommonValues(purchase, warehouseProduct); this.Repository.Db.Set <WarehouseProduct>().Add(warehouseProduct); Repository.Save(); } var purchaseByWh = this.Repository.Db.Set <PurchaseDetail>() .Where(x => x.ShopId == purchase.ShopId && x.ProductDetailId == id && x.WarehouseId == purchase.WarehouseId) .Sum(y => y.Quantity); warehouseProduct.Purchased = purchaseByWh; warehouseProduct.OnHand = warehouseProduct.Purchased + warehouseProduct.StartingInventory + warehouseProduct.TransferredIn - warehouseProduct.Sold - warehouseProduct.TransferredOut; warehouseProduct.Modified = DateTime.Now; Repository.Save(); } } }
public void AddProduct(AddProductWaerhouseViewModel addProduct) { var palletSpace = this.dbContext.Warehouses.Select(w => w.CurrentPalletsSpaceFree).FirstOrDefault(); var boxSpace = this.dbContext.Warehouses.Select(w => w.CurrentBoxesFrontSpaceFree).FirstOrDefault(); var producTransportPackage = this.dbContext.Products.Where(p => p.Id == addProduct.ProductId).Select(x => x.IsPallet).FirstOrDefault(); int productsPerBox = this.dbContext.Products.Where(p => p.Id == addProduct.ProductId).Select(x => x.ProductTransportPackageNumberOfPieces).FirstOrDefault(); int boxesPerPallet = this.dbContext.Products.Where(p => p.Id == addProduct.ProductId).Select(x => x.BoxesPerPallet).FirstOrDefault(); var shelfDepth = this.dbContext.WarehouseBoxes.Select(w => w.ShelfDepth).FirstOrDefault(); var boxesDepthSpace = this.dbContext.Products.Where(p => p.Id == addProduct.ProductId).Select(x => x.ProductTransportPackageLengthSize).FirstOrDefault(); var boxesFrontSpace = this.dbContext.Products.Where(p => p.Id == addProduct.ProductId).Select(x => x.ProductTransportPackageWidthSize).FirstOrDefault(); var existingProduct = this.dbContext.WarehouseProducts.Any(p => p.ProductId == addProduct.ProductId); if (existingProduct) { var product = this.dbContext.WarehouseProducts.FirstOrDefault(x => x.ProductId == addProduct.ProductId && x.WarehouseId == addProduct.WarehouseId); ProductAddQuantityPalletOrBoxSpace(addProduct, ref palletSpace, ref boxSpace, producTransportPackage, shelfDepth, boxesDepthSpace, boxesFrontSpace, product, productsPerBox, boxesPerPallet); this.dbContext.WarehouseProducts.Update(product); this.dbContext.SaveChanges(); } else { var product = new WarehouseProduct { ProductId = addProduct.ProductId, WarehouseId = addProduct.WarehouseId, Product = this.dbContext.Products.FirstOrDefault(p => p.Id == addProduct.ProductId), }; ProductAddQuantityPalletOrBoxSpace(addProduct, ref palletSpace, ref boxSpace, producTransportPackage, shelfDepth, boxesDepthSpace, boxesFrontSpace, product, productsPerBox, boxesPerPallet); this.dbContext.WarehouseProducts.Add(product); this.dbContext.SaveChanges(); } }
public bool UpdateAmountByCode(string warehouse, long quantity, string productCode) { try { //Subtract Amount WarehouseProduct origin = this.GetByCodes(warehouse, productCode); origin.Quantity -= quantity; context.WarehouseProduct.AddOrUpdate(origin); context.SaveChanges(); return(true); } catch (Exception e) { return(false); } }
public bool UpdateAmountByCodes(string warehouseOrigin, string warehouseDestiny, long quantity, string productCode) { try { long amount = 0; //Add Amount WarehouseProduct destiny = this.GetByCodes(warehouseDestiny, productCode); if (destiny != null) { destiny.Quantity += quantity; } else { destiny = new WarehouseProduct() { ProductCode = productCode, WarehouseCode = warehouseDestiny, Quantity = quantity }; } context.WarehouseProduct.AddOrUpdate(destiny); //Subtract Amount WarehouseProduct origin = this.GetByCodes(warehouseOrigin, productCode); origin.Quantity -= quantity; context.WarehouseProduct.AddOrUpdate(origin); context.SaveChanges(); return(true); } catch (Exception e) { return(false); } }
public IActionResult CreateProductInWarehouse(WarehouseProduct warehouseProduct, string productName) { if (warehouseProduct != null) { string propertyName = "Name"; Product product = productService.Get(productName, propertyName); IEnumerable <WarehouseProduct> warehouseProducts = warehouseProductService.GetList(); foreach (var item in warehouseProducts) { if (item.WarehouseName != warehouseProduct.WarehouseName) { if (item.ProdBarcodeNumber != product.BarcodeNumber) { warehouseProduct.id = Guid.NewGuid().ToString(); warehouseProduct.ProdBarcodeNumber = product.BarcodeNumber; warehouseProductService.Create(warehouseProduct); return(Ok()); } } } } return(BadRequest("This product already exiting")); }
public IActionResult Update(Product product, string Warehouse, int Count) { if (product != null) { IEnumerable <WarehouseProduct> warehouseProducts = warehouseProductService.GetList(); foreach (var item in warehouseProducts) { if (item.ProdBarcodeNumber == product.BarcodeNumber) { if (item.WarehouseName != Warehouse) { WarehouseProduct warehouseProduct = new WarehouseProduct { id = Guid.NewGuid().ToString(), Count = Count, ProdBarcodeNumber = product.BarcodeNumber, WarehouseName = Warehouse }; warehouseProductService.Create(warehouseProduct); } } } service.Update(product); return(Ok()); } return(BadRequest()); }
public WarehouseProduct GetByCodes(string warehouseCode, string productCode) { try { WarehouseProduct _warehouseProduct = null; using (TSGVLEntities db = new TSGVLEntities()) { //var _result = context.WarehouseProduct.Join(context.Warehouses, wp => wp.WarehouseCode, w => w.Code, // (wp, w) => new {wp, w}) // .Join(context.Products, x => x.wp.ProductCode, p => p.Code, (x, p) => new {x, p}) // .Where(cond => cond.x.wp.Quantity > 0) // .FirstOrDefault( // result => result.x.wp.WarehouseCode == warehouseCode && result.p.Code.Equals(productCode)); //if (_result != null) //{ // _warehouseProduct = new WarehouseProduct() // { // Id = _result.x.wp.Id, // WarehouseCode = _result.x.wp.WarehouseCode, // ProductCode = _result.x.wp.ProductCode, // Quantity = _result.x.wp.Quantity, // Warehouse = _result.x.w, // Product = _result.p // }; //} _warehouseProduct = (from wp in db.IV00102 join w in db.IV40700 on wp.LOCNCODE.Trim() equals w.LOCNCODE.Trim() join p in db.IV00101 on wp.ITEMNMBR.Trim() equals p.ITEMNMBR.Trim() where wp.ITEMNMBR.Trim() == productCode && wp.LOCNCODE.Trim() == warehouseCode && (wp.QTYONHND - wp.ATYALLOC) > 0 select new WarehouseProduct { Id = 0, WarehouseCode = wp.LOCNCODE.Trim(), ProductCode = wp.ITEMNMBR.Trim(), Quantity = wp.QTYONHND - wp.ATYALLOC, Warehouse = new Warehouse { Id = 0, Code = w.LOCNCODE.Trim(), Name = w.LOCNDSCR.Trim() }, Product = new Product { Id = 0, Code = p.ITEMNMBR.Trim(), BarCode = p.ITEMNMBR.Trim(), Description = p.ITEMDESC.Trim() } }).FirstOrDefault(); } return(_warehouseProduct); } catch (Exception e) { System.Diagnostics.Debug.WriteLine("e " + e.Message); return(null); } }
public ActionResult UpdateOrderStatus(long id, short newStatus, string comments, bool updateWarehouse) { // Ищем заявку var availableProjects = CurrentUser.IsAdmin() ? DataContext.Projects.Select(p => p.Id) : CurrentUser.ProjectUsers.Select(pu => pu.ProjectId); var order = DataContext.FEAOrders.FirstOrDefault(o => o.Id == id && availableProjects.Contains(o.ProjectId)); if (order == null) { ShowError("Такая заявка не найдена"); return(RedirectToAction("Index")); } // Проверяем можем ли мы изменить статус if (!order.CanChangeStatus(CurrentUser)) { ShowError("Нельзя изменить статус у этой заявки"); return(RedirectToAction("Index")); } // Изменяем статус if (newStatus != order.Status) { order.Status = newStatus; order.FEAOrdersStatusChangements.Add(new FEAOrdersStatusChangement() { Status = newStatus, FEAOrder = order, Comments = comments, User = CurrentUser, DateCreated = DateTime.Now }); ShowSuccess("Статус ВЭД заявки №{0} успешно изменен"); // Провряем, требуется ли обновить остатки на указанному складе if (newStatus == (short)FEAOrderStatus.Completed && updateWarehouse && order.TargetWarehouse != null) { // Обновляем остатки на складе foreach (var orderItem in order.FEAOrderItems) { // Ищем позицию на складе var warehouseItem = order.TargetWarehouse.WarehouseProducts.FirstOrDefault( wp => wp.ProductId == orderItem.ProductId); // Создаем если ее нет if (warehouseItem == null) { warehouseItem = new WarehouseProduct() { ProductId = orderItem.ProductId, DateCreated = DateTime.Now, WarehouseId = order.TargetWarehouse.Id, Price = orderItem.Price.HasValue ? orderItem.Price.Value : 0, }; order.TargetWarehouse.WarehouseProducts.Add(warehouseItem); } // Добавляем начисление warehouseItem.Quantity = warehouseItem.Quantity + orderItem.Quantity; warehouseItem.WarehouseProductChangements.Add(new WarehouseProductChangement() { Amount = orderItem.Quantity, Direction = (short)WarehouseProductChangementDirection.Income, DateCreated = DateTime.Now, WarehouseProduct = warehouseItem, Description = String.Format("Автоматическое начисление остатков по выполнению ВЭД заявки №{0}", order.Id) }); } ShowSuccess(string.Format("На склад {0} ({1}) успешно зачислены товары из ВЭД заявки №{2}", order.TargetWarehouse.Title, order.TargetWarehouse.City, order.Id)); } DataContext.SubmitChanges(); } return(Redirect(string.Format("/fea/{0}/edit#history", order.Id))); }
public ActionResult ChangeQuantity(long id, long pid, int newVal) { // Доступные склады var warehouses = CurrentUser.IsAdmin() ? DataContext.Warehouses.ToList() : CurrentUser.WarehouseKeepers.Select(wk => wk.Warehouse).ToList(); // Ищем склад и тип продукта var warehouse = warehouses.FirstOrDefault(w => w.Id == id); if (warehouse == null) { return(Json(new { success = false, msg = "Такой склад не найден" })); } if (warehouse.Project.ProductTypes.All(p => p.Id != pid)) { return(Json(new { success = false, msg = "Такой тип продукта не найден" })); } if (newVal < 0) { newVal = 0; } var warehouseProduct = warehouse.WarehouseProducts.FirstOrDefault(wp => wp.ProductId == pid); if (warehouseProduct == null) { // Создаем информацию об остатках товара на складе warehouseProduct = new WarehouseProduct() { DateCreated = DateTime.Now, Price = 0, ProductId = pid, Warehouse = warehouse, Quantity = newVal }; warehouse.WarehouseProducts.Add(warehouseProduct); if (newVal > 0) { warehouseProduct.WarehouseProductChangements.Add(new WarehouseProductChangement() { Amount = newVal, DateCreated = DateTime.Now, Direction = (short)WarehouseProductChangementDirection.Income, WarehouseProduct = warehouseProduct, Description = String.Format("Ручное изменение: добавление {0} шт. пользователем {1}", newVal, CurrentUser.GetFio()) }); } } else { // Изменяем var diff = newVal - warehouseProduct.Quantity; if (diff != 0) { warehouseProduct.Quantity = newVal; warehouseProduct.DateModified = DateTime.Now; warehouseProduct.WarehouseProductChangements.Add(new WarehouseProductChangement() { Amount = diff, DateCreated = DateTime.Now, WarehouseProduct = warehouseProduct, Direction = diff > 0 ? (short)WarehouseProductChangementDirection.Income : (short)WarehouseProductChangementDirection.Outcome, Description = diff > 0 ? String.Format("Ручное изменение: добавление {0} шт. пользователем {1}", diff, CurrentUser.GetFio()) : String.Format("Ручное изменение: изъятие {0} шт. пользователем {1}", Math.Abs(diff), CurrentUser.GetFio()) }); } } // Сохраняем try { DataContext.SubmitChanges(); } catch (Exception e) { return(Json(new { success = false, msg = "Ошибка сохранения в базу: " + e.Message })); } return(Json(new { success = true })); }
public static void UpdateWarehouseRelatedData(BusinessDbContext context) { List <string> ids = context.Shops.Where(x => x.IsActive).Select(x => x.Id).ToList(); foreach (var shopId in ids) { var whId = context.Warehouses.First(x => x.ShopId == shopId).Id; var purchases = context.Purchases.Where(x => x.ShopId == shopId && x.WarehouseId == null).ToList(); foreach (var item in purchases) { item.WarehouseId = whId; } context.SaveChanges(); var purchaseDetails = context.PurchaseDetails.Where(x => x.ShopId == shopId && x.WarehouseId == null) .ToList(); foreach (var item in purchaseDetails) { item.WarehouseId = whId; } context.SaveChanges(); var sales = context.Sales.Where(x => x.ShopId == shopId && x.WarehouseId == null).ToList(); foreach (var item in sales) { item.WarehouseId = whId; } context.SaveChanges(); var saleDetails = context.SaleDetails.Where(x => x.ShopId == shopId && x.WarehouseId == null).ToList(); foreach (var item in saleDetails) { item.WarehouseId = whId; } var productDetails = context.ProductDetails.Where(x => x.ShopId == shopId && x.IsActive).ToList(); foreach (var item in productDetails) { WarehouseProduct whProduct = context.WarehouseProducts.FirstOrDefault( x => x.ShopId == shopId && x.ProductDetailId == item.Id && x.WarehouseId == whId); if (whProduct != null) { continue; } whProduct = new WarehouseProduct() { Id = Guid.NewGuid().ToString(), Created = DateTime.Now, Modified = DateTime.Now, ShopId = shopId, CreatedBy = "System", ModifiedBy = "System", CreatedFrom = "System", IsActive = true, ProductDetailId = item.Id, StartingInventory = item.StartingInventory, Purchased = item.Purchased, Sold = item.Sold, OnHand = item.OnHand, MinimumStockToNotify = item.MinimumStockToNotify, TransferredIn = 0, TransferredOut = 0, WarehouseId = whId }; context.WarehouseProducts.Add(whProduct); context.SaveChanges(); } } }
public ActionResult ChangeOrderStatus(long id, short newStatus, long newUser, long newWarehouse, string comments, bool createFeaOrder, string redirectUrl, bool extractFromWarehouse = false) { var order = DataContext.LeadOrders.FirstOrDefault(lo => lo.Id == id); if (order == null) { ShowError("Такой заказ не найден"); return(RedirectToAction("Index")); } if (!order.CanChangeStatus(CurrentUser)) { ShowError("Такой заказ не найден"); return(RedirectToAction("Index")); } // Изменяем статус var oldStatus = order.Status; var oldAssignedUserId = order.AssignedUserId; var oldWarehouse = order.AssignedWarehouseId; order.Status = newStatus; order.DateModified = DateTime.Now; if (newUser != oldAssignedUserId) { order.User.LeadOrders.Remove(order); DataContext.Users.First(u => u.Id == newUser).LeadOrders.Add(order); } if (newWarehouse != oldWarehouse) { if (order.Warehouse != null) { order.Warehouse.LeadOrders.Remove(order); } DataContext.Warehouses.First(w => w.Id == newWarehouse).LeadOrders.Add(order); } order.LeadOrderChangements.Add(new LeadOrderChangement() { Author = CurrentUser, Comments = comments, OldStatus = oldStatus, OldAssignedUserId = oldAssignedUserId, OldWarehouseId = oldWarehouse, NewStatus = newStatus, NewAssignedUserId = newUser, NewWarehouseId = newWarehouse, LeadOrder = order, DateCreated = DateTime.Now }); // Сохраняем DataContext.SubmitChanges(); ShowSuccess(string.Format("Статус заказа №{0} для {1} был успешно изменен", order.Id, order.Lead.ToString())); if (extractFromWarehouse && order.Warehouse != null) { // Извлекаем остатки со склада foreach (var orderItem in order.LeadOrderItems) { var warehouseProduct = order.Warehouse.WarehouseProducts.FirstOrDefault(wp => wp.ProductId == orderItem.ProductId); if (warehouseProduct == null) { warehouseProduct = new WarehouseProduct() { DateCreated = DateTime.Now, ProductId = orderItem.ProductId, Quantity = 0, Warehouse = order.Warehouse, Price = orderItem.Price }; order.Warehouse.WarehouseProducts.Add(warehouseProduct); } warehouseProduct.Quantity = warehouseProduct.Quantity - orderItem.Quantity; warehouseProduct.DateModified = DateTime.Now; warehouseProduct.WarehouseProductChangements.Add(new WarehouseProductChangement() { DateCreated = DateTime.Now, Amount = orderItem.Quantity, Direction = (short)WarehouseProductChangementDirection.Outcome, WarehouseProduct = warehouseProduct, Description = String.Format("Изъятие остатков в количестве {0} для выполнения заказа №{1} пользователем {2}", orderItem.Quantity, order.Id, CurrentUser.GetFio()) }); } order.LeadOrderChangements.Add(new LeadOrderChangement() { Author = CurrentUser, NewAssignedUserId = order.AssignedUserId, OldAssignedUserId = order.AssignedUserId, OldStatus = order.Status, NewStatus = order.Status, OldWarehouseId = order.AssignedWarehouseId, NewWarehouseId = order.AssignedWarehouseId, DateCreated = DateTime.Now, Comments = String.Format("Извлечение остатков со склада {0} ({1}) в общем количестве {2}", order.Warehouse.Title, order.Warehouse.City, order.LeadOrderItems.Sum(oi => oi.Quantity)) }); DataContext.SubmitChanges(); ShowSuccess(string.Format("Остатки со склада {0} ({1}) были успешно извлечены", order.Warehouse.Title, order.Warehouse.City)); } // Создаем заявку на дозакуп if (createFeaOrder) { // Ищем менеджера var targetManagers = order.Project.ProjectUsers.Where(u => u.User.HasPermission(Permission.FEA)) .Select(u => u.User) .ToList(); if (targetManagers.Count > 0) { User targetManager = null; targetManager = targetManagers.FirstOrDefault(u => u.RoleId != 1) ?? targetManagers.FirstOrDefault(); if (targetManager != null) { var newFeaOrder = new FEAOrder() { Description = string.Format("Заявка на дозакуп, сформированная автоматически из заказа №{0}", order.Id), DateCreated = DateTime.Now, Status = (short)FEAOrderStatus.Gathering, Manager = targetManager, Project = order.Project, TargetWarehouse = order.Warehouse }; newFeaOrder.FEAOrderItems.AddRange(order.LeadOrderItems.Select(oi => new FEAOrderItem() { DateCreated = DateTime.Now, FEAOrder = newFeaOrder, Price = oi.Price, ProductId = oi.ProductId, Quantity = oi.Quantity * 2 })); newFeaOrder.FEAOrdersStatusChangements.Add(new FEAOrdersStatusChangement() { User = CurrentUser, FEAOrder = newFeaOrder, DateCreated = DateTime.Now, Status = (short)FEAOrderStatus.Gathering, Comments = string.Format("Автоматическое создание заявку на дозакуп из заказа №{0}", order.Id) }); order.LeadOrderChangements.Add(new LeadOrderChangement() { Author = CurrentUser, NewAssignedUserId = order.AssignedUserId, OldAssignedUserId = order.AssignedUserId, OldStatus = order.Status, NewStatus = order.Status, OldWarehouseId = order.AssignedWarehouseId, NewWarehouseId = order.AssignedWarehouseId, DateCreated = DateTime.Now, Comments = String.Format("Автоматическое создание заявки на дозакуп №{0} на пользователя {1}", newFeaOrder.Id, targetManager.GetFio()) }); DataContext.SubmitChanges(); ShowSuccess(string.Format("Заявка на дозакуп №{0} успешно сформирована", newFeaOrder.Id)); } } } return(Redirect(redirectUrl + "#history")); }
private void ProductAddQuantityPalletOrBoxSpace(AddProductWaerhouseViewModel addProduct, ref int palletSpace, ref int boxSpace, bool producTransportPackage, int shelfDepth, int boxesDepthSpace, int boxesFrontSpace, WarehouseProduct product, int productsPerBox, int boxesPerPallet) { product.ProductsAvailable += addProduct.AddQuantity; var productWarehouse = this.dbContext.Warehouses.FirstOrDefault(w => w.Id == addProduct.WarehouseId); bool isWholePallet = (addProduct.AddQuantity % (productsPerBox * boxesPerPallet)) == 0 ? true : false; //TODO number of pallets depending on order palletSpace = isWholePallet == true ? palletSpace - addProduct.SpaceTaken : palletSpace; productWarehouse.CurrentPalletsSpaceFree = palletSpace; boxSpace = //below check if product is not in pallet transport package, which menais it is in box: isWholePallet == false ? //below check if product box depth space > self depth: (boxesDepthSpace > shelfDepth) ? boxSpace - boxesDepthSpace * addProduct.SpaceTaken : boxSpace - boxesFrontSpace * addProduct.SpaceTaken : boxSpace; productWarehouse.CurrentBoxesFrontSpaceFree = boxSpace; }
private void UpdateProductDetail(StockTransfer transfer) { if (transfer.StockTransferDetails != null) { List <string> ids = transfer.StockTransferDetails.Select(x => x.ProductDetailId).ToList(); foreach (var id in ids) { ProductDetail productDetail = Repository.Db.Set <ProductDetail>().Find(id); var db = this.Repository.Db as BusinessDbContext; var sourceWarehouseProduct = db.WarehouseProducts.FirstOrDefault( x => x.ShopId == transfer.ShopId && x.ProductDetailId == id && x.WarehouseId == transfer.SourceWarehouseId); if (sourceWarehouseProduct == null) { sourceWarehouseProduct = new WarehouseProduct { ShopId = transfer.ShopId, WarehouseId = transfer.SourceWarehouseId, MinimumStockToNotify = productDetail.MinimumStockToNotify, ProductDetailId = productDetail.Id, }; this.AddCommonValues(transfer, sourceWarehouseProduct); db.WarehouseProducts.Add(sourceWarehouseProduct); Repository.Save(); } var decreasedByWh = db.StockTransferDetails.Include(x => x.StockTransfer) .Where(x => x.ShopId == transfer.ShopId && x.ProductDetailId == id && x.SourceWarehouseId == transfer.SourceWarehouseId && x.StockTransfer.TransferState == StockTransferState.Approved).Sum(y => (double?)y.Quantity) ?? 0; sourceWarehouseProduct.TransferredOut = decreasedByWh; sourceWarehouseProduct.OnHand = sourceWarehouseProduct.Purchased + sourceWarehouseProduct.TransferredIn + sourceWarehouseProduct.StartingInventory - sourceWarehouseProduct.Sold - sourceWarehouseProduct.TransferredOut; sourceWarehouseProduct.Modified = DateTime.Now; var destinationWarehouseProduct = db.WarehouseProducts.FirstOrDefault( x => x.ShopId == transfer.ShopId && x.ProductDetailId == id && x.WarehouseId == transfer.DestinationWarehouseId); if (destinationWarehouseProduct == null) { destinationWarehouseProduct = new WarehouseProduct { ShopId = transfer.ShopId, WarehouseId = transfer.DestinationWarehouseId, MinimumStockToNotify = productDetail.MinimumStockToNotify, ProductDetailId = productDetail.Id, }; this.AddCommonValues(transfer, destinationWarehouseProduct); db.WarehouseProducts.Add(destinationWarehouseProduct); Repository.Save(); } double increasedByWh = db.StockTransferDetails.Include(x => x.StockTransfer) .Where(x => x.ShopId == transfer.ShopId && x.StockTransfer.TransferState == StockTransferState.Approved && x.ProductDetailId == id && x.DestinationWarehouseId == transfer.DestinationWarehouseId) .Sum(x => (double?)x.Quantity) ?? 0; destinationWarehouseProduct.TransferredIn = increasedByWh; destinationWarehouseProduct.OnHand = destinationWarehouseProduct.Purchased + destinationWarehouseProduct.StartingInventory + destinationWarehouseProduct.TransferredIn - destinationWarehouseProduct.Sold - destinationWarehouseProduct.TransferredOut; destinationWarehouseProduct.Modified = DateTime.Now; Repository.Save(); } } }
public async Task <List <WarehouseProduct> > GetWarehouseProductFromStoresById(WarehouseProduct warehouseProduct) { string message = await client.GetStringAsync(uri + "/warehouseproducts/" + warehouseProduct.storeId + "/" + warehouseProduct.productId + "/" + warehouseProduct.quantity); List <WarehouseProduct> returnList = JsonSerializer.Deserialize <List <WarehouseProduct> >(message); return(returnList); }
protected EntityMapperBase() { var warehouse = new Warehouse { Id = 16473, Name = "Test Warehouse 16473", Description = "The test warehouse" }; var tagForWarehouse = new Tag { Id = 46437 }; var warehouseTag = new WarehouseTag { WarehouseId = warehouse.Id, Warehouse = warehouse, TagId = tagForWarehouse.Id, Tag = tagForWarehouse }; var branch = new Branch { Id = 27362, Name = "Test Branch 27362", Description = "The test branch" }; var tagForBranch = new Tag { Id = 57832 }; var branchTag = new BranchTag { BranchId = branch.Id, Branch = branch, TagId = tagForBranch.Id, Tag = tagForBranch }; var warehouseLocation = new Location { Id = 63672, Name = "Warehouse Location", Description = "Warehouse Street, Warehouse Land" }; var tagForWarehouseLocation = new Tag { Id = 53627 }; var warehouseLocationTag = new LocationTag { LocationId = warehouseLocation.Id, Location = warehouseLocation, TagId = tagForWarehouseLocation.Id, Tag = tagForWarehouseLocation }; var branchLocation = new Location { Id = 73726, Name = "Branch Location", Description = "Branch Street, Branch Land" }; var tagForBranchLocation = new Tag { Id = 53272 }; var branchLocationTag = new LocationTag { LocationId = branchLocation.Id, Location = branchLocation, TagId = tagForBranchLocation.Id, Tag = tagForBranchLocation }; var product = new Product { Id = 37638, Name = "Test Product", Description = "The test product" }; var tagForProduct = new Tag { Id = 58276 }; var productTag = new ProductTag { ProductId = product.Id, Product = product, TagId = tagForProduct.Id, Tag = tagForProduct }; var warehouseProduct = new WarehouseProduct { Id = 38376, WarehouseId = warehouse.Id, Warehouse = warehouse, ProductId = product.Id, Product = product }; var tagForWarehouseProduct = new Tag { Id = 63463 }; var warehouseProductTag = new WarehouseProductTag { WarehouseProductId = warehouseProduct.Id, WarehouseProduct = warehouseProduct, TagId = tagForWarehouseProduct.Id, Tag = tagForWarehouseProduct }; warehouse.BranchId = branch.Id; warehouse.Branch = branch; warehouse.LocationId = warehouseLocation.Id; warehouse.Location = warehouseLocation; warehouse.Tags.Add(warehouseTag); tagForWarehouse.Warehouses.Add(warehouseTag); tagForWarehouseLocation.Locations.Add(warehouseLocationTag); warehouseLocation.Tags.Add(warehouseLocationTag); branch.Location = branchLocation; branch.Warehouses.Add(warehouse); branch.Tags.Add(branchTag); tagForBranch.Branches.Add(branchTag); tagForBranchLocation.Locations.Add(branchLocationTag); branchLocation.Tags.Add(branchLocationTag); product.Tags.Add(productTag); tagForProduct.Products.Add(productTag); warehouse.Products.Add(warehouseProduct); product.Warehouses.Add(warehouseProduct); warehouseProduct.Tags.Add(warehouseProductTag); tagForWarehouseProduct.WarehouseProducts.Add(warehouseProductTag); _warehouse = warehouse; }