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

    :param bill_selection_option: Determines which option will be used to
     select the bills for this instance of the cost avoidance processor to
     process
     - "AllBills" means all bills will be processed
     - "ModifiedOrNotProcessed" means only new bills or bills which have been
     modified since the last time cost avoidance was run will be processed
     - "BillingPeriod" means that only bills with a billing period which is
     greater than or equal to the provided billing period will be processed
     <span class='property-internal'>One of AllBills, ModifiedOrNotProcessed,
     BillingPeriod </span>
    :type bill_selection_option: str
    :param billing_period: When BillSelectionOption is 'BillingPeriod', this
     defines the billing period to be used to target bills for processing <span
     class='property-internal'>Required when BillSelectionOption is set to
     BillingPeriod</span>
    :type billing_period: int
    :param skip_special_adjustment_option: Allow the user to optionally
     exclude one or all special adjustments <span class='property-internal'>One
     of SkipAll, SkipOne, SkipNone </span>
    :type skip_special_adjustment_option: str
    :param special_adjustment_type_id_to_ignore: During cost avoidance
     processing, the special adjustment having the provided special adjustment
     type ID will not be applied (only if SkipSpecialAdjustmentOption =
     "SkipOne") <span class='property-internal'>Required when
     SkipSpecialAdjustmentOption is set to SkipOne</span>
    :type special_adjustment_type_id_to_ignore: int
    :param filters: Filter criteria which determine the meters whose savings
     will be reprocessed
    :type filters: list[~energycap.sdk.models.FilterEdit]
    """

    _attribute_map = {
        'bill_selection_option': {'key': 'billSelectionOption', 'type': 'str'},
        'billing_period': {'key': 'billingPeriod', 'type': 'int'},
        'skip_special_adjustment_option': {'key': 'skipSpecialAdjustmentOption', 'type': 'str'},
        'special_adjustment_type_id_to_ignore': {'key': 'specialAdjustmentTypeIdToIgnore', 'type': 'int'},
        'filters': {'key': 'filters', 'type': '[FilterEdit]'},
    }

    def __init__(self, bill_selection_option=None, billing_period=None, skip_special_adjustment_option=None, special_adjustment_type_id_to_ignore=None, filters=None):
        super(CalculateSavingsRequest, self).__init__()
        self.bill_selection_option = bill_selection_option
        self.billing_period = billing_period
        self.skip_special_adjustment_option = skip_special_adjustment_option
        self.special_adjustment_type_id_to_ignore = special_adjustment_type_id_to_ignore
        self.filters = filters
