public static TaxOverrideType GetTaxOverrideType(string taxOverrideType) { TaxOverrideType oTaxOverrideType = TaxOverrideType.None; switch (taxOverrideType) { case "None": oTaxOverrideType = TaxOverrideType.None; break; case "TaxAmount": oTaxOverrideType = TaxOverrideType.TaxAmount; break; case "Exemption": oTaxOverrideType = TaxOverrideType.Exemption; break; case "TaxDate": oTaxOverrideType = TaxOverrideType.TaxDate; break; case "AccruedTaxAmount": oTaxOverrideType = TaxOverrideType.AccruedTaxAmount; break; default: break; } return(oTaxOverrideType); }
/// <summary> /// Add a global tax override to this transaction /// </summary> /// <param name="type"></param> /// <param name="taxAmount"></param> /// <param name="taxDate"></param> /// <returns></returns> public TransactionBuilder WithGlobalTaxOverride(TaxOverrideType type, decimal taxAmount, DateTime taxDate) { _model.taxOverride = new TaxOverrideModel() { type = type, reason = "global tax override", taxAmount = taxAmount, taxDate = taxDate }; // Continue building return(this); }
/// <summary> /// Add a document-level Tax Override to the transaction. /// - A TaxDate override requires a valid DateTime object to be passed. /// TODO: Verify Tax Override constraints and add exceptions. /// </summary> /// <param name="type">Type of the Tax Override.</param> /// <param name="reason">Reason of the Tax Override.</param> /// <param name="taxAmount">Amount of tax to apply. Required for a TaxAmount Override.</param> /// <param name="taxDate">Date of a Tax Override. Required for a TaxDate Override.</param> /// <returns></returns> public TransactionBuilder WithTaxOverride(TaxOverrideType type, string reason, decimal taxAmount = 0, DateTime?taxDate = null) { _model.taxOverride = new TaxOverrideModel { type = type, reason = reason, taxAmount = taxAmount, taxDate = taxDate }; // Continue building return(this); }
/// <summary> /// Add a line-level Tax Override to the current line. /// - A TaxDate override requires a valid DateTime object to be passed. /// TODO: Verify Tax Override constraints and add exceptions. /// </summary> /// <param name="type">Type of the Tax Override.</param> /// <param name="reason">Reason of the Tax Override.</param> /// <param name="taxAmount">Amount of tax to apply. Required for a TaxAmount Override.</param> /// <param name="taxDate">Date of a Tax Override. Required for a TaxDate Override.</param> /// <returns></returns> public TransactionBuilder WithLineTaxOverride(TaxOverrideType type, string reason, decimal taxAmount = 0, DateTime?taxDate = null) { // Address the DateOverride constraint. if (type.Equals(TaxOverrideType.TaxDate) && taxDate == null) { throw new Exception("A valid date is required for a TaxDate Tax Override."); } var line = GetMostRecentLine("WithLineTaxOverride"); line.taxOverride = new TaxOverrideModel { type = type, reason = reason, taxAmount = taxAmount, taxDate = taxDate }; // Continue building return(this); }