Skip to content

Generador de Cheques nextMEET permite generar cheques de donación personalizados con códigos de barras únicos. Diseñada para la campaña de donaciones nextMEET, la aplicación facilita la creación masiva de cheques en formato PDF listos para imprimir.

Notifications You must be signed in to change notification settings

DaniS1448/nextMEETChequesGenerator

Repository files navigation

🎫 Generador de Cheques nextMEET

nextMEET Logo

Aplicación de escritorio para generar cheques de donación con códigos de barras únicos

Python PySide6 License

Web Donar


📋 Descripción

Generador de Cheques nextMEET es una aplicación de escritorio desarrollada en Python con PySide6 que permite generar cheques de donación personalizados con códigos de barras únicos. Diseñada para la campaña de donaciones nextMEET, la aplicación facilita la creación masiva de cheques en formato PDF listos para imprimir.

✨ Características principales

  • 🎨 Interfaz moderna con tema oscuro elegante
  • 📊 7 tipos de billetes disponibles (B005, B010, B020, B050, B100, B200, B500)
  • 🔢 Códigos de barras únicos generados automáticamente (Code128)
  • 📄 Exportación a PDF en formato A4 (8 cheques) o A3 (16 cheques)
  • 🔍 Vista previa con zoom para verificar los cheques antes de exportar
  • ⚙️ Configuración personalizable de colores y posición del código de barras
  • 📝 Sistema de logs para registro de todas las generaciones
  • 💾 Múltiples configuraciones guardables y reutilizables

📸 Capturas de pantalla

Pantalla principal

Pantalla principal Vista principal con configuración de múltiples tipos de billetes y preview de página

Configuración de colores

Configuración de colores Panel de ajustes para personalizar el color del código de barras por tipo de billete

Configuración de posición

Configuración de posición Panel de ajustes para modificar la posición del código de barras en el cheque

Vista con zoom

Vista con zoom Ventana de preview con capacidad de zoom para inspeccionar cheques individuales y páginas completas

PDF exportado

PDF exportado Ejemplo de página PDF generada con múltiples cheques listos para imprimir


🔧 Requisitos

  • Python 3.10 o superior
  • Sistema operativo: Windows, macOS o Linux

Dependencias

PySide6>=6.5.0
Pillow>=10.0.0
python-barcode>=0.15.1
pyinstaller>=6.0.0  # Solo para generar el .exe

🚀 Instalación

1. Clonar o descargar el proyecto

git clone https://github.com/DaniS1448/nextMEETChequesGenerator.git
cd nextMEETChequesGenerator

2. Crear entorno virtual (recomendado)

python -m venv venv

# Windows
venv\Scripts\activate

# Linux/macOS
source venv/bin/activate

3. Instalar dependencias

pip install -r requirements.txt

4. Ejecutar la aplicación

python app.py

📖 Uso

Flujo básico de trabajo

  1. Añadir tipos de billete: Haz clic en "+ Añadir Tipo de Billete" para agregar una configuración.

  2. Seleccionar imagen modelo: Para cada tipo de billete, selecciona la imagen base del cheque (debe ser de 613x1746 píxeles).

  3. Configurar rango de códigos: Define el rango de códigos a generar (ej: C001 → C100).

  4. Elegir formato de salida: Selecciona A4 (8 cheques por página) o A3 (16 cheques por página).

  5. Vista previa: Haz clic en "Actualizar Preview" para ver cómo quedará la página.

  6. Generar PDF: Haz clic en "GENERAR PDF" para exportar el documento final.

Nomenclatura de códigos

Los códigos de barras siguen el formato:

nextMEET{TIPO}C{NUMERO}

Ejemplo: nextMEETB005C001 para el cheque #001 del tipo B005.


⚙️ Configuración

Acceder a los ajustes

Haz clic en el botón "⚙ Ajustes" en la esquina superior derecha para abrir el panel de configuración.

Colores de código de barras

Cada tipo de billete tiene un color de código de barras predeterminado que se integra con el diseño del cheque:

Tipo Color por defecto
B005 #35362b
B010 #f1b6cf
B020 #c7deec
B050 #e6c3b5
B100 #94f9b0
B200 #535353
B500 #141408

Posición del código de barras

Posición por defecto: X=32, Y=1506 (píxeles desde la esquina superior izquierda)

El cheque tiene un tamaño de 613x1746 píxeles.

Gestión de configuraciones

  • Nueva: Crear una configuración desde cero
  • Duplicar: Copiar una configuración existente
  • Eliminar: Borrar una configuración (excepto "default")
  • Las configuraciones se guardan automáticamente en config.json

📁 Estructura del proyecto

