Ejemplo n.º 1
0
        /// <summary>
        /// 获取退货单详情
        /// </summary>
        /// <param name="rmaId">商城退货单编号</param>
        /// <returns>退货单详情</returns>
        /// <remarks>2013-8-28 陶辉 创建</remarks>
        /// <remarks>2013-09-10 朱家宏 实现</remarks>
        /// <remarks>2013-12-3 黄志勇 修改 处理hytRma抛异常</remarks>
        public Result <UpGradeRma> GetMallRma(string rmaId)
        {
            var rmaOrder = IDsReturnDao.Instance.SelectByRmaSysNo(int.Parse(rmaId));

            var rmaOrderItems = IDsReturnDao.Instance.SelectItems(rmaOrder.SysNo);

            //HYT订单数据
            var dsOrder = BLL.MallSeller.DsOrderBo.Instance.GetDsOrderByMallOrderId(rmaOrder.MallOrderId);

            var mallRmaItems = new List <UpGradeRmaItem>();
            var hytRma       = BLL.RMA.RmaBo.Instance.GetRMA(rmaOrder.RcReturnSysNo);

            if (hytRma != null && hytRma.RMAItems != null)
            {
                foreach (var item in hytRma.RMAItems)
                {
                    var myid        = BLL.MallSeller.DsOrderBo.Instance.GetDsOrderItemAssociationByOutStockItemNo(item.StockOutItemSysNo).Select(m => m.DsOrderItemSysNo).FirstOrDefault();
                    var mallRmaItem = rmaOrderItems.FirstOrDefault(o => o.SysNo == myid);
                    if (mallRmaItem == null)
                    {
                        mallRmaItem = new DsReturnItem();
                    }
                    mallRmaItems.Add(new UpGradeRmaItem
                    {
                        DiscountFee       = 0,
                        HytProductCode    = item.ProductSysNo.ToString(),
                        HytRmaAmount      = item.RefundProductAmount,
                        MallOrderItemId   = mallRmaItem.MallItemNo.ToString(),
                        MallProductAttrs  = mallRmaItem.MallProductAttribute,
                        MallProductName   = mallRmaItem.MallProductName,
                        MallProductCode   = mallRmaItem.MallProductId,
                        MallQuantity      = item.RmaQuantity,
                        HytProductName    = item.ProductName,
                        HytProductErpCode = BLL.Product.PdProductBo.Instance.GetProductErpCode(item.ProductSysNo)
                    });
                }
            }


            var mallRmaInfo = new UpGradeRma
            {
                ApplyTime       = rmaOrder.ApplicationTime,
                BuyerRmaMessage = rmaOrder.BuyerRemark,
                BuyerRmaReason  = rmaOrder.RmaRemark,
                MallBuyerName   = rmaOrder.BuyerNick,
                MallOrderId     = rmaOrder.MallOrderId,
                MallRefundFee   = rmaOrder.MallReturnAmount,
                HytRmaId        = rmaOrder.RcReturnSysNo,
                MallRmaMessage  = rmaOrder.RmaRemark,
                RmaItems        = mallRmaItems
            };

            var result = new Result <UpGradeRma>
            {
                Data   = mallRmaInfo,
                Status = true
            };

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// /// <summary>
        /// 获取分销商所有已申请退货订单
        /// </summary>
        /// <param name="param">查询参数</param>
        /// <returns>已申请退货列表</returns>
        /// <remarks>2013-8-28 陶辉 创建</remarks>
        /// <remarks>2013-09-10 余勇 实现</remarks>
        public Result <PagedList <UpGradeRma> > GetMallRmaList(MallRmaParameters param)
        {
            var filter = new ParaDsReturnFilter
            {
                PageIndex       = param.PageIndex <= 0 ? 1 : param.PageIndex,
                PageSize        = param.PageSize,
                MallProductName = param.ProductName,
                MallProductId   = param.ProductCode,
                MallOrderId     = param.OrderId,
                BuyerNick       = param.BuyerName,
                BeginDate       = param.StartDate,
                EndDate         = param.EndDate,
                DealerMallSysNo = param.DealerMallSysNo
            };

            var dsOrders = BLL.MallSeller.DsReturnBo.Instance.GetPagerList(filter);

            var list = new List <UpGradeRma>();

            foreach (var order in dsOrders.Rows)
            {
                var mallRmaInfo = new UpGradeRma
                {
                    MallOrderId     = order.MallOrderId,
                    ApplyTime       = order.ApplicationTime,
                    BuyerRmaMessage = order.BuyerRemark,
                    BuyerRmaReason  = order.RmaRemark,
                    HytRmaStatus    = Hyt.Util.EnumUtil.GetDescription(typeof(Hyt.Model.WorkflowStatus.RmaStatus.退换货状态), order.Status),
                    MallBuyerName   = order.BuyerNick,
                    MallRefundFee   = order.MallReturnAmount,
                    MallRmaId       = order.MallReturnId,
                    MallRmaMessage  = "",
                    MallType        = 1,
                    HytRmaId        = order.RcReturnSysNo
                };
                list.Add(mallRmaInfo);
            }

            var result = new Result <PagedList <UpGradeRma> >
            {
                Data = new PagedList <UpGradeRma>
                {
                    TotalItemCount   = dsOrders.TotalRows,
                    CurrentPageIndex = dsOrders.CurrentPage,
                    TData            = list
                },
                Status = true
            };

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据第三方订单号获取可退货的商品信息
        /// </summary>
        /// <param name="dsOrderSysNo">订单升舱编号</param>
        /// <returns>可退货商品信息</returns>
        /// <remarks>2013-9-12 陶辉 创建</remarks>
        /// <remarks>2013-9-12 朱家宏 实现</remarks>
        public Result <UpGradeRma> BuildMallRma(int dsOrderSysNo)
        {
            //HYT订单数据
            var dsOrder          = BLL.MallSeller.DsOrderBo.Instance.SelectBySysNo(dsOrderSysNo);
            var soOrder          = DataAccess.Order.ISoOrderDao.Instance.GetByTransactionSysNo(dsOrder.OrderTransactionSysNo);
            var orderSysNo       = soOrder.SysNo;
            var hytStockOutItems = new List <UpGradeRmaItem>(); //页面出库单显示列表
            var stockOutList     = BLL.Warehouse.WhWarehouseBo.Instance.GetWhStockOutListByOrderID(orderSysNo);

            //获取该订单的出库单列表(包含出库单明细)
            foreach (var stockOut in stockOutList)
            {
                if (BLL.RMA.RmaBo.Instance.CanReturn(stockOut))
                {
                    foreach (var item in stockOut.Items)
                    {
                        var ritem = new UpGradeRmaItem
                        {
                            DiscountFee       = 0,
                            HytProductCode    = item.ProductSysNo.ToString(),
                            HytProductErpCode = Hyt.BLL.Product.PdProductBo.Instance.GetProductErpCode(item.ProductSysNo),
                            HytProductName    = item.ProductName,
                            HytProductPrice   = Math.Round(item.RealSalesAmount / item.ProductQuantity, 2),                                 //计算单价
                            MallQuantity      = item.ProductQuantity - BLL.RMA.RmaBo.Instance.GetAllRmaQuantity(orderSysNo, item.SysNo, 0), //可退数量
                            ProductQuantity   = item.ProductQuantity,
                            StockOutItemSysNo = item.SysNo
                        };
                        ritem.HytRmaAmount = Math.Round(item.RealSalesAmount * ((decimal)ritem.MallQuantity / (decimal)item.ProductQuantity), 2);//根据可退数量计算可退金额
                        hytStockOutItems.Add(ritem);
                    }
                }
            }
            var rmaInfo = new UpGradeRma
            {
                MallOrderId   = dsOrder.MallOrderId,
                ApplyTime     = DateTime.Now,
                MallBuyerName = dsOrder.BuyerNick,
                RmaItems      = hytStockOutItems
            };
            var result = new Result <UpGradeRma>
            {
                Data   = rmaInfo,
                Status = true
            };

            return(result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 商城退货单导入商城
        /// </summary>
        /// <param name="mallRma">退货单实体</param>
        /// <returns>处理结果</returns>
        /// <remarks>2013-8-29 陶辉 创建</remarks>
        /// <remarks>2013-09-10 朱家宏 实现</remarks>
        /// <remarks>2013-10-21 黄志勇 修改退换货子表实退商品金额</remarks>
        public Result ImportMallRma(UpGradeRma mallRma)
        {
            //直接申请退换单,根据原订单匹配成功的商品明细进行退货
            var result = new Result();

            try
            {
                //升舱订单数据
                var dsOrder      = BLL.MallSeller.DsOrderBo.Instance.GetDsOrderByMallOrderId(mallRma.MallOrderId);
                var dsOrderItems = BLL.MallSeller.DsOrderBo.Instance.GetDsOrderItems(dsOrder.SysNo);


                //HYT订单主表数据
                var soOrder =
                    DataAccess.Order.ISoOrderDao.Instance.GetByTransactionSysNo(dsOrder.OrderTransactionSysNo);

                if (soOrder.Status != (int)Model.WorkflowStatus.OrderStatus.销售单状态.已完成)
                {
                    result.Message    = "未完成的订单不允许做此操作。";
                    result.Status     = false;
                    result.StatusCode = -1;
                    return(result);
                }

                //订单明细数据
                var soOrderItems = BLL.Order.SoOrderBo.Instance.GetOrderItemsByOrderId(soOrder.SysNo);

                if (soOrderItems == null)
                {
                    throw new ArgumentNullException();
                }

                //退换货明细
                var rcReturnItems = new List <RcReturnItem>();
                foreach (var item in mallRma.RmaItems)
                {
                    var         outitem     = Hyt.BLL.Warehouse.WhWarehouseBo.Instance.GetWhStockOutItem(item.StockOutItemSysNo);
                    SoOrderItem soOrderItem = null;
                    if (outitem != null)
                    {
                        soOrderItem = soOrderItems.FirstOrDefault(m => m.SysNo == outitem.OrderItemSysNo);
                    }
                    if (soOrderItem != null)
                    {
                        var rcReturnItem = new RcReturnItem
                        {
                            OriginPrice         = soOrderItem.OriginalPrice,
                            ProductName         = soOrderItem.ProductName,
                            ProductSysNo        = int.Parse(item.HytProductCode),
                            ReturnPriceType     = (int)Model.WorkflowStatus.RmaStatus.商品退款价格类型.自定义价格,
                            ReturnType          = (int)Model.WorkflowStatus.RmaStatus.商品退换货类型.新品,
                            RmaQuantity         = item.MallQuantity,
                            RmaReason           = "",
                            StockOutItemSysNo   = item.StockOutItemSysNo,
                            RefundProductAmount = Math.Round(outitem.RealSalesAmount * ((decimal)item.MallQuantity / (decimal)outitem.ProductQuantity), 2)
                        };
                        rcReturnItems.Add(rcReturnItem);
                    }
                }

                var refundProductAmount = rcReturnItems.Sum(o => o.RefundProductAmount); //退款金额合计

                var rcReturn = new CBRcReturn
                {
                    CreateBy            = soOrder.CustomerSysNo,
                    CreateDate          = DateTime.Now,
                    CustomerSysNo       = soOrder.CustomerSysNo,
                    HandleDepartment    = (int)Model.WorkflowStatus.RmaStatus.退换货处理部门.客服中心,
                    InvoiceSysNo        = soOrder.InvoiceSysNo,
                    LastUpdateBy        = soOrder.OrderCreatorSysNo,
                    LastUpdateDate      = DateTime.Now,
                    OrderSysNo          = soOrder.SysNo,
                    ReceiveAddressSysNo = soOrder.ReceiveAddressSysNo,
                    RMARemark           = "",
                    RmaType             = (int)Model.WorkflowStatus.RmaStatus.RMA类型.售后退货,
                    Source                = (int)Model.WorkflowStatus.RmaStatus.退换货申请单来源.分销商,
                    Status                = (int)Model.WorkflowStatus.RmaStatus.退换货状态.待审核,
                    WarehouseSysNo        = soOrder.DefaultWarehouseSysNo,
                    RMAItems              = rcReturnItems,
                    DeductedInvoiceAmount = 0,
                    InternalRemark        = mallRma.BuyerRmaReason,//退款说明
                    IsPickUpInvoice       = 0,
                    OrginAmount           = refundProductAmount,
                    OrginPoint            = (int)refundProductAmount,
                    RefundPoint           = (int)refundProductAmount,
                    PickUpAddressSysNo    = 0,
                    PickUpTime            = "",
                    PickupTypeSysNo       = 0,
                    RedeemAmount          = 0,
                    RefundAccount         = "",
                    RefundAccountName     = "",
                    RefundBank            = "",
                    RefundBy              = 0,
                    ShipTypeSysNo         = 0,
                    RefundDate            = DateTime.Now,
                    RefundProductAmount   = refundProductAmount,
                    RefundTotalAmount     = refundProductAmount,
                    RefundType            = (int)Hyt.Model.WorkflowStatus.RmaStatus.退换货退款方式.分销商预存
                };

                //当前操作用户
                var htyUserSysNo = IDsOrderDao.Instance.GetDealer(mallRma.DealerSysNo).UserSysNo;
                var syUser       = BLL.Sys.SyUserBo.Instance.GetSyUser(htyUserSysNo);
                var pickaddress  = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(soOrder.ReceiveAddressSysNo);//收货地址变成取件地址
                pickaddress.SysNo = 0;
                using (var tran = new TransactionScope())
                {
                    //创建rma单
                    var rmaSysNo = BLL.RMA.RmaBo.Instance.InsertRMA(rcReturn, pickaddress, null, syUser);
                    var htyRma   = BLL.RMA.RmaBo.Instance.GetRcReturnEntity(rmaSysNo);
                    //分销商退换货单
                    var dsReturn = new DsReturn
                    {
                        ApplicationTime        = mallRma.ApplyTime,
                        BuyerNick              = mallRma.MallBuyerName,
                        RmaRemark              = mallRma.BuyerRmaReason,
                        DealerMallSysNo        = mallRma.DealerMallSysNo,
                        MallOrderId            = mallRma.MallOrderId,
                        MallReturnAmount       = mallRma.MallRefundFee,
                        MallReturnId           = mallRma.MallRmaId,
                        BuyerRemark            = mallRma.MallRmaMessage,
                        RmaType                = (int)Model.WorkflowStatus.RmaStatus.RMA类型.售后退货,
                        RcReturnSysNo          = rmaSysNo,
                        ReturnTransactionSysNo = htyRma.TransactionSysNo
                    };



                    var dsReturnItems = new List <DsReturnItem>();
                    foreach (var rmaItem in mallRma.RmaItems)
                    {
                        var         myid        = BLL.MallSeller.DsOrderBo.Instance.GetDsOrderItemAssociationByOutStockItemNo(rmaItem.StockOutItemSysNo).Select(m => m.DsOrderItemSysNo).FirstOrDefault();
                        DsOrderItem dsOrderItem = dsOrderItems.FirstOrDefault(m => m.SysNo == myid);
                        if (dsOrderItem == null)
                        {
                            dsOrderItem = new DsOrderItem();
                        }
                        dsReturnItems.Add(new DsReturnItem
                        {
                            Amount = rmaItem.HytRmaAmount,
                            MallProductAttribute = dsOrderItem.MallProductAttribute,
                            MallProductId        = dsOrderItem.MallProductId,
                            MallProductName      = dsOrderItem.MallProductName,
                            Quantity             = rmaItem.MallQuantity
                        });
                    }

                    //创建『分销商退换货单』
                    BLL.MallSeller.DsReturnBo.Instance.Create(dsReturn, dsReturnItems);

                    if (!string.IsNullOrEmpty(mallRma.ImgPaths))
                    {
                        string[] paths = mallRma.ImgPaths.Split(',');
                        foreach (string str in paths)
                        {
                            BLL.RMA.RmaBo.Instance.InsertRMAImg(new RcReturnImage()
                            {
                                ImageUrl    = str,
                                ReturnSysNo = rmaSysNo
                            });
                        }
                    }

                    result.Message    = "操作成功。";
                    result.Status     = true;
                    result.StatusCode = rmaSysNo;

                    tran.Complete();
                }
            }
            catch
            {
                result.Message    = "操作失败。";
                result.Status     = false;
                result.StatusCode = -1;
            }

            return(result);
        }