<?php

declare(strict_types=1);

namespace Gls\GlsPoland\AdePlus\Type;

final class CCustomsDeclaration
{
    /**
     * @var string
     */
    private $ename1;

    /**
     * @var string
     */
    private $ename2;

    /**
     * @var string
     */
    private $ename3;

    /**
     * @var string
     */
    private $ecountry;

    /**
     * @var string
     */
    private $ezipcode;

    /**
     * @var string
     */
    private $ecity;

    /**
     * @var string
     */
    private $estreet;

    /**
     * @var string
     */
    private $ephone;

    /**
     * @var string
     */
    private $econtact;

    /**
     * @var string
     */
    private $etaxid;

    /**
     * @var string
     */
    private $eeori;

    /**
     * @var string
     */
    private $ebn;

    /**
     * @var string
     */
    private $iname1;

    /**
     * @var string
     */
    private $iname2;

    /**
     * @var string
     */
    private $iname3;

    /**
     * @var string
     */
    private $icountry;

    /**
     * @var string
     */
    private $izipcode;

    /**
     * @var string
     */
    private $icity;

    /**
     * @var string
     */
    private $istreet;

    /**
     * @var string
     */
    private $iphone;

    /**
     * @var string
     */
    private $icontact;

    /**
     * @var string
     */
    private $itaxid;

    /**
     * @var string
     */
    private $ieori;

    /**
     * @var int
     */
    private $reason;

    /**
     * @var string
     */
    private $invoice_num;

    /**
     * @var \DateTimeInterface
     */
    private $invoice_date;

    /**
     * @var string
     */
    private $invoice_curr;

    /**
     * @var float
     */
    private $invoice_value;

    /**
     * @var float
     */
    private $weight_gross_total;

    /**
     * @var string
     */
    private $incoterm;

    /**
     * @var string
     */
    private $mrn;

    /**
     * @var \Gls\GlsPoland\AdePlus\Type\CCustomsAttachedFilesArray
     */
    private $attachments;

    /**
     * @var \Gls\GlsPoland\AdePlus\Type\CCustomsArticlesArray
     */
    private $articles;

    public function getEname1(): string
    {
        return $this->ename1;
    }

    public function withEname1(string $ename1): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ename1 = $ename1;