nextMEETChequesGenerator/
├── app.py                    # Aplicación principal (interfaz gráfica)
├── core.py                   # Lógica de generación de cheques y PDFs
├── config.json               # Configuraciones guardadas
├── requirements.txt          # Dependencias del proyecto
├── README.md                 # Este archivo
│
├── build.py                          # Script de build para generar .exe
├── build.bat                         # Script batch de build (Windows)
├── build_installer.py                # Script para crear instalador
├── build_installer.bat               # Script batch del instalador
├── prepare_release.py                # Script para preparar release de GitHub
├── prepare_release.bat               # Script batch del release
├── nextMEETChequesGenerator.spec     # Configuración de PyInstaller
├── installer.iss                     # Script de Inno Setup
│
├── .github/
│   └── workflows/
│       └── release.yml               # GitHub Actions para releases automáticos
│
├── resources/
│   ├── fonts/
│   │   └── Lato-Regular.ttf    # Fuente para códigos de barras
│   ├── icon.png                # Icono de la aplicación
│   ├── logo.png                # Logo de nextMEET
│   └── screenshots/            # Capturas de pantalla
│
├── Modelos/            # Imágenes modelo de los cheques
│   ├── nextMEETB005.jpg
│   ├── nextMEETB010.jpg
│   ├── nextMEETB020.jpg
│   ├── nextMEETB050.jpg
│   ├── nextMEETB100.jpg
│   ├── nextMEETB200.jpg
│   └── nextMEETB500.jpg
│
├── exports/            # PDFs generados (directorio de salida sugerido)
│
└── logs/               # Registros de generaciones en formato JSON
    └── gen_YYYYMMDD_HHMMSS.json

📊 Especificaciones técnicas

Característica Especificación
Resolución de cheque 613 × 1746 px
Resolución A4 2480 × 3508 px (300 DPI)
Resolución A3 3508 × 4961 px (300 DPI)
Cheques por A4 8 (4×2)
Cheques por A3 16 (8×2)
Tipo de código de barras Code128
Formato de exportación PDF

🔄 Logs de generación

Cada vez que se genera un PDF, se crea un archivo de log en la carpeta logs/ con la siguiente información:

{
  "timestamp": "2025-12-12T20:22:53",
  "format": "A4",
  "billetes": [
    {
      "tipo": "B005",
      "desde": "001",
      "hasta": "010",
      "cantidad": 10
    }
  ],
  "total_cheques": 10,
  "total_pages": 2,
  "output_file": "nextMeet_A4_20251212_202253.pdf"
}

📦 Generar Ejecutable (.exe)

La aplicación puede compilarse en un ejecutable standalone para Windows usando PyInstaller.

Requisitos para el build

pip install pyinstaller

Métodos de compilación

Opción 1: Usar el script batch (Windows)

build.bat

Opción 2: Usar el script Python

# Build estándar (carpeta con dependencias)
python build.py

# Build en un solo archivo .exe
python build.py --onefile

# Limpiar archivos de build previos
python build.py --clean

Opción 3: Usar el archivo .spec directamente

pyinstaller --noconfirm nextMEETChequesGenerator.spec

Resultado del build

Después de compilar, encontrarás el ejecutable en:

  • Build estándar: dist/nextMEETChequesGenerator/nextMEETChequesGenerator.exe
  • Onefile: dist/nextMEETChequesGenerator.exe

Distribución

Para distribuir la aplicación:

  1. Build estándar: Copia toda la carpeta dist/nextMEETChequesGenerator/
  2. Build onefile: Copia solo el archivo dist/nextMEETChequesGenerator.exe

La aplicación creará automáticamente:

  • config.json (configuraciones)
  • logs/ (registros de generación)

en el mismo directorio donde se encuentre el ejecutable.


💿 Crear Instalador Windows

Para crear un instalador profesional (.exe) que incluya asistente de instalación, accesos directos y desinstalador:

Requisitos

  1. Inno Setup (gratuito): Descargar aquí
  2. Haber compilado la aplicación previamente (python build.py)

Generar el instalador

Opción 1: Script automático

build_installer.bat

O con Python:

python build_installer.py

Opción 2: Manualmente con Inno Setup

  1. Abrir Inno Setup Compiler
  2. Abrir el archivo installer.iss
  3. Compilar (Ctrl+F9)

Resultado

El instalador se generará en: installer_output/nextMEETChequesGenerator_Setup_v1.0.0.exe

Características del instalador

  • ✅ Asistente de instalación en español/inglés
  • ✅ Instalación en Program Files (o carpeta personalizada)
  • ✅ Acceso directo en menú Inicio
  • ✅ Acceso directo en escritorio (opcional)
  • ✅ Desinstalador desde Panel de Control
  • ✅ Opción de ejecutar la app al finalizar

