/// <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 request = new InitiateStockInputRequest(converterStream); request.ID = this.Id; request.Destination = this.Destination; request.Source = this.Source; request.IsDeliveryInput = TypeConverter.ConvertBool(this.IsNewDelivery); request.SetPickingIndicator = TypeConverter.ConvertBool(this.SetPickingIndicator); request.InputSource = (this.Details != null) ? TypeConverter.ConvertInt(this.Details.InputSource) : 0; request.InputPoint = (this.Details != null) ? TypeConverter.ConvertInt(this.Details.InputPoint) : 0; if ((this.Article != null) && (this.Article.Pack != null)) { foreach (var pack in this.Article.Pack) { request.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), MachineLocation = string.IsNullOrEmpty(pack.MachineLocation) ? string.Empty : TextConverter.UnescapeInvalidXmlChars(pack.MachineLocation) }); } } return(request); }
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); } }