<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for NonInventorySaleItem StructType
 * Meta information extracted from the WSDL
 * - type: listAcct:NonInventorySaleItem
 * @subpackage Structs
 */
class NonInventorySaleItem extends Record
{
    /**
     * The createdDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $createdDate;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $lastModifiedDate;
    /**
     * The salesDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $salesDescription;
    /**
     * The includeChildren
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $includeChildren;
    /**
     * The incomeAccount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $incomeAccount;
    /**
     * The isTaxable
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isTaxable;
    /**
     * The matrixType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $matrixType;
    /**
     * The taxSchedule
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $taxSchedule;
    /**
     * The shippingCost
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $shippingCost;
    /**
     * The shippingCostUnits
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $shippingCostUnits;
    /**
     * The handlingCost
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $handlingCost;
    /**
     * The handlingCostUnits
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $handlingCostUnits;
    /**
     * The costEstimateType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $costEstimateType;
    /**
     * The costEstimate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $costEstimate;
    /**
     * The weight
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $weight;
    /**
     * The weightUnit
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $weightUnit;
    /**
     * The weightUnits
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $weightUnits;
    /**
     * The costEstimateUnits
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $costEstimateUnits;
    /**
     * The unitsType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $unitsType;
    /**
     * The saleUnit
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $saleUnit;
    /**
     * The issueProduct
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $issueProduct;
    /**
     * The billingSchedule
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $billingSchedule;
    /**
     * The deferredRevenueAccount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $deferredRevenueAccount;
    /**
     * The revRecSchedule
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $revRecSchedule;
    /**
     * The stockDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $stockDescription;
    /**
     * The isHazmatItem
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isHazmatItem;
    /**
     * The hazmatId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $hazmatId;
    /**
     * The hazmatShippingName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $hazmatShippingName;
    /**
     * The hazmatHazardClass
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $hazmatHazardClass;
    /**
     * The hazmatPackingGroup
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $hazmatPackingGroup;
    /**
     * The hazmatItemUnits
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $hazmatItemUnits;
    /**
     * The hazmatItemUnitsQty
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $hazmatItemUnitsQty;
    /**
     * The producer
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $producer;
    /**
     * The manufacturer
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $manufacturer;
    /**
     * The mpn
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $mpn;
    /**
     * The multManufactureAddr
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $multManufactureAddr;
    /**
     * The manufacturerAddr1
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $manufacturerAddr1;
    /**
     * The manufacturerCity
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $manufacturerCity;
    /**
     * The manufacturerState
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $manufacturerState;
    /**
     * The manufacturerZip
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $manufacturerZip;
    /**
     * The countryOfManufacture
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $countryOfManufacture;
    /**
     * The manufacturerTaxId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $manufacturerTaxId;
    /**
     * The scheduleBNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $scheduleBNumber;
    /**
     * The scheduleBQuantity
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $scheduleBQuantity;
    /**
     * The scheduleBCode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $scheduleBCode;
    /**
     * The manufacturerTariff
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $manufacturerTariff;
    /**
     * The preferenceCriterion
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $preferenceCriterion;
    /**
     * The minimumQuantity
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $minimumQuantity;
    /**
     * The enforceMinQtyInternally
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $enforceMinQtyInternally;
    /**
     * The maximumQuantity
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $maximumQuantity;
    /**
     * The softDescriptor
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $softDescriptor;
    /**
     * The shipPackage
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $shipPackage;
    /**
     * The shipIndividually
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $shipIndividually;
    /**
     * The isFulfillable
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isFulfillable;
    /**
     * The costCategory
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $costCategory;
    /**
     * The pricesIncludeTax
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $pricesIncludeTax;
    /**
     * The quantityPricingSchedule
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $quantityPricingSchedule;
    /**
     * The useMarginalRates
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $useMarginalRates;
    /**
     * The overallQuantityPricingType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $overallQuantityPricingType;
    /**
     * The pricingGroup
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $pricingGroup;
    /**
     * The minimumQuantityUnits
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $minimumQuantityUnits;
    /**
     * The vsoePrice
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $vsoePrice;
    /**
     * The vsoeSopGroup
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $vsoeSopGroup;
    /**
     * The vsoeDeferral
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $vsoeDeferral;
    /**
     * The vsoePermitDiscount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $vsoePermitDiscount;
    /**
     * The vsoeDelivered
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $vsoeDelivered;
    /**
     * The itemRevenueCategory
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $itemRevenueCategory;
    /**
     * The deferRevRec
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $deferRevRec;
    /**
     * The revenueRecognitionRule
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $revenueRecognitionRule;
    /**
     * The revRecForecastRule
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $revRecForecastRule;
    /**
     * The revenueAllocationGroup
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $revenueAllocationGroup;
    /**
     * The createRevenuePlansOn
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $createRevenuePlansOn;
    /**
     * The directRevenuePosting
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $directRevenuePosting;
    /**
     * The contingentRevenueHandling
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $contingentRevenueHandling;
    /**
     * The revReclassFXAccount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $revReclassFXAccount;
    /**
     * The storeDisplayName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $storeDisplayName;
    /**
     * The storeDisplayThumbnail
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $storeDisplayThumbnail;
    /**
     * The storeDisplayImage
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $storeDisplayImage;
    /**
     * The storeDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $storeDescription;
    /**
     * The storeDetailedDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $storeDetailedDescription;
    /**
     * The storeItemTemplate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $storeItemTemplate;
    /**
     * The pageTitle
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $pageTitle;
    /**
     * The metaTagHtml
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $metaTagHtml;
    /**
     * The excludeFromSitemap
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $excludeFromSitemap;
    /**
     * The sitemapPriority
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $sitemapPriority;
    /**
     * The searchKeywords
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $searchKeywords;
    /**
     * The isDonationItem
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isDonationItem;
    /**
     * The showDefaultDonationAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $showDefaultDonationAmount;
    /**
     * The maxDonationAmount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $maxDonationAmount;
    /**
     * The dontShowPrice
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $dontShowPrice;
    /**
     * The noPriceMessage
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $noPriceMessage;
    /**
     * The outOfStockMessage
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $outOfStockMessage;
    /**
     * The onSpecial
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $onSpecial;
    /**
     * The outOfStockBehavior
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $outOfStockBehavior;
    /**
     * The relatedItemsDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $relatedItemsDescription;
    /**
     * The specialsDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $specialsDescription;
    /**
     * The featuredDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $featuredDescription;
    /**
     * The shoppingDotComCategory
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $shoppingDotComCategory;
    /**
     * The shopzillaCategoryId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $shopzillaCategoryId;
    /**
     * The nexTagCategory
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $nexTagCategory;
    /**
     * The productFeedList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ProductFeedList
     */
    public $productFeedList;
    /**
     * The urlComponent
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $urlComponent;
    /**
     * The customForm
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $customForm;
    /**
     * The itemId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $itemId;
    /**
     * The upcCode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $upcCode;
    /**
     * The displayName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $displayName;
    /**
     * The parent
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $parent;
    /**
     * The isOnline
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isOnline;
    /**
     * The isGcoCompliant
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isGcoCompliant;
    /**
     * The offerSupport
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $offerSupport;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isInactive;
    /**
     * The matrixItemNameTemplate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $matrixItemNameTemplate;
    /**
     * The availableToPartners
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $availableToPartners;
    /**
     * The department
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $department;
    /**
     * The class
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $class;
    /**
     * The location
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $location;
    /**
     * The defaultItemShipMethod
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $defaultItemShipMethod;
    /**
     * The itemCarrier
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $itemCarrier;
    /**
     * The itemShipMethodList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRefList
     */
    public $itemShipMethodList;
    /**
     * The subsidiaryList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRefList
     */
    public $subsidiaryList;
    /**
     * The itemOptionsList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ItemOptionsList
     */
    public $itemOptionsList;
    /**
     * The matrixOptionList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\MatrixOptionList
     */
    public $matrixOptionList;
    /**
     * The pricingMatrix
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\PricingMatrix
     */
    public $pricingMatrix;
    /**
     * The accountingBookDetailList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ItemAccountingBookDetailList
     */
    public $accountingBookDetailList;
    /**
     * The purchaseTaxCode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $purchaseTaxCode;
    /**
     * The rate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $rate;
    /**
     * The salesTaxCode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $salesTaxCode;
    /**
     * The siteCategoryList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SiteCategoryList
     */
    public $siteCategoryList;
    /**
     * The translationsList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\TranslationList
     */
    public $translationsList;
    /**
     * The presentationItemList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\PresentationItemList
     */
    public $presentationItemList;
    /**
     * The hierarchyVersionsList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\NonInventorySaleItemHierarchyVersionsList
     */
    public $hierarchyVersionsList;
    /**
     * The consumptionUnit
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $consumptionUnit;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\CustomFieldList
     */
    public $customFieldList;
    /**
     * The internalId
     * @var string
     */
    public $internalId;
    /**
     * The externalId
     * @var string
     */
    public $externalId;
    /**
     * Constructor method for NonInventorySaleItem
     * @uses NonInventorySaleItem::setCreatedDate()
     * @uses NonInventorySaleItem::setLastModifiedDate()
     * @uses NonInventorySaleItem::setSalesDescription()
     * @uses NonInventorySaleItem::setIncludeChildren()
     * @uses NonInventorySaleItem::setIncomeAccount()
     * @uses NonInventorySaleItem::setIsTaxable()
     * @uses NonInventorySaleItem::setMatrixType()
     * @uses NonInventorySaleItem::setTaxSchedule()
     * @uses NonInventorySaleItem::setShippingCost()
     * @uses NonInventorySaleItem::setShippingCostUnits()
     * @uses NonInventorySaleItem::setHandlingCost()
     * @uses NonInventorySaleItem::setHandlingCostUnits()
     * @uses NonInventorySaleItem::setCostEstimateType()
     * @uses NonInventorySaleItem::setCostEstimate()
     * @uses NonInventorySaleItem::setWeight()
     * @uses NonInventorySaleItem::setWeightUnit()
     * @uses NonInventorySaleItem::setWeightUnits()
     * @uses NonInventorySaleItem::setCostEstimateUnits()
     * @uses NonInventorySaleItem::setUnitsType()
     * @uses NonInventorySaleItem::setSaleUnit()
     * @uses NonInventorySaleItem::setIssueProduct()
     * @uses NonInventorySaleItem::setBillingSchedule()
     * @uses NonInventorySaleItem::setDeferredRevenueAccount()
     * @uses NonInventorySaleItem::setRevRecSchedule()
     * @uses NonInventorySaleItem::setStockDescription()
     * @uses NonInventorySaleItem::setIsHazmatItem()
     * @uses NonInventorySaleItem::setHazmatId()
     * @uses NonInventorySaleItem::setHazmatShippingName()
     * @uses NonInventorySaleItem::setHazmatHazardClass()
     * @uses NonInventorySaleItem::setHazmatPackingGroup()
     * @uses NonInventorySaleItem::setHazmatItemUnits()
     * @uses NonInventorySaleItem::setHazmatItemUnitsQty()
     * @uses NonInventorySaleItem::setProducer()
     * @uses NonInventorySaleItem::setManufacturer()
     * @uses NonInventorySaleItem::setMpn()
     * @uses NonInventorySaleItem::setMultManufactureAddr()
     * @uses NonInventorySaleItem::setManufacturerAddr1()
     * @uses NonInventorySaleItem::setManufacturerCity()
     * @uses NonInventorySaleItem::setManufacturerState()
     * @uses NonInventorySaleItem::setManufacturerZip()
     * @uses NonInventorySaleItem::setCountryOfManufacture()
     * @uses NonInventorySaleItem::setManufacturerTaxId()
     * @uses NonInventorySaleItem::setScheduleBNumber()
     * @uses NonInventorySaleItem::setScheduleBQuantity()
     * @uses NonInventorySaleItem::setScheduleBCode()
     * @uses NonInventorySaleItem::setManufacturerTariff()
     * @uses NonInventorySaleItem::setPreferenceCriterion()
     * @uses NonInventorySaleItem::setMinimumQuantity()
     * @uses NonInventorySaleItem::setEnforceMinQtyInternally()
     * @uses NonInventorySaleItem::setMaximumQuantity()
     * @uses NonInventorySaleItem::setSoftDescriptor()
     * @uses NonInventorySaleItem::setShipPackage()
     * @uses NonInventorySaleItem::setShipIndividually()
     * @uses NonInventorySaleItem::setIsFulfillable()
     * @uses NonInventorySaleItem::setCostCategory()
     * @uses NonInventorySaleItem::setPricesIncludeTax()
     * @uses NonInventorySaleItem::setQuantityPricingSchedule()
     * @uses NonInventorySaleItem::setUseMarginalRates()
     * @uses NonInventorySaleItem::setOverallQuantityPricingType()
     * @uses NonInventorySaleItem::setPricingGroup()
     * @uses NonInventorySaleItem::setMinimumQuantityUnits()
     * @uses NonInventorySaleItem::setVsoePrice()
     * @uses NonInventorySaleItem::setVsoeSopGroup()
     * @uses NonInventorySaleItem::setVsoeDeferral()
     * @uses NonInventorySaleItem::setVsoePermitDiscount()
     * @uses NonInventorySaleItem::setVsoeDelivered()
     * @uses NonInventorySaleItem::setItemRevenueCategory()
     * @uses NonInventorySaleItem::setDeferRevRec()
     * @uses NonInventorySaleItem::setRevenueRecognitionRule()
     * @uses NonInventorySaleItem::setRevRecForecastRule()
     * @uses NonInventorySaleItem::setRevenueAllocationGroup()
     * @uses NonInventorySaleItem::setCreateRevenuePlansOn()
     * @uses NonInventorySaleItem::setDirectRevenuePosting()
     * @uses NonInventorySaleItem::setContingentRevenueHandling()
     * @uses NonInventorySaleItem::setRevReclassFXAccount()
     * @uses NonInventorySaleItem::setStoreDisplayName()
     * @uses NonInventorySaleItem::setStoreDisplayThumbnail()
     * @uses NonInventorySaleItem::setStoreDisplayImage()
     * @uses NonInventorySaleItem::setStoreDescription()
     * @uses NonInventorySaleItem::setStoreDetailedDescription()
     * @uses NonInventorySaleItem::setStoreItemTemplate()
     * @uses NonInventorySaleItem::setPageTitle()
     * @uses NonInventorySaleItem::setMetaTagHtml()
     * @uses NonInventorySaleItem::setExcludeFromSitemap()
     * @uses NonInventorySaleItem::setSitemapPriority()
     * @uses NonInventorySaleItem::setSearchKeywords()
     * @uses NonInventorySaleItem::setIsDonationItem()
     * @uses NonInventorySaleItem::setShowDefaultDonationAmount()
     * @uses NonInventorySaleItem::setMaxDonationAmount()
     * @uses NonInventorySaleItem::setDontShowPrice()
     * @uses NonInventorySaleItem::setNoPriceMessage()
     * @uses NonInventorySaleItem::setOutOfStockMessage()
     * @uses NonInventorySaleItem::setOnSpecial()
     * @uses NonInventorySaleItem::setOutOfStockBehavior()
     * @uses NonInventorySaleItem::setRelatedItemsDescription()
     * @uses NonInventorySaleItem::setSpecialsDescription()
     * @uses NonInventorySaleItem::setFeaturedDescription()
     * @uses NonInventorySaleItem::setShoppingDotComCategory()
     * @uses NonInventorySaleItem::setShopzillaCategoryId()
     * @uses NonInventorySaleItem::setNexTagCategory()
     * @uses NonInventorySaleItem::setProductFeedList()
     * @uses NonInventorySaleItem::setUrlComponent()
     * @uses NonInventorySaleItem::setCustomForm()
     * @uses NonInventorySaleItem::setItemId()
     * @uses NonInventorySaleItem::setUpcCode()
     * @uses NonInventorySaleItem::setDisplayName()
     * @uses NonInventorySaleItem::setParent()
     * @uses NonInventorySaleItem::setIsOnline()
     * @uses NonInventorySaleItem::setIsGcoCompliant()
     * @uses NonInventorySaleItem::setOfferSupport()
     * @uses NonInventorySaleItem::setIsInactive()
     * @uses NonInventorySaleItem::setMatrixItemNameTemplate()
     * @uses NonInventorySaleItem::setAvailableToPartners()
     * @uses NonInventorySaleItem::setDepartment()
     * @uses NonInventorySaleItem::setClass()
     * @uses NonInventorySaleItem::setLocation()
     * @uses NonInventorySaleItem::setDefaultItemShipMethod()
     * @uses NonInventorySaleItem::setItemCarrier()
     * @uses NonInventorySaleItem::setItemShipMethodList()
     * @uses NonInventorySaleItem::setSubsidiaryList()
     * @uses NonInventorySaleItem::setItemOptionsList()
     * @uses NonInventorySaleItem::setMatrixOptionList()
     * @uses NonInventorySaleItem::setPricingMatrix()
     * @uses NonInventorySaleItem::setAccountingBookDetailList()
     * @uses NonInventorySaleItem::setPurchaseTaxCode()
     * @uses NonInventorySaleItem::setRate()
     * @uses NonInventorySaleItem::setSalesTaxCode()
     * @uses NonInventorySaleItem::setSiteCategoryList()
     * @uses NonInventorySaleItem::setTranslationsList()
     * @uses NonInventorySaleItem::setPresentationItemList()
     * @uses NonInventorySaleItem::setHierarchyVersionsList()
     * @uses NonInventorySaleItem::setConsumptionUnit()
     * @uses NonInventorySaleItem::setCustomFieldList()
     * @uses NonInventorySaleItem::setInternalId()
     * @uses NonInventorySaleItem::setExternalId()
     * @param string $createdDate
     * @param string $lastModifiedDate
     * @param string $salesDescription
     * @param bool $includeChildren
     * @param \StructType\RecordRef $incomeAccount
     * @param bool $isTaxable
     * @param string $matrixType
     * @param \StructType\RecordRef $taxSchedule
     * @param float $shippingCost
     * @param string $shippingCostUnits
     * @param float $handlingCost
     * @param string $handlingCostUnits
     * @param string $costEstimateType
     * @param float $costEstimate
     * @param float $weight
     * @param string $weightUnit
     * @param string $weightUnits
     * @param string $costEstimateUnits
     * @param \StructType\RecordRef $unitsType
     * @param \StructType\RecordRef $saleUnit
     * @param \StructType\RecordRef $issueProduct
     * @param \StructType\RecordRef $billingSchedule
     * @param \StructType\RecordRef $deferredRevenueAccount
     * @param \StructType\RecordRef $revRecSchedule
     * @param string $stockDescription
     * @param bool $isHazmatItem
     * @param string $hazmatId
     * @param string $hazmatShippingName
     * @param string $hazmatHazardClass
     * @param string $hazmatPackingGroup
     * @param string $hazmatItemUnits
     * @param float $hazmatItemUnitsQty
     * @param bool $producer
     * @param string $manufacturer
     * @param string $mpn
     * @param bool $multManufactureAddr
     * @param string $manufacturerAddr1
     * @param string $manufacturerCity
     * @param string $manufacturerState
     * @param string $manufacturerZip
     * @param string $countryOfManufacture
     * @param string $manufacturerTaxId
     * @param string $scheduleBNumber
     * @param int $scheduleBQuantity
     * @param string $scheduleBCode
     * @param string $manufacturerTariff
     * @param string $preferenceCriterion
     * @param int $minimumQuantity
     * @param bool $enforceMinQtyInternally
     * @param int $maximumQuantity
     * @param string $softDescriptor
     * @param \StructType\RecordRef $shipPackage
     * @param bool $shipIndividually
     * @param bool $isFulfillable
     * @param \StructType\RecordRef $costCategory
     * @param bool $pricesIncludeTax
     * @param \StructType\RecordRef $quantityPricingSchedule
     * @param bool $useMarginalRates
     * @param string $overallQuantityPricingType
     * @param \StructType\RecordRef $pricingGroup
     * @param string $minimumQuantityUnits
     * @param float $vsoePrice
     * @param string $vsoeSopGroup
     * @param string $vsoeDeferral
     * @param string $vsoePermitDiscount
     * @param bool $vsoeDelivered
     * @param \StructType\RecordRef $itemRevenueCategory
     * @param bool $deferRevRec
     * @param \StructType\RecordRef $revenueRecognitionRule
     * @param \StructType\RecordRef $revRecForecastRule
     * @param \StructType\RecordRef $revenueAllocationGroup
     * @param \StructType\RecordRef $createRevenuePlansOn
     * @param bool $directRevenuePosting
     * @param bool $contingentRevenueHandling
     * @param \StructType\RecordRef $revReclassFXAccount
     * @param string $storeDisplayName
     * @param \StructType\RecordRef $storeDisplayThumbnail
     * @param \StructType\RecordRef $storeDisplayImage
     * @param string $storeDescription
     * @param string $storeDetailedDescription
     * @param \StructType\RecordRef $storeItemTemplate
     * @param string $pageTitle
     * @param string $metaTagHtml
     * @param bool $excludeFromSitemap
     * @param string $sitemapPriority
     * @param string $searchKeywords
     * @param bool $isDonationItem
     * @param bool $showDefaultDonationAmount
     * @param float $maxDonationAmount
     * @param bool $dontShowPrice
     * @param string $noPriceMessage
     * @param string $outOfStockMessage
     * @param bool $onSpecial
     * @param string $outOfStockBehavior
     * @param string $relatedItemsDescription
     * @param string $specialsDescription
     * @param string $featuredDescription
     * @param string $shoppingDotComCategory
     * @param int $shopzillaCategoryId
     * @param string $nexTagCategory
     * @param \StructType\ProductFeedList $productFeedList
     * @param string $urlComponent
     * @param \StructType\RecordRef $customForm
     * @param string $itemId
     * @param string $upcCode
     * @param string $displayName
     * @param \StructType\RecordRef $parent
     * @param bool $isOnline
     * @param bool $isGcoCompliant
     * @param bool $offerSupport
     * @param bool $isInactive
     * @param string $matrixItemNameTemplate
     * @param bool $availableToPartners
     * @param \StructType\RecordRef $department
     * @param \StructType\RecordRef $class
     * @param \StructType\RecordRef $location
     * @param \StructType\RecordRef $defaultItemShipMethod
     * @param string $itemCarrier
     * @param \StructType\RecordRefList $itemShipMethodList
     * @param \StructType\RecordRefList $subsidiaryList
     * @param \StructType\ItemOptionsList $itemOptionsList
     * @param \StructType\MatrixOptionList $matrixOptionList
     * @param \StructType\PricingMatrix $pricingMatrix
     * @param \StructType\ItemAccountingBookDetailList $accountingBookDetailList
     * @param \StructType\RecordRef $purchaseTaxCode
     * @param float $rate
     * @param \StructType\RecordRef $salesTaxCode
     * @param \StructType\SiteCategoryList $siteCategoryList
     * @param \StructType\TranslationList $translationsList
     * @param \StructType\PresentationItemList $presentationItemList
     * @param \StructType\NonInventorySaleItemHierarchyVersionsList $hierarchyVersionsList
     * @param \StructType\RecordRef $consumptionUnit
     * @param \StructType\CustomFieldList $customFieldList
     * @param string $internalId
     * @param string $externalId
     */
    public function __construct($createdDate = null, $lastModifiedDate = null, $salesDescription = null, $includeChildren = null, \StructType\RecordRef $incomeAccount = null, $isTaxable = null, $matrixType = null, \StructType\RecordRef $taxSchedule = null, $shippingCost = null, $shippingCostUnits = null, $handlingCost = null, $handlingCostUnits = null, $costEstimateType = null, $costEstimate = null, $weight = null, $weightUnit = null, $weightUnits = null, $costEstimateUnits = null, \StructType\RecordRef $unitsType = null, \StructType\RecordRef $saleUnit = null, \StructType\RecordRef $issueProduct = null, \StructType\RecordRef $billingSchedule = null, \StructType\RecordRef $deferredRevenueAccount = null, \StructType\RecordRef $revRecSchedule = null, $stockDescription = null, $isHazmatItem = null, $hazmatId = null, $hazmatShippingName = null, $hazmatHazardClass = null, $hazmatPackingGroup = null, $hazmatItemUnits = null, $hazmatItemUnitsQty = null, $producer = null, $manufacturer = null, $mpn = null, $multManufactureAddr = null, $manufacturerAddr1 = null, $manufacturerCity = null, $manufacturerState = null, $manufacturerZip = null, $countryOfManufacture = null, $manufacturerTaxId = null, $scheduleBNumber = null, $scheduleBQuantity = null, $scheduleBCode = null, $manufacturerTariff = null, $preferenceCriterion = null, $minimumQuantity = null, $enforceMinQtyInternally = null, $maximumQuantity = null, $softDescriptor = null, \StructType\RecordRef $shipPackage = null, $shipIndividually = null, $isFulfillable = null, \StructType\RecordRef $costCategory = null, $pricesIncludeTax = null, \StructType\RecordRef $quantityPricingSchedule = null, $useMarginalRates = null, $overallQuantityPricingType = null, \StructType\RecordRef $pricingGroup = null, $minimumQuantityUnits = null, $vsoePrice = null, $vsoeSopGroup = null, $vsoeDeferral = null, $vsoePermitDiscount = null, $vsoeDelivered = null, \StructType\RecordRef $itemRevenueCategory = null, $deferRevRec = null, \StructType\RecordRef $revenueRecognitionRule = null, \StructType\RecordRef $revRecForecastRule = null, \StructType\RecordRef $revenueAllocationGroup = null, \StructType\RecordRef $createRevenuePlansOn = null, $directRevenuePosting = null, $contingentRevenueHandling = null, \StructType\RecordRef $revReclassFXAccount = null, $storeDisplayName = null, \StructType\RecordRef $storeDisplayThumbnail = null, \StructType\RecordRef $storeDisplayImage = null, $storeDescription = null, $storeDetailedDescription = null, \StructType\RecordRef $storeItemTemplate = null, $pageTitle = null, $metaTagHtml = null, $excludeFromSitemap = null, $sitemapPriority = null, $searchKeywords = null, $isDonationItem = null, $showDefaultDonationAmount = null, $maxDonationAmount = null, $dontShowPrice = null, $noPriceMessage = null, $outOfStockMessage = null, $onSpecial = null, $outOfStockBehavior = null, $relatedItemsDescription = null, $specialsDescription = null, $featuredDescription = null, $shoppingDotComCategory = null, $shopzillaCategoryId = null, $nexTagCategory = null, \StructType\ProductFeedList $productFeedList = null, $urlComponent = null, \StructType\RecordRef $customForm = null, $itemId = null, $upcCode = null, $displayName = null, \StructType\RecordRef $parent = null, $isOnline = null, $isGcoCompliant = null, $offerSupport = null, $isInactive = null, $matrixItemNameTemplate = null, $availableToPartners = null, \StructType\RecordRef $department = null, \StructType\RecordRef $class = null, \StructType\RecordRef $location = null, \StructType\RecordRef $defaultItemShipMethod = null, $itemCarrier = null, \StructType\RecordRefList $itemShipMethodList = null, \StructType\RecordRefList $subsidiaryList = null, \StructType\ItemOptionsList $itemOptionsList = null, \StructType\MatrixOptionList $matrixOptionList = null, \StructType\PricingMatrix $pricingMatrix = null, \StructType\ItemAccountingBookDetailList $accountingBookDetailList = null, \StructType\RecordRef $purchaseTaxCode = null, $rate = null, \StructType\RecordRef $salesTaxCode = null, \StructType\SiteCategoryList $siteCategoryList = null, \StructType\TranslationList $translationsList = null, \StructType\PresentationItemList $presentationItemList = null, \StructType\NonInventorySaleItemHierarchyVersionsList $hierarchyVersionsList = null, \StructType\RecordRef $consumptionUnit = null, \StructType\CustomFieldList $customFieldList = null, $internalId = null, $externalId = null)
    {
        $this
            ->setCreatedDate($createdDate)
            ->setLastModifiedDate($lastModifiedDate)
            ->setSalesDescription($salesDescription)
            ->setIncludeChildren($includeChildren)
            ->setIncomeAccount($incomeAccount)
            ->setIsTaxable($isTaxable)
            ->setMatrixType($matrixType)
            ->setTaxSchedule($taxSchedule)
            ->setShippingCost($shippingCost)
            ->setShippingCostUnits($shippingCostUnits)
            ->setHandlingCost($handlingCost)
            ->setHandlingCostUnits($handlingCostUnits)
            ->setCostEstimateType($costEstimateType)
            ->setCostEstimate($costEstimate)
            ->setWeight($weight)
            ->setWeightUnit($weightUnit)
            ->setWeightUnits($weightUnits)
            ->setCostEstimateUnits($costEstimateUnits)
            ->setUnitsType($unitsType)
            ->setSaleUnit($saleUnit)
            ->setIssueProduct($issueProduct)
            ->setBillingSchedule($billingSchedule)
            ->setDeferredRevenueAccount($deferredRevenueAccount)
            ->setRevRecSchedule($revRecSchedule)
            ->setStockDescription($stockDescription)
            ->setIsHazmatItem($isHazmatItem)
            ->setHazmatId($hazmatId)
            ->setHazmatShippingName($hazmatShippingName)
            ->setHazmatHazardClass($hazmatHazardClass)
            ->setHazmatPackingGroup($hazmatPackingGroup)
            ->setHazmatItemUnits($hazmatItemUnits)
            ->setHazmatItemUnitsQty($hazmatItemUnitsQty)
            ->setProducer($producer)
            ->setManufacturer($manufacturer)
            ->setMpn($mpn)
            ->setMultManufactureAddr($multManufactureAddr)
            ->setManufacturerAddr1($manufacturerAddr1)
            ->setManufacturerCity($manufacturerCity)
            ->setManufacturerState($manufacturerState)
            ->setManufacturerZip($manufacturerZip)
            ->setCountryOfManufacture($countryOfManufacture)
            ->setManufacturerTaxId($manufacturerTaxId)
            ->setScheduleBNumber($scheduleBNumber)
            ->setScheduleBQuantity($scheduleBQuantity)
            ->setScheduleBCode($scheduleBCode)
            ->setManufacturerTariff($manufacturerTariff)
            ->setPreferenceCriterion($preferenceCriterion)
            ->setMinimumQuantity($minimumQuantity)
            ->setEnforceMinQtyInternally($enforceMinQtyInternally)
            ->setMaximumQuantity($maximumQuantity)
            ->setSoftDescriptor($softDescriptor)
            ->setShipPackage($shipPackage)
            ->setShipIndividually($shipIndividually)
            ->setIsFulfillable($isFulfillable)
            ->setCostCategory($costCategory)
            ->setPricesIncludeTax($pricesIncludeTax)
            ->setQuantityPricingSchedule($quantityPricingSchedule)
            ->setUseMarginalRates($useMarginalRates)
            ->setOverallQuantityPricingType($overallQuantityPricingType)
            ->setPricingGroup($pricingGroup)
            ->setMinimumQuantityUnits($minimumQuantityUnits)
            ->setVsoePrice($vsoePrice)
            ->setVsoeSopGroup($vsoeSopGroup)
            ->setVsoeDeferral($vsoeDeferral)
            ->setVsoePermitDiscount($vsoePermitDiscount)
            ->setVsoeDelivered($vsoeDelivered)
            ->setItemRevenueCategory($itemRevenueCategory)
            ->setDeferRevRec($deferRevRec)
            ->setRevenueRecognitionRule($revenueRecognitionRule)
            ->setRevRecForecastRule($revRecForecastRule)
            ->setRevenueAllocationGroup($revenueAllocationGroup)
            ->setCreateRevenuePlansOn($createRevenuePlansOn)
            ->setDirectRevenuePosting($directRevenuePosting)
            ->setContingentRevenueHandling($contingentRevenueHandling)
            ->setRevReclassFXAccount($revReclassFXAccount)
            ->setStoreDisplayName($storeDisplayName)
            ->setStoreDisplayThumbnail($storeDisplayThumbnail)
            ->setStoreDisplayImage($storeDisplayImage)
            ->setStoreDescription($storeDescription)
            ->setStoreDetailedDescription($storeDetailedDescription)
            ->setStoreItemTemplate($storeItemTemplate)
            ->setPageTitle($pageTitle)
            ->setMetaTagHtml($metaTagHtml)
            ->setExcludeFromSitemap($excludeFromSitemap)
            ->setSitemapPriority($sitemapPriority)
            ->setSearchKeywords($searchKeywords)
            ->setIsDonationItem($isDonationItem)
            ->setShowDefaultDonationAmount($showDefaultDonationAmount)
            ->setMaxDonationAmount($maxDonationAmount)
            ->setDontShowPrice($dontShowPrice)
            ->setNoPriceMessage($noPriceMessage)
            ->setOutOfStockMessage($outOfStockMessage)
            ->setOnSpecial($onSpecial)
            ->setOutOfStockBehavior($outOfStockBehavior)
            ->setRelatedItemsDescription($relatedItemsDescription)
            ->setSpecialsDescription($specialsDescription)
            ->setFeaturedDescription($featuredDescription)
            ->setShoppingDotComCategory($shoppingDotComCategory)
            ->setShopzillaCategoryId($shopzillaCategoryId)
            ->setNexTagCategory($nexTagCategory)
            ->setProductFeedList($productFeedList)
            ->setUrlComponent($urlComponent)
            ->setCustomForm($customForm)
            ->setItemId($itemId)
            ->setUpcCode($upcCode)
            ->setDisplayName($displayName)
            ->setParent($parent)
            ->setIsOnline($isOnline)
            ->setIsGcoCompliant($isGcoCompliant)
            ->setOfferSupport($offerSupport)
            ->setIsInactive($isInactive)
            ->setMatrixItemNameTemplate($matrixItemNameTemplate)
            ->setAvailableToPartners($availableToPartners)
            ->setDepartment($department)
            ->setClass($class)
            ->setLocation($location)
            ->setDefaultItemShipMethod($defaultItemShipMethod)
            ->setItemCarrier($itemCarrier)
            ->setItemShipMethodList($itemShipMethodList)
            ->setSubsidiaryList($subsidiaryList)
            ->setItemOptionsList($itemOptionsList)
            ->setMatrixOptionList($matrixOptionList)
            ->setPricingMatrix($pricingMatrix)
            ->setAccountingBookDetailList($accountingBookDetailList)
            ->setPurchaseTaxCode($purchaseTaxCode)
            ->setRate($rate)
            ->setSalesTaxCode($salesTaxCode)
            ->setSiteCategoryList($siteCategoryList)
            ->setTranslationsList($translationsList)
            ->setPresentationItemList($presentationItemList)
            ->setHierarchyVersionsList($hierarchyVersionsList)
            ->setConsumptionUnit($consumptionUnit)
            ->setCustomFieldList($customFieldList)
            ->setInternalId($internalId)
            ->setExternalId($externalId);
    }
    /**
     * Get createdDate value
     * @return string|null
     */
    public function getCreatedDate()
    {
        return $this->createdDate;
    }
    /**
     * Set createdDate value
     * @param string $createdDate
     * @return \StructType\NonInventorySaleItem
     */
    public function setCreatedDate($createdDate = null)
    {
        // validation for constraint: string
        if (!is_null($createdDate) && !is_string($createdDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($createdDate, true), gettype($createdDate)), __LINE__);
        }
        $this->createdDate = $createdDate;
        return $this;
    }
    /**
     * Get lastModifiedDate value
     * @return string|null
     */
    public function getLastModifiedDate()
    {
        return $this->lastModifiedDate;
    }
    /**
     * Set lastModifiedDate value
     * @param string $lastModifiedDate
     * @return \StructType\NonInventorySaleItem
     */
    public function setLastModifiedDate($lastModifiedDate = null)
    {
        // validation for constraint: string
        if (!is_null($lastModifiedDate) && !is_string($lastModifiedDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($lastModifiedDate, true), gettype($lastModifiedDate)), __LINE__);
        }
        $this->lastModifiedDate = $lastModifiedDate;
        return $this;
    }
    /**
     * Get salesDescription value
     * @return string|null
     */
    public function getSalesDescription()
    {
        return $this->salesDescription;
    }
    /**
     * Set salesDescription value
     * @param string $salesDescription
     * @return \StructType\NonInventorySaleItem
     */
    public function setSalesDescription($salesDescription = null)
    {
        // validation for constraint: string
        if (!is_null($salesDescription) && !is_string($salesDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($salesDescription, true), gettype($salesDescription)), __LINE__);
        }
        $this->salesDescription = $salesDescription;
        return $this;
    }
    /**
     * Get includeChildren value
     * @return bool|null
     */
    public function getIncludeChildren()
    {
        return $this->includeChildren;
    }
    /**
     * Set includeChildren value
     * @param bool $includeChildren
     * @return \StructType\NonInventorySaleItem
     */
    public function setIncludeChildren($includeChildren = null)
    {
        // validation for constraint: boolean
        if (!is_null($includeChildren) && !is_bool($includeChildren)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($includeChildren, true), gettype($includeChildren)), __LINE__);
        }
        $this->includeChildren = $includeChildren;
        return $this;
    }
    /**
     * Get incomeAccount value
     * @return \StructType\RecordRef|null
     */
    public function getIncomeAccount()
    {
        return $this->incomeAccount;
    }
    /**
     * Set incomeAccount value
     * @param \StructType\RecordRef $incomeAccount
     * @return \StructType\NonInventorySaleItem
     */
    public function setIncomeAccount(\StructType\RecordRef $incomeAccount = null)
    {
        $this->incomeAccount = $incomeAccount;
        return $this;
    }
    /**
     * Get isTaxable value
     * @return bool|null
     */
    public function getIsTaxable()
    {
        return $this->isTaxable;
    }
    /**
     * Set isTaxable value
     * @param bool $isTaxable
     * @return \StructType\NonInventorySaleItem
     */
    public function setIsTaxable($isTaxable = null)
    {
        // validation for constraint: boolean
        if (!is_null($isTaxable) && !is_bool($isTaxable)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isTaxable, true), gettype($isTaxable)), __LINE__);
        }
        $this->isTaxable = $isTaxable;
        return $this;
    }
    /**
     * Get matrixType value
     * @return string|null
     */
    public function getMatrixType()
    {
        return $this->matrixType;
    }
    /**
     * Set matrixType value
     * @uses \EnumType\ItemMatrixType::valueIsValid()
     * @uses \EnumType\ItemMatrixType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $matrixType
     * @return \StructType\NonInventorySaleItem
     */
    public function setMatrixType($matrixType = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemMatrixType::valueIsValid($matrixType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemMatrixType', is_array($matrixType) ? implode(', ', $matrixType) : var_export($matrixType, true), implode(', ', \EnumType\ItemMatrixType::getValidValues())), __LINE__);
        }
        $this->matrixType = $matrixType;
        return $this;
    }
    /**
     * Get taxSchedule value
     * @return \StructType\RecordRef|null
     */
    public function getTaxSchedule()
    {
        return $this->taxSchedule;
    }
    /**
     * Set taxSchedule value
     * @param \StructType\RecordRef $taxSchedule
     * @return \StructType\NonInventorySaleItem
     */
    public function setTaxSchedule(\StructType\RecordRef $taxSchedule = null)
    {
        $this->taxSchedule = $taxSchedule;
        return $this;
    }
    /**
     * Get shippingCost value
     * @return float|null
     */
    public function getShippingCost()
    {
        return $this->shippingCost;
    }
    /**
     * Set shippingCost value
     * @param float $shippingCost
     * @return \StructType\NonInventorySaleItem
     */
    public function setShippingCost($shippingCost = null)
    {
        // validation for constraint: float
        if (!is_null($shippingCost) && !(is_float($shippingCost) || is_numeric($shippingCost))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($shippingCost, true), gettype($shippingCost)), __LINE__);
        }
        $this->shippingCost = $shippingCost;
        return $this;
    }
    /**
     * Get shippingCostUnits value
     * @return string|null
     */
    public function getShippingCostUnits()
    {
        return $this->shippingCostUnits;
    }
    /**
     * Set shippingCostUnits value
     * @param string $shippingCostUnits
     * @return \StructType\NonInventorySaleItem
     */
    public function setShippingCostUnits($shippingCostUnits = null)
    {
        // validation for constraint: string
        if (!is_null($shippingCostUnits) && !is_string($shippingCostUnits)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($shippingCostUnits, true), gettype($shippingCostUnits)), __LINE__);
        }
        $this->shippingCostUnits = $shippingCostUnits;
        return $this;
    }
    /**
     * Get handlingCost value
     * @return float|null
     */
    public function getHandlingCost()
    {
        return $this->handlingCost;
    }
    /**
     * Set handlingCost value
     * @param float $handlingCost
     * @return \StructType\NonInventorySaleItem
     */
    public function setHandlingCost($handlingCost = null)
    {
        // validation for constraint: float
        if (!is_null($handlingCost) && !(is_float($handlingCost) || is_numeric($handlingCost))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($handlingCost, true), gettype($handlingCost)), __LINE__);
        }
        $this->handlingCost = $handlingCost;
        return $this;
    }
    /**
     * Get handlingCostUnits value
     * @return string|null
     */
    public function getHandlingCostUnits()
    {
        return $this->handlingCostUnits;
    }
    /**
     * Set handlingCostUnits value
     * @param string $handlingCostUnits
     * @return \StructType\NonInventorySaleItem
     */
    public function setHandlingCostUnits($handlingCostUnits = null)
    {
        // validation for constraint: string
        if (!is_null($handlingCostUnits) && !is_string($handlingCostUnits)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($handlingCostUnits, true), gettype($handlingCostUnits)), __LINE__);
        }
        $this->handlingCostUnits = $handlingCostUnits;
        return $this;
    }
    /**
     * Get costEstimateType value
     * @return string|null
     */
    public function getCostEstimateType()
    {
        return $this->costEstimateType;
    }
    /**
     * Set costEstimateType value
     * @uses \EnumType\ItemCostEstimateType::valueIsValid()
     * @uses \EnumType\ItemCostEstimateType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $costEstimateType
     * @return \StructType\NonInventorySaleItem
     */
    public function setCostEstimateType($costEstimateType = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemCostEstimateType::valueIsValid($costEstimateType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemCostEstimateType', is_array($costEstimateType) ? implode(', ', $costEstimateType) : var_export($costEstimateType, true), implode(', ', \EnumType\ItemCostEstimateType::getValidValues())), __LINE__);
        }
        $this->costEstimateType = $costEstimateType;
        return $this;
    }
    /**
     * Get costEstimate value
     * @return float|null
     */
    public function getCostEstimate()
    {
        return $this->costEstimate;
    }
    /**
     * Set costEstimate value
     * @param float $costEstimate
     * @return \StructType\NonInventorySaleItem
     */
    public function setCostEstimate($costEstimate = null)
    {
        // validation for constraint: float
        if (!is_null($costEstimate) && !(is_float($costEstimate) || is_numeric($costEstimate))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($costEstimate, true), gettype($costEstimate)), __LINE__);
        }
        $this->costEstimate = $costEstimate;
        return $this;
    }
    /**
     * Get weight value
     * @return float|null
     */
    public function getWeight()
    {
        return $this->weight;
    }
    /**
     * Set weight value
     * @param float $weight
     * @return \StructType\NonInventorySaleItem
     */
    public function setWeight($weight = null)
    {
        // validation for constraint: float
        if (!is_null($weight) && !(is_float($weight) || is_numeric($weight))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($weight, true), gettype($weight)), __LINE__);
        }
        $this->weight = $weight;
        return $this;
    }
    /**
     * Get weightUnit value
     * @return string|null
     */
    public function getWeightUnit()
    {
        return $this->weightUnit;
    }
    /**
     * Set weightUnit value
     * @uses \EnumType\ItemWeightUnit::valueIsValid()
     * @uses \EnumType\ItemWeightUnit::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $weightUnit
     * @return \StructType\NonInventorySaleItem
     */
    public function setWeightUnit($weightUnit = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemWeightUnit::valueIsValid($weightUnit)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemWeightUnit', is_array($weightUnit) ? implode(', ', $weightUnit) : var_export($weightUnit, true), implode(', ', \EnumType\ItemWeightUnit::getValidValues())), __LINE__);
        }
        $this->weightUnit = $weightUnit;
        return $this;
    }
    /**
     * Get weightUnits value
     * @return string|null
     */
    public function getWeightUnits()
    {
        return $this->weightUnits;
    }
    /**
     * Set weightUnits value
     * @param string $weightUnits
     * @return \StructType\NonInventorySaleItem
     */
    public function setWeightUnits($weightUnits = null)
    {
        // validation for constraint: string
        if (!is_null($weightUnits) && !is_string($weightUnits)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($weightUnits, true), gettype($weightUnits)), __LINE__);
        }
        $this->weightUnits = $weightUnits;
        return $this;
    }
    /**
     * Get costEstimateUnits value
     * @return string|null
     */
    public function getCostEstimateUnits()
    {
        return $this->costEstimateUnits;
    }
    /**
     * Set costEstimateUnits value
     * @param string $costEstimateUnits
     * @return \StructType\NonInventorySaleItem
     */
    public function setCostEstimateUnits($costEstimateUnits = null)
    {
        // validation for constraint: string
        if (!is_null($costEstimateUnits) && !is_string($costEstimateUnits)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($costEstimateUnits, true), gettype($costEstimateUnits)), __LINE__);
        }
        $this->costEstimateUnits = $costEstimateUnits;
        return $this;
    }
    /**
     * Get unitsType value
     * @return \StructType\RecordRef|null
     */
    public function getUnitsType()
    {
        return $this->unitsType;
    }
    /**
     * Set unitsType value
     * @param \StructType\RecordRef $unitsType
     * @return \StructType\NonInventorySaleItem
     */
    public function setUnitsType(\StructType\RecordRef $unitsType = null)
    {
        $this->unitsType = $unitsType;
        return $this;
    }
    /**
     * Get saleUnit value
     * @return \StructType\RecordRef|null
     */
    public function getSaleUnit()
    {
        return $this->saleUnit;
    }
    /**
     * Set saleUnit value
     * @param \StructType\RecordRef $saleUnit
     * @return \StructType\NonInventorySaleItem
     */
    public function setSaleUnit(\StructType\RecordRef $saleUnit = null)
    {
        $this->saleUnit = $saleUnit;
        return $this;
    }
    /**
     * Get issueProduct value
     * @return \StructType\RecordRef|null
     */
    public function getIssueProduct()
    {
        return $this->issueProduct;
    }
    /**
     * Set issueProduct value
     * @param \StructType\RecordRef $issueProduct
     * @return \StructType\NonInventorySaleItem
     */
    public function setIssueProduct(\StructType\RecordRef $issueProduct = null)
    {
        $this->issueProduct = $issueProduct;
        return $this;
    }
    /**
     * Get billingSchedule value
     * @return \StructType\RecordRef|null
     */
    public function getBillingSchedule()
    {
        return $this->billingSchedule;
    }
    /**
     * Set billingSchedule value
     * @param \StructType\RecordRef $billingSchedule
     * @return \StructType\NonInventorySaleItem
     */
    public function setBillingSchedule(\StructType\RecordRef $billingSchedule = null)
    {
        $this->billingSchedule = $billingSchedule;
        return $this;
    }
    /**
     * Get deferredRevenueAccount value
     * @return \StructType\RecordRef|null
     */
    public function getDeferredRevenueAccount()
    {
        return $this->deferredRevenueAccount;
    }
    /**
     * Set deferredRevenueAccount value
     * @param \StructType\RecordRef $deferredRevenueAccount
     * @return \StructType\NonInventorySaleItem
     */
    public function setDeferredRevenueAccount(\StructType\RecordRef $deferredRevenueAccount = null)
    {
        $this->deferredRevenueAccount = $deferredRevenueAccount;
        return $this;
    }
    /**
     * Get revRecSchedule value
     * @return \StructType\RecordRef|null
     */
    public function getRevRecSchedule()
    {
        return $this->revRecSchedule;
    }
    /**
     * Set revRecSchedule value
     * @param \StructType\RecordRef $revRecSchedule
     * @return \StructType\NonInventorySaleItem
     */
    public function setRevRecSchedule(\StructType\RecordRef $revRecSchedule = null)
    {
        $this->revRecSchedule = $revRecSchedule;
        return $this;
    }
    /**
     * Get stockDescription value
     * @return string|null
     */
    public function getStockDescription()
    {
        return $this->stockDescription;
    }
    /**
     * Set stockDescription value
     * @param string $stockDescription
     * @return \StructType\NonInventorySaleItem
     */
    public function setStockDescription($stockDescription = null)
    {
        // validation for constraint: string
        if (!is_null($stockDescription) && !is_string($stockDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stockDescription, true), gettype($stockDescription)), __LINE__);
        }
        $this->stockDescription = $stockDescription;
        return $this;
    }
    /**
     * Get isHazmatItem value
     * @return bool|null
     */
    public function getIsHazmatItem()
    {
        return $this->isHazmatItem;
    }
    /**
     * Set isHazmatItem value
     * @param bool $isHazmatItem
     * @return \StructType\NonInventorySaleItem
     */
    public function setIsHazmatItem($isHazmatItem = null)
    {
        // validation for constraint: boolean
        if (!is_null($isHazmatItem) && !is_bool($isHazmatItem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isHazmatItem, true), gettype($isHazmatItem)), __LINE__);
        }
        $this->isHazmatItem = $isHazmatItem;
        return $this;
    }
    /**
     * Get hazmatId value
     * @return string|null
     */
    public function getHazmatId()
    {
        return $this->hazmatId;
    }
    /**
     * Set hazmatId value
     * @param string $hazmatId
     * @return \StructType\NonInventorySaleItem
     */
    public function setHazmatId($hazmatId = null)
    {
        // validation for constraint: string
        if (!is_null($hazmatId) && !is_string($hazmatId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($hazmatId, true), gettype($hazmatId)), __LINE__);
        }
        $this->hazmatId = $hazmatId;
        return $this;
    }
    /**
     * Get hazmatShippingName value
     * @return string|null
     */
    public function getHazmatShippingName()
    {
        return $this->hazmatShippingName;
    }
    /**
     * Set hazmatShippingName value
     * @param string $hazmatShippingName
     * @return \StructType\NonInventorySaleItem
     */
    public function setHazmatShippingName($hazmatShippingName = null)
    {
        // validation for constraint: string
        if (!is_null($hazmatShippingName) && !is_string($hazmatShippingName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($hazmatShippingName, true), gettype($hazmatShippingName)), __LINE__);
        }
        $this->hazmatShippingName = $hazmatShippingName;
        return $this;
    }
    /**
     * Get hazmatHazardClass value
     * @return string|null
     */
    public function getHazmatHazardClass()
    {
        return $this->hazmatHazardClass;
    }
    /**
     * Set hazmatHazardClass value
     * @param string $hazmatHazardClass
     * @return \StructType\NonInventorySaleItem
     */
    public function setHazmatHazardClass($hazmatHazardClass = null)
    {
        // validation for constraint: string
        if (!is_null($hazmatHazardClass) && !is_string($hazmatHazardClass)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($hazmatHazardClass, true), gettype($hazmatHazardClass)), __LINE__);
        }
        $this->hazmatHazardClass = $hazmatHazardClass;
        return $this;
    }
    /**
     * Get hazmatPackingGroup value
     * @return string|null
     */
    public function getHazmatPackingGroup()
    {
        return $this->hazmatPackingGroup;
    }
    /**
     * Set hazmatPackingGroup value
     * @uses \EnumType\HazmatPackingGroup::valueIsValid()
     * @uses \EnumType\HazmatPackingGroup::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $hazmatPackingGroup
     * @return \StructType\NonInventorySaleItem
     */
    public function setHazmatPackingGroup($hazmatPackingGroup = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\HazmatPackingGroup::valueIsValid($hazmatPackingGroup)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\HazmatPackingGroup', is_array($hazmatPackingGroup) ? implode(', ', $hazmatPackingGroup) : var_export($hazmatPackingGroup, true), implode(', ', \EnumType\HazmatPackingGroup::getValidValues())), __LINE__);
        }
        $this->hazmatPackingGroup = $hazmatPackingGroup;
        return $this;
    }
    /**
     * Get hazmatItemUnits value
     * @return string|null
     */
    public function getHazmatItemUnits()
    {
        return $this->hazmatItemUnits;
    }
    /**
     * Set hazmatItemUnits value
     * @param string $hazmatItemUnits
     * @return \StructType\NonInventorySaleItem
     */
    public function setHazmatItemUnits($hazmatItemUnits = null)
    {
        // validation for constraint: string
        if (!is_null($hazmatItemUnits) && !is_string($hazmatItemUnits)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($hazmatItemUnits, true), gettype($hazmatItemUnits)), __LINE__);
        }
        $this->hazmatItemUnits = $hazmatItemUnits;
        return $this;
    }
    /**
     * Get hazmatItemUnitsQty value
     * @return float|null
     */
    public function getHazmatItemUnitsQty()
    {
        return $this->hazmatItemUnitsQty;
    }
    /**
     * Set hazmatItemUnitsQty value
     * @param float $hazmatItemUnitsQty
     * @return \StructType\NonInventorySaleItem
     */
    public function setHazmatItemUnitsQty($hazmatItemUnitsQty = null)
    {
        // validation for constraint: float
        if (!is_null($hazmatItemUnitsQty) && !(is_float($hazmatItemUnitsQty) || is_numeric($hazmatItemUnitsQty))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($hazmatItemUnitsQty, true), gettype($hazmatItemUnitsQty)), __LINE__);
        }
        $this->hazmatItemUnitsQty = $hazmatItemUnitsQty;
        return $this;
    }
    /**
     * Get producer value
     * @return bool|null
     */
    public function getProducer()
    {
        return $this->producer;
    }
    /**
     * Set producer value
     * @param bool $producer
     * @return \StructType\NonInventorySaleItem
     */
    public function setProducer($producer = null)
    {
        // validation for constraint: boolean
        if (!is_null($producer) && !is_bool($producer)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($producer, true), gettype($producer)), __LINE__);
        }
        $this->producer = $producer;
        return $this;
    }
    /**
     * Get manufacturer value
     * @return string|null
     */
    public function getManufacturer()
    {
        return $this->manufacturer;
    }
    /**
     * Set manufacturer value
     * @param string $manufacturer
     * @return \StructType\NonInventorySaleItem
     */
    public function setManufacturer($manufacturer = null)
    {
        // validation for constraint: string
        if (!is_null($manufacturer) && !is_string($manufacturer)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($manufacturer, true), gettype($manufacturer)), __LINE__);
        }
        $this->manufacturer = $manufacturer;
        return $this;
    }
    /**
     * Get mpn value
     * @return string|null
     */
    public function getMpn()
    {
        return $this->mpn;
    }
    /**
     * Set mpn value
     * @param string $mpn
     * @return \StructType\NonInventorySaleItem
     */
    public function setMpn($mpn = null)
    {
        // validation for constraint: string
        if (!is_null($mpn) && !is_string($mpn)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($mpn, true), gettype($mpn)), __LINE__);
        }
        $this->mpn = $mpn;
        return $this;
    }
    /**
     * Get multManufactureAddr value
     * @return bool|null
     */
    public function getMultManufactureAddr()
    {
        return $this->multManufactureAddr;
    }
    /**
     * Set multManufactureAddr value
     * @param bool $multManufactureAddr
     * @return \StructType\NonInventorySaleItem
     */
    public function setMultManufactureAddr($multManufactureAddr = null)
    {
        // validation for constraint: boolean
        if (!is_null($multManufactureAddr) && !is_bool($multManufactureAddr)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($multManufactureAddr, true), gettype($multManufactureAddr)), __LINE__);
        }
        $this->multManufactureAddr = $multManufactureAddr;
        return $this;
    }
    /**
     * Get manufacturerAddr1 value
     * @return string|null
     */
    public function getManufacturerAddr1()
    {
        return $this->manufacturerAddr1;
    }
    /**
     * Set manufacturerAddr1 value
     * @param string $manufacturerAddr1
     * @return \StructType\NonInventorySaleItem
     */
    public function setManufacturerAddr1($manufacturerAddr1 = null)
    {
        // validation for constraint: string
        if (!is_null($manufacturerAddr1) && !is_string($manufacturerAddr1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($manufacturerAddr1, true), gettype($manufacturerAddr1)), __LINE__);
        }
        $this->manufacturerAddr1 = $manufacturerAddr1;
        return $this;
    }
    /**
     * Get manufacturerCity value
     * @return string|null
     */
    public function getManufacturerCity()
    {
        return $this->manufacturerCity;
    }
    /**
     * Set manufacturerCity value
     * @param string $manufacturerCity
     * @return \StructType\NonInventorySaleItem
     */
    public function setManufacturerCity($manufacturerCity = null)
    {
        // validation for constraint: string
        if (!is_null($manufacturerCity) && !is_string($manufacturerCity)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($manufacturerCity, true), gettype($manufacturerCity)), __LINE__);
        }
        $this->manufacturerCity = $manufacturerCity;
        return $this;
    }
    /**
     * Get manufacturerState value
     * @return string|null
     */
    public function getManufacturerState()
    {
        return $this->manufacturerState;
    }
    /**
     * Set manufacturerState value
     * @param string $manufacturerState
     * @return \StructType\NonInventorySaleItem
     */
    public function setManufacturerState($manufacturerState = null)
    {
        // validation for constraint: string
        if (!is_null($manufacturerState) && !is_string($manufacturerState)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($manufacturerState, true), gettype($manufacturerState)), __LINE__);
        }
        $this->manufacturerState = $manufacturerState;
        return $this;
    }
    /**
     * Get manufacturerZip value
     * @return string|null
     */
    public function getManufacturerZip()
    {
        return $this->manufacturerZip;
    }
    /**
     * Set manufacturerZip value
     * @param string $manufacturerZip
     * @return \StructType\NonInventorySaleItem
     */
    public function setManufacturerZip($manufacturerZip = null)
    {
        // validation for constraint: string
        if (!is_null($manufacturerZip) && !is_string($manufacturerZip)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($manufacturerZip, true), gettype($manufacturerZip)), __LINE__);
        }
        $this->manufacturerZip = $manufacturerZip;
        return $this;
    }
    /**
     * Get countryOfManufacture value
     * @return string|null
     */
    public function getCountryOfManufacture()
    {
        return $this->countryOfManufacture;
    }
    /**
     * Set countryOfManufacture value
     * @uses \EnumType\Country::valueIsValid()
     * @uses \EnumType\Country::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $countryOfManufacture
     * @return \StructType\NonInventorySaleItem
     */
    public function setCountryOfManufacture($countryOfManufacture = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\Country::valueIsValid($countryOfManufacture)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\Country', is_array($countryOfManufacture) ? implode(', ', $countryOfManufacture) : var_export($countryOfManufacture, true), implode(', ', \EnumType\Country::getValidValues())), __LINE__);
        }
        $this->countryOfManufacture = $countryOfManufacture;
        return $this;
    }
    /**
     * Get manufacturerTaxId value
     * @return string|null
     */
    public function getManufacturerTaxId()
    {
        return $this->manufacturerTaxId;
    }
    /**
     * Set manufacturerTaxId value
     * @param string $manufacturerTaxId
     * @return \StructType\NonInventorySaleItem
     */
    public function setManufacturerTaxId($manufacturerTaxId = null)
    {
        // validation for constraint: string
        if (!is_null($manufacturerTaxId) && !is_string($manufacturerTaxId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($manufacturerTaxId, true), gettype($manufacturerTaxId)), __LINE__);
        }
        $this->manufacturerTaxId = $manufacturerTaxId;
        return $this;
    }
    /**
     * Get scheduleBNumber value
     * @return string|null
     */
    public function getScheduleBNumber()
    {
        return $this->scheduleBNumber;
    }
    /**
     * Set scheduleBNumber value
     * @param string $scheduleBNumber
     * @return \StructType\NonInventorySaleItem
     */
    public function setScheduleBNumber($scheduleBNumber = null)
    {
        // validation for constraint: string
        if (!is_null($scheduleBNumber) && !is_string($scheduleBNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($scheduleBNumber, true), gettype($scheduleBNumber)), __LINE__);
        }
        $this->scheduleBNumber = $scheduleBNumber;
        return $this;
    }
    /**
     * Get scheduleBQuantity value
     * @return int|null
     */
    public function getScheduleBQuantity()
    {
        return $this->scheduleBQuantity;
    }
    /**
     * Set scheduleBQuantity value
     * @param int $scheduleBQuantity
     * @return \StructType\NonInventorySaleItem
     */
    public function setScheduleBQuantity($scheduleBQuantity = null)
    {
        // validation for constraint: int
        if (!is_null($scheduleBQuantity) && !(is_int($scheduleBQuantity) || ctype_digit($scheduleBQuantity))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($scheduleBQuantity, true), gettype($scheduleBQuantity)), __LINE__);
        }
        $this->scheduleBQuantity = $scheduleBQuantity;
        return $this;
    }
    /**
     * Get scheduleBCode value
     * @return string|null
     */
    public function getScheduleBCode()
    {
        return $this->scheduleBCode;
    }
    /**
     * Set scheduleBCode value
     * @uses \EnumType\ScheduleBCode::valueIsValid()
     * @uses \EnumType\ScheduleBCode::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $scheduleBCode
     * @return \StructType\NonInventorySaleItem
     */
    public function setScheduleBCode($scheduleBCode = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ScheduleBCode::valueIsValid($scheduleBCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ScheduleBCode', is_array($scheduleBCode) ? implode(', ', $scheduleBCode) : var_export($scheduleBCode, true), implode(', ', \EnumType\ScheduleBCode::getValidValues())), __LINE__);
        }
        $this->scheduleBCode = $scheduleBCode;
        return $this;
    }
    /**
     * Get manufacturerTariff value
     * @return string|null
     */
    public function getManufacturerTariff()
    {
        return $this->manufacturerTariff;
    }
    /**
     * Set manufacturerTariff value
     * @param string $manufacturerTariff
     * @return \StructType\NonInventorySaleItem
     */
    public function setManufacturerTariff($manufacturerTariff = null)
    {
        // validation for constraint: string
        if (!is_null($manufacturerTariff) && !is_string($manufacturerTariff)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($manufacturerTariff, true), gettype($manufacturerTariff)), __LINE__);
        }
        $this->manufacturerTariff = $manufacturerTariff;
        return $this;
    }
    /**
     * Get preferenceCriterion value
     * @return string|null
     */
    public function getPreferenceCriterion()
    {
        return $this->preferenceCriterion;
    }
    /**
     * Set preferenceCriterion value
     * @uses \EnumType\ItemPreferenceCriterion::valueIsValid()
     * @uses \EnumType\ItemPreferenceCriterion::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $preferenceCriterion
     * @return \StructType\NonInventorySaleItem
     */
    public function setPreferenceCriterion($preferenceCriterion = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemPreferenceCriterion::valueIsValid($preferenceCriterion)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemPreferenceCriterion', is_array($preferenceCriterion) ? implode(', ', $preferenceCriterion) : var_export($preferenceCriterion, true), implode(', ', \EnumType\ItemPreferenceCriterion::getValidValues())), __LINE__);
        }
        $this->preferenceCriterion = $preferenceCriterion;
        return $this;
    }
    /**
     * Get minimumQuantity value
     * @return int|null
     */
    public function getMinimumQuantity()
    {
        return $this->minimumQuantity;
    }
    /**
     * Set minimumQuantity value
     * @param int $minimumQuantity
     * @return \StructType\NonInventorySaleItem
     */
    public function setMinimumQuantity($minimumQuantity = null)
    {
        // validation for constraint: int
        if (!is_null($minimumQuantity) && !(is_int($minimumQuantity) || ctype_digit($minimumQuantity))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($minimumQuantity, true), gettype($minimumQuantity)), __LINE__);
        }
        $this->minimumQuantity = $minimumQuantity;
        return $this;
    }
    /**
     * Get enforceMinQtyInternally value
     * @return bool|null
     */
    public function getEnforceMinQtyInternally()
    {
        return $this->enforceMinQtyInternally;
    }
    /**
     * Set enforceMinQtyInternally value
     * @param bool $enforceMinQtyInternally
     * @return \StructType\NonInventorySaleItem
     */
    public function setEnforceMinQtyInternally($enforceMinQtyInternally = null)
    {
        // validation for constraint: boolean
        if (!is_null($enforceMinQtyInternally) && !is_bool($enforceMinQtyInternally)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($enforceMinQtyInternally, true), gettype($enforceMinQtyInternally)), __LINE__);
        }
        $this->enforceMinQtyInternally = $enforceMinQtyInternally;
        return $this;
    }
    /**
     * Get maximumQuantity value
     * @return int|null
     */
    public function getMaximumQuantity()
    {
        return $this->maximumQuantity;
    }
    /**
     * Set maximumQuantity value
     * @param int $maximumQuantity
     * @return \StructType\NonInventorySaleItem
     */
    public function setMaximumQuantity($maximumQuantity = null)
    {
        // validation for constraint: int
        if (!is_null($maximumQuantity) && !(is_int($maximumQuantity) || ctype_digit($maximumQuantity))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($maximumQuantity, true), gettype($maximumQuantity)), __LINE__);
        }
        $this->maximumQuantity = $maximumQuantity;
        return $this;
    }
    /**
     * Get softDescriptor value
     * @return string|null
     */
    public function getSoftDescriptor()
    {
        return $this->softDescriptor;
    }
    /**
     * Set softDescriptor value
     * @param string $softDescriptor
     * @return \StructType\NonInventorySaleItem
     */
    public function setSoftDescriptor($softDescriptor = null)
    {
        // validation for constraint: string
        if (!is_null($softDescriptor) && !is_string($softDescriptor)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($softDescriptor, true), gettype($softDescriptor)), __LINE__);
        }
        $this->softDescriptor = $softDescriptor;
        return $this;
    }
    /**
     * Get shipPackage value
     * @return \StructType\RecordRef|null
     */
    public function getShipPackage()
    {
        return $this->shipPackage;
    }
    /**
     * Set shipPackage value
     * @param \StructType\RecordRef $shipPackage
     * @return \StructType\NonInventorySaleItem
     */
    public function setShipPackage(\StructType\RecordRef $shipPackage = null)
    {
        $this->shipPackage = $shipPackage;
        return $this;
    }
    /**
     * Get shipIndividually value
     * @return bool|null
     */
    public function getShipIndividually()
    {
        return $this->shipIndividually;
    }
    /**
     * Set shipIndividually value
     * @param bool $shipIndividually
     * @return \StructType\NonInventorySaleItem
     */
    public function setShipIndividually($shipIndividually = null)
    {
        // validation for constraint: boolean
        if (!is_null($shipIndividually) && !is_bool($shipIndividually)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shipIndividually, true), gettype($shipIndividually)), __LINE__);
        }
        $this->shipIndividually = $shipIndividually;
        return $this;
    }
    /**
     * Get isFulfillable value
     * @return bool|null
     */
    public function getIsFulfillable()
    {
        return $this->isFulfillable;
    }
    /**
     * Set isFulfillable value
     * @param bool $isFulfillable
     * @return \StructType\NonInventorySaleItem
     */
    public function setIsFulfillable($isFulfillable = null)
    {
        // validation for constraint: boolean
        if (!is_null($isFulfillable) && !is_bool($isFulfillable)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isFulfillable, true), gettype($isFulfillable)), __LINE__);
        }
        $this->isFulfillable = $isFulfillable;
        return $this;
    }
    /**
     * Get costCategory value
     * @return \StructType\RecordRef|null
     */
    public function getCostCategory()
    {
        return $this->costCategory;
    }
    /**
     * Set costCategory value
     * @param \StructType\RecordRef $costCategory
     * @return \StructType\NonInventorySaleItem
     */
    public function setCostCategory(\StructType\RecordRef $costCategory = null)
    {
        $this->costCategory = $costCategory;
        return $this;
    }
    /**
     * Get pricesIncludeTax value
     * @return bool|null
     */
    public function getPricesIncludeTax()
    {
        return $this->pricesIncludeTax;
    }
    /**
     * Set pricesIncludeTax value
     * @param bool $pricesIncludeTax
     * @return \StructType\NonInventorySaleItem
     */
    public function setPricesIncludeTax($pricesIncludeTax = null)
    {
        // validation for constraint: boolean
        if (!is_null($pricesIncludeTax) && !is_bool($pricesIncludeTax)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($pricesIncludeTax, true), gettype($pricesIncludeTax)), __LINE__);
        }
        $this->pricesIncludeTax = $pricesIncludeTax;
        return $this;
    }
    /**
     * Get quantityPricingSchedule value
     * @return \StructType\RecordRef|null
     */
    public function getQuantityPricingSchedule()
    {
        return $this->quantityPricingSchedule;
    }
    /**
     * Set quantityPricingSchedule value
     * @param \StructType\RecordRef $quantityPricingSchedule
     * @return \StructType\NonInventorySaleItem
     */
    public function setQuantityPricingSchedule(\StructType\RecordRef $quantityPricingSchedule = null)
    {
        $this->quantityPricingSchedule = $quantityPricingSchedule;
        return $this;
    }
    /**
     * Get useMarginalRates value
     * @return bool|null
     */
    public function getUseMarginalRates()
    {
        return $this->useMarginalRates;
    }
    /**
     * Set useMarginalRates value
     * @param bool $useMarginalRates
     * @return \StructType\NonInventorySaleItem
     */
    public function setUseMarginalRates($useMarginalRates = null)
    {
        // validation for constraint: boolean
        if (!is_null($useMarginalRates) && !is_bool($useMarginalRates)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($useMarginalRates, true), gettype($useMarginalRates)), __LINE__);
        }
        $this->useMarginalRates = $useMarginalRates;
        return $this;
    }
    /**
     * Get overallQuantityPricingType value
     * @return string|null
     */
    public function getOverallQuantityPricingType()
    {
        return $this->overallQuantityPricingType;
    }
    /**
     * Set overallQuantityPricingType value
     * @uses \EnumType\ItemOverallQuantityPricingType::valueIsValid()
     * @uses \EnumType\ItemOverallQuantityPricingType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $overallQuantityPricingType
     * @return \StructType\NonInventorySaleItem
     */
    public function setOverallQuantityPricingType($overallQuantityPricingType = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemOverallQuantityPricingType::valueIsValid($overallQuantityPricingType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemOverallQuantityPricingType', is_array($overallQuantityPricingType) ? implode(', ', $overallQuantityPricingType) : var_export($overallQuantityPricingType, true), implode(', ', \EnumType\ItemOverallQuantityPricingType::getValidValues())), __LINE__);
        }
        $this->overallQuantityPricingType = $overallQuantityPricingType;
        return $this;
    }
    /**
     * Get pricingGroup value
     * @return \StructType\RecordRef|null
     */
    public function getPricingGroup()
    {
        return $this->pricingGroup;
    }
    /**
     * Set pricingGroup value
     * @param \StructType\RecordRef $pricingGroup
     * @return \StructType\NonInventorySaleItem
     */
    public function setPricingGroup(\StructType\RecordRef $pricingGroup = null)
    {
        $this->pricingGroup = $pricingGroup;
        return $this;
    }
    /**
     * Get minimumQuantityUnits value
     * @return string|null
     */
    public function getMinimumQuantityUnits()
    {
        return $this->minimumQuantityUnits;
    }
    /**
     * Set minimumQuantityUnits value
     * @param string $minimumQuantityUnits
     * @return \StructType\NonInventorySaleItem
     */
    public function setMinimumQuantityUnits($minimumQuantityUnits = null)
    {
        // validation for constraint: string
        if (!is_null($minimumQuantityUnits) && !is_string($minimumQuantityUnits)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($minimumQuantityUnits, true), gettype($minimumQuantityUnits)), __LINE__);
        }
        $this->minimumQuantityUnits = $minimumQuantityUnits;
        return $this;
    }
    /**
     * Get vsoePrice value
     * @return float|null
     */
    public function getVsoePrice()
    {
        return $this->vsoePrice;
    }
    /**
     * Set vsoePrice value
     * @param float $vsoePrice
     * @return \StructType\NonInventorySaleItem
     */
    public function setVsoePrice($vsoePrice = null)
    {
        // validation for constraint: float
        if (!is_null($vsoePrice) && !(is_float($vsoePrice) || is_numeric($vsoePrice))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($vsoePrice, true), gettype($vsoePrice)), __LINE__);
        }
        $this->vsoePrice = $vsoePrice;
        return $this;
    }
    /**
     * Get vsoeSopGroup value
     * @return string|null
     */
    public function getVsoeSopGroup()
    {
        return $this->vsoeSopGroup;
    }
    /**
     * Set vsoeSopGroup value
     * @uses \EnumType\VsoeSopGroup::valueIsValid()
     * @uses \EnumType\VsoeSopGroup::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $vsoeSopGroup
     * @return \StructType\NonInventorySaleItem
     */
    public function setVsoeSopGroup($vsoeSopGroup = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\VsoeSopGroup::valueIsValid($vsoeSopGroup)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\VsoeSopGroup', is_array($vsoeSopGroup) ? implode(', ', $vsoeSopGroup) : var_export($vsoeSopGroup, true), implode(', ', \EnumType\VsoeSopGroup::getValidValues())), __LINE__);
        }
        $this->vsoeSopGroup = $vsoeSopGroup;
        return $this;
    }
    /**
     * Get vsoeDeferral value
     * @return string|null
     */
    public function getVsoeDeferral()
    {
        return $this->vsoeDeferral;
    }
    /**
     * Set vsoeDeferral value
     * @uses \EnumType\VsoeDeferral::valueIsValid()
     * @uses \EnumType\VsoeDeferral::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $vsoeDeferral
     * @return \StructType\NonInventorySaleItem
     */
    public function setVsoeDeferral($vsoeDeferral = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\VsoeDeferral::valueIsValid($vsoeDeferral)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\VsoeDeferral', is_array($vsoeDeferral) ? implode(', ', $vsoeDeferral) : var_export($vsoeDeferral, true), implode(', ', \EnumType\VsoeDeferral::getValidValues())), __LINE__);
        }
        $this->vsoeDeferral = $vsoeDeferral;
        return $this;
    }
    /**
     * Get vsoePermitDiscount value
     * @return string|null
     */
    public function getVsoePermitDiscount()
    {
        return $this->vsoePermitDiscount;
    }
    /**
     * Set vsoePermitDiscount value
     * @uses \EnumType\VsoePermitDiscount::valueIsValid()
     * @uses \EnumType\VsoePermitDiscount::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $vsoePermitDiscount
     * @return \StructType\NonInventorySaleItem
     */
    public function setVsoePermitDiscount($vsoePermitDiscount = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\VsoePermitDiscount::valueIsValid($vsoePermitDiscount)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\VsoePermitDiscount', is_array($vsoePermitDiscount) ? implode(', ', $vsoePermitDiscount) : var_export($vsoePermitDiscount, true), implode(', ', \EnumType\VsoePermitDiscount::getValidValues())), __LINE__);
        }
        $this->vsoePermitDiscount = $vsoePermitDiscount;
        return $this;
    }
    /**
     * Get vsoeDelivered value
     * @return bool|null
     */
    public function getVsoeDelivered()
    {
        return $this->vsoeDelivered;
    }
    /**
     * Set vsoeDelivered value
     * @param bool $vsoeDelivered
     * @return \StructType\NonInventorySaleItem
     */
    public function setVsoeDelivered($vsoeDelivered = null)
    {
        // validation for constraint: boolean
        if (!is_null($vsoeDelivered) && !is_bool($vsoeDelivered)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($vsoeDelivered, true), gettype($vsoeDelivered)), __LINE__);
        }
        $this->vsoeDelivered = $vsoeDelivered;
        return $this;
    }
    /**
     * Get itemRevenueCategory value
     * @return \StructType\RecordRef|null
     */
    public function getItemRevenueCategory()
    {
        return $this->itemRevenueCategory;
    }
    /**
     * Set itemRevenueCategory value
     * @param \StructType\RecordRef $itemRevenueCategory
     * @return \StructType\NonInventorySaleItem
     */
    public function setItemRevenueCategory(\StructType\RecordRef $itemRevenueCategory = null)
    {
        $this->itemRevenueCategory = $itemRevenueCategory;
        return $this;
    }
    /**
     * Get deferRevRec value
     * @return bool|null
     */
    public function getDeferRevRec()
    {
        return $this->deferRevRec;
    }
    /**
     * Set deferRevRec value
     * @param bool $deferRevRec
     * @return \StructType\NonInventorySaleItem
     */
    public function setDeferRevRec($deferRevRec = null)
    {
        // validation for constraint: boolean
        if (!is_null($deferRevRec) && !is_bool($deferRevRec)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($deferRevRec, true), gettype($deferRevRec)), __LINE__);
        }
        $this->deferRevRec = $deferRevRec;
        return $this;
    }
    /**
     * Get revenueRecognitionRule value
     * @return \StructType\RecordRef|null
     */
    public function getRevenueRecognitionRule()
    {
        return $this->revenueRecognitionRule;
    }
    /**
     * Set revenueRecognitionRule value
     * @param \StructType\RecordRef $revenueRecognitionRule
     * @return \StructType\NonInventorySaleItem
     */
    public function setRevenueRecognitionRule(\StructType\RecordRef $revenueRecognitionRule = null)
    {
        $this->revenueRecognitionRule = $revenueRecognitionRule;
        return $this;
    }
    /**
     * Get revRecForecastRule value
     * @return \StructType\RecordRef|null
     */
    public function getRevRecForecastRule()
    {
        return $this->revRecForecastRule;
    }
    /**
     * Set revRecForecastRule value
     * @param \StructType\RecordRef $revRecForecastRule
     * @return \StructType\NonInventorySaleItem
     */
    public function setRevRecForecastRule(\StructType\RecordRef $revRecForecastRule = null)
    {
        $this->revRecForecastRule = $revRecForecastRule;
        return $this;
    }
    /**
     * Get revenueAllocationGroup value
     * @return \StructType\RecordRef|null
     */
    public function getRevenueAllocationGroup()
    {
        return $this->revenueAllocationGroup;
    }
    /**
     * Set revenueAllocationGroup value
     * @param \StructType\RecordRef $revenueAllocationGroup
     * @return \StructType\NonInventorySaleItem
     */
    public function setRevenueAllocationGroup(\StructType\RecordRef $revenueAllocationGroup = null)
    {
        $this->revenueAllocationGroup = $revenueAllocationGroup;
        return $this;
    }
    /**
     * Get createRevenuePlansOn value
     * @return \StructType\RecordRef|null
     */
    public function getCreateRevenuePlansOn()
    {
        return $this->createRevenuePlansOn;
    }
    /**
     * Set createRevenuePlansOn value
     * @param \StructType\RecordRef $createRevenuePlansOn
     * @return \StructType\NonInventorySaleItem
     */
    public function setCreateRevenuePlansOn(\StructType\RecordRef $createRevenuePlansOn = null)
    {
        $this->createRevenuePlansOn = $createRevenuePlansOn;
        return $this;
    }
    /**
     * Get directRevenuePosting value
     * @return bool|null
     */
    public function getDirectRevenuePosting()
    {
        return $this->directRevenuePosting;
    }
    /**
     * Set directRevenuePosting value
     * @param bool $directRevenuePosting
     * @return \StructType\NonInventorySaleItem
     */
    public function setDirectRevenuePosting($directRevenuePosting = null)
    {
        // validation for constraint: boolean
        if (!is_null($directRevenuePosting) && !is_bool($directRevenuePosting)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($directRevenuePosting, true), gettype($directRevenuePosting)), __LINE__);
        }
        $this->directRevenuePosting = $directRevenuePosting;
        return $this;
    }
    /**
     * Get contingentRevenueHandling value
     * @return bool|null
     */
    public function getContingentRevenueHandling()
    {
        return $this->contingentRevenueHandling;
    }
    /**
     * Set contingentRevenueHandling value
     * @param bool $contingentRevenueHandling
     * @return \StructType\NonInventorySaleItem
     */
    public function setContingentRevenueHandling($contingentRevenueHandling = null)
    {
        // validation for constraint: boolean
        if (!is_null($contingentRevenueHandling) && !is_bool($contingentRevenueHandling)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($contingentRevenueHandling, true), gettype($contingentRevenueHandling)), __LINE__);
        }
        $this->contingentRevenueHandling = $contingentRevenueHandling;
        return $this;
    }
    /**
     * Get revReclassFXAccount value
     * @return \StructType\RecordRef|null
     */
    public function getRevReclassFXAccount()
    {
        return $this->revReclassFXAccount;
    }
    /**
     * Set revReclassFXAccount value
     * @param \StructType\RecordRef $revReclassFXAccount
     * @return \StructType\NonInventorySaleItem
     */
    public function setRevReclassFXAccount(\StructType\RecordRef $revReclassFXAccount = null)
    {
        $this->revReclassFXAccount = $revReclassFXAccount;
        return $this;
    }
    /**
     * Get storeDisplayName value
     * @return string|null
     */
    public function getStoreDisplayName()
    {
        return $this->storeDisplayName;
    }
    /**
     * Set storeDisplayName value
     * @param string $storeDisplayName
     * @return \StructType\NonInventorySaleItem
     */
    public function setStoreDisplayName($storeDisplayName = null)
    {
        // validation for constraint: string
        if (!is_null($storeDisplayName) && !is_string($storeDisplayName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($storeDisplayName, true), gettype($storeDisplayName)), __LINE__);
        }
        $this->storeDisplayName = $storeDisplayName;
        return $this;
    }
    /**
     * Get storeDisplayThumbnail value
     * @return \StructType\RecordRef|null
     */
    public function getStoreDisplayThumbnail()
    {
        return $this->storeDisplayThumbnail;
    }
    /**
     * Set storeDisplayThumbnail value
     * @param \StructType\RecordRef $storeDisplayThumbnail
     * @return \StructType\NonInventorySaleItem
     */
    public function setStoreDisplayThumbnail(\StructType\RecordRef $storeDisplayThumbnail = null)
    {
        $this->storeDisplayThumbnail = $storeDisplayThumbnail;
        return $this;
    }
    /**
     * Get storeDisplayImage value
     * @return \StructType\RecordRef|null
     */
    public function getStoreDisplayImage()
    {
        return $this->storeDisplayImage;
    }
    /**
     * Set storeDisplayImage value
     * @param \StructType\RecordRef $storeDisplayImage
     * @return \StructType\NonInventorySaleItem
     */
    public function setStoreDisplayImage(\StructType\RecordRef $storeDisplayImage = null)
    {
        $this->storeDisplayImage = $storeDisplayImage;
        return $this;
    }
    /**
     * Get storeDescription value
     * @return string|null
     */
    public function getStoreDescription()
    {
        return $this->storeDescription;
    }
    /**
     * Set storeDescription value
     * @param string $storeDescription
     * @return \StructType\NonInventorySaleItem
     */
    public function setStoreDescription($storeDescription = null)
    {
        // validation for constraint: string
        if (!is_null($storeDescription) && !is_string($storeDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($storeDescription, true), gettype($storeDescription)), __LINE__);
        }
        $this->storeDescription = $storeDescription;
        return $this;
    }
    /**
     * Get storeDetailedDescription value
     * @return string|null
     */
    public function getStoreDetailedDescription()
    {
        return $this->storeDetailedDescription;
    }
    /**
     * Set storeDetailedDescription value
     * @param string $storeDetailedDescription
     * @return \StructType\NonInventorySaleItem
     */
    public function setStoreDetailedDescription($storeDetailedDescription = null)
    {
        // validation for constraint: string
        if (!is_null($storeDetailedDescription) && !is_string($storeDetailedDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($storeDetailedDescription, true), gettype($storeDetailedDescription)), __LINE__);
        }
        $this->storeDetailedDescription = $storeDetailedDescription;
        return $this;
    }
    /**
     * Get storeItemTemplate value
     * @return \StructType\RecordRef|null
     */
    public function getStoreItemTemplate()
    {
        return $this->storeItemTemplate;
    }
    /**
     * Set storeItemTemplate value
     * @param \StructType\RecordRef $storeItemTemplate
     * @return \StructType\NonInventorySaleItem
     */
    public function setStoreItemTemplate(\StructType\RecordRef $storeItemTemplate = null)
    {
        $this->storeItemTemplate = $storeItemTemplate;
        return $this;
    }
    /**
     * Get pageTitle value
     * @return string|null
     */
    public function getPageTitle()
    {
        return $this->pageTitle;
    }
    /**
     * Set pageTitle value
     * @param string $pageTitle
     * @return \StructType\NonInventorySaleItem
     */
    public function setPageTitle($pageTitle = null)
    {
        // validation for constraint: string
        if (!is_null($pageTitle) && !is_string($pageTitle)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pageTitle, true), gettype($pageTitle)), __LINE__);
        }
        $this->pageTitle = $pageTitle;
        return $this;
    }
    /**
     * Get metaTagHtml value
     * @return string|null
     */
    public function getMetaTagHtml()
    {
        return $this->metaTagHtml;
    }
    /**
     * Set metaTagHtml value
     * @param string $metaTagHtml
     * @return \StructType\NonInventorySaleItem
     */
    public function setMetaTagHtml($metaTagHtml = null)
    {
        // validation for constraint: string
        if (!is_null($metaTagHtml) && !is_string($metaTagHtml)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($metaTagHtml, true), gettype($metaTagHtml)), __LINE__);
        }
        $this->metaTagHtml = $metaTagHtml;
        return $this;
    }
    /**
     * Get excludeFromSitemap value
     * @return bool|null
     */
    public function getExcludeFromSitemap()
    {
        return $this->excludeFromSitemap;
    }
    /**
     * Set excludeFromSitemap value
     * @param bool $excludeFromSitemap
     * @return \StructType\NonInventorySaleItem
     */
    public function setExcludeFromSitemap($excludeFromSitemap = null)
    {
        // validation for constraint: boolean
        if (!is_null($excludeFromSitemap) && !is_bool($excludeFromSitemap)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($excludeFromSitemap, true), gettype($excludeFromSitemap)), __LINE__);
        }
        $this->excludeFromSitemap = $excludeFromSitemap;
        return $this;
    }
    /**
     * Get sitemapPriority value
     * @return string|null
     */
    public function getSitemapPriority()
    {
        return $this->sitemapPriority;
    }
    /**
     * Set sitemapPriority value
     * @uses \EnumType\SitemapPriority::valueIsValid()
     * @uses \EnumType\SitemapPriority::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $sitemapPriority
     * @return \StructType\NonInventorySaleItem
     */
    public function setSitemapPriority($sitemapPriority = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\SitemapPriority::valueIsValid($sitemapPriority)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\SitemapPriority', is_array($sitemapPriority) ? implode(', ', $sitemapPriority) : var_export($sitemapPriority, true), implode(', ', \EnumType\SitemapPriority::getValidValues())), __LINE__);
        }
        $this->sitemapPriority = $sitemapPriority;
        return $this;
    }
    /**
     * Get searchKeywords value
     * @return string|null
     */
    public function getSearchKeywords()
    {
        return $this->searchKeywords;
    }
    /**
     * Set searchKeywords value
     * @param string $searchKeywords
     * @return \StructType\NonInventorySaleItem
     */
    public function setSearchKeywords($searchKeywords = null)
    {
        // validation for constraint: string
        if (!is_null($searchKeywords) && !is_string($searchKeywords)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($searchKeywords, true), gettype($searchKeywords)), __LINE__);
        }
        $this->searchKeywords = $searchKeywords;
        return $this;
    }
    /**
     * Get isDonationItem value
     * @return bool|null
     */
    public function getIsDonationItem()
    {
        return $this->isDonationItem;
    }
    /**
     * Set isDonationItem value
     * @param bool $isDonationItem
     * @return \StructType\NonInventorySaleItem
     */
    public function setIsDonationItem($isDonationItem = null)
    {
        // validation for constraint: boolean
        if (!is_null($isDonationItem) && !is_bool($isDonationItem)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isDonationItem, true), gettype($isDonationItem)), __LINE__);
        }
        $this->isDonationItem = $isDonationItem;
        return $this;
    }
    /**
     * Get showDefaultDonationAmount value
     * @return bool|null
     */
    public function getShowDefaultDonationAmount()
    {
        return $this->showDefaultDonationAmount;
    }
    /**
     * Set showDefaultDonationAmount value
     * @param bool $showDefaultDonationAmount
     * @return \StructType\NonInventorySaleItem
     */
    public function setShowDefaultDonationAmount($showDefaultDonationAmount = null)
    {
        // validation for constraint: boolean
        if (!is_null($showDefaultDonationAmount) && !is_bool($showDefaultDonationAmount)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($showDefaultDonationAmount, true), gettype($showDefaultDonationAmount)), __LINE__);
        }
        $this->showDefaultDonationAmount = $showDefaultDonationAmount;
        return $this;
    }
    /**
     * Get maxDonationAmount value
     * @return float|null
     */
    public function getMaxDonationAmount()
    {
        return $this->maxDonationAmount;
    }
    /**
     * Set maxDonationAmount value
     * @param float $maxDonationAmount
     * @return \StructType\NonInventorySaleItem
     */
    public function setMaxDonationAmount($maxDonationAmount = null)
    {
        // validation for constraint: float
        if (!is_null($maxDonationAmount) && !(is_float($maxDonationAmount) || is_numeric($maxDonationAmount))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($maxDonationAmount, true), gettype($maxDonationAmount)), __LINE__);
        }
        $this->maxDonationAmount = $maxDonationAmount;
        return $this;
    }
    /**
     * Get dontShowPrice value
     * @return bool|null
     */
    public function getDontShowPrice()
    {
        return $this->dontShowPrice;
    }
    /**
     * Set dontShowPrice value
     * @param bool $dontShowPrice
     * @return \StructType\NonInventorySaleItem
     */
    public function setDontShowPrice($dontShowPrice = null)
    {
        // validation for constraint: boolean
        if (!is_null($dontShowPrice) && !is_bool($dontShowPrice)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($dontShowPrice, true), gettype($dontShowPrice)), __LINE__);
        }
        $this->dontShowPrice = $dontShowPrice;
        return $this;
    }
    /**
     * Get noPriceMessage value
     * @return string|null
     */
    public function getNoPriceMessage()
    {
        return $this->noPriceMessage;
    }
    /**
     * Set noPriceMessage value
     * @param string $noPriceMessage
     * @return \StructType\NonInventorySaleItem
     */
    public function setNoPriceMessage($noPriceMessage = null)
    {
        // validation for constraint: string
        if (!is_null($noPriceMessage) && !is_string($noPriceMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($noPriceMessage, true), gettype($noPriceMessage)), __LINE__);
        }
        $this->noPriceMessage = $noPriceMessage;
        return $this;
    }
    /**
     * Get outOfStockMessage value
     * @return string|null
     */
    public function getOutOfStockMessage()
    {
        return $this->outOfStockMessage;
    }
    /**
     * Set outOfStockMessage value
     * @param string $outOfStockMessage
     * @return \StructType\NonInventorySaleItem
     */
    public function setOutOfStockMessage($outOfStockMessage = null)
    {
        // validation for constraint: string
        if (!is_null($outOfStockMessage) && !is_string($outOfStockMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($outOfStockMessage, true), gettype($outOfStockMessage)), __LINE__);
        }
        $this->outOfStockMessage = $outOfStockMessage;
        return $this;
    }
    /**
     * Get onSpecial value
     * @return bool|null
     */
    public function getOnSpecial()
    {
        return $this->onSpecial;
    }
    /**
     * Set onSpecial value
     * @param bool $onSpecial
     * @return \StructType\NonInventorySaleItem
     */
    public function setOnSpecial($onSpecial = null)
    {
        // validation for constraint: boolean
        if (!is_null($onSpecial) && !is_bool($onSpecial)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($onSpecial, true), gettype($onSpecial)), __LINE__);
        }
        $this->onSpecial = $onSpecial;
        return $this;
    }
    /**
     * Get outOfStockBehavior value
     * @return string|null
     */
    public function getOutOfStockBehavior()
    {
        return $this->outOfStockBehavior;
    }
    /**
     * Set outOfStockBehavior value
     * @uses \EnumType\ItemOutOfStockBehavior::valueIsValid()
     * @uses \EnumType\ItemOutOfStockBehavior::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $outOfStockBehavior
     * @return \StructType\NonInventorySaleItem
     */
    public function setOutOfStockBehavior($outOfStockBehavior = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemOutOfStockBehavior::valueIsValid($outOfStockBehavior)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemOutOfStockBehavior', is_array($outOfStockBehavior) ? implode(', ', $outOfStockBehavior) : var_export($outOfStockBehavior, true), implode(', ', \EnumType\ItemOutOfStockBehavior::getValidValues())), __LINE__);
        }
        $this->outOfStockBehavior = $outOfStockBehavior;
        return $this;
    }
    /**
     * Get relatedItemsDescription value
     * @return string|null
     */
    public function getRelatedItemsDescription()
    {
        return $this->relatedItemsDescription;
    }
    /**
     * Set relatedItemsDescription value
     * @param string $relatedItemsDescription
     * @return \StructType\NonInventorySaleItem
     */
    public function setRelatedItemsDescription($relatedItemsDescription = null)
    {
        // validation for constraint: string
        if (!is_null($relatedItemsDescription) && !is_string($relatedItemsDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($relatedItemsDescription, true), gettype($relatedItemsDescription)), __LINE__);
        }
        $this->relatedItemsDescription = $relatedItemsDescription;
        return $this;
    }
    /**
     * Get specialsDescription value
     * @return string|null
     */
    public function getSpecialsDescription()
    {
        return $this->specialsDescription;
    }
    /**
     * Set specialsDescription value
     * @param string $specialsDescription
     * @return \StructType\NonInventorySaleItem
     */
    public function setSpecialsDescription($specialsDescription = null)
    {
        // validation for constraint: string
        if (!is_null($specialsDescription) && !is_string($specialsDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($specialsDescription, true), gettype($specialsDescription)), __LINE__);
        }
        $this->specialsDescription = $specialsDescription;
        return $this;
    }
    /**
     * Get featuredDescription value
     * @return string|null
     */
    public function getFeaturedDescription()
    {
        return $this->featuredDescription;
    }
    /**
     * Set featuredDescription value
     * @param string $featuredDescription
     * @return \StructType\NonInventorySaleItem
     */
    public function setFeaturedDescription($featuredDescription = null)
    {
        // validation for constraint: string
        if (!is_null($featuredDescription) && !is_string($featuredDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($featuredDescription, true), gettype($featuredDescription)), __LINE__);
        }
        $this->featuredDescription = $featuredDescription;
        return $this;
    }
    /**
     * Get shoppingDotComCategory value
     * @return string|null
     */
    public function getShoppingDotComCategory()
    {
        return $this->shoppingDotComCategory;
    }
    /**
     * Set shoppingDotComCategory value
     * @param string $shoppingDotComCategory
     * @return \StructType\NonInventorySaleItem
     */
    public function setShoppingDotComCategory($shoppingDotComCategory = null)
    {
        // validation for constraint: string
        if (!is_null($shoppingDotComCategory) && !is_string($shoppingDotComCategory)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($shoppingDotComCategory, true), gettype($shoppingDotComCategory)), __LINE__);
        }
        $this->shoppingDotComCategory = $shoppingDotComCategory;
        return $this;
    }
    /**
     * Get shopzillaCategoryId value
     * @return int|null
     */
    public function getShopzillaCategoryId()
    {
        return $this->shopzillaCategoryId;
    }
    /**
     * Set shopzillaCategoryId value
     * @param int $shopzillaCategoryId
     * @return \StructType\NonInventorySaleItem
     */
    public function setShopzillaCategoryId($shopzillaCategoryId = null)
    {
        // validation for constraint: int
        if (!is_null($shopzillaCategoryId) && !(is_int($shopzillaCategoryId) || ctype_digit($shopzillaCategoryId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($shopzillaCategoryId, true), gettype($shopzillaCategoryId)), __LINE__);
        }
        $this->shopzillaCategoryId = $shopzillaCategoryId;
        return $this;
    }
    /**
     * Get nexTagCategory value
     * @return string|null
     */
    public function getNexTagCategory()
    {
        return $this->nexTagCategory;
    }
    /**
     * Set nexTagCategory value
     * @param string $nexTagCategory
     * @return \StructType\NonInventorySaleItem
     */
    public function setNexTagCategory($nexTagCategory = null)
    {
        // validation for constraint: string
        if (!is_null($nexTagCategory) && !is_string($nexTagCategory)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($nexTagCategory, true), gettype($nexTagCategory)), __LINE__);
        }
        $this->nexTagCategory = $nexTagCategory;
        return $this;
    }
    /**
     * Get productFeedList value
     * @return \StructType\ProductFeedList|null
     */
    public function getProductFeedList()
    {
        return $this->productFeedList;
    }
    /**
     * Set productFeedList value
     * @param \StructType\ProductFeedList $productFeedList
     * @return \StructType\NonInventorySaleItem
     */
    public function setProductFeedList(\StructType\ProductFeedList $productFeedList = null)
    {
        $this->productFeedList = $productFeedList;
        return $this;
    }
    /**
     * Get urlComponent value
     * @return string|null
     */
    public function getUrlComponent()
    {
        return $this->urlComponent;
    }
    /**
     * Set urlComponent value
     * @param string $urlComponent
     * @return \StructType\NonInventorySaleItem
     */
    public function setUrlComponent($urlComponent = null)
    {
        // validation for constraint: string
        if (!is_null($urlComponent) && !is_string($urlComponent)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($urlComponent, true), gettype($urlComponent)), __LINE__);
        }
        $this->urlComponent = $urlComponent;
        return $this;
    }
    /**
     * Get customForm value
     * @return \StructType\RecordRef|null
     */
    public function getCustomForm()
    {
        return $this->customForm;
    }
    /**
     * Set customForm value
     * @param \StructType\RecordRef $customForm
     * @return \StructType\NonInventorySaleItem
     */
    public function setCustomForm(\StructType\RecordRef $customForm = null)
    {
        $this->customForm = $customForm;
        return $this;
    }
    /**
     * Get itemId value
     * @return string|null
     */
    public function getItemId()
    {
        return $this->itemId;
    }
    /**
     * Set itemId value
     * @param string $itemId
     * @return \StructType\NonInventorySaleItem
     */
    public function setItemId($itemId = null)
    {
        // validation for constraint: string
        if (!is_null($itemId) && !is_string($itemId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($itemId, true), gettype($itemId)), __LINE__);
        }
        $this->itemId = $itemId;
        return $this;
    }
    /**
     * Get upcCode value
     * @return string|null
     */
    public function getUpcCode()
    {
        return $this->upcCode;
    }
    /**
     * Set upcCode value
     * @param string $upcCode
     * @return \StructType\NonInventorySaleItem
     */
    public function setUpcCode($upcCode = null)
    {
        // validation for constraint: string
        if (!is_null($upcCode) && !is_string($upcCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($upcCode, true), gettype($upcCode)), __LINE__);
        }
        $this->upcCode = $upcCode;
        return $this;
    }
    /**
     * Get displayName value
     * @return string|null
     */
    public function getDisplayName()
    {
        return $this->displayName;
    }
    /**
     * Set displayName value
     * @param string $displayName
     * @return \StructType\NonInventorySaleItem
     */
    public function setDisplayName($displayName = null)
    {
        // validation for constraint: string
        if (!is_null($displayName) && !is_string($displayName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($displayName, true), gettype($displayName)), __LINE__);
        }
        $this->displayName = $displayName;
        return $this;
    }
    /**
     * Get parent value
     * @return \StructType\RecordRef|null
     */
    public function getParent()
    {
        return $this->parent;
    }
    /**
     * Set parent value
     * @param \StructType\RecordRef $parent
     * @return \StructType\NonInventorySaleItem
     */
    public function setParent(\StructType\RecordRef $parent = null)
    {
        $this->parent = $parent;
        return $this;
    }
    /**
     * Get isOnline value
     * @return bool|null
     */
    public function getIsOnline()
    {
        return $this->isOnline;
    }
    /**
     * Set isOnline value
     * @param bool $isOnline
     * @return \StructType\NonInventorySaleItem
     */
    public function setIsOnline($isOnline = null)
    {
        // validation for constraint: boolean
        if (!is_null($isOnline) && !is_bool($isOnline)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isOnline, true), gettype($isOnline)), __LINE__);
        }
        $this->isOnline = $isOnline;
        return $this;
    }
    /**
     * Get isGcoCompliant value
     * @return bool|null
     */
    public function getIsGcoCompliant()
    {
        return $this->isGcoCompliant;
    }
    /**
     * Set isGcoCompliant value
     * @param bool $isGcoCompliant
     * @return \StructType\NonInventorySaleItem
     */
    public function setIsGcoCompliant($isGcoCompliant = null)
    {
        // validation for constraint: boolean
        if (!is_null($isGcoCompliant) && !is_bool($isGcoCompliant)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isGcoCompliant, true), gettype($isGcoCompliant)), __LINE__);
        }
        $this->isGcoCompliant = $isGcoCompliant;
        return $this;
    }
    /**
     * Get offerSupport value
     * @return bool|null
     */
    public function getOfferSupport()
    {
        return $this->offerSupport;
    }
    /**
     * Set offerSupport value
     * @param bool $offerSupport
     * @return \StructType\NonInventorySaleItem
     */
    public function setOfferSupport($offerSupport = null)
    {
        // validation for constraint: boolean
        if (!is_null($offerSupport) && !is_bool($offerSupport)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($offerSupport, true), gettype($offerSupport)), __LINE__);
        }
        $this->offerSupport = $offerSupport;
        return $this;
    }
    /**
     * Get isInactive value
     * @return bool|null
     */
    public function getIsInactive()
    {
        return $this->isInactive;
    }
    /**
     * Set isInactive value
     * @param bool $isInactive
     * @return \StructType\NonInventorySaleItem
     */
    public function setIsInactive($isInactive = null)
    {
        // validation for constraint: boolean
        if (!is_null($isInactive) && !is_bool($isInactive)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isInactive, true), gettype($isInactive)), __LINE__);
        }
        $this->isInactive = $isInactive;
        return $this;
    }
    /**
     * Get matrixItemNameTemplate value
     * @return string|null
     */
    public function getMatrixItemNameTemplate()
    {
        return $this->matrixItemNameTemplate;
    }
    /**
     * Set matrixItemNameTemplate value
     * @param string $matrixItemNameTemplate
     * @return \StructType\NonInventorySaleItem
     */
    public function setMatrixItemNameTemplate($matrixItemNameTemplate = null)
    {
        // validation for constraint: string
        if (!is_null($matrixItemNameTemplate) && !is_string($matrixItemNameTemplate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($matrixItemNameTemplate, true), gettype($matrixItemNameTemplate)), __LINE__);
        }
        $this->matrixItemNameTemplate = $matrixItemNameTemplate;
        return $this;
    }
    /**
     * Get availableToPartners value
     * @return bool|null
     */
    public function getAvailableToPartners()
    {
        return $this->availableToPartners;
    }
    /**
     * Set availableToPartners value
     * @param bool $availableToPartners
     * @return \StructType\NonInventorySaleItem
     */
    public function setAvailableToPartners($availableToPartners = null)
    {
        // validation for constraint: boolean
        if (!is_null($availableToPartners) && !is_bool($availableToPartners)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($availableToPartners, true), gettype($availableToPartners)), __LINE__);
        }
        $this->availableToPartners = $availableToPartners;
        return $this;
    }
    /**
     * Get department value
     * @return \StructType\RecordRef|null
     */
    public function getDepartment()
    {
        return $this->department;
    }
    /**
     * Set department value
     * @param \StructType\RecordRef $department
     * @return \StructType\NonInventorySaleItem
     */
    public function setDepartment(\StructType\RecordRef $department = null)
    {
        $this->department = $department;
        return $this;
    }
    /**
     * Get class value
     * @return \StructType\RecordRef|null
     */
    public function getClass()
    {
        return $this->class;
    }
    /**
     * Set class value
     * @param \StructType\RecordRef $class
     * @return \StructType\NonInventorySaleItem
     */
    public function setClass(\StructType\RecordRef $class = null)
    {
        $this->class = $class;
        return $this;
    }
    /**
     * Get location value
     * @return \StructType\RecordRef|null
     */
    public function getLocation()
    {
        return $this->location;
    }
    /**
     * Set location value
     * @param \StructType\RecordRef $location
     * @return \StructType\NonInventorySaleItem
     */
    public function setLocation(\StructType\RecordRef $location = null)
    {
        $this->location = $location;
        return $this;
    }
    /**
     * Get defaultItemShipMethod value
     * @return \StructType\RecordRef|null
     */
    public function getDefaultItemShipMethod()
    {
        return $this->defaultItemShipMethod;
    }
    /**
     * Set defaultItemShipMethod value
     * @param \StructType\RecordRef $defaultItemShipMethod
     * @return \StructType\NonInventorySaleItem
     */
    public function setDefaultItemShipMethod(\StructType\RecordRef $defaultItemShipMethod = null)
    {
        $this->defaultItemShipMethod = $defaultItemShipMethod;
        return $this;
    }
    /**
     * Get itemCarrier value
     * @return string|null
     */
    public function getItemCarrier()
    {
        return $this->itemCarrier;
    }
    /**
     * Set itemCarrier value
     * @uses \EnumType\ShippingCarrier::valueIsValid()
     * @uses \EnumType\ShippingCarrier::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $itemCarrier
     * @return \StructType\NonInventorySaleItem
     */
    public function setItemCarrier($itemCarrier = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ShippingCarrier::valueIsValid($itemCarrier)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ShippingCarrier', is_array($itemCarrier) ? implode(', ', $itemCarrier) : var_export($itemCarrier, true), implode(', ', \EnumType\ShippingCarrier::getValidValues())), __LINE__);
        }
        $this->itemCarrier = $itemCarrier;
        return $this;
    }
    /**
     * Get itemShipMethodList value
     * @return \StructType\RecordRefList|null
     */
    public function getItemShipMethodList()
    {
        return $this->itemShipMethodList;
    }
    /**
     * Set itemShipMethodList value
     * @param \StructType\RecordRefList $itemShipMethodList
     * @return \StructType\NonInventorySaleItem
     */
    public function setItemShipMethodList(\StructType\RecordRefList $itemShipMethodList = null)
    {
        $this->itemShipMethodList = $itemShipMethodList;
        return $this;
    }
    /**
     * Get subsidiaryList value
     * @return \StructType\RecordRefList|null
     */
    public function getSubsidiaryList()
    {
        return $this->subsidiaryList;
    }
    /**
     * Set subsidiaryList value
     * @param \StructType\RecordRefList $subsidiaryList
     * @return \StructType\NonInventorySaleItem
     */
    public function setSubsidiaryList(\StructType\RecordRefList $subsidiaryList = null)
    {
        $this->subsidiaryList = $subsidiaryList;
        return $this;
    }
    /**
     * Get itemOptionsList value
     * @return \StructType\ItemOptionsList|null
     */
    public function getItemOptionsList()
    {
        return $this->itemOptionsList;
    }
    /**
     * Set itemOptionsList value
     * @param \StructType\ItemOptionsList $itemOptionsList
     * @return \StructType\NonInventorySaleItem
     */
    public function setItemOptionsList(\StructType\ItemOptionsList $itemOptionsList = null)
    {
        $this->itemOptionsList = $itemOptionsList;
        return $this;
    }
    /**
     * Get matrixOptionList value
     * @return \StructType\MatrixOptionList|null
     */
    public function getMatrixOptionList()
    {
        return $this->matrixOptionList;
    }
    /**
     * Set matrixOptionList value
     * @param \StructType\MatrixOptionList $matrixOptionList
     * @return \StructType\NonInventorySaleItem
     */
    public function setMatrixOptionList(\StructType\MatrixOptionList $matrixOptionList = null)
    {
        $this->matrixOptionList = $matrixOptionList;
        return $this;
    }
    /**
     * Get pricingMatrix value
     * @return \StructType\PricingMatrix|null
     */
    public function getPricingMatrix()
    {
        return $this->pricingMatrix;
    }
    /**
     * Set pricingMatrix value
     * @param \StructType\PricingMatrix $pricingMatrix
     * @return \StructType\NonInventorySaleItem
     */
    public function setPricingMatrix(\StructType\PricingMatrix $pricingMatrix = null)
    {
        $this->pricingMatrix = $pricingMatrix;
        return $this;
    }
    /**
     * Get accountingBookDetailList value
     * @return \StructType\ItemAccountingBookDetailList|null
     */
    public function getAccountingBookDetailList()
    {
        return $this->accountingBookDetailList;
    }
    /**
     * Set accountingBookDetailList value
     * @param \StructType\ItemAccountingBookDetailList $accountingBookDetailList
     * @return \StructType\NonInventorySaleItem
     */
    public function setAccountingBookDetailList(\StructType\ItemAccountingBookDetailList $accountingBookDetailList = null)
    {
        $this->accountingBookDetailList = $accountingBookDetailList;
        return $this;
    }
    /**
     * Get purchaseTaxCode value
     * @return \StructType\RecordRef|null
     */
    public function getPurchaseTaxCode()
    {
        return $this->purchaseTaxCode;
    }
    /**
     * Set purchaseTaxCode value
     * @param \StructType\RecordRef $purchaseTaxCode
     * @return \StructType\NonInventorySaleItem
     */
    public function setPurchaseTaxCode(\StructType\RecordRef $purchaseTaxCode = null)
    {
        $this->purchaseTaxCode = $purchaseTaxCode;
        return $this;
    }
    /**
     * Get rate value
     * @return float|null
     */
    public function getRate()
    {
        return $this->rate;
    }
    /**
     * Set rate value
     * @param float $rate
     * @return \StructType\NonInventorySaleItem
     */
    public function setRate($rate = null)
    {
        // validation for constraint: float
        if (!is_null($rate) && !(is_float($rate) || is_numeric($rate))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($rate, true), gettype($rate)), __LINE__);
        }
        $this->rate = $rate;
        return $this;
    }
    /**
     * Get salesTaxCode value
     * @return \StructType\RecordRef|null
     */
    public function getSalesTaxCode()
    {
        return $this->salesTaxCode;
    }
    /**
     * Set salesTaxCode value
     * @param \StructType\RecordRef $salesTaxCode
     * @return \StructType\NonInventorySaleItem
     */
    public function setSalesTaxCode(\StructType\RecordRef $salesTaxCode = null)
    {
        $this->salesTaxCode = $salesTaxCode;
        return $this;
    }
    /**
     * Get siteCategoryList value
     * @return \StructType\SiteCategoryList|null
     */
    public function getSiteCategoryList()
    {
        return $this->siteCategoryList;
    }
    /**
     * Set siteCategoryList value
     * @param \StructType\SiteCategoryList $siteCategoryList
     * @return \StructType\NonInventorySaleItem
     */
    public function setSiteCategoryList(\StructType\SiteCategoryList $siteCategoryList = null)
    {
        $this->siteCategoryList = $siteCategoryList;
        return $this;
    }
    /**
     * Get translationsList value
     * @return \StructType\TranslationList|null
     */
    public function getTranslationsList()
    {
        return $this->translationsList;
    }
    /**
     * Set translationsList value
     * @param \StructType\TranslationList $translationsList
     * @return \StructType\NonInventorySaleItem
     */
    public function setTranslationsList(\StructType\TranslationList $translationsList = null)
    {
        $this->translationsList = $translationsList;
        return $this;
    }
    /**
     * Get presentationItemList value
     * @return \StructType\PresentationItemList|null
     */
    public function getPresentationItemList()
    {
        return $this->presentationItemList;
    }
    /**
     * Set presentationItemList value
     * @param \StructType\PresentationItemList $presentationItemList
     * @return \StructType\NonInventorySaleItem
     */
    public function setPresentationItemList(\StructType\PresentationItemList $presentationItemList = null)
    {
        $this->presentationItemList = $presentationItemList;
        return $this;
    }
    /**
     * Get hierarchyVersionsList value
     * @return \StructType\NonInventorySaleItemHierarchyVersionsList|null
     */
    public function getHierarchyVersionsList()
    {
        return $this->hierarchyVersionsList;
    }
    /**
     * Set hierarchyVersionsList value
     * @param \StructType\NonInventorySaleItemHierarchyVersionsList $hierarchyVersionsList
     * @return \StructType\NonInventorySaleItem
     */
    public function setHierarchyVersionsList(\StructType\NonInventorySaleItemHierarchyVersionsList $hierarchyVersionsList = null)
    {
        $this->hierarchyVersionsList = $hierarchyVersionsList;
        return $this;
    }
    /**
     * Get consumptionUnit value
     * @return \StructType\RecordRef|null
     */
    public function getConsumptionUnit()
    {
        return $this->consumptionUnit;
    }
    /**
     * Set consumptionUnit value
     * @param \StructType\RecordRef $consumptionUnit
     * @return \StructType\NonInventorySaleItem
     */
    public function setConsumptionUnit(\StructType\RecordRef $consumptionUnit = null)
    {
        $this->consumptionUnit = $consumptionUnit;
        return $this;
    }
    /**
     * Get customFieldList value
     * @return \StructType\CustomFieldList|null
     */
    public function getCustomFieldList()
    {
        return $this->customFieldList;
    }
    /**
     * Set customFieldList value
     * @param \StructType\CustomFieldList $customFieldList
     * @return \StructType\NonInventorySaleItem
     */
    public function setCustomFieldList(\StructType\CustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
    /**
     * Get internalId value
     * @return string|null
     */
    public function getInternalId()
    {
        return $this->internalId;
    }
    /**
     * Set internalId value
     * @param string $internalId
     * @return \StructType\NonInventorySaleItem
     */
    public function setInternalId($internalId = null)
    {
        // validation for constraint: string
        if (!is_null($internalId) && !is_string($internalId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($internalId, true), gettype($internalId)), __LINE__);
        }
        $this->internalId = $internalId;
        return $this;
    }
    /**
     * Get externalId value
     * @return string|null
     */
    public function getExternalId()
    {
        return $this->externalId;
    }
    /**
     * Set externalId value
     * @param string $externalId
     * @return \StructType\NonInventorySaleItem
     */
    public function setExternalId($externalId = null)
    {
        // validation for constraint: string
        if (!is_null($externalId) && !is_string($externalId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($externalId, true), gettype($externalId)), __LINE__);
        }
        $this->externalId = $externalId;
        return $this;
    }
}
