<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for TransactionColumnCustomFieldFilter StructType
 * @subpackage Structs
 */
class TransactionColumnCustomFieldFilter 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 fldFilterSelList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\FldFilterSelList
     */
    public $fldFilterSelList;
    /**
     * The fldFilterNotNull
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $fldFilterNotNull;
    /**
     * Constructor method for TransactionColumnCustomFieldFilter
     * @uses TransactionColumnCustomFieldFilter::setFldFilter()
     * @uses TransactionColumnCustomFieldFilter::setFldFilterChecked()
     * @uses TransactionColumnCustomFieldFilter::setFldFilterCompareType()
     * @uses TransactionColumnCustomFieldFilter::setFldFilterVal()
     * @uses TransactionColumnCustomFieldFilter::setFldFilterSelList()
     * @uses TransactionColumnCustomFieldFilter::setFldFilterNotNull()
     * @param \StructType\RecordRef $fldFilter
     * @param bool $fldFilterChecked
     * @param string $fldFilterCompareType
     * @param string $fldFilterVal
     * @param \StructType\FldFilterSelList $fldFilterSelList
     * @param bool $fldFilterNotNull
     */
    public function __construct(\StructType\RecordRef $fldFilter = null, $fldFilterChecked = null, $fldFilterCompareType = null, $fldFilterVal = null, \StructType\FldFilterSelList $fldFilterSelList = null, $fldFilterNotNull = null)
    {
        $this
            ->setFldFilter($fldFilter)
            ->setFldFilterChecked($fldFilterChecked)
            ->setFldFilterCompareType($fldFilterCompareType)
            ->setFldFilterVal($fldFilterVal)
            ->setFldFilterSelList($fldFilterSelList)
            ->setFldFilterNotNull($fldFilterNotNull);
    }
    /**
     * Get fldFilter value
     * @return \StructType\RecordRef|null
     */
    public function getFldFilter()
    {
        return $this->fldFilter;
    }
    /**
     * Set fldFilter value
     * @param \StructType\RecordRef $fldFilter
     * @return \StructType\TransactionColumnCustomFieldFilter
     */
    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\TransactionColumnCustomFieldFilter
     */
    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\TransactionColumnCustomFieldFilter
     */
    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\TransactionColumnCustomFieldFilter
     */
    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 fldFilterSelList value
     * @return \StructType\FldFilterSelList|null
     */
    public function getFldFilterSelList()
    {
        return $this->fldFilterSelList;
    }
    /**
     * Set fldFilterSelList value
     * @param \StructType\FldFilterSelList $fldFilterSelList
     * @return \StructType\TransactionColumnCustomFieldFilter
     */
    public function setFldFilterSelList(\StructType\FldFilterSelList $fldFilterSelList = null)
    {
        $this->fldFilterSelList = $fldFilterSelList;
        return $this;
    }
    /**
     * Get fldFilterNotNull value
     * @return bool|null
     */
    public function getFldFilterNotNull()
    {
        return $this->fldFilterNotNull;
    }
    /**
     * Set fldFilterNotNull value
     * @param bool $fldFilterNotNull
     * @return \StructType\TransactionColumnCustomFieldFilter
     */
    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;
    }
}
