# coding: utf-8

"""
    EDIS public shipping API

    <div class=\"msgbox_important\"><p class=\"msgbox_importantInDiv\" data-mc-autonum=\"&lt;b&gt;&lt;span style=&quot;color: #dd1e31;&quot; class=&quot;mcFormatColor&quot;&gt;Important! &lt;/span&gt;&lt;/b&gt;\"><span class=\"autonumber\"><span><b><span style=\"color: #dd1e31;\" class=\"mcFormatColor\">Important!</span></b></span></span> This method is only available for Greater-China based sellers with an active eDIS account.</p></div><br>This API allows 3rd party developers in the Greater-China area to process package shipping details.  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class ItemRequest(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 = {
        'buyer_id': 'str',
        'buyer_tax_id': 'str',
        'buyer_tax_type': 'str',
        'ebay_collect_and_remit_tax': 'bool',
        'ebay_collect_and_remit_taxes_value': 'str',
        'email': 'str',
        'item_title': 'str',
        'listing_id': 'str',
        'message': 'str',
        'order_id': 'str',
        'order_line_item': 'str',
        'payment_date': 'str',
        'pay_pal_email': 'str',
        'pay_pal_message': 'str',
        'posted_quantity': 'int',
        'site_id': 'int',
        'sku': 'SkuRequest',
        'sold_date': 'str',
        'sold_price': 'Amount',
        'sold_quantity': 'int',
        'transaction_id': 'str'
    }

    attribute_map = {
        'buyer_id': 'buyerId',
        'buyer_tax_id': 'buyerTaxId',
        'buyer_tax_type': 'buyerTaxType',
        'ebay_collect_and_remit_tax': 'ebayCollectAndRemitTax',
        'ebay_collect_and_remit_taxes_value': 'ebayCollectAndRemitTaxesValue',
        'email': 'email',
        'item_title': 'itemTitle',
        'listing_id': 'listingId',
        'message': 'message',
        'order_id': 'orderId',
        'order_line_item': 'orderLineItem',
        'payment_date': 'paymentDate',
        'pay_pal_email': 'payPalEmail',
        'pay_pal_message': 'payPalMessage',
        'posted_quantity': 'postedQuantity',
        'site_id': 'siteId',
        'sku': 'sku',
        'sold_date': 'soldDate',
        'sold_price': 'soldPrice',
        'sold_quantity': 'soldQuantity',
        'transaction_id': 'transactionId'
    }

    def __init__(self, buyer_id=None, buyer_tax_id=None, buyer_tax_type=None, ebay_collect_and_remit_tax=None, ebay_collect_and_remit_taxes_value=None, email=None, item_title=None, listing_id=None, message=None, order_id=None, order_line_item=None, payment_date=None, pay_pal_email=None, pay_pal_message=None, posted_quantity=None, site_id=None, sku=None, sold_date=None, sold_price=None, sold_quantity=None, transaction_id=None):  # noqa: E501
        """ItemRequest - a model defined in Swagger"""  # noqa: E501
        self._buyer_id = None
        self._buyer_tax_id = None
        self._buyer_tax_type = None
        self._ebay_collect_and_remit_tax = None
        self._ebay_collect_and_remit_taxes_value = None
        self._email = None
        self._item_title = None
        self._listing_id = None
        self._message = None
        self._order_id = None
        self._order_line_item = None
        self._payment_date = None
        self._pay_pal_email = None
        self._pay_pal_message = None
        self._posted_quantity = None
        self._site_id = None
        self._sku = None
        self._sold_date = None
        self._sold_price = None
        self._sold_quantity = None
        self._transaction_id = None
        self.discriminator = None
        if buyer_id is not None:
            self.buyer_id = buyer_id
        if buyer_tax_id is not None:
            self.buyer_tax_id = buyer_tax_id
        if buyer_tax_type is not None:
            self.buyer_tax_type = buyer_tax_type
        if ebay_collect_and_remit_tax is not None:
            self.ebay_collect_and_remit_tax = ebay_collect_and_remit_tax
        if ebay_collect_and_remit_taxes_value is not None:
            self.ebay_collect_and_remit_taxes_value = ebay_collect_and_remit_taxes_value
        if email is not None:
            self.email = email
        if item_title is not None:
            self.item_title = item_title
        if listing_id is not None:
            self.listing_id = listing_id
        if message is not None:
            self.message = message
        if order_id is not None:
            self.order_id = order_id
        if order_line_item is not None:
            self.order_line_item = order_line_item
        if payment_date is not None:
            self.payment_date = payment_date
        if pay_pal_email is not None:
            self.pay_pal_email = pay_pal_email
        if pay_pal_message is not None:
            self.pay_pal_message = pay_pal_message
        if posted_quantity is not None:
            self.posted_quantity = posted_quantity
        if site_id is not None:
            self.site_id = site_id
        if sku is not None:
            self.sku = sku
        if sold_date is not None:
            self.sold_date = sold_date
        if sold_price is not None:
            self.sold_price = sold_price
        if sold_quantity is not None:
            self.sold_quantity = sold_quantity
        if transaction_id is not None:
            self.transaction_id = transaction_id

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

        The buyer's eBay user ID.  # noqa: E501

        :return: The buyer_id of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._buyer_id

    @buyer_id.setter
    def buyer_id(self, buyer_id):
        """Sets the buyer_id of this ItemRequest.

        The buyer's eBay user ID.  # noqa: E501

        :param buyer_id: The buyer_id of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._buyer_id = buyer_id

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

        The tax ID for the buyer. The type of Tax ID is specified in the <b>buyerTaxIdType</b> field.  # noqa: E501

        :return: The buyer_tax_id of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._buyer_tax_id

    @buyer_tax_id.setter
    def buyer_tax_id(self, buyer_tax_id):
        """Sets the buyer_tax_id of this ItemRequest.

        The tax ID for the buyer. The type of Tax ID is specified in the <b>buyerTaxIdType</b> field.  # noqa: E501

        :param buyer_tax_id: The buyer_tax_id of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._buyer_tax_id = buyer_tax_id

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

        The type of tax ID that was supplied by the buyer during the checkout process.  # noqa: E501

        :return: The buyer_tax_type of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._buyer_tax_type

    @buyer_tax_type.setter
    def buyer_tax_type(self, buyer_tax_type):
        """Sets the buyer_tax_type of this ItemRequest.

        The type of tax ID that was supplied by the buyer during the checkout process.  # noqa: E501

        :param buyer_tax_type: The buyer_tax_type of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._buyer_tax_type = buyer_tax_type

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

        This boolean indicates if the corresponding line item is subject to a 'Collect and Remit' tax that eBay will collect and remit to the proper taxing authority on the buyer's behalf.  # noqa: E501

        :return: The ebay_collect_and_remit_tax of this ItemRequest.  # noqa: E501
        :rtype: bool
        """
        return self._ebay_collect_and_remit_tax

    @ebay_collect_and_remit_tax.setter
    def ebay_collect_and_remit_tax(self, ebay_collect_and_remit_tax):
        """Sets the ebay_collect_and_remit_tax of this ItemRequest.

        This boolean indicates if the corresponding line item is subject to a 'Collect and Remit' tax that eBay will collect and remit to the proper taxing authority on the buyer's behalf.  # noqa: E501

        :param ebay_collect_and_remit_tax: The ebay_collect_and_remit_tax of this ItemRequest.  # noqa: E501
        :type: bool
        """

        self._ebay_collect_and_remit_tax = ebay_collect_and_remit_tax

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

        The value of the 'Collect and Remit' tax for the order that the line item belongs to.  # noqa: E501

        :return: The ebay_collect_and_remit_taxes_value of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._ebay_collect_and_remit_taxes_value

    @ebay_collect_and_remit_taxes_value.setter
    def ebay_collect_and_remit_taxes_value(self, ebay_collect_and_remit_taxes_value):
        """Sets the ebay_collect_and_remit_taxes_value of this ItemRequest.

        The value of the 'Collect and Remit' tax for the order that the line item belongs to.  # noqa: E501

        :param ebay_collect_and_remit_taxes_value: The ebay_collect_and_remit_taxes_value of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._ebay_collect_and_remit_taxes_value = ebay_collect_and_remit_taxes_value

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

        The buyer's email address.  # noqa: E501

        :return: The email of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._email

    @email.setter
    def email(self, email):
        """Sets the email of this ItemRequest.

        The buyer's email address.  # noqa: E501

        :param email: The email of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._email = email

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

        The title of the listing.  # noqa: E501

        :return: The item_title of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._item_title

    @item_title.setter
    def item_title(self, item_title):
        """Sets the item_title of this ItemRequest.

        The title of the listing.  # noqa: E501

        :param item_title: The item_title of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._item_title = item_title

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

        The unique identifier of the eBay listing.<br><br><span class=\"tablenote\"><b>Note:</b> Either a <b>listingId</b> and <b>transactionId</b> pair, or an <b>orderLineItem</b> field is required to identify an order line item.</span>  # noqa: E501

        :return: The listing_id of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._listing_id

    @listing_id.setter
    def listing_id(self, listing_id):
        """Sets the listing_id of this ItemRequest.

        The unique identifier of the eBay listing.<br><br><span class=\"tablenote\"><b>Note:</b> Either a <b>listingId</b> and <b>transactionId</b> pair, or an <b>orderLineItem</b> field is required to identify an order line item.</span>  # noqa: E501

        :param listing_id: The listing_id of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._listing_id = listing_id

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

        A message from the seller to the buyer.  # noqa: E501

        :return: The message of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._message

    @message.setter
    def message(self, message):
        """Sets the message of this ItemRequest.

        A message from the seller to the buyer.  # noqa: E501

        :param message: The message of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._message = message

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

        The unique identifier of the eBay order that the line item belongs to.  # noqa: E501

        :return: The order_id of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._order_id

    @order_id.setter
    def order_id(self, order_id):
        """Sets the order_id of this ItemRequest.

        The unique identifier of the eBay order that the line item belongs to.  # noqa: E501

        :param order_id: The order_id of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._order_id = order_id

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

        The unique identifier of the line item.<br><br><span class=\"tablenote\"><b>Note:</b> Either a <b>listingId</b> and <b>transactionId</b> pair, or an <b>orderLineItem</b> field is required to identify an order line item.<span>  # noqa: E501

        :return: The order_line_item of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._order_line_item

    @order_line_item.setter
    def order_line_item(self, order_line_item):
        """Sets the order_line_item of this ItemRequest.

        The unique identifier of the line item.<br><br><span class=\"tablenote\"><b>Note:</b> Either a <b>listingId</b> and <b>transactionId</b> pair, or an <b>orderLineItem</b> field is required to identify an order line item.<span>  # noqa: E501

        :param order_line_item: The order_line_item of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._order_line_item = order_line_item

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

        The date and time the buyer pays for the order.<br><br><b>Format:</b> <code>YYYY-MM-DDTHH:MM:SS.SSSZ</code>  # noqa: E501

        :return: The payment_date of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._payment_date

    @payment_date.setter
    def payment_date(self, payment_date):
        """Sets the payment_date of this ItemRequest.

        The date and time the buyer pays for the order.<br><br><b>Format:</b> <code>YYYY-MM-DDTHH:MM:SS.SSSZ</code>  # noqa: E501

        :param payment_date: The payment_date of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._payment_date = payment_date

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

        The buyer's PayPal email address.  # noqa: E501

        :return: The pay_pal_email of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._pay_pal_email

    @pay_pal_email.setter
    def pay_pal_email(self, pay_pal_email):
        """Sets the pay_pal_email of this ItemRequest.

        The buyer's PayPal email address.  # noqa: E501

        :param pay_pal_email: The pay_pal_email of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._pay_pal_email = pay_pal_email

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

        The buyer's PayPal message.  # noqa: E501

        :return: The pay_pal_message of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._pay_pal_message

    @pay_pal_message.setter
    def pay_pal_message(self, pay_pal_message):
        """Sets the pay_pal_message of this ItemRequest.

        The buyer's PayPal message.  # noqa: E501

        :param pay_pal_message: The pay_pal_message of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._pay_pal_message = pay_pal_message

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

        The quantity of the line item that will be shipped with the package. This value can differ from the order quantity in the case of a combined or split shipment.<br><br><b>Min</b>: 1<br><br><b>Max</b>: 999  # noqa: E501

        :return: The posted_quantity of this ItemRequest.  # noqa: E501
        :rtype: int
        """
        return self._posted_quantity

    @posted_quantity.setter
    def posted_quantity(self, posted_quantity):
        """Sets the posted_quantity of this ItemRequest.

        The quantity of the line item that will be shipped with the package. This value can differ from the order quantity in the case of a combined or split shipment.<br><br><b>Min</b>: 1<br><br><b>Max</b>: 999  # noqa: E501

        :param posted_quantity: The posted_quantity of this ItemRequest.  # noqa: E501
        :type: int
        """

        self._posted_quantity = posted_quantity

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

        The unique identifier of the eBay site in which the order occurred.  # noqa: E501

        :return: The site_id of this ItemRequest.  # noqa: E501
        :rtype: int
        """
        return self._site_id

    @site_id.setter
    def site_id(self, site_id):
        """Sets the site_id of this ItemRequest.

        The unique identifier of the eBay site in which the order occurred.  # noqa: E501

        :param site_id: The site_id of this ItemRequest.  # noqa: E501
        :type: int
        """

        self._site_id = site_id

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


        :return: The sku of this ItemRequest.  # noqa: E501
        :rtype: SkuRequest
        """
        return self._sku

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


        :param sku: The sku of this ItemRequest.  # noqa: E501
        :type: SkuRequest
        """

        self._sku = sku

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

        The date the item was sold.<br><br><b>Format</b>: <code>YYYY-MM-DDTHH:MM:SS.SSSZ</code>  # noqa: E501

        :return: The sold_date of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._sold_date

    @sold_date.setter
    def sold_date(self, sold_date):
        """Sets the sold_date of this ItemRequest.

        The date the item was sold.<br><br><b>Format</b>: <code>YYYY-MM-DDTHH:MM:SS.SSSZ</code>  # noqa: E501

        :param sold_date: The sold_date of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._sold_date = sold_date

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


        :return: The sold_price of this ItemRequest.  # noqa: E501
        :rtype: Amount
        """
        return self._sold_price

    @sold_price.setter
    def sold_price(self, sold_price):
        """Sets the sold_price of this ItemRequest.


        :param sold_price: The sold_price of this ItemRequest.  # noqa: E501
        :type: Amount
        """

        self._sold_price = sold_price

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

        The quantity of the line item that was sold.  # noqa: E501

        :return: The sold_quantity of this ItemRequest.  # noqa: E501
        :rtype: int
        """
        return self._sold_quantity

    @sold_quantity.setter
    def sold_quantity(self, sold_quantity):
        """Sets the sold_quantity of this ItemRequest.

        The quantity of the line item that was sold.  # noqa: E501

        :param sold_quantity: The sold_quantity of this ItemRequest.  # noqa: E501
        :type: int
        """

        self._sold_quantity = sold_quantity

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

        The unique identifier of the monetary transaction.<br><br><span class=\"tablenote\"><b>Note:</b> Either a <b>listingId</b> and <b>transactionId</b> pair, or an <b>orderLineItem</b> field is required to identify an order line item.</span>  # noqa: E501

        :return: The transaction_id of this ItemRequest.  # noqa: E501
        :rtype: str
        """
        return self._transaction_id

    @transaction_id.setter
    def transaction_id(self, transaction_id):
        """Sets the transaction_id of this ItemRequest.

        The unique identifier of the monetary transaction.<br><br><span class=\"tablenote\"><b>Note:</b> Either a <b>listingId</b> and <b>transactionId</b> pair, or an <b>orderLineItem</b> field is required to identify an order line item.</span>  # noqa: E501

        :param transaction_id: The transaction_id of this ItemRequest.  # noqa: E501
        :type: str
        """

        self._transaction_id = transaction_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(ItemRequest, 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, ItemRequest):
            return False

        return self.__dict__ == other.__dict__

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