# coding: utf-8

"""
    Billingo API v3

    This is a Billingo API v3 documentation. Our API based on REST software architectural style. API has resource-oriented URLs, accepts JSON-encoded request bodies and returns JSON-encoded responses. To use this API you have to generate a new API key on our [site](https://app.billingo.hu/api-key). After that, you can test your API key on this page.  # noqa: E501

    OpenAPI spec version: 3.0.14
    Contact: hello@billingo.hu
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class SpendingListItem(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 = {
        'id': 'int',
        'organization_id': 'int',
        'category': 'Category',
        'paid_at': 'date',
        'fulfillment_date': 'date',
        'partner': 'SpendingPartner',
        'invoice_number': 'str',
        'currency': 'Currency',
        'conversion_rate': 'float',
        'total_gross': 'float',
        'total_gross_local': 'float',
        'total_vat_amount': 'float',
        'total_vat_amount_local': 'float',
        'invoice_date': 'date',
        'due_date': 'date',
        'payment_method': 'SpendingPaymentMethod',
        'comment': 'str',
        'is_created_by_nav': 'bool'
    }

    attribute_map = {
        'id': 'id',
        'organization_id': 'organization_id',
        'category': 'category',
        'paid_at': 'paid_at',
        'fulfillment_date': 'fulfillment_date',
        'partner': 'partner',
        'invoice_number': 'invoice_number',
        'currency': 'currency',
        'conversion_rate': 'conversion_rate',
        'total_gross': 'total_gross',
        'total_gross_local': 'total_gross_local',
        'total_vat_amount': 'total_vat_amount',
        'total_vat_amount_local': 'total_vat_amount_local',
        'invoice_date': 'invoice_date',
        'due_date': 'due_date',
        'payment_method': 'payment_method',
        'comment': 'comment',
        'is_created_by_nav': 'is_created_by_nav'
    }

    def __init__(self, id=None, organization_id=None, category=None, paid_at=None, fulfillment_date=None, partner=None, invoice_number=None, currency=None, conversion_rate=None, total_gross=None, total_gross_local=None, total_vat_amount=None, total_vat_amount_local=None, invoice_date=None, due_date=None, payment_method=None, comment=None, is_created_by_nav=None):  # noqa: E501
        """SpendingListItem - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._organization_id = None
        self._category = None
        self._paid_at = None
        self._fulfillment_date = None
        self._partner = None
        self._invoice_number = None
        self._currency = None
        self._conversion_rate = None
        self._total_gross = None
        self._total_gross_local = None
        self._total_vat_amount = None
        self._total_vat_amount_local = None
        self._invoice_date = None
        self._due_date = None
        self._payment_method = None
        self._comment = None
        self._is_created_by_nav = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if organization_id is not None:
            self.organization_id = organization_id
        if category is not None:
            self.category = category
        if paid_at is not None:
            self.paid_at = paid_at
        if fulfillment_date is not None:
            self.fulfillment_date = fulfillment_date
        if partner is not None:
            self.partner = partner
        if invoice_number is not None:
            self.invoice_number = invoice_number
        if currency is not None:
            self.currency = currency
        if conversion_rate is not None:
            self.conversion_rate = conversion_rate
        if total_gross is not None:
            self.total_gross = total_gross
        if total_gross_local is not None:
            self.total_gross_local = total_gross_local
        if total_vat_amount is not None:
            self.total_vat_amount = total_vat_amount
        if total_vat_amount_local is not None:
            self.total_vat_amount_local = total_vat_amount_local
        if invoice_date is not None:
            self.invoice_date = invoice_date
        if due_date is not None:
            self.due_date = due_date
        if payment_method is not None:
            self.payment_method = payment_method
        if comment is not None:
            self.comment = comment
        if is_created_by_nav is not None:
            self.is_created_by_nav = is_created_by_nav

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


        :return: The id of this SpendingListItem.  # noqa: E501
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this SpendingListItem.


        :param id: The id of this SpendingListItem.  # noqa: E501
        :type: int
        """

        self._id = id

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


        :return: The organization_id of this SpendingListItem.  # noqa: E501
        :rtype: int
        """
        return self._organization_id

    @organization_id.setter
    def organization_id(self, organization_id):
        """Sets the organization_id of this SpendingListItem.


        :param organization_id: The organization_id of this SpendingListItem.  # noqa: E501
        :type: int
        """

        self._organization_id = organization_id

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


        :return: The category of this SpendingListItem.  # noqa: E501
        :rtype: Category
        """
        return self._category

    @category.setter
    def category(self, category):
        """Sets the category of this SpendingListItem.


        :param category: The category of this SpendingListItem.  # noqa: E501
        :type: Category
        """

        self._category = category

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


        :return: The paid_at of this SpendingListItem.  # noqa: E501
        :rtype: date
        """
        return self._paid_at

    @paid_at.setter
    def paid_at(self, paid_at):
        """Sets the paid_at of this SpendingListItem.


        :param paid_at: The paid_at of this SpendingListItem.  # noqa: E501
        :type: date
        """

        self._paid_at = paid_at

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


        :return: The fulfillment_date of this SpendingListItem.  # noqa: E501
        :rtype: date
        """
        return self._fulfillment_date

    @fulfillment_date.setter
    def fulfillment_date(self, fulfillment_date):
        """Sets the fulfillment_date of this SpendingListItem.


        :param fulfillment_date: The fulfillment_date of this SpendingListItem.  # noqa: E501
        :type: date
        """

        self._fulfillment_date = fulfillment_date

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


        :return: The partner of this SpendingListItem.  # noqa: E501
        :rtype: SpendingPartner
        """
        return self._partner

    @partner.setter
    def partner(self, partner):
        """Sets the partner of this SpendingListItem.


        :param partner: The partner of this SpendingListItem.  # noqa: E501
        :type: SpendingPartner
        """

        self._partner = partner

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


        :return: The invoice_number of this SpendingListItem.  # noqa: E501
        :rtype: str
        """
        return self._invoice_number

    @invoice_number.setter
    def invoice_number(self, invoice_number):
        """Sets the invoice_number of this SpendingListItem.


        :param invoice_number: The invoice_number of this SpendingListItem.  # noqa: E501
        :type: str
        """

        self._invoice_number = invoice_number

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


        :return: The currency of this SpendingListItem.  # noqa: E501
        :rtype: Currency
        """
        return self._currency

    @currency.setter
    def currency(self, currency):
        """Sets the currency of this SpendingListItem.


        :param currency: The currency of this SpendingListItem.  # noqa: E501
        :type: Currency
        """

        self._currency = currency

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


        :return: The conversion_rate of this SpendingListItem.  # noqa: E501
        :rtype: float
        """
        return self._conversion_rate

    @conversion_rate.setter
    def conversion_rate(self, conversion_rate):
        """Sets the conversion_rate of this SpendingListItem.


        :param conversion_rate: The conversion_rate of this SpendingListItem.  # noqa: E501
        :type: float
        """

        self._conversion_rate = conversion_rate

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


        :return: The total_gross of this SpendingListItem.  # noqa: E501
        :rtype: float
        """
        return self._total_gross

    @total_gross.setter
    def total_gross(self, total_gross):
        """Sets the total_gross of this SpendingListItem.


        :param total_gross: The total_gross of this SpendingListItem.  # noqa: E501
        :type: float
        """

        self._total_gross = total_gross

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


        :return: The total_gross_local of this SpendingListItem.  # noqa: E501
        :rtype: float
        """
        return self._total_gross_local

    @total_gross_local.setter
    def total_gross_local(self, total_gross_local):
        """Sets the total_gross_local of this SpendingListItem.


        :param total_gross_local: The total_gross_local of this SpendingListItem.  # noqa: E501
        :type: float
        """

        self._total_gross_local = total_gross_local

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


        :return: The total_vat_amount of this SpendingListItem.  # noqa: E501
        :rtype: float
        """
        return self._total_vat_amount

    @total_vat_amount.setter
    def total_vat_amount(self, total_vat_amount):
        """Sets the total_vat_amount of this SpendingListItem.


        :param total_vat_amount: The total_vat_amount of this SpendingListItem.  # noqa: E501
        :type: float
        """

        self._total_vat_amount = total_vat_amount

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


        :return: The total_vat_amount_local of this SpendingListItem.  # noqa: E501
        :rtype: float
        """
        return self._total_vat_amount_local

    @total_vat_amount_local.setter
    def total_vat_amount_local(self, total_vat_amount_local):
        """Sets the total_vat_amount_local of this SpendingListItem.


        :param total_vat_amount_local: The total_vat_amount_local of this SpendingListItem.  # noqa: E501
        :type: float
        """

        self._total_vat_amount_local = total_vat_amount_local

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


        :return: The invoice_date of this SpendingListItem.  # noqa: E501
        :rtype: date
        """
        return self._invoice_date

    @invoice_date.setter
    def invoice_date(self, invoice_date):
        """Sets the invoice_date of this SpendingListItem.


        :param invoice_date: The invoice_date of this SpendingListItem.  # noqa: E501
        :type: date
        """

        self._invoice_date = invoice_date

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


        :return: The due_date of this SpendingListItem.  # noqa: E501
        :rtype: date
        """
        return self._due_date

    @due_date.setter
    def due_date(self, due_date):
        """Sets the due_date of this SpendingListItem.


        :param due_date: The due_date of this SpendingListItem.  # noqa: E501
        :type: date
        """

        self._due_date = due_date

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


        :return: The payment_method of this SpendingListItem.  # noqa: E501
        :rtype: SpendingPaymentMethod
        """
        return self._payment_method

    @payment_method.setter
    def payment_method(self, payment_method):
        """Sets the payment_method of this SpendingListItem.


        :param payment_method: The payment_method of this SpendingListItem.  # noqa: E501
        :type: SpendingPaymentMethod
        """

        self._payment_method = payment_method

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


        :return: The comment of this SpendingListItem.  # noqa: E501
        :rtype: str
        """
        return self._comment

    @comment.setter
    def comment(self, comment):
        """Sets the comment of this SpendingListItem.


        :param comment: The comment of this SpendingListItem.  # noqa: E501
        :type: str
        """

        self._comment = comment

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


        :return: The is_created_by_nav of this SpendingListItem.  # noqa: E501
        :rtype: bool
        """
        return self._is_created_by_nav

    @is_created_by_nav.setter
    def is_created_by_nav(self, is_created_by_nav):
        """Sets the is_created_by_nav of this SpendingListItem.


        :param is_created_by_nav: The is_created_by_nav of this SpendingListItem.  # noqa: E501
        :type: bool
        """

        self._is_created_by_nav = is_created_by_nav

    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(SpendingListItem, 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, SpendingListItem):
            return False

        return self.__dict__ == other.__dict__

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