<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Sales.ItemTotals StructType
 * @subpackage Structs
 */
class Sales_ItemTotals extends Sales_TransactionTotals
{
    /**
     * The FacePrice
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $FacePrice;
    /**
     * The PriceToPay
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Money
     */
    public $PriceToPay;
    /**
     * Constructor method for Sales.ItemTotals
     * @uses Sales_ItemTotals::setFacePrice()
     * @uses Sales_ItemTotals::setPriceToPay()
     * @param \patest\StructType\Money $facePrice
     * @param \patest\StructType\Money $priceToPay
     */
    public function __construct(\patest\StructType\Money $facePrice = null, \patest\StructType\Money $priceToPay = null)
    {
        $this
            ->setFacePrice($facePrice)
            ->setPriceToPay($priceToPay);
    }
    /**
     * Get FacePrice 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 getFacePrice()
    {
        return isset($this->FacePrice) ? $this->FacePrice : null;
    }
    /**
     * Set FacePrice 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 $facePrice
     * @return \patest\StructType\Sales_ItemTotals
     */
    public function setFacePrice(\patest\StructType\Money $facePrice = null)
    {
        if (is_null($facePrice) || (is_array($facePrice) && empty($facePrice))) {
            unset($this->FacePrice);
        } else {
            $this->FacePrice = $facePrice;
        }
        return $this;
    }
    /**
     * Get PriceToPay 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 getPriceToPay()
    {
        return isset($this->PriceToPay) ? $this->PriceToPay : null;
    }
    /**
     * Set PriceToPay 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 $priceToPay
     * @return \patest\StructType\Sales_ItemTotals
     */
    public function setPriceToPay(\patest\StructType\Money $priceToPay = null)
    {
        if (is_null($priceToPay) || (is_array($priceToPay) && empty($priceToPay))) {
            unset($this->PriceToPay);
        } else {
            $this->PriceToPay = $priceToPay;
        }
        return $this;
    }
}
