<?php
session_start();

if (!isset($_SESSION['usuario'])) {
    header("Location: st_acceso.php");
    exit;
}

ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once('st_conexion.php'); // debe definir $host, $db, $charset, $user, $pass

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (PDOException $e) {
    die("Error de conexión: " . $e->getMessage());
}

// timezone
date_default_timezone_set('America/Santiago');

// Fecha actual (para mostrar/guardar como FECHA_RECEPCION)
$fechaHoy = date("Y-m-d");

// Usuario conectado
$usuarioSis = $_SESSION['usuario'];

/* ============================
   Obtener nombre real del usuario
   ============================ */
$sqlUser = "SELECT NOMBRE, APELLIDO_PATERNO, ID_USUARIO 
            FROM HE_USUARIOS 
            WHERE USUARIO_SIS = :usr LIMIT 1";
$stmtUser = $pdo->prepare($sqlUser);
$stmtUser->execute([':usr' => $usuarioSis]);
$usr = $stmtUser->fetch();

$usuarioNombreMostrar = $usr
    ? ($usr['NOMBRE'] . ' ' . $usr['APELLIDO_PATERNO'])
    : $usuarioSis;

$usuarioId = $usr ? $usr['ID_USUARIO'] : null;

/* ============================
   Obtener lista de marcas
   Tabla HE_MARCA: ID_MARCA, NOMBRE_MARCA
   ============================ */
$stmtMarcas = $pdo->query("SELECT ID_MARCA, NOMBRE_MARCA FROM HE_MARCA ORDER BY NOMBRE_MARCA ASC");
$marcas = $stmtMarcas->fetchAll();

$messages = [];

