¿Buscas un sistema de facturación rápido, seguro y flexible que puedas instalar en tu servidor Ubuntu con mínimo esfuerzo?
¡Te presento CI4JCPOX, una solución basada en CodeIgniter 4.5 que potencia tu negocio con funcionalidades completas y tecnología moderna!
🌟 ¿Por qué elegir CI4JCPOX?
Basado en CodeIgniter 4.5, el framework PHP ligero y rápido
Uso de MariaDB para bases de datos robustas y eficientes
Integración lista con Apache y PHP para un entorno LAMP completo
Código abierto y fácil de personalizar para tus necesidades
Instalación rápida gracias a un script automatizado para Ubuntu Server 24.04 en AWS EC2 o cualquier VPS Linux
⚙️ ¿Qué incluye este sistema?
Gestión completa de facturas y clientes
Interfaz web limpia y responsiva
Migraciones y seeders para inicializar la base de datos sin complicaciones
Configuración segura con usuario y base de datos dedicados
Preparado para crecer y adaptarse a tu negocio
🛠️ Cómo instalar CI4JCPOX en Ubuntu Server 24.04 (AWS EC2)
He preparado un script automático para que en pocos minutos tengas todo listo: LAMP, base de datos, configuración de CodeIgniter y Apache con VirtualHost.
Paso 1: Descarga el script de instalación
cd ~
curl -O https://raw.githubusercontent.com/julio101290/ci4jcposv2/main/instalar_ci4_facturacion.sh
Paso 2: Dale permisos de ejecución
chmod +x instalar_ci4_facturacion.sh
Paso 3: Ejecuta el script como root
sudo ./instalar_ci4_facturacion.sh
✅ ¿Qué hace este script por ti?
Actualiza y prepara tu servidor Ubuntu
Instala Apache, MariaDB y PHP con todas las extensiones necesarias
Crea la base de datos facturacion y un usuario seguro con permisos
Instala el proyecto CI4JCPOX usando Composer en /var/www/html/facturacion
Configura Apache para servir el proyecto con un VirtualHost dedicado
Ejecuta migraciones y seeders para inicializar la base de datos
Deja todo listo para que accedas a tu sistema por IP o dominio
🌐 Accede a tu sistema
Abre tu navegador y entra a:
http://TU_IP_PUBLICA/
¡Listo para comenzar a facturar!
🔒 Seguridad y permisos
El script también se encarga de ajustar permisos para que Apache pueda servir correctamente la aplicación sin problemas de acceso.
📂 Código y más información
Puedes revisar y descargar el script completo desde GitHub:
library to generate carta porte complement CFDI 4.0
CodeIgniter 4 Que es Carta Porte
La Carta Porte es un documento fiscal digital que se utiliza en México para amparar el traslado de bienes y mercancías dentro del territorio nacional. Su principal función es acreditar la legal posesión de la mercancía durante su transporte, así como proporcionar información detallada sobre el origen y destino de la misma.
Aquí hay algunos puntos clave sobre la Carta Porte:
Documento fiscal digital: Es un comprobante fiscal electrónico (CFDI) al que se le incorpora el complemento Carta Porte.
Ampara el traslado de mercancías: Acredita la legal estancia y/o tenencia de los bienes o mercancías durante su traslado en territorio nacional.
Identifica el origen y destino: Proporciona información detallada sobre el lugar de donde provienen las mercancías y a dónde se dirigen.
Combate el contrabando: Ayuda a prevenir el contrabando y la competencia desleal entre empresas transportistas.
Facilita la trazabilidad: Permite rastrear la mercancía durante todo su recorrido.
Contrato de transporte: Funciona como un contrato legal entre el remitente, el transportista y el destinatario, estableciendo los términos y condiciones del transporte.
En resumen, la Carta Porte es un documento esencial para el transporte de mercancías en México, ya que garantiza la legalidad, seguridad y trazabilidad de los bienes durante su traslado.
Requerimientos
PhpCfdi\SatCatalogos
julio101290/boilerplatelog
hermawan/codeigniter4-datatables
Instalación
Ejecutar Comandos para la instalación de la librería
Biblioteca CodeIgniter4 Boilerplatesells para generar ventas con formato de impresión PDF, CFD4.0 Factura para enviar a los clientes por correo electrónico.
CodeIgniter4 Boilerplate Arqueo de caja, este modulo servira para abrir y cerrar las cajas en una fecha determinada.
El funcionamiento es que al abrir la caja todas las ventas realizadas se ingresaran a ese arqueo, el cual va a generar un reporte de cuales ventas son a credito y cuales a contado.
Al registrar el arqueo de caja capturamos cuando hay en caja actualmente y cuanto hay en el reconteo de efectivo
Esta biblioteca es una extensión para configuraciones globales de plantilla Boilerplate. Puede guardar el nombre de la compañía, el número de teléfono, el correo electrónico y cambiar el idioma en toda la aplicación CodeIgniter 4.
Instalación
Ejecutar comando
composer require julio101290/boilerplatesettings
Ejecutar el comando para la migración y sembrado
php spark boilerplatesettings:installsettings
Creamos el menu
Listo al final queda asi
Usage
You can find how it works with the read code routes, controller and views etc. Finnally… Happy Coding!
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Contributions are very welcome.
License
This package is free software distributed under the terms of the MIT license.
La protección de los datos de una aplicación es fundamental. Los respaldos de bases de datos son una línea de defensa esencial ante posibles pérdidas de información causadas por errores humanos, fallas del sistema o ciberataques. En este post, te presentaremos una solución práctica y flexible para realizar respaldos automáticos de bases de datos MySQL: la herramienta mysql-backup autor original ramazancetinkaya/mysql-backup y las modificaciones que hemos implementado en nuestro fork julio101290.
¿Por qué un fork de mysql-backup?
Partiendo de la excelente base que ofrece mysql-backup, decidimos crear un fork con el objetivo de adaptar la herramienta a nuestras necesidades específicas y resolver ciertas limitaciones que identificamos durante su uso. Algunos de los motivos que nos llevaron a crear este fork fueron:
Mejorar el rendimiento: Optimizamos el proceso de respaldo, especialmente para bases de datos de gran tamaño, dividiendo las consultas en fragmentos más pequeños y evitando operaciones innecesarias.
Aumentar la estabilidad: Identificamos y corregimos algunos errores que podían causar inestabilidad en ciertos escenarios, como el manejo de valores nulos o la separación de consultas.
Añadir funcionalidades: Incorporamos nuevas características para ampliar las capacidades de la herramienta, como la posibilidad de personalizar el formato de los archivos de respaldo o integrar la herramienta con otros sistemas.
Instalación con Composer
Para instalar nuestro fork de mysql-backup, utiliza el siguiente comando en tu terminal:
Nuestro fork de mysql-backup ofrece una solución robusta y eficiente para realizar respaldos automáticos de bases de datos MySQL. Al personalizar esta herramienta, hemos obtenido un mayor control y flexibilidad para adaptarla a nuestras necesidades específicas.
Recomendaciones Adicionales:
Automatización: Integra esta funcionalidad en un sistema de automatización para realizar respaldos de forma periódica.
Seguridad: Implementa medidas de seguridad adecuadas para proteger los archivos de respaldo.
Pruebas: Realiza pruebas periódicas de restauración para verificar la integridad de los respaldos.
Documentación: Consulta la documentación completa de nuestro fork en GitHub para obtener más información.
Ejemplo de Uso con CodeIgniter4
PHP
// ... (código existente)
// Cargar la clase MySQLBackup
use Julio101290\MysqlBackup\Backup;
// Obtener los datos de conexión a la base de datos
$host = config('Database')->default["hostname"];
$dbname = config('Database')->default["database"];
$username = config('Database')->default["username"];
$password = config('Database')->default["password"];
$port = config('Database')->default["port"];
$DNS = "mysql:host=$host;port:$port;dbname=$dbname'";
$dbBackupConection = new \PDO($DNS, $username, $password);
// Crear una instancia de MySQLBackup
$mysqlBackup = new MySQLBackup($dbBackupConection, ROOTPATH . "writable/database/backup");
// Realizar un respaldo completo
$backup = $mysqlBackup->backup(false, true, false);
// ... (resto del código)
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 vendidosEn 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 sistemaEn 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 vendedorGrafica de ventas por compradoresAl 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
Instalación de ejecutable
Tambien lo podemos instalar en nuestra PC sin necesidad de tener internet para que funcione
Primeramente ejecutamos el instalador
En la primer venta nos mostrara la opción para crear el acceso directo, lo dejamos tal y como esta la imagen y le damos click en siguiente
En la siguiente ventana nos muestra como quedaria la instalación
Se comenzara a instalar
Al finalizar la instalación nos mostrara la siguiente ventana, le damos finalizar
Y listo tenemos la aplicacion instalada, posiblemente al abrilo la primera vez no funcione y salga la ventana en blanco, solo hay que cerrarlo y volverlo abrir
Algunas veces en el desarrollo es necesario consumir web Service para los proyectos, como puede ser facturación electrónica mexica, obtener el precio del dólar del DOF ETC .
Existen herramientas ya conocidas para realizar las pruebas como Postman las cuales funcionan muy bien y cuentan con excelentes funciones como la de exportar la petición al lenguaje que estemos utilizando ya sea PHP, C#, Java, Python,Ruby on Rails ETC
Pero como siempre hay alternativas en todo.
Existe una buena alternativa y es una extensión de Visual Studio Code.
Thunder Client es una extensión de cliente Rest API liviana para VS Code, diseñada a mano por Ranga Vadhineni con un enfoque en la simplicidad, el diseño limpio y el almacenamiento local.
Para instalarlo nomas vamos a extensiones buscamos Thunder Client, le damos instalar y listo
Y listo ya podemos hacer pruebas con los webservice
Usamos cookies en nuestro sitio web para brindarle la experiencia más relevante recordando sus preferencias y visitas repetidas. Al hacer clic en "Aceptar", acepta el uso de TODAS las cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.