<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Printing.PrintableItem.OnlinePaymentItemForInvoice
 * StructType
 * @subpackage Structs
 */
class Printing_PrintableItem_OnlinePaymentItemForInvoice extends Printing_PrintableItem_AnyPaymentRecord
{
    /**
     * The CardExpirationMM
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CardExpirationMM;
    /**
     * The CardExpirationYY
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CardExpirationYY;
    /**
     * The CardNumberMask
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CardNumberMask;
    /**
     * The CreditCompanyName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CreditCompanyName;
    /**
     * The Installments
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $Installments;
    /**
     * The InternalReferenceNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $InternalReferenceNumber;
    /**
     * The Prefix
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Prefix;
    /**
     * The ReferenceNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ReferenceNumber;
    /**
     * The Suffix
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Suffix;
    /**
     * Constructor method for Printing.PrintableItem.OnlinePaymentItemForInvoice
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setCardExpirationMM()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setCardExpirationYY()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setCardNumberMask()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setCreditCompanyName()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setInstallments()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setInternalReferenceNumber()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setPrefix()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setReferenceNumber()
     * @uses Printing_PrintableItem_OnlinePaymentItemForInvoice::setSuffix()
     * @param string $cardExpirationMM
     * @param string $cardExpirationYY
     * @param string $cardNumberMask
     * @param string $creditCompanyName
     * @param int $installments
     * @param string $internalReferenceNumber
     * @param string $prefix
     * @param string $referenceNumber
     * @param string $suffix
     */
    public function __construct($cardExpirationMM = null, $cardExpirationYY = null, $cardNumberMask = null, $creditCompanyName = null, $installments = null, $internalReferenceNumber = null, $prefix = null, $referenceNumber = null, $suffix = null)
    {
        $this
            ->setCardExpirationMM($cardExpirationMM)
            ->setCardExpirationYY($cardExpirationYY)
            ->setCardNumberMask($cardNumberMask)
            ->setCreditCompanyName($creditCompanyName)
            ->setInstallments($installments)
            ->setInternalReferenceNumber($internalReferenceNumber)
            ->setPrefix($prefix)
            ->setReferenceNumber($referenceNumber)
            ->setSuffix($suffix);
    }
    /**
     * Get CardExpirationMM 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 getCardExpirationMM()
    {
        return isset($this->CardExpirationMM) ? $this->CardExpirationMM : null;
    }
    /**
     * Set CardExpirationMM 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 $cardExpirationMM
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setCardExpirationMM($cardExpirationMM = null)
    {
        // validation for constraint: string
        if (!is_null($cardExpirationMM) && !is_string($cardExpirationMM)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($cardExpirationMM, true), gettype($cardExpirationMM)), __LINE__);
        }
        if (is_null($cardExpirationMM) || (is_array($cardExpirationMM) && empty($cardExpirationMM))) {
            unset($this->CardExpirationMM);
        } else {
            $this->CardExpirationMM = $cardExpirationMM;
        }
        return $this;
    }
    /**
     * Get CardExpirationYY 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 getCardExpirationYY()
    {
        return isset($this->CardExpirationYY) ? $this->CardExpirationYY : null;
    }
    /**
     * Set CardExpirationYY 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 $cardExpirationYY
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setCardExpirationYY($cardExpirationYY = null)
    {
        // validation for constraint: string
        if (!is_null($cardExpirationYY) && !is_string($cardExpirationYY)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($cardExpirationYY, true), gettype($cardExpirationYY)), __LINE__);
        }
        if (is_null($cardExpirationYY) || (is_array($cardExpirationYY) && empty($cardExpirationYY))) {
            unset($this->CardExpirationYY);
        } else {
            $this->CardExpirationYY = $cardExpirationYY;
        }
        return $this;
    }
    /**
     * Get CardNumberMask 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 getCardNumberMask()
    {
        return isset($this->CardNumberMask) ? $this->CardNumberMask : null;
    }
    /**
     * Set CardNumberMask 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 $cardNumberMask
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setCardNumberMask($cardNumberMask = null)
    {
        // validation for constraint: string
        if (!is_null($cardNumberMask) && !is_string($cardNumberMask)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($cardNumberMask, true), gettype($cardNumberMask)), __LINE__);
        }
        if (is_null($cardNumberMask) || (is_array($cardNumberMask) && empty($cardNumberMask))) {
            unset($this->CardNumberMask);
        } else {
            $this->CardNumberMask = $cardNumberMask;
        }
        return $this;
    }
    /**
     * Get CreditCompanyName 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 getCreditCompanyName()
    {
        return isset($this->CreditCompanyName) ? $this->CreditCompanyName : null;
    }
    /**
     * Set CreditCompanyName 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 $creditCompanyName
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setCreditCompanyName($creditCompanyName = null)
    {
        // validation for constraint: string
        if (!is_null($creditCompanyName) && !is_string($creditCompanyName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($creditCompanyName, true), gettype($creditCompanyName)), __LINE__);
        }
        if (is_null($creditCompanyName) || (is_array($creditCompanyName) && empty($creditCompanyName))) {
            unset($this->CreditCompanyName);
        } else {
            $this->CreditCompanyName = $creditCompanyName;
        }
        return $this;
    }
    /**
     * Get Installments 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 getInstallments()
    {
        return isset($this->Installments) ? $this->Installments : null;
    }
    /**
     * Set Installments 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 $installments
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setInstallments($installments = null)
    {
        // validation for constraint: int
        if (!is_null($installments) && !(is_int($installments) || ctype_digit($installments))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($installments, true), gettype($installments)), __LINE__);
        }
        if (is_null($installments) || (is_array($installments) && empty($installments))) {
            unset($this->Installments);
        } else {
            $this->Installments = $installments;
        }
        return $this;
    }
    /**
     * Get InternalReferenceNumber 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 getInternalReferenceNumber()
    {
        return isset($this->InternalReferenceNumber) ? $this->InternalReferenceNumber : null;
    }
    /**
     * Set InternalReferenceNumber 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 $internalReferenceNumber
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setInternalReferenceNumber($internalReferenceNumber = null)
    {
        // validation for constraint: string
        if (!is_null($internalReferenceNumber) && !is_string($internalReferenceNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($internalReferenceNumber, true), gettype($internalReferenceNumber)), __LINE__);
        }
        if (is_null($internalReferenceNumber) || (is_array($internalReferenceNumber) && empty($internalReferenceNumber))) {
            unset($this->InternalReferenceNumber);
        } else {
            $this->InternalReferenceNumber = $internalReferenceNumber;
        }
        return $this;
    }
    /**
     * Get Prefix 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 getPrefix()
    {
        return isset($this->Prefix) ? $this->Prefix : null;
    }
    /**
     * Set Prefix 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 $prefix
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setPrefix($prefix = null)
    {
        // validation for constraint: string
        if (!is_null($prefix) && !is_string($prefix)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($prefix, true), gettype($prefix)), __LINE__);
        }
        if (is_null($prefix) || (is_array($prefix) && empty($prefix))) {
            unset($this->Prefix);
        } else {
            $this->Prefix = $prefix;
        }
        return $this;
    }
    /**
     * Get ReferenceNumber 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 getReferenceNumber()
    {
        return isset($this->ReferenceNumber) ? $this->ReferenceNumber : null;
    }
    /**
     * Set ReferenceNumber 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 $referenceNumber
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setReferenceNumber($referenceNumber = null)
    {
        // validation for constraint: string
        if (!is_null($referenceNumber) && !is_string($referenceNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($referenceNumber, true), gettype($referenceNumber)), __LINE__);
        }
        if (is_null($referenceNumber) || (is_array($referenceNumber) && empty($referenceNumber))) {
            unset($this->ReferenceNumber);
        } else {
            $this->ReferenceNumber = $referenceNumber;
        }
        return $this;
    }
    /**
     * Get Suffix 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 getSuffix()
    {
        return isset($this->Suffix) ? $this->Suffix : null;
    }
    /**
     * Set Suffix 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 $suffix
     * @return \patest\StructType\Printing_PrintableItem_OnlinePaymentItemForInvoice
     */
    public function setSuffix($suffix = null)
    {
        // validation for constraint: string
        if (!is_null($suffix) && !is_string($suffix)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($suffix, true), gettype($suffix)), __LINE__);
        }
        if (is_null($suffix) || (is_array($suffix) && empty($suffix))) {
            unset($this->Suffix);
        } else {
            $this->Suffix = $suffix;
        }
        return $this;
    }
}
