{ "nav": { "plans": "Planes de Comisión", "goals": "Metas Comerciales", "import": "Cargar Ventas", "simulation": "Simulación", "approvals": "Aprobaciones", "history": "Historial", "dashboard": "Tablero", "audit": "Auditoría", "logout": "Cerrar Sesión" }, "simulation": { "title": "Simulación de Liquidación", "description": "Calcule, simule y audite las comisiones mensuales antes de la aprobación del Líder Comercial.", "periodLabel": "Período de Liquidación (YYYY-MM)", "dryRunLabel": "Modo Simulador (No escribir en base de datos)", "calculateBtn": "Calcular", "calculatingBtn": "Calculando...", "resultsHeader": "Resumen del Cálculo", "summaryCollaborators": "Colaboradores", "summaryCommission": "Comisión Propuesta", "summaryAdjustment": "Ajustes Retroactivos", "summaryPayout": "Pago Total Estimado", "thCollaborator": "Colaborador", "thPlan": "Plan", "thGoal": "Meta", "thSales": "Ventas Confirmadas", "thAchievement": "Cumplimiento %", "thCommission": "Comisión Calculada", "thAdjustment": "Ajustes Retroactivos", "thPayout": "Pago Total", "thStatus": "Estado", "thAiAudit": "Auditoría IA", "restrictedTitle": "Acceso Restringido", "restrictedDesc": "Lo sentimos, esta sección es exclusiva para el Administrador y el Analista de Compensaciones.", "successSimulate": "Simulación completada con éxito. Los resultados no se han guardado.", "successCalculate": "Liquidaciones calculadas y guardadas correctamente.", "serverError": "Error al comunicarse con el servidor.", "loading": "Cargando panel de simulación..." }, "status": { "ACTIVE": "Activo", "INACTIVE": "Inactivo", "PENDING": "Pendiente", "SIMULATED": "Simulado", "APPROVED": "Aprobado", "REJECTED": "Rechazado", "DRAFT": "Borrador" }, "targetType": { "INDIVIDUAL": "Individual", "TEAM": "Equipo", "HOTEL": "Hotel" }, "errors": { "unauthorizedTitle": "Acceso Denegado", "unauthorizedDescription": "No tiene permisos suficientes para acceder a esta página. Póngase en contacto con el administrador si considera que esto es un error.", "unauthorizedBtn": "Volver a Planes", "notFoundTitle": "Página No Encontrada", "notFoundDescription": "La página que busca no existe o no tiene autorización para acceder a ella.", "notFoundBtn": "Volver a Planes" }, "dashboard": { "title": "Tablero de Análisis de Compensación", "total_paid": "Comisiones Totales Pagadas", "avg_achievement": "Promedio Logro de Metas", "budget_cap": "Límite de Presupuesto Activo", "trends": "Tendencias de Comisiones Mensuales", "hotels_comparison": "Comparación de Rendimiento de Hoteles", "trends_desc": "Comisión Pagada vs Límite de Presupuesto", "hotels_desc": "Ventas y logros por hotel", "loading": "Cargando panel de control..." }, "history": { "title": "Mi Historial de Comisiones", "audit_notes": "Notas de Auditoría de IA", "period": "Periodo", "goal": "Meta de Destino", "sales": "Total de Ventas", "commission": "Comisión Calculada", "adjustment": "Ajuste por Recuperación (Clawback)", "payout": "Pago Total", "status": "Estado", "empty": "No se encontraron registros de historial.", "filters": "Filtros", "all_statuses": "Todos los Estados", "download_pdf": "Descargar PDF", "loading": "Cargando historial...", "showNotes": "Ver Notas", "hideNotes": "Ocultar", "allCollaborators": "Todos" }, "audit": { "title": "Registros de Auditoría del Sistema", "timestamp": "Marca de tiempo", "actor": "Actor", "action": "Acción", "target_table": "Tabla de Destino", "ip_address": "Dirección IP", "empty": "No se encontraron registros de auditoría.", "details": "Detalles", "diff_panel": "Detalles del JSON Diff Lado a Lado", "previous": "Valor Anterior", "new": "Valor Nuevo", "no_diff": "No hay detalles de modificación disponibles.", "loading": "Cargando registros..." }, "login": { "title": "Iniciar Sesión", "subtitle": "Hoteles Estelar", "username": "Usuario", "password": "Contraseña", "usernamePlaceholder": "Ingrese su usuario", "passwordPlaceholder": "Ingrese su contraseña", "submit": "Ingresar", "footer": "Sistema de Remuneración Variable y Comisiones", "loading": "Cargando formulario...", "error": "Error al iniciar sesión. Verifique sus credenciales.", "unexpectedError": "Ocurrió un error inesperado. Por favor, intente nuevamente." }, "plans": { "title": "Planes de Comisión", "newPlan": "Nuevo Plan", "loading": "Cargando planes...", "version": "Versión", "startValidity": "Inicio Vigencia", "endValidity": "Fin Vigencia", "rulesCreated": "Reglas creadas", "configureRules": "Configurar Reglas", "viewRules": "Ver Reglas", "deactivateVersion": "Inactivar (Versión)", "activate": "Activar", "modalTitle": "Crear Nuevo Plan", "modalName": "Nombre del Plan", "modalCode": "Código del Plan", "modalValidityStart": "Inicio de Vigencia", "modalType": "Tipo de Remuneración", "modalMetaAmount": "Meta de Ventas (Opcional)", "modalMaxCap": "Tope Máximo / Cap (Opcional)", "modalStatus": "Estado Inicial", "modalCancel": "Cancelar", "modalSave": "Guardar Plan", "types": { "PERCENTAGE": "Porcentaje Simple", "SCALE": "Escala Contigua", "CONDITIONAL": "Condicional por Metas", "FIXED": "Comisión Fija" }, "errorFind": "No se pudo encontrar el plan.", "errorLoad": "Error al cargar la información del plan." }, "rules": { "back": "Volver a Planes", "title": "Configurar Reglas de Comisión", "subtitle": "Plan: {name} | Código: {code} | Versión: {version} | Estado: {status}", "thType": "Tipo de Regla", "thMin": "Min Logro (%)", "thMax": "Max Logro (%)", "thRate": "Tasa Comisión (Decimal)", "thPayout": "Payout Fijo ($)", "addRule": "+ Agregar Rango / Regla", "cancel": "Cancelar", "backBtn": "Volver", "save": "Guardar Reglas", "loading": "Cargando configuración...", "delete": "Eliminar regla", "types": { "TIER": "Rango (TIER)", "BONUS": "Bono Fijo (BONUS)" }, "errorAtLeastOne": "El plan debe tener al menos una regla.", "errorBoundary": "Fila {row}: El logro mínimo ({min}) debe ser menor que el logro máximo ({max}).", "errorNegative": "Fila {row}: Todos los valores deben ser mayores o iguales a cero.", "errorSave": "Error al guardar las reglas.", "errorNetwork": "Ocurrió un error de red al guardar las reglas.", "successSave": "Reglas configuradas y guardadas exitosamente." }, "goals": { "title": "Metas Comerciales", "assignTitle": "Asignar Meta", "labelType": "Tipo de Meta", "labelSelect": "Seleccionar Colaborador", "labelPeriod": "Período (YYYY-MM)", "labelAmount": "Monto de Meta ($)", "btnSave": "Guardar Meta", "thTarget": "Destino", "thType": "Tipo", "thPeriod": "Período", "thAmount": "Monto", "thActions": "Acciones", "empty": "No se encontraron metas asignadas.", "loading": "Cargando metas...", "successSave": "Meta comercial asignada / actualizada exitosamente.", "errorSave": "Ocurrió un error al guardar la meta.", "errorInput": "Por favor, ingrese valores válidos.", "roles": { "collaborator": "Colaborador", "commercial_leader": "Líder Comercial", "hotel_manager": "Gerente", "director": "Director", "analyst": "Analista", "admin": "Administrador" } }, "import": { "title": "Cargar Ventas Comerciales", "subtitle": "Importe el archivo de resultados para procesar las comisiones del periodo.", "templateLabel": "Utilice la plantilla oficial para evitar inconsistencias:", "downloadTemplate": "Descargar Plantilla (.xlsx)", "loading": "Cargando módulo de importación...", "unsupportedFile": "Tipo de archivo no soportado. Cargue archivos .xlsx, .xls o .csv", "uploading": "Subiendo y verificando archivo...", "process": "Procesar Archivo", "clear": "Limpiar", "success": "Carga exitosa:", "successDesc": "Se importaron exitosamente {count} registros de venta.", "consolidated": "Monto consolidado:", "inconsistencyTitle": "Detalle de Inconsistencias en las Filas", "thRow": "Fila", "thColumn": "Columna", "thValue": "Valor Leído", "thError": "Detalle del Error", "statusPolling": "Procesando integración asíncrona mediante n8n...", "timeout": "El procesamiento por n8n está tomando más tiempo de lo esperado. Revise el historial más tarde.", "networkError": "Fallo de red o error inesperado al subir el archivo.", "dragText": "Arrastre y suelte su archivo aquí, o", "browseText": "explore archivos", "supportedText": "Formatos permitidos: .xlsx, .xls, .csv", "inconsistencyAlert": "Inconsistencia detectada:", "errors": { "USER_NOT_FOUND": "El colaborador '{username}' no existe en el sistema.", "INVALID_PERIOD_FORMAT": "El período '{value}' no tiene formato válido (esperado: {expected}).", "HOTEL_NOT_FOUND": "El hotel '{hotelCode}' no existe en el sistema.", "HOTEL_REGION_MISMATCH": "El hotel '{hotelCode}' no pertenece a su región autorizada.", "INVALID_AMOUNT": "El monto '{value}' no es válido. Debe ser un número positivo.", "INVALID_COUNT": "La cantidad '{value}' no es válida. Debe ser un número entero positivo.", "USER_REQUIRED": "El colaborador es obligatorio.", "HOTEL_REQUIRED": "El hotel es obligatorio.", "IMPORT_VALIDATION_FAILED": "El archivo cargado contiene inconsistencias de validación.", "MISSING_IDEMPOTENCY_KEY": "El encabezado de idempotencia es obligatorio.", "FILE_REQUIRED": "Debe seleccionar un archivo válido.", "EMPTY_FILE": "El archivo está vacío y no contiene registros.", "INTEGRATION_ERROR": "El motor de integraciones (n8n) reportó un fallo al procesar la solicitud.", "IMPORT_ALREADY_PROCESSED": "Este archivo ya fue cargado y procesado con éxito anteriormente.", "IMPORT_SUCCESSFUL": "Importación completada con éxito. Se cargaron {count} registros.", "IMPORT_ACCEPTED": "La importación ha sido aceptada y se está procesando mediante n8n en segundo plano." } }, "approvals": { "title": "Panel de Aprobaciones", "loading": "Cargando panel de aprobaciones...", "leaderDesc": "Revise y apruebe las liquidaciones de comisión de los colaboradores de su región.", "globalDesc": "Visualice y audite el estado de aprobación de las liquidaciones de comisiones.", "empty": "No se encontraron liquidaciones pendientes en su región.", "thCollaborator": "Colaborador", "thPlan": "Plan", "thPeriod": "Período", "thGoal": "Meta", "thSales": "Ventas", "thAchievement": "Cumplimiento", "thPayout": "Pago Total", "thStatus": "Estado", "thActions": "Acciones", "btnApprove": "Aprobar", "btnReject": "Rechazar", "rejectModalTitle": "Rechazar Liquidación de Comisión", "rejectReasonLabel": "Motivo del Rechazo", "rejectReasonPlaceholder": "Ej. Falta validar soporte físico de ventas...", "rejectCancel": "Cancelar", "rejectConfirm": "Confirmar Rechazo", "successApprove": "Liquidación aprobada con éxito.", "successReject": "Liquidación rechazada.", "errorApprove": "Error al aprobar la liquidación.", "errorReject": "Error al rechazar la liquidación.", "errorServer": "Error al comunicarse con el servidor." } }