} // int DoRunL(CWmsOrdersSync_EntryOrderImpl) /// <summary> /// 同步当前主入库订单。若执行成功则返回TError.RunGood,否则返回其他 /// </summary> /// <param name="pImpl">implementor of CWmsOrdersSync_EntryOrder</param> /// <returns></returns> int DoSyncSingleOrder(CWmsOrdersSync_StockoutOrderImpl pImpl) { if (null == pImpl) { C_WMS.Data.Utility.MyLog.Instance.Error("CWmsOrdersSync_StockoutOrder.在{0}中,输入参数pHandler为空", MethodBase.GetCurrentMethod().Name); return(TError.Post_ParamError.Int()); } int err = TError.RunGood.Int(); HttpRespXml_StockoutOrderCreate respObj = null; HttpReqXml_StockoutOrderCreate reqObj = pImpl.GetCurrentStockoutOrder_ReqXmlObj(); #region 根据当前待处理的主入库订单创建RequestXMLObject if (null == reqObj) { C_WMS.Data.Utility.MyLog.Instance.Error("CWmsOrdersSync_StockoutOrder.在{0}中,根据当前待处理的主出库订单[{1}]创建RequestXMLObject失败。", MethodBase.GetCurrentMethod().Name, pImpl.CurrentOrder?.GetId()); return(err = TError.Pro_HaveNoData.Int()); } #endregion #region 执行同步 -and- handle response if (null != (respObj = mDlgtDoHttpTransaction.Invoke(reqObj)) && respObj.IsSuccess()) { _currentOrderSyncOk = true; // 更新商城中该单据isToWms为‘同步成功’和Dict709中该行的状态为'同步成功' } // if ( null == respObj && respObj.IsSuccess()) else { C_WMS.Data.Utility.MyLog.Instance.Error("CWmsOrdersSync_StockoutOrder.在{0}中,同步单据{3}的HTTP通讯失败.\r\nREQUEST={1}\r\nRESPONSE={2}", MethodBase.GetCurrentMethod().Name, reqObj, respObj, pImpl.CurrentOrder?.GetId()); } // else #endregion return(err); }
/// <summary> /// 根据芒果商城的出库订单生成出库订单接口的HTTP request XML实例。 /// </summary> /// <param name="pEntryOrderId">芒果商城主出库订单ID</param> /// <returns>若成功则返回被创建的实例;否则返回null</returns> static public HttpReqXmlBase GetReqXmlBody_ExWarehouseCreate(string pEntryOrderId) { // HttpReqXml_StockoutOrderCreate reqObj = null; List <HttpReqXml_StockoutOrderCreate_OrderLine> reqSubOrderList = null; #region validate parameters if (string.IsNullOrEmpty(pEntryOrderId)) { C_WMS.Data.Utility.MyLog.Instance.Error("根据主出库订单[{0}]获取主出库订单及其所有子订单的实例结束,非法入参", pEntryOrderId); return(reqObj); } #endregion // get main order from ‘主出库单表’ CWmsExWarehouseOrder cwmsOrder = GetCWmsStockoutOrder(pEntryOrderId); if (null == cwmsOrder) { C_WMS.Data.Utility.MyLog.Instance.Error("根据主出库订单[{0}]获取主出库订单及其所有子订单的实例结束,获取主出库订单失败", pEntryOrderId); return(reqObj); } // sub 出库单 list reqObj = new HttpReqXml_StockoutOrderCreate(); reqSubOrderList = new List <HttpReqXml_StockoutOrderCreate_OrderLine>(1); reqObj.deliveryOrder.CopyFrom(cwmsOrder); foreach (var cwmsSubOrder in cwmsOrder.SubOrders) { HttpReqXml_StockoutOrderCreate_OrderLine orderLine = new HttpReqXml_StockoutOrderCreate_OrderLine(); orderLine.CopyFrom(cwmsSubOrder.Value as CWmsExWarehouseSubOrder); reqSubOrderList.Add(orderLine); } reqObj.items = reqSubOrderList.ToArray(); return(reqObj); }