<?php
session_start();
include '../../script/conexion.php';
require '../general/validacion.php';

date_default_timezone_set('America/Bogota');

function h($value)
{
    return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
}

function nf0($value)
{
    return number_format((float)$value, 0, ',', '.');
}

function formatDateEs($date)
{
    if (!$date) return '';
    return date('d/m/Y', strtotime($date));
}

function estadoBadgeClass($estado, $tipo = '')
{
    $estado = trim((string)$estado);

    if ($tipo === 'PEDIDO') {
        return match ($estado) {
            'Proceso' => 'badge-soft-info',
            'Confirmado' => 'badge-soft-primary',
            'Cancelado' => 'badge-soft-secondary',
            default => 'badge-soft-dark',
        };
    }

    return match ($estado) {
        'Proceso' => 'badge-soft-info',
        'Enviado' => 'badge-soft-warning',
        'Novedad' => 'badge-soft-orange',
        'Entregado', 'Finalizado' => 'badge-soft-success',
        'Cancelado' => 'badge-soft-secondary',
        default => 'badge-soft-dark',
    };
}

$fecha_desde = $_GET['fecha_desde'] ?? date('Y-m-d');
$fecha_hasta = $_GET['fecha_hasta'] ?? date('Y-m-d');
$nombre_tercero = trim($_GET['nombre_tercero'] ?? '');
$filtroActivo = isset($_GET['filtro']);

$esTodo = strtoupper($nombre_tercero) === 'TODO';

$stats = [
    'pedidos' => 0,
    'ventas' => 0,
    'saldo' => 0,
    'referencias' => 0,
    'clientes' => 0,
];

$nit = 'No aplica';
$referencias = [];
$sinResultados = false;

