Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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);
        }