# Generated by Django 4.2.28 on 2026-08-21 15:30

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


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('catalogos', '0020_remove_linea_molino'),
        ('recepciones', '0013_recepcion_disputa_states_and_permission'),
    ]

    operations = [
        migrations.CreateModel(
            name='Flete',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('estado', models.CharField(choices=[('identificacion', 'Identificación'), ('camion_registrado', 'Camión registrado'), ('peso_lleno', 'Peso lleno registrado'), ('muestreo_pendiente', 'Muestreo en curso'), ('muestreo_completado', 'Muestreo completado'), ('peso_vacio', 'Peso vacío registrado'), ('cerrada', 'Cerrada'), ('rechazada', 'Rechazada'), ('escalada', 'Escalada'), ('borrador', 'Borrador'), ('validada', 'Validada'), ('editada', 'Editada'), ('en_disputa', 'En disputa'), ('cerrada_en_disputa', 'Cerrada en disputa'), ('rechazada_en_disputa', 'Rechazada en disputa')], default='identificacion', max_length=20)),
                ('placas_camion', models.CharField(blank=True, default='', max_length=20)),
                ('linea_nombre', models.CharField(blank=True, default='', max_length=120)),
                ('marca_unidad', models.CharField(blank=True, default='', max_length=120)),
                ('modelo_unidad', models.CharField(blank=True, default='', max_length=120)),
                ('chofer_nombre', models.CharField(blank=True, default='', max_length=100)),
                ('chofer_telefono', models.CharField(blank=True, default='', max_length=20)),
                ('chofer_firma_en_dispositivo', models.BooleanField(default=False)),
                ('origen_trigo', models.CharField(blank=True, default='', max_length=120)),
                ('observaciones', models.TextField(blank=True)),
                ('fecha_cierre', models.DateTimeField(blank=True, null=True)),
                ('fecha_validacion', models.DateTimeField(blank=True, null=True)),
                ('fecha_edicion', models.DateTimeField(blank=True, null=True)),
                ('firmas', models.JSONField(blank=True, default=dict)),
                ('alerta', models.JSONField(blank=True, default=dict)),
                ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(app_label)s_%(class)s_created', to=settings.AUTH_USER_MODEL)),
                ('linea', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='fletes', to='catalogos.linea')),
                ('oficina', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='fletes', to='catalogos.oficina')),
                ('updated_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(app_label)s_%(class)s_updated', to=settings.AUTH_USER_MODEL)),
                ('variedad', models.ForeignKey(blank=True, help_text='Todas las boletas del flete deben corresponder a la misma variedad.', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='fletes', to='catalogos.variedad')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.AddField(
            model_name='recepcion',
            name='peso_neto_asignado',
            field=models.DecimalField(blank=True, decimal_places=3, help_text='Peso neto asignado a esta boleta dentro de un flete compartido.', max_digits=12, null=True),
        ),
        migrations.AlterField(
            model_name='muestreo',
            name='recepcion',
            field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='muestreo', to='recepciones.recepcion'),
        ),
        migrations.CreateModel(
            name='PesoFlete',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('tipo', models.CharField(choices=[('lleno', 'Lleno'), ('vacio', 'Vacío')], max_length=10)),
                ('valor', models.DecimalField(decimal_places=2, max_digits=10)),
                ('es_automatico', models.BooleanField(default=True)),
                ('motivo_manual', models.TextField(blank=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('bascula', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='pesos_flete', to='catalogos.bascula')),
                ('flete', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pesos', to='recepciones.flete')),
            ],
        ),
        migrations.AddField(
            model_name='muestreo',
            name='flete',
            field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='muestreo', to='recepciones.flete'),
        ),
        migrations.AddField(
            model_name='recepcion',
            name='flete',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='recepciones', to='recepciones.flete'),
        ),
        migrations.AddConstraint(
            model_name='pesoflete',
            constraint=models.UniqueConstraint(fields=('flete', 'tipo'), name='uq_peso_por_flete_tipo'),
        ),
    ]
