/// <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); }
/// <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); }
/// <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); }
/// <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); }