@cbm-common/report-financials-repository
v0.0.1
Published
Repositorio de utilidades para descargar y consultar reportes financieros desde el backend.
Readme
ReportFinancialsRepository
Repositorio de utilidades para descargar y consultar reportes financieros desde el backend.
Este paquete expone un módulo configurabled mediante forRoot y un servicio (CbmReportFinancialsService) con métodos para solicitar reportes en formatos generales o individuales (descarga de Excel/PDF como blobs) y peticiones que devuelven metadata.
Contenido del paquete
report-financials.module.ts— módulo que exporta el token de configuraciónREPORT_FINANCIALS_MODULE_CONFIGy la función estáticaCbmReportFinancialsModule.forRoot(config).report-financials.service.ts— implementación principal con métodos para descargar reportes; utilizaHttpClienty la configuración inyectada.report-financials.model.ts— tipos (params y respuestas) usados por los métodos del servicio.
Instalación
Si la librería está publicada en tu registry (npm o privado):
npm install @cbm-common/report-financials-repositoryEn un monorepo Angular puedes usar directamente la librería desde projects/ importando el módulo en tu app.
Configuración (recomendado)
Importa y configura el módulo en tu módulo raíz usando forRoot para proveer la baseUrl que se prefijará a todos los endpoints:
import { CbmReportFinancialsModule } from '@cbm-common/report-financials-repository';
@NgModule({
imports: [
// ...
CbmReportFinancialsModule.forRoot({ baseUrl: 'https://api.example.com/reports' }),
],
})
export class AppModule {}Alternativa: proveer el token manualmente en providers:
import { REPORT_FINANCIALS_MODULE_CONFIG } from '@cbm-common/report-financials-repository';
providers: [
{ provide: REPORT_FINANCIALS_MODULE_CONFIG, useValue: { baseUrl: 'https://api.example.com/reports' } }
]Interfaz de configuración (resumida):
ICbmReportFinancialsModuleConfigbaseUrl: string— URL base que será concatenada a las rutas internas del servicio.
API principal (resumen)
El servicio CbmReportFinancialsService ofrece métodos para varias familias de reportes. Los nombres son descriptivos, p. ej:
- Fixed assets:
downloadExcelFixedAssetsReport,downloadPdfFixedAssetsReport,downloadIndividualExcelDepreciationFixedAssetsReport, etc. - Depreciation fixed assets, income/outgoing banking transaction reports, card settlement reports, seat reports.
- Deposit (cash/cheque), protested checks, bank conciliation (descargas y plantillas + endpoints de upload), accounting upload, catalog-account-download.
Tipos de retorno comunes:
Observable<ConfirmResponse>— llamadas que devuelven metadata/confirmación.Observable<HttpResponse<Blob>>— descargas de archivos (Excel/PDF) conresponseType: 'blob'.
Ejemplo: descarga individual y forzar descarga en cliente
this.reportFinancialsService
.downloadIndividualExcelSeatReport(id, params)
.subscribe((res: HttpResponse<Blob>) => {
const blob = res.body as Blob;
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'reporte.xlsx';
a.click();
window.URL.revokeObjectURL(url);
});Ejemplo: petición general que devuelve metadata
this.reportFinancialsService
.downloadExcelSeatReport(params)
.subscribe(resp => {
// resp contiene ConfirmResponse con información sobre el proceso / archivo
});Tests
La librería incluye specs (unitarias). Para ejecutar los tests específicos de la librería desde la raíz del workspace:
g ng test report-financials-repositoryO ejecutar todos los tests del workspace con:
ng test(Dependiendo de la configuración del monorepo, ng test puede ejecutar varias suites en paralelo o secuencialmente.)
Build y publicación
Construir la librería:
ng build report-financials-repositoryAl compilar se generará dist/report-financials-repository (según configuración del angular.json). Para publicar en npm/registry:
cd dist/report-financials-repository
npm publishSi publicas en un registry privado, configura el fichero .npmrc con las credenciales y registry adecuados.
Notas y recomendaciones
- El servicio ahora construye rutas usando la
baseUrlinyectada. Asegúrate de pasar labaseUrlcorrecta (sin doble slash al concatenar) para evitar errores 404. - Si tu proyecto usa interceptores o wrappers HTTP personalizados, regístralos a nivel de aplicación. Si necesitas que la librería envuelva el
HttpClientcon un wrapper específico, puedo añadir ese proveedor en el módulo. - Para descargas de blobs recuerda manejar correctamente
responseType: 'blob'y la conversión aHttpResponse<Blob>.
Troubleshooting rápido
- 404 en endpoints: revisa
baseUrly las rutas definidas por el backend. - Problemas CORS en descargas: habilita
Access-Control-Allow-OriginyAccess-Control-Expose-Headersen el backend. - Errores de tipos TS: ejecuta
npx tsc --noEmitdesde la raíz para comprobar problemas de tipado.
Contribuir / desarrollo local
- Para iterar en la librería dentro del monorepo: hacer cambios en
projects/report-financials-repository/src/lib, ejecutarng build report-financials-repositoryy usar la app de ejemplo del workspace para integrarlo localmente. - Añadir tests unitarios y ejecutarlos con
ng test report-financials-repository.
Documento generado el 14 de agosto de 2025.
