Cestas (Baskets)
Requisitos previos de acceso
- Permiso (módulo):
viewBasketspara listar/ver;manageBasketspara crear, editar, asignar y cambiar estado. - Licencia/Feature:
BASKETShabilitada en la licencia del tenant (Vault). - Contenedor del menú: GENERAL → grupo Productos → Cestas
Qué es / cuándo usar
Una Cesta (basket) es un producto de inversión que agrega múltiples ofertas madre (crowdfundings) en un único vehículo. El inversor realiza un aporte en la cesta y el capital se distribuye entre las ofertas componentes según los pesos definidos; los rendimientos de las ofertas retornan proporcionalmente a los tenedores de cuotas de la cesta. Es el producto que permite "diversificar en un clic".
El operador usa esta área para componer la cesta (qué ofertas, con qué peso), definir el modo de asignación, los parámetros financieros y hacer seguimiento a la captación. La cesta emite un NFT para los inversores (red y emisora configurables).
Requisitos previos
- Permiso:
viewBaskets(consulta) omanageBaskets(escritura). Permiso doble: enum CPM + módulo dinámico en la DB. El listado en sí verificamanageBasketspara habilitar las acciones de gestión. - Licencia/Feature:
BASKETShabilitada. - Dependencias: las ofertas madre (crowdfundings) que componen la cesta deben existir; la red y la emisora del NFT deben estar disponibles.
Paso a paso
- Acceda a Productos → Cestas.
- Filtre por canal, estado y busque por nombre.
- Use Crear cesta para abrir el formulario en secciones.
- Complete Identidad, Editorial, Distribución, Financiero y — según el modo — Composición (JIT) o Asignaciones (Upfront).
- Guarde. En cada fila use Editar, Dashboard o Cancelar.
Campos (formulario)
Identidad y Editorial
| Campo | Qué es | ¿Obligatorio? | Efecto en el sistema/backend |
|---|---|---|---|
Nombre (name) | Nombre de la cesta | Sí | Máx. 255 caracteres. |
| Tagline / Descripción / Descripción larga | Textos comerciales | No | Contenido editorial mostrado al inversor. |
| Resumen de riesgo / garantías | Resúmenes | No | riskSummary, warrantiesSummary. |
| Imagen de portada | URL de portada | No | coverImageUrl. |
Distribución
| Campo | Qué es | ¿Obligatorio? | Efecto en el sistema/backend |
|---|---|---|---|
Canal (partnerChannel) | INTERNAL o CHAINLESS | Sí | Default INTERNAL. Cambiar el canal sugiere el modo de asignación: CHAINLESS → Upfront; INTERNAL → Just‑in‑time (a menos que ya se haya cambiado manualmente). |
Modo de asignación (allocationMode) | JUST_IN_TIME (JIT) o UPFRONT | Sí | JIT asigna conforme entra la captación (usa Composición con pesos); UPFRONT pre-asigna valores fijos por oferta (usa Asignaciones). |
Red del NFT (nftNetworkId) | Red del NFT de la cesta | Sí | Determina la red de emisión del NFT entregado a los inversores. |
Emisora del NFT (nftCreatorInstitution) | Institución emisora | Sí | Determina la emisora del NFT. |
Umbral de lote JIT (jitBatchThreshold) | Valor que activa un lote de asignación en modo JIT | No | Acumula aportes hasta el umbral y luego asigna el lote en las ofertas. |
Financiero
| Campo | Qué es | ¿Obligatorio? | Efecto en el sistema/backend |
|---|---|---|---|
Moneda aceptada (acceptedCurrency) | BRL, BRZ o USDC | Sí | Default BRL. |
Captación objetivo (targetCapture) | Meta de captación | Sí | String/BigNumber (nunca number); valida formato numérico. |
Captación mínima (minimumCapture) | Mínimo para que la cesta sea válida | Sí | BigNumber. |
Aporte mínimo (minimumContribution) | Menor aporte por inversor | Sí | BigNumber. |
Rendimiento esperado a.a. (expectedYieldPctAnnual) | Rentabilidad anual esperada | No | Indicador editorial. |
Plazo promedio (meses) (termMonthsAverage) | Plazo promedio de las ofertas | No | Indicador editorial. |
| Fechas inicio/fin | Ventana de captación | No | startDate/finalDate (ISO). |
Composición (modo JIT) / Asignaciones (modo Upfront)
| Campo | Qué es | ¿Obligatorio? | Efecto en el sistema/backend |
|---|---|---|---|
Composición (compositionTarget) | Lista de {ofertaOrigen, peso} | Sí en JIT | La suma de los pesos debe ser 1 (validación: ` |
Asignaciones (upfrontAllocations) | Lista de {ofertaOrigen, valorAsignado} | Sí en Upfront | Pre-asigna valores fijos por oferta; enviado en bulk tras crear la cesta. |
Acciones y modales
- Guardar: valida el formulario (Angular Reactive Forms). En JIT, exige composición con suma de pesos = 1. Crea la cesta (
create) o actualiza (update); en Upfront con asignaciones, activacreateAllocationsBulka continuación. Redirige al dashboard de la cesta. - Estado: en la edición, es posible cambiar el estado (
onStatusChange); el cambio solo se envía (updateStatus) si difiere del actual. - Cancelar (en el listado): confirma y llama a
cancel— cierra la captación de la cesta. - Dashboard: hace seguimiento a asignaciones, órdenes, posiciones y distribuciones de la cesta.
Reglas de negocio / consideraciones
Atención
- JIT exige composición con suma de pesos = 1 (100%). Fuera de eso, la sección queda inválida y el guardado queda bloqueado.
- El canal sugiere el modo de asignación, pero el operador puede sobreescribirlo — verifique el modo antes de guardar (define qué secciones aparecen).
- La red y la emisora del NFT son obligatorias (están en la sección Distribución porque determinan el NFT entregado a los inversores).
- Distribución proporcional: los rendimientos y amortizaciones de las ofertas madre retornan a los tenedores de cuotas de la cesta proporcionalmente a su participación — la posición (
IBasketPosition) registra el capital e intereses recibidos. - Valores financieros: todos los montos llegan como string (BigNumber serializado) — nunca
number. Sin redondeo. - Estado de la cesta:
inactive → active → minimum_reached → funded → distributing → closed(ocancelled). El ciclo refleja la captación y la fase de distribución.
Ejemplos
Escenario 1 — Cesta interna JIT con 3 ofertas
- Canal INTERNAL → modo sugerido JIT.
- Financiero: moneda BRL, objetivo R$ 2.000.000, mínima R$ 500.000, aporte mínimo R$ 500.
- Composición: Oferta A peso 0,5, Oferta B peso 0,3, Oferta C peso 0,2 (suma 1,0).
- Umbral de lote R$ 50.000: por cada R$ 50 mil captados, el lote se asigna 50/30/20 en las ofertas.
Escenario 2 — Cesta con asignación Upfront
- Modo UPFRONT.
- En Asignaciones, pre-asigne R$ 800.000 a la Oferta A y R$ 1.200.000 a la Oferta B.
- Al guardar, la cesta se crea y las asignaciones se envían en bulk; el capital queda reservado en esas ofertas.
Escenario 3 — Cerrar una cesta
- En el listado, haga clic en Cancelar en la cesta deseada y confirme.
- La captación se cierra (
cancelled); los aportes dejan de ser aceptados.