<?php
/**
 * GET /api/inventario/productos/historial_inicial.php?sucursal_id=X&page=Y&limit=Z
 */
require_once '../../config/database.php';
require_once '../../includes/helpers.php';

$pdo = getConnection();

try {
    $sucursal_id = isset($_GET['sucursal_id']) ? (int)$_GET['sucursal_id'] : 0;
    if ($sucursal_id <= 0) {
        throw new Exception("ID de sucursal inválido");
    }

    $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    $limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 10;
    if ($page < 1) $page = 1;
    if ($limit < 1) $limit = 10;
    $offset = ($page - 1) * $limit;

    // 1. Conteo de registros totales del historial
    $countSql = "
        SELECT COUNT(*) as total
        FROM inventario_movimientos m
        JOIN compras c ON CAST(m.referencia_id AS UNSIGNED) = c.id
        JOIN lugarcompra lc ON c.id_lugarCompra = lc.id
        JOIN compras_detalle cd ON c.id = cd.compra_id AND cd.producto_id = m.producto_id
        WHERE lc.nombre = 'Inventario Inicial' 
          AND m.sucursal_id = :sucursal_id
    ";
    $countStmt = $pdo->prepare($countSql);
    $countStmt->bindValue(':sucursal_id', $sucursal_id, PDO::PARAM_INT);
    $countStmt->execute();
    $total = (int)$countStmt->fetchColumn();

    // 2. Consulta de datos paginados (Excluyendo costo_unitario por seguridad)
    $sql = "
        SELECT 
            m.fecha_movimiento,
            COALESCE(p.CodigoInterno, '') as codigo,
            COALESCE(p.NombreComercial, 'Sin Nombre') as producto,
            m.cantidad as cantidad_base,
            c.id as compra_id,
            cd.cantidad as cantidad_ingresada,
            COALESCE(pr.nombre, 'Unidad') as presentacion,
            cd.facturado,
            cd.fecha_vencimiento,
            COALESCE(u.nombre, u.usuario, 'Sistema') as usuario
        FROM inventario_movimientos m
        JOIN productos p ON m.producto_id = p.id
        JOIN compras c ON CAST(m.referencia_id AS UNSIGNED) = c.id
        JOIN lugarcompra lc ON c.id_lugarCompra = lc.id
        JOIN compras_detalle cd ON c.id = cd.compra_id AND cd.producto_id = p.id
        LEFT JOIN presentaciones pr ON cd.presentacion_id = pr.id
        LEFT JOIN usuarios u ON m.usuario_id = u.id
        WHERE lc.nombre = 'Inventario Inicial' 
          AND m.sucursal_id = :sucursal_id
        ORDER BY m.fecha_movimiento DESC
        LIMIT :limit OFFSET :offset
    ";
    
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':sucursal_id', $sucursal_id, PDO::PARAM_INT);
    $stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
    $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
    $stmt->execute();
    $history = $stmt->fetchAll(PDO::FETCH_ASSOC);

    json_success([
        'history' => $history,
        'total' => $total,
        'page' => $page,
        'limit' => $limit,
        'pages' => ceil($total / $limit)
    ], 'Historial obtenido correctamente');

} catch (Exception $e) {
    json_error($e->getMessage(), 400);
}
