Beispiel #1
0
        /// <summary>
        /// 根据主单据ID获取单据及其所有子单据的实例.
        /// </summary>
        /// <param name="pCate">单据类型(支持的类型包括取消商城订单和取消退货订单)</param>
        /// <param name="pOid">返回HttpReqXml_OrderCacnel对象实体,若失败则返回Null</param>
        /// <returns></returns>
        static public HttpReqXmlBase GetReqXmlBody_CancelOrder(TCWmsOrderCategory pCate, string pOid)
        {
            var ret = new ThirdResult <List <object> >(string.Format("单据[{0}]取消, 根据主单据{1}获取单据及其所有子单据的实例, 开始", pCate, pOid));

            HttpReqXmlBase         retObj    = null;
            HttpReqXml_OrderCacnel tmpReqObj = null;
            CWmsMcocOrder          order     = null;

            try
            {
                // 从获取单据实体
                if (null != (order = GetCWmsOrder(pCate, pOid) as CWmsMcocOrder))
                {
                    tmpReqObj = new HttpReqXml_OrderCacnel(order);
                    retObj    = tmpReqObj;
                }
            }
            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}]取消, 根据主单据{1}获取单据及其所有子单据的实例完成, 返回{2}", pCate, pOid, retObj));
            ret.End();
            return(retObj);
        }
Beispiel #2
0
        /// <summary>
        /// 执行HTTP会话取消单据
        /// </summary>
        /// <param name="pResp">返回HTTP Response XML实体</param>
        /// <param name="pMsg">返回错误描述</param>
        /// <param name="args">输入参数,应为主单据Id和单据类型</param>
        /// <returns>返回存储了HTTP response body的HttpRespXmlBase实例</returns>
        public override int DoTransaction(out HttpRespXmlBase pResp, out string pMsg, params object[] args)
        {
            var ret = new ThirdResult <List <object> >("同步取消单据HTTP会话,开始");

            // temp variables
            pMsg  = string.Empty;
            pResp = null;
            int                errCode = TError.RunGood.Int();
            string             moid    = string.Empty; // 待取消的主单据Id
            TCWmsOrderCategory mcoc    = TCWmsOrderCategory.EUnknownCategory;

            //TDict709_Value mapClassId = TDict709_Value.EUnknown;

            // handle arguments
            if (TError.RunGood.Int() != (errCode = ParseArguments(out moid, out mcoc, args)))
            {
                pMsg = "params object[] args,非法入参";
                ret.Append(pMsg);
                ret.End();
                return(errCode);
            }

            // Do HTTP transaction
            errCode = DoTransaction(Dict709Handle.Dict709FromMoc(mcoc), moid, out pResp, out pMsg);

            ret.Append("同步取消单据HTTP会话,结束");
            ret.End();
            return(errCode);
        }
Beispiel #3
0
        /// <summary>
        /// 解析接口通讯会话方法DoTransaction的入参
        /// !args中第一个为待取消的主单据Id、第二个为待取消的单据类型TMangoCancelOrderCategory
        /// </summary>
        /// <param name="pId">返回待取消的主单据Id</param>
        /// <param name="pMcoc">返回待取消的单据类型TMangoCancelOrderCategory</param>
        /// <param name="args">传递给DoTransaction方法的入参</param>
        /// <returns>若成功则返回TError.RunGood; 否则返回其他错误码</returns>
        int ParseArguments(out string pId, out TCWmsOrderCategory pMcoc, params object[] args)
        {
            pId   = string.Empty;
            pMcoc = TCWmsOrderCategory.EUnknownCategory;

            if (null == args || 2 > args.Length)
            {
                return(TError.Post_ParamError.Int());
            }
            pId   = args[0] as string;
            pMcoc = (TCWmsOrderCategory)args[1];

            return(TError.RunGood.Int());
        }
Beispiel #4
0
        /// <summary>
        /// 根据单据类型(TCWmsOrderCategory)的值返回Dict[709]
        /// </summary>
        /// <param name="pMoc">TCWmsOrderCategory</param>
        /// <returns>返回TDict709_Value</returns>
        static public TDict709_Value Dict709FromMoc(TCWmsOrderCategory pMoc)
        {
            switch (pMoc)
            {
            case TCWmsOrderCategory.EEntryOrder: return(TDict709_Value.EEntryOrder);

            case TCWmsOrderCategory.EExwarehouseOrder: return(TDict709_Value.EExwarehouseOrder);

            case TCWmsOrderCategory.EReturnOrder: return(TDict709_Value.EReturnOrder);

            case TCWmsOrderCategory.EMcocReturnOrder: return(TDict709_Value.ECancelReturnOrder);

            default: return(TDict709_Value.EUnknown);
            }
        }
Beispiel #5
0
        /// <summary>
        /// 获取CWmsOrderBase实体
        /// </summary>
        /// <param name="pCate">单据类型</param>
        /// <param name="pId">单据Id</param>
        /// <returns>若成功则返回CWmsOrderBase实体;否则返回null</returns>
        static public CWmsOrderBase GetCWmsOrder(TCWmsOrderCategory pCate, string pId)
        {
            switch (pCate)
            {
            case TCWmsOrderCategory.EEntryOrder: return(GetCWmsEntryOrder(pId));

            case TCWmsOrderCategory.EExwarehouseOrder: return(GetCWmsStockoutOrder(pId));

            case TCWmsOrderCategory.EMcocReturnOrder:
            case TCWmsOrderCategory.EReturnOrder: return(GetCWmsReturnOrder(pId));

            case TCWmsOrderCategory.EMallOrder: return(GetCWmsMallOrder(pId));

            default: return(null);
            }
        }
