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