        return $new;
    }

    public function getEname2(): string
    {
        return $this->ename2;
    }

    public function withEname2(string $ename2): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ename2 = $ename2;

        return $new;
    }

    public function getEname3(): string
    {
        return $this->ename3;
    }

    public function withEname3(string $ename3): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ename3 = $ename3;

        return $new;
    }

    public function getEcountry(): string
    {
        return $this->ecountry;
    }

    public function withEcountry(string $ecountry): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ecountry = $ecountry;

        return $new;
    }

    public function getEzipcode(): string
    {
        return $this->ezipcode;
    }

    public function withEzipcode(string $ezipcode): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ezipcode = $ezipcode;

        return $new;
    }

    public function getEcity(): string
    {
        return $this->ecity;
    }

    public function withEcity(string $ecity): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ecity = $ecity;

        return $new;
    }

    public function getEstreet(): string
    {
        return $this->estreet;
    }

    public function withEstreet(string $estreet): CCustomsDeclaration
    {
        $new = clone $this;
        $new->estreet = $estreet;

        return $new;
    }

    public function getEphone(): string
    {
        return $this->ephone;
    }

    public function withEphone(string $ephone): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ephone = $ephone;

        return $new;
    }

    public function getEcontact(): string
    {
        return $this->econtact;
    }

    public function withEcontact(string $econtact): CCustomsDeclaration
    {
        $new = clone $this;
        $new->econtact = $econtact;

        return $new;
    }

    public function getEtaxid(): string
    {
        return $this->etaxid;
    }

    public function withEtaxid(string $etaxid): CCustomsDeclaration
    {
        $new = clone $this;
        $new->etaxid = $etaxid;

        return $new;
    }

    public function getEeori(): string
    {
        return $this->eeori;
    }

    public function withEeori(string $eeori): CCustomsDeclaration
    {
        $new = clone $this;
        $new->eeori = $eeori;

        return $new;
    }

    public function getEbn(): string
    {
        return $this->ebn;
    }

    public function withEbn(string $ebn): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ebn = $ebn;

        return $new;
    }

    public function getIname1(): string
    {
        return $this->iname1;
    }

    public function withIname1(string $iname1): CCustomsDeclaration
    {
        $new = clone $this;
        $new->iname1 = $iname1;

        return $new;
    }

    public function getIname2(): string
    {
        return $this->iname2;
    }

    public function withIname2(string $iname2): CCustomsDeclaration
    {
        $new = clone $this;
        $new->iname2 = $iname2;

        return $new;
    }

    public function getIname3(): string
    {
        return $this->iname3;
    }

    public function withIname3(string $iname3): CCustomsDeclaration
    {
        $new = clone $this;
        $new->iname3 = $iname3;

        return $new;
    }

    public function getIcountry(): string
    {
        return $this->icountry;
    }

    public function withIcountry(string $icountry): CCustomsDeclaration
    {
        $new = clone $this;
        $new->icountry = $icountry;

        return $new;
    }

    public function getIzipcode(): string
    {
        return $this->izipcode;
    }

    public function withIzipcode(string $izipcode): CCustomsDeclaration
    {
        $new = clone $this;
        $new->izipcode = $izipcode;

        return $new;
    }

    public function getIcity(): string
    {
        return $this->icity;
    }

    public function withIcity(string $icity): CCustomsDeclaration
    {
        $new = clone $this;
        $new->icity = $icity;

        return $new;
    }

    public function getIstreet(): string
    {
        return $this->istreet;
    }

    public function withIstreet(string $istreet): CCustomsDeclaration
    {
        $new = clone $this;
        $new->istreet = $istreet;

        return $new;
    }

    public function getIphone(): string
    {
        return $this->iphone;
    }

    public function withIphone(string $iphone): CCustomsDeclaration
    {
        $new = clone $this;
        $new->iphone = $iphone;

        return $new;
    }

    public function getIcontact(): string
    {
        return $this->icontact;
    }

    public function withIcontact(string $icontact): CCustomsDeclaration
    {
        $new = clone $this;
        $new->icontact = $icontact;

        return $new;
    }

    public function getItaxid(): string
    {
        return $this->itaxid;
    }

    public function withItaxid(string $itaxid): CCustomsDeclaration
    {
        $new = clone $this;
        $new->itaxid = $itaxid;

        return $new;
    }

    public function getIeori(): string
    {
        return $this->ieori;
    }

    public function withIeori(string $ieori): CCustomsDeclaration
    {
        $new = clone $this;
        $new->ieori = $ieori;

        return $new;
    }

    public function getReason(): int
    {
        return $this->reason;
    }

    public function withReason(int $reason): CCustomsDeclaration
    {
        $new = clone $this;
        $new->reason = $reason;

        return $new;
    }

    public function getInvoice_num(): string
    {
        return $this->invoice_num;
    }

    public function withInvoice_num(string $invoice_num): CCustomsDeclaration
    {
        $new = clone $this;
        $new->invoice_num = $invoice_num;

        return $new;
    }

    public function getInvoice_date(): \DateTimeInterface
    {
        return $this->invoice_date;
    }

    public function withInvoice_date(\DateTimeInterface $invoice_date): CCustomsDeclaration
    {
        $new = clone $this;
        $new->invoice_date = $invoice_date;

        return $new;
    }

    public function getInvoice_curr(): string
    {
        return $this->invoice_curr;
    }

    public function withInvoice_curr(string $invoice_curr): CCustomsDeclaration
    {
        $new = clone $this;
        $new->invoice_curr = $invoice_curr;

        return $new;
    }

    public function getInvoice_value(): float
    {
        return $this->invoice_value;
    }

    public function withInvoice_value(float $invoice_value): CCustomsDeclaration
    {
        $new = clone $this;
        $new->invoice_value = $invoice_value;

        return $new;
    }

    public function getWeight_gross_total(): float
    {
        return $this->weight_gross_total;
    }

    public function withWeight_gross_total(float $weight_gross_total): CCustomsDeclaration
    {
        $new = clone $this;
        $new->weight_gross_total = $weight_gross_total;

        return $new;
    }

    public function getIncoterm(): string
    {
        return $this->incoterm;
    }

    public function withIncoterm(string $incoterm): CCustomsDeclaration
    {
        $new = clone $this;
        $new->incoterm = $incoterm;

        return $new;
    }

    public function getMrn(): string
    {
        return $this->mrn;
    }

    public function withMrn(string $mrn): CCustomsDeclaration
    {
        $new = clone $this;
        $new->mrn = $mrn;

        return $new;
    }

    public function getAttachments(): CCustomsAttachedFilesArray
    {
        return $this->attachments;
    }

    public function withAttachments(CCustomsAttachedFilesArray $attachments): CCustomsDeclaration
    {
        $new = clone $this;
        $new->attachments = $attachments;

        return $new;
    }

    public function getArticles(): CCustomsArticlesArray
    {
        return $this->articles;
    }

    public function withArticles(CCustomsArticlesArray $articles): CCustomsDeclaration
    {
        $new = clone $this;
        $new->articles = $articles;

        return $new;
    }
}
