public ActionResult SellPiece() { var form = new ItemInventory { ItemList = _context.Items.ToListItems(t => (t.ItemCode + " - " + t.ItemName), v => v.ItemId.ToString(CultureInfo.InvariantCulture), "Please Select...") }; return View(form); }
public ActionResult SellPiece(ItemInventory formItemInventory) { try { var itemInventory = _context.Inventories.SingleOrDefault(i => i.Carton.ItemId == formItemInventory.ItemId); if (itemInventory == null) { //TODO: Divide into cartons and pieces return RedirectToAction<InventoryController>(c => c.Index()) .WithWarning("No Inventory exists!"); } //TODO: Update var carton = _context.Cartons.SingleOrDefault(i => i.ItemId == formItemInventory.ItemId); if (carton == null) { //TODO: This shouldn't happen in business case return RedirectToAction<InventoryController>(c => c.Index()) .WithError("Database Error, Contact Administrator"); } var existingPieces = itemInventory.NumberOfPieces; var existingCartons = itemInventory.NumberOfCartons; var totalPieces = (existingCartons * carton.NumberOfPieces) + existingPieces; if (totalPieces < formItemInventory.NumberOfPieces) { return RedirectToAction<InventoryController>(c => c.Index()) .WithWarning("Sell Request is more than total inventory"); } int remainingNumberOfCartons; int floatPieces; DivideIntoLotSize(totalPieces - formItemInventory.NumberOfPieces, carton.NumberOfPieces, out remainingNumberOfCartons, out floatPieces); itemInventory.NumberOfCartons = remainingNumberOfCartons; itemInventory.NumberOfPieces = floatPieces; _context.SaveChanges(); return RedirectToAction<InventoryController>(c => c.Index()) .WithSuccess("Piece(s) Sold!"); } catch (Exception ex) { return RedirectToAction<InventoryController>(c => c.Index()) .WithError("Error Selling Piece(s)"); } }
public ActionResult AddPiece(ItemInventory formItemInventory) { try { var itemInventory = _context.Inventories.SingleOrDefault(i => i.Carton.ItemId == formItemInventory.ItemId); if (itemInventory == null) { //TODO: Divide into cartons and pieces var carton = _context.Cartons.SingleOrDefault(i => i.ItemId == formItemInventory.ItemId); if (carton == null) { //TODO: Need to think about a TPH Strategy; throw error for now return RedirectToAction<InventoryController>(c => c.Index()) .WithError("No carton defined for respective Item"); } int numberOfCartons; int floatPieces; DivideIntoLotSize(formItemInventory.NumberOfPieces, carton.NumberOfPieces, out numberOfCartons, out floatPieces); _context.Inventories.Add(new Inventory { CartonId = carton.CartonId, NumberOfCartons = numberOfCartons, NumberOfPieces = floatPieces }); } else { //TODO: Update var carton = _context.Cartons.SingleOrDefault(i => i.ItemId == formItemInventory.ItemId); if (carton == null) { //TODO: This shouldn't happen in business case return RedirectToAction<InventoryController>(c => c.Index()) .WithError("Database Error, Contact Administrator"); } var existingPieces = itemInventory.NumberOfPieces; var existingCartons = itemInventory.NumberOfCartons; int additionalNumberOfCartons; int floatPieces; DivideIntoLotSize(existingPieces + formItemInventory.NumberOfPieces, carton.NumberOfPieces, out additionalNumberOfCartons, out floatPieces); itemInventory.NumberOfCartons = existingCartons + additionalNumberOfCartons; itemInventory.NumberOfPieces = floatPieces; } _context.SaveChanges(); return RedirectToAction<InventoryController>(c => c.Index()) .WithSuccess("Piece(s) Added!"); } catch (Exception ex) { return RedirectToAction<InventoryController>(c => c.Index()) .WithError("Error Adding Piece(s)"); } }