Files
jb-compta/compta/admin.py
T

108 lines
3.5 KiB
Python

from django.contrib import admin
from django.utils import timezone
from .models import (
Bareme, Entreprise, Client, Facture, LigneFacture, Depense, Paiement,
Categorie,
)
@admin.register(Categorie)
class CategorieAdmin(admin.ModelAdmin):
list_display = ("nom", "usage", "exclure_calculs", "actif", "ordre")
list_filter = ("usage", "exclure_calculs", "actif")
list_editable = ("usage", "exclure_calculs", "actif", "ordre")
search_fields = ("nom",)
@admin.register(Bareme)
class BaremeAdmin(admin.ModelAdmin):
list_display = ("annee", "activite", "taux_urssaf", "abattement_fiscal",
"taux_vl", "seuil_ca", "seuil_tva_base")
list_filter = ("annee", "activite")
@admin.register(Entreprise)
class EntrepriseAdmin(admin.ModelAdmin):
list_display = ("nom", "activite", "franchise_tva", "versement_liberatoire",
"num_tva_intracom", "vue_tva", "email")
list_filter = ("activite", "franchise_tva", "versement_liberatoire")
search_fields = ("nom", "siret", "num_tva_intracom")
@admin.register(Client)
class ClientAdmin(admin.ModelAdmin):
list_display = ("nom", "entreprise", "email", "siret")
list_filter = ("entreprise",)
search_fields = ("nom", "email", "siret")
class LigneFactureInline(admin.TabularInline):
model = LigneFacture
extra = 1
@admin.action(description="Marquer comme encaissée (aujourd'hui)")
def marquer_encaissee(modeladmin, request, queryset):
queryset.update(statut="encaissee", date_encaissement=timezone.now().date())
@admin.register(Facture)
class FactureAdmin(admin.ModelAdmin):
list_display = ("numero", "entreprise", "client", "date_emission",
"date_encaissement", "statut", "montant_ht",
"montant_tva", "montant_ttc")
list_filter = ("entreprise", "statut", "activite", "date_emission")
search_fields = ("numero", "client__nom")
date_hierarchy = "date_emission"
inlines = [LigneFactureInline]
actions = [marquer_encaissee]
readonly_fields = ("montant_ht", "montant_tva", "montant_ttc")
def save_related(self, request, form, formsets, change):
super().save_related(request, form, formsets, change)
form.instance.recompute_totaux()
class DepenseInline(admin.TabularInline):
model = Depense
extra = 0
fields = ("date", "libelle", "categorie", "activite", "regime_tva",
"taux_tva", "montant_ttc", "montant_tva")
@admin.register(Paiement)
class PaiementAdmin(admin.ModelAdmin):
list_display = ("date", "entreprise", "libelle", "sens", "montant_total",
"reparti", "reste", "equilibre")
list_filter = ("entreprise", "sens", "date")
search_fields = ("libelle",)
date_hierarchy = "date"
inlines = [DepenseInline]
@admin.display(description="Réparti")
def reparti(self, obj):
return obj.reparti
@admin.display(description="Reste")
def reste(self, obj):
return obj.reste
@admin.display(boolean=True, description="Équilibré")
def equilibre(self, obj):
return obj.equilibre
@admin.register(Depense)
class DepenseAdmin(admin.ModelAdmin):
list_display = ("date", "entreprise", "libelle", "categorie", "activite",
"regime_tva", "montant_ttc", "montant_tva", "tva_autoliq",
"paiement")
list_filter = ("entreprise", "categorie", "regime_tva", "activite", "date")
search_fields = ("libelle",)
date_hierarchy = "date"
@admin.display(description="TVA auto-liquidée")
def tva_autoliq(self, obj):
return obj.tva_autoliquidee