# coding: utf-8

"""
    Dokumenty CITES

    API pro datový řadič dokumentů CITES ### Verze 1.0.0    - public   - developers  ### Verze 1.1.0    - admins   - additional   - statement   - attachments   - registration_cards   - permit   # noqa: E501

    OpenAPI spec version: 1.1.0
    Contact: info@sysnet.cz
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class GoodsItemBaseType(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 = {
        'species': 'TaxonItemType',
        'amount': 'float',
        'quantity': 'list[GoodsQuantityType]',
        'identification': 'list[GoodsIdetificationType]',
        'identification_history': 'list[GoodsIdetificationHistoryItemType]',
        'birth': 'GoodsBirthType',
        'code': 'str',
        'gender': 'str',
        'origin': 'str',
        'purpose': 'str',
        'transaction_origin': 'TransactionType',
        'transaction_import': 'TransactionType',
        'transaction_re_export': 'TransactionType',
        'goods_description': 'str'
    }

    attribute_map = {
        'species': 'species',
        'amount': 'amount',
        'quantity': 'quantity',
        'identification': 'identification',
        'identification_history': 'identification_history',
        'birth': 'birth',
        'code': 'code',
        'gender': 'gender',
        'origin': 'origin',
        'purpose': 'purpose',
        'transaction_origin': 'transaction_origin',
        'transaction_import': 'transaction_import',
        'transaction_re_export': 'transaction_re_export',
        'goods_description': 'goods_description'
    }

    def __init__(self, species=None, amount=1, quantity=None, identification=None, identification_history=None, birth=None, code=None, gender=None, origin=None, purpose=None, transaction_origin=None, transaction_import=None, transaction_re_export=None, goods_description=None):  # noqa: E501
        """GoodsItemBaseType - a model defined in Swagger"""  # noqa: E501
        self._species = None
        self._amount = None
        self._quantity = None
        self._identification = None
        self._identification_history = None
        self._birth = None
        self._code = None
        self._gender = None
        self._origin = None
        self._purpose = None
        self._transaction_origin = None
        self._transaction_import = None
        self._transaction_re_export = None
        self._goods_description = None
        self.discriminator = None
        if species is not None:
            self.species = species
        if amount is not None:
            self.amount = amount
        if quantity is not None:
            self.quantity = quantity
        if identification is not None:
            self.identification = identification
        if identification_history is not None:
            self.identification_history = identification_history
        if birth is not None:
            self.birth = birth
        if code is not None:
            self.code = code
        if gender is not None:
            self.gender = gender
        if origin is not None:
            self.origin = origin
        if purpose is not None:
            self.purpose = purpose
        if transaction_origin is not None:
            self.transaction_origin = transaction_origin
        if transaction_import is not None:
            self.transaction_import = transaction_import
        if transaction_re_export is not None:
            self.transaction_re_export = transaction_re_export
        if goods_description is not None:
            self.goods_description = goods_description

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


        :return: The species of this GoodsItemBaseType.  # noqa: E501
        :rtype: TaxonItemType
        """
        return self._species

    @species.setter
    def species(self, species):
        """Sets the species of this GoodsItemBaseType.


        :param species: The species of this GoodsItemBaseType.  # noqa: E501
        :type: TaxonItemType
        """

        self._species = species

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

        Množství  # noqa: E501

        :return: The amount of this GoodsItemBaseType.  # noqa: E501
        :rtype: float
        """
        return self._amount

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

        Množství  # noqa: E501

        :param amount: The amount of this GoodsItemBaseType.  # noqa: E501
        :type: float
        """

        self._amount = amount

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


        :return: The quantity of this GoodsItemBaseType.  # noqa: E501
        :rtype: list[GoodsQuantityType]
        """
        return self._quantity

    @quantity.setter
    def quantity(self, quantity):
        """Sets the quantity of this GoodsItemBaseType.


        :param quantity: The quantity of this GoodsItemBaseType.  # noqa: E501
        :type: list[GoodsQuantityType]
        """

        self._quantity = quantity

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

        Identifikace exemplářů  # noqa: E501

        :return: The identification of this GoodsItemBaseType.  # noqa: E501
        :rtype: list[GoodsIdetificationType]
        """
        return self._identification

    @identification.setter
    def identification(self, identification):
        """Sets the identification of this GoodsItemBaseType.

        Identifikace exemplářů  # noqa: E501

        :param identification: The identification of this GoodsItemBaseType.  # noqa: E501
        :type: list[GoodsIdetificationType]
        """

        self._identification = identification

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


        :return: The identification_history of this GoodsItemBaseType.  # noqa: E501
        :rtype: list[GoodsIdetificationHistoryItemType]
        """
        return self._identification_history

    @identification_history.setter
    def identification_history(self, identification_history):
        """Sets the identification_history of this GoodsItemBaseType.


        :param identification_history: The identification_history of this GoodsItemBaseType.  # noqa: E501
        :type: list[GoodsIdetificationHistoryItemType]
        """

        self._identification_history = identification_history

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


        :return: The birth of this GoodsItemBaseType.  # noqa: E501
        :rtype: GoodsBirthType
        """
        return self._birth

    @birth.setter
    def birth(self, birth):
        """Sets the birth of this GoodsItemBaseType.


        :param birth: The birth of this GoodsItemBaseType.  # noqa: E501
        :type: GoodsBirthType
        """

        self._birth = birth

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

        Kód exempláře  # noqa: E501

        :return: The code of this GoodsItemBaseType.  # noqa: E501
        :rtype: str
        """
        return self._code

    @code.setter
    def code(self, code):
        """Sets the code of this GoodsItemBaseType.

        Kód exempláře  # noqa: E501

        :param code: The code of this GoodsItemBaseType.  # noqa: E501
        :type: str
        """

        self._code = code

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

        Pohlaví exempláře  # noqa: E501

        :return: The gender of this GoodsItemBaseType.  # noqa: E501
        :rtype: str
        """
        return self._gender

    @gender.setter
    def gender(self, gender):
        """Sets the gender of this GoodsItemBaseType.

        Pohlaví exempláře  # noqa: E501

        :param gender: The gender of this GoodsItemBaseType.  # noqa: E501
        :type: str
        """

        self._gender = gender

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

        Původ  # noqa: E501

        :return: The origin of this GoodsItemBaseType.  # noqa: E501
        :rtype: str
        """
        return self._origin

    @origin.setter
    def origin(self, origin):
        """Sets the origin of this GoodsItemBaseType.

        Původ  # noqa: E501

        :param origin: The origin of this GoodsItemBaseType.  # noqa: E501
        :type: str
        """

        self._origin = origin

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

        Účel  # noqa: E501

        :return: The purpose of this GoodsItemBaseType.  # noqa: E501
        :rtype: str
        """
        return self._purpose

    @purpose.setter
    def purpose(self, purpose):
        """Sets the purpose of this GoodsItemBaseType.

        Účel  # noqa: E501

        :param purpose: The purpose of this GoodsItemBaseType.  # noqa: E501
        :type: str
        """

        self._purpose = purpose

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


        :return: The transaction_origin of this GoodsItemBaseType.  # noqa: E501
        :rtype: TransactionType
        """
        return self._transaction_origin

    @transaction_origin.setter
    def transaction_origin(self, transaction_origin):
        """Sets the transaction_origin of this GoodsItemBaseType.


        :param transaction_origin: The transaction_origin of this GoodsItemBaseType.  # noqa: E501
        :type: TransactionType
        """

        self._transaction_origin = transaction_origin

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


        :return: The transaction_import of this GoodsItemBaseType.  # noqa: E501
        :rtype: TransactionType
        """
        return self._transaction_import

    @transaction_import.setter
    def transaction_import(self, transaction_import):
        """Sets the transaction_import of this GoodsItemBaseType.


        :param transaction_import: The transaction_import of this GoodsItemBaseType.  # noqa: E501
        :type: TransactionType
        """

        self._transaction_import = transaction_import

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


        :return: The transaction_re_export of this GoodsItemBaseType.  # noqa: E501
        :rtype: TransactionType
        """
        return self._transaction_re_export

    @transaction_re_export.setter
    def transaction_re_export(self, transaction_re_export):
        """Sets the transaction_re_export of this GoodsItemBaseType.


        :param transaction_re_export: The transaction_re_export of this GoodsItemBaseType.  # noqa: E501
        :type: TransactionType
        """

        self._transaction_re_export = transaction_re_export

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

        Popis exempláře - pole Notes: description  # noqa: E501

        :return: The goods_description of this GoodsItemBaseType.  # noqa: E501
        :rtype: str
        """
        return self._goods_description

    @goods_description.setter
    def goods_description(self, goods_description):
        """Sets the goods_description of this GoodsItemBaseType.

        Popis exempláře - pole Notes: description  # noqa: E501

        :param goods_description: The goods_description of this GoodsItemBaseType.  # noqa: E501
        :type: str
        """

        self._goods_description = goods_description

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

        return self.__dict__ == other.__dict__

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