# coding: utf-8

from __future__ import absolute_import
from swagger_server.models.catalog_inventory_data_stock_item_interface import CatalogInventoryDataStockItemInterface
from .base_model_ import Model
from datetime import date, datetime
from typing import List, Dict
from ..util import deserialize_model


class CatalogInventoryDataStockStatusInterface(Model):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, product_id: int=None, stock_id: int=None, qty: int=None, stock_status: int=None, stock_item: CatalogInventoryDataStockItemInterface=None):
        """
        CatalogInventoryDataStockStatusInterface - a model defined in Swagger

        :param product_id: The product_id of this CatalogInventoryDataStockStatusInterface.
        :type product_id: int
        :param stock_id: The stock_id of this CatalogInventoryDataStockStatusInterface.
        :type stock_id: int
        :param qty: The qty of this CatalogInventoryDataStockStatusInterface.
        :type qty: int
        :param stock_status: The stock_status of this CatalogInventoryDataStockStatusInterface.
        :type stock_status: int
        :param stock_item: The stock_item of this CatalogInventoryDataStockStatusInterface.
        :type stock_item: CatalogInventoryDataStockItemInterface
        """
        self.swagger_types = {
            'product_id': int,
            'stock_id': int,
            'qty': int,
            'stock_status': int,
            'stock_item': CatalogInventoryDataStockItemInterface
        }

        self.attribute_map = {
            'product_id': 'product_id',
            'stock_id': 'stock_id',
            'qty': 'qty',
            'stock_status': 'stock_status',
            'stock_item': 'stock_item'
        }

        self._product_id = product_id
        self._stock_id = stock_id
        self._qty = qty
        self._stock_status = stock_status
        self._stock_item = stock_item

    @classmethod
    def from_dict(cls, dikt) -> 'CatalogInventoryDataStockStatusInterface':
        """
        Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The catalog-inventory-data-stock-status-interface of this CatalogInventoryDataStockStatusInterface.
        :rtype: CatalogInventoryDataStockStatusInterface
        """
        return deserialize_model(dikt, cls)

    @property
    def product_id(self) -> int:
        """
        Gets the product_id of this CatalogInventoryDataStockStatusInterface.

        :return: The product_id of this CatalogInventoryDataStockStatusInterface.
        :rtype: int
        """
        return self._product_id

    @product_id.setter
    def product_id(self, product_id: int):
        """
        Sets the product_id of this CatalogInventoryDataStockStatusInterface.

        :param product_id: The product_id of this CatalogInventoryDataStockStatusInterface.
        :type product_id: int
        """
        if product_id is None:
            raise ValueError("Invalid value for `product_id`, must not be `None`")

        self._product_id = product_id

    @property
    def stock_id(self) -> int:
        """
        Gets the stock_id of this CatalogInventoryDataStockStatusInterface.

        :return: The stock_id of this CatalogInventoryDataStockStatusInterface.
        :rtype: int
        """
        return self._stock_id

    @stock_id.setter
    def stock_id(self, stock_id: int):
        """
        Sets the stock_id of this CatalogInventoryDataStockStatusInterface.

        :param stock_id: The stock_id of this CatalogInventoryDataStockStatusInterface.
        :type stock_id: int
        """
        if stock_id is None:
            raise ValueError("Invalid value for `stock_id`, must not be `None`")

        self._stock_id = stock_id

    @property
    def qty(self) -> int:
        """
        Gets the qty of this CatalogInventoryDataStockStatusInterface.

        :return: The qty of this CatalogInventoryDataStockStatusInterface.
        :rtype: int
        """
        return self._qty

    @qty.setter
    def qty(self, qty: int):
        """
        Sets the qty of this CatalogInventoryDataStockStatusInterface.

        :param qty: The qty of this CatalogInventoryDataStockStatusInterface.
        :type qty: int
        """
        if qty is None:
            raise ValueError("Invalid value for `qty`, must not be `None`")

        self._qty = qty

    @property
    def stock_status(self) -> int:
        """
        Gets the stock_status of this CatalogInventoryDataStockStatusInterface.

        :return: The stock_status of this CatalogInventoryDataStockStatusInterface.
        :rtype: int
        """
        return self._stock_status

    @stock_status.setter
    def stock_status(self, stock_status: int):
        """
        Sets the stock_status of this CatalogInventoryDataStockStatusInterface.

        :param stock_status: The stock_status of this CatalogInventoryDataStockStatusInterface.
        :type stock_status: int
        """
        if stock_status is None:
            raise ValueError("Invalid value for `stock_status`, must not be `None`")

        self._stock_status = stock_status

    @property
    def stock_item(self) -> CatalogInventoryDataStockItemInterface:
        """
        Gets the stock_item of this CatalogInventoryDataStockStatusInterface.

        :return: The stock_item of this CatalogInventoryDataStockStatusInterface.
        :rtype: CatalogInventoryDataStockItemInterface
        """
        return self._stock_item

    @stock_item.setter
    def stock_item(self, stock_item: CatalogInventoryDataStockItemInterface):
        """
        Sets the stock_item of this CatalogInventoryDataStockStatusInterface.

        :param stock_item: The stock_item of this CatalogInventoryDataStockStatusInterface.
        :type stock_item: CatalogInventoryDataStockItemInterface
        """
        if stock_item is None:
            raise ValueError("Invalid value for `stock_item`, must not be `None`")

        self._stock_item = stock_item

