/// <summary>
            /// Validates the required reason code lines filled.
            /// </summary>
            /// <param name="requestContext">The request context.</param>
            /// <param name="salesTransaction">The sales transaction.</param>
            /// <exception cref="ConfigurationException">Required Service missing.</exception>
            /// <exception cref="DataValidationException">One or more reason codes required for the transaction are missing.</exception>
            public static void ValidateRequiredReasonCodeLinesFilled(RequestContext requestContext, SalesTransaction salesTransaction)
            {
                ThrowIf.Null(requestContext, "requestContext");
                ThrowIf.Null(salesTransaction, "salesTransaction");

                var serviceRequest  = new CalculateRequiredReasonCodesServiceRequest(salesTransaction, ReasonCodeSourceType.None);
                var serviceResponse = requestContext.Execute <CalculateRequiredReasonCodesServiceResponse>(serviceRequest);

                ReasonCodesWorkflowHelper.ThrowIfRequiredReasonCodesMissing(serviceResponse);
            }
            /// <summary>
            /// Helper methods to calculates the required reason codes.
            /// </summary>
            /// <param name="requestContext">The request context.</param>
            /// <param name="serviceRequest">The service request.</param>
            /// <exception cref="ConfigurationException">Required Service missing: {0}.</exception>
            private static void CalculateRequiredReasonCodesHelper(RequestContext requestContext, CalculateRequiredReasonCodesServiceRequest serviceRequest)
            {
                ThrowIf.Null(serviceRequest.SalesTransaction, "serviceRequest.SalesTransaction");

                // Reason codes are only calculated for retail stores and carts that are not customer orders.
                if ((requestContext.GetChannelConfiguration().ChannelType == RetailChannelType.RetailStore) &&
                    (serviceRequest.SalesTransaction.CartType != CartType.CustomerOrder))
                {
                    var serviceResponse = requestContext.Execute <CalculateRequiredReasonCodesServiceResponse>(serviceRequest);
                    ReasonCodesWorkflowHelper.ThrowIfRequiredReasonCodesMissing(serviceResponse);
                }
            }