# coding: utf-8

"""
    Salt Edge Account Information API

    API Reference for services  # noqa: E501

    OpenAPI spec version: 5.0.0
    Contact: <EMAIL>
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six
from swagger_client.models.general_account_extra import GeneralAccountExtra  # noqa: F401,E501

class AccountExtra(GeneralAccountExtra):
    """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 = {
        'premium_frequency': 'str',
        'policy_status': 'str',
        'life_assured_name': 'str',
        'premium_amount': 'float',
        'single_premium_amount': 'float',
        'financial_consultant': 'str',
        'total_reversionary_bonus': 'float',
        'gross_surrender': 'float',
        'guaranteed_gross_surrender': 'float',
        'reversionary_bonus_cash_value': 'float',
        'owned_policy_amount': 'float',
        'policy_loan_limit': 'float',
        'policy_converted_to_paid_up': 'float',
        'paid_up_conversion_reversionary_bonus': 'float',
        'policy_components': 'object',
        'investment_amount': 'float',
        'unit_price': 'float',
        'units': 'float',
        'indicative_unit_price': 'float',
        'interest_income': 'float',
        'interest_amount': 'float',
        'profit_amount': 'float',
        'profit_rate': 'float',
        'asset_class': 'str',
        'product_type': 'str',
        'total_unit_value': 'float',
        'fund_holdings': 'object'
    }
    if hasattr(GeneralAccountExtra, "swagger_types"):
        swagger_types.update(GeneralAccountExtra.swagger_types)

    attribute_map = {
        'premium_frequency': 'premium_frequency',
        'policy_status': 'policy_status',
        'life_assured_name': 'life_assured_name',
        'premium_amount': 'premium_amount',
        'single_premium_amount': 'single_premium_amount',
        'financial_consultant': 'financial_consultant',
        'total_reversionary_bonus': 'total_reversionary_bonus',
        'gross_surrender': 'gross_surrender',
        'guaranteed_gross_surrender': 'guaranteed_gross_surrender',
        'reversionary_bonus_cash_value': 'reversionary_bonus_cash_value',
        'owned_policy_amount': 'owned_policy_amount',
        'policy_loan_limit': 'policy_loan_limit',
        'policy_converted_to_paid_up': 'policy_converted_to_paid_up',
        'paid_up_conversion_reversionary_bonus': 'paid_up_conversion_reversionary_bonus',
        'policy_components': 'policy_components',
        'investment_amount': 'investment_amount',
        'unit_price': 'unit_price',
        'units': 'units',
        'indicative_unit_price': 'indicative_unit_price',
        'interest_income': 'interest_income',
        'interest_amount': 'interest_amount',
        'profit_amount': 'profit_amount',
        'profit_rate': 'profit_rate',
        'asset_class': 'asset_class',
        'product_type': 'product_type',
        'total_unit_value': 'total_unit_value',
        'fund_holdings': 'fund_holdings'
    }
    if hasattr(GeneralAccountExtra, "attribute_map"):
        attribute_map.update(GeneralAccountExtra.attribute_map)

    def __init__(self, premium_frequency=None, policy_status=None, life_assured_name=None, premium_amount=None, single_premium_amount=None, financial_consultant=None, total_reversionary_bonus=None, gross_surrender=None, guaranteed_gross_surrender=None, reversionary_bonus_cash_value=None, owned_policy_amount=None, policy_loan_limit=None, policy_converted_to_paid_up=None, paid_up_conversion_reversionary_bonus=None, policy_components=None, investment_amount=None, unit_price=None, units=None, indicative_unit_price=None, interest_income=None, interest_amount=None, profit_amount=None, profit_rate=None, asset_class=None, product_type=None, total_unit_value=None, fund_holdings=None, *args, **kwargs):  # noqa: E501
        """AccountExtra - a model defined in Swagger"""  # noqa: E501
        self._premium_frequency = None
        self._policy_status = None
        self._life_assured_name = None
        self._premium_amount = None
        self._single_premium_amount = None
        self._financial_consultant = None
        self._total_reversionary_bonus = None
        self._gross_surrender = None
        self._guaranteed_gross_surrender = None
        self._reversionary_bonus_cash_value = None
        self._owned_policy_amount = None
        self._policy_loan_limit = None
        self._policy_converted_to_paid_up = None
        self._paid_up_conversion_reversionary_bonus = None
        self._policy_components = None
        self._investment_amount = None
        self._unit_price = None
        self._units = None
        self._indicative_unit_price = None
        self._interest_income = None
        self._interest_amount = None
        self._profit_amount = None
        self._profit_rate = None
        self._asset_class = None
        self._product_type = None
        self._total_unit_value = None
        self._fund_holdings = None
        self.discriminator = None
        if premium_frequency is not None:
            self.premium_frequency = premium_frequency
        if policy_status is not None:
            self.policy_status = policy_status
        if life_assured_name is not None:
            self.life_assured_name = life_assured_name
        if premium_amount is not None:
            self.premium_amount = premium_amount
        if single_premium_amount is not None:
            self.single_premium_amount = single_premium_amount
        if financial_consultant is not None:
            self.financial_consultant = financial_consultant
        if total_reversionary_bonus is not None:
            self.total_reversionary_bonus = total_reversionary_bonus
        if gross_surrender is not None:
            self.gross_surrender = gross_surrender
        if guaranteed_gross_surrender is not None:
            self.guaranteed_gross_surrender = guaranteed_gross_surrender
        if reversionary_bonus_cash_value is not None:
            self.reversionary_bonus_cash_value = reversionary_bonus_cash_value
        if owned_policy_amount is not None:
            self.owned_policy_amount = owned_policy_amount
        if policy_loan_limit is not None:
            self.policy_loan_limit = policy_loan_limit
        if policy_converted_to_paid_up is not None:
            self.policy_converted_to_paid_up = policy_converted_to_paid_up
        if paid_up_conversion_reversionary_bonus is not None:
            self.paid_up_conversion_reversionary_bonus = paid_up_conversion_reversionary_bonus
        if policy_components is not None:
            self.policy_components = policy_components
        if investment_amount is not None:
            self.investment_amount = investment_amount
        if unit_price is not None:
            self.unit_price = unit_price
        if units is not None:
            self.units = units
        if indicative_unit_price is not None:
            self.indicative_unit_price = indicative_unit_price
        if interest_income is not None:
            self.interest_income = interest_income
        if interest_amount is not None:
            self.interest_amount = interest_amount
        if profit_amount is not None:
            self.profit_amount = profit_amount
        if profit_rate is not None:
            self.profit_rate = profit_rate
        if asset_class is not None:
            self.asset_class = asset_class
        if product_type is not None:
            self.product_type = product_type
        if total_unit_value is not None:
            self.total_unit_value = total_unit_value
        if fund_holdings is not None:
            self.fund_holdings = fund_holdings
        GeneralAccountExtra.__init__(self, *args, **kwargs)

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

        frequency of premium payments  # noqa: E501

        :return: The premium_frequency of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._premium_frequency

    @premium_frequency.setter
    def premium_frequency(self, premium_frequency):
        """Sets the premium_frequency of this AccountExtra.

        frequency of premium payments  # noqa: E501

        :param premium_frequency: The premium_frequency of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._premium_frequency = premium_frequency

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

        current policy status  # noqa: E501

        :return: The policy_status of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._policy_status

    @policy_status.setter
    def policy_status(self, policy_status):
        """Sets the policy_status of this AccountExtra.

        current policy status  # noqa: E501

        :param policy_status: The policy_status of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._policy_status = policy_status

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

        name of the person who is assured  # noqa: E501

        :return: The life_assured_name of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._life_assured_name

    @life_assured_name.setter
    def life_assured_name(self, life_assured_name):
        """Sets the life_assured_name of this AccountExtra.

        name of the person who is assured  # noqa: E501

        :param life_assured_name: The life_assured_name of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._life_assured_name = life_assured_name

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

        premium amount to be paid  # noqa: E501

        :return: The premium_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._premium_amount

    @premium_amount.setter
    def premium_amount(self, premium_amount):
        """Sets the premium_amount of this AccountExtra.

        premium amount to be paid  # noqa: E501

        :param premium_amount: The premium_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._premium_amount = premium_amount

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

        single premium amount to be paid  # noqa: E501

        :return: The single_premium_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._single_premium_amount

    @single_premium_amount.setter
    def single_premium_amount(self, single_premium_amount):
        """Sets the single_premium_amount of this AccountExtra.

        single premium amount to be paid  # noqa: E501

        :param single_premium_amount: The single_premium_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._single_premium_amount = single_premium_amount

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

        financial consultant name  # noqa: E501

        :return: The financial_consultant of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._financial_consultant

    @financial_consultant.setter
    def financial_consultant(self, financial_consultant):
        """Sets the financial_consultant of this AccountExtra.

        financial consultant name  # noqa: E501

        :param financial_consultant: The financial_consultant of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._financial_consultant = financial_consultant

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

        reversionary bonus accumulated amount  # noqa: E501

        :return: The total_reversionary_bonus of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._total_reversionary_bonus

    @total_reversionary_bonus.setter
    def total_reversionary_bonus(self, total_reversionary_bonus):
        """Sets the total_reversionary_bonus of this AccountExtra.

        reversionary bonus accumulated amount  # noqa: E501

        :param total_reversionary_bonus: The total_reversionary_bonus of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._total_reversionary_bonus = total_reversionary_bonus

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

        current Gross Surrender value  # noqa: E501

        :return: The gross_surrender of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._gross_surrender

    @gross_surrender.setter
    def gross_surrender(self, gross_surrender):
        """Sets the gross_surrender of this AccountExtra.

        current Gross Surrender value  # noqa: E501

        :param gross_surrender: The gross_surrender of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._gross_surrender = gross_surrender

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

        guaranteed Gross Surrender value  # noqa: E501

        :return: The guaranteed_gross_surrender of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._guaranteed_gross_surrender

    @guaranteed_gross_surrender.setter
    def guaranteed_gross_surrender(self, guaranteed_gross_surrender):
        """Sets the guaranteed_gross_surrender of this AccountExtra.

        guaranteed Gross Surrender value  # noqa: E501

        :param guaranteed_gross_surrender: The guaranteed_gross_surrender of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._guaranteed_gross_surrender = guaranteed_gross_surrender

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

        cash value of reversionary bonus  # noqa: E501

        :return: The reversionary_bonus_cash_value of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._reversionary_bonus_cash_value

    @reversionary_bonus_cash_value.setter
    def reversionary_bonus_cash_value(self, reversionary_bonus_cash_value):
        """Sets the reversionary_bonus_cash_value of this AccountExtra.

        cash value of reversionary bonus  # noqa: E501

        :param reversionary_bonus_cash_value: The reversionary_bonus_cash_value of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._reversionary_bonus_cash_value = reversionary_bonus_cash_value

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

        amount currently own on policy  # noqa: E501

        :return: The owned_policy_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._owned_policy_amount

    @owned_policy_amount.setter
    def owned_policy_amount(self, owned_policy_amount):
        """Sets the owned_policy_amount of this AccountExtra.

        amount currently own on policy  # noqa: E501

        :param owned_policy_amount: The owned_policy_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._owned_policy_amount = owned_policy_amount

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

        maximum amount of additional Policy Loan  # noqa: E501

        :return: The policy_loan_limit of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._policy_loan_limit

    @policy_loan_limit.setter
    def policy_loan_limit(self, policy_loan_limit):
        """Sets the policy_loan_limit of this AccountExtra.

        maximum amount of additional Policy Loan  # noqa: E501

        :param policy_loan_limit: The policy_loan_limit of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._policy_loan_limit = policy_loan_limit

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

        new assured sum if Policy is converted to paid up  # noqa: E501

        :return: The policy_converted_to_paid_up of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._policy_converted_to_paid_up

    @policy_converted_to_paid_up.setter
    def policy_converted_to_paid_up(self, policy_converted_to_paid_up):
        """Sets the policy_converted_to_paid_up of this AccountExtra.

        new assured sum if Policy is converted to paid up  # noqa: E501

        :param policy_converted_to_paid_up: The policy_converted_to_paid_up of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._policy_converted_to_paid_up = policy_converted_to_paid_up

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

        reversionary bonus amount after `Policy to paid up` conversion  # noqa: E501

        :return: The paid_up_conversion_reversionary_bonus of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._paid_up_conversion_reversionary_bonus

    @paid_up_conversion_reversionary_bonus.setter
    def paid_up_conversion_reversionary_bonus(self, paid_up_conversion_reversionary_bonus):
        """Sets the paid_up_conversion_reversionary_bonus of this AccountExtra.

        reversionary bonus amount after `Policy to paid up` conversion  # noqa: E501

        :param paid_up_conversion_reversionary_bonus: The paid_up_conversion_reversionary_bonus of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._paid_up_conversion_reversionary_bonus = paid_up_conversion_reversionary_bonus

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

        policy components with own values such as (`status`, `amount_assured`, `amount_premium`, `start_date`, `expiry_date`, `premium_expiry_date`, `assured_name`)\"  # noqa: E501

        :return: The policy_components of this AccountExtra.  # noqa: E501
        :rtype: object
        """
        return self._policy_components

    @policy_components.setter
    def policy_components(self, policy_components):
        """Sets the policy_components of this AccountExtra.

        policy components with own values such as (`status`, `amount_assured`, `amount_premium`, `start_date`, `expiry_date`, `premium_expiry_date`, `assured_name`)\"  # noqa: E501

        :param policy_components: The policy_components of this AccountExtra.  # noqa: E501
        :type: object
        """

        self._policy_components = policy_components

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

        total invested amount  # noqa: E501

        :return: The investment_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._investment_amount

    @investment_amount.setter
    def investment_amount(self, investment_amount):
        """Sets the investment_amount of this AccountExtra.

        total invested amount  # noqa: E501

        :param investment_amount: The investment_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._investment_amount = investment_amount

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

        price per unit (used with units)  # noqa: E501

        :return: The unit_price of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._unit_price

    @unit_price.setter
    def unit_price(self, unit_price):
        """Sets the unit_price of this AccountExtra.

        price per unit (used with units)  # noqa: E501

        :param unit_price: The unit_price of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._unit_price = unit_price

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

        amount of units owned (used with unit_price)  # noqa: E501

        :return: The units of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._units

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

        amount of units owned (used with unit_price)  # noqa: E501

        :param units: The units of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._units = units

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

        indicative price per unit (used with units)  # noqa: E501

        :return: The indicative_unit_price of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._indicative_unit_price

    @indicative_unit_price.setter
    def indicative_unit_price(self, indicative_unit_price):
        """Sets the indicative_unit_price of this AccountExtra.

        indicative price per unit (used with units)  # noqa: E501

        :param indicative_unit_price: The indicative_unit_price of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._indicative_unit_price = indicative_unit_price

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

        amount of interest income/profit  # noqa: E501

        :return: The interest_income of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._interest_income

    @interest_income.setter
    def interest_income(self, interest_income):
        """Sets the interest_income of this AccountExtra.

        amount of interest income/profit  # noqa: E501

        :param interest_income: The interest_income of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._interest_income = interest_income

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

        interest amount in currency  # noqa: E501

        :return: The interest_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._interest_amount

    @interest_amount.setter
    def interest_amount(self, interest_amount):
        """Sets the interest_amount of this AccountExtra.

        interest amount in currency  # noqa: E501

        :param interest_amount: The interest_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._interest_amount = interest_amount

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

        amount of profit/loss of investment account  # noqa: E501

        :return: The profit_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._profit_amount

    @profit_amount.setter
    def profit_amount(self, profit_amount):
        """Sets the profit_amount of this AccountExtra.

        amount of profit/loss of investment account  # noqa: E501

        :param profit_amount: The profit_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._profit_amount = profit_amount

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

        investment account rate of profit/loss as percentage value  # noqa: E501

        :return: The profit_rate of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._profit_rate

    @profit_rate.setter
    def profit_rate(self, profit_rate):
        """Sets the profit_rate of this AccountExtra.

        investment account rate of profit/loss as percentage value  # noqa: E501

        :param profit_rate: The profit_rate of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._profit_rate = profit_rate

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

        class of investment asset  # noqa: E501

        :return: The asset_class of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._asset_class

    @asset_class.setter
    def asset_class(self, asset_class):
        """Sets the asset_class of this AccountExtra.

        class of investment asset  # noqa: E501

        :param asset_class: The asset_class of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._asset_class = asset_class

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

        investment product type  # noqa: E501

        :return: The product_type of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._product_type

    @product_type.setter
    def product_type(self, product_type):
        """Sets the product_type of this AccountExtra.

        investment product type  # noqa: E501

        :param product_type: The product_type of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._product_type = product_type

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

        total units value of fund holding  # noqa: E501

        :return: The total_unit_value of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._total_unit_value

    @total_unit_value.setter
    def total_unit_value(self, total_unit_value):
        """Sets the total_unit_value of this AccountExtra.

        total units value of fund holding  # noqa: E501

        :param total_unit_value: The total_unit_value of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._total_unit_value = total_unit_value

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

        fund holdings list with own values such as (`investment_percentage`, `balance`, `bid_price`, `value`, `value_date`, `total_quantity`, `available_quantity`, `actual_price`, `actual_value`)\"  # noqa: E501

        :return: The fund_holdings of this AccountExtra.  # noqa: E501
        :rtype: object
        """
        return self._fund_holdings

    @fund_holdings.setter
    def fund_holdings(self, fund_holdings):
        """Sets the fund_holdings of this AccountExtra.

        fund holdings list with own values such as (`investment_percentage`, `balance`, `bid_price`, `value`, `value_date`, `total_quantity`, `available_quantity`, `actual_price`, `actual_value`)\"  # noqa: E501

        :param fund_holdings: The fund_holdings of this AccountExtra.  # noqa: E501
        :type: object
        """

        self._fund_holdings = fund_holdings

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

        return self.__dict__ == other.__dict__

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

