<?php



namespace PayPal\Api;



use PayPal\Common\PayPalModel;

use PayPal\Converter\FormatConverter;

use PayPal\Validation\NumericValidator;



/**

 * Class Currency

 *

 * Base object for all financial value related fields (balance, payment due, etc.)

 *

 * @package PayPal\Api

 *

 * @property string currency

 * @property string value

 */

class Currency extends PayPalModel

{

    /**

     * 3 letter currency code as defined by ISO 4217.

     *

     * @param string $currency

     * 

     * @return $this

     */

    public function setCurrency($currency)

    {

        $this->currency = $currency;

        return $this;

    }



    /**

     * 3 letter currency code as defined by ISO 4217.

     *

     * @return string

     */

    public function getCurrency()

    {

        return $this->currency;

    }



    /**

     * amount up to N digit after the decimals separator as defined in ISO 4217 for the appropriate currency code.

     *

     * @param string|double $value

     * 

     * @return $this

     */

    public function setValue($value)

    {

        NumericValidator::validate($value, "Value");

        $value = FormatConverter::formatToPrice($value, $this->getCurrency());

        $this->value = $value;

        return $this;

    }



    /**

     * amount up to N digit after the decimals separator as defined in ISO 4217 for the appropriate currency code.

     *

     * @return string

     */

    public function getValue()

    {

        return $this->value;

    }



}

