Example #1
0
        public ActionResult RefundApply(long id, long?itemId)
        {
            decimal?      nullable1;
            IOrderService orderService = ServiceHelper.Create <IOrderService>();
            OrderInfo     order        = orderService.GetOrder(id, base.CurrentUser.Id);

            if (order == null)
            {
                throw new HimallException("该订单已删除或不属于该用户");
            }
            if (order.OrderStatus < OrderInfo.OrderOperateStatus.WaitDelivery)
            {
                throw new HimallException("错误的售后申请,订单状态有误");
            }
            if (!itemId.HasValue && order.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery)
            {
                throw new HimallException("错误的订单退款申请,订单状态有误");
            }
            orderService.CalculateOrderItemRefund(id, false);
            OrderItemInfo orderItemInfo = new OrderItemInfo();

            ViewBag.MaxRGDNumber    = 0;
            ViewBag.MaxRefundAmount = order.OrderEnabledRefundAmount;
            if (itemId.HasValue)
            {
                orderItemInfo = order.OrderItemInfo.Where((OrderItemInfo a) => {
                    long num      = a.Id;
                    long?nullable = itemId;
                    if (num != nullable.GetValueOrDefault())
                    {
                        return(false);
                    }
                    return(nullable.HasValue);
                }).FirstOrDefault();
                ViewBag.MaxRGDNumber = orderItemInfo.Quantity - orderItemInfo.ReturnQuantity;
                dynamic viewBag             = base.ViewBag;
                decimal?enabledRefundAmount = orderItemInfo.EnabledRefundAmount;
                decimal refundPrice         = orderItemInfo.RefundPrice;
                if (enabledRefundAmount.HasValue)
                {
                    nullable1 = new decimal?(enabledRefundAmount.GetValueOrDefault() - refundPrice);
                }
                else
                {
                    nullable1 = null;
                }
                //viewBag.MaxRefundAmount = nullable1;
            }
            else
            {
                orderItemInfo = order.OrderItemInfo.FirstOrDefault();
            }
            bool           flag          = false;
            IRefundService refundService = ServiceHelper.Create <IRefundService>();

            flag = (order.OrderStatus != OrderInfo.OrderOperateStatus.WaitDelivery ? refundService.CanApplyRefund(id, orderItemInfo.Id, new bool?(false)) : refundService.CanApplyRefund(id, orderItemInfo.Id, null));
            if (!flag)
            {
                throw new HimallException("您己申请过售后,不可重复申请");
            }
            ViewBag.UserName    = base.CurrentUser.RealName;
            ViewBag.Phone       = base.CurrentUser.CellPhone;
            ViewBag.OrderInfo   = order;
            ViewBag.OrderItemId = itemId;
            ViewBag.RefundWay   = "";
            List <SelectListItem> selectListItems = new List <SelectListItem>();
            SelectListItem        selectListItem  = new SelectListItem()
            {
                Text  = OrderRefundInfo.OrderRefundPayType.BackCapital.ToDescription(),
                Value = 3.ToString()
            };

            selectListItems.Add(selectListItem);
            List <SelectListItem> selectListItems1 = selectListItems;

            if (!string.IsNullOrWhiteSpace(order.PaymentTypeGateway) && order.PaymentTypeGateway.ToLower().Contains("weixin"))
            {
                SelectListItem selectListItem1 = new SelectListItem()
                {
                    Text  = OrderRefundInfo.OrderRefundPayType.BackOut.ToDescription(),
                    Value = 1.ToString()
                };
                selectListItems1.Add(selectListItem1);
            }
            ViewBag.RefundWay = selectListItems1;
            return(View(orderItemInfo));
        }
Example #2
0
 /// <summary>
 /// 是否可以申请退款
 /// </summary>
 /// <param name="orderId"></param>
 /// <param name="orderItemId"></param>
 /// <param name="isAllOrderRefund">是否为整笔退 null 所有 true 整笔退 false 货品售后</param>
 /// <returns></returns>
 public static bool CanApplyRefund(long orderId, long orderItemId, bool?isAllOrderRefund = null)
 {
     return(_iRefundService.CanApplyRefund(orderId, orderItemId, isAllOrderRefund));
 }