<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Security.SalePointParameters StructType
 * @subpackage Structs
 */
class Security_SalePointParameters extends Security_SalePointParametersBase
{
    /**
     * The DeviceHint_BarcodeReader
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeviceHint_BarcodeReader;
    /**
     * The DeviceHint_CardReader
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeviceHint_CardReader;
    /**
     * The DeviceHint_CashDrawer
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeviceHint_CashDrawer;
    /**
     * The DeviceHint_CustomerPole
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeviceHint_CustomerPole;
    /**
     * The DeviceHint_PaymentTerminal
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DeviceHint_PaymentTerminal;
    /**
     * The Device_BarcodeReader
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Device_BarcodeReader;
    /**
     * The Device_CardReader
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Device_CardReader;
    /**
     * The Device_CashDrawer
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Device_CashDrawer;
    /**
     * The Device_CustomerPole
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Device_CustomerPole;
    /**
     * The Device_PaymentTerminal
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Device_PaymentTerminal;
    /**
     * The HasPhysicalKeyboard
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $HasPhysicalKeyboard;
    /**
     * Constructor method for Security.SalePointParameters
     * @uses Security_SalePointParameters::setDeviceHint_BarcodeReader()
     * @uses Security_SalePointParameters::setDeviceHint_CardReader()
     * @uses Security_SalePointParameters::setDeviceHint_CashDrawer()
     * @uses Security_SalePointParameters::setDeviceHint_CustomerPole()
     * @uses Security_SalePointParameters::setDeviceHint_PaymentTerminal()
     * @uses Security_SalePointParameters::setDevice_BarcodeReader()
     * @uses Security_SalePointParameters::setDevice_CardReader()
     * @uses Security_SalePointParameters::setDevice_CashDrawer()
     * @uses Security_SalePointParameters::setDevice_CustomerPole()
     * @uses Security_SalePointParameters::setDevice_PaymentTerminal()
     * @uses Security_SalePointParameters::setHasPhysicalKeyboard()
     * @param string $deviceHint_BarcodeReader
     * @param string $deviceHint_CardReader
     * @param string $deviceHint_CashDrawer
     * @param string $deviceHint_CustomerPole
     * @param string $deviceHint_PaymentTerminal
     * @param string $device_BarcodeReader
     * @param string $device_CardReader
     * @param string $device_CashDrawer
     * @param string $device_CustomerPole
     * @param string $device_PaymentTerminal
     * @param bool $hasPhysicalKeyboard
     */
    public function __construct($deviceHint_BarcodeReader = null, $deviceHint_CardReader = null, $deviceHint_CashDrawer = null, $deviceHint_CustomerPole = null, $deviceHint_PaymentTerminal = null, $device_BarcodeReader = null, $device_CardReader = null, $device_CashDrawer = null, $device_CustomerPole = null, $device_PaymentTerminal = null, $hasPhysicalKeyboard = null)
    {
        $this
            ->setDeviceHint_BarcodeReader($deviceHint_BarcodeReader)
            ->setDeviceHint_CardReader($deviceHint_CardReader)
            ->setDeviceHint_CashDrawer($deviceHint_CashDrawer)
            ->setDeviceHint_CustomerPole($deviceHint_CustomerPole)
            ->setDeviceHint_PaymentTerminal($deviceHint_PaymentTerminal)
            ->setDevice_BarcodeReader($device_BarcodeReader)
            ->setDevice_CardReader($device_CardReader)
            ->setDevice_CashDrawer($device_CashDrawer)
            ->setDevice_CustomerPole($device_CustomerPole)
            ->setDevice_PaymentTerminal($device_PaymentTerminal)
            ->setHasPhysicalKeyboard($hasPhysicalKeyboard);
    }
    /**
     * Get DeviceHint_BarcodeReader 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 getDeviceHint_BarcodeReader()
    {
        return isset($this->DeviceHint_BarcodeReader) ? $this->DeviceHint_BarcodeReader : null;
    }
    /**
     * Set DeviceHint_BarcodeReader 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 $deviceHint_BarcodeReader
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDeviceHint_BarcodeReader($deviceHint_BarcodeReader = null)
    {
        // validation for constraint: string
        if (!is_null($deviceHint_BarcodeReader) && !is_string($deviceHint_BarcodeReader)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deviceHint_BarcodeReader, true), gettype($deviceHint_BarcodeReader)), __LINE__);
        }
        if (is_null($deviceHint_BarcodeReader) || (is_array($deviceHint_BarcodeReader) && empty($deviceHint_BarcodeReader))) {
            unset($this->DeviceHint_BarcodeReader);
        } else {
            $this->DeviceHint_BarcodeReader = $deviceHint_BarcodeReader;
        }
        return $this;
    }
    /**
     * Get DeviceHint_CardReader 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 getDeviceHint_CardReader()
    {
        return isset($this->DeviceHint_CardReader) ? $this->DeviceHint_CardReader : null;
    }
    /**
     * Set DeviceHint_CardReader 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 $deviceHint_CardReader
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDeviceHint_CardReader($deviceHint_CardReader = null)
    {
        // validation for constraint: string
        if (!is_null($deviceHint_CardReader) && !is_string($deviceHint_CardReader)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deviceHint_CardReader, true), gettype($deviceHint_CardReader)), __LINE__);
        }
        if (is_null($deviceHint_CardReader) || (is_array($deviceHint_CardReader) && empty($deviceHint_CardReader))) {
            unset($this->DeviceHint_CardReader);
        } else {
            $this->DeviceHint_CardReader = $deviceHint_CardReader;
        }
        return $this;
    }
    /**
     * Get DeviceHint_CashDrawer 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 getDeviceHint_CashDrawer()
    {
        return isset($this->DeviceHint_CashDrawer) ? $this->DeviceHint_CashDrawer : null;
    }
    /**
     * Set DeviceHint_CashDrawer 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 $deviceHint_CashDrawer
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDeviceHint_CashDrawer($deviceHint_CashDrawer = null)
    {
        // validation for constraint: string
        if (!is_null($deviceHint_CashDrawer) && !is_string($deviceHint_CashDrawer)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deviceHint_CashDrawer, true), gettype($deviceHint_CashDrawer)), __LINE__);
        }
        if (is_null($deviceHint_CashDrawer) || (is_array($deviceHint_CashDrawer) && empty($deviceHint_CashDrawer))) {
            unset($this->DeviceHint_CashDrawer);
        } else {
            $this->DeviceHint_CashDrawer = $deviceHint_CashDrawer;
        }
        return $this;
    }
    /**
     * Get DeviceHint_CustomerPole 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 getDeviceHint_CustomerPole()
    {
        return isset($this->DeviceHint_CustomerPole) ? $this->DeviceHint_CustomerPole : null;
    }
    /**
     * Set DeviceHint_CustomerPole 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 $deviceHint_CustomerPole
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDeviceHint_CustomerPole($deviceHint_CustomerPole = null)
    {
        // validation for constraint: string
        if (!is_null($deviceHint_CustomerPole) && !is_string($deviceHint_CustomerPole)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deviceHint_CustomerPole, true), gettype($deviceHint_CustomerPole)), __LINE__);
        }
        if (is_null($deviceHint_CustomerPole) || (is_array($deviceHint_CustomerPole) && empty($deviceHint_CustomerPole))) {
            unset($this->DeviceHint_CustomerPole);
        } else {
            $this->DeviceHint_CustomerPole = $deviceHint_CustomerPole;
        }
        return $this;
    }
    /**
     * Get DeviceHint_PaymentTerminal 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 getDeviceHint_PaymentTerminal()
    {
        return isset($this->DeviceHint_PaymentTerminal) ? $this->DeviceHint_PaymentTerminal : null;
    }
    /**
     * Set DeviceHint_PaymentTerminal 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 $deviceHint_PaymentTerminal
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDeviceHint_PaymentTerminal($deviceHint_PaymentTerminal = null)
    {
        // validation for constraint: string
        if (!is_null($deviceHint_PaymentTerminal) && !is_string($deviceHint_PaymentTerminal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($deviceHint_PaymentTerminal, true), gettype($deviceHint_PaymentTerminal)), __LINE__);
        }
        if (is_null($deviceHint_PaymentTerminal) || (is_array($deviceHint_PaymentTerminal) && empty($deviceHint_PaymentTerminal))) {
            unset($this->DeviceHint_PaymentTerminal);
        } else {
            $this->DeviceHint_PaymentTerminal = $deviceHint_PaymentTerminal;
        }
        return $this;
    }
    /**
     * Get Device_BarcodeReader 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 getDevice_BarcodeReader()
    {
        return isset($this->Device_BarcodeReader) ? $this->Device_BarcodeReader : null;
    }
    /**
     * Set Device_BarcodeReader 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 $device_BarcodeReader
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDevice_BarcodeReader($device_BarcodeReader = null)
    {
        // validation for constraint: string
        if (!is_null($device_BarcodeReader) && !is_string($device_BarcodeReader)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($device_BarcodeReader, true), gettype($device_BarcodeReader)), __LINE__);
        }
        if (is_null($device_BarcodeReader) || (is_array($device_BarcodeReader) && empty($device_BarcodeReader))) {
            unset($this->Device_BarcodeReader);
        } else {
            $this->Device_BarcodeReader = $device_BarcodeReader;
        }
        return $this;
    }
    /**
     * Get Device_CardReader 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 getDevice_CardReader()
    {
        return isset($this->Device_CardReader) ? $this->Device_CardReader : null;
    }
    /**
     * Set Device_CardReader 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 $device_CardReader
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDevice_CardReader($device_CardReader = null)
    {
        // validation for constraint: string
        if (!is_null($device_CardReader) && !is_string($device_CardReader)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($device_CardReader, true), gettype($device_CardReader)), __LINE__);
        }
        if (is_null($device_CardReader) || (is_array($device_CardReader) && empty($device_CardReader))) {
            unset($this->Device_CardReader);
        } else {
            $this->Device_CardReader = $device_CardReader;
        }
        return $this;
    }
    /**
     * Get Device_CashDrawer 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 getDevice_CashDrawer()
    {
        return isset($this->Device_CashDrawer) ? $this->Device_CashDrawer : null;
    }
    /**
     * Set Device_CashDrawer 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 $device_CashDrawer
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDevice_CashDrawer($device_CashDrawer = null)
    {
        // validation for constraint: string
        if (!is_null($device_CashDrawer) && !is_string($device_CashDrawer)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($device_CashDrawer, true), gettype($device_CashDrawer)), __LINE__);
        }
        if (is_null($device_CashDrawer) || (is_array($device_CashDrawer) && empty($device_CashDrawer))) {
            unset($this->Device_CashDrawer);
        } else {
            $this->Device_CashDrawer = $device_CashDrawer;
        }
        return $this;
    }
    /**
     * Get Device_CustomerPole 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 getDevice_CustomerPole()
    {
        return isset($this->Device_CustomerPole) ? $this->Device_CustomerPole : null;
    }
    /**
     * Set Device_CustomerPole 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 $device_CustomerPole
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDevice_CustomerPole($device_CustomerPole = null)
    {
        // validation for constraint: string
        if (!is_null($device_CustomerPole) && !is_string($device_CustomerPole)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($device_CustomerPole, true), gettype($device_CustomerPole)), __LINE__);
        }
        if (is_null($device_CustomerPole) || (is_array($device_CustomerPole) && empty($device_CustomerPole))) {
            unset($this->Device_CustomerPole);
        } else {
            $this->Device_CustomerPole = $device_CustomerPole;
        }
        return $this;
    }
    /**
     * Get Device_PaymentTerminal 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 getDevice_PaymentTerminal()
    {
        return isset($this->Device_PaymentTerminal) ? $this->Device_PaymentTerminal : null;
    }
    /**
     * Set Device_PaymentTerminal 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 $device_PaymentTerminal
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setDevice_PaymentTerminal($device_PaymentTerminal = null)
    {
        // validation for constraint: string
        if (!is_null($device_PaymentTerminal) && !is_string($device_PaymentTerminal)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($device_PaymentTerminal, true), gettype($device_PaymentTerminal)), __LINE__);
        }
        if (is_null($device_PaymentTerminal) || (is_array($device_PaymentTerminal) && empty($device_PaymentTerminal))) {
            unset($this->Device_PaymentTerminal);
        } else {
            $this->Device_PaymentTerminal = $device_PaymentTerminal;
        }
        return $this;
    }
    /**
     * Get HasPhysicalKeyboard 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 bool|null
     */
    public function getHasPhysicalKeyboard()
    {
        return isset($this->HasPhysicalKeyboard) ? $this->HasPhysicalKeyboard : null;
    }
    /**
     * Set HasPhysicalKeyboard 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 bool $hasPhysicalKeyboard
     * @return \patest\StructType\Security_SalePointParameters
     */
    public function setHasPhysicalKeyboard($hasPhysicalKeyboard = null)
    {
        // validation for constraint: boolean
        if (!is_null($hasPhysicalKeyboard) && !is_bool($hasPhysicalKeyboard)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($hasPhysicalKeyboard, true), gettype($hasPhysicalKeyboard)), __LINE__);
        }
        if (is_null($hasPhysicalKeyboard) || (is_array($hasPhysicalKeyboard) && empty($hasPhysicalKeyboard))) {
            unset($this->HasPhysicalKeyboard);
        } else {
            $this->HasPhysicalKeyboard = $hasPhysicalKeyboard;
        }
        return $this;
    }
}
