Jobs¶
Disponible para: Owner, Project Manager, Supervisor, Badge Worker (limitado), Accounting (solo lectura)
Un Job representa trabajo activo en curso. Los Jobs se crean automáticamente cuando se aprueba un Bid — nunca se crean a mano. El Job hereda los detalles del proyecto del Bid de origen y sigue la ejecución hasta la terminación y la facturación.
Cómo se crea un Job¶
Los Jobs los genera el sistema. Cuando un Owner aprueba un Bid:
- El estado del Bid pasa a
Bid Approved. - El sistema crea el Job correspondiente vinculado por
bid_id. - El estado inicial del Job es
Ready to Start. - El PM y el Supervisor asignados al Bid pasan al Job.
No puede crear un Job directamente. Todos los Jobs provienen de un Bid aprobado.
Campos del Job¶
| Field | Description |
|---|---|
bid_id |
Referencia al Bid de origen. El Bid es la fuente de verdad para cliente, ubicación, alcance y detalles financieros. |
pm |
Project Manager responsable de este Job. Heredado del Bid; puede actualizarse en el Job. |
supervisor |
Supervisor de campo para la ejecución. Heredado del Bid; puede actualizarse en el Job. |
start_date |
Fecha en que el trabajo comenzó oficialmente. |
completion_date |
Fecha en que el trabajo terminó. Se establece cuando el estado pasa a Completed o Needs Invoice. |
status |
Estado actual del flujo del Job. Vea la máquina de estados abajo. |
blocked |
Booleano — si el Job está bloqueado para avanzar. |
blocked_reason |
Obligatorio cuando blocked es verdadero. Texto que explica el bloqueo. |
priority |
Booleano — marca el Job como alta prioridad. Dispara SMS al PM y al Supervisor. |
Máquina de estados¶
| Status | Description | Who Can Set |
|---|---|---|
Ready to Start |
Job creado, en espera de que comience el trabajo de campo. | Sistema (al crear el Job) |
In Progress |
El trabajo ha comenzado. | PM, Supervisor |
Completed / Needs Invoice |
Trabajo terminado; aún no se ha creado el Invoice. | PM, Owner |
Job Cancelled |
Job cancelado antes o durante el trabajo. No se creará Invoice. | Owner |
Ready to Start → In Progress → Completed / Needs Invoice
↘ Job Cancelled (Owner only, any pre-completed state)
Una vez que un Job alcanza Completed / Needs Invoice, no puede retroceder. Avance el estado con cuidado.
Asignaciones de trabajadores¶
Los Jobs admiten asignaciones muchos a muchos de trabajadores mediante el modelo JobWorkerAssignment.
- Los trabajadores asignados son usuarios con rol Badge Worker.
- Las asignaciones las administra el PM o el Supervisor.
- Un trabajador debe tener cuenta activa en el mismo inquilino para asignarse.
- Los trabajadores ven los Jobs a los que están asignados (vista limitada: estado, ubicación, fecha de inicio).
- El historial de asignaciones queda en el ActivityLog con tipo de acción
assignment.
Asignaciones de subcontratistas¶
Los Jobs también admiten asignaciones de subcontratistas mediante el modelo JobSubcontractor.
- Los subcontratistas son terceros externos, registrados por nombre e información de contacto.
- Agregar o quitar un subcontratista queda en el ActivityLog con tipo
subcontractor_added. - Los subcontratistas no tienen cuentas en el sistema — son registros informativos solamente.
- El PM administra las asignaciones de subcontratistas.
La bandera Blocked¶
Poner blocked = true en un Job detiene el seguimiento de avance y dispara notificaciones.
- Se envía SMS al PM y al Owner cuando un Job se bloquea.
- Al quitar el bloqueo, se envía SMS al PM.
blocked_reasones obligatorio al activar la bandera.- Los Jobs bloqueados aparecen como alertas en el feed del Dashboard.
Un Job bloqueado sigue en su estado actual. Bloquear no cambia el estado — es una señal aparte.
La bandera Priority¶
Poner priority = true marca un Job como urgente.
- Dispara SMS inmediato al PM y al Supervisor asignados.
- Los Jobs prioritarios aparecen en el panel de alertas del Dashboard para el Owner y el PM.
- El PM u Owner pueden alternarla en cualquier momento.
Reglas de visibilidad por rol¶
| Role | What They Can See |
|---|---|
| Owner | Todos los Jobs del inquilino. |
| Project Manager | Jobs donde es el PM asignado. |
| Accounting | Todos los Jobs (solo lectura). |
| Supervisor | Jobs donde es el Supervisor asignado. |
| Badge Worker | Jobs a los que está explícitamente asignado (solo campos limitados). |
Los Badge Workers solo ven estado del Job, ubicación y fecha de inicio. No pueden ver detalles financieros ni información del Bid.