Example #1
0
        /// <summary>
        /// 根据主退货订单Id获取主退货订单实体及其所有子退货订单的实体
        /// </summary>
        /// <param name="pRid">主退货订单Id</param>
        /// <returns>返回HttpRespXml_ReturnOrderCreate对象实体,若失败则返回Null</returns>
        static public HttpReqXmlBase GetReqXmlBody_ReturnOrderCreate(string pRid)
        {
            var ret = new ThirdResult <List <object> >(string.Format("根据主退货订单[{0}]获取主退货订单实体及其所有子退货订单的实体, 开始", pRid));

            HttpReqXmlBase retObj = null;
            HttpReqXml_ReturnOrderCreate tmpRespObj = null;
            List <HttpReqXml_ReturnOrderCreate_Orders> orderLinesList = null;
            CWmsReturnOrder order = null;

            try
            {
                #region 从商城里获取主退货订单及其所有子单据
                order = GetCWmsReturnOrder(pRid);
                #endregion
                #region 根据商城的退货订单创建HttpRespXml_ReturnOrderCreate实体
                if (null != order)
                {
                    orderLinesList = new List <HttpReqXml_ReturnOrderCreate_Orders>(1);
                    foreach (var so in order.SubOrders)
                    {
                        HttpReqXml_ReturnOrderCreate_Orders orderLine = new HttpReqXml_ReturnOrderCreate_Orders();
                        orderLine.CopyFrom(so.Value as CWmsSubReturnOrder);
                        ret.Append(string.Format("itemcode={0}", (so.Value.MangoOrder as MangoSubReturnOrder).ProductId.ToString()));
                        orderLine.itemCode = (so.Value.MangoOrder as MangoSubReturnOrder).ProductId.ToString();
                        orderLinesList.Add(orderLine);
                    }

                    tmpRespObj = new HttpReqXml_ReturnOrderCreate();
                    tmpRespObj.returnOrder.CopyFrom(order);
                    tmpRespObj.orders = orderLinesList.ToArray();
                    retObj            = tmpRespObj;
                    ret.Append(string.Format("根据商城的退货订单创建HttpRespXml实体: {0}, 子单据数量: {1}", retObj, (retObj as HttpReqXml_ReturnOrderCreate).orders.Length));
                }
                else
                {
                    ret.Append(string.Format("从商城里获取主退货订单及其所有子单据失败,order={0}", order));
                }
                #endregion
            }
            catch (Exception ex)
            {
                if (null != ex.InnerException)
                {
                    ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message));
                }
                ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace));
            }
            ret.End();
            return(retObj);
        }
