<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Printing.AuxiliaryDataItem.ItemInsurance StructType
 * @subpackage Structs
 */
class Printing_AuxiliaryDataItem_ItemInsurance extends Printing_Item_ComplexProperty_Base
{
    /**
     * The PolicyBriefOverview
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $PolicyBriefOverview;
    /**
     * The PolicyDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $PolicyDescription;
    /**
     * The PolicyName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $PolicyName;
    /**
     * The Price
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $Price;
    /**
     * The VAT
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $VAT;
    /**
     * Constructor method for Printing.AuxiliaryDataItem.ItemInsurance
     * @uses Printing_AuxiliaryDataItem_ItemInsurance::setPolicyBriefOverview()
     * @uses Printing_AuxiliaryDataItem_ItemInsurance::setPolicyDescription()
     * @uses Printing_AuxiliaryDataItem_ItemInsurance::setPolicyName()
     * @uses Printing_AuxiliaryDataItem_ItemInsurance::setPrice()
     * @uses Printing_AuxiliaryDataItem_ItemInsurance::setVAT()
     * @param \patest\StructType\GlobalString $policyBriefOverview
     * @param \patest\StructType\GlobalString $policyDescription
     * @param \patest\StructType\GlobalString $policyName
     * @param \patest\StructType\Money $price
     * @param \patest\StructType\Money $vAT
     */
    public function __construct(\patest\StructType\GlobalString $policyBriefOverview = null, \patest\StructType\GlobalString $policyDescription = null, \patest\StructType\GlobalString $policyName = null, \patest\StructType\Money $price = null, \patest\StructType\Money $vAT = null)
    {
        $this
            ->setPolicyBriefOverview($policyBriefOverview)
            ->setPolicyDescription($policyDescription)
            ->setPolicyName($policyName)
            ->setPrice($price)
            ->setVAT($vAT);
    }
    /**
     * Get PolicyBriefOverview 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 \patest\StructType\GlobalString|null
     */
    public function getPolicyBriefOverview()
    {
        return isset($this->PolicyBriefOverview) ? $this->PolicyBriefOverview : null;
    }
    /**
     * Set PolicyBriefOverview 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 \patest\StructType\GlobalString $policyBriefOverview
     * @return \patest\StructType\Printing_AuxiliaryDataItem_ItemInsurance
     */
    public function setPolicyBriefOverview(\patest\StructType\GlobalString $policyBriefOverview = null)
    {
        if (is_null($policyBriefOverview) || (is_array($policyBriefOverview) && empty($policyBriefOverview))) {
            unset($this->PolicyBriefOverview);
        } else {
            $this->PolicyBriefOverview = $policyBriefOverview;
        }
        return $this;
    }
    /**
     * Get PolicyDescription 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 \patest\StructType\GlobalString|null
     */
    public function getPolicyDescription()
    {
        return isset($this->PolicyDescription) ? $this->PolicyDescription : null;
    }
    /**
     * Set PolicyDescription 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 \patest\StructType\GlobalString $policyDescription
     * @return \patest\StructType\Printing_AuxiliaryDataItem_ItemInsurance
     */
    public function setPolicyDescription(\patest\StructType\GlobalString $policyDescription = null)
    {
        if (is_null($policyDescription) || (is_array($policyDescription) && empty($policyDescription))) {
            unset($this->PolicyDescription);
        } else {
            $this->PolicyDescription = $policyDescription;
        }
        return $this;
    }
    /**
     * Get PolicyName 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 \patest\StructType\GlobalString|null
     */
    public function getPolicyName()
    {
        return isset($this->PolicyName) ? $this->PolicyName : null;
    }
    /**
     * Set PolicyName 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 \patest\StructType\GlobalString $policyName
     * @return \patest\StructType\Printing_AuxiliaryDataItem_ItemInsurance
     */
    public function setPolicyName(\patest\StructType\GlobalString $policyName = null)
    {
        if (is_null($policyName) || (is_array($policyName) && empty($policyName))) {
            unset($this->PolicyName);
        } else {
            $this->PolicyName = $policyName;
        }
        return $this;
    }
    /**
     * Get Price 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 \patest\StructType\Money|null
     */
    public function getPrice()
    {
        return isset($this->Price) ? $this->Price : null;
    }
    /**
     * Set Price 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 \patest\StructType\Money $price
     * @return \patest\StructType\Printing_AuxiliaryDataItem_ItemInsurance
     */
    public function setPrice(\patest\StructType\Money $price = null)
    {
        if (is_null($price) || (is_array($price) && empty($price))) {
            unset($this->Price);
        } else {
            $this->Price = $price;
        }
        return $this;
    }
    /**
     * Get VAT 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 \patest\StructType\Money|null
     */
    public function getVAT()
    {
        return isset($this->VAT) ? $this->VAT : null;
    }
    /**
     * Set VAT 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 \patest\StructType\Money $vAT
     * @return \patest\StructType\Printing_AuxiliaryDataItem_ItemInsurance
     */
    public function setVAT(\patest\StructType\Money $vAT = null)
    {
        if (is_null($vAT) || (is_array($vAT) && empty($vAT))) {
            unset($this->VAT);
        } else {
            $this->VAT = $vAT;
        }
        return $this;
    }
}
