Saltar a contenido

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:

  1. El estado del Bid pasa a Bid Approved.
  2. El sistema crea el Job correspondiente vinculado por bid_id.
  3. El estado inicial del Job es Ready to Start.
  4. 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_reason es 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.