/* ============================
   Procesamiento: recepcionar UNA línea (por formulario de la fila)
   Cada fila envía: action POST con:
    - accion = recepcionar_linea
    - id_dtl
    - nota_recepcion[id_dtl]
    - marca[CLAVE]
    - serie[CLAVE]
    - codigo_rf[CLAVE]
    - imagen[CLAVE] (file)
   ============================ */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['accion']) && $_POST['accion'] === 'recepcionar_linea') {
    // Esperado: id_dtl
    $id_dtl = isset($_POST['id_dtl']) ? (int)$_POST['id_dtl'] : 0;
    if ($id_dtl <= 0) {
        $messages[] = "ID de detalle inválido.";
    } else {
        try {
            $pdo->beginTransaction();

            // Obtener detalle con clave y id_arriendo
            $stmt = $pdo->prepare("SELECT ID, ID_ARRIENDO, CLAVE_MAESTRO, FECHA_RECEPCION FROM HE_ARRIENDO_DTL WHERE ID = :id LIMIT 1");
            $stmt->execute([':id' => $id_dtl]);
            $dtl = $stmt->fetch();
            if (!$dtl) throw new Exception("Detalle no encontrado (ID $id_dtl).");

            // Si ya tiene FECHA_RECEPCION, no permitir doble recepcion
            if (isset($dtl['FECHA_RECEPCION']) && trim($dtl['FECHA_RECEPCION']) !== '') {
                throw new Exception("La línea ya fue recepcionada anteriormente.");
            }

            $clave = $dtl['CLAVE_MAESTRO'];
            $id_hdr = (int)$dtl['ID_ARRIENDO'];

            // Nota de recepcion (campo libre)
            $nota_rec = isset($_POST['nota_recepcion'][$id_dtl]) ? trim($_POST['nota_recepcion'][$id_dtl]) : null;

            // Procesar imagen subida para la clave (input file name="imagen[CLAVE]")
            $imagen_nombre = null;
            if (isset($_FILES['imagen']) && isset($_FILES['imagen']['name'][$clave]) && $_FILES['imagen']['name'][$clave] !== '') {
                $err = $_FILES['imagen']['error'][$clave];
                if ($err === UPLOAD_ERR_OK) {
                    $tmp = $_FILES['imagen']['tmp_name'][$clave];
                    $orig = basename($_FILES['imagen']['name'][$clave]);
                    $ext = pathinfo($orig, PATHINFO_EXTENSION);
                    $safe = preg_replace('/[^A-Za-z0-9_\-\.]/', '_', $clave . '_' . time() . '.' . $ext);
                    $dir = __DIR__ . '/imagenes';
                    if (!is_dir($dir)) {
                        if (!mkdir($dir, 0755, true)) {
                            throw new Exception("No se pudo crear carpeta de imágenes ($dir).");
                        }
                    }
                    $dest = $dir . '/' . $safe;
                    if (!move_uploaded_file($tmp, $dest)) {
                        throw new Exception("No se pudo mover el archivo subido para la clave $clave.");
                    }
                    $imagen_nombre = $safe;
                } else {
                    throw new Exception("Error en subida de imagen (código $err).");
                }
            }

            // Actualizar HE_ARRIENDO_DTL: FECHA_RECEPCION y NOTA_RECEPCION
            $updDtl = $pdo->prepare("UPDATE HE_ARRIENDO_DTL SET FECHA_RECEPCION = :fr, NOTA_RECEPCION = :nr WHERE ID = :id");
            $updDtl->execute([':fr' => $fechaHoy, ':nr' => $nota_rec, ':id' => $id_dtl]);

            // Actualizar HE_MAESTRO con campos entregados en el formulario de la fila
            // Inputs: marca[CLAVE], serie[CLAVE], codigo_rf[CLAVE]
            $id_marca = (isset($_POST['marca'][$clave]) && $_POST['marca'][$clave] !== '') ? (int)$_POST['marca'][$clave] : null;
            $serie = isset($_POST['serie'][$clave]) ? trim($_POST['serie'][$clave]) : null;
            $codigo_rf = isset($_POST['codigo_rf'][$clave]) ? trim($_POST['codigo_rf'][$clave]) : null;

            // Construir update dinámico
            $fields = [];
            $params = [':clave' => $clave];
            if ($id_marca !== null) { $fields[] = "ID_MARCA = :id_marca"; $params[':id_marca'] = $id_marca; }
            if ($serie !== null)     { $fields[] = "SERIE = :serie"; $params[':serie'] = $serie; }
            if ($codigo_rf !== null) { $fields[] = "CODIGO_RF = :codigo_rf"; $params[':codigo_rf'] = $codigo_rf; }
            if ($imagen_nombre !== null) { $fields[] = "IMAGEN = :imagen"; $params[':imagen'] = $imagen_nombre; }

            // Forzar ESTADO_INV = 8
            $fields[] = "ESTADO_INV = :estado_inv";
            $params[':estado_inv'] = 8;

            if (count($fields) > 0) {
                $sqlUpd = "UPDATE HE_MAESTRO SET " . implode(", ", $fields) . " WHERE CLAVE = :clave";
                $stmtUpd = $pdo->prepare($sqlUpd);
                $stmtUpd->execute($params);
            }

            // Después de actualizar esta línea, verificar si todas las líneas del arriendo están recepcionadas
            $chk = $pdo->prepare("SELECT COUNT(*) AS pendientes FROM HE_ARRIENDO_DTL WHERE ID_ARRIENDO = :id_hdr AND (FECHA_RECEPCION IS NULL OR TRIM(FECHA_RECEPCION) = '')");
            $chk->execute([':id_hdr' => $id_hdr]);
            $res = $chk->fetch();
            $pendientes = $res ? (int)$res['pendientes'] : 0;

            if ($pendientes === 0) {
                // Marcar encabezado como recepcionado (ESTADO = 1)
                $uHdr = $pdo->prepare("UPDATE HE_ARRIENDO_HDR SET ESTADO = 1 WHERE ID = :id_hdr");
                $uHdr->execute([':id_hdr' => $id_hdr]);
            }

            $pdo->commit();

            // Mensaje y redirección para evitar re-envío de formulario
            $_SESSION['msg_success'] = "Línea ID $id_dtl recepcionada correctamente.";
            header("Location: " . $_SERVER['PHP_SELF']);
            exit;

        } catch (Exception $e) {
            $pdo->rollBack();
            $messages[] = "Error al recepcionar línea: " . $e->getMessage();
        }
    }
}

/* ============================
   Obtener arriendos pendientes (ESTADO = 0)
   ============================ */
