/// <summary> /// Método asíncrono que genera documentos en la collection Resumen4D de envios actuales no procesados. /// </summary> /// <returns></returns> async Task GeneraColeccionResumen4D() { await Task.Run(() => { List <ResumenInformacion4D> listaPersonasResponsables = new List <ResumenInformacion4D>(); 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'"; #region Elimina los documentos de envios con el atributo EsVersionActual=false. var parametrosEnvio = " { EsVersionActual: false, 'Parametros.trimestre': '4D', Taxonomia: {$in : [" + universoTaxonomias + "] } }"; var listaIdEnviosAEliminarEnResumen4D = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", parametrosEnvio).ToList(); List <String> listaIdEnviosAEliminarEnResumen4DCadena = new List <string>(); if (listaIdEnviosAEliminarEnResumen4D.Count > 0) { listaIdEnviosAEliminarEnResumen4DCadena = listaIdEnviosAEliminarEnResumen4D.Select(envio => "'" + envio.IdEnvio + "',").ToList(); } var filtros = "{IdEnvio: {$in : [" + String.Join(" ", listaIdEnviosAEliminarEnResumen4DCadena.ToArray()).TrimEnd(',') + "]}}"; AbaxXBRLCellStoreMongo.EliminarAsync("Resumen4D", filtros); #endregion #region Obtiene los envios actuales a procesar, se quitan aquellos que han sido procesados con anterioridad. parametrosEnvio = " { EsVersionActual: true, 'Parametros.trimestre': '4D', Taxonomia: {$in : [" + universoTaxonomias + "] } }"; var listaEnvios = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", parametrosEnvio); List <ResumenInformacion4D> listaResumen4DEnMongo = AbaxXBRLCellStoreMongo.ConsultaElementos <ResumenInformacion4D>("Resumen4D", "{}").ToList(); foreach (var resumen4DAux3 in listaResumen4DEnMongo) { if (listaEnvios.ToList().Find(envio => envio.IdEnvio.Equals(resumen4DAux3.IdEnvio)) != null) { var envio = listaEnvios.ToList().Find(envioAux => envioAux.IdEnvio.Equals(resumen4DAux3.IdEnvio)); listaEnvios.Remove(envio); } } #endregion List <Hecho> listaHechos = new List <Hecho>(); //Se ontienen los hechos que interesan de los envios no procesados. if (listaEnvios.Count > 0) { listaHechos = AbaxXBRLCellStoreMongo.ConsultaElementos <Hecho>("Hecho", ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, ResumenInformacion4D.universoIdHechos)).ToList(); } List <Dictionary <Envio, IList <Hecho> > > listaHechosPorEnvio = new List <Dictionary <Envio, IList <Hecho> > >(); //Se crea una lista Del envio (Key) y sus hechos (value). 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"); var fechaReporte = infoEnvio.ElementAt(0).Key.Periodo.Fecha; var inicioFechaAcumuladoAnioActual = new DateTime(fechaReporte.GetValueOrDefault().Year, 1, 1); elemento.TotalActivo = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Assets") && hecho.Periodo.FechaInstante.GetValueOrDefault() == fechaReporte.GetValueOrDefault())) != null ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Assets") && hecho.Periodo.FechaInstante.GetValueOrDefault() == fechaReporte.GetValueOrDefault()).Valor) : 0; elemento.TotalPasivo = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Liabilities") && hecho.Periodo.FechaInstante.GetValueOrDefault() == fechaReporte.GetValueOrDefault())) != null ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Liabilities") && hecho.Periodo.FechaInstante.GetValueOrDefault() == fechaReporte.GetValueOrDefault()).Valor) : 0; elemento.TotalCapitalContablePasivo = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_EquityAndLiabilities") && hecho.Periodo.FechaInstante.GetValueOrDefault() == fechaReporte.GetValueOrDefault())) != null ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_EquityAndLiabilities") && hecho.Periodo.FechaInstante.GetValueOrDefault() == fechaReporte.GetValueOrDefault()).Valor) : 0; elemento.Ingreso = (infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Revenue") && hecho.Periodo.FechaInicio.GetValueOrDefault() == inicioFechaAcumuladoAnioActual && hecho.Periodo.FechaFin.GetValueOrDefault() == fechaReporte.GetValueOrDefault())) != null ? Decimal.Parse(infoEnvio.ElementAt(0).Value.ToList().Find(hecho => hecho.Concepto.IdConcepto.Equals("ifrs-full_Revenue") && hecho.Periodo.FechaInicio.GetValueOrDefault() == inicioFechaAcumuladoAnioActual && hecho.Periodo.FechaFin.GetValueOrDefault() == fechaReporte.GetValueOrDefault()).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); }); }
/// <summary> /// Escribe la sección de eventos relevantes del reporte Calculo de Materialidad. /// </summary> /// <param name="sheet"></param> /// <param name="enviosEventoRelevante"></param> public static void EscribirSeccionEventosRelevantesCalculoMaterialidad(ISheet sheet, List <List <Hecho> > enviosEventoRelevante) { int renglon = 25; int indice = 1; foreach (var envioEventoRelevante in enviosEventoRelevante) { var eventoRelevante = envioEventoRelevante.Find(hecho => hecho.Concepto.IdConcepto.Equals(ReporteErPcsUtil.ID_CONCEPTO_EVENTO_RELEVANTE)) != null?ReporteUtil.removeTextHTML(envioEventoRelevante.Find(hecho => hecho.Concepto.IdConcepto.Equals(ReporteErPcsUtil.ID_CONCEPTO_EVENTO_RELEVANTE)).Valor) : ""; sheet.GetRow(renglon).GetCell(0).SetCellValue(indice.ToString() + ". " + eventoRelevante); indice++; renglon++; } }
/// <summary> /// Método asíncrono que genera documentos en la collection PersonaResponsable de envios actuales no procesados. /// </summary> /// <returns></returns> async Task GeneraColeccionAdministradores() { await Task.Run(() => { List <Administrador> listaAdministradores = new List <Administrador>(); #region Eliminación de Documentos de la coleccion Administrador donde sus envíos no son actuales. var listaIdEnviosAEliminarEnAdministrador = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", "{EsVersionActual: false}").ToList(); List <String> listaIdEnviosAEliminarEnAdministradorCadena = new List <string>(); if (listaIdEnviosAEliminarEnAdministrador.Count > 0) { listaIdEnviosAEliminarEnAdministradorCadena = listaIdEnviosAEliminarEnAdministrador.Select(envio => "'" + envio.IdEnvio + "',").ToList(); } var filtros = "{IdEnvio: {$in : [" + String.Join(" ", listaIdEnviosAEliminarEnAdministradorCadena.ToArray()).TrimEnd(',') + "]}}"; AbaxXBRLCellStoreMongo.EliminarAsync("Administrador", filtros); #endregion #region Obtención de Envios Actuales a procesar. var listaEnvios = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", "{EsVersionActual: true}"); List <Administrador> listaAdministradoresEnMongo = AbaxXBRLCellStoreMongo.ConsultaElementos <Administrador>("Administrador", "{}").ToList(); foreach (var administradorAux3 in listaAdministradoresEnMongo) { if (listaEnvios.ToList().Find(envio => envio.IdEnvio.Equals(administradorAux3.IdEnvio)) != null) { var envio = listaEnvios.ToList().Find(envioAux => envioAux.IdEnvio.Equals(administradorAux3.IdEnvio)); listaEnvios.Remove(envio); } } #endregion List <Hecho> listaHechos = new List <Hecho>(); #region Obtención de hechos a procesar. long cantidadHechosAProcesar = 0; if (listaEnvios.Count > 0) { cantidadHechosAProcesar = AbaxXBRLCellStoreMongo.CuentaElementosColeccion("Hecho", ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos)); } if (cantidadHechosAProcesar == 0) { return; } var cantidad = 500; decimal cantidadVecesAEjecutar = (decimal)cantidadHechosAProcesar / cantidad; 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)cantidad, 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)cantidad, i).ToList()); } else { listaHechos.AddRange(AbaxXBRLCellStoreMongo.ConsultaElementosColeccion <Hecho>(ReporteUtil.obtenerFiltrosHechosEnFormatoBSON(listaEnvios, Administrador.universoIdHechos), null, cantidad, i).ToList()); } } } } #endregion #region Creación de listado de Administradores a insertar en la colección Administrador. 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(); 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); } } #endregion AbaxXBRLCellStoreMongo.UpsertCollectionReportes("Administrador", listaAdministradores); }); }
public ResultadoOperacionDto GenerarFichaAdministrativaEmisora(IDictionary <string, string> parametrosReporte) { ResultadoOperacionDto resultado = new ResultadoOperacionDto(); parametrosReporte.TryGetValue("ticker", out var claveCotizacion); parametrosReporte.TryGetValue("anio", out var anio); var taxonomia = taxonomiaAnexoN; if (claveCotizacion != null && anio != null) { var parametros = "{ 'Entidad.Nombre': '" + claveCotizacion + "'," + "'Periodo.Ejercicio': " + anio + "," + "Taxonomia: '" + taxonomia + "'," + "EsVersionActual: true }"; List <Envio> envios = AbaxXBRLCellStoreMongo.ConsultaElementos <Envio>("Envio", parametros).ToList(); Envio envio = null; if (envios.Count > 0) { envio = envios.ElementAt(0); } List <Hecho> hechosAProcesar = new List <Hecho>(); if (envio != null) { parametros = "{IdEnvio: '" + envio.IdEnvio + "', 'Concepto.IdConcepto': {$in : [" + conceptos + "] }}"; hechosAProcesar = AbaxXBRLCellStoreMongo.ConsultaElementos <Hecho>("Hecho", parametros).ToList(); } Hecho tipoInstrumento = hechosAProcesar.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_TypeOfInstrument")); List <AdministradorDTO> listaHechosConsejoAdministracion = ObtenerListadoHechosPorComite(hechosAProcesar, null); List <AdministradorDTO> listaHechosComiteAuditoria = ObtenerListadoHechosPorComite(hechosAProcesar, "ar_pros_AdministratorParticipateInCommitteesAudit"); List <AdministradorDTO> listaHechosComitePracticasSocietarias = ObtenerListadoHechosPorComite(hechosAProcesar, "ar_pros_AdministratorParticipateInCommitteesCorporatePractices"); List <String[]> accionistas = ObtenerAccionistas(hechosAProcesar); List <String[]> principalesFuncionarios = ObtenerPrincipalesFuncionarios(hechosAProcesar); XSSFWorkbook workBookExportar = new XSSFWorkbook(); var hoja = workBookExportar.CreateSheet("Ficha Emisora"); hoja.DisplayGridlines = false; var denominacion = hechosAProcesar.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_NameOfTheIssuer")) != null?ReporteUtil.removeTextHTML(hechosAProcesar.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_NameOfTheIssuer")).Valor) : ""; EscribirSeccionDatosGenerales(hoja, null, claveCotizacion, denominacion, (tipoInstrumento != null ? tipoInstrumento.Valor: "")); EscribirSeccionConsejoAdministracion(hoja, listaHechosConsejoAdministracion); EscribirSeccionPrincipalesFuncionarios(hoja, principalesFuncionarios); EscribirSeccionAccionistas(hoja, accionistas); EscribirSeccionComiteAuditoria(hoja, listaHechosComiteAuditoria); EscribirSeccionComitePracticasSocietarias(hoja, listaHechosComitePracticasSocietarias); var memoryStreamNew = new MemoryStream(); var currentCulture = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); workBookExportar.Write(memoryStreamNew); Thread.CurrentThread.CurrentCulture = currentCulture; resultado.InformacionExtra = memoryStreamNew.ToArray(); resultado.Resultado = true; } else { resultado.Resultado = false; resultado.Mensaje = "No se localizó ningún envío de la emisora:" + claveCotizacion + " para el año:" + anio; } return(resultado); }
private List <AdministradorDTO> ObtenerListadoHechosPorComite(List <Hecho> universoHechos, String concepto) { List <Hecho> listaHechosComiteAuditoria = new List <Hecho>(); if (universoHechos != null && universoHechos.Count > 0) { listaHechosComiteAuditoria = universoHechos.FindAll(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorName") || hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorFirstName") || hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorSecondName") || hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesAudit") || hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesCorporatePractices") || hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorPosition") || hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesOthers") || hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorDirectorshipType")).ToList(); } List <List <Hecho> > comiteAuditoriaPorSecuencia = listaHechosComiteAuditoria.ToList().GroupBy(hecho => hecho.MiembrosDimensionales[0].MiembroTipificado).Select(grp => grp.ToList()).ToList(); List <AdministradorDTO> comite = new List <AdministradorDTO>(); foreach (var listaHechos in comiteAuditoriaPorSecuencia) { AdministradorDTO administrador = new AdministradorDTO(); administrador.Nombre = listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorName")) != null?listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorName")).Valor : ""; administrador.ApellidoPaterno = listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorFirstName")) != null?listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorFirstName")).Valor : ""; administrador.ApellidoMaterno = listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorSecondName")) != null?listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorSecondName")).Valor : ""; administrador.Cargo = listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorPosition")) != null?listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorPosition")).Valor : ""; administrador.TipoConsejero = listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorDirectorshipType")) != null?listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorDirectorshipType")).Valor : ""; administrador.ParticipacionOtrosConsejos = listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesOthers")) != null?ReporteUtil.removeTextHTML(ReporteUtil.removeTextHTML(listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals("ar_pros_AdministratorParticipateInCommitteesOthers")).Valor)) : ""; if (concepto != null) { var participaEnComite = listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals(concepto)) != null?listaHechos.Find(hecho => hecho.Concepto.IdConcepto.Equals(concepto)).Valor.ToUpper() : ""; if (participaEnComite.Equals("SI")) { comite.Add(administrador); } } else { comite.Add(administrador); } } return(comite); }
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); }
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); }