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

    All required parameters must be populated in order to send to Azure.

    :param frequency: Required. Other savings type
     Possible values are: one-time, continuous and recurring <span
     class='property-internal'>Required</span>
    :type frequency: str
    :param other_savings_category_id: Required. Other savings category
     identifier <span class='property-internal'>Required</span>
    :type other_savings_category_id: int
    :param description: Required. Description <span
     class='property-internal'>Required</span>
    :type description: str
    :param start_period: Required. Other savings start period <span
     class='property-internal'>Required</span>
    :type start_period: int
    :param end_period: Other savings end period <span
     class='property-internal'>Required when frequency is set to continuous, or
     recurring</span>
    :type end_period: int
    :param annual_cycle_start_month: Month in which the other savings should
     begin
     This should only be set when the other savings type is recurring <span
     class='property-internal'>Required when frequency is set to
     recurring</span>
    :type annual_cycle_start_month: int
    :param annual_cycle_end_month: Month in which the other savings should end
     This should only be set when the other savings type is recurring <span
     class='property-internal'>Required when frequency is set to
     recurring</span>
    :type annual_cycle_end_month: int
    :param value: Required. Amount saved <span
     class='property-internal'>Required</span>
    :type value: float
    """

    _validation = {
        'frequency': {'required': True},
        'other_savings_category_id': {'required': True},
        'description': {'required': True},
        'start_period': {'required': True},
        'value': {'required': True},
    }

    _attribute_map = {
        'frequency': {'key': 'frequency', 'type': 'str'},
        'other_savings_category_id': {'key': 'otherSavingsCategoryId', 'type': 'int'},
        'description': {'key': 'description', 'type': 'str'},
        'start_period': {'key': 'startPeriod', 'type': 'int'},
        'end_period': {'key': 'endPeriod', 'type': 'int'},
        'annual_cycle_start_month': {'key': 'annualCycleStartMonth', 'type': 'int'},
        'annual_cycle_end_month': {'key': 'annualCycleEndMonth', 'type': 'int'},
        'value': {'key': 'value', 'type': 'float'},
    }

    def __init__(self, **kwargs):
        super(OtherSavingsRequest, self).__init__(**kwargs)
        self.frequency = kwargs.get('frequency', None)
        self.other_savings_category_id = kwargs.get('other_savings_category_id', None)
        self.description = kwargs.get('description', None)
        self.start_period = kwargs.get('start_period', None)
        self.end_period = kwargs.get('end_period', None)
        self.annual_cycle_start_month = kwargs.get('annual_cycle_start_month', None)
        self.annual_cycle_end_month = kwargs.get('annual_cycle_end_month', None)
        self.value = kwargs.get('value', None)
