Herramientas Informaticas

Categoría: JCPOS 2021 Página 1 de 3

CI 4.0 JCPOS Punto de Venta En CodeIgniter4 Introducción #1

JCPOS es un sistema de punto de venta (POS) de código abierto desarrollado en PHP. Recientemente, JCPOS se ha migrado a CodeIgniter 4, lo que ha mejorado significativamente su rendimiento y escalabilidad. En este artículo, exploraremos los detalles de la migración de JCPOS a CodeIgniter 4 y sus beneficios.

Antes de profundizar en la migración de JCPOS a CodeIgniter 4, es importante comprender qué es CodeIgniter y por qué es una opción popular para desarrolladores de PHP.

CodeIgniter es un framework PHP de código abierto que se utiliza para desarrollar aplicaciones web dinámicas y sitios web. Es popular debido a su facilidad de uso, velocidad y seguridad. Además, CodeIgniter tiene una gran comunidad de desarrolladores que proporciona soporte y actualizaciones regulares.

La migración de JCPOS a CodeIgniter 4 implica actualizar el código de JCPOS para que sea compatible con la última versión del framework. CodeIgniter 4 presenta varias mejoras y cambios significativos en comparación con su versión anterior, CodeIgniter 3. Algunas de estas mejoras incluyen:

  • Mayor rendimiento y velocidad gracias a la utilización de características avanzadas de PHP 7
  • Soporte mejorado para la creación de APIs RESTful
  • Mejoras en la seguridad y en la gestión de sesiones
  • Uso de clases y métodos modernos para mejorar la legibilidad y mantenibilidad del código
  • Flexibilidad y escalabilidad mejoradas gracias a su arquitectura modular

Para migrar JCPOS a CodeIgniter 4, los desarrolladores tuvieron que actualizar el código de JCPOS para utilizar las nuevas características y métodos de CodeIgniter 4. Esto incluyó cambios en la estructura del directorio, en la configuración del archivo y en el uso de nuevos métodos y características de CodeIgniter 4.

Una vez completada la migración, JCPOS obtuvo varios beneficios significativos. En primer lugar, el rendimiento y la velocidad de JCPOS se mejoraron considerablemente gracias a la utilización de características avanzadas de PHP 7 y a la optimización de la arquitectura de CodeIgniter 4. Esto significa que el sistema puede manejar más transacciones y usuarios simultáneamente, lo que es especialmente importante en entornos de punto de venta de alta demanda.

Además, la migración a CodeIgniter 4 proporcionó una mayor flexibilidad y escalabilidad a JCPOS. La arquitectura modular de CodeIgniter 4 permite que los desarrolladores de JCPOS agreguen fácilmente nuevas funcionalidades y características al sistema sin afectar negativamente al rendimiento o la estabilidad. Esto significa que JCPOS puede adaptarse y crecer para satisfacer las necesidades cambiantes de sus usuarios.

En conclusión, la migración de JCPOS a CodeIgniter 4 ha mejorado significativamente el rendimiento, la escalabilidad y la flexibilidad del sistema. Los desarrolladores de JCPOS han aprovechado las características avanzadas y la arquitectura modular de CodeIgniter 4 para optimizar el sistema y garantizar su compatibilidad con las últimas tecnologías y tendencias en el desarrollo web.

JCPOS Ultimate – Nuevo Repositorio #1

JCPOS: Una solución de punto de venta en constante evolución

En una reciente transmisión en vivo, el equipo de desarrollo detrás de JCPOS discutió los últimos cambios y mejoras en su solución de punto de venta. JCPOS es un sistema de punto de venta que ha estado en desarrollo desde el 2020, y ha evolucionado constantemente desde entonces para satisfacer las necesidades de sus usuarios.

Uno de los cambios más notables que el equipo ha realizado es el cambio de nombre de JC post a JCPOS. Esto se hizo para mantener la coherencia en el nombre a lo largo de los años, y evitar confusiones al cambiar el nombre cada año.

Otro de los cambios que se discutió en la transmisión fue la reciente publicación del repositorio de JCPOS en Github. Ahora está disponible para que cualquier persona interesada lo pueda descargar y explorar el código fuente. Además, se hizo hincapié en que los usuarios pueden contribuir al proyecto si encuentran algún problema o tienen alguna sugerencia.

