# Generated by Django 6.0.3 on 2026-03-26 05:29

import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ("checkpoint", "0001_initial"),
        ("contenttypes", "0002_remove_content_type_name"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name="CollectionCategory",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                (
                    "name",
                    models.CharField(max_length=100, unique=True, verbose_name="Name"),
                ),
                (
                    "description",
                    models.TextField(blank=True, null=True, verbose_name="Description"),
                ),
            ],
            options={
                "verbose_name": "Collection Category",
                "verbose_name_plural": "Collection Categories",
                "db_table": "record_collection_category",
            },
        ),
        migrations.CreateModel(
            name="CommodityCategory",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                (
                    "name",
                    models.CharField(max_length=100, unique=True, verbose_name="Name"),
                ),
                (
                    "category_description",
                    models.TextField(
                        blank=True, null=True, verbose_name="Category Description"
                    ),
                ),
            ],
            options={
                "verbose_name": "Commodity Category",
                "verbose_name_plural": "Commodity Categories",
                "db_table": "record_commodity_category",
                "ordering": ["name"],
            },
        ),
        migrations.CreateModel(
            name="Submission",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                (
                    "refrence_no",
                    models.CharField(
                        db_index=True,
                        max_length=100,
                        unique=True,
                        verbose_name="Reference Number",
                    ),
                ),
                (
                    "tracking_code",
                    models.CharField(
                        blank=True,
                        db_index=True,
                        editable=False,
                        max_length=20,
                        null=True,
                        unique=True,
                        verbose_name="Tracking Code",
                    ),
                ),
                ("submitted_at", models.DateTimeField(verbose_name="Submitted At")),
                (
                    "remarks",
                    models.TextField(blank=True, null=True, verbose_name="Remarks"),
                ),
                (
                    "checkpoint",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_logs",
                        to="checkpoint.checkpoint",
                        verbose_name="Checkpoint",
                    ),
                ),
                (
                    "created_by",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_created",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="Created By",
                    ),
                ),
                (
                    "updated_by",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_updated",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="Updated By",
                    ),
                ),
            ],
            options={
                "verbose_name": "Submission",
                "verbose_name_plural": "Submissions",
                "db_table": "record_submission",
                "ordering": ["-submitted_at"],
            },
        ),
        migrations.CreateModel(
            name="SubmissionStatus",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("name", models.CharField(max_length=20, verbose_name="Name")),
                (
                    "code",
                    models.CharField(max_length=20, unique=True, verbose_name="Code"),
                ),
            ],
            options={
                "verbose_name": "Submission Status",
                "verbose_name_plural": "Submission Statuses",
                "db_table": "record_submission_status",
                "ordering": ["name"],
            },
        ),
        migrations.CreateModel(
            name="SubmissionType",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                (
                    "name",
                    models.CharField(max_length=100, unique=True, verbose_name="Name"),
                ),
                (
                    "code_prefix",
                    models.CharField(
                        blank=True,
                        max_length=10,
                        null=True,
                        unique=True,
                        verbose_name="Code Prefix",
                    ),
                ),
                (
                    "category_description",
                    models.TextField(
                        blank=True, null=True, verbose_name="Category Description"
                    ),
                ),
            ],
            options={
                "verbose_name": "Submission Type",
                "verbose_name_plural": "Submission Types",
                "db_table": "record_submission_type",
                "ordering": ["name"],
            },
        ),
        migrations.CreateModel(
            name="UnitOfMeasurement",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("name", models.CharField(max_length=100, verbose_name="Name")),
                (
                    "code",
                    models.CharField(max_length=20, unique=True, verbose_name="Code"),
                ),
            ],
            options={
                "verbose_name": "Unit of Measurement",
                "verbose_name_plural": "Units of Measurement",
                "db_table": "record_unit_of_measurement",
                "ordering": ["name"],
            },
        ),
        migrations.CreateModel(
            name="Document",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("file_url", models.URLField(verbose_name="File URL")),
                ("is_verified", models.BooleanField(default=False)),
                (
                    "remarks",
                    models.TextField(blank=True, null=True, verbose_name="Remarks"),
                ),
                (
                    "submission",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="documents",
                        to="record.submission",
                    ),
                ),
                (
                    "uploaded_by",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="documents_uploaded",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="Uploaded By",
                    ),
                ),
            ],
            options={
                "verbose_name": "Document",
                "verbose_name_plural": "Documents",
                "db_table": "record_document",
            },
        ),
        migrations.AddField(
            model_name="submission",
            name="status",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="%(class)s_logs",
                to="record.submissionstatus",
                verbose_name="Status",
            ),
        ),
        migrations.CreateModel(
            name="SubmissionStatusHistory",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                (
                    "remarks",
                    models.TextField(blank=True, null=True, verbose_name="Remarks"),
                ),
                (
                    "from_status",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="status_history_from_status",
                        to="record.submissionstatus",
                    ),
                ),
                (
                    "submission",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="status_history",
                        to="record.submission",
                    ),
                ),
                (
                    "to_status",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="status_history_to_status",
                        to="record.submissionstatus",
                    ),
                ),
                (
                    "updated_by",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="status_history_updated_by",
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="Updated By",
                    ),
                ),
            ],
            options={
                "db_table": "record_submission_status_history",
            },
        ),
        migrations.AddField(
            model_name="submission",
            name="submission_type",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="%(class)s_logs",
                to="record.submissiontype",
                verbose_name="Submission Type",
            ),
        ),
        migrations.CreateModel(
            name="CollectionType",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("name", models.CharField(max_length=100, verbose_name="Name")),
                (
                    "description",
                    models.TextField(blank=True, null=True, verbose_name="Description"),
                ),
                (
                    "category",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="types",
                        to="record.collectioncategory",
                        verbose_name="Category",
                    ),
                ),
            ],
            options={
                "verbose_name": "Collection Type",
                "verbose_name_plural": "Collection Types",
                "db_table": "record_collection_type",
                "unique_together": {("category", "name")},
            },
        ),
        migrations.CreateModel(
            name="CommodityType",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("name", models.CharField(max_length=100, verbose_name="Name")),
                (
                    "description",
                    models.TextField(blank=True, null=True, verbose_name="Description"),
                ),
                (
                    "category",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="types",
                        to="record.commoditycategory",
                        verbose_name="Commodity Category",
                    ),
                ),
            ],
            options={
                "verbose_name": "Commodity Type",
                "verbose_name_plural": "Commodity Types",
                "db_table": "record_commodity_type",
                "ordering": ["name"],
                "unique_together": {("category", "name")},
            },
        ),
        migrations.CreateModel(
            name="DestructionSubmission",
            fields=[
                (
                    "submission_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="record.submission",
                    ),
                ),
                ("target_object_id", models.UUIDField(blank=True, null=True)),
                (
                    "quantity",
                    models.DecimalField(
                        decimal_places=2, max_digits=15, verbose_name="Quantity"
                    ),
                ),
                (
                    "destruction_method",
                    models.CharField(max_length=200, verbose_name="Destruction Method"),
                ),
                ("destruction_date", models.DateField(verbose_name="Destruction Date")),
                (
                    "reason",
                    models.TextField(blank=True, null=True, verbose_name="Reason"),
                ),
                (
                    "commodity_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="destruction_submissions",
                        to="record.commoditytype",
                        verbose_name="Commodity Type",
                    ),
                ),
                (
                    "target_content_type",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="contenttypes.contenttype",
                    ),
                ),
                (
                    "unit_of_measurement",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="destruction_submissions",
                        to="record.unitofmeasurement",
                        verbose_name="Unit of Measurement",
                    ),
                ),
            ],
            options={
                "verbose_name": "Destruction Submission",
                "verbose_name_plural": "Destruction Submissions",
                "db_table": "record_destruction_submission",
            },
            bases=("record.submission",),
        ),
        migrations.CreateModel(
            name="ExportSubmission",
            fields=[
                (
                    "submission_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="record.submission",
                    ),
                ),
                (
                    "exporter_name",
                    models.CharField(max_length=100, verbose_name="Exporter Name"),
                ),
                (
                    "destination_country",
                    models.CharField(
                        max_length=100, verbose_name="Destination Country"
                    ),
                ),
                (
                    "quantity",
                    models.DecimalField(
                        decimal_places=2, max_digits=15, verbose_name="Quantity"
                    ),
                ),
                (
                    "goods_description",
                    models.TextField(verbose_name="Goods Description"),
                ),
                (
                    "price",
                    models.DecimalField(
                        decimal_places=2, max_digits=15, verbose_name="Price"
                    ),
                ),
                (
                    "commodity_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="export_submissions",
                        to="record.commoditytype",
                        verbose_name="Commodity Type",
                    ),
                ),
                (
                    "unit_of_measurement",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="export_submissions",
                        to="record.unitofmeasurement",
                        verbose_name="Unit of Measurement",
                    ),
                ),
            ],
            options={
                "verbose_name": "Export Submission",
                "verbose_name_plural": "Export Submissions",
                "db_table": "record_export_submission",
            },
            bases=("record.submission",),
        ),
        migrations.CreateModel(
            name="HealthInspectionSubmission",
            fields=[
                (
                    "submission_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="record.submission",
                    ),
                ),
                ("target_object_id", models.UUIDField(blank=True, null=True)),
                (
                    "inspection_type",
                    models.CharField(max_length=200, verbose_name="Inspection Type"),
                ),
                (
                    "product_name",
                    models.CharField(max_length=100, verbose_name="Product Name"),
                ),
                (
                    "quantity",
                    models.DecimalField(
                        decimal_places=2, max_digits=15, verbose_name="Quantity"
                    ),
                ),
                (
                    "result",
                    models.CharField(
                        blank=True, max_length=100, null=True, verbose_name="Result"
                    ),
                ),
                (
                    "notes",
                    models.TextField(blank=True, null=True, verbose_name="Notes"),
                ),
                (
                    "commodity_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="health_inspection_submissions",
                        to="record.commoditytype",
                        verbose_name="Commodity Type",
                    ),
                ),
                (
                    "target_content_type",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="contenttypes.contenttype",
                    ),
                ),
                (
                    "unit_of_measurement",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="health_inspection_submissions",
                        to="record.unitofmeasurement",
                        verbose_name="Unit of Measurement",
                    ),
                ),
            ],
            options={
                "verbose_name": "Health Inspection Submission",
                "verbose_name_plural": "Health Inspection Submissions",
                "db_table": "record_health_inspection_submission",
            },
            bases=("record.submission",),
        ),
        migrations.CreateModel(
            name="ImportSubmission",
            fields=[
                (
                    "submission_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="record.submission",
                    ),
                ),
                (
                    "detailed_description",
                    models.TextField(verbose_name="Detailed Description"),
                ),
                (
                    "approval_no",
                    models.CharField(
                        db_index=True,
                        max_length=100,
                        unique=True,
                        verbose_name="Approval Number",
                    ),
                ),
                ("approval_time", models.DateTimeField(verbose_name="Approval Time")),
                (
                    "importer_name",
                    models.CharField(
                        blank=True,
                        max_length=100,
                        null=True,
                        verbose_name="Importer Name",
                    ),
                ),
                (
                    "importer_address",
                    models.CharField(
                        blank=True,
                        max_length=100,
                        null=True,
                        verbose_name="Importer Address",
                    ),
                ),
                (
                    "importer_contact",
                    models.CharField(
                        blank=True,
                        max_length=15,
                        null=True,
                        verbose_name="Importer Contact",
                    ),
                ),
                (
                    "exporter_name",
                    models.CharField(
                        blank=True,
                        max_length=100,
                        null=True,
                        verbose_name="Exporter Name",
                    ),
                ),
                (
                    "exporter_address",
                    models.CharField(
                        blank=True,
                        max_length=100,
                        null=True,
                        verbose_name="Exporter Address",
                    ),
                ),
                (
                    "exporter_contact",
                    models.CharField(
                        blank=True,
                        max_length=15,
                        null=True,
                        verbose_name="Exporter Contact",
                    ),
                ),
                (
                    "total_quantity",
                    models.IntegerField(
                        blank=True, null=True, verbose_name="Total Quantity"
                    ),
                ),
                (
                    "bag_packet_count",
                    models.IntegerField(
                        blank=True, null=True, verbose_name="Bag/Packet Count"
                    ),
                ),
                (
                    "manufacturing_date",
                    models.DateField(verbose_name="Manufacturing Date"),
                ),
                (
                    "batch_no",
                    models.CharField(max_length=100, verbose_name="Batch Number"),
                ),
                (
                    "total_amount",
                    models.DecimalField(
                        decimal_places=2, max_digits=15, verbose_name="Total Amount"
                    ),
                ),
                (
                    "health_certificate_no",
                    models.CharField(
                        max_length=100, verbose_name="Health Certificate Number"
                    ),
                ),
                (
                    "health_certificate_issue_date",
                    models.DateField(verbose_name="Health Certificate Issue Date"),
                ),
                (
                    "health_certificate_issue_agency",
                    models.CharField(
                        max_length=100, verbose_name="Health Certificate Issue Agency"
                    ),
                ),
                (
                    "invoice_no",
                    models.CharField(max_length=100, verbose_name="Invoice Number"),
                ),
                ("invoice_date", models.DateField(verbose_name="Invoice Date")),
                (
                    "lab_testing_info",
                    models.TextField(
                        blank=True, null=True, verbose_name="Lab Testing Info"
                    ),
                ),
                (
                    "origin_of_consignment",
                    models.CharField(
                        max_length=100, verbose_name="Origin of Consignment"
                    ),
                ),
                (
                    "commodity_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="import_submissions",
                        to="record.commoditytype",
                        verbose_name="Commodity Type",
                    ),
                ),
                (
                    "unit_of_measurement",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="import_submissions",
                        to="record.unitofmeasurement",
                        verbose_name="Unit of Measurement",
                    ),
                ),
            ],
            options={
                "verbose_name": "Import Submission",
                "verbose_name_plural": "Import Submissions",
                "db_table": "record_import_submission",
            },
            bases=("record.submission",),
        ),
        migrations.CreateModel(
            name="RevenueFineSubmission",
            fields=[
                (
                    "submission_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="record.submission",
                    ),
                ),
                ("target_object_id", models.UUIDField(blank=True, null=True)),
                (
                    "amount",
                    models.DecimalField(
                        decimal_places=2, max_digits=15, verbose_name="Amount"
                    ),
                ),
                (
                    "payment_refrence",
                    models.CharField(max_length=100, verbose_name="Payment Reference"),
                ),
                (
                    "reason",
                    models.TextField(blank=True, null=True, verbose_name="Reason"),
                ),
                (
                    "collection_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="revenue_fine_submissions",
                        to="record.collectiontype",
                        verbose_name="Collection Type",
                    ),
                ),
                (
                    "target_content_type",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="contenttypes.contenttype",
                    ),
                ),
            ],
            options={
                "verbose_name": "Revenue/Fine Submission",
                "verbose_name_plural": "Revenue/Fine Submissions",
                "db_table": "record_revenue_fine_submission",
            },
            bases=("record.submission",),
        ),
    ]
