# -*- 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.address import Address
from shelldatareportingapis.models.bank_account import BankAccount
from shelldatareportingapis.models.customer_contract import CustomerContract
from shelldatareportingapis.models.finance_currency import FinanceCurrency
from shelldatareportingapis.models.invoice_distribution_method import InvoiceDistributionMethod


class PayerDetails(object):

    """Implementation of the 'PayerDetails' model.

    TODO: type model description here.

    Attributes:
        col_co_id (int): Collecting company id of the customer.
        col_co_code (int): Collecting company code of the customer.
        country_code (str): ISO code of the customer country.
        country (str): Country of the customer
        payer_id (int): Payer id of the customer
        payer_number (str): Payer Number of the customer
        payer_full_name (str): Full Name of the Payer
        payer_short_name (str): Short name of the payer
        payer_group_id (int): Payer Group Id
        amount_due (float): Invoiced amount and due for payment from the last
            SOA.
        amount_overdue (float): Invoiced amount and overdue for payment from
            the last SOA.
        amount_not_overdue (float): Invoiced amount and not overdue for
            payment from the last SOA.
        outstanding_balance (float): Current outstanding balance amount from
            the last SOA.
        unallocated_payment (float): Unallocated payment. When negative,
            indicates overdue amount from the last SOA.
        soa_currency_code (str): Currency ISO code
        soa_currency_symbol (str): Currency symbol
        soa_credit_limit_currency_code (str): Currency ISO code
        soa_credit_limit_currency_symbol (str): Currency symbol
        last_payment_currency_code (str): Currency ISO code
        last_payment_currency_symbol (str): currency symbol
        last_payment_amount (float): Latest payment amount for the requested
            payer.
        last_payment_date (str): Latest payment date for the requested payer.
        soa_last_payment_amount (float): Last payment amount in statement of
            account for the requested payer.
        soa_last_payment_date (str): Last payment date in statement of account
            for the requested payer.
        currency_code (str): Currency ISO code
        currency_symbol (str): Currency Symbol
        col_co_country_code (str): The 2-character ISO Code for the customer
            and card owning country.
        local_currency_code (str): Currency ISO code of the local country.
        local_currency_symbol (str): Currency Symbol of the local country
        local_currency_exchange_rate (float): Exchange rate from OU base
            currency to local currency.
        local_currency_exchange_rate_so_a (float): Exchange rate from SoA
            credit limit currency to local currency
        billing_frequency_type_id (int): Billing/Invoice frequency Identifier.
            Indicates the frequency in which the transactions will be
            considered for invoicing in a bulling run E.g.: 1, 2, 3, etc.
        billing_frequency_type (str): Billing/Invoice frequency. The frequency
            in which the transactions will be considered for invoicing in a
            bulling run  E.g.:   1    Daily (all days)  2    Daily (only
            working days)  3    Weekly - Monday  4    Weekly – Tuesday  Etc.
        billing_run_frequency_type_id (int): Frequency at which the billing
            process is triggered. E.g.: 1, 2, 3, etc.
        billing_run_frequnecy (str): Frequency at which the billing process is
            triggered.E.g.:   1    Daily (all days)  2    Daily (only working
            days)  3    Weekly - Monday  4    Weekly – Tuesday  Etc.
        day_1_run (int): The first day in a month when the billing should run
            in case of multiple billing runs configured with in a single month.
        day_2_run (int): The second day in a month when the billing should run
            in case of multiple billing runs configured with in a single month.
        day_3_run (int): The third day in a month when the billing should run
            in case of multiple billing runs configured with in a single month.
        day_4_run (int): The fourth day in a month when the billing should run
            in case of multiple billing runs configured with in a single month.
        invoice_distribution_methods (List[InvoiceDistributionMethod]): TODO:
            type description here.
        output_type (str): Invoice output type (Id-Description) E.g.: 1-PDF
            6-Print
        invoice_account_id (int): The Account ID of the account on which the
            invoice is generated.
        invoice_account_number (str): The Account Number of the account on
            which the invoice is generated.
        invoice_account_short_name (str): The Account Short Name of the
            account on which the invoice is generated.
        best_of_indicator (bool): Best of Indicator of the Pricing
            customer/account configured.
        is_international (bool): Whether the account is international.
        total_accounts (int): Total number of accounts under the payer.
        total_active_accounts (int): Total number of active accounts under the
            payer.
        total_cards (int): Total number of cards under the payer.
        total_active_cards (int): Total number of active cards under the payer.
        total_blocked_cards (int): Total number of cards under the payer that
            are permanently blocked
        total_cancelled_cards (int): Total number of cards under the payer
            that are cancelled
        total_expired_cards (int): Total number of expired cards under the
            payer.
        total_renewal_pending_cards (int): Total number of Renewal Pending
            cards under the payer.
        total_replaced_cards (int): Total number of cards under the payer with
            status as “Replaced
        total_temporary_block_cards_by_customer (int): Total number of cards
            under the payer that are temporarily blocked by customer.
        total_temporary_block_cards_by_shell (int): Total number of cards
            under the payer that are temporarily blocked by Shell.
        total_new_cards (int): Total number of cards in “New” status
        total_fraud_cards (int): Total number of cards in Fraud status
        total_blocked_accounts (int): Total number of accounts in Blocked
            status
        total_cancelled_accounts (int): Total number of accounts in Cancel
            status
        payer_trading_name (str): Trading name for the Payer
        status (str): Payer current status id and description  e.g. (Id –
            Description):  1-Active  2-Requested from UTA   3-Awaiting
            embossing   4-Manufactured  5-Awaiting despatch
        billing_language (str): Payer Billing Language id and description
        legal_entity (str): Legal entity id and description of the Payer
        date_established (str): Payer/Company Established Date.
        customer_classification (str): Payer/Company Classification id and
            description
        industry_class (str): Payer/Company Industry class id and description
        marketing_segmentation (str): Marketing Segmentation id and description
        line_of_business (str): Payer/Company Line of Business Id and
            Description
        print_credit_limit (bool): Is Credit Limit printed on the statement of
            account: True/False If True Credit Limit is printed on invoice/SOA
        card_group_type (str): Card Group Type configured for Payer e.g. (Id –
            Description): 1-Horizontal only 2-Vertical only 3-Both
        renew_cards (bool): If set to True cards will be automatically renewed
            on expiry
        allow_select_pin (bool): If set to True then Self Select PIN is
            allowed for Payer
        use_fleet_pin (bool): If set to True then Fleet PIN is applied for the
            cards directly under payer
        vat_reg_number (str): Payer/Company VAT registration number.
        vat_reg_number_2 (str): Payer/Company VAT registration number 2.
        registration_number (str): Payer/Company Registration number
        registration_number_2 (str): Payer/Company Registration number2
        sales_ledger_balance (float): Sales Ledger Balance (Billed)
        exposure (float): Exposure after guarantee
        outstanding_debt (float): Total outstanding debt (including billed and
            unbilled sales and fee items)
        available_credit (float): The available credit for the payer. This is
            the credit limit minus the outstanding debt.
        band (str): Band Id and Description of the Payer in Card Platform.
            e.g. (Id – Description): 1-Platinum 2-Gold 3-Silver 4-Bronze
        global_customer_reference_id (str): Global Customer reference id
            configured in card platform for Payer (Same as Payer Group)
        credit_limit (float): Payment Credit limit of Payer.
        credit_limit_in_customer_currency (float): Credit limit in Customer
            currency. Note: For currency details refer the parameters
            CurrencyCode & CurrencySymbol in the PayerDetail response.
        billing_currency_code (str): Customer Billing currency ISO code.
        billing_currency_symbol (str): Customer Billing currency Symbol.
        payment_method (str): Payment method Id and Description as configured
            for Payer in Card Platform
        payment_terms (str): Payment terms Id and Description as configured
            for Payer in Card Platform
        temporary_credit_limit_increase (float): Temporary Credit limit
            increase value
        temporary_credit_limit_increase_in_customer_currency (float):
            Temporary Credit limit increase value
        temporary_credit_limit_expiry_date (str): Temporary Credit limit
            expiry date
        payer_bank_account (List[BankAccount]): TODO: type description here.
        card_delivery_address (Address): TODO: type description here.
        correspondance_address (Address): TODO: type description here.
        billing_address (Address): TODO: type description here.
        has_active_vol_based_pricing (bool): True, if the payer is setup for
            volume-based pricing and is active on the current date, else
            false.   This field is returned only when IncludeBonusParameters
            is set to True in the request. Else set to null.
        has_active_vol_based_bonus (bool): True, if the payer is setup for
            volume-based bonus and is active on the current date, else false.
            This field is returned only when IncludeBonusParameters is set to
            True in the request. Else set to null.
        has_active_vol_based_association_bonus (bool): True, if the payer is
            setup for volume-based association bonus and is active on the
            current date, else false. This field is returned only when
            IncludeBonusParameters is set to True in the request. Else set to
            null.
        finance_currency (FinanceCurrency): This entity will not be present in
            the response if the ‘IncludeFinanceCurrency’ flag in the request
            is ‘false’
        tolls_customer_id (str): Customer id in e-TM system This field will
            have value only when ReturnTollsCustomerId is set to true in the
            request else set to null or empty.
        tolls_colco_country_type_id (str): String    Colco country type id in
            e-TM system This field will have value only when
            ReturnTollsCustomerId is set to true in the request else set to
            null or empty.
        contracts (List[CustomerContract]): TODO: type description here.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "col_co_id": 'ColCoId',
        "col_co_code": 'ColCoCode',
        "country_code": 'CountryCode',
        "country": 'Country',
        "payer_id": 'PayerId',
        "payer_number": 'PayerNumber',
        "payer_full_name": 'PayerFullName',
        "payer_short_name": 'PayerShortName',
        "payer_group_id": 'PayerGroupId',
        "amount_due": 'AmountDue',
        "amount_overdue": 'AmountOverdue',
        "amount_not_overdue": 'AmountNotOverdue',
        "outstanding_balance": 'OutstandingBalance',
        "unallocated_payment": 'UnallocatedPayment',
        "soa_currency_code": 'SOACurrencyCode',
        "soa_currency_symbol": 'SOACurrencySymbol',
        "soa_credit_limit_currency_code": 'SOACreditLimitCurrencyCode',
        "soa_credit_limit_currency_symbol": 'SOACreditLimitCurrencySymbol',
        "last_payment_currency_code": 'LastPaymentCurrencyCode',
        "last_payment_currency_symbol": 'LastPaymentCurrencySymbol',
        "last_payment_amount": 'LastPaymentAmount',
        "last_payment_date": 'LastPaymentDate',
        "soa_last_payment_amount": 'SOALastPaymentAmount',
        "soa_last_payment_date": 'SOALastPaymentDate',
        "currency_code": 'CurrencyCode',
        "currency_symbol": 'CurrencySymbol',
        "col_co_country_code": 'ColCoCountryCode',
        "local_currency_code": 'LocalCurrencyCode',
        "local_currency_symbol": 'LocalCurrencySymbol',
        "local_currency_exchange_rate": 'LocalCurrencyExchangeRate',
        "local_currency_exchange_rate_so_a": 'LocalCurrencyExchangeRate_SoA',
        "billing_frequency_type_id": 'BillingFrequencyTypeId',
        "billing_frequency_type": 'BillingFrequencyType',
        "billing_run_frequency_type_id": 'BillingRunFrequencyTypeId',
        "billing_run_frequnecy": 'BillingRunFrequnecy',
        "day_1_run": 'Day1Run',
        "day_2_run": 'Day2Run',
        "day_3_run": 'Day3Run',
        "day_4_run": 'Day4Run',
        "invoice_distribution_methods": 'InvoiceDistributionMethods',
        "output_type": 'OutputType',
        "invoice_account_id": 'InvoiceAccountID',
        "invoice_account_number": 'InvoiceAccountNumber',
        "invoice_account_short_name": 'InvoiceAccountShortName',
        "best_of_indicator": 'BestOfIndicator',
        "is_international": 'IsInternational',
        "total_accounts": 'TotalAccounts',
        "total_active_accounts": 'TotalActiveAccounts',
        "total_cards": 'TotalCards',
        "total_active_cards": 'TotalActiveCards',
        "total_blocked_cards": 'TotalBlockedCards',
        "total_cancelled_cards": 'TotalCancelledCards',
        "total_expired_cards": 'TotalExpiredCards',
        "total_renewal_pending_cards": 'TotalRenewalPendingCards',
        "total_replaced_cards": 'TotalReplacedCards',
        "total_temporary_block_cards_by_customer": 'TotalTemporaryBlockCardsByCustomer',
        "total_temporary_block_cards_by_shell": 'TotalTemporaryBlockCardsByShell',
        "total_new_cards": 'TotalNewCards',
        "total_fraud_cards": 'TotalFraudCards',
        "total_blocked_accounts": 'TotalBlockedAccounts',
        "total_cancelled_accounts": 'TotalCancelledAccounts',
        "payer_trading_name": 'PayerTradingName',
        "status": 'Status',
        "billing_language": 'BillingLanguage',
        "legal_entity": 'LegalEntity',
        "date_established": 'DateEstablished',
        "customer_classification": 'CustomerClassification',
        "industry_class": 'IndustryClass',
        "marketing_segmentation": 'MarketingSegmentation',
        "line_of_business": 'LineOfBusiness',
        "print_credit_limit": 'PrintCreditLimit',
        "card_group_type": 'CardGroupType',
        "renew_cards": 'RenewCards',
        "allow_select_pin": 'AllowSelectPIN',
        "use_fleet_pin": 'UseFleetPIN',
        "vat_reg_number": 'VATRegNumber',
        "vat_reg_number_2": 'VATRegNumber2',
        "registration_number": 'RegistrationNumber',
        "registration_number_2": 'RegistrationNumber2',
        "sales_ledger_balance": 'SalesLedgerBalance',
        "exposure": 'Exposure',
        "outstanding_debt": 'OutstandingDebt',
        "available_credit": 'AvailableCredit',
        "band": 'Band',
        "global_customer_reference_id": 'GlobalCustomerReferenceId',
        "credit_limit": 'CreditLimit',
        "credit_limit_in_customer_currency": 'CreditLimitInCustomerCurrency',
        "billing_currency_code": 'BillingCurrencyCode',
        "billing_currency_symbol": 'BillingCurrencySymbol',
        "payment_method": 'PaymentMethod',
        "payment_terms": 'PaymentTerms',
        "temporary_credit_limit_increase": 'TemporaryCreditLimitIncrease',
        "temporary_credit_limit_increase_in_customer_currency": 'TemporaryCreditLimitIncreaseInCustomerCurrency',
        "temporary_credit_limit_expiry_date": 'TemporaryCreditLimitExpiryDate',
        "payer_bank_account": 'PayerBankAccount',
        "card_delivery_address": 'CardDeliveryAddress',
        "correspondance_address": 'CorrespondanceAddress',
        "billing_address": 'BillingAddress',
        "has_active_vol_based_pricing": 'HasActiveVolBasedPricing',
        "has_active_vol_based_bonus": 'HasActiveVolBasedBonus',
        "has_active_vol_based_association_bonus": 'HasActiveVolBasedAssociationBonus',
        "finance_currency": 'FinanceCurrency',
        "tolls_customer_id": 'TollsCustomerId',
        "tolls_colco_country_type_id": 'TollsColcoCountryTypeId',
        "contracts": 'Contracts'
    }

    _optionals = [
        'col_co_id',
        'col_co_code',
        'country_code',
        'country',
        'payer_id',
        'payer_number',
        'payer_full_name',
        'payer_short_name',
        'payer_group_id',
        'amount_due',
        'amount_overdue',
        'amount_not_overdue',
        'outstanding_balance',
        'unallocated_payment',
        'soa_currency_code',
        'soa_currency_symbol',
        'soa_credit_limit_currency_code',
        'soa_credit_limit_currency_symbol',
        'last_payment_currency_code',
        'last_payment_currency_symbol',
        'last_payment_amount',
        'last_payment_date',
        'soa_last_payment_amount',
        'soa_last_payment_date',
        'currency_code',
        'currency_symbol',
        'col_co_country_code',
        'local_currency_code',
        'local_currency_symbol',
        'local_currency_exchange_rate',
        'local_currency_exchange_rate_so_a',
        'billing_frequency_type_id',
        'billing_frequency_type',
        'billing_run_frequency_type_id',
        'billing_run_frequnecy',
        'day_1_run',
        'day_2_run',
        'day_3_run',
        'day_4_run',
        'invoice_distribution_methods',
        'output_type',
        'invoice_account_id',
        'invoice_account_number',
        'invoice_account_short_name',
        'best_of_indicator',
        'is_international',
        'total_accounts',
        'total_active_accounts',
        'total_cards',
        'total_active_cards',
        'total_blocked_cards',
        'total_cancelled_cards',
        'total_expired_cards',
        'total_renewal_pending_cards',
        'total_replaced_cards',
        'total_temporary_block_cards_by_customer',
        'total_temporary_block_cards_by_shell',
        'total_new_cards',
        'total_fraud_cards',
        'total_blocked_accounts',
        'total_cancelled_accounts',
        'payer_trading_name',
        'status',
        'billing_language',
        'legal_entity',
        'date_established',
        'customer_classification',
        'industry_class',
        'marketing_segmentation',
        'line_of_business',
        'print_credit_limit',
        'card_group_type',
        'renew_cards',
        'allow_select_pin',
        'use_fleet_pin',
        'vat_reg_number',
        'vat_reg_number_2',
        'registration_number',
        'registration_number_2',
        'sales_ledger_balance',
        'exposure',
        'outstanding_debt',
        'available_credit',
        'band',
        'global_customer_reference_id',
        'credit_limit',
        'credit_limit_in_customer_currency',
        'billing_currency_code',
        'billing_currency_symbol',
        'payment_method',
        'payment_terms',
        'temporary_credit_limit_increase',
        'temporary_credit_limit_increase_in_customer_currency',
        'temporary_credit_limit_expiry_date',
        'payer_bank_account',
        'card_delivery_address',
        'correspondance_address',
        'billing_address',
        'has_active_vol_based_pricing',
        'has_active_vol_based_bonus',
        'has_active_vol_based_association_bonus',
        'finance_currency',
        'tolls_customer_id',
        'tolls_colco_country_type_id',
        'contracts',
    ]

    _nullables = [
        'col_co_id',
        'col_co_code',
        'country_code',
        'country',
        'payer_id',
        'payer_number',
        'payer_full_name',
        'payer_short_name',
        'payer_group_id',
        'amount_due',
        'amount_overdue',
        'amount_not_overdue',
        'outstanding_balance',
        'unallocated_payment',
        'soa_currency_code',
        'soa_currency_symbol',
        'soa_credit_limit_currency_code',
        'soa_credit_limit_currency_symbol',
        'last_payment_currency_code',
        'last_payment_currency_symbol',
        'last_payment_amount',
        'last_payment_date',
        'soa_last_payment_amount',
        'soa_last_payment_date',
        'currency_code',
        'currency_symbol',
        'col_co_country_code',
        'local_currency_code',
        'local_currency_symbol',
        'local_currency_exchange_rate',
        'local_currency_exchange_rate_so_a',
        'billing_frequency_type_id',
        'billing_frequency_type',
        'billing_run_frequency_type_id',
        'billing_run_frequnecy',
        'day_1_run',
        'day_2_run',
        'day_3_run',
        'day_4_run',
        'output_type',
        'invoice_account_id',
        'invoice_account_number',
        'invoice_account_short_name',
        'total_accounts',
        'total_active_accounts',
        'total_cards',
        'total_active_cards',
        'total_blocked_cards',
        'total_cancelled_cards',
        'total_expired_cards',
        'total_renewal_pending_cards',
        'total_replaced_cards',
        'total_temporary_block_cards_by_customer',
        'total_temporary_block_cards_by_shell',
        'total_new_cards',
        'total_fraud_cards',
        'total_blocked_accounts',
        'total_cancelled_accounts',
        'payer_trading_name',
        'billing_language',
        'legal_entity',
        'date_established',
        'customer_classification',
        'industry_class',
        'marketing_segmentation',
        'line_of_business',
        'card_group_type',
        'vat_reg_number',
        'registration_number',
        'registration_number_2',
        'sales_ledger_balance',
        'exposure',
        'outstanding_debt',
        'available_credit',
        'band',
        'global_customer_reference_id',
        'credit_limit',
        'credit_limit_in_customer_currency',
        'billing_currency_code',
        'billing_currency_symbol',
        'payment_method',
        'payment_terms',
        'temporary_credit_limit_increase',
        'temporary_credit_limit_increase_in_customer_currency',
        'temporary_credit_limit_expiry_date',
        'tolls_customer_id',
        'tolls_colco_country_type_id',
    ]

    def __init__(self,
                 col_co_id=APIHelper.SKIP,
                 col_co_code=APIHelper.SKIP,
                 country_code=APIHelper.SKIP,
                 country=APIHelper.SKIP,
                 payer_id=APIHelper.SKIP,
                 payer_number=APIHelper.SKIP,
                 payer_full_name=APIHelper.SKIP,
                 payer_short_name=APIHelper.SKIP,
                 payer_group_id=APIHelper.SKIP,
                 amount_due=APIHelper.SKIP,
                 amount_overdue=APIHelper.SKIP,
                 amount_not_overdue=APIHelper.SKIP,
                 outstanding_balance=APIHelper.SKIP,
                 unallocated_payment=APIHelper.SKIP,
                 soa_currency_code=APIHelper.SKIP,
                 soa_currency_symbol=APIHelper.SKIP,
                 soa_credit_limit_currency_code=APIHelper.SKIP,
                 soa_credit_limit_currency_symbol=APIHelper.SKIP,
                 last_payment_currency_code=APIHelper.SKIP,
                 last_payment_currency_symbol=APIHelper.SKIP,
                 last_payment_amount=APIHelper.SKIP,
                 last_payment_date=APIHelper.SKIP,
                 soa_last_payment_amount=APIHelper.SKIP,
                 soa_last_payment_date=APIHelper.SKIP,
                 currency_code=APIHelper.SKIP,
                 currency_symbol=APIHelper.SKIP,
                 col_co_country_code=APIHelper.SKIP,
                 local_currency_code=APIHelper.SKIP,
                 local_currency_symbol=APIHelper.SKIP,
                 local_currency_exchange_rate=APIHelper.SKIP,
                 local_currency_exchange_rate_so_a=APIHelper.SKIP,
                 billing_frequency_type_id=APIHelper.SKIP,
                 billing_frequency_type=APIHelper.SKIP,
                 billing_run_frequency_type_id=APIHelper.SKIP,
                 billing_run_frequnecy=APIHelper.SKIP,
                 day_1_run=APIHelper.SKIP,
                 day_2_run=APIHelper.SKIP,
                 day_3_run=APIHelper.SKIP,
                 day_4_run=APIHelper.SKIP,
                 invoice_distribution_methods=APIHelper.SKIP,
                 output_type=APIHelper.SKIP,
                 invoice_account_id=APIHelper.SKIP,
                 invoice_account_number=APIHelper.SKIP,
                 invoice_account_short_name=APIHelper.SKIP,
                 best_of_indicator=False,
                 is_international=False,
                 total_accounts=APIHelper.SKIP,
                 total_active_accounts=APIHelper.SKIP,
                 total_cards=APIHelper.SKIP,
                 total_active_cards=APIHelper.SKIP,
                 total_blocked_cards=APIHelper.SKIP,
                 total_cancelled_cards=APIHelper.SKIP,
                 total_expired_cards=APIHelper.SKIP,
                 total_renewal_pending_cards=APIHelper.SKIP,
                 total_replaced_cards=APIHelper.SKIP,
                 total_temporary_block_cards_by_customer=APIHelper.SKIP,
                 total_temporary_block_cards_by_shell=APIHelper.SKIP,
                 total_new_cards=APIHelper.SKIP,
                 total_fraud_cards=APIHelper.SKIP,
                 total_blocked_accounts=APIHelper.SKIP,
                 total_cancelled_accounts=APIHelper.SKIP,
                 payer_trading_name=APIHelper.SKIP,
                 status=APIHelper.SKIP,
                 billing_language=APIHelper.SKIP,
                 legal_entity=APIHelper.SKIP,
                 date_established=APIHelper.SKIP,
                 customer_classification=APIHelper.SKIP,
                 industry_class=APIHelper.SKIP,
                 marketing_segmentation=APIHelper.SKIP,
                 line_of_business=APIHelper.SKIP,
                 print_credit_limit=False,
                 card_group_type=APIHelper.SKIP,
                 renew_cards=False,
                 allow_select_pin=False,
                 use_fleet_pin=APIHelper.SKIP,
                 vat_reg_number=APIHelper.SKIP,
                 vat_reg_number_2=APIHelper.SKIP,
                 registration_number=APIHelper.SKIP,
                 registration_number_2=APIHelper.SKIP,
                 sales_ledger_balance=APIHelper.SKIP,
                 exposure=APIHelper.SKIP,
                 outstanding_debt=APIHelper.SKIP,
                 available_credit=APIHelper.SKIP,
                 band=APIHelper.SKIP,
                 global_customer_reference_id=APIHelper.SKIP,
                 credit_limit=APIHelper.SKIP,
                 credit_limit_in_customer_currency=APIHelper.SKIP,
                 billing_currency_code=APIHelper.SKIP,
                 billing_currency_symbol=APIHelper.SKIP,
                 payment_method=APIHelper.SKIP,
                 payment_terms=APIHelper.SKIP,
                 temporary_credit_limit_increase=APIHelper.SKIP,
                 temporary_credit_limit_increase_in_customer_currency=APIHelper.SKIP,
                 temporary_credit_limit_expiry_date=APIHelper.SKIP,
                 payer_bank_account=APIHelper.SKIP,
                 card_delivery_address=APIHelper.SKIP,
                 correspondance_address=APIHelper.SKIP,
                 billing_address=APIHelper.SKIP,
                 has_active_vol_based_pricing=APIHelper.SKIP,
                 has_active_vol_based_bonus=APIHelper.SKIP,
                 has_active_vol_based_association_bonus=APIHelper.SKIP,
                 finance_currency=APIHelper.SKIP,
                 tolls_customer_id=APIHelper.SKIP,
                 tolls_colco_country_type_id=APIHelper.SKIP,
                 contracts=APIHelper.SKIP):
        """Constructor for the PayerDetails class"""

        # Initialize members of the class
        if col_co_id is not APIHelper.SKIP:
            self.col_co_id = col_co_id 
        if col_co_code is not APIHelper.SKIP:
            self.col_co_code = col_co_code 
        if country_code is not APIHelper.SKIP:
            self.country_code = country_code 
        if country is not APIHelper.SKIP:
            self.country = country 
        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 payer_full_name is not APIHelper.SKIP:
            self.payer_full_name = payer_full_name 
        if payer_short_name is not APIHelper.SKIP:
            self.payer_short_name = payer_short_name 
        if payer_group_id is not APIHelper.SKIP:
            self.payer_group_id = payer_group_id 
        if amount_due is not APIHelper.SKIP:
            self.amount_due = amount_due 
        if amount_overdue is not APIHelper.SKIP:
            self.amount_overdue = amount_overdue 
        if amount_not_overdue is not APIHelper.SKIP:
            self.amount_not_overdue = amount_not_overdue 
        if outstanding_balance is not APIHelper.SKIP:
            self.outstanding_balance = outstanding_balance 
        if unallocated_payment is not APIHelper.SKIP:
            self.unallocated_payment = unallocated_payment 
        if soa_currency_code is not APIHelper.SKIP:
            self.soa_currency_code = soa_currency_code 
        if soa_currency_symbol is not APIHelper.SKIP:
            self.soa_currency_symbol = soa_currency_symbol 
        if soa_credit_limit_currency_code is not APIHelper.SKIP:
            self.soa_credit_limit_currency_code = soa_credit_limit_currency_code 
        if soa_credit_limit_currency_symbol is not APIHelper.SKIP:
            self.soa_credit_limit_currency_symbol = soa_credit_limit_currency_symbol 
        if last_payment_currency_code is not APIHelper.SKIP:
            self.last_payment_currency_code = last_payment_currency_code 
        if last_payment_currency_symbol is not APIHelper.SKIP:
            self.last_payment_currency_symbol = last_payment_currency_symbol 
        if last_payment_amount is not APIHelper.SKIP:
            self.last_payment_amount = last_payment_amount 
        if last_payment_date is not APIHelper.SKIP:
            self.last_payment_date = last_payment_date 
        if soa_last_payment_amount is not APIHelper.SKIP:
            self.soa_last_payment_amount = soa_last_payment_amount 
        if soa_last_payment_date is not APIHelper.SKIP:
            self.soa_last_payment_date = soa_last_payment_date 
        if currency_code is not APIHelper.SKIP:
            self.currency_code = currency_code 
        if currency_symbol is not APIHelper.SKIP:
            self.currency_symbol = currency_symbol 
        if col_co_country_code is not APIHelper.SKIP:
            self.col_co_country_code = col_co_country_code 
        if local_currency_code is not APIHelper.SKIP:
            self.local_currency_code = local_currency_code 
        if local_currency_symbol is not APIHelper.SKIP:
            self.local_currency_symbol = local_currency_symbol 
        if local_currency_exchange_rate is not APIHelper.SKIP:
            self.local_currency_exchange_rate = local_currency_exchange_rate 
        if local_currency_exchange_rate_so_a is not APIHelper.SKIP:
            self.local_currency_exchange_rate_so_a = local_currency_exchange_rate_so_a 
        if billing_frequency_type_id is not APIHelper.SKIP:
            self.billing_frequency_type_id = billing_frequency_type_id 
        if billing_frequency_type is not APIHelper.SKIP:
            self.billing_frequency_type = billing_frequency_type 
        if billing_run_frequency_type_id is not APIHelper.SKIP:
            self.billing_run_frequency_type_id = billing_run_frequency_type_id 
        if billing_run_frequnecy is not APIHelper.SKIP:
            self.billing_run_frequnecy = billing_run_frequnecy 
        if day_1_run is not APIHelper.SKIP:
            self.day_1_run = day_1_run 
        if day_2_run is not APIHelper.SKIP:
            self.day_2_run = day_2_run 
        if day_3_run is not APIHelper.SKIP:
            self.day_3_run = day_3_run 
        if day_4_run is not APIHelper.SKIP:
            self.day_4_run = day_4_run 
        if invoice_distribution_methods is not APIHelper.SKIP:
            self.invoice_distribution_methods = invoice_distribution_methods 
        if output_type is not APIHelper.SKIP:
            self.output_type = output_type 
        if invoice_account_id is not APIHelper.SKIP:
            self.invoice_account_id = invoice_account_id 
        if invoice_account_number is not APIHelper.SKIP:
            self.invoice_account_number = invoice_account_number 
        if invoice_account_short_name is not APIHelper.SKIP:
            self.invoice_account_short_name = invoice_account_short_name 
        self.best_of_indicator = best_of_indicator 
        self.is_international = is_international 
        if total_accounts is not APIHelper.SKIP:
            self.total_accounts = total_accounts 
        if total_active_accounts is not APIHelper.SKIP:
            self.total_active_accounts = total_active_accounts 
        if total_cards is not APIHelper.SKIP:
            self.total_cards = total_cards 
        if total_active_cards is not APIHelper.SKIP:
            self.total_active_cards = total_active_cards 
        if total_blocked_cards is not APIHelper.SKIP:
            self.total_blocked_cards = total_blocked_cards 
        if total_cancelled_cards is not APIHelper.SKIP:
            self.total_cancelled_cards = total_cancelled_cards 
        if total_expired_cards is not APIHelper.SKIP:
            self.total_expired_cards = total_expired_cards 
        if total_renewal_pending_cards is not APIHelper.SKIP:
            self.total_renewal_pending_cards = total_renewal_pending_cards 
        if total_replaced_cards is not APIHelper.SKIP:
            self.total_replaced_cards = total_replaced_cards 
        if total_temporary_block_cards_by_customer is not APIHelper.SKIP:
            self.total_temporary_block_cards_by_customer = total_temporary_block_cards_by_customer 
        if total_temporary_block_cards_by_shell is not APIHelper.SKIP:
            self.total_temporary_block_cards_by_shell = total_temporary_block_cards_by_shell 
        if total_new_cards is not APIHelper.SKIP:
            self.total_new_cards = total_new_cards 
        if total_fraud_cards is not APIHelper.SKIP:
            self.total_fraud_cards = total_fraud_cards 
        if total_blocked_accounts is not APIHelper.SKIP:
            self.total_blocked_accounts = total_blocked_accounts 
        if total_cancelled_accounts is not APIHelper.SKIP:
            self.total_cancelled_accounts = total_cancelled_accounts 
        if payer_trading_name is not APIHelper.SKIP:
            self.payer_trading_name = payer_trading_name 
        if status is not APIHelper.SKIP:
            self.status = status 
        if billing_language is not APIHelper.SKIP:
            self.billing_language = billing_language 
        if legal_entity is not APIHelper.SKIP:
            self.legal_entity = legal_entity 
        if date_established is not APIHelper.SKIP:
            self.date_established = date_established 
        if customer_classification is not APIHelper.SKIP:
            self.customer_classification = customer_classification 
        if industry_class is not APIHelper.SKIP:
            self.industry_class = industry_class 
        if marketing_segmentation is not APIHelper.SKIP:
            self.marketing_segmentation = marketing_segmentation 
        if line_of_business is not APIHelper.SKIP:
            self.line_of_business = line_of_business 
        self.print_credit_limit = print_credit_limit 
        if card_group_type is not APIHelper.SKIP:
            self.card_group_type = card_group_type 
        self.renew_cards = renew_cards 
        self.allow_select_pin = allow_select_pin 
        if use_fleet_pin is not APIHelper.SKIP:
            self.use_fleet_pin = use_fleet_pin 
        if vat_reg_number is not APIHelper.SKIP:
            self.vat_reg_number = vat_reg_number 
        if vat_reg_number_2 is not APIHelper.SKIP:
            self.vat_reg_number_2 = vat_reg_number_2 
        if registration_number is not APIHelper.SKIP:
            self.registration_number = registration_number 
        if registration_number_2 is not APIHelper.SKIP:
            self.registration_number_2 = registration_number_2 
        if sales_ledger_balance is not APIHelper.SKIP:
            self.sales_ledger_balance = sales_ledger_balance 
        if exposure is not APIHelper.SKIP:
            self.exposure = exposure 
        if outstanding_debt is not APIHelper.SKIP:
            self.outstanding_debt = outstanding_debt 
        if available_credit is not APIHelper.SKIP:
            self.available_credit = available_credit 
        if band is not APIHelper.SKIP:
            self.band = band 
        if global_customer_reference_id is not APIHelper.SKIP:
            self.global_customer_reference_id = global_customer_reference_id 
        if credit_limit is not APIHelper.SKIP:
            self.credit_limit = credit_limit 
        if credit_limit_in_customer_currency is not APIHelper.SKIP:
            self.credit_limit_in_customer_currency = credit_limit_in_customer_currency 
        if billing_currency_code is not APIHelper.SKIP:
            self.billing_currency_code = billing_currency_code 
        if billing_currency_symbol is not APIHelper.SKIP:
            self.billing_currency_symbol = billing_currency_symbol 
        if payment_method is not APIHelper.SKIP:
            self.payment_method = payment_method 
        if payment_terms is not APIHelper.SKIP:
            self.payment_terms = payment_terms 
        if temporary_credit_limit_increase is not APIHelper.SKIP:
            self.temporary_credit_limit_increase = temporary_credit_limit_increase 
        if temporary_credit_limit_increase_in_customer_currency is not APIHelper.SKIP:
            self.temporary_credit_limit_increase_in_customer_currency = temporary_credit_limit_increase_in_customer_currency 
        if temporary_credit_limit_expiry_date is not APIHelper.SKIP:
            self.temporary_credit_limit_expiry_date = temporary_credit_limit_expiry_date 
        if payer_bank_account is not APIHelper.SKIP:
            self.payer_bank_account = payer_bank_account 
        if card_delivery_address is not APIHelper.SKIP:
            self.card_delivery_address = card_delivery_address 
        if correspondance_address is not APIHelper.SKIP:
            self.correspondance_address = correspondance_address 
        if billing_address is not APIHelper.SKIP:
            self.billing_address = billing_address 
        if has_active_vol_based_pricing is not APIHelper.SKIP:
            self.has_active_vol_based_pricing = has_active_vol_based_pricing 
        if has_active_vol_based_bonus is not APIHelper.SKIP:
            self.has_active_vol_based_bonus = has_active_vol_based_bonus 
        if has_active_vol_based_association_bonus is not APIHelper.SKIP:
            self.has_active_vol_based_association_bonus = has_active_vol_based_association_bonus 
        if finance_currency is not APIHelper.SKIP:
            self.finance_currency = finance_currency 
        if tolls_customer_id is not APIHelper.SKIP:
            self.tolls_customer_id = tolls_customer_id 
        if tolls_colco_country_type_id is not APIHelper.SKIP:
            self.tolls_colco_country_type_id = tolls_colco_country_type_id 
        if contracts is not APIHelper.SKIP:
            self.contracts = contracts 

    @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
        col_co_id = dictionary.get("ColCoId") if "ColCoId" in dictionary.keys() else APIHelper.SKIP
        col_co_code = dictionary.get("ColCoCode") if "ColCoCode" in dictionary.keys() else APIHelper.SKIP
        country_code = dictionary.get("CountryCode") if "CountryCode" in dictionary.keys() else APIHelper.SKIP
        country = dictionary.get("Country") if "Country" 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
        payer_full_name = dictionary.get("PayerFullName") if "PayerFullName" in dictionary.keys() else APIHelper.SKIP
        payer_short_name = dictionary.get("PayerShortName") if "PayerShortName" in dictionary.keys() else APIHelper.SKIP
        payer_group_id = dictionary.get("PayerGroupId") if "PayerGroupId" in dictionary.keys() else APIHelper.SKIP
        amount_due = dictionary.get("AmountDue") if "AmountDue" in dictionary.keys() else APIHelper.SKIP
        amount_overdue = dictionary.get("AmountOverdue") if "AmountOverdue" in dictionary.keys() else APIHelper.SKIP
        amount_not_overdue = dictionary.get("AmountNotOverdue") if "AmountNotOverdue" in dictionary.keys() else APIHelper.SKIP
        outstanding_balance = dictionary.get("OutstandingBalance") if "OutstandingBalance" in dictionary.keys() else APIHelper.SKIP
        unallocated_payment = dictionary.get("UnallocatedPayment") if "UnallocatedPayment" in dictionary.keys() else APIHelper.SKIP
        soa_currency_code = dictionary.get("SOACurrencyCode") if "SOACurrencyCode" in dictionary.keys() else APIHelper.SKIP
        soa_currency_symbol = dictionary.get("SOACurrencySymbol") if "SOACurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        soa_credit_limit_currency_code = dictionary.get("SOACreditLimitCurrencyCode") if "SOACreditLimitCurrencyCode" in dictionary.keys() else APIHelper.SKIP
        soa_credit_limit_currency_symbol = dictionary.get("SOACreditLimitCurrencySymbol") if "SOACreditLimitCurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        last_payment_currency_code = dictionary.get("LastPaymentCurrencyCode") if "LastPaymentCurrencyCode" in dictionary.keys() else APIHelper.SKIP
        last_payment_currency_symbol = dictionary.get("LastPaymentCurrencySymbol") if "LastPaymentCurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        last_payment_amount = dictionary.get("LastPaymentAmount") if "LastPaymentAmount" in dictionary.keys() else APIHelper.SKIP
        last_payment_date = dictionary.get("LastPaymentDate") if "LastPaymentDate" in dictionary.keys() else APIHelper.SKIP
        soa_last_payment_amount = dictionary.get("SOALastPaymentAmount") if "SOALastPaymentAmount" in dictionary.keys() else APIHelper.SKIP
        soa_last_payment_date = dictionary.get("SOALastPaymentDate") if "SOALastPaymentDate" in dictionary.keys() else APIHelper.SKIP
        currency_code = dictionary.get("CurrencyCode") if "CurrencyCode" in dictionary.keys() else APIHelper.SKIP
        currency_symbol = dictionary.get("CurrencySymbol") if "CurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        col_co_country_code = dictionary.get("ColCoCountryCode") if "ColCoCountryCode" in dictionary.keys() else APIHelper.SKIP
        local_currency_code = dictionary.get("LocalCurrencyCode") if "LocalCurrencyCode" in dictionary.keys() else APIHelper.SKIP
        local_currency_symbol = dictionary.get("LocalCurrencySymbol") if "LocalCurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        local_currency_exchange_rate = dictionary.get("LocalCurrencyExchangeRate") if "LocalCurrencyExchangeRate" in dictionary.keys() else APIHelper.SKIP
        local_currency_exchange_rate_so_a = dictionary.get("LocalCurrencyExchangeRate_SoA") if "LocalCurrencyExchangeRate_SoA" in dictionary.keys() else APIHelper.SKIP
        billing_frequency_type_id = dictionary.get("BillingFrequencyTypeId") if "BillingFrequencyTypeId" in dictionary.keys() else APIHelper.SKIP
        billing_frequency_type = dictionary.get("BillingFrequencyType") if "BillingFrequencyType" in dictionary.keys() else APIHelper.SKIP
        billing_run_frequency_type_id = dictionary.get("BillingRunFrequencyTypeId") if "BillingRunFrequencyTypeId" in dictionary.keys() else APIHelper.SKIP
        billing_run_frequnecy = dictionary.get("BillingRunFrequnecy") if "BillingRunFrequnecy" in dictionary.keys() else APIHelper.SKIP
        day_1_run = dictionary.get("Day1Run") if "Day1Run" in dictionary.keys() else APIHelper.SKIP
        day_2_run = dictionary.get("Day2Run") if "Day2Run" in dictionary.keys() else APIHelper.SKIP
        day_3_run = dictionary.get("Day3Run") if "Day3Run" in dictionary.keys() else APIHelper.SKIP
        day_4_run = dictionary.get("Day4Run") if "Day4Run" in dictionary.keys() else APIHelper.SKIP
        invoice_distribution_methods = None
        if dictionary.get('InvoiceDistributionMethods') is not None:
            invoice_distribution_methods = [InvoiceDistributionMethod.from_dictionary(x) for x in dictionary.get('InvoiceDistributionMethods')]
        else:
            invoice_distribution_methods = APIHelper.SKIP
        output_type = dictionary.get("OutputType") if "OutputType" in dictionary.keys() else APIHelper.SKIP
        invoice_account_id = dictionary.get("InvoiceAccountID") if "InvoiceAccountID" in dictionary.keys() else APIHelper.SKIP
        invoice_account_number = dictionary.get("InvoiceAccountNumber") if "InvoiceAccountNumber" in dictionary.keys() else APIHelper.SKIP
        invoice_account_short_name = dictionary.get("InvoiceAccountShortName") if "InvoiceAccountShortName" in dictionary.keys() else APIHelper.SKIP
        best_of_indicator = dictionary.get("BestOfIndicator") if dictionary.get("BestOfIndicator") else False
        is_international = dictionary.get("IsInternational") if dictionary.get("IsInternational") else False
        total_accounts = dictionary.get("TotalAccounts") if "TotalAccounts" in dictionary.keys() else APIHelper.SKIP
        total_active_accounts = dictionary.get("TotalActiveAccounts") if "TotalActiveAccounts" in dictionary.keys() else APIHelper.SKIP
        total_cards = dictionary.get("TotalCards") if "TotalCards" in dictionary.keys() else APIHelper.SKIP
        total_active_cards = dictionary.get("TotalActiveCards") if "TotalActiveCards" in dictionary.keys() else APIHelper.SKIP
        total_blocked_cards = dictionary.get("TotalBlockedCards") if "TotalBlockedCards" in dictionary.keys() else APIHelper.SKIP
        total_cancelled_cards = dictionary.get("TotalCancelledCards") if "TotalCancelledCards" in dictionary.keys() else APIHelper.SKIP
        total_expired_cards = dictionary.get("TotalExpiredCards") if "TotalExpiredCards" in dictionary.keys() else APIHelper.SKIP
        total_renewal_pending_cards = dictionary.get("TotalRenewalPendingCards") if "TotalRenewalPendingCards" in dictionary.keys() else APIHelper.SKIP
        total_replaced_cards = dictionary.get("TotalReplacedCards") if "TotalReplacedCards" in dictionary.keys() else APIHelper.SKIP
        total_temporary_block_cards_by_customer = dictionary.get("TotalTemporaryBlockCardsByCustomer") if "TotalTemporaryBlockCardsByCustomer" in dictionary.keys() else APIHelper.SKIP
        total_temporary_block_cards_by_shell = dictionary.get("TotalTemporaryBlockCardsByShell") if "TotalTemporaryBlockCardsByShell" in dictionary.keys() else APIHelper.SKIP
        total_new_cards = dictionary.get("TotalNewCards") if "TotalNewCards" in dictionary.keys() else APIHelper.SKIP
        total_fraud_cards = dictionary.get("TotalFraudCards") if "TotalFraudCards" in dictionary.keys() else APIHelper.SKIP
        total_blocked_accounts = dictionary.get("TotalBlockedAccounts") if "TotalBlockedAccounts" in dictionary.keys() else APIHelper.SKIP
        total_cancelled_accounts = dictionary.get("TotalCancelledAccounts") if "TotalCancelledAccounts" in dictionary.keys() else APIHelper.SKIP
        payer_trading_name = dictionary.get("PayerTradingName") if "PayerTradingName" in dictionary.keys() else APIHelper.SKIP
        status = dictionary.get("Status") if dictionary.get("Status") else APIHelper.SKIP
        billing_language = dictionary.get("BillingLanguage") if "BillingLanguage" in dictionary.keys() else APIHelper.SKIP
        legal_entity = dictionary.get("LegalEntity") if "LegalEntity" in dictionary.keys() else APIHelper.SKIP
        date_established = dictionary.get("DateEstablished") if "DateEstablished" in dictionary.keys() else APIHelper.SKIP
        customer_classification = dictionary.get("CustomerClassification") if "CustomerClassification" in dictionary.keys() else APIHelper.SKIP
        industry_class = dictionary.get("IndustryClass") if "IndustryClass" in dictionary.keys() else APIHelper.SKIP
        marketing_segmentation = dictionary.get("MarketingSegmentation") if "MarketingSegmentation" in dictionary.keys() else APIHelper.SKIP
        line_of_business = dictionary.get("LineOfBusiness") if "LineOfBusiness" in dictionary.keys() else APIHelper.SKIP
        print_credit_limit = dictionary.get("PrintCreditLimit") if dictionary.get("PrintCreditLimit") else False
        card_group_type = dictionary.get("CardGroupType") if "CardGroupType" in dictionary.keys() else APIHelper.SKIP
        renew_cards = dictionary.get("RenewCards") if dictionary.get("RenewCards") else False
        allow_select_pin = dictionary.get("AllowSelectPIN") if dictionary.get("AllowSelectPIN") else False
        use_fleet_pin = dictionary.get("UseFleetPIN") if "UseFleetPIN" in dictionary.keys() else APIHelper.SKIP
        vat_reg_number = dictionary.get("VATRegNumber") if "VATRegNumber" in dictionary.keys() else APIHelper.SKIP
        vat_reg_number_2 = dictionary.get("VATRegNumber2") if dictionary.get("VATRegNumber2") else APIHelper.SKIP
        registration_number = dictionary.get("RegistrationNumber") if "RegistrationNumber" in dictionary.keys() else APIHelper.SKIP
        registration_number_2 = dictionary.get("RegistrationNumber2") if "RegistrationNumber2" in dictionary.keys() else APIHelper.SKIP
        sales_ledger_balance = dictionary.get("SalesLedgerBalance") if "SalesLedgerBalance" in dictionary.keys() else APIHelper.SKIP
        exposure = dictionary.get("Exposure") if "Exposure" in dictionary.keys() else APIHelper.SKIP
        outstanding_debt = dictionary.get("OutstandingDebt") if "OutstandingDebt" in dictionary.keys() else APIHelper.SKIP
        available_credit = dictionary.get("AvailableCredit") if "AvailableCredit" in dictionary.keys() else APIHelper.SKIP
        band = dictionary.get("Band") if "Band" in dictionary.keys() else APIHelper.SKIP
        global_customer_reference_id = dictionary.get("GlobalCustomerReferenceId") if "GlobalCustomerReferenceId" in dictionary.keys() else APIHelper.SKIP
        credit_limit = dictionary.get("CreditLimit") if "CreditLimit" in dictionary.keys() else APIHelper.SKIP
        credit_limit_in_customer_currency = dictionary.get("CreditLimitInCustomerCurrency") if "CreditLimitInCustomerCurrency" in dictionary.keys() else APIHelper.SKIP
        billing_currency_code = dictionary.get("BillingCurrencyCode") if "BillingCurrencyCode" in dictionary.keys() else APIHelper.SKIP
        billing_currency_symbol = dictionary.get("BillingCurrencySymbol") if "BillingCurrencySymbol" in dictionary.keys() else APIHelper.SKIP
        payment_method = dictionary.get("PaymentMethod") if "PaymentMethod" in dictionary.keys() else APIHelper.SKIP
        payment_terms = dictionary.get("PaymentTerms") if "PaymentTerms" in dictionary.keys() else APIHelper.SKIP
        temporary_credit_limit_increase = dictionary.get("TemporaryCreditLimitIncrease") if "TemporaryCreditLimitIncrease" in dictionary.keys() else APIHelper.SKIP
        temporary_credit_limit_increase_in_customer_currency = dictionary.get("TemporaryCreditLimitIncreaseInCustomerCurrency") if "TemporaryCreditLimitIncreaseInCustomerCurrency" in dictionary.keys() else APIHelper.SKIP
        temporary_credit_limit_expiry_date = dictionary.get("TemporaryCreditLimitExpiryDate") if "TemporaryCreditLimitExpiryDate" in dictionary.keys() else APIHelper.SKIP
        payer_bank_account = None
        if dictionary.get('PayerBankAccount') is not None:
            payer_bank_account = [BankAccount.from_dictionary(x) for x in dictionary.get('PayerBankAccount')]
        else:
            payer_bank_account = APIHelper.SKIP
        card_delivery_address = Address.from_dictionary(dictionary.get('CardDeliveryAddress')) if 'CardDeliveryAddress' in dictionary.keys() else APIHelper.SKIP
        correspondance_address = Address.from_dictionary(dictionary.get('CorrespondanceAddress')) if 'CorrespondanceAddress' in dictionary.keys() else APIHelper.SKIP
        billing_address = Address.from_dictionary(dictionary.get('BillingAddress')) if 'BillingAddress' in dictionary.keys() else APIHelper.SKIP
        has_active_vol_based_pricing = dictionary.get("HasActiveVolBasedPricing") if "HasActiveVolBasedPricing" in dictionary.keys() else APIHelper.SKIP
        has_active_vol_based_bonus = dictionary.get("HasActiveVolBasedBonus") if "HasActiveVolBasedBonus" in dictionary.keys() else APIHelper.SKIP
        has_active_vol_based_association_bonus = dictionary.get("HasActiveVolBasedAssociationBonus") if "HasActiveVolBasedAssociationBonus" in dictionary.keys() else APIHelper.SKIP
        finance_currency = FinanceCurrency.from_dictionary(dictionary.get('FinanceCurrency')) if 'FinanceCurrency' in dictionary.keys() else APIHelper.SKIP
        tolls_customer_id = dictionary.get("TollsCustomerId") if "TollsCustomerId" in dictionary.keys() else APIHelper.SKIP
        tolls_colco_country_type_id = dictionary.get("TollsColcoCountryTypeId") if "TollsColcoCountryTypeId" in dictionary.keys() else APIHelper.SKIP
        contracts = None
        if dictionary.get('Contracts') is not None:
            contracts = [CustomerContract.from_dictionary(x) for x in dictionary.get('Contracts')]
        else:
            contracts = APIHelper.SKIP
        # Return an object of this model
        return cls(col_co_id,
                   col_co_code,
                   country_code,
                   country,
                   payer_id,
                   payer_number,
                   payer_full_name,
                   payer_short_name,
                   payer_group_id,
                   amount_due,
                   amount_overdue,
                   amount_not_overdue,
                   outstanding_balance,
                   unallocated_payment,
                   soa_currency_code,
                   soa_currency_symbol,
                   soa_credit_limit_currency_code,
                   soa_credit_limit_currency_symbol,
                   last_payment_currency_code,
                   last_payment_currency_symbol,
                   last_payment_amount,
                   last_payment_date,
                   soa_last_payment_amount,
                   soa_last_payment_date,
                   currency_code,
                   currency_symbol,
                   col_co_country_code,
                   local_currency_code,
                   local_currency_symbol,
                   local_currency_exchange_rate,
                   local_currency_exchange_rate_so_a,
                   billing_frequency_type_id,
                   billing_frequency_type,
                   billing_run_frequency_type_id,
                   billing_run_frequnecy,
                   day_1_run,
                   day_2_run,
                   day_3_run,
                   day_4_run,
                   invoice_distribution_methods,
                   output_type,
                   invoice_account_id,
                   invoice_account_number,
                   invoice_account_short_name,
                   best_of_indicator,
                   is_international,
                   total_accounts,
                   total_active_accounts,
                   total_cards,
                   total_active_cards,
                   total_blocked_cards,
                   total_cancelled_cards,
                   total_expired_cards,
                   total_renewal_pending_cards,
                   total_replaced_cards,
                   total_temporary_block_cards_by_customer,
                   total_temporary_block_cards_by_shell,
                   total_new_cards,
                   total_fraud_cards,
                   total_blocked_accounts,
                   total_cancelled_accounts,
                   payer_trading_name,
                   status,
                   billing_language,
                   legal_entity,
                   date_established,
                   customer_classification,
                   industry_class,
                   marketing_segmentation,
                   line_of_business,
                   print_credit_limit,
                   card_group_type,
                   renew_cards,
                   allow_select_pin,
                   use_fleet_pin,
                   vat_reg_number,
                   vat_reg_number_2,
                   registration_number,
                   registration_number_2,
                   sales_ledger_balance,
                   exposure,
                   outstanding_debt,
                   available_credit,
                   band,
                   global_customer_reference_id,
                   credit_limit,
                   credit_limit_in_customer_currency,
                   billing_currency_code,
                   billing_currency_symbol,
                   payment_method,
                   payment_terms,
                   temporary_credit_limit_increase,
                   temporary_credit_limit_increase_in_customer_currency,
                   temporary_credit_limit_expiry_date,
                   payer_bank_account,
                   card_delivery_address,
                   correspondance_address,
                   billing_address,
                   has_active_vol_based_pricing,
                   has_active_vol_based_bonus,
                   has_active_vol_based_association_bonus,
                   finance_currency,
                   tolls_customer_id,
                   tolls_colco_country_type_id,
                   contracts)
