jesus@portfolio: ~ --:--:--

Jesús Garza_

Backend Engineer · Python · Odoo

Desarrollador Odoo con 23+ módulos en producción para 10 empresas. Python, PostgreSQL, OWL, CFDI y APIs REST.

osLinux x86_64 · RHEL Certified
stackPython · PostgreSQL · Odoo 17/18/19
specialtyCFDI · ERP · REST · XML-RPC
shell/bin/zsh · vim · tmux
locationMonterrey, MX · UTC-6
uptime23 módulos · 10 clientes · 3 certs
last_pushchecking github...
Mini-shell interactiva. Escribe help para ver los comandos.
Escribe un comando (prueba: help, ls, neofetch, sudo hire) · Tab autocompleta · ↑↓ historial
// contributions · last 12 months
menos más

01_Sobre mí

Desarrollador backend Python con experiencia en módulos Odoo, integraciones XML-RPC y bases de datos PostgreSQL. Inglés avanzado.


Formación en administración Linux (Red Hat). Enfocado en código limpio que resuelva problemas reales.

#01
0
Empresas Atendidas
#02
0
Módulos Odoo
#03
0
Certificaciones Red Hat
#04
0
Tecnologías

02_Experiencia Profesional

experience/
Consultor Técnico / Desarrollador Odoo
Integra Informática Administrativa · Ago 2025 — Presente
Odoo 17/18/19 · Python · PostgreSQL · ORM · Owl · XML-RPC
Reabastecimiento en cascada multi-almacén con sourcing parcial, stock mínimo configurable y transferencias batch
Dashboard de postnómina con Owl: vistas múltiples, gauges SVG, tracking de dispersión y filtrado avanzado
Integración con Watchdog: monitoreo de directorios, parseo XML/CSV/JSON y creación automática de registros vía XML-RPC
Integración CFDI: timbrado automático, detección de bancos mexicanos, layouts bancarios y comprobantes SPEI
Reportes QWeb avanzados: pólizas de nómina por departamento, facturación CFDI y dispersión multi-concepto
Detección automática de contactos bancarios con normalización Unicode, extracción de RFC y matching difuso
Override de procurement core (_run_pull) con resolución dinámica de almacenes y encadenamiento de movimientos
API REST con endpoints de dashboard, reconciliación de pagos y generación batch de PDFs
Migración de módulos Odoo v17 → v18, adaptando modelos, vistas y componentes Owl
Herencia de 6+ modelos estándar (account.move, hr.payslip.run, stock.rule, etc.) con lógica personalizada
PythonPostgreSQLOdoo ORM OwlXML-RPCQWeb CFDIWatchdogxlsxwriter ReportLab
Programador Full Stack
Biblioteca FCFM-UANL · Ene 2025 — Jun 2025 · Contrato por proyecto (6 meses)
Flask · SQL Server · SQLite · 3 Sistemas en Producción
Sistema de préstamos: monitoreo en tiempo real, dashboard analítico con Chart.js y cierre automático de sesiones
Registro de entradas y salidas: autenticación bcrypt, control por roles y reportes de asistencia
Inventario de libros: app de escritorio con escaneo de código de barras y merge de bases de datos
Reportes PDF y Excel con formato avanzado y análisis de datos con Pandas
Arquitectura dual SQLite + SQL Server con queries parametrizadas
Importación masiva desde Excel/CSV con validación y resolución de conflictos
Despliegue en producción con Waitress y compilación a ejecutables con PyInstaller
PythonFlaskSQL Server SQLitePandasReportLab Chart.jsbcryptTkinter

03_Módulos Odoo

total 23 10 clientes · 6 áreas funcionales

v17 / v18 / v19 23 módulos 10 clientes 6 áreas funcionales

Empresas Atendidas