El equipo también habló de algunos cambios específicos que han realizado en JCPOS, como la corrección de un problema en la bitácora que no estaba ordenando los botones de manera correcta. También se discutió la implementación de descuentos en las ventas, para asegurarse de que funcionen correctamente. Además, se está trabajando en la corrección de detalles menores, como la ordenación de la lista de ventas.

El equipo de JCPOS también habló sobre su intención de usar Composer para gestionar las dependencias del proyecto, lo que les permitirá mantenerse actualizados con las últimas versiones de las librerías que utilizan. También se mencionó la adición de impuestos a los productos, lo que permitirá la implementación de facturación electrónica en el futuro.

Finalmente, el equipo mencionó a sus patrocinadores y clientes, agradeciendo su apoyo y mencionando que los nombres de los patrocinadores se agregarán al repositorio en el futuro. También se proporcionó información sobre cómo patrocinar el proyecto.

En resumen, JCPOS es un proyecto de punto de venta en constante evolución. El equipo detrás de JCPOS está trabajando constantemente para mejorar la solución, escuchar las necesidades de los usuarios y mantenerse actualizado con las últimas tecnologías y herramientas de desarrollo. Si estás interesado en probar JCPOS o contribuir al proyecto, ¡asegúrate de visitar su repositorio en Github!

JCPOS2022 CRUD Empresas Guardar Logo Certificado y Archivo Key

Bien ahora para seguir avanzando haremos las altas bajas y cambios del catalogo de empresas ya que actualmente solo tenemos para meter datos de una empresa.

Aprovechando meteremos varios campos extras como el logo, contraseña (Por si se tiene que ingresar por empresa), archivo .cer y .key y contraseña del certificado, por si en un futuro se mete la facturación electronica.

Agregando derecho para que permita ver stock al hacer la venta JCPOS2022

Uno de los cambios que no han estado solicitando es que no todos los usuario puedan ver el stock, si no que si no tiene derecho que solo vea el color por si esta bajo en existencia así que empezando

Primero que nada empezamos agregando el cambio del derecho en la base de datos para ello ejecutamos el siguiente comando en la base de datos

alter table perfiles add permiteVerStockVentas  varchar(5) null

CAMBIOS TÉCNICOS JCPOS 2021 TABLA CLASES

El objetivo de este cambio es para usar una herramienta que nos permitirá crear catálogos de una forma mas rápida de forma automática.

Normalmente hacer un simple catalogo nos puede llevar alrededor de una hora como mínimo

Con esta futura herramienta nos podría llevar solo 10 minutos y solo para arreglar los detalles estéticos

Cambios en la base de datos

Cambio en la tabla clases

ALTER TABLE `clases` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT, add PRIMARY KEY (`id`);


INSERT INTO `clases` (`id`, `clase`) VALUES
(1, 'controladores/plantilla.controlador.php'),
(2, 'controladores/usuarios.controlador.php'),
(3, 'controladores/categorias.controlador.php'),
(4, 'controladores/productos.controlador.php'),
(5, 'controladores/clientes.controlador.php'),
(6, 'controladores/ventas.controlador.php'),
(7, 'controladores/utilerias.controlador.php'),
(8, 'controladores/empresa.controlador.php'),
(9, 'controladores/perfiles.controlador.php'),
(10, 'controladores/CorreoSaliente.controlador.php'),
(11, 'controladores/pagos.controlador.php'),
(12, 'controladores/caja.controlador.php'),
(13, 'modelos/usuarios.modelo.php'),
(14, 'modelos/categorias.modelo.php'),
(15, 'modelos/productos.modelo.php'),
(16, 'modelos/clientes.modelo.php'),
(17, 'modelos/ventas.modelo.php'),
(18, 'modelos/empresa.modelo.php'),
(19, 'modelos/correo.modelo.php'),
(20, 'modelos/perfiles.modelo.php'),
(21, 'modelos/pagos.modelo.php'),
(22, 'modelos/bitacora.modelo.php'),
(23, 'modelos/caja.modelo.php'),
(24, 'extensiones/vendor/autoload.php');

Cambios en el archivo index.php para leer las clases desde la tabla en lugar de tenerlas escritas directamente

