feat(alta): borrador, pre-llenado desde cotización y liga remota de firma
- Borradores por vendedor (guardar/continuar/eliminar), se limpia al registrar - Pre-llenado con ?cotizacion=<id> (cliente, contacto, proyecto, montos); botón 'Iniciar alta' en Mis cotizaciones del cotizador - Liga remota pública /client/firma/<token> (JWT scope firma-remota, 72h, rate limit, solo datos mínimos sin PLD): firma digital + subida de documentos que prende checkboxes en Monday Apartado - Tokens de liga no sirven como sesión y viceversa - Tests: api 228, alta 82, cotizador 82
This commit is contained in:
@@ -16,6 +16,20 @@ import {
|
||||
subirDocumentos,
|
||||
uploadDocumentos,
|
||||
} from '../controllers/clientes.controller.js'
|
||||
import {
|
||||
eliminarBorrador,
|
||||
guardarBorrador,
|
||||
listarBorradores,
|
||||
obtenerBorrador,
|
||||
} from '../controllers/borradores.controller.js'
|
||||
import {
|
||||
firmarRemoto,
|
||||
generarLiga,
|
||||
limitadorLiga,
|
||||
obtenerClientePublico,
|
||||
subirDocumentosPublico,
|
||||
uploadDocumentosPublico,
|
||||
} from '../controllers/liga.controller.js'
|
||||
import {
|
||||
agregarNota,
|
||||
cancelarPlan,
|
||||
@@ -69,10 +83,26 @@ apiRouter.get('/cotizaciones/:id/publico', obtenerCotizacionPublica)
|
||||
apiRouter.get('/cotizaciones/:id', obtenerCotizacion)
|
||||
|
||||
apiRouter.post('/clientes', crearCliente)
|
||||
// Liga remota: endpoints públicos con token propio (scope 'firma-remota'); el
|
||||
// scope se verifica dentro de cada controlador. Van ANTES de /clientes/:id.
|
||||
apiRouter.get('/clientes/publico/:token', limitadorLiga, obtenerClientePublico)
|
||||
apiRouter.post('/clientes/publico/:token/firma', limitadorLiga, firmarRemoto)
|
||||
apiRouter.post(
|
||||
'/clientes/publico/:token/documentos',
|
||||
limitadorLiga,
|
||||
uploadDocumentosPublico.array('archivos', 10),
|
||||
subirDocumentosPublico,
|
||||
)
|
||||
apiRouter.post('/clientes/:id/liga', generarLiga)
|
||||
apiRouter.get('/clientes/:id', obtenerCliente)
|
||||
apiRouter.post('/clientes/:id/documentos', uploadDocumentos.array('archivos', 10), subirDocumentos)
|
||||
apiRouter.get('/clientes/:id/documentos', listarDocumentos)
|
||||
|
||||
apiRouter.get('/borradores', listarBorradores)
|
||||
apiRouter.post('/borradores', guardarBorrador)
|
||||
apiRouter.get('/borradores/:id', obtenerBorrador)
|
||||
apiRouter.delete('/borradores/:id', eliminarBorrador)
|
||||
|
||||
apiRouter.post('/planes', crearPlan)
|
||||
apiRouter.get('/planes', listarPlanes)
|
||||
apiRouter.get('/planes/cobranza-del-dia', cobranzaHoy)
|
||||
|
||||
Reference in New Issue
Block a user