JB Compta v1.1 - multi-activité
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
# Generated by Django 5.2.15 on 2026-06-29 20:53
|
||||
|
||||
import django.db.models.deletion
|
||||
from decimal import Decimal
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Entreprise',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nom', models.CharField(max_length=200)),
|
||||
('siret', models.CharField(blank=True, max_length=20)),
|
||||
('activite', models.CharField(choices=[('vente', 'Vente de marchandises (BIC)'), ('service_bic', 'Prestation de services (BIC)'), ('service_bnc', 'Prestation de services / libéral (BNC)')], default='service_bnc', max_length=20)),
|
||||
('franchise_tva', models.BooleanField(default=False, help_text='Décochez si vous facturez et déclarez la TVA.', verbose_name='En franchise de TVA')),
|
||||
('taux_tva_defaut', models.DecimalField(decimal_places=2, default=Decimal('20.00'), max_digits=4, verbose_name='Taux de TVA par défaut (%)')),
|
||||
('versement_liberatoire', models.BooleanField(default=False, verbose_name='Option versement libératoire')),
|
||||
('email', models.EmailField(blank=True, max_length=254)),
|
||||
('adresse', models.TextField(blank=True)),
|
||||
('cree_le', models.DateTimeField(auto_now_add=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Entreprise',
|
||||
'verbose_name_plural': 'Entreprises',
|
||||
'ordering': ['nom'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Bareme',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('activite', models.CharField(choices=[('vente', 'Vente de marchandises (BIC)'), ('service_bic', 'Prestation de services (BIC)'), ('service_bnc', 'Prestation de services / libéral (BNC)')], max_length=20)),
|
||||
('annee', models.PositiveIntegerField()),
|
||||
('taux_urssaf', models.DecimalField(decimal_places=2, max_digits=5, verbose_name='Taux cotisations URSSAF (%)')),
|
||||
('abattement_fiscal', models.DecimalField(decimal_places=2, max_digits=5, verbose_name='Abattement forfaitaire (%)')),
|
||||
('taux_vl', models.DecimalField(decimal_places=2, max_digits=4, verbose_name='Taux versement libératoire (%)')),
|
||||
('seuil_ca', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Plafond CA micro (€)')),
|
||||
('seuil_tva_base', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Seuil franchise TVA (€)')),
|
||||
('seuil_tva_majore', models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Seuil franchise TVA majoré (€)')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Barème',
|
||||
'verbose_name_plural': 'Barèmes',
|
||||
'ordering': ['-annee', 'activite'],
|
||||
'unique_together': {('activite', 'annee')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Depense',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('date', models.DateField()),
|
||||
('categorie', models.CharField(blank=True, max_length=100)),
|
||||
('libelle', models.CharField(max_length=255)),
|
||||
('montant_ttc', models.DecimalField(decimal_places=2, max_digits=12)),
|
||||
('montant_tva', models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=12, verbose_name='TVA déductible (€)')),
|
||||
('cree_le', models.DateTimeField(auto_now_add=True)),
|
||||
('entreprise', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='depenses', to='compta.entreprise')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Dépense',
|
||||
'verbose_name_plural': 'Dépenses',
|
||||
'ordering': ['-date'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Client',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nom', models.CharField(max_length=200)),
|
||||
('email', models.EmailField(blank=True, max_length=254)),
|
||||
('siret', models.CharField(blank=True, max_length=20)),
|
||||
('adresse', models.TextField(blank=True)),
|
||||
('cree_le', models.DateTimeField(auto_now_add=True)),
|
||||
('entreprise', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clients', to='compta.entreprise')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Client',
|
||||
'verbose_name_plural': 'Clients',
|
||||
'ordering': ['nom'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Facture',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('numero', models.CharField(max_length=50)),
|
||||
('activite', models.CharField(choices=[('vente', 'Vente de marchandises (BIC)'), ('service_bic', 'Prestation de services (BIC)'), ('service_bnc', 'Prestation de services / libéral (BNC)')], max_length=20)),
|
||||
('date_emission', models.DateField()),
|
||||
('date_encaissement', models.DateField(blank=True, help_text="À renseigner une fois la facture payée. Le CA micro est compté à l'encaissement.", null=True)),
|
||||
('statut', models.CharField(choices=[('brouillon', 'Brouillon'), ('envoyee', 'Envoyée'), ('encaissee', 'Encaissée'), ('annulee', 'Annulée')], default='brouillon', max_length=12)),
|
||||
('montant_ht', models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=12)),
|
||||
('montant_tva', models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=12)),
|
||||
('montant_ttc', models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=12)),
|
||||
('notes', models.TextField(blank=True)),
|
||||
('cree_le', models.DateTimeField(auto_now_add=True)),
|
||||
('client', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='factures', to='compta.client')),
|
||||
('entreprise', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='factures', to='compta.entreprise')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Facture',
|
||||
'verbose_name_plural': 'Factures',
|
||||
'ordering': ['-date_emission', 'numero'],
|
||||
'unique_together': {('entreprise', 'numero')},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='LigneFacture',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('designation', models.CharField(max_length=255)),
|
||||
('quantite', models.DecimalField(decimal_places=3, default=Decimal('1'), max_digits=12)),
|
||||
('prix_unitaire_ht', models.DecimalField(decimal_places=2, max_digits=12)),
|
||||
('taux_tva', models.DecimalField(decimal_places=2, default=Decimal('0'), max_digits=4)),
|
||||
('facture', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lignes', to='compta.facture')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ligne de facture',
|
||||
'verbose_name_plural': 'Lignes de facture',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.2.15 on 2026-06-29 21:46
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('compta', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='depense',
|
||||
name='activite',
|
||||
field=models.CharField(blank=True, choices=[('vente', 'Vente de marchandises (BIC)'), ('service_bic', 'Prestation de services (BIC)'), ('service_bnc', 'Prestation de services / libéral (BNC)')], help_text='Activité concernée (facultatif, pour la ventilation).', max_length=20),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='entreprise',
|
||||
name='activite',
|
||||
field=models.CharField(choices=[('vente', 'Vente de marchandises (BIC)'), ('service_bic', 'Prestation de services (BIC)'), ('service_bnc', 'Prestation de services / libéral (BNC)')], default='service_bnc', help_text='Activité par défaut des nouvelles factures. Une entreprise peut avoir plusieurs activités : chaque facture/dépense porte la sienne.', max_length=20, verbose_name='Activité principale'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user