#!/usr/bin/env python3
"""Corrección puntual: desasignar nota 77681 y liberar a Karlos."""
import sqlite3, sys
from datetime import datetime

DB = sys.argv[1] if len(sys.argv) > 1 else "/home/embalado/bascunan.db"
NRO = 77681

conn = sqlite3.connect(DB)
conn.row_factory = sqlite3.Row
now = datetime.now().isoformat()

# 1. Ver estado actual
en = conn.execute("SELECT * FROM estados_notas WHERE nro_documento=?", (NRO,)).fetchone()
if en:
    print(f"Nota {NRO}: estado='{en['estado']}', bodeguero_asignado={en['id_bodeguero_asignado']}")
else:
    print(f"Nota {NRO} no existe en estados_notas.")

bod = conn.execute(
    "SELECT eb.*, u.nombre FROM estados_bodegueros eb JOIN usuarios u ON u.id=eb.id_usuario WHERE eb.nro_documento_actual=?",
    (NRO,)
).fetchone()
if bod:
    print(f"Bodeguero ocupado con esa nota: {bod['nombre']} (id={bod['id_usuario']})")

# 2. Resetear nota a pendiente, limpiar asignación y picking_items
conn.execute(
    "UPDATE estados_notas SET estado='pendiente', id_bodeguero_asignado=NULL, updated_at=? WHERE nro_documento=?",
    (now, NRO)
)
items = conn.execute("DELETE FROM picking_items WHERE nro_documento=?", (NRO,)).rowcount
print(f"  ✓ Nota {NRO} → pendiente, {items} picking_item(s) eliminados")

# 3. Liberar bodeguero que tenga esa nota asignada
if bod:
    conn.execute(
        "UPDATE estados_bodegueros SET estado='disponible', nro_documento_actual=NULL, updated_at=? WHERE id_usuario=?",
        (now, bod['id_usuario'])
    )
    # Cerrar log de estado
    conn.execute(
        "UPDATE log_bodeguero_estados SET fin_at=? WHERE id_usuario=? AND fin_at IS NULL",
        (now, bod['id_usuario'])
    )
    conn.execute(
        "INSERT INTO log_bodeguero_estados (id_usuario, estado, inicio_at) VALUES (?,?,?)",
        (bod['id_usuario'], 'disponible', now)
    )
    print(f"  ✓ {bod['nombre']} → disponible")

conn.commit()
conn.close()
print("Listo.")
