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

// Product product
//
// swagger:model Product
type Product struct {

	// The ID of the Account that owns this product
	AccountID string `json:"AccountID,omitempty"`

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

	// Asset Tracking?
	AssetTracking bool `json:"AssetTracking,omitempty"`

	// ID of who created this record instance
	CreatedByID string `json:"CreatedByID,omitempty"`

	// Date of record creation
	CreatedDate string `json:"CreatedDate,omitempty"`

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

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

	// Display URL
	DisplayURL string `json:"DisplayURL,omitempty"`

	// Product Family
	Family string `json:"Family,omitempty"`

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

	// Image (500)
	Image500 string `json:"Image500,omitempty"`

	// Image (Full)
	ImageFull string `json:"ImageFull,omitempty"`

	// Inventory Tracking?
	InventoryTracking bool `json:"InventoryTracking,omitempty"`

	// Active
	IsActive bool `json:"IsActive,omitempty"`

	// isGeneric
	IsGeneric bool `json:"IsGeneric,omitempty"`

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

	// Last modified by ID
	LastModifiedByID string `json:"LastModifiedByID,omitempty"`

	// MRC Interval
	MRCInterval int64 `json:"MRCInterval,omitempty"`

	// MSRP
	MSRP float64 `json:"MSRP,omitempty"`

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

	// Manufacturer Product Code
	ManufacturerProductCode string `json:"ManufacturerProductCode,omitempty"`

	// Product Name
	Name string `json:"Name,omitempty"`

	// Product Code
	ProductCode string `json:"ProductCode,omitempty"`

	// Prorateable?
	Prorateable bool `json:"Prorateable,omitempty"`

	// Publish?
	Publish bool `json:"Publish,omitempty"`

	// Publish UPC
	PublishUPC string `json:"PublishUPC,omitempty"`

	// Quantity Unit Of Measure
	QuantityUnitOfMeasure string `json:"QuantityUnitOfMeasure,omitempty"`

	// Refundable?
	Refundable bool `json:"Refundable,omitempty"`

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

	// Shipping Weight
	ShippingWeight float64 `json:"ShippingWeight,omitempty"`

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

	// Taxnexus Code Name
	TaxnexusCode string `json:"TaxnexusCode,omitempty"`

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

	// tenant identifier
	TenantID string `json:"TenantID,omitempty"`

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

	// Vendor
	VendorID string `json:"VendorID,omitempty"`

	// Vendor Name
	VendorName string `json:"VendorName,omitempty"`

	// Vendor Part Number
	VendorPartNumber string `json:"VendorPartNumber,omitempty"`

	// Vendor Price
	VendorPrice float64 `json:"VendorPrice,omitempty"`
}

// Validate validates this product
func (m *Product) Validate(formats strfmt.Registry) error {
	return nil
}

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

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