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