public ActionResult Create(TransactionRowViewModel viewModel) { if (ModelState.IsValid) { using (var ctx = new SalesDbContext()) { var transact = new Transaction() { PayMethod = viewModel.Payment, Sales = viewModel.SalesList }; foreach (Sale s in viewModel.SalesList) { ProductLog.GenerateSaleLog(ctx, s.Product, s.QTY); s.Update(); } transact.Update(); ctx.Transactions.Add(transact); ctx.SaveChanges(); return(RedirectToAction("Read", new { id = transact.ID })); } } return(View(viewModel)); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Read(Guid?id) { if (id == null) { return(RedirectToAction("Index")); } using (var ctx = new SalesDbContext()) { var txn = ctx.Transactions.Include("Sales").Where(t => t.ID == id).FirstOrDefault(); if (txn != null) { var viewModel = new TransactionRowViewModel() { TransactionId = txn.ID, SalesList = txn.Sales.ToList() }; return(View(viewModel)); } } return(View(new TransactionRowViewModel() { TransactionId = Guid.Empty, SalesList = new List <Sale>() })); }
/// <summary> /// Create a transaction with items that are being negated from another transaction. /// </summary> /// <param name="sales">List of Sales to be negated</param> /// <returns></returns> public ActionResult Return(TransactionRowViewModel t) { using (var ctx = new SalesDbContext()) { for (int i = 0; i < t.SalesList.Count; i++) { if (t.SalesList.ElementAt(i).Void == false) { t.SalesList.RemoveAt(i--); } else { Guid g = t.SalesList.ElementAt(i).ID; Sale s = ctx.Sales.Where(m => m.ID == g).FirstOrDefault(); t.SalesList[i] = s; t.SalesList.ElementAt(i).QTY *= -1; t.SalesList.ElementAt(i).Void = true; } } } return(View(t)); }
public ActionResult Edit(TransactionRowViewModel viewModel) { if (ModelState.IsValid) { using (var ctx = new SalesDbContext()) { var oldTransaction = ctx.Transactions.Include("Sales").Where(t => t.ID == viewModel.TransactionId).FirstOrDefault(); if (oldTransaction != null) { foreach (var item in viewModel.SalesList) { var oldSale = oldTransaction.Sales.Where(x => x.ID == item.ID).FirstOrDefault(); //ADD NEW SALE if (oldSale == null) { oldSale = new Sale(); oldTransaction.Sales.Add(oldSale); oldTransaction.Update(); } //OVERWRITE SALE //CHECK IF SAME PRODUCT if (oldSale.ProductID == item.ProductID) { //LOG CHANGE IN PRODUCT COUNT oldSale.Product = ctx.Products.Where(y => y.ID == item.ProductID).FirstOrDefault(); Decimal qtyChanged = oldSale.QTY - item.QTY; oldSale.Product.QTY += qtyChanged; oldSale.Product.Update(); ProductLog.GenerateSaleLog(ctx, item.Product, qtyChanged); } else { oldSale.Product = ctx.Products.Where(y => y.ID == item.ProductID).FirstOrDefault(); //RETURN ALL OF OLD oldSale.Product.QTY += oldSale.QTY; oldSale.Product.Update(); ProductLog.GenerateSaleLog(ctx, item.Product, -oldSale.QTY); //FIX THIS!! //DETUCT ALL OF NEW item.Product = ctx.Products.Where(z => z.ID == item.ProductID).FirstOrDefault(); oldSale.Product = item.Product; oldSale.Product.QTY -= item.QTY; oldSale.Product.Update(); ProductLog.GenerateSaleLog(ctx, item.Product, item.QTY); //FIX THIS! } oldSale.GST = item.GST; oldSale.Price = item.Price; oldSale.ProductID = item.ProductID; oldSale.QTY = item.QTY; oldSale.Update(); } ctx.SaveChanges(); return(RedirectToAction("Read", new { id = viewModel.TransactionId })); } else { ModelState.AddModelError("Not Found", "ID was not found"); } } } return(View(viewModel)); }