public ActionResult Create(int id) { isAdminLogged(); ViewBag.Parent = "Quản lý giao hàng"; ViewBag.Child = "Lập đơn giao hàng"; // kt nếu đơn đặt hàng đã lập đơn giao rồi thì thông báo, điều hướng đến trang chi tiết giao hàng var order = _orderService.GetOrder(id); var firdOrder = order.DeliveryOrders.FirstOrDefault(); if (firdOrder != null) { return(RedirectToAction("Details", new { id = firdOrder.idDeliveryOrder })); } else { var contractList = order.Distributor.Contracts.ToList(); var nowContract = contractList.OrderByDescending(i => i.expiredDate).FirstOrDefault(); var commission = 0; if (nowContract.status == true) { commission = nowContract.commission.Value; } var model = new CreateDeliveryOrderViewModel { idOrder = order.idOrder, description = "Vừa lập đơn giao, nv giao nhanh chóng kiểm kê và đi giao", idDistributor = order.idDistributor, distributorName = order.Distributor.name, DeliveryType = order.DeliveryType, PaymentType = order.PaymentType, estimateDateOfDelivery = order.EstimateDateOfDelivery, recipient = order.Consignee.Name, recipientPhone = order.Consignee.PhoneNumber, totalPurchase = 0, deliveryDate = DateTime.Now, commission = commission }; // lấy km tốt nhất của order int nPromotion = 0; Promotion promotion = getPromotionOrder(order, out nPromotion); List <DetailedDeliveryOrder> listddOrder = new List <DetailedDeliveryOrder>(); foreach (var item in order.OrderDetails) { var ddOrder = new DetailedDeliveryOrder { idDeliveryOrder = model.idDeliveryOrder, idProduct = item.idProduct, quantity = item.quantity, Product = item.Product, promoQuantity = 0, //idDeliveryOrder =1 }; listddOrder.Add(ddOrder); model.totalPurchase += ddOrder.quantity * ddOrder.Product.Price; } // đưa sp km vào listddOrder if (promotion != null) { foreach (var item in promotion.PromotionGifts) { bool check = true; foreach (var item1 in listddOrder) { if (item.idProduct == item1.idProduct) { listddOrder.Remove(item1); item1.promoQuantity = item.quantity * nPromotion; item1.note = "SLKM " + item.quantity * nPromotion + " từ CTKM số " + item.idPromotion; listddOrder.Add(item1); check = false; break; } } if (check) { var ddOrder = new DetailedDeliveryOrder { idProduct = item.idProduct, quantity = 0, promoQuantity = item.quantity * nPromotion, Product = item.Product, note = "SLKM " + item.quantity * nPromotion + " từ CTKM số " + item.idPromotion //idDeliveryOrder =1 }; listddOrder.Add(ddOrder); } } } model.DetailedDeliveryOrder = listddOrder; // những thuộc tính cần chọn khi lập đơn giao hàng ViewBag.Storage = order.Distributor.Storages.ToList(); ViewBag.Staff = _staffService.GetAll().ToList(); // tính chiết khấu model.totalPurchase = model.totalPurchase * (1 - model.commission / 100); return(View(model)); } }
public ActionResult Create(CreateDeliveryOrderViewModel model) { isAdminLogged(); ViewBag.Parent = "Quản lý giao hàng"; ViewBag.Child = "Lập đơn giao hàng"; // những thuộc tính cần lựa chọn khi lập đơn giao hàng ViewBag.Storage = _disService.SearchByID(model.idDistributor.Value).Storages.ToList(); ViewBag.Staff = _staffService.GetAll().ToList(); DeliveryOrder dOrder = new DeliveryOrder(); dOrder.deliveryAdd = model.deliveryAdd; dOrder.description = model.description; dOrder.deliveryDate = model.deliveryDate; dOrder.idOrder = model.idOrder; dOrder.idDistributor = model.idDistributor; dOrder.idStaff = model.idStaff; dOrder.recipient = model.recipient; dOrder.recipientPhone = model.recipientPhone; dOrder.status = 5; dOrder.updateDate = DateTime.Now; dOrder.deliveryDate = DateTime.Now; dOrder.totalPurchase = model.totalPurchase; //dOrder.idDeliveryOrder = _deliveryOrderService.GenerateDOrderId(); // lits product lưu giữ sp để cập nhật số lượng sau khi lập giao hàng List <Product> ListProduct = new List <Product>(); // mặc định sl trong kho đủ giao bool checkStorage = true; foreach (var item in model.DetailedDeliveryOrder) { // add chi tiết giao vào đơn giao hàng //item.idDeliveryOrder = dOrder.idDeliveryOrder; dOrder.DetailedDeliveryOrders.Add(item); // kiểm tra lượng tồn kho var p = _productService.GetProduct(item.idProduct); int sl = p.Quantity.Value - item.quantity.Value - item.promoQuantity.Value; if (sl > 0) { p.Quantity = sl; ListProduct.Add(p); } else { ViewBag.msg = "Sản phẩm " + p.ProductName + " chỉ còn " + p.Quantity; ViewBag.types = 1; checkStorage = false; } } // nếu trong kho đủ sl if (checkStorage) { bool rs = true; rs = _deliveryOrderService.AddDeliveryOrder(dOrder); if (rs) { // cập nhật sl sp trong kho foreach (var item in ListProduct) { _productService.UpdateProduct(item); } // lập thành công chuyển qua trang chi tiết return(RedirectToAction("Details", new { id = dOrder.idDeliveryOrder })); } ViewBag.msg = "Lập thất bại"; ViewBag.types = 1; } // lập thất bại, chèn Product và chi tiết(ngoài view cần lấy name, price) model.DetailedDeliveryOrder.Clear(); foreach (var item in dOrder.DetailedDeliveryOrders) { item.Product = _productService.GetProduct(item.idProduct); model.DetailedDeliveryOrder.Add(item); } return(View(model)); }