private static void LoadItemInfo(ProcessMaskSegmentsServiceRequest serviceRequest, Barcode barcode, int position, BarcodeMaskSegment segment) { if (barcode.ItemBarcode != null && !string.IsNullOrWhiteSpace(barcode.ItemBarcode.ItemId)) { // Skip item barcode lookup if it is already set. return; } string barcodeText = serviceRequest.Barcode.BarcodeId.Substring(0, position + segment.Length); barcodeText += '%'; GetProductBarcodeDataRequest dataRequest = new GetProductBarcodeDataRequest(barcodeText); ItemBarcode itemBarcode = serviceRequest.RequestContext.Runtime.Execute <GetProductBarcodeDataResponse>(dataRequest, serviceRequest.RequestContext).Barcode; if (itemBarcode == null) { barcodeText = barcodeText.Substring(0, barcodeText.Length - 1); barcodeText += Convert.ToString(CalculateCheckDigit(barcodeText), CultureInfo.CurrentCulture); dataRequest = new GetProductBarcodeDataRequest(barcodeText); itemBarcode = serviceRequest.RequestContext.Runtime.Execute <GetProductBarcodeDataResponse>(dataRequest, serviceRequest.RequestContext).Barcode; } if (itemBarcode != null) { barcode.ItemBarcode = itemBarcode; barcode.Mask.MaskType = BarcodeMaskType.Item; } }
private static void LoadPriceInfo(ProcessMaskSegmentsServiceRequest serviceRequest, Barcode barcode, int position, BarcodeMaskSegment segment) { string strBarCodePrice = serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); decimal barCodePrice; if (decimal.TryParse(strBarCodePrice, out barCodePrice)) { barCodePrice = barCodePrice / (decimal)Math.Pow(10, segment.Decimals); } else { throw new DataValidationException( DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidFormat, string.Format("Cannot Parse to decimal, Invalid format {0}", strBarCodePrice)); } barcode.BarcodePrice = barCodePrice == 0 ? (decimal?)null : barCodePrice; barcode.Decimals = segment.Decimals; }