public async Task <ActionResult> UpdateOrder(StorageWarehousingRequest request) { var customer = _customerDa.GetByQrCode(request.CustomerCode); if (customer == null) { return(Json(new JsonMessage() { Erros = true, Message = "Customer is not exits" }, JsonRequestBehavior.AllowGet)); } const StatusWarehouse status = StatusWarehouse.New | StatusWarehouse.Pending | StatusWarehouse.WattingConfirm; var order = _da.GetById(request.Code, customer.ID); if (!status.HasFlag((StatusWarehouse)order.Status)) { return(Json(new JsonMessage() { Erros = true, Message = "Đơn hàng đã được xác nhận" }, JsonRequestBehavior.AllowGet)); } //get remove item var removeitems = order.DN_RequestWare.Where(m => request.RequestWares.All(n => n.CateId != m.CateID) && m.IsDelete == false).ToList(); foreach (var dnRequestWare in removeitems) { dnRequestWare.IsDelete = true; } //update item var updateitems = order.DN_RequestWare.Where(m => request.RequestWares.Any(n => m.CateID == n.CateId && m.IsDelete == false)).ToList(); foreach (var dnRequestWare in updateitems) { var requestitem = request.RequestWares.FirstOrDefault(m => m.CateId == dnRequestWare.CateID); dnRequestWare.Quantity = requestitem.Quantity; dnRequestWare.DN_RequestWareDetail.Clear(); foreach (var detail in requestitem.Details) { dnRequestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail() { RequestWareId = Guid.NewGuid(), ProductId = detail.ProductId, Quantity = detail.Quantity, }); } } //get add item var additems = request.RequestWares.Where(m => !order.DN_RequestWare.Any(n => n.CateID == m.CateId && n.IsDelete == false)).ToList(); foreach (var item in additems) { var requestWare = new DN_RequestWare() { GID = Guid.NewGuid(), CateID = item.CateId, Quantity = item.Quantity, QuantityActive = item.Quantity, Price = item.Price, TotalPrice = item.TotalPrice, Today = request.ReceiveDate.DecimalToDate().Date.TotalSeconds(), IsDelete = false }; foreach (var detail in item.Details) { requestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail() { RequestWareId = Guid.NewGuid(), ProductId = detail.ProductId, Quantity = detail.Quantity, }); } order.DN_RequestWare.Add(requestWare); } _da.Save(); return(Json(new JsonMessage { Erros = false })); }
public ActionResult DoOrder(decimal quantityExpect) { var todayCode = DateTime.Today.AddDays(1).TotalSeconds(); var orderdetail = OrderDetailItems(todayCode, 3); var result = GetProducts2(todayCode); var model = new StorageWarehousing { Status = (int)StatusWarehouse.New, DateCreated = DateTime.Now.TotalSeconds(), IsDelete = false, DateRecive = todayCode, DN_RequestWare = new List <DN_RequestWare>(), AgencyId = AgencyId }; var category = _categoryDa.GetItemById(3); var requestWare = new DN_RequestWare() { GID = Guid.NewGuid(), CateID = 3, Quantity = quantityExpect, QuantityActive = quantityExpect, Price = category.Price, CostPrice = category.CostPrice, //TotalPrice = item.TotalPrice, Today = todayCode, IsDelete = false }; //if (result.Products != null) foreach (var detail in orderdetail) { requestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail() { RequestWareId = Guid.NewGuid(), ProductId = detail.ProductID ?? 0, Quantity = 1, Weight = detail.Weight }); } model.DN_RequestWare.Add(requestWare); //product chua ban var productWeight = orderdetail.GroupBy(m => m.ProductID).Select(m => new OrderDetailProductItem() { ProductId = m.Key ?? 0, Weight = m.Sum(n => n.Weight ?? 0) }); var productRecipe = GetProductRecipe(todayCode, 3); foreach (var orderDetailProductItem in productRecipe) { var orderproduct = productWeight.FirstOrDefault(m => m.ProductId == orderDetailProductItem.ProductId); if (orderproduct == null || orderproduct.Weight <= orderDetailProductItem.WeightRecipe * quantityExpect) { requestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail() { RequestWareId = Guid.NewGuid(), ProductId = orderDetailProductItem.ProductId, Quantity = 1, Weight = orderproduct == null ? orderDetailProductItem.WeightRecipe : orderDetailProductItem.WeightRecipe * quantityExpect - orderproduct.Weight }); } } // return Json(new { orderdetail, productRecipe }); _da.Add(model); _da.Save(); return(Json(model.ID)); }
public ActionResult Create(StorageWarehousingRequest request) { //get customerid //var customer = _customerDa.GetByQrCode(request.CustomerCode); //if (customer == null) //{ // return Json(new JsonMessage() { Erros = true, Message = "Customer is not exits" }, JsonRequestBehavior.AllowGet); //} //if (_da.CheckExistOrder(request.Code, customer.ID)) //{ // return Json(new JsonMessage() { Erros = true, Message = "Mã đơn hàng đã tồn tại" }, JsonRequestBehavior.AllowGet); //} var model = new StorageWarehousing { Code = request.Code, Status = (int)StatusWarehouse.New, // CustomerId = customer.ID, DateCreated = DateTime.Now.TotalSeconds(), IsDelete = false, DateRecive = request.ReceiveDate, DN_RequestWare = new List <DN_RequestWare>(), UrlConfirm = request.UrlConfirm, AgencyId = AgencyId }; foreach (var item in request.RequestWares) { //get priceunit and costprice var category = _categoryDa.GetItemById(item.CateId); if (category == null || category.CostPrice == null) { return(Json(new JsonMessage(true, "Sản phẩm chưa có giá nhập"))); } //get policyagency var policyDa = new PolicyAgencyDA(); var requestWareDA = new RequestWareDA(); // lay so luong da giao var quantityFinish = requestWareDA.GetQuantityFinish(AgencyId, item.CateId, request.ReceiveDate.DecimalToDate().Month); //so luong tinh hoa hong var quantityCaculate = quantityFinish + item.Quantity; decimal sale = 0; // tim chinh sach dai ly var policies = policyDa.GetAll(item.CateId).OrderBy(m => m.Quantity).ToList(); var policyActive = policies.Where(m => quantityCaculate <= m.Quantity) .OrderBy(m => m.Quantity).FirstOrDefault(); if (policyActive != null) { sale = item.Quantity * policyActive.Profit; } else if (policies.Count > 0) { sale = item.Quantity * policies[policies.Count - 1].Profit; } var requestWare = new DN_RequestWare() { GID = Guid.NewGuid(), CateID = item.CateId, Quantity = item.Quantity, QuantityActive = item.Quantity, Price = category.Price, CostPrice = category.CostPrice, Sale = sale, //TotalPrice = item.TotalPrice, Today = request.ReceiveDate.DecimalToDate().Date.TotalSeconds(), IsDelete = false }; if (item.Details != null) { foreach (var detail in item.Details) { requestWare.DN_RequestWareDetail.Add(new DN_RequestWareDetail() { RequestWareId = Guid.NewGuid(), ProductId = detail.ProductId, Quantity = detail.Quantity, }); } } model.DN_RequestWare.Add(requestWare); } _da.Add(model); _da.Save(); //add log _storageWareHouseLogDa.AddLog(new StorageWarehousingLog() { StorageWarehousingId = model.ID, // NewValue = JsonConvert.SerializeObject(model, new BinaryConverter()) }); return(Json(model.ID, JsonRequestBehavior.AllowGet)); }