Ejemplo n.º 1
0
            /// <summary>
            /// Gets the return reason codes.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The info codes response.</returns>
            private static GetReturnOrderReasonCodesServiceResponse GetReturnOrderReasonCodes(GetReturnOrderReasonCodesServiceRequest request)
            {
                GetReturnOrderReasonCodesDataRequest getReturnOrderReasonCodesDataRequest = new GetReturnOrderReasonCodesDataRequest(request.QueryResultSettings);
                PagedResult <ReasonCode>             reasonCodes = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <ReasonCode> >(getReturnOrderReasonCodesDataRequest, request.RequestContext).PagedEntityCollection;

                SetProductIdsForUpsell(request.RequestContext, reasonCodes.Results);

                return(new GetReturnOrderReasonCodesServiceResponse(reasonCodes));
            }
Ejemplo n.º 2
0
            /// <summary>
            /// Gets the return reason code for the transaction or empty, if none.
            /// </summary>
            /// <param name="salesTransaction">The sales transaction to get the reason code from.</param>
            /// <param name="context">The request context.</param>
            /// <returns>The reason code for the transaction or empty if none.</returns>
            private static string GetReturnReasonCodeId(SalesTransaction salesTransaction, RequestContext context)
            {
                // transaction server expects only one reason code, so we just take it from the first line that has reason codes
                SalesLine firstLineWithReasonCode = salesTransaction.SalesLines.FirstOrDefault(sl => sl.ReasonCodeLines.Any());

                GetReturnOrderReasonCodesDataRequest getReturnOrderReasonCodesDataRequest = new GetReturnOrderReasonCodesDataRequest(QueryResultSettings.AllRecords);
                ReadOnlyCollection <ReasonCode>      returnOrderReasonCodes = context.Runtime.Execute <EntityDataServiceResponse <ReasonCode> >(getReturnOrderReasonCodesDataRequest, context).PagedEntityCollection.Results;

                ReasonCodeLine returnReasonCodeLine = firstLineWithReasonCode != null
                    ? firstLineWithReasonCode.ReasonCodeLines.FirstOrDefault(reasonCodeLine => returnOrderReasonCodes.Any(returnOrderReasonCode => returnOrderReasonCode.ReasonCodeId == reasonCodeLine.ReasonCodeId))
                    : null;

                return((returnReasonCodeLine != null && !string.IsNullOrWhiteSpace(returnReasonCodeLine.ReasonCodeId)) ? returnReasonCodeLine.ReasonCodeId : null);
            }
            private EntityDataServiceResponse <ReasonCode> GetReturnOrderReasonCodes(GetReturnOrderReasonCodesDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings");

                ReasonCodeL2CacheDataStoreAccessor level2CacheDataAccessor = GetReasonCodeL2CacheDataStoreAccessor(request.RequestContext);

                bool found;
                bool updateL2Cache;
                PagedResult <ReasonCode> result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetReturnOrderReasonCodes(request.QueryResultSettings), out found, out updateL2Cache);

                if (!found)
                {
                    var query = new SqlPagedQuery(request.QueryResultSettings)
                    {
                        From    = ReturnOrderReasonCodesViewName,
                        OrderBy = InfoCodeIdColumnName
                    };

                    query.Parameters["@DataAreaId"] = request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId;

                    List <string> whereClauses = new List <string>();
                    whereClauses.Add(@"(DATAAREAID = @DataAreaId)");
                    query.Where = string.Join(" AND ", whereClauses);

                    // Load info codes
                    using (DatabaseContext databaseContext = new DatabaseContext(request.RequestContext))
                    {
                        result = databaseContext.ReadEntity <ReasonCode>(query);
                    }

                    updateL2Cache &= result != null &&
                                     result.Results.Count < MaxCachedCollectionSize;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutReturnOrderReasonCodes(request.QueryResultSettings, result);
                }

                return(new EntityDataServiceResponse <ReasonCode>(result));
            }