/// <summary> /// 更新分销商升舱订单明细数据 /// </summary> /// <param name="entity">数据实体</param> /// <returns>影响行数</returns> /// <remarks>2013-09-06 余勇 创建</remarks> public override int UpdateOrderItem(DsOrderItem entity) { return(Context.Update("DsOrderItem", entity) .AutoMap(o => o.SysNo) .Where("SysNo", entity.SysNo) .Execute()); }
/// <summary> /// 插入升舱明细 /// </summary> /// <param name="item">商城明细</param> /// <remarks>2014-07-04 朱成果 创建</remarks> public void InsertDsOrderItemByHytItems(CBSoOrderItem item) { item.SysNo = Hyt.DataAccess.Order.ISoOrderItemDao.Instance.Insert(item); var dsorder = GetEntityByHytOrderID(item.OrderSysNo).FirstOrDefault(); if (dsorder != null) { DsOrderItem ditem = new DsOrderItem() { Quantity = item.Quantity, Price = item.SalesUnitPrice, OrderTransactionSysNo = item.TransactionSysNo, MallProductId = item.ErpCode, MallProductName = item.ProductName, DsOrderSysNo = dsorder.SysNo }; ditem.SysNo = Hyt.DataAccess.MallSeller.IDsOrderDao.Instance.InsertOrderItem(ditem); DsOrderItemAssociation dia = new DsOrderItemAssociation() { SoOrderItemSysNo = item.SysNo, OrderTransactionSysNo = item.TransactionSysNo, DsOrderItemSysNo = ditem.SysNo }; Hyt.DataAccess.MallSeller.IDsOrderDao.Instance.InsertAssociation(dia); } }
/// <summary> /// 插入分销商升舱订单明细数据 /// </summary> /// <param name="entity">数据实体</param> /// <returns>新增记录编号</returns> /// <remarks>2013-09-06 余勇 创建</remarks> public override int InsertOrderItem(DsOrderItem entity) { entity.SysNo = Context.Insert("DsOrderItem", entity) .AutoMap(o => o.SysNo) .ExecuteReturnLastId <int>("SysNo"); return(entity.SysNo); }
/// <summary> /// 分销商订单升舱 /// </summary> /// <param name="order">升舱订单</param> /// <param name="items">升舱订单明细</param> /// <param name="hytorderID">商城订单编号</param> /// <remarks>2013-09-09 朱成果 创建</remarks> public void SaveDsOrder(DsOrder order, List <CBDsOrderItem> items, int hytorderID) { //在事物里面检查 if (ExistsDsOrder(order.DealerMallSysNo, order.MallOrderId)) { throw new Exception("存在已经升舱的订单:" + order.MallOrderId); } order.UpgradeTime = DateTime.Now; order.Status = (int)Hyt.Model.WorkflowStatus.DistributionStatus.升舱订单状态.升舱中; order.OrderTransactionSysNo = items[0].CurrectDsOrderItemAssociations.OrderTransactionSysNo; order.SysNo = Hyt.DataAccess.MallSeller.IDsOrderDao.Instance.InsertOrder(order);//添加主表 foreach (CBDsOrderItem pp in items) { DsOrderItem p = pp.BaseInstance; p.DsOrderSysNo = order.SysNo; p.OrderTransactionSysNo = order.OrderTransactionSysNo; pp.CurrectDsOrderItemAssociations.DsOrderItemSysNo = Hyt.DataAccess.MallSeller.IDsOrderDao.Instance.InsertOrderItem(p); //添加子表 Hyt.DataAccess.MallSeller.IDsOrderDao.Instance.InsertAssociation(pp.CurrectDsOrderItemAssociations); //添加关联表 } }
/// <summary> /// 升舱订单明细关联 /// </summary> /// <param name="instance">父对象</param> /// <remarks>2013-09-09 朱成果 创建</remarks> public CBDsOrderItem(DsOrderItem instance) { _baseInstance = instance; }
/// <summary> /// 更新分销商升舱订单明细数据 /// </summary> /// <param name="entity">数据实体</param> /// <returns>影响行数</returns> /// <remarks>2013-09-06 余勇 创建</remarks> public abstract int UpdateOrderItem(DsOrderItem entity);
/// <summary> /// 插入分销商升舱订单明细数据 /// </summary> /// <param name="entity">数据实体</param> /// <returns>新增记录编号</returns> /// <remarks>2013-09-06 余勇 创建</remarks> public abstract int InsertOrderItem(DsOrderItem entity);
/// <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); }