Avalia·Finanzas Dimex·Fiscal Casa Guerra·Facturación Cosesa·Contabilidad Forrajera Elizondo·Inventario Recavisa·Aduanas Interenter·Almacén FGH·Ventas Invent·Compras Ikigai·API/EDI Avalia·Finanzas Dimex·Fiscal Casa Guerra·Facturación Cosesa·Contabilidad Forrajera Elizondo·Inventario Recavisa·Aduanas Interenter·Almacén FGH·Ventas Invent·Compras Ikigai·API/EDI
-rw-r--r--jesusv18
Suite de Reportes Financieros — Grupo Avalia
Automatizó la generación de 9 reportes fiscales para un grupo financiero que administra pensiones y nómina de +500 beneficiarios.
QWebopenpyxlOWLCFDI
-rw-r--r--jesusv18
Control de Conciliación Bancaria
Resolvió un problema crítico donde Odoo mostraba saldos bancarios vacíos al depender de la conciliación nativa.
mail.threadopenpyxlBidirectional Sync
-rw-r--r--jesusv18
Visibilidad de Cartera Vencida
Dio a cobranza visibilidad instantánea de los días vencidos por factura — información crítica para flujo de efectivo que Odoo omite.
Report EngineHooksCustom Expressions
-rw-r--r--jesusv17
Corrección Fiscal de Anticipos — DIOT
Evitó declaraciones incorrectas ante el SAT que arriesgaban multas fiscales. Override de _compute_max_date() para forzar la fecha del flujo real de efectivo.
account.partial.reconcileDIOTSAT
-rw-r--r--jesusv17
Reconocimiento Automático de IVA en Anticipos
Automatizó un proceso manual mensual que causaba errores en la DIOT. Override de action_post() para generar asientos de base efectivo al registrar anticipos.
action_postCash BasisTax Tags
-rw-r--r--jesusv17
Comprobante de Pago con Cumplimiento SAT
Reemplazó el formato genérico de Odoo con un REP profesional que cumple 100% los requisitos del SAT. Parsing de XML CFDI 4.0 con namespaces y complemento Pagos20.
CFDI 4.0XML ParsingPagos20
-rw-r--r--jesusv18
Corrección de Tipo de Cambio MX (Banxico/DOF)
Alineó el tipo de cambio con la fecha del DOF para evitar diferencias en CFDI y contabilidad. Banxico etiqueta el Fix (SF43718) con la fecha de aplicación; el módulo consulta la API SIE de Banxico y resta un día para empatar con la publicación oficial del DOF.
Banxico SIE APIcurrency_rate_liveDOF
-rw-r--r--jesusv18
Reportes SAT XML — Complementario y Pólizas
Cubrió requerimientos del SAT en auditorías y devoluciones. Genera el Balance de Comprobación Complementario (TipoEnvio="C" con FechaModBal) y las Pólizas Contables del periodo por tipo de solicitud: fiscalización, compulsa, devolución y compensación.
l10n_mx_reportsSAT XMLPólizas
-rw-r--r--jesusv18
Sincronización de Cancelación Intercompañía
Eliminó facturas de proveedor huérfanas tras cancelar ventas entre empresas del grupo. Cuando se cancela una factura de cliente que generó una factura de proveedor intercompañía, propaga la cancelación a la otra empresa de forma automática.
account.moveIntercompanybutton_cancel
-rw-r--r--jesusv17
Gestión Automatizada de Vacaciones
Eliminó consultas manuales de saldo que RH respondía decenas de veces al mes. Reporte QWeb en formato media carta con áreas de firma.
QWebComputedhr.leave
-rw-r--r--jesusv18
Reportes de Nómina Auto-configurables
Un solo reporte que se adapta a cualquier estructura salarial sin intervención de desarrollo. Columnas generadas dinámicamente desde reglas salariales.
xlsxwriterDynamic ColumnsWizard
-rw-r--r--jesusv18
Integración Nómina ↔ Caja de Ahorro
Eliminó horas de captura manual cada quincena entre dos sistemas. 3 wizards especializados y 5 reglas de nómina.
MOPER3 WizardsSalary Rules
-rw-r--r--jesusv18
Cálculo y Exportación IMSS / SUA
Centralizó el cumplimiento IMSS de un patrón dentro de Odoo. Wizards de cálculo mensual y bimestral (IMSS, INFONAVIT, FONACOT), simulación, valor UMA y registro patronal, con exportación de CFDI de nómina al formato del SUA para conciliar contra el sistema del IMSS.
IMSSINFONAVITFONACOTUMA8 Wizards
-rw-r--r--jesusv18
Cálculo de PTU
Automatizó el reparto anual de utilidades que se hacía en hojas de cálculo. Calcula la Participación de los Trabajadores en las Utilidades por días trabajados y salarios devengados, con importador desde Excel e integración con reglas de nómina y CFDI.
PTUSalary RulesExcel Import
-rw-r--r--jesusv18
Timbrado de Nómina en Paralelo
Aceleró el timbrado masivo de nómina que se atoraba en lotes grandes. Procesa las llamadas al PAC de forma concurrente manteniendo las escrituras ORM en el hilo principal, con modo rápido (omite PDF/chatter inmediato) y una acción planificada que genera los PDFs pendientes.
ThreadPoolExecutorPACir.cronPerformance
-rw-r--r--jesusv17
Trazabilidad de Inventario Multi-ubicación
Resolvió una limitación de Odoo que solo mostraba totales agregados. Algoritmo de boundary-crossing con soporte para BOMs fantasma (kits).
Boundary-crossingstock.quantBOM Kits
-rw-r--r--jesusv17
Control de Cumplimiento Aduanal
Previene multas aduanales al detectar facturas timbradas sin pedimento en el XML. Auto-refresh vía override de web_search_read().
web_search_read_auto_initCFDI
-rw-r--r--jesusv19
Corrección Rápida de Lotes en Inventario
Eliminó un proceso de 15+ minutos por corrección. Override quirúrgico de _get_forbidden_fields_write() — solución mínima de 4 líneas.
_get_forbidden_fieldsstock.quant
-rw-r--r--jesusv19
Recepción Masiva de Series/Lotes
Aceleró la recepción en almacén eliminando la captura uno por uno. Override de split_lots() en stock.move retrocompatible.
split_lotsstock.moveUX
-rw-r--r--jesusv17
Gestión Inteligente de Catálogo de Productos
Resolvió la saturación de selectores que confundía al equipo de ventas con +35,000 productos. Override de _name_search() con filtrado por contexto.
_name_searchContextDynamic Domain
-rw-r--r--jesusv17
Automatización de Compras a Proyectos
Eliminó pasos manuales en el flujo compra→proyecto. Cadena automatizada PO → Picking → Moves → Confirmación.
analytic_distributionstock.pickingAutomation
-rw-r--r--jesusv19
EDI IKIGAI — Avisos a Middleware (944/945)
Integró el almacén de Odoo con SAP vía el middleware IKIGAI sin que Odoo arme el EDI. Al validar un albarán, Odoo dispara un webhook "edi.ready" (944 recepción / 945 salida / 947 / 852) con token e idempotencia; el middleware consulta Odoo, genera el X12 y lo envía por AS2. Incluye bitácora request/response, llave de idempotencia única y reintento por cron.
WebhookIdempotenciaX12 944/945AS2ir.cron
-rw-r--r--jesusv19
Restauración de Usabilidad en Órdenes
Patch de componentes OWL sobre ProductLabelSectionAndNoteListRender.getActiveColumns(), respetando el sistema de optional fields nativo.
OWL PatchgetActiveColumnsMixin

