# coding: utf-8

"""
    NetSuite REST API

    NetSuite REST Record API generated 2023-01-18 at 19:40:11 UTC for account 472052, user will@theapiguys.com with role Keap Integration.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class CustomerAddressBookAddressBookAddress(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 = {
        'zip': 'str',
        'country': 'CustomeraddressBookaddressBookAddressCountry',
        'addr2': 'str',
        'city': 'str',
        'addr1': 'str',
        'last_modified_date': 'datetime',
        'addr3': 'str',
        'external_id': 'str',
        'custrecordpca_search': 'str',
        'addr_phone': 'str',
        'addressee': 'str',
        'attention': 'str',
        'override': 'bool',
        'state': 'str',
        'addr_text': 'str',
        'ref_name': 'str',
        'links': 'list[NsLink]'
    }

    attribute_map = {
        'zip': 'zip',
        'country': 'country',
        'addr2': 'addr2',
        'city': 'city',
        'addr1': 'addr1',
        'last_modified_date': 'lastModifiedDate',
        'addr3': 'addr3',
        'external_id': 'externalId',
        'custrecordpca_search': 'custrecordpca_search',
        'addr_phone': 'addrPhone',
        'addressee': 'addressee',
        'attention': 'attention',
        'override': 'override',
        'state': 'state',
        'addr_text': 'addrText',
        'ref_name': 'refName',
        'links': 'links'
    }

    def __init__(self, zip=None, country=None, addr2=None, city=None, addr1=None, last_modified_date=None, addr3=None, external_id=None, custrecordpca_search=None, addr_phone=None, addressee=None, attention=None, override=None, state=None, addr_text=None, ref_name=None, links=None):  # noqa: E501
        """CustomerAddressBookAddressBookAddress - a model defined in Swagger"""  # noqa: E501
        self._zip = None
        self._country = None
        self._addr2 = None
        self._city = None
        self._addr1 = None
        self._last_modified_date = None
        self._addr3 = None
        self._external_id = None
        self._custrecordpca_search = None
        self._addr_phone = None
        self._addressee = None
        self._attention = None
        self._override = None
        self._state = None
        self._addr_text = None
        self._ref_name = None
        self._links = None
        self.discriminator = None
        if zip is not None:
            self.zip = zip
        if country is not None:
            self.country = country
        if addr2 is not None:
            self.addr2 = addr2
        if city is not None:
            self.city = city
        if addr1 is not None:
            self.addr1 = addr1
        if last_modified_date is not None:
            self.last_modified_date = last_modified_date
        if addr3 is not None:
            self.addr3 = addr3
        if external_id is not None:
            self.external_id = external_id
        if custrecordpca_search is not None:
            self.custrecordpca_search = custrecordpca_search
        if addr_phone is not None:
            self.addr_phone = addr_phone
        if addressee is not None:
            self.addressee = addressee
        if attention is not None:
            self.attention = attention
        if override is not None:
            self.override = override
        if state is not None:
            self.state = state
        if addr_text is not None:
            self.addr_text = addr_text
        if ref_name is not None:
            self.ref_name = ref_name
        if links is not None:
            self.links = links

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


        :return: The zip of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._zip

    @zip.setter
    def zip(self, zip):
        """Sets the zip of this CustomerAddressBookAddressBookAddress.


        :param zip: The zip of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._zip = zip

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


        :return: The country of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: CustomeraddressBookaddressBookAddressCountry
        """
        return self._country

    @country.setter
    def country(self, country):
        """Sets the country of this CustomerAddressBookAddressBookAddress.


        :param country: The country of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: CustomeraddressBookaddressBookAddressCountry
        """

        self._country = country

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


        :return: The addr2 of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._addr2

    @addr2.setter
    def addr2(self, addr2):
        """Sets the addr2 of this CustomerAddressBookAddressBookAddress.


        :param addr2: The addr2 of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._addr2 = addr2

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


        :return: The city of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._city

    @city.setter
    def city(self, city):
        """Sets the city of this CustomerAddressBookAddressBookAddress.


        :param city: The city of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._city = city

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


        :return: The addr1 of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._addr1

    @addr1.setter
    def addr1(self, addr1):
        """Sets the addr1 of this CustomerAddressBookAddressBookAddress.


        :param addr1: The addr1 of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._addr1 = addr1

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


        :return: The last_modified_date of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: datetime
        """
        return self._last_modified_date

    @last_modified_date.setter
    def last_modified_date(self, last_modified_date):
        """Sets the last_modified_date of this CustomerAddressBookAddressBookAddress.


        :param last_modified_date: The last_modified_date of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: datetime
        """

        self._last_modified_date = last_modified_date

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


        :return: The addr3 of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._addr3

    @addr3.setter
    def addr3(self, addr3):
        """Sets the addr3 of this CustomerAddressBookAddressBookAddress.


        :param addr3: The addr3 of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._addr3 = addr3

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


        :return: The external_id of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._external_id

    @external_id.setter
    def external_id(self, external_id):
        """Sets the external_id of this CustomerAddressBookAddressBookAddress.


        :param external_id: The external_id of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._external_id = external_id

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


        :return: The custrecordpca_search of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._custrecordpca_search

    @custrecordpca_search.setter
    def custrecordpca_search(self, custrecordpca_search):
        """Sets the custrecordpca_search of this CustomerAddressBookAddressBookAddress.


        :param custrecordpca_search: The custrecordpca_search of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._custrecordpca_search = custrecordpca_search

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


        :return: The addr_phone of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._addr_phone

    @addr_phone.setter
    def addr_phone(self, addr_phone):
        """Sets the addr_phone of this CustomerAddressBookAddressBookAddress.


        :param addr_phone: The addr_phone of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._addr_phone = addr_phone

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


        :return: The addressee of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._addressee

    @addressee.setter
    def addressee(self, addressee):
        """Sets the addressee of this CustomerAddressBookAddressBookAddress.


        :param addressee: The addressee of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._addressee = addressee

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


        :return: The attention of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._attention

    @attention.setter
    def attention(self, attention):
        """Sets the attention of this CustomerAddressBookAddressBookAddress.


        :param attention: The attention of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._attention = attention

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


        :return: The override of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: bool
        """
        return self._override

    @override.setter
    def override(self, override):
        """Sets the override of this CustomerAddressBookAddressBookAddress.


        :param override: The override of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: bool
        """

        self._override = override

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


        :return: The state of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._state

    @state.setter
    def state(self, state):
        """Sets the state of this CustomerAddressBookAddressBookAddress.


        :param state: The state of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._state = state

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


        :return: The addr_text of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._addr_text

    @addr_text.setter
    def addr_text(self, addr_text):
        """Sets the addr_text of this CustomerAddressBookAddressBookAddress.


        :param addr_text: The addr_text of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._addr_text = addr_text

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


        :return: The ref_name of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: str
        """
        return self._ref_name

    @ref_name.setter
    def ref_name(self, ref_name):
        """Sets the ref_name of this CustomerAddressBookAddressBookAddress.


        :param ref_name: The ref_name of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: str
        """

        self._ref_name = ref_name

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


        :return: The links of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :rtype: list[NsLink]
        """
        return self._links

    @links.setter
    def links(self, links):
        """Sets the links of this CustomerAddressBookAddressBookAddress.


        :param links: The links of this CustomerAddressBookAddressBookAddress.  # noqa: E501
        :type: list[NsLink]
        """

        self._links = links

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

        return self.__dict__ == other.__dict__

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