diff --git a/api-gateway/src/controllers/leads.controller.ts b/api-gateway/src/controllers/leads.controller.ts index 3bf1e76..0a30904 100644 --- a/api-gateway/src/controllers/leads.controller.ts +++ b/api-gateway/src/controllers/leads.controller.ts @@ -751,6 +751,25 @@ export async function convertirLeadEndpoint(req: Request, res: Response): Promis } try { const { oportunidadId } = await convertirLead(mondayService, itemId, usuarioSub, body.fecha) + // Crear LeadCaptura local para la oportunidad (Mi día las necesita) + try { + const leadLocal = await prisma.leadCaptura.findFirst({ where: { leadId: itemId } }) + await prisma.leadCaptura.upsert({ + where: { leadId: oportunidadId }, + update: { board: 'OPORTUNIDADES', etapa: 'Agendo Cita' }, + create: { + leadId: oportunidadId, + board: 'OPORTUNIDADES', + etapa: 'Agendo Cita', + nombreLead: leadLocal?.nombreLead ?? '', + telefono: leadLocal?.telefono ?? null, + email: leadLocal?.email ?? null, + usuarioId: usuarioSub ?? 'sistema', + mondayItemId: oportunidadId, + pendienteSync: false, + }, + }) + } catch { /* best effort */ } res.status(201).json({ leadId: itemId, oportunidadId, etapa: 'Agendo Cita' }) auditoria.registrar(usuarioSub ?? 'sistema', 'CONVERTIR_LEAD', 'lead', itemId) } catch (err) { diff --git a/api-gateway/src/services/automatizaciones.service.ts b/api-gateway/src/services/automatizaciones.service.ts index e80d047..59c96c6 100644 --- a/api-gateway/src/services/automatizaciones.service.ts +++ b/api-gateway/src/services/automatizaciones.service.ts @@ -579,6 +579,25 @@ export class AutomatizacionesService { }) await this.state.set(claveApartadoCreado(op.id), apartadoItemId) resultado.apartadosCreados.push({ oportunidadId: op.id, nombre: op.nombre, apartadoItemId }) + // Crear LeadCaptura local para el apartado (Mi día los necesita) + try { + // Buscar el usuarioId de la oportunidad original para vincular el apartado + const opLocal = await prisma.leadCaptura.findFirst({ where: { leadId: op.id } }) + await prisma.leadCaptura.create({ + data: { + leadId: apartadoItemId, + board: 'APARTADO', + etapa: 'Pago Apartado', + nombreLead: op.nombre, + telefono: op.telefono || null, + email: op.email || null, + usuarioId: opLocal?.usuarioId ?? 'sistema', + oportunidadId: op.id, + mondayItemId: apartadoItemId, + pendienteSync: false, + }, + }) + } catch (e) { console.error('[APARTADO-ERR]', e.message?.slice(0,150)) } } catch (err) { resultado.errores.push({ oportunidadId: op.id, mensaje: err instanceof Error ? err.message : String(err) }) } diff --git a/api-gateway/src/services/mi-dia.service.ts b/api-gateway/src/services/mi-dia.service.ts index 718c8a7..3ca0239 100644 --- a/api-gateway/src/services/mi-dia.service.ts +++ b/api-gateway/src/services/mi-dia.service.ts @@ -312,9 +312,13 @@ export async function resumenMiDia( const apartadosDeMisClientes = new Set( clientes.map((c) => c.mondayApartadoId).filter((id): id is string => id !== null), ) + // Set de oportunidades mías (por LeadCaptura o por vendedorIds) + const miosOportunidadesIds = new Set( + capturas.filter((c) => c.oportunidadId).map((c) => c.oportunidadId), + ) const miosApartados = apartados.filter( (a) => - (esMio(a.vendedorIds, a.id) || apartadosDeMisClientes.has(a.id)) && !esEstadoFinalApartado(a.estado), + (esMio(a.vendedorIds, a.id) || apartadosDeMisClientes.has(a.id) || miosOportunidadesIds.has(a.id)) && !esEstadoFinalApartado(a.estado), ) const [cambiosLeads, cambiosOportunidades, cambiosApartados] = await Promise.all([