Asistencias Técnicas y Reparaciones en Bench
El módulo gestiona dos tipos de intervención correctiva sobre los equipos de los clientes: las Asistencias Técnicas (AT) y las Reparaciones en Bench (RB). Ambas comparten prácticamente todo — estados, campos, integración con Odoo, reporte y archivado — y solo se diferencian en la numeración, en el botón de conversión y en detalles de presentación. Se administran desde una única pantalla de tarjetas.
Cada AT/RB recibe un número correlativo por día y tipo (AT-AAAAMMDD-NN /
RB-AAAAMMDD-NN) generado de forma atómica. El número es UNIQUE e
inmutable: se asigna una sola vez y nunca se reescribe. Como el alta es transaccional
(un único commit), si falla la carga de los hijos no se consume el número, evitando saltos en la secuencia.
AT vs RB: qué las diferencia
Son casi idénticas. Comparten estados, campos, endpoints, integración con Odoo (ambas van al mismo proyecto), reporte y archivado. Las únicas diferencias reales son:
| Aspecto | AT Asistencia Técnica | RB Reparación en Bench |
|---|---|---|
| Numeración | AT-AAAAMMDD-NN | RB-AAAAMMDD-NN |
| Botón "→ RB" | ✅ Presente (convierte a RB) | — No aplica |
| Worksheet de Odoo | 8 (AT) | 9 (RB) |
| Color de la tarjeta | Azul | Verde |
| Proyecto Odoo | 13 — "Correctivos" (el mismo para ambas) | |
| Estados, campos, endpoints, reporte, archivado | Idénticos | |
A diferencia de otros registros del sistema, las asistencias no tienen fecha de vencimiento: representan un trabajo correctivo puntual, no un recurso con vigencia. El único dato temporal es la fecha de ejecución.
Campos de una AT / RB
| Campo | Detalle |
|---|---|
| Tipo | AT o RB. Define la numeración, el color de la tarjeta y el worksheet de Odoo. |
| Número | UNIQUE, inmutable y automático. Correlativo atómico por día y tipo (AT-/RB-AAAAMMDD-NN). |
| Estado | Por defecto Por Realizar al crear. |
| Fecha de ejecución | Día en que se realiza (o realizará) la intervención. |
| Reporte | Texto del reporte técnico de la asistencia. |
| Usuario responsable del sector | Si no se elige explícitamente, toma el usuario primario del sector. |
| Técnico asignado | Es el primero de los técnicos seleccionados en el modal. |
| Creado por | Usuario que dio el alta (audit trail). |
| odoo_task_id | ID de la tarea en Odoo, una vez creada con "Crear Odoo". |
Alta: selección en el modal
Al crear una AT/RB, tras elegir laboratorio, sector y equipo, el modal ofrece:
| Selección | De dónde sale |
|---|---|
| Módulos | Los módulos del equipo elegido. |
| Técnicos | Usuarios @ion-target.com, multi-selección. El primero queda como técnico asignado. |
| Consumibles | Los consumibles del equipo. |
| STD (instrumentos/estándares/solventes) | Solo los recursos VIGENTES. |
El alta se confirma en un único commit: la asistencia y todos sus hijos (técnicos, módulos, consumibles, STD) se guardan juntos. Si falla la carga de algún hijo, se revierte todo y el número correlativo no se consume, garantizando trazabilidad sin saltos.
Estados
El flujo típico avanza así, pero no hay máquina de estados que restrinja las transiciones: desde cualquier estado se puede pasar a cualquier otro. Lo único que bloquea el cambio es que la asistencia esté archivada.
Flujo habitual. El estado por defecto al crear es "Por Realizar".
| Estado | Descripción |
|---|---|
| Por Realizar | Estado inicial por defecto. Registrada, sin ejecutar. |
| Programado | Fecha acordada, técnico asignado. |
| En Ejecución | Intervención en curso. |
| Resuelto | Intervención completada. El "Finalizado" de Odoo se traduce a este estado. |
| Cancelado | Intervención cancelada. |
El filtro "Activos"
El filtro por defecto "Activos" muestra únicamente las asistencias en Por Realizar y Programado. No incluye "En Ejecución" (ni Resuelto ni Cancelado). Si no ves una AT/RB que está en ejecución, cambiá el filtro a "Todos" o al estado específico.
Conversión AT → RB
El botón "→ RB" existe solo en las AT. Aparece en toda AT no archivada, en cualquier estado — no hace falta que esté Resuelta.
Al convertir se crea una RB nueva que hereda del equipo equipo, usuario, módulos y consumibles. No hereda los técnicos, ni los STD, ni el reporte: la RB arranca en blanco en esos tres puntos. La AT original pasa a Resuelto, con el reporte de cierre que escribís en el prompt de conversión.
Integración con Odoo
Ambos tipos se integran con el proyecto 13 "Correctivos" de Odoo. A diferencia de lo que podría suponerse, guardar una AT/RB NO crea la tarea en Odoo automáticamente: la creación de la tarea es una acción manual y aparte.
POST /odoo/from-odoo crea la tarea en Odoo. Requiere que el laboratorio
tenga vínculo con Odoo (partner). Recién ahí queda el odoo_task_id en la asistencia.
POST /odoo/to-odoo envía los datos de la asistencia a la tarea de Odoo.
POST /odoo/sync-from-odoo trae de Odoo las novedades de la tarea.
Los botones sincronizan datos (crear / empujar / traer). No existe un botón que abra la tarea en la interfaz de Odoo.
El cierre desde Odoo llega por el webhook POST /odoo/webhook-stage, protegido por un
secreto en la URL. Para AT/RB, el estado "Finalizado" de Odoo se
traduce a "Resuelto" en ITS. El webhook es fail-closed: si el secreto no
coincide, responde 503 y no procesa nada.
Reporte
El detalle de cada asistencia ofrece tres salidas del reporte:
| Botón | Qué hace |
|---|---|
| Imprime el reporte (para PDF/papel). | |
| Correo | Envía el reporte por email, con adjunto. |
| Exportar | Imprime la grilla filtrada. |
Tabla de acciones
| Acción | Endpoint | Condiciones |
|---|---|---|
| Crear | POST /asistencias | Alta transaccional. |
| Cambiar estado | PATCH /asistencias/{id}/estado | Sin motivo (tampoco al Cancelar). |
| Editar | PUT /asistencias/{id} | 409 si está archivada. |
| Archivar | PATCH /asistencias/{id}/archivar | Motivo ≥ 5 caracteres (en pantalla). |
| Restaurar | PATCH /asistencias/{id}/restaurar | Solo administrador. |
| Eliminar | DELETE | No existe → 405. |
| Ver | GET /asistencias/{id} | — |
| Listar | GET /asistencias?incluir_archivados= | — |
| Crear tarea Odoo | POST /odoo/from-odoo | Requiere lab vinculado a Odoo. |
| Push a Odoo | POST /odoo/to-odoo | — |
| Sync desde Odoo | POST /odoo/sync-from-odoo | — |
No hay borrado: cualquier DELETE responde 405. Para dar de baja se
archiva con motivo (mínimo 5 caracteres), queda en el audit trail y solo un
administrador puede restaurar. La edición sobre una asistencia archivada se bloquea
con 409.
Los STD usados en la asistencia quedan registrados en el logbook (con el certificado y vencimiento vigentes al momento del uso). Cada acción sobre la AT/RB se registra de forma contemporánea en el audit trail (ALCOA+).
Preguntas frecuentes
POST /odoo/from-odoo), que además requiere que el laboratorio esté vinculado a Odoo (partner).