<?php

declare(strict_types=1);

namespace Gls\GlsPoland\AdePlus\Type;

use Gls\GlsPoland\AdePlus\Common\Services;
use Gls\GlsPoland\AdePlus\Consignment\DAWOptions;
use Gls\GlsPoland\AdePlus\Consignment\IDENTOptions;
use Gls\GlsPoland\AdePlus\Consignment\ParcelsCollection;
use Gls\GlsPoland\AdePlus\Consignment\PPEOptions;
use Gls\GlsPoland\AdePlus\Consignment\SDSOptions;
use Gls\GlsPoland\AdePlus\Consignment\SenderAddress;

final class CConsignExt
{
    /**
     * @var string
     */
    private $rname1;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @var \Gls\GlsPoland\AdePlus\Consignment\SenderAddress
     */
    private $sendaddr;

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

    /**
     * @var \Gls\GlsPoland\AdePlus\Common\Services
     */
    private $srv_bool;

    /**
     * @var \Gls\GlsPoland\AdePlus\Consignment\DAWOptions
     */
    private $srv_daw;

    /**
     * @var \Gls\GlsPoland\AdePlus\Consignment\IDENTOptions
     */
    private $srv_ident;

    /**
     * @var \Gls\GlsPoland\AdePlus\Consignment\PPEOptions
     */
    private $srv_ppe;

    /**
     * @var \Gls\GlsPoland\AdePlus\Consignment\SDSOptions
     */
    private $srv_sds;

    /**
     * @var \Gls\GlsPoland\AdePlus\Consignment\ParcelsCollection
     */
    private $parcels;

    /**
     * @var \Gls\GlsPoland\AdePlus\Type\CCustomsDeclaration
     */
    private $customs_dec;

    public function getRname1(): string
    {
        return $this->rname1;
    }

    public function withRname1(string $rname1): CConsignExt
    {
        $new = clone $this;
        $new->rname1 = $rname1;

        return $new;
    }

    public function getRname2(): string
    {
        return $this->rname2;
    }

    public function withRname2(string $rname2): CConsignExt
    {
        $new = clone $this;
        $new->rname2 = $rname2;

        return $new;
    }

    public function getRname3(): string
    {
        return $this->rname3;
    }

    public function withRname3(string $rname3): CConsignExt
    {
        $new = clone $this;
        $new->rname3 = $rname3;

        return $new;
    }

    public function getRcountry(): string
    {
        return $this->rcountry;
    }

    public function withRcountry(string $rcountry): CConsignExt
    {
        $new = clone $this;
        $new->rcountry = $rcountry;

        return $new;
    }

    public function getRzipcode(): string
    {
        return $this->rzipcode;
    }

    public function withRzipcode(string $rzipcode): CConsignExt
    {
        $new = clone $this;
        $new->rzipcode = $rzipcode;

        return $new;
    }

    public function getRcity(): string
    {
        return $this->rcity;
    }

    public function withRcity(string $rcity): CConsignExt
    {
        $new = clone $this;
        $new->rcity = $rcity;

        return $new;
    }

    public function getRstreet(): string
    {
        return $this->rstreet;
    }

    public function withRstreet(string $rstreet): CConsignExt
    {
        $new = clone $this;
        $new->rstreet = $rstreet;

        return $new;
    }

    public function getRphone(): string
    {
        return $this->rphone;
    }

    public function withRphone(string $rphone): CConsignExt
    {
        $new = clone $this;
        $new->rphone = $rphone;

        return $new;
    }

    public function getRcontact(): string
    {
        return $this->rcontact;
    }

    public function withRcontact(string $rcontact): CConsignExt
    {
        $new = clone $this;
        $new->rcontact = $rcontact;

        return $new;
    }

    public function getReferences(): string
    {
        return $this->references;
    }

    public function withReferences(string $references): CConsignExt
    {
        $new = clone $this;
        $new->references = $references;

        return $new;
    }

    public function getNotes(): string
    {
        return $this->notes;
    }

    public function withNotes(string $notes): CConsignExt
    {
        $new = clone $this;
        $new->notes = $notes;

        return $new;
    }

    public function getQuantity(): int
    {
        return $this->quantity;
    }

    public function withQuantity(int $quantity): CConsignExt
    {
        $new = clone $this;
        $new->quantity = $quantity;

        return $new;
    }

    public function getWeight(): float
    {
        return $this->weight;
    }

    public function withWeight(float $weight): CConsignExt
    {
        $new = clone $this;
        $new->weight = $weight;

        return $new;
    }

    public function getDate(): \DateTimeInterface
    {
        return $this->date;
    }

    public function withDate(\DateTimeInterface $date): CConsignExt
    {
        $new = clone $this;
        $new->date = $date;

        return $new;
    }

    public function getPfc(): string
    {
        return $this->pfc;
    }

    public function withPfc(string $pfc): CConsignExt
    {
        $new = clone $this;
        $new->pfc = $pfc;

        return $new;
    }

    public function getSendaddr(): SenderAddress
    {
        return $this->sendaddr;
    }

    public function withSendaddr(SenderAddress $sendaddr): CConsignExt
    {
        $new = clone $this;
        $new->sendaddr = $sendaddr;

        return $new;
    }

    public function getSrv_ade(): string
    {
        return $this->srv_ade;
    }

    public function withSrv_ade(string $srv_ade): CConsignExt
    {
        $new = clone $this;
        $new->srv_ade = $srv_ade;

        return $new;
    }

    public function getSrv_bool(): Services
    {
        return $this->srv_bool;
    }

    public function withSrv_bool(Services $srv_bool): CConsignExt
    {
        $new = clone $this;
        $new->srv_bool = $srv_bool;

        return $new;
    }

    public function getSrv_daw(): DAWOptions
    {
        return $this->srv_daw;
    }

    public function withSrv_daw(DAWOptions $srv_daw): CConsignExt
    {
        $new = clone $this;
        $new->srv_daw = $srv_daw;

        return $new;
    }

    public function getSrv_ident(): IDENTOptions
    {
        return $this->srv_ident;
    }

    public function withSrv_ident(IDENTOptions $srv_ident): CConsignExt
    {
        $new = clone $this;
        $new->srv_ident = $srv_ident;

        return $new;
    }

    public function getSrv_ppe(): PPEOptions
    {
        return $this->srv_ppe;
    }

    public function withSrv_ppe(PPEOptions $srv_ppe): CConsignExt
    {
        $new = clone $this;
        $new->srv_ppe = $srv_ppe;

        return $new;
    }

    public function getSrv_sds(): SDSOptions
    {
        return $this->srv_sds;
    }

    public function withSrv_sds(SDSOptions $srv_sds): CConsignExt
    {
        $new = clone $this;
        $new->srv_sds = $srv_sds;

        return $new;
    }

    public function getParcels(): ParcelsCollection
    {
        return $this->parcels;
    }

    public function withParcels(ParcelsCollection $parcels): CConsignExt
    {
        $new = clone $this;
        $new->parcels = $parcels;

        return $new;
    }

    public function getCustoms_dec(): CCustomsDeclaration
    {
        return $this->customs_dec;
    }

    public function withCustoms_dec(CCustomsDeclaration $customs_dec): CConsignExt
    {
        $new = clone $this;
        $new->customs_dec = $customs_dec;

        return $new;
    }
}