Beispiel #6
0
        /// <summary>
        /// 根据??获取单据对应的承运商实体。若成功则返回对应实体;否则返回默认
        /// </summary>
        /// <param name="pCate">单据类别</param>
        /// <param name="pId">??</param>
        /// <returns>若成功则返回对应实体;否则返回默认</returns>
        static public Wms.Data.WmsLogistics GetLogistics(TCWmsOrderCategory pCate, string pId)
        {
            switch (pCate)
            {
            case TCWmsOrderCategory.EEntryOrder:
            {
#if true
                return(GetLogisticsByEntryOrderId(pId));
#else
                if (T芒果商城退货物流.自行返还 == (T芒果商城退货物流)pId.Int())
                {
                    return(new Wms.Data.WmsLogistics(CWmsConsts.cStrWmsLogisticsZTCode, CWmsConsts.cStrWmsLogisticsZTName));
                }
                else if ((T芒果商城退货物流.蓝江上门 == (T芒果商城退货物流)pId.Int()))
                {
                    return(new Wms.Data.WmsLogistics(CWmsConsts.cStrWmsLogisticsZYWLCode, CWmsConsts.cStrWmsLogisticsZYWLName));
                }
                else
                {
                    return(new Wms.Data.WmsLogistics(CWmsConsts.cStrWmsLogisticsQTCode, CWmsConsts.cStrWmsLogisticsQTName));
                }
#endif
            }

            case TCWmsOrderCategory.EExwarehouseOrder:      // 出库订单
            {
                return(GetLogisticsByStockoutOrderId(pId));
            }

            case TCWmsOrderCategory.EReturnOrder:
            {
                return(GetLogisticsByReturnOrderId(pId));
            }

            default:
                // 获取默认承运商
                return(GetDefaultLogistic());
            }
        }
Beispiel #7
0
        /// <summary>
        /// 根据单据类实体创建并返回Product_WMS_Interface实体
        /// </summary>
        /// <param name="pMapClassId">Dict[709].pMapClassId</param>
        /// <param name="pCate">单据类型</param>
        /// <param name="pOrder">单据实体</param>
        /// <param name="pUpdateOk">是否同步成功</param>
        /// <param name="pDel">是否删除</param>
        /// <returns>若成功则返回Product_WMS_Interface实体;否则返回null</returns>
        static protected List <Product_WMS_Interface> GetVPwiEntities(TDict709_Value pMapClassId, TCWmsOrderCategory pCate, CWmsOrderBase pOrder, TDict285_Values pUpdateOk, TDict285_Values pDel)
        {
            List <Product_WMS_Interface> eList = null;

            if (null == pOrder)
            {
                return(eList);
            }

            try
            {
                eList = new List <Product_WMS_Interface>(1);
                #region 遍历子单据,创建并添加Product_WMS_Interface实体
                foreach (var so in pOrder.SubOrders)
                {
                    Product_WMS_Interface entity = new Product_WMS_Interface();
                    entity.MapCalssID   = pMapClassId.Int();
                    entity.IsUpdateOK   = pUpdateOk.Int();
                    entity.IsDel        = pDel.Int();
                    entity.LastTime     = DateTime.Now;
                    entity.UpdateUserID = MangoMis.Frame.Frame.CommonFrame.userid;
                    entity.DisOrder     = Product_WMS_Interface_Properties.cIntDisorderDefault;
                    switch (pCate)
                    {
                    case TCWmsOrderCategory.EEntryOrder:
                    {
                        entity.MapId1    = (pOrder.MangoOrder as MangoEntryOrder).ProductInputMainId;
                        entity.MapId2    = (so.Value.MangoOrder as MangoSubEntryOrder).ProductInputId;
                        entity.AddTime   = (so.Value.MangoOrder as MangoSubEntryOrder).AddTime;
                        entity.AddUserid = (so.Value.MangoOrder as MangoSubEntryOrder).AddUserid;
                        eList.Add(entity);
                        break;
                    }

                    case TCWmsOrderCategory.EExwarehouseOrder:
                    {
                        entity.MapId1    = (pOrder.MangoOrder as MangoStockouOrder).ProductOutputMainId;
                        entity.MapId2    = (so.Value.MangoOrder as MangoSubStockoutOrder).ProductOutputId;
                        entity.AddTime   = (so.Value.MangoOrder as MangoSubStockoutOrder).AddTime;
                        entity.AddUserid = (so.Value.MangoOrder as MangoSubStockoutOrder).AddUserid;
                        eList.Add(entity);
                        break;
                    }

                    case TCWmsOrderCategory.EReturnOrder:
                    {
                        entity.MapId1    = (pOrder.MangoOrder as MangoReturnOrder).TuiHuoMainID;
                        entity.MapId2    = (so.Value.MangoOrder as MangoSubReturnOrder).ZiTuihuoID;
                        entity.AddTime   = (so.Value.MangoOrder as MangoSubReturnOrder).AddTime;
                        entity.AddUserid = (so.Value.MangoOrder as MangoSubReturnOrder).AddUserid;
                        eList.Add(entity);
                        break;
                    }

                    default: { break; }
                    }
                }
                #endregion

                return(eList);
            }
            catch (Exception ex)
            {
                var ret = new ThirdResult <List <object> >("");
                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);
            }
        }