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

    :param minimum_billing_period: Only bills with a billing period greater
     than or equal to this value were included in Cost Avoidance processing
     Will be null unless BillSelectionOption is "BillingPeriod" and Reason is
     "ProcessSavings"
    :type minimum_billing_period: int
    :param skipped_multi_account_if_bills_missing: Indicates if the Cost
     Avoidance processor skipped processing meters with multiple accounts if
     one of the bills was missing
     Will be empty unless Reason is "ProcessSavings"
    :type skipped_multi_account_if_bills_missing: bool
    :param ignored_weather_adjustments: Indicates if weather adjustments were
     ignored when the baseline processor was run
     Will be null unless Reason is "ResetBaseline"
    :type ignored_weather_adjustments: bool
    :param ignored_special_adjustment_type: Defines handling of meter special
     adjustments during Cost Avoidance processing. Can be either of two static
     values OR the special adjustment category that the user chose to skip.
     Will be empty unless Reason is "ProcessSavings"
     Possible static values:
     "NONE" - no special adjustment categories were skipped
     "ALL" - all special adjustment categories were skipped
    :type ignored_special_adjustment_type: str
    :param bill_selection_option: For savings calculation, indicates which
     bills should have been processed
     Will be empty unless Reason is "ProcessSavings"
     Possible values:
     - "AllBills" means all bills were processed
     - "ModifiedOrNotProcessed" means only new bills or bills which have been
     modified since the last time cost avoidance was run have been processed
     - "BillingPeriod" means that only bills with a billing period which is
     greater than or equal to the MinimumBillingPeriod have been processed
    :type bill_selection_option: str
    """

    _attribute_map = {
        'minimum_billing_period': {'key': 'minimumBillingPeriod', 'type': 'int'},
        'skipped_multi_account_if_bills_missing': {'key': 'skippedMultiAccountIfBillsMissing', 'type': 'bool'},
        'ignored_weather_adjustments': {'key': 'ignoredWeatherAdjustments', 'type': 'bool'},
        'ignored_special_adjustment_type': {'key': 'ignoredSpecialAdjustmentType', 'type': 'str'},
        'bill_selection_option': {'key': 'billSelectionOption', 'type': 'str'},
    }

    def __init__(self, *, minimum_billing_period: int=None, skipped_multi_account_if_bills_missing: bool=None, ignored_weather_adjustments: bool=None, ignored_special_adjustment_type: str=None, bill_selection_option: str=None, **kwargs) -> None:
        super(CostAvoidanceSettings, self).__init__(**kwargs)
        self.minimum_billing_period = minimum_billing_period
        self.skipped_multi_account_if_bills_missing = skipped_multi_account_if_bills_missing
        self.ignored_weather_adjustments = ignored_weather_adjustments
        self.ignored_special_adjustment_type = ignored_special_adjustment_type
        self.bill_selection_option = bill_selection_option
