# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class SearchAccountChildSearchAccountChild(Model):
    """SearchAccountChildSearchAccountChild.

    :param account_id: The Account identifier
    :type account_id: int
    :param account_code: The Account code <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 32 characters</span>
    :type account_code: str
    :param account_info: The Account info <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 50 characters</span>
    :type account_info: str
    :param active: Indicates whether the Account is active or inactive
    :type active: bool
    :param account_type: The type of the Account. Examples include billing,
     chargeback and invoicing
    :type account_type: ~energycap.sdk.models.AccountTypeChild
    :param vendor: The Account's vendor
    :type vendor: ~energycap.sdk.models.VendorChild
    :param address: The address of the Account
    :type address: ~energycap.sdk.models.AddressChild
    :param parent_path: The collection of cost centers representing the path
     to its parent
    :type parent_path: list[~energycap.sdk.models.CostCenterChild]
    :param has_calculated_meter: Indicates whether the Account has a child
     calculated meter
    :type has_calculated_meter: bool
    :param has_split_parent_meter: Indicates whether the Account is a
     recipient of a split
    :type has_split_parent_meter: bool
    :param has_split_child_meter: Indicates whether the Account has a child
     split meter
    :type has_split_child_meter: bool
    """

    _validation = {
        'account_code': {'required': True, 'max_length': 32, 'min_length': 0},
        'account_info': {'required': True, 'max_length': 50, 'min_length': 0},
    }

    _attribute_map = {
        'account_id': {'key': 'accountId', 'type': 'int'},
        'account_code': {'key': 'accountCode', 'type': 'str'},
        'account_info': {'key': 'accountInfo', 'type': 'str'},
        'active': {'key': 'active', 'type': 'bool'},
        'account_type': {'key': 'accountType', 'type': 'AccountTypeChild'},
        'vendor': {'key': 'vendor', 'type': 'VendorChild'},
        'address': {'key': 'address', 'type': 'AddressChild'},
        'parent_path': {'key': 'parentPath', 'type': '[CostCenterChild]'},
        'has_calculated_meter': {'key': 'hasCalculatedMeter', 'type': 'bool'},
        'has_split_parent_meter': {'key': 'hasSplitParentMeter', 'type': 'bool'},
        'has_split_child_meter': {'key': 'hasSplitChildMeter', 'type': 'bool'},
    }

    def __init__(self, account_code, account_info, account_id=None, active=None, account_type=None, vendor=None, address=None, parent_path=None, has_calculated_meter=None, has_split_parent_meter=None, has_split_child_meter=None):
        super(SearchAccountChildSearchAccountChild, self).__init__()
        self.account_id = account_id
        self.account_code = account_code
        self.account_info = account_info
        self.active = active
        self.account_type = account_type
        self.vendor = vendor
        self.address = address
        self.parent_path = parent_path
        self.has_calculated_meter = has_calculated_meter
        self.has_split_parent_meter = has_split_parent_meter
        self.has_split_child_meter = has_split_child_meter
