from django.contrib import admin

# Register your models here.
from django.db.models import Sum
from django.utils.safestring import mark_safe

from financial.models import ExchangeRate, Transaction, Cashier, AccountingHeadings, CostCenter


class ExchangeRateAdmin(admin.ModelAdmin):
    search_fields = ['name__icontains']
    list_display = ['create_time', 'name', 'latest']


class TransactionAdmin(admin.ModelAdmin):
    # search_fields = ['name__icontains']
    list_display = ['create_time', 'transaction_date', 'description', 'payment', 'receipt', 'payment_type', 'archived']


class CashierAdmin(admin.ModelAdmin):
    # search_fields = ['name__icontains']
    list_display = ['name', 'currency', 'asset_']

    def asset_(self, obj):
        transactions = obj.transaction_set.all()
        result = ((transactions.aggregate(sum_receipt=Sum('receipt')).get('sum_receipt') or 0) -
                  (transactions.aggregate(sum_payment=Sum('payment')).get('sum_payment') or 0))

        return mark_safe(f'<span style="font-weight:600;">{result:,} {obj.currency}</span>')


class AccountingHeadingsAdmin(admin.ModelAdmin):
    # search_fields = ['name__icontains']
    list_display = ['create_time', 'name']


class CostCenterAdmin(admin.ModelAdmin):
    # search_fields = ['name__icontains']
    list_display = ['create_time', 'name']


admin.site.register(ExchangeRate, ExchangeRateAdmin)
admin.site.register(Transaction, TransactionAdmin)
admin.site.register(Cashier, CashierAdmin)
admin.site.register(AccountingHeadings, AccountingHeadingsAdmin)
admin.site.register(CostCenter, CostCenterAdmin)

