/// <summary> /// 逻辑删除 /// </summary> public OPResult DeleteOrder(OrderSearchEntity entity) { var lp = VMGlobal.DistributionQuery.LinqOP; var order = lp.GetById <BillOrder>(entity.BillID); if (order == null) { return new OPResult { IsSucceed = false, Message = "未找到相应单据." } } ; if (order.IsDeleted) { return new OPResult { IsSucceed = false, Message = "订单已作废." } } ; BillOrderChange change = new BillOrderChange { BillID = order.ID, CreateTime = DateTime.Now, CreatorID = VMGlobal.CurrentUser.ID, Description = "作废订单" }; order.IsDeleted = true; OPResult result = null; using (TransactionScope scope = new TransactionScope()) { try { lp.Update <BillOrder>(order); lp.Add <BillOrderChange>(change); result = new OPResult { IsSucceed = true, Message = "作废成功!" }; scope.Complete(); } catch (Exception ex) { result = new OPResult { IsSucceed = false, Message = "作废失败,失败原因:\n" + ex.Message }; } } if (result.IsSucceed) { entity.Changes.Insert(0, change); var users = GetIMUsers(order.OrganizationID); IMHelper.AsyncSendMessageTo(users, new IMessage { Message = string.Format("订单{0}被作废.", order.Code) }, IMReceiveAccessEnum.订单变动); } return(result); }
/// <summary> /// 取消剩余订单 /// </summary> public OPResult CancelLeftOrderQuantity(OrderSearchEntity order) { var lp = VMGlobal.DistributionQuery.LinqOP; var orders = lp.Search <BillOrderDetails>(o => o.BillID == order.BillID && o.QuaCancel != o.Quantity - o.QuaDelivered).ToList(); if (orders.Count == 0) { return(new OPResult { IsSucceed = false, Message = "没有可取消的量." }); } int quaCancel = 0; orders.ForEach(o => { quaCancel += o.Quantity - o.QuaDelivered - o.QuaCancel; o.QuaCancel = o.Quantity - o.QuaDelivered; }); BillOrderChange change = new BillOrderChange { BillID = order.BillID, CreateTime = DateTime.Now, CreatorID = VMGlobal.CurrentUser.ID, Description = string.Format("取消剩余订单量,取消量{0}件.", quaCancel) }; OPResult result = null; using (TransactionScope scope = new TransactionScope()) { try { lp.Update <BillOrderDetails>(orders); lp.Add <BillOrderChange>(change); result = new OPResult { IsSucceed = true, Message = "取消成功!" }; scope.Complete(); } catch (Exception ex) { result = new OPResult { IsSucceed = false, Message = "取消失败,失败原因:\n" + ex.Message }; } } if (result.IsSucceed) { foreach (var d in order.Details) { d.QuaCancel = d.Quantity - d.QuaDelivered; } order.Changes.Insert(0, change); var users = GetIMUsers(order.OrganizationID); IMHelper.AsyncSendMessageTo(users, new IMessage { Message = string.Format("订单{0}剩余量被取消,取消量{1}件.", order.BillCode, quaCancel) }, IMReceiveAccessEnum.订单变动); } return(result); }
public OPResult UpdateDetailsCancelQuantity(int did, int quaNew, string skuCode, OrderSearchEntity order) { var lp = VMGlobal.DistributionQuery.LinqOP; var details = lp.GetById <BillOrderDetails>(did); if (quaNew == details.QuaCancel) { return(new OPResult { IsSucceed = true }); } string des = string.Format("SKU[{2}]取消量从{0}件改动为{1}件", details.QuaCancel, quaNew, skuCode); details.QuaCancel = quaNew; BillOrderChange change = new BillOrderChange { BillID = details.BillID, CreateTime = DateTime.Now, CreatorID = VMGlobal.CurrentUser.ID, Description = des }; OPResult result = null; using (TransactionScope scope = new TransactionScope()) { try { lp.Update <BillOrderDetails>(details); lp.Add <BillOrderChange>(change); result = new OPResult { IsSucceed = true, Message = "改动成功!" }; scope.Complete(); } catch (Exception ex) { result = new OPResult { IsSucceed = false, Message = "改动失败,失败原因:\n" + ex.Message }; } } if (result.IsSucceed) { order.Changes.Insert(0, change); var users = GetIMUsers(order.OrganizationID); IMHelper.AsyncSendMessageTo(users, new IMessage { Message = string.Format("订单{0}" + des, order.BillCode) }, IMReceiveAccessEnum.订单变动); } return(result); }