예제 #1
0
        /// <summary>
        /// Obtiene las opciones para el combo Año del reporte Eventos Relevantes y Principales cuentas del sector (Descripcioón por sectores).
        /// </summary>
        /// <param name="clavesCotizacionEmisoras"></param>
        /// <returns></returns>
        public ResultadoOperacionDto ObtenerAniosEnvioIFRS(string[] clavesCotizacionEmisoras)
        {
            var cadenaClavesCotizacion = "'" + String.Join("','", clavesCotizacionEmisoras) + "'";

            StringBuilder parametros = new StringBuilder();

            parametros.Append("{ ");
            parametros.Append("Taxonomia: {$regex: 'full_ifrs'}, ");
            parametros.Append("'Entidad.Nombre': { $in: [ " + cadenaClavesCotizacion + "]}");
            parametros.Append("}");

            IList <Envio>        envios    = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", parametros.ToString());
            List <LlaveValorDto> listaAnos = new List <LlaveValorDto>();

            foreach (var envio in envios)
            {
                Object ano = "";
                envio.Parametros.TryGetValue("Ano", out ano);
                LlaveValorDto llaveValorDto = new LlaveValorDto(ano.ToString(), ano.ToString());

                if (listaAnos.Find(elemento => elemento.Llave.Equals(llaveValorDto.Llave) && elemento.Valor.Equals(llaveValorDto.Valor)) == null)
                {
                    listaAnos.Add(new LlaveValorDto(ano.ToString(), ano.ToString()));
                }
            }

            listaAnos.Sort((x, y) => Convert.ToInt32(x.Llave).CompareTo(Convert.ToInt32(y.Llave)));

            ResultadoOperacionDto resultadoOperacionDto = new ResultadoOperacionDto();

            resultadoOperacionDto.InformacionExtra = listaAnos;
            resultadoOperacionDto.Resultado        = true;
            return(resultadoOperacionDto);
        }
예제 #2
0
        public void ConsultaNBis1()
        {
            var AbaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo();

            AbaxXBRLCellStoreMongo.ConnectionString = ConectionString;
            AbaxXBRLCellStoreMongo.DataBaseName     = DatabaseName;
            AbaxXBRLCellStoreMongo.JSONOutDirectory = JsonErrorDirectory;
            AbaxXBRLCellStoreMongo.Init();
            var listaElementos            = AbaxXBRLCellStoreMongo.ConsultaElementos <Nbis1Raw>("NbisUnoFideicomisoReducido", "{}");
            var diccionarioElementosNBis1 = new Dictionary <String, NBis1TableElement>();

            foreach (var elemento in listaElementos)
            {
                NBis1TableElement elementoTabla = null;
                if (!diccionarioElementosNBis1.TryGetValue(elemento.IdEnvio, out elementoTabla))
                {
                    elementoTabla         = new NBis1TableElement();
                    elementoTabla.Fecha   = elemento.Fecha;
                    elementoTabla.Entidad = elemento.Entidad;
                    elementoTabla.IdEnvio = elemento.IdEnvio;
                    diccionarioElementosNBis1.Add(elemento.IdEnvio, elementoTabla);
                }
                var idConcepto = elemento.IdConcepto;
                if (idConcepto.Equals("ar_pros_NumberOfTrust"))
                {
                    elementoTabla.NumeroFideicomiso = elemento.Valor;
                }
                else if (idConcepto.Equals("ar_pros_NameOfTheIssuer"))
                {
                    elementoTabla.Fiduciario = elemento.Valor;
                }
                else if (idConcepto.Equals("ar_pros_Settlor"))
                {
                    elementoTabla.Fideicomitente = elemento.Valor;
                }
                else if (idConcepto.Equals("ar_pros_GuaranteesOnAssets"))
                {
                    elementoTabla.Garantia = elemento.Valor;
                }
                else if (idConcepto.Equals("ar_pros_OtherThirdPartiesObligatedWithTheTrust"))
                {
                    elementoTabla.Otros = elemento.Valor;
                }
            }

            using (StreamWriter w = File.AppendText(PathArchivoNBis1Csv))
            {
                foreach (var idEnvio in diccionarioElementosNBis1.Keys)
                {
                    var elementoTabla = diccionarioElementosNBis1[idEnvio];
                    var linea         = CreaLineaCsv(elementoTabla);
                    w.Write(linea);
                }
                w.Close();
            }
        }
