예제 #1
0
            /// <summary>
            /// Gets the delivery option.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The response with the delivery option.</returns>
            private EntityDataServiceResponse <DeliveryOption> GetDeliveryOption(GetDeliveryOptionDataRequest request)
            {
                var shippingDataManager = this.GetDataManagerInstance(request.RequestContext);
                var deliveryOption      = shippingDataManager.GetDeliveryOption(request.Code, request.QueryResultSettings.ColumnSet);
                var deliveryOptionList  = new List <DeliveryOption>()
                {
                    deliveryOption
                };
                var deliveryOptions = new ReadOnlyCollection <DeliveryOption>(deliveryOptionList).AsPagedResult();

                return(new EntityDataServiceResponse <DeliveryOption>(deliveryOptions));
            }
            /// <summary>
            /// Verifies whether the delivery mode is valid or not throwing <see cref="DataValidationException"></see> if not valid.
            /// </summary>
            /// <param name="deliveryModeId">The identifier of the delivery mode to be verified.</param>
            private void ValidateDeliveryMode(string deliveryModeId)
            {
                var            deliveryOptionDataRequest  = new GetDeliveryOptionDataRequest(deliveryModeId, new QueryResultSettings(new ColumnSet("CODE"), PagingInfo.AllRecords));
                var            deliveryOptionDataResponse = this.Context.Execute <EntityDataServiceResponse <DeliveryOption> >(deliveryOptionDataRequest);
                DeliveryOption deliveryOption             = deliveryOptionDataResponse.PagedEntityCollection.FirstOrDefault();

                if (deliveryOption == null)
                {
                    RetailLogger.Log.CrtWorkflowUpdateDeliverySpecificationRequestHandlerDeliveryModeNotFound(deliveryModeId);
                    throw new DataValidationException(DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidDeliveryMode, "The provided delivery mode if was not found.");
                }
            }
예제 #3
0
            /// <summary>
            /// Given a delivery mode code, retrieve the charge group assigned to that delivery mode.
            /// </summary>
            /// <param name="context">The request context.</param>
            /// <param name="deliveryMode">The delivery mode code.</param>
            /// <returns>
            /// The delivery mode charge group identifier.
            /// </returns>
            private static string GetDeliveryModeGroupFromCode(RequestContext context, string deliveryMode)
            {
                DeliveryOption deliveryOption;
                string         deliveryModeGroup = string.Empty;

                if (!string.IsNullOrWhiteSpace(deliveryMode))
                {
                    var deliveryOptionDataRequest  = new GetDeliveryOptionDataRequest(deliveryMode, new QueryResultSettings(new ColumnSet("CODE", "MARKUPGROUP"), PagingInfo.AllRecords));
                    var deliveryOptionDataResponse = context.Execute <EntityDataServiceResponse <DeliveryOption> >(deliveryOptionDataRequest);
                    deliveryOption = deliveryOptionDataResponse.PagedEntityCollection.FirstOrDefault();

                    if (deliveryOption != null && deliveryOption.ChargeGroup != null)
                    {
                        deliveryModeGroup = deliveryOption.ChargeGroup;
                    }
                }

                return(deliveryModeGroup);
            }