""" 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)