/// <summary> /// Applies the line level override. /// </summary> /// <param name="salesTransaction">The sales transaction.</param> /// <param name="taxOverride">The tax override.</param> /// <param name="lineId">The line id.</param> /// <returns>True if tax override successfully applied, false otherwise.</returns> private static bool ApplyLineLevelOverride(SalesTransaction salesTransaction, TaxOverride taxOverride, string lineId) { // get the applicable line var line = salesTransaction.SalesLines.Where(l => l.LineId == lineId).FirstOrDefault(); bool overridden = false; if (line != null) { switch (taxOverride.OverrideType) { case TaxOverrideType.ItemSalesTaxGroup: if (string.IsNullOrWhiteSpace(taxOverride.SourceTaxGroup) || taxOverride.SourceTaxGroup.Equals(line.ItemTaxGroupId, StringComparison.OrdinalIgnoreCase)) { line.OriginalItemTaxGroupId = line.ItemTaxGroupId; line.ItemTaxGroupId = taxOverride.DestinationItemTaxGroup; overridden = true; } break; case TaxOverrideType.SalesTaxGroup: if (string.IsNullOrWhiteSpace(taxOverride.SourceTaxGroup) || taxOverride.SourceTaxGroup.Equals(line.SalesTaxGroupId, StringComparison.OrdinalIgnoreCase)) { line.OriginalSalesTaxGroupId = line.SalesTaxGroupId; line.SalesTaxGroupId = taxOverride.DestinationTaxGroup; overridden = true; } break; } line.TaxOverrideCode = taxOverride.Code; } return(overridden); }
/// <summary> /// Applies the transaction level override. /// </summary> /// <param name="transaction">The transaction.</param> /// <param name="taxOverride">The tax override.</param> /// <returns>True if tax override successfully applied, false otherwise.</returns> private static bool ApplyTransactionLevelOverride(SalesTransaction transaction, TaxOverride taxOverride) { bool overridden = false; transaction.TaxOverrideCode = taxOverride.Code; if (transaction.SalesLines != null && transaction.SalesLines.Any()) { foreach (var line in transaction.SalesLines) { overridden |= ApplyLineLevelOverride(transaction, taxOverride, line.LineId); } } return(overridden); }