예제 #3
0
        public void GeneraHechosCreditos()
        {
            LogUtil.LogDirPath = @"..\..\TestOutput\";
            LogUtil.Inicializa();
            var AbaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo();

            AbaxXBRLCellStoreMongo.ConnectionString = ConectionString;
            AbaxXBRLCellStoreMongo.DataBaseName     = DatabaseName;
            AbaxXBRLCellStoreMongo.JSONOutDirectory = JsonErrorDirectory;
            AbaxXBRLCellStoreMongo.Init();
            var listaElementos = AbaxXBRLCellStoreMongo.ConsultaElementos <IDictionary <string, object> >(ColeccionOrigen, "{}");

            foreach (var elemento in listaElementos)
            {
                LogUtil.Info(elemento);
            }
        }
예제 #4
0
        public void Consulta4D()
        {
            LogUtil.LogDirPath = @"..\..\TestOutput\";
            LogUtil.Inicializa();

            var AbaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo();

            AbaxXBRLCellStoreMongo.ConnectionString = ConectionString;
            AbaxXBRLCellStoreMongo.DataBaseName     = DatabaseName;
            AbaxXBRLCellStoreMongo.JSONOutDirectory = JsonErrorDirectory;
            AbaxXBRLCellStoreMongo.Init();
            var listaElementos       = AbaxXBRLCellStoreMongo.ConsultaElementos <HechoReducido>(ColeccionOrigen, "{}");
            var diccionarioElementos = new Dictionary <String, ElementoConsulta4D>();

            File.Delete(PathArchivoCSV);
            LlenaElementosBase(listaElementos, diccionarioElementos, AbaxXBRLCellStoreMongo);
            LlenaInformacionFinanciera(listaElementos, diccionarioElementos);
            AjusteAdicionalPorInconsistencia(listaElementos, diccionarioElementos);
            using (StreamWriter w = File.AppendText(PathArchivoCSV))
            {
                foreach (var idEnvio in diccionarioElementos.Keys)
                {
                    var elementoTabla = diccionarioElementos[idEnvio];
                    if (String.IsNullOrEmpty(elementoTabla.NumeroTrimestre))
                    {
                        LogUtil.Error(new Dictionary <String, object>()
                        {
                            { "Error", " Inconsistencia de datos" },
                            { "Elemento", elementoTabla }
                        });
                        continue;
                    }
                    if (elementoTabla.NumeroTrimestre.Contains("4D"))
                    {
                        var linea = CreaLineaCsv(elementoTabla);
                        w.Write(linea);
                    }
                }
                w.Close();
            }
        }
        public void ConsultaPersonasResponsables()
        {
            var AbaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo();

            AbaxXBRLCellStoreMongo.ConnectionString = ConectionString;
            AbaxXBRLCellStoreMongo.DataBaseName     = DatabaseName;
            AbaxXBRLCellStoreMongo.JSONOutDirectory = JsonErrorDirectory;
            AbaxXBRLCellStoreMongo.Init();
            var listaElementos = AbaxXBRLCellStoreMongo.ConsultaElementos <MapaPersonasResponsables>("PersonasResponsablesReducido", "{}");
            var diccionarioElementosInstitucion = new Dictionary <String, IList <MapaPersonasResponsables> >();
            var diccionarioInstituciones        = new Dictionary <String, MapaPersonasResponsables>();
            var diccionarioPorPersona           = new Dictionary <String, PersonaResponsable>();

            foreach (var elemento in listaElementos)
            {
                elemento.HashInstitucion = CreaHashInstitucion(elemento);
                if (elemento.IdConcepto.Equals("ar_pros_ResponsiblePersonInstitution"))
                {
                    if (!diccionarioInstituciones.ContainsKey(elemento.HashInstitucion))
                    {
                        diccionarioInstituciones.Add(elemento.HashInstitucion, elemento);
                    }
                }
                else if (!String.IsNullOrEmpty(elemento.IdSecuenciaPersona))
                {
                    elemento.HashPersona = UtilAbax.CalcularHash(elemento.HashInstitucion + elemento.IdSecuenciaPersona);
                    IList <MapaPersonasResponsables> listaPersonasMap;
                    if (!diccionarioElementosInstitucion.TryGetValue(elemento.HashInstitucion, out listaPersonasMap))
                    {
                        listaPersonasMap = new List <MapaPersonasResponsables>();
                        diccionarioElementosInstitucion.Add(elemento.HashInstitucion, listaPersonasMap);
                    }
                    listaPersonasMap.Add(elemento);
                }
            }

            foreach (var hashInstitucion in diccionarioElementosInstitucion.Keys)
            {
                MapaPersonasResponsables         elementoInstitucion;
                IList <MapaPersonasResponsables> listaElementosIterar;
                if (!diccionarioInstituciones.TryGetValue(hashInstitucion, out elementoInstitucion) ||
                    !diccionarioElementosInstitucion.TryGetValue(hashInstitucion, out listaElementosIterar))
                {
                    continue;
                }

                foreach (var elemento in listaElementosIterar)
                {
                    PersonaResponsable personaResponsable;
                    if (!diccionarioPorPersona.TryGetValue(elemento.HashPersona, out personaResponsable))
                    {
                        personaResponsable         = new PersonaResponsable();
                        personaResponsable.Entidad = elementoInstitucion.Entidad;
                        personaResponsable.Fecha   = elementoInstitucion.Fecha;
                        personaResponsable.TipoPersonaResponsable   = elementoInstitucion.TipoPersonaResponsable;
                        personaResponsable.Institucion              = elementoInstitucion.Valor;
                        personaResponsable.IdTipoPersonaResponsable = elementoInstitucion.IdTipoPersonaResponsable;
                        diccionarioPorPersona.Add(elemento.HashPersona, personaResponsable);
                        if (String.IsNullOrEmpty(personaResponsable.TipoPersonaResponsable))
                        {
                            personaResponsable.TipoPersonaResponsable = DeterminaEtiquetaTipoPersonaResponsable(elementoInstitucion.IdTipoPersonaResponsable);
                        }
                    }
                    if (elemento.IdConcepto.Equals("ar_pros_ResponsiblePersonPosition"))
                    {
                        personaResponsable.Cargo = elemento.Valor;
                    }
                    else if (elemento.IdConcepto.Equals("ar_pros_ResponsiblePersonName"))
                    {
                        personaResponsable.Nombre = elemento.Valor;
                    }
                }
            }
            //if (File.Exists(PathArchivoPersonasResponsables))
            //{
            //    File.Delete(PathArchivoPersonasResponsables);
            //}
            //File.Create(PathArchivoPersonasResponsables);
            using (StreamWriter w = File.AppendText(PathArchivoPersonasResponsables))
            {
                foreach (var hashPersona in diccionarioPorPersona.Keys)
                {
                    var persona = diccionarioPorPersona[hashPersona];
                    var linea   = CreaLineaPersonaResponsable(persona);
                    w.Write(linea);
                    //File.AppendAllText(PathArchivoPersonasResponsables, "text content" + Environment.NewLine);
                }
                w.Close();
            }
        }
