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