"""Logic for payment minimums.""" from payment.logic.exceptions import EntityDoesNotExist from payment.models.generic import Items from payment.models.payment_minimum import PaymentMinimum def get_payment_minimum(currency_code: str): """Get payment minimum by currency code.""" obj = PaymentMinimum.get_by_currency_code(currency_code.upper()) if not obj: raise EntityDoesNotExist(PaymentMinimum, currency_code) return obj def list_payment_minimums(): """List all payment minimums.""" items = PaymentMinimum.get_all() return Items(items=items, total_count=len(items)) def bulk_update_payment_minimums(minimums): """Update one or more payment minimums.""" for minimum in minimums: PaymentMinimum.get_by_id_or_error(minimum['payment_minimum_id']) PaymentMinimum.bulk_update(minimums) return PaymentMinimum.get_all() def get_payment_minimums_by_currency(): """Get all existing payment minimum amounts grouped by currency code.""" return { currency_code: { method: str(amount) if amount is not None else None for method, amount in amounts.items() } for currency_code, amounts in PaymentMinimum.get_all_by_currency().items() }