Exemplo n.º 1
0
            /// <summary>
            /// Verifies whether the source type is applicable to the whole transaction or to the lines.
            /// </summary>
            /// <param name="reasonCodeSourceType">The reason code source type.</param>
            /// <returns><c>True</c> if the source type is applicable to the whole transaction or <c>false</c> if it is applicable to the lines.</returns>
            private static bool IsTransactionSourceType(ReasonCodeSourceType reasonCodeSourceType)
            {
                switch (reasonCodeSourceType)
                {
                case ReasonCodeSourceType.AddSalesperson:
                case ReasonCodeSourceType.EndOfTransaction:
                case ReasonCodeSourceType.NegativeAdjustment:
                case ReasonCodeSourceType.StartOfTransaction:
                case ReasonCodeSourceType.TenderDeclaration:
                case ReasonCodeSourceType.TotalDiscount:
                case ReasonCodeSourceType.TransactionTaxChange:
                case ReasonCodeSourceType.VoidPayment:
                case ReasonCodeSourceType.VoidTransaction:
                    return(true);

                case ReasonCodeSourceType.ItemDiscount:
                case ReasonCodeSourceType.ItemNotOnFile:
                case ReasonCodeSourceType.LineItemTaxChange:
                case ReasonCodeSourceType.Markup:
                case ReasonCodeSourceType.OverridePrice:
                case ReasonCodeSourceType.ReturnTransaction:
                case ReasonCodeSourceType.ReturnItem:
                case ReasonCodeSourceType.SerialNumber:
                case ReasonCodeSourceType.VoidItem:
                    return(false);

                case ReasonCodeSourceType.None:
                default:
                    throw new NotSupportedException("The type is not supported.");
                }
            }
            /// <summary>
            /// Calculates the required reason codes on an income expense line.
            /// </summary>
            /// <param name="requestContext">The request context.</param>
            /// <param name="transaction">Current transaction.</param>
            /// <param name="incomeExpenseLine">The income expense line.</param>
            /// <param name="sourceType">Type of the source.</param>
            public static void CalculateRequiredReasonCodesOnIncomeExpenseLine(RequestContext requestContext, SalesTransaction transaction, IncomeExpenseLine incomeExpenseLine, ReasonCodeSourceType sourceType)
            {
                ThrowIf.Null(requestContext, "requestContext");
                ThrowIf.Null(incomeExpenseLine, "incomeExpenseLine");

                var serviceRequest = new CalculateRequiredReasonCodesServiceRequest(transaction, sourceType, new[] { incomeExpenseLine });

                CalculateRequiredReasonCodesHelper(requestContext, serviceRequest);
            }
            /// <summary>
            /// Calculates the required reason codes on affiliation line.
            /// </summary>
            /// <param name="requestContext">The request context.</param>
            /// <param name="transaction">Current transaction.</param>
            /// <param name="salesAffiliationLoyaltyTiers">The sales affiliation lines.</param>
            /// <param name="sourceType">Type of the source.</param>
            public static void CalculateRequiredReasonCodesOnAffiliationLines(RequestContext requestContext, SalesTransaction transaction, IEnumerable <SalesAffiliationLoyaltyTier> salesAffiliationLoyaltyTiers, ReasonCodeSourceType sourceType)
            {
                ThrowIf.Null(requestContext, "requestContext");
                ThrowIf.Null(salesAffiliationLoyaltyTiers, "salesAffiliationLoyaltyTiers");

                var serviceRequest = new CalculateRequiredReasonCodesServiceRequest(transaction, sourceType, salesAffiliationLoyaltyTiers);

                CalculateRequiredReasonCodesHelper(requestContext, serviceRequest);
            }
            /// <summary>
            /// Calculates the required reason codes on tender line.
            /// </summary>
            /// <param name="requestContext">The request context.</param>
            /// <param name="transaction">Current transaction.</param>
            /// <param name="tenderLine">The tender line.</param>
            /// <param name="sourceType">Type of the source.</param>
            public static void CalculateRequiredReasonCodesOnTenderLine(RequestContext requestContext, SalesTransaction transaction, TenderLine tenderLine, ReasonCodeSourceType sourceType)
            {
                ThrowIf.Null(requestContext, "requestContext");
                ThrowIf.Null(tenderLine, "tenderLine");

                var serviceRequest = new CalculateRequiredReasonCodesServiceRequest(transaction, sourceType, new[] { tenderLine });

                CalculateRequiredReasonCodesHelper(requestContext, serviceRequest);
            }
            /// <summary>
            /// Calculates the required reason codes on the current sales transaction level.
            /// </summary>
            /// <param name="requestContext">The request context.</param>
            /// <param name="salesTransaction">The sales transaction.</param>
            /// <param name="sourceType">Type of the source.</param>
            public static void CalculateRequiredReasonCodesOnTransaction(RequestContext requestContext, SalesTransaction salesTransaction, ReasonCodeSourceType sourceType)
            {
                ThrowIf.Null(requestContext, "requestContext");
                ThrowIf.Null(salesTransaction, "salesTransaction");

                var serviceRequest = new CalculateRequiredReasonCodesServiceRequest(salesTransaction, sourceType);

                CalculateRequiredReasonCodesHelper(requestContext, serviceRequest);
            }