# coding: utf-8

"""
    Zuora API Reference

    REST API reference for the Zuora Billing, Payments, and Central Platform! Check out the [REST API Overview](https://www.zuora.com/developer/api-references/api/overview/).

    The version of the OpenAPI document: 2024-05-20
    Contact: docs@zuora.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from __future__ import annotations
import json
from enum import Enum
from typing_extensions import Self


class JournalRunTransactionType(str, Enum):
    """
    Transaction type. Invoice Adjustment is deprecated on Production. Zuora recommends that you use the Invoice Item Adjustment instead. If you enable the Invoice Settlement feature, Debit Memo Item, Credit Memo Item, and Credit Memo Application Item are available, Payment and Refund will be replaced by Payment Application and Refund Application. If you enable both the Invoice Settlement feature and the Invoice Item Settlement feature, Payment and Refund will be replaced by Payment Application Item and Refund Application Item.
    """

    """
    allowed enum values
    """
    INVOICE_ITEM = 'Invoice Item'
    TAXATION_ITEM = 'Taxation Item'
    INVOICE_ITEM_ADJUSTMENT_LEFT_PARENTHESIS_INVOICE_RIGHT_PARENTHESIS = 'Invoice Item Adjustment (Invoice)'
    INVOICE_ITEM_ADJUSTMENT_LEFT_PARENTHESIS_TAX_RIGHT_PARENTHESIS = 'Invoice Item Adjustment (Tax)'
    INVOICE_ADJUSTMENT = 'Invoice Adjustment'
    ELECTRONIC_PAYMENT = 'Electronic Payment'
    EXTERNAL_PAYMENT = 'External Payment'
    ELECTRONIC_REFUND = 'Electronic Refund'
    EXTERNAL_REFUND = 'External Refund'
    ELECTRONIC_CREDIT_BALANCE_PAYMENT = 'Electronic Credit Balance Payment'
    EXTERNAL_CREDIT_BALANCE_PAYMENT = 'External Credit Balance Payment'
    ELECTRONIC_CREDIT_BALANCE_REFUND = 'Electronic Credit Balance Refund'
    EXTERNAL_CREDIT_BALANCE_REFUND = 'External Credit Balance Refund'
    CREDIT_BALANCE_ADJUSTMENT_LEFT_PARENTHESIS_APPLIED_FROM_CREDIT_BALANCE_RIGHT_PARENTHESIS = 'Credit Balance Adjustment (Applied from Credit Balance)'
    CREDIT_BALANCE_ADJUSTMENT_LEFT_PARENTHESIS_TRANSFERRED_TO_CREDIT_BALANCE_RIGHT_PARENTHESIS = 'Credit Balance Adjustment (Transferred to Credit Balance)'
    REVENUE_EVENT_ITEM = 'Revenue Event Item'
    DEBIT_MEMO_ITEM_LEFT_PARENTHESIS_CHARGE_RIGHT_PARENTHESIS = 'Debit Memo Item (Charge)'
    DEBIT_MEMO_ITEM_LEFT_PARENTHESIS_TAX_RIGHT_PARENTHESIS = 'Debit Memo Item (Tax)'
    CREDIT_MEMO_ITEM_LEFT_PARENTHESIS_CHARGE_RIGHT_PARENTHESIS = 'Credit Memo Item (Charge)'
    CREDIT_MEMO_ITEM_LEFT_PARENTHESIS_TAX_RIGHT_PARENTHESIS = 'Credit Memo Item (Tax)'
    CREDIT_MEMO_APPLICATION_ITEM = 'Credit Memo Application Item'
    ELECTRONIC_PAYMENT_APPLICATION = 'Electronic Payment Application'
    EXTERNAL_PAYMENT_APPLICATION = 'External Payment Application'
    ELECTRONIC_REFUND_APPLICATION = 'Electronic Refund Application'
    EXTERNAL_REFUND_APPLICATION = 'External Refund Application'
    ELECTRONIC_PAYMENT_APPLICATION_ITEM = 'Electronic Payment Application Item'
    EXTERNAL_PAYMENT_APPLICATION_ITEM = 'External Payment Application Item'
    ELECTRONIC_REFUND_APPLICATION_ITEM = 'Electronic Refund Application Item'
    EXTERNAL_REFUND_APPLICATION_ITEM = 'External Refund Application Item'

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of JournalRunTransactionType from a JSON string"""
        return cls(json.loads(json_str))