if ($filtroActivo) {
    $fecha_desde_sql = $conn->real_escape_string($fecha_desde);
    $fecha_hasta_sql = $conn->real_escape_string($fecha_hasta);
    $nombre_tercero_sql = $conn->real_escape_string($nombre_tercero);

    $wherePedido = "p.fecha BETWEEN '$fecha_desde_sql' AND '$fecha_hasta_sql' AND p.estado <> 'Cancelado'";
    $whereVenta  = "v.fecha BETWEEN '$fecha_desde_sql' AND '$fecha_hasta_sql' AND v.estado <> 'Cancelado'";

    if (!$esTodo && $nombre_tercero !== '') {
        $wherePedido .= " AND p.nombre_tercero = '$nombre_tercero_sql'";
        $whereVenta  .= " AND v.nombre_tercero = '$nombre_tercero_sql'";
    }

    if (!$esTodo && $nombre_tercero !== '') {
        $sqlNit = "SELECT nit FROM alm_tercero WHERE nombre = '$nombre_tercero_sql' LIMIT 1";
        $queryNit = $conn->query($sqlNit);
        if ($queryNit && $queryNit->num_rows > 0) {
            $rowNit = $queryNit->fetch_assoc();
            $nit = $rowNit['nit'] ?: 'No registra';
        } else {
            $nit = 'No registra';
        }
    }

    $sqlStatsPedidos = "
        SELECT COALESCE(SUM(pd.cantidad), 0) AS total
        FROM alm_pedido p
        INNER JOIN alm_pedido_detalle pd ON pd.id_pedido = p.id
        WHERE $wherePedido
          AND pd.estado <> 'Cancelado'
    ";
    $stats['pedidos'] = (float)($conn->query($sqlStatsPedidos)->fetch_assoc()['total'] ?? 0);

    $sqlStatsVentas = "
        SELECT COALESCE(SUM(vd.cantidad), 0) AS total
        FROM alm_venta v
        INNER JOIN alm_venta_detalle vd ON vd.id_venta = v.id
        WHERE $whereVenta
          AND vd.estado <> 'Cancelado'
    ";
    $stats['ventas'] = (float)($conn->query($sqlStatsVentas)->fetch_assoc()['total'] ?? 0);

    $stats['saldo'] = $stats['pedidos'] - $stats['ventas'];

    if ($esTodo) {
        $sqlClientes = "
            SELECT COUNT(DISTINCT nombre_tercero) AS total_clientes
            FROM (
                SELECT p.nombre_tercero
                FROM alm_pedido p
                WHERE $wherePedido

                UNION

                SELECT v.nombre_tercero
                FROM alm_venta v
                WHERE $whereVenta
            ) x
        ";
        $stats['clientes'] = (int)($conn->query($sqlClientes)->fetch_assoc()['total_clientes'] ?? 0);
    }

    $sqlRefs = "
        SELECT ref.referencia_producto
        FROM (
            SELECT pd.referencia_producto
            FROM alm_pedido p
            INNER JOIN alm_pedido_detalle pd ON pd.id_pedido = p.id
            WHERE $wherePedido
              AND pd.estado <> 'Cancelado'

            UNION

            SELECT vd.referencia_producto
            FROM alm_venta v
            INNER JOIN alm_venta_detalle vd ON vd.id_venta = v.id
            WHERE $whereVenta
              AND vd.estado <> 'Cancelado'
        ) ref
        GROUP BY ref.referencia_producto
        ORDER BY ref.referencia_producto ASC
    ";

    $queryRefs = $conn->query($sqlRefs);

    if ($queryRefs && $queryRefs->num_rows > 0) {
        while ($rowRef = $queryRefs->fetch_assoc()) {
            $referencia = $rowRef['referencia_producto'];
            $referencia_sql = $conn->real_escape_string($referencia);

            $sqlProducto = "SELECT referencia, color, categoria FROM producto WHERE referencia = '$referencia_sql' LIMIT 1";
            $queryProducto = $conn->query($sqlProducto);
            $producto = $queryProducto && $queryProducto->num_rows > 0
                ? $queryProducto->fetch_assoc()
                : ['referencia' => $referencia, 'color' => 'No registra', 'categoria' => 'No registra'];

            $sqlTallas = "
                SELECT talla
                FROM (
                    SELECT pd.talla
                    FROM alm_pedido p
                    INNER JOIN alm_pedido_detalle pd ON pd.id_pedido = p.id
                    WHERE $wherePedido
                      AND pd.estado <> 'Cancelado'
                      AND pd.referencia_producto = '$referencia_sql'

                    UNION

                    SELECT vd.talla
                    FROM alm_venta v
                    INNER JOIN alm_venta_detalle vd ON vd.id_venta = v.id
                    WHERE $whereVenta
                      AND vd.estado <> 'Cancelado'
                      AND vd.referencia_producto = '$referencia_sql'
                ) t
                GROUP BY talla
                ORDER BY CAST(talla AS UNSIGNED) ASC, talla ASC
            ";

            $queryTallas = $conn->query($sqlTallas);
            $tallas = [];

            if ($queryTallas && $queryTallas->num_rows > 0) {
                while ($rowTalla = $queryTallas->fetch_assoc()) {
                    $tallas[] = (string)$rowTalla['talla'];
                }
            }

            $sqlMov = "
                SELECT *
                FROM (
                    SELECT
                        p.id AS mov_id,
                        p.fecha,
                        'PEDIDO' AS tipo,
                        p.numero_pedido AS numero_documento,
                        p.nombre_tercero,
                        p.estado,
                        pd.talla,
                        SUM(pd.cantidad) AS cantidad
                    FROM alm_pedido p
                    INNER JOIN alm_pedido_detalle pd ON pd.id_pedido = p.id
                    WHERE $wherePedido
                      AND pd.estado <> 'Cancelado'
                      AND pd.referencia_producto = '$referencia_sql'
                    GROUP BY p.id, p.fecha, p.numero_pedido, p.nombre_tercero, p.estado, pd.talla

                    UNION ALL

                    SELECT
                        v.id AS mov_id,
                        v.fecha,
                        'VENTA' AS tipo,
                        v.numero_venta AS numero_documento,
                        v.nombre_tercero,
                        v.estado,
                        vd.talla,
                        SUM(vd.cantidad) AS cantidad
                    FROM alm_venta v
                    INNER JOIN alm_venta_detalle vd ON vd.id_venta = v.id
                    WHERE $whereVenta
                      AND vd.estado <> 'Cancelado'
                      AND vd.referencia_producto = '$referencia_sql'
                    GROUP BY v.id, v.fecha, v.numero_venta, v.nombre_tercero, v.estado, vd.talla
                ) z
                ORDER BY z.fecha ASC, z.tipo ASC, z.mov_id ASC
            ";

            $queryMov = $conn->query($sqlMov);

            $movimientos = [];
            $saldosPorTalla = array_fill_keys($tallas, 0);
            $saldoReferencia = 0;

            if ($queryMov && $queryMov->num_rows > 0) {
                while ($rowMov = $queryMov->fetch_assoc()) {
                    $key = $rowMov['tipo'] . '_' . $rowMov['mov_id'];

                    if (!isset($movimientos[$key])) {
                        $movimientos[$key] = [
                            'fecha' => $rowMov['fecha'],
                            'tipo' => $rowMov['tipo'],
                            'numero_documento' => $rowMov['numero_documento'],
                            'nombre_tercero' => $rowMov['nombre_tercero'],
                            'estado' => $rowMov['estado'],
                            'id' => $rowMov['mov_id'],
                            'cantidades' => array_fill_keys($tallas, ''),
                            'total' => 0,
                        ];
                    }

                    $cantidad = (float)$rowMov['cantidad'];
                    $signed = $rowMov['tipo'] === 'VENTA' ? ($cantidad * -1) : $cantidad;
                    $tallaMov = (string)$rowMov['talla'];

                    $movimientos[$key]['cantidades'][$tallaMov] = $signed;
                    $movimientos[$key]['total'] += $signed;

                    if (!isset($saldosPorTalla[$tallaMov])) {
                        $saldosPorTalla[$tallaMov] = 0;
                    }

                    $saldosPorTalla[$tallaMov] += $signed;
                    $saldoReferencia += $signed;
                }
            }

            $referencias[] = [
                'producto' => $producto,
                'tallas' => $tallas,
                'movimientos' => array_values($movimientos),
                'saldos' => $saldosPorTalla,
                'saldo_total' => $saldoReferencia,
            ];
        }
    }

    $stats['referencias'] = count($referencias);
    $sinResultados = $stats['referencias'] === 0;
}
?>
<!doctype html>
<html lang="es" class="light-theme">