Example #2
0
        /// <summary>
        /// 根据主退货订单ID获取主退货订单及其所有子订单的实例
        /// </summary>
        /// <param name="pOrderId">芒果商城主退货订单ID</param>
        /// <returns>CWmsReturnOrder实体,若失败则返回null</returns>
        static public CWmsReturnOrder GetCWmsReturnOrder(string pOrderId)
        {
            var                        ret        = new ThirdResult <List <object> >(string.Format("根据主退货订单{0}获取主退货订单及其所有子订单的实例, 开始", pOrderId));
            string                     errMsg     = string.Empty;
            CWmsReturnOrder            retObj     = null;
            MangoReturnOrder           mangoOrder = null;
            List <MangoSubReturnOrder> tmpList    = new List <MangoSubReturnOrder>(1);; // 缓存子退货订单实体列表

            #region validate parameters
            if (string.IsNullOrEmpty(pOrderId))
            {
                ret.Append(string.Format("根据主退货订单{0}获取主退货订单及其所有子订单的实例失败, 非法入参", pOrderId));
                ret.End();
                return(retObj);
            }
            #endregion
            try
            {
                #region Handle MangoOrder
                #region  获取主退货订单 MangoReturnOrder
                if (null == (mangoOrder = MangoFactory.GetMangoOrder(TCWmsOrderCategory.EReturnOrder, pOrderId) as MangoReturnOrder))
                {
                    ret.Append(string.Format("根据主退货订单{0}获取主退货订单及其所有子订单的实例失败, 获取主退货订单失败", pOrderId));
                    ret.End();
                    return(retObj);
                }
                #endregion
                #region 获取子退货订单列表 List<MangoSubReturnOrder>
                errMsg = MangoFactory.GetVSubReturnOrders(pOrderId, out tmpList);
                ret.Append(string.Format("tmplist.count={0}", tmpList.Count));
                ret.Append(string.Format("errMsg={0}", errMsg));

                if (!string.IsNullOrEmpty(errMsg) || null == tmpList || 0 >= tmpList.Count)
                {
                    ret.Append(string.Format("1根据主退货订单{0}获取主退货订单及其所有子订单的实例失败, 获取子退货订单失败, message={1}", pOrderId, errMsg));
                    ret.End();
                    return(retObj);
                }
                #endregion
                #endregion // Handle MangoOrder
                #region 创建CWmsReturnOrder实例及其子出库订单实例列表
                retObj = new CWmsReturnOrder();
                (retObj.MangoOrder as MangoReturnOrder).CopyFrom(mangoOrder);
                foreach (var t in tmpList)
                {
                    CWmsSubReturnOrder tmpSo = new CWmsSubReturnOrder();
                    tmpSo.CopyFrom(t, null);
                    // TODO: 根据子退货订单Id找原子订单Id, 移到Mis的Factory里面!!
                    var wcfSo = WCF <Product_Warehouse_ProductOutput> .Query((tmpSo.MangoOrder as MangoSubReturnOrder).ProductIOputId.Int()).Data;

                    // 根据原子订单Id取仓库Id, 根据仓库Id取货主
                    tmpSo.WmsOrderDetail.Owner.CopyFrom(MangoFactory.GetOwner(wcfSo.WarehouseId.ToString()));

                    // 设置商品Id
                    tmpSo.Product.ItemCode = (string.IsNullOrEmpty(t.ProductGuiGeID.ToString()) || "0".Equals(t.ProductGuiGeID.ToString())) ?
                                             t.ProductId.ToString() : string.Format("{0}-{1}", t.ProductId, t.ProductGuiGeID);
                    retObj.SubOrders.Add(t.ZiTuihuoID.ToString(), tmpSo);// new CWmsSubReturnOrder(t, null));
                }
                #region Handle WMS order
                switch ((T芒果商城退货物流)(retObj.MangoOrder as MangoReturnOrder).THwuLiu)
                {
                case T芒果商城退货物流.自行返还:
                {
                    (retObj.WmsOrder as Wms.Data.WmsReturnOrder).SetOrderFlag(false, true, false);
                    break;
                }

                case T芒果商城退货物流.蓝江上门:
                {
                    (retObj.WmsOrder as Wms.Data.WmsReturnOrder).SetOrderFlag(true, false, false);
                    break;
                }

                default:
                {
                    (retObj.WmsOrder as Wms.Data.WmsReturnOrder).SetOrderFlag(false, false, false);
                    break;
                }
                }
                #region TuiHuoType
                switch ((retObj.MangoOrder as MangoReturnOrder).TuiHuoType)
                {
                case 2:
                    (retObj.MangoOrder as MangoReturnOrder).TuiHuoType = TWmsReturnOrderType.HHRK.Int();
                    break;

                case 3:
                    (retObj.MangoOrder as MangoReturnOrder).TuiHuoType = TWmsReturnOrderType.HHRK.Int();
                    break;

                case 6:
                    (retObj.MangoOrder as MangoReturnOrder).TuiHuoType = TWmsReturnOrderType.HHRK.Int();
                    break;

                default:
                {
                    (retObj.MangoOrder as MangoReturnOrder).TuiHuoType = TWmsReturnOrderType.HHRK.Int();
                    break;
                }
                }
                #endregion
                #endregion // Handle WMS order
                #endregion // 创建CWmsReturnOrder实例及其子出库订单实例列表
            }
            catch (Exception ex)
            {
                if (null != ex.InnerException)
                {
                    ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message));
                }
                ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace));
            }
            ret.Append(string.Format("根据主退货订单{0}获取主退货订单及其所有子订单的实例失败, 获取子退货订单失败, message={1}", pOrderId, errMsg));
            ret.End();
            return(retObj);
        }
Example #3
0
 /// <summary>
 /// default constructor
 /// </summary>
 public HttpReqXml_ReturnOrderCreate(CWmsReturnOrder pOrder)
 {
     throw new NotImplementedException();
 }