private void agregarTaxonomia(DocumentoInstanciaXbrlDto instanciaDto, CacheTaxonomiaEnMemoriaXBRL _cacheTaxonomiaXbrl) { var viewerService = new XbrlViewerService(); var taxonomiaDto = _cacheTaxonomiaXbrl.ObtenerTaxonomia(instanciaDto.DtsDocumentoInstancia); var manejadorErrores = new ManejadorErroresCargaTaxonomia(); if (taxonomiaDto == null) { var taxo = new TaxonomiaXBRL { ManejadorErrores = manejadorErrores }; foreach (var dts in instanciaDto.DtsDocumentoInstancia) { if (dts.Tipo == DtsDocumentoInstanciaDto.SCHEMA_REF) { taxo.ProcesarDefinicionDeEsquema(dts.HRef); } } taxo.CrearArbolDeRelaciones(); taxonomiaDto = viewerService.CrearTaxonomiaAPartirDeDefinicionXbrl(taxo); if (manejadorErrores.PuedeContinuar()) { _cacheTaxonomiaXbrl.AgregarTaxonomia(instanciaDto.DtsDocumentoInstancia, taxonomiaDto); } else { return; } } instanciaDto.Taxonomia = taxonomiaDto; }
public void TestPresentarEstructuraTaxoPresentacion() { TaxonomiaXBRL taxonomiaXBRL = new TaxonomiaXBRL(); IManejadorErroresXBRL manejadorErrores = new ManejadorErroresCargaTaxonomia(); taxonomiaXBRL.ManejadorErrores = manejadorErrores; //Boolean correcto = taxonomiaXBRL.ProcesarDefinicionDeEsquemaRef("C:\\workspaces\\memoria_xbrl\\Ejercicio Práctico\\taxonomia1-2012-07-01-core.xsd"); //Boolean correcto = taxonomiaXBRL.ProcesarDefinicionDeEsquemaRef("C:\\dotNet\\AbaxXBRL_1\\AbaxXBRL\\XBRL-CONF-CR5-2012-01-24\\Common\\100-schema\\155-TypeExtension-Valid.xsd"); taxonomiaXBRL.ProcesarDefinicionDeEsquema(@"http://emisnet.bmv.com.mx/taxonomy/mx-ifrs-ics-2012-04-01/All/ifrs-mx-ics-entryPoint-all-2012-04-01.xsd"); taxonomiaXBRL.CrearArbolDeRelaciones(); XbrlViewerService serv = new XbrlViewerService(); var taxDt = serv.CrearTaxonomiaAPartirDeDefinicionXbrl(taxonomiaXBRL); foreach (var rolDto in taxDt.RolesPresentacion) { Debug.WriteLine(rolDto.Nombre); foreach (var estructura in rolDto.Estructuras) { ImprimirEstructura(estructura, 0, taxDt); } } }
public IHttpActionResult CargarDocumentoInstanciaXbrl(long?idDocumentoInstancia, int?numeroVersion) { var viewerService = new XbrlViewerService(); var resultadoOperacion = new ResultadoOperacionDto(); if (idDocumentoInstancia != null) { if (numeroVersion != null) { resultadoOperacion = DocumentoInstanciaService.ObtenerVersionModeloDocumentoInstanciaXbrl(idDocumentoInstancia.Value, numeroVersion.Value, IdUsuarioExec); } else { resultadoOperacion = DocumentoInstanciaService.ObtenerModeloDocumentoInstanciaXbrl(idDocumentoInstancia.Value, IdUsuarioExec); } var instanciaDto = (resultadoOperacion.InformacionExtra as DocumentoInstanciaXbrlDto); if (instanciaDto != null) { var taxonomiaDto = CacheTaxonomia.ObtenerTaxonomia(instanciaDto.DtsDocumentoInstancia); if (taxonomiaDto == null) { var taxo = new TaxonomiaXBRL { ManejadorErrores = new ManejadorErroresCargaTaxonomia() }; foreach (var dts in instanciaDto.DtsDocumentoInstancia) { if (dts.Tipo == DtsDocumentoInstanciaDto.SCHEMA_REF) { taxo.ProcesarDefinicionDeEsquema(dts.HRef); } } taxo.CrearArbolDeRelaciones(); taxonomiaDto = viewerService.CrearTaxonomiaAPartirDeDefinicionXbrl(taxo); CacheTaxonomia.AgregarTaxonomia(instanciaDto.DtsDocumentoInstancia, taxonomiaDto); EstrategiaCacheTaxonomia.AgregarTaxonomia(DocumentoInstanciaXbrlDtoConverter.ConvertirDtsDocumentoInstancia(instanciaDto.DtsDocumentoInstancia), taxo); } (resultadoOperacion.InformacionExtra as DocumentoInstanciaXbrlDto).Taxonomia = taxonomiaDto; } } else { resultadoOperacion.Resultado = false; resultadoOperacion.Mensaje = "El identificador del documento de instancia es requerido"; } var jsonResult = this.Json(resultadoOperacion); return(jsonResult); }
public void TestObtenerXBRLBMV2015DeBaseDeDatos() { var service = new DocumentoInstanciaService { DocumentoInstanciaRepository = new DocumentoInstanciaRepository(), UsuarioDocumentoInstanciaRepository = new UsuarioDocumentoInstanciaRepository(), VersionDocumentoInstanciaRepository = new VersionDocumentoInstanciaRepository(), EmpresaRepository = new EmpresaRepository(), UsuarioRepository = new UsuarioRepository(), UnidadRepository = new UnidadRepository(), ContextoRepository = new ContextoRepository(), DtsDocumentoInstanciaRepository = new DtsDocumentoInstanciaRepository(), HechoRepository = new HechoRepository() }; var viewService = new XbrlViewerService(); var resultado = service.ObtenerModeloDocumentoInstanciaXbrl(251, 3); var modeloDto = resultado.InformacionExtra as DocumentoInstanciaXbrlDto; var taxo = new TaxonomiaXBRL(); taxo.ManejadorErrores = new ManejadorErroresCargaTaxonomia(); taxo.ProcesarDefinicionDeEsquema(modeloDto.DtsDocumentoInstancia.First(x => x.Tipo == DtsDocumentoInstanciaDto.SCHEMA_REF).HRef); var nuevoXbrl = viewService.CrearDocumentoInstanciaXbrl(taxo, modeloDto); var xmlDoc = nuevoXbrl.GenerarDocumentoXbrl(); var settings = new XmlWriterSettings { CloseOutput = true, Indent = true, NamespaceHandling = NamespaceHandling.OmitDuplicates, NewLineHandling = NewLineHandling.Entitize, Encoding = Encoding.UTF8 }; string res = null; using (var memStream = new MemoryStream()) { using (XmlWriter xmlWriterDebug = XmlWriter.Create(memStream, settings)) { xmlDoc.Save(xmlWriterDebug); res = Encoding.UTF8.GetString(memStream.ToArray()); } } Debug.WriteLine(res); }
public void testCargarTaxonomia() { TaxonomiaXBRL taxonomiaXBRL = new TaxonomiaXBRL(); IManejadorErroresXBRL manejadorErrores = new ManejadorErroresCargaTaxonomia(); taxonomiaXBRL.ManejadorErrores = manejadorErrores; taxonomiaXBRL.ProcesarDefinicionDeEsquema("http://superwas.supersociedades.gov.co/sirfin/xbrl/2015-03-04/sds_ifrs-inicio-plenas-individuales-2015-03-04.xsd"); taxonomiaXBRL.CrearArbolDeRelaciones(); IGrupoValidadoresTaxonomia valTax = new GrupoValidadoresTaxonomia(); valTax.ManejadorErrores = manejadorErrores; valTax.Taxonomia = taxonomiaXBRL; valTax.AgregarValidador(new ValidadorTaxonomia()); valTax.AgregarValidador(new ValidadorTaxonomiaDinemsional()); valTax.ValidarDocumento(); XbrlViewerService serv = new XbrlViewerService(); DocumentoInstanciaXBRL inst = new DocumentoInstanciaXBRL(); inst.ManejadorErrores = manejadorErrores; inst.Cargar(@"C:\workspace_abax\XBRL Colombia\T01_E10_8190009868_2014-12-31.xbrl"); valTax = new GrupoValidadoresTaxonomia(); valTax.ManejadorErrores = manejadorErrores; valTax.DocumentoInstancia = inst; valTax.AgregarValidador(new ValidadorDocumentoInstancia()); valTax.AgregarValidador(new ValidadorDimensionesDocumentoInstancia()); valTax.ValidarDocumento(); foreach (var error in manejadorErrores.GetErroresTaxonomia()) { Debug.WriteLine(error.Mensaje); } foreach (var hecho in inst.Hechos) { Debug.WriteLine(hecho.Concepto.Id + " = " + ((FactItem)hecho).Valor); } var taxDt = serv.CrearTaxonomiaAPartirDeDefinicionXbrl(taxonomiaXBRL); }
public void crearExistenceAssertionNumericos() { StringBuilder builder = new StringBuilder(); //Unir las existence al EA set var eaSetPadre = "Assertion_Set_EA_ElementosNumericos"; var fvFechaCierre = "factVariable_DateOfEndOfReportingPeriod2013"; var filtroPeriodInstant = "periodInstant_FechaCierre_Filter"; var filtroOr = "orFilter_3"; var etiquetaEA = ""; var etiquetaFV = ""; var etiquetaConceptName = ""; var etiquetaMensaje = ""; var taxonomia = new TaxonomiaXBRL(); taxonomia.ManejadorErrores = new ManejadorErroresCargaTaxonomia(); taxonomia.ProcesarDefinicionDeEsquema("file:///TaxonomiasXBRL/mx-bmv-fideicomisos-2015/trac/full_ifrs_trac_entry_point_2015-06-30.xsd"); taxonomia.CrearArbolDeRelaciones(); var viewService = new XbrlViewerService(); var taxoDTO = viewService.CrearTaxonomiaAPartirDeDefinicionXbrl(taxonomia); builder.AppendLine("<!-- Inicio Validaciones EA SET Numericas -->"); foreach (var concepto in taxoDTO.ConceptosPorId.Values) { var EsAbstracto = concepto.EsAbstracto != null ? concepto.EsAbstracto.Value : false; if (concepto.EsTipoDatoNumerico && !EsAbstracto) { //Crear existence assertion etiquetaEA = "EA_" + concepto.Nombre; etiquetaFV = "factVariable_ea_" + concepto.Nombre; etiquetaConceptName = "conceptName_ea_" + concepto.Nombre; etiquetaMensaje = "mensaje_ea_" + concepto.Nombre; builder.AppendLine(String.Format(EA_template, etiquetaEA)); builder.AppendLine(String.Format(EA_TO_AS_template, new Object[] { eaSetPadre, etiquetaEA })); builder.AppendLine(String.Format(Fact_Variable_template, etiquetaFV)); //FV del concepto builder.AppendLine(String.Format(Concept_Name_template, etiquetaConceptName, taxonomia.ObtenerPrefijoDeEspacioNombres(concepto.EspacioNombres), concepto.Nombre)); builder.AppendLine(String.Format(Variable_filter_arc_template, new Object[] { etiquetaFV, etiquetaConceptName })); builder.AppendLine(String.Format(Variable_arc_template, new Object[] { etiquetaEA, etiquetaFV, concepto.Nombre })); builder.AppendLine(String.Format(Message_template, new Object[] { etiquetaMensaje, UtilAbax.ObtenerEtiqueta(taxoDTO, concepto.Id) })); builder.AppendLine(String.Format(Message_Assertion_Arc_Template, new Object[] { etiquetaEA, etiquetaMensaje })); builder.AppendLine(""); builder.AppendLine(""); } } builder.AppendLine("<!-- Fin Validaciones EA SET Numericas -->"); Debug.WriteLine(builder.ToString()); }
public void TestDocumentoInstanciaCompleto() { var service = new DocumentoInstanciaService { DocumentoInstanciaRepository = new DocumentoInstanciaRepository(), UsuarioDocumentoInstanciaRepository = new UsuarioDocumentoInstanciaRepository(), VersionDocumentoInstanciaRepository = new VersionDocumentoInstanciaRepository(), EmpresaRepository = new EmpresaRepository(), UsuarioRepository = new UsuarioRepository(), UnidadRepository = new UnidadRepository(), ContextoRepository = new ContextoRepository(), DtsDocumentoInstanciaRepository = new DtsDocumentoInstanciaRepository(), HechoRepository = new HechoRepository(), NotaAlPieRepository = new NotaAlPieRepository() }; DocumentoInstanciaXbrlDto instanciaDto = null; using (var reader = new StreamReader(@"doinstTest.json")) { instanciaDto = JsonConvert.DeserializeObject <DocumentoInstanciaXbrlDto>(reader.ReadToEnd()); } instanciaDto.ParametrosConfiguracion = new Dictionary <string, string>(); instanciaDto.ParametrosConfiguracion.Add("trimestre", "3"); instanciaDto.ParametrosConfiguracion.Add("primerAnio", "true"); instanciaDto.ParametrosConfiguracion.Add("emisora", "PEMEX"); instanciaDto.ParametrosConfiguracion.Add("anio", "2015-01-01T06:00:00.000Z"); instanciaDto.ParametrosConfiguracion.Add("moneda", "http://www.xbrl.org/2003/iso4217:MXN"); foreach (var hecho in instanciaDto.HechosPorId.Values) { Debug.WriteLine(hecho.IdConcepto + " = " + hecho.Valor); } instanciaDto.IdEmpresa = 1; var tax = new TaxonomiaXBRL(); tax.ManejadorErrores = new ManejadorErroresCargaTaxonomia(); tax.ProcesarDefinicionDeEsquema("http://www.2hsoftware.com.mx/mx_taxonomy/mx_taxonomy/full_ifrs_mc_mx_ics_entry_point_2014-12-05.xsd"); var viewer = new XbrlViewerService(); var documentoInstanciaXbrl = viewer.CrearDocumentoInstanciaXbrl(tax, instanciaDto); var xbrl = documentoInstanciaXbrl.GenerarDocumentoXbrl(); var settings = new XmlWriterSettings(); settings.CloseOutput = true; settings.Indent = true; settings.NamespaceHandling = NamespaceHandling.OmitDuplicates; settings.NewLineHandling = NewLineHandling.Entitize; settings.Encoding = Encoding.ASCII; var txtWriter = new StringWriter(); var xmlWriterDebug = XmlWriter.Create(txtWriter, settings); xbrl.Save(xmlWriterDebug); String archivoFinal = txtWriter.ToString().Replace("utf-16", "ISO-8859-1"); var stream = new MemoryStream(); var writer = new StreamWriter(stream); writer.Write(archivoFinal); writer.Flush(); stream.Position = 0; using (var fileStream = new FileStream(@"C:\Users\Emigdio\Desktop\salida.xbrl", FileMode.Create)) { xbrl.Save(fileStream); } }
public void TestCargaTaxonomia() { TaxonomiaXBRL taxonomiaXBRL = new TaxonomiaXBRL(); IManejadorErroresXBRL manejadorErrores = new ManejadorErroresCargaTaxonomia(); taxonomiaXBRL.ManejadorErrores = manejadorErrores; //Boolean correcto = taxonomiaXBRL.ProcesarDefinicionDeEsquemaRef("C:\\workspaces\\memoria_xbrl\\Ejercicio Práctico\\taxonomia1-2012-07-01-core.xsd"); //Boolean correcto = taxonomiaXBRL.ProcesarDefinicionDeEsquemaRef("C:\\dotNet\\AbaxXBRL_1\\AbaxXBRL\\XBRL-CONF-CR5-2012-01-24\\Common\\100-schema\\155-TypeExtension-Valid.xsd"); taxonomiaXBRL.ProcesarDefinicionDeEsquema(@"C:\taxonomy\mx-ifrs-2014-12-05\full_ifrs_mc_mx_ics_entry_point_2014-12-05.xsd"); taxonomiaXBRL.CrearArbolDeRelaciones(); XbrlViewerService serv = new XbrlViewerService(); var taxDt = serv.CrearTaxonomiaAPartirDeDefinicionXbrl(taxonomiaXBRL); var docServ = new DocumentoInstanciaService(); docServ.PerteneceConceptoAHipercuboEnRol("ifrs-full_ProfitLoss", taxDt, "http://bmv.com.mx/role/ifrs/ias_1_2014-03-05_role-610000"); foreach (RoleType tipoRol in taxonomiaXBRL.RolesTaxonomia.Values) { ArbolLinkbase arbolPresentation = taxonomiaXBRL.ConjuntoArbolesLinkbase[tipoRol.RolURI.ToString()][LinkbasePresentacion.RolePresentacionLinkbaseRef]; NodoLinkbase nodo = arbolPresentation.NodoRaiz; ImprimirNodo(0, nodo); Debug.WriteLine("________________________________________"); if (tipoRol.Linkbases.ContainsKey(LinkbaseReferencia.RoleReferenceLinkbaseRef)) { LinkbaseReferencia linkbase = (LinkbaseReferencia)tipoRol.Linkbases[LinkbaseReferencia.RoleReferenceLinkbaseRef]; foreach (Arco arco in linkbase.Arcos) { foreach (ElementoLocalizable elementoDesde in arco.ElementoDesde) { Concept conceptoDesde = (Concept)((Localizador)elementoDesde).Destino; foreach (ElementoLocalizable elementoHacia in arco.ElementoHacia) { Referencia referencia = (Referencia)elementoHacia.Destino; Debug.WriteLine(conceptoDesde.Elemento.Id + " Referencias: "); foreach (ReferenciaParte refPart in referencia.PartesReferencia) { Debug.WriteLine("\tReferencia:" + refPart.NombreLocal + " : " + refPart.Valor); } } } } } Debug.WriteLine("________________________________________"); if (tipoRol.Linkbases.ContainsKey(LinkbaseCalculo.RoleCalculoLinkbaseRef)) { LinkbaseCalculo linkbase = (LinkbaseCalculo)tipoRol.Linkbases[LinkbaseCalculo.RoleCalculoLinkbaseRef]; //Escribir los elementos que no tienen padre Debug.WriteLine(tipoRol.Id); IDictionary <string, string> impresos = new Dictionary <string, string>(); foreach (ArcoCalculo arco in linkbase.Arcos) { foreach (ElementoLocalizable elementoDesde in arco.ElementoDesde) { Concept conceptoDesde = (Concept)elementoDesde.Destino; if (!tienePadre(conceptoDesde, linkbase.Arcos)) { if (!impresos.ContainsKey(conceptoDesde.Elemento.Id)) { Debug.WriteLine(conceptoDesde.Elemento.Id); imprimirHijosCalculo(1, conceptoDesde.Elemento.Id, linkbase.Arcos, (LinkbaseCalculo)tipoRol.Linkbases[LinkbaseCalculo.RoleCalculoLinkbaseRef]); impresos[conceptoDesde.Elemento.Id] = conceptoDesde.Elemento.Id; } } } } } } Assert.IsTrue(true); }
public void TestCargaInstancia() { TaxonomiaXBRL taxonomiaXBRL = new TaxonomiaXBRL(); IManejadorErroresXBRL manejadorErroresTax = new ManejadorErroresCargaTaxonomia(); Debug.WriteLine(DateTime.Now); taxonomiaXBRL.ManejadorErrores = manejadorErroresTax; taxonomiaXBRL.ProcesarDefinicionDeEsquema("http://emisnet.bmv.com.mx/taxonomy/mx-ifrs-ics-2012-04-01/All/ifrs-mx-ics-entryPoint-all-2012-04-01.xsd"); taxonomiaXBRL.CrearArbolDeRelaciones(); taxonomiaXBRL.CrearRelacionesDimensionales(); Debug.WriteLine(DateTime.Now); DocumentoInstanciaXBRL inst = new DocumentoInstanciaXBRL(); ManejadorErroresCargaTaxonomia manejadorErrores = new ManejadorErroresCargaTaxonomia(); IGrupoValidadoresTaxonomia valTax = new GrupoValidadoresTaxonomia(); valTax.ManejadorErrores = manejadorErroresTax; valTax.Taxonomia = taxonomiaXBRL; valTax.AgregarValidador(new ValidadorTaxonomia()); valTax.AgregarValidador(new ValidadorTaxonomiaDinemsional()); valTax.ValidarDocumento(); inst.Taxonomia = taxonomiaXBRL; inst.ManejadorErrores = manejadorErrores; FileStream archivo = new FileStream("C:\\workspace_abax\\AbaxXBRL\\ifrsxbrl_AC_2014-2.xbrl", FileMode.Open); inst.Cargar(archivo); IGrupoValidadoresTaxonomia grupoValidadores = new GrupoValidadoresTaxonomia(); IValidadorDocumentoInstancia validador = new ValidadorDocumentoInstancia(); grupoValidadores.ManejadorErrores = inst.ManejadorErrores; grupoValidadores.DocumentoInstancia = inst; grupoValidadores.AgregarValidador(validador); validador = new ValidadorDimensionesDocumentoInstancia(); validador.DocumentoInstancia = inst; grupoValidadores.AgregarValidador(validador); grupoValidadores.ValidarDocumento(); FactItem hechoItem = null; //carga de contextos y hechos var instanciaDto = new AbaxXBRLCore.Viewer.Application.Dto.Angular.DocumentoInstanciaDto(); if (manejadorErrores.PuedeContinuar()) { foreach (Fact hecho in inst.Hechos) { //Verificar si el contexto existe if (hecho is FactItem) { hechoItem = (FactItem)hecho; } } } Assert.IsTrue(true); }