class ConfigurationReaderException(Exception):
    pass


class InvalidMessageContentException(Exception):
    pass


class OrderNotFoundException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_ORDER_NOT_FOUND")


class BenefitNotFound(Exception):
    pass


class TimeoutException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_TIMEOUT")


class DiscountNotFound(Exception):
    def __init__(self):
        super(Exception, self).__init__("DISCOUNT_NOT_FOUND")


class CannotRemoveItemsInATotaledOrder(Exception):
    def __init__(self):
        super(Exception, self).__init__("CANNOT_REMOVE_ITEMS_IN_A_TOTALED_ORDER")


class ProductNotFound(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_PRODUCT_NOT_FOUND")


class InvalidTenderIdException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_INVALID_TENDER_ID")


class InvalidAmountException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_INVALID_AMOUNT")


class InvalidPercentageException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_INVALID_PERCENTAGE")


class NotEffectiveDiscountException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_NOT_EFFECTIVE_DISCOUNT")


class InvalidOperationException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_INVALID_OPERATION")


class InvalidQuantityException(Exception):
    def __init__(self):
        super(Exception, self).__init__()


class AddItemsOnTotalException(Exception):
    def __init__(self):
        super(Exception, self).__init__("NDISCOUNT_CANNOT_ADD_ITEMS_ON_TOTALED_ORDER")


class CircularDependencyToApplyDiscountException(Exception):
    def __init__(
        self,
    ):
        super(Exception, self).__init__("NDISCOUNT_CIRCULAR_DEPENDENCY_TRYING_TO_APPLY_DISCOUNT")
