<?php

namespace PayPal\Api;

use PayPal\Common\PayPalModel;

/**
 * Class PaymentDetail
 *
 * Invoicing payment information.
 *
 * @package PayPal\Api
 *
 * @property string type
 * @property string transaction_id
 * @property string transaction_type
 * @property string date
 * @property string method
 * @property string note
 * @property \PayPal\Api\Currency amount
 */
class PaymentDetail extends PayPalModel {

	/**
	 * The PayPal payment detail. Indicates whether payment was made in an invoicing flow through PayPal or externally. In the case of the mark-as-paid API, the supported payment type is `EXTERNAL`. For backward compatibility, the `PAYPAL` payment type is still supported.
	 * Valid Values: ["PAYPAL", "EXTERNAL"]
	 *
	 * @param string $type
	 * 
	 * @return $this
	 */
	public function setType( $type) {
		$this->type = $type;
		return $this;
	}

	/**
	 * The PayPal payment detail. Indicates whether payment was made in an invoicing flow through PayPal or externally. In the case of the mark-as-paid API, the supported payment type is `EXTERNAL`. For backward compatibility, the `PAYPAL` payment type is still supported.
	 *
	 * @return string
	 */
	public function getType() {
		return $this->type;
	}

	/**
	 * The PayPal payment transaction ID. Required with the `PAYPAL` payment type.
	 *
	 * @param string $transaction_id
	 * 
	 * @return $this
	 */
	public function setTransactionId( $transaction_id) {
		$this->transaction_id = $transaction_id;
		return $this;
	}

	/**
	 * The PayPal payment transaction ID. Required with the `PAYPAL` payment type.
	 *
	 * @return string
	 */
	public function getTransactionId() {
		return $this->transaction_id;
	}

	/**
	 * Type of the transaction.
	 * Valid Values: ["SALE", "AUTHORIZATION", "CAPTURE"]
	 *
	 * @param string $transaction_type
	 * 
	 * @return $this
	 */
	public function setTransactionType( $transaction_type) {
		$this->transaction_type = $transaction_type;
		return $this;
	}

	/**
	 * Type of the transaction.
	 *
	 * @return string
	 */
	public function getTransactionType() {
		return $this->transaction_type;
	}

	/**
	 * The date when the invoice was paid. The date format is *yyyy*-*MM*-*dd* *z* as defined in [Internet Date/Time Format](http://tools.ietf.org/html/rfc3339#section-5.6).
	 *
	 * @param string $date
	 * 
	 * @return $this
	 */
	public function setDate( $date) {
		$this->date = $date;
		return $this;
	}

	/**
	 * The date when the invoice was paid. The date format is *yyyy*-*MM*-*dd* *z* as defined in [Internet Date/Time Format](http://tools.ietf.org/html/rfc3339#section-5.6).
	 *
	 * @return string
	 */
	public function getDate() {
		return $this->date;
	}

	/**
	 * The payment mode or method. Required with the `EXTERNAL` payment type.
	 * Valid Values: ["BANK_TRANSFER", "CASH", "CHECK", "CREDIT_CARD", "DEBIT_CARD", "PAYPAL", "WIRE_TRANSFER", "OTHER"]
	 *
	 * @param string $method
	 * 
	 * @return $this
	 */
	public function setMethod( $method) {
		$this->method = $method;
		return $this;
	}

	/**
	 * The payment mode or method. Required with the `EXTERNAL` payment type.
	 *
	 * @return string
	 */
	public function getMethod() {
		return $this->method;
	}

	/**
	 * Optional. A note associated with the payment.
	 *
	 * @param string $note
	 * 
	 * @return $this
	 */
	public function setNote( $note) {
		$this->note = $note;
		return $this;
	}

	/**
	 * Optional. A note associated with the payment.
	 *
	 * @return string
	 */
	public function getNote() {
		return $this->note;
	}

	/**
	 * The amount to record as payment against invoice. If you omit this parameter, the total invoice amount is recorded as payment.
	 *
	 * @param \PayPal\Api\Currency $amount
	 * 
	 * @return $this
	 */
	public function setAmount( $amount) {
		$this->amount = $amount;
		return $this;
	}

	/**
	 * The amount to record as payment against invoice. If you omit this parameter, the total invoice amount is recorded as payment.
	 *
	 * @return \PayPal\Api\Currency
	 */
	public function getAmount() {
		return $this->amount;
	}

}