예제 #6
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);
        }
예제 #7
0
        public void GeneraColeccionResumen4D()
        {
            var AbaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo();

            AbaxXBRLCellStoreMongo.ConnectionString = ConectionString;
            AbaxXBRLCellStoreMongo.DataBaseName     = DatabaseName;
            AbaxXBRLCellStoreMongo.Init();

            var universoTaxonomias = "'http://www.bmv.com.mx/taxonomy/ifrs_mx/full_ifrs_mc_mx_ics_entry_point_2014-12-05', 'http://www.bmv.com.mx/taxonomy/ifrs_mx/full_ifrs_mc_mx_cp_entry_point_2014-12-05'," +
                                     "'http://www.bmv.com.mx/taxonomy/ifrs_mx/full_ifrs_mc_mx_fibras_entry_point_2014-12-05', 'http://www.bmv.com.mx/2015-06-30/ccd/full_ifrs_ccd_entry_point_2015-06-30', " +
                                     "'http://www.bmv.com.mx/2015-06-30/deuda/full_ifrs_deuda_entry_point_2015-06-30'";

            var parametrosEnvio = " { 'Parametros.trimestre': '4D', Taxonomia: {$in : [" + universoTaxonomias + "] } }";

            var listaEnvios = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", parametrosEnvio);

            IList <Hecho> listaHechos = new List <Hecho>();

            if (listaEnvios.Count > 0)
            {
                listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementos <Hecho>("Hecho", ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, ResumenInformacion4D.universoIdHechos));
            }

            List <Dictionary <Envio, IList <Hecho> > > listaHechosPorEnvio = new List <Dictionary <Envio, IList <Hecho> > >();

            if (listaEnvios != null && listaEnvios.Count > 0 && listaHechos != null && listaHechos.Count > 0)
            {
                foreach (var envio in listaEnvios)
                {
                    IList <Hecho> listaHechosPorIdEnvio = listaHechos.ToList().FindAll(hecho => hecho.IdEnvio == envio.IdEnvio);

                    Dictionary <Envio, IList <Hecho> > hechosPorEnvio = new Dictionary <Envio, IList <Hecho> >();
                    hechosPorEnvio.Add(envio, listaHechosPorIdEnvio);

                    listaHechosPorEnvio.Add(hechosPorEnvio);
                }
            }

            List <ResumenInformacion4D> listaResumenInformacion4D = new List <ResumenInformacion4D>();

            #region Se construye la lista del Resumen de Información 4D.

            foreach (var infoEnvio in listaHechosPorEnvio)
            {
                ResumenInformacion4D elemento = new ResumenInformacion4D();

                var taxonomia = infoEnvio.ElementAt(0).Key.Taxonomia;

                elemento.IdEnvio      = infoEnvio.ElementAt(0).Key.IdEnvio;
                elemento.Taxonomia    = taxonomia;
                elemento.FechaReporte = infoEnvio.ElementAt(0).Key.Periodo.Fecha.GetValueOrDefault().ToString("dd/MM/yyyy");
                elemento.TotalActivo  = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Assets")) != null) ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Assets")).Valor) : 0;
                elemento.TotalPasivo  = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Liabilities")) != null) ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Liabilities")).Valor) : 0;
                elemento.TotalCapitalContablePasivo = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_EquityAndLiabilities")) != null) ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_EquityAndLiabilities")).Valor) : 0;
                elemento.Ingreso = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Revenue")) != null) ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Revenue")).Valor) : 0;

                try
                {
                    elemento.Unidad = infoEnvio.ElementAt(0).Key.Parametros["moneda"].ToString().Substring(infoEnvio.ElementAt(0).Key.Parametros["moneda"].ToString().LastIndexOf(':') + 1);
                }
                catch (KeyNotFoundException)
                {
                    //LogUtil.Error("LLave no encontrada");
                }

                switch (taxonomia)
                {
                case "http://www.bmv.com.mx/taxonomy/ifrs_mx/full_ifrs_mc_mx_ics_entry_point_2014-12-05":
                case "http://www.bmv.com.mx/taxonomy/ifrs_mx/full_ifrs_mc_mx_cp_entry_point_2014-12-05":
                case "http://www.bmv.com.mx/taxonomy/ifrs_mx/full_ifrs_mc_mx_fibras_entry_point_2014-12-05":
                    elemento.ClaveCotizacion   = infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs_mx-cor_20141205_ClaveDeCotizacionBloqueDeTexto")).Valor;
                    elemento.NumeroFideicomiso = "";
                    elemento.NombreProveedorServiciosAuditoria = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs_mx-cor_20141205_NombreDeProveedorDeServiciosDeAuditoriaExternaBloqueDeTexto")).Valor);
                    elemento.NombreSocioOpinion            = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs_mx-cor_20141205_NombreDelSocioQueFirmaLaOpinionBloqueDeTexto")).Valor);
                    elemento.TipoOpinionEstadosFinancieros = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs_mx-cor_20141205_TipoDeOpinionALosEstadosFinancierosBloqueDeTexto")).Valor);
                    break;

                case "http://www.bmv.com.mx/2015-06-30/ccd/full_ifrs_ccd_entry_point_2015-06-30":
                    elemento.ClaveCotizacion   = infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_ccd_Ticker")).Valor;
                    elemento.NumeroFideicomiso = infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_ccd_TrustNumber")).Valor;
                    elemento.NombreProveedorServiciosAuditoria = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_ccd_NameServiceProviderExternalAudit")).Valor);
                    elemento.NombreSocioOpinion            = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_ccd_NameOfTheAsociadoSigningOpinion")).Valor);
                    elemento.TipoOpinionEstadosFinancieros = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_ccd_TypeOfOpinionOnTheFinancialStatements")).Valor);
                    break;

                case "http://www.bmv.com.mx/2015-06-30/deuda/full_ifrs_deuda_entry_point_2015-06-30":
                    elemento.ClaveCotizacion   = infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_deuda_Ticker")).Valor;
                    elemento.NumeroFideicomiso = infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_deuda_TrustNumber")).Valor;;
                    elemento.NombreProveedorServiciosAuditoria = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_deuda_NameServiceProviderExternalAudit")).Valor);
                    elemento.NombreSocioOpinion            = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_deuda_NameOfTheAsociadoSigningOpinion")).Valor);
                    elemento.TipoOpinionEstadosFinancieros = ReporteUtil.removeTextHTML(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("mx_deuda_TypeOfOpinionOnTheFinancialStatements")).Valor);
                    break;

                default:
                    break;
                }

                listaResumenInformacion4D.Add(elemento);
            }
            #endregion

            AbaxXBRLCellStoreMongo.UpsertCollectionReportes("Resumen4D", listaResumenInformacion4D);
        }