<head>
    <?php include '../general/libreria-css.php'; ?>
    <style>
        :root {
            --page-bg: #f6f8fb;
            --card-bg: #ffffff;
            --text-main: #1f2937;
            --text-soft: #6b7280;
            --line: #e5e7eb;
            --primary: #4f46e5;
            --primary-soft: rgba(79, 70, 229, .10);
            --success-soft: rgba(34, 197, 94, .12);
            --danger-soft: rgba(239, 68, 68, .12);
            --warning-soft: rgba(245, 158, 11, .12);
            --info-soft: rgba(6, 182, 212, .12);
            --shadow: 0 10px 30px rgba(15, 23, 42, .06);
            --radius: 18px;
        }

        body {
            background: var(--page-bg);
            color: var(--text-main);
        }

        .page-title-card,
        .filter-card,
        .stats-card,
        .ref-card {
            border: 0;
            border-radius: var(--radius);
            background: var(--card-bg);
            box-shadow: var(--shadow);
        }

        .page-title-card .card-body {
            padding: 1.4rem 1.5rem;
        }

        .page-title-main {
            font-size: 1.5rem;
            font-weight: 800;
            margin-bottom: .2rem;
            letter-spacing: .2px;
        }

        .page-subtitle {
            color: var(--text-soft);
            margin: 0;
            font-size: .95rem;
        }

        .filter-card .card-body,
        .ref-card .card-body {
            padding: 1.25rem;
        }

        .label-soft {
            font-size: .78rem;
            text-transform: uppercase;
            letter-spacing: .08em;
            color: var(--text-soft);
            font-weight: 700;
            margin-bottom: .45rem;
        }

        .stats-card .card-body {
            padding: 1rem 1.15rem;
        }

        .stats-icon {
            width: 42px;
            height: 42px;
            border-radius: 14px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            background: var(--primary-soft);
            color: var(--primary);
            font-size: 1.05rem;
            margin-bottom: .85rem;
        }

        .stats-title {
            font-size: .8rem;
            color: var(--text-soft);
            text-transform: uppercase;
            letter-spacing: .08em;
            margin-bottom: .35rem;
            font-weight: 700;
        }

        .stats-value {
            font-size: 1.35rem;
            font-weight: 800;
            line-height: 1.1;
            color: var(--text-main);
        }

        .stats-note {
            font-size: .8rem;
            color: var(--text-soft);
            margin-top: .35rem;
        }

        .report-head {
            display: flex;
            justify-content: space-between;
            gap: 1rem;
            align-items: flex-start;
            flex-wrap: wrap;
            margin-bottom: 1.2rem;
            padding: 1rem 1.1rem;
            border: 1px solid var(--line);
            border-radius: 16px;
            background: linear-gradient(135deg, #ffffff 0%, #fafbff 100%);
        }

        .report-brand {
            display: flex;
            gap: 1rem;
            align-items: center;
        }

        .report-brand img {
            width: 68px;
            height: 68px;
            object-fit: contain;
            border-radius: 14px;
            background: #fff;
            border: 1px solid var(--line);
            padding: .4rem;
        }

        .report-meta h4 {
            margin: 0 0 .3rem 0;
            font-size: 1.1rem;
            font-weight: 800;
        }

        .report-meta p {
            margin: 0;
            color: var(--text-soft);
            font-size: .92rem;
        }

        .report-badges {
            display: flex;
            flex-wrap: wrap;
            gap: .5rem;
            margin-top: .7rem;
        }

        .info-chip {
            display: inline-flex;
            align-items: center;
            gap: .35rem;
            padding: .45rem .75rem;
            border-radius: 999px;
            background: #f8fafc;
            border: 1px solid var(--line);
            font-size: .82rem;
            color: var(--text-main);
            font-weight: 600;
        }

        .toolbar-actions .btn {
            border-radius: 12px;
            padding: .65rem 1rem;
            font-weight: 700;
        }

        .ref-card + .ref-card {
            margin-top: 1rem;
        }

        .ref-header {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 1rem;
            flex-wrap: wrap;
            margin-bottom: 1rem;
        }

        .ref-title {
            font-size: 1.05rem;
            font-weight: 800;
            margin: 0 0 .4rem 0;
        }

        .ref-meta {
            display: flex;
            gap: .55rem;
            flex-wrap: wrap;
        }

        .ref-meta .chip {
            padding: .45rem .7rem;
            border-radius: 999px;
            background: #f8fafc;
            border: 1px solid var(--line);
            font-size: .8rem;
            color: var(--text-main);
            font-weight: 700;
        }

        .saldo-chip {
            padding: .6rem .85rem;
            border-radius: 14px;
            font-weight: 800;
            min-width: 110px;
            text-align: center;
            border: 1px solid transparent;
        }

        .saldo-chip.positivo {
            background: var(--success-soft);
            color: #15803d;
            border-color: rgba(34, 197, 94, .18);
        }

        .saldo-chip.negativo {
            background: var(--danger-soft);
            color: #b91c1c;
            border-color: rgba(239, 68, 68, .18);
        }

        .saldo-chip.cero {
            background: #f8fafc;
            color: var(--text-main);
            border-color: var(--line);
        }

        .table-modern {
            margin-bottom: 0;
            border-collapse: separate;
            border-spacing: 0;
        }

        .table-modern thead th {
            background: #f8fafc;
            color: #334155;
            font-size: .78rem;
            text-transform: uppercase;
            letter-spacing: .08em;
            font-weight: 800;
            border-bottom: 1px solid var(--line);
            border-top: 0;
            white-space: nowrap;
            padding: .8rem .65rem;
        }

        .table-modern tbody td,
        .table-modern tfoot th,
        .table-modern tfoot td {
            padding: .82rem .65rem;
            vertical-align: middle;
            border-color: #eef2f7;
            white-space: nowrap;
        }

        .table-modern tbody tr:hover {
            background: #fafcff;
        }

        .movement-type {
            font-weight: 800;
            letter-spacing: .04em;
        }

        .movement-type.pedido {
            color: #4f46e5;
        }

        .movement-type.venta {
            color: #0f766e;
        }

        .link-doc {
            text-decoration: none;
            font-weight: 800;
        }

        .link-doc:hover {
            text-decoration: underline;
        }

        .qty-pos {
            font-weight: 700;
            color: #1d4ed8;
        }

        .qty-neg {
            font-weight: 700;
            color: #b91c1c;
        }

        .qty-zero {
            color: #9ca3af;
        }

        .badge-soft-info,
        .badge-soft-primary,
        .badge-soft-success,
        .badge-soft-warning,
        .badge-soft-secondary,
        .badge-soft-dark,
        .badge-soft-orange {
            border-radius: 999px;
            padding: .42rem .68rem;
            font-size: .72rem;
            font-weight: 800;
            letter-spacing: .03em;
            border: 1px solid transparent;
        }

        .badge-soft-info {
            background: var(--info-soft);
            color: #0f766e;
        }

        .badge-soft-primary {
            background: var(--primary-soft);
            color: var(--primary);
        }

        .badge-soft-success {
            background: var(--success-soft);
            color: #15803d;
        }

        .badge-soft-warning {
            background: var(--warning-soft);
            color: #b45309;
        }

        .badge-soft-secondary {
            background: #eef2f7;
            color: #475569;
        }

        .badge-soft-dark {
            background: #f1f5f9;
            color: #111827;
        }

        .badge-soft-orange {
            background: rgba(249, 115, 22, .12);
            color: #c2410c;
        }

        .empty-state {
            border: 1px dashed #cbd5e1;
            border-radius: 18px;
            padding: 2rem 1rem;
            text-align: center;
            background: #fff;
        }

        .empty-state i {
            font-size: 2rem;
            color: #94a3b8;
            margin-bottom: .75rem;
        }

        .empty-state h5 {
            font-weight: 800;
            margin-bottom: .35rem;
        }

        .empty-state p {
            color: var(--text-soft);
            margin-bottom: 0;
        }

        @media print {
            body {
                background: #fff !important;
            }

            .d-print-none,
            .wrapper aside,
            .top-header,
            .page-breadcrumb,
            .toolbar-actions {
                display: none !important;
            }

            .page-title-card,
            .filter-card,
            .stats-card,
            .ref-card {
                box-shadow: none !important;
                border: 1px solid #ddd !important;
            }

            .page-content-wrapper,
            .page-content,
            .wrapper {
                margin: 0 !important;
                padding: 0 !important;
            }

            .report-head {
                border: 1px solid #ddd !important;
                background: #fff !important;
            }
        }
    </style>
</head>

<body>
    <div class="wrapper">
        <?php echo include '../general/menu.php'; ?>

        <div class="page-content-wrapper">
            <div class="page-content">

                <nav aria-label="breadcrumb" class="d-print-none mb-3">
                    <ol class="breadcrumb mb-0">
                        <li class="breadcrumb-item">
                            <a href="../inicio/inicio.php">
                                <ion-icon name="home-outline"></ion-icon>
                            </a>
                        </li>
                        <li class="breadcrumb-item active" aria-current="page">RPT - Kardex por cliente</li>
                    </ol>
                </nav>

                <div class="card page-title-card mb-3">
                    <div class="card-body">
                        <div class="page-title-main">Kardex por cliente</div>
                        <p class="page-subtitle">
                            Consulta profesional de movimientos por referencia, tallas, pedidos, ventas y saldos del periodo seleccionado.
                        </p>
                    </div>
                </div>

                <div class="card filter-card d-print-none mb-3">
                    <div class="card-body">
                        <form method="GET" action="rpt-kardex.php">
                            <div class="row g-3 align-items-end">
                                <div class="col-md-2">
                                    <label class="label-soft">Desde</label>
                                    <input type="date" class="form-control" name="fecha_desde" value="<?= h($fecha_desde) ?>" required>
                                </div>

                                <div class="col-md-2">
                                    <label class="label-soft">Hasta</label>
                                    <input type="date" class="form-control" name="fecha_hasta" value="<?= h($fecha_hasta) ?>" required>
                                </div>

                                <div class="col-md-6">
                                    <label class="label-soft">Cliente</label>
                                    <select class="single-select form-control" name="nombre_tercero" required>
                                        <option value="" disabled <?= !$filtroActivo ? 'selected' : '' ?>>Seleccione</option>
                                        <option value="TODO" <?= $esTodo ? 'selected' : '' ?>>TODO</option>
                                        <?php
                                        $sqlClientes = "SELECT * FROM alm_tercero WHERE id!='3' ORDER BY nombre ASC";
                                        $queryClientes = $conn->query($sqlClientes);
                                        if ($queryClientes && $queryClientes->num_rows > 0) {
                                            while ($rowCliente = $queryClientes->fetch_assoc()) {
                                                $selected = (!$esTodo && $nombre_tercero === $rowCliente['nombre']) ? 'selected' : '';
                                        ?>
                                                <option value="<?= h($rowCliente['nombre']) ?>" <?= $selected ?>>
                                                    <?= h($rowCliente['nombre']) ?>
                                                </option>
                                        <?php
                                            }
                                        }
                                        ?>
                                    </select>
                                </div>

                                <div class="col-md-2">
                                    <button class="btn btn-dark w-100" type="submit" name="filtro">
                                        <i class="fas fa-search me-1"></i> Consultar
                                    </button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>

                <?php if ($filtroActivo): ?>
                    <div class="row g-3 mb-3 d-print-none">
                        <div class="col-md-3 col-xl-2">
                            <div class="card stats-card">
                                <div class="card-body">
                                    <div class="stats-icon"><i class="fas fa-layer-group"></i></div>
                                    <div class="stats-title">Referencias</div>
                                    <div class="stats-value"><?= nf0($stats['referencias']) ?></div>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-3 col-xl-2">
                            <div class="card stats-card">
                                <div class="card-body">
                                    <div class="stats-icon"><i class="fas fa-arrow-circle-down"></i></div>
                                    <div class="stats-title">Pedidos</div>
                                    <div class="stats-value"><?= nf0($stats['pedidos']) ?></div>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-3 col-xl-2">
                            <div class="card stats-card">
                                <div class="card-body">
                                    <div class="stats-icon"><i class="fas fa-arrow-circle-up"></i></div>
                                    <div class="stats-title">Ventas</div>
                                    <div class="stats-value"><?= nf0($stats['ventas']) ?></div>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-3 col-xl-2">
                            <div class="card stats-card">
                                <div class="card-body">
                                    <div class="stats-icon"><i class="fas fa-balance-scale"></i></div>
                                    <div class="stats-title">Saldo neto</div>
                                    <div class="stats-value"><?= nf0($stats['saldo']) ?></div>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-6 col-xl-2">
                            <div class="card stats-card">
                                <div class="card-body">
                                    <div class="stats-icon"><i class="fas fa-user"></i></div>
                                    <div class="stats-title"><?= $esTodo ? 'Clientes' : 'NIT' ?></div>
                                    <div class="stats-value" style="font-size:1rem;">
                                        <?= $esTodo ? nf0($stats['clientes']) : h($nit) ?>
                                    </div>
                                </div>
                            </div>
                        </div>

                        <div class="col-md-6 col-xl-2">
                            <div class="card stats-card">
                                <div class="card-body">
                                    <div class="stats-icon"><i class="fas fa-calendar-alt"></i></div>
                                    <div class="stats-title">Periodo</div>
                                    <div class="stats-value" style="font-size:1rem;">
                                        <?= h(formatDateEs($fecha_desde)) ?>
                                    </div>
                                    <div class="stats-note">hasta <?= h(formatDateEs($fecha_hasta)) ?></div>
                                </div>
                            </div>
                        </div>
                    </div>

                    <div class="card ref-card mb-3">
                        <div class="card-body">
                            <div class="report-head">
                                <div class="report-brand">
                                    <img src="../../img/logo.png" alt="Logo">
                                    <div class="report-meta">
                                        <h4>Kardex consolidado</h4>
                                        <p>
                                            <?= $esTodo ? 'Todos los clientes seleccionados' : h($nombre_tercero) ?>
                                        </p>
                                        <div class="report-badges">
                                            <span class="info-chip"><i class="fas fa-id-card"></i> NIT: <?= h($nit) ?></span>
                                            <span class="info-chip"><i class="fas fa-calendar"></i> <?= h(formatDateEs($fecha_desde)) ?> - <?= h(formatDateEs($fecha_hasta)) ?></span>
                                            <span class="info-chip"><i class="fas fa-file-alt"></i> <?= nf0($stats['referencias']) ?> referencias</span>
                                        </div>
                                    </div>
                                </div>

                                <div class="toolbar-actions d-print-none">
                                    <a href="javascript:window.print()" class="btn btn-outline-dark">
                                        <i class="fas fa-print me-1"></i> Imprimir
                                    </a>
                                </div>
                            </div>

                            <?php if ($sinResultados): ?>
                                <div class="empty-state">
                                    <i class="fas fa-inbox"></i>
                                    <h5>Sin movimientos en el periodo</h5>
                                    <p>No se encontraron pedidos o ventas para el filtro seleccionado.</p>
                                </div>
                            <?php else: ?>

                                <?php foreach ($referencias as $item): ?>
                                    <?php
                                    $producto = $item['producto'];
                                    $saldoClase = $item['saldo_total'] > 0 ? 'positivo' : ($item['saldo_total'] < 0 ? 'negativo' : 'cero');
                                    ?>
                                    <div class="card ref-card">
                                        <div class="card-body">
                                            <div class="ref-header">
                                                <div>
                                                    <h5 class="ref-title"><?= h($producto['referencia']) ?></h5>
                                                    <div class="ref-meta">
                                                        <span class="chip"><i class="fas fa-tag me-1"></i> <?= h($producto['categoria']) ?></span>
                                                        <span class="chip"><i class="fas fa-palette me-1"></i> <?= h($producto['color']) ?></span>
                                                        <span class="chip"><i class="fas fa-ruler-combined me-1"></i> <?= count($item['tallas']) ?> tallas</span>
                                                    </div>
                                                </div>

                                                <div class="saldo-chip <?= $saldoClase ?>">
                                                    SALDO<br><?= nf0($item['saldo_total']) ?>
                                                </div>
                                            </div>

                                            <div class="table-responsive">
                                                <table class="table table-modern align-middle">
                                                    <thead>
                                                        <tr>
                                                            <th>Fecha</th>
                                                            <?php if ($esTodo): ?>
                                                                <th>Cliente</th>
                                                            <?php endif; ?>
                                                            <th>Movimiento</th>
                                                            <th class="text-center">Número</th>
                                                            <?php foreach ($item['tallas'] as $talla): ?>
                                                                <th class="text-center"><?= h($talla) ?></th>
                                                            <?php endforeach; ?>
                                                            <th class="text-end">Total</th>
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                        <?php foreach ($item['movimientos'] as $mov): ?>
                                                            <tr>
                                                                <td><?= h(formatDateEs($mov['fecha'])) ?></td>

                                                                <?php if ($esTodo): ?>
                                                                    <td><?= h($mov['nombre_tercero']) ?></td>
                                                                <?php endif; ?>

                                                                <td>
                                                                    <div class="d-flex align-items-center gap-2">
                                                                        <span class="movement-type <?= strtolower($mov['tipo']) === 'pedido' ? 'pedido' : 'venta' ?>">
                                                                            <?= h($mov['tipo']) ?>
                                                                        </span>
                                                                        <span class="<?= estadoBadgeClass($mov['estado'], $mov['tipo']) ?>">
                                                                            <?= h($mov['estado']) ?>
                                                                        </span>
                                                                    </div>
                                                                </td>

                                                                <td class="text-center">
                                                                    <?php if ($mov['tipo'] === 'PEDIDO'): ?>
                                                                        <a class="link-doc text-warning"
                                                                            href="../pedido/pedido-detalle.php?id_pedido=<?= (int)$mov['id'] ?>"
                                                                            target="_blank">
                                                                            <?= h($mov['numero_documento']) ?>
                                                                        </a>
                                                                    <?php else: ?>
                                                                        <a class="link-doc text-info"
                                                                            href="../venta/venta-detalle.php?id_venta=<?= (int)$mov['id'] ?>"
                                                                            target="_blank">
                                                                            <?= h($mov['numero_documento']) ?>
                                                                        </a>
                                                                    <?php endif; ?>
                                                                </td>

                                                                <?php foreach ($item['tallas'] as $talla): ?>
                                                                    <?php
                                                                    $valor = $mov['cantidades'][$talla];
                                                                    $clase = 'qty-zero';
                                                                    $mostrar = '';

                                                                    if ($valor !== '' && $valor !== null) {
                                                                        if ((float)$valor > 0) {
                                                                            $clase = 'qty-pos';
                                                                            $mostrar = nf0($valor);
                                                                        } elseif ((float)$valor < 0) {
                                                                            $clase = 'qty-neg';
                                                                            $mostrar = nf0($valor);
                                                                        } else {
                                                                            $mostrar = '0';
                                                                        }
                                                                    }
                                                                    ?>
                                                                    <td class="text-center <?= $clase ?>">
                                                                        <?= $mostrar ?>
                                                                    </td>
                                                                <?php endforeach; ?>

                                                                <td class="text-end <?= ((float)$mov['total'] >= 0 ? 'qty-pos' : 'qty-neg') ?>">
                                                                    <?= nf0($mov['total']) ?>
                                                                </td>
                                                            </tr>
                                                        <?php endforeach; ?>
                                                    </tbody>
                                                    <tfoot>
                                                        <tr>
                                                            <th colspan="<?= $esTodo ? 4 : 3 ?>" class="text-end">Saldos</th>
                                                            <?php foreach ($item['tallas'] as $talla): ?>
                                                                <?php
                                                                $saldoTalla = (float)($item['saldos'][$talla] ?? 0);
                                                                $saldoClass = $saldoTalla > 0 ? 'qty-pos' : ($saldoTalla < 0 ? 'qty-neg' : 'qty-zero');
                                                                ?>
                                                                <th class="text-center <?= $saldoClass ?>"><?= nf0($saldoTalla) ?></th>
                                                            <?php endforeach; ?>
                                                            <th class="text-end <?= ($item['saldo_total'] >= 0 ? 'qty-pos' : 'qty-neg') ?>">
                                                                <?= nf0($item['saldo_total']) ?>
                                                            </th>
                                                        </tr>
                                                    </tfoot>
                                                </table>
                                            </div>
                                        </div>
                                    </div>
                                <?php endforeach; ?>

                            <?php endif; ?>
                        </div>
                    </div>
                <?php endif; ?>

            </div>
        </div>
    </div>

    <?php echo include '../general/libreria-js.php'; ?>

    <script>
        $(document).ready(function() {
            $('.single-select').select2({
                theme: 'bootstrap4',
                width: '100%'
            });
        });
    </script>
</body>

</html>