Antes de pegar · 2 decisiones
Dos definiciones rápidas. La primera ya tiene recomendación; la segunda la confirma ORVE y afecta el cálculo de la previsualización. Los prompts ya vienen con el valor por defecto, pero conviene cerrarlas.
Tipo de contrato: filtro, no obligatorio
Como cada rubro define su tipo (1:1), el tipo se deja como filtro opcional + badge, y se autollena al elegir rubro. No se obliga a elegir tipo primero.
Recomendado · ya aplicado en los promptsBase del anticipo y la retención
¿Los % se calculan sobre el Subtotal (sin IVA) o sobre el Gran Total? Por estándar de obra se dejó sobre Subtotal. Si ORVE define Gran Total, se cambia la base en el prompt de previsualización.
Por confirmar · ORVE / EmilianoDariana Lovable
Todo sobre el panel de ORVE que ya existe. Cada prompt es una iteración: no reconstruye nada y respeta el estilo verde/blanco. Pégalos en orden.
D1. Rubro como filtro inteligente (tipo opcional + buscador + badge)
En el panel de contratos de ORVE que YA existe, no rehagas nada y conserva el estilo verde/blanco. Mejora SOLO la selección de rubro en "Crear contrato": - Arriba del rubro, agrega un filtro de Tipo de contrato como segmented control con 4 opciones: Todos · PMG y TGar · P.Serv · C.Grales. Por defecto "Todos". Es solo un filtro de la lista, NO es obligatorio. - Convierte el Rubro en un buscador (typeahead) que filtra por nombre conforme se escribe. Cada opción muestra a la derecha un badge pequeño con su tipo (PMG / P.Serv / C.Grales). - Al elegir un rubro, el campo "Tipo de contrato" se autollena y se muestra en SOLO LECTURA (derivado del rubro, nunca editable). - Consistencia: si el usuario filtra por un tipo y luego busca, solo deben aparecer rubros de ese tipo. Usa los mismos componentes y estilos de ORVE. No toques el resto del formulario ni las demás secciones.
D2. Montos con formato real (es-MX, IVA y Gran Total automáticos)
Sigue en "Crear contrato", paso de Montos, sin tocar el resto y conservando el estilo verde/blanco.
- Muestra todos los montos en formato es-MX: signo $, separador de miles con coma y 2 decimales (ej. $1,232,332.00). Usa Intl.NumberFormat('es-MX', { style:'currency', currency:'MXN' }).
- Los inputs deben mostrar el separador de miles mientras se escribe, pero guardar/enviar el número limpio (sin comas ni $).
- IVA = 16% del Subtotal, automático pero editable (como ya está).
- Gran Total (auto) = Subtotal + IVA + Monto convenio modificatorio. Recalcula en vivo al cambiar cualquiera.
- Si un campo está vacío, trátalo como 0 para los cálculos.
No cambies la disposición de los campos que ya tienes, solo el formato y el recálculo.
D3. Previsualización viva — criterios convertidos a pesos
En "Crear contrato" agrega una PREVISUALIZACIÓN en vivo del contrato: un panel lateral fijo (o el paso "Revisión y Envío" actualizándose en tiempo real). Convierte los criterios del rubro (que son porcentajes) a PESOS reales usando los montos capturados. Conserva el estilo verde/blanco de ORVE. Muestra, todo en formato es-MX ($ y comas, 2 decimales): RESUMEN - Folio (o "se genera al guardar"), rubro + su tipo (badge), proyecto. MONTOS - Subtotal, IVA, convenio modificatorio, Gran Total. CRITERIOS EN PESOS (base de cálculo = SUBTOTAL) - Anticipo (X%) -> monto en $ - Retención fondo de garantía (X%) -> monto en $ - Modalidad de pago de saldo (texto del rubro) - Amortización: hasta Y% de avance (amortización real Z%) - Garantía de anticipo, % de cumplimiento, seguro RC, anexos (chips) Reglas: - Todo se recalcula al cambiar rubro o montos. - Si un dato no aplica o falta, muéstralo como "—". - IMPORTANTE: la base de cálculo del anticipo y la retención es el SUBTOTAL. (Si más adelante ORVE define que es sobre el Gran Total, solo cambia la variable base.) Hazlo claro y legible, tipo ficha de contrato. Micro-animación suave al aparecer/actualizar.
D4. Pipeline — renombrar y agregar "Contratos por firmar"
Ajusta el tablero/pipeline de contratos que YA existe (no lo reconstruyas, conserva estilo verde/blanco): - Renombra la etapa "Pipeline" a "Proyectos". - "Jurídico" se queda igual. - Inserta una etapa NUEVA llamada "Contratos por firmar" ENTRE Jurídico y Aprobados. - En "Contratos por firmar" agrega un botón "Marcar firmado": al accionarlo, el contrato pasa a "Aprobados". Por ahora es manual (la firma electrónica e.firma SAT se integra en una fase posterior). - Orden final de etapas: Proyectos -> Jurídico -> Contratos por firmar -> Aprobados. El valor de estatus debe coincidir con el catálogo de NocoDB que actualiza backend: BORRADOR, PROYECTOS, JURIDICO, POR_FIRMAR, APROBADO. Respeta los componentes existentes.
Bruno Claude Code
El cambio de pipeline no es solo visual: el estatus vive como catálogo en NocoDB y la lógica en n8n. Este bloque deja el enum y el flujo alineados con lo que hará Dariana.
B1. Actualizar enum estatus + flujo en n8n + placeholder de firma
En NocoDB (base "Sistema de Contratos ORVE"), actualiza el catálogo de estatus de la tabla `contratos`. 1) Nuevo enum del campo `estatus` (SingleSelect), en este orden: BORRADOR, PROYECTOS, JURIDICO, POR_FIRMAR, APROBADO - Renombra/mapea "PIPELINE" -> "PROYECTOS". - Agrega "POR_FIRMAR" entre JURIDICO y APROBADO. - Migra registros existentes: PIPELINE -> PROYECTOS, y FIRMADO -> APROBADO si existiera ese valor previo. 2) Agrega dos campos a `contratos` como placeholder de la futura firma e.firma SAT: - firmado (Checkbox, default false) - fecha_firma (DateTime, nullable) 3) Actualiza el workflow de n8n que mueve estatus para respetar el flujo nuevo: PROYECTOS -> JURIDICO -> POR_FIRMAR -> APROBADO. Regla: cuando firmado se ponga en true, el contrato pasa a APROBADO y se setea fecha_firma = now. Al terminar, confírmame el enum final, cuántos registros se migraron y un ejemplo de transición POR_FIRMAR -> APROBADO.