feat(mi-dia): botón Afluencia abre el formulario prellenado y actualiza la oportunidad
- Mis oportunidades: 'Afluencia →' navega a /client/?afluencia=<id> con nombre, contacto, desarrollo y modelo prellenados - Alta Afluencia: con oportunidadId el envío ACTUALIZA la oportunidad en Monday (perfil completo + etapa Afluencia) en vez de crear duplicado; sin oportunidadId el flujo de captura nueva no cambia - monday.service: actualizarOportunidadAfluencia (mismo builder de la creación + name); moverAGrupoSegunEstado tras actualizar - Tests: 457 API + 16 mi-dia + 116 alta-clientes, verde
This commit is contained in:
@@ -520,6 +520,48 @@ export class MondayService {
|
||||
return this.crearItem(boardId, datos.nombre, columnValues)
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualiza una oportunidad existente con el perfil completo de la afluencia
|
||||
* (mismo builder que crearOportunidadAfluencia) y la pone en etapa
|
||||
* 'Afluencia'. La usa el botón "Afluencia" de Mis oportunidades en Mi día:
|
||||
* el formulario se manda prellenado y el envío enriquece el item en vez de
|
||||
* duplicarlo. El nombre del item se actualiza por el column id 'name'.
|
||||
*/
|
||||
async actualizarOportunidadAfluencia(oportunidadId: string, datos: DatosOportunidadAfluencia): Promise<void> {
|
||||
const boardId = config.monday.boards.oportunidades
|
||||
const hoy = new Date()
|
||||
const fechaHoy = `${hoy.getFullYear()}-${String(hoy.getMonth() + 1).padStart(2, '0')}-${String(hoy.getDate()).padStart(2, '0')}`
|
||||
const valores = JSON.parse(
|
||||
await this.construirColumnValues(boardId, {
|
||||
Estado: 'Afluencia',
|
||||
Fecha: fechaHoy,
|
||||
'Cliente teléfono': datos.telefono,
|
||||
'Cliente email': datos.email,
|
||||
Desarrollo: datos.desarrolloLabel,
|
||||
'Modelo de Interés': datos.modeloLabel,
|
||||
'Origen del Lead': datos.origenLabel,
|
||||
'Medio de Contacto': datos.medioContacto,
|
||||
Edad: datos.edad,
|
||||
'Estado Civil': datos.estadoCivilLabel,
|
||||
'Tipo de Empleo': datos.tipoEmpleoLabel,
|
||||
Ocupación: datos.ocupacion,
|
||||
'Rango Salarial': datos.rangoSalarial,
|
||||
Crédito: datos.creditoLabel,
|
||||
'Tipo de Econimia': datos.tipoEconomiaLabel, // SIC: typo en el título real
|
||||
'Lead Califica': datos.calificaLabel,
|
||||
'Proposito de Compra': datos.loQuierePara,
|
||||
COMENTARIOS: datos.notas,
|
||||
}),
|
||||
) as Record<string, unknown>
|
||||
if (datos.nombre !== '') valores['name'] = datos.nombre
|
||||
await this.graphql(
|
||||
`mutation ($boardId: ID!, $itemId: ID!, $columnValues: JSON!) {
|
||||
change_multiple_column_values(board_id: $boardId, item_id: $itemId, column_values: $columnValues) { id }
|
||||
}`,
|
||||
{ boardId, itemId: oportunidadId, columnValues: JSON.stringify(valores) },
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualiza una oportunidad existente con los datos de una cotización
|
||||
* (mismo builder de valores que crearOportunidad) y la mueve a 'Cotizador'.
|
||||
|
||||
Reference in New Issue
Block a user