# coding: utf-8

"""
    Salt Edge Account Information API

    API Reference for services  # noqa: E501

    OpenAPI spec version: 5.0.0
    Contact: <EMAIL>
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six
from swagger_client.models.general_account_extra import GeneralAccountExtra  # noqa: F401,E501

class AccountExtra(GeneralAccountExtra):
    """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 = {
        'premium_frequency': 'str',
        'policy_status': 'str',
        'life_assured_name': 'str',
        'premium_amount': 'float',
        'single_premium_amount': 'float',
        'financial_consultant': 'str',
        'total_reversionary_bonus': 'float',
        'gross_surrender': 'float',
        'guaranteed_gross_surrender': 'float',
        'reversionary_bonus_cash_value': 'float',
        'owned_policy_amount': 'float',
        'policy_loan_limit': 'float',
        'policy_converted_to_paid_up': 'float',
        'paid_up_conversion_reversionary_bonus': 'float',
        'policy_components': 'object',
        'investment_amount': 'float',
        'unit_price': 'float',
        'units': 'float',
        'indicative_unit_price': 'float',
        'interest_income': 'float',
        'interest_amount': 'float',
        'profit_amount': 'float',
        'profit_rate': 'float',
        'asset_class': 'str',
        'product_type': 'str',
        'total_unit_value': 'float',
        'fund_holdings': 'object'
    }
    if hasattr(GeneralAccountExtra, "swagger_types"):
        swagger_types.update(GeneralAccountExtra.swagger_types)

    attribute_map = {
        'premium_frequency': 'premium_frequency',
        'policy_status': 'policy_status',
        'life_assured_name': 'life_assured_name',
        'premium_amount': 'premium_amount',
        'single_premium_amount': 'single_premium_amount',
        'financial_consultant': 'financial_consultant',
        'total_reversionary_bonus': 'total_reversionary_bonus',
        'gross_surrender': 'gross_surrender',
        'guaranteed_gross_surrender': 'guaranteed_gross_surrender',
        'reversionary_bonus_cash_value': 'reversionary_bonus_cash_value',
        'owned_policy_amount': 'owned_policy_amount',
        'policy_loan_limit': 'policy_loan_limit',
        'policy_converted_to_paid_up': 'policy_converted_to_paid_up',
        'paid_up_conversion_reversionary_bonus': 'paid_up_conversion_reversionary_bonus',
        'policy_components': 'policy_components',
        'investment_amount': 'investment_amount',
        'unit_price': 'unit_price',
        'units': 'units',
        'indicative_unit_price': 'indicative_unit_price',
        'interest_income': 'interest_income',
        'interest_amount': 'interest_amount',
        'profit_amount': 'profit_amount',
        'profit_rate': 'profit_rate',
        'asset_class': 'asset_class',
        'product_type': 'product_type',
        'total_unit_value': 'total_unit_value',
        'fund_holdings': 'fund_holdings'
    }
    if hasattr(GeneralAccountExtra, "attribute_map"):
        attribute_map.update(GeneralAccountExtra.attribute_map)

    def __init__(self, premium_frequency=None, policy_status=None, life_assured_name=None, premium_amount=None, single_premium_amount=None, financial_consultant=None, total_reversionary_bonus=None, gross_surrender=None, guaranteed_gross_surrender=None, reversionary_bonus_cash_value=None, owned_policy_amount=None, policy_loan_limit=None, policy_converted_to_paid_up=None, paid_up_conversion_reversionary_bonus=None, policy_components=None, investment_amount=None, unit_price=None, units=None, indicative_unit_price=None, interest_income=None, interest_amount=None, profit_amount=None, profit_rate=None, asset_class=None, product_type=None, total_unit_value=None, fund_holdings=None, *args, **kwargs):  # noqa: E501
        """AccountExtra - a model defined in Swagger"""  # noqa: E501
        self._premium_frequency = None
        self._policy_status = None
        self._life_assured_name = None
        self._premium_amount = None
        self._single_premium_amount = None
        self._financial_consultant = None
        self._total_reversionary_bonus = None
        self._gross_surrender = None
        self._guaranteed_gross_surrender = None
        self._reversionary_bonus_cash_value = None
        self._owned_policy_amount = None
        self._policy_loan_limit = None
        self._policy_converted_to_paid_up = None
        self._paid_up_conversion_reversionary_bonus = None
        self._policy_components = None
        self._investment_amount = None
        self._unit_price = None
        self._units = None
        self._indicative_unit_price = None
        self._interest_income = None
        self._interest_amount = None
        self._profit_amount = None
        self._profit_rate = None
        self._asset_class = None
        self._product_type = None
        self._total_unit_value = None
        self._fund_holdings = None
        self.discriminator = None
        if premium_frequency is not None:
            self.premium_frequency = premium_frequency
        if policy_status is not None:
            self.policy_status = policy_status
        if life_assured_name is not None:
            self.life_assured_name = life_assured_name
        if premium_amount is not None:
            self.premium_amount = premium_amount
        if single_premium_amount is not None:
            self.single_premium_amount = single_premium_amount
        if financial_consultant is not None:
            self.financial_consultant = financial_consultant
        if total_reversionary_bonus is not None:
            self.total_reversionary_bonus = total_reversionary_bonus
        if gross_surrender is not None:
            self.gross_surrender = gross_surrender
        if guaranteed_gross_surrender is not None:
            self.guaranteed_gross_surrender = guaranteed_gross_surrender
        if reversionary_bonus_cash_value is not None:
            self.reversionary_bonus_cash_value = reversionary_bonus_cash_value
        if owned_policy_amount is not None:
            self.owned_policy_amount = owned_policy_amount
        if policy_loan_limit is not None:
            self.policy_loan_limit = policy_loan_limit
        if policy_converted_to_paid_up is not None:
            self.policy_converted_to_paid_up = policy_converted_to_paid_up
        if paid_up_conversion_reversionary_bonus is not None:
            self.paid_up_conversion_reversionary_bonus = paid_up_conversion_reversionary_bonus
        if policy_components is not None:
            self.policy_components = policy_components
        if investment_amount is not None:
            self.investment_amount = investment_amount
        if unit_price is not None:
            self.unit_price = unit_price
        if units is not None:
            self.units = units
        if indicative_unit_price is not None:
            self.indicative_unit_price = indicative_unit_price
        if interest_income is not None:
            self.interest_income = interest_income
        if interest_amount is not None:
            self.interest_amount = interest_amount
        if profit_amount is not None:
            self.profit_amount = profit_amount
        if profit_rate is not None:
            self.profit_rate = profit_rate
        if asset_class is not None:
            self.asset_class = asset_class
        if product_type is not None:
            self.product_type = product_type
        if total_unit_value is not None:
            self.total_unit_value = total_unit_value
        if fund_holdings is not None:
            self.fund_holdings = fund_holdings
        GeneralAccountExtra.__init__(self, *args, **kwargs)

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

        frequency of premium payments  # noqa: E501

        :return: The premium_frequency of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._premium_frequency

    @premium_frequency.setter
    def premium_frequency(self, premium_frequency):
        """Sets the premium_frequency of this AccountExtra.

        frequency of premium payments  # noqa: E501

        :param premium_frequency: The premium_frequency of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._premium_frequency = premium_frequency

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

        current policy status  # noqa: E501

        :return: The policy_status of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._policy_status

    @policy_status.setter
    def policy_status(self, policy_status):
        """Sets the policy_status of this AccountExtra.

        current policy status  # noqa: E501

        :param policy_status: The policy_status of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._policy_status = policy_status

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

        name of the person who is assured  # noqa: E501

        :return: The life_assured_name of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._life_assured_name

    @life_assured_name.setter
    def life_assured_name(self, life_assured_name):
        """Sets the life_assured_name of this AccountExtra.

        name of the person who is assured  # noqa: E501

        :param life_assured_name: The life_assured_name of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._life_assured_name = life_assured_name

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

        premium amount to be paid  # noqa: E501

        :return: The premium_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._premium_amount

    @premium_amount.setter
    def premium_amount(self, premium_amount):
        """Sets the premium_amount of this AccountExtra.

        premium amount to be paid  # noqa: E501

        :param premium_amount: The premium_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._premium_amount = premium_amount

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

        single premium amount to be paid  # noqa: E501

        :return: The single_premium_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._single_premium_amount

    @single_premium_amount.setter
    def single_premium_amount(self, single_premium_amount):
        """Sets the single_premium_amount of this AccountExtra.

        single premium amount to be paid  # noqa: E501

        :param single_premium_amount: The single_premium_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._single_premium_amount = single_premium_amount

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

        financial consultant name  # noqa: E501

        :return: The financial_consultant of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._financial_consultant

    @financial_consultant.setter
    def financial_consultant(self, financial_consultant):
        """Sets the financial_consultant of this AccountExtra.

        financial consultant name  # noqa: E501

        :param financial_consultant: The financial_consultant of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._financial_consultant = financial_consultant

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

        reversionary bonus accumulated amount  # noqa: E501

        :return: The total_reversionary_bonus of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._total_reversionary_bonus

    @total_reversionary_bonus.setter
    def total_reversionary_bonus(self, total_reversionary_bonus):
        """Sets the total_reversionary_bonus of this AccountExtra.

        reversionary bonus accumulated amount  # noqa: E501

        :param total_reversionary_bonus: The total_reversionary_bonus of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._total_reversionary_bonus = total_reversionary_bonus

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

        current Gross Surrender value  # noqa: E501

        :return: The gross_surrender of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._gross_surrender

    @gross_surrender.setter
    def gross_surrender(self, gross_surrender):
        """Sets the gross_surrender of this AccountExtra.

        current Gross Surrender value  # noqa: E501

        :param gross_surrender: The gross_surrender of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._gross_surrender = gross_surrender

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

        guaranteed Gross Surrender value  # noqa: E501

        :return: The guaranteed_gross_surrender of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._guaranteed_gross_surrender

    @guaranteed_gross_surrender.setter
    def guaranteed_gross_surrender(self, guaranteed_gross_surrender):
        """Sets the guaranteed_gross_surrender of this AccountExtra.

        guaranteed Gross Surrender value  # noqa: E501

        :param guaranteed_gross_surrender: The guaranteed_gross_surrender of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._guaranteed_gross_surrender = guaranteed_gross_surrender

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

        cash value of reversionary bonus  # noqa: E501

        :return: The reversionary_bonus_cash_value of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._reversionary_bonus_cash_value

    @reversionary_bonus_cash_value.setter
    def reversionary_bonus_cash_value(self, reversionary_bonus_cash_value):
        """Sets the reversionary_bonus_cash_value of this AccountExtra.

        cash value of reversionary bonus  # noqa: E501

        :param reversionary_bonus_cash_value: The reversionary_bonus_cash_value of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._reversionary_bonus_cash_value = reversionary_bonus_cash_value

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

        amount currently own on policy  # noqa: E501

        :return: The owned_policy_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._owned_policy_amount

    @owned_policy_amount.setter
    def owned_policy_amount(self, owned_policy_amount):
        """Sets the owned_policy_amount of this AccountExtra.

        amount currently own on policy  # noqa: E501

        :param owned_policy_amount: The owned_policy_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._owned_policy_amount = owned_policy_amount

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

        maximum amount of additional Policy Loan  # noqa: E501

        :return: The policy_loan_limit of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._policy_loan_limit

    @policy_loan_limit.setter
    def policy_loan_limit(self, policy_loan_limit):
        """Sets the policy_loan_limit of this AccountExtra.

        maximum amount of additional Policy Loan  # noqa: E501

        :param policy_loan_limit: The policy_loan_limit of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._policy_loan_limit = policy_loan_limit

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

        new assured sum if Policy is converted to paid up  # noqa: E501

        :return: The policy_converted_to_paid_up of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._policy_converted_to_paid_up

    @policy_converted_to_paid_up.setter
    def policy_converted_to_paid_up(self, policy_converted_to_paid_up):
        """Sets the policy_converted_to_paid_up of this AccountExtra.

        new assured sum if Policy is converted to paid up  # noqa: E501

        :param policy_converted_to_paid_up: The policy_converted_to_paid_up of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._policy_converted_to_paid_up = policy_converted_to_paid_up

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

        reversionary bonus amount after `Policy to paid up` conversion  # noqa: E501

        :return: The paid_up_conversion_reversionary_bonus of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._paid_up_conversion_reversionary_bonus

    @paid_up_conversion_reversionary_bonus.setter
    def paid_up_conversion_reversionary_bonus(self, paid_up_conversion_reversionary_bonus):
        """Sets the paid_up_conversion_reversionary_bonus of this AccountExtra.

        reversionary bonus amount after `Policy to paid up` conversion  # noqa: E501

        :param paid_up_conversion_reversionary_bonus: The paid_up_conversion_reversionary_bonus of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._paid_up_conversion_reversionary_bonus = paid_up_conversion_reversionary_bonus

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

        policy components with own values such as (`status`, `amount_assured`, `amount_premium`, `start_date`, `expiry_date`, `premium_expiry_date`, `assured_name`)\"  # noqa: E501

        :return: The policy_components of this AccountExtra.  # noqa: E501
        :rtype: object
        """
        return self._policy_components

    @policy_components.setter
    def policy_components(self, policy_components):
        """Sets the policy_components of this AccountExtra.

        policy components with own values such as (`status`, `amount_assured`, `amount_premium`, `start_date`, `expiry_date`, `premium_expiry_date`, `assured_name`)\"  # noqa: E501

        :param policy_components: The policy_components of this AccountExtra.  # noqa: E501
        :type: object
        """

        self._policy_components = policy_components

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

        total invested amount  # noqa: E501

        :return: The investment_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._investment_amount

    @investment_amount.setter
    def investment_amount(self, investment_amount):
        """Sets the investment_amount of this AccountExtra.

        total invested amount  # noqa: E501

        :param investment_amount: The investment_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._investment_amount = investment_amount

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

        price per unit (used with units)  # noqa: E501

        :return: The unit_price of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._unit_price

    @unit_price.setter
    def unit_price(self, unit_price):
        """Sets the unit_price of this AccountExtra.

        price per unit (used with units)  # noqa: E501

        :param unit_price: The unit_price of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._unit_price = unit_price

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

        amount of units owned (used with unit_price)  # noqa: E501

        :return: The units of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._units

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

        amount of units owned (used with unit_price)  # noqa: E501

        :param units: The units of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._units = units

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

        indicative price per unit (used with units)  # noqa: E501

        :return: The indicative_unit_price of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._indicative_unit_price

    @indicative_unit_price.setter
    def indicative_unit_price(self, indicative_unit_price):
        """Sets the indicative_unit_price of this AccountExtra.

        indicative price per unit (used with units)  # noqa: E501

        :param indicative_unit_price: The indicative_unit_price of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._indicative_unit_price = indicative_unit_price

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

        amount of interest income/profit  # noqa: E501

        :return: The interest_income of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._interest_income

    @interest_income.setter
    def interest_income(self, interest_income):
        """Sets the interest_income of this AccountExtra.

        amount of interest income/profit  # noqa: E501

        :param interest_income: The interest_income of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._interest_income = interest_income

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

        interest amount in currency  # noqa: E501

        :return: The interest_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._interest_amount

    @interest_amount.setter
    def interest_amount(self, interest_amount):
        """Sets the interest_amount of this AccountExtra.

        interest amount in currency  # noqa: E501

        :param interest_amount: The interest_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._interest_amount = interest_amount

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

        amount of profit/loss of investment account  # noqa: E501

        :return: The profit_amount of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._profit_amount

    @profit_amount.setter
    def profit_amount(self, profit_amount):
        """Sets the profit_amount of this AccountExtra.

        amount of profit/loss of investment account  # noqa: E501

        :param profit_amount: The profit_amount of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._profit_amount = profit_amount

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

        investment account rate of profit/loss as percentage value  # noqa: E501

        :return: The profit_rate of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._profit_rate

    @profit_rate.setter
    def profit_rate(self, profit_rate):
        """Sets the profit_rate of this AccountExtra.

        investment account rate of profit/loss as percentage value  # noqa: E501

        :param profit_rate: The profit_rate of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._profit_rate = profit_rate

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

        class of investment asset  # noqa: E501

        :return: The asset_class of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._asset_class

    @asset_class.setter
    def asset_class(self, asset_class):
        """Sets the asset_class of this AccountExtra.

        class of investment asset  # noqa: E501

        :param asset_class: The asset_class of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._asset_class = asset_class

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

        investment product type  # noqa: E501

        :return: The product_type of this AccountExtra.  # noqa: E501
        :rtype: str
        """
        return self._product_type

    @product_type.setter
    def product_type(self, product_type):
        """Sets the product_type of this AccountExtra.

        investment product type  # noqa: E501

        :param product_type: The product_type of this AccountExtra.  # noqa: E501
        :type: str
        """

        self._product_type = product_type

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

        total units value of fund holding  # noqa: E501

        :return: The total_unit_value of this AccountExtra.  # noqa: E501
        :rtype: float
        """
        return self._total_unit_value

    @total_unit_value.setter
    def total_unit_value(self, total_unit_value):
        """Sets the total_unit_value of this AccountExtra.

        total units value of fund holding  # noqa: E501

        :param total_unit_value: The total_unit_value of this AccountExtra.  # noqa: E501
        :type: float
        """

        self._total_unit_value = total_unit_value

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

        fund holdings list with own values such as (`investment_percentage`, `balance`, `bid_price`, `value`, `value_date`, `total_quantity`, `available_quantity`, `actual_price`, `actual_value`)\"  # noqa: E501

        :return: The fund_holdings of this AccountExtra.  # noqa: E501
        :rtype: object
        """
        return self._fund_holdings

    @fund_holdings.setter
    def fund_holdings(self, fund_holdings):
        """Sets the fund_holdings of this AccountExtra.

        fund holdings list with own values such as (`investment_percentage`, `balance`, `bid_price`, `value`, `value_date`, `total_quantity`, `available_quantity`, `actual_price`, `actual_value`)\"  # noqa: E501

        :param fund_holdings: The fund_holdings of this AccountExtra.  # noqa: E501
        :type: object
        """

        self._fund_holdings = fund_holdings

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

        return self.__dict__ == other.__dict__

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

