Bids¶
Disponible para: Owner, Project Manager, Accounting, Supervisor (solo lectura)
Un Bid es el punto de partida de todo trabajo en Hardhat Flow. Reúne el alcance completo, la logística y los detalles financieros de un proyecto propuesto antes de que comience cualquier trabajo de campo. Una vez aprobado el Bid, se crea automáticamente un Job — en ese momento el Bid pasa a solo lectura.
¿Qué es un Bid?¶
Un Bid representa una propuesta enviada a un cliente para un alcance de trabajo definido. Registra todo lo necesario para cotizar y planificar el Job: ubicación, personal, materiales, permisos, inspecciones y condiciones financieras.
Los Bids siguen un proceso de aprobación. Solo un Owner puede aprobar o rechazar un Bid. Un Project Manager crea y administra Bids en nombre de sus proyectos asignados.
Campos del Bid¶
Detalles del proyecto¶
| Field | Description |
|---|---|
client |
Empresa o persona para quien se realiza el trabajo. Use + New Client en el formulario New Bid para crear un cliente en línea. |
contact |
Punto de contacto del cliente para este Bid. Seleccione entre los contactos del cliente o use + New Contact para agregar uno en línea. |
location |
Dirección física o descripción del sitio del trabajo. |
pm |
Project Manager asignado a este Bid. |
supervisor |
Supervisor de campo responsable de la ejecución. |
scope |
Descripción en texto libre del trabajo a realizar. |
measurements |
Dimensiones, cantidades u otras notas de metrado relevantes. |
expected_completion_date |
Fecha estimada de terminación del trabajo. |
Logística¶
| Field | Description |
|---|---|
shift_type |
Si el trabajo es turno day o night. |
escort_name |
Nombre del acompañante (si se requiere para acceso al sitio). |
equipment_needed |
Descripción del equipo necesario para realizar el trabajo. |
materials_status |
Estado actual del abastecimiento de materiales. Uno de: None, Needed, Ordered, Shipped, Delivered. |
permits_needed |
Booleano — si se requieren permisos para este trabajo. |
inspections_status |
Estado de inspección actual. Uno de: None, Needed, Requested, Pass, Fail. |
po_number |
Número de orden de compra del cliente, requerido antes de aprobar el Bid en la mayoría de los flujos. |
Finanzas¶
| Field | Description |
|---|---|
bid_price |
Precio total cotizado al cliente por el trabajo. |
taxable |
Booleano — si este Bid está sujeto a impuesto sobre ventas. La tasa proviene de CompanySettings. |
Banderas¶
| Field | Description |
|---|---|
priority |
Booleano — marca el Bid como alta prioridad. Dispara SMS al PM y al Supervisor. Destacado en el feed del Dashboard. |
blocked |
Booleano — indica que el Bid no puede avanzar por un problema sin resolver. |
blocked_reason |
Texto explicando por qué el Bid está bloqueado. Obligatorio cuando blocked es true. |
Máquina de estados¶
| Status | Description | Who Can Set |
|---|---|---|
New Bid |
Estado predeterminado al crear. El Bid está en borrador. | Sistema (al crear) |
Bid Awaiting PO |
Bid completo y en espera de la orden de compra del cliente. | Project Manager |
Bid Approved |
Bid aceptado. Se crea un Job automáticamente. | Owner |
Bid Rejected |
Bid rechazado. No se crea Job. | Owner |
Bid Cancelled |
Bid retirado antes de una decisión. | Owner |
New Bid → Bid Awaiting PO → Bid Approved (creates Job)
↘ Bid Rejected
Bid Cancelled (from any pre-approved state, Owner only)
Los Bids aprobados son solo lectura
Una vez que un Bid alcanza Bid Approved, el registro queda bloqueado. Todo el trabajo posterior ocurre en el Job asociado. Para hacer cambios, debe cancelarse el Job y crearse un Bid nuevo.
La bandera Blocked¶
Poner blocked = true en un Bid indica que algo impide el avance — permiso faltante, pregunta del cliente sin resolver o retraso de materiales.
- Debe proporcionarse
blocked_reasonal bloquear. - Los Bids bloqueados aparecen como alertas en el feed del Dashboard para el PM y el Owner asignados.
- Al desbloquear un Bid se limpia la alerta.
La bandera Priority¶
Poner priority = true marca un Bid como urgente.
- Se envía SMS de inmediato al PM y al Supervisor asignados.
- Los Bids prioritarios aparecen arriba en el panel de alertas del Dashboard.
- El PM u Owner pueden alternar la bandera en cualquier momento antes de la aprobación.
Generación de PDF¶
Puede generarse un PDF imprimible del Bid en cualquier momento.
- Renderizado con WeasyPrint desde una plantilla del servidor.
- Incluye detalles del proyecto, finanzas, campos logísticos y estado actual.
- Disponible para Owner, PM y Accounting.
- El PDF refleja el estado del Bid en el momento de generarlo. No se almacena — se genera bajo demanda.
Use la exportación a PDF al compartir detalles del Bid con clientes o para archivo fuera del sistema.
Bloqueo de solo lectura tras crear el Job¶
Cuando un Bid pasa a Bid Approved, el sistema crea un registro de Job vinculado por bid_id. A partir de ahí:
- El registro del Bid no puede editarlo ningún usuario, incluido el Owner.
- El Bid es la fuente de verdad de los detalles del proyecto en el Job asociado.
- Todas las actualizaciones operativas se hacen en el Job, no en el Bid.
Acceso por rol¶
| Action | Owner | PM | Accounting | Supervisor | Badge Worker |
|---|---|---|---|---|---|
| Create bid | Yes | Yes | No | No | No |
| Edit bid (pre-approval) | Yes | Yes (own) | No | No | No |
| View bid | Yes | Yes | Yes | Yes (assigned) | No |
| Submit for PO | Yes | Yes | No | No | No |
| Approve bid | Yes | No | No | No | No |
| Reject bid | Yes | No | No | No | No |
| Cancel bid | Yes | No | No | No | No |
| Set priority flag | Yes | Yes | No | No | No |
| Set blocked flag | Yes | Yes | No | No | No |
| Generate PDF | Yes | Yes | Yes | No | No |
Los Supervisors pueden ver Bids a los que están asignados, pero no pueden editar ningún campo del Bid.