from rest_framework import serializers from core.apps.payment.models import PaymentModel class BasePaymentSerializer(serializers.ModelSerializer): payment_method_display = serializers.CharField(source="get_payment_method_display", read_only=True) status_display = serializers.CharField(source="get_status_display", read_only=True) payer_name = serializers.CharField(source="payer.get_full_name", read_only=True) valuation_number = serializers.CharField(source="valuation.conclusion_number", read_only=True) class Meta: model = PaymentModel fields = [ "id", "valuation", "valuation_number", "payer", "payer_name", "amount", "payment_method", "payment_method_display", "status", "status_display", "transaction_id", "paid_at", "created_at", ] class ListPaymentSerializer(BasePaymentSerializer): class Meta(BasePaymentSerializer.Meta): fields = [ "id", "valuation_number", "payer_name", "amount", "payment_method_display", "status_display", "paid_at", ] class RetrievePaymentSerializer(BasePaymentSerializer): class Meta(BasePaymentSerializer.Meta): fields = BasePaymentSerializer.Meta.fields + [ "note", "updated_at", ] class CreatePaymentSerializer(BasePaymentSerializer): class Meta(BasePaymentSerializer.Meta): fields = [ "valuation", "payer", "amount", "payment_method", "status", "transaction_id", "paid_at", "note", ]