Tul xxx Tul
User / IP
:
216.73.216.159
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
vendefacil2
/
models
/
Viewing: AdminModel.php
<?php class AdminModel extends Query{ public function __construct() { parent::__construct(); } public function getDatos($table) { $sql = "SELECT * FROM $table"; return $this->select($sql); } public function getCompraVenta($table, $id_sucursal) { $sql = "SELECT COUNT(id) AS total FROM $table WHERE estado = 1 AND id_sucursal = $id_sucursal"; return $this->select($sql); } public function getTotales($table, $id_sucursal) { $sql = "SELECT COUNT(*) AS total FROM $table WHERE estado = 1 AND id_sucursal = $id_sucursal"; return $this->select($sql); } public function getTotalesDatos($table) { $sql = "SELECT COUNT(*) AS total FROM $table WHERE estado = 1"; return $this->select($sql); } public function calcularVentas($table, $desde, $hasta, $id_sucursal) { $sql = "SELECT SUM(IF(MONTH(fecha) = 1, totalConImpuesto, 0)) AS ene, SUM(IF(MONTH(fecha) = 2, totalConImpuesto, 0)) AS feb, SUM(IF(MONTH(fecha) = 3, totalConImpuesto, 0)) AS mar, SUM(IF(MONTH(fecha) = 4, totalConImpuesto, 0)) AS abr, SUM(IF(MONTH(fecha) = 5, totalConImpuesto, 0)) AS may, SUM(IF(MONTH(fecha) = 6, totalConImpuesto, 0)) AS jun, SUM(IF(MONTH(fecha) = 7, totalConImpuesto, 0)) AS jul, SUM(IF(MONTH(fecha) = 8, totalConImpuesto, 0)) AS ago, SUM(IF(MONTH(fecha) = 9, totalConImpuesto, 0)) AS sep, SUM(IF(MONTH(fecha) = 10, totalConImpuesto, 0)) AS oct, SUM(IF(MONTH(fecha) = 11, totalConImpuesto, 0)) AS nov, SUM(IF(MONTH(fecha) = 12, totalConImpuesto, 0)) AS dic FROM $table WHERE fecha BETWEEN '$desde' AND '$hasta' AND estado = 1 AND id_sucursal = $id_sucursal"; return $this->select($sql); } public function calcularCompras($table, $desde, $hasta, $id_sucursal) { $sql = "SELECT SUM(IF(MONTH(fecha) = 1, total, 0)) AS ene, SUM(IF(MONTH(fecha) = 2, total, 0)) AS feb, SUM(IF(MONTH(fecha) = 3, total, 0)) AS mar, SUM(IF(MONTH(fecha) = 4, total, 0)) AS abr, SUM(IF(MONTH(fecha) = 5, total, 0)) AS may, SUM(IF(MONTH(fecha) = 6, total, 0)) AS jun, SUM(IF(MONTH(fecha) = 7, total, 0)) AS jul, SUM(IF(MONTH(fecha) = 8, total, 0)) AS ago, SUM(IF(MONTH(fecha) = 9, total, 0)) AS sep, SUM(IF(MONTH(fecha) = 10, total, 0)) AS oct, SUM(IF(MONTH(fecha) = 11, total, 0)) AS nov, SUM(IF(MONTH(fecha) = 12, total, 0)) AS dic FROM $table WHERE fecha BETWEEN '$desde' AND '$hasta' AND estado = 1 AND id_sucursal = $id_sucursal"; return $this->select($sql); } public function totalVentasCompras($table, $desde, $hasta, $id_sucursal) { $sql = "SELECT COUNT(id) AS total FROM $table WHERE fecha BETWEEN '$desde' AND '$hasta' AND estado = 1 AND id_sucursal = $id_sucursal"; return $this->select($sql); } public function topProductos($cantidad, $id_sucursal) { $sql = "SELECT p.*, c.categoria FROM productos p INNER JOIN categorias c ON p.id_categoria = c.id WHERE p.id_sucursal = $id_sucursal ORDER BY p.ventas DESC LIMIT $cantidad"; return $this->selectAll($sql); } public function nuevosProductos($cantidad, $id_sucursal) { $sql = "SELECT p.*, c.categoria FROM productos p INNER JOIN categorias c ON p.id_categoria = c.id WHERE p.id_sucursal = $id_sucursal ORDER BY p.id DESC LIMIT $cantidad"; return $this->selectAll($sql); } public function garantiasProximasVencer($id_sucursal, $dias = 30, $limite = 20) { $id_sucursal = (int)$id_sucursal; $dias = max(1, (int)$dias); $limite = max(1, (int)$limite); $sql = "SELECT v.id, v.serie, v.fecha, v.hora, v.productos, c.nombre AS cliente FROM ventas v LEFT JOIN clientes c ON v.id_cliente = c.id WHERE v.estado = 1 AND v.id_sucursal = $id_sucursal AND v.productos LIKE '%garantia_fin%' ORDER BY v.fecha DESC, v.hora DESC"; $ventas = $this->selectAll($sql); $hoy = (new DateTimeImmutable('today'))->setTime(0, 0, 0); $items = []; foreach ($ventas as $venta) { $productos = json_decode($venta['productos'] ?? '', true); if (!is_array($productos)) { continue; } foreach ($productos as $producto) { if (empty($producto['garantia_fin'])) { continue; } try { $fechaFin = (new DateTimeImmutable($producto['garantia_fin']))->setTime(0, 0, 0); } catch (Exception $e) { continue; } $diasRestantes = (int)$hoy->diff($fechaFin)->format('%r%a'); if ($diasRestantes < 0 || $diasRestantes > $dias) { continue; } $items[] = [ 'id_venta' => $venta['id'], 'serie' => $venta['serie'], 'fecha_venta' => $venta['fecha'], 'hora_venta' => $venta['hora'], 'cliente' => !empty($venta['cliente']) ? $venta['cliente'] : 'Consumidor final', 'producto' => $producto['nombre'] ?? 'Producto sin nombre', 'cantidad' => $producto['cantidad'] ?? 1, 'garantia_inicio' => $producto['garantia_inicio'] ?? null, 'garantia_fin' => $fechaFin->format('Y-m-d'), 'dias_restantes' => $diasRestantes ]; } } usort($items, function ($a, $b) { if ($a['dias_restantes'] === $b['dias_restantes']) { return strcmp($a['producto'], $b['producto']); } return $a['dias_restantes'] <=> $b['dias_restantes']; }); return array_slice($items, 0, $limite); } private function asegurarFechaVencimientoProducto() { $row = $this->select("SHOW COLUMNS FROM productos LIKE 'fecha_vencimiento'"); if (empty($row)) { $this->save("ALTER TABLE productos ADD COLUMN fecha_vencimiento DATE DEFAULT NULL AFTER garantia_tipo", []); } } private function asegurarLotesVencimientoProducto() { $this->save("CREATE TABLE IF NOT EXISTS producto_lotes_vencimiento ( id int(11) NOT NULL AUTO_INCREMENT, id_producto int(11) NOT NULL, id_sucursal int(11) NOT NULL, fecha_vencimiento date NOT NULL, cantidad decimal(10,2) NOT NULL DEFAULT 0.00, estado int(11) NOT NULL DEFAULT 1, fecha timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (id), UNIQUE KEY uq_producto_sucursal_vencimiento (id_producto, id_sucursal, fecha_vencimiento), KEY idx_producto_lotes_producto (id_producto), KEY idx_producto_lotes_sucursal (id_sucursal), KEY idx_producto_lotes_fecha (fecha_vencimiento) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci", []); $this->save("INSERT INTO producto_lotes_vencimiento (id_producto, id_sucursal, fecha_vencimiento, cantidad) SELECT p.id, p.id_sucursal, p.fecha_vencimiento, p.cantidad FROM productos p WHERE p.servicio = 0 AND p.cantidad > 0 AND p.fecha_vencimiento IS NOT NULL AND p.fecha_vencimiento <> '0000-00-00' AND NOT EXISTS ( SELECT 1 FROM producto_lotes_vencimiento pl WHERE pl.id_producto = p.id AND pl.id_sucursal = p.id_sucursal )", []); } public function productosProximosVencer($id_sucursal, $dias = 30, $limite = 20) { $this->asegurarFechaVencimientoProducto(); $this->asegurarLotesVencimientoProducto(); $id_sucursal = (int)$id_sucursal; $dias = max(1, (int)$dias); $limite = max(1, (int)$limite); $hoy = (new DateTimeImmutable('today'))->setTime(0, 0, 0); $hasta = $hoy->modify('+' . $dias . ' days')->format('Y-m-d'); $sql = "SELECT p.id, p.codigo, p.descripcion AS producto, pl.cantidad, pl.fecha_vencimiento, c.categoria, mar.marca FROM producto_lotes_vencimiento pl INNER JOIN productos p ON pl.id_producto = p.id INNER JOIN categorias c ON p.id_categoria = c.id INNER JOIN marcas mar ON p.id_marca = mar.id WHERE p.estado = 1 AND p.servicio = 0 AND pl.estado = 1 AND pl.cantidad > 0 AND pl.id_sucursal = $id_sucursal AND pl.fecha_vencimiento BETWEEN '" . $hoy->format('Y-m-d') . "' AND '$hasta' ORDER BY pl.fecha_vencimiento ASC, p.descripcion ASC LIMIT $limite"; $productos = $this->selectAll($sql); if (!is_array($productos)) { return []; } $items = []; foreach ($productos as $producto) { try { $fechaVencimiento = (new DateTimeImmutable($producto['fecha_vencimiento']))->setTime(0, 0, 0); } catch (Exception $e) { continue; } $items[] = [ 'id' => $producto['id'], 'codigo' => $producto['codigo'] ?? '', 'producto' => $producto['producto'] ?? 'Producto sin nombre', 'cantidad' => $producto['cantidad'] ?? 0, 'categoria' => $producto['categoria'] ?? 'N/A', 'marca' => $producto['marca'] ?? 'N/A', 'fecha_vencimiento' => $fechaVencimiento->format('Y-m-d'), 'dias_restantes' => (int)$hoy->diff($fechaVencimiento)->format('%r%a') ]; } return $items; } public function calcularGatos($desde, $hasta, $id_sucursal) { $sql = "SELECT SUM(IF(MONTH(fecha) = 1, monto, 0)) AS ene, SUM(IF(MONTH(fecha) = 2, monto, 0)) AS feb, SUM(IF(MONTH(fecha) = 3, monto, 0)) AS mar, SUM(IF(MONTH(fecha) = 4, monto, 0)) AS abr, SUM(IF(MONTH(fecha) = 5, monto, 0)) AS may, SUM(IF(MONTH(fecha) = 6, monto, 0)) AS jun, SUM(IF(MONTH(fecha) = 7, monto, 0)) AS jul, SUM(IF(MONTH(fecha) = 8, monto, 0)) AS ago, SUM(IF(MONTH(fecha) = 9, monto, 0)) AS sep, SUM(IF(MONTH(fecha) = 10, monto, 0)) AS oct, SUM(IF(MONTH(fecha) = 11, monto, 0)) AS nov, SUM(IF(MONTH(fecha) = 12, monto, 0)) AS dic FROM gastos WHERE fecha BETWEEN '$desde' AND '$hasta' AND id_sucursal = $id_sucursal"; return $this->select($sql); } public function minimosProductos($id_sucursal) { $sql = "SELECT descripcion, cantidad FROM productos WHERE cantidad < 15 AND servicio = 0 AND id_sucursal = $id_sucursal LIMIT 4"; return $this->selectAll($sql); } //reporte pdf public function minimosProductosPDF($id_sucursal) { $sql = "SELECT p.*, c.categoria FROM productos p INNER JOIN categorias c ON p.id_categoria = c.id WHERE p.cantidad < 15 AND p.servicio = 0 AND p.id_sucursal = $id_sucursal"; return $this->selectAll($sql); } public function getEmpresa($id_sucursal) { $sql = "SELECT * FROM sucursales WHERE id = $id_sucursal"; return $this->select($sql); } public function listarLogs() { $sql = "SELECT * FROM acceso"; return $this->selectAll($sql); } public function limpiraDatos() { $sql = "TRUNCATE acceso"; return $this->select($sql); } // BACKUP public function getTables() { return $this->selectColum("SHOW TABLES"); } public function getTableStructure($table) { $tableData = $this->select("SHOW CREATE TABLE $table"); return $tableData['Create Table']; } public function getTableData($table) { return $this->selectAll("SELECT * FROM $table"); } public function quoteValue($value) { return $this->quoteValueQuery($value); } } ?>
Coded With 💗 by
0x6ick