# 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 BillHistoryResponse(Model):
    """BillHistoryResponse.

    :param bill_id: The bill's bill id
    :type bill_id: int
    :param billing_period: The bill's billing period
    :type billing_period: int
    :param begin_date: The bill's begin date
    :type begin_date: datetime
    :param end_date: The bill's end date
    :type end_date: datetime
    :param created_date: The bill's created date
    :type created_date: datetime
    :param total_cost: The bill's total cost
    :type total_cost: float
    :param total_cost_unit:
    :type total_cost_unit: ~energycap.sdk.models.UnitChild
    :param void: The bill's void indicator
    :type void: bool
    :param accrual: The bill's accrual indicator
    :type accrual: bool
    :param invoice_number: The bill's invoice number
    :type invoice_number: str
    :param estimated: Indicates if the bill is estimated or not
    :type estimated: bool
    :param due_date: The bill's due date
    :type due_date: datetime
    :param statement_date: The bill's statement date
    :type statement_date: datetime
    :param bill_account_meters: The bill's account-meter summaries
    :type bill_account_meters:
     list[~energycap.sdk.models.BillAccountMeterChild]
    """

    _attribute_map = {
        'bill_id': {'key': 'billId', 'type': 'int'},
        'billing_period': {'key': 'billingPeriod', 'type': 'int'},
        'begin_date': {'key': 'beginDate', 'type': 'iso-8601'},
        'end_date': {'key': 'endDate', 'type': 'iso-8601'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'total_cost': {'key': 'totalCost', 'type': 'float'},
        'total_cost_unit': {'key': 'totalCostUnit', 'type': 'UnitChild'},
        'void': {'key': 'void', 'type': 'bool'},
        'accrual': {'key': 'accrual', 'type': 'bool'},
        'invoice_number': {'key': 'invoiceNumber', 'type': 'str'},
        'estimated': {'key': 'estimated', 'type': 'bool'},
        'due_date': {'key': 'dueDate', 'type': 'iso-8601'},
        'statement_date': {'key': 'statementDate', 'type': 'iso-8601'},
        'bill_account_meters': {'key': 'billAccountMeters', 'type': '[BillAccountMeterChild]'},
    }

    def __init__(self, **kwargs):
        super(BillHistoryResponse, self).__init__(**kwargs)
        self.bill_id = kwargs.get('bill_id', None)
        self.billing_period = kwargs.get('billing_period', None)
        self.begin_date = kwargs.get('begin_date', None)
        self.end_date = kwargs.get('end_date', None)
        self.created_date = kwargs.get('created_date', None)
        self.total_cost = kwargs.get('total_cost', None)
        self.total_cost_unit = kwargs.get('total_cost_unit', None)
        self.void = kwargs.get('void', None)
        self.accrual = kwargs.get('accrual', None)
        self.invoice_number = kwargs.get('invoice_number', None)
        self.estimated = kwargs.get('estimated', None)
        self.due_date = kwargs.get('due_date', None)
        self.statement_date = kwargs.get('statement_date', None)
        self.bill_account_meters = kwargs.get('bill_account_meters', None)
