/// <summary> /// Genera el reporte de Eventos Relevantes y Principales Cuentas del Sector. /// </summary> /// <param name="sector"></param> /// <param name="subSector"></param> /// <param name="ramo"></param> /// <param name="listaEmisoras"></param> /// <param name="trimestre"></param> /// <param name="anio"></param> /// <returns></returns> public ResultadoOperacionDto GenerarReporteERyPCS(String sector, String subSector, String ramo, String[] listaEmisoras, String trimestre, int anio) { ResultadoOperacionDto resultadoOperacionDto = new ResultadoOperacionDto(); Dictionary <String, Dictionary <ObjetoFecha, List <Hecho> > > hechosEmisoraPorFecha = ReporteErPcsUtil.ObtenerHechosPrincipalesCuentasPorEmisora(AbaxXBRLCellStoreMongo, listaEmisoras, trimestre, anio); Dictionary <String, Dictionary <ObjetoFecha, List <Hecho> > > hechosEmisoraPorFechaCopia = ReporteErPcsUtil.ObtenerHechosPrincipalesCuentasPorEmisora(AbaxXBRLCellStoreMongo, listaEmisoras, trimestre, anio); Dictionary <ObjetoFecha, CuentaDelSectorDTO> cuentasDelSector = ReporteErPcsUtil.ObtenerColumnasPrincipalesCuentas(hechosEmisoraPorFecha); IDataFormat format; var plantillaDocumento = ConfigurationManager.AppSettings.Get("plantillaDescripcionPorSectores"); var streamExcel = Assembly.GetExecutingAssembly().GetManifestResourceStream(plantillaDocumento); HSSFWorkbook workbook = new HSSFWorkbook(streamExcel, true); var sheet = workbook.GetSheet("PANEL"); format = workbook.CreateDataFormat(); String[] campos = { "", "", "", "", "" }; campos[0] = sector; campos[1] = subSector; campos[2] = ramo; campos[3] = String.Join("/", listaEmisoras); campos[4] = ""; ReporteErPcsUtil.EscribirSeccionDatosGeneralesDelSector(sheet, campos); ReporteErPcsUtil.EscribirSeccionEventosRelevantesDelSector(sheet, ReporteErPcsUtil.ObtenerUltimosSincoEventosRelevantesDelSector(listaEmisoras, AbaxXBRLCellStoreMongo)); ReporteErPcsUtil.EscribirSeccionPrincipalesCuentasDelSector(workbook, sheet, format, cuentasDelSector, trimestre); ReporteErPcsUtil.EscribirSeccionSectorVsEmisora(workbook, sheet, format, ReporteErPcsUtil.ObtenerCalculosSeccionSectorVsEmisora(hechosEmisoraPorFecha)); ReporteErPcsUtil.EscribeSeccionPorcetanjesSectorVsEmisora(workbook, sheet, format, ReporteErPcsUtil.ObtenerCalculosPorcentajeSeccionSectorVsEmisora(ReporteErPcsUtil.ObtenerCalculosSeccionSectorVsEmisora(hechosEmisoraPorFechaCopia), cuentasDelSector)); ReporteErPcsUtil.EscribeSeccionUtilidades(workbook, sheet, format, ReporteErPcsUtil.ObtenerCalculosUtilidades(hechosEmisoraPorFecha, cuentasDelSector)); //ReporteErPcsUtil.ObtenerCalculosSeccionSectorVsEmisora(hechosEmisoraPorFechaCopia); var sheetGraficos = workbook.GetSheet("Gráficos"); sheet.ForceFormulaRecalculation = true; MemoryStream ms = new MemoryStream(); workbook.Write(ms); resultadoOperacionDto.InformacionExtra = ms.ToArray(); resultadoOperacionDto.Resultado = true; return(resultadoOperacionDto); }
/// <summary> /// Genera el reporte de Calculo de Materialidad. /// </summary> /// <param name="parametrosReporte"></param> /// <returns></returns> public ResultadoOperacionDto GenerarReporteCalculoMaterialidad(IDictionary <string, object> parametrosReporte, IDictionary <String, object> datosReporte) { ResultadoOperacionDto resultadoOperacionDto = new ResultadoOperacionDto(); String[] listaEmisoras = { "" }; object claveEmisora = ""; parametrosReporte.TryGetValue("'Entidad.Nombre'", out claveEmisora); listaEmisoras[0] = "'" + claveEmisora.ToString() + "'"; IDictionary <string, object> parametrosEnvioReporteAnual = new Dictionary <string, object>(); foreach (var parametro in parametrosReporte) { parametrosEnvioReporteAnual.Add(parametro.Key, parametro.Value); } parametrosEnvioReporteAnual.Add("Taxonomia", TAXO_REPORTE_ANUAL); parametrosEnvioReporteAnual.Add("EsVersionActual", true); String parametrosConsultaEnvioReporteAnual = ReporteCalculoMaterialidad.GenerarCadenaParametrosConsulta(parametrosEnvioReporteAnual); List <Envio> enviosReporteAnual = (List <Envio>)AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", parametrosConsultaEnvioReporteAnual); enviosReporteAnual.Sort((x, y) => x.Periodo.Ejercicio.CompareTo(y.Periodo.Ejercicio)); Envio envioReporteAnual = null; if (enviosReporteAnual != null && enviosReporteAnual.Count > 0) { envioReporteAnual = enviosReporteAnual[0]; } IDictionary <string, object> parametrosHechosReporteAnual = new Dictionary <string, object>(); IList <Hecho> hechosReporteAnual = null; if (envioReporteAnual != null) { parametrosHechosReporteAnual.Add("IdEnvio", "'" + envioReporteAnual.IdEnvio + "'"); String parametrosConsultaReporteAnual = ReporteCalculoMaterialidad.GenerarCadenaParametrosConsulta(parametrosHechosReporteAnual); hechosReporteAnual = ReporteCalculoMaterialidad.ObtenerHechosReporteAnual(parametrosConsultaReporteAnual, AbaxXBRLCellStoreMongo); } IDataFormat format; String plantillaDocumento = ConfigurationManager.AppSettings.Get("plantillaCalculoDeMaterialidad"); Stream streamExcel = Assembly.GetExecutingAssembly().GetManifestResourceStream(plantillaDocumento); HSSFWorkbook workbook = new HSSFWorkbook(streamExcel, true); ISheet sheet = workbook.GetSheet("CÁLCULO DE MATERIALIDAD"); format = workbook.CreateDataFormat(); Envio envioIFRS = ReporteCalculoMaterialidad.ObtenerUltimoEnviosIFRS(claveEmisora.ToString(), AbaxXBRLCellStoreMongo); List <Hecho> listaHechosIFRS = ReporteCalculoMaterialidad.ObtenerHechosIFRS(AbaxXBRLCellStoreMongo, envioIFRS); List <Envio> enviosIFRS = ReporteCalculoMaterialidad.ObtenerUlrimosTresReportesTrimestralesIFRS(AbaxXBRLCellStoreMongo, claveEmisora.ToString()); Entities.Empresa empresa = EmpresaRepository.ObtenerEmpresaClaveCotizacion(claveEmisora.ToString()); if (empresa != null) { datosReporte.Add("nombreCompletoEmpresa", empresa.RazonSocial); } ReporteCalculoMaterialidad.EscribirDatosGeneralesReporteCalculoMaterialidad(sheet, (List <Hecho>)hechosReporteAnual, parametrosReporte, datosReporte); EscribirSeccionEventosRelevantesCalculoMaterialidad(sheet, ReporteErPcsUtil.ObtenerUltimosSincoEventosRelevantesDelSector(listaEmisoras, AbaxXBRLCellStoreMongo)); ReporteCalculoMaterialidad.EscribirSeccionReporteAnual(sheet, envioReporteAnual); ReporteCalculoMaterialidad.EscribirValoresCalculo(sheet, envioIFRS, listaHechosIFRS); ReporteCalculoMaterialidad.EscribirSeccionReporteTrimestral(sheet, enviosIFRS); sheet.ForceFormulaRecalculation = true; MemoryStream ms = new MemoryStream(); workbook.Write(ms); resultadoOperacionDto.InformacionExtra = ms.ToArray(); resultadoOperacionDto.Resultado = true; return(resultadoOperacionDto); }