from ..cw_model import CWModel


class TaxCode(CWModel):

    def __init__(self, json_dict=None):
        self.id = None  # (Integer)
        self.identifier = None  # *(String(8))
        self.description = None  # *(String(50))
        self.invoiceCaption = None  # *(String(25))
        self.country = None  # (CountryReference)
        self.effectiveDate = None  # *(String)
        self.defaultFlag = None  # (Boolean)
        self.displayOnInvoiceFlag = None  # (Boolean)
        self.canadaCalculateGSTFlag = None  # (Boolean)
        self.cancelDate = None  # (String)
        self.levelOneRate = None  # (Number)
        self.levelOneRateType = None  # (Enum)
        self.levelOneTaxableMax = None  # (Number)
        self.levelOneCaption = None  # (String(25))
        self.levelOneTaxCodeXref = None  # (String(50))
        self.levelOneAgencyXref = None  # (String(100))
        self.levelOneServicesFlag = None  # (Boolean)
        self.levelOneExpensesFlag = None  # (Boolean)
        self.levelOneProductsFlag = None  # (Boolean)
        self.levelOneApplySingleUnitFlag = None  # (Boolean)
        self.levelOneApplySingleUnitMin = None  # (Number)
        self.levelOneApplySingleUnitMax = None  # (Number)
        self.levelTwoRate = None  # (Number)
        self.levelTwoRateType = None  # (Enum)
        self.levelTwoTaxableMax = None  # (Number)
        self.levelTwoCaption = None  # (String(25))
        self.levelTwoTaxCodeXref = None  # (String(50))
        self.levelTwoAgencyXref = None  # (String(100))
        self.levelTwoServicesFlag = None  # (Boolean)
        self.levelTwoExpensesFlag = None  # (Boolean)
        self.levelTwoProductsFlag = None  # (Boolean)
        self.levelTwoApplySingleUnitFlag = None  # (Boolean)
        self.levelTwoApplySingleUnitMin = None  # (Number)
        self.levelTwoApplySingleUnitMax = None  # (Number)
        self.levelThreeRate = None  # (Number)
        self.levelThreeRateType = None  # (Enum)
        self.levelThreeTaxableMax = None  # (Number)
        self.levelThreeCaption = None  # (String(25))
        self.levelThreeTaxCodeXref = None  # (String(50))
        self.levelThreeAgencyXref = None  # (String(100))
        self.levelThreeServicesFlag = None  # (Boolean)
        self.levelThreeExpensesFlag = None  # (Boolean)
        self.levelThreeProductsFlag = None  # (Boolean)
        self.levelThreeApplySingleUnitFlag = None  # (Boolean)
        self.levelThreeApplySingleUnitMin = None  # (Number)
        self.levelThreeApplySingleUnitMax = None  # (Number)
        self.levelFourRate = None  # (Number)
        self.levelFourRateType = None  # (Enum)
        self.levelFourTaxableMax = None  # (Number)
        self.levelFourCaption = None  # (String(25))
        self.levelFourTaxCodeXref = None  # (String(50))
        self.levelFourAgencyXref = None  # (String(100))
        self.levelFourServicesFlag = None  # (Boolean)
        self.levelFourExpensesFlag = None  # (Boolean)
        self.levelFourProductsFlag = None  # (Boolean)
        self.levelFourApplySingleUnitFlag = None  # (Boolean)
        self.levelFourApplySingleUnitMin = None  # (Number)
        self.levelFourApplySingleUnitMax = None  # (Number)
        self.levelFiveRate = None  # (Number)
        self.levelFiveRateType = None  # (Enum)
        self.levelFiveTaxableMax = None  # (Number)
        self.levelFiveCaption = None  # (String(25))
        self.levelFiveTaxCodeXref = None  # (String(50))
        self.levelFiveAgencyXref = None  # (String(100))
        self.levelFiveServicesFlag = None  # (Boolean)
        self.levelFiveExpensesFlag = None  # (Boolean)
        self.levelFiveProductsFlag = None  # (Boolean)
        self.levelFiveApplySingleUnitFlag = None  # (Boolean)
        self.levelFiveApplySingleUnitMin = None  # (Number)
        self.levelFiveApplySingleUnitMax = None  # (Number)
        self._info = None  # (Metadata)

        # initialize object with json dict
        super().__init__(json_dict)
