コード例 #1
0
            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));
            }
コード例 #2
0
            /// <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));
            }