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

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

    :param bill_id: Required. Identifier for bill to update <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Required</span>
    :type bill_id: int
    :param check_number: Required. Check number of payment <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 32 characters</span> <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 32 characters</span>
    :type check_number: str
    :param check_date: Required. Date of payment <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 12/31/1899 and 1/1/3000</span>
     <span class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 12/31/1899 and 1/1/3000</span>
    :type check_date: datetime
    :param pay_status: Required. Payment status indicator <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 10 characters</span> <span
     class='property-internal'>Required</span> <span
     class='property-internal'>Must be between 0 and 10 characters</span>
    :type pay_status: str
    :param cleared_date: Date payment cleared <span
     class='property-internal'>Must be between 12/31/1899 and 1/1/3000</span>
     <span class='property-internal'>Required (defined)</span> <span
     class='property-internal'>Must be between 12/31/1899 and 1/1/3000</span>
    :type cleared_date: datetime
    :param accounting_period: Accounting period in which payment was made
     <span class='property-internal'>Must be between 190001 and 209913</span>
     <span class='property-internal'>Required (defined)</span> <span
     class='property-internal'>Must be between 190001 and 209913</span>
    :type accounting_period: int
    :param comment: Optional description for payment (ignored by importer)
     <span class='property-internal'>Required (defined)</span>
    :type comment: str
    """

    _validation = {
        'bill_id': {'required': True},
        'check_number': {'required': True, 'max_length': 32, 'min_length': 0},
        'check_date': {'required': True},
        'pay_status': {'required': True, 'max_length': 10, 'min_length': 0},
        'accounting_period': {'maximum': 209913, 'minimum': 190001},
    }

    _attribute_map = {
        'bill_id': {'key': 'billId', 'type': 'int'},
        'check_number': {'key': 'checkNumber', 'type': 'str'},
        'check_date': {'key': 'checkDate', 'type': 'iso-8601'},
        'pay_status': {'key': 'payStatus', 'type': 'str'},
        'cleared_date': {'key': 'clearedDate', 'type': 'iso-8601'},
        'accounting_period': {'key': 'accountingPeriod', 'type': 'int'},
        'comment': {'key': 'comment', 'type': 'str'},
    }

    def __init__(self, *, bill_id: int, check_number: str, check_date, pay_status: str, cleared_date=None, accounting_period: int=None, comment: str=None, **kwargs) -> None:
        super(BillPaymentDetailsItem, self).__init__(**kwargs)
        self.bill_id = bill_id
        self.check_number = check_number
        self.check_date = check_date
        self.pay_status = pay_status
        self.cleared_date = cleared_date
        self.accounting_period = accounting_period
        self.comment = comment
