<?php


class Payment implements \JsonSerializable
{

    private $sequential;	
    private $date;	
    private $value;	
    private $type;
    private $installments;	
    private $interestRate;
    private $interestValue;	
    private $currency;	
    private $address;	
    private $voucherOrderOrigin;	
    private $card;

    public function jsonSerialize(): mixed
    {
        $obj = clone $this;
        $keys = get_object_vars($obj);
        foreach ($keys as $key => $value) {
            if ($value===null || $value==='') {
                unset($obj->{$key});
            }
        }

        return get_object_vars($obj);
    }    

    /**
     * Get the value of sequential
     */ 
    public function getSequential()
    {
        return $this->sequential;
    }

    /**
     * Set the value of sequential
     *
     * @return  self
     */ 
    public function setSequential($sequential)
    {
        $this->sequential = $sequential;

        return $this;
    }

    /**
     * Get the value of date
     */ 
    public function getDate()
    {
        return $this->date;
    }

    /**
     * Set the value of date
     *
     * @return  self
     */ 
    public function setDate($date)
    {
        $this->date = $date;

        return $this;
    }

    /**
     * Get the value of value
     */ 
    public function getValue()
    {
        return $this->value;
    }

    /**
     * Set the value of value
     *
     * @return  self
     */ 
    public function setValue($value)
    {
        $this->value = $value;

        return $this;
    }

    /**
     * Get the value of type
     */ 
    public function getType()
    {
        return $this->type;
    }

    /**
     * Set the value of type
     *
     * @return  self
     */ 
    public function setType($type)
    {
        $this->type = $type;

        return $this;
    }

    /**
     * Get the value of installments
     */ 
    public function getInstallments()
    {
        return $this->installments;
    }

    /**
     * Set the value of installments
     *
     * @return  self
     */ 
    public function setInstallments($installments)
    {
        $this->installments = $installments;

        return $this;
    }

    /**
     * Get the value of interestRate
     */ 
    public function getInterestRate()
    {
        return $this->interestRate;
    }

    /**
     * Set the value of interestRate
     *
     * @return  self
     */ 
    public function setInterestRate($interestRate)
    {
        $this->interestRate = $interestRate;

        return $this;
    }

    /**
     * Get the value of interestValue
     */ 
    public function getInterestValue()
    {
        return $this->interestValue;
    }

    /**
     * Set the value of interestValue
     *
     * @return  self
     */ 
    public function setInterestValue($interestValue)
    {
        $this->interestValue = $interestValue;

        return $this;
    }

    /**
     * Get the value of currency
     */ 
    public function getCurrency()
    {
        return $this->currency;
    }

    /**
     * Set the value of currency
     *
     * @return  self
     */ 
    public function setCurrency($currency)
    {
        $this->currency = $currency;

        return $this;
    }

    public function Address()
    {
        $address = new Address();
        $this->setAddress($address);
        return $address;        
    }     

    /**
     * Get the value of address
     */ 
    public function getAddress()
    {
        return $this->address;
    }

    /**
     * Set the value of address
     *
     * @return  self
     */ 
    public function setAddress($address)
    {
        $this->address = $address;

        return $this;
    }

    /**
     * Get the value of voucherOrderOrigin
     */ 
    public function getVoucherOrderOrigin()
    {
        return $this->voucherOrderOrigin;
    }

    /**
     * Set the value of voucherOrderOrigin
     *
     * @return  self
     */ 
    public function setVoucherOrderOrigin($voucherOrderOrigin)
    {
        $this->voucherOrderOrigin = $voucherOrderOrigin;

        return $this;
    }

    /**
     * Get the value of card
     */ 
    public function getCard()
    {
        return $this->card;
    }

    /**
     * Set the value of card
     *
     * @return  self
     */ 
    public function setCard($card)
    {
        $this->card = $card;

        return $this;
    }
}