<?php

namespace Autogedal\Retur\Api\Data;

use Magento\Framework\Api\ExtensibleDataInterface;

interface ReturInterface extends ExtensibleDataInterface
{
    /**#@+
     * Constants defined for keys of data array
     */
    public const ENTITY_ID = 'entity_id';
    public const INCREMENT_ID = 'increment_id';
    public const STORE_ID = 'store_id';
    public const STATUS = 'status';
    public const ORDER_USER_INCREMENT_ID = 'order_user_increment_id';
    public const CUSTOMER_FIRSTNAME = 'customer_firstname';
    public const CUSTOMER_LASTNAME = 'customer_lastname';
    public const EMAIL = 'email';
    public const TELEPHONE = 'telephone';
    public const METODA_RAMBURSARE = 'metoda_rambursare';
    public const AWB_NUMBER = 'awb_number';
    public const MOTIV_RETUR = 'motiv_retur';
    public const IBAN = 'iban';
    /**#@-*/

    const STATUS_ACCEPTAT_SUMA = 'status_acceptat_suma';
    const STATUS_RESPINS_MOTIV = 'status_respins_motiv';

    public function getStatusAcceptatSuma();
    public function getStatusRespinsMotiv();

    public function setStatusAcceptatSuma($suma);
    public function setStatusRespinsMotivmment($motiv);
    
    /*
     * Status histories.
     */
    const STATUS_HISTORIES = 'status_histories';
    
    /**
     * Key for data persistor
     */
    public const FORM_NAMESPACE = 'autogedal_retur_form';

    /**
     * Sets status histories for the order.
     *
     * @param \Autogedal\Retur\Api\Data\ReturStatusHistoryInterface[] $statusHistories
     * @return $this
     */
    public function setStatusHistories(array $statusHistories = null);

    /**
     * Gets status histories for the order.
     *
     * @return \Autogedal\Retur\Api\Data\ReturStatusHistoryInterface[]|null Array of status histories.
     */
    public function getStatusHistories();

    /**
     * Gets the ID for the order.
     *
     * @return int|null retur ID.
     */
    public function getEntityId();

    /**
     * @param int $entityId
     *
     * @return $this
     */
    public function setEntityId($entityId);

    /**
     * @return string
     */
    public function getIncrementId();

    /**
     * Sets the increment ID for the retur.
     *
     * @param string $id
     * @return $this
     */
    public function setIncrementId($id);

    /**
     * Gets the store ID for the retur.
     *
     * @return int|null Store ID.
     */
    public function getStoreId();

    /**
     * Sets the store ID for the retur.
     *
     * @param int $id
     * @return $this
     */
    public function setStoreId($id);

    /**
     * Gets the status for the retur.
     *
     * @return string|null Status.
     */
    public function getStatus();

    /**
     * Sets the status for the retur.
     *
     * @param string $status
     * @return $this
     */
    public function setStatus($status);

    /**
     * @return string
     */
    public function getUserIncrementId();

    /**
     * Sets the user increment ID for the retur.
     *
     * @param string $id
     * @return $this
     */
    public function setUserIncrementId($id);

    /**
     * Gets the customer first name for the retur.
     *
     * @return string|null Customer first name.
     */
    public function getCustomerFirstname();

    /**
     * Sets the customer first name for the retur.
     *
     * @param string $customerFirstname
     * @return $this
     */
    public function setCustomerFirstname($customerFirstname);

    /**
     * Gets the customer last name for the retur.
     *
     * @return string|null Customer last name.
     */
    public function getCustomerLastname();

    /**
     * Sets the customer last name for the retur.
     *
     * @param string $customerLastname
     * @return $this
     */
    public function setCustomerLastname($customerLastname);

    /**
     * Gets the customer email address for the retur.
     *
     * @return string Customer email address.
     */
    public function getEmail();

    /**
     * Sets the customer email address for the retur.
     *
     * @param string $customerEmail
     * @return $this
     */
    public function setEmail($customerEmail);

    /**
     * Gets the customer phone for the retur.
     *
     * @return string Customer email address.
     */
    public function getTelephone();

    /**
     * Sets the customer phone for the retur.
     *
     * @param string $telephone
     * @return $this
     */
    public function setTelephone($telephone);

    /**
     * Gets the customer phone for the retur.
     *
     * @return string metoda rambursare.
     */
    public function getMetodaRambursare();

    /**
     * Sets the metoda rambursare retur.
     *
     * @param string $metodaRambursare
     * @return $this
     */
    public function setMetodaRambursare($metodaRambursare);

    /**
     * Gets the customer awb for the retur.
     *
     * @return string|null awb number.
     */
    public function getAwbNumber();

    /**
     * Sets the awb number retur.
     *
     * @param string $awbNumber
     * @return $this
     */
    public function setAwbNumber($awbNumber);

    /**
     * Gets the motiv retur for the retur.
     *
     * @return string|null motiv retur.
     */
    public function getMotivRetur();

    /**
     * Sets the motiv retur.
     *
     * @param string $motivRetur
     * @return $this
     */
    public function setMotivRetur($motivRetur);

    /**
     * Gets the iban for the retur.
     *
     * @return string|null iban retur.
     */
    public function getIban();

    /**
     * Sets the iban retur.
     *
     * @param string $iban
     * @return $this
     */
    public function setIban($iban);

    public function addCommentToStatusHistory($comment, $status);
}
