Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }