"""visaacceptancemergedspec.

This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
"""

# ruff: noqa: E501
from visaacceptancemergedspec.api_helper import (
    APIHelper,
)


class InstallmentInformation2(object):
    """Implementation of the 'InstallmentInformation2' model.

    Attributes:
        amount (str): Amount for the current installment payment.  This field is
            supported only for Visa Acceptance through VisaNet.
        frequency (str): Frequency of the installment payments. When you do not
            include this field in a request for a Crediario installment payment, Visa
            Acceptance sends a space character to the processor.  This field is
            supported only for Visa Acceptance through VisaNet. Possible values: -
            `B`: Biweekly - `M`: Monthly - `W`: Weekly  For Crediario installment
            payments, the value for this field corresponds to the following data in
            the TC 33 capture file5: - Record: CP01 TCR9 - Position: 41 - Field:
            Installment Frequency
        plan_type (str): #### American Express Direct, Cielo, and Visa Acceptance
            Latin American Processing Flag that indicates the type of funding for the
            installment plan associated with the payment.  Possible values: - `1`:
            Merchant-funded installment plan - `2`: Issuer-funded installment plan If
            you do not include this field in the request, Visa Acceptance uses the
            value in your Visa Acceptance account.  To change the value in your Visa
            Acceptance account, contact Visa Acceptance Customer Service.  #### Visa
            Acceptance through VisaNet and American Express Defined code that
            indicates the type of installment plan for this transaction.  Contact
            American Express for: - Information about the kinds of installment plans
            that American Express provides - Values for this field  For installment
            payments with American Express in Brazil, the value for this field
            corresponds to the following data in the TC 33 capture file*: - Record:
            CP07 TCR3 - Position: 5-6 - Field: Plan Type  * The TC 33 Capture file
            contains information about the purchases and refunds that a merchant
            submits to Visa Acceptance. Visa Acceptance through VisaNet creates the
            TC 33 Capture file at the end of the day and sends it to the merchant’s
            acquirer, who uses this information to facilitate end-of-day clearing
            processing with payment card companies.  #### Visa Acceptance through
            VisaNet with Visa or Mastercard Flag indicating the type of funding for
            the installment plan associated with the payment. Possible values: - 1 or
            01: Merchant-funded installment plan - 2 or 02: Issuer-funded installment
            plan - 43: Crediario installment plan—only with Visa in Brazil  For
            installment payments with Visa in Brazil, the value for this field
            corresponds to the following data in the TC 33 capture file5: - Record:
            CP07 TCR1 - Position: 5-6 - Field: Installment Type  For all other kinds
            of installment payments, the value for this field corresponds to the
            following data in the TC 33 capture file5: - Record: CP01 TCR5 -
            Position: 39-40 - Field: Installment Plan Type (Issuer or Merchant)
        sequence (int): Installment number when making payments in installments. Used
            along with `totalCount` to track which payment is being processed.  For
            example, the second of 5 payments would be passed to Visa Acceptance as
            `sequence` = 2 and `totalCount` = 5.  #### Chase Paymentech Solutions and
            FDC Compass This field is optional because this value is required in the
            merchant descriptors.  #### Visa Acceptance through VisaNet When you do
            not include this field in a request for a Crediario installment payment,
            Visa Acceptance sends a value of 0 to the processor.  For Crediario
            installment payments, the value for this field corresponds to the
            following data in the TC 33 capture file*: - Record: CP01 TCR9 -
            Position: 38-40 - Field: Installment Payment Number  * The TC 33 Capture
            file contains information about the purchases and refunds that a merchant
            submits to Visa Acceptance. Visa Acceptance through VisaNet creates the
            TC 33 Capture file at the end of the day and sends it to the merchant’s
            acquirer, who uses this information to facilitate end-of-day clearing
            processing with payment card companies.
        total_amount (str): Total amount of the loan that is being paid in
            installments. This field is supported only for Visa Acceptance through
            VisaNet.
        total_count (int): Total number of installments when making payments in
            installments.  #### Chase Paymentech Solutions and FDC Compass This field
            is optional because this value is required in the merchant descriptors.
            #### American Express Direct, Cielo, and Comercio Latino This value is
            the total number of installments you approved.  #### Visa Acceptance
            Latin American Processing in Brazil This value is the total number of
            installments that you approved. The default is 1.  #### All Other
            Processors This value is used along with _sequence_ to track which
            payment is being processed.  For example, the second of 5 payments would
            be passed to Visa Acceptance as _sequence_ = 2 and _totalCount_ = 5.
            #### Visa Acceptance through VisaNet For Crediario installment payments,
            the value for this field corresponds to the following data in the TC 33
            capture file*: - Record: CP01 TCR9 - Position: 23-25 - Field: Number of
            Installments  For installment payments with American Express in Brazil,
            the value for this field corresponds to the following data in the TC 33
            capture file*: - Record: CP07 TCR3 - Position: 7-8 - Field: Number of
            Installments  For installment payments with Visa in Brazil, the value for
            this field corresponds to the following data in the TC 33 capture file*:
            - Record: CP07 TCR1 - Position: 7-8 - Field: Number of Installments  For
            all other kinds of installment payments, the value for this field
            corresponds to the following data in the TC 33 capture file*: - Record:
            CP01 TCR5 - Position: 20-22 - Field: Installment Total Count  **Note**
            The TC 33 Capture file contains information about the purchases and
            refunds that a merchant submits to Visa Acceptance. Visa Acceptance
            through VisaNet creates the TC 33 Capture file at the end of the day and
            sends it to the merchant’s acquirer, who uses this information to
            facilitate end-of-day clearing processing with payment card companies.
        first_installment_date (str): Date of the first installment payment. Format:
            YYMMDD. When you do not include this field, Visa Acceptance sends a
            string of six zeros (000000) to the processor.  This field is supported
            only for Crediario installment payments in Brazil on Visa Acceptance
            through VisaNet.  The value for this field corresponds to the following
            data in the TC 33 capture file: - Record: CP01 TCR9 - Position: 42-47 -
            Field: Date of First Installment
        first_installment_amount (str): Amount of the first installment payment. The
            issuer provides this value when the first installment payment is
            successful. This field is supported for Mastercard installment payments
            on Visa Acceptance through VisaNet in all countries except
            Brazil,Croatia, Georgia, and Greece. The value for this field corresponds
            to the following data in the TC 33 capture file: - Record: CP01 TCR5 -
            Position: 23-34 - Field: Amount of Each Installment
        invoice_data (str): Invoice information that you want to provide to the
            issuer. This value is similar to a tracking number and is the same for
            all installment payments for one purchase.  This field is supported only
            for installment payments with Mastercard on Visa Acceptance through
            VisaNet in Brazil.  The value for this field corresponds to the following
            data in the TC 33 capture file5: - Record: CP07 TCR4 - Position: 51-70 -
            Field: Purchase Identification
        payment_type (str): Payment plan for the installments. This field is
            supported only for installment payments on Visa Platform Connect, RuPay
            and SPG-KSA seamless flow.  Possible values for a standing-instruction
            (SI) merchant-initiated transaction (MIT) with Diners Club or Mastercard
            in India or with an India-issued card: - 1: SI with a fixed amount. - 2:
            SI with a maximum amount. - 3: Other kind of SI.  Possible values for a
            type of Installment transaction for on-soil transaction in Kingdom of
            Saudi Arabia - 1: Registration or first transaction. - 2: Subsequent
            transaction.  Possible values for other kinds of installment payments: -
            0 (default): Regular installment. This value is not allowed for airline
            transactions. - 1: Installment payment with down payment. - 2:
            Installment payment without down payment. This value is supported only
            for airline transactions. - 3: Installment payment; down payment and
            boarding fee will follow. This value is supported only for airline
            transactions. - 4: Down payment only; regular installment payment will
            follow. - 5: Boarding fee only. This value is supported only for airline
            transactions. - 6: SI de-registration on RuPay for the payer
            authentication seamless flow.
        additional_costs (str): Additional costs charged by the issuer to fund the
            installment payments.  This field is included in the authorization reply
            for the Crediario eligibility request when the issuer approves the
            cardholder's request for Crediario installment payments in Brazil.  This
            field is supported only for Crediario installment payments in Brazil on
            **Visa Acceptance through VisaNet**.  The value for this field
            corresponds to the following data in the TC 33 capture file1: - Record:
            CP01 TCR9 - Position: 128-139 - Field: Total Other Costs
        additional_costs_percentage (str): Additional costs divided by the amount
            funded.  For example: - A value of 1.0 specifies 1%. - A value of 4.0
            specifies 4%.  This field is included in the authorization reply for the
            Crediario eligibility request when the issuer approves the cardholder's
            request for Crediario installment payments in Brazil.  This field is
            supported only for Crediario installment payments in Brazil on **Visa
            Acceptance through VisaNet**.  The value for this field corresponds to
            the following data in the TC 33 capture file1: - Record: CP01 TCR9 -
            Position: 140-143 - Field: Percent of Total Other Costs
        amount_funded (str): Amount funded.  This field is included in the
            authorization reply for the Crediario eligibility request when the issuer
            approves the cardholder's request for Crediario installment payments in
            Brazil.  This field is supported only for Crediario installment payments
            in Brazil on **Visa Acceptance through VisaNet**.  The value for this
            field corresponds to the following data in the TC 33 capture file1: -
            Record: CP01 TCR9 - Position: 48-59 - Field: Total Amount Funded
        amount_requested_percentage (str): Amount requested divided by the amount
            funded.  For example: - A value of 90.0 specifies 90%. - A value of 93.7
            specifies 93.7%.  This field is included in the authorization reply for
            the Crediario eligibility request when the issuer approves the
            cardholder's request for Crediario installment payments in Brazil.  This
            field is supported only for Crediario installment payments in Brazil on
            **Visa Acceptance through VisaNet**.  The value for this field
            corresponds to the following data in the TC 33 capture file1: - Record:
            CP01 TCR9 - Position: 60-63 - Field: Percent of Amount Requested
        annual_financing_cost (str): Annual cost of financing the installment
            payments.  This field is included in the authorization reply for the
            Crediario eligibility request when the issuer approves the cardholder's
            request for Crediario installment payments in Brazil.  This field is
            supported only for Crediario installment payments in Brazil on **Visa
            Acceptance through VisaNet**.  The value for this field corresponds to
            the following data in the TC 33 capture file1: - Record: CP01 TCR9 -
            Position: 158-164 - Field: Annual Total Cost of Financing
        annual_interest_rate (str): Annual interest rate.  This field is returned
            only for two kinds of installment payments on Visa Platform Connect: -
            Crediario with Visa in Brazil: this field is included in the
            authorization response for the Crediario eligibility request when the
            issuer approves the customer's request for Crediario installment
            payments. - Mastercard in all countries except Brazil, Croatia, Georgia,
            and Greece.   Example: A value of 1.0 specifies 1%.  Example: A value of
            4.0 specifies 4%.  #### Brazil The value for this field corresponds to
            the following data in the TC 33 capture file: - Record: CP01 TCR9 -
            Position: 151-157 - Field: Annual Interest Rate   #### Other Countries
            The value for this field corresponds to the following data in the TC 33
            capture file: - Record: CP01 TCR5 - Position: 58-62 SCMP API Fields| 216
            - Field: Mastercard Annual Percentage Rate
        expenses (str): Expenses charged by the issuer to fund the installment
            payments.  This field is included in the authorization reply for the
            Crediario eligibility request when the issuer approves the cardholder's
            request for Crediario installment payments in Brazil.  This field is
            supported only for Crediario installment payments in Brazil on **Visa
            Acceptance through VisaNet**.  The value for this field corresponds to
            the following data in the TC 33 capture file1: - Record: CP01 TCR9 -
            Position: 64-75 - Field: Total Expenses
        expenses_percentage (str): Expenses divided by the amount funded.  For
            example: - A value of 1.0 specifies 1%. - A value of 4.0 specifies 4%.
            This field is included in the authorization reply for the Crediario
            eligibility request when the issuer approves the cardholder's request for
            Crediario installment payments in Brazil.  This field is supported only
            for Crediario installment payments in Brazil on **Visa Acceptance through
            VisaNet**.  The value for this field corresponds to the following data in
            the TC 33 capture file1: - Record: CP01 TCR9 - Position: 76-79 - Field:
            Percent of Total Expenses
        fees (str): Fees charged by the issuer to fund the installment payments.
            This field is included in the authorization reply for the Crediario
            eligibility request when the issuer approves the cardholder's request for
            Crediario installment payments in Brazil.  This field is supported only
            for Crediario installment payments in Brazil on **Visa Acceptance through
            VisaNet**.  The value for this field corresponds to the following data in
            the TC 33 capture file1: - Record: CP01 TCR9 - Position: 80-91 - Field:
            Total Fees
        fees_percentage (str): Fees divided by the amount funded.  For example: - A
            value of 1.0 specifies 1%. - A value of 4.0 specifies 4%.  This field is
            included in the authorization reply for the Crediario eligibility request
            when the issuer approves the cardholder's request for Crediario
            installment payments in Brazil.  This field is supported only for
            Crediario installment payments in Brazil on Visa Acceptance through
            VisaNet.  The value for this field corresponds to the following data in
            the TC 33 capture file1: - Record: CP01 TCR9 - Position: 92-95 - Field:
            Percent of Total Fees
        insurance (str): Insurance charged by the issuer to fund the installment
            payments.  This field is included in the authorization reply for the
            Crediario eligibility request when the issuer approves the cardholder's
            request for Crediario installment payments in Brazil.  This field is
            supported only for Crediario installment payments in Brazil on **Visa
            Acceptance through VisaNet**.  The value for this field corresponds to
            the following data in the TC 33 capture file1: - Record: CP01 TCR9 -
            Position: 112-123 - Field: Total Insurance
        insurance_percentage (str): Insurance costs divided by the amount funded.
            For example: - A value of 1.0 specifies 1%. - A value of 4.0 specifies
            4%.  This field is included in the authorization reply for the Crediario
            eligibility request when the issuer approves the cardholder's request for
            Crediario installment payments in Brazil.  This field is supported only
            for Crediario installment payments in Brazil on **Visa Acceptance through
            VisaNet**.  The value for this field corresponds to the following data in
            the TC 33 capture file1: - Record: CP01 TCR9 - Position: 124-127 - Field:
            Percent Of Total Insurance
        monthly_interest_rate (str): Monthly interest rate.  For example: - A value
            of 1.0 specifies 1%. - A value of 4.0 specifies 4%.  This field is
            included in the authorization reply for the Crediario eligibility request
            when the issuer approves the cardholder's request for Crediario
            installment payments in Brazil.  This field is supported only for
            Crediario installment payments in Brazil on **Visa Acceptance through
            VisaNet**.  The value for this field corresponds to the following data in
            the TC 33 capture file1: - Record: CP01 TCR9 - Position: 144-150 - Field:
            Monthly Interest Rate
        taxes (str): Taxes collected by the issuer to fund the installment payments.
            This field is included in the authorization reply for the Crediario
            eligibility request when the issuer approves the cardholder's request for
            Crediario installment payments in Brazil.  This field is supported only
            for Crediario installment payments in Brazil on **Visa Acceptance through
            VisaNet**.  The value for this field corresponds to the following data in
            the TC 33 capture file1: - Record: CP01 TCR9 - Position: 96-107 - Field:
            Total Taxes
        taxes_percentage (str): Taxes divided by the amount funded.  For example: - A
            value of 1.0 specifies 1%. - A value of 4.0 specifies 4%.  This field is
            included in the authorization reply for the Crediario eligibility request
            when the issuer approves the cardholder's request for Crediario
            installment payments in Brazil.  This field is supported only for
            Crediario installment payments in Brazil on **Visa Acceptance through
            VisaNet**.  The value for this field corresponds to the following data in
            the TC 33 capture file1: - Record: CP01 TCR9 - Position: 108-111 - Field:
            Percent of Total Taxes
        additional_properties (Dict[str, Any]): The additional properties for the
            model.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "amount": "amount",
        "frequency": "frequency",
        "plan_type": "planType",
        "sequence": "sequence",
        "total_amount": "totalAmount",
        "total_count": "totalCount",
        "first_installment_date": "firstInstallmentDate",
        "first_installment_amount": "firstInstallmentAmount",
        "invoice_data": "invoiceData",
        "payment_type": "paymentType",
        "additional_costs": "additionalCosts",
        "additional_costs_percentage": "additionalCostsPercentage",
        "amount_funded": "amountFunded",
        "amount_requested_percentage": "amountRequestedPercentage",
        "annual_financing_cost": "annualFinancingCost",
        "annual_interest_rate": "annualInterestRate",
        "expenses": "expenses",
        "expenses_percentage": "expensesPercentage",
        "fees": "fees",
        "fees_percentage": "feesPercentage",
        "insurance": "insurance",
        "insurance_percentage": "insurancePercentage",
        "monthly_interest_rate": "monthlyInterestRate",
        "taxes": "taxes",
        "taxes_percentage": "taxesPercentage",
    }

    _optionals = [
        "amount",
        "frequency",
        "plan_type",
        "sequence",
        "total_amount",
        "total_count",
        "first_installment_date",
        "first_installment_amount",
        "invoice_data",
        "payment_type",
        "additional_costs",
        "additional_costs_percentage",
        "amount_funded",
        "amount_requested_percentage",
        "annual_financing_cost",
        "annual_interest_rate",
        "expenses",
        "expenses_percentage",
        "fees",
        "fees_percentage",
        "insurance",
        "insurance_percentage",
        "monthly_interest_rate",
        "taxes",
        "taxes_percentage",
    ]

    def __init__(
        self,
        amount=APIHelper.SKIP,
        frequency=APIHelper.SKIP,
        plan_type=APIHelper.SKIP,
        sequence=APIHelper.SKIP,
        total_amount=APIHelper.SKIP,
        total_count=APIHelper.SKIP,
        first_installment_date=APIHelper.SKIP,
        first_installment_amount=APIHelper.SKIP,
        invoice_data=APIHelper.SKIP,
        payment_type=APIHelper.SKIP,
        additional_costs=APIHelper.SKIP,
        additional_costs_percentage=APIHelper.SKIP,
        amount_funded=APIHelper.SKIP,
        amount_requested_percentage=APIHelper.SKIP,
        annual_financing_cost=APIHelper.SKIP,
        annual_interest_rate=APIHelper.SKIP,
        expenses=APIHelper.SKIP,
        expenses_percentage=APIHelper.SKIP,
        fees=APIHelper.SKIP,
        fees_percentage=APIHelper.SKIP,
        insurance=APIHelper.SKIP,
        insurance_percentage=APIHelper.SKIP,
        monthly_interest_rate=APIHelper.SKIP,
        taxes=APIHelper.SKIP,
        taxes_percentage=APIHelper.SKIP,
        additional_properties=None):
        """Initialize a InstallmentInformation2 instance."""
        # Initialize members of the class
        if amount is not APIHelper.SKIP:
            self.amount = amount
        if frequency is not APIHelper.SKIP:
            self.frequency = frequency
        if plan_type is not APIHelper.SKIP:
            self.plan_type = plan_type
        if sequence is not APIHelper.SKIP:
            self.sequence = sequence
        if total_amount is not APIHelper.SKIP:
            self.total_amount = total_amount
        if total_count is not APIHelper.SKIP:
            self.total_count = total_count
        if first_installment_date is not APIHelper.SKIP:
            self.first_installment_date = first_installment_date
        if first_installment_amount is not APIHelper.SKIP:
            self.first_installment_amount = first_installment_amount
        if invoice_data is not APIHelper.SKIP:
            self.invoice_data = invoice_data
        if payment_type is not APIHelper.SKIP:
            self.payment_type = payment_type
        if additional_costs is not APIHelper.SKIP:
            self.additional_costs = additional_costs
        if additional_costs_percentage is not APIHelper.SKIP:
            self.additional_costs_percentage = additional_costs_percentage
        if amount_funded is not APIHelper.SKIP:
            self.amount_funded = amount_funded
        if amount_requested_percentage is not APIHelper.SKIP:
            self.amount_requested_percentage = amount_requested_percentage
        if annual_financing_cost is not APIHelper.SKIP:
            self.annual_financing_cost = annual_financing_cost
        if annual_interest_rate is not APIHelper.SKIP:
            self.annual_interest_rate = annual_interest_rate
        if expenses is not APIHelper.SKIP:
            self.expenses = expenses
        if expenses_percentage is not APIHelper.SKIP:
            self.expenses_percentage = expenses_percentage
        if fees is not APIHelper.SKIP:
            self.fees = fees
        if fees_percentage is not APIHelper.SKIP:
            self.fees_percentage = fees_percentage
        if insurance is not APIHelper.SKIP:
            self.insurance = insurance
        if insurance_percentage is not APIHelper.SKIP:
            self.insurance_percentage = insurance_percentage
        if monthly_interest_rate is not APIHelper.SKIP:
            self.monthly_interest_rate = monthly_interest_rate
        if taxes is not APIHelper.SKIP:
            self.taxes = taxes
        if taxes_percentage is not APIHelper.SKIP:
            self.taxes_percentage = taxes_percentage

        # Add additional model properties to the instance
        if additional_properties is None:
            additional_properties = {}
        self.additional_properties = additional_properties

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Create 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
        amount =\
            dictionary.get("amount")\
            if dictionary.get("amount")\
                else APIHelper.SKIP
        frequency =\
            dictionary.get("frequency")\
            if dictionary.get("frequency")\
                else APIHelper.SKIP
        plan_type =\
            dictionary.get("planType")\
            if dictionary.get("planType")\
                else APIHelper.SKIP
        sequence =\
            dictionary.get("sequence")\
            if dictionary.get("sequence")\
                else APIHelper.SKIP
        total_amount =\
            dictionary.get("totalAmount")\
            if dictionary.get("totalAmount")\
                else APIHelper.SKIP
        total_count =\
            dictionary.get("totalCount")\
            if dictionary.get("totalCount")\
                else APIHelper.SKIP
        first_installment_date =\
            dictionary.get("firstInstallmentDate")\
            if dictionary.get("firstInstallmentDate")\
                else APIHelper.SKIP
        first_installment_amount =\
            dictionary.get("firstInstallmentAmount")\
            if dictionary.get("firstInstallmentAmount")\
                else APIHelper.SKIP
        invoice_data =\
            dictionary.get("invoiceData")\
            if dictionary.get("invoiceData")\
                else APIHelper.SKIP
        payment_type =\
            dictionary.get("paymentType")\
            if dictionary.get("paymentType")\
                else APIHelper.SKIP
        additional_costs =\
            dictionary.get("additionalCosts")\
            if dictionary.get("additionalCosts")\
                else APIHelper.SKIP
        additional_costs_percentage =\
            dictionary.get("additionalCostsPercentage")\
            if dictionary.get("additionalCostsPercentage")\
                else APIHelper.SKIP
        amount_funded =\
            dictionary.get("amountFunded")\
            if dictionary.get("amountFunded")\
                else APIHelper.SKIP
        amount_requested_percentage =\
            dictionary.get("amountRequestedPercentage")\
            if dictionary.get("amountRequestedPercentage")\
                else APIHelper.SKIP
        annual_financing_cost =\
            dictionary.get("annualFinancingCost")\
            if dictionary.get("annualFinancingCost")\
                else APIHelper.SKIP
        annual_interest_rate =\
            dictionary.get("annualInterestRate")\
            if dictionary.get("annualInterestRate")\
                else APIHelper.SKIP
        expenses =\
            dictionary.get("expenses")\
            if dictionary.get("expenses")\
                else APIHelper.SKIP
        expenses_percentage =\
            dictionary.get("expensesPercentage")\
            if dictionary.get("expensesPercentage")\
                else APIHelper.SKIP
        fees =\
            dictionary.get("fees")\
            if dictionary.get("fees")\
                else APIHelper.SKIP
        fees_percentage =\
            dictionary.get("feesPercentage")\
            if dictionary.get("feesPercentage")\
                else APIHelper.SKIP
        insurance =\
            dictionary.get("insurance")\
            if dictionary.get("insurance")\
                else APIHelper.SKIP
        insurance_percentage =\
            dictionary.get("insurancePercentage")\
            if dictionary.get("insurancePercentage")\
                else APIHelper.SKIP
        monthly_interest_rate =\
            dictionary.get("monthlyInterestRate")\
            if dictionary.get("monthlyInterestRate")\
                else APIHelper.SKIP
        taxes =\
            dictionary.get("taxes")\
            if dictionary.get("taxes")\
                else APIHelper.SKIP
        taxes_percentage =\
            dictionary.get("taxesPercentage")\
            if dictionary.get("taxesPercentage")\
                else APIHelper.SKIP

        additional_properties = APIHelper.get_additional_properties(
            dictionary={k: v for k, v in dictionary.items()
                        if k not in cls._names.values()},
            unboxing_function=lambda value: value)

        # Return an object of this model
        return cls(amount,
                   frequency,
                   plan_type,
                   sequence,
                   total_amount,
                   total_count,
                   first_installment_date,
                   first_installment_amount,
                   invoice_data,
                   payment_type,
                   additional_costs,
                   additional_costs_percentage,
                   amount_funded,
                   amount_requested_percentage,
                   annual_financing_cost,
                   annual_interest_rate,
                   expenses,
                   expenses_percentage,
                   fees,
                   fees_percentage,
                   insurance,
                   insurance_percentage,
                   monthly_interest_rate,
                   taxes,
                   taxes_percentage,
                   additional_properties)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _amount=(
            self.amount
            if hasattr(self, "amount")
            else None
        )
        _frequency=(
            self.frequency
            if hasattr(self, "frequency")
            else None
        )
        _plan_type=(
            self.plan_type
            if hasattr(self, "plan_type")
            else None
        )
        _sequence=(
            self.sequence
            if hasattr(self, "sequence")
            else None
        )
        _total_amount=(
            self.total_amount
            if hasattr(self, "total_amount")
            else None
        )
        _total_count=(
            self.total_count
            if hasattr(self, "total_count")
            else None
        )
        _first_installment_date=(
            self.first_installment_date
            if hasattr(self, "first_installment_date")
            else None
        )
        _first_installment_amount=(
            self.first_installment_amount
            if hasattr(self, "first_installment_amount")
            else None
        )
        _invoice_data=(
            self.invoice_data
            if hasattr(self, "invoice_data")
            else None
        )
        _payment_type=(
            self.payment_type
            if hasattr(self, "payment_type")
            else None
        )
        _additional_costs=(
            self.additional_costs
            if hasattr(self, "additional_costs")
            else None
        )
        _additional_costs_percentage=(
            self.additional_costs_percentage
            if hasattr(self, "additional_costs_percentage")
            else None
        )
        _amount_funded=(
            self.amount_funded
            if hasattr(self, "amount_funded")
            else None
        )
        _amount_requested_percentage=(
            self.amount_requested_percentage
            if hasattr(self, "amount_requested_percentage")
            else None
        )
        _annual_financing_cost=(
            self.annual_financing_cost
            if hasattr(self, "annual_financing_cost")
            else None
        )
        _annual_interest_rate=(
            self.annual_interest_rate
            if hasattr(self, "annual_interest_rate")
            else None
        )
        _expenses=(
            self.expenses
            if hasattr(self, "expenses")
            else None
        )
        _expenses_percentage=(
            self.expenses_percentage
            if hasattr(self, "expenses_percentage")
            else None
        )
        _fees=(
            self.fees
            if hasattr(self, "fees")
            else None
        )
        _fees_percentage=(
            self.fees_percentage
            if hasattr(self, "fees_percentage")
            else None
        )
        _insurance=(
            self.insurance
            if hasattr(self, "insurance")
            else None
        )
        _insurance_percentage=(
            self.insurance_percentage
            if hasattr(self, "insurance_percentage")
            else None
        )
        _monthly_interest_rate=(
            self.monthly_interest_rate
            if hasattr(self, "monthly_interest_rate")
            else None
        )
        _taxes=(
            self.taxes
            if hasattr(self, "taxes")
            else None
        )
        _taxes_percentage=(
            self.taxes_percentage
            if hasattr(self, "taxes_percentage")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"amount={_amount!r}, "
            f"frequency={_frequency!r}, "
            f"plan_type={_plan_type!r}, "
            f"sequence={_sequence!r}, "
            f"total_amount={_total_amount!r}, "
            f"total_count={_total_count!r}, "
            f"first_installment_date={_first_installment_date!r}, "
            f"first_installment_amount={_first_installment_amount!r}, "
            f"invoice_data={_invoice_data!r}, "
            f"payment_type={_payment_type!r}, "
            f"additional_costs={_additional_costs!r}, "
            f"additional_costs_percentage={_additional_costs_percentage!r}, "
            f"amount_funded={_amount_funded!r}, "
            f"amount_requested_percentage={_amount_requested_percentage!r}, "
            f"annual_financing_cost={_annual_financing_cost!r}, "
            f"annual_interest_rate={_annual_interest_rate!r}, "
            f"expenses={_expenses!r}, "
            f"expenses_percentage={_expenses_percentage!r}, "
            f"fees={_fees!r}, "
            f"fees_percentage={_fees_percentage!r}, "
            f"insurance={_insurance!r}, "
            f"insurance_percentage={_insurance_percentage!r}, "
            f"monthly_interest_rate={_monthly_interest_rate!r}, "
            f"taxes={_taxes!r}, "
            f"taxes_percentage={_taxes_percentage!r}, "
            f"additional_properties={_additional_properties!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _amount=(
            self.amount
            if hasattr(self, "amount")
            else None
        )
        _frequency=(
            self.frequency
            if hasattr(self, "frequency")
            else None
        )
        _plan_type=(
            self.plan_type
            if hasattr(self, "plan_type")
            else None
        )
        _sequence=(
            self.sequence
            if hasattr(self, "sequence")
            else None
        )
        _total_amount=(
            self.total_amount
            if hasattr(self, "total_amount")
            else None
        )
        _total_count=(
            self.total_count
            if hasattr(self, "total_count")
            else None
        )
        _first_installment_date=(
            self.first_installment_date
            if hasattr(self, "first_installment_date")
            else None
        )
        _first_installment_amount=(
            self.first_installment_amount
            if hasattr(self, "first_installment_amount")
            else None
        )
        _invoice_data=(
            self.invoice_data
            if hasattr(self, "invoice_data")
            else None
        )
        _payment_type=(
            self.payment_type
            if hasattr(self, "payment_type")
            else None
        )
        _additional_costs=(
            self.additional_costs
            if hasattr(self, "additional_costs")
            else None
        )
        _additional_costs_percentage=(
            self.additional_costs_percentage
            if hasattr(self, "additional_costs_percentage")
            else None
        )
        _amount_funded=(
            self.amount_funded
            if hasattr(self, "amount_funded")
            else None
        )
        _amount_requested_percentage=(
            self.amount_requested_percentage
            if hasattr(self, "amount_requested_percentage")
            else None
        )
        _annual_financing_cost=(
            self.annual_financing_cost
            if hasattr(self, "annual_financing_cost")
            else None
        )
        _annual_interest_rate=(
            self.annual_interest_rate
            if hasattr(self, "annual_interest_rate")
            else None
        )
        _expenses=(
            self.expenses
            if hasattr(self, "expenses")
            else None
        )
        _expenses_percentage=(
            self.expenses_percentage
            if hasattr(self, "expenses_percentage")
            else None
        )
        _fees=(
            self.fees
            if hasattr(self, "fees")
            else None
        )
        _fees_percentage=(
            self.fees_percentage
            if hasattr(self, "fees_percentage")
            else None
        )
        _insurance=(
            self.insurance
            if hasattr(self, "insurance")
            else None
        )
        _insurance_percentage=(
            self.insurance_percentage
            if hasattr(self, "insurance_percentage")
            else None
        )
        _monthly_interest_rate=(
            self.monthly_interest_rate
            if hasattr(self, "monthly_interest_rate")
            else None
        )
        _taxes=(
            self.taxes
            if hasattr(self, "taxes")
            else None
        )
        _taxes_percentage=(
            self.taxes_percentage
            if hasattr(self, "taxes_percentage")
            else None
        )
        _additional_properties=self.additional_properties
        return (
            f"{self.__class__.__name__}("
            f"amount={_amount!s}, "
            f"frequency={_frequency!s}, "
            f"plan_type={_plan_type!s}, "
            f"sequence={_sequence!s}, "
            f"total_amount={_total_amount!s}, "
            f"total_count={_total_count!s}, "
            f"first_installment_date={_first_installment_date!s}, "
            f"first_installment_amount={_first_installment_amount!s}, "
            f"invoice_data={_invoice_data!s}, "
            f"payment_type={_payment_type!s}, "
            f"additional_costs={_additional_costs!s}, "
            f"additional_costs_percentage={_additional_costs_percentage!s}, "
            f"amount_funded={_amount_funded!s}, "
            f"amount_requested_percentage={_amount_requested_percentage!s}, "
            f"annual_financing_cost={_annual_financing_cost!s}, "
            f"annual_interest_rate={_annual_interest_rate!s}, "
            f"expenses={_expenses!s}, "
            f"expenses_percentage={_expenses_percentage!s}, "
            f"fees={_fees!s}, "
            f"fees_percentage={_fees_percentage!s}, "
            f"insurance={_insurance!s}, "
            f"insurance_percentage={_insurance_percentage!s}, "
            f"monthly_interest_rate={_monthly_interest_rate!s}, "
            f"taxes={_taxes!s}, "
            f"taxes_percentage={_taxes_percentage!s}, "
            f"additional_properties={_additional_properties!s}, "
            f")"
        )
