# coding: utf-8

"""
    The Selling Partner API for Amazon Warehousing and Distribution

    The Selling Partner API for Amazon Warehousing and Distribution (AWD) provides programmatic access to information about AWD shipments and inventory.

    The version of the OpenAPI document: 2024-05-09
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import pprint
import re  # noqa: F401

import six

from spapi.configuration import Configuration


class InventorySummary(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'expiration_details': 'List[ExpirationDetails]',
        'inventory_details': 'InventoryDetails',
        'sku': 'str',
        'total_inbound_quantity': 'int',
        'total_onhand_quantity': 'int',
    }

    attribute_map = {
        'expiration_details': 'expirationDetails',
        'inventory_details': 'inventoryDetails',
        'sku': 'sku',
        'total_inbound_quantity': 'totalInboundQuantity',
        'total_onhand_quantity': 'totalOnhandQuantity',
    }

    def __init__(self, expiration_details=None, inventory_details=None, sku=None, total_inbound_quantity=None, total_onhand_quantity=None, _configuration=None):  # noqa: E501
        """InventorySummary - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._expiration_details = None
        self._inventory_details = None
        self._sku = None
        self._total_inbound_quantity = None
        self._total_onhand_quantity = None
        self.discriminator = None

        if expiration_details is not None:
            self.expiration_details = expiration_details
        if inventory_details is not None:
            self.inventory_details = inventory_details
        self.sku = sku
        if total_inbound_quantity is not None:
            self.total_inbound_quantity = total_inbound_quantity
        if total_onhand_quantity is not None:
            self.total_onhand_quantity = total_onhand_quantity

    @property
    def expiration_details(self):
        """Gets the expiration_details of this InventorySummary.  # noqa: E501

        The expiration details of the inventory. This object will only appear if the `details` parameter in the request is set to `SHOW`.  # noqa: E501

        :return: The expiration_details of this InventorySummary.  # noqa: E501
        :rtype: List[ExpirationDetails]
        """
        return self._expiration_details

    @expiration_details.setter
    def expiration_details(self, expiration_details):
        """Sets the expiration_details of this InventorySummary.

        The expiration details of the inventory. This object will only appear if the `details` parameter in the request is set to `SHOW`.  # noqa: E501

        :param expiration_details: The expiration_details of this InventorySummary.  # noqa: E501
        :type: List[ExpirationDetails]
        """

        self._expiration_details = expiration_details

    @property
    def inventory_details(self):
        """Gets the inventory_details of this InventorySummary.  # noqa: E501


        :return: The inventory_details of this InventorySummary.  # noqa: E501
        :rtype: InventoryDetails
        """
        return self._inventory_details

    @inventory_details.setter
    def inventory_details(self, inventory_details):
        """Sets the inventory_details of this InventorySummary.


        :param inventory_details: The inventory_details of this InventorySummary.  # noqa: E501
        :type: InventoryDetails
        """

        self._inventory_details = inventory_details

    @property
    def sku(self):
        """Gets the sku of this InventorySummary.  # noqa: E501

        The seller or merchant SKU.  # noqa: E501

        :return: The sku of this InventorySummary.  # noqa: E501
        :rtype: str
        """
        return self._sku

    @sku.setter
    def sku(self, sku):
        """Sets the sku of this InventorySummary.

        The seller or merchant SKU.  # noqa: E501

        :param sku: The sku of this InventorySummary.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and sku is None:
            raise ValueError("Invalid value for `sku`, must not be `None`")  # noqa: E501

        self._sku = sku

    @property
    def total_inbound_quantity(self):
        """Gets the total_inbound_quantity of this InventorySummary.  # noqa: E501

        Total quantity that is in-transit from the seller and has not yet been received at an AWD Distribution Center  # noqa: E501

        :return: The total_inbound_quantity of this InventorySummary.  # noqa: E501
        :rtype: int
        """
        return self._total_inbound_quantity

    @total_inbound_quantity.setter
    def total_inbound_quantity(self, total_inbound_quantity):
        """Sets the total_inbound_quantity of this InventorySummary.

        Total quantity that is in-transit from the seller and has not yet been received at an AWD Distribution Center  # noqa: E501

        :param total_inbound_quantity: The total_inbound_quantity of this InventorySummary.  # noqa: E501
        :type: int
        """

        self._total_inbound_quantity = total_inbound_quantity

    @property
    def total_onhand_quantity(self):
        """Gets the total_onhand_quantity of this InventorySummary.  # noqa: E501

        Total quantity that is present in AWD distribution centers.  # noqa: E501

        :return: The total_onhand_quantity of this InventorySummary.  # noqa: E501
        :rtype: int
        """
        return self._total_onhand_quantity

    @total_onhand_quantity.setter
    def total_onhand_quantity(self, total_onhand_quantity):
        """Sets the total_onhand_quantity of this InventorySummary.

        Total quantity that is present in AWD distribution centers.  # noqa: E501

        :param total_onhand_quantity: The total_onhand_quantity of this InventorySummary.  # noqa: E501
        :type: int
        """

        self._total_onhand_quantity = total_onhand_quantity

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(InventorySummary, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, InventorySummary):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, InventorySummary):
            return True

        return self.to_dict() != other.to_dict()
