from django.db import migrations


def move_camion_chofer_to_boleta(apps, schema_editor):
    Recepcion = apps.get_model("recepciones", "Recepcion")

    qs = Recepcion.objects.select_related("boleta").all()
    for r in qs.iterator():
        b = r.boleta
        if not b:
            continue

        update_fields = []

        if getattr(r, "placas_camion", "") and not getattr(b, "placas_camion", ""):
            b.placas_camion = r.placas_camion
            update_fields.append("placas_camion")

        if getattr(r, "chofer_nombre", "") and not getattr(b, "chofer_nombre", ""):
            b.chofer_nombre = r.chofer_nombre
            update_fields.append("chofer_nombre")

        if getattr(r, "chofer_telefono", "") and not getattr(b, "chofer_telefono", ""):
            b.chofer_telefono = r.chofer_telefono
            update_fields.append("chofer_telefono")

        if getattr(r, "chofer_firma_en_dispositivo", False) and not getattr(
            b, "chofer_firma_en_dispositivo", False
        ):
            b.chofer_firma_en_dispositivo = r.chofer_firma_en_dispositivo
            update_fields.append("chofer_firma_en_dispositivo")

        if update_fields:
            b.save(update_fields=update_fields)


class Migration(migrations.Migration):

    dependencies = [
        ("boletas", "0003_boleta_camion_chofer_fields"),
        ("recepciones", "0001_initial"),
    ]

    operations = [
        migrations.RunPython(move_camion_chofer_to_boleta, reverse_code=migrations.RunPython.noop),
        migrations.RemoveField(
            model_name="recepcion",
            name="placas_camion",
        ),
        migrations.RemoveField(
            model_name="recepcion",
            name="chofer_nombre",
        ),
        migrations.RemoveField(
            model_name="recepcion",
            name="chofer_telefono",
        ),
        migrations.RemoveField(
            model_name="recepcion",
            name="chofer_firma_en_dispositivo",
        ),
    ]
