# Generated by Django 6.0.1 on 2026-01-22 19:01

import django.db.models.deletion
import django.utils.timezone
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('dgi', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Client',
            fields=[
                ('client_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='dgi.client')),
                ('nom', models.CharField(max_length=200)),
                ('adresse', models.TextField(blank=True)),
                ('telephone', models.CharField(blank=True, max_length=50)),
                ('solde_compte', models.DecimalField(decimal_places=2, default=0.0, max_digits=14)),
            ],
            options={
                'abstract': False,
            },
            bases=('dgi.client',),
        ),
        migrations.CreateModel(
            name='FraisStandard',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nom', models.CharField(max_length=200)),
                ('montant_defaut', models.DecimalField(decimal_places=2, default=0.0, max_digits=12)),
                ('devise_defaut', models.CharField(choices=[('FC', 'Franc Congolais'), ('USD', 'Dollar Américain')], default='USD', max_length=3)),
                ('est_soumis_tva', models.BooleanField(default=True)),
            ],
        ),
        migrations.CreateModel(
            name='Societe',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('update_at', models.DateTimeField(auto_now=True)),
                ('nif', models.CharField(blank=True, max_length=255, null=True)),
                ('isf_dgi', models.CharField(blank=True, max_length=255, null=True)),
                ('type_dgi', models.CharField(blank=True, max_length=255, null=True)),
                ('mode_dgi', models.CharField(blank=True, max_length=255, null=True)),
                ('nom', models.CharField(default='AGIL s.a.r.l.', max_length=255)),
                ('sous_titre', models.CharField(default='Agence Internationale de Logistique, Transit et Services', max_length=255)),
                ('adresse_physique', models.TextField(default='Avenue ex Poids Lourds n° 1963 (Concession Sucrière)\nKinshasa : Gombe - République Démocratique du Congo')),
                ('rccm', models.CharField(default='CD/KIN/RCCM/14-B-01536', max_length=100)),
                ('id_nat', models.CharField(default='01-718-N63783F', max_length=100)),
                ('n_impot', models.CharField(default='A1116228C', max_length=100)),
                ('site_web', models.CharField(default='www.agil.cd', max_length=255)),
                ('telephone_1', models.CharField(default='00 243 89 700 16 73', max_length=50)),
                ('telephone_2', models.CharField(default='00 243 89 700 16 71', max_length=50)),
                ('email_general', models.EmailField(default='secretariat@agil.cd', max_length=254)),
                ('email_secondaire', models.EmailField(blank=True, default='m-laschet@agil.cd', max_length=254, null=True)),
                ('email_tertiaire', models.EmailField(blank=True, default='c-kutu@agil.cd', max_length=254, null=True)),
                ('compte_bancaire_usd', models.CharField(blank=True, max_length=100, null=True, verbose_name='Compte Bancaire USD')),
                ('compte_bancaire_cdf', models.CharField(default='BCDC : 00011-00101-00001122 363-40/CDF', max_length=100, verbose_name='Compte Bancaire CDF')),
                ('est_actif', models.BooleanField(default=True, help_text='Si coché, ces infos seront utilisées par défaut.')),
            ],
            options={
                'verbose_name': 'Info Société',
                'verbose_name_plural': 'Infos Société',
            },
        ),
        migrations.CreateModel(
            name='TypeService',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('code', models.CharField(max_length=50, unique=True)),
                ('designation', models.CharField(max_length=255)),
                ('actif', models.BooleanField(default=True)),
            ],
        ),
        migrations.CreateModel(
            name='Dossier',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('numero', models.CharField(editable=False, max_length=50, unique=True)),
                ('ref_client', models.CharField(blank=True, max_length=100, verbose_name='Réf. Client')),
                ('description', models.CharField(max_length=255, verbose_name='Marchandise / Description')),
                ('date_ouverture', models.DateTimeField(default=django.utils.timezone.now)),
                ('statut', models.CharField(choices=[('BROUILLON', 'Brouillon'), ('EN_COURS', 'En cours'), ('FACTURE', 'Facturé'), ('CLOTURE', 'Clôturé')], default='BROUILLON', max_length=20)),
                ('vol', models.CharField(blank=True, max_length=50, verbose_name='Vol')),
                ('date_arrivee', models.DateField(blank=True, null=True, verbose_name="Date d'arrivée")),
                ('mawb', models.CharField(blank=True, max_length=50, verbose_name='MAWB')),
                ('hawb', models.CharField(blank=True, max_length=50, verbose_name='HAWB')),
                ('manifeste', models.CharField(blank=True, max_length=50, verbose_name='Manifeste')),
                ('date_manifeste', models.DateField(blank=True, null=True, verbose_name='Date Manifeste')),
                ('nombre_colis', models.IntegerField(default=0, verbose_name='Nombre de colis')),
                ('poids', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='Poids (Kg)')),
                ('achat_laisser_suivre', models.CharField(blank=True, max_length=100, verbose_name='Achat Laisser-suivre')),
                ('mt_laisser_suivre_cdf', models.DecimalField(decimal_places=2, default=0.0, max_digits=14, verbose_name='Mt L/S CDF')),
                ('mt_laisser_suivre_usd', models.DecimalField(decimal_places=2, default=0.0, max_digits=14, verbose_name='Mt L/S USD')),
                ('taux_laisser_suivre', models.DecimalField(decimal_places=4, default=0.0, max_digits=10, verbose_name='Tx L/S')),
                ('date_laisser_suivre', models.DateField(blank=True, null=True, verbose_name='Date L/S')),
                ('facture_fournisseur', models.CharField(blank=True, max_length=100, verbose_name='Facture Fournisseur')),
                ('valeur_cif_fc', models.DecimalField(decimal_places=2, default=0.0, max_digits=16, verbose_name='Valeur CIF FC')),
                ('taux_change', models.DecimalField(decimal_places=4, default=0.0, max_digits=10, verbose_name='Taux (Tx)')),
                ('valeur_cif_usd', models.DecimalField(decimal_places=2, default=0.0, max_digits=16, verbose_name='Valeur CIF USD')),
                ('positions_tarifaires', models.CharField(blank=True, max_length=100, verbose_name='Positions tarifaires')),
                ('taux_douane', models.DecimalField(decimal_places=2, default=0.0, max_digits=5, verbose_name='Taux Douane (%)')),
                ('attest_verification', models.CharField(blank=True, max_length=100, verbose_name='Attest. de vérific.')),
                ('licence', models.CharField(blank=True, max_length=100, verbose_name='Licence')),
                ('fxi', models.CharField(blank=True, max_length=100, verbose_name='FXI')),
                ('avis_arrivee', models.CharField(blank=True, max_length=100, verbose_name="Avis d'arrivée")),
                ('reserves', models.CharField(blank=True, max_length=200, verbose_name='Réserves')),
                ('date_reserves', models.DateField(blank=True, null=True, verbose_name='Date Réserves')),
                ('attestation_fiscale', models.CharField(blank=True, max_length=100, verbose_name='Attestation fiscale')),
                ('validite_fiscale_du', models.DateField(blank=True, null=True, verbose_name='Validité Fiscale Du')),
                ('validite_fiscale_au', models.DateField(blank=True, null=True, verbose_name='Validité Fiscale Au')),
                ('declaration_dgda', models.CharField(blank=True, max_length=50, verbose_name='Déclaration DGDA n°')),
                ('date_declaration_dgda', models.DateField(blank=True, null=True, verbose_name='Date Déclaration DGDA')),
                ('bordereau_versement', models.CharField(blank=True, max_length=50, verbose_name='Bordereau de versement n°')),
                ('date_bordereau_versement', models.DateField(blank=True, null=True, verbose_name='Date Bordereau')),
                ('bordereau_versement_fb', models.CharField(blank=True, max_length=50, verbose_name='Bordereau de versement Fb n°')),
                ('date_bordereau_versement_fb', models.DateField(blank=True, null=True, verbose_name='Date Bordereau Fb')),
                ('bulletin_liquidation', models.CharField(blank=True, max_length=50, verbose_name='Bulletin de Liquidation')),
                ('date_bulletin_liquidation', models.DateField(blank=True, null=True, verbose_name='Date Bulletin')),
                ('bon_a_enlever', models.CharField(blank=True, max_length=50, verbose_name='Bon à enlever N°')),
                ('date_bon_a_enlever', models.DateField(blank=True, null=True, verbose_name='Date Bon à enlever')),
                ('bon_de_sortie', models.CharField(blank=True, max_length=50, verbose_name='Bon de sortie N°')),
                ('date_bon_de_sortie', models.DateField(blank=True, null=True, verbose_name='Date Bon de sortie')),
                ('num_enlevement_autorise', models.CharField(blank=True, max_length=50, verbose_name='N° Enlevement Autorisé')),
                ('date_enlevement_autorise', models.DateField(blank=True, null=True, verbose_name='Date Enlevement')),
                ('declaration_exoneration', models.CharField(blank=True, max_length=50, verbose_name='Déclaration en Exonération')),
                ('date_declaration_exoneration', models.DateField(blank=True, null=True, verbose_name='Date Exonération')),
                ('transit_magasinage', models.CharField(blank=True, max_length=50, verbose_name='Transit & Magasinage')),
                ('date_transit_magasinage', models.DateField(blank=True, null=True, verbose_name='Date Transit')),
                ('recu_occ', models.CharField(blank=True, max_length=50, verbose_name='Reçu OCC N°')),
                ('date_recu_occ', models.DateField(blank=True, null=True, verbose_name='Date Reçu OCC')),
                ('note_debit_occ', models.CharField(blank=True, max_length=50, verbose_name='Note de débit OCC')),
                ('date_note_debit_occ', models.DateField(blank=True, null=True, verbose_name='Date ND OCC')),
                ('rapport_controle_occ', models.CharField(blank=True, max_length=50, verbose_name='Rapport de contrôle OCC')),
                ('date_rapport_controle_occ', models.DateField(blank=True, null=True, verbose_name='Date Rapport OCC')),
                ('date_introduction_douane', models.DateField(blank=True, null=True, verbose_name='Date Introduction douane')),
                ('date_verification', models.DateField(blank=True, null=True, verbose_name='Date Vérification')),
                ('date_paiement_douane', models.DateField(blank=True, null=True, verbose_name='Date Payement Douane')),
                ('date_sortie_douane', models.DateField(blank=True, null=True, verbose_name='Sortie Douane le')),
                ('bon_livraison', models.CharField(blank=True, max_length=50, verbose_name='Bon de livraison n°')),
                ('date_bon_livraison', models.DateField(blank=True, null=True, verbose_name='Date Bon de livraison')),
                ('transm_documents_n', models.CharField(blank=True, max_length=50, verbose_name='Transm documents n°')),
                ('date_transm_documents', models.DateField(blank=True, null=True, verbose_name='Transm de documents le')),
                ('calcule_par', models.CharField(blank=True, max_length=100, verbose_name='Calculé par')),
                ('dactylo_par', models.CharField(blank=True, max_length=100, verbose_name='Dactylo par')),
                ('declarant', models.CharField(blank=True, max_length=100, verbose_name='Déclarant')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('client', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='dossiers', to='billing.client')),
            ],
        ),
        migrations.CreateModel(
            name='Facture',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('update_at', models.DateTimeField(auto_now=True)),
                ('dateTimedgi', models.CharField(blank=True, default='', max_length=255, null=True)),
                ('codedefdgi', models.CharField(blank=True, default='', max_length=255, null=True)),
                ('counters', models.CharField(blank=True, default='', max_length=255, null=True)),
                ('nim', models.CharField(blank=True, default='', max_length=255, null=True)),
                ('qrCode', models.CharField(blank=True, default='', max_length=255, null=True)),
                ('uid', models.CharField(blank=True, default='', max_length=255, null=True)),
                ('numero', models.CharField(max_length=50, unique=True)),
                ('date_emission', models.DateTimeField(default=django.utils.timezone.now)),
                ('fichier_pdf', models.FileField(blank=True, null=True, upload_to='factures/')),
                ('client', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='dgi.client')),
                ('dossier', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='factures', to='billing.dossier')),
            ],
            options={
                'ordering': ['-date_emission'],
            },
        ),
        migrations.CreateModel(
            name='Paiement',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('montant', models.DecimalField(decimal_places=2, max_digits=12)),
                ('devise', models.CharField(choices=[('FC', 'Franc Congolais'), ('USD', 'Dollar Américain')], max_length=3)),
                ('date_paiement', models.DateField(default=django.utils.timezone.now)),
                ('reference', models.CharField(help_text='Numéro de chèque, virement, etc.', max_length=100)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('client', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='paiements', to='billing.client')),
                ('facture', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='paiements', to='billing.facture')),
            ],
        ),
        migrations.CreateModel(
            name='EcritureComptable',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date_ecriture', models.DateTimeField(auto_now_add=True)),
                ('libelle', models.CharField(max_length=255)),
                ('montant', models.DecimalField(decimal_places=2, max_digits=14)),
                ('sens', models.CharField(choices=[('DEBIT', 'Débit'), ('CREDIT', 'Crédit')], max_length=10)),
                ('client', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ecritures', to='billing.client')),
                ('facture_liee', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='billing.facture')),
                ('paiement_lie', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='billing.paiement')),
            ],
        ),
        migrations.CreateModel(
            name='Proforma',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('numero', models.CharField(editable=False, max_length=50, unique=True)),
                ('date_emission', models.DateTimeField(default=django.utils.timezone.now)),
                ('statut', models.CharField(choices=[('BROUILLON', 'Brouillon'), ('VALIDEE', 'Validée'), ('REJETEE', 'Rejetée')], default='BROUILLON', max_length=20)),
                ('dossier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='proformas', to='billing.dossier')),
            ],
        ),
        migrations.AddField(
            model_name='facture',
            name='proforma',
            field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='facture', to='billing.proforma'),
        ),
        migrations.CreateModel(
            name='Service',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('update_at', models.DateTimeField(auto_now=True)),
                ('code', models.CharField(max_length=50, unique=True)),
                ('designation', models.CharField(max_length=255)),
                ('actif', models.BooleanField(default=True)),
                ('taxgroup', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='dgi.taxgroup')),
                ('typeart', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='dgi.itemtype')),
                ('type_service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='services', to='billing.typeservice')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='LigneDossier',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('montant', models.DecimalField(decimal_places=2, default=0.0, max_digits=12)),
                ('devise', models.CharField(choices=[('FC', 'Franc Congolais'), ('USD', 'Dollar Américain')], default='USD', max_length=3)),
                ('dossier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lignes', to='billing.dossier')),
                ('service', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='lignes', to='billing.service')),
            ],
            options={
                'unique_together': {('dossier', 'service')},
            },
        ),
    ]
