<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ItemNumberCustomFieldFilter StructType
 * @subpackage Structs
 */
class ItemNumberCustomFieldFilter extends AbstractStructBase
{
    /**
     * The fldFilter
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $fldFilter;
    /**
     * The fldFilterChecked
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $fldFilterChecked;
    /**
     * The fldFilterCompareType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $fldFilterCompareType;
    /**
     * The fldFilterVal
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $fldFilterVal;
    /**
     * The fldFilterNotNull
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $fldFilterNotNull;
    /**
     * The fldfilterNull
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $fldfilterNull;
    /**
     * The fldCompareField
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $fldCompareField;
    /**
     * Constructor method for ItemNumberCustomFieldFilter
     * @uses ItemNumberCustomFieldFilter::setFldFilter()
     * @uses ItemNumberCustomFieldFilter::setFldFilterChecked()
     * @uses ItemNumberCustomFieldFilter::setFldFilterCompareType()
     * @uses ItemNumberCustomFieldFilter::setFldFilterVal()
     * @uses ItemNumberCustomFieldFilter::setFldFilterNotNull()
     * @uses ItemNumberCustomFieldFilter::setFldfilterNull()
     * @uses ItemNumberCustomFieldFilter::setFldCompareField()
     * @param \StructType\RecordRef $fldFilter
     * @param bool $fldFilterChecked
     * @param string $fldFilterCompareType
     * @param string $fldFilterVal
     * @param bool $fldFilterNotNull
     * @param bool $fldfilterNull
     * @param \StructType\RecordRef $fldCompareField
     */
    public function __construct(\StructType\RecordRef $fldFilter = null, $fldFilterChecked = null, $fldFilterCompareType = null, $fldFilterVal = null, $fldFilterNotNull = null, $fldfilterNull = null, \StructType\RecordRef $fldCompareField = null)
    {
        $this
            ->setFldFilter($fldFilter)
            ->setFldFilterChecked($fldFilterChecked)
            ->setFldFilterCompareType($fldFilterCompareType)
            ->setFldFilterVal($fldFilterVal)
            ->setFldFilterNotNull($fldFilterNotNull)
            ->setFldfilterNull($fldfilterNull)
            ->setFldCompareField($fldCompareField);
    }
    /**
     * Get fldFilter value
     * @return \StructType\RecordRef|null
     */
    public function getFldFilter()
    {
        return $this->fldFilter;
    }
    /**
     * Set fldFilter value
     * @param \StructType\RecordRef $fldFilter
     * @return \StructType\ItemNumberCustomFieldFilter
     */
    public function setFldFilter(\StructType\RecordRef $fldFilter = null)
    {
        $this->fldFilter = $fldFilter;
        return $this;
    }
    /**
     * Get fldFilterChecked value
     * @return bool|null
     */
    public function getFldFilterChecked()
    {
        return $this->fldFilterChecked;
    }
    /**
     * Set fldFilterChecked value
     * @param bool $fldFilterChecked
     * @return \StructType\ItemNumberCustomFieldFilter
     */
    public function setFldFilterChecked($fldFilterChecked = null)
    {
        // validation for constraint: boolean
        if (!is_null($fldFilterChecked) && !is_bool($fldFilterChecked)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($fldFilterChecked, true), gettype($fldFilterChecked)), __LINE__);
        }
        $this->fldFilterChecked = $fldFilterChecked;
        return $this;
    }
    /**
     * Get fldFilterCompareType value
     * @return string|null
     */
    public function getFldFilterCompareType()
    {
        return $this->fldFilterCompareType;
    }
    /**
     * Set fldFilterCompareType value
     * @uses \EnumType\CustomizationFilterCompareType::valueIsValid()
     * @uses \EnumType\CustomizationFilterCompareType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $fldFilterCompareType
     * @return \StructType\ItemNumberCustomFieldFilter
     */
    public function setFldFilterCompareType($fldFilterCompareType = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\CustomizationFilterCompareType::valueIsValid($fldFilterCompareType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\CustomizationFilterCompareType', is_array($fldFilterCompareType) ? implode(', ', $fldFilterCompareType) : var_export($fldFilterCompareType, true), implode(', ', \EnumType\CustomizationFilterCompareType::getValidValues())), __LINE__);
        }
        $this->fldFilterCompareType = $fldFilterCompareType;
        return $this;
    }
    /**
     * Get fldFilterVal value
     * @return string|null
     */
    public function getFldFilterVal()
    {
        return $this->fldFilterVal;
    }
    /**
     * Set fldFilterVal value
     * @param string $fldFilterVal
     * @return \StructType\ItemNumberCustomFieldFilter
     */
    public function setFldFilterVal($fldFilterVal = null)
    {
        // validation for constraint: string
        if (!is_null($fldFilterVal) && !is_string($fldFilterVal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($fldFilterVal, true), gettype($fldFilterVal)), __LINE__);
        }
        $this->fldFilterVal = $fldFilterVal;
        return $this;
    }
    /**
     * Get fldFilterNotNull value
     * @return bool|null
     */
    public function getFldFilterNotNull()
    {
        return $this->fldFilterNotNull;
    }
    /**
     * Set fldFilterNotNull value
     * @param bool $fldFilterNotNull
     * @return \StructType\ItemNumberCustomFieldFilter
     */
    public function setFldFilterNotNull($fldFilterNotNull = null)
    {
        // validation for constraint: boolean
        if (!is_null($fldFilterNotNull) && !is_bool($fldFilterNotNull)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($fldFilterNotNull, true), gettype($fldFilterNotNull)), __LINE__);
        }
        $this->fldFilterNotNull = $fldFilterNotNull;
        return $this;
    }
    /**
     * Get fldfilterNull value
     * @return bool|null
     */
    public function getFldfilterNull()
    {
        return $this->fldfilterNull;
    }
    /**
     * Set fldfilterNull value
     * @param bool $fldfilterNull
     * @return \StructType\ItemNumberCustomFieldFilter
     */
    public function setFldfilterNull($fldfilterNull = null)
    {
        // validation for constraint: boolean
        if (!is_null($fldfilterNull) && !is_bool($fldfilterNull)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($fldfilterNull, true), gettype($fldfilterNull)), __LINE__);
        }
        $this->fldfilterNull = $fldfilterNull;
        return $this;
    }
    /**
     * Get fldCompareField value
     * @return \StructType\RecordRef|null
     */
    public function getFldCompareField()
    {
        return $this->fldCompareField;
    }
    /**
     * Set fldCompareField value
     * @param \StructType\RecordRef $fldCompareField
     * @return \StructType\ItemNumberCustomFieldFilter
     */
    public function setFldCompareField(\StructType\RecordRef $fldCompareField = null)
    {
        $this->fldCompareField = $fldCompareField;
        return $this;
    }
}