+ 3 módulos complementarios: automatización de impuestos en productos nuevos, validación de precios de proveedor con 35 puntos de control, y flujo de remisión integrado en entregas.

Casos de éxito

Resumen ejecutivo de entregables con impacto medible en operaciones, cumplimiento y flujo de caja.

Avalia · Conciliación bancaria con visibilidad operativa toggle

Problema: Tesorería dependía de conciliaciones manuales y Odoo mostraba saldos incompletos durante el día.

Solución técnica: Diseñé un módulo de sincronización bidireccional con protección anti-loop por contexto, importación masiva desde Excel y auditoría con mail.thread para trazar cada ajuste.

Stack: Python · Odoo ORM · openpyxl · mail.thread

Métricas: -70% tiempo de conciliación diaria · 0 saldos vacíos en cierre · +100% trazabilidad de cambios

Recavisa · Cumplimiento aduanal CFDI + pedimentos toggle

Problema: Facturas timbradas sin pedimento detectadas tarde, con riesgo real de sanción y retrabajo contable.

Solución técnica: Implementé validaciones sobre XML CFDI en tiempo de consulta, alertas visuales por severidad y migración segura de SQL VIEW a modelo ORM para mantener compatibilidad evolutiva.

Stack: Python · l10n_mx_edi · XML parsing · web_search_read override

Métricas: Detección temprana antes de cierre mensual · 0 incidencias críticas de pedimento tras despliegue

Casa Guerra · Reporte de nómina auto-configurable toggle

Problema: Cada cambio en reglas salariales exigía soporte técnico para rehacer formatos de reporte.

Solución técnica: Construí un generador dinámico de columnas basado en salary rules con exportación xlsxwriter, filtros por periodo/empresa y orden lógico por tipo de percepción.

Stack: Python · hr_payroll · xlsxwriter · wizard patterns

Métricas: De horas a minutos por reporte · 0 ajustes manuales de formato en operación regular

Ikigai · Avisos EDI de Odoo al middleware (SAP) ver detalle

Problema: Sincronizar movimientos de almacén con SAP por EDI sin cargar a Odoo con la complejidad de armar y transmitir los documentos X12.

