# coding=utf-8
# --------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#
# 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 X12AcknowledgementSettings(Model):
    """The X12 agreement acknowledgement settings.

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

    :param need_technical_acknowledgement: Required. The value indicating
     whether technical acknowledgement is needed.
    :type need_technical_acknowledgement: bool
    :param batch_technical_acknowledgements: Required. The value indicating
     whether to batch the technical acknowledgements.
    :type batch_technical_acknowledgements: bool
    :param need_functional_acknowledgement: Required. The value indicating
     whether functional acknowledgement is needed.
    :type need_functional_acknowledgement: bool
    :param functional_acknowledgement_version: The functional acknowledgement
     version.
    :type functional_acknowledgement_version: str
    :param batch_functional_acknowledgements: Required. The value indicating
     whether to batch functional acknowledgements.
    :type batch_functional_acknowledgements: bool
    :param need_implementation_acknowledgement: Required. The value indicating
     whether implementation acknowledgement is needed.
    :type need_implementation_acknowledgement: bool
    :param implementation_acknowledgement_version: The implementation
     acknowledgement version.
    :type implementation_acknowledgement_version: str
    :param batch_implementation_acknowledgements: Required. The value
     indicating whether to batch implementation acknowledgements.
    :type batch_implementation_acknowledgements: bool
    :param need_loop_for_valid_messages: Required. The value indicating
     whether a loop is needed for valid messages.
    :type need_loop_for_valid_messages: bool
    :param send_synchronous_acknowledgement: Required. The value indicating
     whether to send synchronous acknowledgement.
    :type send_synchronous_acknowledgement: bool
    :param acknowledgement_control_number_prefix: The acknowledgement control
     number prefix.
    :type acknowledgement_control_number_prefix: str
    :param acknowledgement_control_number_suffix: The acknowledgement control
     number suffix.
    :type acknowledgement_control_number_suffix: str
    :param acknowledgement_control_number_lower_bound: Required. The
     acknowledgement control number lower bound.
    :type acknowledgement_control_number_lower_bound: int
    :param acknowledgement_control_number_upper_bound: Required. The
     acknowledgement control number upper bound.
    :type acknowledgement_control_number_upper_bound: int
    :param rollover_acknowledgement_control_number: Required. The value
     indicating whether to rollover acknowledgement control number.
    :type rollover_acknowledgement_control_number: bool
    """

    _validation = {
        'need_technical_acknowledgement': {'required': True},
        'batch_technical_acknowledgements': {'required': True},
        'need_functional_acknowledgement': {'required': True},
        'batch_functional_acknowledgements': {'required': True},
        'need_implementation_acknowledgement': {'required': True},
        'batch_implementation_acknowledgements': {'required': True},
        'need_loop_for_valid_messages': {'required': True},
        'send_synchronous_acknowledgement': {'required': True},
        'acknowledgement_control_number_lower_bound': {'required': True},
        'acknowledgement_control_number_upper_bound': {'required': True},
        'rollover_acknowledgement_control_number': {'required': True},
    }

    _attribute_map = {
        'need_technical_acknowledgement': {'key': 'needTechnicalAcknowledgement', 'type': 'bool'},
        'batch_technical_acknowledgements': {'key': 'batchTechnicalAcknowledgements', 'type': 'bool'},
        'need_functional_acknowledgement': {'key': 'needFunctionalAcknowledgement', 'type': 'bool'},
        'functional_acknowledgement_version': {'key': 'functionalAcknowledgementVersion', 'type': 'str'},
        'batch_functional_acknowledgements': {'key': 'batchFunctionalAcknowledgements', 'type': 'bool'},
        'need_implementation_acknowledgement': {'key': 'needImplementationAcknowledgement', 'type': 'bool'},
        'implementation_acknowledgement_version': {'key': 'implementationAcknowledgementVersion', 'type': 'str'},
        'batch_implementation_acknowledgements': {'key': 'batchImplementationAcknowledgements', 'type': 'bool'},
        'need_loop_for_valid_messages': {'key': 'needLoopForValidMessages', 'type': 'bool'},
        'send_synchronous_acknowledgement': {'key': 'sendSynchronousAcknowledgement', 'type': 'bool'},
        'acknowledgement_control_number_prefix': {'key': 'acknowledgementControlNumberPrefix', 'type': 'str'},
        'acknowledgement_control_number_suffix': {'key': 'acknowledgementControlNumberSuffix', 'type': 'str'},
        'acknowledgement_control_number_lower_bound': {'key': 'acknowledgementControlNumberLowerBound', 'type': 'int'},
        'acknowledgement_control_number_upper_bound': {'key': 'acknowledgementControlNumberUpperBound', 'type': 'int'},
        'rollover_acknowledgement_control_number': {'key': 'rolloverAcknowledgementControlNumber', 'type': 'bool'},
    }

    def __init__(self, **kwargs):
        super(X12AcknowledgementSettings, self).__init__(**kwargs)
        self.need_technical_acknowledgement = kwargs.get('need_technical_acknowledgement', None)
        self.batch_technical_acknowledgements = kwargs.get('batch_technical_acknowledgements', None)
        self.need_functional_acknowledgement = kwargs.get('need_functional_acknowledgement', None)
        self.functional_acknowledgement_version = kwargs.get('functional_acknowledgement_version', None)
        self.batch_functional_acknowledgements = kwargs.get('batch_functional_acknowledgements', None)
        self.need_implementation_acknowledgement = kwargs.get('need_implementation_acknowledgement', None)
        self.implementation_acknowledgement_version = kwargs.get('implementation_acknowledgement_version', None)
        self.batch_implementation_acknowledgements = kwargs.get('batch_implementation_acknowledgements', None)
        self.need_loop_for_valid_messages = kwargs.get('need_loop_for_valid_messages', None)
        self.send_synchronous_acknowledgement = kwargs.get('send_synchronous_acknowledgement', None)
        self.acknowledgement_control_number_prefix = kwargs.get('acknowledgement_control_number_prefix', None)
        self.acknowledgement_control_number_suffix = kwargs.get('acknowledgement_control_number_suffix', None)
        self.acknowledgement_control_number_lower_bound = kwargs.get('acknowledgement_control_number_lower_bound', None)
        self.acknowledgement_control_number_upper_bound = kwargs.get('acknowledgement_control_number_upper_bound', None)
        self.rollover_acknowledgement_control_number = kwargs.get('rollover_acknowledgement_control_number', None)