# coding: utf-8 Salt Edge Account Information API      API Reference for services  # noqa: E501      OpenAPI spec version: 5.0.0     Contact: <EMAIL>     Generated by: https://github.com/swagger-api/swagger-codegen.git # noqa: F401 # noqa: F401,E501 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. # noqa: E501 AccountExtra - a model defined in Swagger # noqa: E501 Gets the premium_frequency of this AccountExtra.  # noqa: E501          frequency of premium payments  # noqa: E501          :return: The premium_frequency of this AccountExtra.  # noqa: E501         :rtype: str Sets the premium_frequency of this AccountExtra.          frequency of premium payments  # noqa: E501          :param premium_frequency: The premium_frequency of this AccountExtra.  # noqa: E501         :type: str Gets the policy_status of this AccountExtra.  # noqa: E501          current policy status  # noqa: E501          :return: The policy_status of this AccountExtra.  # noqa: E501         :rtype: str Sets the policy_status of this AccountExtra.          current policy status  # noqa: E501          :param policy_status: The policy_status of this AccountExtra.  # noqa: E501         :type: str Gets the life_assured_name of this AccountExtra.  # noqa: E501          name of the person who is assured  # noqa: E501          :return: The life_assured_name of this AccountExtra.  # noqa: E501         :rtype: str Sets the life_assured_name of this AccountExtra.          name of the person who is assured  # noqa: E501          :param life_assured_name: The life_assured_name of this AccountExtra.  # noqa: E501         :type: str Gets the premium_amount of this AccountExtra.  # noqa: E501          premium amount to be paid  # noqa: E501          :return: The premium_amount of this AccountExtra.  # noqa: E501         :rtype: float Sets the premium_amount of this AccountExtra.          premium amount to be paid  # noqa: E501          :param premium_amount: The premium_amount of this AccountExtra.  # noqa: E501         :type: float Gets the single_premium_amount of this AccountExtra.  # noqa: E501          single premium amount to be paid  # noqa: E501          :return: The single_premium_amount of this AccountExtra.  # noqa: E501         :rtype: float Sets the single_premium_amount of this AccountExtra.          single premium amount to be paid  # noqa: E501          :param single_premium_amount: The single_premium_amount of this AccountExtra.  # noqa: E501         :type: float Gets the financial_consultant of this AccountExtra.  # noqa: E501          financial consultant name  # noqa: E501          :return: The financial_consultant of this AccountExtra.  # noqa: E501         :rtype: str Sets the financial_consultant of this AccountExtra.          financial consultant name  # noqa: E501          :param financial_consultant: The financial_consultant of this AccountExtra.  # noqa: E501         :type: str Gets the total_reversionary_bonus of this AccountExtra.  # noqa: E501          reversionary bonus accumulated amount  # noqa: E501          :return: The total_reversionary_bonus of this AccountExtra.  # noqa: E501         :rtype: float Sets the total_reversionary_bonus of this AccountExtra.          reversionary bonus accumulated amount  # noqa: E501          :param total_reversionary_bonus: The total_reversionary_bonus of this AccountExtra.  # noqa: E501         :type: float Gets the gross_surrender of this AccountExtra.  # noqa: E501          current Gross Surrender value  # noqa: E501          :return: The gross_surrender of this AccountExtra.  # noqa: E501         :rtype: float Sets the gross_surrender of this AccountExtra.          current Gross Surrender value  # noqa: E501          :param gross_surrender: The gross_surrender of this AccountExtra.  # noqa: E501         :type: float Gets the guaranteed_gross_surrender of this AccountExtra.  # noqa: E501          guaranteed Gross Surrender value  # noqa: E501          :return: The guaranteed_gross_surrender of this AccountExtra.  # noqa: E501         :rtype: float Sets the guaranteed_gross_surrender of this AccountExtra.          guaranteed Gross Surrender value  # noqa: E501          :param guaranteed_gross_surrender: The guaranteed_gross_surrender of this AccountExtra.  # noqa: E501         :type: float Gets the reversionary_bonus_cash_value of this AccountExtra.  # noqa: E501          cash value of reversionary bonus  # noqa: E501          :return: The reversionary_bonus_cash_value of this AccountExtra.  # noqa: E501         :rtype: float Sets the reversionary_bonus_cash_value of this AccountExtra.          cash value of reversionary bonus  # noqa: E501          :param reversionary_bonus_cash_value: The reversionary_bonus_cash_value of this AccountExtra.  # noqa: E501         :type: float Gets the owned_policy_amount of this AccountExtra.  # noqa: E501          amount currently own on policy  # noqa: E501          :return: The owned_policy_amount of this AccountExtra.  # noqa: E501         :rtype: float Sets the owned_policy_amount of this AccountExtra.          amount currently own on policy  # noqa: E501          :param owned_policy_amount: The owned_policy_amount of this AccountExtra.  # noqa: E501         :type: float Gets the policy_loan_limit of this AccountExtra.  # noqa: E501          maximum amount of additional Policy Loan  # noqa: E501          :return: The policy_loan_limit of this AccountExtra.  # noqa: E501         :rtype: float Sets the policy_loan_limit of this AccountExtra.          maximum amount of additional Policy Loan  # noqa: E501          :param policy_loan_limit: The policy_loan_limit of this AccountExtra.  # noqa: E501         :type: float Gets the policy_converted_to_paid_up of this AccountExtra.  # noqa: E501          new assured sum if Policy is converted to paid up  # noqa: E501          :return: The policy_converted_to_paid_up of this AccountExtra.  # noqa: E501         :rtype: float Sets the policy_converted_to_paid_up of this AccountExtra.          new assured sum if Policy is converted to paid up  # noqa: E501          :param policy_converted_to_paid_up: The policy_converted_to_paid_up of this AccountExtra.  # noqa: E501         :type: float Gets the paid_up_conversion_reversionary_bonus of this AccountExtra.  # noqa: E501          reversionary bonus amount after `Policy to paid up` conversion  # noqa: E501          :return: The paid_up_conversion_reversionary_bonus of this AccountExtra.  # noqa: E501         :rtype: float Sets the paid_up_conversion_reversionary_bonus of this AccountExtra.          reversionary bonus amount after `Policy to paid up` conversion  # noqa: E501          :param paid_up_conversion_reversionary_bonus: The paid_up_conversion_reversionary_bonus of this AccountExtra.  # noqa: E501         :type: float Gets the policy_components of this AccountExtra.  # noqa: E501          policy components with own values such as (`status`, `amount_assured`, `amount_premium`, `start_date`, `expiry_date`, `premium_expiry_date`, `assured_name`)\"  # noqa: E501          :return: The policy_components of this AccountExtra.  # noqa: E501         :rtype: object Sets the policy_components of this AccountExtra.          policy components with own values such as (`status`, `amount_assured`, `amount_premium`, `start_date`, `expiry_date`, `premium_expiry_date`, `assured_name`)\"  # noqa: E501          :param policy_components: The policy_components of this AccountExtra.  # noqa: E501         :type: object Gets the investment_amount of this AccountExtra.  # noqa: E501          total invested amount  # noqa: E501          :return: The investment_amount of this AccountExtra.  # noqa: E501         :rtype: float Sets the investment_amount of this AccountExtra.          total invested amount  # noqa: E501          :param investment_amount: The investment_amount of this AccountExtra.  # noqa: E501         :type: float Gets the unit_price of this AccountExtra.  # noqa: E501          price per unit (used with units)  # noqa: E501          :return: The unit_price of this AccountExtra.  # noqa: E501         :rtype: float Sets the unit_price of this AccountExtra.          price per unit (used with units)  # noqa: E501          :param unit_price: The unit_price of this AccountExtra.  # noqa: E501         :type: float Gets the units of this AccountExtra.  # noqa: E501          amount of units owned (used with unit_price)  # noqa: E501          :return: The units of this AccountExtra.  # noqa: E501         :rtype: float Sets the units of this AccountExtra.          amount of units owned (used with unit_price)  # noqa: E501          :param units: The units of this AccountExtra.  # noqa: E501         :type: float Gets the indicative_unit_price of this AccountExtra.  # noqa: E501          indicative price per unit (used with units)  # noqa: E501          :return: The indicative_unit_price of this AccountExtra.  # noqa: E501         :rtype: float Sets the indicative_unit_price of this AccountExtra.          indicative price per unit (used with units)  # noqa: E501          :param indicative_unit_price: The indicative_unit_price of this AccountExtra.  # noqa: E501         :type: float Gets the interest_income of this AccountExtra.  # noqa: E501          amount of interest income/profit  # noqa: E501          :return: The interest_income of this AccountExtra.  # noqa: E501         :rtype: float Sets the interest_income of this AccountExtra.          amount of interest income/profit  # noqa: E501          :param interest_income: The interest_income of this AccountExtra.  # noqa: E501         :type: float Gets the interest_amount of this AccountExtra.  # noqa: E501          interest amount in currency  # noqa: E501          :return: The interest_amount of this AccountExtra.  # noqa: E501         :rtype: float Sets the interest_amount of this AccountExtra.          interest amount in currency  # noqa: E501          :param interest_amount: The interest_amount of this AccountExtra.  # noqa: E501         :type: float Gets the profit_amount of this AccountExtra.  # noqa: E501          amount of profit/loss of investment account  # noqa: E501          :return: The profit_amount of this AccountExtra.  # noqa: E501         :rtype: float Sets the profit_amount of this AccountExtra.          amount of profit/loss of investment account  # noqa: E501          :param profit_amount: The profit_amount of this AccountExtra.  # noqa: E501         :type: float Gets the profit_rate of this AccountExtra.  # noqa: E501          investment account rate of profit/loss as percentage value  # noqa: E501          :return: The profit_rate of this AccountExtra.  # noqa: E501         :rtype: float Sets the profit_rate of this AccountExtra.          investment account rate of profit/loss as percentage value  # noqa: E501          :param profit_rate: The profit_rate of this AccountExtra.  # noqa: E501         :type: float Gets the asset_class of this AccountExtra.  # noqa: E501          class of investment asset  # noqa: E501          :return: The asset_class of this AccountExtra.  # noqa: E501         :rtype: str Sets the asset_class of this AccountExtra.          class of investment asset  # noqa: E501          :param asset_class: The asset_class of this AccountExtra.  # noqa: E501         :type: str Gets the product_type of this AccountExtra.  # noqa: E501          investment product type  # noqa: E501          :return: The product_type of this AccountExtra.  # noqa: E501         :rtype: str Sets the product_type of this AccountExtra.          investment product type  # noqa: E501          :param product_type: The product_type of this AccountExtra.  # noqa: E501         :type: str Gets the total_unit_value of this AccountExtra.  # noqa: E501          total units value of fund holding  # noqa: E501          :return: The total_unit_value of this AccountExtra.  # noqa: E501         :rtype: float Sets the total_unit_value of this AccountExtra.          total units value of fund holding  # noqa: E501          :param total_unit_value: The total_unit_value of this AccountExtra.  # noqa: E501         :type: float Gets the fund_holdings of this AccountExtra.  # noqa: E501          fund holdings list with own values such as (`investment_percentage`, `balance`, `bid_price`, `value`, `value_date`, `total_quantity`, `available_quantity`, `actual_price`, `actual_value`)\"  # noqa: E501          :return: The fund_holdings of this AccountExtra.  # noqa: E501         :rtype: object Sets the fund_holdings of this AccountExtra.          fund holdings list with own values such as (`investment_percentage`, `balance`, `bid_price`, `value`, `value_date`, `total_quantity`, `available_quantity`, `actual_price`, `actual_value`)\"  # noqa: E501          :param fund_holdings: The fund_holdings of this AccountExtra.  # noqa: E501         :type: object Returns the model properties as a dict Returns the string representation of the model For `print` and `pprint` Returns true if both objects are equal Returns true if both objects are not equal