<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Payment.PaymentInstallmentsScheduleFilter StructType
 * @subpackage Structs
 */
class Payment_PaymentInstallmentsScheduleFilter extends FilterEntity
{
    /**
     * The NextDueDateFrom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NextDueDateFrom;
    /**
     * The NextDueDateTo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NextDueDateTo;
    /**
     * The TransactionDateFrom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TransactionDateFrom;
    /**
     * The TransactionDateTo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TransactionDateTo;
    /**
     * The TransactionNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $TransactionNumber;
    /**
     * Constructor method for Payment.PaymentInstallmentsScheduleFilter
     * @uses Payment_PaymentInstallmentsScheduleFilter::setNextDueDateFrom()
     * @uses Payment_PaymentInstallmentsScheduleFilter::setNextDueDateTo()
     * @uses Payment_PaymentInstallmentsScheduleFilter::setTransactionDateFrom()
     * @uses Payment_PaymentInstallmentsScheduleFilter::setTransactionDateTo()
     * @uses Payment_PaymentInstallmentsScheduleFilter::setTransactionNumber()
     * @param string $nextDueDateFrom
     * @param string $nextDueDateTo
     * @param string $transactionDateFrom
     * @param string $transactionDateTo
     * @param int $transactionNumber
     */
    public function __construct($nextDueDateFrom = null, $nextDueDateTo = null, $transactionDateFrom = null, $transactionDateTo = null, $transactionNumber = null)
    {
        $this
            ->setNextDueDateFrom($nextDueDateFrom)
            ->setNextDueDateTo($nextDueDateTo)
            ->setTransactionDateFrom($transactionDateFrom)
            ->setTransactionDateTo($transactionDateTo)
            ->setTransactionNumber($transactionNumber);
    }
    /**
     * Get NextDueDateFrom value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getNextDueDateFrom()
    {
        return isset($this->NextDueDateFrom) ? $this->NextDueDateFrom : null;
    }
    /**
     * Set NextDueDateFrom value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $nextDueDateFrom
     * @return \patest\StructType\Payment_PaymentInstallmentsScheduleFilter
     */
    public function setNextDueDateFrom($nextDueDateFrom = null)
    {
        // validation for constraint: string
        if (!is_null($nextDueDateFrom) && !is_string($nextDueDateFrom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($nextDueDateFrom, true), gettype($nextDueDateFrom)), __LINE__);
        }
        if (is_null($nextDueDateFrom) || (is_array($nextDueDateFrom) && empty($nextDueDateFrom))) {
            unset($this->NextDueDateFrom);
        } else {
            $this->NextDueDateFrom = $nextDueDateFrom;
        }
        return $this;
    }
    /**
     * Get NextDueDateTo value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getNextDueDateTo()
    {
        return isset($this->NextDueDateTo) ? $this->NextDueDateTo : null;
    }
    /**
     * Set NextDueDateTo value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $nextDueDateTo
     * @return \patest\StructType\Payment_PaymentInstallmentsScheduleFilter
     */
    public function setNextDueDateTo($nextDueDateTo = null)
    {
        // validation for constraint: string
        if (!is_null($nextDueDateTo) && !is_string($nextDueDateTo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($nextDueDateTo, true), gettype($nextDueDateTo)), __LINE__);
        }
        if (is_null($nextDueDateTo) || (is_array($nextDueDateTo) && empty($nextDueDateTo))) {
            unset($this->NextDueDateTo);
        } else {
            $this->NextDueDateTo = $nextDueDateTo;
        }
        return $this;
    }
    /**
     * Get TransactionDateFrom value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getTransactionDateFrom()
    {
        return isset($this->TransactionDateFrom) ? $this->TransactionDateFrom : null;
    }
    /**
     * Set TransactionDateFrom value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $transactionDateFrom
     * @return \patest\StructType\Payment_PaymentInstallmentsScheduleFilter
     */
    public function setTransactionDateFrom($transactionDateFrom = null)
    {
        // validation for constraint: string
        if (!is_null($transactionDateFrom) && !is_string($transactionDateFrom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($transactionDateFrom, true), gettype($transactionDateFrom)), __LINE__);
        }
        if (is_null($transactionDateFrom) || (is_array($transactionDateFrom) && empty($transactionDateFrom))) {
            unset($this->TransactionDateFrom);
        } else {
            $this->TransactionDateFrom = $transactionDateFrom;
        }
        return $this;
    }
    /**
     * Get TransactionDateTo value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getTransactionDateTo()
    {
        return isset($this->TransactionDateTo) ? $this->TransactionDateTo : null;
    }
    /**
     * Set TransactionDateTo value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $transactionDateTo
     * @return \patest\StructType\Payment_PaymentInstallmentsScheduleFilter
     */
    public function setTransactionDateTo($transactionDateTo = null)
    {
        // validation for constraint: string
        if (!is_null($transactionDateTo) && !is_string($transactionDateTo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($transactionDateTo, true), gettype($transactionDateTo)), __LINE__);
        }
        if (is_null($transactionDateTo) || (is_array($transactionDateTo) && empty($transactionDateTo))) {
            unset($this->TransactionDateTo);
        } else {
            $this->TransactionDateTo = $transactionDateTo;
        }
        return $this;
    }
    /**
     * Get TransactionNumber value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return int|null
     */
    public function getTransactionNumber()
    {
        return isset($this->TransactionNumber) ? $this->TransactionNumber : null;
    }
    /**
     * Set TransactionNumber value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param int $transactionNumber
     * @return \patest\StructType\Payment_PaymentInstallmentsScheduleFilter
     */
    public function setTransactionNumber($transactionNumber = null)
    {
        // validation for constraint: int
        if (!is_null($transactionNumber) && !(is_int($transactionNumber) || ctype_digit($transactionNumber))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($transactionNumber, true), gettype($transactionNumber)), __LINE__);
        }
        if (is_null($transactionNumber) || (is_array($transactionNumber) && empty($transactionNumber))) {
            unset($this->TransactionNumber);
        } else {
            $this->TransactionNumber = $transactionNumber;
        }
        return $this;
    }
}
