# 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
from citesdoc_110.models.goods_item_base_type import GoodsItemBaseType  # noqa: F401,E501

class GoodsPrincipalType(GoodsItemBaseType):
    """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 = {
        'identifier': 'str',
        'unid': 'str',
        'pid': 'str',
        'order': 'GoodsOrderType',
        'goods_customs': 'DocumentPrincipalCustomsGoodsType',
        'goods_additional': 'str',
        'goods_description_base': 'str',
        'net_mass': 'float',
        'units': 'str',
        'amount_printable': 'str',
        'goods_cloning': 'str',
        'requested_document': 'str',
        'requested_statement': 'str',
        'authority_decision_id': 'str',
        'statement_type': 'str',
        'single_window': 'SingleWindowType',
        'used': 'str',
        'comment': 'str',
        'related': 'list[RelatedType]'
    }
    if hasattr(GoodsItemBaseType, "swagger_types"):
        swagger_types.update(GoodsItemBaseType.swagger_types)

    attribute_map = {
        'identifier': 'identifier',
        'unid': 'unid',
        'pid': 'pid',
        'order': 'order',
        'goods_customs': 'goods_customs',
        'goods_additional': 'goods_additional',
        'goods_description_base': 'goods_description_base',
        'net_mass': 'net_mass',
        'units': 'units',
        'amount_printable': 'amount_printable',
        'goods_cloning': 'goods_cloning',
        'requested_document': 'requested_document',
        'requested_statement': 'requested_statement',
        'authority_decision_id': 'authority_decision_id',
        'statement_type': 'statement_type',
        'single_window': 'single_window',
        'used': 'used',
        'comment': 'comment',
        'related': 'related'
    }
    if hasattr(GoodsItemBaseType, "attribute_map"):
        attribute_map.update(GoodsItemBaseType.attribute_map)

    def __init__(self, identifier=None, unid=None, pid=None, order=None, goods_customs=None, goods_additional=None, goods_description_base=None, net_mass=None, units=None, amount_printable=None, goods_cloning=None, requested_document=None, requested_statement=None, authority_decision_id=None, statement_type=None, single_window=None, used=None, comment=None, related=None, *args, **kwargs):  # noqa: E501
        """GoodsPrincipalType - a model defined in Swagger"""  # noqa: E501
        self._identifier = None
        self._unid = None
        self._pid = None
        self._order = None
        self._goods_customs = None
        self._goods_additional = None
        self._goods_description_base = None
        self._net_mass = None
        self._units = None
        self._amount_printable = None
        self._goods_cloning = None
        self._requested_document = None
        self._requested_statement = None
        self._authority_decision_id = None
        self._statement_type = None
        self._single_window = None
        self._used = None
        self._comment = None
        self._related = None
        self.discriminator = None
        if identifier is not None:
            self.identifier = identifier
        if unid is not None:
            self.unid = unid
        if pid is not None:
            self.pid = pid
        if order is not None:
            self.order = order
        if goods_customs is not None:
            self.goods_customs = goods_customs
        if goods_additional is not None:
            self.goods_additional = goods_additional
        if goods_description_base is not None:
            self.goods_description_base = goods_description_base
        if net_mass is not None:
            self.net_mass = net_mass
        if units is not None:
            self.units = units
        if amount_printable is not None:
            self.amount_printable = amount_printable
        if goods_cloning is not None:
            self.goods_cloning = goods_cloning
        if requested_document is not None:
            self.requested_document = requested_document
        if requested_statement is not None:
            self.requested_statement = requested_statement
        if authority_decision_id is not None:
            self.authority_decision_id = authority_decision_id
        if statement_type is not None:
            self.statement_type = statement_type
        if single_window is not None:
            self.single_window = single_window
        if used is not None:
            self.used = used
        if comment is not None:
            self.comment = comment
        if related is not None:
            self.related = related
        GoodsItemBaseType.__init__(self, *args, **kwargs)

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

        identifikátor položky zboží  # noqa: E501

        :return: The identifier of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._identifier

    @identifier.setter
    def identifier(self, identifier):
        """Sets the identifier of this GoodsPrincipalType.

        identifikátor položky zboží  # noqa: E501

        :param identifier: The identifier of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._identifier = identifier

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

        Notes UNID - pro zpětnou kompatibilitu  # noqa: E501

        :return: The unid of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._unid

    @unid.setter
    def unid(self, unid):
        """Sets the unid of this GoodsPrincipalType.

        Notes UNID - pro zpětnou kompatibilitu  # noqa: E501

        :param unid: The unid of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._unid = unid

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

        Dvanaáctimístný identifikátor - pro zpětnou kompatibilitu  # noqa: E501

        :return: The pid of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._pid

    @pid.setter
    def pid(self, pid):
        """Sets the pid of this GoodsPrincipalType.

        Dvanaáctimístný identifikátor - pro zpětnou kompatibilitu  # noqa: E501

        :param pid: The pid of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._pid = pid

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


        :return: The order of this GoodsPrincipalType.  # noqa: E501
        :rtype: GoodsOrderType
        """
        return self._order

    @order.setter
    def order(self, order):
        """Sets the order of this GoodsPrincipalType.


        :param order: The order of this GoodsPrincipalType.  # noqa: E501
        :type: GoodsOrderType
        """

        self._order = order

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


        :return: The goods_customs of this GoodsPrincipalType.  # noqa: E501
        :rtype: DocumentPrincipalCustomsGoodsType
        """
        return self._goods_customs

    @goods_customs.setter
    def goods_customs(self, goods_customs):
        """Sets the goods_customs of this GoodsPrincipalType.


        :param goods_customs: The goods_customs of this GoodsPrincipalType.  # noqa: E501
        :type: DocumentPrincipalCustomsGoodsType
        """

        self._goods_customs = goods_customs

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

        Další popis exempláře - pole Notes goods_additional  # noqa: E501

        :return: The goods_additional of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._goods_additional

    @goods_additional.setter
    def goods_additional(self, goods_additional):
        """Sets the goods_additional of this GoodsPrincipalType.

        Další popis exempláře - pole Notes goods_additional  # noqa: E501

        :param goods_additional: The goods_additional of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._goods_additional = goods_additional

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

        Základní popis exempláře - pole Notes: goods_description  # noqa: E501

        :return: The goods_description_base of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._goods_description_base

    @goods_description_base.setter
    def goods_description_base(self, goods_description_base):
        """Sets the goods_description_base of this GoodsPrincipalType.

        Základní popis exempláře - pole Notes: goods_description  # noqa: E501

        :param goods_description_base: The goods_description_base of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._goods_description_base = goods_description_base

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

        Čistá hmotnost exempláře/ů  # noqa: E501

        :return: The net_mass of this GoodsPrincipalType.  # noqa: E501
        :rtype: float
        """
        return self._net_mass

    @net_mass.setter
    def net_mass(self, net_mass):
        """Sets the net_mass of this GoodsPrincipalType.

        Čistá hmotnost exempláře/ů  # noqa: E501

        :param net_mass: The net_mass of this GoodsPrincipalType.  # noqa: E501
        :type: float
        """

        self._net_mass = net_mass

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

        Jednotky  # noqa: E501

        :return: The units of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._units

    @units.setter
    def units(self, units):
        """Sets the units of this GoodsPrincipalType.

        Jednotky  # noqa: E501

        :param units: The units of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._units = units

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

        Tištitelná podoba množství  # noqa: E501

        :return: The amount_printable of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._amount_printable

    @amount_printable.setter
    def amount_printable(self, amount_printable):
        """Sets the amount_printable of this GoodsPrincipalType.

        Tištitelná podoba množství  # noqa: E501

        :param amount_printable: The amount_printable of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._amount_printable = amount_printable

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

        Klonování exempláře  # noqa: E501

        :return: The goods_cloning of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._goods_cloning

    @goods_cloning.setter
    def goods_cloning(self, goods_cloning):
        """Sets the goods_cloning of this GoodsPrincipalType.

        Klonování exempláře  # noqa: E501

        :param goods_cloning: The goods_cloning of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._goods_cloning = goods_cloning

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

        Požadovaný dokument  # noqa: E501

        :return: The requested_document of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._requested_document

    @requested_document.setter
    def requested_document(self, requested_document):
        """Sets the requested_document of this GoodsPrincipalType.

        Požadovaný dokument  # noqa: E501

        :param requested_document: The requested_document of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._requested_document = requested_document

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

        Požadovaný dokument  # noqa: E501

        :return: The requested_statement of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._requested_statement

    @requested_statement.setter
    def requested_statement(self, requested_statement):
        """Sets the requested_statement of this GoodsPrincipalType.

        Požadovaný dokument  # noqa: E501

        :param requested_statement: The requested_statement of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._requested_statement = requested_statement

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

        Rozhodnutí úřadu  # noqa: E501

        :return: The authority_decision_id of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._authority_decision_id

    @authority_decision_id.setter
    def authority_decision_id(self, authority_decision_id):
        """Sets the authority_decision_id of this GoodsPrincipalType.

        Rozhodnutí úřadu  # noqa: E501

        :param authority_decision_id: The authority_decision_id of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._authority_decision_id = authority_decision_id

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

        Typ stanoviska vědeckého orgánu AOPK/Generální [A/G] (env_resolution)  # noqa: E501

        :return: The statement_type of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._statement_type

    @statement_type.setter
    def statement_type(self, statement_type):
        """Sets the statement_type of this GoodsPrincipalType.

        Typ stanoviska vědeckého orgánu AOPK/Generální [A/G] (env_resolution)  # noqa: E501

        :param statement_type: The statement_type of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._statement_type = statement_type

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


        :return: The single_window of this GoodsPrincipalType.  # noqa: E501
        :rtype: SingleWindowType
        """
        return self._single_window

    @single_window.setter
    def single_window(self, single_window):
        """Sets the single_window of this GoodsPrincipalType.


        :param single_window: The single_window of this GoodsPrincipalType.  # noqa: E501
        :type: SingleWindowType
        """

        self._single_window = single_window

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

        Aktuální stav použití položky dokumentu  # noqa: E501

        :return: The used of this GoodsPrincipalType.  # noqa: E501
        :rtype: str
        """
        return self._used

    @used.setter
    def used(self, used):
        """Sets the used of this GoodsPrincipalType.

        Aktuální stav použití položky dokumentu  # noqa: E501

        :param used: The used of this GoodsPrincipalType.  # noqa: E501
        :type: str
        """

        self._used = used

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

        Komentář ke zboží  # noqa: E501

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

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

        Komentář ke zboží  # noqa: E501

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

        self._comment = comment

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


        :return: The related of this GoodsPrincipalType.  # noqa: E501
        :rtype: list[RelatedType]
        """
        return self._related

    @related.setter
    def related(self, related):
        """Sets the related of this GoodsPrincipalType.


        :param related: The related of this GoodsPrincipalType.  # noqa: E501
        :type: list[RelatedType]
        """

        self._related = related

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

        return self.__dict__ == other.__dict__

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