public object Post(OrderModel model) { if (model == null || model.OrderDetailModels.Any() == false) { return Failed("合同不能为空"); } if (model.OrderDetailModels.Any(n => n.Qty == 0)) { return Failed("合同的每个料号都需要数量"); } if (model.OrderDate == DateTime.MinValue) { return Failed("合同不能没有日期"); } if (model.PayPeriodModel == null) { return Failed("请选择账期"); } var payPeriod = _payPeriodService.GetPayPeriod(model.PayPeriodModel.Id); if (payPeriod == null) { return Failed("请选择账期"); } var currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var currentPosition = _employeesService.GetEmployee(HttpContext.Current.User.Identity.GetUser().EmployeeId) .EmployeePostions.Where( n => n.StartDate <= currentDate && (n.EndDate == null || n.EndDate >= currentDate) && n.IsDeleted == false) .Select(n => n.Position) .FirstOrDefault(); if (currentPosition == null) { return Failed("没有权限"); } if (model.OrderDetailModels.Select(n => n.EnquiryModel.CustomerModel.Id).Distinct().Count() != 1) { return Failed("一次合同只限一个客户"); } var orderdetails = new List<OrderDetail>(); foreach (var item in model.OrderDetailModels) { var enquiry = _enquiryService.GetEnquiry(item.EnquiryModel.Id); if (item.UnitPrice == null) { return Failed("请填写单价"); } if (item.Qty == null) { return Failed("请填写数量"); } if (enquiry == null || enquiry.IsDeleted || enquiry.PositionId != currentPosition.Id) { return Failed("禁止提交"); } if (enquiry.Price == null || item.UnitPrice < enquiry.Price || (Math.Abs(item.UnitPrice.Value) > Math.Abs(enquiry.Price.Value) * (decimal)1.05)) { return Failed("单价超出范围"); } orderdetails.Add(new OrderDetail { Id = Guid.NewGuid(), Qty = item.Qty.Value, EnquiryId = enquiry.Id, TotalPrice = (decimal)(item.Qty * item.UnitPrice.Value), UnitPrice = item.UnitPrice.Value }); } var parentRole = _auditLevelService.GetAuditLevels() .Where(n => n.RoleId == currentPosition.Role.Id) .Select(n => n.ParentRole).FirstOrDefault(); var customer = _customerService.GetCustomer(model.CustomerModel.Id); if (parentRole == null) { return Failed("找不到上级审核人"); } if (customer == null) { return Failed("找不到客户"); } try { var item = new Order { Id = Guid.NewGuid(), Remark = model.Remark, OrderDate = model.OrderDate, PayPeriodId = model.PayPeriodModel.Id, EstimatedDeliveryDate = model.EstimatedDeliveryDate, LastPayDate = model.OrderDate.AddDays(payPeriod.Days), OrderReviews = new Collection<OrderReview> { new OrderReview { Id = Guid.NewGuid(), SendToRoleId = parentRole.Id } }, ContractAmount = orderdetails.Sum(p => p.TotalPrice), OrderDetails = orderdetails, PositionId = currentPosition.Id, CustomerId = customer.Id }; _orderService.Insert(item); return Success(); } catch (Exception ex) { return Failed(ex.Message); } }
public object Put(Guid id, OrderModel model) { var item = _orderService.GetOrder(id); if (item == null) { return Failed("找不到合同"); } if (model.OrderDetailModels == null || model.OrderDetailModels.Any() == false) { return Failed("合同没有具体料号"); } if (model.OrderDate == DateTime.MinValue) { return Failed("不能没有合同日期"); } if (model.PayPeriodModel == null) { return Failed("请选择账期"); } if (model.OrderDetailModels.Select(n => n.EnquiryModel.CustomerModel.Id).Distinct().Count() != 1) { return Failed("一次合同只限一个客户"); } if (model.OrderDetailModels.Any(n => n.Qty == null || n.UnitPrice == null)) { return Failed("数量金额不得为空"); } var payPeriod = _payPeriodService.GetPayPeriod(model.PayPeriodModel.Id); if (payPeriod == null) { return Failed("请选择账期"); } var currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var currentPosition = _employeesService.GetEmployee(HttpContext.Current.User.Identity.GetUser().EmployeeId) .EmployeePostions.Where( n => n.StartDate <= currentDate && (n.EndDate == null || n.EndDate >= currentDate) && n.IsDeleted == false) .Select(n => n.Position) .FirstOrDefault(); if (currentPosition == null || currentPosition.Id != item.PositionId) { return Failed("没有权限"); } var parentRole = _auditLevelService.GetAuditLevels() .Where(n => n.RoleId == currentPosition.Role.Id) .Select(n => n.ParentRole).FirstOrDefault(); if (parentRole == null) { return Failed("找不到上级审核人"); } //更新Detail foreach (var detail in item.OrderDetails) { var detailmodel = model.OrderDetailModels.FirstOrDefault(n => n.Id == detail.Id); if (detailmodel != null) { if (detail.Enquiry.Price == null || detailmodel.UnitPrice < detail.Enquiry.Price || (Math.Abs(Convert.ToDecimal(detailmodel.UnitPrice)) > Math.Abs(detail.Enquiry.Price.Value) * (decimal)1.05)) { return Failed("单价超出范围"); } if (detailmodel.Qty != null) { detail.Qty = detailmodel.Qty.Value; } if (detailmodel.UnitPrice != null) { detail.Qty = detailmodel.UnitPrice.Value; } } else { detail.IsDeleted = true; } } //新增Detail foreach (var detailmodel in model.OrderDetailModels) { var detail = item.OrderDetails.FirstOrDefault(n => n.Id == detailmodel.Id); if (detail == null) { item.OrderDetails.Add(new OrderDetail { EnquiryId = detailmodel.EnquiryModel.Id, Id = Guid.NewGuid(), Qty = Convert.ToDecimal(detailmodel.Qty), UnitPrice = Convert.ToDecimal(detailmodel.UnitPrice), TotalPrice = Convert.ToDecimal(detailmodel.Qty * detailmodel.UnitPrice) }); } } item.Remark = model.Remark; var sum = model.OrderDetailModels.Sum(n => n.Qty * n.UnitPrice); if (sum != null) { item.ContractAmount = sum.Value; } item.OrderDate = model.OrderDate; item.EstimatedDeliveryDate = model.EstimatedDeliveryDate; item.PayPeriodId = model.PayPeriodModel.Id; item.LastPayDate = model.OrderDate.AddDays(payPeriod.Days); item.OrderReviews.Add(new OrderReview { Id = Guid.NewGuid(), SendToRoleId = parentRole.Id }); try { _orderService.Update(); return Success(); } catch (Exception ex) { return Failed(ex.Message); } }