<?php

namespace Myvetshop\Module\Clinique\Generated\Jane\Insight\Model;

class OrdersGetResponse200Item extends \ArrayObject
{
    /**
     * @var array
     */
    protected $initialized = [];

    public function isInitialized($property): bool
    {
        return array_key_exists($property, $this->initialized);
    }
    /**
     * @var int
     */
    protected $id;
    /**
     * @var string
     */
    protected $reference;
    /**
     * @var \DateTime
     */
    protected $invoiceDate;
    /**
     * @var int
     */
    protected $state;
    /**
     * @var string
     */
    protected $supplier;
    /**
     * @var string
     */
    protected $clinicPrivilegedCode;
    /**
     * @var string
     */
    protected $clinicName;
    /**
     * @var string
     */
    protected $clinicCustomerCode;
    /**
     * @var OrdersGetResponse200ItemProductsItem[]
     */
    protected $products;
    /**
     * @var OrdersGetResponse200ItemDiscountsItem[]
     */
    protected $discounts;
    /**
     * @var OrdersGetResponse200ItemRefundsItem[]
     */
    protected $refunds;
    /**
     * @var OrdersGetResponse200ItemPaymentsItem[]
     */
    protected $payments;

    /**
     * @return int
     */
    public function getId(): int
    {
        return $this->id;
    }

    /**
     * @param int $id
     *
     * @return self
     */
    public function setId(int $id): self
    {
        $this->initialized['id'] = true;
        $this->id = $id;

        return $this;
    }

    /**
     * @return string
     */
    public function getReference(): string
    {
        return $this->reference;
    }

    /**
     * @param string $reference
     *
     * @return self
     */
    public function setReference(string $reference): self
    {
        $this->initialized['reference'] = true;
        $this->reference = $reference;

        return $this;
    }

    /**
     * @return \DateTime
     */
    public function getInvoiceDate(): \DateTime
    {
        return $this->invoiceDate;
    }

    /**
     * @param \DateTime $invoiceDate
     *
     * @return self
     */
    public function setInvoiceDate(\DateTime $invoiceDate): self
    {
        $this->initialized['invoiceDate'] = true;
        $this->invoiceDate = $invoiceDate;

        return $this;
    }

    /**
     * @return int
     */
    public function getState(): int
    {
        return $this->state;
    }

    /**
     * @param int $state
     *
     * @return self
     */
    public function setState(int $state): self
    {
        $this->initialized['state'] = true;
        $this->state = $state;

        return $this;
    }

    /**
     * @return string
     */
    public function getSupplier(): string
    {
        return $this->supplier;
    }

    /**
     * @param string $supplier
     *
     * @return self
     */
    public function setSupplier(string $supplier): self
    {
        $this->initialized['supplier'] = true;
        $this->supplier = $supplier;

        return $this;
    }

    /**
     * @return string
     */
    public function getClinicPrivilegedCode(): string
    {
        return $this->clinicPrivilegedCode;
    }

    /**
     * @param string $clinicPrivilegedCode
     *
     * @return self
     */
    public function setClinicPrivilegedCode(string $clinicPrivilegedCode): self
    {
        $this->initialized['clinicPrivilegedCode'] = true;
        $this->clinicPrivilegedCode = $clinicPrivilegedCode;

        return $this;
    }

    /**
     * @return string
     */
    public function getClinicName(): string
    {
        return $this->clinicName;
    }

    /**
     * @param string $clinicName
     *
     * @return self
     */
    public function setClinicName(string $clinicName): self
    {
        $this->initialized['clinicName'] = true;
        $this->clinicName = $clinicName;

        return $this;
    }

    /**
     * @return string
     */
    public function getClinicCustomerCode(): string
    {
        return $this->clinicCustomerCode;
    }

    /**
     * @param string $clinicCustomerCode
     *
     * @return self
     */
    public function setClinicCustomerCode(string $clinicCustomerCode): self
    {
        $this->initialized['clinicCustomerCode'] = true;
        $this->clinicCustomerCode = $clinicCustomerCode;

        return $this;
    }

    /**
     * @return OrdersGetResponse200ItemProductsItem[]
     */
    public function getProducts(): array
    {
        return $this->products;
    }

    /**
     * @param OrdersGetResponse200ItemProductsItem[] $products
     *
     * @return self
     */
    public function setProducts(array $products): self
    {
        $this->initialized['products'] = true;
        $this->products = $products;

        return $this;
    }

    /**
     * @return OrdersGetResponse200ItemDiscountsItem[]
     */
    public function getDiscounts(): array
    {
        return $this->discounts;
    }

    /**
     * @param OrdersGetResponse200ItemDiscountsItem[] $discounts
     *
     * @return self
     */
    public function setDiscounts(array $discounts): self
    {
        $this->initialized['discounts'] = true;
        $this->discounts = $discounts;

        return $this;
    }

    /**
     * @return OrdersGetResponse200ItemRefundsItem[]
     */
    public function getRefunds(): array
    {
        return $this->refunds;
    }

    /**
     * @param OrdersGetResponse200ItemRefundsItem[] $refunds
     *
     * @return self
     */
    public function setRefunds(array $refunds): self
    {
        $this->initialized['refunds'] = true;
        $this->refunds = $refunds;

        return $this;
    }

    /**
     * @return OrdersGetResponse200ItemPaymentsItem[]
     */
    public function getPayments(): array
    {
        return $this->payments;
    }

    /**
     * @param OrdersGetResponse200ItemPaymentsItem[] $payments
     *
     * @return self
     */
    public function setPayments(array $payments): self
    {
        $this->initialized['payments'] = true;
        $this->payments = $payments;

        return $this;
    }
}
