<?php

namespace Easy\EasyStruct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GetVoucherPDFA4 EasyStruct
 * @package Easy
 * @subpackage Structs
 */
class EasyGetVoucherPDFA4 extends AbstractStructBase
{
    /**
     * The ByValdNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $ByValdNumber;
    /**
     * The ClsCredential
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \Easy\EasyStruct\EasyClsCredential
     */
    public $ClsCredential;
    /**
     * The iΠεριθώρια_Left
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $iΠεριθώρια_Left;
    /**
     * The iΠεριθώρια_Top
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $iΠεριθώρια_Top;
    /**
     * Constructor method for GetVoucherPDFA4
     * @uses EasyGetVoucherPDFA4::setByValdNumber()
     * @uses EasyGetVoucherPDFA4::setClsCredential()
     * @uses EasyGetVoucherPDFA4::setIΠεριθώρια_Left()
     * @uses EasyGetVoucherPDFA4::setIΠεριθώρια_Top()
     * @param float $byValdNumber
     * @param \Easy\EasyStruct\EasyClsCredential $clsCredential
     * @param int $iΠεριθώρια_Left
     * @param int $iΠεριθώρια_Top
     */
    public function __construct($byValdNumber = null, \Easy\EasyStruct\EasyClsCredential $clsCredential = null, $iΠεριθώρια_Left = null, $iΠεριθώρια_Top = null)
    {
        $this
            ->setByValdNumber($byValdNumber)
            ->setClsCredential($clsCredential)
            ->setIΠεριθώρια_Left($iΠεριθώρια_Left)
            ->setIΠεριθώρια_Top($iΠεριθώρια_Top);
    }
    /**
     * Get ByValdNumber value
     * @return float|null
     */
    public function getByValdNumber()
    {
        return $this->ByValdNumber;
    }
    /**
     * Set ByValdNumber value
     * @param float $byValdNumber
     * @return \Easy\EasyStruct\EasyGetVoucherPDFA4
     */
    public function setByValdNumber($byValdNumber = null)
    {
        // validation for constraint: float
        if (!is_null($byValdNumber) && !(is_float($byValdNumber) || is_numeric($byValdNumber))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($byValdNumber, true), gettype($byValdNumber)), __LINE__);
        }
        $this->ByValdNumber = $byValdNumber;
        return $this;
    }
    /**
     * Get ClsCredential 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 \Easy\EasyStruct\EasyClsCredential|null
     */
    public function getClsCredential()
    {
        return isset($this->ClsCredential) ? $this->ClsCredential : null;
    }
    /**
     * Set ClsCredential 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 \Easy\EasyStruct\EasyClsCredential $clsCredential
     * @return \Easy\EasyStruct\EasyGetVoucherPDFA4
     */
    public function setClsCredential(\Easy\EasyStruct\EasyClsCredential $clsCredential = null)
    {
        if (is_null($clsCredential) || (is_array($clsCredential) && empty($clsCredential))) {
            unset($this->ClsCredential);
        } else {
            $this->ClsCredential = $clsCredential;
        }
        return $this;
    }
    /**
     * Get iΠεριθώρια_Left value
     * @return int|null
     */
    public function getIΠεριθώρια_Left()
    {
        return $this->iΠεριθώρια_Left;
    }
    /**
     * Set iΠεριθώρια_Left value
     * @param int $iΠεριθώρια_Left
     * @return \Easy\EasyStruct\EasyGetVoucherPDFA4
     */
    public function setIΠεριθώρια_Left($iΠεριθώρια_Left = null)
    {
        // validation for constraint: int
        if (!is_null($iΠεριθώρια_Left) && !(is_int($iΠεριθώρια_Left) || ctype_digit($iΠεριθώρια_Left))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iΠεριθώρια_Left, true), gettype($iΠεριθώρια_Left)), __LINE__);
        }
        $this->iΠεριθώρια_Left = $iΠεριθώρια_Left;
        return $this;
    }
    /**
     * Get iΠεριθώρια_Top value
     * @return int|null
     */
    public function getIΠεριθώρια_Top()
    {
        return $this->iΠεριθώρια_Top;
    }
    /**
     * Set iΠεριθώρια_Top value
     * @param int $iΠεριθώρια_Top
     * @return \Easy\EasyStruct\EasyGetVoucherPDFA4
     */
    public function setIΠεριθώρια_Top($iΠεριθώρια_Top = null)
    {
        // validation for constraint: int
        if (!is_null($iΠεριθώρια_Top) && !(is_int($iΠεριθώρια_Top) || ctype_digit($iΠεριθώρια_Top))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iΠεριθώρια_Top, true), gettype($iΠεριθώρια_Top)), __LINE__);
        }
        $this->iΠεριθώρια_Top = $iΠεριθώρια_Top;
        return $this;
    }
}
