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

    :param batch_code:  <span class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 255 characters</span>
    :type batch_code: str
    :param close_existing_batch:
    :type close_existing_batch: bool
    :param statement_date:
    :type statement_date: datetime
    :param due_date:
    :type due_date: datetime
    :param next_reading:
    :type next_reading: datetime
    :param control_code:  <span class='property-internal'>Must be between 0
     and 255 characters</span>
    :type control_code: str
    :param invoice_number:  <span class='property-internal'>Must be between 0
     and 255 characters</span>
    :type invoice_number: str
    :param account_period_number:
    :type account_period_number: int
    :param account_period_year:  <span class='property-internal'>Must be
     between 1900 and 2099</span>
    :type account_period_year: int
    :param note:  <span class='property-internal'>Must be between 0 and 255
     characters</span>
    :type note: str
    """

    _validation = {
        'batch_code': {'required': True, 'max_length': 255, 'min_length': 0},
        'control_code': {'max_length': 255, 'min_length': 0},
        'invoice_number': {'max_length': 255, 'min_length': 0},
        'account_period_year': {'maximum': 2099, 'minimum': 1900},
        'note': {'max_length': 255, 'min_length': 0},
    }

    _attribute_map = {
        'batch_code': {'key': 'batchCode', 'type': 'str'},
        'close_existing_batch': {'key': 'closeExistingBatch', 'type': 'bool'},
        'statement_date': {'key': 'statementDate', 'type': 'iso-8601'},
        'due_date': {'key': 'dueDate', 'type': 'iso-8601'},
        'next_reading': {'key': 'nextReading', 'type': 'iso-8601'},
        'control_code': {'key': 'controlCode', 'type': 'str'},
        'invoice_number': {'key': 'invoiceNumber', 'type': 'str'},
        'account_period_number': {'key': 'accountPeriodNumber', 'type': 'int'},
        'account_period_year': {'key': 'accountPeriodYear', 'type': 'int'},
        'note': {'key': 'note', 'type': 'str'},
    }

    def __init__(self, batch_code, close_existing_batch=None, statement_date=None, due_date=None, next_reading=None, control_code=None, invoice_number=None, account_period_number=None, account_period_year=None, note=None):
        super(BatchCreate, self).__init__()
        self.batch_code = batch_code
        self.close_existing_batch = close_existing_batch
        self.statement_date = statement_date
        self.due_date = due_date
        self.next_reading = next_reading
        self.control_code = control_code
        self.invoice_number = invoice_number
        self.account_period_number = account_period_number
        self.account_period_year = account_period_year
        self.note = note
