Esempio n. 1
0
        } // 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);
        }
Esempio n. 2
0
        /// <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);
        }