Files
jb-compta/compta/management/commands/seed_reference.py
T

61 lines
2.4 KiB
Python

"""
Charge les DONNÉES DE RÉFÉRENCE (barèmes + catégories) — sans données de démo.
Idempotent : sûr à relancer en production après chaque mise à jour.
Usage : python manage.py seed_reference
"""
from decimal import Decimal
from django.core.management.base import BaseCommand
from compta.models import Bareme, Categorie, Activite
BAREMES_2026 = [
(Activite.VENTE, Decimal("12.30"), Decimal("71"), Decimal("1.0"),
Decimal("203100"), Decimal("85000"), Decimal("93500")),
(Activite.SERVICE_BIC, Decimal("21.20"), Decimal("50"), Decimal("1.7"),
Decimal("83600"), Decimal("37500"), Decimal("41250")),
(Activite.SERVICE_BNC, Decimal("25.60"), Decimal("34"), Decimal("2.2"),
Decimal("83600"), Decimal("37500"), Decimal("41250")),
]
# exclure_calculs=True => mouvement neutre (hors calculs fiscaux).
CATEGORIES = [
("Vente de produits finis", "vente", False, 1),
("Prestation de services", "vente", False, 2),
("Matériel et outillage", "depense", False, 1),
("Matière première", "depense", False, 2),
("Télécom, fournitures, documentation", "depense", False, 3),
("Frais de repas hors domicile", "depense", False, 4),
("Abonnement logiciel", "depense", False, 5),
("TVA payée", "neutre", True, 1),
("Cotisation sociale Urssaf", "neutre", True, 2),
("Remboursement de TVA", "neutre", True, 3),
("Prélèvement personnel", "neutre", True, 4),
("Virement interne", "neutre", True, 5),
]
def charger_reference(stdout=None, style=None):
for act, urssaf, ab, vl, sca, tb, tm in BAREMES_2026:
Bareme.objects.update_or_create(
activite=act, annee=2026,
defaults=dict(taux_urssaf=urssaf, abattement_fiscal=ab, taux_vl=vl,
seuil_ca=sca, seuil_tva_base=tb, seuil_tva_majore=tm))
cat = {}
for nom, usage, excl, ordre in CATEGORIES:
c, _ = Categorie.objects.update_or_create(
nom=nom, defaults=dict(usage=usage, exclure_calculs=excl, ordre=ordre))
cat[nom] = c
if stdout and style:
stdout.write(style.SUCCESS(
f"Référence chargée : {len(BAREMES_2026)} barèmes, {len(cat)} catégories."))
return cat
class Command(BaseCommand):
help = "Charge les barèmes et catégories de référence (sans démo)."
def handle(self, *args, **options):
charger_reference(self.stdout, self.style)