Fix RoadmapTab runtime error: pass t parameter to helper functions

Fixed "ReferenceError: t is not defined" error by:
- Adding t parameter to calcularPaybackCompleto() function
- Adding t parameter to formatearPaybackResult() function
- Updating all call sites to pass t from useTranslation() hook

Helper functions defined outside React components cannot directly
access the t() function from useTranslation() hook. They must receive
it as a parameter from the component.

https://claude.ai/code/session_01GNbnkFoESkRcnPr3bLCYDg
This commit is contained in:
Claude
2026-02-07 18:05:47 +00:00
parent 00f766913b
commit 496da958c2

View File

@@ -187,7 +187,8 @@ const calcularPaybackCompleto = (
ahorroAnual: number, ahorroAnual: number,
waves: string[], waves: string[],
esHabilitador: boolean, esHabilitador: boolean,
incluyeQuickWin: boolean incluyeQuickWin: boolean,
t: any
): PaybackInfo => { ): PaybackInfo => {
// 1. Caso especial: escenario habilitador con poco ahorro directo // 1. Caso especial: escenario habilitador con poco ahorro directo
if (esHabilitador || ahorroAnual < inversion * 0.1) { if (esHabilitador || ahorroAnual < inversion * 0.1) {
@@ -230,7 +231,7 @@ const calcularPaybackCompleto = (
const paybackTotal = mesesImplementacion + mesesRecuperacion; const paybackTotal = mesesImplementacion + mesesRecuperacion;
// 7. Formatear resultado según duración // 7. Formatear resultado según duración
return formatearPaybackResult(paybackTotal, mesesImplementacion, mesesRecuperacion, margenMensual, inversion); return formatearPaybackResult(paybackTotal, mesesImplementacion, mesesRecuperacion, margenMensual, inversion, t);
}; };
/** /**
@@ -241,7 +242,8 @@ const formatearPaybackResult = (
mesesImpl: number, mesesImpl: number,
mesesRec: number, mesesRec: number,
margenMensual: number, margenMensual: number,
inversion: number inversion: number,
t: any
): PaybackInfo => { ): PaybackInfo => {
const tooltipBase = `Implementación: ${mesesImpl} meses → Recuperación: ${mesesRec} meses. ` + const tooltipBase = `Implementación: ${mesesImpl} meses → Recuperación: ${mesesRec} meses. ` +
`Margen: ${formatCurrency(margenMensual * 12)}/año.`; `Margen: ${formatCurrency(margenMensual * 12)}/año.`;
@@ -1966,17 +1968,17 @@ export function RoadmapTab({ data }: RoadmapTabProps) {
// v3.9: Calcular payback completo para cada escenario // v3.9: Calcular payback completo para cada escenario
const consPaybackInfo = calcularPaybackCompleto( const consPaybackInfo = calcularPaybackCompleto(
consInversion, consMargen, consSavings, consInversion, consMargen, consSavings,
['wave1', 'wave2'], consEsHabilitador, false ['wave1', 'wave2'], consEsHabilitador, false, t
); );
const modPaybackInfo = calcularPaybackCompleto( const modPaybackInfo = calcularPaybackCompleto(
modInversion, modMargen, modSavings, modInversion, modMargen, modSavings,
['wave1', 'wave2', 'wave3'], modEsHabilitador, false ['wave1', 'wave2', 'wave3'], modEsHabilitador, false, t
); );
// Agresivo incluye Wave 4 (Quick Wins potenciales si hay AUTOMATE queues) // Agresivo incluye Wave 4 (Quick Wins potenciales si hay AUTOMATE queues)
const agrIncluyeQuickWin = tierCounts.AUTOMATE.length >= 3; const agrIncluyeQuickWin = tierCounts.AUTOMATE.length >= 3;
const agrPaybackInfo = calcularPaybackCompleto( const agrPaybackInfo = calcularPaybackCompleto(
agrInversion, agrMargen, agrSavings, agrInversion, agrMargen, agrSavings,
['wave1', 'wave2', 'wave3', 'wave4'], agrEsHabilitador, agrIncluyeQuickWin ['wave1', 'wave2', 'wave3', 'wave4'], agrEsHabilitador, agrIncluyeQuickWin, t
); );
const escenarios: EscenarioData[] = [ const escenarios: EscenarioData[] = [