# Generated by Django 5.2.17 on 2026-09-26 17:10

import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('devices', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='DevicePurchaseEvidence',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('purchase_date', models.DateField(blank=True, null=True)),
                ('seller_name', models.CharField(blank=True, max_length=200)),
                ('seller_reference', models.CharField(blank=True, max_length=128)),
                ('invoice_number', models.CharField(blank=True, max_length=128)),
                ('evidence_status', models.CharField(choices=[('UNVERIFIED', 'Unverified'), ('VERIFIED', 'Verified'), ('REJECTED', 'Rejected')], default='UNVERIFIED', max_length=10)),
                ('verification_note', models.CharField(blank=True, max_length=2000)),
                ('reviewed_at', models.DateTimeField(blank=True, editable=False, null=True)),
                ('device', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='purchase_evidence', to='devices.device')),
                ('reviewed_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='reviewed_device_purchase_evidence', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name_plural': 'device purchase evidence',
                'ordering': ['created_at', 'id'],
                'abstract': False,
                'constraints': [models.CheckConstraint(condition=models.Q(('evidence_status__in', ['UNVERIFIED', 'VERIFIED', 'REJECTED'])), name='devices_purchase_status_valid'), models.CheckConstraint(condition=models.Q(models.Q(('evidence_status', 'UNVERIFIED'), ('reviewed_at__isnull', True), ('reviewed_by__isnull', True), ('verification_note', '')), models.Q(('evidence_status__in', ['VERIFIED', 'REJECTED']), ('reviewed_at__isnull', False), ('reviewed_by__isnull', False)), _connector='OR'), name='devices_purchase_review_coherent')],
            },
        ),
        migrations.CreateModel(
            name='DeviceWarrantyCoverage',
            fields=[
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('coverage_start_date', models.DateField()),
                ('coverage_end_date', models.DateField()),
                ('coverage_source', models.CharField(choices=[('PURCHASE_EVIDENCE', 'Purchase evidence'), ('MANUFACTURER_RECORD', 'Manufacturer record'), ('MANUAL_OVERRIDE', 'Manual override')], max_length=19)),
                ('reference', models.CharField(blank=True, max_length=200)),
                ('note', models.CharField(blank=True, max_length=2000)),
                ('is_active', models.BooleanField(default=True)),
                ('device', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='warranty_coverages', to='devices.device')),
            ],
            options={
                'ordering': ['created_at', 'id'],
                'abstract': False,
                'constraints': [models.CheckConstraint(condition=models.Q(('coverage_source__in', ['PURCHASE_EVIDENCE', 'MANUFACTURER_RECORD', 'MANUAL_OVERRIDE'])), name='devices_coverage_source_valid'), models.CheckConstraint(condition=models.Q(('coverage_end_date__gte', models.F('coverage_start_date'))), name='devices_coverage_date_order'), models.CheckConstraint(condition=models.Q(models.Q(('coverage_source', 'MANUAL_OVERRIDE'), _negated=True), models.Q(('note', ''), _negated=True), models.Q(('reference', ''), _negated=True), _connector='OR'), name='devices_coverage_manual_reason'), models.UniqueConstraint(condition=models.Q(('is_active', True)), fields=('device',), name='devices_coverage_active_uniq')],
            },
        ),
    ]
