<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for TransformaDocumentoCompra StructType
 * @subpackage Structs
 */
class TransformaDocumentoCompra extends AbstractStructBase
{
    /**
     * The tipoDocumentoCriar
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \StructType\DocumentosCompraERP
     */
    public $tipoDocumentoCriar;
    /**
     * The forcarSerieDocumentoCriar
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $forcarSerieDocumentoCriar;
    /**
     * The serieDocumentoACriar
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \StructType\SeriesComprasERP
     */
    public $serieDocumentoACriar;
    /**
     * The forcarModoPagamento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $forcarModoPagamento;
    /**
     * The modoPagamentoCriar
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \StructType\ModoPagamentoERP
     */
    public $modoPagamentoCriar;
    /**
     * The forcarCondicaoPagamento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $forcarCondicaoPagamento;
    /**
     * The condicaoPagamentoCriar
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \StructType\CondicaoPagamentoERP
     */
    public $condicaoPagamentoCriar;
    /**
     * The documentoCompraOrigem
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \StructType\CabecComprasERP
     */
    public $documentoCompraOrigem;
    /**
     * The forcarDataProcessamento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $forcarDataProcessamento;
    /**
     * The dataProcessamento
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $dataProcessamento;
    /**
     * Constructor method for TransformaDocumentoCompra
     * @uses TransformaDocumentoCompra::setTipoDocumentoCriar()
     * @uses TransformaDocumentoCompra::setForcarSerieDocumentoCriar()
     * @uses TransformaDocumentoCompra::setSerieDocumentoACriar()
     * @uses TransformaDocumentoCompra::setForcarModoPagamento()
     * @uses TransformaDocumentoCompra::setModoPagamentoCriar()
     * @uses TransformaDocumentoCompra::setForcarCondicaoPagamento()
     * @uses TransformaDocumentoCompra::setCondicaoPagamentoCriar()
     * @uses TransformaDocumentoCompra::setDocumentoCompraOrigem()
     * @uses TransformaDocumentoCompra::setForcarDataProcessamento()
     * @uses TransformaDocumentoCompra::setDataProcessamento()
     * @param \StructType\DocumentosCompraERP $tipoDocumentoCriar
     * @param bool $forcarSerieDocumentoCriar
     * @param \StructType\SeriesComprasERP $serieDocumentoACriar
     * @param bool $forcarModoPagamento
     * @param \StructType\ModoPagamentoERP $modoPagamentoCriar
     * @param bool $forcarCondicaoPagamento
     * @param \StructType\CondicaoPagamentoERP $condicaoPagamentoCriar
     * @param \StructType\CabecComprasERP $documentoCompraOrigem
     * @param bool $forcarDataProcessamento
     * @param string $dataProcessamento
     */
    public function __construct(\StructType\DocumentosCompraERP $tipoDocumentoCriar = null, $forcarSerieDocumentoCriar = null, \StructType\SeriesComprasERP $serieDocumentoACriar = null, $forcarModoPagamento = null, \StructType\ModoPagamentoERP $modoPagamentoCriar = null, $forcarCondicaoPagamento = null, \StructType\CondicaoPagamentoERP $condicaoPagamentoCriar = null, \StructType\CabecComprasERP $documentoCompraOrigem = null, $forcarDataProcessamento = null, $dataProcessamento = null)
    {
        $this
            ->setTipoDocumentoCriar($tipoDocumentoCriar)
            ->setForcarSerieDocumentoCriar($forcarSerieDocumentoCriar)
            ->setSerieDocumentoACriar($serieDocumentoACriar)
            ->setForcarModoPagamento($forcarModoPagamento)
            ->setModoPagamentoCriar($modoPagamentoCriar)
            ->setForcarCondicaoPagamento($forcarCondicaoPagamento)
            ->setCondicaoPagamentoCriar($condicaoPagamentoCriar)
            ->setDocumentoCompraOrigem($documentoCompraOrigem)
            ->setForcarDataProcessamento($forcarDataProcessamento)
            ->setDataProcessamento($dataProcessamento);
    }
    /**
     * Get tipoDocumentoCriar 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 \StructType\DocumentosCompraERP|null
     */
    public function getTipoDocumentoCriar()
    {
        return isset($this->tipoDocumentoCriar) ? $this->tipoDocumentoCriar : null;
    }
    /**
     * Set tipoDocumentoCriar 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 \StructType\DocumentosCompraERP $tipoDocumentoCriar
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setTipoDocumentoCriar(\StructType\DocumentosCompraERP $tipoDocumentoCriar = null)
    {
        if (is_null($tipoDocumentoCriar) || (is_array($tipoDocumentoCriar) && empty($tipoDocumentoCriar))) {
            unset($this->tipoDocumentoCriar);
        } else {
            $this->tipoDocumentoCriar = $tipoDocumentoCriar;
        }
        return $this;
    }
    /**
     * Get forcarSerieDocumentoCriar value
     * @return bool|null
     */
    public function getForcarSerieDocumentoCriar()
    {
        return $this->forcarSerieDocumentoCriar;
    }
    /**
     * Set forcarSerieDocumentoCriar value
     * @param bool $forcarSerieDocumentoCriar
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setForcarSerieDocumentoCriar($forcarSerieDocumentoCriar = null)
    {
        // validation for constraint: boolean
        if (!is_null($forcarSerieDocumentoCriar) && !is_bool($forcarSerieDocumentoCriar)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($forcarSerieDocumentoCriar)), __LINE__);
        }
        $this->forcarSerieDocumentoCriar = $forcarSerieDocumentoCriar;
        return $this;
    }
    /**
     * Get serieDocumentoACriar 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 \StructType\SeriesComprasERP|null
     */
    public function getSerieDocumentoACriar()
    {
        return isset($this->serieDocumentoACriar) ? $this->serieDocumentoACriar : null;
    }
    /**
     * Set serieDocumentoACriar 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 \StructType\SeriesComprasERP $serieDocumentoACriar
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setSerieDocumentoACriar(\StructType\SeriesComprasERP $serieDocumentoACriar = null)
    {
        if (is_null($serieDocumentoACriar) || (is_array($serieDocumentoACriar) && empty($serieDocumentoACriar))) {
            unset($this->serieDocumentoACriar);
        } else {
            $this->serieDocumentoACriar = $serieDocumentoACriar;
        }
        return $this;
    }
    /**
     * Get forcarModoPagamento value
     * @return bool|null
     */
    public function getForcarModoPagamento()
    {
        return $this->forcarModoPagamento;
    }
    /**
     * Set forcarModoPagamento value
     * @param bool $forcarModoPagamento
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setForcarModoPagamento($forcarModoPagamento = null)
    {
        // validation for constraint: boolean
        if (!is_null($forcarModoPagamento) && !is_bool($forcarModoPagamento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($forcarModoPagamento)), __LINE__);
        }
        $this->forcarModoPagamento = $forcarModoPagamento;
        return $this;
    }
    /**
     * Get modoPagamentoCriar 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 \StructType\ModoPagamentoERP|null
     */
    public function getModoPagamentoCriar()
    {
        return isset($this->modoPagamentoCriar) ? $this->modoPagamentoCriar : null;
    }
    /**
     * Set modoPagamentoCriar 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 \StructType\ModoPagamentoERP $modoPagamentoCriar
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setModoPagamentoCriar(\StructType\ModoPagamentoERP $modoPagamentoCriar = null)
    {
        if (is_null($modoPagamentoCriar) || (is_array($modoPagamentoCriar) && empty($modoPagamentoCriar))) {
            unset($this->modoPagamentoCriar);
        } else {
            $this->modoPagamentoCriar = $modoPagamentoCriar;
        }
        return $this;
    }
    /**
     * Get forcarCondicaoPagamento value
     * @return bool|null
     */
    public function getForcarCondicaoPagamento()
    {
        return $this->forcarCondicaoPagamento;
    }
    /**
     * Set forcarCondicaoPagamento value
     * @param bool $forcarCondicaoPagamento
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setForcarCondicaoPagamento($forcarCondicaoPagamento = null)
    {
        // validation for constraint: boolean
        if (!is_null($forcarCondicaoPagamento) && !is_bool($forcarCondicaoPagamento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($forcarCondicaoPagamento)), __LINE__);
        }
        $this->forcarCondicaoPagamento = $forcarCondicaoPagamento;
        return $this;
    }
    /**
     * Get condicaoPagamentoCriar 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 \StructType\CondicaoPagamentoERP|null
     */
    public function getCondicaoPagamentoCriar()
    {
        return isset($this->condicaoPagamentoCriar) ? $this->condicaoPagamentoCriar : null;
    }
    /**
     * Set condicaoPagamentoCriar 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 \StructType\CondicaoPagamentoERP $condicaoPagamentoCriar
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setCondicaoPagamentoCriar(\StructType\CondicaoPagamentoERP $condicaoPagamentoCriar = null)
    {
        if (is_null($condicaoPagamentoCriar) || (is_array($condicaoPagamentoCriar) && empty($condicaoPagamentoCriar))) {
            unset($this->condicaoPagamentoCriar);
        } else {
            $this->condicaoPagamentoCriar = $condicaoPagamentoCriar;
        }
        return $this;
    }
    /**
     * Get documentoCompraOrigem 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 \StructType\CabecComprasERP|null
     */
    public function getDocumentoCompraOrigem()
    {
        return isset($this->documentoCompraOrigem) ? $this->documentoCompraOrigem : null;
    }
    /**
     * Set documentoCompraOrigem 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 \StructType\CabecComprasERP $documentoCompraOrigem
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setDocumentoCompraOrigem(\StructType\CabecComprasERP $documentoCompraOrigem = null)
    {
        if (is_null($documentoCompraOrigem) || (is_array($documentoCompraOrigem) && empty($documentoCompraOrigem))) {
            unset($this->documentoCompraOrigem);
        } else {
            $this->documentoCompraOrigem = $documentoCompraOrigem;
        }
        return $this;
    }
    /**
     * Get forcarDataProcessamento value
     * @return bool|null
     */
    public function getForcarDataProcessamento()
    {
        return $this->forcarDataProcessamento;
    }
    /**
     * Set forcarDataProcessamento value
     * @param bool $forcarDataProcessamento
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setForcarDataProcessamento($forcarDataProcessamento = null)
    {
        // validation for constraint: boolean
        if (!is_null($forcarDataProcessamento) && !is_bool($forcarDataProcessamento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($forcarDataProcessamento)), __LINE__);
        }
        $this->forcarDataProcessamento = $forcarDataProcessamento;
        return $this;
    }
    /**
     * Get dataProcessamento value
     * @return string|null
     */
    public function getDataProcessamento()
    {
        return $this->dataProcessamento;
    }
    /**
     * Set dataProcessamento value
     * @param string $dataProcessamento
     * @return \StructType\TransformaDocumentoCompra
     */
    public function setDataProcessamento($dataProcessamento = null)
    {
        // validation for constraint: string
        if (!is_null($dataProcessamento) && !is_string($dataProcessamento)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($dataProcessamento)), __LINE__);
        }
        $this->dataProcessamento = $dataProcessamento;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \StructType\TransformaDocumentoCompra
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
