/// <summary> /// Requests a pick order from the WMS. /// </summary> /// <param name="holdType">The desired hold type of the pick order.</param> /// <param name="session">The current session.</param> /// <returns></returns> public static CorrelationContext RequestPickOrder(PickOrderHoldType holdType, VocollectSession session) { MultiPartMessage whMsg = CreateRequestMessage("wlvoicepick", "get_mt_pbhead", session); whMsg.Properties.Write("TERID_I", session.ReadAsString("TERID")); whMsg.Properties.Write("TUID_I", session.ReadAsString("TUID")); whMsg.Properties.Write("WHID_I", session.ReadAsString("WHID")); if (holdType == PickOrderHoldType.Temporarily) { whMsg.Properties.Write("PZID_I", ""); whMsg.Properties.Write("PZGRPID_I", ""); } else { whMsg.Properties.Write("PZID_I", session.ReadAsString("PZID")); whMsg.Properties.Write("PZGRPID_I", session.ReadAsString("PZGRPID")); } whMsg.Properties.Write("NLANGCOD_I", session.ReadAsString("NLANGCOD")); whMsg.Properties.Write("PBHEAD_Cur_O", new object()); whMsg.Properties.Write("HOLD_TYPE_O", ""); whMsg.Properties.Write("LOCATION_O", ""); whMsg.Properties.Write("ALMID_O", ""); if (holdType == PickOrderHoldType.Definitely) { whMsg.Properties.Write("DEF_ON_HOLD_I", "1"); } else { whMsg.Properties.Write("DEF_ON_HOLD_I", "0"); } CorrelationContext context; MessageEngine.Instance.TransmitRequestMessage(whMsg, whMsg.MessageId, out context); //Get properties from cursor PropertyCollection properties = context.ResponseMessages[0].Parts[0].Properties; if ((!string.IsNullOrEmpty(context.ResponseMessages[0].Properties.ReadAsString("HOLD_TYPE_O"))) && (!string.IsNullOrEmpty(properties.ReadAsString("TUID")))) { VerifyAndConnectPickTruck(session, properties.ReadAsString("PBHEADID"), session.ReadAsString("TUID"), properties.ReadAsString("TUID")); } //Write data to session session.Write("PBHEADID", properties.ReadAsString("PBHEADID")); session.Write("PZID", properties.ReadAsString("PZID")); session.Write("HOLD_TYPE", context.ResponseMessages[0].Properties.ReadAsString("HOLD_TYPE_O")); session.Write("CARCODE_TYPE", properties.ReadAsString("CARCODE_TYPE")); session.Write("PBROWID", ""); session.Write("DROPSEQNUM", ""); session.Write("DROPWSID", ""); session.Write("DROPWPADR", ""); session.Write("UPDATE_PBCAR", "0"); session.Write("NOCARS", properties.ReadAsInt("NOCARS")); session.Write("PRINTED", "0"); session.Write("PRINTERNUMBER", ""); session.CurrentAssignmentData = properties; TimeSpan pickTime = new TimeSpan(0, 0, Convert.ToInt32(properties.ReadAsInt("ESTPICKTME") + properties.ReadAsInt("ESTMOVTIMEPICK") + properties.ReadAsInt("ESTDRVTME") + properties.ReadAsInt("ESTPACKTME"))); session.Write("PICKTIME", pickTime); session.Write("LPDTM_SHIPWS", properties.Read("LPDTM_SHIPWS")); return(context); }