Skip to content

Ingeos/ingeos_evaluation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

🧩 Ejercicio Técnico – Desarrollador Odoo

Objetivo:
Evaluar las capacidades técnicas de los candidatos en el desarrollo de módulos Odoo: modelado de datos, herencia, vistas, lógica de negocio, y buenas prácticas. Cada ejercicio aumenta en dificultad, completa totalmente cada ejercicio antes de pasar al siguiente. Valoraremos más que la solución entregada esté correcta, limpia y mantenible a que estén todos los ejercicios hechos. Añade comentarios donde estimes oportuno.

Duración estimada: 3 horas
Versión recomendada de Odoo: 16 o 17
Entorno: Repositorio GitHub, sube commits pequeños con un pequeño mensaje acerca de la subida (max. 1 línea), lee TODO el ejercicio antes de empezar hacerlo.

FORKEA EL REPO Y PÁSANOS EL ENLACE A TU GITHUB

📦 Contexto funcional

La empresa ficticia Ingeos Solutions necesita un módulo para gestionar proyectos internos y tareas de empleados.
Tu objetivo será desarrollar el módulo ingeos_projects, siguiendo los apartados que se detallan a continuación.


🚀 Ejercicio paso a paso

🟢 Nivel 1 – Estructura básica del módulo

Requisitos:

  1. Crear el módulo ingeos_projects con la estructura estándar de Odoo.
  2. Crear un modelo ingeos.project con los siguientes campos:
    • Nombre- Obligatorio
    • Descripción
    • Responsable: -> res.partner
    • Fecha inicio
    • Fecha fin
  3. Crear un menú principal Ingeos / Proyectos / Proyectos con vistas tree y form para gestionar proyectos.

🟡 Nivel 2 – Relaciones y herencia de modelos base

Requisitos:

  1. Crear un modelo ingeos.task con los campos:
    • Nombre
    • Proyecto (ingeos.project)
    • Asignado (res.partner)
    • Horas utilizadas (registrará la fracción de horas usadas)
    • Estado (Valores posibles: borrador, en curso, hecho) - Activar el tracking para este campo
  2. Añadir un One2many en el modelo ingeos.project para listar las tareas.
  3. Heredar el modelo res.partner:
    • Campo is_ingeos_employee (Boolean)
    • Campo employee_code (Char, solo editable si el empleado está marcado como tal)
    • Campo default_project_id (many2one, a ingeos.project)
  4. Personalizar la vista de res.partner para mostrar los nuevos campos.
  5. El campo Responsable del proyecto solo podrá elegir partners marcados con el boolean de is_ingeos_employee

🟠 Nivel 3 – Lógica de negocio y campos dinámicos

Requisitos:

  1. En ingeos.project, crear un campo total_hours (Float, compute) que sume las horas de todas las tareas del proyecto.
  2. En ingeos.task, crear botones:
    • “Iniciar tarea” → cambia el estado a in_progress
    • “Finalizar tarea” → cambia el estado a done
  3. Agregar un método @api.onchange('project_id') que:
    • Si assigned_id está vacío, lo autocomplete con el responsible_id del proyecto.

🔵 Nivel 4 – Vistas avanzadas y experiencia de usuario

Requisitos:

  1. En la vista formulario de proyecto:
    • Mostrar un smart button con el número total de tareas, al pulsarlo abrir el tree de tareas.
    • Añadir un notebook con una pestaña “Tareas” que muestre un tree editable inline.
  2. Crear una vista kanban para ingeos.task que muestre el estado visualmente.
  3. Añadir un punto de menú Ingeos / Proyectos / Tareas con la vistas kanban, tree y form de tareas.

🔴 Nivel 5 – (Opcional / Muy difícil) Automatización y permisos

Requisitos:

  1. Implementar una automatización:
    • Si la fecha de finalización (end_date) de un proyecto ya pasó, todas sus tareas deben marcarse como done.
    • Puedes hacerlo mediante un cron o lógica en write().
  2. Definir grupos y reglas de acceso:
    • Solo el grupo Ingeos Manager puede eliminar proyectos.
    • El grupo Ingeos User puede crear tareas, pero no proyectos.
    • El grupo Ingeos User solo verá las tareas y los proyectos en los que esté asignado.
  3. Si has leído hasta aquí muy bien, NO añadas el campo del Ejercicio 2, default_project_id al modelo res.partner.
  4. Escribir tests unitarios usando odoo.tests.common.TransactionCase para validar:
    • Cálculo correcto de total_hours
    • Cambio de estado de tareas mediante botones

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published