<?php

namespace Geniki\GenikiStruct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CreateClientVoucherJob GenikiStruct
 * @package Geniki
 * @subpackage Structs
 */
class GenikiCreateClientVoucherJob extends AbstractStructBase
{
    /**
     * The sAuthKey
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $sAuthKey;
    /**
     * The clientCode
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $clientCode;
    /**
     * The oVoucher
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \Geniki\GenikiStruct\GenikiRecord
     */
    public $oVoucher;
    /**
     * Constructor method for CreateClientVoucherJob
     * @uses GenikiCreateClientVoucherJob::setSAuthKey()
     * @uses GenikiCreateClientVoucherJob::setClientCode()
     * @uses GenikiCreateClientVoucherJob::setOVoucher()
     * @param string $sAuthKey
     * @param string $clientCode
     * @param \Geniki\GenikiStruct\GenikiRecord $oVoucher
     */
    public function __construct($sAuthKey = null, $clientCode = null, \Geniki\GenikiStruct\GenikiRecord $oVoucher = null)
    {
        $this
            ->setSAuthKey($sAuthKey)
            ->setClientCode($clientCode)
            ->setOVoucher($oVoucher);
    }
    /**
     * Get sAuthKey value
     * @return string|null
     */
    public function getSAuthKey()
    {
        return $this->sAuthKey;
    }
    /**
     * Set sAuthKey value
     * @param string $sAuthKey
     * @return \Geniki\GenikiStruct\GenikiCreateClientVoucherJob
     */
    public function setSAuthKey($sAuthKey = null)
    {
        // validation for constraint: string
        if (!is_null($sAuthKey) && !is_string($sAuthKey)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sAuthKey, true), gettype($sAuthKey)), __LINE__);
        }
        $this->sAuthKey = $sAuthKey;
        return $this;
    }
    /**
     * Get clientCode value
     * @return string|null
     */
    public function getClientCode()
    {
        return $this->clientCode;
    }
    /**
     * Set clientCode value
     * @param string $clientCode
     * @return \Geniki\GenikiStruct\GenikiCreateClientVoucherJob
     */
    public function setClientCode($clientCode = null)
    {
        // validation for constraint: string
        if (!is_null($clientCode) && !is_string($clientCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($clientCode, true), gettype($clientCode)), __LINE__);
        }
        $this->clientCode = $clientCode;
        return $this;
    }
    /**
     * Get oVoucher value
     * @return \Geniki\GenikiStruct\GenikiRecord|null
     */
    public function getOVoucher()
    {
        return $this->oVoucher;
    }
    /**
     * Set oVoucher value
     * @param \Geniki\GenikiStruct\GenikiRecord $oVoucher
     * @return \Geniki\GenikiStruct\GenikiCreateClientVoucherJob
     */
    public function setOVoucher(\Geniki\GenikiStruct\GenikiRecord $oVoucher = null)
    {
        $this->oVoucher = $oVoucher;
        return $this;
    }
}
