<?php
/**
 * API: Obtener Stock por Sucursal (OPTIMIZADO)
 * Retorna el stock disponible de un producto en todas las sucursales
 * OPTIMIZACIÓN: Una sola consulta SQL en lugar de N+1
 */

header('Content-Type: application/json; charset=utf-8');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");

require_once '../../db_connection.php';

$response = [
    'success' => false,
    'sucursales' => []
];

try {
    $producto_id = isset($_GET['producto_id']) ? (int)$_GET['producto_id'] : 0;
    
    if ($producto_id <= 0) {
        throw new Exception('ID de producto inválido');
    }
    
    // Obtener sucursal activa para excluirla
    $config = require '../../config/sucursal_activa.php';
    $sucursalActiva = $config['sucursal_id'];
    
    // NUEVO: Usa inventario_sucursal (una fila por producto+sucursal)
    $sql = "SELECT 
                s.id,
                s.nombre,
                COALESCE(inv.stock_facturado, 0) as stock_facturado,
                COALESCE(inv.stock_no_facturado, 0) as stock_no_facturado
            FROM sucursales s
            LEFT JOIN inventario_sucursal inv ON inv.sucursal_id = s.id AND inv.producto_id = :producto_id
            WHERE s.id != :sucursal_activa
            ORDER BY s.nombre ASC";
    
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':producto_id', $producto_id, PDO::PARAM_INT);
    $stmt->bindValue(':sucursal_activa', $sucursalActiva, PDO::PARAM_INT);
    $stmt->execute();
    $sucursales = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    $sucursalesFormateadas = [];
    foreach ($sucursales as $sucursal) {
        // Extraer nombre corto
        if (preg_match('/\(([^)]+)\)/', $sucursal['nombre'], $matches)) {
            $nombreCorto = $matches[1];
        } else {
            $nombreCorto = $sucursal['nombre'];
        }
        
        $stockF = (int)$sucursal['stock_facturado'];
        $stockNF = (int)$sucursal['stock_no_facturado'];
        
        $sucursalesFormateadas[] = [
            'id' => (int)$sucursal['id'],
            'nombre' => $sucursal['nombre'],
            'nombre_corto' => $nombreCorto,
            'stock_facturado' => $stockF,
            'stock_no_facturado' => $stockNF,
            'stock' => $stockF + $stockNF
        ];
    }
    
    $response['success'] = true;
    $response['sucursales'] = $sucursalesFormateadas;
    
} catch (Exception $e) {
    $response['success'] = false;
    $response['error'] = $e->getMessage();
}

echo json_encode($response, JSON_UNESCAPED_UNICODE);
?>
