import { EmptyState, LoadingBlock } from '../../components/Feedback'; import type { AssetImportReviewItem } from '../../lib/api'; const ENTITY: Record = { DEPARTMENT: 'Departamento', ORGANIZATION: 'Organización', AREA: 'Área', AREA_DEPARTMENT_RELATION: 'Área / Departamento', FIELD: 'Yacimiento', OPERATOR_RELATION: 'Área / Operadora', LEGAL_RIGHT: 'Derecho / concesión', LEGAL_RIGHT_ORGANIZATION: 'Derecho / Organización', INSTALLATION: 'Instalación', LOCAL_STRUCTURE: 'Estructura local', TECHNICAL_ASSET: 'Elemento técnico', }; const REASON: Record = { PLAN_TERRITORY_AMBIGUOUS: 'Área/Yacimiento ambiguo', PLAN_TERRITORY_CONTEXT_REQUIRED: 'Falta definir Área/Yacimiento', PLAN_CONTEXT_DECISION_REQUIRED: 'Depende de una decisión territorial', PLAN_PARENT_NOT_RESOLVED: 'Padre físico pendiente', PLAN_CONTAINER_REVIEW_REQUIRED: 'Instalación pendiente', PLAN_MULTIPLE_NAMESPACE_MATCHES: 'Más de una coincidencia por identificador', DUPLICATE_INVENTORY_ID_IN_BATCH: 'Identificador repetido en el archivo', GROUPED_QUANTITY: 'La fila agrupa varias unidades', SOURCE_ROW_WARNING: 'Advertencia en la fuente', SOURCE_ROW_CONFLICT: 'Conflicto en la fuente', }; function rowsLabel(rows: number[]) { if (!rows.length) return 'Sin fila específica'; if (rows.length <= 4) return `Fila${rows.length === 1 ? '' : 's'} ${rows.join(', ')}`; return `${rows.length.toLocaleString('es-AR')} filas`; } export function AssetImportReviewsPanel(props: { data: AssetImportReviewItem[]; loading: boolean; kind: 'ALL' | 'DIRECT' | 'DEPENDENCY'; meta: { page: number; pageSize: number; total: number; totalPages: number }; onKindChange: (kind: 'ALL' | 'DIRECT' | 'DEPENDENCY') => void; onPageChange: (page: number) => void; onOpenBatch: (batchId: string) => void; }) { const { data, loading, kind, meta, onKindChange, onPageChange, onOpenBatch } = props; return
IMPORTACIONES

Revisiones pendientes

Decisiones que pueden resolverse más adelante sin frenar los registros independientes.

{meta.total.toLocaleString('es-AR')} pendientes
{loading ? : data.length === 0 ? :
{data.map((item) =>
{item.dependency ? 'Dependencia automática' : 'Decisión pendiente'}{ENTITY[item.entityKind]}{rowsLabel(item.sourceRowNumbers)}
{item.displayName}

{item.reviewCodes.map((code) => REASON[code] ?? 'Revisión de datos').filter((value, index, values) => values.indexOf(value) === index).slice(0, 3).join(' · ')}

{item.batchName}{item.sourceLabel ? ` · ${item.sourceLabel}` : ''} · Plan rev. {item.planRevision}
)}
} {meta.totalPages > 1 &&
Página {meta.page} de {meta.totalPages}
}
; }