public void ProcessInputResponse(StockInputResponse inputReponse) { if (this.initiateStockInputWaitForInputResponse != null) { this.SendInputMessage(inputReponse.TenantID, inputReponse, inputReponse.Packs, (this.initiateStockInputState == InitiateStockInputState.Accepted)); InitiateStockInputMessage initiateStockInputMessage = new InitiateStockInputMessage(); initiateStockInputMessage.AdoptHeader(initiateStockInputWaitForInputResponse); initiateStockInputMessage.InputSource = this.initiateStockInputWaitForInputResponse.InputSource; initiateStockInputMessage.InputPoint = this.initiateStockInputWaitForInputResponse.InputPoint; initiateStockInputMessage.Status = this.initiateStockInputState; initiateStockInputMessage.Articles.AddRange(this.initiateStockInputWaitForInputResponse.Articles); initiateStockInputMessage.Packs.AddRange(this.initiateStockInputWaitForInputResponse.Packs); if (this.initiateStockInputState != InitiateStockInputState.Accepted) { StockInputError inputError = new StockInputError(); inputError.Type = StockInputErrorType.Rejected; foreach (RobotPack pack in initiateStockInputMessage.Packs) { initiateStockInputMessage.PackErrors.Add(pack, inputError); } } this.initiateStockInputWaitForInputResponse = null; } else { this.DoInputResponseReceived(inputReponse); } }
/// <summary> /// Translates this object instance into a Mosaic message. /// </summary> /// <param name="converterStream">The converter stream instance which request the message conversion.</param> /// <returns> /// The Mosaic message representation of this object. /// </returns> public MosaicMessage ToMosaicMessage(IConverterStream converterStream) { var response = new InitiateStockInputResponse(converterStream); response.ID = this.Id; response.Destination = this.Destination; response.Source = this.Source; response.IsDeliveryInput = TypeConverter.ConvertBool(this.IsNewDelivery); response.SetPickingIndicator = TypeConverter.ConvertBool(this.SetPickingIndicator); response.InputSource = (this.Details != null) ? TypeConverter.ConvertInt(this.Details.InputSource) : 0; response.InputPoint = (this.Details != null) ? TypeConverter.ConvertInt(this.Details.InputPoint) : 0; response.Status = (this.Details != null) ? TypeConverter.ConvertEnum <InitiateStockInputState>(this.Details.Status, InitiateStockInputState.Rejected) : InitiateStockInputState.Rejected; if (this.Article == null) { return(response); } foreach (var article in this.Article) { response.Articles.Add(new Interfaces.Types.Articles.RobotArticle() { Code = TextConverter.UnescapeInvalidXmlChars(article.Id), Name = TextConverter.UnescapeInvalidXmlChars(article.Name), PackagingUnit = TextConverter.UnescapeInvalidXmlChars(article.PackagingUnit), DosageForm = TextConverter.UnescapeInvalidXmlChars(article.DosageForm), MaxSubItemQuantity = TypeConverter.ConvertInt(article.MaxSubItemQuantity) }); foreach (var pack in article.Pack) { response.Packs.Add(new Interfaces.Types.Packs.RobotPack() { ScanCode = TextConverter.UnescapeInvalidXmlChars(pack.ScanCode), DeliveryNumber = TextConverter.UnescapeInvalidXmlChars(pack.DeliveryNumber), BatchNumber = TextConverter.UnescapeInvalidXmlChars(pack.BatchNumber), ExternalID = TextConverter.UnescapeInvalidXmlChars(pack.ExternalId), ExpiryDate = TypeConverter.ConvertDate(pack.ExpiryDate), SubItemQuantity = TypeConverter.ConvertInt(pack.SubItemQuantity), Depth = TypeConverter.ConvertInt(pack.Depth), Width = TypeConverter.ConvertInt(pack.Width), Height = TypeConverter.ConvertInt(pack.Height), Shape = TypeConverter.ConvertEnum <PackShape>(pack.Shape, PackShape.Cuboid), StockLocationID = string.IsNullOrEmpty(pack.StockLocationId) ? string.Empty : TextConverter.UnescapeInvalidXmlChars(pack.StockLocationId) }); } } return(response); }
public void ProcessInitiateStockInputRequest(InitiateStockInputRequest initiateInputRequest) { InitiateStockInputResponse initiateInputReponse = new InitiateStockInputResponse(); initiateInputReponse.AdoptHeader(initiateInputRequest); initiateInputReponse.IsDeliveryInput = initiateInputRequest.IsDeliveryInput; initiateInputReponse.SetPickingIndicator = initiateInputRequest.SetPickingIndicator; initiateInputReponse.InputSource = initiateInputRequest.InputSource; initiateInputReponse.InputPoint = initiateInputRequest.InputPoint; initiateInputReponse.Status = this.initiateStockInputState; foreach (RobotPack pack in initiateInputRequest.Packs) { bool articleInfoFound = false; foreach (RobotArticle article in initiateInputReponse.Articles) { if (article.Code == pack.RobotArticleCode) { articleInfoFound = true; break; } } if (!articleInfoFound) { // get article Info StorageSystemArticleInformation articleInformation = this.stock.ArticleInformationList.GetArticleInformation(pack.RobotArticleCode, false); if (articleInformation == null) { // article not found ? try with the scan code. articleInformation = this.stock.ArticleInformationList.GetArticleInformation(pack.ScanCode, false); } if (articleInformation != null) { RobotArticle newArticle = new RobotArticle(); newArticle.Code = articleInformation.Code; newArticle.Name = articleInformation.Name; newArticle.DosageForm = articleInformation.DosageForm; newArticle.PackagingUnit = articleInformation.PackagingUnit; newArticle.MaxSubItemQuantity = articleInformation.MaxSubItemQuantity; initiateInputReponse.Articles.Add(newArticle); } } } initiateInputReponse.Packs.AddRange(initiateInputRequest.Packs); initiateInputReponse.ConverterStream.Write(initiateInputReponse); if (initiateInputReponse.Status == InitiateStockInputState.Accepted) { this.initiateStockInputWaitForInputResponse = initiateInputReponse; this.ScanPack(initiateInputReponse.TenantID, "", initiateInputRequest.SetPickingIndicator, initiateInputRequest.IsDeliveryInput, initiateInputReponse.Packs); } }