# coding: utf-8

"""
    Selling Partner API for Replenishment

    The Selling Partner API for Replenishment (Replenishment API) provides programmatic access to replenishment program metrics and offers. These programs provide recurring delivery of any replenishable item at a frequency chosen by the customer.  The Replenishment API is available worldwide wherever Amazon Subscribe & Save is available or is supported. The API is available to vendors and FBA selling partners.

    The version of the OpenAPI document: 2022-11-07
    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 ListOfferMetricsResponseOffer(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 = {
        'asin': 'str',
        'not_delivered_due_to_oos': 'float',
        'total_subscriptions_revenue': 'float',
        'shipped_subscription_units': 'float',
        'active_subscriptions': 'float',
        'revenue_penetration': 'float',
        'lost_revenue_due_to_oos': 'float',
        'coupons_revenue_penetration': 'float',
        'share_of_coupon_subscriptions': 'float',
        'next30_day_total_subscriptions_revenue': 'float',
        'next60_day_total_subscriptions_revenue': 'float',
        'next90_day_total_subscriptions_revenue': 'float',
        'next30_day_shipped_subscription_units': 'float',
        'next60_day_shipped_subscription_units': 'float',
        'next90_day_shipped_subscription_units': 'float',
        'time_interval': 'TimeInterval',
        'currency_code': 'str',
    }

    attribute_map = {
        'asin': 'asin',
        'not_delivered_due_to_oos': 'notDeliveredDueToOOS',
        'total_subscriptions_revenue': 'totalSubscriptionsRevenue',
        'shipped_subscription_units': 'shippedSubscriptionUnits',
        'active_subscriptions': 'activeSubscriptions',
        'revenue_penetration': 'revenuePenetration',
        'lost_revenue_due_to_oos': 'lostRevenueDueToOOS',
        'coupons_revenue_penetration': 'couponsRevenuePenetration',
        'share_of_coupon_subscriptions': 'shareOfCouponSubscriptions',
        'next30_day_total_subscriptions_revenue': 'next30DayTotalSubscriptionsRevenue',
        'next60_day_total_subscriptions_revenue': 'next60DayTotalSubscriptionsRevenue',
        'next90_day_total_subscriptions_revenue': 'next90DayTotalSubscriptionsRevenue',
        'next30_day_shipped_subscription_units': 'next30DayShippedSubscriptionUnits',
        'next60_day_shipped_subscription_units': 'next60DayShippedSubscriptionUnits',
        'next90_day_shipped_subscription_units': 'next90DayShippedSubscriptionUnits',
        'time_interval': 'timeInterval',
        'currency_code': 'currencyCode',
    }

    def __init__(self, asin=None, not_delivered_due_to_oos=None, total_subscriptions_revenue=None, shipped_subscription_units=None, active_subscriptions=None, revenue_penetration=None, lost_revenue_due_to_oos=None, coupons_revenue_penetration=None, share_of_coupon_subscriptions=None, next30_day_total_subscriptions_revenue=None, next60_day_total_subscriptions_revenue=None, next90_day_total_subscriptions_revenue=None, next30_day_shipped_subscription_units=None, next60_day_shipped_subscription_units=None, next90_day_shipped_subscription_units=None, time_interval=None, currency_code=None, _configuration=None):  # noqa: E501
        """ListOfferMetricsResponseOffer - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._asin = None
        self._not_delivered_due_to_oos = None
        self._total_subscriptions_revenue = None
        self._shipped_subscription_units = None
        self._active_subscriptions = None
        self._revenue_penetration = None
        self._lost_revenue_due_to_oos = None
        self._coupons_revenue_penetration = None
        self._share_of_coupon_subscriptions = None
        self._next30_day_total_subscriptions_revenue = None
        self._next60_day_total_subscriptions_revenue = None
        self._next90_day_total_subscriptions_revenue = None
        self._next30_day_shipped_subscription_units = None
        self._next60_day_shipped_subscription_units = None
        self._next90_day_shipped_subscription_units = None
        self._time_interval = None
        self._currency_code = None
        self.discriminator = None

        if asin is not None:
            self.asin = asin
        if not_delivered_due_to_oos is not None:
            self.not_delivered_due_to_oos = not_delivered_due_to_oos
        if total_subscriptions_revenue is not None:
            self.total_subscriptions_revenue = total_subscriptions_revenue
        if shipped_subscription_units is not None:
            self.shipped_subscription_units = shipped_subscription_units
        if active_subscriptions is not None:
            self.active_subscriptions = active_subscriptions
        if revenue_penetration is not None:
            self.revenue_penetration = revenue_penetration
        if lost_revenue_due_to_oos is not None:
            self.lost_revenue_due_to_oos = lost_revenue_due_to_oos
        if coupons_revenue_penetration is not None:
            self.coupons_revenue_penetration = coupons_revenue_penetration
        if share_of_coupon_subscriptions is not None:
            self.share_of_coupon_subscriptions = share_of_coupon_subscriptions
        if next30_day_total_subscriptions_revenue is not None:
            self.next30_day_total_subscriptions_revenue = next30_day_total_subscriptions_revenue
        if next60_day_total_subscriptions_revenue is not None:
            self.next60_day_total_subscriptions_revenue = next60_day_total_subscriptions_revenue
        if next90_day_total_subscriptions_revenue is not None:
            self.next90_day_total_subscriptions_revenue = next90_day_total_subscriptions_revenue
        if next30_day_shipped_subscription_units is not None:
            self.next30_day_shipped_subscription_units = next30_day_shipped_subscription_units
        if next60_day_shipped_subscription_units is not None:
            self.next60_day_shipped_subscription_units = next60_day_shipped_subscription_units
        if next90_day_shipped_subscription_units is not None:
            self.next90_day_shipped_subscription_units = next90_day_shipped_subscription_units
        if time_interval is not None:
            self.time_interval = time_interval
        if currency_code is not None:
            self.currency_code = currency_code

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

        The Amazon Standard Identification Number (ASIN).  # noqa: E501

        :return: The asin of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: str
        """
        return self._asin

    @asin.setter
    def asin(self, asin):
        """Sets the asin of this ListOfferMetricsResponseOffer.

        The Amazon Standard Identification Number (ASIN).  # noqa: E501

        :param asin: The asin of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: str
        """

        self._asin = asin

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

        The percentage of items that were not shipped out of the total shipped units over a period of time due to being out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The not_delivered_due_to_oos of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._not_delivered_due_to_oos

    @not_delivered_due_to_oos.setter
    def not_delivered_due_to_oos(self, not_delivered_due_to_oos):
        """Sets the not_delivered_due_to_oos of this ListOfferMetricsResponseOffer.

        The percentage of items that were not shipped out of the total shipped units over a period of time due to being out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param not_delivered_due_to_oos: The not_delivered_due_to_oos of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                not_delivered_due_to_oos is not None and not_delivered_due_to_oos > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `not_delivered_due_to_oos`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                not_delivered_due_to_oos is not None and not_delivered_due_to_oos < 0):  # noqa: E501
            raise ValueError("Invalid value for `not_delivered_due_to_oos`, must be a value greater than or equal to `0`")  # noqa: E501

        self._not_delivered_due_to_oos = not_delivered_due_to_oos

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

        The revenue generated from subscriptions over a period of time. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._total_subscriptions_revenue

    @total_subscriptions_revenue.setter
    def total_subscriptions_revenue(self, total_subscriptions_revenue):
        """Sets the total_subscriptions_revenue of this ListOfferMetricsResponseOffer.

        The revenue generated from subscriptions over a period of time. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param total_subscriptions_revenue: The total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                total_subscriptions_revenue is not None and total_subscriptions_revenue < 0):  # noqa: E501
            raise ValueError("Invalid value for `total_subscriptions_revenue`, must be a value greater than or equal to `0`")  # noqa: E501

        self._total_subscriptions_revenue = total_subscriptions_revenue

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

        The number of units shipped to the subscribers over a period of time. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._shipped_subscription_units

    @shipped_subscription_units.setter
    def shipped_subscription_units(self, shipped_subscription_units):
        """Sets the shipped_subscription_units of this ListOfferMetricsResponseOffer.

        The number of units shipped to the subscribers over a period of time. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param shipped_subscription_units: The shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                shipped_subscription_units is not None and shipped_subscription_units < 0):  # noqa: E501
            raise ValueError("Invalid value for `shipped_subscription_units`, must be a value greater than or equal to `0`")  # noqa: E501

        self._shipped_subscription_units = shipped_subscription_units

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

        The number of active subscriptions present at the end of the period. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The active_subscriptions of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._active_subscriptions

    @active_subscriptions.setter
    def active_subscriptions(self, active_subscriptions):
        """Sets the active_subscriptions of this ListOfferMetricsResponseOffer.

        The number of active subscriptions present at the end of the period. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param active_subscriptions: The active_subscriptions of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                active_subscriptions is not None and active_subscriptions < 0):  # noqa: E501
            raise ValueError("Invalid value for `active_subscriptions`, must be a value greater than or equal to `0`")  # noqa: E501

        self._active_subscriptions = active_subscriptions

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

        The percentage of total program revenue out of total product revenue. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_penetration of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._revenue_penetration

    @revenue_penetration.setter
    def revenue_penetration(self, revenue_penetration):
        """Sets the revenue_penetration of this ListOfferMetricsResponseOffer.

        The percentage of total program revenue out of total product revenue. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_penetration: The revenue_penetration of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_penetration is not None and revenue_penetration > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                revenue_penetration is not None and revenue_penetration < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_penetration = revenue_penetration

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

        The revenue that would have been generated had there not been out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The lost_revenue_due_to_oos of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._lost_revenue_due_to_oos

    @lost_revenue_due_to_oos.setter
    def lost_revenue_due_to_oos(self, lost_revenue_due_to_oos):
        """Sets the lost_revenue_due_to_oos of this ListOfferMetricsResponseOffer.

        The revenue that would have been generated had there not been out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param lost_revenue_due_to_oos: The lost_revenue_due_to_oos of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                lost_revenue_due_to_oos is not None and lost_revenue_due_to_oos < 0):  # noqa: E501
            raise ValueError("Invalid value for `lost_revenue_due_to_oos`, must be a value greater than or equal to `0`")  # noqa: E501

        self._lost_revenue_due_to_oos = lost_revenue_due_to_oos

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

        The percentage of revenue from ASINs with coupons out of total revenue from all ASINs. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The coupons_revenue_penetration of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._coupons_revenue_penetration

    @coupons_revenue_penetration.setter
    def coupons_revenue_penetration(self, coupons_revenue_penetration):
        """Sets the coupons_revenue_penetration of this ListOfferMetricsResponseOffer.

        The percentage of revenue from ASINs with coupons out of total revenue from all ASINs. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param coupons_revenue_penetration: The coupons_revenue_penetration of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                coupons_revenue_penetration is not None and coupons_revenue_penetration > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `coupons_revenue_penetration`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                coupons_revenue_penetration is not None and coupons_revenue_penetration < 0):  # noqa: E501
            raise ValueError("Invalid value for `coupons_revenue_penetration`, must be a value greater than or equal to `0`")  # noqa: E501

        self._coupons_revenue_penetration = coupons_revenue_penetration

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

        The percentage of new subscriptions acquired through coupons. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The share_of_coupon_subscriptions of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._share_of_coupon_subscriptions

    @share_of_coupon_subscriptions.setter
    def share_of_coupon_subscriptions(self, share_of_coupon_subscriptions):
        """Sets the share_of_coupon_subscriptions of this ListOfferMetricsResponseOffer.

        The percentage of new subscriptions acquired through coupons. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param share_of_coupon_subscriptions: The share_of_coupon_subscriptions of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                share_of_coupon_subscriptions is not None and share_of_coupon_subscriptions > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `share_of_coupon_subscriptions`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                share_of_coupon_subscriptions is not None and share_of_coupon_subscriptions < 0):  # noqa: E501
            raise ValueError("Invalid value for `share_of_coupon_subscriptions`, must be a value greater than or equal to `0`")  # noqa: E501

        self._share_of_coupon_subscriptions = share_of_coupon_subscriptions

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

        The forecasted total subscription revenue for the next 30 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :return: The next30_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._next30_day_total_subscriptions_revenue

    @next30_day_total_subscriptions_revenue.setter
    def next30_day_total_subscriptions_revenue(self, next30_day_total_subscriptions_revenue):
        """Sets the next30_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.

        The forecasted total subscription revenue for the next 30 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :param next30_day_total_subscriptions_revenue: The next30_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                next30_day_total_subscriptions_revenue is not None and next30_day_total_subscriptions_revenue < 0):  # noqa: E501
            raise ValueError("Invalid value for `next30_day_total_subscriptions_revenue`, must be a value greater than or equal to `0`")  # noqa: E501

        self._next30_day_total_subscriptions_revenue = next30_day_total_subscriptions_revenue

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

        The forecasted total subscription revenue for the next 60 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :return: The next60_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._next60_day_total_subscriptions_revenue

    @next60_day_total_subscriptions_revenue.setter
    def next60_day_total_subscriptions_revenue(self, next60_day_total_subscriptions_revenue):
        """Sets the next60_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.

        The forecasted total subscription revenue for the next 60 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :param next60_day_total_subscriptions_revenue: The next60_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                next60_day_total_subscriptions_revenue is not None and next60_day_total_subscriptions_revenue < 0):  # noqa: E501
            raise ValueError("Invalid value for `next60_day_total_subscriptions_revenue`, must be a value greater than or equal to `0`")  # noqa: E501

        self._next60_day_total_subscriptions_revenue = next60_day_total_subscriptions_revenue

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

        The forecasted total subscription revenue for the next 90 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :return: The next90_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._next90_day_total_subscriptions_revenue

    @next90_day_total_subscriptions_revenue.setter
    def next90_day_total_subscriptions_revenue(self, next90_day_total_subscriptions_revenue):
        """Sets the next90_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.

        The forecasted total subscription revenue for the next 90 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :param next90_day_total_subscriptions_revenue: The next90_day_total_subscriptions_revenue of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                next90_day_total_subscriptions_revenue is not None and next90_day_total_subscriptions_revenue < 0):  # noqa: E501
            raise ValueError("Invalid value for `next90_day_total_subscriptions_revenue`, must be a value greater than or equal to `0`")  # noqa: E501

        self._next90_day_total_subscriptions_revenue = next90_day_total_subscriptions_revenue

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

        The forecasted shipped subscription units for the next 30 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :return: The next30_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._next30_day_shipped_subscription_units

    @next30_day_shipped_subscription_units.setter
    def next30_day_shipped_subscription_units(self, next30_day_shipped_subscription_units):
        """Sets the next30_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.

        The forecasted shipped subscription units for the next 30 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :param next30_day_shipped_subscription_units: The next30_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                next30_day_shipped_subscription_units is not None and next30_day_shipped_subscription_units < 0):  # noqa: E501
            raise ValueError("Invalid value for `next30_day_shipped_subscription_units`, must be a value greater than or equal to `0`")  # noqa: E501

        self._next30_day_shipped_subscription_units = next30_day_shipped_subscription_units

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

        The forecasted shipped subscription units for the next 60 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :return: The next60_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._next60_day_shipped_subscription_units

    @next60_day_shipped_subscription_units.setter
    def next60_day_shipped_subscription_units(self, next60_day_shipped_subscription_units):
        """Sets the next60_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.

        The forecasted shipped subscription units for the next 60 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :param next60_day_shipped_subscription_units: The next60_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                next60_day_shipped_subscription_units is not None and next60_day_shipped_subscription_units < 0):  # noqa: E501
            raise ValueError("Invalid value for `next60_day_shipped_subscription_units`, must be a value greater than or equal to `0`")  # noqa: E501

        self._next60_day_shipped_subscription_units = next60_day_shipped_subscription_units

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

        The forecasted shipped subscription units for the next 90 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :return: The next90_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: float
        """
        return self._next90_day_shipped_subscription_units

    @next90_day_shipped_subscription_units.setter
    def next90_day_shipped_subscription_units(self, next90_day_shipped_subscription_units):
        """Sets the next90_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.

        The forecasted shipped subscription units for the next 90 days. Applicable to FORECAST timePeriodType.  # noqa: E501

        :param next90_day_shipped_subscription_units: The next90_day_shipped_subscription_units of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                next90_day_shipped_subscription_units is not None and next90_day_shipped_subscription_units < 0):  # noqa: E501
            raise ValueError("Invalid value for `next90_day_shipped_subscription_units`, must be a value greater than or equal to `0`")  # noqa: E501

        self._next90_day_shipped_subscription_units = next90_day_shipped_subscription_units

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


        :return: The time_interval of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: TimeInterval
        """
        return self._time_interval

    @time_interval.setter
    def time_interval(self, time_interval):
        """Sets the time_interval of this ListOfferMetricsResponseOffer.


        :param time_interval: The time_interval of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: TimeInterval
        """

        self._time_interval = time_interval

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

        The currency code in ISO 4217 format.  # noqa: E501

        :return: The currency_code of this ListOfferMetricsResponseOffer.  # noqa: E501
        :rtype: str
        """
        return self._currency_code

    @currency_code.setter
    def currency_code(self, currency_code):
        """Sets the currency_code of this ListOfferMetricsResponseOffer.

        The currency code in ISO 4217 format.  # noqa: E501

        :param currency_code: The currency_code of this ListOfferMetricsResponseOffer.  # noqa: E501
        :type: str
        """

        self._currency_code = currency_code

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

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