feat(mi-dia): gate de afluencia para apartar, pestana Afluencia en bitacora, cita cliente con fecha en calendario, filtros por desarrollo/origen corregidos, rangos salariales nuevos y soporte como acceso directo

This commit is contained in:
2026-09-25 10:23:24 +00:00
parent 8a5db114ec
commit 7f663208a0
19 changed files with 381 additions and 501 deletions

View File

@@ -234,9 +234,26 @@ describe('CrmLocalService.apartar', () => {
email: 'luis@correo.com',
desarrollo: 'ATELIER',
modelo: 'SOHO',
datosJson: '{"edad":35}',
datosJson: JSON.stringify({
edad: 35,
estadoCivil: 'Casado',
tipoEmpleo: 'Formal',
rangoSalarial: 'B. 20,000-40,000',
tipoEconomia: 'Formal',
califica: 'Si',
loQuierePara: 'Para vivir',
}),
}
it('sin afluencia completa rechaza el apartado (regla de negocio)', async () => {
prismaMock.leadCaptura.findUnique.mockResolvedValue({
...filaOportunidad,
datosJson: '{"edad":35}',
})
await expect(svc.apartar('loc_op', 'u-1')).rejects.toThrow(/afluencia/i)
expect(prismaMock.leadCaptura.create).not.toHaveBeenCalled()
})
it('pone la oportunidad en Aparto y crea el apartado local (Pago Apartado)', async () => {
prismaMock.leadCaptura.findUnique.mockResolvedValue(filaOportunidad)
const apartado = await svc.apartar('loc_op', 'u-1')