Exemplo n.º 1
0
        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);
        }
Exemplo n.º 4
0
        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 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);
        }