<?php
/**
 * Copyright ©  All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Leadlion\AutogedalWarehouses\Api\Data;

interface WarehouseInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{

    const WAREHOUSE_ID = 'warehouse_id';
    const SMARTBILL_INVOICE_SERIES = 'smartbill_invoice_series';
    const MAX_SENDING_HOUR = 'max_sending_hour';
    const AUTOMATIC_STOCK_MANAGEMENT = 'automatic_stock_management';
    const DEFAULT_COURIER = 'default_courier';
    const PICKUP_ID = 'pickup_id';
    const IS_EXTERNAL = 'is_external';
    const CONDITIONS = 'conditions';
    const SUPPLIER_EMAIL = 'supplier_email';
    const ADDRESS = 'address';
    const NAME = 'name';
    const CODE = 'code';
    const PHONE = 'phone';
    const CITY = 'city';
    const ZIP_CODE = 'zip_code';

    /**
     * Get warehouse_id
     * @return string|null
     */
    public function getWarehouseId();

    /**
     * Set warehouse_id
     * @param string $warehouseId
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setWarehouseId($warehouseId);

    /**
     * Get name
     * @return string|null
     */
    public function getName();

    /**
     * Set name
     * @param string $name
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setName($name);

    /**
     * Retrieve existing extension attributes object or create a new one.
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseExtensionInterface|null
     */
    public function getExtensionAttributes();

    /**
     * Set an extension attributes object.
     * @param \Leadlion\AutogedalWarehouses\Api\Data\WarehouseExtensionInterface $extensionAttributes
     * @return $this
     */
    public function setExtensionAttributes(
        \Leadlion\AutogedalWarehouses\Api\Data\WarehouseExtensionInterface $extensionAttributes
    );

    /**
     * Get is_external
     * @return string|null
     */
    public function getIsExternal();

    /**
     * Set is_external
     * @param string $isExternal
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setIsExternal($isExternal);

    /**
     * Get address
     * @return string|null
     */
    public function getAddress();

    /**
     * Set address
     * @param string $address
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setAddress($address);

    /**
     * Get default_courier
     * @return string|null
     */
    public function getDefaultCourier();

    /**
     * Set default_courier
     * @param string $defaultCourier
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setDefaultCourier($defaultCourier);

    /**
     * Set pickup_id
     * @param string $pickupId
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setPickupId($pickupId);

    /**
     * Get pickup_id
     * @return string|null
     */
    public function getPickupId();


    /**
     * Get conditions
     * @return string|null
     */
    public function getConditions();


    /**
     * Set conditions
     * @param string $conditions
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setConditions($conditions);

    /**
     * Get smartbill_invoice_series
     * @return string|null
     */
    public function getSmartbillInvoiceSeries();

    /**
     * Set smartbill_invoice_series
     * @param string $smartbillInvoiceSeries
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setSmartbillInvoiceSeries($smartbillInvoiceSeries);

    /**
     * Get supplier_email
     * @return string|null
     */
    public function getSupplierEmail();

    /**
     * Set supplier_email
     * @param string $supplierEmail
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setSupplierEmail($supplierEmail);

    /**
     * Get max_sending_hour
     * @return string|null
     */
    public function getMaxSendingHour();

    /**
     * Set max_sending_hour
     * @param string $maxSendingHour
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setMaxSendingHour($maxSendingHour);

    /**
     * Get code
     * @return string|null
     */
    public function getCode();

    /**
     * Set code
     * @param string $code
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setCode($code);

    /**
     * Get automatic_stock_management
     * @return mixed
     */
    public function getAutomaticStockManagement();

    /**
     * @param mixed $automaticStockManagement
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setAutomaticStockManagement($automaticStockManagement);

    /**
     * Get phone
     * @return string|null
     */
    public function getPhone();

    /**
     * Set phone
     * @param string $phone
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setPhone($phone);

    /**
     * Get city
     * @return string|null
     */
    public function getCity();

    /**
     * Set city
     * @param string $city
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setCity($city);

    /**
     * Get zip_code
     * @return string|null
     */
    public function getZipCode();

    /**
     * Set zip_code
     * @param string $zipCode
     * @return \Leadlion\AutogedalWarehouses\Api\Data\WarehouseInterface
     */
    public function setZipCode($zipCode);

}

