/// <summary> /// Checks if the send exists in the data base. /// </summary> /// <param name="reportId">Identifier of the send.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object.</param> /// <returns>If the send exists.</returns> public static BsonDocument GetRecentlyReportSend(string reportId, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { var db = abaxXBRLCellStoreMongo.GetMongoDB(); var collection = db.GetCollection <BsonDocument>(COLLECTION_NAME); var match = new BsonDocument { { "reportId", reportId }, { "isReplaced", false } }; var groupDistinctDates = new BsonDocument { { "_id", "$registrationDate" } }; var groupMaxDate = new BsonDocument { { "_id", "_id" }, { "maxDate", new BsonDocument { { "$max", "$_id" } } } }; var projectAsStrig = new BsonDocument { { "_id", 0 }, { "maxDate", new BsonDocument { { "$dateToString", new BsonDocument { { "date", "$maxDate" }, { "format", "%Y-%m-%dT%H:%M:%S.%LZ" } } } } } }; var aggregate = collection.Aggregate().Match(match). Group(groupDistinctDates).Group(groupMaxDate).Project(projectAsStrig); return(aggregate.FirstOrDefault()); }
/// <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); }
public ActualizaNombreAdministradorTest() { abaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo(); abaxXBRLCellStoreMongo.JSONOutDirectory = @"..\..\TestOutput\"; //abaxXBRLCellStoreMongo.ConnectionString = "mongodb://localhost/test"; abaxXBRLCellStoreMongo.ConnectionString = "mongodb+srv://oscarloyola:[email protected]/test"; abaxXBRLCellStoreMongo.DataBaseName = "xbrlcellstore"; abaxXBRLCellStoreMongo.Init(); }
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(); } }
/// <summary> /// Obtiene la conexión a la base de datos. /// </summary> /// <returns>Base de datos con la conexión.</returns> public AbaxXBRLCellStoreMongo GetCellStoreMongo() { AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo(); abaxXBRLCellStoreMongo.JSONOutDirectory = @"..\..\TestOutput\"; abaxXBRLCellStoreMongo.ConnectionString = "mongodb://localhost/jbrl"; abaxXBRLCellStoreMongo.DataBaseName = "jbrl"; abaxXBRLCellStoreMongo.Init(); return(abaxXBRLCellStoreMongo); }
public CargaHechosXBRLaJBRLdeRSSTest() { abaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo(); abaxXBRLCellStoreMongo.JSONOutDirectory = @"..\..\TestOutput\"; //abaxXBRLCellStoreMongo.ConnectionString = "mongodb://localhost/test"; abaxXBRLCellStoreMongo.ConnectionString = "mongodb+srv://oscarloyola:[email protected]/test"; abaxXBRLCellStoreMongo.DataBaseName = "xbrlcellstore"; //abaxXBRLCellStoreMongo.Init2(); taskList = new List <Task>(); }
/// <summary> /// Evalua la taxonomía y llena los elementos necearios para su persistencia. /// </summary> /// <param name="taxonomia">TAxonomía que se evalua.</param> /// <param name="roles">Lista de roles de presentación.</param> /// <param name="dimensiones">Lista de dimensiónes.</param> /// <param name="concepotsRol">Posición de los roles de presentación por concepto.</param> private void ObtenElementosTaxonomia( AbaxXBRLCellStoreMongo cellStoreMongo, TaxonomiaDto taxonomia, out IList <String> roles, out IList <String> dimensiones, out IDictionary <String, IDictionary <String, int> > concepotsRol) { roles = cellStoreMongo.RolesSpotfire; dimensiones = cellStoreMongo.DimensionesSpotfire; concepotsRol = new Dictionary <String, IDictionary <String, int> >(); foreach (var rolPresentacion in taxonomia.RolesPresentacion) { var aliasRol = ObtenAliasRol(rolPresentacion.Uri); EvaluaEstructuras(taxonomia, rolPresentacion.Estructuras, aliasRol, roles, dimensiones, concepotsRol, 0); } }
public void TestProcesarDistribucionDocumentosXBRL() { LogUtil.LogDirPath = @"..\..\TestOutput\"; LogUtil.Inicializa(); var DirectorioProcesar = @"..\..\TestInput\XBRL\JBRL\Auxiliar"; var xpe = XPEServiceImpl.GetInstance(true); var abaxXBRLCellStoreMongo = new AbaxXBRLCellStoreMongo(); abaxXBRLCellStoreMongo.JSONOutDirectory = @"..\..\TestOutput\"; abaxXBRLCellStoreMongo.ConnectionString = "mongodb://localhost/jbrl"; abaxXBRLCellStoreMongo.DataBaseName = "jbrl"; //abaxXBRLCellStoreMongo.ConnectionString = "mongodb+srv://oscarloyola:[email protected]/xbrl?retryWrites=true"; //abaxXBRLCellStoreMongo.DataBaseName = "xbrl"; abaxXBRLCellStoreMongo.Init(); var mongoDB = abaxXBRLCellStoreMongo.GetMongoDB(); XPEService xpeService = XPEServiceImpl.GetInstance(); string[] fileEntries = Directory.GetFiles(DirectorioProcesar); var taskList = new List <Task>(); foreach (string rutaArchivo in fileEntries) { var registrationDate = System.IO.File.GetLastWriteTime(rutaArchivo); var fileName = Path.GetFileName(rutaArchivo); using (var reader = File.OpenRead(rutaArchivo)) { var reportParams = new Dictionary <String, String>(); var factsList = new List <FactJBRL>(); DocumentoInstanciaXbrlDto documentoInstanciXbrlDto = xpeService.CargaInstanciaXBRLStreamFile(reader, fileName); if (documentoInstanciXbrlDto.Taxonomia == null) { JBRLUtils.ObtenerTaxonomia(documentoInstanciXbrlDto); } JBRLUtils.InsertFacts( documentoInstanciXbrlDto, reportParams, factsList, taskList, registrationDate, abaxXBRLCellStoreMongo); } System.GC.Collect(); } Task.WaitAll(taskList.ToArray()); }
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); } }
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(); } }
/// <summary> /// Insert the facts of a document into the mongo database. /// </summary> /// <param name="documentoInstanciXbrlDto">Documento to evaluate.</param> /// <param name="reportParams">Extra params to include.</param> /// <param name="factsList">Extra facts to include.</param> /// <param name="taskList">List of task to wait befor ends.</param> /// <param name="registrationDate">Registration date of the document.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object of mongo.</param> public static void InsertFacts( DocumentoInstanciaXbrlDto documentoInstanciXbrlDto, IDictionary <String, String> reportParams, IList <FactJBRL> factsList, IList <Task> taskList, DateTime registrationDate, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { var mongoDB = abaxXBRLCellStoreMongo.GetMongoDB(); JBRLUtils.SetReportParams(documentoInstanciXbrlDto, reportParams); var reportId = JBRLUtils.CreateReportId(reportParams); var reportRecordId = JBRLUtils.CreateReportRecordId(reportId, registrationDate); if (JBRLUtils.ExistsReportRecord(reportRecordId, abaxXBRLCellStoreMongo)) { return; } var replacementId = JBRLUtils.SarchReplacementId(reportId, reportRecordId, registrationDate, abaxXBRLCellStoreMongo); if (replacementId == null) { var taskVersion = JBRLUtils.UpdateReportsReplacementVersionAsync(reportId, reportRecordId, abaxXBRLCellStoreMongo); taskList.Add(taskVersion); } foreach (var hechoId in documentoInstanciXbrlDto.HechosPorId.Keys) { var hecho = documentoInstanciXbrlDto.HechosPorId[hechoId]; if (hecho.TipoDatoXbrl.Contains("64")) { continue; } var hechoJbrl = FactJBRL.Parse( hecho, documentoInstanciXbrlDto, reportId, reportRecordId, registrationDate, reportParams, replacementId); if (hechoJbrl != null) { factsList.Add(hechoJbrl); } else { LogUtil.Error(new Dictionary <string, object>() { { "Error", "No fué posible convertir el hecho a JBRL" }, { "HechoId", hecho.Id ?? "null" }, { "Concepto", hecho.IdConcepto ?? "null" }, { "Hecho", hecho } }); } } var modeloBaseList = new List <IModeloBase>(); modeloBaseList.AddRange(factsList); abaxXBRLCellStoreMongo.InserttChunksCollection(mongoDB, JBRLUtils.COLLECTION_NAME, modeloBaseList); var taskFactsEvaluation = JBRLUtils. UpdatePreviousFactsReplacementVersionAsync(factsList, abaxXBRLCellStoreMongo); taskList.Add(taskFactsEvaluation); }
/// <summary> /// Get a list of string dates less that the given date. /// </summary> /// <param name="taxonomyId">Taxonomy identifier.</param> /// <param name="entityId">Entity identifier.</param> /// <param name="maxDate">Date to compare.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object</param> /// <returns>List with the string dates.</returns> public static async Task <IList <string> > FindLowestDatesAsync(string taxonomyId, string entityId, DateTime maxDate, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { var db = abaxXBRLCellStoreMongo.GetMongoDB(); var collection = db.GetCollection <BsonDocument>(COLLECTION_NAME); var match = new BsonDocument { { "dimensionMap.taxonomyId", taxonomyId }, { "dimensionMap.instanceDocmentEntity", entityId } }; var groupDistinctDates = new BsonDocument { { "_id", "$dimensionMap.instanceDocmentReportedDate" } }; var projectParseDate = new BsonDocument { { "_id", "$_id" }, { "date", new BsonDocument { { "$dateFromString", new BsonDocument { { "dateString", "$_id" } } } } } }; FilterDefinition <BsonDocument> matchLessDate = "{\"date\":{\"$lt\":" + ModeloBase.ParseJson(maxDate) + "}}"; var aggregate = collection.Aggregate(). Match(match).Group(groupDistinctDates).Project(projectParseDate).Match(matchLessDate); var documentsList = await aggregate.ToListAsync(); var listDates = new List <string>(); foreach (var document in documentsList) { listDates.Add(document["_id"].AsString); } return(listDates); }
/// <summary> /// Set the replacement to same facts reported in distinct documents. /// </summary> /// <param name="factsList">The list of facts to evaluate.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object.</param> public static async Task UpdatePreviousFactsReplacementVersionAsync(IList <FactJBRL> factsList, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { if (factsList.Count == 0) { return; } var first = factsList.First(); if (first.isReplaced) { return; } string entityId = null; string taxonomyId = null; if (!first.dimensionMap.TryGetValue("instanceDocmentEntity", out entityId) || string.IsNullOrEmpty(entityId) || !first.dimensionMap.TryGetValue("taxonomyId", out taxonomyId) || string.IsNullOrEmpty(taxonomyId)) { return; } var maxReportedDate = await GetMaxReportedDateAsync(taxonomyId, entityId, abaxXBRLCellStoreMongo); if (maxReportedDate == null) { return; } var reportedDatesList = await FindLowestDatesAsync(taxonomyId, entityId, maxReportedDate ?? DateTime.MinValue, abaxXBRLCellStoreMongo); string currentDateString = null; first.dimensionMap.TryGetValue("instanceDocmentReportedDate", out currentDateString); if (currentDateString != null) { var currentDate = DateTime.Parse(currentDateString); if (currentDate < maxReportedDate) { reportedDatesList.Add(currentDateString); } } if (reportedDatesList.Count == 0) { return; } FilterDefinition <BsonDocument> fechasAceptadas = Builders <BsonDocument> .Filter.In("dimensionMap.instanceDocmentReportedDate", reportedDatesList); FilterDefinition <BsonDocument> filterNoReplaced = Builders <BsonDocument> .Filter.Eq("isReplaced", false); FilterDefinition <BsonDocument> filterNotCurrent = Builders <BsonDocument> .Filter.And(fechasAceptadas, filterNoReplaced); var reportRecordId = first.reportRecordId; UpdateDefinition <BsonDocument> updateStatement = new BsonDocument { { "$set", new BsonDocument { { "isReplaced", true }, { "replacementId", reportRecordId }, } } }; var db = abaxXBRLCellStoreMongo.GetMongoDB(); var collection = db.GetCollection <BsonDocument>(COLLECTION_NAME); var idsHEchosEnviados = new List <string>(); foreach (var fact in factsList) { idsHEchosEnviados.Add(fact.factId); if (idsHEchosEnviados.Count >= 500) { FilterDefinition <BsonDocument> filterIdsHechosActualizar = Builders <BsonDocument> .Filter.In("factId", idsHEchosEnviados); FilterDefinition <BsonDocument> filterHechosReenviados = Builders <BsonDocument> .Filter.And(filterIdsHechosActualizar, filterNotCurrent); await collection.UpdateManyAsync(filterHechosReenviados, updateStatement); idsHEchosEnviados = new List <string>(); } } if (idsHEchosEnviados.Count > 0) { FilterDefinition <BsonDocument> filterIdsHechosActualizar = Builders <BsonDocument> .Filter.In("factId", idsHEchosEnviados); FilterDefinition <BsonDocument> filterHechosReenviados = Builders <BsonDocument> .Filter.And(filterIdsHechosActualizar, filterNotCurrent); await collection.UpdateManyAsync(filterHechosReenviados, updateStatement); } }
/// <summary> /// Updates the attributes "isReplaced" and "replacementId" with the given parameters. /// </summary> /// <param name="reportId">Report id to evaluate.</param> /// <param name="reportRecordId">Version that replacement previous versions.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object of the data base.</param> public static async Task UpdateReportsReplacementVersionAsync(string reportId, string reportRecordId, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { FilterDefinition <BsonDocument> filter = new BsonDocument { { "reportId", reportId }, { "isReplaced", false }, { "reportRecordId", new BsonDocument { { "$ne", reportRecordId } } } }; UpdateDefinition <BsonDocument> updateStatement = new BsonDocument { { "$set", new BsonDocument { { "isReplaced", true }, { "replacementId", reportRecordId }, } } }; var db = abaxXBRLCellStoreMongo.GetMongoDB(); var collection = db.GetCollection <BsonDocument>(COLLECTION_NAME); await collection.UpdateManyAsync(filter, updateStatement); }
/// <summary> /// Finds the max reported date of the entity. /// </summary> /// <param name="taxonomyId">Taxonomy reported.</param> /// <param name="entityId">Entity identifier.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object.</param> /// <returns>Date found or null if not date was found.</returns> public static async Task <DateTime?> GetMaxReportedDateAsync(string taxonomyId, string entityId, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { var db = abaxXBRLCellStoreMongo.GetMongoDB(); var collection = db.GetCollection <BsonDocument>(COLLECTION_NAME); var match = new BsonDocument { { "dimensionMap.taxonomyId", taxonomyId }, { "dimensionMap.instanceDocmentEntity", entityId } }; var groupDistinctDates = new BsonDocument { { "_id", "$dimensionMap.instanceDocmentReportedDate" } }; var projectParseDate = new BsonDocument { { "_id", "$_id" }, { "date", new BsonDocument { { "$dateFromString", new BsonDocument { { "dateString", "$_id" } } } } } }; var groupMaxDate = new BsonDocument { { "_id", "_id" }, { "maxDate", new BsonDocument { { "$max", "$date" } } } }; var projectAsStrig = new BsonDocument { { "_id", 0 }, { "maxDate", new BsonDocument { { "$dateToString", new BsonDocument { { "date", "$maxDate" }, { "format", "%Y-%m-%dT%H:%M:%S.%LZ" } } } } } }; var aggregate = collection.Aggregate(). Match(match).Group(groupDistinctDates). Project(projectParseDate).Group(groupMaxDate).Project(projectAsStrig); var document = await aggregate.FirstOrDefaultAsync(); DateTime?dateFound = null; if (document != null && document.Contains("maxDate")) { var stringDate = document["maxDate"].AsString; if (!String.IsNullOrWhiteSpace(stringDate)) { dateFound = DateTime.Parse(stringDate); } } return(dateFound); }
/// <summary> /// Checks if the send exists in the data base. /// </summary> /// <param name="reportId">Identifier of the send.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object.</param> /// <returns>If the send exists.</returns> public static bool Update(string reportId, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { var count = abaxXBRLCellStoreMongo.CuentaElementosColeccion(COLLECTION_NAME, "{\"reportId\":\"" + reportId + "\"}"); return(count > 0); }
/// <summary> /// Evaluate the given report version, and update previous versions with the given parameters or /// get the current version of the report. /// </summary> /// <param name="reportId">Report to evaluate.</param> /// <param name="reportRecordId">Version to evaluate.</param> /// <param name="registrationDate">Registration date of the current report.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object.</param> /// <returns>The current version identifier or null if the given version is the most recent.</returns> public static string SarchReplacementId(string reportId, string reportRecordId, DateTime registrationDate, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { string replacementId = null; var recentlySend = GetRecentlyReportSend(reportId, abaxXBRLCellStoreMongo); if (recentlySend != null && recentlySend.Contains("maxDate")) { var maxDate = DateTime.Parse(recentlySend["maxDate"].AsString); if (maxDate > registrationDate) { replacementId = JBRLUtils.CreateReportRecordId(reportId, maxDate); } } return(replacementId); }
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); }
/// <summary> /// Checks if the send exists in the data base. /// </summary> /// <param name="sendId">Identifier of the send.</param> /// <param name="abaxXBRLCellStoreMongo">Data access object.</param> /// <returns>If the send exists.</returns> public static bool ExistsDownloadId(string downloadId, AbaxXBRLCellStoreMongo abaxXBRLCellStoreMongo) { var count = abaxXBRLCellStoreMongo.CuentaElementosColeccion(COLLECTION_NAME, "{\"dimensionMap.downloadId\":\"" + downloadId + "\"}"); return(count > 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); }
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); }
/// <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); }
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(); } }
public void LlenaElementosBase( IList <HechoReducido> listaElementos, IDictionary <String, ElementoConsulta4D> diccionarioElementos, AbaxXBRLCellStoreMongo AbaxXBRLCellStoreMongo) { foreach (var elemento in listaElementos) { ElementoConsulta4D elementoTabla = null; if (!diccionarioElementos.TryGetValue(elemento.IdEnvio, out elementoTabla)) { elementoTabla = new ElementoConsulta4D(); elementoTabla.Taxonomia = elemento.Taxonomia; elementoTabla.Entidad = elemento.Entidad; elementoTabla.IdEnvio = elemento.IdEnvio; elementoTabla.Unidad = elemento.Unidad; diccionarioElementos.Add(elemento.IdEnvio, elementoTabla); } var idConcepto = elemento.IdConcepto; if (idConcepto.Equals("ifrs_mx-cor_20141205_ClaveDeCotizacionBloqueDeTexto") || idConcepto.Equals("mx_deuda_Ticker") || idConcepto.Equals("mx_ccd_Ticker")) { elementoTabla.ClaveCotizacion = elemento.Valor; elementoTabla.Fecha = elemento.Fecha; } else if (idConcepto.Equals("mx_deuda_TrustNumber") || idConcepto.Equals("mx_ccd_TrustNumber")) { elementoTabla.NumeroFideicomiso = elemento.Valor; } else if ( idConcepto.Equals("ifrs_mx-cor_20141205_NumeroDeTrimestre") || idConcepto.Equals("mx_deuda_NumberOfQuarter") || idConcepto.Equals("mx_ccd_NumberOfQuarter")) { elementoTabla.NumeroTrimestre = elemento.Valor; } else if ( idConcepto.Equals("ifrs_mx-cor_20141205_NombreDeProveedorDeServiciosDeAuditoriaExternaBloqueDeTexto") || idConcepto.Equals("mx_deuda_NameServiceProviderExternalAudit") || idConcepto.Equals("mx_ccd_NameServiceProviderExternalAudit")) { elementoTabla.NombreProveedorServiciosAuditoriaExterna = elemento.Valor; } else if ( idConcepto.Equals("ifrs_mx-cor_20141205_NombreDeProveedorDeServiciosDeAuditoriaExternaBloqueDeTexto") || idConcepto.Equals("mx_deuda_NameServiceProviderExternalAudit") || idConcepto.Equals("mx_ccd_NameServiceProviderExternalAudit")) { elementoTabla.NombreProveedorServiciosAuditoriaExterna = elemento.Valor; } else if ( idConcepto.Equals("ifrs_mx-cor_20141205_NombreDelSocioQueFirmaLaOpinionBloqueDeTexto") || idConcepto.Equals("mx_deuda_NameOfTheAsociadoSigningOpinion") || idConcepto.Equals("mx_ccd_NameOfTheAsociadoSigningOpinion")) { elementoTabla.NombreSocioFirmaOpinion = elemento.Valor; } else if ( idConcepto.Equals("ifrs_mx-cor_20141205_TipoDeOpinionALosEstadosFinancierosBloqueDeTexto") || idConcepto.Equals("mx_deuda_TypeOfOpinionOnTheFinancialStatements") || idConcepto.Equals("mx_ccd_TypeOfOpinionOnTheFinancialStatements")) { elementoTabla.TipoOpinionEstadosFinancieros = elemento.Valor; //if (String.IsNullOrEmpty(elemento.Valor)) //{ // elementoTabla.TipoOpinionEstadosFinancieros = AbaxXBRLCellStoreMongo.ObtenValorCheckun(elemento.IdHecho); //} } } }