Ejemplo n.º 1
0
        /// <summary>
        /// 根据主订单Id获取芒果商城的订单实体及其子订单明细的实体
        /// </summary>
        /// <param name="pOid">主订单Id</param>
        /// <returns>若成功则返回CWmsMallOrder实体;否则返回null</returns>
        static public CWmsMallOrder GetCWmsMallOrder(string pOid)
        {
            try
            {
                string        errMsg = string.Empty;
                CWmsMallOrder outObj = null;

                // get mango order, TODO: 传入了错误的TCWmsOrderCategory类型? 固定传入了出库单类型
                MangoMallOrder mangoOrder = MangoFactory.GetMangoOrder(TCWmsOrderCategory.EExwarehouseOrder, pOid) as MangoMallOrder;

                if (null == mangoOrder)
                {
                    C_WMS.Data.Utility.MyLog.Instance.Warning("在{0}中,根据单据ID[{0}]获取商城主订单实体及其子订单明细失败", System.Reflection.MethodBase.GetCurrentMethod().Name, pOid);
                    return(outObj);
                }

                // 创建CWmsExWarehouseOrder实例及其子出库订单实例列表
                outObj = new CWmsMallOrder();
                (outObj.MangoOrder as MangoMallOrder).CopyFrom(mangoOrder);

                outObj.Owner.CopyFrom(new Wms.Data.WmsOwner(Mango.MisModelPWI.CWmsMisSystemParamCache.Cache.GetDefaultOwner().Code, Mango.MisModelPWI.CWmsMisSystemParamCache.Cache.GetDefaultOwner().Name));   // 对于商城下的订单,货主一定是蓝江智家
                outObj.CancelReason = (outObj.MangoOrder as MangoMallOrder).BeiZhu;
                outObj.WmsOrder.SetWmsStockoutOrderType((TMangoOrderType)(outObj.MangoOrder as MangoMallOrder).DingDanType.Int());
                // TODO: 目前阶段不需要处理子订单
                return(outObj);
            }
            catch (Exception ex)
            {
                C_WMS.Data.Utility.MyLog.Instance.Error(ex, "在{0}中,根据单据ID[{0}]获取商城主订单实体及其子订单明细发生异常", System.Reflection.MethodBase.GetCurrentMethod().Name, pOid);
                return(null);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// return the sub-delivery order of pOrder, or null if failed.
 /// </summary>
 /// <param name="pOrder">object of sub-stockout order.</param>
 /// <returns></returns>
 public IMangoOrderBase GetSubDeliveryOrder(MangoSubStockoutOrder pOrder)
 {
     if (null == pOrder)
     {
         C_WMS.Data.Utility.MyLog.Instance.Warning("MangoSubStockoutOrderHandler.GetSubDeliveryOrder(), invalid null param.");
         return(null);
     }
     try
     {
         string errMsg = string.Empty;
         MangoSubDeliveryOrder        retOrder = null;
         List <MangoSubDeliveryOrder> sdList   = null;
         int err = MangoFactory.GetV_Order(NewFilter_GetDeliveryOrder(pOrder), out sdList, out errMsg);
         if (1 == err)
         {
             retOrder = sdList[0];
         }
         else
         {
             C_WMS.Data.Utility.MyLog.Instance.Warning("MangoSubStockoutOrderHandler.GetSubDeliveryOrder({0}), failed in retrieving sub-delivery order. err={1}, errMsg={2}", pOrder, err, errMsg);
         }
         if (null != sdList)
         {
             sdList.Clear();
         }
         return(retOrder);
     }
     catch (Exception ex)
     {
         C_WMS.Data.Utility.MyLog.Instance.Warning(ex, "Exception in MangoSubStockoutOrderHandler.GetSubDeliveryOrder({0})", pOrder);
         return(null);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 更新单据pMangoOrder在Dict709中对应的行的isUpdateOk和isDel. 当pAddOnNotFound为true时,如果Dict709中没有对应的行则插入新行;当pAddOnNotFound为false时,如果Dict709中没有对应的行则操作失败.
        /// 该方法返回WCF的执行结果或TError值
        /// </summary>
        /// <param name="pOrder">待更新的Mis实体对应的单据对象</param>
        /// <param name="pIsUpdateOk">Dict709.IsUpdateOK字段</param>
        /// <param name="pIsDel">Dict709.IsDel字段</param>
        /// <param name="pAddOnNotFound">当pAddOnNotFound为true时,如果Dict709中没有对应的行则插入新行;当pAddOnNotFound为false时,如果Dict709中没有对应的行则操作失败.</param>
        /// <returns></returns>
        virtual public int UpdateDict709(CWmsOrderBase <TOrderType, TMangoType, TWmsType, TSubOrderType, THandlerType> pOrder, TDict285_Values pIsUpdateOk, TDict285_Values pIsDel, bool pAddOnNotFound)
        {
            if (null != AreArray)
            {
                Array.Clear(AreArray, 0, AreArray.Length);
            }
            AreArray = pOrder.SubOrders.Select(x => new AutoResetEvent(false)).ToArray();

            var args = new object[]
            {
                0,                                                                                   // 0st
                pAddOnNotFound,                                                                      // 1st
                new DefDlgt_RunWCF <Product_WMS_Interface>(DlgtFunc_RunWCF <Product_WMS_Interface>), // 2nd
                MangoFactory.GetV_PwiList(pOrder.MapClassId, pOrder.Id, pOrder.SubOrders.Keys),      // 3rd
                pOrder.Id,                                                                           // 4th
                pIsUpdateOk,                                                                         // 5th
                pIsDel                                                                               // 6th
            };

            var dlgt = args[2] as DefDlgt_RunWCF <Product_WMS_Interface>;//  (DlgtFunc_RunWCF<Product_WMS_Interface>);

            dlgt.BeginInvoke((pAddOnNotFound) ? TWCFOperation.EUpdateA : TWCFOperation.EUpdate, args, Acb_RunWCF, args);
            WaitHandle.WaitAll(AreArray);
            return(-1);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取与pOrder关联的商城主订单Id
        /// </summary>
        public IMangoOrderBase GetMallOrder(MangoSubStockoutOrder pOrder)
        {
            if (null == pOrder)
            {
                C_WMS.Data.Utility.MyLog.Instance.Warning("MangoSubStockoutOrderHandler.GetMallOrder(), invalid null param.");
                return(null);
            }

            try
            {
                var subOrder = GetSubMallOrder(pOrder);
                if (null == subOrder as MangoSubMallOrder)
                {
                    C_WMS.Data.Utility.MyLog.Instance.Warning("MangoSubStockoutOrderHandler.GetMallOrder({0}), COULDNOT retrieve sub-delivery order.", pOrder);
                    return(null);
                }
                else
                {
                    var misEntity = MangoFactory.NewOrder <Product_User_DingDan>((subOrder as MangoSubMallOrder).DingDanID.ToString());
                    return((null == misEntity) ? null : new MangoMallOrder(misEntity));
                }
            }
            catch (Exception ex)
            {
                C_WMS.Data.Utility.MyLog.Instance.Warning(ex, "Exception in MangoSubStockoutOrderHandler.GetMallOrder({0})", pOrder);
                return(null);
            }
        }
Ejemplo n.º 5
0
        static public int GetV_Order <TOrderType, TMangoOrderType, THandler>(List <CommonFilterModel> pFilters, out IEnumerable <TOrderType> pOutList, out string pErrMsg) where TOrderType : class, new()
        {
            int err = TError.WCF_RunError.Int();
            List <TMangoOrderType> orderList = null;

            try
            {
                if (0 >= (err = MangoFactory.GetV_Order(pFilters, out orderList, out pErrMsg)) || null == orderList)
                {
                    pOutList = null;
                    pErrMsg  = string.Format("CWmsDataFactory.GetV_Order<{0}, {1}, {2}>列表失败, err={3}, orderList={4}, errMsg={5}", typeof(TOrderType), typeof(TMangoOrderType), typeof(THandler), err, orderList, pErrMsg);
                    C_WMS.Data.Utility.MyLog.Instance.Warning(pErrMsg);
                    return(err);
                }
                else
                {
                    MethodInfo methodInfo = typeof(THandler).GetMethod("NewOrder", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);
                    pOutList = orderList.Select(order => methodInfo.Invoke(null, new object[] { (order as IMangoOrderBase)?.GetId() }) as TOrderType);
                    err      = Enumerable.Count(pOutList);
                    pErrMsg  = (0 < err) ? string.Empty : string.Format("");
                    return(err);
                }
            }
            catch (Exception ex)
            {
                if (null != orderList)
                {
                    orderList.Clear();
                }
                pOutList = null;
                pErrMsg  = string.Format("CWmsDataFactory.GetV_Order<{0}, {1}, {2}>发生异常,FilterDebug={3}", typeof(TOrderType), typeof(TMangoOrderType), typeof(THandler), Utility.CWmsDataUtility.GetDebugInfo_MisFilter(pFilters));
                Data.Utility.MyLog.Instance.Error(ex, pErrMsg);
                return(TError.Post_NoChange.Int());
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Constructo by envaluate warehouse id
        /// </summary>
        /// <param name="wid"></param>
        public MangoWarehouse(string wid)
        {
            var tmp = MangoFactory.GetWarehouse(wid);

            if (null != tmp)
            {
                WarehouseId   = tmp.WarehouseId;
                WarehouseName = tmp.WarehouseName;
                CompanyTypeId = tmp.CompanyTypeId;
            }
            else
            {
                C_WMS.Data.Utility.MyLog.Instance.Warning("MangoWarehouse._ctor({0}), failed in retrieving entity of Product_Warehouse", wid);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 根据过滤器获取商品,并返回成功获取的商品数量。若操作失败则返回TError.WCFRunnError
        /// static public int GetProductList(List[CommonFilterModel], ref List[CWmsProduct], out string pMsg)
        /// </summary>
        /// <param name="pList">返回成功获取的商品List,若操作失败则返回Count为0的列表实体</param>
        /// <param name="pFilters">过滤条件</param>
        /// <param name="pMsg">返回错我描述</param>
        /// <returns>返回成功获取的商品数量。若操作失败则返回TError.WCFRunnError</returns>
        static public int GetV_Product(List <CommonFilterModel> pFilters, ref List <CWmsProduct> pList, out string pMsg)
        {
            int err = TError.WCF_RunError.Int();

            try
            {
                if (null == pList)
                {
                    pList = new List <CWmsProduct>(10);
                }
                else
                {
                    pList.Clear();
                }
                List <MangoProduct> mangoList = null;
                if (null != (mangoList = MangoFactory.GetV_Product(pFilters, out pMsg)) && 0 < mangoList.Count)
                {
                    pList.AddRange(mangoList.Select(x => new CWmsProduct(x)).ToList());
                    err = pList.Count;
                }
                else
                {
                    err  = TError.Pro_HaveNoData.Int();
                    pMsg = string.Format("CWmsDataFactory.GetV_Product(), 查询返回空(mangoList={0})或商品数量为0, err={1}, \r\nFilterDebug={2}", mangoList, err, Utility.CWmsDataUtility.GetDebugInfo_MisFilter(pFilters));
                    C_WMS.Data.Utility.MyLog.Instance.Warning(pMsg);
                }
            }
            catch (Exception ex)
            {
                if (null != pList)
                {
                    pList.Clear();
                }
                pMsg = ex.Message;
                err  = TError.WCF_RunError.Int();
                Data.Utility.MyLog.Instance.Warning(ex, "在{0}中发生异常", System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
            return(err);
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 根据主出库订单ID获取主出库订单及其所有子订单的实例
        /// </summary>
        /// <param name="pOrderId">芒果商城主出库订单ID</param>
        /// <returns>CWmsExWarehouseOrder</returns>
        static public CWmsExWarehouseOrder GetCWmsStockoutOrder(string pOrderId)
        {
            var ret = new ThirdResult <List <object> >(string.Format("根据主出库订单[{0}]获取主出库订单及其所有子订单的实例,开始", pOrderId));

            try
            {
                string errMsg = string.Empty;
                CWmsExWarehouseOrder            outObj  = null;
                List <MangoSubExwarehouseOrder> tmpList = null;

                // get mango order
                MangoExwarehouseOrder mangoOrder = MangoFactory.GetMangoOrder(TCWmsOrderCategory.EExwarehouseOrder, pOrderId) as MangoExwarehouseOrder;
                // create CWmsEntryOrder if successful
                if (null == mangoOrder)
                {
                    ret.Append(string.Format("根据主出库订单[{0}]获取主出库订单及其所有子订单的实例结束, 获取主出库订单失败", pOrderId));
                    ret.End();
                    return(outObj);
                }

                // 获取子出库订单列表
                errMsg = MangoFactory.GetMangoExwarehouseSubOrderList(pOrderId, out tmpList);
                if (!string.IsNullOrEmpty(errMsg) || null == tmpList || 0 >= tmpList.Count)
                {
                    ret.Append(string.Format("根据主出库订单[{0}]获取主出库订单及其所有子订单的实例结束, 获取主出库订单失败。errMsg: {1}", pOrderId, errMsg));
                    ret.End();
                    return(outObj);
                }

                // 创建CWmsExWarehouseOrder实例及其子出库订单实例列表
                outObj = new CWmsExWarehouseOrder();
                (outObj.MangoOrder as MangoExwarehouseOrder).CopyFrom(mangoOrder);

                foreach (var t in tmpList)
                {
                    CWmsExWarehouseSubOrder subOrder = new CWmsExWarehouseSubOrder();
                    (subOrder.MangoOrder as MangoSubExwarehouseOrder).CopyFrom(t);
                    subOrder.Product.MangoProduct.ProductId = t.ProductId;
                    (subOrder.WmsOrderDetail).Owner.CopyFrom(MangoFactory.GetOwner((subOrder.MangoOrder as MangoSubExwarehouseOrder).WarehouseId.ToString())); // 获取货主
                                                                                                                                                               // 设置商品Id
                    subOrder.Product.ItemCode = (string.IsNullOrEmpty(t.ProductGuiGeID.ToString()) || "0".Equals(t.ProductGuiGeID.ToString())) ?
                                                t.ProductId.ToString() : string.Format("{0}-{1}", t.ProductId, t.ProductGuiGeID);

                    outObj.SubOrders.Add((subOrder.MangoOrder as MangoSubExwarehouseOrder).ProductOutputId.ToString(), subOrder);
                }

                ret.Append(string.Format("根据主出库订单[{0}]获取主出库订单及其所有子订单的实例结束, 返回{1}", pOrderId, outObj));
                ret.End();
                return(outObj);
            }
            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(null);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 获取所有符合条件的主出库订单,若执行成功则返回获取的行数,否则返回TError.WCF_RunError和Count=0的主出库订单列表
        /// </summary>
        /// <param name="pFilters"></param>
        /// <param name="pOutList">返回所有符合条件的主出库订单</param>
        /// <param name="pErrMsg"></param>
        /// <returns></returns>
        static public int GetVStockoutOrders(List <CommonFilterModel> pFilters, out List <CWmsExWarehouseOrder> pOutList, out string pErrMsg)
        {
            int    err    = TError.WCF_RunError.Int();
            string errMsg = string.Empty;

            pOutList = new List <CWmsExWarehouseOrder>(1);
            List <MangoExwarehouseOrder> orderList = null;

            try
            {
                if (0 >= (err = MangoFactory.GetVMangoStockoutOrders(pFilters, out orderList, out pErrMsg)) || null == orderList)
                {
                    pErrMsg = string.Format("根据过滤器获取满足条件的全部出库订单失败, err={0}, orderList={2}, errMsg={1}", err, pErrMsg, orderList);
                    Data.Utility.MyLog.Instance.Error(pErrMsg);
                    return(err);
                }
                else
                {
                    foreach (MangoExwarehouseOrder smo in orderList)
                    {
                        #region 获取子出库单
                        List <MangoSubExwarehouseOrder> subList = null;
                        errMsg = MangoFactory.GetMangoExwarehouseSubOrderList(smo.ProductOutputMainId.ToString(), out subList);
                        if (null == subList || 0 == subList.Count)
                        {
                            C_WMS.Data.Utility.MyLog.Instance.Error("在{0}中,获取主出库单({1})的子出库单失败, err={2}, errMsg={3}", System.Reflection.MethodBase.GetCurrentMethod().Name, smo?.ProductOutputMainId, err, errMsg);
                            continue;
                        }
                        #endregion
                        #region 处理子出库单
                        CWmsExWarehouseOrder ceo = new CWmsExWarehouseOrder();
                        foreach (var mso in subList)
                        {
                            if (null == mso)
                            {
                                C_WMS.Data.Utility.MyLog.Instance.Error("在{0}中,主出库单({1})中有空引用的子出库订单实体"
                                                                        , System.Reflection.MethodBase.GetCurrentMethod().Name, smo.ProductOutputMainId);
                                ceo.SubOrders.Clear();
                                break;
                            }
                            CWmsExWarehouseSubOrder cso = new CWmsExWarehouseSubOrder();
                            (cso.MangoOrder as MangoSubExwarehouseOrder).CopyFrom(mso);
                            ceo.SubOrders.Add(mso.ProductOutputId.ToString(), cso);
                        }
                        #endregion
                        if (0 < ceo.SubOrders.Count)
                        {
                            (ceo.MangoOrder as MangoExwarehouseOrder).CopyFrom(smo);
                            pOutList.Add(ceo);
                        }
                        else
                        {
                            C_WMS.Data.Utility.MyLog.Instance.Error("在{0}中,主出库单({1})没有获取到任何子出库订单实体"
                                                                    , System.Reflection.MethodBase.GetCurrentMethod().Name, smo.ProductOutputMainId);
                        }
                    } // foreach (MangoExwarehouseOrder smo in orderList)
                    pErrMsg = string.Empty;
                    return(err);
                }
            }
            catch (Exception ex)
            {
                pErrMsg = ex.Message;
                pOutList.Clear();
                Data.Utility.MyLog.Instance.Error(ex, "根据过滤条件获取主出库订单发生异常");
                return(TError.Post_NoChange.Int());
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 根据主入库订单ID获取主入库订单及其所有子订单的实例
        /// </summary>
        /// <param name="pOrderId">芒果商城主入库单ID</param>
        /// <returns>CWmsEntryOrder对象</returns>
        static public CWmsEntryOrder GetCWmsEntryOrder(string pOrderId)
        {
            try
            {
                CWmsEntryOrder            outObj  = null;
                List <MangoSubEntryOrder> tmpList = null;
                string errMsg = string.Empty;

                // get mango order
                MangoEntryOrder mangoOrder = MangoFactory.GetMangoOrder(TCWmsOrderCategory.EEntryOrder, pOrderId) as MangoEntryOrder;

                // get sub orders
                errMsg = MangoFactory.GetVMangoSubEntryOrders(pOrderId, out tmpList);

                // create CWmsEntryOrder if successful
                if (null != mangoOrder && string.IsNullOrEmpty(errMsg) && 0 < tmpList?.Count)
                {
                    outObj = new CWmsEntryOrder();
                    (outObj.MangoOrder as MangoEntryOrder).CopyFrom(mangoOrder);
                    outObj.WmsOrder.SetWmsOrderType(TWmsOrderType.CGRK);// 默认采购入库
                    foreach (var s in tmpList)
                    {
                        int tmpPlanQty       = -1;
                        CWmsSubEntryOder cso = new CWmsSubEntryOder();
                        (cso.MangoOrder as MangoSubEntryOrder).CopyFrom(s);

                        #region // 获取应收数量
                        if (0 >= s.ProductBuyId.Int())
                        {
                            // 无采购入库Id,判断为芒果网络商品入库(补),实收数量即为应收数量
                            (cso.WmsOrderDetail as Wms.Data.WmsEntryOrderDetail).planQty = CWmsUtility.Decimal2Int(s.ProductInputCount.Decimal());
                        }
                        else
                        {
                            // 有采购入库Id,取采购入库单中的应收数量
                            (cso.WmsOrderDetail as Wms.Data.WmsEntryOrderDetail).planQty =
                                (TError.RunGood.Int() == MangoFactory.GetPlanQuantityByPid(s.ProductBuyId.ToString(), out tmpPlanQty)) ? tmpPlanQty : -1;
                        }
                        #endregion

                        // 设置商品Id
                        cso.Product.ItemCode = (string.IsNullOrEmpty(s.ProductGuiGeID.ToString()) || "0".Equals(s.ProductGuiGeID.ToString())) ?
                                               s.ProductId.ToString() : string.Format("{0}-{1}", s.ProductId, s.ProductGuiGeID);

                        outObj.SubOrders.Add(s.ProductInputId.ToString(), cso);
                    }
                    // TODO: other operations
                }
                else
                {
                    C_WMS.Data.Utility.MyLog.Instance.Error("根据主入库订单ID({0})获取主入库订单及其所有子订单的实例失败, mangoOrder=(1}, 子单据数量={2}", pOrderId, mangoOrder, tmpList?.Count);
                }

                return(outObj);
            }
            catch (Exception ex)
            {
                C_WMS.Data.Utility.MyLog.Instance.Error(ex, "根据主入库订单ID({0})获取主入库订单及其所有子订单的实例异常", pOrderId);
                return(null);
            }
        }
Ejemplo n.º 12
0
 /// <summary>
 /// construct by id
 /// </summary>
 /// <param name="id"></param>
 public MangoSubStockoutOrder(string id)
 {
     Copy(MangoFactory.NewOrder <Product_Warehouse_ProductOutput>(id));
 }
Ejemplo n.º 13
0
 /// <summary>
 /// construct by id
 /// </summary>
 /// <param name="id"></param>
 public MangoEntryOrder(string id)
 {
     Copy(MangoFactory.NewOrder <Product_Warehouse_ProductMainInput>(id));
 }
Ejemplo n.º 14
0
 /// <summary>
 /// construct by id
 /// </summary>
 /// <param name="id"></param>
 public MangoSubReturnOrder(string id)
 {
     Copy(MangoFactory.NewOrder <Product_TuiHuo>(id));
 }
Ejemplo n.º 15
0
 /// <summary>
 /// construct by id
 /// </summary>
 /// <param name="id"></param>
 public MangoSubDeliveryOrder(string id)
 {
     Copy(MangoFactory.NewOrder <Product_PeiSong_Product>(id));
 }
Ejemplo n.º 16
0
 /// <summary>
 /// constructed by pRid
 /// </summary>
 /// <param name="pRid">order ID</param>
 public MangoReturnOrder(string pRid)
 {
     Copy(MangoFactory.NewOrder <Product_TuiHuo_main>(pRid));
 }
Ejemplo n.º 17
0
 /// <summary>
 /// construct by id
 /// </summary>
 /// <param name="id"></param>
 public MangoSubMallOrder(string id)
 {
     Copy(MangoFactory.NewOrder <Product_User_DingDan_ProductList>(id));
 }