diff --git a/assets/uploads/vouchers/6a01e367e6894-Screenshot_317.png b/assets/uploads/vouchers/6a01e367e6894-Screenshot_317.png new file mode 100644 index 00000000..cb044a08 Binary files /dev/null and b/assets/uploads/vouchers/6a01e367e6894-Screenshot_317.png differ diff --git a/assets/uploads/vouchers/6a01e8201d446-Captura de pantalla 2026-05-11 093021.png b/assets/uploads/vouchers/6a01e8201d446-Captura de pantalla 2026-05-11 093021.png new file mode 100644 index 00000000..d7642e39 Binary files /dev/null and b/assets/uploads/vouchers/6a01e8201d446-Captura de pantalla 2026-05-11 093021.png differ diff --git a/assets/uploads/vouchers/6a0203449478a-Screenshot_318.png b/assets/uploads/vouchers/6a0203449478a-Screenshot_318.png new file mode 100644 index 00000000..624da645 Binary files /dev/null and b/assets/uploads/vouchers/6a0203449478a-Screenshot_318.png differ diff --git a/assets/uploads/vouchers/6a020419908fd-Screenshot_319.png b/assets/uploads/vouchers/6a020419908fd-Screenshot_319.png new file mode 100644 index 00000000..da53d50c Binary files /dev/null and b/assets/uploads/vouchers/6a020419908fd-Screenshot_319.png differ diff --git a/assets/uploads/vouchers/6a020b52cf146-Captura de pantalla 2026-05-11 115938.png b/assets/uploads/vouchers/6a020b52cf146-Captura de pantalla 2026-05-11 115938.png new file mode 100644 index 00000000..6eb52fd5 Binary files /dev/null and b/assets/uploads/vouchers/6a020b52cf146-Captura de pantalla 2026-05-11 115938.png differ diff --git a/assets/uploads/vouchers/6a0225938fe98-Screenshot_320.png b/assets/uploads/vouchers/6a0225938fe98-Screenshot_320.png new file mode 100644 index 00000000..f2d7ca31 Binary files /dev/null and b/assets/uploads/vouchers/6a0225938fe98-Screenshot_320.png differ diff --git a/assets/uploads/vouchers/6a024db09d697-Screenshot_321.png b/assets/uploads/vouchers/6a024db09d697-Screenshot_321.png new file mode 100644 index 00000000..e4199dcc Binary files /dev/null and b/assets/uploads/vouchers/6a024db09d697-Screenshot_321.png differ diff --git a/assets/uploads/vouchers/6a025c7460a90-Screenshot_322.png b/assets/uploads/vouchers/6a025c7460a90-Screenshot_322.png new file mode 100644 index 00000000..4e0b714f Binary files /dev/null and b/assets/uploads/vouchers/6a025c7460a90-Screenshot_322.png differ diff --git a/db/migrations/032_create_user_sessions_table.sql b/db/migrations/032_create_user_sessions_table.sql new file mode 100644 index 00000000..796f1ae3 --- /dev/null +++ b/db/migrations/032_create_user_sessions_table.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS user_sessions ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + ip_address VARCHAR(45), + user_agent TEXT, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE +); diff --git a/db/migrations/033_add_city_to_user_sessions.sql b/db/migrations/033_add_city_to_user_sessions.sql new file mode 100644 index 00000000..2371ac44 --- /dev/null +++ b/db/migrations/033_add_city_to_user_sessions.sql @@ -0,0 +1 @@ +ALTER TABLE user_sessions ADD COLUMN ciudad VARCHAR(100) AFTER ip_address; diff --git a/ingreso_mercaderia.php b/ingreso_mercaderia.php index 1166cd6a..82631f3d 100644 --- a/ingreso_mercaderia.php +++ b/ingreso_mercaderia.php @@ -65,7 +65,9 @@ $ingresos = $stmt->fetchAll(PDO::FETCH_ASSOC); elseif ($porcentaje > 0) $barColor = 'bg-primary'; ?>
No se pudo encontrar la guía.
`; } @@ -614,14 +614,8 @@ document.addEventListener('DOMContentLoaded', function() { } }); -function copyStatusToClipboard(status, order, destination) { - const text = `📦 *Estado de tu pedido Shalom*\n\n` + - `🔖 *Nro de Orden:* ${order}\n` + - `📍 *Destino:* ${destination}\n` + - `🚚 *Estado:* ${status}\n\n` + - `¡Tu pedido está en camino! Gracias por tu confianza. ✨`; - - navigator.clipboard.writeText(text).then(() => { +function copyStatusToClipboard(message) { + navigator.clipboard.writeText(message).then(() => { alert('Resumen copiado al portapapeles. Ya puedes pegarlo en WhatsApp.'); }).catch(err => { console.error('Error al copiar:', err); diff --git a/sesiones_iniciadas.php b/sesiones_iniciadas.php new file mode 100644 index 00000000..dc981ad5 --- /dev/null +++ b/sesiones_iniciadas.php @@ -0,0 +1,86 @@ +query(" + SELECT s.*, u.username, u.nombre_asesor + FROM user_sessions s + JOIN users u ON s.user_id = u.id + ORDER BY s.login_time DESC + LIMIT 500 +"); +$sessions = $stmt->fetchAll(PDO::FETCH_ASSOC); + +include 'layout_header.php'; +?> + +| Usuario | +Nombre/Asesor | +Fecha y Hora | +Dirección IP | +Ciudad | +Navegador / Dispositivo | +
|---|---|---|---|---|---|
| + | + | + | + | + | + |
| No hay registros de sesiones aún. | +|||||