🚀 Crear Release en GitHub

Para publicar una nueva versión en GitHub Releases con instalador, versión portable y código fuente.

Requisitos previos

  1. Haber compilado la aplicación (python build.py)
  2. Haber creado el instalador (python build_installer.py)

Preparar archivos del release

python prepare_release.py 1.0.0

Esto creará en la carpeta release/:

  • nextMEETChequesGenerator-v1.0.0-setup.exe - Instalador
  • nextMEETChequesGenerator-v1.0.0-portable-win64.zip - Versión portable
  • RELEASE_NOTES.md - Plantilla de notas de la versión

Publicar en GitHub (Manual)

  1. Ve a tu repositorio en GitHub
  2. Haz clic en ReleasesCreate a new release
  3. Choose a tag: Escribe v1.0.0 y selecciona "Create new tag"
  4. Release title: nextMEET Cheques Generator v1.0.0
  5. Description: Copia el contenido de release/RELEASE_NOTES.md
  6. Attach binaries: Arrastra los archivos de la carpeta release/:
    • nextMEETChequesGenerator-v1.0.0-setup.exe
    • nextMEETChequesGenerator-v1.0.0-portable-win64.zip
  7. Haz clic en Publish release

💡 GitHub añadirá automáticamente el Source code (zip) y Source code (tar.gz)

Publicar en GitHub (Automático con GitHub Actions)

El proyecto incluye un workflow de GitHub Actions que automatiza todo el proceso:

# Crear y subir el tag
git tag v1.0.0
git push origin v1.0.0

GitHub Actions se encargará de:

  1. Compilar la aplicación
  2. Crear el instalador
  3. Preparar los archivos
  4. Publicar el release automáticamente

🛠️ Desarrollo

Arquitectura

  • app.py: Interfaz gráfica con PySide6, manejo de eventos y widgets personalizados
  • core.py: Lógica de negocio, generación de códigos de barras, composición de cheques y exportación a PDF

Principales componentes

  • MainWindow: Ventana principal de la aplicación
  • BilleteConfigWidget: Widget para configurar cada tipo de billete
  • SettingsDialog: Diálogo de configuración de colores y posición
  • ImageViewerDialog: Visor de imágenes con zoom
  • ConfigManager: Gestor de configuraciones persistentes
  • PDFGeneratorThread: Thread para generación de PDFs sin bloquear la UI

🗺️ Roadmap

Funcionalidades que me gustaría implementar en futuras versiones:

🎨 Previsualización en configuración de colores

  • Vista previa en tiempo real del código de barras sobre la imagen modelo
  • Visualizar cómo quedará la generación antes de aplicar los cambios
  • Comparador antes/después para ajustar el color óptimo

🔤 Sistema de fuentes personalizadas

  • Permitir subir y gestionar fuentes personalizadas (.ttf, .otf)
  • Selector de fuente para el texto del código de barras
  • Previsualización de la fuente seleccionada
  • Biblioteca de fuentes integrada con las más populares

📦 Agrupaciones/Versiones de cheques

  • Crear "presets" o versiones de cheques que guarden:
    • Las imágenes modelo utilizadas
    • Los ajustes de posición del código de barras
    • Los colores configurados para cada tipo
  • Cargar un diseño completo con un solo clic
  • Importar/exportar configuraciones para compartir entre equipos
  • Historial de versiones de diseño

🎯 Editor visual de posición del código de barras

  • Interfaz gráfica de arrastrar y soltar (drag & drop)
  • Previsualización en tiempo real del código de barras sobre el cheque
  • Herramientas de centrado horizontal y vertical automático
  • Guías de alineación y snapping
  • Controles de rotación del código de barras

📄 Licencia

Este proyecto fue desarrollado para la campaña de donaciones nextMEET.

⚠️ Solo se permite el uso y modificación de este software para actividades sin ánimo de lucro.

Queda prohibido el uso comercial o cualquier actividad con fines lucrativos sin autorización expresa.


🤝 Contribuir

Las contribuciones son bienvenidas. Por favor, abre un issue para discutir cambios mayores antes de enviar un pull request.


💚 Apoya el proyecto

Si este proyecto te resulta útil y quieres apoyar la campaña nextMEET, puedes hacer una donación:

Donar en GoFundMe


Desarrollado con ❤️ para nextMEET

About

Generador de Cheques nextMEET permite generar cheques de donación personalizados con códigos de barras únicos. Diseñada para la campaña de donaciones nextMEET, la aplicación facilita la creación masiva de cheques en formato PDF listos para imprimir.

Resources

Stars

Watchers

Forks

Packages

No packages published