Diálogo común para seleccionar, inspeccionar y enviar archivos de importación, incluyendo validaciones de extensión/codificación y presentación de resumen/errores. Está diseñado para recibir la configuración de importación y compartir la parte visual del flujo entre funcionalidades.
libs/shared/ui/src/lib/modals/components/importar-general-dialog/ (componente, template, estilos, pruebas, dependencia.utils.ts y token de configuración import-dialog-data.token.ts).
El componente recibe datos mediante IMPORT_DIALOG_DATA (ImportDialogData), incluyendo el endpoint y opcionalmente una URL de plantilla. Si no recibe endpoint, usa el fallback /nebula-accounting-core/api/v1/dependencia/import. Ese fallback acopla el componente general a Accounting y debe eliminarse: cada consumidor debe suministrar la configuración/datasource de su feature explícitamente.
Maneja archivo seleccionado, encabezado, extensión XLS/XLSX/CSV, detección de codificación/BOM, estado de importación y resumen de errores. ImportDialogModalService ejecuta/coordina la importación y ImportDialogDataService guarda/transporta datos del flujo; el diálogo cierra con ImportResult o un resultado de cancelación.
this.dialogService.open(ImportarGeneralDialogComponent, {
data: {
endpoint: featureConfig.importEndpoint,
templateUrl: featureConfig.templateUrl,
// completar con el contrato ImportDialogData vigente
},
});
El ejemplo requiere que ImportDialogData defina esos campos en la implementación actual. La recomendación objetivo es pasar un adaptador tipado (importFile(file) / upload) desde el feature en lugar de permitir que la UI construya URL y llame a una API global. De este modo el componente genérico solo coordina archivo, estados y resultado.
Mantener este componente como posible base compartida para validación/preview de archivos. Extraer endpoints, formatos específicos, DTOs y llamadas a cada libs/data-access/<feature>. Remover fallback contable y mantener el servicio UI libre de endpoint. Acordar un único contrato de resultado, errores y cancelación antes de deprecar ImportDialogModalService.