// 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 ops_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"
)

// TaxTransaction tax transaction
//
// swagger:model TaxTransaction
type TaxTransaction struct {

	// Account ID
	AccountID string `json:"AccountID,omitempty"`

	// Accounting Rule code
	AccountingRuleCode string `json:"AccountingRuleCode,omitempty"`

	// Total Amount Due (same as Tax)
	Amount float64 `json:"Amount,omitempty"`

	// Coordinate ID
	CoordinateID string `json:"CoordinateID,omitempty"`

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

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

	// Customer ID
	CustomerID string `json:"CustomerID,omitempty"`

	// Tax or Fee Name
	DisplayName string `json:"DisplayName,omitempty"`

	// Effective Rate
	EffectiveRate float64 `json:"EffectiveRate,omitempty"`

	// Filing ID
	FilingID string `json:"FilingID,omitempty"`

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

	// Ingest ID
	IngestID string `json:"IngestID,omitempty"`

	// Invoice ID
	InvoiceID string `json:"InvoiceID,omitempty"`

	// Invoiceitem ID
	InvoiceItemID string `json:"InvoiceItemID,omitempty"`

	// Is this a summary record?
	IsSummary bool `json:"IsSummary,omitempty"`

	// Job ID
	JobID string `json:"JobID,omitempty"`

	// Journal Item ID
	JournalItemID string `json:"JournalItemID,omitempty"`

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

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

	// Order ID
	OrderID string `json:"OrderID,omitempty"`

	// Order Item ID
	OrderItemID string `json:"OrderItemID,omitempty"`

	// PO ID
	POID string `json:"POID,omitempty"`

	// PO Item ID
	POItemID string `json:"POItemID,omitempty"`

	// Parent Ref copied from source
	ParentRef string `json:"ParentRef,omitempty"`

	// Percent Taxable
	PercentTaxable float64 `json:"PercentTaxable,omitempty"`

	// Period ID
	PeriodID string `json:"PeriodID,omitempty"`

	// The Taxnexus Geocode of the Place used for Situs
	PlaceGeocode string `json:"PlaceGeocode,omitempty"`

	// Place ID
	PlaceID string `json:"PlaceID,omitempty"`

	// Posted to external system?
	Posted bool `json:"Posted,omitempty"`

	// Order ID
	QuoteID string `json:"QuoteID,omitempty"`

	// Order Item ID
	QuoteItemID string `json:"QuoteItemID,omitempty"`

	// The Type of Object that was rated
	RatingType string `json:"RatingType,omitempty"`

	// Source System identifier for this record, if any
	Ref string `json:"Ref,omitempty"`

	// The Revenue Amount that was taxed before any adjustments
	RevenueBase float64 `json:"RevenueBase,omitempty"`

	// The Revenue Amount that was taxed after any adjustments
	RevenueNet float64 `json:"RevenueNet,omitempty"`

	// The Revenue Amount that was not taxed
	RevenueNotTaxable float64 `json:"RevenueNotTaxable,omitempty"`

	// Tax Exempt Revenue
	TaxExemptRevenue float64 `json:"TaxExemptRevenue,omitempty"`

	// Additional Tax calculated due to regulatory requirements
	TaxOnTax float64 `json:"TaxOnTax,omitempty"`

	// The Tax Rate used for calculation
	TaxRate float64 `json:"TaxRate,omitempty"`

	// TaxType Account ID
	TaxTypeAccountID string `json:"TaxTypeAccountID,omitempty"`

	// TaxType ID
	TaxTypeID string `json:"TaxTypeID,omitempty"`

	// The Taxnexus Code for the Tax Type
	TaxnexusCodeDisplay string `json:"TaxnexusCodeDisplay,omitempty"`

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

	// ID of the Tenant that owns this object
	TenantID string `json:"TenantID,omitempty"`

	// Unit Base
	UnitBase float64 `json:"UnitBase,omitempty"`

	// Unit Fee Rate
	UnitFeeRate float64 `json:"UnitFeeRate,omitempty"`
}

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

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

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