v2.1.0 — Cotizaciones avanzadas
PDF, timeline de eventos, acciones del comprador y actualización de perfil — Abril 2026
Fecha de lanzamiento: Abril 2026
Esta versión completa el módulo de cotizaciones con generación de PDF, historial de eventos, acciones dedicadas del comprador y soporte para dirección de facturación. También incluye la primera acción de autoservicio para compradores.
Cotizaciones — Generación de PDF
Los vendedores y compradores pueden ahora descargar un PDF de cualquier cotización activa directamente desde el detalle.
- Nuevo endpoint
GET /api/v1/quotes/:id/pdf— genera el PDF en tiempo real y lo transmite sin almacenamiento en disco. - Plantilla con encabezado (número de cotización, título, fechas de creación y expiración), bloque de contacto del comprador, direcciones de envío y facturación en columnas paralelas, tabla de ítems con variante y opciones, desglose financiero completo (subtotal, descuento, envío, impuesto, total) y sección de términos y condiciones.
- El botón de descarga en
QuoteDetailsolo es visible en estados activos:submitted,negotiating,approved,partially_approved,converted. - Dirección de facturación por cotización: nueva columna
billingAddressIdenquotes, seleccionable al crear o editar la cotización. - Términos y condiciones configurables: se almacenan en
CompanyConfigurationbajo la clavepdf_terms_and_conditionsy se incluyen automáticamente en el pie del PDF.
Cotizaciones — Timeline de eventos
Cada cotización ahora tiene un historial completo de auditoría accesible vía API.
- Nuevo endpoint
GET /api/v1/quotes/:id/timeline— retorna todos los eventos en orden cronológico. - Cada evento registra: acción, tipo de actor (
admin,buyer,system), nombre del actor, timestamp y metadatos adicionales. - Los eventos se registran automáticamente en cada transición del flujo: submit, review, respond, negotiate, approve, partial approve, reject, cancel, expire y convert.
- Se incluyó un backfill de eventos para cotizaciones existentes.
Cotizaciones — Acción submit del comprador
El flujo del comprador ahora tiene un endpoint dedicado para enviar cotizaciones, separado de la edición.
- Nuevo endpoint
POST /api/v1/buyer/quotes/:id/submit. - Valida que la cotización esté en
drafty tenga al menos un ítem antes de hacer la transición asubmitted. - Registra el evento
submitteden el timeline.
Clientes — Actualización de perfil propio
Los compradores pueden actualizar sus datos personales desde el portal sin necesidad de intervención administrativa.
- Nuevo endpoint
PUT /api/v1/customers/me. - Permite actualizar nombre, apellido, teléfono e idioma preferido.
- No permite cambiar email ni estado — esas operaciones siguen siendo exclusivas del staff.
Notas de migración
Esta versión incluye tres migraciones de base de datos:
add_billing_address_to_quotes— agrega columnabillingAddressIda la tablaquotes.update_quote_address_relations— actualiza las relaciones de direcciones en cotizaciones existentes.add_quote_events— crea la tablaQuoteEventpara el timeline.backfill_quote_events— popula eventos históricos para cotizaciones existentes.
Ejecutar pnpm db:migrate antes de desplegar esta versión.