Solución técnica: Diseñé el lado Odoo del protocolo de avisos: al validar albaranes se dispara un webhook "edi.ready" (944/945/947/852) con token e idempotencia; el middleware consulta Odoo, genera el X12 y lo envía por AS2. Agregué bitácora con evidencia request/response, llave de idempotencia única y reintento por cron que no duplica.

Stack: Python · stock · requests (webhook) · idempotencia · ir.cron · X12/AS2

Métricas: Cero EDI duplicados por idempotencia · reintento automático de fallos transitorios · trazabilidad completa de cada aviso

Forrajera Elizondo · Trazabilidad por ubicación toggle

Problema: El equipo no podía auditar inventario histórico por ubicación: solo había totales agregados.

Solución técnica: Implementé algoritmo de boundary-crossing que reconstruye estado por fecha de corte, revirtiendo movimientos posteriores y contemplando transferencias internas y kits.

Stack: Python · stock.quant · stock.move.line · BOM kits

Métricas: Auditorías más rápidas y confiables · reducción de ajustes por diferencias no explicadas

Recavisa · Cumplimiento IMSS y exportación al SUA ver detalle

Problema: El cálculo de cuotas IMSS, INFONAVIT y FONACOT se hacía fuera de Odoo y se recapturaba en el SUA, con riesgo de diferencias y retrabajo cada mes y bimestre.

Solución técnica: Construí un módulo con wizards de cálculo mensual y bimestral, simulación, valor UMA y registro patronal, que exporta el CFDI de nómina al formato del SUA para conciliar directo contra el sistema del IMSS.

Stack: Python · om_hr_payroll · IMSS / INFONAVIT / FONACOT · UMA · wizards

Métricas: Cálculo y exportación dentro de Odoo · conciliación directa contra el SUA · menos recaptura manual

Avalia · Timbrado de nómina masivo en paralelo ver detalle

Problema: Timbrar lotes grandes de nómina tardaba demasiado: cada recibo llamaba al PAC en serie y bloqueaba la operación.

Solución técnica: Paralelicé las llamadas al PAC con un pool de hilos manteniendo las escrituras ORM en el hilo principal (el cursor de PostgreSQL no es thread-safe), con modo rápido que omite PDF/chatter inmediato y una acción planificada que genera los PDFs pendientes.

Stack: Python · ThreadPoolExecutor · PAC l10n_mx · ir.cron

Métricas: Timbrado masivo mucho más rápido en lotes grandes · la operación no se bloquea durante el proceso

04_Proyectos Destacados

05_Habilidades Técnicas

// stack · líneas de código por lenguaje
  • Python 58.0%
  • XML / QWeb 22.0%
  • JavaScript / OWL 9.0%
  • HTML / CSS 6.0%
  • SQL 3.0%
  • Shell 2.0%

Backend & Bases de Datos

PythonOdooFlask PostgreSQLSQL ServerXML-RPC Pandas

Desarrollo Web

HTML5CSS3JavaScript ReactOwlQWeb

DevOps & Herramientas

GitGitHubLinux Red HatDocker

06_Formación

Licenciatura en Ciencias Computacionales
Universidad Autónoma de Nuevo León, Facultad de Ciencias Físico Matemáticas
2021 — 2025

Certificaciones Técnicas

RH124 Red Hat System Administration I (RH124) 2024 PDF →
RH134 Red Hat System Administration II (RH134) 2024 PDF →
RH294 Red Hat Enterprise Linux Automation with Ansible (RH294) 2024 PDF →

Reconocimientos

Reconocimiento por la elaboración de 3 sistemas para biblioteca
Reconocimiento por la elaboración de los sistemas: Entradas y Salidas, Registro de Libros de Acervo e Inventario de Libros.
Ver Carta
EGEL-CENEVAL
Testimonio de Desempeño Sobresaliente en el EGEL de Ciencias Computacionales, otorgado por CENEVAL.
Ver Reconocimiento

Testimonios

"Jesús Garza demostró ser un elemento muy valioso por su gran responsabilidad y atención al detalle. Su iniciativa y compromiso superaron las expectativas, logrando mejoras significativas en los procesos internos de nuestra Biblioteca."

Dra. Aleida Magdalena Gil González
Subdirectora de Calidad e Innovación Educativa, FCFM - UANL

07_Trabajemos juntos

¿Tienes un proyecto en mente o quieres colaborar? No dudes en contactarme.

Enviar Ctrl+Enter
NORMAL · portfolio.md
★ main · UTF-8 · LF · MD
ln 1, col 1 · 0%