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

    :param bill_contains_line_item_descriptions:
    :type bill_contains_line_item_descriptions:
     ~energycap.sdk.models.BillContainsLineItemDescriptionsSetting
    :param bill_contains_line_item_types:
    :type bill_contains_line_item_types:
     ~energycap.sdk.models.BillContainsLineItemTypesSetting
    :param total_bill_cost_does_not_match_line_item_types:
    :type total_bill_cost_does_not_match_line_item_types:
     ~energycap.sdk.models.TotalBillCostDoesNotMatchLineItemTypesSetting
    :param billing_period_outside_start_end_dates:
    :type billing_period_outside_start_end_dates:
     ~energycap.sdk.models.AuditSetting
    :param bill_overlaps_with_other_account_bill:
    :type bill_overlaps_with_other_account_bill:
     ~energycap.sdk.models.AuditSetting
    :param gap_between_bill_and_previous_bill_on_account:
    :type gap_between_bill_and_previous_bill_on_account:
     ~energycap.sdk.models.AuditSetting
    :param bill_ends_in_future:
    :type bill_ends_in_future: ~energycap.sdk.models.AuditSetting
    :param account_has_multiple_bills_in_billing_period:
    :type account_has_multiple_bills_in_billing_period:
     ~energycap.sdk.models.AuditSetting
    :param statement_date_before_end_date:
    :type statement_date_before_end_date: ~energycap.sdk.models.AuditSetting
    :param due_date_before_end_date:
    :type due_date_before_end_date: ~energycap.sdk.models.AuditSetting
    :param bill_significantly_shorter_or_longer_than_previous:
    :type bill_significantly_shorter_or_longer_than_previous:
     ~energycap.sdk.models.BillSignificantlyShorterOrLongerThanPreviousSetting
    :param too_many_consecutive_estimated_bills:
    :type too_many_consecutive_estimated_bills:
     ~energycap.sdk.models.TooManyConsecutiveEstimatedBillsSetting
    :param due_date_too_long_after_bill_end:
    :type due_date_too_long_after_bill_end:
     ~energycap.sdk.models.DueDateTooLongAfterBillEndSetting
    :param statement_date_too_long_after_bill_end:
    :type statement_date_too_long_after_bill_end:
     ~energycap.sdk.models.StatementDateTooLongAfterBillEndSetting
    :param invoice_number_is_repeated_on_account:
    :type invoice_number_is_repeated_on_account:
     ~energycap.sdk.models.AuditSetting
    :param likely_duplicate_bill_on_account:
    :type likely_duplicate_bill_on_account: ~energycap.sdk.models.AuditSetting
    :param total_meter_cost_is_percentage_higher_than_past_year:
    :type total_meter_cost_is_percentage_higher_than_past_year:
     ~energycap.sdk.models.AuditSetting
    :param total_meter_use_is_percentage_higher_than_past_year:
    :type total_meter_use_is_percentage_higher_than_past_year:
     ~energycap.sdk.models.AuditSetting
    :param serial_number_does_not_match_import_file:
    :type serial_number_does_not_match_import_file:
     ~energycap.sdk.models.AuditSetting
    :param rate_code_does_not_match_import_file:
    :type rate_code_does_not_match_import_file:
     ~energycap.sdk.models.AuditSetting
    :param import_file_start_date_adjusted_to_prevent_gaps:
    :type import_file_start_date_adjusted_to_prevent_gaps:
     ~energycap.sdk.models.AuditSetting
    :param account_alert_exists_on_account_in_import_file:
    :type account_alert_exists_on_account_in_import_file:
     ~energycap.sdk.models.AuditSetting
    """

    _validation = {
        'bill_contains_line_item_descriptions': {'required': True},
        'bill_contains_line_item_types': {'required': True},
        'total_bill_cost_does_not_match_line_item_types': {'required': True},
        'billing_period_outside_start_end_dates': {'required': True},
        'bill_overlaps_with_other_account_bill': {'required': True},
        'gap_between_bill_and_previous_bill_on_account': {'required': True},
        'bill_ends_in_future': {'required': True},
        'account_has_multiple_bills_in_billing_period': {'required': True},
        'statement_date_before_end_date': {'required': True},
        'due_date_before_end_date': {'required': True},
        'bill_significantly_shorter_or_longer_than_previous': {'required': True},
        'too_many_consecutive_estimated_bills': {'required': True},
        'due_date_too_long_after_bill_end': {'required': True},
        'statement_date_too_long_after_bill_end': {'required': True},
        'invoice_number_is_repeated_on_account': {'required': True},
        'likely_duplicate_bill_on_account': {'required': True},
        'total_meter_cost_is_percentage_higher_than_past_year': {'required': True},
        'total_meter_use_is_percentage_higher_than_past_year': {'required': True},
        'serial_number_does_not_match_import_file': {'required': True},
        'rate_code_does_not_match_import_file': {'required': True},
        'import_file_start_date_adjusted_to_prevent_gaps': {'required': True},
        'account_alert_exists_on_account_in_import_file': {'required': True},
    }

    _attribute_map = {
        'bill_contains_line_item_descriptions': {'key': 'billContainsLineItemDescriptions', 'type': 'BillContainsLineItemDescriptionsSetting'},
        'bill_contains_line_item_types': {'key': 'billContainsLineItemTypes', 'type': 'BillContainsLineItemTypesSetting'},
        'total_bill_cost_does_not_match_line_item_types': {'key': 'totalBillCostDoesNotMatchLineItemTypes', 'type': 'TotalBillCostDoesNotMatchLineItemTypesSetting'},
        'billing_period_outside_start_end_dates': {'key': 'billingPeriodOutsideStartEndDates', 'type': 'AuditSetting'},
        'bill_overlaps_with_other_account_bill': {'key': 'billOverlapsWithOtherAccountBill', 'type': 'AuditSetting'},
        'gap_between_bill_and_previous_bill_on_account': {'key': 'gapBetweenBillAndPreviousBillOnAccount', 'type': 'AuditSetting'},
        'bill_ends_in_future': {'key': 'billEndsInFuture', 'type': 'AuditSetting'},
        'account_has_multiple_bills_in_billing_period': {'key': 'accountHasMultipleBillsInBillingPeriod', 'type': 'AuditSetting'},
        'statement_date_before_end_date': {'key': 'statementDateBeforeEndDate', 'type': 'AuditSetting'},
        'due_date_before_end_date': {'key': 'dueDateBeforeEndDate', 'type': 'AuditSetting'},
        'bill_significantly_shorter_or_longer_than_previous': {'key': 'billSignificantlyShorterOrLongerThanPrevious', 'type': 'BillSignificantlyShorterOrLongerThanPreviousSetting'},
        'too_many_consecutive_estimated_bills': {'key': 'tooManyConsecutiveEstimatedBills', 'type': 'TooManyConsecutiveEstimatedBillsSetting'},
        'due_date_too_long_after_bill_end': {'key': 'dueDateTooLongAfterBillEnd', 'type': 'DueDateTooLongAfterBillEndSetting'},
        'statement_date_too_long_after_bill_end': {'key': 'statementDateTooLongAfterBillEnd', 'type': 'StatementDateTooLongAfterBillEndSetting'},
        'invoice_number_is_repeated_on_account': {'key': 'invoiceNumberIsRepeatedOnAccount', 'type': 'AuditSetting'},
        'likely_duplicate_bill_on_account': {'key': 'likelyDuplicateBillOnAccount', 'type': 'AuditSetting'},
        'total_meter_cost_is_percentage_higher_than_past_year': {'key': 'totalMeterCostIsPercentageHigherThanPastYear', 'type': 'AuditSetting'},
        'total_meter_use_is_percentage_higher_than_past_year': {'key': 'totalMeterUseIsPercentageHigherThanPastYear', 'type': 'AuditSetting'},
        'serial_number_does_not_match_import_file': {'key': 'serialNumberDoesNotMatchImportFile', 'type': 'AuditSetting'},
        'rate_code_does_not_match_import_file': {'key': 'rateCodeDoesNotMatchImportFile', 'type': 'AuditSetting'},
        'import_file_start_date_adjusted_to_prevent_gaps': {'key': 'importFileStartDateAdjustedToPreventGaps', 'type': 'AuditSetting'},
        'account_alert_exists_on_account_in_import_file': {'key': 'accountAlertExistsOnAccountInImportFile', 'type': 'AuditSetting'},
    }

    def __init__(self, bill_contains_line_item_descriptions, bill_contains_line_item_types, total_bill_cost_does_not_match_line_item_types, billing_period_outside_start_end_dates, bill_overlaps_with_other_account_bill, gap_between_bill_and_previous_bill_on_account, bill_ends_in_future, account_has_multiple_bills_in_billing_period, statement_date_before_end_date, due_date_before_end_date, bill_significantly_shorter_or_longer_than_previous, too_many_consecutive_estimated_bills, due_date_too_long_after_bill_end, statement_date_too_long_after_bill_end, invoice_number_is_repeated_on_account, likely_duplicate_bill_on_account, total_meter_cost_is_percentage_higher_than_past_year, total_meter_use_is_percentage_higher_than_past_year, serial_number_does_not_match_import_file, rate_code_does_not_match_import_file, import_file_start_date_adjusted_to_prevent_gaps, account_alert_exists_on_account_in_import_file):
        super(AuditSettings, self).__init__()
        self.bill_contains_line_item_descriptions = bill_contains_line_item_descriptions
        self.bill_contains_line_item_types = bill_contains_line_item_types
        self.total_bill_cost_does_not_match_line_item_types = total_bill_cost_does_not_match_line_item_types
        self.billing_period_outside_start_end_dates = billing_period_outside_start_end_dates
        self.bill_overlaps_with_other_account_bill = bill_overlaps_with_other_account_bill
        self.gap_between_bill_and_previous_bill_on_account = gap_between_bill_and_previous_bill_on_account
        self.bill_ends_in_future = bill_ends_in_future
        self.account_has_multiple_bills_in_billing_period = account_has_multiple_bills_in_billing_period
        self.statement_date_before_end_date = statement_date_before_end_date
        self.due_date_before_end_date = due_date_before_end_date
        self.bill_significantly_shorter_or_longer_than_previous = bill_significantly_shorter_or_longer_than_previous
        self.too_many_consecutive_estimated_bills = too_many_consecutive_estimated_bills
        self.due_date_too_long_after_bill_end = due_date_too_long_after_bill_end
        self.statement_date_too_long_after_bill_end = statement_date_too_long_after_bill_end
        self.invoice_number_is_repeated_on_account = invoice_number_is_repeated_on_account
        self.likely_duplicate_bill_on_account = likely_duplicate_bill_on_account
        self.total_meter_cost_is_percentage_higher_than_past_year = total_meter_cost_is_percentage_higher_than_past_year
        self.total_meter_use_is_percentage_higher_than_past_year = total_meter_use_is_percentage_higher_than_past_year
        self.serial_number_does_not_match_import_file = serial_number_does_not_match_import_file
        self.rate_code_does_not_match_import_file = rate_code_does_not_match_import_file
        self.import_file_start_date_adjusted_to_prevent_gaps = import_file_start_date_adjusted_to_prevent_gaps
        self.account_alert_exists_on_account_in_import_file = account_alert_exists_on_account_in_import_file
