public async Task<ActionResult> Sales_Update([DataSourceRequest] DataSourceRequest request, SalesViewModel salesViewModel) { if (salesViewModel != null && ModelState.IsValid) { SalesTransaction data = db.SalesTransactions.Find(salesViewModel.ID); data.LastName = salesViewModel.LastName; data.FirstName = salesViewModel.FirstName; data.MobileNumber = salesViewModel.MobileNumber; data.Pin = salesViewModel.Pin; data.OrderNumber = salesViewModel.OrderNumber; data.PortinNumber = salesViewModel.PortinNumber; data.PlanId = salesViewModel.PlanId; data.UserId = salesViewModel.UserId; data.DealerId = salesViewModel.DealerId; if (data.InventoryId != salesViewModel.InventoryId) { if (data.InventoryId.HasValue) { Inventory oldInventory = await db.Inventories.FindAsync(data.InventoryId); if (oldInventory != null) { oldInventory.Status = InventoryOperationType.In; oldInventory.StockOutById = null; oldInventory.StockOutDate = null; db.Entry(oldInventory).State = EntityState.Modified; //add change record to history InvetoryChangeHistory changeHistory = new InvetoryChangeHistory(); changeHistory.IMEI = oldInventory.IMEI; changeHistory.ChangeDate = DateTime.Now; changeHistory.OldOperationType = InventoryOperationType.Out; changeHistory.NewOperationType = InventoryOperationType.In; changeHistory.OperatedByEmployeeID = salesViewModel.UserId; changeHistory.Sales = null; db.InvetoryChangeHistories.Add(changeHistory); } } if (salesViewModel.InventoryId.HasValue) { int id = salesViewModel.InventoryId.Value; Inventory inventory = await db.Inventories.FindAsync(id); if (inventory != null) { InventoryOperationType oldType = inventory.Status; inventory.Status = InventoryOperationType.Out; inventory.StockOutById = data.UserId; inventory.StockOutDate = DateTime.Now; salesViewModel.IMEI = inventory.IMEI; //add change record to history InvetoryChangeHistory changeHistory = new InvetoryChangeHistory(); changeHistory.IMEI = inventory.IMEI; changeHistory.ChangeDate = inventory.StockOutDate.Value; changeHistory.OldOperationType = oldType; changeHistory.NewOperationType = InventoryOperationType.Out; changeHistory.OperatedByEmployeeID = inventory.StockOutById; changeHistory.Sales = data; db.InvetoryChangeHistories.Add(changeHistory); } } } data.InventoryId = salesViewModel.InventoryId; data.CreateDateTime = salesViewModel.CreateDateTime; data.RefferA = salesViewModel.RefferA; data.RefferB = salesViewModel.RefferB; data.Audit = salesViewModel.Audit; data.Note = salesViewModel.Note; data.ProductId = salesViewModel.ProductId; if (!User.IsInRole("Admin")) { data.IsChanged = true; salesViewModel.IsChanged = true; } db.Entry(data).State = EntityState.Modified; await db.SaveChangesAsync(); } return Json(new[] { salesViewModel }.ToDataSourceResult(request, ModelState)); }
public async Task<ActionResult> Sales_Create([DataSourceRequest] DataSourceRequest request, SalesViewModel salesViewModel) { if (salesViewModel != null && ModelState.IsValid) { salesViewModel.UserId = User.Identity.GetUserId(); if(HelperMethods.GetDealerId().HasValue) salesViewModel.DealerId = HelperMethods.GetDealerId().GetValueOrDefault(); else { return HttpNotFound("No Current Dealer Found"); } salesViewModel.CreateDateTime = DateTime.Now; SalesTransaction data = new SalesTransaction { LastName = salesViewModel.LastName, FirstName = salesViewModel.FirstName, MobileNumber = salesViewModel.MobileNumber, Pin = salesViewModel.Pin, OrderNumber = salesViewModel.OrderNumber, PortinNumber = salesViewModel.PortinNumber, PlanId = salesViewModel.PlanId, UserId = salesViewModel.UserId, DealerId = salesViewModel.DealerId, InventoryId = salesViewModel.InventoryId, CreateDateTime = salesViewModel.CreateDateTime, RefferA = salesViewModel.RefferA, RefferB = salesViewModel.RefferB, Audit = salesViewModel.Audit, Note = salesViewModel.Note, ProductId = salesViewModel.ProductId }; db.SalesTransactions.Add(data); if (data.InventoryId.HasValue) { int id = data.InventoryId.Value; Inventory inventory = await db.Inventories.FindAsync(id); if (inventory != null) { InventoryOperationType oldType = inventory.Status; inventory.Status = InventoryOperationType.Out; inventory.StockOutById = data.UserId; inventory.StockOutDate = DateTime.Now; salesViewModel.IMEI = inventory.IMEI; //add change record to history InvetoryChangeHistory changeHistory = new InvetoryChangeHistory(); changeHistory.IMEI = inventory.IMEI; changeHistory.ChangeDate = inventory.StockOutDate.Value; changeHistory.OldOperationType = oldType; changeHistory.NewOperationType = InventoryOperationType.Out; changeHistory.OperatedByEmployeeID = inventory.StockOutById; changeHistory.Sales = data; db.InvetoryChangeHistories.Add(changeHistory); } } await db.SaveChangesAsync(); salesViewModel.ID = data.ID; //return RedirectToAction("StockOut", "Inventory", salesViewModel.InventoryId); } //salesTransaction.LinkedPlan = db.Plans.FirstOrDefault(p => p.PlanId == salesTransaction.PlanId); //await db.SaveChangesAsync(); return Json(new[] { salesViewModel }.ToDataSourceResult(request, ModelState)); }