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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
        }