feat(crm): refinamientos PDF 07-ago + Expediente (referencia única) #4
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/crm-refinamientos-solicitud-cotizacion"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refinamientos de la sesión (PDF 07-ago) + Expediente (referencia única)
14 ajustes del PDF a Solicitudes/Cotizaciones/Cotizador/Prospecto + una referencia interna única (Expediente) que hila todo el trámite para localizar su historia de un jalón y conectarla con otros sistemas. Entregado por fases (4 commits).
Fase A — Solicitud
Fecha de solicitud automática (editable) · modalidad dependiente del transporte (marítimo→FCL/LCL/Ambas, aéreo→Aérea, terrestre→FTL/LTL, ferro/multimodal sin modalidad) · ciudad/puerto/aeropuerto dependientes del país (catálogos
seed_locations, con respaldo de texto) · agente en destino filtrado a corresponsal/aduanal · volumen SIEMPRE en m³ (conversión por unidad) · P/Vol aéreo etiquetado con unidad · moneda junto al valor de la mercancía · lista con columna Cliente + filtro · "Válida hasta" en el form de tarifa.Fase B — Cotizaciones / Cotizador
Lista de cotizaciones muestra la solicitud referenciada · Cotizador vinculado:
?service_request_id=prellena;?quote_id=habilita "Agregar" que envía la opción como concepto(s); botón "Cotizador" en el detalle de la cotización.Fase C — Prospecto
Se agrega "Medio de contacto preferido" (catálogo
medio_contacto, conservando "Origen") · fix de visualización de documentos: endpoint proxyGET /uploads/download(transmite por backend, ya no exponeminio:9000).Fase D — Expediente (referencia única) ⭐
Tabla
crm.casescon folioEXP2026-08-001; nace al crear la Oportunidad y se hereda víacase_ida Solicitud → Cotización → Operación → Factura (propagación en loscreate_*, avance de etapa que no retrocede). EndpointsGET /v1/crm/cases,/cases/{id},/cases/by-ref/{ref}con timeline (para UI y otros sistemas). UI: Expedientes (lista + timeline vertical), chip "📁 Expediente" en los detalles, entrada en el sidebar. El consecutivo de folios no tiene tope (soporta > 10,000,000/mes).Verificación
Migraciones reversibles (
f0a1b2c3d4e5,d4e5f6a7b8c9) en PostgreSQL. 113 pruebas backend en verde (incl.test_cases, P/Vol, folios).svelte-checksin errores nuevos.PENDIENTE DECISIÓN (documentado)
ferroviario/multimodalno tienen modo de tarifario;AMBAS→maritimo_fclen el prellenado. Moneda de la opción vs. de la cotización no se reconcilia (se suma tal cual).🤖 Generated with Claude Code
- Tabla crm.cases (expediente) con folio EXP2026-08-001 (next_folio entidad EXP, sin dirección). Nace al crear la Oportunidad y se hereda vía case_id a solicitud → cotización → operación → factura. advance_stage solo avanza. - case_id (FK a crm.cases) en crm.opportunities/service_requests/quotes, ops.shipments y fin.invoices; propagación en sus create_*. Migración d4e5f6a7b8c9 reversible. - Endpoints GET /v1/crm/cases, /cases/{id}, /cases/by-ref/{ref} con timeline (historia completa para UI y otros sistemas). - Frontend: casesAPI, ruta /dashboard/crm/expedientes (lista + timeline vertical), chip "📁 Expediente" en solicitud/cotización, "Expedientes" en el sidebar. - Consecutivo de folios sin tope (soporta >10,000,000/mes). - 4 pruebas de expediente (minteo, propagación, timeline, no-retroceso). Suite en verde (113). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>Pull request closed