<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CustomerDepositApply StructType
 * @subpackage Structs
 */
class CustomerDepositApply extends AbstractStructBase
{
    /**
     * The doc
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $doc;
    /**
     * The line
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $line;
    /**
     * The apply
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $apply;
    /**
     * The applyDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $applyDate;
    /**
     * The type
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $type;
    /**
     * The refNum
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $refNum;
    /**
     * The total
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $total;
    /**
     * The amount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $amount;
    /**
     * The job
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $job;
    /**
     * Constructor method for CustomerDepositApply
     * @uses CustomerDepositApply::setDoc()
     * @uses CustomerDepositApply::setLine()
     * @uses CustomerDepositApply::setApply()
     * @uses CustomerDepositApply::setApplyDate()
     * @uses CustomerDepositApply::setType()
     * @uses CustomerDepositApply::setRefNum()
     * @uses CustomerDepositApply::setTotal()
     * @uses CustomerDepositApply::setAmount()
     * @uses CustomerDepositApply::setJob()
     * @param int $doc
     * @param int $line
     * @param bool $apply
     * @param string $applyDate
     * @param string $type
     * @param string $refNum
     * @param float $total
     * @param float $amount
     * @param string $job
     */
    public function __construct($doc = null, $line = null, $apply = null, $applyDate = null, $type = null, $refNum = null, $total = null, $amount = null, $job = null)
    {
        $this
            ->setDoc($doc)
            ->setLine($line)
            ->setApply($apply)
            ->setApplyDate($applyDate)
            ->setType($type)
            ->setRefNum($refNum)
            ->setTotal($total)
            ->setAmount($amount)
            ->setJob($job);
    }
    /**
     * Get doc value
     * @return int|null
     */
    public function getDoc()
    {
        return $this->doc;
    }
    /**
     * Set doc value
     * @param int $doc
     * @return \StructType\CustomerDepositApply
     */
    public function setDoc($doc = null)
    {
        // validation for constraint: int
        if (!is_null($doc) && !(is_int($doc) || ctype_digit($doc))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($doc, true), gettype($doc)), __LINE__);
        }
        $this->doc = $doc;
        return $this;
    }
    /**
     * Get line value
     * @return int|null
     */
    public function getLine()
    {
        return $this->line;
    }
    /**
     * Set line value
     * @param int $line
     * @return \StructType\CustomerDepositApply
     */
    public function setLine($line = null)
    {
        // validation for constraint: int
        if (!is_null($line) && !(is_int($line) || ctype_digit($line))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($line, true), gettype($line)), __LINE__);
        }
        $this->line = $line;
        return $this;
    }
    /**
     * Get apply value
     * @return bool|null
     */
    public function getApply()
    {
        return $this->apply;
    }
    /**
     * Set apply value
     * @param bool $apply
     * @return \StructType\CustomerDepositApply
     */
    public function setApply($apply = null)
    {
        // validation for constraint: boolean
        if (!is_null($apply) && !is_bool($apply)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($apply, true), gettype($apply)), __LINE__);
        }
        $this->apply = $apply;
        return $this;
    }
    /**
     * Get applyDate value
     * @return string|null
     */
    public function getApplyDate()
    {
        return $this->applyDate;
    }
    /**
     * Set applyDate value
     * @param string $applyDate
     * @return \StructType\CustomerDepositApply
     */
    public function setApplyDate($applyDate = null)
    {
        // validation for constraint: string
        if (!is_null($applyDate) && !is_string($applyDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($applyDate, true), gettype($applyDate)), __LINE__);
        }
        $this->applyDate = $applyDate;
        return $this;
    }
    /**
     * Get type value
     * @return string|null
     */
    public function getType()
    {
        return $this->type;
    }
    /**
     * Set type value
     * @param string $type
     * @return \StructType\CustomerDepositApply
     */
    public function setType($type = null)
    {
        // validation for constraint: string
        if (!is_null($type) && !is_string($type)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($type, true), gettype($type)), __LINE__);
        }
        $this->type = $type;
        return $this;
    }
    /**
     * Get refNum value
     * @return string|null
     */
    public function getRefNum()
    {
        return $this->refNum;
    }
    /**
     * Set refNum value
     * @param string $refNum
     * @return \StructType\CustomerDepositApply
     */
    public function setRefNum($refNum = null)
    {
        // validation for constraint: string
        if (!is_null($refNum) && !is_string($refNum)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($refNum, true), gettype($refNum)), __LINE__);
        }
        $this->refNum = $refNum;
        return $this;
    }
    /**
     * Get total value
     * @return float|null
     */
    public function getTotal()
    {
        return $this->total;
    }
    /**
     * Set total value
     * @param float $total
     * @return \StructType\CustomerDepositApply
     */
    public function setTotal($total = null)
    {
        // validation for constraint: float
        if (!is_null($total) && !(is_float($total) || is_numeric($total))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($total, true), gettype($total)), __LINE__);
        }
        $this->total = $total;
        return $this;
    }
    /**
     * Get amount value
     * @return float|null
     */
    public function getAmount()
    {
        return $this->amount;
    }
    /**
     * Set amount value
     * @param float $amount
     * @return \StructType\CustomerDepositApply
     */
    public function setAmount($amount = null)
    {
        // validation for constraint: float
        if (!is_null($amount) && !(is_float($amount) || is_numeric($amount))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($amount, true), gettype($amount)), __LINE__);
        }
        $this->amount = $amount;
        return $this;
    }
    /**
     * Get job value
     * @return string|null
     */
    public function getJob()
    {
        return $this->job;
    }
    /**
     * Set job value
     * @param string $job
     * @return \StructType\CustomerDepositApply
     */
    public function setJob($job = null)
    {
        // validation for constraint: string
        if (!is_null($job) && !is_string($job)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($job, true), gettype($job)), __LINE__);
        }
        $this->job = $job;
        return $this;
    }
}
