private static ProcessMaskSegmentsServiceResponse ProcessMaskSegments(ProcessMaskSegmentsServiceRequest serviceRequest) { GetBarcodeMaskSegmentDataRequest getBarcodeMaskSegmentDataRequest = new GetBarcodeMaskSegmentDataRequest(serviceRequest.BarcodeMask.MaskId, QueryResultSettings.AllRecords); IEnumerable <BarcodeMaskSegment> barCodeMaskSegments = serviceRequest.RequestContext.Runtime.Execute <EntityDataServiceResponse <BarcodeMaskSegment> >(getBarcodeMaskSegmentDataRequest, serviceRequest.RequestContext).PagedEntityCollection.Results; int position = serviceRequest.BarcodeMask.Prefix.Length; Barcode barcodeInfo = serviceRequest.Barcode; foreach (BarcodeMaskSegment segment in barCodeMaskSegments) { var segmentType = (BarcodeSegmentType)segment.MaskType; switch (segmentType) { case BarcodeSegmentType.Item: { LoadItemInfo(serviceRequest, barcodeInfo, position, segment); break; } case BarcodeSegmentType.AnyNumber: case BarcodeSegmentType.CheckDigit: // Check Digit is not implemented yet functionality in RetailServer. { break; } case BarcodeSegmentType.Price: { LoadPriceInfo(serviceRequest, barcodeInfo, position, segment); if (barcodeInfo.BarcodePrice != null && barcodeInfo.ItemBarcode.ItemId != null) { ProductPrice productPrice = GetItemPrice(serviceRequest.RequestContext, barcodeInfo.ItemBarcode.ItemId, barcodeInfo.ItemBarcode.InventoryDimensionId, barcodeInfo.ItemBarcode.UnitId, string.Empty); decimal defaultProductPrice = productPrice.AdjustedPrice; var calculateQuantityRequest = new CalculateQuantityFromPriceServiceRequest(barcodeInfo.BarcodePrice.Value, defaultProductPrice, barcodeInfo.ItemBarcode.UnitId); CalculateQuantityFromPriceServiceResponse calculateQuantityResponse = serviceRequest.RequestContext.Execute <CalculateQuantityFromPriceServiceResponse>(calculateQuantityRequest); barcodeInfo.BarcodeQuantity = calculateQuantityResponse.BarcodeQuantity; } break; } case BarcodeSegmentType.Quantity: { LoadQuantityInfo(serviceRequest, barcodeInfo, position, segment); break; } case BarcodeSegmentType.DiscountCode: { barcodeInfo.DiscountCode = serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length).TrimStart('0'); break; } case BarcodeSegmentType.GiftCard: { barcodeInfo.GiftCardNumber = serviceRequest.BarcodeMask.Prefix + serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); break; } case BarcodeSegmentType.LoyaltyCard: { barcodeInfo.LoyaltyCardNumber = serviceRequest.BarcodeMask.Prefix + serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); break; } case BarcodeSegmentType.SizeDigit: case BarcodeSegmentType.ColorDigit: case BarcodeSegmentType.StyleDigit: { // Not used. break; } case BarcodeSegmentType.EANLicenseCode: { barcodeInfo.EANLicenseId = serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); break; } case BarcodeSegmentType.Employee: { barcodeInfo.EmployeeId = serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); break; } case BarcodeSegmentType.Salesperson: { barcodeInfo.SalespersonId = serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); break; } case BarcodeSegmentType.Customer: { barcodeInfo.CustomerId = serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); break; } case BarcodeSegmentType.DataEntry: { barcodeInfo.DataEntry = serviceRequest.Barcode.BarcodeId.Substring(position, segment.Length); break; } default: { break; } } position = position + segment.Length; } return(new ProcessMaskSegmentsServiceResponse(barcodeInfo)); }
/// <summary> /// Gets the barcode mask segment using the specified mask identifier. /// </summary> /// <param name="request">The get barcode mask segment data request.</param> /// <returns> /// A entity data service response. /// </returns> private EntityDataServiceResponse <BarcodeMaskSegment> GetBarcodeMaskSegment(GetBarcodeMaskSegmentDataRequest request) { ThrowIf.Null(request, "request"); ThrowIf.Null(request.MaskId, "request.MaskId"); var query = new SqlPagedQuery(request.QueryResultSettings) { From = BarcodeMaskSegmentsView, Where = "MASKID = @MaskId AND DATAAREAID = @DataAreaId", }; query.Parameters["@MaskId"] = request.MaskId; query.Parameters["@DataAreaId"] = request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId; PagedResult <BarcodeMaskSegment> results; using (var databaseContext = new DatabaseContext(request.RequestContext)) { results = databaseContext.ReadEntity <BarcodeMaskSegment>(query); } return(new EntityDataServiceResponse <BarcodeMaskSegment>(results)); }