Se remplazo el siguiente codigo:



require_once "controladores/plantilla.controlador.php";
require_once "controladores/usuarios.controlador.php";
require_once "controladores/categorias.controlador.php";
require_once "controladores/productos.controlador.php";
require_once "controladores/clientes.controlador.php";
require_once "controladores/ventas.controlador.php";
require_once "controladores/utilerias.controlador.php";
require_once "controladores/empresa.controlador.php";
require_once "controladores/perfiles.controlador.php";
require_once "controladores/CorreoSaliente.controlador.php";
require_once "controladores/pagos.controlador.php";
require_once "controladores/bitacora.controlador.php";
require_once "controladores/caja.controlador.php";


require_once "modelos/usuarios.modelo.php";
require_once "modelos/categorias.modelo.php";
require_once "modelos/productos.modelo.php";
require_once "modelos/clientes.modelo.php";
require_once "modelos/ventas.modelo.php";
require_once "modelos/empresa.modelo.php";
require_once "modelos/correo.modelo.php";
require_once "modelos/perfiles.modelo.php";
require_once "modelos/pagos.modelo.php";
require_once "modelos/bitacora.modelo.php";
require_once "modelos/caja.modelo.php";
require_once "extensiones/vendor/autoload.php";

Por este código:

foreach ($clases as $key => $value) {

  if (!file_exists($value["clase"])){

      $mensaje = "EL ARCHIVO ".strtoupper($value["clase"])." NO EXISTE";

        echo '<!DOCTYPE html> <html lang=&quot;es&quot;>
              <head>
              <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; />
              <meta name=&quot;description&quot; content=&quot;&quot; />
              <style>             ::-moz-selection {background: #b3d4fc; text-shadow: none;}             ::selection {background: #b3d4fc; text-shadow: none;}
              html {padding: 30px 10px; font-size: 16px; line-height: 1.4; color: #737373; background: #f0f0f0;
              -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;}             html,
              input {font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;}             body
              {max-width:700px; _width: 700px; padding: 30px 20px 50px; border: 1px solid #b3b3b3;
              border-radius: 4px;margin: 0 auto; box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff;                 background: #fcfcfc;}
              h1 {margin: 0 10px; font-size: 50px; text-align: center;}             h1 span {color: #bbb;}
              h2 {color: #D35780;margin: 0 10px;font-size: 40px;text-align: center;}             h2 span {color: #bbb;font-size: 80px;}
              h3 {margin: 1.5em 0 0.5em;}             p {margin: 1em 0;}             ul {padding: 0 0 0 40px;margin: 1em 0;}             .container
              {max-width: 380px;_width: 480px;margin: 0 auto;}             input::-moz-focus-inner {padding: 0;border: 0;}         </style>     </head>
              <body>         <div class=&quot;container&quot;>             <h2><span>500</span> Error interno del servidor</h2>
              <p>¡Vaya! Algo salió mal.<br /><br />'.$mensaje.'.</p>
              </div>
              </body>
              </html>';
      return;
  }

     require_once $value["clase"];

}

Y eso seria todo, es importante actualizar por que en un futuro cercano nos servira

MANUAL SISTEMA DE PUNTO DE VENTA JCPOS2021

Cuando iniciamos un pequeño negocio en donde ya tenemos de mas vendedores es importante tener información al momento de las ventas realizadas, de pendiente de cobrar y de por lo menos un inventario básico para saber que necesitamos comprar además de saber cuales son los productos que mas se venden por mes año o día.

También es necesario tener un control de acceso para que los empleados no puedan entrar a visualizar información sensible o esta no pueda ser modificada por ellos si no tienen autorización.

Es necesario también poder ver reportes de las ventas e inventarios en tiempo real desde cualquier ubicación desde la comodidad del dispositivo móvil, sin importar el sistema operativo del dispositivo.

Todo eso se pensó al ir desarrollando el sistema de punto de venta en JCPOS2021

Este sistema puede funcionar desde cualquier servidor que soporte las tecnologías de PHP8, Apache y MariaDB que es el estándar en el mundo de internet.

Les dejo un demo de este sistema y también el código fuente antes de empezar con el manual

Bien al entrar al demo lo primero que vemos es la pantalla de acceso en la cual para el demo el usuario es admin y la contraseña es admin

Aquí tenemos la pantalla de acceso, para el demo entramos con el usuario demo y contraseña demo

Al entrar lo primero que vemos es la pantalla del dashboard, el menú lateral y menú superior,

En esta imagen vemos el menú lateral expandido pero normalmente esta colapsado, este es el dashboard que ve el usuario con todos los derechos en el sistema

ELEMENTOS DEL DASHBOARD

Si el usuario tiene derechos a los elementos del dashboard los mostrara y son los siguientes

Estas son las cajas superiores y en el primer cuadro azul nos muestra todas las ventas registradas, si le damos click en Mas info nos lleva a ver la lista de todas las ventas

En la caja verde nos muestra el total cobrado, si le damos click en mas info nos muestra la lista de lo cobrado

En la caja naranja nos muestra lo pendiente por cobrar, si le damos click en mas info no lleva a la lista de las ventas pendientes por cobrar

En la caja roja solo vemos la lista de los productos
En el grafico de ventas va mostrando el total de ventas por periodo “MES”
Vemos una grafica de los productos mas vendidos
En este grafico nos muestra los clientes que mas nos deben, si damos click en el nombre nos lleva a la lista de ventas pendientes de pago de ese cliente

MENU CONFIGURACIONES

En este menú nos muestra todos los submenús que nos servirá para dictar las reglas de funcionamiento del sistema y cuenta con los siguientes submenús
1. Datos Empresa
2. Usuarios
3. Perfiles
4. Configurar Correo
5. Bitacora

Es que es donde definiremos las variables globales del sistema

SUB MENU DATOS EMPRESA

Aquí alimentaremos el sistema por única vez con los datos de la empresa como nombre dirección ETC, estos datos son los que saldrán en los encabezados de los reportes.

En el ultimo dato donde dice 30 es para poner los días de entrega

SUB MENU USUARIOS

En este catalogo damos las altas, bajas y cambios a los usuarios

Aquí vemos la lista de todos los usuarios creados, en la columna final están los botones para modificar y eliminar, en el botón de arriba es para crear otro usuario
Al darle clic al botón agregar nos saldrá esta ventana con la cual podremos dar de alta usuarios.

En el combo que esta seleccionado vendedor es para seleccionar el perfil y el perfil define los derechos de acceso al sistema
En esta ventana es para editar el usuario, también lo podemos cambiar de perfil

SUB MENÚ PERFILES

En este catalogo creamos los diferentes perfiles en los cuales le asignamos los derechos de acceso a las diferentes del sistema

Como vemos es un catalogo con el mismo estándar que el de usuarios, así se va a manejar en todo el sistema, en este tipo de catalogo se pueden dar las altas bajas y cambios.
Vemos como podemos activar funciones por perfil

SUB MENU CONFIGURAR CORREO

Sirve para configurar el envió de correo, estos datos nos permitirá enviar directamente los correos de las cotizaciones al correo del cliente

MENU CATALOGO DE CLIENTES

En este catalogo nos servirá para dar de alta todos los clientes, como recomendación deje el primer cliente como publico en general

Como se ve en la ilustración manejamos las altas, bajas y cambios
Al darle agregar nos pide los siguientes datos
Y al darle modificar a un cliente ya modificado nos trae los datos registrados para cambiarlos

SUB MENU BITACORA

Esta opción nos sirve como información para ver los movimientos de los usuarios en caso de error del sistema o error humano

MENU CATALOGO DE CATEGORIAS

Y antes de capturar los productos tenemos que capturar las categorías de productos, solo consta de descripción

MENU CATALOGO PRODUCTOS

Aquí es donde capturamos los productos que se van a vender, también se le asigna la existencia ese valor va disminuyendo conforme se van haciendo ventas

Así es como se ve el catalogo de productos
Al agregar un producto nos pide los siguientes datos
Esta es la ventana para modificar un producto existente, también podemos modificar la existencia

MENU COTIZACIONES

Este menú consta de dos sub menús
1. Nueva Cotización
2. Ver Cotizaciones

SUB MENU NUEVA COTIZACIÓN

Nos permite realizar cotizaciones para enviársela al cliente y si el cliente confirma convertimos la cotización en venta

Para realizar una cotización de lado izquierdo vemos los datos principales como cliente fecha, fecha de vencimiento de la cotización y a lo ultimo son los días de entrega una vez confirmada la venta.

Del lado izquierdo esta los productos que podemos vender, si le damos vender se van agregando a la lista
Si le damos guardar se genera el PDF de la cotización para poder imprimirla o enviársela por correo al cliente

SUB MENU VER COTIZACIONES

Es para ver las cotizaciones realizadas y ver si las eliminamos, copiamos o realizamos la venta

Vemos la lista de cotizaciones, en el menú opciones podemos imprimir, enviar por correo, editar y eliminar
Si le damos click se nos saldrá la ventana para enviar el PDF al correo del cliente
Ventana de envió de correo
Si le damos clic en generar venta se nos creara una venta nueva ligada con la cotización
Al darle click en generar venta en la cotización nos mandara a esta ventana

MENU VENTAS

En el menú ventas contamos con los siguientes sub menús
1. Administrar Ventas
2. Crear Venta
3. Reporte de ventas por producto
4. Reporte de ventas

En el sub menú administrar ventas vemos toda la lista de ventas, en los controles podemos imprimir en PDF la venta, editarla, eliminarla, generar un pago y ver los pagos que se han hecho a la venta del renglón
Al darle clic a la lupa blanca con fondo rosa vemos los pagos que se han realizado y en los controles podemos imprimir el comprobante de pago o eliminar el pago
Ejemplo del comprobante de pago
Cuando le damos click al icono blanco de visa con fondo verde nos sale una ventana para capturar el pago de la venta

SUB MENU REPORTE DE VENTAS POR PRODUCTO

Este reporte nos da una lista de las ventas detallado por producto

Nos da la opción para filtrarlo por producto

SUB MENU REPORTE DE VENTAS

Además de los reportes de grafico de ventas y productos mas vendidos aquí contamos con una grafica de barras con las ventas por vendedor, una grafica de ventas por comprador “Cliente”, aquí podemos filtrar por fecha además viene una opción para exportar en Excel la información.

En la parte superior vemos el rango de fecha y el botón verde para exportarlo a excel
Al darle click en el botón rango nos sale las siguientes opciones para filtrar
Nos muestra la grafica de ventas por vendedor
Grafica de ventas por compradores
Al exportar en excel lo exporta en este formato

Saludos no olviden compartir esta pagina si les es útil y también comentar en la caja de comentarios cualquier duda que tengan

CAMBIOS ESTÉTICOS PUNTO DE VENTA MODAL ARRASTRABLE JCPOS2021

Se realizaron diferentes cambios al punto de venta los cuales son los siguientes

Se agrego para que las ventanas modales se puedan mover para ello se agrego el siguiente código

En vistas/plantilla.php se agrego el siguiente código en el <head>

 <script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>

En vistas/js/plantilla.js

   $('.modal-dialog').draggable({
      handle: ".modal-header"
    });

Ya con eso se puede mover cualquier modal del fuente

En la imagen vemos como se movió el modal de registrar cliente hacia la derecha

Se agrego para poderle hacer zoom a las imagenes de los productos

Se agrego el código para importar el css en vistas/plantilla.php

  <!-- ZOOM Image -->
  <link rel="stylesheet" href="vistas/dist/css/zoom.css">

Se agrego también al final del archivo plantilla el código para llamar al archivo zoom.js

<script src="vistas/js/zoom.js"></script>

El archivo vistas/dist/css/zoom.css tiene el siguiente contenido

img[data-action="zoom"] {
  cursor: pointer;
  cursor: -webkit-zoom-in;
  cursor: -moz-zoom-in;
}
.zoom-img,
.zoom-img-wrap {
  position: relative;
  z-index: 666;
  -webkit-transition: all 300ms;
       -o-transition: all 300ms;
          transition: all 300ms;
}
img.zoom-img {
  cursor: pointer;
  cursor: -webkit-zoom-out;
  cursor: -moz-zoom-out;
}
.zoom-overlay {
  z-index: 420;
  background: #fff;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  filter: "alpha(opacity=0)";
  opacity: 0;
  -webkit-transition:      opacity 300ms;
       -o-transition:      opacity 300ms;
          transition:      opacity 300ms;
}
.zoom-overlay-open .zoom-overlay {
  filter: "alpha(opacity=100)";
  opacity: 1;
}
.zoom-overlay-open,
.zoom-overlay-transitioning {
  cursor: default;
}

El archivo vistas/js/zoom.js tiene el siguiente contenido

En ajax/datatable-productos.ajax.php se cambio el siguiente código en las imagenes, se agrego data-action=’zoom’

  $imagen = "<img src='" . $productos[$i]["imagen"] . "' data-action='zoom'  width='40px'>";

También se agrego en vistas/modulos/usuarios.php

      echo '<td><img src="'.$value["foto"].'" class="img-thumbnail" data-action="zoom" width="40px"></td>';

Al hacer click en la foto en el datatable se hara zoom

Vemos como se hizo zoom a la imagen de usuario

También en productos

Vemos como al darle click se hace mas grande la imagen

CAMBIOS PUNTO DE VENTA JCPOS 2021 ARQUEO DE CAJA

Se han hecho algunos cambios significativos al arqueo de caja y son los siguientes

Se agrego una opción en datos empresa para especificar si se va usar el arqueo se caja, en caso de que no este activado se podrá realizar una venta aunque no este abierta una caja

En configuración ->Datos empresa definimos si se validara el arqueo de caja

En arqueo de caja se agrego para poder escoger con que usuario/vendedor se abrirá la caja, antes solo se podía abrir con el usuario con el que se inicio sesión

De lado izquierdo vemos como abrimos la caja con el usuario asd y en el centro vemos como podemos escoger con un combo el usuario/vendedor

En el fuente archivo configuración.php se agrego una constante llamada debug, lo ideal si tenemos el programa en XAMPP es que esa variable este como false, pero si queremos debugear directamente con PHP sin utilizar el archivo .htaccess debemos ponerlo en true

normalmente debe de estar como false

Se agrego el campo caja en datosempresa lo puede agregar con el siguiente código SQL

ALTER TABLE `datosempresa` ADD `caja` VARCHAR(5) NULL AFTER `diasEntrega`;

COMO REGRESAR ARCHIVOS DEL CÓDIGO FUENTE A UNA VERSIÓN ANTERIOR

En algunas ocasiones hacemos cambios nuevos en el fuente y el resultado no es satisfactorio, como es el caso de agregarle la función de guardar las imágenes directamente en la base de datos, en nuestro caso el resultado fue que funciono mas lento, ya que no queda de otra que volver a la versión anterior.

Esto no sera problema en nuestro caso ya que manejamos la tecnología GIT, y en nuestro caso con Netbeans sera mucho mas fácil volver a la versión anterior.

Primero listamos los archivos que modificamos que serian los siguientes.

  1. controladores/usuarios.controlador.php
  2. vistas/usuarios.php
  3. vistas/cabezote.php
  4. vistas/menu.php
  5. ajax/usuarios.ajax.php
  6. modelos/usuarios.modelo.php

Buscamos el commit donde no tenia los cambios que no deseamos y le damos click y luego revert y así con todos los archivos que hicimos cambios.

Por ultimo eliminamos el campo archivoFoto de la tabla usuarios con este comando

ALTER TABLE `usuarios` DROP `archivoFoto`;

Y bien seria todo el cambio por hoy les dejo el fuente para que lo puedan descargar y el demo, saludos y espero que les sea de utilidad

MOSTRAR IMAGEN DE PERFIL EN CONFIGURACIONES USANDO PHP MySQL, Base54

Ya quedaron las altas y modificaciones de la imagen en el campo de MySQL, ahora los mostraremos en el menu y en el perfil
FORO
https://foro.cesarsystems.com.mx/

DISCORD
https://discord.gg/7cJSkMxA

FACEBOOK
https://www.facebook.com/rasec555

TWITTER
https://twitter.com/JulioLeyvaR

CHANNEL TELEGRAM
https://telegram.me/CesarSystems

PAGINA WEB
https://cesarsystems.com.mx

TWITCH
https://www.twitch.tv/bardack21

DLIVE
https://dlive.tv/JulitoLeyva

ODYSEE
https://odysee.com/@JulioCesarLeyvaRodriguez:9

Página 1 de 3

Creado con WordPress & Tema de Anders Norén