feat(cotizador): mensualidades del diferimiento = meses faltantes para la entrega estimada de la unidad (captura de obra)
This commit is contained in:
@@ -89,12 +89,13 @@ describe('getUnidadesLocal / getUnidadLocal', () => {
|
||||
expect(senda.map((u) => u.codigo)).toEqual(['U-2', 'U-3'])
|
||||
})
|
||||
|
||||
it('completa fechaEntrega desde la captura: entrega programada > habitabilidad > inicio de obra', async () => {
|
||||
it('completa fechaEntrega desde la captura: reprogramada > programada > habitabilidad > inicio de obra', async () => {
|
||||
prismaMock.unidad.findMany.mockResolvedValue([
|
||||
fila({ codigo: 'U-1', desarrollo: 'DIAGONAL' }),
|
||||
fila({ codigo: 'U-2', desarrollo: 'DIAGONAL' }),
|
||||
fila({ codigo: 'S-1', desarrollo: 'SENDA' }),
|
||||
fila({ codigo: 'S-2', desarrollo: 'SENDA' }),
|
||||
fila({ codigo: 'S-3', desarrollo: 'SENDA' }),
|
||||
])
|
||||
prismaMock.capturaDepartamento.findMany.mockResolvedValue([
|
||||
{ unidadCodigo: 'U-1', campo: 'inicio_obra_fecha', valor: '2026-01-01' },
|
||||
@@ -104,11 +105,16 @@ describe('getUnidadesLocal / getUnidadLocal', () => {
|
||||
// Valor vacío / no-fecha: no cuenta como dato
|
||||
{ unidadCodigo: 'S-1', campo: 'entrega_programada_fecha', valor: '' },
|
||||
{ unidadCodigo: 'S-2', campo: 'entrega_programada_fecha', valor: 'pendiente' },
|
||||
// Reprogramada: manda sobre la programada cuando existe
|
||||
{ unidadCodigo: 'U-1', campo: 'entrega_reprogramada_fecha', valor: '2028-02-15' },
|
||||
// Reprogramada vacía: se ignora y gana la programada
|
||||
{ unidadCodigo: 'S-3', campo: 'entrega_reprogramada_fecha', valor: '' },
|
||||
{ unidadCodigo: 'S-3', campo: 'entrega_programada_fecha', valor: '2027-07-01' },
|
||||
])
|
||||
|
||||
const todas = await getUnidadesLocal()
|
||||
|
||||
expect(todas.map((u) => u.fechaEntrega)).toEqual(['2027-11-20', null, '2027-05-05', null])
|
||||
expect(todas.map((u) => u.fechaEntrega)).toEqual(['2028-02-15', null, '2027-05-05', null, '2027-07-01'])
|
||||
expect(prismaMock.capturaDepartamento.findMany).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ where: { campo: { in: [...CAMPOS_FECHA_ENTREGA] } } }),
|
||||
)
|
||||
|
||||
@@ -14,12 +14,15 @@ import type { UnidadCotizable } from './cotizacion.service.js'
|
||||
|
||||
/**
|
||||
* Campos de `CapturaDepartamento` que dan la fecha de entrega de la vivienda,
|
||||
* en orden de prioridad:
|
||||
* 1. `entrega_programada_fecha` — Fecha Programada Entrega Vivienda (ESCRITURACION)
|
||||
* 2. `habitabilidad` — fecha de habitabilidad (OBRA), la de DIAGONAL
|
||||
* 3. `inicio_obra_fecha` — último recurso (ESCRITURACION)
|
||||
* en orden de prioridad (el primero con fecha válida gana):
|
||||
* 1. `entrega_reprogramada_fecha` — Fecha Reprogramada Entrega (la más reciente,
|
||||
* cuando obra movió la entrega es la fecha que manda)
|
||||
* 2. `entrega_programada_fecha` — Fecha Programada Entrega Vivienda
|
||||
* 3. `habitabilidad` — fecha de habitabilidad (OBRA), la de DIAGONAL
|
||||
* 4. `inicio_obra_fecha` — último recurso (ESCRITURACION)
|
||||
*/
|
||||
export const CAMPOS_FECHA_ENTREGA = [
|
||||
'entrega_reprogramada_fecha',
|
||||
'entrega_programada_fecha',
|
||||
'habitabilidad',
|
||||
'inicio_obra_fecha',
|
||||
|
||||
Reference in New Issue
Block a user