=== Diagnóstico UV→UC (Abrir cajas para sacar unidades) ===

1. Ejecutando diagnóstico de implementación...
=== Diagnóstico UV→UC (Abrir cajas para sacar unidades) ===

🔍 1. VERIFICACIÓN DE ENDPOINTS
--------------------------------------------------
✅ Checklist de archivos modificados:
✅ so_preparar_auto.php - Variable $uvToUc definida
✅ so_preparar_auto.php - Variable de sesión @so_pre_uv_to_uc configurada
✅ so_preparar_simple.php - Variable $uvToUc definida
✅ so_preparar_simple.php - Variable de sesión @so_pre_uv_to_uc configurada

🔍 2. VERIFICACIÓN DE FRONTEND
--------------------------------------------------
✅ JavaScript - Variable $chkUvToUc definida
✅ JavaScript - localStorage key para UV→UC definida
✅ JavaScript - Parámetro uv_to_uc enviado en 3 peticiones AJAX
✅ HTML - Checkbox chkUvToUc presente

🔍 3. VERIFICACIÓN DE STORED PROCEDURE
--------------------------------------------------
✅ SP - Variable v_uv_to_uc declarada
✅ SP - Inicialización desde @so_pre_uv_to_uc
✅ SP - Lógica UV→UC presente en 3 fases
✅ SP - Logs de debug UV→UC presentes

🔍 4. ANÁLISIS DE LÓGICA UV→UC
--------------------------------------------------
Condiciones UV→UC encontradas: 3

📋 Condición 1:
   IF v_uv_to_uc = 1 AND v_uc_per_uv > 0 AND (v_need_uc - v_take_uc) > 0 AND COALESCE(cur_uv,0) > 0 THEN
   ✅ Requiere factor de conversión v_uc_per_uv > 0
   ✅ Requiere déficit de UC (need > take)
   ✅ Requiere disponibilidad de UV
   ✅ Condición menos restrictiva (permite UV→UC con UC parciales)

📋 Condición 2:
   IF v_uv_to_uc = 1 AND v_uc_per_uv > 0 AND (v_need_uc - v_take_uc) > 0 THEN
   ✅ Requiere factor de conversión v_uc_per_uv > 0
   ✅ Requiere déficit de UC (need > take)
   ✅ Condición menos restrictiva (permite UV→UC con UC parciales)

📋 Condición 3:
   IF v_uv_to_uc = 1 AND v_uc_per_uv > 0 AND (v_need_uc - v_take_uc) > 0 THEN
   ✅ Requiere factor de conversión v_uc_per_uv > 0
   ✅ Requiere déficit de UC (need > take)
   ✅ Condición menos restrictiva (permite UV→UC con UC parciales)

🔍 5. SIMULACIÓN DE CASOS DE USO
--------------------------------------------------
📊 Caso típico de UV→UC:
   Pedido necesita: 150 UC
   Stock disponible: 0 UC, 2 UV (cajas de 100 UC c/u)
   Conversión esperada: Abrir 2 UV → 200 UC disponibles
   Resultado: Tomar 150 UC, sobran 50 UC

📊 Caso con stock mixto:
   Pedido necesita: 150 UC
   Stock disponible: 50 UC, 1 UV (caja de 100 UC)
   Conversión esperada: Tomar 50 UC + abrir 1 UV → 150 UC total
   Resultado: Pedido satisfecho completamente

🔍 6. PASOS PARA DEBUGGING
--------------------------------------------------
Para debuggear en entorno con BD:

1️⃣ Activar logging:
   - Marcar checkbox 'UV→UC (abrir cajas)' en interfaz
   - Usar debug=1 en peticiones
   - Verificar que @so_pre_uv_to_uc = 1

2️⃣ Verificar condiciones:
   - Producto debe tener para_producto_pack.unidades_por_uv > 0
   - Debe haber stock UV (cajas) disponible
   - Debe haber déficit de UC en pedido

3️⃣ Revisar logs:
   - SELECT * FROM so_preparar_auto_log WHERE msg LIKE '%UV→UC%'
   - Buscar mensajes 'UV→UC Check:' y 'UV→UC: Breaking'
   - Verificar parámetros en logs de INIT

4️⃣ Verificar movimientos:
   - SELECT * FROM wh_move WHERE pre_id IN (SELECT id FROM so_preembarque WHERE codigo LIKE 'PRE-%')
   - Buscar movimientos con cantidad_uv > 0 (apertura de cajas)

💡 TIPS:
   - Si no hay logs 'UV→UC Check:', el parámetro no llega al SP
   - Si hay checks pero no conversiones, revisar las condiciones
   - Si hay conversiones pero no movimientos, revisar la lógica de inserción

✅ Diagnóstico completado. ¡Implementación UV→UC lista para testing!

2. Intentando ver logs de debug...
=== Debug Logs para sp_so_preparar_auto ===

📋 Logs más recientes (últimos 20):
================================================================================
❌ Error de base de datos: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'created_at' in 'field list'

💡 Uso:
   php scripts/view_debug_logs.php show   # Mostrar logs (default)
   php scripts/view_debug_logs.php test   # Ejecutar test forzado
   php scripts/view_debug_logs.php clean  # Limpiar logs antiguos

3. Para probar con base de datos activa:
   php scripts/view_debug_logs.php test

=== Fin del diagnóstico ===
