<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Cancel_Receipt_RequestType StructType
 * Meta information extracted from the WSDL
 * - documentation: You cannot cancel a Receipt that will result in the Quantity Returned to be greater than the Approved Receipts Quantity. Please cancel the Return before canceling the Receipt, or change the Quantity Returned to be less than the
 * Approved Receipts Quantity. | Cancel Receipt Request
 * @subpackage Structs
 */
class Cancel_Receipt_RequestType extends AbstractStructBase
{
    /**
     * The Cancel_Receipt_Reference
     * Meta information extracted from the WSDL
     * - documentation: Reference to an existing Receipt
     * @var \StructType\ReceiptObjectType
     */
    public $Cancel_Receipt_Reference;
    /**
     * The version
     * Meta information extracted from the WSDL
     * - ref: wd:version
     * @var string
     */
    public $version;
    /**
     * Constructor method for Cancel_Receipt_RequestType
     * @uses Cancel_Receipt_RequestType::setCancel_Receipt_Reference()
     * @uses Cancel_Receipt_RequestType::setVersion()
     * @param \StructType\ReceiptObjectType $cancel_Receipt_Reference
     * @param string $version
     */
    public function __construct(\StructType\ReceiptObjectType $cancel_Receipt_Reference = null, $version = null)
    {
        $this
            ->setCancel_Receipt_Reference($cancel_Receipt_Reference)
            ->setVersion($version);
    }
    /**
     * Get Cancel_Receipt_Reference value
     * @return \StructType\ReceiptObjectType|null
     */
    public function getCancel_Receipt_Reference()
    {
        return $this->Cancel_Receipt_Reference;
    }
    /**
     * Set Cancel_Receipt_Reference value
     * @param \StructType\ReceiptObjectType $cancel_Receipt_Reference
     * @return \StructType\Cancel_Receipt_RequestType
     */
    public function setCancel_Receipt_Reference(\StructType\ReceiptObjectType $cancel_Receipt_Reference = null)
    {
        $this->Cancel_Receipt_Reference = $cancel_Receipt_Reference;
        return $this;
    }
    /**
     * Get version value
     * @return string|null
     */
    public function getVersion()
    {
        return $this->version;
    }
    /**
     * Set version value
     * @param string $version
     * @return \StructType\Cancel_Receipt_RequestType
     */
    public function setVersion($version = null)
    {
        // validation for constraint: string
        if (!is_null($version) && !is_string($version)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($version, true), gettype($version)), __LINE__);
        }
        $this->version = $version;
        return $this;
    }
}
