61 lines
2.4 KiB
Python
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)
|