# -*- coding: utf-8 -*-

"""
shelldatareportingapis

This file was automatically generated by APIMATIC v3.0 (
 https://www.apimatic.io ).
"""
from shelldatareportingapis.api_helper import APIHelper
from shelldatareportingapis.models.invoice_search_additional_document import InvoiceSearchAdditionalDocument


class InvoiceSearchDetails(object):

    """Implementation of the 'InvoiceSearchDetails' model.

    TODO: type model description here.

    Attributes:
        account_full_name (str): Account Full Name Example: AT_reversal
            customer_FN
        account_id (int): Account ID Example: 29484
        account_number (str): Account Number Example: GB99215176
        account_short_name (str): Account Short Name Example: AT Earth
            Movers-SN
        col_co_id (int): ColCo Id. Example: 18
        col_co_op_co_id (str): ColCo’s OpCo Id. Example: 018
        current_billing_frequency (str): Current billing frequency of the
            account. A few of the possible IDs and Description are below: 1   
            Daily (all days) 2    Daily (only working days) 3    Weekly -
            Monday 4    Weekly - Tuesday 5    Weekly - Wednesday 6    Weekly -
            Thursday 7    Weekly - Friday 8    Weekly - Saturday 9    Weekly -
            Sunday 10    Monthly - 1st Example: Weekly – Wednesday
        current_billing_frequency_id (int): Current billing frequency id of
            the account. A few of the possible IDs and Description are below:
            1    Daily (all days) 2    Daily (only working days) 3    Weekly -
            Monday 4    Weekly - Tuesday 5    Weekly - Wednesday 6    Weekly -
            Thursday 7    Weekly - Friday 8    Weekly - Saturday 9    Weekly -
            Sunday 10    Monthly - 1st Example: 5
        current_distribution_method (str): Current distribution method name of
            the account. Example : Id & Description 1    e-mail 2    Fax 3   
            Courier to Customer 4    Courier to Client 5    Print 6    FTP 7  
            SMS
        current_distribution_method_id (int): Current distribution method id
            of the account. Example : Id & Description 1    e-mail 2    Fax 3 
            Courier to Customer 4    Courier to Client 5    Print 6    FTP 7  
            SMS
        customer_currency_code (str): Customer currency ISO code. Example: EUR
        customer_currency_symbol (str): Customer currency code. Example: €
        del_co_client_number (str): DelCo’s client company number. Example: 132
        del_co_id (int): DelCo Id. Example: 132
        del_co_op_co_id (str): DelCo’s OpCo Id. Example: 032
        document_type (str): Document type Id description.
        document_type_id (int): Document type Id.
        due_date (str): Due date. Format: yyyyMMdd. Example: 20170115
        gross_amount_customer_currency (float): Gross amount in customer
            currency in the document.
        gross_amount_transaction_currency (float): Gross amount in transaction
            currency in the document
        invoice_date (str): Invoicing date. Format: yyyyMMdd Example: 20170101
        invoiced_by (str): Company name.
        invoiced_on_behalf_of (str): Country Name. Example: Czech Republic
        invoice_id (int): Invoice id. Example: 1
        invoice_number (str): Invoice number. Example: 0123456789
        is_international (bool): True/False. True if this is an International
            invoice, else false.
        is_national (bool): True/False. True if this is a National invoice,
            else false.
        net_amount_customer_currency (float): Net amount in customer currency
            in the document.
        net_amount_transaction_currency (float): Net amount in transaction
            currency in the document.
        payer_id (int): Payment customer id of the customer. Example: 123456
        payer_number (str): Payment customer number. Example: GB000000123
        payment_terms (str): A few of the possible IDs and Descriptions are
            below: 1    14 days after Invoice 2    15 days after Invoice 3   
            21 days after Invoice 4    30 days after Invoice 5    45 days
            after Invoice
        payment_terms_id (int): Payment terms id of the payment customer. A
            few of the possible IDs and Descriptions are below: 1    14 days
            after Invoice 2    15 days after Invoice 3    21 days after
            Invoice 4    30 days after Invoice 5    45 days after Invoice
        replacement_invoice_id (int): Replaced document id. Example: 2
        reversal_invoice_id (int): Reversed document id.   Example: 3
        status (str): Status of the document. Valid values – •    [Empty] –
            For all document types except for Invoice and Statement. •    Due
            – Invoices/Statements due for payment and is within the due date.
            •    Paid – Fully paid Invoices/Statements. Overdue –
            Invoices/Statements due of payment and has crossed the due date.
        summary_document_billing_type (str): Billing type description.
            Example: Id & Description -3    Guarantee History -1    Initial
            Balance 0    Standard Invoice 1    Immediate Invoice 2   
            Guarantee 4    Advanced DD Invoice
        summary_document_billing_type_id (int): Billing type id. Example: Id &
            Description -3    Guarantee History -1    Initial Balance 0   
            Standard Invoice 1    Immediate Invoice 2    Guarantee 4   
            Advanced DD Invoice
        summary_document_date (str): Document generated date. Format: yyyyMMdd
            Example: 20170101
        summary_document_dd_amount (float): DD amount.
        summary_document_due_date (str): Due date for document. Format:
            yyyyMMdd Example: 20170115
        summary_document_id (int): Summary document identifier Example: 1
        summary_document_is_fully_paid (bool): True/False True if invoice
            amount is fully paid, else false
        summary_document_number (str): Summary document number Example:
            ‘0/CZ0000000123456/2017’
        summary_document_paid_amount (float): Total amount paid.
        summary_document_so_a_reference_number (str): Statement of Account
            reference number of the payment customer.
        summary_document_statement_of_account_id (int): Statement of Account
            Id of the payment customer.
        transaction_currency_code (str): Transaction currency ISO code.
            Example: EUR
        transaction_currency_symbol (str): Transaction currency symbol.
            Example: €
        mtype (str): Invoice type description. A few of the possible IDs and
            Description are below: 1    Original 2    Reversal 3   
            Replacement Example: Original
        type_id (int): Invoice type id. A few of the possible IDs and
            Descriptions are below: 1    Original 2    Reversal 3   
            Replacement Example: 1
        vat_amount_customer_currency (float): VAT amount in customer currency
            in the document
        vat_amount_transaction_currency (float): VAT amount in transaction
            currency in the document
        vat_country (str): Country name of the VAT country. Example: France,
            Germany
        vat_country_id (int): Country Id of the VAT country. Example: 1,2
        vat_country_iso_code (str): Country ISO code of the VAT country.
            Example : CZ, SK, UK, etc.,
        vat_country_op_co_id (str): VAT country’s OpCo Id. Example: 032
        document_reference (str): document reference number of the Invoice file
        additional_documents (List[InvoiceSearchAdditionalDocument]): TODO:
            type description here.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "account_full_name": 'AccountFullName',
        "account_id": 'AccountId',
        "account_number": 'AccountNumber',
        "account_short_name": 'AccountShortName',
        "col_co_id": 'ColCoId',
        "col_co_op_co_id": 'ColCoOpCoId',
        "current_billing_frequency": 'CurrentBillingFrequency',
        "current_billing_frequency_id": 'CurrentBillingFrequencyId',
        "current_distribution_method": 'CurrentDistributionMethod',
        "current_distribution_method_id": 'CurrentDistributionMethodId',
        "customer_currency_code": 'CustomerCurrencyCode',
        "customer_currency_symbol": 'CustomerCurrencySymbol',
        "del_co_client_number": 'DelCoClientNumber',
        "del_co_id": 'DelCoId',
        "del_co_op_co_id": 'DelCoOpCoId',
        "document_type": 'DocumentType',
        "document_type_id": 'DocumentTypeId',
        "due_date": 'DueDate',
        "gross_amount_customer_currency": 'GrossAmountCustomerCurrency',
        "gross_amount_transaction_currency": 'GrossAmountTransactionCurrency',
        "invoice_date": 'InvoiceDate',
        "invoiced_by": 'InvoicedBy',
        "invoiced_on_behalf_of": 'InvoicedOnBehalfOf',
        "invoice_id": 'InvoiceId',
        "invoice_number": 'InvoiceNumber',
        "is_international": 'IsInternational',
        "is_national": 'IsNational',
        "net_amount_customer_currency": 'NetAmountCustomerCurrency',
        "net_amount_transaction_currency": 'NetAmountTransactionCurrency',
        "payer_id": 'PayerId',
        "payer_number": 'PayerNumber',
        "payment_terms": 'PaymentTerms',
        "payment_terms_id": 'PaymentTermsId',
        "replacement_invoice_id": 'ReplacementInvoiceId',
        "reversal_invoice_id": 'ReversalInvoiceId',
        "status": 'Status',
        "summary_document_billing_type": 'SummaryDocumentBillingType',
        "summary_document_billing_type_id": 'SummaryDocumentBillingTypeId',
        "summary_document_date": 'SummaryDocumentDate',
        "summary_document_dd_amount": 'SummaryDocumentDDAmount',
        "summary_document_due_date": 'SummaryDocumentDueDate',
        "summary_document_id": 'SummaryDocumentId',
        "summary_document_is_fully_paid": 'SummaryDocumentIsFullyPaid',
        "summary_document_number": 'SummaryDocumentNumber',
        "summary_document_paid_amount": 'SummaryDocumentPaidAmount',
        "summary_document_so_a_reference_number": 'SummaryDocumentSoAReferenceNumber',
        "summary_document_statement_of_account_id": 'SummaryDocumentStatementOfAccountId',
        "transaction_currency_code": 'TransactionCurrencyCode',
        "transaction_currency_symbol": 'TransactionCurrencySymbol',
        "mtype": 'Type',
        "type_id": 'TypeId',
        "vat_amount_customer_currency": 'VATAmountCustomerCurrency',
        "vat_amount_transaction_currency": 'VATAmountTransactionCurrency',
        "vat_country": 'VATCountry',
        "vat_country_id": 'VATCountryId',
        "vat_country_iso_code": 'VATCountryISOCode',
        "vat_country_op_co_id": 'VATCountryOpCoId',
        "document_reference": 'DocumentReference',
        "additional_documents": 'AdditionalDocuments'
    }

    _optionals = [
        'account_full_name',
        'account_id',
        'account_number',
        'account_short_name',
        'col_co_id',
        'col_co_op_co_id',
        'current_billing_frequency',
        'current_billing_frequency_id',
        'current_distribution_method',
        'current_distribution_method_id',
        'customer_currency_code',
        'customer_currency_symbol',
        'del_co_client_number',
        'del_co_id',
        'del_co_op_co_id',
        'document_type',
        'document_type_id',
        'due_date',
        'gross_amount_customer_currency',
        'gross_amount_transaction_currency',
        'invoice_date',
        'invoiced_by',
        'invoiced_on_behalf_of',
        'invoice_id',
        'invoice_number',
        'is_international',
        'is_national',
        'net_amount_customer_currency',
        'net_amount_transaction_currency',
        'payer_id',
        'payer_number',
        'payment_terms',
        'payment_terms_id',
        'replacement_invoice_id',
        'reversal_invoice_id',
        'status',
        'summary_document_billing_type',
        'summary_document_billing_type_id',
        'summary_document_date',
        'summary_document_dd_amount',
        'summary_document_due_date',
        'summary_document_id',
        'summary_document_is_fully_paid',
        'summary_document_number',
        'summary_document_paid_amount',
        'summary_document_so_a_reference_number',
        'summary_document_statement_of_account_id',
        'transaction_currency_code',
        'transaction_currency_symbol',
        'mtype',
        'type_id',
        'vat_amount_customer_currency',
        'vat_amount_transaction_currency',
        'vat_country',
        'vat_country_id',
        'vat_country_iso_code',
        'vat_country_op_co_id',
        'document_reference',
        'additional_documents',
    ]

    _nullables = [
        'account_full_name',
        'account_id',
        'account_number',
        'account_short_name',
        'col_co_id',
        'col_co_op_co_id',
        'current_billing_frequency',
        'current_billing_frequency_id',
        'current_distribution_method',
        'current_distribution_method_id',
        'customer_currency_code',
        'customer_currency_symbol',
        'del_co_client_number',
        'del_co_id',
        'del_co_op_co_id',
        'document_type',
        'document_type_id',
        'due_date',
        'gross_amount_customer_currency',
        'gross_amount_transaction_currency',
        'invoice_date',
        'invoiced_by',
        'invoiced_on_behalf_of',
        'invoice_id',
        'invoice_number',
        'is_international',
        'is_national',
        'net_amount_customer_currency',
        'net_amount_transaction_currency',
        'payer_id',
        'payer_number',
        'payment_terms',
        'payment_terms_id',
        'replacement_invoice_id',
        'reversal_invoice_id',
        'status',
        'summary_document_billing_type',
        'summary_document_billing_type_id',
        'summary_document_date',
        'summary_document_dd_amount',
        'summary_document_due_date',
        'summary_document_id',
        'summary_document_is_fully_paid',
        'summary_document_number',
        'summary_document_paid_amount',
        'summary_document_so_a_reference_number',
        'summary_document_statement_of_account_id',
        'transaction_currency_code',
        'transaction_currency_symbol',
        'mtype',
        'type_id',
        'vat_amount_customer_currency',
        'vat_amount_transaction_currency',
        'vat_country',
        'vat_country_id',
        'vat_country_iso_code',
        'vat_country_op_co_id',
        'document_reference',
    ]

    def __init__(self,
                 account_full_name=APIHelper.SKIP,
                 account_id=APIHelper.SKIP,
                 account_number=APIHelper.SKIP,
                 account_short_name=APIHelper.SKIP,
                 col_co_id=APIHelper.SKIP,
                 col_co_op_co_id=APIHelper.SKIP,
                 current_billing_frequency=APIHelper.SKIP,
                 current_billing_frequency_id=APIHelper.SKIP,
                 current_distribution_method=APIHelper.SKIP,
                 current_distribution_method_id=APIHelper.SKIP,
                 customer_currency_code=APIHelper.SKIP,
                 customer_currency_symbol=APIHelper.SKIP,
                 del_co_client_number=APIHelper.SKIP,
                 del_co_id=APIHelper.SKIP,
                 del_co_op_co_id=APIHelper.SKIP,
                 document_type=APIHelper.SKIP,
                 document_type_id=APIHelper.SKIP,
                 due_date=APIHelper.SKIP,
                 gross_amount_customer_currency=APIHelper.SKIP,
                 gross_amount_transaction_currency=APIHelper.SKIP,
                 invoice_date=APIHelper.SKIP,
                 invoiced_by=APIHelper.SKIP,
                 invoiced_on_behalf_of=APIHelper.SKIP,
                 invoice_id=APIHelper.SKIP,
                 invoice_number=APIHelper.SKIP,
                 is_international=APIHelper.SKIP,
                 is_national=APIHelper.SKIP,
                 net_amount_customer_currency=APIHelper.SKIP,
                 net_amount_transaction_currency=APIHelper.SKIP,
                 payer_id=APIHelper.SKIP,
                 payer_number=APIHelper.SKIP,
                 payment_terms=APIHelper.SKIP,
                 payment_terms_id=APIHelper.SKIP,
                 replacement_invoice_id=APIHelper.SKIP,
                 reversal_invoice_id=APIHelper.SKIP,
                 status=APIHelper.SKIP,
                 summary_document_billing_type=APIHelper.SKIP,
                 summary_document_billing_type_id=APIHelper.SKIP,
                 summary_document_date=APIHelper.SKIP,
                 summary_document_dd_amount=APIHelper.SKIP,
                 summary_document_due_date=APIHelper.SKIP,
                 summary_document_id=APIHelper.SKIP,
                 summary_document_is_fully_paid=APIHelper.SKIP,
                 summary_document_number=APIHelper.SKIP,
                 summary_document_paid_amount=APIHelper.SKIP,
                 summary_document_so_a_reference_number=APIHelper.SKIP,
                 summary_document_statement_of_account_id=APIHelper.SKIP,
                 transaction_currency_code=APIHelper.SKIP,
                 transaction_currency_symbol=APIHelper.SKIP,
                 mtype=APIHelper.SKIP,
                 type_id=APIHelper.SKIP,
                 vat_amount_customer_currency=APIHelper.SKIP,
                 vat_amount_transaction_currency=APIHelper.SKIP,
                 vat_country=APIHelper.SKIP,
                 vat_country_id=APIHelper.SKIP,
                 vat_country_iso_code=APIHelper.SKIP,
                 vat_country_op_co_id=APIHelper.SKIP,
                 document_reference=APIHelper.SKIP,
                 additional_documents=APIHelper.SKIP):
        """Constructor for the InvoiceSearchDetails class"""

        # Initialize members of the class
        if account_full_name is not APIHelper.SKIP:
            self.account_full_name = account_full_name 
        if account_id is not APIHelper.SKIP:
            self.account_id = account_id 
        if account_number is not APIHelper.SKIP:
            self.account_number = account_number 
        if account_short_name is not APIHelper.SKIP:
            self.account_short_name = account_short_name 
        if col_co_id is not APIHelper.SKIP:
            self.col_co_id = col_co_id 
        if col_co_op_co_id is not APIHelper.SKIP:
            self.col_co_op_co_id = col_co_op_co_id 
        if current_billing_frequency is not APIHelper.SKIP:
            self.current_billing_frequency = current_billing_frequency 
        if current_billing_frequency_id is not APIHelper.SKIP:
            self.current_billing_frequency_id = current_billing_frequency_id 
        if current_distribution_method is not APIHelper.SKIP:
            self.current_distribution_method = current_distribution_method 
        if current_distribution_method_id is not APIHelper.SKIP:
            self.current_distribution_method_id = current_distribution_method_id 
        if customer_currency_code is not APIHelper.SKIP:
            self.customer_currency_code = customer_currency_code 
        if customer_currency_symbol is not APIHelper.SKIP:
            self.customer_currency_symbol = customer_currency_symbol 
        if del_co_client_number is not APIHelper.SKIP:
            self.del_co_client_number = del_co_client_number 
        if del_co_id is not APIHelper.SKIP:
            self.del_co_id = del_co_id 
        if del_co_op_co_id is not APIHelper.SKIP:
            self.del_co_op_co_id = del_co_op_co_id 
        if document_type is not APIHelper.SKIP:
            self.document_type = document_type 
        if document_type_id is not APIHelper.SKIP:
            self.document_type_id = document_type_id 
        if due_date is not APIHelper.SKIP:
            self.due_date = due_date 
        if gross_amount_customer_currency is not APIHelper.SKIP:
            self.gross_amount_customer_currency = gross_amount_customer_currency 
        if gross_amount_transaction_currency is not APIHelper.SKIP:
            self.gross_amount_transaction_currency = gross_amount_transaction_currency 
        if invoice_date is not APIHelper.SKIP:
            self.invoice_date = invoice_date 
        if invoiced_by is not APIHelper.SKIP:
            self.invoiced_by = invoiced_by 
        if invoiced_on_behalf_of is not APIHelper.SKIP:
            self.invoiced_on_behalf_of = invoiced_on_behalf_of 
        if invoice_id is not APIHelper.SKIP:
            self.invoice_id = invoice_id 
        if invoice_number is not APIHelper.SKIP:
            self.invoice_number = invoice_number 
        if is_international is not APIHelper.SKIP:
            self.is_international = is_international 
        if is_national is not APIHelper.SKIP:
            self.is_national = is_national 
        if net_amount_customer_currency is not APIHelper.SKIP:
            self.net_amount_customer_currency = net_amount_customer_currency 
        if net_amount_transaction_currency is not APIHelper.SKIP:
            self.net_amount_transaction_currency = net_amount_transaction_currency 
        if payer_id is not APIHelper.SKIP:
            self.payer_id = payer_id 
        if payer_number is not APIHelper.SKIP:
            self.payer_number = payer_number 
        if payment_terms is not APIHelper.SKIP:
            self.payment_terms = payment_terms 
        if payment_terms_id is not APIHelper.SKIP:
            self.payment_terms_id = payment_terms_id 
        if replacement_invoice_id is not APIHelper.SKIP:
            self.replacement_invoice_id = replacement_invoice_id 
        if reversal_invoice_id is not APIHelper.SKIP:
            self.reversal_invoice_id = reversal_invoice_id 
        if status is not APIHelper.SKIP:
            self.status = status 
        if summary_document_billing_type is not APIHelper.SKIP:
            self.summary_document_billing_type = summary_document_billing_type 
        if summary_document_billing_type_id is not APIHelper.SKIP:
            self.summary_document_billing_type_id = summary_document_billing_type_id 
        if summary_document_date is not APIHelper.SKIP:
            self.summary_document_date = summary_document_date 
        if summary_document_dd_amount is not APIHelper.SKIP:
            self.summary_document_dd_amount = summary_document_dd_amount 
        if summary_document_due_date is not APIHelper.SKIP:
            self.summary_document_due_date = summary_document_due_date 
        if summary_document_id is not APIHelper.SKIP:
            self.summary_document_id = summary_document_id 
        if summary_document_is_fully_paid is not APIHelper.SKIP:
            self.summary_document_is_fully_paid = summary_document_is_fully_paid 
        if summary_document_number is not APIHelper.SKIP:
            self.summary_document_number = summary_document_number 
        if summary_document_paid_amount is not APIHelper.SKIP:
            self.summary_document_paid_amount = summary_document_paid_amount 
        if summary_document_so_a_reference_number is not APIHelper.SKIP:
            self.summary_document_so_a_reference_number = summary_document_so_a_reference_number 
        if summary_document_statement_of_account_id is not APIHelper.SKIP:
            self.summary_document_statement_of_account_id = summary_document_statement_of_account_id 
        if transaction_currency_code is not APIHelper.SKIP:
            self.transaction_currency_code = transaction_currency_code 
        if transaction_currency_symbol is not APIHelper.SKIP:
            self.transaction_currency_symbol = transaction_currency_symbol 
        if mtype is not APIHelper.SKIP:
            self.mtype = mtype 
        if type_id is not APIHelper.SKIP:
            self.type_id = type_id 
        if vat_amount_customer_currency is not APIHelper.SKIP:
            self.vat_amount_customer_currency = vat_amount_customer_currency 
        if vat_amount_transaction_currency is not APIHelper.SKIP:
            self.vat_amount_transaction_currency = vat_amount_transaction_currency 
        if vat_country is not APIHelper.SKIP:
            self.vat_country = vat_country 
        if vat_country_id is not APIHelper.SKIP:
            self.vat_country_id = vat_country_id 
        if vat_country_iso_code is not APIHelper.SKIP:
            self.vat_country_iso_code = vat_country_iso_code 
        if vat_country_op_co_id is not APIHelper.SKIP:
            self.vat_country_op_co_id = vat_country_op_co_id 
        if document_reference is not APIHelper.SKIP:
            self.document_reference = document_reference 
        if additional_documents is not APIHelper.SKIP:
            self.additional_documents = additional_documents 

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Creates an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """

        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        account_full_name = dictionary.get("AccountFullName") if "AccountFullName" in dictionary.keys() else APIHelper.SKIP
        account_id = dictionary.get("AccountId") if "AccountId" in dictionary.keys() else APIHelper.SKIP
        account_number = dictionary.get("AccountNumber") if "AccountNumber" in dictionary.keys() else APIHelper.SKIP
        account_short_name = dictionary.get("AccountShortName") if "AccountShortName" in dictionary.keys() else APIHelper.SKIP
        col_co_id = dictionary.get("ColCoId") if "ColCoId" in dictionary.keys() else APIHelper.SKIP
        col_co_op_co_id = dictionary.get("ColCoOpCoId") if "ColCoOpCoId" in dictionary.keys() else APIHelper.SKIP
        current_billing_frequency = dictionary.get("CurrentBillingFrequency") if "CurrentBillingFrequency" in dictionary.keys() else APIHelper.SKIP
        current_billing_frequency_id = dictionary.get("CurrentBillingFrequencyId") if "CurrentBillingFrequencyId" in dictionary.keys() else APIHelper.SKIP
        current_distribution_method = dictionary.get("CurrentDistributionMethod") if "CurrentDistributionMethod" in dictionary.keys() else APIHelper.SKIP
        current_distribution_method_id = dictionary.get("CurrentDistributionMethodId") if "CurrentDistributionMethodId" in dictionary.keys() else APIHelper.SKIP
        customer_currency_code = dictionary.get("CustomerCurrencyCode") if "CustomerCurrencyCode" in dictionary.keys() else APIHelper.SKIP
        customer_currency_symbol = dictionary.get("CustomerCurrencySymbol") if "CustomerCurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        del_co_client_number = dictionary.get("DelCoClientNumber") if "DelCoClientNumber" in dictionary.keys() else APIHelper.SKIP
        del_co_id = dictionary.get("DelCoId") if "DelCoId" in dictionary.keys() else APIHelper.SKIP
        del_co_op_co_id = dictionary.get("DelCoOpCoId") if "DelCoOpCoId" in dictionary.keys() else APIHelper.SKIP
        document_type = dictionary.get("DocumentType") if "DocumentType" in dictionary.keys() else APIHelper.SKIP
        document_type_id = dictionary.get("DocumentTypeId") if "DocumentTypeId" in dictionary.keys() else APIHelper.SKIP
        due_date = dictionary.get("DueDate") if "DueDate" in dictionary.keys() else APIHelper.SKIP
        gross_amount_customer_currency = dictionary.get("GrossAmountCustomerCurrency") if "GrossAmountCustomerCurrency" in dictionary.keys() else APIHelper.SKIP
        gross_amount_transaction_currency = dictionary.get("GrossAmountTransactionCurrency") if "GrossAmountTransactionCurrency" in dictionary.keys() else APIHelper.SKIP
        invoice_date = dictionary.get("InvoiceDate") if "InvoiceDate" in dictionary.keys() else APIHelper.SKIP
        invoiced_by = dictionary.get("InvoicedBy") if "InvoicedBy" in dictionary.keys() else APIHelper.SKIP
        invoiced_on_behalf_of = dictionary.get("InvoicedOnBehalfOf") if "InvoicedOnBehalfOf" in dictionary.keys() else APIHelper.SKIP
        invoice_id = dictionary.get("InvoiceId") if "InvoiceId" in dictionary.keys() else APIHelper.SKIP
        invoice_number = dictionary.get("InvoiceNumber") if "InvoiceNumber" in dictionary.keys() else APIHelper.SKIP
        is_international = dictionary.get("IsInternational") if "IsInternational" in dictionary.keys() else APIHelper.SKIP
        is_national = dictionary.get("IsNational") if "IsNational" in dictionary.keys() else APIHelper.SKIP
        net_amount_customer_currency = dictionary.get("NetAmountCustomerCurrency") if "NetAmountCustomerCurrency" in dictionary.keys() else APIHelper.SKIP
        net_amount_transaction_currency = dictionary.get("NetAmountTransactionCurrency") if "NetAmountTransactionCurrency" in dictionary.keys() else APIHelper.SKIP
        payer_id = dictionary.get("PayerId") if "PayerId" in dictionary.keys() else APIHelper.SKIP
        payer_number = dictionary.get("PayerNumber") if "PayerNumber" in dictionary.keys() else APIHelper.SKIP
        payment_terms = dictionary.get("PaymentTerms") if "PaymentTerms" in dictionary.keys() else APIHelper.SKIP
        payment_terms_id = dictionary.get("PaymentTermsId") if "PaymentTermsId" in dictionary.keys() else APIHelper.SKIP
        replacement_invoice_id = dictionary.get("ReplacementInvoiceId") if "ReplacementInvoiceId" in dictionary.keys() else APIHelper.SKIP
        reversal_invoice_id = dictionary.get("ReversalInvoiceId") if "ReversalInvoiceId" in dictionary.keys() else APIHelper.SKIP
        status = dictionary.get("Status") if "Status" in dictionary.keys() else APIHelper.SKIP
        summary_document_billing_type = dictionary.get("SummaryDocumentBillingType") if "SummaryDocumentBillingType" in dictionary.keys() else APIHelper.SKIP
        summary_document_billing_type_id = dictionary.get("SummaryDocumentBillingTypeId") if "SummaryDocumentBillingTypeId" in dictionary.keys() else APIHelper.SKIP
        summary_document_date = dictionary.get("SummaryDocumentDate") if "SummaryDocumentDate" in dictionary.keys() else APIHelper.SKIP
        summary_document_dd_amount = dictionary.get("SummaryDocumentDDAmount") if "SummaryDocumentDDAmount" in dictionary.keys() else APIHelper.SKIP
        summary_document_due_date = dictionary.get("SummaryDocumentDueDate") if "SummaryDocumentDueDate" in dictionary.keys() else APIHelper.SKIP
        summary_document_id = dictionary.get("SummaryDocumentId") if "SummaryDocumentId" in dictionary.keys() else APIHelper.SKIP
        summary_document_is_fully_paid = dictionary.get("SummaryDocumentIsFullyPaid") if "SummaryDocumentIsFullyPaid" in dictionary.keys() else APIHelper.SKIP
        summary_document_number = dictionary.get("SummaryDocumentNumber") if "SummaryDocumentNumber" in dictionary.keys() else APIHelper.SKIP
        summary_document_paid_amount = dictionary.get("SummaryDocumentPaidAmount") if "SummaryDocumentPaidAmount" in dictionary.keys() else APIHelper.SKIP
        summary_document_so_a_reference_number = dictionary.get("SummaryDocumentSoAReferenceNumber") if "SummaryDocumentSoAReferenceNumber" in dictionary.keys() else APIHelper.SKIP
        summary_document_statement_of_account_id = dictionary.get("SummaryDocumentStatementOfAccountId") if "SummaryDocumentStatementOfAccountId" in dictionary.keys() else APIHelper.SKIP
        transaction_currency_code = dictionary.get("TransactionCurrencyCode") if "TransactionCurrencyCode" in dictionary.keys() else APIHelper.SKIP
        transaction_currency_symbol = dictionary.get("TransactionCurrencySymbol") if "TransactionCurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        mtype = dictionary.get("Type") if "Type" in dictionary.keys() else APIHelper.SKIP
        type_id = dictionary.get("TypeId") if "TypeId" in dictionary.keys() else APIHelper.SKIP
        vat_amount_customer_currency = dictionary.get("VATAmountCustomerCurrency") if "VATAmountCustomerCurrency" in dictionary.keys() else APIHelper.SKIP
        vat_amount_transaction_currency = dictionary.get("VATAmountTransactionCurrency") if "VATAmountTransactionCurrency" in dictionary.keys() else APIHelper.SKIP
        vat_country = dictionary.get("VATCountry") if "VATCountry" in dictionary.keys() else APIHelper.SKIP
        vat_country_id = dictionary.get("VATCountryId") if "VATCountryId" in dictionary.keys() else APIHelper.SKIP
        vat_country_iso_code = dictionary.get("VATCountryISOCode") if "VATCountryISOCode" in dictionary.keys() else APIHelper.SKIP
        vat_country_op_co_id = dictionary.get("VATCountryOpCoId") if "VATCountryOpCoId" in dictionary.keys() else APIHelper.SKIP
        document_reference = dictionary.get("DocumentReference") if "DocumentReference" in dictionary.keys() else APIHelper.SKIP
        additional_documents = None
        if dictionary.get('AdditionalDocuments') is not None:
            additional_documents = [InvoiceSearchAdditionalDocument.from_dictionary(x) for x in dictionary.get('AdditionalDocuments')]
        else:
            additional_documents = APIHelper.SKIP
        # Return an object of this model
        return cls(account_full_name,
                   account_id,
                   account_number,
                   account_short_name,
                   col_co_id,
                   col_co_op_co_id,
                   current_billing_frequency,
                   current_billing_frequency_id,
                   current_distribution_method,
                   current_distribution_method_id,
                   customer_currency_code,
                   customer_currency_symbol,
                   del_co_client_number,
                   del_co_id,
                   del_co_op_co_id,
                   document_type,
                   document_type_id,
                   due_date,
                   gross_amount_customer_currency,
                   gross_amount_transaction_currency,
                   invoice_date,
                   invoiced_by,
                   invoiced_on_behalf_of,
                   invoice_id,
                   invoice_number,
                   is_international,
                   is_national,
                   net_amount_customer_currency,
                   net_amount_transaction_currency,
                   payer_id,
                   payer_number,
                   payment_terms,
                   payment_terms_id,
                   replacement_invoice_id,
                   reversal_invoice_id,
                   status,
                   summary_document_billing_type,
                   summary_document_billing_type_id,
                   summary_document_date,
                   summary_document_dd_amount,
                   summary_document_due_date,
                   summary_document_id,
                   summary_document_is_fully_paid,
                   summary_document_number,
                   summary_document_paid_amount,
                   summary_document_so_a_reference_number,
                   summary_document_statement_of_account_id,
                   transaction_currency_code,
                   transaction_currency_symbol,
                   mtype,
                   type_id,
                   vat_amount_customer_currency,
                   vat_amount_transaction_currency,
                   vat_country,
                   vat_country_id,
                   vat_country_iso_code,
                   vat_country_op_co_id,
                   document_reference,
                   additional_documents)
