<?php
require_once dirname(__FILE__) . '/../config.php';

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }
if ($_SERVER['REQUEST_METHOD'] !== 'GET') { jsonErr(405, 'Metodo no permitido.'); }

$payload  = auth();
$id_inver = (int)($payload['idinv'] ?? 0);
if (!$id_inver) { jsonErr(401, 'Token inválido.'); }

$idv = (int)($_GET['idv'] ?? 0);
if (!$idv) { jsonErr(400, 'Falta el parámetro idv.'); }

$db = getDB();

try {
    // Verificar que el voucher pertenece al distribuidor
    $stmtOwner = $db->prepare("SELECT id_inv FROM voucher WHERE idv = ?");
    $stmtOwner->execute([$idv]);
    $owner = (int)$stmtOwner->fetchColumn();
    if ($owner !== $id_inver) { jsonErr(403, 'No tienes permiso para ver este voucher.'); }

    // Datos del voucher
    $stmtV = $db->prepare("
        SELECT idv, total, restante, status, fecha_cre, descripcion, referencia
        FROM voucher WHERE idv = ?
    ");
    $stmtV->execute([$idv]);
    $voucher = $stmtV->fetch(PDO::FETCH_ASSOC);
    if (!$voucher) { jsonErr(404, 'Voucher no encontrado.'); }

    $voucher['idv']      = (int)$voucher['idv'];
    $voucher['total']    = (float)$voucher['total'];
    $voucher['restante'] = (float)$voucher['restante'];
    $voucher['status']   = (int)$voucher['status'];

    // Notas en las que se usó este voucher
    $stmtUsos = $db->prepare("
        SELECT
            t.idtransacciones,
            t.fechat,
            i.nombre,
            i.appat,
            i.apmat,
            dt.monto,
            t.tipostr_idtipostr
        FROM depositos_transaccion dt
        JOIN transacciones t  ON t.idtransacciones          = dt.idtransacciones
        JOIN inversionista i  ON t.inversionista_id_inver   = i.id_inver
        WHERE dt.id_voucher = ?
        ORDER BY t.fechat DESC
    ");
    $stmtUsos->execute([$idv]);
    $usos = $stmtUsos->fetchAll(PDO::FETCH_ASSOC);

    foreach ($usos as &$u) {
        $u['idtransacciones']   = (int)$u['idtransacciones'];
        $u['monto']             = (float)$u['monto'];
        $u['tipostr_idtipostr'] = (int)$u['tipostr_idtipostr'];
        $u['nombre_completo']   = trim($u['nombre'] . ' ' . $u['appat'] . ' ' . $u['apmat']);
        unset($u['nombre'], $u['appat'], $u['apmat']);
    }
    unset($u);

    jsonOk(['voucher' => $voucher, 'usos' => $usos]);

} catch (Throwable $e) {
    jsonErr(500, 'Error al obtener detalle: ' . $e->getMessage());
}
