# coding: utf-8

"""
    The Selling Partner API for Amazon External Fulfillment Return Item Processing

    You can use the Amazon External Fulfillment Return Item Processing API to retrieve, track, and process return items through Amazon's External Fulfillment returns management system.

    The version of the OpenAPI document: 2024-09-11
    Contact: marketplaceapitest@amazon.com
    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 MarketplaceChannelDetails(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 = {
        'marketplace_channel': 'MarketplaceChannel',
        'merchant_id': 'str',
        'shipment_id': 'str',
        'customer_order_id': 'str',
        'return_location_id': 'str',
        'channel_sku': 'str',
        'exchange_order_id': 'str',
    }

    attribute_map = {
        'marketplace_channel': 'marketplaceChannel',
        'merchant_id': 'merchantId',
        'shipment_id': 'shipmentId',
        'customer_order_id': 'customerOrderId',
        'return_location_id': 'returnLocationId',
        'channel_sku': 'channelSku',
        'exchange_order_id': 'exchangeOrderId',
    }

    def __init__(self, marketplace_channel=None, merchant_id=None, shipment_id=None, customer_order_id=None, return_location_id=None, channel_sku=None, exchange_order_id=None, _configuration=None):  # noqa: E501
        """MarketplaceChannelDetails - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._marketplace_channel = None
        self._merchant_id = None
        self._shipment_id = None
        self._customer_order_id = None
        self._return_location_id = None
        self._channel_sku = None
        self._exchange_order_id = None
        self.discriminator = None

        if marketplace_channel is not None:
            self.marketplace_channel = marketplace_channel
        if merchant_id is not None:
            self.merchant_id = merchant_id
        if shipment_id is not None:
            self.shipment_id = shipment_id
        if customer_order_id is not None:
            self.customer_order_id = customer_order_id
        if return_location_id is not None:
            self.return_location_id = return_location_id
        if channel_sku is not None:
            self.channel_sku = channel_sku
        if exchange_order_id is not None:
            self.exchange_order_id = exchange_order_id

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


        :return: The marketplace_channel of this MarketplaceChannelDetails.  # noqa: E501
        :rtype: MarketplaceChannel
        """
        return self._marketplace_channel

    @marketplace_channel.setter
    def marketplace_channel(self, marketplace_channel):
        """Sets the marketplace_channel of this MarketplaceChannelDetails.


        :param marketplace_channel: The marketplace_channel of this MarketplaceChannelDetails.  # noqa: E501
        :type: MarketplaceChannel
        """

        self._marketplace_channel = marketplace_channel

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

        The ID of the merchant or seller to whom this return is created in the marketplace.  # noqa: E501

        :return: The merchant_id of this MarketplaceChannelDetails.  # noqa: E501
        :rtype: str
        """
        return self._merchant_id

    @merchant_id.setter
    def merchant_id(self, merchant_id):
        """Sets the merchant_id of this MarketplaceChannelDetails.

        The ID of the merchant or seller to whom this return is created in the marketplace.  # noqa: E501

        :param merchant_id: The merchant_id of this MarketplaceChannelDetails.  # noqa: E501
        :type: str
        """

        self._merchant_id = merchant_id

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

        The marketplace-specific shipment ID.  # noqa: E501

        :return: The shipment_id of this MarketplaceChannelDetails.  # noqa: E501
        :rtype: str
        """
        return self._shipment_id

    @shipment_id.setter
    def shipment_id(self, shipment_id):
        """Sets the shipment_id of this MarketplaceChannelDetails.

        The marketplace-specific shipment ID.  # noqa: E501

        :param shipment_id: The shipment_id of this MarketplaceChannelDetails.  # noqa: E501
        :type: str
        """

        self._shipment_id = shipment_id

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

        The marketplace-specific customer order ID.  # noqa: E501

        :return: The customer_order_id of this MarketplaceChannelDetails.  # noqa: E501
        :rtype: str
        """
        return self._customer_order_id

    @customer_order_id.setter
    def customer_order_id(self, customer_order_id):
        """Sets the customer_order_id of this MarketplaceChannelDetails.

        The marketplace-specific customer order ID.  # noqa: E501

        :param customer_order_id: The customer_order_id of this MarketplaceChannelDetails.  # noqa: E501
        :type: str
        """

        self._customer_order_id = customer_order_id

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

        The Amazon SmartConnect ID of the location to which this return is created.  # noqa: E501

        :return: The return_location_id of this MarketplaceChannelDetails.  # noqa: E501
        :rtype: str
        """
        return self._return_location_id

    @return_location_id.setter
    def return_location_id(self, return_location_id):
        """Sets the return_location_id of this MarketplaceChannelDetails.

        The Amazon SmartConnect ID of the location to which this return is created.  # noqa: E501

        :param return_location_id: The return_location_id of this MarketplaceChannelDetails.  # noqa: E501
        :type: str
        """

        self._return_location_id = return_location_id

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

        The Amazon SmartConnect SKU of the channel.  # noqa: E501

        :return: The channel_sku of this MarketplaceChannelDetails.  # noqa: E501
        :rtype: str
        """
        return self._channel_sku

    @channel_sku.setter
    def channel_sku(self, channel_sku):
        """Sets the channel_sku of this MarketplaceChannelDetails.

        The Amazon SmartConnect SKU of the channel.  # noqa: E501

        :param channel_sku: The channel_sku of this MarketplaceChannelDetails.  # noqa: E501
        :type: str
        """

        self._channel_sku = channel_sku

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

        The Amazon SmartConnect ID of the exchange order.  # noqa: E501

        :return: The exchange_order_id of this MarketplaceChannelDetails.  # noqa: E501
        :rtype: str
        """
        return self._exchange_order_id

    @exchange_order_id.setter
    def exchange_order_id(self, exchange_order_id):
        """Sets the exchange_order_id of this MarketplaceChannelDetails.

        The Amazon SmartConnect ID of the exchange order.  # noqa: E501

        :param exchange_order_id: The exchange_order_id of this MarketplaceChannelDetails.  # noqa: E501
        :type: str
        """

        self._exchange_order_id = exchange_order_id

    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(MarketplaceChannelDetails, 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, MarketplaceChannelDetails):
            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, MarketplaceChannelDetails):
            return True

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