/// <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); }