from django.contrib import admin from finance.models import Invoice, Payment class PaymentInline(admin.TabularInline): model = Payment extra = 0 readonly_fields = ( "provider", "status", "amount", "currency", "stripe_payment_intent_id", "stripe_charge_id", "paid_at", "failure_message", "created", "last_modified", ) can_delete = False show_change_link = True @admin.register(Invoice) class InvoiceAdmin(admin.ModelAdmin): list_display = ( "id", "user", "company", "provider", "status", "amount_due", "amount_paid", "currency", "period_start", "period_end", "stripe_invoice_id", "stripe_checkout_session_id", "created", ) list_filter = ("provider", "status", "currency") search_fields = ( "user__email", "user__username", "company__name", "stripe_invoice_id", "stripe_checkout_session_id", "stripe_subscription_id", "stripe_customer_id", "description", ) readonly_fields = ("created", "last_modified") raw_id_fields = ("user", "company") inlines = [PaymentInline] date_hierarchy = "created" @admin.register(Payment) class PaymentAdmin(admin.ModelAdmin): list_display = ( "id", "user", "company", "invoice", "provider", "status", "amount", "currency", "stripe_payment_intent_id", "stripe_charge_id", "paid_at", "created", ) list_filter = ("provider", "status", "currency") search_fields = ( "user__email", "user__username", "company__name", "stripe_payment_intent_id", "stripe_charge_id", "invoice__stripe_invoice_id", ) readonly_fields = ("created", "last_modified") raw_id_fields = ("user", "company", "invoice") date_hierarchy = "created"