// Code generated by go-swagger; DO NOT EDIT.

// All Code Copyright(c) 2018-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed

package geo_models

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/swag"
)

// TaxType tax type
//
// swagger:model TaxType
type TaxType struct {

	// Taxing Authority Account Id
	AccountID string `json:"AccountID,omitempty"`

	// The Accounting Rule Code for this Tax Type
	AccountingRuleCode string `json:"AccountingRuleCode,omitempty"`

	// Agency Type
	AgencyType string `json:"AgencyType,omitempty"`

	// Collection Agent Id
	AgentID string `json:"AgentID,omitempty"`

	// Category
	Category string `json:"Category,omitempty"`

	// Collector Domain Id
	CollectorDomainID string `json:"CollectorDomainID,omitempty"`

	// Company ID
	CompanyID string `json:"CompanyID,omitempty"`

	// Authority Contact Id
	ContactID string `json:"ContactID,omitempty"`

	// Created By User ID
	CreatedByID string `json:"CreatedByID,omitempty"`

	// Created Date
	CreatedDate string `json:"CreatedDate,omitempty"`

	// Description
	Description string `json:"Description,omitempty"`

	// Effective Date
	EffectiveDate string `json:"EffectiveDate,omitempty"`

	// End Date
	EndDate string `json:"EndDate,omitempty"`

	// Enrollment Status
	EnrollmentStatus string `json:"EnrollmentStatus,omitempty"`

	// Filing City
	FilingCity string `json:"FilingCity,omitempty"`

	// Filing Country
	FilingCountry string `json:"FilingCountry,omitempty"`

	// Filing Email
	FilingEmail string `json:"FilingEmail,omitempty"`

	// Filing Method
	FilingMethod string `json:"FilingMethod,omitempty"`

	// Filing Postal Code
	FilingPostalCode string `json:"FilingPostalCode,omitempty"`

	// Filing State
	FilingState string `json:"FilingState,omitempty"`

	// Filing Street
	FilingStreet string `json:"FilingStreet,omitempty"`

	// Does this Tax Type use a Fractional Basis for calculation?
	Fractional bool `json:"Fractional,omitempty"`

	// Frequency
	Frequency string `json:"Frequency,omitempty"`

	// Geocode String
	GeocodeString string `json:"GeocodeString,omitempty"`

	// Taxnexus Record Id
	ID string `json:"ID,omitempty"`

	// Interest Rate
	InterestRate float64 `json:"InterestRate,omitempty"`

	// Medicinal-use cannabis consumption exemption doesn't apply
	IsMedicinal bool `json:"IsMedicinal,omitempty"`

	// For Adult-use cannabis consumption only
	IsRecreational bool `json:"IsRecreational,omitempty"`

	// Last Modified By User ID
	LastModifiedByID string `json:"LastModifiedByID,omitempty"`

	// Last Modified Date
	LastModifiedDate string `json:"LastModifiedDate,omitempty"`

	// Wholesale markup rate used in Excise Tax (CA cannabis)
	MarkupRate float64 `json:"MarkupRate,omitempty"`

	// Tax Type Name (unique)
	Name string `json:"Name,omitempty"`

	// Is this tax allowed to be passed-through to retail customers?
	PassThrough bool `json:"PassThrough,omitempty"`

	// Number of days until Penalty is assessed
	PenaltyDays int64 `json:"PenaltyDays,omitempty"`

	// The percentage rate of a Penalty (per month)
	PenaltyRate float64 `json:"PenaltyRate,omitempty"`

	// Tax Rate
	Rate float64 `json:"Rate,omitempty"`

	// Tax Authority Website Reference
	Reference string `json:"Reference,omitempty"`

	// Salesregulation Code for this TaxType
	SalesRegulation string `json:"SalesRegulation,omitempty"`

	// TaxType Document Status
	Status string `json:"Status,omitempty"`

	// Taxnexus Code Id
	TaxnexusCodeID string `json:"TaxnexusCodeID,omitempty"`

	// The Tax Type number assigned by Taxnexus
	TaxnexusNumber string `json:"TaxnexusNumber,omitempty"`

	// Rendering Template Id
	TemplateID string `json:"TemplateID,omitempty"`

	// Units
	Units string `json:"Units,omitempty"`
}

// Validate validates this tax type
func (m *TaxType) Validate(formats strfmt.Registry) error {
	return nil
}

// MarshalBinary interface implementation
func (m *TaxType) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

// UnmarshalBinary interface implementation
func (m *TaxType) UnmarshalBinary(b []byte) error {
	var res TaxType
	if err := swag.ReadJSON(b, &res); err != nil {
		return err
	}
	*m = res
	return nil
}
