ERPly: Desarrollador Odoo
En este curso, no solo aprenderá a desarrollar módulos desde cero. Aprenderá cómo pensar como un consultor técnico de ERPly: analizando flujos contables, integrando normativa fiscal dominicana (como la DGII), automatizando tareas repetitivas, generando reportes inteligentes y construyendo interfaces limpias que cualquier usuario puede adoptar.
Durante esta formación, recorreremos juntos todo el camino que sigue un desarrollador profesional en ERPly:
- Desde la creación de modelos y vistas XML,
- Hasta la integración con APIs externas, generación de facturación electrónica, y construcción de dashboards personalizados,
- Todo con herramientas prácticas, estándares de calidad y buenas prácticas que usamos a diario en proyectos reales.
RD$ 24,000.00
24000.0
DOP
RD$ 24,000.00
Responsable | Rob Cruz |
---|---|
Última actualización | 05/08/2025 |
Tiempo de finalización | 8 horas 20 minutos |
Miembros | 2 |
Intermedio
Desarrollo
ERPly
-
-
Intro
-
-
🧩 Módulo 1: Introducción al Ecosistema Odoo y Filosofía ERPly4Lecciones · 40 min
-
¿Qué es Odoo? Arquitectura modular y ventajas del open source.
-
Diferencias entre Odoo Community y Enterprise.
-
Rol del desarrollador en el ciclo de implementación.
-
Enfoque ERPly: consultoría funcional + personalización técnica.
-
-
⚙️ Módulo 2: Fundamentos Técnicos de Odoo4Lecciones · 52 min
-
Estructura de un módulo: __manifest__.py, models/, views/, security/, data/.
-
ORM de Odoo: creación de modelos, campos y relaciones.
-
Decoradores comunes: @api.depends, @api.onchange, @api.model.
-
Gestión de vistas XML: form, tree, kanban, search.
-
-
🔐 Módulo 3: Seguridad y Permisos3Lecciones · 45 min
-
Control de acceso: grupos, reglas de registro (record rules), menús y acciones.
-
Archivos ir.model.access.csv.
-
Uso correcto de sudo() y gestión de privilegios.
-
-
🧾 Módulo 4: Desarrollo de Módulos Locales – Caso DGII5Lecciones · 1 h 15 min
-
Creación de campos personalizados en account.move para e-CF.
-
Convertir una factura Odoo en un documento electrónico válido ante la DGII Para que una factura emitida desde Odoo pueda ser aceptada por la DGII como comprobante fiscal electrónico (e-CF), debe ser transformada en un archivo XML estructurado según los lineamientos oficiales publicados por la entidad. Este XML será firmado digitalmente, enviado a través de la API de la DGII, y recibirá un TrackID con su validación. Como desarrollador ERPly, usted será responsable de construir ese archivo desde los datos contenidos en el modelo account.move. 🧱 Estructura general del flujo técnico La factura es validada internamente en Odoo (account.move). Se genera el XML con base en los datos del documento. El XML se firma digitalmente (certificado + clave privada). El XML firmado se envía a la DGII por API (HTTP POST). La DGII responde con un TrackID y estado (aceptado / rechazado). 📂 Ubicación recomendada Archivo Python: plaintext Copy Edit /modules/erply_dgii/helpers/xml_generator.py 🔧 Ejemplo básico de generación XML Se utiliza lxml.etree para construir el archivo: python Copy Edit from lxml import etree def generar_xml_factura(move): nsmap = { None: 'http://www.dgii.gov.do/comprobantesfiscales', } # Crear nodo raíz factura = etree.Element('eCF', nsmap=nsmap) # Nodo Emisor emisor = etree.SubElement(factura, 'Emisor') etree.SubElement(emisor, 'RNCEmisor').text = move.company_id.vat etree.SubElement(emisor, 'RazonSocialEmisor').text = move.company_id.name # Nodo Receptor receptor = etree.SubElement(factura, 'Receptor') etree.SubElement(receptor, 'RNCReceptor').text = move.partner_id.vat or '000000000' etree.SubElement(receptor, 'RazonSocialReceptor').text = move.partner_id.name # Información del comprobante etree.SubElement(factura, 'eNCF').text = move.encf etree.SubElement(factura, 'FechaEmision').text = move.invoice_date.strftime('%Y-%m-%d') etree.SubElement(factura, 'TipoeCF').text = move.tipo_ecf # Totales totales = etree.SubElement(factura, 'Totales') etree.SubElement(totales, 'TotalITBIS').text = str(move.amount_tax) etree.SubElement(totales, 'TotalFactura').text = str(move.amount_total) # Convertir a string con formato bonito return etree.tostring(factura, pretty_print=True, encoding='UTF-8', xml_declaration=True) 📥 Datos requeridos para cumplir con DGII Campo XML Fuente en Odoo RNCEmisor company_id.vat eNCF move.encf (autogenerado o por secuencia) TipoeCF move.tipo_ecf FechaEmision invoice_date TotalFactura amount_total TotalITBIS amount_tax Detalles/Item invoice_line_ids Cada línea de factura debe transformarse en un nodo Item dentro del XML, incluyendo descripción, cantidad, precio, ITBIS, etc. 🧠 Buenas prácticas ERPly Crear un helper dedicado para centralizar la lógica del XML. Validar que todos los datos estén completos antes de construir el XML. Usar etree.Element en vez de concatenar texto XML manualmente. Separar la lógica de generación (generar_xml_factura) de la firma digital y del envío. Incluir pruebas de validación del XML antes del envío (por ejemplo, contra XSD oficial si aplica). ⚠️ Validaciones mínimas antes de firmar o enviar Antes de convertir o enviar el XML: ¿El RNC del emisor y receptor están completos? ¿El tipo de e-CF (tipo_ecf) es uno de los valores válidos? ¿La factura tiene estado posted y encf asignado? ¿El monto total es mayor a cero? 📦 Integración con firma digital Una vez generado el XML, este debe ser firmado digitalmente usando un certificado autorizado. Esto normalmente se hace con una herramienta externa o librería como xmlsec. python Copy Edit def firmar_xml(xml_raw, certificado_path, clave_privada): # Firma digital del XML (no cubierto en este tema) pass ✅ En resumen La generación del XML de facturación electrónica en Odoo es un proceso crítico que debe seguir el formato DGII con rigurosidad técnica y legal. Como desarrollador ERPly, su responsabilidad es: Extraer correctamente los datos desde account.move. Estructurar el XML de forma válida. Validar y preparar el documento para firma. Garantizar que lo que se envía a la DGII representa fielmente la transacción fiscal.
-
Implementación de botón “Enviar a DGII” con estado y validación.
-
Códigos de seguridad y QR según tipo de comprobante.
-
Exportaciones automáticas 606, 607, IT-1.
-
-
📦 Módulo 5: Integraciones Técnicas (APIs y Web Services)4Lecciones · 1 h
-
Conexión con servicios REST: consumo con requests.
-
Casos reales: DGII, bancos, WhatsApp API, pasarelas de pago (ej. Azul).
-
Autenticación con tokens y manejo de respuestas JSON/XML.
-
Creación de controladores (@http.route) para exponer servicios.
-
-
🧠 Módulo 6: Automatizaciones y Tareas Programadas3Lecciones · 45 min
-
cron jobs y ir.cron.
-
Automatización de reportes por correo (PDF + Excel).
-
Generación automática de contratos, renovaciones y recordatorios.
-
-
📊 Módulo 7: Reportes y Dashboards Técnicos3Lecciones · 45 min
-
Creación de QWeb Reports (PDF).
-
Construcción de vistas tipo gráfico, pivot y cohort.
-
KPIs dinámicos: ingresos por mes, productividad, cancelaciones.
-
-
🧪 Módulo 8: Pruebas y Depuración3Lecciones · 45 min
-
Uso del modo desarrollador.
-
Depuración con logs (_logger), pruebas en consola y depuradores (PDB).
-
Carga de datos de prueba (demo data) y pruebas unitarias básicas.
-
-
💼 Módulo 9: Flujo de Trabajo con Git y Módulos en Odoo.sh3Lecciones · 45 min
-
Estructura recomendada del repositorio.
-
Versionamiento de módulos, ramas por cliente y entorno.
-
Deploy automático con Odoo.sh y pruebas por entorno (staging, prod).
-
-
🧰 Módulo 10: Buenas Prácticas ERPly4Lecciones · 45 min
-
Guía de estilo para módulos personalizados.
-
Estandarización de prefijos y namespaces.
-
Documentación interna por modelo, método y vista.
-
Preparación para soporte y escalabilidad del sistema.
-
-
Certificación1Lecciones ·
-
ERPly: Desarrollador Odoo10 xp
-