from django.contrib import admin
from .models import *


@admin.register(Societe)
class SocieteAdmin(admin.ModelAdmin):
    list_display = ('nom', 'site_web', 'email_general', 'est_actif')
    list_filter = ('est_actif',)


class LigneProformaInline(admin.TabularInline):
    model = LigneProforma
    extra = 2
    fields = ('service', 'designation', 'quantite', 'prix_unitaire', 'devise')
    readonly_fields = ('montant',)


class LigneDossierInline(admin.TabularInline):
    model = LigneDossier
    extra = 1


@admin.register(Proforma)
class ProformaAdmin(admin.ModelAdmin):
    list_display = ('numero', 'get_client_nom', 'objet', 'statut', 'date_emission')
    list_filter = ('statut',)
    search_fields = ('numero', 'client__nom', 'objet')
    inlines = [LigneProformaInline]

    def get_client_nom(self, obj):
        c = obj.get_client()
        return c.nom if c else '-'
    get_client_nom.short_description = 'Client'


class DossierAdmin(admin.ModelAdmin):
    list_display = ('numero', 'client', 'description', 'statut', 'date_ouverture')
    inlines = [LigneDossierInline]
    search_fields = ('numero', 'client__nom')
    list_filter = ('statut',)


class FactureAdmin(admin.ModelAdmin):
    list_display = ('numero', 'proforma', 'date_emission', 'type_facture')
    search_fields = ('numero', 'proforma__numero')


class FactureM2Admin(admin.ModelAdmin):
    list_display = ('numero', 'proforma', 'date_emission', 'type_facture')
    search_fields = ('numero', 'proforma__numero')


class FactureM3Admin(admin.ModelAdmin):
    list_display = ('numero', 'proforma', 'date_emission', 'type_facture')
    search_fields = ('numero', 'proforma__numero')


class PaiementAdmin(admin.ModelAdmin):
    list_display = ('date_paiement', 'client', 'montant', 'devise', 'reference')
    list_filter = ('client', 'date_paiement')


class EcritureComptableAdmin(admin.ModelAdmin):
    list_display = ('date_ecriture', 'client', 'sens', 'montant', 'libelle')
    list_filter = ('sens', 'client')


admin.site.register(Client)
admin.site.register(TypeDossier)
admin.site.register(Dossier, DossierAdmin)
admin.site.register(FraisStandard)
admin.site.register(LigneDossier)
admin.site.register(Facture, FactureAdmin)
admin.site.register(FactureM2, FactureM2Admin)
admin.site.register(FactureM3, FactureM3Admin)
admin.site.register(Paiement, PaiementAdmin)
admin.site.register(EcritureComptable, EcritureComptableAdmin)
admin.site.register(TypeService)
admin.site.register(Service)
