Resuelve token o id a datos de la ficha/solicitud para prellenar el formulario.
13-grabado-a3
POST grabadoA3
Toggle del flag con diagnóstico de filas afectadas.
Modelo de datos esencial
Tablas y relaciones que sostienen todo el flujo. Soft-delete vía deleted_at en todas.
erDiagram
SOLICITUDES ||--o{ FICHAS_ALTA : genera
FICHAS_ALTA ||--o{ LOCALES : tiene
FICHAS_ALTA ||--o{ ADJUNTOS_JSONB : "tiene"
FICHAS_ALTA ||--|| SEPA_MANDATO_JSONB : "firma"
FICHAS_ALTA ||--o{ PROYECTOS : "se convierte en"
PROYECTOS ||--o{ TAREAS : tiene
SOLICITUDES {
uuid id PK
text access_token UK
uuid ficha_id FK
text estado
jsonb datos
timestamptz created_at
}
FICHAS_ALTA {
uuid id PK
text estado "rellenado|completada"
text denominacion
text cif
text email
bool grabado_a3
jsonb sepa_mandato
jsonb adjuntos
timestamptz fecha_solicitud
timestamptz fecha_rellenado
timestamptz fecha_completado
timestamptz grabado_a3_at
}
LOCALES {
uuid id PK
uuid ficha_id FK
}
PROYECTOS {
uuid id PK
text cliente
text estado
text asana_project_url
}
Nota semántica: en fichas_alta el estado completada significa
"rellenada por el cliente" y rellenado significa "completada por el comercial". Triggers SQL
actualizan automáticamente fecha_rellenado, fecha_completado y grabado_a3_at
al cambiar el campo correspondiente.
Cómo se usa cada acción clave
Acción
Quién
Dónde
Qué pasa
Solicitar ficha
Comercial
lista.html · botón "Solicitar ficha"
Crea solicitud + envía email al cliente con URL ?t=<token>.
Rellenar solicitud
Cliente
solicitud.html (link del email)
Datos empresa + JP + firmante + TPV (integrado/no) + IBAN + firma SEPA.
Completar ficha
Comercial
Pestaña "Rellenado cliente" → botón
Abre index.html con los datos prellenados; al guardar pasa a estado rellenado.
Editar ficha
Comercial / Yurest
Pestaña "Fichas" · botón Editar
UPDATE solo de campos enviados — no destructivo.
Eliminar ficha/solicitud
Comercial / Yurest
Pestañas correspondientes · botón Eliminar
Soft-delete con confirmación + toast de diagnóstico.
Grabar en A3
Contabilidad
contabilidad.html · toggle por fila
UPDATE flag grabado_a3; trigger setea grabado_a3_at.
Ver mandato SEPA
Contabilidad
contabilidad.html · botón "📄 Ver mandato"
Modal con datos legales completos + firma + descarga PDF (popup, una sola hoja A4).
TPV no integrado
Cliente
solicitud.html · checkbox cabecera TPV
Al enviar: tarea automática en Asana (proyecto Integraciones) + email a soporte/Yurest/Roocket.
"Completada" = rellenada por cliente · "Rellenado" = cerrada por comercial. La nomenclatura es legacy pero los
triggers SQL ya alinean fechas con esta semántica.