예제 #8
0
        public void GeneraColeccionAdministradores()
        {
            var AbaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo();

            AbaxXBRLCellStoreMongo.ConnectionString = ConectionString;
            AbaxXBRLCellStoreMongo.DataBaseName     = DatabaseName;
            AbaxXBRLCellStoreMongo.Init();

            List <Administrador> listaAdministradores = new List <Administrador>();

            var listaEnvios = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", "{}");

            List <Hecho> listaHechos = new List <Hecho>();

            //long cantidadHechosAProcesar = 0;

            //if (listaEnvios.Count > 0)
            //{
            //    cantidadHechosAProcesar = AbaxXBRLCellStoreMongo.CuentaElementosColeccion("Hecho", ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos));
            //}

            //if (cantidadHechosAProcesar == 0)
            //{
            //    return;
            //}

            //var cantidad = 2000;
            //decimal cantidadVecesAEjecutar = (decimal)cantidadHechosAProcesar / 2000;
            //int cantidadVecesAEjecutarEntero = (int)cantidadVecesAEjecutar;
            //long cantidadRegistrosUltimaPagina = cantidadHechosAProcesar - (cantidadVecesAEjecutarEntero * cantidad);

            //if (cantidadVecesAEjecutar > cantidadVecesAEjecutarEntero)
            //{
            //    cantidadVecesAEjecutarEntero = cantidadVecesAEjecutarEntero + 1;
            //}

            //if (listaEnvios.Count > 0)
            //{

            //    for (var i = 1; i <= cantidadVecesAEjecutarEntero; i++)
            //    {
            //        if (listaHechos.Count == 0)
            //        {
            //            if (i == (cantidadVecesAEjecutarEntero))
            //            {
            //                listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos), null, (int)cantidadRegistrosUltimaPagina, i).ToList();
            //            }
            //            else
            //            {
            //                listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos), null, cantidad, i).ToList();
            //            }

            //        }
            //        else
            //        {
            //            if (i == (cantidadVecesAEjecutarEntero))
            //            {
            //                listaHechos.AddRange(AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos), null, (int)cantidadRegistrosUltimaPagina, i).ToList());
            //            }
            //            else
            //            {
            //                listaHechos.AddRange(AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos), null, cantidad, i).ToList());
            //            }

            //        }
            //    }

            //}

            listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementos <Hecho>("Hecho", ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos)).ToList();

            var hechosAgrupadosPorEnvio = listaHechos.GroupBy(hecho => hecho.IdEnvio);

            Dictionary <String, List <List <Hecho> > > listaDeSecuenciaPorEnvio = new Dictionary <string, List <List <Hecho> > >();

            foreach (var grupo in hechosAgrupadosPorEnvio)
            {
                var hechosAgrupadosPorSecuencia = grupo.ToList().GroupBy(hecho => hecho.MiembrosDimensionales[0].MiembroTipificado).Select(grp => grp.ToList()).ToList();

                Dictionary <String, List <List <Hecho> > > elemento = new Dictionary <string, List <List <Hecho> > >();

                listaDeSecuenciaPorEnvio.Add(grupo.Key, hechosAgrupadosPorSecuencia);
            }

            Administrador administrador;

            foreach (var listaSecuenciasPorEnvio in listaDeSecuenciaPorEnvio)
            {
                foreach (var elementoListaSecuencia in listaSecuenciasPorEnvio.Value)
                {
                    var entidad      = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorName")).Entidad.Nombre;
                    var taxonomia    = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorName")).Taxonomia;
                    var idEnvio      = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorName")).IdEnvio;
                    var fechaReporte = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorName")).Periodo.FechaInstante;

                    var    elementoAux       = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorName"));
                    String tipoAdministrador = "";

                    if (elementoAux != null)
                    {
                        if (elementoAux.MiembrosDimensionales.ToList().Find(miembro => miembro.Explicita == true).EtiquetasMiembroDimension.ToList().Count > 0)
                        {
                            tipoAdministrador = elementoAux.MiembrosDimensionales.ToList().Find(miembro => miembro.Explicita == true).EtiquetasMiembroDimension.ToList().Find(etiqueta => etiqueta.Idioma.Equals("es")).Valor;
                        }
                    }

                    var hechoNombre          = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorName"));
                    var hechoApellidoPaterno = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorFirstName"));
                    var hechoApellidoMaterno = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorSecondName"));
                    var hechoTipoConsejero   = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorDirectorshipType"));
                    var hechoAuditoria       = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesAudit"));
                    var hechoPS               = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesCorporatePractices"));
                    var hechoEyC              = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesEvaluationAndCompensation"));
                    var hechoOtros            = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesOthers"));
                    var hechoFechaDesignacion = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorDesignationDate"));
                    var hechoTipoAsamblea     = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorAssemblyType"));
                    var hechoPeriodoElecto    = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorPeriodForWhichTheyWereElected"));
                    var hechoCargo            = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorPosition"));
                    var hechoTiempoCargo      = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorTimeWorkedInTheIssuer"));
                    var hechoPartAccionaria   = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorShareholding"));
                    var hechoSexo             = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorGender"));
                    var hechoInfoAdicional    = elementoListaSecuencia.Find(hechoNombreAux => hechoNombreAux.Concepto.IdConcepto.Equals("ar_pros_AdministratorAdditionalInformation"));

                    administrador           = new Administrador();
                    administrador.Taxonomia = taxonomia ?? "";
                    administrador.IdEnvio   = idEnvio ?? "";

                    if (fechaReporte != null)
                    {
                        try
                        {
                            Console.WriteLine("Error en fecha fechaReporte: ", fechaReporte);
                            administrador.FechaReporte = Convert.ToDateTime(fechaReporte).ToString("dd/MM/yyyy");
                        }
                        catch (Exception e)
                        {
                            administrador.FechaReporte = "";
                            LogUtil.Error("Error en fecha: " + fechaReporte);
                        }
                    }

                    administrador.ClaveCotizacion        = entidad ?? "";
                    administrador.TipoAdministrador      = (tipoAdministrador != null) ? tipoAdministrador : "";
                    administrador.Nombre                 = (hechoNombre != null && hechoNombre.Valor != null) ? hechoNombre.Valor : "";
                    administrador.ApellidoPaterno        = (hechoApellidoPaterno != null && hechoApellidoPaterno.Valor != null) ? hechoApellidoPaterno.Valor : "";
                    administrador.ApellidoMaterno        = (hechoApellidoMaterno != null && hechoApellidoMaterno.Valor != null) ? hechoApellidoMaterno.Valor : "";
                    administrador.TipoConsejero          = (hechoTipoConsejero != null) ? hechoTipoConsejero.Valor : "";
                    administrador.Auditoria              = (hechoAuditoria != null && hechoAuditoria.Valor != null) ? hechoAuditoria.Valor : "";
                    administrador.PracticasSocietarias   = (hechoPS != null && hechoPS.Valor != null) ? hechoPS.Valor : "";
                    administrador.EvaluacionCompensacion = (hechoEyC != null && hechoEyC.Valor != null) ? hechoEyC.Valor : "";
                    administrador.Otros = (hechoOtros != null && hechoOtros.Valor != null) ? ReporteUtil.removeTextHTML(hechoOtros.Valor) : "";
                    if (hechoFechaDesignacion != null && hechoFechaDesignacion.Valor != null)
                    {
                        try
                        {
                            Console.WriteLine("Error en fecha hechoFechaDesignacion : ", hechoFechaDesignacion.Valor);
                            administrador.FechaDesignacion = Convert.ToDateTime(hechoFechaDesignacion.Valor).ToString("dd/MM/yyyy");
                        }
                        catch (Exception e)
                        {
                            administrador.FechaDesignacion = "";
                            LogUtil.Error("Error en fecha hechoFechaDesignacion: " + hechoFechaDesignacion.Valor);
                        }
                    }
                    administrador.TipoAsamblea            = (hechoTipoAsamblea != null && hechoTipoAsamblea.Valor != null) ? hechoTipoAsamblea.Valor : "";
                    administrador.PeriodoElecto           = (hechoPeriodoElecto != null && hechoPeriodoElecto.Valor != null) ? hechoPeriodoElecto.Valor : "";
                    administrador.Cargo                   = (hechoCargo != null && hechoCargo.Valor != null) ? hechoCargo.Valor : "";
                    administrador.TiempoOcupandoCargo     = (hechoTiempoCargo != null && hechoTiempoCargo.Valor != null) ? hechoTiempoCargo.Valor : "";
                    administrador.ParticipacionAccionaria = (hechoPartAccionaria != null && hechoPartAccionaria.Valor != null) ? hechoPartAccionaria.Valor : "";
                    administrador.Sexo          = (hechoSexo != null && hechoSexo.Valor != null) ? hechoSexo.Valor : "";
                    administrador.InfoAdicional = (hechoInfoAdicional != null && hechoInfoAdicional.Valor != null) ? ReporteUtil.removeTextHTML(hechoInfoAdicional.Valor) : "";

                    listaAdministradores.Add(administrador);
                }
            }

            AbaxXBRLCellStoreMongo.UpsertCollectionReportes("Administrador", listaAdministradores);
        }