$sth = $pdo->query("SELECT ID, OC, PROVEEDOR_RUT, ID_USUARIO_SOLICITA, ID_USUARIO_RECIBE, NOTA, ESTADO, COSTO_TOTAL_CONTRATO, COSTO_TOTAL_FINAL
                    FROM HE_ARRIENDO_HDR
                    WHERE COALESCE(ESTADO,0) = 0
                    ORDER BY ID DESC");
$arriendos = $sth->fetchAll();

// Mensajes flash
if (isset($_SESSION['msg_success'])) {
    $messages[] = $_SESSION['msg_success'];
    unset($_SESSION['msg_success']);
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Recepción Arriendos</title>
    <link rel="icon" href="Iconos/rf_icono_vineta.png" type="image/x-icon">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

<style>
* { margin: 0; padding: 0; box-sizing: border-box; }

body {
    font-family: 'Helvetica', sans-serif;
    background-color: #f3f4f8;
    color: #333;
}

/* Campo informativo */
.info-field {
    background: #eef3ff;
    color: #003a91;
    font-weight: bold;
    padding: 6px 10px;
    border-radius: 6px;
    border: 1px solid #8aa8e6;
    display: inline-block;
}

/* TOPBAR (igual al ejemplo) */
.topbar {
    width: 100%;
    background-color: #1D3C7D;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px 30px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    position: fixed;
    top: 0;
    z-index: 1000;
    height: 50px;
}
.topbar .title { position: absolute; left: 20px; font-size: 20px; }
.topbar .logout { position: absolute; right: 20px; }
.topbar .logout button {
    display: flex; align-items: center; gap: 6px;
    background: #bd0909; color: white;
    border: none; padding: 6px 14px; border-radius: 6px;
    font-size: 13px; cursor: pointer;
}
.topbar .logout button:hover { background-color: red; }
.topbar .logout img { width: 30px; height: 30px; }

/* Containers */
.container{ max-width:1200px; margin:100px auto 40px; }
.card{
    background:#fff; padding:18px;
    border-radius:10px;
    box-shadow:0 6px 12px rgba(0,0,0,0.12);
    margin-bottom:18px;
}

/* Table */
table{ width:100%; border-collapse:collapse; }
th,td{ padding:8px; border:1px solid #ddd; font-size:13px; vertical-align: top; }
th{ background:#0c4896; color:#fff; }

/* Inputs */
select,input,textarea{
    padding:7px; border:1px solid #bbb;
    border-radius:6px; width:100%; font-size:13px;
}
input[readonly], textarea[readonly] { background:#f5f5f5; }

/* Botones */
.btn{
    background:green; color:white; border:none;
    padding:8px 12px; border-radius:6px; cursor:pointer;
}
.btn-red{
    background:#b71c1c; color:white; border:none;
    padding:8px 12px; border-radius:6px; cursor:pointer;
}

/* Accordion */
.accordion-item { margin-bottom:10px; border:1px solid #e0e6f0; border-radius:8px; overflow:hidden; }
.acc-header { background:#f7f9ff; padding:12px 16px; display:flex; justify-content:space-between; align-items:center; cursor:pointer; }
.acc-body { display:none; padding:12px 16px; background:white; }

/* small */
.small { font-size:12px; color:#555; }
.note { background:#fff7e6; padding:8px; border-radius:6px; border:1px solid #ffe1a8; }

/* File input */
.file-input { padding:6px 0; }
.msg { margin-bottom:10px; padding:8px; border-radius:6px; }
.msg-success { background:#e6ffef; border:1px solid #b7f0c9; color:#11633a; }
.msg-error { background:#ffe9e9; border:1px solid #f2b3b3; color:#7a1b1b; }

.disabled-row { opacity: 0.6; }
</style>
</head>
<body>

<div class="topbar">
    <div class="title">StockTools - Recepción Arriendos</div>

    <div class="user-info">
        Bienvenido, <?= htmlspecialchars($usuarioNombreMostrar) ?>
    </div>

    <div class="logout">
        <button onclick="location.href='st_logout.php'">
            <img src="Iconos/st_icono_salir.png"> Cerrar Sesión
        </button>
    </div>
</div>

<div class="container">

    <?php foreach($messages as $m): ?>
        <div class="msg msg-success"><?= htmlspecialchars($m) ?></div>
    <?php endforeach; ?>

    <div class="card">
        <h3>Arriendos Pendientes de Recepción</h3>
        <?php if (empty($arriendos)): ?>
            <div class="note">No hay arriendos pendientes (ESTADO = 0).</div>
        <?php else: ?>

            <?php foreach($arriendos as $hdr):
                $hdrId = (int)$hdr['ID'];
                // obtener detalles del arriendo
                $sthDtl = $pdo->prepare("SELECT * FROM HE_ARRIENDO_DTL WHERE ID_ARRIENDO = :id ORDER BY ID ASC");
                $sthDtl->execute([':id' => $hdrId]);
                $detalles = $sthDtl->fetchAll();
            ?>
                <div class="accordion-item">
                    <div class="acc-header" data-target="acc-<?= $hdrId ?>">
                        <div>
                            <strong>OC:</strong> <?= htmlspecialchars($hdr['OC']) ?> &nbsp;
                            <span class="small">| ID: <?= $hdrId ?> | Proveedor: <?= htmlspecialchars($hdr['PROVEEDOR_RUT']) ?></span>
                        </div>
                        <div>
                            <button type="button" class="btn" onclick="toggleAcc(<?= $hdrId ?>)">Ver Detalle</button>
                            &nbsp;
                            <button type="button" class="btn-red" onclick="confirmVolver()">Volver</button>
                        </div>
                    </div>

                    <div id="acc-<?= $hdrId ?>" class="acc-body">
                        <table>
                            <thead>
                                <tr>
                                    <th style="width:30%;">Herramienta (CLAVE / Nombre)</th>
                                    <th style="width:20%;">Fechas</th>
                                    <th style="width:30%;">Datos Maestro (editar)</th>
                                    <th style="width:20%;">Acción</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php if (empty($detalles)): ?>
                                    <tr><td colspan="4">No hay detalles asociados.</td></tr>
                                <?php else: ?>
                                    <?php foreach($detalles as $d):
                                        $dtlId = (int)$d['ID'];
                                        $clave = $d['CLAVE_MAESTRO'];
                                        // obtener maestro
                                        $sM = $pdo->prepare("SELECT CLAVE, NOMBRE, COALESCE(DESCRIPCION,'') AS DESCRIPCION, COALESCE(ID_MARCA,'') AS ID_MARCA, COALESCE(SERIE,'') AS SERIE, COALESCE(CODIGO_RF,'') AS CODIGO_RF, COALESCE(IMAGEN,'') AS IMAGEN FROM HE_MAESTRO WHERE CLAVE = :clave LIMIT 1");
                                        $sM->execute([':clave' => $clave]);
                                        $mae = $sM->fetch();

                                        $yaRecepcionado = isset($d['FECHA_RECEPCION']) && trim($d['FECHA_RECEPCION']) !== '';
                                    ?>
                                        <tr class="<?= $yaRecepcionado ? 'disabled-row' : '' ?>">
                                            <td>
                                                <strong><?= htmlspecialchars($clave) ?></strong><br>
                                                <?= htmlspecialchars($mae ? $mae['NOMBRE'] : '(sin maestro)') ?><br>
                                                <span class="small"><?= htmlspecialchars($mae ? $mae['DESCRIPCION'] : '') ?></span>
                                                <input type="hidden" name="detalle_clave_<?= $dtlId ?>" value="<?= htmlspecialchars($clave) ?>">
                                            </td>

                                            <td>
                                                <div><strong>Entrega:</strong><br><?= htmlspecialchars($d['FECHA_ENTREGA']) ?></div>
                                                <div style="margin-top:6px;"><strong>Recepción (hoy):</strong><br>
                                                    <?php if ($yaRecepcionado): ?>
                                                        <input type="text" readonly value="<?= htmlspecialchars($d['FECHA_RECEPCION']) ?>" class="info-field" style="width:120px;">
                                                    <?php else: ?>
                                                        <input type="text" readonly value="<?= $fechaHoy ?>" class="info-field" style="width:120px;">
                                                    <?php endif; ?>
                                                </div>

                                                <div style="margin-top:6px;">
                                                    <label class="small"><strong>Nota recepción</strong></label>
                                                    <?php if ($yaRecepcionado): ?>
                                                        <textarea rows="2" readonly><?= htmlspecialchars($d['NOTA_RECEPCION'] ?? '') ?></textarea>
                                                    <?php else: ?>
                                                        <form method="POST" action="" enctype="multipart/form-data" id="form_line_<?= $dtlId ?>">
                                                            <input type="hidden" name="accion" value="recepcionar_linea">
                                                            <input type="hidden" name="id_dtl" value="<?= $dtlId ?>">
                                                            <textarea name="nota_recepcion[<?= $dtlId ?>]" rows="2"><?= htmlspecialchars($d['NOTA_RECEPCION'] ?? '') ?></textarea>
                                                    <?php endif; ?>
                                                </div>
                                            </td>

                                            <td>
                                                <?php if ($yaRecepcionado): ?>
                                                    <label class="small"><strong>Marca</strong></label>
                                                    <input type="text" readonly value="<?= htmlspecialchars($mae ? ($mae['ID_MARCA'] ?: '') : '') ?>">
                                                    <div style="margin-top:6px;">
                                                        <label class="small"><strong>Serie</strong></label>
                                                        <input type="text" readonly value="<?= htmlspecialchars($mae ? $mae['SERIE'] : '') ?>">
                                                    </div>
                                                    <div style="margin-top:6px;">
                                                        <label class="small"><strong>Código RF</strong></label>
                                                        <input type="text" readonly value="<?= htmlspecialchars($mae ? $mae['CODIGO_RF'] : '') ?>">
                                                    </div>
                                                    <?php if ($mae && $mae['IMAGEN']): ?>
                                                        <div style="margin-top:6px;">
                                                            <label class="small"><strong>Imagen</strong></label>
                                                            <div class="small"><?= htmlspecialchars($mae['IMAGEN']) ?></div>
                                                        </div>
                                                    <?php endif; ?>
                                                <?php else: ?>
                                                    <label class="small"><strong>Marca</strong></label>
                                                    <select name="marca[<?= htmlspecialchars($clave) ?>]">
                                                        <option value="">-- Seleccione Marca --</option>
                                                        <?php foreach($marcas as $m): ?>
                                                            <option value="<?= $m['ID_MARCA'] ?>" <?= ($mae && $mae['ID_MARCA'] == $m['ID_MARCA']) ? 'selected' : '' ?>>
                                                                <?= htmlspecialchars($m['NOMBRE_MARCA']) ?>
                                                            </option>
                                                        <?php endforeach; ?>
                                                    </select>

                                                    <div style="margin-top:8px;">
                                                        <label class="small"><strong>Serie</strong></label>
                                                        <input type="text" name="serie[<?= htmlspecialchars($clave) ?>]" value="<?= htmlspecialchars($mae ? $mae['SERIE'] : '') ?>">
                                                    </div>

                                                    <div style="margin-top:8px;">
                                                        <label class="small"><strong>Código RF</strong></label>
                                                        <input type="text" name="codigo_rf[<?= htmlspecialchars($clave) ?>]" value="<?= htmlspecialchars($mae ? $mae['CODIGO_RF'] : '') ?>">
                                                    </div>

                                                    <div style="margin-top:8px;">
                                                        <label class="small"><strong>Imagen (opcional)</strong></label>
                                                        <div class="file-input">
                                                            <input type="file" name="imagen[<?= htmlspecialchars($clave) ?>]" accept="image/*">
                                                        </div>
                                                        <?php if ($mae && $mae['IMAGEN']): ?>
                                                            <div class="small">Imagen actual: <?= htmlspecialchars($mae['IMAGEN']) ?></div>
                                                        <?php endif; ?>
                                                    </div>
                                                <?php endif; ?>
                                            </td>

                                            <td style="text-align:center;">
                                                <?php if ($yaRecepcionado): ?>
                                                    <div class="small">Recepcionada</div>
                                                <?php else: ?>
                                                    <div style="margin-bottom:8px;">
                                                        <button type="submit" class="btn">Recepcionar línea</button>
                                                    </div>
                                                    <div style="font-size:12px; color:#666;">Se actualizará HE_MAESTRO y ESTADO_INV=8</div>
                                                    </form> <!-- cierra form_line -->
                                                <?php endif; ?>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                <?php endif; ?>
                            </tbody>
                        </table>

                        <div style="margin-top:12px;">
                            <div class="small">Nota arriendo: <?= htmlspecialchars($hdr['NOTA'] ?? '') ?></div>
                        </div>

                    </div> <!-- acc body -->
                </div> <!-- accordion item -->

            <?php endforeach; ?>

        <?php endif; ?>
    </div>

</div>

<script>
function toggleAcc(id){
    var el = document.getElementById('acc-' + id);
    if (!el) return;
    el.style.display = (el.style.display === 'block') ? 'none' : 'block';
}

function confirmVolver(){
    if (confirm("¿Seguro?")) {
        window.location.href = "st_menuppl.php";
    }
}
</script>

</body>
</html>
