public Guid CreateChildOrder(Guid parentOrderId, Guid customerId, bool createNew) { string code = string.Empty; if (createNew) { code = GenerateCode.GetChildOrderCode(parentOrderId); } else { code = UnitOfWork.OrderRepository.GetById(parentOrderId).Code; Order parent = UnitOfWork.OrderRepository.GetById(parentOrderId); parent.IsLatest = false; } Order order = new Order() { ParentId = parentOrderId, Code = code, CustomerId = customerId, IsActive = true, IsDeleted = false, IsLatest = true }; UnitOfWork.OrderRepository.Insert(order); return(order.Id); }
public ActionResult ShowTransferData(string orderId, string productId) { Guid orderIdGuid = new Guid(orderId); Guid productIdGuid = new Guid(productId); Order order = UnitOfWork.OrderRepository.GetById(orderIdGuid); Product product = UnitOfWork.ProductRepository.GetById(productIdGuid); string orderCode = string.Empty; List <InputDetail> inputDetails = UnitOfWork.InputDetailsRepository .Get(c => c.OrderId == order.Id).ToList(); if (inputDetails.Count() == 1) { orderCode = order.Code; } else { orderCode = GenerateCode.GetChildOrderCode(order.Id); } TransferDetailViewModel transfer = new TransferDetailViewModel() { RemainQuantity = GetRemainProduct(productIdGuid, orderIdGuid, order.CustomerId).RemainQuantity, RemainWight = GetRemainProduct(productIdGuid, orderIdGuid, order.CustomerId).RemainWeight, OrderCode = orderCode, ProductTitle = product.Title, CustomerFullName = order.Customer.FullName, ParentOrderId = orderId, ProductId = productId }; return(Json(transfer, JsonRequestBehavior.AllowGet)); }
public ActionResult Details(CutOrderViewModel cutOrderViewModel) { try { if (ModelState.IsValid) { cutOrderViewModel.InputDetail = UnitOfWork.InputDetailsRepository.GetById(cutOrderViewModel.InputDetail.Id); Order inputDetailOrder = UnitOfWork.OrderRepository.Get(current => current.Id == cutOrderViewModel.InputDetail.OrderId).FirstOrDefault(); cutOrderViewModel.InputDetail.Order = inputDetailOrder; ProductRemainsViewModel remain = GetRemainProduct(cutOrderViewModel.InputDetail.ProductId, cutOrderViewModel.InputDetail.OrderId.Value, cutOrderViewModel.InputDetail.Order.CustomerId); string cutId = string.Empty; if (cutOrderViewModel.CutOrderId != null) { cutId = cutOrderViewModel.CutOrderId.ToString(); Guid cutGuid = new Guid(cutId); cutOrderViewModel.CutOrderDetails = UnitOfWork.CutOrderDetailRepository.Include(current => current.CutOrder.InputDetail.Product.ProductGroup).Where(current => current.CutOrderId == cutGuid).ToList(); } if (remain.RemainWeight < cutOrderViewModel.Weight) { ModelState.AddModelError("Weight", "وزن وارد شده بیش از وزن باقی مانده می باشد"); } else if (remain.RemainQuantity < cutOrderViewModel.Quantity) { ModelState.AddModelError("Weight", "تعداد برگ وارد شده بیش از تعداد باقی مانده می باشد"); } else if (remain.RemainWeight == 0) { ModelState.AddModelError("Weight", "کالا موجود نمی باشد"); } else if (remain.RemainWeight == cutOrderViewModel.Weight) { if (cutOrderViewModel.CutOrderId == null) { CutOrder cut = new CutOrder() { CreationDate = DateTime.Now, InputDetailId = cutOrderViewModel.InputDetail.Id, IsActive = true, IsDeleted = false }; UnitOfWork.CutOrderRepository.Insert(cut); UnitOfWork.Save(); cutId = cut.Id.ToString(); } Guid cutGuid = new Guid(cutId); cutOrderViewModel.CutOrderId = cutGuid; CutOrderDetail cutOrderDetail = new CutOrderDetail() { Weight = cutOrderViewModel.Weight, Length = cutOrderViewModel.Length, Quantity = Convert.ToInt32(cutOrderViewModel.Quantity), CutOrderId = cutGuid, CustomActionId = cutOrderViewModel.CustomActionId, CreationDate = DateTime.Now, IsActive = true, IsDeleted = false }; UnitOfWork.CutOrderDetailRepository.Insert(cutOrderDetail); UnitOfWork.Save(); cutOrderViewModel.CutOrderDetails = UnitOfWork.CutOrderDetailRepository.Include(current => current.CutOrder.InputDetail.Product.ProductGroup).Where(current => current.CutOrderId == cutOrderViewModel.CutOrderId).ToList(); InputDetail inputDetailUpdate = UnitOfWork.InputDetailsRepository.GetById(cutOrderViewModel.InputDetail.Id); inputDetailUpdate.RemainDestinationWeight = 0; inputDetailUpdate.RemainQuantity = 0; UnitOfWork.InputDetailsRepository.Update(inputDetailUpdate); UnitOfWork.Save(); cutOrderViewModel.RemainWeight = inputDetailUpdate.RemainDestinationWeight; } else { if (cutOrderViewModel.CutOrderId != null) { Order order = new Order() { Customer = cutOrderViewModel.InputDetail.Order.Customer, Parent = cutOrderViewModel.InputDetail.Order, Code = GenerateCode.GetChildOrderCode(cutOrderViewModel.InputDetail.OrderId.Value), IsActive = true, IsDeleted = false, IsLatest = true }; UnitOfWork.OrderRepository.Insert(order); UnitOfWork.Save(); CutOrderDetail cutOrderDetail = new CutOrderDetail() { Weight = cutOrderViewModel.Weight, Length = cutOrderViewModel.Length, Quantity = Convert.ToInt32(cutOrderViewModel.Quantity), CutOrderId = cutOrderViewModel.CutOrderId.Value, CustomActionId = cutOrderViewModel.CustomActionId, CreationDate = DateTime.Now, IsActive = true, IsDeleted = false }; UnitOfWork.CutOrderDetailRepository.Insert(cutOrderDetail); UnitOfWork.Save(); } else { Order order = new Order() { Customer = cutOrderViewModel.InputDetail.Order.Customer, Parent = cutOrderViewModel.InputDetail.Order, Code = GenerateCode.GetChildOrderCode(cutOrderViewModel.InputDetail.OrderId.Value), IsActive = true, IsDeleted = false, IsLatest = true }; UnitOfWork.OrderRepository.Insert(order); UnitOfWork.Save(); CutOrder cut = new CutOrder() { CreationDate = DateTime.Now, InputDetailId = cutOrderViewModel.InputDetail.Id, IsActive = true, IsDeleted = false }; UnitOfWork.CutOrderRepository.Insert(cut); UnitOfWork.Save(); cutOrderViewModel.CutOrderId = cut.Id; CutOrderDetail cutOrderDetail = new CutOrderDetail() { Weight = cutOrderViewModel.Weight, Length = cutOrderViewModel.Length, Quantity = Convert.ToInt32(cutOrderViewModel.Quantity), CutOrderId = cut.Id, CustomActionId = cutOrderViewModel.CustomActionId, CreationDate = DateTime.Now, IsActive = true, IsDeleted = false }; UnitOfWork.CutOrderDetailRepository.Insert(cutOrderDetail); UnitOfWork.Save(); } cutOrderViewModel.CutOrderDetails = UnitOfWork.CutOrderDetailRepository.Include(current => current.CutOrder.InputDetail.Product.ProductGroup).Where(current => current.CutOrderId == cutOrderViewModel.CutOrderId).ToList(); decimal unit = remain.RemainWeight / remain.RemainQuantity; InputDetail inputDetailUpdate = UnitOfWork.InputDetailsRepository.GetById(cutOrderViewModel.InputDetail.Id); inputDetailUpdate.RemainDestinationWeight = remain.RemainWeight - cutOrderViewModel.Weight; inputDetailUpdate.RemainQuantity = remain.RemainQuantity - (cutOrderViewModel.Weight / unit); UnitOfWork.InputDetailsRepository.Update(inputDetailUpdate); UnitOfWork.Save(); cutOrderViewModel.RemainWeight = inputDetailUpdate.RemainDestinationWeight; } } ViewBag.CustomActionId = new SelectList(UnitOfWork.ProductGroupCustomActionRepository.Get(x => x.ProductGroupId == cutOrderViewModel.InputDetail.Product.ProductGroupId).Select(x => x.CustomAction), "Id", "Title"); ViewBag.CustomerName = cutOrderViewModel.InputDetail.Order.Customer.FullName; return(View(cutOrderViewModel)); } catch (Exception exp) { return(Json(exp.Message, JsonRequestBehavior.AllowGet)); } }