예제 #9
0
        public void GeneraColeccionPersonasResponsables()
        {
            var AbaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo();

            AbaxXBRLCellStoreMongo.ConnectionString = ConectionString;
            AbaxXBRLCellStoreMongo.DataBaseName     = DatabaseName;
            AbaxXBRLCellStoreMongo.Init();

            List <PersonaResponsable> listaAdministradores = new List <PersonaResponsable>();

            var listaEnvios = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", "{}");

            List <Hecho> listaHechos = new List <Hecho>();

            //            long cantidadHechosAProcesar = 0;

            //            if (listaEnvios.Count > 0)
            //            {
            ////                cantidadHechosAProcesar = AbaxXBRLCellStoreMongo.CuentaElementosColeccion("Hecho", "{ 'Concepto.IdConcepto':  { $in: [ 'ar_pros_ResponsiblePersonInstitution','ar_pros_ResponsiblePersonName', 'ar_pros_ResponsiblePersonPosition'  ]} , IdEnvio: { $in: [ '97238FE67F4C496B8FEC7A17B86A733A']}}");

            //                cantidadHechosAProcesar = AbaxXBRLCellStoreMongo.CuentaElementosColeccion("Hecho", ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, PersonaResponsable.universoIdHechos));
            //            }

            //            if (cantidadHechosAProcesar == 0)
            //            {
            //                return;
            //            }

            //            var cantidad = 2000;
            //            decimal cantidadVecesAEjecutar = (decimal)cantidadHechosAProcesar / 2000;
            //            int cantidadVecesAEjecutarEntero = (int)cantidadVecesAEjecutar;
            //            long cantidadRegistrosUltimaPagina = cantidadHechosAProcesar - (cantidadVecesAEjecutarEntero * cantidad);

            //            if (cantidadVecesAEjecutar > cantidadVecesAEjecutarEntero)
            //            {
            //                cantidadVecesAEjecutarEntero = cantidadVecesAEjecutarEntero + 1;
            //            }

            //            if (listaEnvios.Count > 0)
            //            {

            //                for (var i = 1; i <= cantidadVecesAEjecutarEntero; i++)
            //                {
            //                    if (listaHechos.Count == 0)
            //                    {
            //                        if (i == (cantidadVecesAEjecutarEntero))
            //                        {
            //                            listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, PersonaResponsable.universoIdHechos), null, (int)cantidadRegistrosUltimaPagina, i).ToList();
            //                            //listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>("{ 'Concepto.IdConcepto':  { $in: [ 'ar_pros_ResponsiblePersonInstitution','ar_pros_ResponsiblePersonName', 'ar_pros_ResponsiblePersonPosition'  ]} , IdEnvio: { $in: [ '97238FE67F4C496B8FEC7A17B86A733A']}}", null, (int)cantidadRegistrosUltimaPagina, i).ToList();
            //                        }
            //                        else
            //                        {
            //                            listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, PersonaResponsable.universoIdHechos), null, cantidad, i).ToList();
            //                            //listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>("{ 'Concepto.IdConcepto':  { $in: [ 'ar_pros_ResponsiblePersonInstitution','ar_pros_ResponsiblePersonName', 'ar_pros_ResponsiblePersonPosition'  ]} , IdEnvio: { $in: [ '97238FE67F4C496B8FEC7A17B86A733A']}}", null, cantidad, i).ToList();
            //                        }

            //                    }
            //                    else
            //                    {
            //                        if (i == (cantidadVecesAEjecutarEntero))
            //                        {
            //                            listaHechos.AddRange(AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, PersonaResponsable.universoIdHechos), null, (int)cantidadRegistrosUltimaPagina, i).ToList());
            //                            //listaHechos.AddRange(AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>("{ 'Concepto.IdConcepto':  { $in: [ 'ar_pros_ResponsiblePersonInstitution','ar_pros_ResponsiblePersonName', 'ar_pros_ResponsiblePersonPosition'  ]} , IdEnvio: { $in: [ '97238FE67F4C496B8FEC7A17B86A733A']}}", null, (int)cantidadRegistrosUltimaPagina, i).ToList());
            //                        }
            //                        else
            //                        {
            //                            listaHechos.AddRange(AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, PersonaResponsable.universoIdHechos), null, cantidad, i).ToList());
            //                            //listaHechos.AddRange(AbaxXBRLCellStoreMongo.ConsultaElementosColeccion<Hecho>("{ 'Concepto.IdConcepto':  { $in: [ 'ar_pros_ResponsiblePersonInstitution','ar_pros_ResponsiblePersonName', 'ar_pros_ResponsiblePersonPosition'  ]} , IdEnvio: { $in: [ '97238FE67F4C496B8FEC7A17B86A733A']}}", null, cantidad, i).ToList());
            //                        }

            //                    }
            //                }

            //            }

            listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementos <Hecho>("Hecho", ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, PersonaResponsable.universoIdHechos)).ToList();

            var hechosAgrupadosPorEnvio = listaHechos.GroupBy(hecho => hecho.IdEnvio).Select(grp => grp.ToList()).ToList();

            List <PersonaResponsable> listaPersonaResponsable = new List <PersonaResponsable>();

            foreach (var grupoHechosPorEnvio in hechosAgrupadosPorEnvio)
            {
                var listaHechosPorSecuenciaInstitucion = grupoHechosPorEnvio.ToList().GroupBy(hecho => hecho.MiembrosDimensionales[0].MiembroTipificado).Select(grp => grp.ToList()).ToList();

                foreach (var elementoListaSecuenciaInstitucion in listaHechosPorSecuenciaInstitucion)
                {
                    var listaHechosPorSecuenciaPersona = (from hecho in elementoListaSecuenciaInstitucion from miembro in hecho.MiembrosDimensionales where miembro.IdDimension.Equals("ar_pros_ResponsiblePersonsSequenceTypedAxis") group hecho by miembro.MiembroTipificado into grupo select grupo.ToList()).ToList();

                    foreach (var lista in listaHechosPorSecuenciaPersona)
                    {
                        PersonaResponsable personaResponsable = new PersonaResponsable();
                        var hechoInstitucion = elementoListaSecuenciaInstitucion.Find(hechoInstitucionAux => hechoInstitucionAux.Concepto.IdConcepto.Equals("ar_pros_ResponsiblePersonName"));

                        personaResponsable.IdEnvio         = (hechoInstitucion != null && hechoInstitucion.IdEnvio != null) ? hechoInstitucion.IdEnvio : "";
                        personaResponsable.Taxonomia       = (hechoInstitucion != null && hechoInstitucion.Taxonomia != null) ? hechoInstitucion.Taxonomia : "";
                        personaResponsable.ClaveCotizacion = (hechoInstitucion != null && hechoInstitucion.Entidad != null) ? hechoInstitucion.Entidad.Nombre : "";
                        personaResponsable.Fecha           = (hechoInstitucion != null && hechoInstitucion.Periodo != null) ? hechoInstitucion.Periodo.FechaInstante.GetValueOrDefault().ToString("dd/MM/yyyy") : "";
                        var miembro = hechoInstitucion.MiembrosDimensionales.ToList().Find(elemento => elemento.IdDimension.Equals("ar_pros_TypeOfResponsibleFigureAxis"));

                        if (miembro != null)
                        {
                            var etiquetaMiembroDimension = miembro.EtiquetasMiembroDimension.ToList().Find(elemento => (elemento.Idioma.Equals("es") && elemento.Rol.Equals("http://www.xbrl.org/2003/role/label")));
                            var valorEtiqueta            = (etiquetaMiembroDimension != null) ? etiquetaMiembroDimension.Valor : "";
                            personaResponsable.TipoPersonaResponsable = (valorEtiqueta != null) ? valorEtiqueta : "";
                        }

                        var hechoInstitucionAux2 = elementoListaSecuenciaInstitucion.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_ResponsiblePersonInstitution"));

                        personaResponsable.Institucion = (hechoInstitucionAux2 != null && hechoInstitucionAux2.Valor != null) ? hechoInstitucionAux2.Valor : "";

                        personaResponsable.Cargo  = (lista.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_ResponsiblePersonPosition")) != null) ? lista.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_ResponsiblePersonPosition")).Valor : "";
                        personaResponsable.Nombre = (lista.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_ResponsiblePersonName")) != null) ? lista.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_ResponsiblePersonName")).Valor : "";

                        listaPersonaResponsable.Add(personaResponsable);
                    }
                }
            }

            AbaxXBRLCellStoreMongo.UpsertCollectionReportes("PersonaResponsable", listaPersonaResponsable);
        }