# coding: utf-8

"""
    Yahoo!広告 検索広告 API リファレンス / Yahoo! JAPAN Ads Search Ads API Reference

    <div lang=\"ja\">Yahoo!広告 検索広告 APIのWebサービスについて説明します。</div> <div lang=\"en\">Search Ads API Web Services supported in Yahoo! JAPAN Ads API.</div> <div><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-search-api-documents/blob/master/design/v12/Route.yaml\">OpenAPI Specification</a></div> <div lang=\"ja\"><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-search-api-documents/blob/master/bestpractice/ja\">Best Practice</a></div> <div lang=\"en\"><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-search-api-documents/blob/master/bestpractice/en\">Best Practice</a></div>   # noqa: E501

    The version of the OpenAPI document: v12
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from yahoo_search_api_v12.configuration import Configuration


class CampaignServiceBudget(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'amount': 'int',
        'campaign_budget_id': 'int',
        'campaign_budget_name': 'str'
    }

    attribute_map = {
        'amount': 'amount',
        'campaign_budget_id': 'campaignBudgetId',
        'campaign_budget_name': 'campaignBudgetName'
    }

    def __init__(self, amount=None, campaign_budget_id=None, campaign_budget_name=None, local_vars_configuration=None):  # noqa: E501
        """CampaignServiceBudget - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._amount = None
        self._campaign_budget_id = None
        self._campaign_budget_name = None
        self.discriminator = None

        self.amount = amount
        self.campaign_budget_id = campaign_budget_id
        self.campaign_budget_name = campaign_budget_name

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

        <div lang=\"ja\">1日単位のキャンペーン予算利用金額です。<br> ADDおよびSET時、個別予算を設定する場合、このフィールドは必須となり、共有予算を設定する場合、設定不可となります。また、campaignBudgetIdと同時に設定することはできません。</div> <div lang=\"en\">Amount of budget of Campaign.<br> In ADD and SET operation, this field is required when setting individual budgets, and is not allowed when setting shared budgets. This field cannot be set at the same time as campaignBudgetId.</div>   # noqa: E501

        :return: The amount of this CampaignServiceBudget.  # noqa: E501
        :rtype: int
        """
        return self._amount

    @amount.setter
    def amount(self, amount):
        """Sets the amount of this CampaignServiceBudget.

        <div lang=\"ja\">1日単位のキャンペーン予算利用金額です。<br> ADDおよびSET時、個別予算を設定する場合、このフィールドは必須となり、共有予算を設定する場合、設定不可となります。また、campaignBudgetIdと同時に設定することはできません。</div> <div lang=\"en\">Amount of budget of Campaign.<br> In ADD and SET operation, this field is required when setting individual budgets, and is not allowed when setting shared budgets. This field cannot be set at the same time as campaignBudgetId.</div>   # noqa: E501

        :param amount: The amount of this CampaignServiceBudget.  # noqa: E501
        :type: int
        """

        self._amount = amount

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

        <div lang=\"ja\">共有予算IDです。<br> ※現在、こちらのフィールドは利用できません。<br> ADDおよびSET時、個別予算を設定する場合、このフィールドは設定不可となり、共有予算を設定する場合、必須となります。また、amountと同時に設定することはできません。</div> <div lang=\"en\">CampaignBudget ID.<br> *Currently this field is not available.<br> In ADD and SET operation, this field is not allowed when setting individual budgets, and is required when setting shared budgets. This field cannot be set at the same time as amount.</div>   # noqa: E501

        :return: The campaign_budget_id of this CampaignServiceBudget.  # noqa: E501
        :rtype: int
        """
        return self._campaign_budget_id

    @campaign_budget_id.setter
    def campaign_budget_id(self, campaign_budget_id):
        """Sets the campaign_budget_id of this CampaignServiceBudget.

        <div lang=\"ja\">共有予算IDです。<br> ※現在、こちらのフィールドは利用できません。<br> ADDおよびSET時、個別予算を設定する場合、このフィールドは設定不可となり、共有予算を設定する場合、必須となります。また、amountと同時に設定することはできません。</div> <div lang=\"en\">CampaignBudget ID.<br> *Currently this field is not available.<br> In ADD and SET operation, this field is not allowed when setting individual budgets, and is required when setting shared budgets. This field cannot be set at the same time as amount.</div>   # noqa: E501

        :param campaign_budget_id: The campaign_budget_id of this CampaignServiceBudget.  # noqa: E501
        :type: int
        """

        self._campaign_budget_id = campaign_budget_id

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

        <div lang=\"ja\">共有予算名です。<br> ※現在、こちらのフィールドは利用できません。<br> ADDおよびSET時、このフィールドは無視されます。</div> <div lang=\"en\">CampaignBudget name.<br> *Currently this field is not available.<br> This field will be ignored in ADD and SET operation.</div>   # noqa: E501

        :return: The campaign_budget_name of this CampaignServiceBudget.  # noqa: E501
        :rtype: str
        """
        return self._campaign_budget_name

    @campaign_budget_name.setter
    def campaign_budget_name(self, campaign_budget_name):
        """Sets the campaign_budget_name of this CampaignServiceBudget.

        <div lang=\"ja\">共有予算名です。<br> ※現在、こちらのフィールドは利用できません。<br> ADDおよびSET時、このフィールドは無視されます。</div> <div lang=\"en\">CampaignBudget name.<br> *Currently this field is not available.<br> This field will be ignored in ADD and SET operation.</div>   # noqa: E501

        :param campaign_budget_name: The campaign_budget_name of this CampaignServiceBudget.  # noqa: E501
        :type: str
        """

        self._campaign_budget_name = campaign_budget_name

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

        for attr, _ in six.iteritems(self.openapi_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

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

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