# Generated by Django 5.2.16 on 2026-07-31 01:19 import django.db.models.deletion from django.conf import settings from django.db import migrations, models import infrasynth.shared.enums class Migration(migrations.Migration): initial = True dependencies = [ ("infrasynth_files", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="PaymentGateway", fields=[ ("slug", models.SlugField(max_length=100, primary_key=True, serialize=False)), ("display_name", models.CharField(max_length=200)), ("gateway_class", models.CharField(max_length=500)), ("config", models.JSONField(default=dict)), ("is_active", models.BooleanField(default=True)), ("supported_currencies", models.JSONField(default=list)), ("webhook_secret", models.CharField(blank=True, max_length=500)), ], options={ "db_table": "billing_gateway", }, ), migrations.CreateModel( name="Invoice", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("external_id", models.CharField(blank=True, max_length=255)), ("invoice_number", models.CharField(max_length=100, unique=True)), ("amount", models.DecimalField(decimal_places=2, max_digits=12)), ("currency", models.CharField(default="USD", max_length=3)), ("tax_amount", models.DecimalField(decimal_places=2, default=0, max_digits=12)), ("tax_name", models.CharField(blank=True, max_length=100)), ("status", models.CharField(choices=infrasynth.shared.enums.InvoiceStatus.choices, max_length=20)), ("due_date", models.DateTimeField(blank=True, null=True)), ("paid_at", models.DateTimeField(blank=True, null=True)), ("line_items", models.JSONField(default=list)), ("metadata", models.JSONField(default=dict)), ( "pdf_file", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_files.storedfile", ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="+", to=settings.AUTH_USER_MODEL ), ), ( "gateway", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_billing.paymentgateway", ), ), ], options={ "db_table": "billing_invoice", }, ), migrations.CreateModel( name="BillingPlan", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("slug", models.SlugField(max_length=100, unique=True)), ("name", models.CharField(max_length=200)), ("description", models.TextField(blank=True)), ("price_amount", models.DecimalField(decimal_places=2, max_digits=12)), ("price_currency", models.CharField(default="USD", max_length=3)), ("interval", models.CharField(choices=infrasynth.shared.enums.BillingInterval.choices, max_length=20)), ("trial_days", models.IntegerField(default=0)), ("features", models.JSONField(default=list)), ("is_active", models.BooleanField(default=True)), ("external_id", models.CharField(blank=True, max_length=255)), ( "gateway", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_billing.paymentgateway", ), ), ], options={ "db_table": "billing_plan", }, ), migrations.CreateModel( name="PaymentTransaction", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("external_id", models.CharField(blank=True, max_length=255)), ("amount", models.DecimalField(decimal_places=2, max_digits=12)), ("currency", models.CharField(default="USD", max_length=3)), ("status", models.CharField(blank=True, max_length=50)), ("payment_method", models.CharField(blank=True, max_length=100)), ("metadata", models.JSONField(default=dict)), ("created_at", models.DateTimeField(auto_now_add=True)), ( "gateway", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_billing.paymentgateway", ), ), ( "invoice", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_billing.invoice", ), ), ], options={ "db_table": "billing_transaction", }, ), migrations.CreateModel( name="Subscription", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("external_id", models.CharField(blank=True, max_length=255)), ("status", models.CharField(choices=infrasynth.shared.enums.SubscriptionStatus.choices, max_length=20)), ("current_period_start", models.DateTimeField(blank=True, null=True)), ("current_period_end", models.DateTimeField(blank=True, null=True)), ("cancel_at_period_end", models.BooleanField(default=False)), ("cancelled_at", models.DateTimeField(blank=True, null=True)), ("trial_end", models.DateTimeField(blank=True, null=True)), ("metadata", models.JSONField(default=dict)), ( "gateway", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_billing.paymentgateway", ), ), ( "plan", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_billing.billingplan", ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="+", to=settings.AUTH_USER_MODEL ), ), ], options={ "db_table": "billing_subscription", }, ), migrations.AddField( model_name="invoice", name="subscription", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="infrasynth_billing.subscription", ), ), ]