# Generated by Django 5.2.11 on 2026-02-17 17:26

import django.db.models.deletion
import uuid
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ("tenant", "0002_domain_ssl_enabled_tenant_activated_at_and_more"),
    ]

    operations = [
        migrations.CreateModel(
            name="ContractTemplateModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("name", models.CharField(max_length=255, verbose_name="نام")),
                (
                    "name_en",
                    models.CharField(
                        blank=True, max_length=255, verbose_name="نام انگلیسی"
                    ),
                ),
                ("description", models.TextField(blank=True, verbose_name="توضیحات")),
                (
                    "category",
                    models.CharField(
                        choices=[
                            ("COMMERCIAL", "تجاری"),
                            ("PROJECT", "پروژه\u200cای"),
                            ("EMPLOYMENT", "استخدامی"),
                            ("LEASE", "اجاره/لیزینگ"),
                        ],
                        default="COMMERCIAL",
                        max_length=30,
                        verbose_name="دسته",
                    ),
                ),
                (
                    "contract_type",
                    models.CharField(
                        blank=True,
                        choices=[
                            ("PURCHASE", "خرید"),
                            ("SALE", "فروش"),
                            ("SERVICE", "خدمات"),
                            ("PARTNERSHIP", "مشارکت"),
                            ("DISTRIBUTION", "توزیع"),
                            ("AGENCY", "نمایندگی"),
                            ("EPC", "EPC"),
                            ("CONTRACTOR", "پیمانکاری"),
                            ("SUBCONTRACTOR", "پیمانکار فرعی"),
                            ("CONSULTING", "مشاوره"),
                            ("PERMANENT", "دائم"),
                            ("TEMPORARY", "موقت"),
                            ("CONSULTANCY", "حق\u200cالمشاوره"),
                            ("INTERNSHIP", "کارآموزی"),
                            ("PROPERTY_LEASE", "اجاره ملک"),
                            ("EQUIPMENT_LEASE", "اجاره تجهیزات"),
                            ("VEHICLE_LEASE", "اجاره خودرو"),
                        ],
                        max_length=30,
                        verbose_name="نوع قرارداد",
                    ),
                ),
                (
                    "default_clauses",
                    models.JSONField(
                        blank=True, default=list, verbose_name="بندهای پیش\u200cفرض"
                    ),
                ),
                (
                    "default_milestones",
                    models.JSONField(
                        blank=True, default=list, verbose_name="مراحل پیش\u200cفرض"
                    ),
                ),
                (
                    "default_payment_terms_days",
                    models.IntegerField(
                        default=30, verbose_name="مهلت پرداخت پیش\u200cفرض (روز)"
                    ),
                ),
                (
                    "default_advance_payment_percent",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=5,
                        verbose_name="پیش\u200cپرداخت پیش\u200cفرض (٪)",
                    ),
                ),
                (
                    "default_retention_percent",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=5,
                        verbose_name="حسن انجام کار پیش\u200cفرض (٪)",
                    ),
                ),
                (
                    "default_penalty_rate_per_day",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=15,
                        verbose_name="نرخ جریمه پیش\u200cفرض (روزانه)",
                    ),
                ),
                (
                    "numbering_prefix",
                    models.CharField(
                        default="CNT",
                        max_length=10,
                        verbose_name="پیشوند شماره\u200cگذاری",
                    ),
                ),
                (
                    "numbering_pattern",
                    models.CharField(
                        default="{prefix}-{year}-{seq:04d}",
                        max_length=50,
                        verbose_name="الگوی شماره\u200cگذاری",
                    ),
                ),
                (
                    "is_active",
                    models.BooleanField(
                        db_index=True, default=True, verbose_name="فعال"
                    ),
                ),
                (
                    "is_default",
                    models.BooleanField(default=False, verbose_name="پیش\u200cفرض"),
                ),
                (
                    "usage_count",
                    models.IntegerField(default=0, verbose_name="دفعات استفاده"),
                ),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "created_by",
                    models.UUIDField(blank=True, null=True, verbose_name="ایجاد توسط"),
                ),
                (
                    "updated_by",
                    models.UUIDField(
                        blank=True, null=True, verbose_name="بروزرسانی توسط"
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
            ],
            options={
                "verbose_name": "قالب قرارداد",
                "verbose_name_plural": "قالب\u200cهای قرارداد",
                "db_table": "clm_contract_template",
            },
        ),
        migrations.CreateModel(
            name="ContractModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "contract_number",
                    models.CharField(
                        db_index=True, max_length=50, verbose_name="شماره قرارداد"
                    ),
                ),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("description", models.TextField(blank=True, verbose_name="شرح")),
                (
                    "category",
                    models.CharField(
                        choices=[
                            ("COMMERCIAL", "تجاری"),
                            ("PROJECT", "پروژه\u200cای"),
                            ("EMPLOYMENT", "استخدامی"),
                            ("LEASE", "اجاره/لیزینگ"),
                        ],
                        db_index=True,
                        default="COMMERCIAL",
                        max_length=30,
                        verbose_name="دسته",
                    ),
                ),
                (
                    "contract_type",
                    models.CharField(
                        choices=[
                            ("PURCHASE", "خرید"),
                            ("SALE", "فروش"),
                            ("SERVICE", "خدمات"),
                            ("PARTNERSHIP", "مشارکت"),
                            ("DISTRIBUTION", "توزیع"),
                            ("AGENCY", "نمایندگی"),
                            ("EPC", "EPC"),
                            ("CONTRACTOR", "پیمانکاری"),
                            ("SUBCONTRACTOR", "پیمانکار فرعی"),
                            ("CONSULTING", "مشاوره"),
                            ("PERMANENT", "دائم"),
                            ("TEMPORARY", "موقت"),
                            ("CONSULTANCY", "حق\u200cالمشاوره"),
                            ("INTERNSHIP", "کارآموزی"),
                            ("PROPERTY_LEASE", "اجاره ملک"),
                            ("EQUIPMENT_LEASE", "اجاره تجهیزات"),
                            ("VEHICLE_LEASE", "اجاره خودرو"),
                        ],
                        default="SERVICE",
                        max_length=30,
                        verbose_name="نوع قرارداد",
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("DRAFT", "پیش\u200cنویس"),
                            ("PENDING_APPROVAL", "در انتظار تأیید"),
                            ("APPROVED", "تأیید شده"),
                            ("ACTIVE", "فعال"),
                            ("SUSPENDED", "تعلیق"),
                            ("COMPLETED", "اتمام"),
                            ("TERMINATED", "خاتمه"),
                            ("EXPIRED", "منقضی"),
                            ("CANCELLED", "لغو"),
                        ],
                        db_index=True,
                        default="DRAFT",
                        max_length=30,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "priority",
                    models.CharField(
                        choices=[
                            ("LOW", "کم"),
                            ("NORMAL", "عادی"),
                            ("HIGH", "زیاد"),
                            ("CRITICAL", "بحرانی"),
                        ],
                        default="NORMAL",
                        max_length=20,
                        verbose_name="اولویت",
                    ),
                ),
                (
                    "start_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ شروع"),
                ),
                (
                    "end_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ پایان"),
                ),
                (
                    "signing_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ امضا"),
                ),
                (
                    "effective_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ اجرا"),
                ),
                (
                    "expiry_date",
                    models.DateField(
                        blank=True, db_index=True, null=True, verbose_name="تاریخ انقضا"
                    ),
                ),
                (
                    "total_value",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=20,
                        verbose_name="مبلغ کل",
                    ),
                ),
                (
                    "currency_id",
                    models.UUIDField(blank=True, null=True, verbose_name="واحد پول"),
                ),
                (
                    "payment_terms_days",
                    models.IntegerField(default=30, verbose_name="مهلت پرداخت (روز)"),
                ),
                (
                    "payment_terms_description",
                    models.TextField(blank=True, verbose_name="شرایط پرداخت"),
                ),
                (
                    "advance_payment_percent",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=5,
                        verbose_name="پیش\u200cپرداخت (٪)",
                    ),
                ),
                (
                    "retention_percent",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=5,
                        verbose_name="حسن انجام کار (٪)",
                    ),
                ),
                (
                    "penalty_rate_per_day",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=15,
                        verbose_name="نرخ جریمه روزانه",
                    ),
                ),
                (
                    "guarantee_amount",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=20,
                        verbose_name="مبلغ ضمانتنامه",
                    ),
                ),
                (
                    "guarantee_type",
                    models.CharField(
                        blank=True,
                        choices=[
                            ("BANK_GUARANTEE", "ضمانتنامه بانکی"),
                            ("PROMISSORY_NOTE", "سفته"),
                            ("CHECK", "چک"),
                            ("CASH", "نقد"),
                            ("", "ندارد"),
                        ],
                        default="",
                        max_length=30,
                        verbose_name="نوع ضمانتنامه",
                    ),
                ),
                (
                    "guarantee_expiry_date",
                    models.DateField(
                        blank=True, null=True, verbose_name="تاریخ انقضای ضمانتنامه"
                    ),
                ),
                (
                    "performance_bond_amount",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=20,
                        verbose_name="مبلغ حسن انجام تعهدات",
                    ),
                ),
                (
                    "performance_bond_expiry_date",
                    models.DateField(
                        blank=True,
                        null=True,
                        verbose_name="تاریخ انقضای حسن انجام تعهدات",
                    ),
                ),
                (
                    "auto_renew",
                    models.BooleanField(default=False, verbose_name="تمدید خودکار"),
                ),
                (
                    "renewal_period_days",
                    models.IntegerField(default=365, verbose_name="دوره تمدید (روز)"),
                ),
                (
                    "renewal_notice_days",
                    models.IntegerField(
                        default=30, verbose_name="اطلاع\u200cرسانی تمدید (روز قبل)"
                    ),
                ),
                (
                    "max_renewals",
                    models.IntegerField(default=0, verbose_name="حداکثر تمدید"),
                ),
                (
                    "renewals_count",
                    models.IntegerField(default=0, verbose_name="تعداد تمدیدها"),
                ),
                (
                    "project_id",
                    models.UUIDField(
                        blank=True, db_index=True, null=True, verbose_name="پروژه"
                    ),
                ),
                (
                    "org_unit_id",
                    models.UUIDField(
                        blank=True, null=True, verbose_name="واحد سازمانی"
                    ),
                ),
                (
                    "legal_entity_id",
                    models.UUIDField(blank=True, null=True, verbose_name="شخصیت حقوقی"),
                ),
                (
                    "responsible_person_id",
                    models.UUIDField(blank=True, null=True, verbose_name="مسئول"),
                ),
                (
                    "employee_id",
                    models.UUIDField(
                        blank=True,
                        null=True,
                        verbose_name="کارمند (قراردادهای استخدامی)",
                    ),
                ),
                (
                    "reference_number",
                    models.CharField(
                        blank=True, max_length=100, verbose_name="شماره مرجع"
                    ),
                ),
                (
                    "tags",
                    models.CharField(
                        blank=True, max_length=500, verbose_name="برچسب\u200cها"
                    ),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "metadata",
                    models.JSONField(blank=True, default=dict, verbose_name="متادیتا"),
                ),
                (
                    "is_active",
                    models.BooleanField(
                        db_index=True, default=True, verbose_name="فعال"
                    ),
                ),
                (
                    "is_confidential",
                    models.BooleanField(default=False, verbose_name="محرمانه"),
                ),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "created_by",
                    models.UUIDField(blank=True, null=True, verbose_name="ایجاد توسط"),
                ),
                (
                    "updated_by",
                    models.UUIDField(
                        blank=True, null=True, verbose_name="بروزرسانی توسط"
                    ),
                ),
                (
                    "parent_contract",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="sub_contracts",
                        to="clm.contractmodel",
                        verbose_name="قرارداد مادر",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "template",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="contracts",
                        to="clm.contracttemplatemodel",
                        verbose_name="قالب",
                    ),
                ),
            ],
            options={
                "verbose_name": "قرارداد",
                "verbose_name_plural": "قراردادها",
                "db_table": "clm_contract",
                "ordering": ["-created_at"],
            },
        ),
        migrations.CreateModel(
            name="ContractMilestoneModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("description", models.TextField(blank=True, verbose_name="شرح")),
                (
                    "milestone_type",
                    models.CharField(
                        choices=[
                            ("PAYMENT", "پرداخت"),
                            ("DELIVERY", "تحویل"),
                            ("PHASE_COMPLETION", "اتمام فاز"),
                            ("INSPECTION", "بازرسی"),
                            ("ACCEPTANCE", "تحویل\u200cگیری"),
                            ("CUSTOM", "سفارشی"),
                        ],
                        default="PAYMENT",
                        max_length=30,
                        verbose_name="نوع",
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("PENDING", "در انتظار"),
                            ("IN_PROGRESS", "در حال انجام"),
                            ("COMPLETED", "تکمیل\u200cشده"),
                            ("OVERDUE", "سررسید گذشته"),
                            ("CANCELLED", "لغو"),
                            ("SKIPPED", "رد شده"),
                        ],
                        default="PENDING",
                        max_length=20,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "planned_date",
                    models.DateField(
                        blank=True, null=True, verbose_name="تاریخ برنامه"
                    ),
                ),
                (
                    "actual_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ واقعی"),
                ),
                (
                    "due_date",
                    models.DateField(
                        blank=True, db_index=True, null=True, verbose_name="سررسید"
                    ),
                ),
                (
                    "amount",
                    models.DecimalField(
                        decimal_places=2, default=0, max_digits=20, verbose_name="مبلغ"
                    ),
                ),
                (
                    "currency_id",
                    models.UUIDField(blank=True, null=True, verbose_name="واحد پول"),
                ),
                (
                    "invoice_number",
                    models.CharField(
                        blank=True, max_length=50, verbose_name="شماره فاکتور"
                    ),
                ),
                (
                    "payment_status",
                    models.CharField(
                        blank=True,
                        choices=[
                            ("PENDING", "در انتظار"),
                            ("PAID", "پرداخت\u200cشده"),
                            ("PARTIAL", "پرداخت بخشی"),
                            ("OVERDUE", "معوق"),
                            ("", "ندارد"),
                        ],
                        default="",
                        max_length=20,
                        verbose_name="وضعیت پرداخت",
                    ),
                ),
                (
                    "deliverable_description",
                    models.TextField(blank=True, verbose_name="شرح تحویلی"),
                ),
                (
                    "acceptance_criteria",
                    models.TextField(blank=True, verbose_name="معیار پذیرش"),
                ),
                (
                    "accepted_by",
                    models.UUIDField(blank=True, null=True, verbose_name="تأیید توسط"),
                ),
                (
                    "accepted_at",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ تأیید"),
                ),
                (
                    "has_penalty",
                    models.BooleanField(default=False, verbose_name="جریمه تأخیر"),
                ),
                (
                    "penalty_amount_per_day",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=15,
                        verbose_name="جریمه روزانه",
                    ),
                ),
                ("order", models.IntegerField(default=0, verbose_name="ترتیب")),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "contract",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="milestones",
                        to="clm.contractmodel",
                        verbose_name="قرارداد",
                    ),
                ),
            ],
            options={
                "verbose_name": "مرحله قرارداد",
                "verbose_name_plural": "مراحل قرارداد",
                "db_table": "clm_contract_milestone",
                "ordering": ["order"],
                "indexes": [
                    models.Index(
                        fields=["contract", "status"],
                        name="clm_contrac_contrac_8593f4_idx",
                    ),
                    models.Index(
                        fields=["due_date"], name="clm_contrac_due_dat_e4bf70_idx"
                    ),
                ],
            },
        ),
        migrations.CreateModel(
            name="ContractClauseModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "clause_number",
                    models.CharField(max_length=20, verbose_name="شماره بند"),
                ),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("content", models.TextField(verbose_name="متن بند")),
                (
                    "clause_type",
                    models.CharField(
                        choices=[
                            ("GENERAL", "عمومی"),
                            ("FINANCIAL", "مالی"),
                            ("PENALTY", "جریمه"),
                            ("TERMINATION", "فسخ"),
                            ("CONFIDENTIALITY", "محرمانگی"),
                            ("FORCE_MAJEURE", "فورس ماژور"),
                            ("DISPUTE_RESOLUTION", "حل اختلاف"),
                            ("INSURANCE", "بیمه"),
                            ("WARRANTY", "ضمانت"),
                            ("DELIVERY", "تحویل"),
                            ("SCOPE", "محدوده کار"),
                            ("CUSTOM", "سفارشی"),
                        ],
                        default="GENERAL",
                        max_length=30,
                        verbose_name="نوع بند",
                    ),
                ),
                (
                    "is_mandatory",
                    models.BooleanField(default=False, verbose_name="اجباری"),
                ),
                (
                    "is_negotiable",
                    models.BooleanField(default=True, verbose_name="قابل مذاکره"),
                ),
                ("order", models.IntegerField(default=0, verbose_name="ترتیب")),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "parent_clause",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="sub_clauses",
                        to="clm.contractclausemodel",
                        verbose_name="بند مادر",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "contract",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="clauses",
                        to="clm.contractmodel",
                        verbose_name="قرارداد",
                    ),
                ),
            ],
            options={
                "verbose_name": "بند قرارداد",
                "verbose_name_plural": "بندهای قرارداد",
                "db_table": "clm_contract_clause",
                "ordering": ["order"],
                "unique_together": {("contract", "clause_number")},
            },
        ),
        migrations.CreateModel(
            name="ContractAmendmentModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("amendment_number", models.IntegerField(verbose_name="شماره الحاقیه")),
                ("title", models.CharField(max_length=500, verbose_name="عنوان")),
                ("description", models.TextField(blank=True, verbose_name="شرح")),
                ("reason", models.TextField(blank=True, verbose_name="دلیل")),
                (
                    "amendment_type",
                    models.CharField(
                        choices=[
                            ("VALUE_CHANGE", "تغییر مبلغ"),
                            ("DURATION_CHANGE", "تغییر مدت"),
                            ("SCOPE_CHANGE", "تغییر محدوده"),
                            ("PARTY_CHANGE", "تغییر طرفین"),
                            ("CLAUSE_CHANGE", "تغییر بندها"),
                            ("COMBINED", "ترکیبی"),
                            ("OTHER", "سایر"),
                        ],
                        default="OTHER",
                        max_length=30,
                        verbose_name="نوع",
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("DRAFT", "پیش\u200cنویس"),
                            ("PENDING_APPROVAL", "در انتظار تأیید"),
                            ("APPROVED", "تأیید شده"),
                            ("REJECTED", "رد شده"),
                            ("APPLIED", "اعمال\u200cشده"),
                        ],
                        default="DRAFT",
                        max_length=30,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "effective_date",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ اجرا"),
                ),
                (
                    "old_values",
                    models.JSONField(
                        blank=True, default=dict, verbose_name="مقادیر قبلی"
                    ),
                ),
                (
                    "new_values",
                    models.JSONField(
                        blank=True, default=dict, verbose_name="مقادیر جدید"
                    ),
                ),
                (
                    "old_total_value",
                    models.DecimalField(
                        blank=True,
                        decimal_places=2,
                        max_digits=20,
                        null=True,
                        verbose_name="مبلغ قبلی",
                    ),
                ),
                (
                    "new_total_value",
                    models.DecimalField(
                        blank=True,
                        decimal_places=2,
                        max_digits=20,
                        null=True,
                        verbose_name="مبلغ جدید",
                    ),
                ),
                (
                    "old_end_date",
                    models.DateField(
                        blank=True, null=True, verbose_name="تاریخ پایان قبلی"
                    ),
                ),
                (
                    "new_end_date",
                    models.DateField(
                        blank=True, null=True, verbose_name="تاریخ پایان جدید"
                    ),
                ),
                (
                    "approved_by",
                    models.UUIDField(blank=True, null=True, verbose_name="تأیید توسط"),
                ),
                (
                    "approved_at",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ تأیید"),
                ),
                (
                    "rejected_by",
                    models.UUIDField(blank=True, null=True, verbose_name="رد توسط"),
                ),
                (
                    "rejected_reason",
                    models.TextField(blank=True, verbose_name="دلیل رد"),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "created_by",
                    models.UUIDField(blank=True, null=True, verbose_name="ایجاد توسط"),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
                (
                    "contract",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="amendments",
                        to="clm.contractmodel",
                        verbose_name="قرارداد",
                    ),
                ),
            ],
            options={
                "verbose_name": "الحاقیه قرارداد",
                "verbose_name_plural": "الحاقیه\u200cهای قرارداد",
                "db_table": "clm_contract_amendment",
                "ordering": ["amendment_number"],
                "unique_together": {("contract", "amendment_number")},
            },
        ),
        migrations.CreateModel(
            name="ContractPartyModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                (
                    "party_role",
                    models.CharField(
                        choices=[
                            ("FIRST_PARTY", "طرف اول (کارفرما)"),
                            ("SECOND_PARTY", "طرف دوم"),
                            ("GUARANTOR", "ضامن"),
                            ("WITNESS", "شاهد"),
                            ("CONSULTANT", "مشاور"),
                            ("AGENT", "نماینده"),
                            ("BENEFICIARY", "ذی\u200cنفع"),
                        ],
                        default="SECOND_PARTY",
                        max_length=30,
                        verbose_name="نقش",
                    ),
                ),
                (
                    "business_partner_id",
                    models.UUIDField(
                        blank=True, db_index=True, null=True, verbose_name="طرف تجاری"
                    ),
                ),
                (
                    "legal_entity_id",
                    models.UUIDField(blank=True, null=True, verbose_name="شخصیت حقوقی"),
                ),
                (
                    "signer_name",
                    models.CharField(
                        blank=True, max_length=255, verbose_name="نام امضاکننده"
                    ),
                ),
                (
                    "signer_title",
                    models.CharField(
                        blank=True, max_length=255, verbose_name="سمت امضاکننده"
                    ),
                ),
                (
                    "signer_national_code",
                    models.CharField(
                        blank=True, max_length=20, verbose_name="کد ملی امضاکننده"
                    ),
                ),
                (
                    "signing_authority",
                    models.CharField(
                        blank=True, max_length=255, verbose_name="مأخذ اختیار امضا"
                    ),
                ),
                (
                    "contact_name",
                    models.CharField(
                        blank=True, max_length=255, verbose_name="نام رابط"
                    ),
                ),
                (
                    "contact_phone",
                    models.CharField(
                        blank=True, max_length=50, verbose_name="تلفن رابط"
                    ),
                ),
                (
                    "contact_email",
                    models.EmailField(
                        blank=True, max_length=254, verbose_name="ایمیل رابط"
                    ),
                ),
                (
                    "share_percent",
                    models.IntegerField(default=100, verbose_name="سهم (٪)"),
                ),
                ("is_primary", models.BooleanField(default=False, verbose_name="اصلی")),
                (
                    "is_lead",
                    models.BooleanField(default=False, verbose_name="سرکنسرسیوم"),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                ("order", models.IntegerField(default=0, verbose_name="ترتیب")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "contract",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="parties",
                        to="clm.contractmodel",
                        verbose_name="قرارداد",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
            ],
            options={
                "verbose_name": "طرف قرارداد",
                "verbose_name_plural": "طرف\u200cهای قرارداد",
                "db_table": "clm_contract_party",
                "ordering": ["order"],
                "indexes": [
                    models.Index(
                        fields=["contract", "party_role"],
                        name="clm_contrac_contrac_88128d_idx",
                    ),
                    models.Index(
                        fields=["business_partner_id"],
                        name="clm_contrac_busines_3f4db3_idx",
                    ),
                ],
            },
        ),
        migrations.CreateModel(
            name="ContractRenewalModel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        editable=False,
                        primary_key=True,
                        serialize=False,
                    ),
                ),
                ("renewal_number", models.IntegerField(verbose_name="شماره تمدید")),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("PENDING", "در انتظار"),
                            ("APPROVED", "تأیید شده"),
                            ("REJECTED", "رد شده"),
                            ("AUTO_RENEWED", "تمدید خودکار"),
                            ("CANCELLED", "لغو"),
                        ],
                        default="PENDING",
                        max_length=20,
                        verbose_name="وضعیت",
                    ),
                ),
                (
                    "old_start_date",
                    models.DateField(blank=True, null=True, verbose_name="شروع قبلی"),
                ),
                (
                    "old_end_date",
                    models.DateField(blank=True, null=True, verbose_name="پایان قبلی"),
                ),
                (
                    "new_start_date",
                    models.DateField(blank=True, null=True, verbose_name="شروع جدید"),
                ),
                (
                    "new_end_date",
                    models.DateField(blank=True, null=True, verbose_name="پایان جدید"),
                ),
                (
                    "old_value",
                    models.DecimalField(
                        blank=True,
                        decimal_places=2,
                        max_digits=20,
                        null=True,
                        verbose_name="مبلغ قبلی",
                    ),
                ),
                (
                    "new_value",
                    models.DecimalField(
                        blank=True,
                        decimal_places=2,
                        max_digits=20,
                        null=True,
                        verbose_name="مبلغ جدید",
                    ),
                ),
                (
                    "value_change_percent",
                    models.DecimalField(
                        decimal_places=2,
                        default=0,
                        max_digits=7,
                        verbose_name="تغییر مبلغ (٪)",
                    ),
                ),
                (
                    "approved_by",
                    models.UUIDField(blank=True, null=True, verbose_name="تأیید توسط"),
                ),
                (
                    "approved_at",
                    models.DateField(blank=True, null=True, verbose_name="تاریخ تأیید"),
                ),
                (
                    "is_auto",
                    models.BooleanField(default=False, verbose_name="تمدید خودکار"),
                ),
                ("notes", models.TextField(blank=True, verbose_name="یادداشت")),
                (
                    "created_at",
                    models.DateTimeField(auto_now_add=True, verbose_name="تاریخ ایجاد"),
                ),
                (
                    "updated_at",
                    models.DateTimeField(auto_now=True, verbose_name="تاریخ بروزرسانی"),
                ),
                (
                    "contract",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="renewals",
                        to="clm.contractmodel",
                        verbose_name="قرارداد",
                    ),
                ),
                (
                    "tenant",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="%(class)s_set",
                        to="tenant.tenant",
                    ),
                ),
            ],
            options={
                "verbose_name": "تمدید قرارداد",
                "verbose_name_plural": "تمدیدهای قرارداد",
                "db_table": "clm_contract_renewal",
                "ordering": ["renewal_number"],
                "unique_together": {("contract", "renewal_number")},
            },
        ),
        migrations.AddIndex(
            model_name="contracttemplatemodel",
            index=models.Index(
                fields=["tenant", "is_active"], name="clm_contrac_tenant__d2438b_idx"
            ),
        ),
        migrations.AddIndex(
            model_name="contracttemplatemodel",
            index=models.Index(
                fields=["tenant", "category"], name="clm_contrac_tenant__b0a073_idx"
            ),
        ),
        migrations.AlterUniqueTogether(
            name="contracttemplatemodel",
            unique_together={("tenant", "name")},
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "status"], name="clm_contrac_tenant__957f98_idx"
            ),
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "category"], name="clm_contrac_tenant__c302f1_idx"
            ),
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "contract_type"],
                name="clm_contrac_tenant__54eab8_idx",
            ),
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "is_active"], name="clm_contrac_tenant__725f52_idx"
            ),
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "expiry_date"], name="clm_contrac_tenant__017411_idx"
            ),
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "project_id"], name="clm_contrac_tenant__2da7fb_idx"
            ),
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "legal_entity_id"],
                name="clm_contrac_tenant__7ce9b4_idx",
            ),
        ),
        migrations.AddIndex(
            model_name="contractmodel",
            index=models.Index(
                fields=["tenant", "employee_id"], name="clm_contrac_tenant__51782f_idx"
            ),
        ),
        migrations.AlterUniqueTogether(
            name="contractmodel",
            unique_together={("tenant", "contract_number")},
        ),
    ]
